From f81ca3ba605687ccb1b2b76d700a03f7dc4d370f Mon Sep 17 00:00:00 2001 From: GCHQ 77703 Date: Thu, 30 Aug 2018 22:38:01 +0100 Subject: [PATCH 0001/1024] Implement RSA generation and signing of messages --- src/core/config/Categories.json | 2 + src/core/operations/GenerateRSAKeyPair.mjs | 82 ++++++++++++++++++++++ src/core/operations/RSASign.mjs | 60 ++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 src/core/operations/GenerateRSAKeyPair.mjs create mode 100644 src/core/operations/RSASign.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index ab3bc486..68e17294 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -89,6 +89,8 @@ "Derive EVP key", "Bcrypt", "Scrypt", + "Generate RSA Key Pair", + "RSA Sign", "Pseudo-Random Number Generator" ] }, diff --git a/src/core/operations/GenerateRSAKeyPair.mjs b/src/core/operations/GenerateRSAKeyPair.mjs new file mode 100644 index 00000000..9d7a88d8 --- /dev/null +++ b/src/core/operations/GenerateRSAKeyPair.mjs @@ -0,0 +1,82 @@ +/** + * @author gchq77703 [] + * @copyright Crown Copyright 2018 + ` * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import forge from "node-forge/dist/forge.min.js"; + +/** + * Generate RSA Key Pair operation + */ +class GenerateRSAKeyPair extends Operation { + + /** + * GenerateRSAKeyPair constructor + */ + constructor() { + super(); + + this.name = "Generate RSA Key Pair"; + this.module = "Ciphers"; + this.description = "Generate an RSA key pair with a given number of bits"; + this.infoURL = "https://wikipedia.org/wiki/RSA_(cryptosystem)"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "RSA Key Length", + type: "option", + value: [ + "1024", + "2048", + "4096" + ] + }, + { + name: "Output Format", + type: "option", + value: [ + "PEM", + "JSON", + "DER" + ] + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + async run(input, args) { + const [keyLength, outputFormat] = args + + return new Promise((resolve, reject) => { + forge.pki.rsa.generateKeyPair({ bits: Number(keyLength), workers: 2 }, (err, keypair) => { + if (err) return reject(err) + + let result; + + switch(outputFormat) { + case "PEM": + result = forge.pki.publicKeyToPem(keypair.publicKey) + "\n" + forge.pki.privateKeyToPem(keypair.privateKey); + break; + case "JSON": + result = JSON.stringify(keypair); + break; + case "DER": + result = forge.asn1.toDer(forge.pki.privateKeyToAsn1(keypair.privateKey)).getBytes(); + break; + }; + + resolve(result); + }) + }) + } + +} + +export default GenerateRSAKeyPair; diff --git a/src/core/operations/RSASign.mjs b/src/core/operations/RSASign.mjs new file mode 100644 index 00000000..fb3e4bbd --- /dev/null +++ b/src/core/operations/RSASign.mjs @@ -0,0 +1,60 @@ +/** + * @author gchq77703 [] + * @copyright Crown Copyright 2018 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import forge from "node-forge/dist/forge.min.js"; + +/** + * RSA Sign operation + */ +class RSASign extends Operation { + + /** + * RSASign constructor + */ + constructor() { + super(); + + this.name = "RSA Sign"; + this.module = "Ciphers"; + this.description = "Sign a plaintext message with a PEM encoded RSA key."; + this.infoURL = "https://wikipedia.org/wiki/RSA_(cryptosystem)"; + this.inputType = "string"; + this.outputType = "byteArray"; + this.args = [ + { + name: "RSA Private Key (PEM)", + type: "text", + value: "-----BEGIN RSA PRIVATE KEY-----" + }, + { + name: "Password", + type: "text", + value: "" + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const [key, password] = args; + + const privateKey = forge.pki.decryptRsaPrivateKey(key, password); + + const md = forge.md.sha1.create(); + md.update(input, 'utf8'); + const signature = privateKey.sign(md); + + return signature.split('').map(char => char.charCodeAt()); + } + +} + +export default RSASign; From 31e758ca45667125feb52707762ead91d7969a08 Mon Sep 17 00:00:00 2001 From: Matt C Date: Fri, 31 Aug 2018 11:25:05 +0100 Subject: [PATCH 0002/1024] Attempt to make RSA key generation functional --- package-lock.json | 6 ++++++ package.json | 1 + src/core/operations/GenerateRSAKeyPair.mjs | 19 ++++++++++++------- src/core/operations/RSASign.mjs | 4 ++-- webpack.config.js | 4 ++++ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9814093..e7ce7f62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8573,6 +8573,12 @@ } } }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", diff --git a/package.json b/package.json index 5ff508f6..6805c522 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "postcss-import": "^12.0.0", "postcss-loader": "^2.1.6", "prompt": "^1.0.0", + "raw-loader": "^0.5.1", "sass-loader": "^7.1.0", "sitemap": "^1.13.0", "style-loader": "^0.21.0", diff --git a/src/core/operations/GenerateRSAKeyPair.mjs b/src/core/operations/GenerateRSAKeyPair.mjs index 9d7a88d8..64ff29d2 100644 --- a/src/core/operations/GenerateRSAKeyPair.mjs +++ b/src/core/operations/GenerateRSAKeyPair.mjs @@ -6,6 +6,7 @@ import Operation from "../Operation"; import forge from "node-forge/dist/forge.min.js"; +import PrimeWorker from "node-forge/dist/prime.worker.min.js"; /** * Generate RSA Key Pair operation @@ -52,15 +53,19 @@ class GenerateRSAKeyPair extends Operation { * @returns {string} */ async run(input, args) { - const [keyLength, outputFormat] = args + const [keyLength, outputFormat] = args; + let workerScript; return new Promise((resolve, reject) => { - forge.pki.rsa.generateKeyPair({ bits: Number(keyLength), workers: 2 }, (err, keypair) => { - if (err) return reject(err) + if (ENVIRONMENT_IS_WORKER || window) { + workerScript = ENVIRONMENT_IS_WORKER() ? self.URL.createObjectURL(new Blob([PrimeWorker])) : window.URL.createObjectURL(new Blob([PrimeWorker])); + } + forge.pki.rsa.generateKeyPair({ bits: Number(keyLength), workers: 2, workerScript}, (err, keypair) => { + if (err) return reject(err); let result; - switch(outputFormat) { + switch (outputFormat) { case "PEM": result = forge.pki.publicKeyToPem(keypair.publicKey) + "\n" + forge.pki.privateKeyToPem(keypair.privateKey); break; @@ -70,11 +75,11 @@ class GenerateRSAKeyPair extends Operation { case "DER": result = forge.asn1.toDer(forge.pki.privateKeyToAsn1(keypair.privateKey)).getBytes(); break; - }; + } resolve(result); - }) - }) + }); + }); } } diff --git a/src/core/operations/RSASign.mjs b/src/core/operations/RSASign.mjs index fb3e4bbd..c0b4ccdf 100644 --- a/src/core/operations/RSASign.mjs +++ b/src/core/operations/RSASign.mjs @@ -49,10 +49,10 @@ class RSASign extends Operation { const privateKey = forge.pki.decryptRsaPrivateKey(key, password); const md = forge.md.sha1.create(); - md.update(input, 'utf8'); + md.update(input, "utf8"); const signature = privateKey.sign(md); - return signature.split('').map(char => char.charCodeAt()); + return signature.split("").map(char => char.charCodeAt()); } } diff --git a/webpack.config.js b/webpack.config.js index 89a36f69..1a4f5a2d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -61,6 +61,10 @@ module.exports = { test: /forge.min.js$/, loader: "imports-loader?jQuery=>null" }, + { + test: /prime.worker.min.js$/, + use: "raw-loader" + }, { test: /bootstrap-material-design/, loader: "imports-loader?Popper=popper.js/dist/umd/popper.js" From 1f09c03d4897206e7ed4a3d90cac6c577c486aed Mon Sep 17 00:00:00 2001 From: GCHQ 77703 Date: Fri, 15 Feb 2019 14:23:16 +0000 Subject: [PATCH 0003/1024] Add De Bruijn Operation --- src/core/config/Categories.json | 1 + .../operations/GenerateDeBruijnSequence.mjs | 87 +++++++++++++++++++ tests/operations/index.mjs | 1 + .../tests/GenerateDeBruijnSequence.mjs | 33 +++++++ 4 files changed, 122 insertions(+) create mode 100644 src/core/operations/GenerateDeBruijnSequence.mjs create mode 100644 tests/operations/tests/GenerateDeBruijnSequence.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 8235ab10..238c7282 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -370,6 +370,7 @@ "Chi Square", "Disassemble x86", "Pseudo-Random Number Generator", + "Generate De Bruijn Sequence", "Generate UUID", "Generate TOTP", "Generate HOTP", diff --git a/src/core/operations/GenerateDeBruijnSequence.mjs b/src/core/operations/GenerateDeBruijnSequence.mjs new file mode 100644 index 00000000..647d3c7f --- /dev/null +++ b/src/core/operations/GenerateDeBruijnSequence.mjs @@ -0,0 +1,87 @@ +/** + * @author gchq77703 [gchq77703@gchq.gov.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; + +/** + * Generate De Bruijn Sequence operation + */ +class GenerateDeBruijnSequence extends Operation { + + /** + * GenerateDeBruijnSequence constructor + */ + constructor() { + super(); + + this.name = "Generate De Bruijn Sequence"; + this.module = "Default"; + this.description = "Generates rolling keycode combinations given a certain alphabet size and key length."; + this.infoURL = "https://wikipedia.org/wiki/De_Bruijn_sequence"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Alphabet size (k)", + type: "number", + value: 2 + }, + { + name: "Key length (n)", + type: "number", + value: 3 + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const [k, n] = args; + + if (k < 2 || k > 9) { + throw new OperationError("Invalid alphabet size, required to be between 2 and 9 (inclusive)."); + } + + if (n < 2) { + throw new OperationError("Invalid key length, required to be at least 2."); + } + + if (Math.pow(k, n) > 50000) { + throw new OperationError("Too many permutations, please reduce k^n to under 50,000."); + } + + const a = []; + for (let i = 0; i < k * n; i++) a.push(0); + + const sequence = []; + + (function db(t = 1, p = 1) { + if (t > n) { + if (n % p !== 0) return; + for (let j = 1; j <= p; j++) { + sequence.push(a[j]); + } + return; + } + + a[t] = a[t - p]; + db(t + 1, p); + for (let j = a[t - p] + 1; j < k; j++) { + a[t] = j; + db(t + 1, t); + } + })(); + + return sequence.join(""); + } +} + +export default GenerateDeBruijnSequence; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index fb68ed9c..316e934c 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -45,6 +45,7 @@ import "./tests/DateTime"; import "./tests/ExtractEmailAddresses"; import "./tests/Fork"; import "./tests/FromDecimal"; +import "./tests/GenerateDeBruijnSequence"; import "./tests/Hash"; import "./tests/HaversineDistance"; import "./tests/Hexdump"; diff --git a/tests/operations/tests/GenerateDeBruijnSequence.mjs b/tests/operations/tests/GenerateDeBruijnSequence.mjs new file mode 100644 index 00000000..b68a843f --- /dev/null +++ b/tests/operations/tests/GenerateDeBruijnSequence.mjs @@ -0,0 +1,33 @@ +/** + * De Brujin Sequence tests. + * + * @author gchq77703 [gchq77703@gchq.gov.uk] + * @copyright Crown Copyright 2017 + * @license Apache-2.0 + */ +import TestRegister from "../TestRegister"; + +TestRegister.addTests([ + { + name: "Small Sequence", + input: "", + expectedOutput: "00010111", + recipeConfig: [ + { + "op": "Generate De Bruijn Sequence", + "args": [2, 3] + } + ] + }, + { + name: "Long Sequence", + input: "", + expectedOutput: "0000010000200003000110001200013000210002200023000310003200033001010010200103001110011200113001210012200123001310013200133002010020200203002110021200213002210022200223002310023200233003010030200303003110031200313003210032200323003310033200333010110101201013010210102201023010310103201033011020110301111011120111301121011220112301131011320113301202012030121101212012130122101222012230123101232012330130201303013110131201313013210132201323013310133201333020210202202023020310203202033021030211102112021130212102122021230213102132021330220302211022120221302221022220222302231022320223302303023110231202313023210232202323023310233202333030310303203033031110311203113031210312203123031310313203133032110321203213032210322203223032310323203233033110331203313033210332203323033310333203333111112111131112211123111321113311212112131122211223112321123311312113131132211323113321133312122121231213212133122131222212223122321223312313123221232312332123331313213133132221322313232132331332213323133321333322222322233223232233323233233333", + recipeConfig: [ + { + "op": "Generate De Bruijn Sequence", + "args": [4, 5] + } + ] + } +]) \ No newline at end of file From 44a164ed2825ddd799b656459b89b1a4ee5a9f0a Mon Sep 17 00:00:00 2001 From: GCHQ 77703 Date: Tue, 19 Feb 2019 09:56:38 +0000 Subject: [PATCH 0004/1024] Fix test script linter --- tests/operations/tests/GenerateDeBruijnSequence.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/operations/tests/GenerateDeBruijnSequence.mjs b/tests/operations/tests/GenerateDeBruijnSequence.mjs index b68a843f..48e8c4ff 100644 --- a/tests/operations/tests/GenerateDeBruijnSequence.mjs +++ b/tests/operations/tests/GenerateDeBruijnSequence.mjs @@ -30,4 +30,4 @@ TestRegister.addTests([ } ] } -]) \ No newline at end of file +]); From 822a4fab86572817fcd2e6218d8c736d1e22bbf4 Mon Sep 17 00:00:00 2001 From: GCHQ 77703 Date: Tue, 19 Feb 2019 10:16:51 +0000 Subject: [PATCH 0005/1024] Fix operation linting --- src/core/operations/GenerateDeBruijnSequence.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/GenerateDeBruijnSequence.mjs b/src/core/operations/GenerateDeBruijnSequence.mjs index 647d3c7f..af788585 100644 --- a/src/core/operations/GenerateDeBruijnSequence.mjs +++ b/src/core/operations/GenerateDeBruijnSequence.mjs @@ -71,7 +71,7 @@ class GenerateDeBruijnSequence extends Operation { } return; } - + a[t] = a[t - p]; db(t + 1, p); for (let j = a[t - p] + 1; j < k; j++) { From 846e84d3a471513287f25d1e4071dbc5e970e272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20Silkenb=C3=A4umer?= Date: Sun, 3 Mar 2019 16:18:31 +0100 Subject: [PATCH 0006/1024] Add fernet encryption/decryption operation --- package-lock.json | 161 +++++++++++++++----------- package.json | 1 + src/core/config/Categories.json | 2 + src/core/operations/FernetDecrypt.mjs | 64 ++++++++++ src/core/operations/FernetEncrypt.mjs | 54 +++++++++ tests/operations/tests/Fernet.mjs | 80 +++++++++++++ 6 files changed, 292 insertions(+), 70 deletions(-) create mode 100644 src/core/operations/FernetDecrypt.mjs create mode 100644 src/core/operations/FernetEncrypt.mjs create mode 100644 tests/operations/tests/Fernet.mjs diff --git a/package-lock.json b/package-lock.json index 55ad6303..18da5b7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1631,7 +1631,7 @@ }, "array-equal": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, @@ -1716,7 +1716,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -1864,7 +1864,7 @@ }, "axios": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "dev": true, "requires": { @@ -2334,7 +2334,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -2371,7 +2371,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -2436,7 +2436,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -2590,7 +2590,7 @@ }, "camelcase-keys": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { @@ -2639,7 +2639,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -3172,7 +3172,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -3185,7 +3185,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -3332,7 +3332,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { @@ -3700,7 +3700,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -3764,7 +3764,7 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", "dev": true }, @@ -3969,7 +3969,7 @@ }, "entities": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", "dev": true }, @@ -4392,7 +4392,7 @@ }, "eventemitter2": { "version": "0.4.14", - "resolved": "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", "dev": true }, @@ -4404,7 +4404,7 @@ }, "events": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, @@ -4720,6 +4720,22 @@ "pend": "~1.2.0" } }, + "fernet": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fernet/-/fernet-0.3.1.tgz", + "integrity": "sha512-7KnsrcpLkUsKy6aH6Ow68hrMWhvE25rTDd3370+xVGkpqZta05cUCmdJQPyLBKTsNdPUB5NumJZBgJIJ60aQqw==", + "requires": { + "crypto-js": "~3.1.2-1", + "urlsafe-base64": "1.0.0" + }, + "dependencies": { + "crypto-js": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz", + "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=" + } + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -4821,7 +4837,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -5057,7 +5073,7 @@ }, "fs-extra": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "dev": true, "requires": { @@ -5726,7 +5742,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -5868,7 +5884,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -5945,7 +5961,7 @@ }, "grunt-cli": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", "dev": true, "requires": { @@ -5993,7 +6009,7 @@ "dependencies": { "shelljs": { "version": "0.5.3", - "resolved": "http://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", "dev": true } @@ -6013,7 +6029,7 @@ "dependencies": { "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true } @@ -6058,7 +6074,7 @@ }, "grunt-contrib-jshint": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz", "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=", "dev": true, "requires": { @@ -6157,7 +6173,7 @@ "dependencies": { "colors": { "version": "1.1.2", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true } @@ -6221,7 +6237,7 @@ "dependencies": { "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true } @@ -6482,7 +6498,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -6538,7 +6554,7 @@ }, "htmlparser2": { "version": "3.8.3", - "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { @@ -6557,7 +6573,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -6607,7 +6623,7 @@ }, "http-proxy-middleware": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", "dev": true, "requires": { @@ -7053,7 +7069,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -7614,7 +7630,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -7725,7 +7741,7 @@ }, "kew": { "version": "0.7.0", - "resolved": "http://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, @@ -7844,7 +7860,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -7857,7 +7873,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -8221,7 +8237,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, @@ -8280,7 +8296,7 @@ }, "meow": { "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { @@ -8501,7 +8517,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -8711,7 +8727,7 @@ }, "ncp": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=", "dev": true }, @@ -8810,7 +8826,7 @@ "dependencies": { "semver": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } @@ -8993,7 +9009,7 @@ "dependencies": { "colors": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=" }, "underscore": { @@ -9287,13 +9303,13 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -9302,7 +9318,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, @@ -9338,7 +9354,7 @@ }, "p-is-promise": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", "dev": true }, @@ -9526,7 +9542,7 @@ }, "parse-asn1": { "version": "5.1.1", - "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { @@ -9612,7 +9628,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -9653,7 +9669,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -9836,7 +9852,7 @@ "dependencies": { "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true } @@ -10207,7 +10223,7 @@ }, "progress": { "version": "1.1.8", - "resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, "promise-inflight": { @@ -10232,13 +10248,13 @@ "dependencies": { "async": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", "dev": true }, "winston": { "version": "2.1.1", - "resolved": "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", "dev": true, "requires": { @@ -10253,7 +10269,7 @@ "dependencies": { "colors": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, @@ -10476,7 +10492,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -10665,7 +10681,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -10716,7 +10732,7 @@ }, "htmlparser2": { "version": "3.3.0", - "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "dev": true, "requires": { @@ -10728,7 +10744,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -10995,7 +11011,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -11315,7 +11331,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -11359,7 +11375,7 @@ }, "shelljs": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", "dev": true }, @@ -12080,7 +12096,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -12097,7 +12113,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, @@ -12190,7 +12206,7 @@ }, "tar": { "version": "2.2.1", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { @@ -12348,7 +12364,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -12942,6 +12958,11 @@ "requires-port": "^1.0.0" } }, + "urlsafe-base64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz", + "integrity": "sha1-I/iQaabGL0bPOh07ABac77kL4MY=" + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -13008,7 +13029,7 @@ "dependencies": { "async": { "version": "0.9.2", - "resolved": "http://registry.npmjs.org/async/-/async-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", "dev": true }, @@ -13034,7 +13055,7 @@ }, "valid-data-url": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", "integrity": "sha512-FXg2qXMzfAhZc0y2HzELNfUeiOjPr+52hU1DNBWiJJ2luXD+dD1R9NA48Ug5aj0ibbxroeGDc/RJv6ThiGgkDw==", "dev": true }, @@ -13050,7 +13071,7 @@ }, "validator": { "version": "9.4.1", - "resolved": "http://registry.npmjs.org/validator/-/validator-9.4.1.tgz", + "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz", "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==", "dev": true }, @@ -13736,14 +13757,14 @@ "dependencies": { "async": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", "dev": true, "optional": true }, "colors": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true, "optional": true @@ -13776,7 +13797,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { diff --git a/package.json b/package.json index cb59db38..35901453 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "esmangle": "^1.0.1", "esprima": "^4.0.1", "exif-parser": "^0.1.12", + "fernet": "^0.3.1", "file-saver": "^2.0.0", "geodesy": "^1.1.3", "highlight.js": "^9.13.1", diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 8235ab10..2db5af51 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -73,6 +73,8 @@ "DES Decrypt", "Triple DES Encrypt", "Triple DES Decrypt", + "Fernet Encrypt", + "Fernet Decrypt", "RC2 Encrypt", "RC2 Decrypt", "RC4", diff --git a/src/core/operations/FernetDecrypt.mjs b/src/core/operations/FernetDecrypt.mjs new file mode 100644 index 00000000..76d4fd16 --- /dev/null +++ b/src/core/operations/FernetDecrypt.mjs @@ -0,0 +1,64 @@ +/** + * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @copyright Karsten Silkenbäumer 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; +import fernet from "fernet"; + +/** + * FernetDecrypt operation + */ +class FernetDecrypt extends Operation { + /** + * FernetDecrypt constructor + */ + constructor() { + super(); + + this.name = "Fernet Decrypt"; + this.module = "Default"; + this.description = "Fernet is a symmetric encryption method which makes sure that the message encrypted cannot be manipulated/read without the key. It uses URL safe encoding for the keys. Fernet uses 128-bit AES in CBC mode and PKCS7 padding, with HMAC using SHA256 for authentication. The IV is created from os.random().

Key: The key must be 32 bytes (256 bits) encoded with Base64."; + this.infoURL = "https://asecuritysite.com/encryption/fer"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + "name": "Key", + "type": "string", + "value": "" + }, + ]; + this.patterns = [ + { + match: "^[A-Z\\d\\-_=]{20,}$", + flags: "i", + args: [] + }, + ]; + } + /** + * @param {String} input + * @param {Object[]} args + * @returns {String} + */ + run(input, args) { + const [secretInput] = args; + // const fernet = require("fernet"); + try { + const secret = new fernet.Secret(secretInput); + const token = new fernet.Token({ + secret: secret, + token: input, + ttl: 0 + }); + return token.decode(); + } catch (err) { + throw new OperationError(err); + } + } +} + +export default FernetDecrypt; diff --git a/src/core/operations/FernetEncrypt.mjs b/src/core/operations/FernetEncrypt.mjs new file mode 100644 index 00000000..ac8c64cb --- /dev/null +++ b/src/core/operations/FernetEncrypt.mjs @@ -0,0 +1,54 @@ +/** + * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @copyright Karsten Silkenbäumer 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; +import fernet from "fernet"; + +/** + * FernetEncrypt operation + */ +class FernetEncrypt extends Operation { + /** + * FernetEncrypt constructor + */ + constructor() { + super(); + + this.name = "Fernet Encrypt"; + this.module = "Default"; + this.description = "Fernet is a symmetric encryption method which makes sure that the message encrypted cannot be manipulated/read without the key. It uses URL safe encoding for the keys. Fernet uses 128-bit AES in CBC mode and PKCS7 padding, with HMAC using SHA256 for authentication. The IV is created from os.random().

Key: The key must be 32 bytes (256 bits) encoded with Base64."; + this.infoURL = "https://asecuritysite.com/encryption/fer"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + "name": "Key", + "type": "string", + "value": "" + }, + ]; + } + /** + * @param {String} input + * @param {Object[]} args + * @returns {String} + */ + run(input, args) { + const [secretInput] = args; + try { + const secret = new fernet.Secret(secretInput); + const token = new fernet.Token({ + secret: secret, + }); + return token.encode(input); + } catch (err) { + throw new OperationError(err); + } + } +} + +export default FernetEncrypt; diff --git a/tests/operations/tests/Fernet.mjs b/tests/operations/tests/Fernet.mjs new file mode 100644 index 00000000..0632fca9 --- /dev/null +++ b/tests/operations/tests/Fernet.mjs @@ -0,0 +1,80 @@ +/** + * Fernet tests. + * + * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @copyright Karsten Silkenbäumer 2019 + * @license Apache-2.0 + */ +import TestRegister from "../TestRegister"; + +TestRegister.addTests([ + { + name: "Fernet Decrypt: no input", + input: "", + expectedOutput: "Error: Invalid version", + recipeConfig: [ + { + op: "Fernet Decrypt", + args: ["MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI="] + } + ], + }, + { + name: "Fernet Decrypt: no secret", + input: "gAAAAABce-Tycae8klRxhDX2uenJ-uwV8-A1XZ2HRnfOXlNzkKKfRxviNLlgtemhT_fd1Fw5P_zFUAjd69zaJBQyWppAxVV00SExe77ql8c5n62HYJOnoIU=", + expectedOutput: "Error: Secret must be 32 url-safe base64-encoded bytes.", + recipeConfig: [ + { + op: "Fernet Decrypt", + args: [""] + } + ], + }, + { + name: "Fernet Decrypt: valid arguments", + input: "gAAAAABce-Tycae8klRxhDX2uenJ-uwV8-A1XZ2HRnfOXlNzkKKfRxviNLlgtemhT_fd1Fw5P_zFUAjd69zaJBQyWppAxVV00SExe77ql8c5n62HYJOnoIU=", + expectedOutput: "This is a secret message.\n", + recipeConfig: [ + { + op: "Fernet Decrypt", + args: ["VGhpc0lzVGhpcnR5VHdvQ2hhcmFjdGVyc0xvbmdLZXk="] + } + ], + } +]); + +TestRegister.addTests([ + { + name: "Fernet Encrypt: no input", + input: "", + expectedMatch: /^gAAAAABce-[\w-]+={0,2}$/, + recipeConfig: [ + { + op: "Fernet Encrypt", + args: ["MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI="] + } + ], + }, + { + name: "Fernet Encrypt: no secret", + input: "This is a secret message.\n", + expectedOutput: "Error: Secret must be 32 url-safe base64-encoded bytes.", + recipeConfig: [ + { + op: "Fernet Encrypt", + args: [""] + } + ], + }, + { + name: "Fernet Encrypt: valid arguments", + input: "This is a secret message.\n", + expectedMatch: /^gAAAAABce-[\w-]+={0,2}$/, + recipeConfig: [ + { + op: "Fernet Encrypt", + args: ["MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI="] + } + ], + } +]); From 55cac174564cf71da857f6aee0941e06635d445d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20Silkenb=C3=A4umer?= Date: Sun, 3 Mar 2019 17:19:07 +0100 Subject: [PATCH 0007/1024] Change author URL --- src/core/operations/FernetDecrypt.mjs | 2 +- src/core/operations/FernetEncrypt.mjs | 2 +- tests/operations/tests/Fernet.mjs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/operations/FernetDecrypt.mjs b/src/core/operations/FernetDecrypt.mjs index 76d4fd16..d68593d8 100644 --- a/src/core/operations/FernetDecrypt.mjs +++ b/src/core/operations/FernetDecrypt.mjs @@ -1,5 +1,5 @@ /** - * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @author Karsten Silkenbäumer [github.com/kassi] * @copyright Karsten Silkenbäumer 2019 * @license Apache-2.0 */ diff --git a/src/core/operations/FernetEncrypt.mjs b/src/core/operations/FernetEncrypt.mjs index ac8c64cb..2f98449f 100644 --- a/src/core/operations/FernetEncrypt.mjs +++ b/src/core/operations/FernetEncrypt.mjs @@ -1,5 +1,5 @@ /** - * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @author Karsten Silkenbäumer [github.com/kassi] * @copyright Karsten Silkenbäumer 2019 * @license Apache-2.0 */ diff --git a/tests/operations/tests/Fernet.mjs b/tests/operations/tests/Fernet.mjs index 0632fca9..ee9ba2f1 100644 --- a/tests/operations/tests/Fernet.mjs +++ b/tests/operations/tests/Fernet.mjs @@ -1,7 +1,7 @@ /** * Fernet tests. * - * @author Karsten Silkenbäumer [kassi@users.noreply.github.com] + * @author Karsten Silkenbäumer [github.com/kassi] * @copyright Karsten Silkenbäumer 2019 * @license Apache-2.0 */ From 0f5f20247a87c1ee979c2373834be60c3254397a Mon Sep 17 00:00:00 2001 From: VirtualColossus <48803849+VirtualColossus@users.noreply.github.com> Date: Mon, 25 Mar 2019 13:25:13 +0000 Subject: [PATCH 0008/1024] Added Lorenz SZ40/42 operation --- src/core/operations/Lorenz.mjs | 606 +++++++++++++++++++++++++++++++++ 1 file changed, 606 insertions(+) create mode 100644 src/core/operations/Lorenz.mjs diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs new file mode 100644 index 00000000..72331727 --- /dev/null +++ b/src/core/operations/Lorenz.mjs @@ -0,0 +1,606 @@ +/** + * Emulation of the Lorenz SZ40/42a/42b cipher attachment. + * + * @author VirtualColossus [martin@virtualcolossus.co.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; + +/** + * Lorenz operation + */ +class Lorenz extends Operation { + + /** + * Lorenz constructor + */ + constructor() { + super(); + + this.name = "Lorenz"; + this.module = "Default"; + this.description = "Enciphers characters using the World War 2 German Lorenz SZ cipher attachment."; + this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Model", + type: "option", + "value": ["SZ40", "SZ42a", "SZ42b"] + }, + { + name: "Wheel Pattern", + type: "option", + "value": ["KH Pattern", "ZMUG Pattern", "BREAM Pattern", "No Pattern"] + }, + { + name: "KT-Schalter", + type: "boolean" + }, + { + name: "Mode", + type: "argSelector", + "value": [ + { + name: "Send", + on: [4], + off: [5] + }, + { + name: "Receive", + off: [4], + on: [5] + } + ] + }, + { + name: "Input Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Format", + type: "option", + "value": ["5/8/9", "+/-/."] + }, + { + name: "Ψ1 start (1-43)", + type: "number", + "value": 1 + }, + { + name: "Ψ2 start (1-47)", + type: "number", + "value": 1 + }, + { + name: "Ψ3 start (1-51)", + type: "number", + "value": 1 + }, + { + name: "Ψ4 start (1-53)", + type: "number", + "value": 1 + }, + { + name: "Ψ5 start (1-59)", + type: "number", + "value": 1 + }, + { + name: "Μ37 start (1-37)", + type: "number", + "value": 1 + }, + { + name: "Μ61 start (1-61)", + type: "number", + "value": 1 + }, + { + name: "Χ1 start (1-41)", + type: "number", + "value": 1 + }, + { + name: "Χ2 start (1-31)", + type: "number", + "value": 1 + }, + { + name: "Χ3 start (1-29)", + type: "number", + "value": 1 + }, + { + name: "Χ4 start (1-26)", + type: "number", + "value": 1 + }, + { + name: "Χ5 start (1-23)", + type: "number", + "value": 1 + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + + const model = args[0], + pattern = args[1], + kt = args[2], + mode = args[3], + format = args[6]; + + var intype = args[4], + outtype = args[5], + s1 = args[7], + s2 = args[8], + s3 = args[9], + s4 = args[10], + s5 = args[11], + m37 = args[12], + m61 = args[13], + x1 = args[14], + x2 = args[15], + x3 = args[16], + x4 = args[17], + x5 = args[18], + figShifted = false; + + this.reverseTable(); + + if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43"); + if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47"); + if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51"); + if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53"); + if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59"); + if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37"); + if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61"); + if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41"); + if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31"); + if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29"); + if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26"); + if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); + + // Initialise chosen wheel pattern + var chosenSetting = INIT_PATTERNS[pattern]; + var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X) + var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S) + var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M) + + var ita2 = ""; + if(mode == "Send") { + + // Convert input text to ITA2 (including figure/letter shifts) + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + + if(intype == "Plaintext") { + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character"); + + if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) { + // in letters mode and next char needs to be figure shifted + figShifted = true; + return "55" + figShiftArr[letter]; + } else if( figShifted ) { + // in figures mode and next char needs to be letter shifted + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + if( figShiftedChars.indexOf(letter) === -1 ) { + figShifted = false; + return "88" + letter; + } else { + return figShiftArr[letter]; + } + + } else { + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + return letter; + } + + } else { + + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + + return letter; + + } + + }); + + } else { + + // Receive input should always be ITA2 + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + return letter; + }); + + } + + const ita2Input = ita2.join(""); + console.log(ita2Input); + + var thisPsi = []; + var thisChi = []; + var thisMu = []; + var m61lug = 0; + var m37lug = 0; + var p5 = [0,0,0]; + + const self = this; + const letters = Array.prototype.map.call(ita2Input, function(character) { + const letter = character.toUpperCase(); + + console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); + + var x2bptr = x2+1; + if(x2bptr==32) x2bptr=1; + var s1bptr = s1+1; + if(s1bptr==44) s1bptr=1; + + console.log('x2b1='+x2bptr+' s1b1='+s1bptr); + + thisChi = [ + chiSettings[1][x1-1], + chiSettings[2][x2-1], + chiSettings[3][x3-1], + chiSettings[4][x4-1], + chiSettings[5][x5-1] + ]; + + thisPsi = [ + psiSettings[1][s1-1], + psiSettings[2][s2-1], + psiSettings[3][s3-1], + psiSettings[4][s4-1], + psiSettings[5][s5-1] + ]; + + thisMu = [ + muSettings[1][m61-1], + muSettings[2][m37-1] + ]; + + console.log(letter + ' + ' + self.REVERSE_ITA2_TABLE[thisPsi.join("")] + ' + ' + self.REVERSE_ITA2_TABLE[thisChi.join("")]); + + if (typeof ITA2_TABLE[letter] == "undefined") { + return ""; + } + + var xorSum = []; + for(var i=0;i<=4;i++) { + xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; + } + const resultStr = xorSum.join(""); + + // Move Chi wheels one back after each letter + if(--x1 < 1) x1 = 41; + if(--x2 < 1) x2 = 31; + if(--x3 < 1) x3 = 29; + if(--x4 < 1) x4 = 26; + if(--x5 < 1) x5 = 23; + + // Motor wheel (61 pin) also moves one each letter + if(--m61 < 1) m61 = 61; + + // If M61 is set, we also move M37 + if(m61lug == 1) { + if(--m37 < 1) m37 = 37; + } + + var basicmotor = m37lug; + var totalmotor = basicmotor; + var lim = 0; + + // Limitations here + if(model=='SZ42a') { + // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position + lim = chiSettings[2][x2bptr-1]; + if(kt) { + if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=='SZ42b') { + // Chi 2 one back + Psi 1 one back. + const x2b1lug = chiSettings[2][x2bptr-1]; + const s1b1lug = psiSettings[1][s1bptr-1]; + lim = 1; + if(x2b1lug==s1b1lug) lim=0; + if(kt) { + if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=="SZ40") { + // SZ40 + totalmotor = basicmotor; + console.log('TM='+basicmotor); + } else { + throw new OperationError("Lorenz model type not recognised"); + } + + // increment Psi wheels when current M37 lug active + if(totalmotor == 1) { + if(--s1 < 1) s1 = 43; + if(--s2 < 1) s2 = 47; + if(--s3 < 1) s3 = 51; + if(--s4 < 1) s4 = 53; + if(--s5 < 1) s5 = 59; + } + + m61lug = muSettings[1][m61-1]; + m37lug = muSettings[2][m37-1]; + + p5[2] = p5[1]; + p5[1] = p5[0]; + p5[0] = ITA2_TABLE[letter][4]; + console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); + + var rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; + if(format=="5/8/9") { + if(rtnstr=="+") rtnstr="5"; + if(rtnstr=="-") rtnstr="8"; + if(rtnstr==".") rtnstr="9"; + } + return rtnstr; + }); + + var ita2output = letters.join(""); + var output = ""; + + if(mode == "Receive") { + + figShifted = false; + + // Convert output ITA2 to plaintext (including figure/letter shifts) + const out = Array.prototype.map.call(ita2output, function(letter) { + + if(outtype == "Plaintext") { + + if( letter == "5" || letter == "+" ) { + figShifted = true; + return; + } else if( letter == "8" || letter == "-" ) { + figShifted = false; + return; + } else if( letter == "9" ) { + return " "; + } else if( letter == "3" ) { + return "\n"; + } else if( letter == "4" ) { + return ""; + } + + + if(figShifted) { + return self.REVERSE_FIGSHIFT_TABLE[letter]; + } else { + return letter; + } + + } else { + return letter; + } + + }); + output = out.join(""); + + } else { + output = ita2output; + } + + return output; + + } + + /** + * Reverses the ITA2 Code lookup table + */ + reverseTable() { + this.REVERSE_ITA2_TABLE = {}; + this.REVERSE_FIGSHIFT_TABLE = {}; + + for (const letter in ITA2_TABLE) { + const code = ITA2_TABLE[letter]; + this.REVERSE_ITA2_TABLE[code] = letter; + } + for (const letter in figShiftArr) { + const ltr = figShiftArr[letter]; + this.REVERSE_FIGSHIFT_TABLE[ltr] = letter; + } + } + +} + +const ITA2_TABLE = { + "A": "11000", + "B": "10011", + "C": "01110", + "D": "10010", + "E": "10000", + "F": "10110", + "G": "01011", + "H": "00101", + "I": "01100", + "J": "11010", + "K": "11110", + "L": "01001", + "M": "00111", + "N": "00110", + "O": "00011", + "P": "01101", + "Q": "11101", + "R": "01010", + "S": "10100", + "T": "00001", + "U": "11100", + "V": "01111", + "W": "11001", + "X": "10111", + "Y": "10101", + "Z": "10001", + "3": "00010", + "4": "01000", + "9": "00100", + "/": "00000", + " ": "00100", + ".": "00100", + "8": "11111", + "5": "11011", + "-": "11111", + "+": "11011" +}; + +const validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-'()/:=?,. \n\r"; +const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; +const figShiftedChars = "1234567890+-'()/:=?,." + +const figShiftArr = { + "1" : "Q", + "2" : "W", + "3" : "E", + "4" : "R", + "5" : "T", + "6" : "Y", + "7" : "U", + "8" : "I", + "9" : "O", + "0" : "P", + " " : "9", + "-" : "A", + "?" : "B", + ":" : "C", + "#" : "D", + "%" : "F", + "@" : "G", + "£" : "H", + "(" : "K", + ")" : "L", + "." : "M", + "," : "N", + "'" : "S", + "=" : "V", + "/" : "X", + "+" : "Z", + "\n" : "3", + "\r" : "4" +}; + +const INIT_PATTERNS = { + "No Pattern" : { + "X" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "S" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "M" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + } + + }, + "KH Pattern" : { + "X" : { + 1 : [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], + 2 : [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], + 3 : [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], + 4 : [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], + 5 : [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] + }, + "S" : { + 1 : [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], + 2 : [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], + 3 : [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], + 4 : [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], + 5 : [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] + }, + "M": { + 1 : [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], + 2 : [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] + } + }, + "ZMUG Pattern" : { + "X" : { + 1 : [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], + 2 : [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], + 3 : [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], + 4 : [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], + 5 : [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1], + }, + "S" : { + 1 : [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], + 2 : [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], + 3 : [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], + 4 : [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], + 5 : [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] + }, + "M" : { + 1 : [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], + 2 : [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] + } + }, + "BREAM Pattern" : { + "X" : { + 1 : [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], + 2 : [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], + 3 : [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], + 4 : [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], + 5 : [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] + }, + "S" : { + 1 : [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], + 2 : [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], + 3 : [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], + 4 : [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], + 5 : [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] + }, + "M" : { + 1 : [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], + 2 : [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] + } + } +}; + +export default Lorenz; From a7f61397f777e0c0e7d6da8645b7d2ceb5966e93 Mon Sep 17 00:00:00 2001 From: VirtualColossus <48803849+VirtualColossus@users.noreply.github.com> Date: Mon, 25 Mar 2019 13:26:26 +0000 Subject: [PATCH 0009/1024] Added Lorenz SZ40/42 Operation --- src/core/config/Categories.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 2fe8e8f7..72f2a43b 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -106,7 +106,8 @@ "Enigma", "Bombe", "Multiple Bombe", - "Typex" + "Typex", + "Lorenz Encode" ] }, { From 93c41f044cf2cdfa799e329db5724ddfdcab36f5 Mon Sep 17 00:00:00 2001 From: Martin Gillow Date: Mon, 25 Mar 2019 13:31:13 +0000 Subject: [PATCH 0010/1024] Added Lorenz SZ40/42 operation --- src/core/operations/Lorenz.mjs | 606 +++++++++++++++++++++++++++++++++ 1 file changed, 606 insertions(+) create mode 100644 src/core/operations/Lorenz.mjs diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs new file mode 100644 index 00000000..72331727 --- /dev/null +++ b/src/core/operations/Lorenz.mjs @@ -0,0 +1,606 @@ +/** + * Emulation of the Lorenz SZ40/42a/42b cipher attachment. + * + * @author VirtualColossus [martin@virtualcolossus.co.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; + +/** + * Lorenz operation + */ +class Lorenz extends Operation { + + /** + * Lorenz constructor + */ + constructor() { + super(); + + this.name = "Lorenz"; + this.module = "Default"; + this.description = "Enciphers characters using the World War 2 German Lorenz SZ cipher attachment."; + this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Model", + type: "option", + "value": ["SZ40", "SZ42a", "SZ42b"] + }, + { + name: "Wheel Pattern", + type: "option", + "value": ["KH Pattern", "ZMUG Pattern", "BREAM Pattern", "No Pattern"] + }, + { + name: "KT-Schalter", + type: "boolean" + }, + { + name: "Mode", + type: "argSelector", + "value": [ + { + name: "Send", + on: [4], + off: [5] + }, + { + name: "Receive", + off: [4], + on: [5] + } + ] + }, + { + name: "Input Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Format", + type: "option", + "value": ["5/8/9", "+/-/."] + }, + { + name: "Ψ1 start (1-43)", + type: "number", + "value": 1 + }, + { + name: "Ψ2 start (1-47)", + type: "number", + "value": 1 + }, + { + name: "Ψ3 start (1-51)", + type: "number", + "value": 1 + }, + { + name: "Ψ4 start (1-53)", + type: "number", + "value": 1 + }, + { + name: "Ψ5 start (1-59)", + type: "number", + "value": 1 + }, + { + name: "Μ37 start (1-37)", + type: "number", + "value": 1 + }, + { + name: "Μ61 start (1-61)", + type: "number", + "value": 1 + }, + { + name: "Χ1 start (1-41)", + type: "number", + "value": 1 + }, + { + name: "Χ2 start (1-31)", + type: "number", + "value": 1 + }, + { + name: "Χ3 start (1-29)", + type: "number", + "value": 1 + }, + { + name: "Χ4 start (1-26)", + type: "number", + "value": 1 + }, + { + name: "Χ5 start (1-23)", + type: "number", + "value": 1 + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + + const model = args[0], + pattern = args[1], + kt = args[2], + mode = args[3], + format = args[6]; + + var intype = args[4], + outtype = args[5], + s1 = args[7], + s2 = args[8], + s3 = args[9], + s4 = args[10], + s5 = args[11], + m37 = args[12], + m61 = args[13], + x1 = args[14], + x2 = args[15], + x3 = args[16], + x4 = args[17], + x5 = args[18], + figShifted = false; + + this.reverseTable(); + + if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43"); + if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47"); + if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51"); + if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53"); + if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59"); + if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37"); + if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61"); + if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41"); + if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31"); + if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29"); + if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26"); + if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); + + // Initialise chosen wheel pattern + var chosenSetting = INIT_PATTERNS[pattern]; + var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X) + var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S) + var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M) + + var ita2 = ""; + if(mode == "Send") { + + // Convert input text to ITA2 (including figure/letter shifts) + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + + if(intype == "Plaintext") { + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character"); + + if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) { + // in letters mode and next char needs to be figure shifted + figShifted = true; + return "55" + figShiftArr[letter]; + } else if( figShifted ) { + // in figures mode and next char needs to be letter shifted + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + if( figShiftedChars.indexOf(letter) === -1 ) { + figShifted = false; + return "88" + letter; + } else { + return figShiftArr[letter]; + } + + } else { + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + return letter; + } + + } else { + + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + + return letter; + + } + + }); + + } else { + + // Receive input should always be ITA2 + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + return letter; + }); + + } + + const ita2Input = ita2.join(""); + console.log(ita2Input); + + var thisPsi = []; + var thisChi = []; + var thisMu = []; + var m61lug = 0; + var m37lug = 0; + var p5 = [0,0,0]; + + const self = this; + const letters = Array.prototype.map.call(ita2Input, function(character) { + const letter = character.toUpperCase(); + + console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); + + var x2bptr = x2+1; + if(x2bptr==32) x2bptr=1; + var s1bptr = s1+1; + if(s1bptr==44) s1bptr=1; + + console.log('x2b1='+x2bptr+' s1b1='+s1bptr); + + thisChi = [ + chiSettings[1][x1-1], + chiSettings[2][x2-1], + chiSettings[3][x3-1], + chiSettings[4][x4-1], + chiSettings[5][x5-1] + ]; + + thisPsi = [ + psiSettings[1][s1-1], + psiSettings[2][s2-1], + psiSettings[3][s3-1], + psiSettings[4][s4-1], + psiSettings[5][s5-1] + ]; + + thisMu = [ + muSettings[1][m61-1], + muSettings[2][m37-1] + ]; + + console.log(letter + ' + ' + self.REVERSE_ITA2_TABLE[thisPsi.join("")] + ' + ' + self.REVERSE_ITA2_TABLE[thisChi.join("")]); + + if (typeof ITA2_TABLE[letter] == "undefined") { + return ""; + } + + var xorSum = []; + for(var i=0;i<=4;i++) { + xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; + } + const resultStr = xorSum.join(""); + + // Move Chi wheels one back after each letter + if(--x1 < 1) x1 = 41; + if(--x2 < 1) x2 = 31; + if(--x3 < 1) x3 = 29; + if(--x4 < 1) x4 = 26; + if(--x5 < 1) x5 = 23; + + // Motor wheel (61 pin) also moves one each letter + if(--m61 < 1) m61 = 61; + + // If M61 is set, we also move M37 + if(m61lug == 1) { + if(--m37 < 1) m37 = 37; + } + + var basicmotor = m37lug; + var totalmotor = basicmotor; + var lim = 0; + + // Limitations here + if(model=='SZ42a') { + // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position + lim = chiSettings[2][x2bptr-1]; + if(kt) { + if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=='SZ42b') { + // Chi 2 one back + Psi 1 one back. + const x2b1lug = chiSettings[2][x2bptr-1]; + const s1b1lug = psiSettings[1][s1bptr-1]; + lim = 1; + if(x2b1lug==s1b1lug) lim=0; + if(kt) { + if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=="SZ40") { + // SZ40 + totalmotor = basicmotor; + console.log('TM='+basicmotor); + } else { + throw new OperationError("Lorenz model type not recognised"); + } + + // increment Psi wheels when current M37 lug active + if(totalmotor == 1) { + if(--s1 < 1) s1 = 43; + if(--s2 < 1) s2 = 47; + if(--s3 < 1) s3 = 51; + if(--s4 < 1) s4 = 53; + if(--s5 < 1) s5 = 59; + } + + m61lug = muSettings[1][m61-1]; + m37lug = muSettings[2][m37-1]; + + p5[2] = p5[1]; + p5[1] = p5[0]; + p5[0] = ITA2_TABLE[letter][4]; + console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); + + var rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; + if(format=="5/8/9") { + if(rtnstr=="+") rtnstr="5"; + if(rtnstr=="-") rtnstr="8"; + if(rtnstr==".") rtnstr="9"; + } + return rtnstr; + }); + + var ita2output = letters.join(""); + var output = ""; + + if(mode == "Receive") { + + figShifted = false; + + // Convert output ITA2 to plaintext (including figure/letter shifts) + const out = Array.prototype.map.call(ita2output, function(letter) { + + if(outtype == "Plaintext") { + + if( letter == "5" || letter == "+" ) { + figShifted = true; + return; + } else if( letter == "8" || letter == "-" ) { + figShifted = false; + return; + } else if( letter == "9" ) { + return " "; + } else if( letter == "3" ) { + return "\n"; + } else if( letter == "4" ) { + return ""; + } + + + if(figShifted) { + return self.REVERSE_FIGSHIFT_TABLE[letter]; + } else { + return letter; + } + + } else { + return letter; + } + + }); + output = out.join(""); + + } else { + output = ita2output; + } + + return output; + + } + + /** + * Reverses the ITA2 Code lookup table + */ + reverseTable() { + this.REVERSE_ITA2_TABLE = {}; + this.REVERSE_FIGSHIFT_TABLE = {}; + + for (const letter in ITA2_TABLE) { + const code = ITA2_TABLE[letter]; + this.REVERSE_ITA2_TABLE[code] = letter; + } + for (const letter in figShiftArr) { + const ltr = figShiftArr[letter]; + this.REVERSE_FIGSHIFT_TABLE[ltr] = letter; + } + } + +} + +const ITA2_TABLE = { + "A": "11000", + "B": "10011", + "C": "01110", + "D": "10010", + "E": "10000", + "F": "10110", + "G": "01011", + "H": "00101", + "I": "01100", + "J": "11010", + "K": "11110", + "L": "01001", + "M": "00111", + "N": "00110", + "O": "00011", + "P": "01101", + "Q": "11101", + "R": "01010", + "S": "10100", + "T": "00001", + "U": "11100", + "V": "01111", + "W": "11001", + "X": "10111", + "Y": "10101", + "Z": "10001", + "3": "00010", + "4": "01000", + "9": "00100", + "/": "00000", + " ": "00100", + ".": "00100", + "8": "11111", + "5": "11011", + "-": "11111", + "+": "11011" +}; + +const validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-'()/:=?,. \n\r"; +const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; +const figShiftedChars = "1234567890+-'()/:=?,." + +const figShiftArr = { + "1" : "Q", + "2" : "W", + "3" : "E", + "4" : "R", + "5" : "T", + "6" : "Y", + "7" : "U", + "8" : "I", + "9" : "O", + "0" : "P", + " " : "9", + "-" : "A", + "?" : "B", + ":" : "C", + "#" : "D", + "%" : "F", + "@" : "G", + "£" : "H", + "(" : "K", + ")" : "L", + "." : "M", + "," : "N", + "'" : "S", + "=" : "V", + "/" : "X", + "+" : "Z", + "\n" : "3", + "\r" : "4" +}; + +const INIT_PATTERNS = { + "No Pattern" : { + "X" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "S" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "M" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + } + + }, + "KH Pattern" : { + "X" : { + 1 : [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], + 2 : [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], + 3 : [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], + 4 : [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], + 5 : [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] + }, + "S" : { + 1 : [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], + 2 : [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], + 3 : [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], + 4 : [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], + 5 : [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] + }, + "M": { + 1 : [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], + 2 : [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] + } + }, + "ZMUG Pattern" : { + "X" : { + 1 : [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], + 2 : [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], + 3 : [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], + 4 : [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], + 5 : [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1], + }, + "S" : { + 1 : [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], + 2 : [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], + 3 : [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], + 4 : [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], + 5 : [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] + }, + "M" : { + 1 : [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], + 2 : [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] + } + }, + "BREAM Pattern" : { + "X" : { + 1 : [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], + 2 : [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], + 3 : [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], + 4 : [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], + 5 : [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] + }, + "S" : { + 1 : [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], + 2 : [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], + 3 : [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], + 4 : [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], + 5 : [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] + }, + "M" : { + 1 : [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], + 2 : [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] + } + } +}; + +export default Lorenz; From b6eb851a1312c78f285c00bc9b67dba1347bd9f1 Mon Sep 17 00:00:00 2001 From: Martin Gillow Date: Mon, 25 Mar 2019 13:34:25 +0000 Subject: [PATCH 0011/1024] Added Lorenz SZ40/42 operation --- src/core/config/Categories.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 2fe8e8f7..83a8fb16 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -106,7 +106,8 @@ "Enigma", "Bombe", "Multiple Bombe", - "Typex" + "Typex", + "Lorenz" ] }, { From 578502187df673a922c5955b4ad8e0139d3dca0d Mon Sep 17 00:00:00 2001 From: martin gillow Date: Mon, 25 Mar 2019 19:37:20 +0000 Subject: [PATCH 0012/1024] Added custom lug option --- src/core/operations/Lorenz.mjs | 606 +++++++++++++++++++++++++++++++++ 1 file changed, 606 insertions(+) create mode 100644 src/core/operations/Lorenz.mjs diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs new file mode 100644 index 00000000..72331727 --- /dev/null +++ b/src/core/operations/Lorenz.mjs @@ -0,0 +1,606 @@ +/** + * Emulation of the Lorenz SZ40/42a/42b cipher attachment. + * + * @author VirtualColossus [martin@virtualcolossus.co.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError"; + +/** + * Lorenz operation + */ +class Lorenz extends Operation { + + /** + * Lorenz constructor + */ + constructor() { + super(); + + this.name = "Lorenz"; + this.module = "Default"; + this.description = "Enciphers characters using the World War 2 German Lorenz SZ cipher attachment."; + this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Model", + type: "option", + "value": ["SZ40", "SZ42a", "SZ42b"] + }, + { + name: "Wheel Pattern", + type: "option", + "value": ["KH Pattern", "ZMUG Pattern", "BREAM Pattern", "No Pattern"] + }, + { + name: "KT-Schalter", + type: "boolean" + }, + { + name: "Mode", + type: "argSelector", + "value": [ + { + name: "Send", + on: [4], + off: [5] + }, + { + name: "Receive", + off: [4], + on: [5] + } + ] + }, + { + name: "Input Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Type", + type: "option", + "value": ["Plaintext", "ITA2"] + }, + { + name: "Output Format", + type: "option", + "value": ["5/8/9", "+/-/."] + }, + { + name: "Ψ1 start (1-43)", + type: "number", + "value": 1 + }, + { + name: "Ψ2 start (1-47)", + type: "number", + "value": 1 + }, + { + name: "Ψ3 start (1-51)", + type: "number", + "value": 1 + }, + { + name: "Ψ4 start (1-53)", + type: "number", + "value": 1 + }, + { + name: "Ψ5 start (1-59)", + type: "number", + "value": 1 + }, + { + name: "Μ37 start (1-37)", + type: "number", + "value": 1 + }, + { + name: "Μ61 start (1-61)", + type: "number", + "value": 1 + }, + { + name: "Χ1 start (1-41)", + type: "number", + "value": 1 + }, + { + name: "Χ2 start (1-31)", + type: "number", + "value": 1 + }, + { + name: "Χ3 start (1-29)", + type: "number", + "value": 1 + }, + { + name: "Χ4 start (1-26)", + type: "number", + "value": 1 + }, + { + name: "Χ5 start (1-23)", + type: "number", + "value": 1 + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + + const model = args[0], + pattern = args[1], + kt = args[2], + mode = args[3], + format = args[6]; + + var intype = args[4], + outtype = args[5], + s1 = args[7], + s2 = args[8], + s3 = args[9], + s4 = args[10], + s5 = args[11], + m37 = args[12], + m61 = args[13], + x1 = args[14], + x2 = args[15], + x3 = args[16], + x4 = args[17], + x5 = args[18], + figShifted = false; + + this.reverseTable(); + + if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43"); + if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47"); + if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51"); + if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53"); + if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59"); + if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37"); + if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61"); + if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41"); + if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31"); + if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29"); + if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26"); + if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); + + // Initialise chosen wheel pattern + var chosenSetting = INIT_PATTERNS[pattern]; + var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X) + var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S) + var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M) + + var ita2 = ""; + if(mode == "Send") { + + // Convert input text to ITA2 (including figure/letter shifts) + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + + if(intype == "Plaintext") { + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character"); + + if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) { + // in letters mode and next char needs to be figure shifted + figShifted = true; + return "55" + figShiftArr[letter]; + } else if( figShifted ) { + // in figures mode and next char needs to be letter shifted + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + if( figShiftedChars.indexOf(letter) === -1 ) { + figShifted = false; + return "88" + letter; + } else { + return figShiftArr[letter]; + } + + } else { + if(letter=="\n") return "34"; + if(letter=="\r") return "4"; + return letter; + } + + } else { + + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + + return letter; + + } + + }); + + } else { + + // Receive input should always be ITA2 + ita2 = Array.prototype.map.call(input, function(character) { + var letter = character.toUpperCase(); + if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + return letter; + }); + + } + + const ita2Input = ita2.join(""); + console.log(ita2Input); + + var thisPsi = []; + var thisChi = []; + var thisMu = []; + var m61lug = 0; + var m37lug = 0; + var p5 = [0,0,0]; + + const self = this; + const letters = Array.prototype.map.call(ita2Input, function(character) { + const letter = character.toUpperCase(); + + console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); + + var x2bptr = x2+1; + if(x2bptr==32) x2bptr=1; + var s1bptr = s1+1; + if(s1bptr==44) s1bptr=1; + + console.log('x2b1='+x2bptr+' s1b1='+s1bptr); + + thisChi = [ + chiSettings[1][x1-1], + chiSettings[2][x2-1], + chiSettings[3][x3-1], + chiSettings[4][x4-1], + chiSettings[5][x5-1] + ]; + + thisPsi = [ + psiSettings[1][s1-1], + psiSettings[2][s2-1], + psiSettings[3][s3-1], + psiSettings[4][s4-1], + psiSettings[5][s5-1] + ]; + + thisMu = [ + muSettings[1][m61-1], + muSettings[2][m37-1] + ]; + + console.log(letter + ' + ' + self.REVERSE_ITA2_TABLE[thisPsi.join("")] + ' + ' + self.REVERSE_ITA2_TABLE[thisChi.join("")]); + + if (typeof ITA2_TABLE[letter] == "undefined") { + return ""; + } + + var xorSum = []; + for(var i=0;i<=4;i++) { + xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; + } + const resultStr = xorSum.join(""); + + // Move Chi wheels one back after each letter + if(--x1 < 1) x1 = 41; + if(--x2 < 1) x2 = 31; + if(--x3 < 1) x3 = 29; + if(--x4 < 1) x4 = 26; + if(--x5 < 1) x5 = 23; + + // Motor wheel (61 pin) also moves one each letter + if(--m61 < 1) m61 = 61; + + // If M61 is set, we also move M37 + if(m61lug == 1) { + if(--m37 < 1) m37 = 37; + } + + var basicmotor = m37lug; + var totalmotor = basicmotor; + var lim = 0; + + // Limitations here + if(model=='SZ42a') { + // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position + lim = chiSettings[2][x2bptr-1]; + if(kt) { + if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=='SZ42b') { + // Chi 2 one back + Psi 1 one back. + const x2b1lug = chiSettings[2][x2bptr-1]; + const s1b1lug = psiSettings[1][s1bptr-1]; + lim = 1; + if(x2b1lug==s1b1lug) lim=0; + if(kt) { + if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2 + } + console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if(basicmotor==0 && lim==1) { + totalmotor = 0; + } else { + totalmotor = 1; + } + + } else if(model=="SZ40") { + // SZ40 + totalmotor = basicmotor; + console.log('TM='+basicmotor); + } else { + throw new OperationError("Lorenz model type not recognised"); + } + + // increment Psi wheels when current M37 lug active + if(totalmotor == 1) { + if(--s1 < 1) s1 = 43; + if(--s2 < 1) s2 = 47; + if(--s3 < 1) s3 = 51; + if(--s4 < 1) s4 = 53; + if(--s5 < 1) s5 = 59; + } + + m61lug = muSettings[1][m61-1]; + m37lug = muSettings[2][m37-1]; + + p5[2] = p5[1]; + p5[1] = p5[0]; + p5[0] = ITA2_TABLE[letter][4]; + console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); + + var rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; + if(format=="5/8/9") { + if(rtnstr=="+") rtnstr="5"; + if(rtnstr=="-") rtnstr="8"; + if(rtnstr==".") rtnstr="9"; + } + return rtnstr; + }); + + var ita2output = letters.join(""); + var output = ""; + + if(mode == "Receive") { + + figShifted = false; + + // Convert output ITA2 to plaintext (including figure/letter shifts) + const out = Array.prototype.map.call(ita2output, function(letter) { + + if(outtype == "Plaintext") { + + if( letter == "5" || letter == "+" ) { + figShifted = true; + return; + } else if( letter == "8" || letter == "-" ) { + figShifted = false; + return; + } else if( letter == "9" ) { + return " "; + } else if( letter == "3" ) { + return "\n"; + } else if( letter == "4" ) { + return ""; + } + + + if(figShifted) { + return self.REVERSE_FIGSHIFT_TABLE[letter]; + } else { + return letter; + } + + } else { + return letter; + } + + }); + output = out.join(""); + + } else { + output = ita2output; + } + + return output; + + } + + /** + * Reverses the ITA2 Code lookup table + */ + reverseTable() { + this.REVERSE_ITA2_TABLE = {}; + this.REVERSE_FIGSHIFT_TABLE = {}; + + for (const letter in ITA2_TABLE) { + const code = ITA2_TABLE[letter]; + this.REVERSE_ITA2_TABLE[code] = letter; + } + for (const letter in figShiftArr) { + const ltr = figShiftArr[letter]; + this.REVERSE_FIGSHIFT_TABLE[ltr] = letter; + } + } + +} + +const ITA2_TABLE = { + "A": "11000", + "B": "10011", + "C": "01110", + "D": "10010", + "E": "10000", + "F": "10110", + "G": "01011", + "H": "00101", + "I": "01100", + "J": "11010", + "K": "11110", + "L": "01001", + "M": "00111", + "N": "00110", + "O": "00011", + "P": "01101", + "Q": "11101", + "R": "01010", + "S": "10100", + "T": "00001", + "U": "11100", + "V": "01111", + "W": "11001", + "X": "10111", + "Y": "10101", + "Z": "10001", + "3": "00010", + "4": "01000", + "9": "00100", + "/": "00000", + " ": "00100", + ".": "00100", + "8": "11111", + "5": "11011", + "-": "11111", + "+": "11011" +}; + +const validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-'()/:=?,. \n\r"; +const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; +const figShiftedChars = "1234567890+-'()/:=?,." + +const figShiftArr = { + "1" : "Q", + "2" : "W", + "3" : "E", + "4" : "R", + "5" : "T", + "6" : "Y", + "7" : "U", + "8" : "I", + "9" : "O", + "0" : "P", + " " : "9", + "-" : "A", + "?" : "B", + ":" : "C", + "#" : "D", + "%" : "F", + "@" : "G", + "£" : "H", + "(" : "K", + ")" : "L", + "." : "M", + "," : "N", + "'" : "S", + "=" : "V", + "/" : "X", + "+" : "Z", + "\n" : "3", + "\r" : "4" +}; + +const INIT_PATTERNS = { + "No Pattern" : { + "X" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "S" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "M" : { + 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + } + + }, + "KH Pattern" : { + "X" : { + 1 : [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], + 2 : [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], + 3 : [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], + 4 : [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], + 5 : [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] + }, + "S" : { + 1 : [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], + 2 : [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], + 3 : [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], + 4 : [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], + 5 : [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] + }, + "M": { + 1 : [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], + 2 : [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] + } + }, + "ZMUG Pattern" : { + "X" : { + 1 : [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], + 2 : [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], + 3 : [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], + 4 : [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], + 5 : [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1], + }, + "S" : { + 1 : [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], + 2 : [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], + 3 : [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], + 4 : [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], + 5 : [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] + }, + "M" : { + 1 : [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], + 2 : [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] + } + }, + "BREAM Pattern" : { + "X" : { + 1 : [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], + 2 : [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], + 3 : [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], + 4 : [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], + 5 : [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] + }, + "S" : { + 1 : [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], + 2 : [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], + 3 : [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], + 4 : [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], + 5 : [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] + }, + "M" : { + 1 : [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], + 2 : [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] + } + } +}; + +export default Lorenz; From 444fb4555b870b9a5df34447f49d2bf259ca2de3 Mon Sep 17 00:00:00 2001 From: martin gillow Date: Mon, 25 Mar 2019 21:10:47 +0000 Subject: [PATCH 0013/1024] Custom wheel settings --- src/core/operations/Lorenz.mjs | 143 ++++++++++++++++++++++++++++++++- 1 file changed, 139 insertions(+), 4 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 72331727..6eda5058 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -23,7 +23,7 @@ class Lorenz extends Operation { this.name = "Lorenz"; this.module = "Default"; this.description = "Enciphers characters using the World War 2 German Lorenz SZ cipher attachment."; - this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; + this.infoURL = "https://lorenz.virtualcolossus.co.uk"; this.inputType = "string"; this.outputType = "string"; this.args = [ @@ -34,8 +34,29 @@ class Lorenz extends Operation { }, { name: "Wheel Pattern", - type: "option", - "value": ["KH Pattern", "ZMUG Pattern", "BREAM Pattern", "No Pattern"] + type: "argSelector", + "value": [ + { + name: "KH Pattern", + off: [19,20,21,22,23,24,25,26,27,28,29,30], + }, + { + name: "ZMUG Pattern", + off: [19,20,21,22,23,24,25,26,27,28,29,30] + }, + { + name: "BREAM Pattern", + off: [19,20,21,22,23,24,25,26,27,28,29,30] + }, + { + name: "No Pattern", + off: [19,20,21,22,23,24,25,26,27,28,29,30] + }, + { + name: "Custom", + on: [19,20,21,22,23,24,25,26,27,28,29,30] + } + ] }, { name: "KT-Schalter", @@ -131,6 +152,66 @@ class Lorenz extends Operation { name: "Χ5 start (1-23)", type: "number", "value": 1 + }, + { + name: "Ψ1 lugs (43)", + type: "string", + value: ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x" + }, + { + name: "Ψ2 lugs (47)", + type: "string", + value: ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x" + }, + { + name: "Ψ3 lugs (51)", + type: "string", + value: ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x" + }, + { + name: "Ψ4 lugs (53)", + type: "string", + value: ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x." + }, + { + name: "Ψ5 lugs (59)", + type: "string", + value: "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x." + }, + { + name: "Μ37 lugs (37)", + type: "string", + value: "x.x.x.x.x.x...x.x.x...x.x.x...x.x...." + }, + { + name: "Μ61 lugs (61)", + type: "string", + value: ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx..." + }, + { + name: "Χ1 lugs (41)", + type: "string", + value: ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx.." + }, + { + name: "Χ2 lugs (31)", + type: "string", + value: "x..xxx...x.xxxx..xx..x..xx.xx.." + }, + { + name: "Χ3 lugs (29)", + type: "string", + value: "..xx..x.xxx...xx...xx..xx.xx." + }, + { + name: "Χ4 lugs (26)", + type: "string", + value: "xx..x..xxxx..xx.xxx....x.." + }, + { + name: "Χ5 lugs (23)", + type: "string", + value: "xx..xx....xxxx.x..x.x.." } ]; } @@ -162,6 +243,18 @@ class Lorenz extends Operation { x3 = args[16], x4 = args[17], x5 = args[18], + lugs1 = args[19], + lugs2 = args[20], + lugs3 = args[21], + lugs4 = args[22], + lugs5 = args[23], + lugm37 = args[24], + lugm61 = args[25], + lugx1 = args[26], + lugx2 = args[27], + lugx3 = args[28], + lugx4 = args[29], + lugx5 = args[30], figShifted = false; this.reverseTable(); @@ -180,7 +273,38 @@ class Lorenz extends Operation { if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); // Initialise chosen wheel pattern - var chosenSetting = INIT_PATTERNS[pattern]; + if(pattern=="Custom") { + var re = new RegExp("^[\.xX]*$"); + if (lugs1.length != 43 || !re.test(lugs1) ) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x "); + if (lugs2.length != 47 || !re.test(lugs2) ) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x"); + if (lugs3.length != 51 || !re.test(lugs3) ) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x"); + if (lugs4.length != 53 || !re.test(lugs4) ) throw new OperationError("Ψ4 custom lugs must be 53 long and can only include . or x"); + if (lugs5.length != 59 || !re.test(lugs5) ) throw new OperationError("Ψ5 custom lugs must be 59 long and can only include . or x"); + if (lugm37.length != 37 || !re.test(lugm37) ) throw new OperationError("M37 custom lugs must be 37 long and can only include . or x"); + if (lugm61.length != 61 || !re.test(lugm61) ) throw new OperationError("M61 custom lugs must be 61 long and can only include . or x"); + if (lugx1.length != 41 || !re.test(lugx1) ) throw new OperationError("Χ1 custom lugs must be 41 long and can only include . or x"); + if (lugx2.length != 31 || !re.test(lugx2) ) throw new OperationError("Χ2 custom lugs must be 31 long and can only include . or x"); + if (lugx3.length != 29 || !re.test(lugx3) ) throw new OperationError("Χ3 custom lugs must be 29 long and can only include . or x"); + if (lugx4.length != 26 || !re.test(lugx4) ) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x"); + if (lugx5.length != 23 || !re.test(lugx5) ) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x"); + var chosenSetting = INIT_PATTERNS["No Pattern"]; + console.log(chosenSetting); + chosenSetting["S"][1] = this.readLugs(lugs1); + chosenSetting["S"][2] = this.readLugs(lugs2); + chosenSetting["S"][3] = this.readLugs(lugs3); + chosenSetting["S"][4] = this.readLugs(lugs4); + chosenSetting["S"][5] = this.readLugs(lugs5); + chosenSetting["M"][1] = this.readLugs(lugm37); + chosenSetting["M"][2] = this.readLugs(lugm61); + chosenSetting["X"][1] = this.readLugs(lugx1); + chosenSetting["X"][2] = this.readLugs(lugx2); + chosenSetting["X"][3] = this.readLugs(lugx3); + chosenSetting["X"][4] = this.readLugs(lugx4); + chosenSetting["X"][5] = this.readLugs(lugx5); + console.log(chosenSetting); + } else { + var chosenSetting = INIT_PATTERNS[pattern]; + } var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X) var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S) var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M) @@ -443,6 +567,17 @@ class Lorenz extends Operation { } } + readLugs(lugstr) { + var arr = Array.prototype.map.call(lugstr, function(lug) { + if(lug==".") { + return 0; + } else { + return 1; + } + }); + return arr; + } + } const ITA2_TABLE = { From 0397ba857f162c293ac98b2a2667733a625ecfad Mon Sep 17 00:00:00 2001 From: Martin Gillow Date: Wed, 27 Mar 2019 13:02:18 +0000 Subject: [PATCH 0014/1024] Fixed motor wheel movement --- src/core/operations/Lorenz.mjs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 6eda5058..c1271f15 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -367,23 +367,21 @@ class Lorenz extends Operation { var thisPsi = []; var thisChi = []; var thisMu = []; - var m61lug = 0; - var m37lug = 0; + var m61lug = muSettings[1][m61-1]; + var m37lug = muSettings[2][m37-1]; var p5 = [0,0,0]; const self = this; const letters = Array.prototype.map.call(ita2Input, function(character) { const letter = character.toUpperCase(); - console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); + //console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); var x2bptr = x2+1; if(x2bptr==32) x2bptr=1; var s1bptr = s1+1; if(s1bptr==44) s1bptr=1; - console.log('x2b1='+x2bptr+' s1b1='+s1bptr); - thisChi = [ chiSettings[1][x1-1], chiSettings[2][x2-1], @@ -443,13 +441,14 @@ class Lorenz extends Operation { if(kt) { if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 } - console.log('BM='+basicmotor+', LM='+lim); + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] if(basicmotor==0 && lim==1) { totalmotor = 0; } else { totalmotor = 1; } + console.log('BM='+basicmotor+', LM='+lim+', TM='+totalmotor); } else if(model=='SZ42b') { // Chi 2 one back + Psi 1 one back. @@ -476,7 +475,7 @@ class Lorenz extends Operation { throw new OperationError("Lorenz model type not recognised"); } - // increment Psi wheels when current M37 lug active + // increment Psi wheels when current totalmotor active if(totalmotor == 1) { if(--s1 < 1) s1 = 43; if(--s2 < 1) s2 = 47; From 4f8fc8d65ed4b14accaa22e96ba931c1679d7ac9 Mon Sep 17 00:00:00 2001 From: martin gillow Date: Wed, 27 Mar 2019 20:44:57 +0000 Subject: [PATCH 0015/1024] Fixed p5 limitation --- src/core/operations/Lorenz.mjs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index c1271f15..057f9cb3 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -368,7 +368,7 @@ class Lorenz extends Operation { var thisChi = []; var thisMu = []; var m61lug = muSettings[1][m61-1]; - var m37lug = muSettings[2][m37-1]; + var m37lug = 0; var p5 = [0,0,0]; const self = this; @@ -434,12 +434,18 @@ class Lorenz extends Operation { var totalmotor = basicmotor; var lim = 0; + p5[2] = p5[1]; + p5[1] = p5[0]; + p5[0] = ITA2_TABLE[letter][4]; + console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); + // Limitations here if(model=='SZ42a') { // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position lim = chiSettings[2][x2bptr-1]; if(kt) { - if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + console.log('lim='+lim+', p5-2='+p5[2]); + if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 } // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] @@ -487,11 +493,6 @@ class Lorenz extends Operation { m61lug = muSettings[1][m61-1]; m37lug = muSettings[2][m37-1]; - p5[2] = p5[1]; - p5[1] = p5[0]; - p5[0] = ITA2_TABLE[letter][4]; - console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); - var rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; if(format=="5/8/9") { if(rtnstr=="+") rtnstr="5"; From 39f338370955d89e35bb3316b3debffea004e04f Mon Sep 17 00:00:00 2001 From: martin gillow Date: Wed, 27 Mar 2019 20:57:04 +0000 Subject: [PATCH 0016/1024] Renamed option --- src/core/operations/Lorenz.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 057f9cb3..067ebffd 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -89,7 +89,7 @@ class Lorenz extends Operation { "value": ["Plaintext", "ITA2"] }, { - name: "Output Format", + name: "ITA2 Format", type: "option", "value": ["5/8/9", "+/-/."] }, From db662a76623f912be7d5fdae7f75eea3f8b27067 Mon Sep 17 00:00:00 2001 From: martin gillow Date: Sat, 30 Mar 2019 10:13:25 +0000 Subject: [PATCH 0017/1024] Removed debug. Final testing --- src/core/operations/Lorenz.mjs | 39 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 067ebffd..169ef848 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -288,7 +288,6 @@ class Lorenz extends Operation { if (lugx4.length != 26 || !re.test(lugx4) ) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x"); if (lugx5.length != 23 || !re.test(lugx5) ) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x"); var chosenSetting = INIT_PATTERNS["No Pattern"]; - console.log(chosenSetting); chosenSetting["S"][1] = this.readLugs(lugs1); chosenSetting["S"][2] = this.readLugs(lugs2); chosenSetting["S"][3] = this.readLugs(lugs3); @@ -301,7 +300,6 @@ class Lorenz extends Operation { chosenSetting["X"][3] = this.readLugs(lugx3); chosenSetting["X"][4] = this.readLugs(lugx4); chosenSetting["X"][5] = this.readLugs(lugx5); - console.log(chosenSetting); } else { var chosenSetting = INIT_PATTERNS[pattern]; } @@ -317,7 +315,7 @@ class Lorenz extends Operation { var letter = character.toUpperCase(); if(intype == "Plaintext") { - if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character"); + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) { // in letters mode and next char needs to be figure shifted @@ -342,8 +340,12 @@ class Lorenz extends Operation { } else { - if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); - + if (validITA2.indexOf(letter) === -1) { + var errltr = letter; + if(errltr=="\n") errltr = "Carriage Return"; + if(errltr==" ") errltr = "Space"; + throw new OperationError("Invalid ITA2 character : "+errltr); + } return letter; } @@ -355,28 +357,30 @@ class Lorenz extends Operation { // Receive input should always be ITA2 ita2 = Array.prototype.map.call(input, function(character) { var letter = character.toUpperCase(); - if (validITA2.indexOf(letter) === -1) throw new OperationError("Invalid ITA2 character"); + if (validITA2.indexOf(letter) === -1) { + var errltr = letter; + if(errltr=="\n") errltr = "Carriage Return"; + if(errltr==" ") errltr = "Space"; + throw new OperationError("Invalid ITA2 character : "+errltr); + } return letter; }); } const ita2Input = ita2.join(""); - console.log(ita2Input); var thisPsi = []; var thisChi = []; var thisMu = []; var m61lug = muSettings[1][m61-1]; - var m37lug = 0; + var m37lug = muSettings[2][m37-1]; var p5 = [0,0,0]; const self = this; const letters = Array.prototype.map.call(ita2Input, function(character) { const letter = character.toUpperCase(); - //console.log(s1+' '+s2+' '+s3+' '+s4+' '+s5+' : '+m37+' '+m61+' : '+x1+' '+x2+' '+x3+' '+x4+' '+x5); - var x2bptr = x2+1; if(x2bptr==32) x2bptr=1; var s1bptr = s1+1; @@ -403,8 +407,6 @@ class Lorenz extends Operation { muSettings[2][m37-1] ]; - console.log(letter + ' + ' + self.REVERSE_ITA2_TABLE[thisPsi.join("")] + ' + ' + self.REVERSE_ITA2_TABLE[thisChi.join("")]); - if (typeof ITA2_TABLE[letter] == "undefined") { return ""; } @@ -436,15 +438,17 @@ class Lorenz extends Operation { p5[2] = p5[1]; p5[1] = p5[0]; - p5[0] = ITA2_TABLE[letter][4]; - console.log('p5='+ITA2_TABLE[letter]+' ('+letter+') = '+p5[0]); + if(mode=="Send") { + p5[0] = ITA2_TABLE[letter][4]; + } else { + p5[0] = xorSum[4]; + } // Limitations here if(model=='SZ42a') { // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position lim = chiSettings[2][x2bptr-1]; if(kt) { - console.log('lim='+lim+', p5-2='+p5[2]); if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 } @@ -453,8 +457,7 @@ class Lorenz extends Operation { totalmotor = 0; } else { totalmotor = 1; - } - console.log('BM='+basicmotor+', LM='+lim+', TM='+totalmotor); + } } else if(model=='SZ42b') { // Chi 2 one back + Psi 1 one back. @@ -465,7 +468,6 @@ class Lorenz extends Operation { if(kt) { if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2 } - console.log('BM='+basicmotor+', LM='+lim); // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] if(basicmotor==0 && lim==1) { totalmotor = 0; @@ -476,7 +478,6 @@ class Lorenz extends Operation { } else if(model=="SZ40") { // SZ40 totalmotor = basicmotor; - console.log('TM='+basicmotor); } else { throw new OperationError("Lorenz model type not recognised"); } From 23ddb87c9f3b768fa5f877feedce4487e8fbe5d9 Mon Sep 17 00:00:00 2001 From: martin gillow Date: Sat, 30 Mar 2019 13:02:14 +0000 Subject: [PATCH 0018/1024] Fixed code spacing and formatting --- src/core/operations/Lorenz.mjs | 905 ++++++++++++++++----------------- 1 file changed, 450 insertions(+), 455 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 169ef848..c1b29fdd 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -1,6 +1,6 @@ /** * Emulation of the Lorenz SZ40/42a/42b cipher attachment. - * + * * @author VirtualColossus [martin@virtualcolossus.co.uk] * @copyright Crown Copyright 2019 * @license Apache-2.0 @@ -36,26 +36,26 @@ class Lorenz extends Operation { name: "Wheel Pattern", type: "argSelector", "value": [ - { - name: "KH Pattern", - off: [19,20,21,22,23,24,25,26,27,28,29,30], - }, - { - name: "ZMUG Pattern", - off: [19,20,21,22,23,24,25,26,27,28,29,30] - }, - { - name: "BREAM Pattern", - off: [19,20,21,22,23,24,25,26,27,28,29,30] - }, - { - name: "No Pattern", - off: [19,20,21,22,23,24,25,26,27,28,29,30] - }, - { - name: "Custom", - on: [19,20,21,22,23,24,25,26,27,28,29,30] - } + { + name: "KH Pattern", + off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + }, + { + name: "ZMUG Pattern", + off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + }, + { + name: "BREAM Pattern", + off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + }, + { + name: "No Pattern", + off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + }, + { + name: "Custom", + on: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + } ] }, { @@ -66,16 +66,16 @@ class Lorenz extends Operation { name: "Mode", type: "argSelector", "value": [ - { - name: "Send", - on: [4], - off: [5] - }, - { - name: "Receive", - off: [4], - on: [5] - } + { + name: "Send", + on: [4], + off: [5] + }, + { + name: "Receive", + off: [4], + on: [5] + } ] }, { @@ -89,129 +89,129 @@ class Lorenz extends Operation { "value": ["Plaintext", "ITA2"] }, { - name: "ITA2 Format", - type: "option", + name: "ITA2 Format", + type: "option", "value": ["5/8/9", "+/-/."] }, { - name: "Ψ1 start (1-43)", - type: "number", - "value": 1 + name: "Ψ1 start (1-43)", + type: "number", + "value": 1 }, { - name: "Ψ2 start (1-47)", - type: "number", - "value": 1 + name: "Ψ2 start (1-47)", + type: "number", + "value": 1 }, { - name: "Ψ3 start (1-51)", - type: "number", - "value": 1 + name: "Ψ3 start (1-51)", + type: "number", + "value": 1 }, { - name: "Ψ4 start (1-53)", - type: "number", - "value": 1 + name: "Ψ4 start (1-53)", + type: "number", + "value": 1 }, { - name: "Ψ5 start (1-59)", - type: "number", - "value": 1 + name: "Ψ5 start (1-59)", + type: "number", + "value": 1 }, { - name: "Μ37 start (1-37)", - type: "number", - "value": 1 + name: "Μ37 start (1-37)", + type: "number", + "value": 1 }, { - name: "Μ61 start (1-61)", - type: "number", - "value": 1 + name: "Μ61 start (1-61)", + type: "number", + "value": 1 }, { - name: "Χ1 start (1-41)", - type: "number", - "value": 1 + name: "Χ1 start (1-41)", + type: "number", + "value": 1 }, { - name: "Χ2 start (1-31)", - type: "number", - "value": 1 + name: "Χ2 start (1-31)", + type: "number", + "value": 1 }, { - name: "Χ3 start (1-29)", - type: "number", - "value": 1 + name: "Χ3 start (1-29)", + type: "number", + "value": 1 }, { - name: "Χ4 start (1-26)", - type: "number", - "value": 1 + name: "Χ4 start (1-26)", + type: "number", + "value": 1 }, { - name: "Χ5 start (1-23)", - type: "number", - "value": 1 + name: "Χ5 start (1-23)", + type: "number", + "value": 1 }, { - name: "Ψ1 lugs (43)", - type: "string", - value: ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x" + name: "Ψ1 lugs (43)", + type: "string", + value: ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x" }, { - name: "Ψ2 lugs (47)", - type: "string", - value: ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x" + name: "Ψ2 lugs (47)", + type: "string", + value: ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x" }, { - name: "Ψ3 lugs (51)", - type: "string", - value: ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x" + name: "Ψ3 lugs (51)", + type: "string", + value: ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x" }, { - name: "Ψ4 lugs (53)", - type: "string", - value: ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x." + name: "Ψ4 lugs (53)", + type: "string", + value: ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x." }, { - name: "Ψ5 lugs (59)", - type: "string", - value: "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x." + name: "Ψ5 lugs (59)", + type: "string", + value: "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x." }, { - name: "Μ37 lugs (37)", - type: "string", - value: "x.x.x.x.x.x...x.x.x...x.x.x...x.x...." + name: "Μ37 lugs (37)", + type: "string", + value: "x.x.x.x.x.x...x.x.x...x.x.x...x.x...." }, { - name: "Μ61 lugs (61)", - type: "string", - value: ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx..." + name: "Μ61 lugs (61)", + type: "string", + value: ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx..." }, { - name: "Χ1 lugs (41)", - type: "string", - value: ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx.." + name: "Χ1 lugs (41)", + type: "string", + value: ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx.." }, { - name: "Χ2 lugs (31)", - type: "string", - value: "x..xxx...x.xxxx..xx..x..xx.xx.." + name: "Χ2 lugs (31)", + type: "string", + value: "x..xxx...x.xxxx..xx..x..xx.xx.." }, { - name: "Χ3 lugs (29)", - type: "string", - value: "..xx..x.xxx...xx...xx..xx.xx." + name: "Χ3 lugs (29)", + type: "string", + value: "..xx..x.xxx...xx...xx..xx.xx." }, { - name: "Χ4 lugs (26)", - type: "string", - value: "xx..x..xxxx..xx.xxx....x.." + name: "Χ4 lugs (26)", + type: "string", + value: "xx..x..xxxx..xx.xxx....x.." }, { - name: "Χ5 lugs (23)", - type: "string", - value: "xx..xx....xxxx.x..x.x.." + name: "Χ5 lugs (23)", + type: "string", + value: "xx..xx....xxxx.x..x.x.." } ]; } @@ -222,330 +222,325 @@ class Lorenz extends Operation { * @returns {string} */ run(input, args) { - - const model = args[0], - pattern = args[1], - kt = args[2], - mode = args[3], - format = args[6]; - var intype = args[4], - outtype = args[5], - s1 = args[7], - s2 = args[8], - s3 = args[9], - s4 = args[10], - s5 = args[11], - m37 = args[12], - m61 = args[13], - x1 = args[14], - x2 = args[15], - x3 = args[16], - x4 = args[17], - x5 = args[18], - lugs1 = args[19], - lugs2 = args[20], - lugs3 = args[21], - lugs4 = args[22], - lugs5 = args[23], - lugm37 = args[24], - lugm61 = args[25], - lugx1 = args[26], - lugx2 = args[27], - lugx3 = args[28], - lugx4 = args[29], - lugx5 = args[30], - figShifted = false; + const model = args[0], + pattern = args[1], + kt = args[2], + mode = args[3], + format = args[6]; + + let intype = args[4], + outtype = args[5], + s1 = args[7], + s2 = args[8], + s3 = args[9], + s4 = args[10], + s5 = args[11], + m37 = args[12], + m61 = args[13], + x1 = args[14], + x2 = args[15], + x3 = args[16], + x4 = args[17], + x5 = args[18], + lugs1 = args[19], + lugs2 = args[20], + lugs3 = args[21], + lugs4 = args[22], + lugs5 = args[23], + lugm37 = args[24], + lugm61 = args[25], + lugx1 = args[26], + lugx2 = args[27], + lugx3 = args[28], + lugx4 = args[29], + lugx5 = args[30], + figShifted = false; this.reverseTable(); - - if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43"); - if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47"); - if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51"); - if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53"); - if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59"); - if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37"); - if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61"); - if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41"); - if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31"); - if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29"); - if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26"); - if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); + + if (s1<1 || s1>43) throw new OperationError("Ψ1 start must be between 1 and 43"); + if (s2<1 || s2>47) throw new OperationError("Ψ2 start must be between 1 and 47"); + if (s3<1 || s3>51) throw new OperationError("Ψ3 start must be between 1 and 51"); + if (s4<1 || s4>53) throw new OperationError("Ψ4 start must be between 1 and 53"); + if (s5<1 || s5>59) throw new OperationError("Ψ5 start must be between 1 and 59"); + if (m37<1 || m37>37) throw new OperationError("Μ37 start must be between 1 and 37"); + if (m61<1 || m61>61) throw new OperationError("Μ61 start must be between 1 and 61"); + if (x1<1 || x1>41) throw new OperationError("Χ1 start must be between 1 and 41"); + if (x2<1 || x2>31) throw new OperationError("Χ2 start must be between 1 and 31"); + if (x3<1 || x3>29) throw new OperationError("Χ3 start must be between 1 and 29"); + if (x4<1 || x4>26) throw new OperationError("Χ4 start must be between 1 and 26"); + if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); // Initialise chosen wheel pattern - if(pattern=="Custom") { - var re = new RegExp("^[\.xX]*$"); - if (lugs1.length != 43 || !re.test(lugs1) ) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x "); - if (lugs2.length != 47 || !re.test(lugs2) ) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x"); - if (lugs3.length != 51 || !re.test(lugs3) ) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x"); - if (lugs4.length != 53 || !re.test(lugs4) ) throw new OperationError("Ψ4 custom lugs must be 53 long and can only include . or x"); - if (lugs5.length != 59 || !re.test(lugs5) ) throw new OperationError("Ψ5 custom lugs must be 59 long and can only include . or x"); - if (lugm37.length != 37 || !re.test(lugm37) ) throw new OperationError("M37 custom lugs must be 37 long and can only include . or x"); - if (lugm61.length != 61 || !re.test(lugm61) ) throw new OperationError("M61 custom lugs must be 61 long and can only include . or x"); - if (lugx1.length != 41 || !re.test(lugx1) ) throw new OperationError("Χ1 custom lugs must be 41 long and can only include . or x"); - if (lugx2.length != 31 || !re.test(lugx2) ) throw new OperationError("Χ2 custom lugs must be 31 long and can only include . or x"); - if (lugx3.length != 29 || !re.test(lugx3) ) throw new OperationError("Χ3 custom lugs must be 29 long and can only include . or x"); - if (lugx4.length != 26 || !re.test(lugx4) ) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x"); - if (lugx5.length != 23 || !re.test(lugx5) ) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x"); - var chosenSetting = INIT_PATTERNS["No Pattern"]; - chosenSetting["S"][1] = this.readLugs(lugs1); - chosenSetting["S"][2] = this.readLugs(lugs2); - chosenSetting["S"][3] = this.readLugs(lugs3); - chosenSetting["S"][4] = this.readLugs(lugs4); - chosenSetting["S"][5] = this.readLugs(lugs5); - chosenSetting["M"][1] = this.readLugs(lugm37); - chosenSetting["M"][2] = this.readLugs(lugm61); - chosenSetting["X"][1] = this.readLugs(lugx1); - chosenSetting["X"][2] = this.readLugs(lugx2); - chosenSetting["X"][3] = this.readLugs(lugx3); - chosenSetting["X"][4] = this.readLugs(lugx4); - chosenSetting["X"][5] = this.readLugs(lugx5); + let chosenSetting = ''; + if (pattern === "Custom") { + let re = new RegExp("^[.xX]*$"); + if (lugs1.length !== 43 || !re.test(lugs1)) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x "); + if (lugs2.length !== 47 || !re.test(lugs2)) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x"); + if (lugs3.length !== 51 || !re.test(lugs3)) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x"); + if (lugs4.length !== 53 || !re.test(lugs4)) throw new OperationError("Ψ4 custom lugs must be 53 long and can only include . or x"); + if (lugs5.length !== 59 || !re.test(lugs5)) throw new OperationError("Ψ5 custom lugs must be 59 long and can only include . or x"); + if (lugm37.length !== 37 || !re.test(lugm37)) throw new OperationError("M37 custom lugs must be 37 long and can only include . or x"); + if (lugm61.length !== 61 || !re.test(lugm61)) throw new OperationError("M61 custom lugs must be 61 long and can only include . or x"); + if (lugx1.length !== 41 || !re.test(lugx1)) throw new OperationError("Χ1 custom lugs must be 41 long and can only include . or x"); + if (lugx2.length !== 31 || !re.test(lugx2)) throw new OperationError("Χ2 custom lugs must be 31 long and can only include . or x"); + if (lugx3.length !== 29 || !re.test(lugx3)) throw new OperationError("Χ3 custom lugs must be 29 long and can only include . or x"); + if (lugx4.length !== 26 || !re.test(lugx4)) throw new OperationError("Χ4 custom lugs must be 26 long and can only include . or x"); + if (lugx5.length !== 23 || !re.test(lugx5)) throw new OperationError("Χ5 custom lugs must be 23 long and can only include . or x"); + chosenSetting = INIT_PATTERNS["No Pattern"]; + chosenSetting.S[1] = this.readLugs(lugs1); + chosenSetting.S[2] = this.readLugs(lugs2); + chosenSetting.S[3] = this.readLugs(lugs3); + chosenSetting.S[4] = this.readLugs(lugs4); + chosenSetting.S[5] = this.readLugs(lugs5); + chosenSetting.M[1] = this.readLugs(lugm37); + chosenSetting.M[2] = this.readLugs(lugm61); + chosenSetting.X[1] = this.readLugs(lugx1); + chosenSetting.X[2] = this.readLugs(lugx2); + chosenSetting.X[3] = this.readLugs(lugx3); + chosenSetting.X[4] = this.readLugs(lugx4); + chosenSetting.X[5] = this.readLugs(lugx5); } else { - var chosenSetting = INIT_PATTERNS[pattern]; + chosenSetting = INIT_PATTERNS[pattern]; } - var chiSettings = chosenSetting["X"]; // Pin settings for Chi links (X) - var psiSettings = chosenSetting["S"]; // Pin settings for Psi links (S) - var muSettings = chosenSetting["M"]; // Pin settings for Motor links (M) + var chiSettings = chosenSetting.X; // Pin settings for Chi links (X) + var psiSettings = chosenSetting.S; // Pin settings for Psi links (S) + var muSettings = chosenSetting.M; // Pin settings for Motor links (M) - var ita2 = ""; - if(mode == "Send") { + let ita2 = ""; + if (mode === "Send") { - // Convert input text to ITA2 (including figure/letter shifts) - ita2 = Array.prototype.map.call(input, function(character) { - var letter = character.toUpperCase(); - - if(intype == "Plaintext") { - if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); + // Convert input text to ITA2 (including figure/letter shifts) + ita2 = Array.prototype.map.call(input, function(character) { + let letter = character.toUpperCase(); + + if (intype === "Plaintext") { + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); - if( !figShifted && figShiftedChars.indexOf(letter) !== -1 ) { - // in letters mode and next char needs to be figure shifted - figShifted = true; - return "55" + figShiftArr[letter]; - } else if( figShifted ) { - // in figures mode and next char needs to be letter shifted - if(letter=="\n") return "34"; - if(letter=="\r") return "4"; - if( figShiftedChars.indexOf(letter) === -1 ) { - figShifted = false; - return "88" + letter; - } else { - return figShiftArr[letter]; - } - - } else { - if(letter=="\n") return "34"; - if(letter=="\r") return "4"; + if(!figShifted && figShiftedChars.indexOf(letter) !== -1) { + // in letters mode and next char needs to be figure shifted + figShifted = true; + return "55" + figShiftArr[letter]; + } else if (figShifted) { + // in figures mode and next char needs to be letter shifted + if (letter==="\n") return "34"; + if (letter==="\r") return "4"; + if (figShiftedChars.indexOf(letter) === -1) { + figShifted = false; + return "88" + letter; + } else { + return figShiftArr[letter]; + } + + } else { + if (letter==="\n") return "34"; + if (letter==="\r") return "4"; return letter; - } + } - } else { + } else { - if (validITA2.indexOf(letter) === -1) { - var errltr = letter; - if(errltr=="\n") errltr = "Carriage Return"; - if(errltr==" ") errltr = "Space"; + if (validITA2.indexOf(letter) === -1) { + let errltr = letter; + if (errltr==="\n") errltr = "Carriage Return"; + if (errltr===" ") errltr = "Space"; throw new OperationError("Invalid ITA2 character : "+errltr); - } - return letter; + } + return letter; - } + } - }); + }); } else { - // Receive input should always be ITA2 - ita2 = Array.prototype.map.call(input, function(character) { - var letter = character.toUpperCase(); - if (validITA2.indexOf(letter) === -1) { + // Receive input should always be ITA2 + ita2 = Array.prototype.map.call(input, function(character) { + let letter = character.toUpperCase(); + if (validITA2.indexOf(letter) === -1) { var errltr = letter; - if(errltr=="\n") errltr = "Carriage Return"; - if(errltr==" ") errltr = "Space"; + if (errltr==="\n") errltr = "Carriage Return"; + if(errltr===" ") errltr = "Space"; throw new OperationError("Invalid ITA2 character : "+errltr); } - return letter; - }); + return letter; + }); } const ita2Input = ita2.join(""); - var thisPsi = []; - var thisChi = []; - var thisMu = []; - var m61lug = muSettings[1][m61-1]; - var m37lug = muSettings[2][m37-1]; - var p5 = [0,0,0]; + let thisPsi = []; + let thisChi = []; + let m61lug = muSettings[1][m61-1]; + let m37lug = muSettings[2][m37-1]; + let p5 = [0,0,0]; const self = this; const letters = Array.prototype.map.call(ita2Input, function(character) { const letter = character.toUpperCase(); - var x2bptr = x2+1; - if(x2bptr==32) x2bptr=1; - var s1bptr = s1+1; - if(s1bptr==44) s1bptr=1; + let x2bptr = x2+1; + if (x2bptr===32) x2bptr=1; + let s1bptr = s1+1; + if (s1bptr===44) s1bptr=1; thisChi = [ - chiSettings[1][x1-1], - chiSettings[2][x2-1], - chiSettings[3][x3-1], - chiSettings[4][x4-1], - chiSettings[5][x5-1] - ]; + chiSettings[1][x1-1], + chiSettings[2][x2-1], + chiSettings[3][x3-1], + chiSettings[4][x4-1], + chiSettings[5][x5-1] + ]; - thisPsi = [ - psiSettings[1][s1-1], - psiSettings[2][s2-1], - psiSettings[3][s3-1], - psiSettings[4][s4-1], - psiSettings[5][s5-1] - ]; - - thisMu = [ - muSettings[1][m61-1], - muSettings[2][m37-1] - ]; + thisPsi = [ + psiSettings[1][s1-1], + psiSettings[2][s2-1], + psiSettings[3][s3-1], + psiSettings[4][s4-1], + psiSettings[5][s5-1] + ]; if (typeof ITA2_TABLE[letter] == "undefined") { return ""; } - var xorSum = []; + let xorSum = []; for(var i=0;i<=4;i++) { xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; } const resultStr = xorSum.join(""); // Move Chi wheels one back after each letter - if(--x1 < 1) x1 = 41; - if(--x2 < 1) x2 = 31; - if(--x3 < 1) x3 = 29; - if(--x4 < 1) x4 = 26; - if(--x5 < 1) x5 = 23; + if (--x1 < 1) x1 = 41; + if (--x2 < 1) x2 = 31; + if (--x3 < 1) x3 = 29; + if (--x4 < 1) x4 = 26; + if (--x5 < 1) x5 = 23; // Motor wheel (61 pin) also moves one each letter - if(--m61 < 1) m61 = 61; + if (--m61 < 1) m61 = 61; // If M61 is set, we also move M37 - if(m61lug == 1) { - if(--m37 < 1) m37 = 37; + if (m61lug === 1) { + if (--m37 < 1) m37 = 37; } - var basicmotor = m37lug; - var totalmotor = basicmotor; - var lim = 0; + let basicmotor = m37lug; + let totalmotor = basicmotor; + let lim = 0; p5[2] = p5[1]; p5[1] = p5[0]; - if(mode=="Send") { + if (mode==="Send") { p5[0] = ITA2_TABLE[letter][4]; } else { p5[0] = xorSum[4]; } - // Limitations here - if(model=='SZ42a') { - // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position - lim = chiSettings[2][x2bptr-1]; - if(kt) { - if(lim==p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 - } + // Limitations here + if (model==='SZ42a') { + // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position + lim = chiSettings[2][x2bptr-1]; + if(kt) { + if (lim===p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + } - // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] - if(basicmotor==0 && lim==1) { - totalmotor = 0; - } else { - totalmotor = 1; - } + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if (basicmotor===0 && lim===1) { + totalmotor = 0; + } else { + totalmotor = 1; + } - } else if(model=='SZ42b') { - // Chi 2 one back + Psi 1 one back. - const x2b1lug = chiSettings[2][x2bptr-1]; - const s1b1lug = psiSettings[1][s1bptr-1]; - lim = 1; - if(x2b1lug==s1b1lug) lim=0; - if(kt) { - if(lim==p5[2]) { lim=0; } else { lim=1; } //p5 back 2 - } - // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] - if(basicmotor==0 && lim==1) { - totalmotor = 0; - } else { - totalmotor = 1; - } + } else if(model=='SZ42b') { + // Chi 2 one back + Psi 1 one back. + const x2b1lug = chiSettings[2][x2bptr-1]; + const s1b1lug = psiSettings[1][s1bptr-1]; + lim = 1; + if (x2b1lug===s1b1lug) lim=0; + if(kt) { + if (lim===p5[2]) { lim=0; } else { lim=1; } //p5 back 2 + } + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] + if (basicmotor===0 && lim===1) { + totalmotor = 0; + } else { + totalmotor = 1; + } - } else if(model=="SZ40") { - // SZ40 - totalmotor = basicmotor; - } else { - throw new OperationError("Lorenz model type not recognised"); - } + } else if (model==="SZ40") { + // SZ40 + totalmotor = basicmotor; + } else { + throw new OperationError("Lorenz model type not recognised"); + } - // increment Psi wheels when current totalmotor active - if(totalmotor == 1) { - if(--s1 < 1) s1 = 43; - if(--s2 < 1) s2 = 47; - if(--s3 < 1) s3 = 51; - if(--s4 < 1) s4 = 53; - if(--s5 < 1) s5 = 59; - } + // increment Psi wheels when current totalmotor active + if (totalmotor === 1) { + if(--s1 < 1) s1 = 43; + if(--s2 < 1) s2 = 47; + if(--s3 < 1) s3 = 51; + if(--s4 < 1) s4 = 53; + if(--s5 < 1) s5 = 59; + } m61lug = muSettings[1][m61-1]; m37lug = muSettings[2][m37-1]; - var rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; - if(format=="5/8/9") { - if(rtnstr=="+") rtnstr="5"; - if(rtnstr=="-") rtnstr="8"; - if(rtnstr==".") rtnstr="9"; + let rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; + if (format==="5/8/9") { + if (rtnstr==="+") rtnstr="5"; + if (rtnstr==="-") rtnstr="8"; + if (rtnstr===".") rtnstr="9"; } return rtnstr; }); - var ita2output = letters.join(""); - var output = ""; + let ita2output = letters.join(""); + let output = ""; - if(mode == "Receive") { + if (mode === "Receive") { - figShifted = false; + figShifted = false; - // Convert output ITA2 to plaintext (including figure/letter shifts) - const out = Array.prototype.map.call(ita2output, function(letter) { - - if(outtype == "Plaintext") { + // Convert output ITA2 to plaintext (including figure/letter shifts) + const out = Array.prototype.map.call(ita2output, function(letter) { + + if (outtype === "Plaintext") { - if( letter == "5" || letter == "+" ) { - figShifted = true; - return; - } else if( letter == "8" || letter == "-" ) { - figShifted = false; - return; - } else if( letter == "9" ) { - return " "; - } else if( letter == "3" ) { + if (letter === "5" || letter === "+") { + figShifted = true; + return; + } else if (letter === "8" || letter === "-") { + figShifted = false; + return; + } else if (letter === "9") { + return " "; + } else if (letter === "3") { return "\n"; - } else if( letter == "4" ) { + } else if (letter === "4") { return ""; } - if(figShifted) { - return self.REVERSE_FIGSHIFT_TABLE[letter]; - } else { - return letter; - } + if (figShifted) { + return self.REVERSE_FIGSHIFT_TABLE[letter]; + } else { + return letter; + } - } else { - return letter; - } + } else { + return letter; + } - }); - output = out.join(""); + }); + output = out.join(""); - } else { - output = ita2output; - } + } else { + output = ita2output; + } return output; @@ -563,20 +558,20 @@ class Lorenz extends Operation { this.REVERSE_ITA2_TABLE[code] = letter; } for (const letter in figShiftArr) { - const ltr = figShiftArr[letter]; - this.REVERSE_FIGSHIFT_TABLE[ltr] = letter; + const ltr = figShiftArr[letter]; + this.REVERSE_FIGSHIFT_TABLE[ltr] = letter; } } readLugs(lugstr) { - var arr = Array.prototype.map.call(lugstr, function(lug) { - if(lug==".") { - return 0; - } else { - return 1; - } - }); - return arr; + let arr = Array.prototype.map.call(lugstr, function(lug) { + if(lug==".") { + return 0; + } else { + return 1; + } + }); + return arr; } } @@ -625,118 +620,118 @@ const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; const figShiftedChars = "1234567890+-'()/:=?,." const figShiftArr = { - "1" : "Q", - "2" : "W", - "3" : "E", - "4" : "R", - "5" : "T", - "6" : "Y", - "7" : "U", - "8" : "I", - "9" : "O", - "0" : "P", - " " : "9", - "-" : "A", - "?" : "B", - ":" : "C", - "#" : "D", - "%" : "F", - "@" : "G", - "£" : "H", - "(" : "K", - ")" : "L", - "." : "M", - "," : "N", - "'" : "S", - "=" : "V", - "/" : "X", - "+" : "Z", - "\n" : "3", - "\r" : "4" + "1": "Q", + "2": "W", + "3": "E", + "4": "R", + "5": "T", + "6": "Y", + "7": "U", + "8": "I", + "9": "O", + "0": "P", + " ": "9", + "-": "A", + "?": "B", + ":": "C", + "#": "D", + "%": "F", + "@": "G", + "£": "H", + "(": "K", + ")": "L", + ".": "M", + ",": "N", + "'": "S", + "=": "V", + "/": "X", + "+": "Z", + "\n": "3", + "\r": "4" }; const INIT_PATTERNS = { - "No Pattern" : { - "X" : { - 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - }, - "S" : { - 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 3 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 4 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 5 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - }, - "M" : { - 1 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2 : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + "No Pattern": { + "X": { + 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "S": { + 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + "M": { + 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] } }, - "KH Pattern" : { - "X" : { - 1 : [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], - 2 : [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], - 3 : [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], - 4 : [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], - 5 : [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] - }, - "S" : { - 1 : [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], - 2 : [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], - 3 : [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], - 4 : [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], - 5 : [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] - }, + "KH Pattern": { + "X": { + 1: [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], + 2: [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], + 3: [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], + 4: [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], + 5: [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] + }, + "S": { + 1: [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], + 2: [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], + 3: [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], + 4: [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], + 5: [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] + }, "M": { - 1 : [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], - 2 : [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] + 1: [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], + 2: [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] } }, - "ZMUG Pattern" : { - "X" : { - 1 : [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], - 2 : [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], - 3 : [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], - 4 : [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], - 5 : [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1], - }, - "S" : { - 1 : [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], - 2 : [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], - 3 : [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], - 4 : [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], - 5 : [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] - }, - "M" : { - 1 : [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], - 2 : [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] + "ZMUG Pattern": { + "X": { + 1: [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], + 2: [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], + 3: [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], + 4: [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], + 5: [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1] + }, + "S": { + 1: [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], + 2: [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], + 3: [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], + 4: [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], + 5: [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] + }, + "M": { + 1: [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], + 2: [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] } }, - "BREAM Pattern" : { - "X" : { - 1 : [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], - 2 : [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], - 3 : [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], - 4 : [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], - 5 : [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] - }, - "S" : { - 1 : [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], - 2 : [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], - 3 : [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], - 4 : [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], - 5 : [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] - }, - "M" : { - 1 : [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], - 2 : [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] + "BREAM Pattern": { + "X": { + 1: [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], + 2: [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], + 3: [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], + 4: [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], + 5: [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] + }, + "S": { + 1: [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], + 2: [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], + 3: [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], + 4: [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], + 5: [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] + }, + "M": { + 1: [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], + 2: [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] } } }; -export default Lorenz; +export default Lorenz; \ No newline at end of file From 4d39c3bbd2c29722dc0496d0c436252d3c225c72 Mon Sep 17 00:00:00 2001 From: martin gillow Date: Sat, 30 Mar 2019 13:42:29 +0000 Subject: [PATCH 0019/1024] Fixed code spacing and formatting --- src/core/operations/Lorenz.mjs | 303 +++++++++++++++++---------------- 1 file changed, 158 insertions(+), 145 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index c1b29fdd..4d72428f 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -227,22 +227,9 @@ class Lorenz extends Operation { pattern = args[1], kt = args[2], mode = args[3], - format = args[6]; - - let intype = args[4], + intype = args[4], outtype = args[5], - s1 = args[7], - s2 = args[8], - s3 = args[9], - s4 = args[10], - s5 = args[11], - m37 = args[12], - m61 = args[13], - x1 = args[14], - x2 = args[15], - x3 = args[16], - x4 = args[17], - x5 = args[18], + format = args[6], lugs1 = args[19], lugs2 = args[20], lugs3 = args[21], @@ -254,7 +241,20 @@ class Lorenz extends Operation { lugx2 = args[27], lugx3 = args[28], lugx4 = args[29], - lugx5 = args[30], + lugx5 = args[30]; + + let s1 = args[7], + s2 = args[8], + s3 = args[9], + s4 = args[10], + s5 = args[11], + m37 = args[12], + m61 = args[13], + x1 = args[14], + x2 = args[15], + x3 = args[16], + x4 = args[17], + x5 = args[18], figShifted = false; this.reverseTable(); @@ -273,9 +273,9 @@ class Lorenz extends Operation { if (x5<1 || x5>23) throw new OperationError("Χ5 start must be between 1 and 23"); // Initialise chosen wheel pattern - let chosenSetting = ''; + let chosenSetting = ""; if (pattern === "Custom") { - let re = new RegExp("^[.xX]*$"); + const re = new RegExp("^[.xX]*$"); if (lugs1.length !== 43 || !re.test(lugs1)) throw new OperationError("Ψ1 custom lugs must be 43 long and can only include . or x "); if (lugs2.length !== 47 || !re.test(lugs2)) throw new OperationError("Ψ2 custom lugs must be 47 long and can only include . or x"); if (lugs3.length !== 51 || !re.test(lugs3)) throw new OperationError("Ψ3 custom lugs must be 51 long and can only include . or x"); @@ -304,21 +304,21 @@ class Lorenz extends Operation { } else { chosenSetting = INIT_PATTERNS[pattern]; } - var chiSettings = chosenSetting.X; // Pin settings for Chi links (X) - var psiSettings = chosenSetting.S; // Pin settings for Psi links (S) - var muSettings = chosenSetting.M; // Pin settings for Motor links (M) + const chiSettings = chosenSetting.X; // Pin settings for Chi links (X) + const psiSettings = chosenSetting.S; // Pin settings for Psi links (S) + const muSettings = chosenSetting.M; // Pin settings for Motor links (M) let ita2 = ""; if (mode === "Send") { // Convert input text to ITA2 (including figure/letter shifts) ita2 = Array.prototype.map.call(input, function(character) { - let letter = character.toUpperCase(); - + const letter = character.toUpperCase(); + if (intype === "Plaintext") { if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); - if(!figShifted && figShiftedChars.indexOf(letter) !== -1) { + if (!figShifted && figShiftedChars.indexOf(letter) !== -1) { // in letters mode and next char needs to be figure shifted figShifted = true; return "55" + figShiftArr[letter]; @@ -357,11 +357,11 @@ class Lorenz extends Operation { // Receive input should always be ITA2 ita2 = Array.prototype.map.call(input, function(character) { - let letter = character.toUpperCase(); + const letter = character.toUpperCase(); if (validITA2.indexOf(letter) === -1) { - var errltr = letter; - if (errltr==="\n") errltr = "Carriage Return"; - if(errltr===" ") errltr = "Space"; + let errltr = letter; + if (errltr==="\n") errltr = "Carriage Return"; + if (errltr===" ") errltr = "Space"; throw new OperationError("Invalid ITA2 character : "+errltr); } return letter; @@ -375,7 +375,7 @@ class Lorenz extends Operation { let thisChi = []; let m61lug = muSettings[1][m61-1]; let m37lug = muSettings[2][m37-1]; - let p5 = [0,0,0]; + const p5 = [0, 0, 0]; const self = this; const letters = Array.prototype.map.call(ita2Input, function(character) { @@ -387,18 +387,18 @@ class Lorenz extends Operation { if (s1bptr===44) s1bptr=1; thisChi = [ - chiSettings[1][x1-1], - chiSettings[2][x2-1], - chiSettings[3][x3-1], - chiSettings[4][x4-1], + chiSettings[1][x1-1], + chiSettings[2][x2-1], + chiSettings[3][x3-1], + chiSettings[4][x4-1], chiSettings[5][x5-1] ]; thisPsi = [ - psiSettings[1][s1-1], - psiSettings[2][s2-1], - psiSettings[3][s3-1], - psiSettings[4][s4-1], + psiSettings[1][s1-1], + psiSettings[2][s2-1], + psiSettings[3][s3-1], + psiSettings[4][s4-1], psiSettings[5][s5-1] ]; @@ -406,8 +406,8 @@ class Lorenz extends Operation { return ""; } - let xorSum = []; - for(var i=0;i<=4;i++) { + const xorSum = []; + for (let i=0;i<=4;i++) { xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; } const resultStr = xorSum.join(""); @@ -427,7 +427,7 @@ class Lorenz extends Operation { if (--m37 < 1) m37 = 37; } - let basicmotor = m37lug; + const basicmotor = m37lug; let totalmotor = basicmotor; let lim = 0; @@ -440,28 +440,38 @@ class Lorenz extends Operation { } // Limitations here - if (model==='SZ42a') { + if (model==="SZ42a") { // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position lim = chiSettings[2][x2bptr-1]; - if(kt) { - if (lim===p5[2]) { lim = 0; } else { lim=1; } //p5 back 2 + if (kt) { + //p5 back 2 + if (lim===p5[2]) { + lim = 0; + } else { + lim=1; + } } - + // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] if (basicmotor===0 && lim===1) { totalmotor = 0; } else { totalmotor = 1; - } + } - } else if(model=='SZ42b') { + } else if (model==="SZ42b") { // Chi 2 one back + Psi 1 one back. const x2b1lug = chiSettings[2][x2bptr-1]; const s1b1lug = psiSettings[1][s1bptr-1]; lim = 1; if (x2b1lug===s1b1lug) lim=0; - if(kt) { - if (lim===p5[2]) { lim=0; } else { lim=1; } //p5 back 2 + if (kt) { + //p5 back 2 + if (lim===p5[2]) { + lim=0; + } else { + lim=1; + } } // If basic motor = 0 and limitation = 1, Total motor = 0 [no move], otherwise, total motor = 1 [move] if (basicmotor===0 && lim===1) { @@ -479,11 +489,11 @@ class Lorenz extends Operation { // increment Psi wheels when current totalmotor active if (totalmotor === 1) { - if(--s1 < 1) s1 = 43; - if(--s2 < 1) s2 = 47; - if(--s3 < 1) s3 = 51; - if(--s4 < 1) s4 = 53; - if(--s5 < 1) s5 = 59; + if (--s1 < 1) s1 = 43; + if (--s2 < 1) s2 = 47; + if (--s3 < 1) s3 = 51; + if (--s4 < 1) s4 = 53; + if (--s5 < 1) s5 = 59; } m61lug = muSettings[1][m61-1]; @@ -498,7 +508,7 @@ class Lorenz extends Operation { return rtnstr; }); - let ita2output = letters.join(""); + const ita2output = letters.join(""); let output = ""; if (mode === "Receive") { @@ -507,7 +517,7 @@ class Lorenz extends Operation { // Convert output ITA2 to plaintext (including figure/letter shifts) const out = Array.prototype.map.call(ita2output, function(letter) { - + if (outtype === "Plaintext") { if (letter === "5" || letter === "+") { @@ -531,7 +541,7 @@ class Lorenz extends Operation { return letter; } - } else { + } else { return letter; } @@ -563,13 +573,16 @@ class Lorenz extends Operation { } } + /** + * Read lugs settings - convert to 0|1 + */ readLugs(lugstr) { - let arr = Array.prototype.map.call(lugstr, function(lug) { - if(lug==".") { + const arr = Array.prototype.map.call(lugstr, function(lug) { + if (lug===".") { return 0; } else { return 1; - } + } }); return arr; } @@ -617,121 +630,121 @@ const ITA2_TABLE = { const validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+-'()/:=?,. \n\r"; const validITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; -const figShiftedChars = "1234567890+-'()/:=?,." +const figShiftedChars = "1234567890+-'()/:=?,."; const figShiftArr = { - "1": "Q", - "2": "W", - "3": "E", - "4": "R", - "5": "T", - "6": "Y", - "7": "U", - "8": "I", - "9": "O", - "0": "P", - " ": "9", - "-": "A", - "?": "B", - ":": "C", - "#": "D", - "%": "F", - "@": "G", - "£": "H", - "(": "K", - ")": "L", - ".": "M", - ",": "N", - "'": "S", - "=": "V", - "/": "X", - "+": "Z", - "\n": "3", - "\r": "4" + "1": "Q", + "2": "W", + "3": "E", + "4": "R", + "5": "T", + "6": "Y", + "7": "U", + "8": "I", + "9": "O", + "0": "P", + " ": "9", + "-": "A", + "?": "B", + ":": "C", + "#": "D", + "%": "F", + "@": "G", + "£": "H", + "(": "K", + ")": "L", + ".": "M", + ",": "N", + "'": "S", + "=": "V", + "/": "X", + "+": "Z", + "\n": "3", + "\r": "4" }; const INIT_PATTERNS = { "No Pattern": { "X": { - 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - }, + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 4: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 5: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, "S": { - 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 3: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 4: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 5: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - }, + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 4: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 5: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, "M": { - 1: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], - 2: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } }, "KH Pattern": { "X": { - 1: [0,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0], - 2: [1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0], - 3: [0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0], - 4: [1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0], - 5: [1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0] - }, + 1: [0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0], + 2: [1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0], + 3: [0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0], + 4: [1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0], + 5: [1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0] + }, "S": { - 1: [0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1], - 2: [0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1], - 3: [0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1], - 4: [0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0], - 5: [1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,0] - }, + 1: [0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1], + 2: [0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1], + 3: [0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1], + 4: [0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], + 5: [1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0] + }, "M": { - 1: [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0], - 2: [1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0] + 1: [0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0], + 2: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0] } }, "ZMUG Pattern": { "X": { - 1: [0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0], - 2: [1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0], - 3: [0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0], - 4: [1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1], - 5: [0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1] - }, + 1: [0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], + 2: [1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0], + 3: [0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0], + 4: [1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1], + 5: [0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1] + }, "S": { - 1: [1,1,0,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0], - 2: [0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1], - 3: [0,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1], - 4: [0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1], - 5: [1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0] - }, + 1: [1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0], + 2: [0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], + 3: [0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1], + 4: [0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1], + 5: [1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0] + }, "M": { - 1: [1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,0,1], - 2: [0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1] + 1: [1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1], + 2: [0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1] } }, "BREAM Pattern": { "X": { - 1: [0,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0], - 2: [0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1], - 3: [1,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0], - 4: [1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0], - 5: [0,1,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,0] - }, + 1: [0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0], + 2: [0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1], + 3: [1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0], + 4: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0], + 5: [0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0] + }, "S": { - 1: [0,0,0,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0], - 2: [1,1,0,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0], - 3: [1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1], - 4: [0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1], - 5: [1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0] - }, + 1: [0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0], + 2: [1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0], + 3: [1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], + 4: [0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1], + 5: [1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0] + }, "M": { - 1: [1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1], - 2: [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,1] + 1: [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1], + 2: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1] } } }; -export default Lorenz; \ No newline at end of file +export default Lorenz; From 8ece8ebec2a6e150465fa8b7c61c23f1725cc183 Mon Sep 17 00:00:00 2001 From: Martin Gillow Date: Mon, 1 Apr 2019 13:40:53 +0100 Subject: [PATCH 0020/1024] Updated description --- src/core/operations/Lorenz.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 4d72428f..56eada60 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -22,8 +22,8 @@ class Lorenz extends Operation { this.name = "Lorenz"; this.module = "Default"; - this.description = "Enciphers characters using the World War 2 German Lorenz SZ cipher attachment."; - this.infoURL = "https://lorenz.virtualcolossus.co.uk"; + this.description = "The Lorenz SZ40/42 cipher attachment was a WW2 German rotor cipher machine with twelve rotors which attached in-line between remote teleprinters.

It used the Vernam cipher with two groups of five rotors (named the psi(ψ) wheels and chi(χ) wheels at Bletchley Park) to create two pseudorandom streams of five bits, encoded in ITA2, which were XOR added to the plaintext. Two other rotors, dubbed the mu(μ) or motor wheels, could hold up the stepping of the psi wheels meaning they stepped intermittently.

Each rotor has a different number of cams/lugs around their circumference which could be set active or inactive changing the key stream.

Three models of the Lorenz are emulated, SZ40, SZ42a and SZ42b and three example wheel patterns (the lug settings) are included (KH, ZMUG & BREAM) with the option to set a custom set using the letter 'x' for active or '.' for an inactive lug.

The input can either be plaintext or ITA2 when sending and ITA2 when receiving.

To learn more, Virtual Lorenz, an online, browser based simulation of the Lorenz SZ40/42 is available at https://lorenz.virtualcolossus.co.uk."; + this.infoURL = "https://en.wikipedia.org/wiki/Lorenz_cipher"; this.inputType = "string"; this.outputType = "string"; this.args = [ From 5148b16246d87451157358120625e277bb91fb4f Mon Sep 17 00:00:00 2001 From: d98762625 Date: Fri, 20 Sep 2019 18:33:55 +0100 Subject: [PATCH 0021/1024] Export cyberchef error types to be used in consuming applications --- package-lock.json | 41 +++++-------------- src/core/errors/index.mjs | 9 ++++ src/node/config/scripts/generateNodeIndex.mjs | 4 ++ 3 files changed, 24 insertions(+), 30 deletions(-) create mode 100644 src/core/errors/index.mjs diff --git a/package-lock.json b/package-lock.json index 5602635d..5b504380 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6026,8 +6026,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6048,14 +6047,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6070,20 +6067,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6200,8 +6194,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6213,7 +6206,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6228,7 +6220,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6236,14 +6227,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6262,7 +6251,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6343,8 +6331,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6356,7 +6343,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6442,8 +6428,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6479,7 +6464,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6499,7 +6483,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6543,14 +6526,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/src/core/errors/index.mjs b/src/core/errors/index.mjs new file mode 100644 index 00000000..b27affc2 --- /dev/null +++ b/src/core/errors/index.mjs @@ -0,0 +1,9 @@ +import OperationError from "./OperationError.mjs"; +import DishError from "./DishError.mjs"; +import ExcludedOperationError from "./ExcludedOperationError"; + +export { + OperationError, + DishError, + ExcludedOperationError, +}; diff --git a/src/node/config/scripts/generateNodeIndex.mjs b/src/node/config/scripts/generateNodeIndex.mjs index d6fe9295..391cd6e9 100644 --- a/src/node/config/scripts/generateNodeIndex.mjs +++ b/src/node/config/scripts/generateNodeIndex.mjs @@ -41,6 +41,7 @@ let code = `/** import NodeDish from "./NodeDish.mjs"; import { _wrap, help, bake, _explainExludedFunction } from "./api.mjs"; import File from "./File.mjs"; +import { OperationError, DishError, ExcludedOperationError } from "../core/errors/index"; import { // import as core_ to avoid name clashes after wrap. `; @@ -115,6 +116,9 @@ Object.keys(operations).forEach((op) => { code += " NodeDish as Dish,\n"; code += " prebaked as bake,\n"; code += " help,\n"; +code += " OperationError,\n"; +code += " ExcludedOperationError,\n"; +code += " DishError,\n"; code += "};\n"; From 014e70a7b1e09eba41aadd4365d193d9a14fcae3 Mon Sep 17 00:00:00 2001 From: d98762625 Date: Fri, 20 Sep 2019 18:44:13 +0100 Subject: [PATCH 0022/1024] add node index to source --- .gitignore | 1 - src/node/index.mjs | 1724 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1724 insertions(+), 1 deletion(-) create mode 100644 src/node/index.mjs diff --git a/.gitignore b/.gitignore index e546c949..2d617b08 100755 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ src/core/config/modules/* src/core/config/OperationConfig.json src/core/operations/index.mjs src/node/config/OperationConfig.json -src/node/index.mjs **/*.DS_Store tests/browser/output/* diff --git a/src/node/index.mjs b/src/node/index.mjs new file mode 100644 index 00000000..99145b77 --- /dev/null +++ b/src/node/index.mjs @@ -0,0 +1,1724 @@ +/** +* THIS FILE IS AUTOMATICALLY GENERATED BY src/node/config/scripts/generateNodeIndex.mjs +* +* @author d98762625 [d98762625@gmail.com] +* @copyright Crown Copyright 2019 +* @license Apache-2.0 +*/ + +/* eslint camelcase: 0 */ + + +import NodeDish from "./NodeDish.mjs"; +import { _wrap, help, bake, _explainExludedFunction } from "./api.mjs"; +import File from "./File.mjs"; +import { OperationError, DishError, ExcludedOperationError } from "../core/errors/index"; +import { + // import as core_ to avoid name clashes after wrap. + A1Z26CipherDecode as core_A1Z26CipherDecode, + A1Z26CipherEncode as core_A1Z26CipherEncode, + ADD as core_ADD, + AESDecrypt as core_AESDecrypt, + AESEncrypt as core_AESEncrypt, + AND as core_AND, + AddLineNumbers as core_AddLineNumbers, + AddTextToImage as core_AddTextToImage, + Adler32Checksum as core_Adler32Checksum, + AffineCipherDecode as core_AffineCipherDecode, + AffineCipherEncode as core_AffineCipherEncode, + AnalyseHash as core_AnalyseHash, + AtbashCipher as core_AtbashCipher, + BLAKE2b as core_BLAKE2b, + BLAKE2s as core_BLAKE2s, + BSONDeserialise as core_BSONDeserialise, + BSONSerialise as core_BSONSerialise, + BaconCipherDecode as core_BaconCipherDecode, + BaconCipherEncode as core_BaconCipherEncode, + Bcrypt as core_Bcrypt, + BcryptCompare as core_BcryptCompare, + BcryptParse as core_BcryptParse, + BifidCipherDecode as core_BifidCipherDecode, + BifidCipherEncode as core_BifidCipherEncode, + BitShiftLeft as core_BitShiftLeft, + BitShiftRight as core_BitShiftRight, + BlowfishDecrypt as core_BlowfishDecrypt, + BlowfishEncrypt as core_BlowfishEncrypt, + BlurImage as core_BlurImage, + Bombe as core_Bombe, + Bzip2Compress as core_Bzip2Compress, + Bzip2Decompress as core_Bzip2Decompress, + CRC16Checksum as core_CRC16Checksum, + CRC32Checksum as core_CRC32Checksum, + CRC8Checksum as core_CRC8Checksum, + CSSBeautify as core_CSSBeautify, + CSSMinify as core_CSSMinify, + CSSSelector as core_CSSSelector, + CSVToJSON as core_CSVToJSON, + CTPH as core_CTPH, + CartesianProduct as core_CartesianProduct, + ChangeIPFormat as core_ChangeIPFormat, + ChiSquare as core_ChiSquare, + CitrixCTX1Decode as core_CitrixCTX1Decode, + CitrixCTX1Encode as core_CitrixCTX1Encode, + CompareCTPHHashes as core_CompareCTPHHashes, + CompareSSDEEPHashes as core_CompareSSDEEPHashes, + ContainImage as core_ContainImage, + ConvertArea as core_ConvertArea, + ConvertCoordinateFormat as core_ConvertCoordinateFormat, + ConvertDataUnits as core_ConvertDataUnits, + ConvertDistance as core_ConvertDistance, + ConvertImageFormat as core_ConvertImageFormat, + ConvertMass as core_ConvertMass, + ConvertSpeed as core_ConvertSpeed, + CountOccurrences as core_CountOccurrences, + CoverImage as core_CoverImage, + CropImage as core_CropImage, + DESDecrypt as core_DESDecrypt, + DESEncrypt as core_DESEncrypt, + DNSOverHTTPS as core_DNSOverHTTPS, + DechunkHTTPResponse as core_DechunkHTTPResponse, + DecodeNetBIOSName as core_DecodeNetBIOSName, + DecodeText as core_DecodeText, + DefangIPAddresses as core_DefangIPAddresses, + DefangURL as core_DefangURL, + DeriveEVPKey as core_DeriveEVPKey, + DerivePBKDF2Key as core_DerivePBKDF2Key, + DetectFileType as core_DetectFileType, + Diff as core_Diff, + DisassembleX86 as core_DisassembleX86, + DitherImage as core_DitherImage, + Divide as core_Divide, + DropBytes as core_DropBytes, + EncodeNetBIOSName as core_EncodeNetBIOSName, + EncodeText as core_EncodeText, + Enigma as core_Enigma, + Entropy as core_Entropy, + EscapeString as core_EscapeString, + EscapeUnicodeCharacters as core_EscapeUnicodeCharacters, + ExpandAlphabetRange as core_ExpandAlphabetRange, + ExtractDates as core_ExtractDates, + ExtractDomains as core_ExtractDomains, + ExtractEXIF as core_ExtractEXIF, + ExtractEmailAddresses as core_ExtractEmailAddresses, + ExtractFilePaths as core_ExtractFilePaths, + ExtractFiles as core_ExtractFiles, + ExtractIPAddresses as core_ExtractIPAddresses, + ExtractLSB as core_ExtractLSB, + ExtractMACAddresses as core_ExtractMACAddresses, + ExtractRGBA as core_ExtractRGBA, + ExtractURLs as core_ExtractURLs, + Filter as core_Filter, + FindReplace as core_FindReplace, + Fletcher16Checksum as core_Fletcher16Checksum, + Fletcher32Checksum as core_Fletcher32Checksum, + Fletcher64Checksum as core_Fletcher64Checksum, + Fletcher8Checksum as core_Fletcher8Checksum, + FlipImage as core_FlipImage, + FormatMACAddresses as core_FormatMACAddresses, + FrequencyDistribution as core_FrequencyDistribution, + FromBCD as core_FromBCD, + FromBase as core_FromBase, + FromBase32 as core_FromBase32, + FromBase58 as core_FromBase58, + FromBase62 as core_FromBase62, + FromBase64 as core_FromBase64, + FromBase85 as core_FromBase85, + FromBinary as core_FromBinary, + FromBraille as core_FromBraille, + FromCaseInsensitiveRegex as core_FromCaseInsensitiveRegex, + FromCharcode as core_FromCharcode, + FromDecimal as core_FromDecimal, + FromHTMLEntity as core_FromHTMLEntity, + FromHex as core_FromHex, + FromHexContent as core_FromHexContent, + FromHexdump as core_FromHexdump, + FromMessagePack as core_FromMessagePack, + FromMorseCode as core_FromMorseCode, + FromOctal as core_FromOctal, + FromPunycode as core_FromPunycode, + FromQuotedPrintable as core_FromQuotedPrintable, + FromUNIXTimestamp as core_FromUNIXTimestamp, + GOSTHash as core_GOSTHash, + GenerateAllHashes as core_GenerateAllHashes, + GenerateHOTP as core_GenerateHOTP, + GenerateLoremIpsum as core_GenerateLoremIpsum, + GeneratePGPKeyPair as core_GeneratePGPKeyPair, + GenerateQRCode as core_GenerateQRCode, + GenerateTOTP as core_GenerateTOTP, + GenerateUUID as core_GenerateUUID, + GenericCodeBeautify as core_GenericCodeBeautify, + GroupIPAddresses as core_GroupIPAddresses, + Gunzip as core_Gunzip, + Gzip as core_Gzip, + HAS160 as core_HAS160, + HMAC as core_HMAC, + HTMLToText as core_HTMLToText, + HTTPRequest as core_HTTPRequest, + HammingDistance as core_HammingDistance, + HaversineDistance as core_HaversineDistance, + Head as core_Head, + HeatmapChart as core_HeatmapChart, + HexDensityChart as core_HexDensityChart, + HexToObjectIdentifier as core_HexToObjectIdentifier, + HexToPEM as core_HexToPEM, + ImageBrightnessContrast as core_ImageBrightnessContrast, + ImageFilter as core_ImageFilter, + ImageHueSaturationLightness as core_ImageHueSaturationLightness, + ImageOpacity as core_ImageOpacity, + IndexOfCoincidence as core_IndexOfCoincidence, + InvertImage as core_InvertImage, + JPathExpression as core_JPathExpression, + JSONBeautify as core_JSONBeautify, + JSONMinify as core_JSONMinify, + JSONToCSV as core_JSONToCSV, + JWTDecode as core_JWTDecode, + JWTSign as core_JWTSign, + JWTVerify as core_JWTVerify, + Keccak as core_Keccak, + MD2 as core_MD2, + MD4 as core_MD4, + MD5 as core_MD5, + MD6 as core_MD6, + Magic as core_Magic, + Mean as core_Mean, + Median as core_Median, + MicrosoftScriptDecoder as core_MicrosoftScriptDecoder, + MultipleBombe as core_MultipleBombe, + Multiply as core_Multiply, + NOT as core_NOT, + NormaliseImage as core_NormaliseImage, + Numberwang as core_Numberwang, + OR as core_OR, + ObjectIdentifierToHex as core_ObjectIdentifierToHex, + OffsetChecker as core_OffsetChecker, + OpticalCharacterRecognition as core_OpticalCharacterRecognition, + PEMToHex as core_PEMToHex, + PGPDecrypt as core_PGPDecrypt, + PGPDecryptAndVerify as core_PGPDecryptAndVerify, + PGPEncrypt as core_PGPEncrypt, + PGPEncryptAndSign as core_PGPEncryptAndSign, + PGPVerify as core_PGPVerify, + PHPDeserialize as core_PHPDeserialize, + PadLines as core_PadLines, + ParseASN1HexString as core_ParseASN1HexString, + ParseColourCode as core_ParseColourCode, + ParseDateTime as core_ParseDateTime, + ParseIPRange as core_ParseIPRange, + ParseIPv4Header as core_ParseIPv4Header, + ParseIPv6Address as core_ParseIPv6Address, + ParseQRCode as core_ParseQRCode, + ParseSSHHostKey as core_ParseSSHHostKey, + ParseTLV as core_ParseTLV, + ParseUDP as core_ParseUDP, + ParseUNIXFilePermissions as core_ParseUNIXFilePermissions, + ParseURI as core_ParseURI, + ParseUserAgent as core_ParseUserAgent, + ParseX509Certificate as core_ParseX509Certificate, + PlayMedia as core_PlayMedia, + PowerSet as core_PowerSet, + ProtobufDecode as core_ProtobufDecode, + PseudoRandomNumberGenerator as core_PseudoRandomNumberGenerator, + RC2Decrypt as core_RC2Decrypt, + RC2Encrypt as core_RC2Encrypt, + RC4 as core_RC4, + RC4Drop as core_RC4Drop, + RIPEMD as core_RIPEMD, + ROT13 as core_ROT13, + ROT47 as core_ROT47, + RandomizeColourPalette as core_RandomizeColourPalette, + RawDeflate as core_RawDeflate, + RawInflate as core_RawInflate, + Register as core_Register, + RegularExpression as core_RegularExpression, + RemoveDiacritics as core_RemoveDiacritics, + RemoveEXIF as core_RemoveEXIF, + RemoveLineNumbers as core_RemoveLineNumbers, + RemoveNullBytes as core_RemoveNullBytes, + RemoveWhitespace as core_RemoveWhitespace, + RenderImage as core_RenderImage, + RenderMarkdown as core_RenderMarkdown, + ResizeImage as core_ResizeImage, + Return as core_Return, + Reverse as core_Reverse, + RotateImage as core_RotateImage, + RotateLeft as core_RotateLeft, + RotateRight as core_RotateRight, + SHA0 as core_SHA0, + SHA1 as core_SHA1, + SHA2 as core_SHA2, + SHA3 as core_SHA3, + SQLBeautify as core_SQLBeautify, + SQLMinify as core_SQLMinify, + SSDEEP as core_SSDEEP, + SUB as core_SUB, + ScanForEmbeddedFiles as core_ScanForEmbeddedFiles, + ScatterChart as core_ScatterChart, + Scrypt as core_Scrypt, + SeriesChart as core_SeriesChart, + SetDifference as core_SetDifference, + SetIntersection as core_SetIntersection, + SetUnion as core_SetUnion, + Shake as core_Shake, + SharpenImage as core_SharpenImage, + ShowBase64Offsets as core_ShowBase64Offsets, + ShowOnMap as core_ShowOnMap, + Sleep as core_Sleep, + Snefru as core_Snefru, + Sort as core_Sort, + Split as core_Split, + SplitColourChannels as core_SplitColourChannels, + StandardDeviation as core_StandardDeviation, + Streebog as core_Streebog, + Strings as core_Strings, + StripHTMLTags as core_StripHTMLTags, + StripHTTPHeaders as core_StripHTTPHeaders, + Subsection as core_Subsection, + Substitute as core_Substitute, + Subtract as core_Subtract, + Sum as core_Sum, + SwapEndianness as core_SwapEndianness, + SymmetricDifference as core_SymmetricDifference, + TCPIPChecksum as core_TCPIPChecksum, + Tail as core_Tail, + TakeBytes as core_TakeBytes, + Tar as core_Tar, + TextEncodingBruteForce as core_TextEncodingBruteForce, + ToBCD as core_ToBCD, + ToBase as core_ToBase, + ToBase32 as core_ToBase32, + ToBase58 as core_ToBase58, + ToBase62 as core_ToBase62, + ToBase64 as core_ToBase64, + ToBase85 as core_ToBase85, + ToBinary as core_ToBinary, + ToBraille as core_ToBraille, + ToCamelCase as core_ToCamelCase, + ToCaseInsensitiveRegex as core_ToCaseInsensitiveRegex, + ToCharcode as core_ToCharcode, + ToDecimal as core_ToDecimal, + ToHTMLEntity as core_ToHTMLEntity, + ToHex as core_ToHex, + ToHexContent as core_ToHexContent, + ToHexdump as core_ToHexdump, + ToKebabCase as core_ToKebabCase, + ToLowerCase as core_ToLowerCase, + ToMessagePack as core_ToMessagePack, + ToMorseCode as core_ToMorseCode, + ToOctal as core_ToOctal, + ToPunycode as core_ToPunycode, + ToQuotedPrintable as core_ToQuotedPrintable, + ToSnakeCase as core_ToSnakeCase, + ToTable as core_ToTable, + ToUNIXTimestamp as core_ToUNIXTimestamp, + ToUpperCase as core_ToUpperCase, + TranslateDateTimeFormat as core_TranslateDateTimeFormat, + TripleDESDecrypt as core_TripleDESDecrypt, + TripleDESEncrypt as core_TripleDESEncrypt, + Typex as core_Typex, + UNIXTimestampToWindowsFiletime as core_UNIXTimestampToWindowsFiletime, + URLDecode as core_URLDecode, + URLEncode as core_URLEncode, + UnescapeString as core_UnescapeString, + UnescapeUnicodeCharacters as core_UnescapeUnicodeCharacters, + Unique as core_Unique, + Untar as core_Untar, + Unzip as core_Unzip, + VarIntDecode as core_VarIntDecode, + VarIntEncode as core_VarIntEncode, + ViewBitPlane as core_ViewBitPlane, + VigenèreDecode as core_VigenèreDecode, + VigenèreEncode as core_VigenèreEncode, + Whirlpool as core_Whirlpool, + WindowsFiletimeToUNIXTimestamp as core_WindowsFiletimeToUNIXTimestamp, + XKCDRandomNumber as core_XKCDRandomNumber, + XMLBeautify as core_XMLBeautify, + XMLMinify as core_XMLMinify, + XOR as core_XOR, + XORBruteForce as core_XORBruteForce, + XPathExpression as core_XPathExpression, + YARARules as core_YARARules, + Zip as core_Zip, + ZlibDeflate as core_ZlibDeflate, + ZlibInflate as core_ZlibInflate, + +} from "../core/operations/index"; + +global.File = File; + +/** + * generateChef + * + * Creates decapitalised, wrapped ops in chef object for default export. + */ +function generateChef() { + return { + "A1Z26CipherDecode": _wrap(core_A1Z26CipherDecode), + "A1Z26CipherEncode": _wrap(core_A1Z26CipherEncode), + "ADD": _wrap(core_ADD), + "AESDecrypt": _wrap(core_AESDecrypt), + "AESEncrypt": _wrap(core_AESEncrypt), + "AND": _wrap(core_AND), + "addLineNumbers": _wrap(core_AddLineNumbers), + "addTextToImage": _wrap(core_AddTextToImage), + "adler32Checksum": _wrap(core_Adler32Checksum), + "affineCipherDecode": _wrap(core_AffineCipherDecode), + "affineCipherEncode": _wrap(core_AffineCipherEncode), + "analyseHash": _wrap(core_AnalyseHash), + "atbashCipher": _wrap(core_AtbashCipher), + "BLAKE2b": _wrap(core_BLAKE2b), + "BLAKE2s": _wrap(core_BLAKE2s), + "BSONDeserialise": _wrap(core_BSONDeserialise), + "BSONSerialise": _wrap(core_BSONSerialise), + "baconCipherDecode": _wrap(core_BaconCipherDecode), + "baconCipherEncode": _wrap(core_BaconCipherEncode), + "bcrypt": _wrap(core_Bcrypt), + "bcryptCompare": _wrap(core_BcryptCompare), + "bcryptParse": _wrap(core_BcryptParse), + "bifidCipherDecode": _wrap(core_BifidCipherDecode), + "bifidCipherEncode": _wrap(core_BifidCipherEncode), + "bitShiftLeft": _wrap(core_BitShiftLeft), + "bitShiftRight": _wrap(core_BitShiftRight), + "blowfishDecrypt": _wrap(core_BlowfishDecrypt), + "blowfishEncrypt": _wrap(core_BlowfishEncrypt), + "blurImage": _wrap(core_BlurImage), + "bombe": _wrap(core_Bombe), + "bzip2Compress": _wrap(core_Bzip2Compress), + "bzip2Decompress": _wrap(core_Bzip2Decompress), + "CRC16Checksum": _wrap(core_CRC16Checksum), + "CRC32Checksum": _wrap(core_CRC32Checksum), + "CRC8Checksum": _wrap(core_CRC8Checksum), + "CSSBeautify": _wrap(core_CSSBeautify), + "CSSMinify": _wrap(core_CSSMinify), + "CSSSelector": _wrap(core_CSSSelector), + "CSVToJSON": _wrap(core_CSVToJSON), + "CTPH": _wrap(core_CTPH), + "cartesianProduct": _wrap(core_CartesianProduct), + "changeIPFormat": _wrap(core_ChangeIPFormat), + "chiSquare": _wrap(core_ChiSquare), + "citrixCTX1Decode": _wrap(core_CitrixCTX1Decode), + "citrixCTX1Encode": _wrap(core_CitrixCTX1Encode), + "compareCTPHHashes": _wrap(core_CompareCTPHHashes), + "compareSSDEEPHashes": _wrap(core_CompareSSDEEPHashes), + "containImage": _wrap(core_ContainImage), + "convertArea": _wrap(core_ConvertArea), + "convertCoordinateFormat": _wrap(core_ConvertCoordinateFormat), + "convertDataUnits": _wrap(core_ConvertDataUnits), + "convertDistance": _wrap(core_ConvertDistance), + "convertImageFormat": _wrap(core_ConvertImageFormat), + "convertMass": _wrap(core_ConvertMass), + "convertSpeed": _wrap(core_ConvertSpeed), + "countOccurrences": _wrap(core_CountOccurrences), + "coverImage": _wrap(core_CoverImage), + "cropImage": _wrap(core_CropImage), + "DESDecrypt": _wrap(core_DESDecrypt), + "DESEncrypt": _wrap(core_DESEncrypt), + "DNSOverHTTPS": _wrap(core_DNSOverHTTPS), + "dechunkHTTPResponse": _wrap(core_DechunkHTTPResponse), + "decodeNetBIOSName": _wrap(core_DecodeNetBIOSName), + "decodeText": _wrap(core_DecodeText), + "defangIPAddresses": _wrap(core_DefangIPAddresses), + "defangURL": _wrap(core_DefangURL), + "deriveEVPKey": _wrap(core_DeriveEVPKey), + "derivePBKDF2Key": _wrap(core_DerivePBKDF2Key), + "detectFileType": _wrap(core_DetectFileType), + "diff": _wrap(core_Diff), + "disassembleX86": _wrap(core_DisassembleX86), + "ditherImage": _wrap(core_DitherImage), + "divide": _wrap(core_Divide), + "dropBytes": _wrap(core_DropBytes), + "encodeNetBIOSName": _wrap(core_EncodeNetBIOSName), + "encodeText": _wrap(core_EncodeText), + "enigma": _wrap(core_Enigma), + "entropy": _wrap(core_Entropy), + "escapeString": _wrap(core_EscapeString), + "escapeUnicodeCharacters": _wrap(core_EscapeUnicodeCharacters), + "expandAlphabetRange": _wrap(core_ExpandAlphabetRange), + "extractDates": _wrap(core_ExtractDates), + "extractDomains": _wrap(core_ExtractDomains), + "extractEXIF": _wrap(core_ExtractEXIF), + "extractEmailAddresses": _wrap(core_ExtractEmailAddresses), + "extractFilePaths": _wrap(core_ExtractFilePaths), + "extractFiles": _wrap(core_ExtractFiles), + "extractIPAddresses": _wrap(core_ExtractIPAddresses), + "extractLSB": _wrap(core_ExtractLSB), + "extractMACAddresses": _wrap(core_ExtractMACAddresses), + "extractRGBA": _wrap(core_ExtractRGBA), + "extractURLs": _wrap(core_ExtractURLs), + "filter": _wrap(core_Filter), + "findReplace": _wrap(core_FindReplace), + "fletcher16Checksum": _wrap(core_Fletcher16Checksum), + "fletcher32Checksum": _wrap(core_Fletcher32Checksum), + "fletcher64Checksum": _wrap(core_Fletcher64Checksum), + "fletcher8Checksum": _wrap(core_Fletcher8Checksum), + "flipImage": _wrap(core_FlipImage), + "formatMACAddresses": _wrap(core_FormatMACAddresses), + "frequencyDistribution": _wrap(core_FrequencyDistribution), + "fromBCD": _wrap(core_FromBCD), + "fromBase": _wrap(core_FromBase), + "fromBase32": _wrap(core_FromBase32), + "fromBase58": _wrap(core_FromBase58), + "fromBase62": _wrap(core_FromBase62), + "fromBase64": _wrap(core_FromBase64), + "fromBase85": _wrap(core_FromBase85), + "fromBinary": _wrap(core_FromBinary), + "fromBraille": _wrap(core_FromBraille), + "fromCaseInsensitiveRegex": _wrap(core_FromCaseInsensitiveRegex), + "fromCharcode": _wrap(core_FromCharcode), + "fromDecimal": _wrap(core_FromDecimal), + "fromHTMLEntity": _wrap(core_FromHTMLEntity), + "fromHex": _wrap(core_FromHex), + "fromHexContent": _wrap(core_FromHexContent), + "fromHexdump": _wrap(core_FromHexdump), + "fromMessagePack": _wrap(core_FromMessagePack), + "fromMorseCode": _wrap(core_FromMorseCode), + "fromOctal": _wrap(core_FromOctal), + "fromPunycode": _wrap(core_FromPunycode), + "fromQuotedPrintable": _wrap(core_FromQuotedPrintable), + "fromUNIXTimestamp": _wrap(core_FromUNIXTimestamp), + "GOSTHash": _wrap(core_GOSTHash), + "generateAllHashes": _wrap(core_GenerateAllHashes), + "generateHOTP": _wrap(core_GenerateHOTP), + "generateLoremIpsum": _wrap(core_GenerateLoremIpsum), + "generatePGPKeyPair": _wrap(core_GeneratePGPKeyPair), + "generateQRCode": _wrap(core_GenerateQRCode), + "generateTOTP": _wrap(core_GenerateTOTP), + "generateUUID": _wrap(core_GenerateUUID), + "genericCodeBeautify": _wrap(core_GenericCodeBeautify), + "groupIPAddresses": _wrap(core_GroupIPAddresses), + "gunzip": _wrap(core_Gunzip), + "gzip": _wrap(core_Gzip), + "HAS160": _wrap(core_HAS160), + "HMAC": _wrap(core_HMAC), + "HTMLToText": _wrap(core_HTMLToText), + "HTTPRequest": _wrap(core_HTTPRequest), + "hammingDistance": _wrap(core_HammingDistance), + "haversineDistance": _wrap(core_HaversineDistance), + "head": _wrap(core_Head), + "heatmapChart": _wrap(core_HeatmapChart), + "hexDensityChart": _wrap(core_HexDensityChart), + "hexToObjectIdentifier": _wrap(core_HexToObjectIdentifier), + "hexToPEM": _wrap(core_HexToPEM), + "imageBrightnessContrast": _wrap(core_ImageBrightnessContrast), + "imageFilter": _wrap(core_ImageFilter), + "imageHueSaturationLightness": _wrap(core_ImageHueSaturationLightness), + "imageOpacity": _wrap(core_ImageOpacity), + "indexOfCoincidence": _wrap(core_IndexOfCoincidence), + "invertImage": _wrap(core_InvertImage), + "JPathExpression": _wrap(core_JPathExpression), + "JSONBeautify": _wrap(core_JSONBeautify), + "JSONMinify": _wrap(core_JSONMinify), + "JSONToCSV": _wrap(core_JSONToCSV), + "JWTDecode": _wrap(core_JWTDecode), + "JWTSign": _wrap(core_JWTSign), + "JWTVerify": _wrap(core_JWTVerify), + "keccak": _wrap(core_Keccak), + "MD2": _wrap(core_MD2), + "MD4": _wrap(core_MD4), + "MD5": _wrap(core_MD5), + "MD6": _wrap(core_MD6), + "magic": _wrap(core_Magic), + "mean": _wrap(core_Mean), + "median": _wrap(core_Median), + "microsoftScriptDecoder": _wrap(core_MicrosoftScriptDecoder), + "multipleBombe": _wrap(core_MultipleBombe), + "multiply": _wrap(core_Multiply), + "NOT": _wrap(core_NOT), + "normaliseImage": _wrap(core_NormaliseImage), + "numberwang": _wrap(core_Numberwang), + "OR": _wrap(core_OR), + "objectIdentifierToHex": _wrap(core_ObjectIdentifierToHex), + "offsetChecker": _wrap(core_OffsetChecker), + "opticalCharacterRecognition": _wrap(core_OpticalCharacterRecognition), + "PEMToHex": _wrap(core_PEMToHex), + "PGPDecrypt": _wrap(core_PGPDecrypt), + "PGPDecryptAndVerify": _wrap(core_PGPDecryptAndVerify), + "PGPEncrypt": _wrap(core_PGPEncrypt), + "PGPEncryptAndSign": _wrap(core_PGPEncryptAndSign), + "PGPVerify": _wrap(core_PGPVerify), + "PHPDeserialize": _wrap(core_PHPDeserialize), + "padLines": _wrap(core_PadLines), + "parseASN1HexString": _wrap(core_ParseASN1HexString), + "parseColourCode": _wrap(core_ParseColourCode), + "parseDateTime": _wrap(core_ParseDateTime), + "parseIPRange": _wrap(core_ParseIPRange), + "parseIPv4Header": _wrap(core_ParseIPv4Header), + "parseIPv6Address": _wrap(core_ParseIPv6Address), + "parseQRCode": _wrap(core_ParseQRCode), + "parseSSHHostKey": _wrap(core_ParseSSHHostKey), + "parseTLV": _wrap(core_ParseTLV), + "parseUDP": _wrap(core_ParseUDP), + "parseUNIXFilePermissions": _wrap(core_ParseUNIXFilePermissions), + "parseURI": _wrap(core_ParseURI), + "parseUserAgent": _wrap(core_ParseUserAgent), + "parseX509Certificate": _wrap(core_ParseX509Certificate), + "playMedia": _wrap(core_PlayMedia), + "powerSet": _wrap(core_PowerSet), + "protobufDecode": _wrap(core_ProtobufDecode), + "pseudoRandomNumberGenerator": _wrap(core_PseudoRandomNumberGenerator), + "RC2Decrypt": _wrap(core_RC2Decrypt), + "RC2Encrypt": _wrap(core_RC2Encrypt), + "RC4": _wrap(core_RC4), + "RC4Drop": _wrap(core_RC4Drop), + "RIPEMD": _wrap(core_RIPEMD), + "ROT13": _wrap(core_ROT13), + "ROT47": _wrap(core_ROT47), + "randomizeColourPalette": _wrap(core_RandomizeColourPalette), + "rawDeflate": _wrap(core_RawDeflate), + "rawInflate": _wrap(core_RawInflate), + "register": _wrap(core_Register), + "regularExpression": _wrap(core_RegularExpression), + "removeDiacritics": _wrap(core_RemoveDiacritics), + "removeEXIF": _wrap(core_RemoveEXIF), + "removeLineNumbers": _wrap(core_RemoveLineNumbers), + "removeNullBytes": _wrap(core_RemoveNullBytes), + "removeWhitespace": _wrap(core_RemoveWhitespace), + "renderImage": _wrap(core_RenderImage), + "renderMarkdown": _wrap(core_RenderMarkdown), + "resizeImage": _wrap(core_ResizeImage), + "Return": _wrap(core_Return), + "reverse": _wrap(core_Reverse), + "rotateImage": _wrap(core_RotateImage), + "rotateLeft": _wrap(core_RotateLeft), + "rotateRight": _wrap(core_RotateRight), + "SHA0": _wrap(core_SHA0), + "SHA1": _wrap(core_SHA1), + "SHA2": _wrap(core_SHA2), + "SHA3": _wrap(core_SHA3), + "SQLBeautify": _wrap(core_SQLBeautify), + "SQLMinify": _wrap(core_SQLMinify), + "SSDEEP": _wrap(core_SSDEEP), + "SUB": _wrap(core_SUB), + "scanForEmbeddedFiles": _wrap(core_ScanForEmbeddedFiles), + "scatterChart": _wrap(core_ScatterChart), + "scrypt": _wrap(core_Scrypt), + "seriesChart": _wrap(core_SeriesChart), + "setDifference": _wrap(core_SetDifference), + "setIntersection": _wrap(core_SetIntersection), + "setUnion": _wrap(core_SetUnion), + "shake": _wrap(core_Shake), + "sharpenImage": _wrap(core_SharpenImage), + "showBase64Offsets": _wrap(core_ShowBase64Offsets), + "showOnMap": _wrap(core_ShowOnMap), + "sleep": _wrap(core_Sleep), + "snefru": _wrap(core_Snefru), + "sort": _wrap(core_Sort), + "split": _wrap(core_Split), + "splitColourChannels": _wrap(core_SplitColourChannels), + "standardDeviation": _wrap(core_StandardDeviation), + "streebog": _wrap(core_Streebog), + "strings": _wrap(core_Strings), + "stripHTMLTags": _wrap(core_StripHTMLTags), + "stripHTTPHeaders": _wrap(core_StripHTTPHeaders), + "subsection": _wrap(core_Subsection), + "substitute": _wrap(core_Substitute), + "subtract": _wrap(core_Subtract), + "sum": _wrap(core_Sum), + "swapEndianness": _wrap(core_SwapEndianness), + "symmetricDifference": _wrap(core_SymmetricDifference), + "TCPIPChecksum": _wrap(core_TCPIPChecksum), + "tail": _wrap(core_Tail), + "takeBytes": _wrap(core_TakeBytes), + "tar": _wrap(core_Tar), + "textEncodingBruteForce": _wrap(core_TextEncodingBruteForce), + "toBCD": _wrap(core_ToBCD), + "toBase": _wrap(core_ToBase), + "toBase32": _wrap(core_ToBase32), + "toBase58": _wrap(core_ToBase58), + "toBase62": _wrap(core_ToBase62), + "toBase64": _wrap(core_ToBase64), + "toBase85": _wrap(core_ToBase85), + "toBinary": _wrap(core_ToBinary), + "toBraille": _wrap(core_ToBraille), + "toCamelCase": _wrap(core_ToCamelCase), + "toCaseInsensitiveRegex": _wrap(core_ToCaseInsensitiveRegex), + "toCharcode": _wrap(core_ToCharcode), + "toDecimal": _wrap(core_ToDecimal), + "toHTMLEntity": _wrap(core_ToHTMLEntity), + "toHex": _wrap(core_ToHex), + "toHexContent": _wrap(core_ToHexContent), + "toHexdump": _wrap(core_ToHexdump), + "toKebabCase": _wrap(core_ToKebabCase), + "toLowerCase": _wrap(core_ToLowerCase), + "toMessagePack": _wrap(core_ToMessagePack), + "toMorseCode": _wrap(core_ToMorseCode), + "toOctal": _wrap(core_ToOctal), + "toPunycode": _wrap(core_ToPunycode), + "toQuotedPrintable": _wrap(core_ToQuotedPrintable), + "toSnakeCase": _wrap(core_ToSnakeCase), + "toTable": _wrap(core_ToTable), + "toUNIXTimestamp": _wrap(core_ToUNIXTimestamp), + "toUpperCase": _wrap(core_ToUpperCase), + "translateDateTimeFormat": _wrap(core_TranslateDateTimeFormat), + "tripleDESDecrypt": _wrap(core_TripleDESDecrypt), + "tripleDESEncrypt": _wrap(core_TripleDESEncrypt), + "typex": _wrap(core_Typex), + "UNIXTimestampToWindowsFiletime": _wrap(core_UNIXTimestampToWindowsFiletime), + "URLDecode": _wrap(core_URLDecode), + "URLEncode": _wrap(core_URLEncode), + "unescapeString": _wrap(core_UnescapeString), + "unescapeUnicodeCharacters": _wrap(core_UnescapeUnicodeCharacters), + "unique": _wrap(core_Unique), + "untar": _wrap(core_Untar), + "unzip": _wrap(core_Unzip), + "varIntDecode": _wrap(core_VarIntDecode), + "varIntEncode": _wrap(core_VarIntEncode), + "viewBitPlane": _wrap(core_ViewBitPlane), + "vigenèreDecode": _wrap(core_VigenèreDecode), + "vigenèreEncode": _wrap(core_VigenèreEncode), + "whirlpool": _wrap(core_Whirlpool), + "windowsFiletimeToUNIXTimestamp": _wrap(core_WindowsFiletimeToUNIXTimestamp), + "XKCDRandomNumber": _wrap(core_XKCDRandomNumber), + "XMLBeautify": _wrap(core_XMLBeautify), + "XMLMinify": _wrap(core_XMLMinify), + "XOR": _wrap(core_XOR), + "XORBruteForce": _wrap(core_XORBruteForce), + "XPathExpression": _wrap(core_XPathExpression), + "YARARules": _wrap(core_YARARules), + "zip": _wrap(core_Zip), + "zlibDeflate": _wrap(core_ZlibDeflate), + "zlibInflate": _wrap(core_ZlibInflate), + "fork": _explainExludedFunction("Fork"), + "merge": _explainExludedFunction("Merge"), + "jump": _explainExludedFunction("Jump"), + "conditionalJump": _explainExludedFunction("ConditionalJump"), + "label": _explainExludedFunction("Label"), + "comment": _explainExludedFunction("Comment"), + "javaScriptBeautify": _explainExludedFunction("JavaScriptBeautify"), + "javaScriptMinify": _explainExludedFunction("JavaScriptMinify"), + "javaScriptParser": _explainExludedFunction("JavaScriptParser"), + "syntaxHighlighter": _explainExludedFunction("SyntaxHighlighter"), + }; +} + +const chef = generateChef(); +// Add some additional features to chef object. +chef.help = help; +chef.Dish = NodeDish; + +// Define consts here so we can add to top-level export - wont allow +// export of chef property. +const A1Z26CipherDecode = chef.A1Z26CipherDecode; +const A1Z26CipherEncode = chef.A1Z26CipherEncode; +const ADD = chef.ADD; +const AESDecrypt = chef.AESDecrypt; +const AESEncrypt = chef.AESEncrypt; +const AND = chef.AND; +const addLineNumbers = chef.addLineNumbers; +const addTextToImage = chef.addTextToImage; +const adler32Checksum = chef.adler32Checksum; +const affineCipherDecode = chef.affineCipherDecode; +const affineCipherEncode = chef.affineCipherEncode; +const analyseHash = chef.analyseHash; +const atbashCipher = chef.atbashCipher; +const BLAKE2b = chef.BLAKE2b; +const BLAKE2s = chef.BLAKE2s; +const BSONDeserialise = chef.BSONDeserialise; +const BSONSerialise = chef.BSONSerialise; +const baconCipherDecode = chef.baconCipherDecode; +const baconCipherEncode = chef.baconCipherEncode; +const bcrypt = chef.bcrypt; +const bcryptCompare = chef.bcryptCompare; +const bcryptParse = chef.bcryptParse; +const bifidCipherDecode = chef.bifidCipherDecode; +const bifidCipherEncode = chef.bifidCipherEncode; +const bitShiftLeft = chef.bitShiftLeft; +const bitShiftRight = chef.bitShiftRight; +const blowfishDecrypt = chef.blowfishDecrypt; +const blowfishEncrypt = chef.blowfishEncrypt; +const blurImage = chef.blurImage; +const bombe = chef.bombe; +const bzip2Compress = chef.bzip2Compress; +const bzip2Decompress = chef.bzip2Decompress; +const CRC16Checksum = chef.CRC16Checksum; +const CRC32Checksum = chef.CRC32Checksum; +const CRC8Checksum = chef.CRC8Checksum; +const CSSBeautify = chef.CSSBeautify; +const CSSMinify = chef.CSSMinify; +const CSSSelector = chef.CSSSelector; +const CSVToJSON = chef.CSVToJSON; +const CTPH = chef.CTPH; +const cartesianProduct = chef.cartesianProduct; +const changeIPFormat = chef.changeIPFormat; +const chiSquare = chef.chiSquare; +const citrixCTX1Decode = chef.citrixCTX1Decode; +const citrixCTX1Encode = chef.citrixCTX1Encode; +const comment = chef.comment; +const compareCTPHHashes = chef.compareCTPHHashes; +const compareSSDEEPHashes = chef.compareSSDEEPHashes; +const conditionalJump = chef.conditionalJump; +const containImage = chef.containImage; +const convertArea = chef.convertArea; +const convertCoordinateFormat = chef.convertCoordinateFormat; +const convertDataUnits = chef.convertDataUnits; +const convertDistance = chef.convertDistance; +const convertImageFormat = chef.convertImageFormat; +const convertMass = chef.convertMass; +const convertSpeed = chef.convertSpeed; +const countOccurrences = chef.countOccurrences; +const coverImage = chef.coverImage; +const cropImage = chef.cropImage; +const DESDecrypt = chef.DESDecrypt; +const DESEncrypt = chef.DESEncrypt; +const DNSOverHTTPS = chef.DNSOverHTTPS; +const dechunkHTTPResponse = chef.dechunkHTTPResponse; +const decodeNetBIOSName = chef.decodeNetBIOSName; +const decodeText = chef.decodeText; +const defangIPAddresses = chef.defangIPAddresses; +const defangURL = chef.defangURL; +const deriveEVPKey = chef.deriveEVPKey; +const derivePBKDF2Key = chef.derivePBKDF2Key; +const detectFileType = chef.detectFileType; +const diff = chef.diff; +const disassembleX86 = chef.disassembleX86; +const ditherImage = chef.ditherImage; +const divide = chef.divide; +const dropBytes = chef.dropBytes; +const encodeNetBIOSName = chef.encodeNetBIOSName; +const encodeText = chef.encodeText; +const enigma = chef.enigma; +const entropy = chef.entropy; +const escapeString = chef.escapeString; +const escapeUnicodeCharacters = chef.escapeUnicodeCharacters; +const expandAlphabetRange = chef.expandAlphabetRange; +const extractDates = chef.extractDates; +const extractDomains = chef.extractDomains; +const extractEXIF = chef.extractEXIF; +const extractEmailAddresses = chef.extractEmailAddresses; +const extractFilePaths = chef.extractFilePaths; +const extractFiles = chef.extractFiles; +const extractIPAddresses = chef.extractIPAddresses; +const extractLSB = chef.extractLSB; +const extractMACAddresses = chef.extractMACAddresses; +const extractRGBA = chef.extractRGBA; +const extractURLs = chef.extractURLs; +const filter = chef.filter; +const findReplace = chef.findReplace; +const fletcher16Checksum = chef.fletcher16Checksum; +const fletcher32Checksum = chef.fletcher32Checksum; +const fletcher64Checksum = chef.fletcher64Checksum; +const fletcher8Checksum = chef.fletcher8Checksum; +const flipImage = chef.flipImage; +const fork = chef.fork; +const formatMACAddresses = chef.formatMACAddresses; +const frequencyDistribution = chef.frequencyDistribution; +const fromBCD = chef.fromBCD; +const fromBase = chef.fromBase; +const fromBase32 = chef.fromBase32; +const fromBase58 = chef.fromBase58; +const fromBase62 = chef.fromBase62; +const fromBase64 = chef.fromBase64; +const fromBase85 = chef.fromBase85; +const fromBinary = chef.fromBinary; +const fromBraille = chef.fromBraille; +const fromCaseInsensitiveRegex = chef.fromCaseInsensitiveRegex; +const fromCharcode = chef.fromCharcode; +const fromDecimal = chef.fromDecimal; +const fromHTMLEntity = chef.fromHTMLEntity; +const fromHex = chef.fromHex; +const fromHexContent = chef.fromHexContent; +const fromHexdump = chef.fromHexdump; +const fromMessagePack = chef.fromMessagePack; +const fromMorseCode = chef.fromMorseCode; +const fromOctal = chef.fromOctal; +const fromPunycode = chef.fromPunycode; +const fromQuotedPrintable = chef.fromQuotedPrintable; +const fromUNIXTimestamp = chef.fromUNIXTimestamp; +const GOSTHash = chef.GOSTHash; +const generateAllHashes = chef.generateAllHashes; +const generateHOTP = chef.generateHOTP; +const generateLoremIpsum = chef.generateLoremIpsum; +const generatePGPKeyPair = chef.generatePGPKeyPair; +const generateQRCode = chef.generateQRCode; +const generateTOTP = chef.generateTOTP; +const generateUUID = chef.generateUUID; +const genericCodeBeautify = chef.genericCodeBeautify; +const groupIPAddresses = chef.groupIPAddresses; +const gunzip = chef.gunzip; +const gzip = chef.gzip; +const HAS160 = chef.HAS160; +const HMAC = chef.HMAC; +const HTMLToText = chef.HTMLToText; +const HTTPRequest = chef.HTTPRequest; +const hammingDistance = chef.hammingDistance; +const haversineDistance = chef.haversineDistance; +const head = chef.head; +const heatmapChart = chef.heatmapChart; +const hexDensityChart = chef.hexDensityChart; +const hexToObjectIdentifier = chef.hexToObjectIdentifier; +const hexToPEM = chef.hexToPEM; +const imageBrightnessContrast = chef.imageBrightnessContrast; +const imageFilter = chef.imageFilter; +const imageHueSaturationLightness = chef.imageHueSaturationLightness; +const imageOpacity = chef.imageOpacity; +const indexOfCoincidence = chef.indexOfCoincidence; +const invertImage = chef.invertImage; +const JPathExpression = chef.JPathExpression; +const JSONBeautify = chef.JSONBeautify; +const JSONMinify = chef.JSONMinify; +const JSONToCSV = chef.JSONToCSV; +const JWTDecode = chef.JWTDecode; +const JWTSign = chef.JWTSign; +const JWTVerify = chef.JWTVerify; +const javaScriptBeautify = chef.javaScriptBeautify; +const javaScriptMinify = chef.javaScriptMinify; +const javaScriptParser = chef.javaScriptParser; +const jump = chef.jump; +const keccak = chef.keccak; +const label = chef.label; +const MD2 = chef.MD2; +const MD4 = chef.MD4; +const MD5 = chef.MD5; +const MD6 = chef.MD6; +const magic = chef.magic; +const mean = chef.mean; +const median = chef.median; +const merge = chef.merge; +const microsoftScriptDecoder = chef.microsoftScriptDecoder; +const multipleBombe = chef.multipleBombe; +const multiply = chef.multiply; +const NOT = chef.NOT; +const normaliseImage = chef.normaliseImage; +const numberwang = chef.numberwang; +const OR = chef.OR; +const objectIdentifierToHex = chef.objectIdentifierToHex; +const offsetChecker = chef.offsetChecker; +const opticalCharacterRecognition = chef.opticalCharacterRecognition; +const PEMToHex = chef.PEMToHex; +const PGPDecrypt = chef.PGPDecrypt; +const PGPDecryptAndVerify = chef.PGPDecryptAndVerify; +const PGPEncrypt = chef.PGPEncrypt; +const PGPEncryptAndSign = chef.PGPEncryptAndSign; +const PGPVerify = chef.PGPVerify; +const PHPDeserialize = chef.PHPDeserialize; +const padLines = chef.padLines; +const parseASN1HexString = chef.parseASN1HexString; +const parseColourCode = chef.parseColourCode; +const parseDateTime = chef.parseDateTime; +const parseIPRange = chef.parseIPRange; +const parseIPv4Header = chef.parseIPv4Header; +const parseIPv6Address = chef.parseIPv6Address; +const parseQRCode = chef.parseQRCode; +const parseSSHHostKey = chef.parseSSHHostKey; +const parseTLV = chef.parseTLV; +const parseUDP = chef.parseUDP; +const parseUNIXFilePermissions = chef.parseUNIXFilePermissions; +const parseURI = chef.parseURI; +const parseUserAgent = chef.parseUserAgent; +const parseX509Certificate = chef.parseX509Certificate; +const playMedia = chef.playMedia; +const powerSet = chef.powerSet; +const protobufDecode = chef.protobufDecode; +const pseudoRandomNumberGenerator = chef.pseudoRandomNumberGenerator; +const RC2Decrypt = chef.RC2Decrypt; +const RC2Encrypt = chef.RC2Encrypt; +const RC4 = chef.RC4; +const RC4Drop = chef.RC4Drop; +const RIPEMD = chef.RIPEMD; +const ROT13 = chef.ROT13; +const ROT47 = chef.ROT47; +const randomizeColourPalette = chef.randomizeColourPalette; +const rawDeflate = chef.rawDeflate; +const rawInflate = chef.rawInflate; +const register = chef.register; +const regularExpression = chef.regularExpression; +const removeDiacritics = chef.removeDiacritics; +const removeEXIF = chef.removeEXIF; +const removeLineNumbers = chef.removeLineNumbers; +const removeNullBytes = chef.removeNullBytes; +const removeWhitespace = chef.removeWhitespace; +const renderImage = chef.renderImage; +const renderMarkdown = chef.renderMarkdown; +const resizeImage = chef.resizeImage; +const Return = chef.Return; +const reverse = chef.reverse; +const rotateImage = chef.rotateImage; +const rotateLeft = chef.rotateLeft; +const rotateRight = chef.rotateRight; +const SHA0 = chef.SHA0; +const SHA1 = chef.SHA1; +const SHA2 = chef.SHA2; +const SHA3 = chef.SHA3; +const SQLBeautify = chef.SQLBeautify; +const SQLMinify = chef.SQLMinify; +const SSDEEP = chef.SSDEEP; +const SUB = chef.SUB; +const scanForEmbeddedFiles = chef.scanForEmbeddedFiles; +const scatterChart = chef.scatterChart; +const scrypt = chef.scrypt; +const seriesChart = chef.seriesChart; +const setDifference = chef.setDifference; +const setIntersection = chef.setIntersection; +const setUnion = chef.setUnion; +const shake = chef.shake; +const sharpenImage = chef.sharpenImage; +const showBase64Offsets = chef.showBase64Offsets; +const showOnMap = chef.showOnMap; +const sleep = chef.sleep; +const snefru = chef.snefru; +const sort = chef.sort; +const split = chef.split; +const splitColourChannels = chef.splitColourChannels; +const standardDeviation = chef.standardDeviation; +const streebog = chef.streebog; +const strings = chef.strings; +const stripHTMLTags = chef.stripHTMLTags; +const stripHTTPHeaders = chef.stripHTTPHeaders; +const subsection = chef.subsection; +const substitute = chef.substitute; +const subtract = chef.subtract; +const sum = chef.sum; +const swapEndianness = chef.swapEndianness; +const symmetricDifference = chef.symmetricDifference; +const syntaxHighlighter = chef.syntaxHighlighter; +const TCPIPChecksum = chef.TCPIPChecksum; +const tail = chef.tail; +const takeBytes = chef.takeBytes; +const tar = chef.tar; +const textEncodingBruteForce = chef.textEncodingBruteForce; +const toBCD = chef.toBCD; +const toBase = chef.toBase; +const toBase32 = chef.toBase32; +const toBase58 = chef.toBase58; +const toBase62 = chef.toBase62; +const toBase64 = chef.toBase64; +const toBase85 = chef.toBase85; +const toBinary = chef.toBinary; +const toBraille = chef.toBraille; +const toCamelCase = chef.toCamelCase; +const toCaseInsensitiveRegex = chef.toCaseInsensitiveRegex; +const toCharcode = chef.toCharcode; +const toDecimal = chef.toDecimal; +const toHTMLEntity = chef.toHTMLEntity; +const toHex = chef.toHex; +const toHexContent = chef.toHexContent; +const toHexdump = chef.toHexdump; +const toKebabCase = chef.toKebabCase; +const toLowerCase = chef.toLowerCase; +const toMessagePack = chef.toMessagePack; +const toMorseCode = chef.toMorseCode; +const toOctal = chef.toOctal; +const toPunycode = chef.toPunycode; +const toQuotedPrintable = chef.toQuotedPrintable; +const toSnakeCase = chef.toSnakeCase; +const toTable = chef.toTable; +const toUNIXTimestamp = chef.toUNIXTimestamp; +const toUpperCase = chef.toUpperCase; +const translateDateTimeFormat = chef.translateDateTimeFormat; +const tripleDESDecrypt = chef.tripleDESDecrypt; +const tripleDESEncrypt = chef.tripleDESEncrypt; +const typex = chef.typex; +const UNIXTimestampToWindowsFiletime = chef.UNIXTimestampToWindowsFiletime; +const URLDecode = chef.URLDecode; +const URLEncode = chef.URLEncode; +const unescapeString = chef.unescapeString; +const unescapeUnicodeCharacters = chef.unescapeUnicodeCharacters; +const unique = chef.unique; +const untar = chef.untar; +const unzip = chef.unzip; +const varIntDecode = chef.varIntDecode; +const varIntEncode = chef.varIntEncode; +const viewBitPlane = chef.viewBitPlane; +const vigenèreDecode = chef.vigenèreDecode; +const vigenèreEncode = chef.vigenèreEncode; +const whirlpool = chef.whirlpool; +const windowsFiletimeToUNIXTimestamp = chef.windowsFiletimeToUNIXTimestamp; +const XKCDRandomNumber = chef.XKCDRandomNumber; +const XMLBeautify = chef.XMLBeautify; +const XMLMinify = chef.XMLMinify; +const XOR = chef.XOR; +const XORBruteForce = chef.XORBruteForce; +const XPathExpression = chef.XPathExpression; +const YARARules = chef.YARARules; +const zip = chef.zip; +const zlibDeflate = chef.zlibDeflate; +const zlibInflate = chef.zlibInflate; + + +// Define array of all operations to create register for bake. +const operations = [ + A1Z26CipherDecode, + A1Z26CipherEncode, + ADD, + AESDecrypt, + AESEncrypt, + AND, + addLineNumbers, + addTextToImage, + adler32Checksum, + affineCipherDecode, + affineCipherEncode, + analyseHash, + atbashCipher, + BLAKE2b, + BLAKE2s, + BSONDeserialise, + BSONSerialise, + baconCipherDecode, + baconCipherEncode, + bcrypt, + bcryptCompare, + bcryptParse, + bifidCipherDecode, + bifidCipherEncode, + bitShiftLeft, + bitShiftRight, + blowfishDecrypt, + blowfishEncrypt, + blurImage, + bombe, + bzip2Compress, + bzip2Decompress, + CRC16Checksum, + CRC32Checksum, + CRC8Checksum, + CSSBeautify, + CSSMinify, + CSSSelector, + CSVToJSON, + CTPH, + cartesianProduct, + changeIPFormat, + chiSquare, + citrixCTX1Decode, + citrixCTX1Encode, + comment, + compareCTPHHashes, + compareSSDEEPHashes, + conditionalJump, + containImage, + convertArea, + convertCoordinateFormat, + convertDataUnits, + convertDistance, + convertImageFormat, + convertMass, + convertSpeed, + countOccurrences, + coverImage, + cropImage, + DESDecrypt, + DESEncrypt, + DNSOverHTTPS, + dechunkHTTPResponse, + decodeNetBIOSName, + decodeText, + defangIPAddresses, + defangURL, + deriveEVPKey, + derivePBKDF2Key, + detectFileType, + diff, + disassembleX86, + ditherImage, + divide, + dropBytes, + encodeNetBIOSName, + encodeText, + enigma, + entropy, + escapeString, + escapeUnicodeCharacters, + expandAlphabetRange, + extractDates, + extractDomains, + extractEXIF, + extractEmailAddresses, + extractFilePaths, + extractFiles, + extractIPAddresses, + extractLSB, + extractMACAddresses, + extractRGBA, + extractURLs, + filter, + findReplace, + fletcher16Checksum, + fletcher32Checksum, + fletcher64Checksum, + fletcher8Checksum, + flipImage, + fork, + formatMACAddresses, + frequencyDistribution, + fromBCD, + fromBase, + fromBase32, + fromBase58, + fromBase62, + fromBase64, + fromBase85, + fromBinary, + fromBraille, + fromCaseInsensitiveRegex, + fromCharcode, + fromDecimal, + fromHTMLEntity, + fromHex, + fromHexContent, + fromHexdump, + fromMessagePack, + fromMorseCode, + fromOctal, + fromPunycode, + fromQuotedPrintable, + fromUNIXTimestamp, + GOSTHash, + generateAllHashes, + generateHOTP, + generateLoremIpsum, + generatePGPKeyPair, + generateQRCode, + generateTOTP, + generateUUID, + genericCodeBeautify, + groupIPAddresses, + gunzip, + gzip, + HAS160, + HMAC, + HTMLToText, + HTTPRequest, + hammingDistance, + haversineDistance, + head, + heatmapChart, + hexDensityChart, + hexToObjectIdentifier, + hexToPEM, + imageBrightnessContrast, + imageFilter, + imageHueSaturationLightness, + imageOpacity, + indexOfCoincidence, + invertImage, + JPathExpression, + JSONBeautify, + JSONMinify, + JSONToCSV, + JWTDecode, + JWTSign, + JWTVerify, + javaScriptBeautify, + javaScriptMinify, + javaScriptParser, + jump, + keccak, + label, + MD2, + MD4, + MD5, + MD6, + magic, + mean, + median, + merge, + microsoftScriptDecoder, + multipleBombe, + multiply, + NOT, + normaliseImage, + numberwang, + OR, + objectIdentifierToHex, + offsetChecker, + opticalCharacterRecognition, + PEMToHex, + PGPDecrypt, + PGPDecryptAndVerify, + PGPEncrypt, + PGPEncryptAndSign, + PGPVerify, + PHPDeserialize, + padLines, + parseASN1HexString, + parseColourCode, + parseDateTime, + parseIPRange, + parseIPv4Header, + parseIPv6Address, + parseQRCode, + parseSSHHostKey, + parseTLV, + parseUDP, + parseUNIXFilePermissions, + parseURI, + parseUserAgent, + parseX509Certificate, + playMedia, + powerSet, + protobufDecode, + pseudoRandomNumberGenerator, + RC2Decrypt, + RC2Encrypt, + RC4, + RC4Drop, + RIPEMD, + ROT13, + ROT47, + randomizeColourPalette, + rawDeflate, + rawInflate, + register, + regularExpression, + removeDiacritics, + removeEXIF, + removeLineNumbers, + removeNullBytes, + removeWhitespace, + renderImage, + renderMarkdown, + resizeImage, + Return, + reverse, + rotateImage, + rotateLeft, + rotateRight, + SHA0, + SHA1, + SHA2, + SHA3, + SQLBeautify, + SQLMinify, + SSDEEP, + SUB, + scanForEmbeddedFiles, + scatterChart, + scrypt, + seriesChart, + setDifference, + setIntersection, + setUnion, + shake, + sharpenImage, + showBase64Offsets, + showOnMap, + sleep, + snefru, + sort, + split, + splitColourChannels, + standardDeviation, + streebog, + strings, + stripHTMLTags, + stripHTTPHeaders, + subsection, + substitute, + subtract, + sum, + swapEndianness, + symmetricDifference, + syntaxHighlighter, + TCPIPChecksum, + tail, + takeBytes, + tar, + textEncodingBruteForce, + toBCD, + toBase, + toBase32, + toBase58, + toBase62, + toBase64, + toBase85, + toBinary, + toBraille, + toCamelCase, + toCaseInsensitiveRegex, + toCharcode, + toDecimal, + toHTMLEntity, + toHex, + toHexContent, + toHexdump, + toKebabCase, + toLowerCase, + toMessagePack, + toMorseCode, + toOctal, + toPunycode, + toQuotedPrintable, + toSnakeCase, + toTable, + toUNIXTimestamp, + toUpperCase, + translateDateTimeFormat, + tripleDESDecrypt, + tripleDESEncrypt, + typex, + UNIXTimestampToWindowsFiletime, + URLDecode, + URLEncode, + unescapeString, + unescapeUnicodeCharacters, + unique, + untar, + unzip, + varIntDecode, + varIntEncode, + viewBitPlane, + vigenèreDecode, + vigenèreEncode, + whirlpool, + windowsFiletimeToUNIXTimestamp, + XKCDRandomNumber, + XMLBeautify, + XMLMinify, + XOR, + XORBruteForce, + XPathExpression, + YARARules, + zip, + zlibDeflate, + zlibInflate, +]; + +const prebaked = bake(operations); +chef.bake = prebaked; +export default chef; + +// Operations as top level exports. +export { + operations, + A1Z26CipherDecode, + A1Z26CipherEncode, + ADD, + AESDecrypt, + AESEncrypt, + AND, + addLineNumbers, + addTextToImage, + adler32Checksum, + affineCipherDecode, + affineCipherEncode, + analyseHash, + atbashCipher, + BLAKE2b, + BLAKE2s, + BSONDeserialise, + BSONSerialise, + baconCipherDecode, + baconCipherEncode, + bcrypt, + bcryptCompare, + bcryptParse, + bifidCipherDecode, + bifidCipherEncode, + bitShiftLeft, + bitShiftRight, + blowfishDecrypt, + blowfishEncrypt, + blurImage, + bombe, + bzip2Compress, + bzip2Decompress, + CRC16Checksum, + CRC32Checksum, + CRC8Checksum, + CSSBeautify, + CSSMinify, + CSSSelector, + CSVToJSON, + CTPH, + cartesianProduct, + changeIPFormat, + chiSquare, + citrixCTX1Decode, + citrixCTX1Encode, + comment, + compareCTPHHashes, + compareSSDEEPHashes, + conditionalJump, + containImage, + convertArea, + convertCoordinateFormat, + convertDataUnits, + convertDistance, + convertImageFormat, + convertMass, + convertSpeed, + countOccurrences, + coverImage, + cropImage, + DESDecrypt, + DESEncrypt, + DNSOverHTTPS, + dechunkHTTPResponse, + decodeNetBIOSName, + decodeText, + defangIPAddresses, + defangURL, + deriveEVPKey, + derivePBKDF2Key, + detectFileType, + diff, + disassembleX86, + ditherImage, + divide, + dropBytes, + encodeNetBIOSName, + encodeText, + enigma, + entropy, + escapeString, + escapeUnicodeCharacters, + expandAlphabetRange, + extractDates, + extractDomains, + extractEXIF, + extractEmailAddresses, + extractFilePaths, + extractFiles, + extractIPAddresses, + extractLSB, + extractMACAddresses, + extractRGBA, + extractURLs, + filter, + findReplace, + fletcher16Checksum, + fletcher32Checksum, + fletcher64Checksum, + fletcher8Checksum, + flipImage, + fork, + formatMACAddresses, + frequencyDistribution, + fromBCD, + fromBase, + fromBase32, + fromBase58, + fromBase62, + fromBase64, + fromBase85, + fromBinary, + fromBraille, + fromCaseInsensitiveRegex, + fromCharcode, + fromDecimal, + fromHTMLEntity, + fromHex, + fromHexContent, + fromHexdump, + fromMessagePack, + fromMorseCode, + fromOctal, + fromPunycode, + fromQuotedPrintable, + fromUNIXTimestamp, + GOSTHash, + generateAllHashes, + generateHOTP, + generateLoremIpsum, + generatePGPKeyPair, + generateQRCode, + generateTOTP, + generateUUID, + genericCodeBeautify, + groupIPAddresses, + gunzip, + gzip, + HAS160, + HMAC, + HTMLToText, + HTTPRequest, + hammingDistance, + haversineDistance, + head, + heatmapChart, + hexDensityChart, + hexToObjectIdentifier, + hexToPEM, + imageBrightnessContrast, + imageFilter, + imageHueSaturationLightness, + imageOpacity, + indexOfCoincidence, + invertImage, + JPathExpression, + JSONBeautify, + JSONMinify, + JSONToCSV, + JWTDecode, + JWTSign, + JWTVerify, + javaScriptBeautify, + javaScriptMinify, + javaScriptParser, + jump, + keccak, + label, + MD2, + MD4, + MD5, + MD6, + magic, + mean, + median, + merge, + microsoftScriptDecoder, + multipleBombe, + multiply, + NOT, + normaliseImage, + numberwang, + OR, + objectIdentifierToHex, + offsetChecker, + opticalCharacterRecognition, + PEMToHex, + PGPDecrypt, + PGPDecryptAndVerify, + PGPEncrypt, + PGPEncryptAndSign, + PGPVerify, + PHPDeserialize, + padLines, + parseASN1HexString, + parseColourCode, + parseDateTime, + parseIPRange, + parseIPv4Header, + parseIPv6Address, + parseQRCode, + parseSSHHostKey, + parseTLV, + parseUDP, + parseUNIXFilePermissions, + parseURI, + parseUserAgent, + parseX509Certificate, + playMedia, + powerSet, + protobufDecode, + pseudoRandomNumberGenerator, + RC2Decrypt, + RC2Encrypt, + RC4, + RC4Drop, + RIPEMD, + ROT13, + ROT47, + randomizeColourPalette, + rawDeflate, + rawInflate, + register, + regularExpression, + removeDiacritics, + removeEXIF, + removeLineNumbers, + removeNullBytes, + removeWhitespace, + renderImage, + renderMarkdown, + resizeImage, + Return, + reverse, + rotateImage, + rotateLeft, + rotateRight, + SHA0, + SHA1, + SHA2, + SHA3, + SQLBeautify, + SQLMinify, + SSDEEP, + SUB, + scanForEmbeddedFiles, + scatterChart, + scrypt, + seriesChart, + setDifference, + setIntersection, + setUnion, + shake, + sharpenImage, + showBase64Offsets, + showOnMap, + sleep, + snefru, + sort, + split, + splitColourChannels, + standardDeviation, + streebog, + strings, + stripHTMLTags, + stripHTTPHeaders, + subsection, + substitute, + subtract, + sum, + swapEndianness, + symmetricDifference, + syntaxHighlighter, + TCPIPChecksum, + tail, + takeBytes, + tar, + textEncodingBruteForce, + toBCD, + toBase, + toBase32, + toBase58, + toBase62, + toBase64, + toBase85, + toBinary, + toBraille, + toCamelCase, + toCaseInsensitiveRegex, + toCharcode, + toDecimal, + toHTMLEntity, + toHex, + toHexContent, + toHexdump, + toKebabCase, + toLowerCase, + toMessagePack, + toMorseCode, + toOctal, + toPunycode, + toQuotedPrintable, + toSnakeCase, + toTable, + toUNIXTimestamp, + toUpperCase, + translateDateTimeFormat, + tripleDESDecrypt, + tripleDESEncrypt, + typex, + UNIXTimestampToWindowsFiletime, + URLDecode, + URLEncode, + unescapeString, + unescapeUnicodeCharacters, + unique, + untar, + unzip, + varIntDecode, + varIntEncode, + viewBitPlane, + vigenèreDecode, + vigenèreEncode, + whirlpool, + windowsFiletimeToUNIXTimestamp, + XKCDRandomNumber, + XMLBeautify, + XMLMinify, + XOR, + XORBruteForce, + XPathExpression, + YARARules, + zip, + zlibDeflate, + zlibInflate, + NodeDish as Dish, + prebaked as bake, + help, + OperationError, + ExcludedOperationError, + DishError, +}; From 912d63067cd5a40b538ef136a410f44d0f9842e8 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Thu, 26 Sep 2019 23:02:03 +0100 Subject: [PATCH 0023/1024] Fix #578 by refactoring and implementing the modes --- src/core/lib/Blowfish.mjs | 436 ++++++++++++++++ src/core/operations/BlowfishDecrypt.mjs | 44 +- src/core/operations/BlowfishEncrypt.mjs | 43 +- src/core/vendor/Blowfish.mjs | 652 ------------------------ 4 files changed, 470 insertions(+), 705 deletions(-) create mode 100644 src/core/lib/Blowfish.mjs delete mode 100644 src/core/vendor/Blowfish.mjs diff --git a/src/core/lib/Blowfish.mjs b/src/core/lib/Blowfish.mjs new file mode 100644 index 00000000..5ecc3641 --- /dev/null +++ b/src/core/lib/Blowfish.mjs @@ -0,0 +1,436 @@ +/** + Blowfish.js from Dojo Toolkit 1.8.1 (https://github.com/dojo/dojox/tree/1.8/encoding) + Extracted by Sladex (xslade@gmail.com) + Shoehorned into working with mjs for CyberChef by Matt C (matt@artemisbot.uk) + Refactored and implemented modes support by cbeuw (cbeuw.andy@gmail.com) + + @license BSD + ======================================================================== + The "New" BSD License: + ********************** + + Copyright (c) 2005-2016, The Dojo Foundation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +const crypto = {}; + +import forge from "node-forge/dist/forge.min.js"; + + +/* dojo-release-1.8.1/dojo/_base/lang.js.uncompressed.js */ + +const lang = {}; +lang.isString = function(it) { + // summary: + // Return true if it is a String + // it: anything + // Item to test. + return (typeof it == "string" || it instanceof String); // Boolean +}; + + +/* dojo-release-1.8.1/dojo/_base/array.js.uncompressed.js */ + +const arrayUtil = {}; +arrayUtil.map = function(arr, callback, thisObject, Ctr) { + // summary: + // applies callback to each element of arr and returns + // an Array with the results + // arr: Array|String + // the array to iterate on. If a string, operates on + // individual characters. + // callback: Function + // a function is invoked with three arguments, (item, index, + // array), and returns a value + // thisObject: Object? + // may be used to scope the call to callback + // returns: Array + // description: + // This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map + // example: + // | // returns [2, 3, 4, 5] + // | array.map([1, 2, 3, 4], function(item){ return item+1 }); + + // TODO: why do we have a non-standard signature here? do we need "Ctr"? + let i = 0; + const l = arr && arr.length || 0, out = new (Ctr || Array)(l); + if (l && typeof arr == "string") arr = arr.split(""); + if (thisObject) { + for (; i < l; ++i) { + out[i] = callback.call(thisObject, arr[i], i, arr); + } + } else { + for (; i < l; ++i) { + out[i] = callback(arr[i], i, arr); + } + } + return out; // Array +}; + +/* dojo-release-1.8.1/dojox/encoding/crypto/Blowfish.js.uncompressed.js */ + +/* Blowfish + * Created based on the C# implementation by Marcus Hahn (http://www.hotpixel.net/) + * Unsigned math based on Paul Johnstone and Peter Wood patches. + * 2005-12-08 + */ +const boxes={ + p: [ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b + ], + s0: [ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + ], + s1: [ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 + ], + s2: [ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 + ], + s3: [ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + ] +}; + + +//////////////////////////////////////////////////////////////////////////// +// fixes based on patch submitted by Peter Wood (#5791) +const xor = function(x, y) { + return (((x>>0x10)^(y>>0x10))<<0x10)|(((x&0xffff)^(y&0xffff))&0xffff); +}; + + +const f = function(v, box) { + const d=box.s3[v&0xff]; v>>=8; + const c=box.s2[v&0xff]; v>>=8; + const b=box.s1[v&0xff]; v>>=8; + const a=box.s0[v&0xff]; + + let r = (((a>>0x10)+(b>>0x10)+(((a&0xffff)+(b&0xffff))>>0x10))<<0x10)|(((a&0xffff)+(b&0xffff))&0xffff); + r = (((r>>0x10)^(c>>0x10))<<0x10)|(((r&0xffff)^(c&0xffff))&0xffff); + return (((r>>0x10)+(d>>0x10)+(((r&0xffff)+(d&0xffff))>>0x10))<<0x10)|(((r&0xffff)+(d&0xffff))&0xffff); +}; + + +const eb = function(o, box) { + // TODO: see if this can't be made more efficient + let l=o.left; + let r=o.right; + l=xor(l, box.p[0]); + r=xor(r, xor(f(l, box), box.p[1])); + l=xor(l, xor(f(r, box), box.p[2])); + r=xor(r, xor(f(l, box), box.p[3])); + l=xor(l, xor(f(r, box), box.p[4])); + r=xor(r, xor(f(l, box), box.p[5])); + l=xor(l, xor(f(r, box), box.p[6])); + r=xor(r, xor(f(l, box), box.p[7])); + l=xor(l, xor(f(r, box), box.p[8])); + r=xor(r, xor(f(l, box), box.p[9])); + l=xor(l, xor(f(r, box), box.p[10])); + r=xor(r, xor(f(l, box), box.p[11])); + l=xor(l, xor(f(r, box), box.p[12])); + r=xor(r, xor(f(l, box), box.p[13])); + l=xor(l, xor(f(r, box), box.p[14])); + r=xor(r, xor(f(l, box), box.p[15])); + l=xor(l, xor(f(r, box), box.p[16])); + o.right=l; + o.left=xor(r, box.p[17]); +}; + +const db = function(o, box) { + let l=o.left; + let r=o.right; + l=xor(l, box.p[17]); + r=xor(r, xor(f(l, box), box.p[16])); + l=xor(l, xor(f(r, box), box.p[15])); + r=xor(r, xor(f(l, box), box.p[14])); + l=xor(l, xor(f(r, box), box.p[13])); + r=xor(r, xor(f(l, box), box.p[12])); + l=xor(l, xor(f(r, box), box.p[11])); + r=xor(r, xor(f(l, box), box.p[10])); + l=xor(l, xor(f(r, box), box.p[9])); + r=xor(r, xor(f(l, box), box.p[8])); + l=xor(l, xor(f(r, box), box.p[7])); + r=xor(r, xor(f(l, box), box.p[6])); + l=xor(l, xor(f(r, box), box.p[5])); + r=xor(r, xor(f(l, box), box.p[4])); + l=xor(l, xor(f(r, box), box.p[3])); + r=xor(r, xor(f(l, box), box.p[2])); + l=xor(l, xor(f(r, box), box.p[1])); + o.right=l; + o.left=xor(r, box.p[0]); +}; + +const encryptBlock=function(inblock, outblock, box) { + const o = {}; + o.left=inblock[0]; + o.right=inblock[1]; + eb(o, box); + outblock[0] = o.left; + outblock[1] = o.right; +}; + +const decryptBlock=function(inblock, outblock, box) { + const o= {}; + o.left=inblock[0]; + o.right=inblock[1]; + db(o, box); + outblock[0] = o.left; + outblock[1] = o.right; +}; + +crypto.Blowfish = new function() { + this.createCipher=function(key, modeName) { + return new forge.cipher.BlockCipher({ + algorithm: new Blowfish.Algorithm(key, modeName), + key: key, + decrypt: false + }); + }; + + this.createDecipher=function(key, modeName) { + return new forge.cipher.BlockCipher({ + algorithm: new Blowfish.Algorithm(key, modeName), + key: key, + decrypt: true + }); + }; +}(); + + +crypto.Blowfish.Algorithm=function(key, modeName) { + this.initialize({key: key}); + const _box = this.box; + const modeOption = { + blockSize: 8, + cipher: { + encrypt: function(inblock, outblock) { + encryptBlock(inblock, outblock, _box); + }, + decrypt: function(inblock, outblock) { + decryptBlock(inblock, outblock, _box); + }, + } + }; + + switch (modeName.toLowerCase()) { + case "ecb": + this.mode=new forge.cipher.modes.ecb(modeOption); + break; + case "cbc": + this.mode=new forge.cipher.modes.cbc(modeOption); + break; + case "cfb": + this.mode=new forge.cipher.modes.cfb(modeOption); + break; + case "ofb": + this.mode=new forge.cipher.modes.ofb(modeOption); + break; + case "ctr": + this.mode=new forge.cipher.modes.ctr(modeOption); + break; + default: + this.mode=new forge.cipher.modes.ecb(modeOption); + break; + } + +}; + +crypto.Blowfish.Algorithm.prototype.initialize=function(options) { + const POW8=Math.pow(2, 8); + + let k=options.key; + if (lang.isString(k)) { + k = arrayUtil.map(k.split(""), function(item) { + return item.charCodeAt(0) & 0xff; + }); + } + + // init the boxes + let pos=0, data=0; + const res={ left: 0, right: 0 }; + const box = { + p: arrayUtil.map(boxes.p.slice(0), function(item) { + const l=k.length; + for (let j=0; j<4; j++) { + data=(data*POW8)|k[pos++ % l]; + } + return (((item>>0x10)^(data>>0x10))<<0x10)|(((item&0xffff)^(data&0xffff))&0xffff); + }), + s0: boxes.s0.slice(0), + s1: boxes.s1.slice(0), + s2: boxes.s2.slice(0), + s3: boxes.s3.slice(0) + }; + + // encrypt p and the s boxes + for (let i=0, l=box.p.length; i>>18)&0x3f)); - s.push(tab.charAt((t>>>12)&0x3f)); - s.push(tab.charAt((t>>>6)&0x3f)); - s.push(tab.charAt(t&0x3f)); - } - // deal with trailers, based on patch from Peter Wood. - switch(rm){ - case 2:{ - var t=ba[i++]<<16|ba[i++]<<8; - s.push(tab.charAt((t>>>18)&0x3f)); - s.push(tab.charAt((t>>>12)&0x3f)); - s.push(tab.charAt((t>>>6)&0x3f)); - s.push(p); - break; - } - case 1:{ - var t=ba[i++]<<16; - s.push(tab.charAt((t>>>18)&0x3f)); - s.push(tab.charAt((t>>>12)&0x3f)); - s.push(p); - s.push(p); - break; - } - } - return s.join(""); // string -}; - -base64.decode=function(/* string */str){ - // summary: - // Convert a base64-encoded string to an array of bytes - var s=str.split(""), out=[]; - var l=s.length; - while(s[--l]==p){ } // strip off trailing padding - for (var i=0; i>>16)&0xff); - out.push((t>>>8)&0xff); - out.push(t&0xff); - } - // strip off any null bytes - while(out[out.length-1]==0){ out.pop(); } - return out; // byte[] -}; - - - -/* dojo-release-1.8.1/dojo/_base/lang.js.uncompressed.js */ - -var lang = {}; -lang.isString = function(it){ - // summary: - // Return true if it is a String - // it: anything - // Item to test. - return (typeof it == "string" || it instanceof String); // Boolean -}; - - - -/* dojo-release-1.8.1/dojo/_base/array.js.uncompressed.js */ - -var arrayUtil = {}; -arrayUtil.map = function(arr, callback, thisObject, Ctr){ - // summary: - // applies callback to each element of arr and returns - // an Array with the results - // arr: Array|String - // the array to iterate on. If a string, operates on - // individual characters. - // callback: Function|String - // a function is invoked with three arguments, (item, index, - // array), and returns a value - // thisObject: Object? - // may be used to scope the call to callback - // returns: Array - // description: - // This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map - // example: - // | // returns [2, 3, 4, 5] - // | array.map([1, 2, 3, 4], function(item){ return item+1 }); - - // TODO: why do we have a non-standard signature here? do we need "Ctr"? - var i = 0, l = arr && arr.length || 0, out = new (Ctr || Array)(l); - if(l && typeof arr == "string") arr = arr.split(""); - if(typeof callback == "string") callback = cache[callback] || buildFn(callback); - if(thisObject){ - for(; i < l; ++i){ - out[i] = callback.call(thisObject, arr[i], i, arr); - } - }else{ - for(; i < l; ++i){ - out[i] = callback(arr[i], i, arr); - } - } - return out; // Array -}; - - - -/* dojo-release-1.8.1/dojox/encoding/crypto/Blowfish.js.uncompressed.js */ - -/* Blowfish - * Created based on the C# implementation by Marcus Hahn (http://www.hotpixel.net/) - * Unsigned math based on Paul Johnstone and Peter Wood patches. - * 2005-12-08 - */ -crypto.Blowfish = new function(){ - // summary: - // Object for doing Blowfish encryption/decryption. - var POW2=Math.pow(2,2); - var POW3=Math.pow(2,3); - var POW4=Math.pow(2,4); - var POW8=Math.pow(2,8); - var POW16=Math.pow(2,16); - var POW24=Math.pow(2,24); - var iv=null; // CBC mode initialization vector - var boxes={ - p:[ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b - ], - s0:[ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a - ], - s1:[ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 - ], - s2:[ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 - ], - s3:[ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 - ] - } -//////////////////////////////////////////////////////////////////////////// -// fixes based on patch submitted by Peter Wood (#5791) - function add(x,y){ - return (((x>>0x10)+(y>>0x10)+(((x&0xffff)+(y&0xffff))>>0x10))<<0x10)|(((x&0xffff)+(y&0xffff))&0xffff); - } - function xor(x,y){ - return (((x>>0x10)^(y>>0x10))<<0x10)|(((x&0xffff)^(y&0xffff))&0xffff); - } - - function $(v, box){ - var d=box.s3[v&0xff]; v>>=8; - var c=box.s2[v&0xff]; v>>=8; - var b=box.s1[v&0xff]; v>>=8; - var a=box.s0[v&0xff]; - - var r = (((a>>0x10)+(b>>0x10)+(((a&0xffff)+(b&0xffff))>>0x10))<<0x10)|(((a&0xffff)+(b&0xffff))&0xffff); - r = (((r>>0x10)^(c>>0x10))<<0x10)|(((r&0xffff)^(c&0xffff))&0xffff); - return (((r>>0x10)+(d>>0x10)+(((r&0xffff)+(d&0xffff))>>0x10))<<0x10)|(((r&0xffff)+(d&0xffff))&0xffff); - } -//////////////////////////////////////////////////////////////////////////// - function eb(o, box){ - // TODO: see if this can't be made more efficient - var l=o.left; - var r=o.right; - l=xor(l,box.p[0]); - r=xor(r,xor($(l,box),box.p[1])); - l=xor(l,xor($(r,box),box.p[2])); - r=xor(r,xor($(l,box),box.p[3])); - l=xor(l,xor($(r,box),box.p[4])); - r=xor(r,xor($(l,box),box.p[5])); - l=xor(l,xor($(r,box),box.p[6])); - r=xor(r,xor($(l,box),box.p[7])); - l=xor(l,xor($(r,box),box.p[8])); - r=xor(r,xor($(l,box),box.p[9])); - l=xor(l,xor($(r,box),box.p[10])); - r=xor(r,xor($(l,box),box.p[11])); - l=xor(l,xor($(r,box),box.p[12])); - r=xor(r,xor($(l,box),box.p[13])); - l=xor(l,xor($(r,box),box.p[14])); - r=xor(r,xor($(l,box),box.p[15])); - l=xor(l,xor($(r,box),box.p[16])); - o.right=l; - o.left=xor(r,box.p[17]); - } - - function db(o, box){ - var l=o.left; - var r=o.right; - l=xor(l,box.p[17]); - r=xor(r,xor($(l,box),box.p[16])); - l=xor(l,xor($(r,box),box.p[15])); - r=xor(r,xor($(l,box),box.p[14])); - l=xor(l,xor($(r,box),box.p[13])); - r=xor(r,xor($(l,box),box.p[12])); - l=xor(l,xor($(r,box),box.p[11])); - r=xor(r,xor($(l,box),box.p[10])); - l=xor(l,xor($(r,box),box.p[9])); - r=xor(r,xor($(l,box),box.p[8])); - l=xor(l,xor($(r,box),box.p[7])); - r=xor(r,xor($(l,box),box.p[6])); - l=xor(l,xor($(r,box),box.p[5])); - r=xor(r,xor($(l,box),box.p[4])); - l=xor(l,xor($(r,box),box.p[3])); - r=xor(r,xor($(l,box),box.p[2])); - l=xor(l,xor($(r,box),box.p[1])); - o.right=l; - o.left=xor(r,box.p[0]); - } - - // Note that we aren't caching contexts here; it might take a little longer - // but we should be more secure this way. - function init(key){ - var k=key; - if(lang.isString(k)){ - k = arrayUtil.map(k.split(""), function(item){ - return item.charCodeAt(0) & 0xff; - }); - } - - // init the boxes - var pos=0, data=0, res={ left:0, right:0 }, i, j, l; - var box = { - p: arrayUtil.map(boxes.p.slice(0), function(item){ - var l=k.length, j; - for(j=0; j<4; j++){ data=(data*POW8)|k[pos++ % l]; } - return (((item>>0x10)^(data>>0x10))<<0x10)|(((item&0xffff)^(data&0xffff))&0xffff); - }), - s0:boxes.s0.slice(0), - s1:boxes.s1.slice(0), - s2:boxes.s2.slice(0), - s3:boxes.s3.slice(0) - }; - - // encrypt p and the s boxes - for(i=0, l=box.p.length; i> 3, pos=0, o={}, isCBC=(mode==crypto.cipherModes.CBC); - var vector={left:iv.left||null, right:iv.right||null}; - for(var i=0; i>0x10)^(vector.left>>0x10))<<0x10)|(((o.left&0xffff)^(vector.left&0xffff))&0xffff); - o.right=(((o.right>>0x10)^(vector.right>>0x10))<<0x10)|(((o.right&0xffff)^(vector.right&0xffff))&0xffff); - } - - eb(o, bx); // encrypt the block - - if(isCBC){ - vector.left=o.left; - vector.right=o.right; - } - - cipher.push((o.left>>24)&0xff); - cipher.push((o.left>>16)&0xff); - cipher.push((o.left>>8)&0xff); - cipher.push(o.left&0xff); - cipher.push((o.right>>24)&0xff); - cipher.push((o.right>>16)&0xff); - cipher.push((o.right>>8)&0xff); - cipher.push(o.right&0xff); - pos+=8; - } - - switch(out){ - case crypto.outputTypes.Hex:{ - return arrayUtil.map(cipher, function(item){ - return (item<=0xf?'0':'')+item.toString(16); - }).join(""); // string - } - case crypto.outputTypes.String:{ - return cipher.join(""); // string - } - case crypto.outputTypes.Raw:{ - return cipher; // array - } - default:{ - return base64.encode(cipher); // string - } - } - }; - - this.decrypt = function(/* string */ciphertext, /* string */key, /* object? */ao){ - // summary: - // decrypts ciphertext using key; allows specification of how ciphertext is encoded via ao. - var ip=crypto.outputTypes.Base64; - var mode=crypto.cipherModes.ECB; - if (ao){ - if (ao.outputType) ip=ao.outputType; - if (ao.cipherMode) mode=ao.cipherMode; - } - var bx = init(key); - var pt=[]; - - var c=null; - switch(ip){ - case crypto.outputTypes.Hex:{ - c = []; - for(var i=0, l=ciphertext.length-1; i> 3, pos=0, o={}, isCBC=(mode==crypto.cipherModes.CBC); - var vector={left:iv.left||null, right:iv.right||null}; - for(var i=0; i>0x10)^(vector.left>>0x10))<<0x10)|(((o.left&0xffff)^(vector.left&0xffff))&0xffff); - o.right=(((o.right>>0x10)^(vector.right>>0x10))<<0x10)|(((o.right&0xffff)^(vector.right&0xffff))&0xffff); - vector.left=left; - vector.right=right; - } - - pt.push((o.left>>24)&0xff); - pt.push((o.left>>16)&0xff); - pt.push((o.left>>8)&0xff); - pt.push(o.left&0xff); - pt.push((o.right>>24)&0xff); - pt.push((o.right>>16)&0xff); - pt.push((o.right>>8)&0xff); - pt.push(o.right&0xff); - pos+=8; - } - - // check for padding, and remove. - if(pt[pt.length-1]==pt[pt.length-2]||pt[pt.length-1]==0x01){ - var n=pt[pt.length-1]; - pt.splice(pt.length-n, n); - } - - // convert to string - return arrayUtil.map(pt, function(item){ - return String.fromCharCode(item); - }).join(""); // string - }; - - this.setIV("0000000000000000", crypto.outputTypes.Hex); -}(); - -export const Blowfish = crypto.Blowfish; From 4d7988b78ebe0d8ab3238c3f30efb673e80ca4fb Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 13:12:10 +0100 Subject: [PATCH 0024/1024] Fixed RSA key generation --- src/core/operations/GenerateRSAKeyPair.mjs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/core/operations/GenerateRSAKeyPair.mjs b/src/core/operations/GenerateRSAKeyPair.mjs index 64ff29d2..951c2667 100644 --- a/src/core/operations/GenerateRSAKeyPair.mjs +++ b/src/core/operations/GenerateRSAKeyPair.mjs @@ -1,12 +1,11 @@ /** * @author gchq77703 [] * @copyright Crown Copyright 2018 - ` * @license Apache-2.0 + * @license Apache-2.0 */ import Operation from "../Operation"; import forge from "node-forge/dist/forge.min.js"; -import PrimeWorker from "node-forge/dist/prime.worker.min.js"; /** * Generate RSA Key Pair operation @@ -54,13 +53,9 @@ class GenerateRSAKeyPair extends Operation { */ async run(input, args) { const [keyLength, outputFormat] = args; - let workerScript; return new Promise((resolve, reject) => { - if (ENVIRONMENT_IS_WORKER || window) { - workerScript = ENVIRONMENT_IS_WORKER() ? self.URL.createObjectURL(new Blob([PrimeWorker])) : window.URL.createObjectURL(new Blob([PrimeWorker])); - } - forge.pki.rsa.generateKeyPair({ bits: Number(keyLength), workers: 2, workerScript}, (err, keypair) => { + forge.pki.rsa.generateKeyPair({ bits: Number(keyLength), workers: -1}, (err, keypair) => { if (err) return reject(err); let result; From a8dc69103308e419abdb7a867eb2c9a9c9727be7 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 13:51:38 +0100 Subject: [PATCH 0025/1024] Try using github actions Gonna monch this commit once i know it works --- .github/workflows/main.yml | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..6861528a --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,40 @@ +name: Test + +on: [push] + +jobs: + test: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Setup + run: | + npm i + npm i -g grunt + export NODE_OPTIONS=--max_old_space_size=2048 + - name: Lint + run: grunt lint + - name: Unit Tests + run: | + grunt test + grunt testnodeconsumer + - name: UI Tests + run: xvfb-run --server-args="-screen 0 1200x800x24" grunt testui + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Setup + run: | + npm i + npm i -g grunt + export NODE_OPTIONS=--max_old_space_size=2048 + - name: Build & Deploy + uses: JamesIves/github-pages-deploy-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: build/prod + BUILD_SCRIPT: grunt prod From 85906cafbb9422af3a544347cc918c38b047798d Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 13:56:26 +0100 Subject: [PATCH 0026/1024] Adjustment --- .github/workflows/main.yml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6861528a..d971756d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: Test +name: Test & Deploy on: [push] @@ -12,29 +12,19 @@ jobs: - name: Setup run: | npm i - npm i -g grunt export NODE_OPTIONS=--max_old_space_size=2048 - name: Lint - run: grunt lint + run: npx grunt lint - name: Unit Tests run: | - grunt test - grunt testnodeconsumer + npx grunt test + npx grunt testnodeconsumer - name: UI Tests - run: xvfb-run --server-args="-screen 0 1200x800x24" grunt testui - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: Setup - run: | - npm i - npm i -g grunt - export NODE_OPTIONS=--max_old_space_size=2048 + run: xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - name: Build & Deploy uses: JamesIves/github-pages-deploy-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages FOLDER: build/prod - BUILD_SCRIPT: grunt prod + BUILD_SCRIPT: npx grunt prod From 4e0d97f2c1dfed634d680b08e8d39d42030e1605 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 14:02:22 +0100 Subject: [PATCH 0027/1024] Added sudo --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d971756d..6d012505 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,7 @@ jobs: - name: Unit Tests run: | npx grunt test - npx grunt testnodeconsumer + sudo npx grunt testnodeconsumer - name: UI Tests run: xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - name: Build & Deploy From 4c737475d4ec5ae1de7812659a21cbbb5ea81d80 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 14:08:23 +0100 Subject: [PATCH 0028/1024] Forgot to run prod build --- .github/workflows/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6d012505..3dae7b2d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,12 +19,13 @@ jobs: run: | npx grunt test sudo npx grunt testnodeconsumer + - name: Production Build + run: npx grunt prod - name: UI Tests run: xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - - name: Build & Deploy + - name: Deploy uses: JamesIves/github-pages-deploy-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages FOLDER: build/prod - BUILD_SCRIPT: npx grunt prod From 123a0ccd700335d68912d180474e696d2a94e691 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 30 Sep 2019 14:41:14 +0100 Subject: [PATCH 0029/1024] Changed pages workflow --- .github/workflows/main.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3dae7b2d..ed0e59a8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,9 @@ name: Test & Deploy -on: [push] +on: + push: + branches: + - master jobs: test: @@ -8,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@master - name: Setup run: | npm i @@ -24,8 +27,8 @@ jobs: - name: UI Tests run: xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - name: Deploy - uses: JamesIves/github-pages-deploy-action@master + uses: peaceiris/actions-gh-pages@v2.4.0 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: gh-pages - FOLDER: build/prod + PERSONAL_TOKEN: ${{ secrets.ACCESS_TOKEN }} + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./build/prod From 294aa826f1e76e2d591f22d36a36a00046cf1cdb Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 22:53:10 +0100 Subject: [PATCH 0030/1024] Remove base64 options --- src/core/operations/BlowfishDecrypt.mjs | 2 +- src/core/operations/BlowfishEncrypt.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/BlowfishDecrypt.mjs b/src/core/operations/BlowfishDecrypt.mjs index 9f45e4d6..e51e96a5 100644 --- a/src/core/operations/BlowfishDecrypt.mjs +++ b/src/core/operations/BlowfishDecrypt.mjs @@ -48,7 +48,7 @@ class BlowfishDecrypt extends Operation { { "name": "Input", "type": "option", - "value": ["Hex", "Base64", "Raw"] + "value": ["Hex", "Raw"] }, { "name": "Output", diff --git a/src/core/operations/BlowfishEncrypt.mjs b/src/core/operations/BlowfishEncrypt.mjs index aa4022cc..ccb7498a 100644 --- a/src/core/operations/BlowfishEncrypt.mjs +++ b/src/core/operations/BlowfishEncrypt.mjs @@ -53,7 +53,7 @@ class BlowfishEncrypt extends Operation { { "name": "Output", "type": "option", - "value": ["Hex", "Base64", "Raw"] + "value": ["Hex", "Raw"] } ]; } From 458307f5edce6effe57bb4f55c262e51e97ed517 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 22:53:50 +0100 Subject: [PATCH 0031/1024] Add invalid key length error message --- src/core/operations/BlowfishDecrypt.mjs | 6 +++++- src/core/operations/BlowfishEncrypt.mjs | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/operations/BlowfishDecrypt.mjs b/src/core/operations/BlowfishDecrypt.mjs index e51e96a5..1285221c 100644 --- a/src/core/operations/BlowfishDecrypt.mjs +++ b/src/core/operations/BlowfishDecrypt.mjs @@ -70,7 +70,11 @@ class BlowfishDecrypt extends Operation { inputType = args[3], outputType = args[4]; - if (key.length === 0) throw new OperationError("Enter a key"); + if (key.length !== 8) { + throw new OperationError(`Invalid key length: ${key.length} bytes + +Blowfish uses a key length of 8 bytes (64 bits).`); + } input = Utils.convertToByteString(input, inputType); diff --git a/src/core/operations/BlowfishEncrypt.mjs b/src/core/operations/BlowfishEncrypt.mjs index ccb7498a..e7e558cd 100644 --- a/src/core/operations/BlowfishEncrypt.mjs +++ b/src/core/operations/BlowfishEncrypt.mjs @@ -70,7 +70,11 @@ class BlowfishEncrypt extends Operation { inputType = args[3], outputType = args[4]; - if (key.length === 0) throw new OperationError("Enter a key"); + if (key.length !== 8) { + throw new OperationError(`Invalid key length: ${key.length} bytes + +Blowfish uses a key length of 8 bytes (64 bits).`); + } input = Utils.convertToByteString(input, inputType); From 7f6d8bffe3f99ce71d48bbd4f96a045a0d03bdb6 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 22:54:21 +0100 Subject: [PATCH 0032/1024] Remove unnecessary IV adaptation --- src/core/operations/BlowfishDecrypt.mjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/core/operations/BlowfishDecrypt.mjs b/src/core/operations/BlowfishDecrypt.mjs index 1285221c..07b6a0ff 100644 --- a/src/core/operations/BlowfishDecrypt.mjs +++ b/src/core/operations/BlowfishDecrypt.mjs @@ -79,9 +79,7 @@ Blowfish uses a key length of 8 bytes (64 bits).`); input = Utils.convertToByteString(input, inputType); const decipher = Blowfish.createDecipher(key, mode); - decipher.start({ - iv: iv.length === 0 ? "" : iv, - }); + decipher.start({iv: iv}); decipher.update(forge.util.createBuffer(input)); const result = decipher.finish(); From 6b70f77dcdccf36d9bab06750d3aaa439492acf8 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 23:08:32 +0100 Subject: [PATCH 0033/1024] Add tests --- tests/operations/tests/Crypt.mjs | 354 +++++++++++++++++++++++++++++++ 1 file changed, 354 insertions(+) diff --git a/tests/operations/tests/Crypt.mjs b/tests/operations/tests/Crypt.mjs index 1db8093f..7bd9ca40 100644 --- a/tests/operations/tests/Crypt.mjs +++ b/tests/operations/tests/Crypt.mjs @@ -1372,4 +1372,358 @@ DES uses a key length of 8 bytes (64 bits).`, } ], }, + + // The following expectedOutputs are generated with pyCryptoDome + { + name: "Blowfish Encrypt: ECB, ASCII", + input: "The quick brown fox jumps over the lazy dog.", + expectedOutput: "f7784137ab1bf51546c0b120bdb7fed4509116e49283b35fab0e4292ac86251a9bf908330e3393815e3356bb26524027", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "0000000000000000"}, // IV + "ECB", // Mode + "Raw", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: ECB, Binary", + input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + expectedOutput: "3d1bf0e87d83782d435a0ca58179ca290184867f52295af5c0fb4dcac7c6c68942906bb421d05925cc7d9cd21532376a0f6ae4c3f008b250381ffa9624f5eb697dbd44de48cf5593ea7dbf5842238474b546ceeb29f6cf327a7d13698786b8d14451f52fb0f5760a", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "0000000000000000"}, // IV + "ECB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: ECB, ASCII", + input: "f7784137ab1bf51546c0b120bdb7fed4509116e49283b35fab0e4292ac86251a9bf908330e3393815e3356bb26524027", + expectedOutput: "The quick brown fox jumps over the lazy dog.", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "0000000000000000"}, // IV + "ECB", // Mode + "Hex", // Input + "Raw" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: ECB, Binary", + input: "3d1bf0e87d83782d435a0ca58179ca290184867f52295af5c0fb4dcac7c6c68942906bb421d05925cc7d9cd21532376a0f6ae4c3f008b250381ffa9624f5eb697dbd44de48cf5593ea7dbf5842238474b546ceeb29f6cf327a7d13698786b8d14451f52fb0f5760a", + expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "0000000000000000"}, // IV + "ECB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CBC, ASCII", + input: "The quick brown fox jumps over the lazy dog.", + expectedOutput: "398433f39e938286a35fc240521435b6972f3fe96846b54ab9351aa5fa9e10a6a94074e883d1cb36cb9657c817274b60", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CBC", // Mode + "Raw", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CBC, Binary", + input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + expectedOutput: "3b42c51465896524e66c2fd2404c8c2b4eb26c760671f131c3372d374f48283ca9a5404d3d8aabd2a886c6551393ca41c682580f1c81f16046e3bec7b59247bdfca1d40bf2ad8ede9de99cb44b36658f775999d37776b3b1a085b9530e54ece69e1875e1bdc8cdcf", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CBC", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CBC, ASCII", + input: "398433f39e938286a35fc240521435b6972f3fe96846b54ab9351aa5fa9e10a6a94074e883d1cb36cb9657c817274b60", + expectedOutput: "The quick brown fox jumps over the lazy dog.", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CBC", // Mode + "Hex", // Input + "Raw" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CBC, Binary", + input: "3b42c51465896524e66c2fd2404c8c2b4eb26c760671f131c3372d374f48283ca9a5404d3d8aabd2a886c6551393ca41c682580f1c81f16046e3bec7b59247bdfca1d40bf2ad8ede9de99cb44b36658f775999d37776b3b1a085b9530e54ece69e1875e1bdc8cdcf", + expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CBC", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CFB, ASCII", + input: "The quick brown fox jumps over the lazy dog.", + // pyCryptoDome produces a different value with default settings. This is due to segment_size having + // a default value of 8 bits. Setting it to 64 (one full block) will yield the same result. + expectedOutput: "c8ca123592570c1fcb138d4ec08f7af14ad49363245be1ac25029c8ffc508b3217e75faaa5566426180fec8f", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CFB", // Mode + "Raw", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CFB, Binary", + input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + // see above. pyCryptoDome produeces a different value with its default settings + expectedOutput: "e6ac1324d1576beab00e855de3f4ac1f5e3cbf89f4c2a743a5737895067ac5012e5bdb92477e256cc07bf691b58e721179b550e694abb0be7cbdc42586db755bf795f4338f47d356c57453afa6277e46aaeb3405f9744654a477f06c2ad92ede90555759", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CFB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CFB, ASCII", + input: "c8ca123592570c1fcb138d4ec08f7af14ad49363245be1ac25029c8ffc508b3217e75faaa5566426180fec8f", + expectedOutput: "The quick brown fox jumps over the lazy dog.", + // see above. pyCryptoDome produeces a different value with its default settings + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CFB", // Mode + "Hex", // Input + "Raw" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CFB, Binary", + input: "e6ac1324d1576beab00e855de3f4ac1f5e3cbf89f4c2a743a5737895067ac5012e5bdb92477e256cc07bf691b58e721179b550e694abb0be7cbdc42586db755bf795f4338f47d356c57453afa6277e46aaeb3405f9744654a477f06c2ad92ede90555759", + expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + // see above. pyCryptoDome produeces a different value with its default settings + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "CFB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: OFB, ASCII", + input: "The quick brown fox jumps over the lazy dog.", + expectedOutput: "c8ca123592570c1fffcee88b9823b9450dc9c48e559123c1df1984214212bae7e44114d29dba79683d10cce5", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "OFB", // Mode + "Raw", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: OFB, Binary", + input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + expectedOutput: "e6ac1324d1576bea4ceb5be7691c35e4919f18be06cc2a926025ef0973222e987de7c63cd71ed3b19190ba006931d9cbdf412f5b1ac7155904ca591f693fe11aa996e17866e0de4b2eb7ff5effabf94b0f49ed159202caf72745ac2f024d86f942d83767", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "OFB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: OFB, ASCII", + input: "c8ca123592570c1fffcee88b9823b9450dc9c48e559123c1df1984214212bae7e44114d29dba79683d10cce5", + expectedOutput: "The quick brown fox jumps over the lazy dog.", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "OFB", // Mode + "Hex", // Input + "Raw" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: OFB, Binary", + input: "e6ac1324d1576bea4ceb5be7691c35e4919f18be06cc2a926025ef0973222e987de7c63cd71ed3b19190ba006931d9cbdf412f5b1ac7155904ca591f693fe11aa996e17866e0de4b2eb7ff5effabf94b0f49ed159202caf72745ac2f024d86f942d83767", + expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + {"option": "Hex", "string": "ffeeddccbbaa9988"}, // IV + "OFB", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CTR, ASCII", + input: "The quick brown fox jumps over the lazy dog.", + expectedOutput: "e2a5e0f03ad4877101c7cf83861ad93477adb57acac4bebc315a7bae34b4e6a54e5532db457a3131dcd9dda6", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + // pyCryptoDome only allows the size of the nonce to be [0,7] bytes. + // Internally, it right-pads the nonce to 7 bytes long if it wasn't already 7 bytes, + // and the last (8th) byte is used for counter. + // Therefore a pyCryptoDome nonce of "aabbccdd" is equivalent to an IV of "aabbccdd00000000" here. + {"option": "Hex", "string": "0000000000000000"}, // IV (nonce) + "CTR", // Mode + "Raw", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Encrypt: CTR, Binary", + input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + expectedOutput: "ccc3e1e179d4e084b2e27cef77255595ebfb694a9999b7ef8e661086058472dad7f3e0350fde9be87059ab43d5b800aa08be4c00f3f2e99402fe2702c39e8663dbcbb146700d63432227f1045f116bfd4b65022ca20b70427ddcfd7441cb3c75f4d3fff0", + recipeConfig: [ + { + "op": "Blowfish Encrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + // See notes above + {"option": "Hex", "string": "0000000000000000"}, // IV (nonce) + "CTR", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CTR, ASCII", + input: "e2a5e0f03ad4877101c7cf83861ad93477adb57acac4bebc315a7bae34b4e6a54e5532db457a3131dcd9dda6", + expectedOutput: "The quick brown fox jumps over the lazy dog.", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + // See notes above + {"option": "Hex", "string": "0000000000000000"}, // IV (nonce) + "CTR", // Mode + "Hex", // Input + "Raw" // Output + ] + } + ], + }, + { + name: "Blowfish Decrypt: CTR, Binary", + input: "ccc3e1e179d4e084b2e27cef77255595ebfb694a9999b7ef8e661086058472dad7f3e0350fde9be87059ab43d5b800aa08be4c00f3f2e99402fe2702c39e8663dbcbb146700d63432227f1045f116bfd4b65022ca20b70427ddcfd7441cb3c75f4d3fff0", + expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", + recipeConfig: [ + { + "op": "Blowfish Decrypt", + "args": [ + {"option": "Hex", "string": "0011223344556677"}, // Key + // See notes above + {"option": "Hex", "string": "0000000000000000"}, // IV (nonce) + "CTR", // Mode + "Hex", // Input + "Hex" // Output + ] + } + ], + }, ]); From 3014696fcd4a5baa255078cecfd9a4c8efcfa8fc Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 23:10:54 +0100 Subject: [PATCH 0034/1024] Adapt API tests to comply with length requirements --- tests/node/tests/operations.mjs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index ac846d93..e6cbcf50 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -183,27 +183,29 @@ Full hash: $2a$10$ODeP1.6fMsb.ENk2ngPUCO7qTGVPyHA9TqDVcyupyed8FjsiF65L6`; it("Blowfish encrypt", () => { const result = chef.blowfishEncrypt("Fool's Gold", { key: { - string: "One", + string: "0011223344556677", option: "hex", }, iv: { - string: "Two", + string: "exparrot", option: "utf8" - } + }, + mode: "CBC" }); - assert.strictEqual(result.toString(), "8999b513bf2ff064b2977dea7e05f1b5"); + assert.strictEqual(result.toString(), "55a2838980078ffe1722b08d5fa1d481"); }), it("Blowfish decrypt", () => { - const result = chef.blowfishDecrypt("8999b513bf2ff064b2977dea7e05f1b5", { + const result = chef.blowfishDecrypt("55a2838980078ffe1722b08d5fa1d481", { key: { - string: "One", + string: "0011223344556677", option: "hex", }, iv: { - string: "Two", + string: "exparrot", option: "utf8", - } + }, + mode: "CBC" }); assert.strictEqual(result.toString(), "Fool's Gold"); }), From 9872578d5139ce32035184ca6503820f31ae8fff Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 1 Oct 2019 23:20:27 +0100 Subject: [PATCH 0035/1024] Add reference Python script --- tests/operations/tests/Crypt.mjs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/operations/tests/Crypt.mjs b/tests/operations/tests/Crypt.mjs index 7bd9ca40..ae158e78 100644 --- a/tests/operations/tests/Crypt.mjs +++ b/tests/operations/tests/Crypt.mjs @@ -1372,8 +1372,27 @@ DES uses a key length of 8 bytes (64 bits).`, } ], }, + /* The following expectedOutputs are generated with this Python script with pyCryptoDome + from Crypto.Cipher import Blowfish + import binascii - // The following expectedOutputs are generated with pyCryptoDome + input_data = b"The quick brown fox jumps over the lazy dog." + key = binascii.unhexlify("0011223344556677") + iv = binascii.unhexlify("0000000000000000") + mode = Blowfish.MODE_CBC + + if mode == Blowfish.MODE_ECB or mode == Blowfish.MODE_CBC: + padding_len = 8-(len(input_data) & 7) + for i in range(padding_len): + input_data += bytes([padding_len]) + + cipher = Blowfish.new(key, mode) # set iv, nonce, segment_size etc. here + cipher_text = cipher.encrypt(input_data) + + cipher_text = binascii.hexlify(cipher_text).decode("UTF-8") + + print("Encrypted: {}".format(cipher_text)) +*/ { name: "Blowfish Encrypt: ECB, ASCII", input: "The quick brown fox jumps over the lazy dog.", From c28999ec6f9e0d48e7d439b77a75c2bbc95e15fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Heinrichs?= Date: Thu, 3 Oct 2019 02:23:18 +0200 Subject: [PATCH 0036/1024] Fixed building on Windows On Windows OperationConfig was not generated. See #360 #645 for more Information. --- Gruntfile.js | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 92a2d550..5cae1f04 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,6 +14,17 @@ const path = require("path"); * @license Apache-2.0 */ +const chainCommands = function(cmds) { + const win = process.platform === "win32"; + if (!win) { + return cmds.join(";"); + } + return cmds + // Chain Command is different here + .join("&&") + // Windows does not support \n properly + .replace("\n", "\\n"); +}; module.exports = function (grunt) { grunt.file.defaultEncoding = "utf8"; @@ -316,10 +327,10 @@ module.exports = function (grunt) { }, exec: { repoSize: { - command: [ + command: chainCommands([ "git ls-files | wc -l | xargs printf '\n%b\ttracked files\n'", "du -hs | egrep -o '^[^\t]*' | xargs printf '%b\trepository size\n'" - ].join(";"), + ]), stderr: false }, cleanGit: { @@ -329,20 +340,20 @@ module.exports = function (grunt) { command: "node --experimental-modules --no-warnings --no-deprecation src/web/static/sitemap.mjs > build/prod/sitemap.xml" }, generateConfig: { - command: [ + command: chainCommands([ "echo '\n--- Regenerating config files. ---'", "echo [] > src/core/config/OperationConfig.json", "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateOpsIndex.mjs", "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateConfig.mjs", "echo '--- Config scripts finished. ---\n'" - ].join(";") + ]) }, generateNodeIndex: { - command: [ + command: chainCommands([ "echo '\n--- Regenerating node index ---'", "node --experimental-modules --no-warnings --no-deprecation src/node/config/scripts/generateNodeIndex.mjs", "echo '--- Node index generated. ---\n'" - ].join(";"), + ]), }, opTests: { command: "node --experimental-modules --no-warnings --no-deprecation tests/operations/index.mjs" @@ -354,40 +365,40 @@ module.exports = function (grunt) { command: "node --experimental-modules --no-warnings --no-deprecation tests/node/index.mjs" }, setupNodeConsumers: { - command: [ + command: chainCommands([ "echo '\n--- Testing node conumers ---'", "npm link", `mkdir ${nodeConsumerTestPath}`, `cp tests/node/consumers/* ${nodeConsumerTestPath}`, `cd ${nodeConsumerTestPath}`, "npm link cyberchef" - ].join(";"), + ]), }, teardownNodeConsumers: { - command: [ + command: chainCommands([ `rm -rf ${nodeConsumerTestPath}`, "echo '\n--- Node consumer tests complete ---'" - ].join(";"), + ]), }, testCJSNodeConsumer: { - command: [ + command: chainCommands([ `cd ${nodeConsumerTestPath}`, "node --no-warnings cjs-consumer.js", - ].join(";"), + ]), stdout: false, }, testESMNodeConsumer: { - command: [ + command: chainCommands([ `cd ${nodeConsumerTestPath}`, "node --no-warnings --experimental-modules esm-consumer.mjs", - ].join(";"), + ]), stdout: false, }, testESMDeepImportNodeConsumer: { - command: [ + command: chainCommands([ `cd ${nodeConsumerTestPath}`, "node --no-warnings --experimental-modules esm-deep-import-consumer.mjs", - ].join(";"), + ]), stdout: false, }, }, From da901e20d908a320b4c81dd3ee8f07da2fef5a6d Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 4 Oct 2019 17:52:09 +0100 Subject: [PATCH 0037/1024] Added several more file signatures. The background magic button now highlights when a file type has been detected. --- src/core/lib/FileSignatures.mjs | 395 ++++++++++++++++++++++++- src/core/lib/Magic.mjs | 1 + src/core/operations/DetectFileType.mjs | 13 +- src/web/waiters/OutputWaiter.mjs | 31 +- 4 files changed, 411 insertions(+), 29 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 5c7d0e4f..27d2e676 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -415,7 +415,59 @@ export const FILE_SIGNATURES = { 6: 0x30 }, extractor: null - } + }, + { + name: "AutoCAD Drawing", + extension: "dwg,123d", + mime: "application/acad", + description: "", + signature: { + 0: 0x41, + 1: 0x43, + 2: 0x31, + 3: 0x30, + 4: [0x30, 0x31], + 5: [0x30, 0x31, 0x32, 0x33, 0x34, 0x35], + 6: 0x00 + }, + extractor: null + }, + { + name: "AutoCAD Drawing", + extension: "dwg,dwt", + mime: "application/acad", + description: "", + signature: [ + { + 0: 0x41, + 1: 0x43, + 2: 0x31, + 3: 0x30, + 4: 0x31, + 5: 0x38, + 6: 0x00 + }, + { + 0: 0x41, + 1: 0x43, + 2: 0x31, + 3: 0x30, + 4: 0x32, + 5: 0x34, + 6: 0x00 + }, + { + 0: 0x41, + 1: 0x43, + 2: 0x31, + 3: 0x30, + 4: 0x32, + 5: 0x37, + 6: 0x00 + } + ], + extractor: null + }, ], "Video": [ { // Place before webm @@ -614,6 +666,59 @@ export const FILE_SIGNATURES = { }, extractor: extractFLV }, + { + name: "OGG Video", + extension: "ogv,ogm,opus,ogx", + mime: "video/ogg", + description: "", + signature: [ + { + 0: 0x4f, // OggS + 1: 0x67, + 2: 0x67, + 3: 0x53, + 4: 0x00, + 5: 0x02, + 28: 0x01, + 29: 0x76, // video + 30: 0x69, + 31: 0x64, + 32: 0x65, + 33: 0x6f + }, + { + 0: 0x4f, // OggS + 1: 0x67, + 2: 0x67, + 3: 0x53, + 4: 0x00, + 5: 0x02, + 28: 0x80, + 29: 0x74, // theora + 30: 0x68, + 31: 0x65, + 32: 0x6f, + 33: 0x72, + 34: 0x61 + }, + { + 0: 0x4f, // OggS + 1: 0x67, + 2: 0x67, + 3: 0x53, + 4: 0x00, + 5: 0x02, + 28: 0x66, // fishead + 29: 0x69, + 30: 0x73, + 31: 0x68, + 32: 0x65, + 33: 0x61, + 34: 0x64 + } + ], + extractor: null + }, ], "Audio": [ { @@ -881,6 +986,19 @@ export const FILE_SIGNATURES = { }, extractor: null }, + { + name: "Encapsulated PostScript", + extension: "eps,ai", + mime: "application/eps", + description: "", + signature: { + 0: 0xc5, + 1: 0xd0, + 2: 0xd3, + 3: 0xc6 + }, + extractor: null + }, { name: "Rich Text Format", extension: "rtf", @@ -1074,6 +1192,22 @@ export const FILE_SIGNATURES = { }, extractor: null }, + { + name: "WordPerfect document", + extension: "wpd,wp,wp5,wp6,wpp,bk!,wcm", + mime: "application/wordperfect", + description: "", + signature: { + 0: 0xff, + 1: 0x57, + 2: 0x50, + 3: 0x43, + 7: [0x00, 0x01, 0x02], + 8: 0x01, + 9: 0x0a + }, + extractor: null + }, { name: "EPUB e-book", extension: "epub", @@ -1120,7 +1254,7 @@ export const FILE_SIGNATURES = { { name: "Windows Portable Executable", extension: "exe,dll,drv,vxd,sys,ocx,vbx,com,fon,scr", - mime: "application/x-msdownload", + mime: "application/vnd.microsoft.portable-executable", description: "", signature: { 0: 0x4d, @@ -1131,7 +1265,7 @@ export const FILE_SIGNATURES = { extractor: extractMZPE }, { - name: "Executable and Linkable Format file", + name: "Executable and Linkable Format", extension: "elf,bin,axf,o,prx,so", mime: "application/x-executable", description: "Executable and Linkable Format file. No standard file extension.", @@ -1144,7 +1278,7 @@ export const FILE_SIGNATURES = { extractor: extractELF }, { - name: "MacOS Mach-O object file", + name: "MacOS Mach-O object", extension: "dylib", mime: "application/octet-stream", description: "", @@ -1161,7 +1295,7 @@ export const FILE_SIGNATURES = { extractor: null }, { - name: "MacOS Mach-O 64-bit object file", + name: "MacOS Mach-O 64-bit object", extension: "dylib", mime: "application/octet-stream", description: "", @@ -1549,7 +1683,7 @@ export const FILE_SIGNATURES = { extractor: null }, { - name: "Microsoft Cabinet file", + name: "Microsoft Cabinet", extension: "cab", mime: "vnd.ms-cab-compressed", description: "", @@ -1578,10 +1712,27 @@ export const FILE_SIGNATURES = { }, extractor: null }, + { + name: "lzop compressed", + extension: "lzop,lzo", + mime: "application/x-lzop", + description: "", + signature: { + 0: 0x89, + 1: 0x4c, // LZO + 2: 0x5a, + 3: 0x4f, + 4: 0x00, + 5: 0x0d, + 6: 0x0a, + 7: 0x1a + }, + extractor: null + }, ], "Miscellaneous": [ { - name: "UTF-8 text file", + name: "UTF-8 text", extension: "txt", mime: "text/plain", description: "UTF-8 encoded Unicode byte order mark, commonly but not exclusively seen in text files.", @@ -1592,8 +1743,8 @@ export const FILE_SIGNATURES = { }, extractor: null }, - { // Place before UTF-16 LE file - name: "UTF-32 LE file", + { // Place before UTF-16 LE text + name: "UTF-32 LE text", extension: "utf32le", mime: "charset/utf32le", description: "Little-endian UTF-32 encoded Unicode byte order mark.", @@ -1606,7 +1757,7 @@ export const FILE_SIGNATURES = { extractor: null }, { - name: "UTF-16 LE file", + name: "UTF-16 LE text", extension: "utf16le", mime: "charset/utf16le", description: "Little-endian UTF-16 encoded Unicode byte order mark.", @@ -1964,6 +2115,223 @@ export const FILE_SIGNATURES = { }, extractor: null }, + { + name: "TCP Packet", + extension: "tcp", + mime: "application/tcp", + description: "", + signature: { + 12: 0x08, + 13: 0x00, + 14: 0x45, + 15: 0x00, + 21: 0x00, + 22: b => b >= 0x01 && b <= 0x80, + 23: 0x06 + }, + extractor: null + }, + { + name: "UDP Packet", + extension: "udp", + mime: "application/udp", + description: "", + signature: { + 12: 0x08, + 13: 0x00, + 14: 0x45, + 15: 0x00, + 16: [0x00, 0x01, 0x02, 0x03, 0x04, 0x05], + 22: b => b >= 0x01 && b <= 0x80, + 23: 0x11 + }, + extractor: null + }, + { + name: "Compiled HTML", + extension: "chm,chw,chi", + mime: "application/vnd.ms-htmlhelp", + description: "", + signature: { + 0: 0x49, // ITSF + 1: 0x54, + 2: 0x53, + 3: 0x46, + 4: 0x03, + 5: 0x00, + 6: 0x00, + 7: 0x00 + }, + extractor: null + }, + { + name: "Windows Password", + extension: "pwl", + mime: "application/octet-stream", + description: "", + signature: { + 0: 0xe3, + 1: 0x82, + 2: 0x85, + 3: 0x96 + }, + extractor: null + }, + { + name: "Bitlocker recovery key", + extension: "bitlocker", + mime: "application/octet-stream", + description: "", + signature: { + 0: 0xff, + 1: 0xfe, + 2: 0x42, + 3: 0x00, + 4: 0x69, + 5: 0x00, + 6: 0x74, + 7: 0x00, + 8: 0x4c, + 9: 0x00, + 10: 0x6f, + 11: 0x00, + 12: 0x63, + 13: 0x00, + 14: 0x6b, + 15: 0x00, + 16: 0x65, + 17: 0x00, + 18: 0x72, + 19: 0x00, + 20: 0x20, + 21: 0x00 + }, + extractor: null + }, + { + name: "Certificate", + extension: "cer,cat,p7b,p7c,p7m,p7s,swz,rsa,crl,crt,der", + mime: "application/pkix-cert", + description: "", + signature: { + 0: 0x30, + 1: 0x82, + 4: [0x06, 0x0a, 0x30] + }, + extractor: null + }, + { + name: "Certificate", + extension: "cat,swz,p7m", + mime: "application/vnd.ms-pki.seccat", + description: "", + signature: { + 0: 0x30, + 1: 0x83, + 2: b => b !== 0x00, + 5: 0x06, + 6: 0x09 + }, + extractor: null + }, + { + name: "PGP pubring", + extension: "pkr,gpg", + mime: "application/pgp-keys", + description: "", + signature: { + 0: 0x99, + 1: 0x01, + 2: [0x0d, 0xa2], + 3: 0x04 + }, + extractor: null + }, + { + name: "PGP secring", + extension: "skr", + mime: "application/pgp-keys", + description: "", + signature: [ + { + 0: 0x95, + 1: 0x01, + 2: 0xcf, + 3: 0x04 + }, + { + 0: 0x95, + 1: 0x03, + 2: 0xc6, + 3: 0x04 + } + ], + extractor: null + }, + { + name: "PGP Safe", + extension: "pgd", + mime: "application/pgp-keys", + description: "", + signature: { + 0: 0x50, // PGPdMAIN + 1: 0x47, + 2: 0x50, + 3: 0x64, + 4: 0x4d, + 5: 0x41, + 6: 0x49, + 7: 0x4e, + 8: 0x60, + 9: 0x01, + 10: 0x00 + }, + extractor: null + }, + { + name: "Task Scheduler", + extension: "job", + mime: "application/octet-stream", + description: "", + signature: { + 0: [0x00, 0x01, 0x02, 0x03], + 1: [0x05, 0x06], + 2: 0x01, + 3: 0x00, + 20: 0x46, + 21: 0x00 + }, + extractor: null + }, + { + name: "Windows Shortcut", + extension: "lnk", + mime: "application/x-ms-shortcut", + description: "", + signature: { + 0: 0x4c, + 1: 0x00, + 2: 0x00, + 3: 0x00, + 4: 0x01, + 5: 0x14, + 6: 0x02, + 7: 0x00, + 8: 0x00, + 9: 0x00, + 10: 0x00, + 11: 0x00, + 12: 0xc0, + 13: 0x00, + 14: 0x00, + 15: 0x00, + 16: 0x00, + 17: 0x00, + 18: 0x00, + 19: 0x46 + }, + extractor: null + } ] }; @@ -2307,9 +2675,10 @@ export function extractRTF(bytes, offset) { export function extractPListXML(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - // Find closing tag (\n) - stream.continueUntil([0x3c, 0x2f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x3e, 0x0a]); - stream.moveForwardsBy(9); + // Find closing tag () + stream.continueUntil([0x3c, 0x2f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x3e]); + stream.moveForwardsBy(8); + stream.consumeIf(0x0a); return stream.carve(); } diff --git a/src/core/lib/Magic.mjs b/src/core/lib/Magic.mjs index f6802e97..68a36bfa 100644 --- a/src/core/lib/Magic.mjs +++ b/src/core/lib/Magic.mjs @@ -97,6 +97,7 @@ class Magic { if (!fileType.length) return null; return { + name: fileType[0].name, ext: fileType[0].extension, mime: fileType[0].mime, desc: fileType[0].description diff --git a/src/core/operations/DetectFileType.mjs b/src/core/operations/DetectFileType.mjs index 4ffaa5ff..c8cdb822 100644 --- a/src/core/operations/DetectFileType.mjs +++ b/src/core/operations/DetectFileType.mjs @@ -8,6 +8,13 @@ import Operation from "../Operation.mjs"; import {detectFileType} from "../lib/FileType.mjs"; import {FILE_SIGNATURES} from "../lib/FileSignatures.mjs"; +// Concat all supported extensions into a single flat list +const exts = [].concat.apply([], Object.keys(FILE_SIGNATURES).map(cat => + [].concat.apply([], FILE_SIGNATURES[cat].map(sig => + sig.extension.split(",") + )) +)).unique().sort().join(", "); + /** * Detect File Type operation */ @@ -22,11 +29,7 @@ class DetectFileType extends Operation { this.name = "Detect File Type"; this.module = "Default"; this.description = "Attempts to guess the MIME (Multipurpose Internet Mail Extensions) type of the data based on 'magic bytes'.

Currently supports the following file types: " + - Object.keys(FILE_SIGNATURES).map(cat => - [].concat.apply([], FILE_SIGNATURES[cat].map(sig => - sig.extension.split(",") - )).unique().join(", ") - ).unique().join(", ") + "."; + exts + "."; this.infoURL = "https://wikipedia.org/wiki/List_of_file_signatures"; this.inputType = "ArrayBuffer"; this.outputType = "string"; diff --git a/src/web/waiters/OutputWaiter.mjs b/src/web/waiters/OutputWaiter.mjs index cea2b514..833922b8 100755 --- a/src/web/waiters/OutputWaiter.mjs +++ b/src/web/waiters/OutputWaiter.mjs @@ -1046,15 +1046,25 @@ class OutputWaiter { * @param {Object[]} options */ backgroundMagicResult(options) { - if (!options.length || - !options[0].recipe.length) - return; + if (!options.length) return; const currentRecipeConfig = this.app.getRecipeConfig(); - const newRecipeConfig = currentRecipeConfig.concat(options[0].recipe); - const opSequence = options[0].recipe.map(o => o.op).join(", "); + let msg = "", + newRecipeConfig; - this.showMagicButton(opSequence, options[0].data, newRecipeConfig); + if (options[0].recipe.length) { + const opSequence = options[0].recipe.map(o => o.op).join(", "); + newRecipeConfig = currentRecipeConfig.concat(options[0].recipe); + msg = `${opSequence} will produce "${Utils.escapeHtml(Utils.truncate(options[0].data), 30)}"`; + } else if (options[0].fileType && options[0].fileType.name) { + const ft = options[0].fileType; + newRecipeConfig = currentRecipeConfig.concat([{op: "Detect File Type", args: []}]); + msg = `${ft.name} file detected`; + } else { + return; + } + + this.showMagicButton(msg, newRecipeConfig); } /** @@ -1072,15 +1082,14 @@ class OutputWaiter { } /** - * Displays the Magic button with a title and adds a link to a complete recipe. + * Displays the Magic button with a title and adds a link to a recipe. * - * @param {string} opSequence - * @param {string} result + * @param {string} msg * @param {Object[]} recipeConfig */ - showMagicButton(opSequence, result, recipeConfig) { + showMagicButton(msg, recipeConfig) { const magicButton = document.getElementById("magic"); - magicButton.setAttribute("data-original-title", `${opSequence} will produce "${Utils.escapeHtml(Utils.truncate(result), 30)}"`); + magicButton.setAttribute("data-original-title", msg); magicButton.setAttribute("data-recipe", JSON.stringify(recipeConfig), null, ""); magicButton.classList.remove("hidden"); magicButton.classList.add("pulse"); From 06708949a15dd7266f3f965324858b6f611fba39 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 4 Oct 2019 17:52:15 +0100 Subject: [PATCH 0038/1024] 9.7.7 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5ad2e504..11c80ca0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.6", + "version": "9.7.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e82908f0..e9c33484 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.6", + "version": "9.7.7", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From d60d5952546a674b89ffa7e1de76a0635310a4bb Mon Sep 17 00:00:00 2001 From: wh0 Date: Sun, 6 Oct 2019 17:07:58 -0700 Subject: [PATCH 0039/1024] Utils: don't consume three backslashes at a time --- src/core/Utils.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index 5c6c485c..0d6e7396 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -201,8 +201,7 @@ class Utils { * Utils.parseEscapedChars("\\n"); */ static parseEscapedChars(str) { - return str.replace(/(\\)?\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, a, b) { - if (a === "\\") return "\\"+b; + return str.replace(/\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, b) { switch (b[0]) { case "\\": return "\\"; From 210daf732440a472d8ee56b34d001a6bcfea5505 Mon Sep 17 00:00:00 2001 From: d98762625 Date: Mon, 7 Oct 2019 17:41:51 +0100 Subject: [PATCH 0040/1024] make async node tests actually fail when they fail. Update tests that were failing --- src/core/operations/Bzip2Decompress.mjs | 2 +- src/core/operations/GeneratePGPKeyPair.mjs | 2 +- tests/lib/TestRegister.mjs | 2 - tests/node/assertionHandler.mjs | 4 +- tests/node/tests/operations.mjs | 177 ++++++++++++--------- 5 files changed, 105 insertions(+), 82 deletions(-) diff --git a/src/core/operations/Bzip2Decompress.mjs b/src/core/operations/Bzip2Decompress.mjs index 7fc3bd4c..3dba945e 100644 --- a/src/core/operations/Bzip2Decompress.mjs +++ b/src/core/operations/Bzip2Decompress.mjs @@ -47,7 +47,7 @@ class Bzip2Decompress extends Operation { * @param {Object[]} args * @returns {string} */ - run(input, args) { + async run(input, args) { const [small] = args; if (input.byteLength <= 0) { throw new OperationError("Please provide an input."); diff --git a/src/core/operations/GeneratePGPKeyPair.mjs b/src/core/operations/GeneratePGPKeyPair.mjs index 3a310d08..7176d526 100644 --- a/src/core/operations/GeneratePGPKeyPair.mjs +++ b/src/core/operations/GeneratePGPKeyPair.mjs @@ -58,7 +58,7 @@ class GeneratePGPKeyPair extends Operation { * @param {Object[]} args * @returns {string} */ - run(input, args) { + async run(input, args) { const [keyType, keySize] = args[0].split("-"), password = args[1], name = args[2], diff --git a/tests/lib/TestRegister.mjs b/tests/lib/TestRegister.mjs index e7949753..7a0e956e 100644 --- a/tests/lib/TestRegister.mjs +++ b/tests/lib/TestRegister.mjs @@ -104,8 +104,6 @@ class TestRegister { * Run all api related tests and wrap results in report format */ runApiTests() { - console.log("Running tests..."); - return Promise.all(this.apiTests.map(async function(test, i) { const result = { test: test, diff --git a/tests/node/assertionHandler.mjs b/tests/node/assertionHandler.mjs index 0096db42..82d19a2e 100644 --- a/tests/node/assertionHandler.mjs +++ b/tests/node/assertionHandler.mjs @@ -15,9 +15,9 @@ /** * Print useful stack on error */ -const wrapRun = (run) => () => { +const wrapRun = (run) => async () => { try { - run(); + await run(); } catch (e) { console.dir(e); throw e; diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 75f37ab1..3ffedb23 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -130,11 +130,14 @@ Tiger-128`; it("atBash Cipher", () => { const result = chef.atbashCipher("Happy as a Clam"); assert.strictEqual(result.toString(), "Szkkb zh z Xozn"); + }), it("Bcrypt", async () => { const result = await chef.bcrypt("Put a Sock In It"); - assert.strictEqual(result.toString(), "$2a$10$ODeP1.6fMsb.ENk2ngPUCO7qTGVPyHA9TqDVcyupyed8FjsiF65L6"); + const strResult = result.toString(); + assert.equal(strResult.length, 60); + assert.equal(strResult.slice(0,7), "$2a$10$"); }), it("bcryptCompare", async() => { @@ -583,47 +586,7 @@ Password: 034148`; const result = await chef.generatePGPKeyPair("Back To the Drawing Board", { keyType: "ECC-256", }); - const expected = `-----BEGIN PGP PRIVATE KEY BLOCK----- -Version: Keybase OpenPGP v2.0.77 -Comment: https://keybase.io/crypto - -xYgEW3KciQEBAK96Lx9G0WZiw1yhC35IogdumoxEJXsLdAVIjmskXeAfABEBAAEA -AP4wK+OZu3AqojwtRoyIK1pHKU93OAuam1iaLCOGCwCckQCA5PjU0aLNZqy/eKyX -T3rpKQCAxDDT5hHGAUfFPUu73KWABwB/WKpeUp7KwurMSbYVhgr1TijszQDCVAQT -AQoAHgUCW3KciQIbLwMLCQcDFQoIAh4BAheAAxYCAQIZAQAKCRD0VeyUMgmpz3OE -AP9qsnhhoK85Tnu6VKwKm1iMiJAssDQnFztDaMmmVdrN/MeIBFtynIkBAQDDhjIw -fxOprqVMYLk6aC45JyPAA2POzu0Zb/rx0tKeBwARAQABAAD/XAr66oiP9ZORHiT0 -XZH4m7vwZt7AHuq4pYtVlMQXk60AgPw2Mno/wStvE/SBa9R7AtsAgMZ2BkJjvNPZ -9YA6cl4lW0UAgI1+kJVLZ5VR9fPENfJR80EtncKDBBgBCgAPBQJbcpyJBQkPCZwA -AhsuAEgJEPRV7JQyCanPPSAEGQEKAAYFAltynIkACgkQrewgWMQZ/b2blwD/dbwh -/3F9xv+YGAwq8i1mzzswg4qBct6LoSIjGglULT9RIQD/cYd31YfKrEnbSBWD5PLi -zcSsxtBGKphwXiPAlQJ1Q5DHiARbcpyJAQEAs8V418lf1T74PpAwdBTiViEUX9jB -e+ZrAEVaq5nu1C8AEQEAAQAA/iPWhS23hnRTllealR4/H5OofZRwxvIQrxAJp6z1 -ICRxAIDayRpCAbK5EC3DzRU2z4VpAIDSWYSs9inI1VTfamJPMWHXAIC3aaukzCP4 -GEGeFobX/thnKhnCgwQYAQoADwUCW3KciQUJA8JnAAIbLgBICRD0VeyUMgmpzz0g -BBkBCgAGBQJbcpyJAAoJEB4jzL1hmQIXamUA/0c1M6BSqVtxNowPcOAXKYIxMca1 -VFcRWolHnZqdZQ7k/J8A/3HvNLRS3p1HvjQEfXl/qKoRRn843Py09ptDHh+xpGKh -=d+Vp ------END PGP PRIVATE KEY BLOCK----- - ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: Keybase OpenPGP v2.0.77 -Comment: https://keybase.io/crypto - -xi0EW3KciQEBAK96Lx9G0WZiw1yhC35IogdumoxEJXsLdAVIjmskXeAfABEBAAHN -AMJUBBMBCgAeBQJbcpyJAhsvAwsJBwMVCggCHgECF4ADFgIBAhkBAAoJEPRV7JQy -CanPc4QA/2qyeGGgrzlOe7pUrAqbWIyIkCywNCcXO0NoyaZV2s38zi0EW3KciQEB -AMOGMjB/E6mupUxguTpoLjknI8ADY87O7Rlv+vHS0p4HABEBAAHCgwQYAQoADwUC -W3KciQUJDwmcAAIbLgBICRD0VeyUMgmpzz0gBBkBCgAGBQJbcpyJAAoJEK3sIFjE -Gf29m5cA/3W8If9xfcb/mBgMKvItZs87MIOKgXLei6EiIxoJVC0/USEA/3GHd9WH -yqxJ20gVg+Ty4s3ErMbQRiqYcF4jwJUCdUOQzi0EW3KciQEBALPFeNfJX9U++D6Q -MHQU4lYhFF/YwXvmawBFWquZ7tQvABEBAAHCgwQYAQoADwUCW3KciQUJA8JnAAIb -LgBICRD0VeyUMgmpzz0gBBkBCgAGBQJbcpyJAAoJEB4jzL1hmQIXamUA/0c1M6BS -qVtxNowPcOAXKYIxMca1VFcRWolHnZqdZQ7k/J8A/3HvNLRS3p1HvjQEfXl/qKoR -Rn843Py09ptDHh+xpGKh -=ySwG ------END PGP PUBLIC KEY BLOCK-----`; - assert.strictEqual(result.toString(), expected); + assert.strictEqual(result.toString().length, 2005); }), it("Generate UUID", () => { @@ -737,43 +700,105 @@ CPU assert.strictEqual(result.toString(), expected); }), - it("PGP Encrypt", async () => { + it("PGP Encrypt and decrypt", async () => { const pbkey = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mI0EVWOihAEEALzwFAVWTrD0KiWCH5tX6q6QsGjlRn4IP2uj/xWsJZDNbCKm+JAe -1RvIootpW1+PNNMJlIInwUgtCjtJ9gZbGBpXeqwdSn0oYuj9X86ekXOUnZsRoPCj -RwS8kpbrvRVfhWN8hYuXFcXK2J2Ld0ZpVyJzkncpFdpAgzTPMfrO1HS5ABEBAAG0 -GmdwZyBuYW1lIChjb21tZW50KSA8ZW1AaWw+iLgEEwECACIFAlVjooQCGwMGCwkI -BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBg8dTRwi4g5I40D/2+uUuQxa3uMrAeI -dXLaJWz3V0cl1rotfBP47apDUGbkm1HVgULJUo8Bo15Ii83ST8TUsyja3XcLutHb -IwYSWo41gEV48+NKoN6Oy3HwqBoHfH06bu0If75vdSjnZpB2dO/Ph7L9kz78gc4y -tZx4bE64MTlL2AYghZxyYpFyydjXuI0EVWOihAEEANE4UU+4iB2hMAXq93hiBzIh -AMtn/DlWbJkpdUgrjKOG6tILs28mrw9rI4PivmT7grkyNW8sa3ATsmWC1xChxGTN -T1guyh0Hhbc3Otfng2BFSWcBkPwUoNaOdrVFpP9J51IYrsQHsjbZlY45ghDBzM6t -sISfkmmFCsp0l7w/XAcvABEBAAGInwQYAQIACQUCVWOihAIbDAAKCRAYPHU0cIuI -OQ2BA/9KWqOhXZW75ac7CuJMfileZR7vRy9CkKyNG21cZtAlqftAX+m8FGdG0duU -jKHiPvjXhSfP3lmrQ7brja9LgSzkiBqQzvPW55G67nGQdUC+mqZNJNlRh+8atf9I -5nxg2i8zn6F5cLaNWz7cl27m1/mXKcH3gult1PLR4PiYLiC9aw== -=xw3e ------END PGP PUBLIC KEY BLOCK-----`; - - const result = await chef.PGPEncrypt("A Fool and His Money are Soon Parted", { - publicKeyOfRecipient: pbkey, - }); - const expected = `-----BEGIN PGP MESSAGE----- -Version: Keybase OpenPGP v2.0.77 +Version: Keybase OpenPGP v2.1.3 Comment: https://keybase.io/crypto -wYwDv1kIXPPNwmABA/4syW+oO+S/mfpjdp83/MZJiKh6XNQoPr/N5/1Is/QXYu9V -/v8/b+eReOpUVC6cVrJ8U5cB19y1Az3NQWHXLEC0jND2wL3cUM4sv87hlvv2PLhc -okv8OHNCitRiweo7NZHVygHGdFvY082G47e1PkyPAuVynvzdD450ta/s/KOxZdJg -ARbZIrC6WmjYNLwhbpRYawKD+3N4I5qliRpU2POKRi9UROAW9dth6egy60TTCvyO -jmPGsv1elXxVzqs58UZLD2c3vBhGkU2BV6kRKh+lj/EcVrzsFhGCz/7DKxPoDHLS -=IBYt ------END PGP MESSAGE----- -`; - assert.strictEqual(result.toString(), expected); +xo0EXZtlowEEAKUqTFownTmqgXWu2KDrtyNYtFck7a16WM5QD95bFoAFFdnlwZ45 +6Vw8G8LCzHdyRXYp/JF1GknDrAd7nIRE+SuSz2yVK5nlOCfO1HFcg2Ov7e7/pBwd +qawx9GUIsCKd/6NxwDuT4YqarLFsuwljRC/eQiibO+ejnhoiKcU69sTNABEBAAHN +AMK0BBMBCgAeBQJdm2WjAhsvAwsJBwMVCggCHgECF4ADFgIBAhkBAAoJEGS79V2S +7D0owtMD/RT+o4BQJ8NSQBDgkYf42uOOu1Ud6GuN89nX6n20yAZbmqQ8CHnHY+Qc +l6ft4HnbIaNrI3arp/C2C+cwFypmt1BKyFEJUXO7ft3i/IxnjpCorDyAMCDckDvq +uma1LWtUHLb5s/ZuGMSHnhuji74IRWuIofNPdf7bCZW1GMbW9jNUzo0EXZtlowEE +AL38zaNkPmUVQaowP696fayBo18Nxs0yOzC4+0TYv1B/k5aUb0Air2h+o/Xw4E42 +Jh9gVdPSvhOAEqdV0UDe71wxa4cfAVMDY9v8ta81MWunChj3ISUk1oIQylTJNsY/ +b4KWOrLaOtBD9dyFGCzss5vLVdqdMjVIW2Cz0hb6IYG7ABEBAAHCwIMEGAEKAA8F +Al2bZaMFCQ8JnAACGy4AqAkQZLv1XZLsPSidIAQZAQoABgUCXZtlowAKCRA16MU2 +u2hFTX+JBACZ27xk0Afny2jjSoRzqLMrhzE7DBGcg2QqecMdNre12hVompAWcS4l +NFmPShKRi6UT8Zb38nD43vwfqwZImn60dOPqqAep3YF/Axm1u5HJb0aMEsb8O9jV +sVmNJv9jVTzPdlTGFQjuaeJfk5lwxB+5/O9NcgDhPgRAk9xb4FrT+xzmA/4tD11C +AdcITUkTZT4ZOo2418DGeaiaEqWcIkZeQG4Vh5TMj4QtZDwsYQhXPl5Zj1zKIN/1 +gRrKC+ztaQoDG8pJXTTtc9inRU++dhMqnRGrPcz0VfVXFaiH7PUCy+4WpP6r5Bs5 +YQ9ESHo+FsmIvDzU3e/PD0SfXfO4vqBrFYN8986NBF2bZaMBBADJafe0w9diaCNx +3A7e8MqjbNrhrLkD2cPxXspCATX3SuI19d2+hMiHZfKTyadBTIa+ICxvqoxwxyZD +raHSY3CWVZd1V4KB5mqf+3Zj5riLeGU0dtXwi/5c0bdUhBUgHiAMhi75p05jYih5 +KsNxPcK9hEwPu7B+QeHURMiIgojTGQARAQABwsCDBBgBCgAPBQJdm2WjBQkDwmcA +AhsuAKgJEGS79V2S7D0onSAEGQEKAAYFAl2bZaMACgkQzdkMJSM5Bqg2rwP/Ue28 +m3Fdfgh5JxouZ3Dm2KUDhZL95B+vdMk72acdoU7SRjlyDT8cApRqYx+MIXb8WrPN +1xCZnOM4zXeWIM0CAPQ1e/sCrK58L+P+eVngNmrW9epKtZ4L6hx+dqqja9vPZGQK +CsFAhA6A1gWB++OLk9Y6H23tWIdKEXMeAX7492zDYgP+OSPS79EWAqXL8SvmDrbl +WI5eiM6X5hAMrOjQqzXhatD7eP41N/FC3SfhyhX7hFbagO7MJG2AS5bmSvcuCdcN +wDwXd94B+7bfYgJIRKbr272yDwkyzGn+zmxzvMUt6ak5PNzfmadvhMZvIfDftswp +GYpXIUU0GObOgP2tpCGTErs= +=m++F +-----END PGP PUBLIC KEY BLOCK-----`; + const privateKey = `-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: Keybase OpenPGP v2.1.3 +Comment: https://keybase.io/crypto + +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 +pCGTErs= +=Ya+/ +-----END PGP PRIVATE KEY BLOCK-----` + + const message = "A Fool and His Money are Soon Parted" + + const encrypted = await chef.PGPEncrypt(message, { + publicKeyOfRecipient: pbkey, + }); + const result = await chef.PGPDecrypt(encrypted, { + privateKeyOfRecipient: privateKey, + }); + + assert.strictEqual(result.toString(), message); }), it("Raw deflate", () => { From 494279edd87bc443fedef5bf46af539983db5354 Mon Sep 17 00:00:00 2001 From: d98762625 Date: Mon, 7 Oct 2019 18:00:36 +0100 Subject: [PATCH 0041/1024] update gitignore --- .gitignore | 2 +- src/node/index.mjs | 1724 -------------------------------------------- 2 files changed, 1 insertion(+), 1725 deletions(-) delete mode 100644 src/node/index.mjs diff --git a/.gitignore b/.gitignore index 2d617b08..40682646 100755 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,11 @@ travis.log build .vscode .*.swp -.DS_Store src/core/config/modules/* src/core/config/OperationConfig.json src/core/operations/index.mjs src/node/config/OperationConfig.json +src/node/index.mjs **/*.DS_Store tests/browser/output/* diff --git a/src/node/index.mjs b/src/node/index.mjs deleted file mode 100644 index 99145b77..00000000 --- a/src/node/index.mjs +++ /dev/null @@ -1,1724 +0,0 @@ -/** -* THIS FILE IS AUTOMATICALLY GENERATED BY src/node/config/scripts/generateNodeIndex.mjs -* -* @author d98762625 [d98762625@gmail.com] -* @copyright Crown Copyright 2019 -* @license Apache-2.0 -*/ - -/* eslint camelcase: 0 */ - - -import NodeDish from "./NodeDish.mjs"; -import { _wrap, help, bake, _explainExludedFunction } from "./api.mjs"; -import File from "./File.mjs"; -import { OperationError, DishError, ExcludedOperationError } from "../core/errors/index"; -import { - // import as core_ to avoid name clashes after wrap. - A1Z26CipherDecode as core_A1Z26CipherDecode, - A1Z26CipherEncode as core_A1Z26CipherEncode, - ADD as core_ADD, - AESDecrypt as core_AESDecrypt, - AESEncrypt as core_AESEncrypt, - AND as core_AND, - AddLineNumbers as core_AddLineNumbers, - AddTextToImage as core_AddTextToImage, - Adler32Checksum as core_Adler32Checksum, - AffineCipherDecode as core_AffineCipherDecode, - AffineCipherEncode as core_AffineCipherEncode, - AnalyseHash as core_AnalyseHash, - AtbashCipher as core_AtbashCipher, - BLAKE2b as core_BLAKE2b, - BLAKE2s as core_BLAKE2s, - BSONDeserialise as core_BSONDeserialise, - BSONSerialise as core_BSONSerialise, - BaconCipherDecode as core_BaconCipherDecode, - BaconCipherEncode as core_BaconCipherEncode, - Bcrypt as core_Bcrypt, - BcryptCompare as core_BcryptCompare, - BcryptParse as core_BcryptParse, - BifidCipherDecode as core_BifidCipherDecode, - BifidCipherEncode as core_BifidCipherEncode, - BitShiftLeft as core_BitShiftLeft, - BitShiftRight as core_BitShiftRight, - BlowfishDecrypt as core_BlowfishDecrypt, - BlowfishEncrypt as core_BlowfishEncrypt, - BlurImage as core_BlurImage, - Bombe as core_Bombe, - Bzip2Compress as core_Bzip2Compress, - Bzip2Decompress as core_Bzip2Decompress, - CRC16Checksum as core_CRC16Checksum, - CRC32Checksum as core_CRC32Checksum, - CRC8Checksum as core_CRC8Checksum, - CSSBeautify as core_CSSBeautify, - CSSMinify as core_CSSMinify, - CSSSelector as core_CSSSelector, - CSVToJSON as core_CSVToJSON, - CTPH as core_CTPH, - CartesianProduct as core_CartesianProduct, - ChangeIPFormat as core_ChangeIPFormat, - ChiSquare as core_ChiSquare, - CitrixCTX1Decode as core_CitrixCTX1Decode, - CitrixCTX1Encode as core_CitrixCTX1Encode, - CompareCTPHHashes as core_CompareCTPHHashes, - CompareSSDEEPHashes as core_CompareSSDEEPHashes, - ContainImage as core_ContainImage, - ConvertArea as core_ConvertArea, - ConvertCoordinateFormat as core_ConvertCoordinateFormat, - ConvertDataUnits as core_ConvertDataUnits, - ConvertDistance as core_ConvertDistance, - ConvertImageFormat as core_ConvertImageFormat, - ConvertMass as core_ConvertMass, - ConvertSpeed as core_ConvertSpeed, - CountOccurrences as core_CountOccurrences, - CoverImage as core_CoverImage, - CropImage as core_CropImage, - DESDecrypt as core_DESDecrypt, - DESEncrypt as core_DESEncrypt, - DNSOverHTTPS as core_DNSOverHTTPS, - DechunkHTTPResponse as core_DechunkHTTPResponse, - DecodeNetBIOSName as core_DecodeNetBIOSName, - DecodeText as core_DecodeText, - DefangIPAddresses as core_DefangIPAddresses, - DefangURL as core_DefangURL, - DeriveEVPKey as core_DeriveEVPKey, - DerivePBKDF2Key as core_DerivePBKDF2Key, - DetectFileType as core_DetectFileType, - Diff as core_Diff, - DisassembleX86 as core_DisassembleX86, - DitherImage as core_DitherImage, - Divide as core_Divide, - DropBytes as core_DropBytes, - EncodeNetBIOSName as core_EncodeNetBIOSName, - EncodeText as core_EncodeText, - Enigma as core_Enigma, - Entropy as core_Entropy, - EscapeString as core_EscapeString, - EscapeUnicodeCharacters as core_EscapeUnicodeCharacters, - ExpandAlphabetRange as core_ExpandAlphabetRange, - ExtractDates as core_ExtractDates, - ExtractDomains as core_ExtractDomains, - ExtractEXIF as core_ExtractEXIF, - ExtractEmailAddresses as core_ExtractEmailAddresses, - ExtractFilePaths as core_ExtractFilePaths, - ExtractFiles as core_ExtractFiles, - ExtractIPAddresses as core_ExtractIPAddresses, - ExtractLSB as core_ExtractLSB, - ExtractMACAddresses as core_ExtractMACAddresses, - ExtractRGBA as core_ExtractRGBA, - ExtractURLs as core_ExtractURLs, - Filter as core_Filter, - FindReplace as core_FindReplace, - Fletcher16Checksum as core_Fletcher16Checksum, - Fletcher32Checksum as core_Fletcher32Checksum, - Fletcher64Checksum as core_Fletcher64Checksum, - Fletcher8Checksum as core_Fletcher8Checksum, - FlipImage as core_FlipImage, - FormatMACAddresses as core_FormatMACAddresses, - FrequencyDistribution as core_FrequencyDistribution, - FromBCD as core_FromBCD, - FromBase as core_FromBase, - FromBase32 as core_FromBase32, - FromBase58 as core_FromBase58, - FromBase62 as core_FromBase62, - FromBase64 as core_FromBase64, - FromBase85 as core_FromBase85, - FromBinary as core_FromBinary, - FromBraille as core_FromBraille, - FromCaseInsensitiveRegex as core_FromCaseInsensitiveRegex, - FromCharcode as core_FromCharcode, - FromDecimal as core_FromDecimal, - FromHTMLEntity as core_FromHTMLEntity, - FromHex as core_FromHex, - FromHexContent as core_FromHexContent, - FromHexdump as core_FromHexdump, - FromMessagePack as core_FromMessagePack, - FromMorseCode as core_FromMorseCode, - FromOctal as core_FromOctal, - FromPunycode as core_FromPunycode, - FromQuotedPrintable as core_FromQuotedPrintable, - FromUNIXTimestamp as core_FromUNIXTimestamp, - GOSTHash as core_GOSTHash, - GenerateAllHashes as core_GenerateAllHashes, - GenerateHOTP as core_GenerateHOTP, - GenerateLoremIpsum as core_GenerateLoremIpsum, - GeneratePGPKeyPair as core_GeneratePGPKeyPair, - GenerateQRCode as core_GenerateQRCode, - GenerateTOTP as core_GenerateTOTP, - GenerateUUID as core_GenerateUUID, - GenericCodeBeautify as core_GenericCodeBeautify, - GroupIPAddresses as core_GroupIPAddresses, - Gunzip as core_Gunzip, - Gzip as core_Gzip, - HAS160 as core_HAS160, - HMAC as core_HMAC, - HTMLToText as core_HTMLToText, - HTTPRequest as core_HTTPRequest, - HammingDistance as core_HammingDistance, - HaversineDistance as core_HaversineDistance, - Head as core_Head, - HeatmapChart as core_HeatmapChart, - HexDensityChart as core_HexDensityChart, - HexToObjectIdentifier as core_HexToObjectIdentifier, - HexToPEM as core_HexToPEM, - ImageBrightnessContrast as core_ImageBrightnessContrast, - ImageFilter as core_ImageFilter, - ImageHueSaturationLightness as core_ImageHueSaturationLightness, - ImageOpacity as core_ImageOpacity, - IndexOfCoincidence as core_IndexOfCoincidence, - InvertImage as core_InvertImage, - JPathExpression as core_JPathExpression, - JSONBeautify as core_JSONBeautify, - JSONMinify as core_JSONMinify, - JSONToCSV as core_JSONToCSV, - JWTDecode as core_JWTDecode, - JWTSign as core_JWTSign, - JWTVerify as core_JWTVerify, - Keccak as core_Keccak, - MD2 as core_MD2, - MD4 as core_MD4, - MD5 as core_MD5, - MD6 as core_MD6, - Magic as core_Magic, - Mean as core_Mean, - Median as core_Median, - MicrosoftScriptDecoder as core_MicrosoftScriptDecoder, - MultipleBombe as core_MultipleBombe, - Multiply as core_Multiply, - NOT as core_NOT, - NormaliseImage as core_NormaliseImage, - Numberwang as core_Numberwang, - OR as core_OR, - ObjectIdentifierToHex as core_ObjectIdentifierToHex, - OffsetChecker as core_OffsetChecker, - OpticalCharacterRecognition as core_OpticalCharacterRecognition, - PEMToHex as core_PEMToHex, - PGPDecrypt as core_PGPDecrypt, - PGPDecryptAndVerify as core_PGPDecryptAndVerify, - PGPEncrypt as core_PGPEncrypt, - PGPEncryptAndSign as core_PGPEncryptAndSign, - PGPVerify as core_PGPVerify, - PHPDeserialize as core_PHPDeserialize, - PadLines as core_PadLines, - ParseASN1HexString as core_ParseASN1HexString, - ParseColourCode as core_ParseColourCode, - ParseDateTime as core_ParseDateTime, - ParseIPRange as core_ParseIPRange, - ParseIPv4Header as core_ParseIPv4Header, - ParseIPv6Address as core_ParseIPv6Address, - ParseQRCode as core_ParseQRCode, - ParseSSHHostKey as core_ParseSSHHostKey, - ParseTLV as core_ParseTLV, - ParseUDP as core_ParseUDP, - ParseUNIXFilePermissions as core_ParseUNIXFilePermissions, - ParseURI as core_ParseURI, - ParseUserAgent as core_ParseUserAgent, - ParseX509Certificate as core_ParseX509Certificate, - PlayMedia as core_PlayMedia, - PowerSet as core_PowerSet, - ProtobufDecode as core_ProtobufDecode, - PseudoRandomNumberGenerator as core_PseudoRandomNumberGenerator, - RC2Decrypt as core_RC2Decrypt, - RC2Encrypt as core_RC2Encrypt, - RC4 as core_RC4, - RC4Drop as core_RC4Drop, - RIPEMD as core_RIPEMD, - ROT13 as core_ROT13, - ROT47 as core_ROT47, - RandomizeColourPalette as core_RandomizeColourPalette, - RawDeflate as core_RawDeflate, - RawInflate as core_RawInflate, - Register as core_Register, - RegularExpression as core_RegularExpression, - RemoveDiacritics as core_RemoveDiacritics, - RemoveEXIF as core_RemoveEXIF, - RemoveLineNumbers as core_RemoveLineNumbers, - RemoveNullBytes as core_RemoveNullBytes, - RemoveWhitespace as core_RemoveWhitespace, - RenderImage as core_RenderImage, - RenderMarkdown as core_RenderMarkdown, - ResizeImage as core_ResizeImage, - Return as core_Return, - Reverse as core_Reverse, - RotateImage as core_RotateImage, - RotateLeft as core_RotateLeft, - RotateRight as core_RotateRight, - SHA0 as core_SHA0, - SHA1 as core_SHA1, - SHA2 as core_SHA2, - SHA3 as core_SHA3, - SQLBeautify as core_SQLBeautify, - SQLMinify as core_SQLMinify, - SSDEEP as core_SSDEEP, - SUB as core_SUB, - ScanForEmbeddedFiles as core_ScanForEmbeddedFiles, - ScatterChart as core_ScatterChart, - Scrypt as core_Scrypt, - SeriesChart as core_SeriesChart, - SetDifference as core_SetDifference, - SetIntersection as core_SetIntersection, - SetUnion as core_SetUnion, - Shake as core_Shake, - SharpenImage as core_SharpenImage, - ShowBase64Offsets as core_ShowBase64Offsets, - ShowOnMap as core_ShowOnMap, - Sleep as core_Sleep, - Snefru as core_Snefru, - Sort as core_Sort, - Split as core_Split, - SplitColourChannels as core_SplitColourChannels, - StandardDeviation as core_StandardDeviation, - Streebog as core_Streebog, - Strings as core_Strings, - StripHTMLTags as core_StripHTMLTags, - StripHTTPHeaders as core_StripHTTPHeaders, - Subsection as core_Subsection, - Substitute as core_Substitute, - Subtract as core_Subtract, - Sum as core_Sum, - SwapEndianness as core_SwapEndianness, - SymmetricDifference as core_SymmetricDifference, - TCPIPChecksum as core_TCPIPChecksum, - Tail as core_Tail, - TakeBytes as core_TakeBytes, - Tar as core_Tar, - TextEncodingBruteForce as core_TextEncodingBruteForce, - ToBCD as core_ToBCD, - ToBase as core_ToBase, - ToBase32 as core_ToBase32, - ToBase58 as core_ToBase58, - ToBase62 as core_ToBase62, - ToBase64 as core_ToBase64, - ToBase85 as core_ToBase85, - ToBinary as core_ToBinary, - ToBraille as core_ToBraille, - ToCamelCase as core_ToCamelCase, - ToCaseInsensitiveRegex as core_ToCaseInsensitiveRegex, - ToCharcode as core_ToCharcode, - ToDecimal as core_ToDecimal, - ToHTMLEntity as core_ToHTMLEntity, - ToHex as core_ToHex, - ToHexContent as core_ToHexContent, - ToHexdump as core_ToHexdump, - ToKebabCase as core_ToKebabCase, - ToLowerCase as core_ToLowerCase, - ToMessagePack as core_ToMessagePack, - ToMorseCode as core_ToMorseCode, - ToOctal as core_ToOctal, - ToPunycode as core_ToPunycode, - ToQuotedPrintable as core_ToQuotedPrintable, - ToSnakeCase as core_ToSnakeCase, - ToTable as core_ToTable, - ToUNIXTimestamp as core_ToUNIXTimestamp, - ToUpperCase as core_ToUpperCase, - TranslateDateTimeFormat as core_TranslateDateTimeFormat, - TripleDESDecrypt as core_TripleDESDecrypt, - TripleDESEncrypt as core_TripleDESEncrypt, - Typex as core_Typex, - UNIXTimestampToWindowsFiletime as core_UNIXTimestampToWindowsFiletime, - URLDecode as core_URLDecode, - URLEncode as core_URLEncode, - UnescapeString as core_UnescapeString, - UnescapeUnicodeCharacters as core_UnescapeUnicodeCharacters, - Unique as core_Unique, - Untar as core_Untar, - Unzip as core_Unzip, - VarIntDecode as core_VarIntDecode, - VarIntEncode as core_VarIntEncode, - ViewBitPlane as core_ViewBitPlane, - VigenèreDecode as core_VigenèreDecode, - VigenèreEncode as core_VigenèreEncode, - Whirlpool as core_Whirlpool, - WindowsFiletimeToUNIXTimestamp as core_WindowsFiletimeToUNIXTimestamp, - XKCDRandomNumber as core_XKCDRandomNumber, - XMLBeautify as core_XMLBeautify, - XMLMinify as core_XMLMinify, - XOR as core_XOR, - XORBruteForce as core_XORBruteForce, - XPathExpression as core_XPathExpression, - YARARules as core_YARARules, - Zip as core_Zip, - ZlibDeflate as core_ZlibDeflate, - ZlibInflate as core_ZlibInflate, - -} from "../core/operations/index"; - -global.File = File; - -/** - * generateChef - * - * Creates decapitalised, wrapped ops in chef object for default export. - */ -function generateChef() { - return { - "A1Z26CipherDecode": _wrap(core_A1Z26CipherDecode), - "A1Z26CipherEncode": _wrap(core_A1Z26CipherEncode), - "ADD": _wrap(core_ADD), - "AESDecrypt": _wrap(core_AESDecrypt), - "AESEncrypt": _wrap(core_AESEncrypt), - "AND": _wrap(core_AND), - "addLineNumbers": _wrap(core_AddLineNumbers), - "addTextToImage": _wrap(core_AddTextToImage), - "adler32Checksum": _wrap(core_Adler32Checksum), - "affineCipherDecode": _wrap(core_AffineCipherDecode), - "affineCipherEncode": _wrap(core_AffineCipherEncode), - "analyseHash": _wrap(core_AnalyseHash), - "atbashCipher": _wrap(core_AtbashCipher), - "BLAKE2b": _wrap(core_BLAKE2b), - "BLAKE2s": _wrap(core_BLAKE2s), - "BSONDeserialise": _wrap(core_BSONDeserialise), - "BSONSerialise": _wrap(core_BSONSerialise), - "baconCipherDecode": _wrap(core_BaconCipherDecode), - "baconCipherEncode": _wrap(core_BaconCipherEncode), - "bcrypt": _wrap(core_Bcrypt), - "bcryptCompare": _wrap(core_BcryptCompare), - "bcryptParse": _wrap(core_BcryptParse), - "bifidCipherDecode": _wrap(core_BifidCipherDecode), - "bifidCipherEncode": _wrap(core_BifidCipherEncode), - "bitShiftLeft": _wrap(core_BitShiftLeft), - "bitShiftRight": _wrap(core_BitShiftRight), - "blowfishDecrypt": _wrap(core_BlowfishDecrypt), - "blowfishEncrypt": _wrap(core_BlowfishEncrypt), - "blurImage": _wrap(core_BlurImage), - "bombe": _wrap(core_Bombe), - "bzip2Compress": _wrap(core_Bzip2Compress), - "bzip2Decompress": _wrap(core_Bzip2Decompress), - "CRC16Checksum": _wrap(core_CRC16Checksum), - "CRC32Checksum": _wrap(core_CRC32Checksum), - "CRC8Checksum": _wrap(core_CRC8Checksum), - "CSSBeautify": _wrap(core_CSSBeautify), - "CSSMinify": _wrap(core_CSSMinify), - "CSSSelector": _wrap(core_CSSSelector), - "CSVToJSON": _wrap(core_CSVToJSON), - "CTPH": _wrap(core_CTPH), - "cartesianProduct": _wrap(core_CartesianProduct), - "changeIPFormat": _wrap(core_ChangeIPFormat), - "chiSquare": _wrap(core_ChiSquare), - "citrixCTX1Decode": _wrap(core_CitrixCTX1Decode), - "citrixCTX1Encode": _wrap(core_CitrixCTX1Encode), - "compareCTPHHashes": _wrap(core_CompareCTPHHashes), - "compareSSDEEPHashes": _wrap(core_CompareSSDEEPHashes), - "containImage": _wrap(core_ContainImage), - "convertArea": _wrap(core_ConvertArea), - "convertCoordinateFormat": _wrap(core_ConvertCoordinateFormat), - "convertDataUnits": _wrap(core_ConvertDataUnits), - "convertDistance": _wrap(core_ConvertDistance), - "convertImageFormat": _wrap(core_ConvertImageFormat), - "convertMass": _wrap(core_ConvertMass), - "convertSpeed": _wrap(core_ConvertSpeed), - "countOccurrences": _wrap(core_CountOccurrences), - "coverImage": _wrap(core_CoverImage), - "cropImage": _wrap(core_CropImage), - "DESDecrypt": _wrap(core_DESDecrypt), - "DESEncrypt": _wrap(core_DESEncrypt), - "DNSOverHTTPS": _wrap(core_DNSOverHTTPS), - "dechunkHTTPResponse": _wrap(core_DechunkHTTPResponse), - "decodeNetBIOSName": _wrap(core_DecodeNetBIOSName), - "decodeText": _wrap(core_DecodeText), - "defangIPAddresses": _wrap(core_DefangIPAddresses), - "defangURL": _wrap(core_DefangURL), - "deriveEVPKey": _wrap(core_DeriveEVPKey), - "derivePBKDF2Key": _wrap(core_DerivePBKDF2Key), - "detectFileType": _wrap(core_DetectFileType), - "diff": _wrap(core_Diff), - "disassembleX86": _wrap(core_DisassembleX86), - "ditherImage": _wrap(core_DitherImage), - "divide": _wrap(core_Divide), - "dropBytes": _wrap(core_DropBytes), - "encodeNetBIOSName": _wrap(core_EncodeNetBIOSName), - "encodeText": _wrap(core_EncodeText), - "enigma": _wrap(core_Enigma), - "entropy": _wrap(core_Entropy), - "escapeString": _wrap(core_EscapeString), - "escapeUnicodeCharacters": _wrap(core_EscapeUnicodeCharacters), - "expandAlphabetRange": _wrap(core_ExpandAlphabetRange), - "extractDates": _wrap(core_ExtractDates), - "extractDomains": _wrap(core_ExtractDomains), - "extractEXIF": _wrap(core_ExtractEXIF), - "extractEmailAddresses": _wrap(core_ExtractEmailAddresses), - "extractFilePaths": _wrap(core_ExtractFilePaths), - "extractFiles": _wrap(core_ExtractFiles), - "extractIPAddresses": _wrap(core_ExtractIPAddresses), - "extractLSB": _wrap(core_ExtractLSB), - "extractMACAddresses": _wrap(core_ExtractMACAddresses), - "extractRGBA": _wrap(core_ExtractRGBA), - "extractURLs": _wrap(core_ExtractURLs), - "filter": _wrap(core_Filter), - "findReplace": _wrap(core_FindReplace), - "fletcher16Checksum": _wrap(core_Fletcher16Checksum), - "fletcher32Checksum": _wrap(core_Fletcher32Checksum), - "fletcher64Checksum": _wrap(core_Fletcher64Checksum), - "fletcher8Checksum": _wrap(core_Fletcher8Checksum), - "flipImage": _wrap(core_FlipImage), - "formatMACAddresses": _wrap(core_FormatMACAddresses), - "frequencyDistribution": _wrap(core_FrequencyDistribution), - "fromBCD": _wrap(core_FromBCD), - "fromBase": _wrap(core_FromBase), - "fromBase32": _wrap(core_FromBase32), - "fromBase58": _wrap(core_FromBase58), - "fromBase62": _wrap(core_FromBase62), - "fromBase64": _wrap(core_FromBase64), - "fromBase85": _wrap(core_FromBase85), - "fromBinary": _wrap(core_FromBinary), - "fromBraille": _wrap(core_FromBraille), - "fromCaseInsensitiveRegex": _wrap(core_FromCaseInsensitiveRegex), - "fromCharcode": _wrap(core_FromCharcode), - "fromDecimal": _wrap(core_FromDecimal), - "fromHTMLEntity": _wrap(core_FromHTMLEntity), - "fromHex": _wrap(core_FromHex), - "fromHexContent": _wrap(core_FromHexContent), - "fromHexdump": _wrap(core_FromHexdump), - "fromMessagePack": _wrap(core_FromMessagePack), - "fromMorseCode": _wrap(core_FromMorseCode), - "fromOctal": _wrap(core_FromOctal), - "fromPunycode": _wrap(core_FromPunycode), - "fromQuotedPrintable": _wrap(core_FromQuotedPrintable), - "fromUNIXTimestamp": _wrap(core_FromUNIXTimestamp), - "GOSTHash": _wrap(core_GOSTHash), - "generateAllHashes": _wrap(core_GenerateAllHashes), - "generateHOTP": _wrap(core_GenerateHOTP), - "generateLoremIpsum": _wrap(core_GenerateLoremIpsum), - "generatePGPKeyPair": _wrap(core_GeneratePGPKeyPair), - "generateQRCode": _wrap(core_GenerateQRCode), - "generateTOTP": _wrap(core_GenerateTOTP), - "generateUUID": _wrap(core_GenerateUUID), - "genericCodeBeautify": _wrap(core_GenericCodeBeautify), - "groupIPAddresses": _wrap(core_GroupIPAddresses), - "gunzip": _wrap(core_Gunzip), - "gzip": _wrap(core_Gzip), - "HAS160": _wrap(core_HAS160), - "HMAC": _wrap(core_HMAC), - "HTMLToText": _wrap(core_HTMLToText), - "HTTPRequest": _wrap(core_HTTPRequest), - "hammingDistance": _wrap(core_HammingDistance), - "haversineDistance": _wrap(core_HaversineDistance), - "head": _wrap(core_Head), - "heatmapChart": _wrap(core_HeatmapChart), - "hexDensityChart": _wrap(core_HexDensityChart), - "hexToObjectIdentifier": _wrap(core_HexToObjectIdentifier), - "hexToPEM": _wrap(core_HexToPEM), - "imageBrightnessContrast": _wrap(core_ImageBrightnessContrast), - "imageFilter": _wrap(core_ImageFilter), - "imageHueSaturationLightness": _wrap(core_ImageHueSaturationLightness), - "imageOpacity": _wrap(core_ImageOpacity), - "indexOfCoincidence": _wrap(core_IndexOfCoincidence), - "invertImage": _wrap(core_InvertImage), - "JPathExpression": _wrap(core_JPathExpression), - "JSONBeautify": _wrap(core_JSONBeautify), - "JSONMinify": _wrap(core_JSONMinify), - "JSONToCSV": _wrap(core_JSONToCSV), - "JWTDecode": _wrap(core_JWTDecode), - "JWTSign": _wrap(core_JWTSign), - "JWTVerify": _wrap(core_JWTVerify), - "keccak": _wrap(core_Keccak), - "MD2": _wrap(core_MD2), - "MD4": _wrap(core_MD4), - "MD5": _wrap(core_MD5), - "MD6": _wrap(core_MD6), - "magic": _wrap(core_Magic), - "mean": _wrap(core_Mean), - "median": _wrap(core_Median), - "microsoftScriptDecoder": _wrap(core_MicrosoftScriptDecoder), - "multipleBombe": _wrap(core_MultipleBombe), - "multiply": _wrap(core_Multiply), - "NOT": _wrap(core_NOT), - "normaliseImage": _wrap(core_NormaliseImage), - "numberwang": _wrap(core_Numberwang), - "OR": _wrap(core_OR), - "objectIdentifierToHex": _wrap(core_ObjectIdentifierToHex), - "offsetChecker": _wrap(core_OffsetChecker), - "opticalCharacterRecognition": _wrap(core_OpticalCharacterRecognition), - "PEMToHex": _wrap(core_PEMToHex), - "PGPDecrypt": _wrap(core_PGPDecrypt), - "PGPDecryptAndVerify": _wrap(core_PGPDecryptAndVerify), - "PGPEncrypt": _wrap(core_PGPEncrypt), - "PGPEncryptAndSign": _wrap(core_PGPEncryptAndSign), - "PGPVerify": _wrap(core_PGPVerify), - "PHPDeserialize": _wrap(core_PHPDeserialize), - "padLines": _wrap(core_PadLines), - "parseASN1HexString": _wrap(core_ParseASN1HexString), - "parseColourCode": _wrap(core_ParseColourCode), - "parseDateTime": _wrap(core_ParseDateTime), - "parseIPRange": _wrap(core_ParseIPRange), - "parseIPv4Header": _wrap(core_ParseIPv4Header), - "parseIPv6Address": _wrap(core_ParseIPv6Address), - "parseQRCode": _wrap(core_ParseQRCode), - "parseSSHHostKey": _wrap(core_ParseSSHHostKey), - "parseTLV": _wrap(core_ParseTLV), - "parseUDP": _wrap(core_ParseUDP), - "parseUNIXFilePermissions": _wrap(core_ParseUNIXFilePermissions), - "parseURI": _wrap(core_ParseURI), - "parseUserAgent": _wrap(core_ParseUserAgent), - "parseX509Certificate": _wrap(core_ParseX509Certificate), - "playMedia": _wrap(core_PlayMedia), - "powerSet": _wrap(core_PowerSet), - "protobufDecode": _wrap(core_ProtobufDecode), - "pseudoRandomNumberGenerator": _wrap(core_PseudoRandomNumberGenerator), - "RC2Decrypt": _wrap(core_RC2Decrypt), - "RC2Encrypt": _wrap(core_RC2Encrypt), - "RC4": _wrap(core_RC4), - "RC4Drop": _wrap(core_RC4Drop), - "RIPEMD": _wrap(core_RIPEMD), - "ROT13": _wrap(core_ROT13), - "ROT47": _wrap(core_ROT47), - "randomizeColourPalette": _wrap(core_RandomizeColourPalette), - "rawDeflate": _wrap(core_RawDeflate), - "rawInflate": _wrap(core_RawInflate), - "register": _wrap(core_Register), - "regularExpression": _wrap(core_RegularExpression), - "removeDiacritics": _wrap(core_RemoveDiacritics), - "removeEXIF": _wrap(core_RemoveEXIF), - "removeLineNumbers": _wrap(core_RemoveLineNumbers), - "removeNullBytes": _wrap(core_RemoveNullBytes), - "removeWhitespace": _wrap(core_RemoveWhitespace), - "renderImage": _wrap(core_RenderImage), - "renderMarkdown": _wrap(core_RenderMarkdown), - "resizeImage": _wrap(core_ResizeImage), - "Return": _wrap(core_Return), - "reverse": _wrap(core_Reverse), - "rotateImage": _wrap(core_RotateImage), - "rotateLeft": _wrap(core_RotateLeft), - "rotateRight": _wrap(core_RotateRight), - "SHA0": _wrap(core_SHA0), - "SHA1": _wrap(core_SHA1), - "SHA2": _wrap(core_SHA2), - "SHA3": _wrap(core_SHA3), - "SQLBeautify": _wrap(core_SQLBeautify), - "SQLMinify": _wrap(core_SQLMinify), - "SSDEEP": _wrap(core_SSDEEP), - "SUB": _wrap(core_SUB), - "scanForEmbeddedFiles": _wrap(core_ScanForEmbeddedFiles), - "scatterChart": _wrap(core_ScatterChart), - "scrypt": _wrap(core_Scrypt), - "seriesChart": _wrap(core_SeriesChart), - "setDifference": _wrap(core_SetDifference), - "setIntersection": _wrap(core_SetIntersection), - "setUnion": _wrap(core_SetUnion), - "shake": _wrap(core_Shake), - "sharpenImage": _wrap(core_SharpenImage), - "showBase64Offsets": _wrap(core_ShowBase64Offsets), - "showOnMap": _wrap(core_ShowOnMap), - "sleep": _wrap(core_Sleep), - "snefru": _wrap(core_Snefru), - "sort": _wrap(core_Sort), - "split": _wrap(core_Split), - "splitColourChannels": _wrap(core_SplitColourChannels), - "standardDeviation": _wrap(core_StandardDeviation), - "streebog": _wrap(core_Streebog), - "strings": _wrap(core_Strings), - "stripHTMLTags": _wrap(core_StripHTMLTags), - "stripHTTPHeaders": _wrap(core_StripHTTPHeaders), - "subsection": _wrap(core_Subsection), - "substitute": _wrap(core_Substitute), - "subtract": _wrap(core_Subtract), - "sum": _wrap(core_Sum), - "swapEndianness": _wrap(core_SwapEndianness), - "symmetricDifference": _wrap(core_SymmetricDifference), - "TCPIPChecksum": _wrap(core_TCPIPChecksum), - "tail": _wrap(core_Tail), - "takeBytes": _wrap(core_TakeBytes), - "tar": _wrap(core_Tar), - "textEncodingBruteForce": _wrap(core_TextEncodingBruteForce), - "toBCD": _wrap(core_ToBCD), - "toBase": _wrap(core_ToBase), - "toBase32": _wrap(core_ToBase32), - "toBase58": _wrap(core_ToBase58), - "toBase62": _wrap(core_ToBase62), - "toBase64": _wrap(core_ToBase64), - "toBase85": _wrap(core_ToBase85), - "toBinary": _wrap(core_ToBinary), - "toBraille": _wrap(core_ToBraille), - "toCamelCase": _wrap(core_ToCamelCase), - "toCaseInsensitiveRegex": _wrap(core_ToCaseInsensitiveRegex), - "toCharcode": _wrap(core_ToCharcode), - "toDecimal": _wrap(core_ToDecimal), - "toHTMLEntity": _wrap(core_ToHTMLEntity), - "toHex": _wrap(core_ToHex), - "toHexContent": _wrap(core_ToHexContent), - "toHexdump": _wrap(core_ToHexdump), - "toKebabCase": _wrap(core_ToKebabCase), - "toLowerCase": _wrap(core_ToLowerCase), - "toMessagePack": _wrap(core_ToMessagePack), - "toMorseCode": _wrap(core_ToMorseCode), - "toOctal": _wrap(core_ToOctal), - "toPunycode": _wrap(core_ToPunycode), - "toQuotedPrintable": _wrap(core_ToQuotedPrintable), - "toSnakeCase": _wrap(core_ToSnakeCase), - "toTable": _wrap(core_ToTable), - "toUNIXTimestamp": _wrap(core_ToUNIXTimestamp), - "toUpperCase": _wrap(core_ToUpperCase), - "translateDateTimeFormat": _wrap(core_TranslateDateTimeFormat), - "tripleDESDecrypt": _wrap(core_TripleDESDecrypt), - "tripleDESEncrypt": _wrap(core_TripleDESEncrypt), - "typex": _wrap(core_Typex), - "UNIXTimestampToWindowsFiletime": _wrap(core_UNIXTimestampToWindowsFiletime), - "URLDecode": _wrap(core_URLDecode), - "URLEncode": _wrap(core_URLEncode), - "unescapeString": _wrap(core_UnescapeString), - "unescapeUnicodeCharacters": _wrap(core_UnescapeUnicodeCharacters), - "unique": _wrap(core_Unique), - "untar": _wrap(core_Untar), - "unzip": _wrap(core_Unzip), - "varIntDecode": _wrap(core_VarIntDecode), - "varIntEncode": _wrap(core_VarIntEncode), - "viewBitPlane": _wrap(core_ViewBitPlane), - "vigenèreDecode": _wrap(core_VigenèreDecode), - "vigenèreEncode": _wrap(core_VigenèreEncode), - "whirlpool": _wrap(core_Whirlpool), - "windowsFiletimeToUNIXTimestamp": _wrap(core_WindowsFiletimeToUNIXTimestamp), - "XKCDRandomNumber": _wrap(core_XKCDRandomNumber), - "XMLBeautify": _wrap(core_XMLBeautify), - "XMLMinify": _wrap(core_XMLMinify), - "XOR": _wrap(core_XOR), - "XORBruteForce": _wrap(core_XORBruteForce), - "XPathExpression": _wrap(core_XPathExpression), - "YARARules": _wrap(core_YARARules), - "zip": _wrap(core_Zip), - "zlibDeflate": _wrap(core_ZlibDeflate), - "zlibInflate": _wrap(core_ZlibInflate), - "fork": _explainExludedFunction("Fork"), - "merge": _explainExludedFunction("Merge"), - "jump": _explainExludedFunction("Jump"), - "conditionalJump": _explainExludedFunction("ConditionalJump"), - "label": _explainExludedFunction("Label"), - "comment": _explainExludedFunction("Comment"), - "javaScriptBeautify": _explainExludedFunction("JavaScriptBeautify"), - "javaScriptMinify": _explainExludedFunction("JavaScriptMinify"), - "javaScriptParser": _explainExludedFunction("JavaScriptParser"), - "syntaxHighlighter": _explainExludedFunction("SyntaxHighlighter"), - }; -} - -const chef = generateChef(); -// Add some additional features to chef object. -chef.help = help; -chef.Dish = NodeDish; - -// Define consts here so we can add to top-level export - wont allow -// export of chef property. -const A1Z26CipherDecode = chef.A1Z26CipherDecode; -const A1Z26CipherEncode = chef.A1Z26CipherEncode; -const ADD = chef.ADD; -const AESDecrypt = chef.AESDecrypt; -const AESEncrypt = chef.AESEncrypt; -const AND = chef.AND; -const addLineNumbers = chef.addLineNumbers; -const addTextToImage = chef.addTextToImage; -const adler32Checksum = chef.adler32Checksum; -const affineCipherDecode = chef.affineCipherDecode; -const affineCipherEncode = chef.affineCipherEncode; -const analyseHash = chef.analyseHash; -const atbashCipher = chef.atbashCipher; -const BLAKE2b = chef.BLAKE2b; -const BLAKE2s = chef.BLAKE2s; -const BSONDeserialise = chef.BSONDeserialise; -const BSONSerialise = chef.BSONSerialise; -const baconCipherDecode = chef.baconCipherDecode; -const baconCipherEncode = chef.baconCipherEncode; -const bcrypt = chef.bcrypt; -const bcryptCompare = chef.bcryptCompare; -const bcryptParse = chef.bcryptParse; -const bifidCipherDecode = chef.bifidCipherDecode; -const bifidCipherEncode = chef.bifidCipherEncode; -const bitShiftLeft = chef.bitShiftLeft; -const bitShiftRight = chef.bitShiftRight; -const blowfishDecrypt = chef.blowfishDecrypt; -const blowfishEncrypt = chef.blowfishEncrypt; -const blurImage = chef.blurImage; -const bombe = chef.bombe; -const bzip2Compress = chef.bzip2Compress; -const bzip2Decompress = chef.bzip2Decompress; -const CRC16Checksum = chef.CRC16Checksum; -const CRC32Checksum = chef.CRC32Checksum; -const CRC8Checksum = chef.CRC8Checksum; -const CSSBeautify = chef.CSSBeautify; -const CSSMinify = chef.CSSMinify; -const CSSSelector = chef.CSSSelector; -const CSVToJSON = chef.CSVToJSON; -const CTPH = chef.CTPH; -const cartesianProduct = chef.cartesianProduct; -const changeIPFormat = chef.changeIPFormat; -const chiSquare = chef.chiSquare; -const citrixCTX1Decode = chef.citrixCTX1Decode; -const citrixCTX1Encode = chef.citrixCTX1Encode; -const comment = chef.comment; -const compareCTPHHashes = chef.compareCTPHHashes; -const compareSSDEEPHashes = chef.compareSSDEEPHashes; -const conditionalJump = chef.conditionalJump; -const containImage = chef.containImage; -const convertArea = chef.convertArea; -const convertCoordinateFormat = chef.convertCoordinateFormat; -const convertDataUnits = chef.convertDataUnits; -const convertDistance = chef.convertDistance; -const convertImageFormat = chef.convertImageFormat; -const convertMass = chef.convertMass; -const convertSpeed = chef.convertSpeed; -const countOccurrences = chef.countOccurrences; -const coverImage = chef.coverImage; -const cropImage = chef.cropImage; -const DESDecrypt = chef.DESDecrypt; -const DESEncrypt = chef.DESEncrypt; -const DNSOverHTTPS = chef.DNSOverHTTPS; -const dechunkHTTPResponse = chef.dechunkHTTPResponse; -const decodeNetBIOSName = chef.decodeNetBIOSName; -const decodeText = chef.decodeText; -const defangIPAddresses = chef.defangIPAddresses; -const defangURL = chef.defangURL; -const deriveEVPKey = chef.deriveEVPKey; -const derivePBKDF2Key = chef.derivePBKDF2Key; -const detectFileType = chef.detectFileType; -const diff = chef.diff; -const disassembleX86 = chef.disassembleX86; -const ditherImage = chef.ditherImage; -const divide = chef.divide; -const dropBytes = chef.dropBytes; -const encodeNetBIOSName = chef.encodeNetBIOSName; -const encodeText = chef.encodeText; -const enigma = chef.enigma; -const entropy = chef.entropy; -const escapeString = chef.escapeString; -const escapeUnicodeCharacters = chef.escapeUnicodeCharacters; -const expandAlphabetRange = chef.expandAlphabetRange; -const extractDates = chef.extractDates; -const extractDomains = chef.extractDomains; -const extractEXIF = chef.extractEXIF; -const extractEmailAddresses = chef.extractEmailAddresses; -const extractFilePaths = chef.extractFilePaths; -const extractFiles = chef.extractFiles; -const extractIPAddresses = chef.extractIPAddresses; -const extractLSB = chef.extractLSB; -const extractMACAddresses = chef.extractMACAddresses; -const extractRGBA = chef.extractRGBA; -const extractURLs = chef.extractURLs; -const filter = chef.filter; -const findReplace = chef.findReplace; -const fletcher16Checksum = chef.fletcher16Checksum; -const fletcher32Checksum = chef.fletcher32Checksum; -const fletcher64Checksum = chef.fletcher64Checksum; -const fletcher8Checksum = chef.fletcher8Checksum; -const flipImage = chef.flipImage; -const fork = chef.fork; -const formatMACAddresses = chef.formatMACAddresses; -const frequencyDistribution = chef.frequencyDistribution; -const fromBCD = chef.fromBCD; -const fromBase = chef.fromBase; -const fromBase32 = chef.fromBase32; -const fromBase58 = chef.fromBase58; -const fromBase62 = chef.fromBase62; -const fromBase64 = chef.fromBase64; -const fromBase85 = chef.fromBase85; -const fromBinary = chef.fromBinary; -const fromBraille = chef.fromBraille; -const fromCaseInsensitiveRegex = chef.fromCaseInsensitiveRegex; -const fromCharcode = chef.fromCharcode; -const fromDecimal = chef.fromDecimal; -const fromHTMLEntity = chef.fromHTMLEntity; -const fromHex = chef.fromHex; -const fromHexContent = chef.fromHexContent; -const fromHexdump = chef.fromHexdump; -const fromMessagePack = chef.fromMessagePack; -const fromMorseCode = chef.fromMorseCode; -const fromOctal = chef.fromOctal; -const fromPunycode = chef.fromPunycode; -const fromQuotedPrintable = chef.fromQuotedPrintable; -const fromUNIXTimestamp = chef.fromUNIXTimestamp; -const GOSTHash = chef.GOSTHash; -const generateAllHashes = chef.generateAllHashes; -const generateHOTP = chef.generateHOTP; -const generateLoremIpsum = chef.generateLoremIpsum; -const generatePGPKeyPair = chef.generatePGPKeyPair; -const generateQRCode = chef.generateQRCode; -const generateTOTP = chef.generateTOTP; -const generateUUID = chef.generateUUID; -const genericCodeBeautify = chef.genericCodeBeautify; -const groupIPAddresses = chef.groupIPAddresses; -const gunzip = chef.gunzip; -const gzip = chef.gzip; -const HAS160 = chef.HAS160; -const HMAC = chef.HMAC; -const HTMLToText = chef.HTMLToText; -const HTTPRequest = chef.HTTPRequest; -const hammingDistance = chef.hammingDistance; -const haversineDistance = chef.haversineDistance; -const head = chef.head; -const heatmapChart = chef.heatmapChart; -const hexDensityChart = chef.hexDensityChart; -const hexToObjectIdentifier = chef.hexToObjectIdentifier; -const hexToPEM = chef.hexToPEM; -const imageBrightnessContrast = chef.imageBrightnessContrast; -const imageFilter = chef.imageFilter; -const imageHueSaturationLightness = chef.imageHueSaturationLightness; -const imageOpacity = chef.imageOpacity; -const indexOfCoincidence = chef.indexOfCoincidence; -const invertImage = chef.invertImage; -const JPathExpression = chef.JPathExpression; -const JSONBeautify = chef.JSONBeautify; -const JSONMinify = chef.JSONMinify; -const JSONToCSV = chef.JSONToCSV; -const JWTDecode = chef.JWTDecode; -const JWTSign = chef.JWTSign; -const JWTVerify = chef.JWTVerify; -const javaScriptBeautify = chef.javaScriptBeautify; -const javaScriptMinify = chef.javaScriptMinify; -const javaScriptParser = chef.javaScriptParser; -const jump = chef.jump; -const keccak = chef.keccak; -const label = chef.label; -const MD2 = chef.MD2; -const MD4 = chef.MD4; -const MD5 = chef.MD5; -const MD6 = chef.MD6; -const magic = chef.magic; -const mean = chef.mean; -const median = chef.median; -const merge = chef.merge; -const microsoftScriptDecoder = chef.microsoftScriptDecoder; -const multipleBombe = chef.multipleBombe; -const multiply = chef.multiply; -const NOT = chef.NOT; -const normaliseImage = chef.normaliseImage; -const numberwang = chef.numberwang; -const OR = chef.OR; -const objectIdentifierToHex = chef.objectIdentifierToHex; -const offsetChecker = chef.offsetChecker; -const opticalCharacterRecognition = chef.opticalCharacterRecognition; -const PEMToHex = chef.PEMToHex; -const PGPDecrypt = chef.PGPDecrypt; -const PGPDecryptAndVerify = chef.PGPDecryptAndVerify; -const PGPEncrypt = chef.PGPEncrypt; -const PGPEncryptAndSign = chef.PGPEncryptAndSign; -const PGPVerify = chef.PGPVerify; -const PHPDeserialize = chef.PHPDeserialize; -const padLines = chef.padLines; -const parseASN1HexString = chef.parseASN1HexString; -const parseColourCode = chef.parseColourCode; -const parseDateTime = chef.parseDateTime; -const parseIPRange = chef.parseIPRange; -const parseIPv4Header = chef.parseIPv4Header; -const parseIPv6Address = chef.parseIPv6Address; -const parseQRCode = chef.parseQRCode; -const parseSSHHostKey = chef.parseSSHHostKey; -const parseTLV = chef.parseTLV; -const parseUDP = chef.parseUDP; -const parseUNIXFilePermissions = chef.parseUNIXFilePermissions; -const parseURI = chef.parseURI; -const parseUserAgent = chef.parseUserAgent; -const parseX509Certificate = chef.parseX509Certificate; -const playMedia = chef.playMedia; -const powerSet = chef.powerSet; -const protobufDecode = chef.protobufDecode; -const pseudoRandomNumberGenerator = chef.pseudoRandomNumberGenerator; -const RC2Decrypt = chef.RC2Decrypt; -const RC2Encrypt = chef.RC2Encrypt; -const RC4 = chef.RC4; -const RC4Drop = chef.RC4Drop; -const RIPEMD = chef.RIPEMD; -const ROT13 = chef.ROT13; -const ROT47 = chef.ROT47; -const randomizeColourPalette = chef.randomizeColourPalette; -const rawDeflate = chef.rawDeflate; -const rawInflate = chef.rawInflate; -const register = chef.register; -const regularExpression = chef.regularExpression; -const removeDiacritics = chef.removeDiacritics; -const removeEXIF = chef.removeEXIF; -const removeLineNumbers = chef.removeLineNumbers; -const removeNullBytes = chef.removeNullBytes; -const removeWhitespace = chef.removeWhitespace; -const renderImage = chef.renderImage; -const renderMarkdown = chef.renderMarkdown; -const resizeImage = chef.resizeImage; -const Return = chef.Return; -const reverse = chef.reverse; -const rotateImage = chef.rotateImage; -const rotateLeft = chef.rotateLeft; -const rotateRight = chef.rotateRight; -const SHA0 = chef.SHA0; -const SHA1 = chef.SHA1; -const SHA2 = chef.SHA2; -const SHA3 = chef.SHA3; -const SQLBeautify = chef.SQLBeautify; -const SQLMinify = chef.SQLMinify; -const SSDEEP = chef.SSDEEP; -const SUB = chef.SUB; -const scanForEmbeddedFiles = chef.scanForEmbeddedFiles; -const scatterChart = chef.scatterChart; -const scrypt = chef.scrypt; -const seriesChart = chef.seriesChart; -const setDifference = chef.setDifference; -const setIntersection = chef.setIntersection; -const setUnion = chef.setUnion; -const shake = chef.shake; -const sharpenImage = chef.sharpenImage; -const showBase64Offsets = chef.showBase64Offsets; -const showOnMap = chef.showOnMap; -const sleep = chef.sleep; -const snefru = chef.snefru; -const sort = chef.sort; -const split = chef.split; -const splitColourChannels = chef.splitColourChannels; -const standardDeviation = chef.standardDeviation; -const streebog = chef.streebog; -const strings = chef.strings; -const stripHTMLTags = chef.stripHTMLTags; -const stripHTTPHeaders = chef.stripHTTPHeaders; -const subsection = chef.subsection; -const substitute = chef.substitute; -const subtract = chef.subtract; -const sum = chef.sum; -const swapEndianness = chef.swapEndianness; -const symmetricDifference = chef.symmetricDifference; -const syntaxHighlighter = chef.syntaxHighlighter; -const TCPIPChecksum = chef.TCPIPChecksum; -const tail = chef.tail; -const takeBytes = chef.takeBytes; -const tar = chef.tar; -const textEncodingBruteForce = chef.textEncodingBruteForce; -const toBCD = chef.toBCD; -const toBase = chef.toBase; -const toBase32 = chef.toBase32; -const toBase58 = chef.toBase58; -const toBase62 = chef.toBase62; -const toBase64 = chef.toBase64; -const toBase85 = chef.toBase85; -const toBinary = chef.toBinary; -const toBraille = chef.toBraille; -const toCamelCase = chef.toCamelCase; -const toCaseInsensitiveRegex = chef.toCaseInsensitiveRegex; -const toCharcode = chef.toCharcode; -const toDecimal = chef.toDecimal; -const toHTMLEntity = chef.toHTMLEntity; -const toHex = chef.toHex; -const toHexContent = chef.toHexContent; -const toHexdump = chef.toHexdump; -const toKebabCase = chef.toKebabCase; -const toLowerCase = chef.toLowerCase; -const toMessagePack = chef.toMessagePack; -const toMorseCode = chef.toMorseCode; -const toOctal = chef.toOctal; -const toPunycode = chef.toPunycode; -const toQuotedPrintable = chef.toQuotedPrintable; -const toSnakeCase = chef.toSnakeCase; -const toTable = chef.toTable; -const toUNIXTimestamp = chef.toUNIXTimestamp; -const toUpperCase = chef.toUpperCase; -const translateDateTimeFormat = chef.translateDateTimeFormat; -const tripleDESDecrypt = chef.tripleDESDecrypt; -const tripleDESEncrypt = chef.tripleDESEncrypt; -const typex = chef.typex; -const UNIXTimestampToWindowsFiletime = chef.UNIXTimestampToWindowsFiletime; -const URLDecode = chef.URLDecode; -const URLEncode = chef.URLEncode; -const unescapeString = chef.unescapeString; -const unescapeUnicodeCharacters = chef.unescapeUnicodeCharacters; -const unique = chef.unique; -const untar = chef.untar; -const unzip = chef.unzip; -const varIntDecode = chef.varIntDecode; -const varIntEncode = chef.varIntEncode; -const viewBitPlane = chef.viewBitPlane; -const vigenèreDecode = chef.vigenèreDecode; -const vigenèreEncode = chef.vigenèreEncode; -const whirlpool = chef.whirlpool; -const windowsFiletimeToUNIXTimestamp = chef.windowsFiletimeToUNIXTimestamp; -const XKCDRandomNumber = chef.XKCDRandomNumber; -const XMLBeautify = chef.XMLBeautify; -const XMLMinify = chef.XMLMinify; -const XOR = chef.XOR; -const XORBruteForce = chef.XORBruteForce; -const XPathExpression = chef.XPathExpression; -const YARARules = chef.YARARules; -const zip = chef.zip; -const zlibDeflate = chef.zlibDeflate; -const zlibInflate = chef.zlibInflate; - - -// Define array of all operations to create register for bake. -const operations = [ - A1Z26CipherDecode, - A1Z26CipherEncode, - ADD, - AESDecrypt, - AESEncrypt, - AND, - addLineNumbers, - addTextToImage, - adler32Checksum, - affineCipherDecode, - affineCipherEncode, - analyseHash, - atbashCipher, - BLAKE2b, - BLAKE2s, - BSONDeserialise, - BSONSerialise, - baconCipherDecode, - baconCipherEncode, - bcrypt, - bcryptCompare, - bcryptParse, - bifidCipherDecode, - bifidCipherEncode, - bitShiftLeft, - bitShiftRight, - blowfishDecrypt, - blowfishEncrypt, - blurImage, - bombe, - bzip2Compress, - bzip2Decompress, - CRC16Checksum, - CRC32Checksum, - CRC8Checksum, - CSSBeautify, - CSSMinify, - CSSSelector, - CSVToJSON, - CTPH, - cartesianProduct, - changeIPFormat, - chiSquare, - citrixCTX1Decode, - citrixCTX1Encode, - comment, - compareCTPHHashes, - compareSSDEEPHashes, - conditionalJump, - containImage, - convertArea, - convertCoordinateFormat, - convertDataUnits, - convertDistance, - convertImageFormat, - convertMass, - convertSpeed, - countOccurrences, - coverImage, - cropImage, - DESDecrypt, - DESEncrypt, - DNSOverHTTPS, - dechunkHTTPResponse, - decodeNetBIOSName, - decodeText, - defangIPAddresses, - defangURL, - deriveEVPKey, - derivePBKDF2Key, - detectFileType, - diff, - disassembleX86, - ditherImage, - divide, - dropBytes, - encodeNetBIOSName, - encodeText, - enigma, - entropy, - escapeString, - escapeUnicodeCharacters, - expandAlphabetRange, - extractDates, - extractDomains, - extractEXIF, - extractEmailAddresses, - extractFilePaths, - extractFiles, - extractIPAddresses, - extractLSB, - extractMACAddresses, - extractRGBA, - extractURLs, - filter, - findReplace, - fletcher16Checksum, - fletcher32Checksum, - fletcher64Checksum, - fletcher8Checksum, - flipImage, - fork, - formatMACAddresses, - frequencyDistribution, - fromBCD, - fromBase, - fromBase32, - fromBase58, - fromBase62, - fromBase64, - fromBase85, - fromBinary, - fromBraille, - fromCaseInsensitiveRegex, - fromCharcode, - fromDecimal, - fromHTMLEntity, - fromHex, - fromHexContent, - fromHexdump, - fromMessagePack, - fromMorseCode, - fromOctal, - fromPunycode, - fromQuotedPrintable, - fromUNIXTimestamp, - GOSTHash, - generateAllHashes, - generateHOTP, - generateLoremIpsum, - generatePGPKeyPair, - generateQRCode, - generateTOTP, - generateUUID, - genericCodeBeautify, - groupIPAddresses, - gunzip, - gzip, - HAS160, - HMAC, - HTMLToText, - HTTPRequest, - hammingDistance, - haversineDistance, - head, - heatmapChart, - hexDensityChart, - hexToObjectIdentifier, - hexToPEM, - imageBrightnessContrast, - imageFilter, - imageHueSaturationLightness, - imageOpacity, - indexOfCoincidence, - invertImage, - JPathExpression, - JSONBeautify, - JSONMinify, - JSONToCSV, - JWTDecode, - JWTSign, - JWTVerify, - javaScriptBeautify, - javaScriptMinify, - javaScriptParser, - jump, - keccak, - label, - MD2, - MD4, - MD5, - MD6, - magic, - mean, - median, - merge, - microsoftScriptDecoder, - multipleBombe, - multiply, - NOT, - normaliseImage, - numberwang, - OR, - objectIdentifierToHex, - offsetChecker, - opticalCharacterRecognition, - PEMToHex, - PGPDecrypt, - PGPDecryptAndVerify, - PGPEncrypt, - PGPEncryptAndSign, - PGPVerify, - PHPDeserialize, - padLines, - parseASN1HexString, - parseColourCode, - parseDateTime, - parseIPRange, - parseIPv4Header, - parseIPv6Address, - parseQRCode, - parseSSHHostKey, - parseTLV, - parseUDP, - parseUNIXFilePermissions, - parseURI, - parseUserAgent, - parseX509Certificate, - playMedia, - powerSet, - protobufDecode, - pseudoRandomNumberGenerator, - RC2Decrypt, - RC2Encrypt, - RC4, - RC4Drop, - RIPEMD, - ROT13, - ROT47, - randomizeColourPalette, - rawDeflate, - rawInflate, - register, - regularExpression, - removeDiacritics, - removeEXIF, - removeLineNumbers, - removeNullBytes, - removeWhitespace, - renderImage, - renderMarkdown, - resizeImage, - Return, - reverse, - rotateImage, - rotateLeft, - rotateRight, - SHA0, - SHA1, - SHA2, - SHA3, - SQLBeautify, - SQLMinify, - SSDEEP, - SUB, - scanForEmbeddedFiles, - scatterChart, - scrypt, - seriesChart, - setDifference, - setIntersection, - setUnion, - shake, - sharpenImage, - showBase64Offsets, - showOnMap, - sleep, - snefru, - sort, - split, - splitColourChannels, - standardDeviation, - streebog, - strings, - stripHTMLTags, - stripHTTPHeaders, - subsection, - substitute, - subtract, - sum, - swapEndianness, - symmetricDifference, - syntaxHighlighter, - TCPIPChecksum, - tail, - takeBytes, - tar, - textEncodingBruteForce, - toBCD, - toBase, - toBase32, - toBase58, - toBase62, - toBase64, - toBase85, - toBinary, - toBraille, - toCamelCase, - toCaseInsensitiveRegex, - toCharcode, - toDecimal, - toHTMLEntity, - toHex, - toHexContent, - toHexdump, - toKebabCase, - toLowerCase, - toMessagePack, - toMorseCode, - toOctal, - toPunycode, - toQuotedPrintable, - toSnakeCase, - toTable, - toUNIXTimestamp, - toUpperCase, - translateDateTimeFormat, - tripleDESDecrypt, - tripleDESEncrypt, - typex, - UNIXTimestampToWindowsFiletime, - URLDecode, - URLEncode, - unescapeString, - unescapeUnicodeCharacters, - unique, - untar, - unzip, - varIntDecode, - varIntEncode, - viewBitPlane, - vigenèreDecode, - vigenèreEncode, - whirlpool, - windowsFiletimeToUNIXTimestamp, - XKCDRandomNumber, - XMLBeautify, - XMLMinify, - XOR, - XORBruteForce, - XPathExpression, - YARARules, - zip, - zlibDeflate, - zlibInflate, -]; - -const prebaked = bake(operations); -chef.bake = prebaked; -export default chef; - -// Operations as top level exports. -export { - operations, - A1Z26CipherDecode, - A1Z26CipherEncode, - ADD, - AESDecrypt, - AESEncrypt, - AND, - addLineNumbers, - addTextToImage, - adler32Checksum, - affineCipherDecode, - affineCipherEncode, - analyseHash, - atbashCipher, - BLAKE2b, - BLAKE2s, - BSONDeserialise, - BSONSerialise, - baconCipherDecode, - baconCipherEncode, - bcrypt, - bcryptCompare, - bcryptParse, - bifidCipherDecode, - bifidCipherEncode, - bitShiftLeft, - bitShiftRight, - blowfishDecrypt, - blowfishEncrypt, - blurImage, - bombe, - bzip2Compress, - bzip2Decompress, - CRC16Checksum, - CRC32Checksum, - CRC8Checksum, - CSSBeautify, - CSSMinify, - CSSSelector, - CSVToJSON, - CTPH, - cartesianProduct, - changeIPFormat, - chiSquare, - citrixCTX1Decode, - citrixCTX1Encode, - comment, - compareCTPHHashes, - compareSSDEEPHashes, - conditionalJump, - containImage, - convertArea, - convertCoordinateFormat, - convertDataUnits, - convertDistance, - convertImageFormat, - convertMass, - convertSpeed, - countOccurrences, - coverImage, - cropImage, - DESDecrypt, - DESEncrypt, - DNSOverHTTPS, - dechunkHTTPResponse, - decodeNetBIOSName, - decodeText, - defangIPAddresses, - defangURL, - deriveEVPKey, - derivePBKDF2Key, - detectFileType, - diff, - disassembleX86, - ditherImage, - divide, - dropBytes, - encodeNetBIOSName, - encodeText, - enigma, - entropy, - escapeString, - escapeUnicodeCharacters, - expandAlphabetRange, - extractDates, - extractDomains, - extractEXIF, - extractEmailAddresses, - extractFilePaths, - extractFiles, - extractIPAddresses, - extractLSB, - extractMACAddresses, - extractRGBA, - extractURLs, - filter, - findReplace, - fletcher16Checksum, - fletcher32Checksum, - fletcher64Checksum, - fletcher8Checksum, - flipImage, - fork, - formatMACAddresses, - frequencyDistribution, - fromBCD, - fromBase, - fromBase32, - fromBase58, - fromBase62, - fromBase64, - fromBase85, - fromBinary, - fromBraille, - fromCaseInsensitiveRegex, - fromCharcode, - fromDecimal, - fromHTMLEntity, - fromHex, - fromHexContent, - fromHexdump, - fromMessagePack, - fromMorseCode, - fromOctal, - fromPunycode, - fromQuotedPrintable, - fromUNIXTimestamp, - GOSTHash, - generateAllHashes, - generateHOTP, - generateLoremIpsum, - generatePGPKeyPair, - generateQRCode, - generateTOTP, - generateUUID, - genericCodeBeautify, - groupIPAddresses, - gunzip, - gzip, - HAS160, - HMAC, - HTMLToText, - HTTPRequest, - hammingDistance, - haversineDistance, - head, - heatmapChart, - hexDensityChart, - hexToObjectIdentifier, - hexToPEM, - imageBrightnessContrast, - imageFilter, - imageHueSaturationLightness, - imageOpacity, - indexOfCoincidence, - invertImage, - JPathExpression, - JSONBeautify, - JSONMinify, - JSONToCSV, - JWTDecode, - JWTSign, - JWTVerify, - javaScriptBeautify, - javaScriptMinify, - javaScriptParser, - jump, - keccak, - label, - MD2, - MD4, - MD5, - MD6, - magic, - mean, - median, - merge, - microsoftScriptDecoder, - multipleBombe, - multiply, - NOT, - normaliseImage, - numberwang, - OR, - objectIdentifierToHex, - offsetChecker, - opticalCharacterRecognition, - PEMToHex, - PGPDecrypt, - PGPDecryptAndVerify, - PGPEncrypt, - PGPEncryptAndSign, - PGPVerify, - PHPDeserialize, - padLines, - parseASN1HexString, - parseColourCode, - parseDateTime, - parseIPRange, - parseIPv4Header, - parseIPv6Address, - parseQRCode, - parseSSHHostKey, - parseTLV, - parseUDP, - parseUNIXFilePermissions, - parseURI, - parseUserAgent, - parseX509Certificate, - playMedia, - powerSet, - protobufDecode, - pseudoRandomNumberGenerator, - RC2Decrypt, - RC2Encrypt, - RC4, - RC4Drop, - RIPEMD, - ROT13, - ROT47, - randomizeColourPalette, - rawDeflate, - rawInflate, - register, - regularExpression, - removeDiacritics, - removeEXIF, - removeLineNumbers, - removeNullBytes, - removeWhitespace, - renderImage, - renderMarkdown, - resizeImage, - Return, - reverse, - rotateImage, - rotateLeft, - rotateRight, - SHA0, - SHA1, - SHA2, - SHA3, - SQLBeautify, - SQLMinify, - SSDEEP, - SUB, - scanForEmbeddedFiles, - scatterChart, - scrypt, - seriesChart, - setDifference, - setIntersection, - setUnion, - shake, - sharpenImage, - showBase64Offsets, - showOnMap, - sleep, - snefru, - sort, - split, - splitColourChannels, - standardDeviation, - streebog, - strings, - stripHTMLTags, - stripHTTPHeaders, - subsection, - substitute, - subtract, - sum, - swapEndianness, - symmetricDifference, - syntaxHighlighter, - TCPIPChecksum, - tail, - takeBytes, - tar, - textEncodingBruteForce, - toBCD, - toBase, - toBase32, - toBase58, - toBase62, - toBase64, - toBase85, - toBinary, - toBraille, - toCamelCase, - toCaseInsensitiveRegex, - toCharcode, - toDecimal, - toHTMLEntity, - toHex, - toHexContent, - toHexdump, - toKebabCase, - toLowerCase, - toMessagePack, - toMorseCode, - toOctal, - toPunycode, - toQuotedPrintable, - toSnakeCase, - toTable, - toUNIXTimestamp, - toUpperCase, - translateDateTimeFormat, - tripleDESDecrypt, - tripleDESEncrypt, - typex, - UNIXTimestampToWindowsFiletime, - URLDecode, - URLEncode, - unescapeString, - unescapeUnicodeCharacters, - unique, - untar, - unzip, - varIntDecode, - varIntEncode, - viewBitPlane, - vigenèreDecode, - vigenèreEncode, - whirlpool, - windowsFiletimeToUNIXTimestamp, - XKCDRandomNumber, - XMLBeautify, - XMLMinify, - XOR, - XORBruteForce, - XPathExpression, - YARARules, - zip, - zlibDeflate, - zlibInflate, - NodeDish as Dish, - prebaked as bake, - help, - OperationError, - ExcludedOperationError, - DishError, -}; From f8115671ee90e50401a613fd77bd91ff751488b5 Mon Sep 17 00:00:00 2001 From: d98762625 Date: Mon, 7 Oct 2019 18:05:28 +0100 Subject: [PATCH 0042/1024] fix linting tests --- tests/node/tests/operations.mjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 3ffedb23..42ba74c9 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -137,7 +137,7 @@ Tiger-128`; const result = await chef.bcrypt("Put a Sock In It"); const strResult = result.toString(); assert.equal(strResult.length, 60); - assert.equal(strResult.slice(0,7), "$2a$10$"); + assert.equal(strResult.slice(0, 7), "$2a$10$"); }), it("bcryptCompare", async() => { @@ -787,9 +787,9 @@ qzXhatD7eP41N/FC3SfhyhX7hFbagO7MJG2AS5bmSvcuCdcNwDwXd94B+7bfYgJI RKbr272yDwkyzGn+zmxzvMUt6ak5PNzfmadvhMZvIfDftswpGYpXIUU0GObOgP2t pCGTErs= =Ya+/ ------END PGP PRIVATE KEY BLOCK-----` +-----END PGP PRIVATE KEY BLOCK-----`; - const message = "A Fool and His Money are Soon Parted" + const message = "A Fool and His Money are Soon Parted"; const encrypted = await chef.PGPEncrypt(message, { publicKeyOfRecipient: pbkey, @@ -797,7 +797,7 @@ pCGTErs= const result = await chef.PGPDecrypt(encrypted, { privateKeyOfRecipient: privateKey, }); - + assert.strictEqual(result.toString(), message); }), From ba2a5b195c889b360177c452e76dd7bc88026541 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 9 Oct 2019 16:12:41 +0100 Subject: [PATCH 0043/1024] Improved PE extractor to also carve the overlay if possible --- src/core/lib/FileSignatures.mjs | 36 +++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 27d2e676..40eacff4 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2451,7 +2451,7 @@ export function extractJPEG(bytes, offset) { export function extractMZPE(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - // Move to PE header pointer + // Read pointer to PE header stream.moveTo(0x3c); const peAddress = stream.readInt(4, "le"); @@ -2462,12 +2462,36 @@ export function extractMZPE(bytes, offset) { stream.moveForwardsBy(6); const numSections = stream.readInt(2, "le"); - // Get optional header size - stream.moveForwardsBy(12); - const optionalHeaderSize = stream.readInt(2, "le"); + // Read Optional Header Magic to determine the state of the image file + // 0x10b = normal exeuctable, 0x107 = ROM image, 0x20b = PE32+ executable + stream.moveForwardsBy(16); + const optionalMagic = stream.readInt(2, "le"); + const pe32Plus = optionalMagic === 0x20b; - // Move past optional header to section header - stream.moveForwardsBy(2 + optionalHeaderSize); + // Move to Data Directory + const dataDirectoryOffset = pe32Plus ? 112 : 96; + stream.moveForwardsBy(dataDirectoryOffset - 2); + + // Read Certificate Table address and size (IMAGE_DIRECTORY_ENTRY_SECURITY) + stream.moveForwardsBy(32); + const certTableAddress = stream.readInt(4, "le"); + const certTableSize = stream.readInt(4, "le"); + + // PE files can contain extra data appended to the end of the file called an "overlay". + // This data is not covered by the PE header and could be any arbitrary format, so its + // length cannot be determined without contextual information. + // However, the Attribute Certificate Table is stored in the overlay - usually right at + // the end. Therefore, if this table is defined, we can use its offset and size to carve + // out the entire PE file, including the overlay. + // If the Certificate Table is not defined, we continue to parse the PE file as best we + // can up to the end of the final section, not including any appended data in the overlay. + if (certTableAddress > 0) { + stream.moveTo(certTableAddress + certTableSize); + return stream.carve(); + } + + // Move past Optional Header to Section Header + stream.moveForwardsBy(88); // Move to final section header stream.moveForwardsBy((numSections - 1) * 0x28); From 5314a456cb1197708c6d45850a69f7aeadedc980 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 9 Oct 2019 16:12:46 +0100 Subject: [PATCH 0044/1024] 9.7.8 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11c80ca0..875ec9af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.7", + "version": "9.7.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e9c33484..4baba293 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.7", + "version": "9.7.8", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From c66703f0ca32de11c114d56e4a442e60e94d07bd Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 9 Oct 2019 16:14:47 +0100 Subject: [PATCH 0045/1024] 9.7.9 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 99ddc06b..446af3e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.8", + "version": "9.7.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4baba293..eea91726 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.8", + "version": "9.7.9", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 815a542cc1e8d620e51f897c6c1543ed95555440 Mon Sep 17 00:00:00 2001 From: Marvin Wendt Date: Fri, 11 Oct 2019 15:31:25 +0200 Subject: [PATCH 0046/1024] package-lock automaitcally updated on install --- package-lock.json | 2267 ++++++++++++++++++++++----------------------- 1 file changed, 1126 insertions(+), 1141 deletions(-) diff --git a/package-lock.json b/package-lock.json index 446af3e9..d048e7c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,18 +14,18 @@ } }, "@babel/core": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", - "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", + "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helpers": "^7.5.5", - "@babel/parser": "^7.5.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5", + "@babel/generator": "^7.6.4", + "@babel/helpers": "^7.6.2", + "@babel/parser": "^7.6.4", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.3", + "@babel/types": "^7.6.3", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -35,6 +35,74 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "dev": true, + "requires": { + "@babel/types": "^7.6.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helpers": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", + "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "dev": true, + "requires": { + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.2", + "@babel/types": "^7.6.0" + } + }, + "@babel/parser": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", + "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", + "dev": true + }, + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "@babel/traverse": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", + "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.3", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.3", + "@babel/types": "^7.6.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -44,6 +112,12 @@ "ms": "^2.1.1" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -55,6 +129,12 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true } } }, @@ -271,17 +351,6 @@ "@babel/types": "^7.2.0" } }, - "@babel/helpers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", - "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", - "dev": true, - "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" - } - }, "@babel/highlight": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", @@ -367,16 +436,6 @@ "@babel/plugin-syntax-json-strings": "^7.2.0" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", - "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", @@ -387,17 +446,6 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - } - }, "@babel/plugin-syntax-async-generators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", @@ -472,16 +520,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz", - "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" - } - }, "@babel/plugin-transform-classes": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", @@ -515,26 +553,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz", - "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - } - }, "@babel/plugin-transform-duplicate-keys": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", @@ -602,18 +620,6 @@ "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz", - "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, "@babel/plugin-transform-modules-systemjs": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", @@ -635,15 +641,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", - "dev": true, - "requires": { - "regexp-tree": "^0.1.6" - } - }, "@babel/plugin-transform-new-target": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", @@ -702,9 +699,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz", - "integrity": "sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", + "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -722,15 +719,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, "@babel/plugin-transform-sticky-regex": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", @@ -760,17 +748,6 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - } - }, "@babel/polyfill": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", @@ -793,9 +770,9 @@ } }, "@babel/preset-env": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", - "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", + "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -803,9 +780,9 @@ "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", @@ -814,11 +791,11 @@ "@babel/plugin-transform-arrow-functions": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.5.5", + "@babel/plugin-transform-block-scoping": "^7.6.3", "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.5.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.6.2", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", @@ -826,10 +803,10 @@ "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", @@ -837,23 +814,148 @@ "@babel/plugin-transform-regenerator": "^7.4.5", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/plugin-transform-unicode-regex": "^7.6.2", + "@babel/types": "^7.6.3", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", + "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "dev": true, + "requires": { + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/types": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", - "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", + "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -944,483 +1046,6 @@ } } }, - "@jimp/bmp": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.4.tgz", - "integrity": "sha512-dhKM7Cjw4XoOefx3/we2+vWyTP6hQPpM7mEsziGjtsrK2f/e3/+hhHbEsQNgO9BOA1FPJRXAOiYHts9IlMH1mg==", - "requires": { - "@jimp/utils": "^0.6.4", - "bmp-js": "^0.1.0", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.4.tgz", - "integrity": "sha512-nyiAXI8/uU54fGO53KrRB8pdn1s+IODZ+rj0jG2owsNJlTlagFrsZAy8IVTUCOiiXjh9TbwFo7D5XMrmi4KUww==", - "requires": { - "@jimp/utils": "^0.6.4", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "core-js": "^2.5.7", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - }, - "dependencies": { - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/custom": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.4.tgz", - "integrity": "sha512-sdBHrBoVr1+PFx4dlUAgXvvu4dG0esQobhg7qhpSLRje1ScavIgE2iXdJKpycgzrqwAOL8vW4/E5w2/rONlaoQ==", - "requires": { - "@jimp/core": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/gif": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.4.tgz", - "integrity": "sha512-14mLoyG0UrYJsGNRoXBFvSJdFtBD0BSBwQ1zCNeW+HpQqdl+Kh5E1Pz4nqT2KNylJe1jypyR51Q2yndgcfGVyg==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7", - "omggif": "^1.0.9" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/jpeg": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.4.tgz", - "integrity": "sha512-NrFla9fZC/Bhw1Aa9vJ6cBOqpB5ylEPb9jD+yZ0fzcAw5HwILguS//oXv9EWLApIY1XsOMFFe0XWpY653rv8hw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7", - "jpeg-js": "^0.3.4" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-blit": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.4.tgz", - "integrity": "sha512-suVznd4XozkQIuECX0u8kMl+cAQpZN3WcbWXUcJaVxRi+VBvHIetG1Qs5qGLzuEg9627+kE7ppv0UgZ5mkE6lg==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-blur": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.4.tgz", - "integrity": "sha512-M2fDMYUUtEKVNnCJZk5J0KSMzzISobmWfnG88RdHXJCkOn98kdawQFwTsYOfJJfCM8jWfhIxwZLFhC/2lkTN2w==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-color": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.4.tgz", - "integrity": "sha512-6Nfr2l9KSb6zH2fij8G6fQOw85TTkyRaBlqMvDmsQp/I1IlaDbXzA2C2Eh9jkQYZQDPu61B1MkmlEhJp/TUx6Q==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7", - "tinycolor2": "^1.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-contain": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.4.tgz", - "integrity": "sha512-qI1MxU1noS6NbEPu/bDDeP405aMviuIsfpOz8J3En8IwIwrJV22qt6QIHmF+eyng8CYgivwIPjEPzFzLR566Nw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-cover": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.4.tgz", - "integrity": "sha512-z6eafPonj3LJY8cTEfRkXmOfCDi1+f0tbYaNvmiu+OrWJ3Ojw2hMt+BVVvJ8pKe1dWIFkCjxOjyjZWj1gEkaLw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-crop": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.4.tgz", - "integrity": "sha512-w9TR+pn+GeWbznscGe2HRkPxInge0whAF3TLPWhPwBVjZChTT8dSDXsUpUlxQqvI4SfzuKp8z3/0SBqYDCzxxA==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-displace": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.4.tgz", - "integrity": "sha512-MEvtBXOAio/3iGJkKBrTtFs3Q38ez2Wy/wTD0Ruas+L8fjJR7l4mDgV+zjRr57CqB5mpY+L48VEoa2/gNXh9cg==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-dither": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.4.tgz", - "integrity": "sha512-w+AGLcIMUeJZ4CI0FvFomahgKLcW+ICsLidUNOqyLzceluPAfug4X7vDhQ41pNkzKg0M1+Q1j0aWV8bdyF+LhA==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-flip": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.4.tgz", - "integrity": "sha512-ukINMegMUM9KYjyDCiyYKYdSsbhNRLHDwOJN0xVRalmOKqNaZmjNbiMbaVxKlYt6sHW76RhSMOekw9f6GQB9tQ==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-gaussian": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.4.tgz", - "integrity": "sha512-C1P6ohzIddpNb7CX5X+ygbp+ow8Fpt64ZLoIgdjYPs/42HxKluvY62fVfMhY6m5zUGKIMbg0uYeAtz/9LRJPyw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-invert": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.4.tgz", - "integrity": "sha512-sleGz1jXaNEsP/5Ayqw8oez/6KesWcyCqovIuK4Z4kDmMc2ncuhsXIJQXDWtIF4tTQVzNEgrxUDNA4bi9xpCUA==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-mask": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.4.tgz", - "integrity": "sha512-3D4FbRxnpO9nzwa6cF8AImgO1aVReYbfRRO4I4bku4/iZ+kuU3fBLV+SRhB4c7di3ejG5u+rGsIfaNc94iYYvw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-normalize": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.4.tgz", - "integrity": "sha512-nOFMwOaVkOKArHkD/T6/1HKAPj3jlW6l0JduVDn1A5eIPCtlnyhlE9zdjgi5Q9IBR/gRjwW6tTzBKuJenS51kg==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-print": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.4.tgz", - "integrity": "sha512-3z5DLVCKg0NfZhHATEaYH/4XanIboPP1pOUoxIUeF++qOnGiGgH2giFJlRprHmx2l3E3DukR1v8pt54PGvfrFw==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7", - "load-bmfont": "^1.4.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-resize": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.4.tgz", - "integrity": "sha512-fk2+KheUNClrOWj6aDNWj1r4byVQb6Qxy4aT1UHX5GXPHDA+nhlej7ghaYdzeWZYodeM3lpasYtByu1XE2qScQ==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-rotate": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.4.tgz", - "integrity": "sha512-44VgV5D4xQIYInJAVevdW9J3SOhGKyz0OEr2ciA8Q3ktonKx0O5Q1g2kbruiqxFSkK/u2CKPLeKXZzYCFrmJGQ==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugin-scale": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.4.tgz", - "integrity": "sha512-RAQRaDiCHmEz+A8QS5d/Z38EnlNsQizz3Mu3NsjA8uFtJsv1yMKWXZSQuzniofZw8tlMV6oI3VdM0eQVE07/5w==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/plugins": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.4.tgz", - "integrity": "sha512-NpO/87CKnF4Q9r8gMl6w+jPKOM/C089qExkViD9cPvcFZEnyVOu7ucGzcMmTcabWOU62iQTOkRViPYr6XaK0LQ==", - "requires": { - "@jimp/plugin-blit": "^0.6.4", - "@jimp/plugin-blur": "^0.6.4", - "@jimp/plugin-color": "^0.6.4", - "@jimp/plugin-contain": "^0.6.4", - "@jimp/plugin-cover": "^0.6.4", - "@jimp/plugin-crop": "^0.6.4", - "@jimp/plugin-displace": "^0.6.4", - "@jimp/plugin-dither": "^0.6.4", - "@jimp/plugin-flip": "^0.6.4", - "@jimp/plugin-gaussian": "^0.6.4", - "@jimp/plugin-invert": "^0.6.4", - "@jimp/plugin-mask": "^0.6.4", - "@jimp/plugin-normalize": "^0.6.4", - "@jimp/plugin-print": "^0.6.4", - "@jimp/plugin-resize": "^0.6.4", - "@jimp/plugin-rotate": "^0.6.4", - "@jimp/plugin-scale": "^0.6.4", - "core-js": "^2.5.7", - "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/png": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.4.tgz", - "integrity": "sha512-qv3oo6ll3XWVIToBwVC1wQX0MFKwpxbe2o+1ld9B4ZDavqvAHzalzcmTd/iyooI85CVDAcC3RRDo66oiizGZCQ==", - "requires": { - "@jimp/utils": "^0.6.4", - "core-js": "^2.5.7", - "pngjs": "^3.3.3" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/tiff": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.4.tgz", - "integrity": "sha512-8/vD4qleexmhPdppiu6fSstj/n/kGNTn8iIlf1emiqOuMN2PL9q5GOPDWU0xWdGNyJMMIDXJPgUFUkKfqXdg7w==", - "requires": { - "core-js": "^2.5.7", - "utif": "^2.0.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/types": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.4.tgz", - "integrity": "sha512-/EMbipQDg5U6DnBAgcSiydlMBRYoKhnaK7MJRImeTzhDJ6xfgNOF7lYq66o0kmaezKdG/cIwZ1CLecn2y3D8SQ==", - "requires": { - "@jimp/bmp": "^0.6.4", - "@jimp/gif": "^0.6.4", - "@jimp/jpeg": "^0.6.4", - "@jimp/png": "^0.6.4", - "@jimp/tiff": "^0.6.4", - "core-js": "^2.5.7", - "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, - "@jimp/utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.4.tgz", - "integrity": "sha512-EFQurCyEnZLSM2Q1BYDTUmsOJPSOYEQd18Fvq8bGo8hnBHoGLWLWWyNi2l4cYhtpKmIXyhvQqa6/WaEpKPzvqA==", - "requires": { - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - } - } - }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -1663,64 +1288,6 @@ "negotiator": "0.6.2" } }, - "access-sniff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/access-sniff/-/access-sniff-3.2.0.tgz", - "integrity": "sha512-HLvH8e5g312urx6ZRo+nxSHjhVHEcuUxbpjFaFQ1LZOtN19L0CSb5ppwxtxy0QZ05zYAcWmXH6lVurdb+mGuUw==", - "dev": true, - "requires": { - "axios": "^0.18.0", - "bluebird": "^3.5.1", - "chalk": "^2.3.1", - "commander": "^2.14.1", - "glob": "^7.1.2", - "html_codesniffer": "^2.1.1", - "jsdom": "^11.6.2", - "mkdirp": "^0.5.1", - "phantomjs-prebuilt": "^2.1.16", - "rc": "^1.2.5", - "underscore": "^1.8.3", - "unixify": "^1.0.0", - "validator": "^9.4.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "dev": true - } - } - }, "acorn": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", @@ -2098,18 +1665,18 @@ "dev": true }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.4.tgz", + "integrity": "sha512-Koz2cJU9dKOxG8P1f8uVaBntOv9lP4yz9ffWvWaicv9gHBPhpQB22nGijwd8gqW9CNT+UdkbQOQNLVI8jN1ZfQ==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.7.0", + "caniuse-lite": "^1.0.30000998", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.18", + "postcss-value-parser": "^4.0.2" }, "dependencies": { "ansi-styles": { @@ -2121,6 +1688,23 @@ "color-convert": "^1.9.0" } }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, + "caniuse-lite": { + "version": "1.0.30000999", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", + "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2132,6 +1716,34 @@ "supports-color": "^5.3.0" } }, + "electron-to-chromium": { + "version": "1.3.280", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.280.tgz", + "integrity": "sha512-qYWNMjKLEfQAWZF2Sarvo+ahigu0EArnpCFSoUuZJS3W5wIeVfeEvsgmT2mgIrieQkeQ0+xFmykK3nx2ezekPQ==", + "dev": true + }, + "postcss": { + "version": "7.0.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", + "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss-value-parser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", @@ -2215,14 +1827,6 @@ "loader-utils": "^1.0.2", "mkdirp": "^0.5.1", "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } } }, "babel-messages": { @@ -2762,9 +2366,9 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -3117,20 +2721,6 @@ "mkdirp": "^0.5.1", "request": "^2.88.0", "tcp-port-used": "^1.0.1" - }, - "dependencies": { - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - } - } } }, "cipher-base": { @@ -3654,9 +3244,9 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } @@ -3829,6 +3419,24 @@ "schema-utils": "^2.0.0" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -3868,13 +3476,13 @@ "dev": true }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -3953,9 +3561,9 @@ "dev": true }, "d3": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.11.0.tgz", - "integrity": "sha512-LXgMVUAEAzQh6WfEEOa8tJX4RA64ZJ6twC3CJ+Xzid+fXWLTZkkglagXav/eOoQgzQi5rzV0xC4Sfspd6hFDHA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.12.0.tgz", + "integrity": "sha512-flYVMoVuhPFHd9zVCe2BxIszUWqBcd5fvQGMNRmSiBrgdnh6Vlruh60RJQTouAK9xPbOB0plxMvBm4MoyODXNg==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -5543,73 +5151,15 @@ } }, "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", "dev": true, "requires": { - "concat-stream": "1.6.0", + "concat-stream": "1.6.2", "debug": "2.6.9", - "mkdirp": "0.5.0", + "mkdirp": "0.5.1", "yauzl": "2.4.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "extsprintf": { @@ -6019,24 +5569,29 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, "requires": { @@ -6046,13 +5601,17 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6060,34 +5619,43 @@ }, "chownr": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "optional": true, "requires": { @@ -6096,25 +5664,29 @@ }, "deep-extend": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -6123,13 +5695,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -6145,7 +5719,8 @@ }, "glob": { "version": "7.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, "requires": { @@ -6159,13 +5734,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, "requires": { @@ -6174,7 +5751,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -6183,7 +5761,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -6193,46 +5772,58 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6240,7 +5831,8 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, "requires": { @@ -6249,21 +5841,25 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true, "optional": true }, "needle": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "dev": true, "optional": true, "requires": { @@ -6274,7 +5870,8 @@ }, "node-pre-gyp": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "dev": true, "optional": true, "requires": { @@ -6292,7 +5889,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -6302,13 +5900,15 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "dev": true, "optional": true, "requires": { @@ -6318,7 +5918,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -6330,38 +5931,46 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -6371,19 +5980,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, "requires": { @@ -6395,7 +6007,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -6403,7 +6016,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -6418,7 +6032,8 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, "requires": { @@ -6427,43 +6042,52 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6472,7 +6096,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -6481,21 +6106,25 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, "requires": { @@ -6510,13 +6139,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, "requires": { @@ -6525,13 +6156,17 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "dev": true + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true, + "optional": true } } }, @@ -6896,16 +6531,6 @@ "resolve": "~1.1.0" } }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -6921,6 +6546,64 @@ "dev": true, "requires": { "access-sniff": "^3.2.0" + }, + "dependencies": { + "access-sniff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/access-sniff/-/access-sniff-3.2.0.tgz", + "integrity": "sha512-HLvH8e5g312urx6ZRo+nxSHjhVHEcuUxbpjFaFQ1LZOtN19L0CSb5ppwxtxy0QZ05zYAcWmXH6lVurdb+mGuUw==", + "dev": true, + "requires": { + "axios": "^0.18.0", + "bluebird": "^3.5.1", + "chalk": "^2.3.1", + "commander": "^2.14.1", + "glob": "^7.1.2", + "html_codesniffer": "^2.1.1", + "jsdom": "^11.6.2", + "mkdirp": "^0.5.1", + "phantomjs-prebuilt": "^2.1.16", + "rc": "^1.2.5", + "underscore": "^1.8.3", + "unixify": "^1.0.0", + "validator": "^9.4.1" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", + "dev": true + } } }, "grunt-chmod": { @@ -6930,14 +6613,6 @@ "dev": true, "requires": { "shelljs": "^0.5.3" - }, - "dependencies": { - "shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", - "dev": true - } } }, "grunt-concurrent": { @@ -6977,15 +6652,15 @@ } }, "grunt-contrib-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-2.0.0.tgz", - "integrity": "sha512-JVjM9UDP84WbT2S7swkyuwPuxFtT+zry/RUBuP3IT8LZPEQjtzzMwiM+qimswNKQ9plh5WhcFWaaqz2ruB9/DA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-2.1.0.tgz", + "integrity": "sha512-yeCHdz5zqoibhQDyw/X+E/wTzYPpim+C2p+xYyXUsXVEkfxnKVIWYOWrAKkFHlz9//nIC0S3JbUDd3mVvJcxVA==", "dev": true, "requires": { "async": "^2.6.1", "connect": "^3.6.6", "connect-livereload": "^0.6.0", - "morgan": "^1.9.0", + "morgan": "^1.9.1", "node-http2": "^4.0.1", "opn": "^5.3.0", "portscanner": "^2.2.0", @@ -7013,17 +6688,6 @@ "gaze": "^1.1.0", "lodash": "^4.17.10", "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - } } }, "grunt-eslint": { @@ -7874,12 +7538,6 @@ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", "dev": true }, - "is-absolute-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.1.tgz", - "integrity": "sha512-c2QjUwuMxLsld90sj3xYzpFYWJtuxkIn1f5ua9RTEYJt/vV2IsM+Py00/6qjV7qExgifUvt7qfyBGBBKm+2iBg==", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -8153,7 +7811,8 @@ "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true }, "is-utf8": { "version": "0.2.1", @@ -8209,21 +7868,314 @@ "dev": true }, "jimp": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.4.tgz", - "integrity": "sha512-WQVMoNhkcq/fgthZOWeMdIguCVPg+t4PDFfSxvbNcrECwl8eq3/Ou2whcFWWjyW45m43yAJEY2UT7acDKl6uSQ==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.8.tgz", + "integrity": "sha512-F7emeG7Hp61IM8VFbNvWENLTuHe0ghizWPuP4JS9ujx2r5mCVYEd/zdaz6M2M42ZdN41blxPajLWl9FXo7Mr2Q==", "requires": { - "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.6.4", - "@jimp/plugins": "^0.6.4", - "@jimp/types": "^0.6.4", - "core-js": "^2.5.7" + "@jimp/custom": "^0.6.8", + "@jimp/plugins": "^0.6.8", + "@jimp/types": "^0.6.8", + "core-js": "^2.5.7", + "regenerator-runtime": "^0.13.3" }, "dependencies": { + "@jimp/bmp": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.8.tgz", + "integrity": "sha512-uxVgSkI62uAzk5ZazYHEHBehow590WAkLKmDXLzkr/XP/Hv2Fx1T4DKwJ/15IY5ktq5VAhAUWGXTyd8KWFsx7w==", + "requires": { + "@jimp/utils": "^0.6.8", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + } + }, + "@jimp/core": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.8.tgz", + "integrity": "sha512-JOFqBBcSNiDiMZJFr6OJqC6viXj5NVBQISua0eacoYvo4YJtTajOIxC4MqWyUmGrDpRMZBR8QhSsIOwsFrdROA==", + "requires": { + "@jimp/utils": "^0.6.8", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.8.tgz", + "integrity": "sha512-FrYlzZRVXP2vuVwd7Nc2dlK+iZk4g6IaT1Ib8Z6vU5Kkwlt83FJIPJ2UUFABf3bF5big0wkk8ZUihWxE4Nzdng==", + "requires": { + "@jimp/core": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/gif": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.8.tgz", + "integrity": "sha512-yyOlujjQcgz9zkjM5ihZDEppn9d1brJ7jQHP5rAKmqep0G7FU1D0AKcV+Ql18RhuI/CgWs10wAVcrQpmLnu4Yw==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.8.tgz", + "integrity": "sha512-rGtXbYpFXAn471qLpTGvhbBMNHJo5KiufN+vC5AWyufntmkt5f0Ox2Cx4ijuBMDtirZchxbMLtrfGjznS4L/ew==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + } + }, + "@jimp/plugin-blit": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.8.tgz", + "integrity": "sha512-7Tl6YpKTSpvwQbnGNhsfX2zyl3jRVVopd276Y2hF2zpDz9Bycow7NdfNU/4Nx1jaf96X6uWOtSVINcQ7rGd47w==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-blur": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.8.tgz", + "integrity": "sha512-NpZCMKxXHLDQsX9zPlWtpMA660DQStY6/z8ZetyxCDbqrLe9YCXpeR4MNhdJdABIiwTm1W5FyFF4kp81PHJx3Q==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-color": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.8.tgz", + "integrity": "sha512-jjFyU0zNmGOH2rjzHuOMU4kaia0oo82s/7UYfn5h7OUkmUZTd6Do3ZSK1PiXA7KR+s4B76/Omm6Doh/0SGb7BQ==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.8.tgz", + "integrity": "sha512-p/P2wCXhAzbmEgXvGsvmxLmbz45feF6VpR4m9suPSOr8PC/i/XvTklTqYEUidYYAft4vHgsYJdS74HKSMnH8lw==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-cover": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.8.tgz", + "integrity": "sha512-2PvWgk+PJfRsfWDI1G8Fpjrsu0ZlpNyZxO2+fqWlVo6y/y2gP4v08FqvbkcqSjNlOu2IDWIFXpgyU0sTINWZLg==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-crop": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.8.tgz", + "integrity": "sha512-CbrcpWE2xxPK1n/JoTXzhRUhP4mO07mTWaSavenCg664oQl/9XCtL+A0FekuNHzIvn4myEqvkiTwN7FsbunS/Q==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-displace": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.8.tgz", + "integrity": "sha512-RmV2bPxoPE6mrPxtYSPtHxm2cGwBQr5a2p+9gH6SPy+eUMrbGjbvjwKNfXWUYD0leML+Pt5XOmAS9pIROmuruQ==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-dither": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.8.tgz", + "integrity": "sha512-x6V/qjxe+xypjpQm7GbiMNqci1EW5UizrcebOhHr8AHijOEqHd2hjXh5f6QIGfrkTFelc4/jzq1UyCsYntqz9Q==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-flip": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.8.tgz", + "integrity": "sha512-4il6Da6G39s9MyWBEee4jztEOUGJ40E6OlPjkMrdpDNvge6hYEAB31BczTYBP/CEY74j4LDSoY5LbcU4kv06yA==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.8.tgz", + "integrity": "sha512-pVOblmjv7stZjsqloi4YzHVwAPXKGdNaHPhp4KP4vj41qtc6Hxd9z/+VWGYRTunMFac84gUToe0UKIXd6GhoKw==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-invert": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.8.tgz", + "integrity": "sha512-11zuLiXDHr6tFv4U8aieXqNXQEKbDbSBG/h+X62gGTNFpyn8EVPpncHhOqrAFtZUaPibBqMFlNJ15SzwC7ExsQ==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-mask": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.8.tgz", + "integrity": "sha512-hZJ0OiKGJyv7hDSATwJDkunB1Ie80xJnONMgpUuUseteK45YeYNBOiZVUe8vum8QI1UwavgBzcvQ9u4fcgXc9g==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-normalize": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.8.tgz", + "integrity": "sha512-Q4oYhU+sSyTJI7pMZlg9/mYh68ujLfOxXzQGEXuw0sHGoGQs3B0Jw7jmzGa6pIS06Hup5hD2Zuh1ppvMdjJBfQ==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-print": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.8.tgz", + "integrity": "sha512-2aokejGn4Drv1FesnZGqh5KEq0FQtR0drlmtyZrBH+r9cx7hh0Qgf4D1BOTDEgXkfSSngjGRjKKRW/fwOrVXYw==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.8.tgz", + "integrity": "sha512-27nPh8L1YWsxtfmV/+Ub5dOTpXyC0HMF2cu52RQSCYxr+Lm1+23dJF70AF1poUbUe+FWXphwuUxQzjBJza9UoA==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-rotate": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.8.tgz", + "integrity": "sha512-GbjETvL05BDoLdszNUV4Y0yLkHf177MnqGqilA113LIvx9aD0FtUopGXYfRGVvmtTOTouoaGJUc+K6qngvKxww==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-scale": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.8.tgz", + "integrity": "sha512-GzIYWR/oCUK2jAwku23zt19V1ssaEU4pL0x2XsLNKuuJEU6DvEytJyTMXCE7OLG/MpDBQcQclJKHgiyQm5gIOQ==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "@jimp/plugins": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.8.tgz", + "integrity": "sha512-fMcTI72Vn/Lz6JftezTURmyP5ml/xGMe0Ljx2KRJ85IWyP33vDmGIUuutFiBEbh2+y7lRT+aTSmjs0QGa/xTmQ==", + "requires": { + "@jimp/plugin-blit": "^0.6.8", + "@jimp/plugin-blur": "^0.6.8", + "@jimp/plugin-color": "^0.6.8", + "@jimp/plugin-contain": "^0.6.8", + "@jimp/plugin-cover": "^0.6.8", + "@jimp/plugin-crop": "^0.6.8", + "@jimp/plugin-displace": "^0.6.8", + "@jimp/plugin-dither": "^0.6.8", + "@jimp/plugin-flip": "^0.6.8", + "@jimp/plugin-gaussian": "^0.6.8", + "@jimp/plugin-invert": "^0.6.8", + "@jimp/plugin-mask": "^0.6.8", + "@jimp/plugin-normalize": "^0.6.8", + "@jimp/plugin-print": "^0.6.8", + "@jimp/plugin-resize": "^0.6.8", + "@jimp/plugin-rotate": "^0.6.8", + "@jimp/plugin-scale": "^0.6.8", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.8.tgz", + "integrity": "sha512-JHHg/BZ7KDtHQrcG+a7fztw45rdf7okL/YwkN4qU5FH7Fcrp41nX5QnRviDtD9hN+GaNC7kvjvcqRAxW25qjew==", + "requires": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.8.tgz", + "integrity": "sha512-iWHbxd+0IKWdJyJ0HhoJCGYmtjPBOusz1z1HT/DnpePs/Lo3TO4d9ALXqYfUkyG74ZK5jULZ69KLtwuhuJz1bg==", + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.8.tgz", + "integrity": "sha512-vCZ/Cp2osy69VP21XOBACfHI5HeR60Rfd4Jidj4W73UL+HrFWOtyQiJ7hlToyu1vI5mR/NsUQpzyQvz56ADm5A==", + "requires": { + "@jimp/bmp": "^0.6.8", + "@jimp/gif": "^0.6.8", + "@jimp/jpeg": "^0.6.8", + "@jimp/png": "^0.6.8", + "@jimp/tiff": "^0.6.8", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.8.tgz", + "integrity": "sha512-7RDfxQ2C/rarNG9iso5vmnKQbcvlQjBIlF/p7/uYj72WeZgVCB+5t1fFBKJSU4WhniHX4jUMijK+wYGE3Y3bGw==", + "requires": { + "core-js": "^2.5.7" + } + }, + "buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "core-js": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" } } }, @@ -9363,8 +9315,7 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -9427,9 +9378,9 @@ "dev": true }, "nightwatch": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.2.1.tgz", - "integrity": "sha512-y9ihK6Xmo6A32B6zG4XlWumF5f6gIE5QQP54o4PHpnjC4+CA9xwVMtXZL6QlnNYlqS0n34Pk/wpvKL2znjCh0g==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.2.4.tgz", + "integrity": "sha512-RoO2/leXXTWG/iAcdW1+sN3RV+bL2P4F9B/ty/wJQmsJw2PLduqvbi7cmkwdNGhh/yaIwIcBxyGHqdB0G754hg==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -9455,11 +9406,6 @@ "lower-case": "^1.1.1" } }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, "node-forge": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", @@ -9632,19 +9578,13 @@ "lru-cache": "^4.0.1", "which": "^1.2.9" } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true } } }, "nodom": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nodom/-/nodom-2.2.0.tgz", - "integrity": "sha512-+W3jlsobV3NNkO15xQXkWoboeq1RPa/SKi8NMHmWF33SCMX4ALcM5dpPLEnUs69Gu+uZoCX9wcWXy866LXvd8w==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/nodom/-/nodom-2.4.0.tgz", + "integrity": "sha512-qhfYgpoCSi37HLiViMlf94YqMQdvk3n3arI1uGbAWZK9NKCYRSI42W8lATeGloYGLYxb8us1C5rTvtsXjwdWQg==" }, "nopt": { "version": "3.0.6", @@ -10443,25 +10383,6 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" }, - "portfinder": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.23.tgz", - "integrity": "sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, "portscanner": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", @@ -10759,43 +10680,6 @@ "revalidator": "0.1.x", "utile": "0.3.x", "winston": "2.1.x" - }, - "dependencies": { - "async": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", - "dev": true - }, - "winston": { - "version": "2.1.1", - "resolved": "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz", - "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", - "dev": true, - "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - }, - "pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", - "dev": true - } - } - } } }, "proxy-addr": { @@ -11157,12 +11041,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.12.tgz", - "integrity": "sha512-TsXZ8+cv2uxMEkLfgwO0E068gsNMLfuYwMMhiUxf0Kw2Vcgzq93vgl6wIlIYuPmfMqMjfQ9zAporiozqCnwLuQ==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", @@ -11177,20 +11055,6 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, - "regexpu-core": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", - "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, "regjsgen": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", @@ -11559,6 +11423,24 @@ "semver": "^6.3.0" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -11586,13 +11468,13 @@ } }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } }, "semver": { @@ -11650,23 +11532,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - }, - "dependencies": { - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - } - } - }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -11834,6 +11699,12 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shelljs": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -12021,46 +11892,6 @@ "uuid": "^3.0.1" } }, - "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "socks": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", @@ -12111,9 +11942,9 @@ } }, "sortablejs": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.9.0.tgz", - "integrity": "sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", + "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" }, "source-list-map": { "version": "2.0.1", @@ -12609,6 +12440,24 @@ "schema-utils": "^2.0.1" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -12636,13 +12485,13 @@ } }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -12653,13 +12502,13 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svg-url-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.1.tgz", - "integrity": "sha512-YNC31HokIawsbpqHY1tvjNli/VfgiJlfYR8pFjvJG+zzac11eLfU6q1xt6IhNOdHuuqJw2lsBbch8h99a0mOZA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.2.tgz", + "integrity": "sha512-MUJFVU2uuOTZW6Eq6NuXZxhaIyWiuKtZMcT90nCkcvIZPGGc0CYyZWYP/rtXUkja5qagNMpxDwdZ/tuC6ywfWg==", "dev": true, "requires": { - "file-loader": "4.2.0", - "loader-utils": "1.2.3" + "file-loader": "~4.2.0", + "loader-utils": "~1.2.3" }, "dependencies": { "big.js": { @@ -12834,54 +12683,41 @@ } }, "tesseract.js": { - "version": "2.0.0-alpha.15", - "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-2.0.0-alpha.15.tgz", - "integrity": "sha512-qM1XUFVlTO+tx6oVRpd9QQ8PwQLxo3qhbfIHByUlUVIqWx6y/U9xlHIaG033/Tjfs2EQ0NAehPTOJ+eNElsXEg==", + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-2.0.0-beta.1.tgz", + "integrity": "sha512-PPELe7ArJycS1ZZomecL4+MG5SCin0uHxzRhLecxGxp00Ec6rEYx9p6LwzJjyORgUlDkocP6jgb/Rczqv3DTkQ==", "requires": { "axios": "^0.18.0", - "check-types": "^7.4.0", + "bmp-js": "^0.1.0", + "file-type": "^12.3.0", + "idb-keyval": "^3.2.0", "is-url": "1.2.2", - "node-fetch": "^2.3.0", "opencollective-postinstall": "^2.0.2", + "regenerator-runtime": "^0.13.3", "resolve-url": "^0.2.1", - "tesseract.js-core": "^2.0.0-beta.11", - "tesseract.js-utils": "^1.0.0-beta.8" + "tesseract.js-core": "^2.0.0-beta.13", + "zlibjs": "^0.3.1" }, "dependencies": { - "check-types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", - "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==" + "file-type": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.3.0.tgz", + "integrity": "sha512-4E4Esq9KLwjYCY32E7qSmd0h7LefcniZHX+XcdJ4Wfx1uGJX7QCigiqw/U0yT7WOslm28yhxl87DJ0wHYv0RAA==" }, "is-url": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=" - } - } - }, - "tesseract.js-core": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-2.0.0-beta.11.tgz", - "integrity": "sha512-07haKH2JYYo0OfIJoioMS9dDiI5Hrl7+r1MqjeNAAT5WpKO0ATe4cpncC8s1kz0e3s1kaC5WOwL3YJcjbJE+hg==" - }, - "tesseract.js-utils": { - "version": "1.0.0-beta.8", - "resolved": "https://registry.npmjs.org/tesseract.js-utils/-/tesseract.js-utils-1.0.0-beta.8.tgz", - "integrity": "sha512-qjHBfWfzo2o1ZY9XI0Wh2hmpp38+mIgCMOk60W5Yyie/pBl421VLBKOZUEwQgpbLnOJ24VU6Q8yXsVgtFFHcFg==", - "requires": { - "axios": "^0.18.0", - "bmp-js": "^0.1.0", - "file-type": "^10.5.0", - "idb-keyval": "^3.1.0", - "is-url": "^1.2.4", - "zlibjs": "^0.3.1" - }, - "dependencies": { - "file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==" + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + }, + "tesseract.js-core": { + "version": "2.0.0-beta.13", + "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-2.0.0-beta.13.tgz", + "integrity": "sha512-GboWV/aV5h+Whito6L6Q3WCFZ2+lgxZGgjY84wSpWbTLEkkZgHsU+dz1or+3rWSABH/nuzHDco1bZRk5+f94mw==" } } }, @@ -13431,16 +13267,34 @@ } }, "url-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.1.0.tgz", - "integrity": "sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", + "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", "dev": true, "requires": { "loader-utils": "^1.2.3", "mime": "^2.4.4", - "schema-utils": "^2.0.0" + "schema-utils": "^2.4.1" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -13468,13 +13322,13 @@ } }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -13673,9 +13527,9 @@ "dev": true }, "webpack": { - "version": "4.39.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.3.tgz", - "integrity": "sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.1.tgz", + "integrity": "sha512-ak7u4tUu/U63sCVxA571IuPZO/Q0pZ9cEXKg+R/woxkDzVovq57uB6L2Hlg/pC8LCU+TWpvtcYwsstivQwMJmw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -13777,9 +13631,9 @@ } }, "webpack-bundle-analyzer": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.4.1.tgz", - "integrity": "sha512-Bs8D/1zF+17lhqj2OYmzi7HEVYqEVxu7lCO9Ff8BwajenOU0vAwEoV8e4ICCPNZAcqR1PCR/7o2SkW+cnCmF0A==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.5.2.tgz", + "integrity": "sha512-g9spCNe25QYUVqHRDkwG414GTok2m7pTTP0wr6l0J50Z3YLS04+BGodTqqoVBL7QfU/U/9p/oiI5XFOyfZ7S/A==", "dev": true, "requires": { "acorn": "^6.0.7", @@ -13843,54 +13697,42 @@ } } }, - "webpack-dev-middleware": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", - "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.2", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, "webpack-dev-server": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.0.tgz", - "integrity": "sha512-Hs8K9yI6pyMvGkaPTeTonhD6JXVsigXDApYk9JLW4M7viVBspQvb1WdAcWxqtmttxNW4zf2UFLsLNe0y87pIGQ==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz", + "integrity": "sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ==", "dev": true, "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.1.6", + "chokidar": "^2.1.8", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", "html-entities": "^1.2.1", - "http-proxy-middleware": "^0.19.1", + "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", - "is-absolute-url": "^3.0.0", + "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.3", + "loglevel": "^1.6.4", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.21", + "portfinder": "^1.0.24", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", + "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", "sockjs": "0.3.19", - "sockjs-client": "1.3.0", + "sockjs-client": "1.4.0", "spdy": "^4.0.1", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.0", + "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", "yargs": "12.0.5" @@ -13902,6 +13744,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -13933,12 +13781,27 @@ "ms": "^2.1.1" } }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -13948,12 +13811,24 @@ "invert-kv": "^2.0.0" } }, + "loglevel": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", + "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -13974,6 +13849,34 @@ "mem": "^4.0.0" } }, + "portfinder": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", + "integrity": "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -13985,12 +13888,46 @@ "ajv-keywords": "^3.1.0" } }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -14000,6 +13937,19 @@ "has-flag": "^3.0.0" } }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -14197,6 +14147,41 @@ "string-width": "^1.0.2 || 2" } }, + "winston": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", + "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", + "dev": true, + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", + "dev": true + } + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", From d550ae7d93ded4f044695cbb15a4d31f5226af49 Mon Sep 17 00:00:00 2001 From: Marvin Wendt Date: Fri, 11 Oct 2019 15:31:46 +0200 Subject: [PATCH 0047/1024] Add operation to categories --- src/core/config/Categories.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 94f7fd30..0b721315 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -192,7 +192,8 @@ "Encode text", "Decode text", "Remove Diacritics", - "Unescape Unicode Characters" + "Unescape Unicode Characters", + "Convert to NATO alphabet" ] }, { From 4122d4207d9fda5573ce8c200242f5088958e960 Mon Sep 17 00:00:00 2001 From: Marvin Wendt Date: Fri, 11 Oct 2019 15:32:06 +0200 Subject: [PATCH 0048/1024] Add ConvertToNATOAlphabet --- src/core/operations/ConvertToNATOAlphabet.mjs | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 src/core/operations/ConvertToNATOAlphabet.mjs diff --git a/src/core/operations/ConvertToNATOAlphabet.mjs b/src/core/operations/ConvertToNATOAlphabet.mjs new file mode 100644 index 00000000..60ab5298 --- /dev/null +++ b/src/core/operations/ConvertToNATOAlphabet.mjs @@ -0,0 +1,160 @@ +/** + * @author MarvinJWendt [git@marvinjwendt.com] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; + +/** + * Convert to NATO alphabet operation + */ +class ConvertToNATOAlphabet extends Operation { + /** + * ConvertToNATOAlphabet constructor + */ + constructor() { + super(); + + this.name = "Convert to NATO alphabet"; + this.module = "Default"; + this.description = "Convert a text to NATO alphabet."; + this.infoURL = "https://en.wikipedia.org/wiki/NATO_phonetic_alphabet"; + this.inputType = "string"; + this.outputType = "string"; + this.args = []; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + let result = ""; + + const text = input.toUpperCase(); + + for (let i = 0; i < text.length; i++) { + switch (text.charAt(i)) { + case "A": + result += "alfa "; + break; + case "B": + result += "bravo "; + break; + case "C": + result += "charlie "; + break; + case "D": + result += "delta "; + break; + case "E": + result += "echo "; + break; + case "F": + result += "foxtrot "; + break; + case "G": + result += "golf "; + break; + case "H": + result += "hotel "; + break; + case "I": + result += "india "; + break; + case "J": + result += "juliett "; + break; + case "K": + result += "kilo "; + break; + case "L": + result += "lima "; + break; + case "M": + result += "mike "; + break; + case "N": + result += "november "; + break; + case "O": + result += "oscar "; + break; + case "P": + result += "papa "; + break; + case "Q": + result += "quebec "; + break; + case "R": + result += "romeo "; + break; + case "S": + result += "sierra "; + break; + case "T": + result += "tango "; + break; + case "U": + result += "uniform "; + break; + case "V": + result += "victor "; + break; + case "W": + result += "whiskey "; + break; + case "X": + result += "xray "; + break; + case "Y": + result += "yankee "; + break; + case "Z": + result += "zulu "; + break; + case " ": + result += " "; + break; + case "0": + result += "zero "; + break; + case "1": + result += "one "; + break; + case "2": + result += "two "; + break; + case "3": + result += "three "; + break; + case "4": + result += "four "; + break; + case "5": + result += "five "; + break; + case "6": + result += "six "; + break; + case "7": + result += "seven "; + break; + case "8": + result += "eight "; + break; + case "9": + result += "nine "; + break; + default: + result += text.charAt(i) + " "; + } + } + + return result; + } +} + +export default ConvertToNATOAlphabet; From acf38e47ba7410b81b4a9c5924a586e525525f99 Mon Sep 17 00:00:00 2001 From: Marvin Wendt Date: Fri, 11 Oct 2019 15:32:14 +0200 Subject: [PATCH 0049/1024] Add ConvertToNATOAlphabet tests --- .../tests/ConvertToNATOAlphabet.mjs | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/operations/tests/ConvertToNATOAlphabet.mjs diff --git a/tests/operations/tests/ConvertToNATOAlphabet.mjs b/tests/operations/tests/ConvertToNATOAlphabet.mjs new file mode 100644 index 00000000..50d98426 --- /dev/null +++ b/tests/operations/tests/ConvertToNATOAlphabet.mjs @@ -0,0 +1,32 @@ +/** + * @author MarvinJWendt [git@marvinjwendt.com] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Convert to NATO alphabet: nothing", + input: "", + expectedOutput: "", + recipeConfig: [ + { + op: "Convert to NATO alphabet", + args: [""] + } + ] + }, + { + name: "Convert to NATO alphabet: full alphabet with numbers", + input: "abcdefghijklmnopqrstuvwxyz0123456789", + expectedOutput: "alfa bravo charlie delta echo foxtrot golf hotel india juliett kilo lima mike november oscar papa quebec romeo sierra tango uniform victor whiskey xray yankee zulu zero one two three four five six seven eight nine ", + recipeConfig: [ + { + op: "Convert to NATO alphabet", + args: [""] + } + ] + } +]); From 2106e8ddb0c540c6854ea07422644fa006993690 Mon Sep 17 00:00:00 2001 From: Tan Zhen Yong Date: Sat, 12 Oct 2019 16:13:40 +0800 Subject: [PATCH 0050/1024] Remove duplicate bug report issue template The bug report issue template is duplicated (`bug-report.md` and `bug_report.md`, note the `-`/`_` difference). Thus, GitHub was unable to use the bug report issue template, and it does not show up when a new issue is being created. Let's remove the duplicate template `bug_report.md`. --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ---------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index c2d70f29..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: 'Bug report: ' -labels: bug -assignees: '' - ---- - - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior or a link to the recipe / input used to cause the bug: - -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (if relevant, please complete the following information):** - - OS: [e.g. Windows] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. From 3c021919ddac055ab0b256a046b31f9a1ac2f0bc Mon Sep 17 00:00:00 2001 From: Tan Zhen Yong Date: Sat, 12 Oct 2019 16:17:40 +0800 Subject: [PATCH 0051/1024] Rename feature request issue template - to remain consistent with other issue templates using a `-` instead of `_` --- .github/ISSUE_TEMPLATE/{feature_request.md => feature-request.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/ISSUE_TEMPLATE/{feature_request.md => feature-request.md} (100%) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature-request.md similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.md rename to .github/ISSUE_TEMPLATE/feature-request.md From 7a3ca027bb18d81708ee649f5f87101d19afd70e Mon Sep 17 00:00:00 2001 From: Storms-Engineering Date: Tue, 1 Oct 2019 21:07:26 -0800 Subject: [PATCH 0052/1024] PHP Deserialize NULL values converted to correctly PHP Deserialize now correctly returns N as a null instead of an empty object --- src/core/operations/PHPDeserialize.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/operations/PHPDeserialize.mjs b/src/core/operations/PHPDeserialize.mjs index 904ced9e..2c510b35 100644 --- a/src/core/operations/PHPDeserialize.mjs +++ b/src/core/operations/PHPDeserialize.mjs @@ -128,8 +128,7 @@ class PHPDeserialize extends Operation { switch (kind) { case "n": expect(";"); - return ""; - + return "null"; case "i": case "d": case "b": { From d025c8bd9a9ee63904acf9fa93791b77c1a208c2 Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Sat, 12 Oct 2019 17:13:14 +0200 Subject: [PATCH 0053/1024] Add new operation to generate image from raw data --- src/core/config/Categories.json | 1 + src/core/operations/GenerateImage.mjs | 162 ++++++++++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 src/core/operations/GenerateImage.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 94f7fd30..f82f9416 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -382,6 +382,7 @@ "name": "Multimedia", "ops": [ "Render Image", + "Generate Image", "Play Media", "Optical Character Recognition", "Remove EXIF", diff --git a/src/core/operations/GenerateImage.mjs b/src/core/operations/GenerateImage.mjs new file mode 100644 index 00000000..fbf3d2de --- /dev/null +++ b/src/core/operations/GenerateImage.mjs @@ -0,0 +1,162 @@ +/** + * @author pointhi [thomas.pointhuber@gmx.at] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import {isImage} from "../lib/FileType"; +import {toBase64} from "../lib/Base64"; +import jimp from "jimp"; + +/** + * Generate Image operation + */ +class GenerateImage extends Operation { + + /** + * GenerateImage constructor + */ + constructor() { + super(); + + this.name = "Generate Image"; + this.module = "Image"; + this.description = "Generate a Image using the input as pixel values."; + this.infoURL = ""; + this.inputType = "byteArray"; + this.outputType = "ArrayBuffer"; + this.presentType = "html"; + this.args = [ + { + "name": "Mode", + "type": "option", + "value": ["Greyscale", "RG", "RGB", "RGBA"] + }, + { + "name": "Pixel Scale Factor", + "type": "number", + "value": 8, + }, + { + "name": "Pixels per Row", + "type": "number", + "value": 64, + } + ]; + } + + /** + * @param {byteArray} input + * @param {Object[]} args + * @returns {ArrayBuffer} + */ + async run(input, args) { + const mode = args[0]; + const scale = args[1]; + const width = args[2]; + + if (scale <= 0) { + throw new OperationError("Pixel Scale Factor needs to be > 0"); + } + + if (width <= 0) { + throw new OperationError("Pixels per Row needs to be > 0"); + } + + const bytePerPixelMap = { + "Greyscale": 1, + "RG": 2, + "RGB": 3, + "RGBA": 4, + }; + + const bytesPerPixel = bytePerPixelMap[mode]; + + if (input.length % bytesPerPixel !== 0) { + throw new OperationError(`Number of bytes is not a divisor of ${bytesPerPixel}`); + } + + const height = Math.ceil(input.length / bytesPerPixel / width); + const image = await new jimp(width, height, (err, image) => {}); + + + let i = 0; + while (i < input.length) { + const index = i/bytesPerPixel; + const x = index % width; + const y = Math.floor(index / width); + + let red = 0x00; + let green = 0x00; + let blue = 0x00; + let alpha = 0xFF; + + switch (mode) { + case "Greyscale": + red = green = blue = input[i++]; + break; + + case "RG": + red = input[i++]; + green = input[i++]; + break; + + case "RGB": + red = input[i++]; + green = input[i++]; + blue = input[i++]; + break; + + case "RGBA": + red = input[i++]; + green = input[i++]; + blue = input[i++]; + alpha = input[i++]; + break; + + default: + throw new OperationError(`Unsupported Mode: (${mode})`); + } + + try { + const pixel = jimp.rgbaToInt(red, green, blue, alpha); + image.setPixelColor(pixel, x, y); + } catch (err) { + throw new OperationError(`Error while generating image from pixel values. (${err})`); + } + } + + if (scale !== 1) { + image.scaleToFit(width*scale, height*scale, jimp.RESIZE_NEAREST_NEIGHBOR); + } + + try { + const imageBuffer = await image.getBufferAsync(jimp.MIME_PNG); + return imageBuffer.buffer; + } catch (err) { + throw new OperationError(`Error generating image. (${err})`); + } + } + + /** + * Displays the generated image using HTML for web apps + * @param {ArrayBuffer} data + * @returns {html} + */ + present(data) { + if (!data.byteLength) return ""; + const dataArray = new Uint8Array(data); + + const type = isImage(dataArray); + if (!type) { + throw new OperationError("Invalid file type."); + } + + return ``; + } + +} + +export default GenerateImage; From a2780ca0560c1ad273c24e34e5348a25f84409d2 Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Sat, 12 Oct 2019 17:35:46 +0200 Subject: [PATCH 0054/1024] Add bitwse mode to Generate Image operation --- src/core/operations/GenerateImage.mjs | 107 ++++++++++++++++---------- 1 file changed, 65 insertions(+), 42 deletions(-) diff --git a/src/core/operations/GenerateImage.mjs b/src/core/operations/GenerateImage.mjs index fbf3d2de..dd780f18 100644 --- a/src/core/operations/GenerateImage.mjs +++ b/src/core/operations/GenerateImage.mjs @@ -6,9 +6,11 @@ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; +import Utils from "../Utils.mjs"; import {isImage} from "../lib/FileType"; import {toBase64} from "../lib/Base64"; import jimp from "jimp"; +import {isWorkerEnvironment} from "../Utils"; /** * Generate Image operation @@ -32,7 +34,7 @@ class GenerateImage extends Operation { { "name": "Mode", "type": "option", - "value": ["Greyscale", "RG", "RGB", "RGBA"] + "value": ["Greyscale", "RG", "RGB", "RGBA", "Bits"] }, { "name": "Pixel Scale Factor", @@ -70,65 +72,86 @@ class GenerateImage extends Operation { "RG": 2, "RGB": 3, "RGBA": 4, + "Bits": 1/8, }; const bytesPerPixel = bytePerPixelMap[mode]; - if (input.length % bytesPerPixel !== 0) { + if (bytesPerPixel > 0 && input.length % bytesPerPixel !== 0) { throw new OperationError(`Number of bytes is not a divisor of ${bytesPerPixel}`); } const height = Math.ceil(input.length / bytesPerPixel / width); const image = await new jimp(width, height, (err, image) => {}); + if (isWorkerEnvironment()) + self.sendStatusMessage("Generate image from data..."); - let i = 0; - while (i < input.length) { - const index = i/bytesPerPixel; - const x = index % width; - const y = Math.floor(index / width); + if (mode === "Bits") { + let index = 0; + for (let j = 0; j < input.length; j++) { + const curByte = Utils.bin(input[j]); + for (let k = 0; k < 8; k++, index++) { + const x = index % width; + const y = Math.floor(index / width); - let red = 0x00; - let green = 0x00; - let blue = 0x00; - let alpha = 0xFF; - - switch (mode) { - case "Greyscale": - red = green = blue = input[i++]; - break; - - case "RG": - red = input[i++]; - green = input[i++]; - break; - - case "RGB": - red = input[i++]; - green = input[i++]; - blue = input[i++]; - break; - - case "RGBA": - red = input[i++]; - green = input[i++]; - blue = input[i++]; - alpha = input[i++]; - break; - - default: - throw new OperationError(`Unsupported Mode: (${mode})`); + const value = curByte[k] === "0" ? 0xFF : 0x00; + const pixel = jimp.rgbaToInt(value, value, value, 0xFF); + image.setPixelColor(pixel, x, y); + } } + } else { + let i = 0; + while (i < input.length) { + const index = i / bytesPerPixel; + const x = index % width; + const y = Math.floor(index / width); - try { - const pixel = jimp.rgbaToInt(red, green, blue, alpha); - image.setPixelColor(pixel, x, y); - } catch (err) { - throw new OperationError(`Error while generating image from pixel values. (${err})`); + let red = 0x00; + let green = 0x00; + let blue = 0x00; + let alpha = 0xFF; + + switch (mode) { + case "Greyscale": + red = green = blue = input[i++]; + break; + + case "RG": + red = input[i++]; + green = input[i++]; + break; + + case "RGB": + red = input[i++]; + green = input[i++]; + blue = input[i++]; + break; + + case "RGBA": + red = input[i++]; + green = input[i++]; + blue = input[i++]; + alpha = input[i++]; + break; + + default: + throw new OperationError(`Unsupported Mode: (${mode})`); + } + + try { + const pixel = jimp.rgbaToInt(red, green, blue, alpha); + image.setPixelColor(pixel, x, y); + } catch (err) { + throw new OperationError(`Error while generating image from pixel values. (${err})`); + } } } if (scale !== 1) { + if (isWorkerEnvironment()) + self.sendStatusMessage("Scale image..."); + image.scaleToFit(width*scale, height*scale, jimp.RESIZE_NEAREST_NEIGHBOR); } From ef61735f64e712cb3b05fed72e8f076987540691 Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Sat, 12 Oct 2019 17:52:16 +0200 Subject: [PATCH 0055/1024] Fix typo --- src/core/operations/GenerateImage.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/GenerateImage.mjs b/src/core/operations/GenerateImage.mjs index dd780f18..b5ad4619 100644 --- a/src/core/operations/GenerateImage.mjs +++ b/src/core/operations/GenerateImage.mjs @@ -25,7 +25,7 @@ class GenerateImage extends Operation { this.name = "Generate Image"; this.module = "Image"; - this.description = "Generate a Image using the input as pixel values."; + this.description = "Generate an Image using the input as pixel values."; this.infoURL = ""; this.inputType = "byteArray"; this.outputType = "ArrayBuffer"; From 3e93580aa4bfa7496d8f061813b757e18b15994a Mon Sep 17 00:00:00 2001 From: Storms-Engineering Date: Sat, 12 Oct 2019 09:42:13 -0800 Subject: [PATCH 0056/1024] DES Encrypt/Decrypt - checks length of IV string Checks the length of IV string when encrypting. DES encrypt/decrypt test swas updated to use utf8 instead of HEX. --- src/core/operations/DESDecrypt.mjs | 5 +++++ src/core/operations/DESEncrypt.mjs | 5 +++++ tests/node/tests/operations.mjs | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/operations/DESDecrypt.mjs b/src/core/operations/DESDecrypt.mjs index 6725160a..9ab694b8 100644 --- a/src/core/operations/DESDecrypt.mjs +++ b/src/core/operations/DESDecrypt.mjs @@ -73,6 +73,11 @@ class DESDecrypt extends Operation { DES uses a key length of 8 bytes (64 bits). Triple DES uses a key length of 24 bytes (192 bits).`); } + if (iv.length !== 8) { + throw new OperationError(`Invalid IV length: ${iv.length} bytes + +DES uses an IV length of 8 bytes (64 bits).`); + } input = Utils.convertToByteString(input, inputType); diff --git a/src/core/operations/DESEncrypt.mjs b/src/core/operations/DESEncrypt.mjs index 5ea5f5fc..9897a413 100644 --- a/src/core/operations/DESEncrypt.mjs +++ b/src/core/operations/DESEncrypt.mjs @@ -73,6 +73,11 @@ class DESEncrypt extends Operation { DES uses a key length of 8 bytes (64 bits). Triple DES uses a key length of 24 bytes (192 bits).`); } + if (iv.length !== 8) { + throw new OperationError(`Invalid IV length: ${iv.length} bytes + +DES uses an IV length of 8 bytes (64 bits).`); + } input = Utils.convertToByteString(input, inputType); diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 42ba74c9..56699065 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -400,7 +400,7 @@ color: white; }, iv: { string: "threetwo", - option: "Hex", + option: "utf8", }, mode: "ECB", }); @@ -415,7 +415,7 @@ color: white; }, iv: { string: "threetwo", - option: "Hex", + option: "utf8", }, mode: "ECB", }); From 834ff95702ea0cf3b145c213d192d70a1807add1 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 15 Oct 2019 16:25:52 +0100 Subject: [PATCH 0057/1024] Base64 operations now throw a meaningful error if the alphabet is the wrong length --- src/core/lib/Base64.mjs | 8 +++++++- tests/node/tests/operations.mjs | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/core/lib/Base64.mjs b/src/core/lib/Base64.mjs index 7730ae07..339a41d4 100644 --- a/src/core/lib/Base64.mjs +++ b/src/core/lib/Base64.mjs @@ -7,7 +7,7 @@ */ import Utils from "../Utils.mjs"; - +import OperationError from "../errors/OperationError.mjs"; /** * Base64's the input byte array using the given alphabet, returning a string. @@ -33,6 +33,9 @@ export function toBase64(data, alphabet="A-Za-z0-9+/=") { } alphabet = Utils.expandAlphRange(alphabet).join(""); + if (alphabet.length !== 64 && alphabet.length !== 65) { // Allow for padding + throw new OperationError(`Invalid Base64 alphabet length (${alphabet.length}): ${alphabet}`); + } let output = "", chr1, chr2, chr3, @@ -86,6 +89,9 @@ export function fromBase64(data, alphabet="A-Za-z0-9+/=", returnType="string", r alphabet = alphabet || "A-Za-z0-9+/="; alphabet = Utils.expandAlphRange(alphabet).join(""); + if (alphabet.length !== 64 && alphabet.length !== 65) { // Allow for padding + throw new OperationError(`Invalid Base64 alphabet length (${alphabet.length}): ${alphabet}`); + } const output = []; let chr1, chr2, chr3, diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 42ba74c9..8337c48d 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -885,17 +885,17 @@ smothering ampersand abreast it("toBase64: editableOption", () => { const result = toBase64("some input", { alphabet: { - value: "0-9A-W" + value: "0-9A-W+/a-zXYZ=" }, }); - assert.strictEqual(result.toString(), "SPI1R1T0"); + assert.strictEqual(result.toString(), "StXkPI1gRe1sT0=="); }), it("toBase64: editableOptions key is value", () => { const result = toBase64("some input", { - alphabet: "0-9A-W", + alphabet: "0-9A-W+/a-zXYZ=", }); - assert.strictEqual(result.toString(), "SPI1R1T0"); + assert.strictEqual(result.toString(), "StXkPI1gRe1sT0=="); }), it("toBase64: editableOptions default", () => { From b28a891a403e0cb0b49fd7dfd84e3e3c906fccd2 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 15 Oct 2019 16:26:01 +0100 Subject: [PATCH 0058/1024] 9.7.10 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 446af3e9..ecf50621 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.9", + "version": "9.7.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index eea91726..e1a5e98e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.9", + "version": "9.7.10", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 4d1f97010586e2e7ef0dd3de64b222a63b3ef36a Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:10:03 +0100 Subject: [PATCH 0059/1024] Added test to ensure all operations are in a category. Added various operations to categories. --- src/core/config/Categories.json | 4 ++++ tests/node/index.mjs | 11 ++++++----- tests/{operations => node/tests}/Dish.mjs | 4 ++-- tests/operations/Categories.mjs | 19 +++++++++++++++++++ tests/operations/index.mjs | 11 ++++++++--- 5 files changed, 39 insertions(+), 10 deletions(-) rename tests/{operations => node/tests}/Dish.mjs (71%) create mode 100644 tests/operations/Categories.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 94f7fd30..db2ab3a6 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -123,6 +123,7 @@ "Generate PGP Key Pair", "PGP Encrypt", "PGP Decrypt", + "PGP Verify", "PGP Encrypt and Sign", "PGP Decrypt and Verify", "Parse SSH Host Key" @@ -284,6 +285,7 @@ "Zip", "Unzip", "Bzip2 Decompress", + "Bzip2 Compress", "Tar", "Untar" ] @@ -370,6 +372,7 @@ "Detect File Type", "Scan for Embedded Files", "Extract Files", + "YARA Rules", "Remove EXIF", "Extract EXIF", "Extract RGBA", @@ -401,6 +404,7 @@ "Cover Image", "Image Hue/Saturation/Lightness", "Sharpen Image", + "Normalise Image", "Convert Image Format", "Add Text To Image", "Hex Density chart", diff --git a/tests/node/index.mjs b/tests/node/index.mjs index 056db3d2..6d685555 100644 --- a/tests/node/index.mjs +++ b/tests/node/index.mjs @@ -13,13 +13,14 @@ import { setLongTestFailure, logTestReport, -} from "../lib/utils"; +} from "../lib/utils.mjs"; import TestRegister from "../lib/TestRegister.mjs"; -import "./tests/nodeApi"; -import "./tests/operations"; -import "./tests/File"; -import "./tests/NodeDish"; +import "./tests/nodeApi.mjs"; +import "./tests/operations.mjs"; +import "./tests/File.mjs"; +import "./tests/Dish.mjs"; +import "./tests/NodeDish.mjs"; const testStatus = { allTestsPassing: true, diff --git a/tests/operations/Dish.mjs b/tests/node/tests/Dish.mjs similarity index 71% rename from tests/operations/Dish.mjs rename to tests/node/tests/Dish.mjs index c62ed391..58da00bf 100644 --- a/tests/operations/Dish.mjs +++ b/tests/node/tests/Dish.mjs @@ -1,6 +1,6 @@ import TestRegister from "../../lib/TestRegister.mjs"; -import Dish from "../../src/core/Dish.mjs"; -import it from "../node/assertionHandler.mjs"; +import Dish from "../../../src/core/Dish.mjs"; +import it from "../../node/assertionHandler.mjs"; import assert from "assert"; TestRegister.addApiTests([ diff --git a/tests/operations/Categories.mjs b/tests/operations/Categories.mjs new file mode 100644 index 00000000..c1f9f472 --- /dev/null +++ b/tests/operations/Categories.mjs @@ -0,0 +1,19 @@ +import TestRegister from "../lib/TestRegister.mjs"; +import Categories from "../../src/core/config/Categories.json"; +import OperationConfig from "../../src/core/config/OperationConfig.json"; +import it from "../node/assertionHandler.mjs"; +import assert from "assert"; + +TestRegister.addApiTests([ + it("Categories: operations should be in a category", () => { + const catOps = []; + Categories.forEach(cat => { + catOps.push(...cat.ops); + }); + + for (const op in OperationConfig) { + assert(catOps.includes(op), `'${op}' operation is not present in any category`); + } + }), + +]); diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 14c7408e..59c64550 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -17,6 +17,11 @@ import { } from "../lib/utils.mjs"; import TestRegister from "../lib/TestRegister.mjs"; + +// Generic tests +import "./Categories.mjs"; + +// Operation tests import "./tests/BCD.mjs"; import "./tests/BSON.mjs"; import "./tests/BaconCipher.mjs"; @@ -95,9 +100,6 @@ import "./tests/ParseUDP.mjs"; // Cannot test operations that use the File type yet // import "./tests/SplitColourChannels.mjs"; -// import "./tests/nodeApi/nodeApi.mjs"; -// import "./tests/nodeApi/ops.mjs"; - const testStatus = { allTestsPassing: true, counts: { @@ -109,5 +111,8 @@ setLongTestFailure(); const logOpsTestReport = logTestReport.bind(null, testStatus); +TestRegister.runApiTests() + .then(logOpsTestReport); + TestRegister.runTests() .then(logOpsTestReport); From 44ed372f2126ccf8bfa4f5be851623f912d3069e Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:10:16 +0100 Subject: [PATCH 0060/1024] 9.7.11 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ecf50621..9cf56fae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.10", + "version": "9.7.11", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e1a5e98e..ab7c32d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.10", + "version": "9.7.11", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 223743e3b54697d5c55fa1ca90065a12810dff52 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:37:18 +0100 Subject: [PATCH 0061/1024] Removed Clippy --- .eslintignore | 3 +- package-lock.json | 49 +-- package.json | 1 - .../clippy_assets/agents/Clippy/agent.js | 1 - .../clippy_assets/agents/Clippy/map.png | Bin 1333530 -> 0 bytes src/web/static/clippy_assets/clippy.css | 62 ---- .../static/clippy_assets/images/border.png | Bin 229 -> 0 bytes src/web/static/clippy_assets/images/tip.png | Bin 238 -> 0 bytes src/web/stylesheets/index.js | 1 - src/web/waiters/SeasonalWaiter.mjs | 295 +----------------- 10 files changed, 32 insertions(+), 380 deletions(-) delete mode 100755 src/web/static/clippy_assets/agents/Clippy/agent.js delete mode 100755 src/web/static/clippy_assets/agents/Clippy/map.png delete mode 100755 src/web/static/clippy_assets/clippy.css delete mode 100755 src/web/static/clippy_assets/images/border.png delete mode 100755 src/web/static/clippy_assets/images/tip.png diff --git a/.eslintignore b/.eslintignore index da0a1615..83279ae8 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1 @@ -src/core/vendor/** -src/web/static/clippy_assets/** \ No newline at end of file +src/core/vendor/** \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9cf56fae..cecfa00b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3190,14 +3190,6 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "clippyjs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/clippyjs/-/clippyjs-0.0.3.tgz", - "integrity": "sha512-i4sPaKbCA6PfXiwxNK35E1io6AXN7VGwEGZR9sE8RqOgXPNtRWKbFubmx87JwSuwIrdClO/rkTMjhl2ZyOHjug==", - "requires": { - "jquery": "^3.2.1" - } - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -6026,7 +6018,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6047,12 +6040,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6067,17 +6062,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6194,7 +6192,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6206,6 +6205,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6220,6 +6220,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6227,12 +6228,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6251,6 +6254,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6331,7 +6335,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6343,6 +6348,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6428,7 +6434,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6464,6 +6471,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6483,6 +6491,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6526,12 +6535,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index ab7c32d4..68132a91 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,6 @@ "bootstrap-material-design": "^4.1.2", "bson": "^4.0.2", "chi-squared": "^1.1.0", - "clippyjs": "0.0.3", "core-js": "^3.2.1", "crypto-api": "^0.8.5", "crypto-js": "^3.1.9-1", diff --git a/src/web/static/clippy_assets/agents/Clippy/agent.js b/src/web/static/clippy_assets/agents/Clippy/agent.js deleted file mode 100755 index 13b7a2a1..00000000 --- a/src/web/static/clippy_assets/agents/Clippy/agent.js +++ /dev/null @@ -1 +0,0 @@ -clippy.ready('Clippy', {"overlayCount": 1, "sounds": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], "framesize": [124, 93], "animations": {"Congratulate": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 10, "images": [[124, 0]]}, {"duration": 10, "images": [[248, 0]]}, {"duration": 10, "images": [[372, 0]], "sound": "14"}, {"duration": 10, "images": [[496, 0]]}, {"duration": 10, "images": [[620, 0]]}, {"duration": 10, "images": [[744, 0]]}, {"duration": 10, "images": [[868, 0]]}, {"duration": 10, "images": [[992, 0]], "sound": "1"}, {"duration": 100, "images": [[1116, 0]]}, {"duration": 100, "images": [[1240, 0]]}, {"duration": 100, "images": [[1364, 0]]}, {"duration": 1200, "images": [[1488, 0]]}, {"duration": 100, "images": [[1612, 0]], "sound": "10"}, {"duration": 100, "images": [[1736, 0]]}, {"duration": 1200, "images": [[1488, 0]]}, {"duration": 100, "images": [[1860, 0]]}, {"duration": 100, "images": [[1984, 0]]}, {"duration": 100, "images": [[2108, 0]]}, {"duration": 100, "images": [[2232, 0]]}, {"duration": 100, "images": [[2356, 0]], "exitBranch": 21}, {"duration": 100, "images": [[0, 0]]}]}, "LookRight": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[620, 651]], "exitBranch": 5}, {"duration": 100, "images": [[744, 651]], "exitBranch": 4}, {"duration": 1200, "images": [[868, 651]]}, {"duration": 100, "images": [[992, 651]]}, {"duration": 100, "images": [[1116, 651]]}, {"duration": 100, "images": [[0, 0]]}]}, "SendMail": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1240, 1209]]}, {"duration": 100, "images": [[1364, 1209]]}, {"duration": 100, "images": [[1488, 1209]]}, {"duration": 100, "images": [[1612, 1209]]}, {"duration": 100, "images": [[1736, 1209]]}, {"duration": 100, "images": [[1860, 1209]]}, {"duration": 100, "images": [[1984, 1209]]}, {"duration": 100, "images": [[2108, 1209]]}, {"duration": 100, "images": [[2232, 1209]]}, {"duration": 100, "images": [[2356, 1209]]}, {"duration": 100, "images": [[2480, 1209]]}, {"duration": 100, "images": [[2604, 1209]]}, {"duration": 100, "images": [[2728, 1209]]}, {"duration": 100, "images": [[2852, 1209]]}, {"duration": 100, "images": [[2976, 1209]]}, {"duration": 100, "images": [[3100, 1209]]}, {"duration": 100, "images": [[3224, 1209]]}, {"duration": 100, "images": [[0, 1302]]}, {"duration": 100, "images": [[124, 1302]]}, {"duration": 100, "images": [[248, 1302]]}, {"duration": 100, "images": [[372, 1302]], "sound": "14"}, {"duration": 100, "images": [[496, 1302]], "exitBranch": 24}, {"duration": 100, "images": [[620, 1302]]}, {"duration": 100, "images": [[744, 1302]], "exitBranch": 26}, {"duration": 100, "images": [[868, 1302]]}, {"duration": 100, "images": [[992, 1302]], "exitBranch": 27}, {"duration": 100, "images": [[1116, 1302]], "exitBranch": 28}, {"duration": 100, "images": [[1240, 1302]], "exitBranch": 29}, {"duration": 100, "images": [[1364, 1302]], "exitBranch": 30}, {"duration": 100, "images": [[1488, 1302]], "exitBranch": 31}, {"duration": 100, "images": [[1612, 1302]], "exitBranch": 32}, {"duration": 100, "images": [[1736, 1302]]}, {"duration": 100, "images": [[1860, 1302]]}, {"duration": 100, "images": [[1984, 1302]]}, {"duration": 100, "images": [[2108, 1302]]}, {"duration": 100, "images": [[2232, 1302]]}, {"duration": 100, "images": [[2356, 1302]]}, {"duration": 100, "images": [[2480, 1302]]}, {"duration": 100, "images": [[2604, 1302]]}, {"duration": 100, "images": [[2728, 1302]]}, {"duration": 100, "images": [[2852, 1302]]}, {"duration": 100, "images": [[2976, 1302]]}, {"duration": 100, "images": [[3100, 1302]]}, {"duration": 100, "images": [[3224, 1302]]}, {"duration": 100, "images": [[0, 1395]]}, {"duration": 100, "images": [[124, 1395]]}, {"duration": 100, "images": [[248, 1395]], "exitBranch": 48}, {"duration": 100, "images": [[372, 1395]], "exitBranch": 49}, {"duration": 100, "images": [[496, 1395]]}, {"duration": 100, "images": [[620, 1395]], "sound": "4"}, {"duration": 100, "images": [[744, 1395]]}, {"duration": 100, "images": [[868, 1395]]}, {"duration": 600}, {"duration": 100, "images": [[992, 1395]]}, {"duration": 100, "images": [[1116, 1395]]}, {"duration": 100, "images": [[1240, 1395]]}, {"duration": 100, "images": [[1364, 1395]]}, {"duration": 100, "images": [[1488, 1395]]}, {"duration": 100, "images": [[1612, 1395]]}, {"duration": 100, "images": [[1736, 1395]]}, {"duration": 100, "images": [[1860, 1395]]}, {"duration": 100, "images": [[0, 0]]}]}, "Thinking": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[496, 93]], "sound": "14"}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[744, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[1116, 93]]}, {"duration": 100, "images": [[1240, 93]]}, {"duration": 100, "images": [[1364, 93]]}, {"duration": 100, "images": [[1488, 93]]}, {"duration": 100, "images": [[1612, 93]]}, {"duration": 100, "images": [[1736, 93]], "sound": "4"}, {"duration": 100, "images": [[1860, 93]]}, {"duration": 100, "images": [[1984, 93]]}, {"duration": 100, "images": [[2108, 93]]}, {"duration": 100, "images": [[2232, 93]]}, {"duration": 100, "images": [[2356, 93]]}, {"duration": 100, "images": [[2480, 93]]}, {"duration": 100, "images": [[2604, 93]]}, {"duration": 100, "images": [[2728, 93]]}, {"duration": 100, "images": [[2852, 93]]}, {"duration": 100, "images": [[2976, 93]]}, {"duration": 100, "images": [[3100, 93]]}, {"duration": 100, "images": [[3224, 93]]}, {"duration": 100, "images": [[0, 186]]}, {"duration": 100, "images": [[124, 186]]}, {"duration": 100, "images": [[248, 186]]}, {"duration": 100, "images": [[372, 186]]}, {"duration": 100, "images": [[496, 186]]}, {"duration": 100, "images": [[620, 186]], "exitBranch": 33, "branching": {"branches": [{"frameIndex": 21, "weight": 100}]}}, {"duration": 100, "images": [[744, 186]]}, {"duration": 100, "images": [[868, 186]]}, {"duration": 100, "images": [[992, 186]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[744, 93]], "sound": "14"}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[496, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[0, 0]]}]}, "Explain": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 900, "images": [[1364, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[0, 0]]}]}, "IdleRopePile": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[1488, 186]], "exitBranch": 74}, {"duration": 100, "images": [[1612, 186]]}, {"duration": 100, "images": [[1736, 186]], "exitBranch": 74}, {"duration": 100, "images": [[1860, 186]]}, {"duration": 100, "images": [[1984, 186]], "exitBranch": 74}, {"duration": 100, "images": [[2108, 186]]}, {"duration": 100, "images": [[2232, 186]], "exitBranch": 74}, {"duration": 100, "images": [[2356, 186]]}, {"duration": 100, "images": [[2480, 186]], "exitBranch": 74}, {"duration": 100, "images": [[2604, 186]]}, {"duration": 100, "images": [[2728, 186]], "exitBranch": 74}, {"duration": 100, "images": [[2852, 186]]}, {"duration": 100, "images": [[2976, 186]], "exitBranch": 74}, {"duration": 100, "images": [[3100, 186]]}, {"duration": 100, "images": [[3224, 186]], "exitBranch": 74}, {"duration": 100, "images": [[0, 279]]}, {"duration": 100, "images": [[124, 279]], "exitBranch": 74}, {"duration": 100, "images": [[248, 279]]}, {"duration": 100, "images": [[372, 279]], "exitBranch": 74}, {"duration": 100, "images": [[496, 279]]}, {"duration": 100, "images": [[620, 279]], "exitBranch": 74}, {"duration": 100, "images": [[744, 279]]}, {"duration": 100, "images": [[868, 279]], "exitBranch": 74}, {"duration": 100, "images": [[992, 279]]}, {"duration": 100, "images": [[1116, 279]], "exitBranch": 74}, {"duration": 100, "images": [[1240, 279]]}, {"duration": 100, "images": [[1364, 279]], "exitBranch": 74}, {"duration": 100, "images": [[1488, 279]]}, {"duration": 100, "images": [[1612, 279]], "exitBranch": 74}, {"duration": 100, "images": [[1736, 279]]}, {"duration": 100, "images": [[1860, 279]], "exitBranch": 74}, {"duration": 100, "images": [[1984, 279]]}, {"duration": 100, "images": [[2108, 279]], "exitBranch": 74}, {"duration": 100, "images": [[2232, 279]]}, {"duration": 100, "images": [[2356, 279]]}, {"duration": 100, "images": [[2480, 279]], "exitBranch": 74}, {"duration": 100, "images": [[2604, 279]]}, {"duration": 100, "images": [[2728, 279]], "exitBranch": 40}, {"duration": 100, "images": [[2852, 279]]}, {"duration": 100, "images": [[2976, 279]], "exitBranch": 42}, {"duration": 100, "images": [[3100, 279]]}, {"duration": 100, "images": [[3224, 279]], "exitBranch": 44}, {"duration": 100, "images": [[0, 372]]}, {"duration": 100, "images": [[124, 372]], "exitBranch": 46}, {"duration": 100, "images": [[248, 372]]}, {"duration": 100, "images": [[372, 372]], "exitBranch": 48}, {"duration": 100, "images": [[496, 372]]}, {"duration": 100, "images": [[620, 372]], "exitBranch": 50}, {"duration": 100, "images": [[744, 372]]}, {"duration": 100, "images": [[868, 372]], "exitBranch": 52}, {"duration": 100, "images": [[992, 372]]}, {"duration": 100, "images": [[1116, 372]], "exitBranch": 54}, {"duration": 100, "images": [[1240, 372]]}, {"duration": 100, "images": [[1364, 372]], "exitBranch": 56}, {"duration": 100, "images": [[1488, 372]]}, {"duration": 100, "images": [[1612, 372]], "exitBranch": 58}, {"duration": 100, "images": [[1736, 372]]}, {"duration": 100, "images": [[1860, 372]], "exitBranch": 5}, {"duration": 100, "images": [[1984, 372]]}, {"duration": 100, "images": [[2108, 372]], "exitBranch": 70}, {"duration": 100, "images": [[2232, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 61, "weight": 95}]}}, {"duration": 100, "images": [[2356, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 61, "weight": 25}, {"frameIndex": 67, "weight": 25}, {"frameIndex": 65, "weight": 25}]}}, {"duration": 100, "images": [[2480, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 63, "weight": 95}]}}, {"duration": 100, "images": [[2604, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 61, "weight": 25}, {"frameIndex": 67, "weight": 25}, {"frameIndex": 63, "weight": 25}]}}, {"duration": 100, "images": [[2728, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 65, "weight": 95}]}}, {"duration": 100, "images": [[2604, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 61, "weight": 25}, {"frameIndex": 65, "weight": 25}, {"frameIndex": 63, "weight": 25}]}}, {"duration": 100, "images": [[2852, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 67, "weight": 95}]}}, {"duration": 100, "images": [[2604, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 65, "weight": 25}, {"frameIndex": 67, "weight": 25}, {"frameIndex": 63, "weight": 25}]}}, {"duration": 100, "images": [[2976, 372]], "exitBranch": 70, "branching": {"branches": [{"frameIndex": 61, "weight": 95}]}}, {"duration": 100, "images": [[3100, 372]]}, {"duration": 100, "images": [[3224, 372]]}, {"duration": 100, "images": [[0, 465]]}, {"duration": 100, "images": [[124, 465]]}, {"duration": 100, "images": [[0, 0]]}]}, "IdleAtom": {"frames": [{"duration": 100, "images": [[0, 0]], "branching": {"branches": [{"frameIndex": 44, "weight": 97}]}}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[496, 93]]}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[744, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[1116, 93]]}, {"duration": 100, "images": [[1240, 93]]}, {"duration": 100, "images": [[1364, 93]]}, {"duration": 100, "images": [[1488, 93]]}, {"duration": 100, "images": [[1612, 93]]}, {"duration": 100, "images": [[1736, 93]]}, {"duration": 100, "images": [[1860, 93]]}, {"duration": 100, "images": [[1984, 93]]}, {"duration": 100, "images": [[2108, 93]]}, {"duration": 100, "images": [[2232, 93]]}, {"duration": 100, "images": [[2356, 93]]}, {"duration": 100, "images": [[2480, 93]]}, {"duration": 100, "images": [[2604, 93]]}, {"duration": 100, "images": [[2728, 93]]}, {"duration": 100, "images": [[2852, 93]]}, {"duration": 100, "images": [[2976, 93]]}, {"duration": 100, "images": [[3100, 93]]}, {"duration": 100, "images": [[3224, 93]]}, {"duration": 100, "images": [[0, 186]]}, {"duration": 100, "images": [[124, 186]]}, {"duration": 100, "images": [[248, 186]]}, {"duration": 100, "images": [[372, 186]]}, {"duration": 100, "images": [[496, 186]]}, {"duration": 100, "images": [[620, 186]], "exitBranch": 33, "branching": {"branches": [{"frameIndex": 21, "weight": 95}]}}, {"duration": 100, "images": [[744, 186]]}, {"duration": 100, "images": [[868, 186]]}, {"duration": 100, "images": [[992, 186]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[744, 93]]}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[496, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[0, 0]]}]}, "Print": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[248, 465]]}, {"duration": 100, "images": [[372, 465]]}, {"duration": 100, "images": [[496, 465]]}, {"duration": 100, "images": [[620, 465]], "sound": "5"}, {"duration": 100, "images": [[744, 465]]}, {"duration": 100, "images": [[868, 465]]}, {"duration": 100, "images": [[992, 465]]}, {"duration": 100, "images": [[1116, 465]]}, {"duration": 100, "images": [[1240, 465]]}, {"duration": 100, "images": [[1364, 465]], "sound": "8"}, {"duration": 150, "images": [[1488, 465]]}, {"duration": 100, "images": [[1612, 465]], "sound": "8"}, {"duration": 100, "images": [[1736, 465]]}, {"duration": 100, "images": [[1860, 465]]}, {"duration": 100, "images": [[1984, 465]]}, {"duration": 100, "images": [[2108, 465]]}, {"duration": 100, "images": [[2232, 465]]}, {"duration": 100, "images": [[2356, 465]]}, {"duration": 100, "images": [[2480, 465]]}, {"duration": 100, "images": [[2604, 465]]}, {"duration": 100, "images": [[2728, 465]]}, {"duration": 450, "images": [[2852, 465]]}, {"duration": 200, "images": [[2976, 465]]}, {"duration": 100, "images": [[3100, 465]], "exitBranch": 26}, {"duration": 100, "images": [[3224, 465]], "sound": "7"}, {"duration": 100, "images": [[0, 558]], "exitBranch": 28}, {"duration": 100, "images": [[124, 558]]}, {"duration": 100, "images": [[248, 558]], "exitBranch": 30}, {"duration": 100, "images": [[372, 558]]}, {"duration": 600, "images": [[496, 558]], "exitBranch": 32}, {"duration": 100, "images": [[620, 558]], "sound": "7"}, {"duration": 100, "images": [[744, 558]], "exitBranch": 34}, {"duration": 100, "images": [[868, 558]]}, {"duration": 100, "images": [[992, 558]], "exitBranch": 36}, {"duration": 100, "images": [[1116, 558]]}, {"duration": 600, "images": [[1240, 558]], "exitBranch": 38}, {"duration": 100, "images": [[1364, 558]], "sound": "7"}, {"duration": 100, "images": [[1488, 558]], "exitBranch": 40}, {"duration": 100, "images": [[1612, 558]]}, {"duration": 100, "images": [[1736, 558]], "exitBranch": 44}, {"duration": 600, "images": [[1860, 558]]}, {"duration": 100, "images": [[1984, 558]], "exitBranch": 44, "sound": "7"}, {"duration": 100, "images": [[2108, 558]]}, {"duration": 100, "images": [[2232, 558]], "exitBranch": 46}, {"duration": 100, "images": [[2356, 558]]}, {"duration": 100, "images": [[2480, 558]], "exitBranch": 48}, {"duration": 100, "images": [[2604, 558]]}, {"duration": 100, "images": [[2728, 558]], "exitBranch": 51}, {"duration": 600, "images": [[2852, 558]]}, {"duration": 100, "images": [[2976, 558]]}, {"duration": 100, "images": [[3100, 558]], "exitBranch": 53}, {"duration": 100, "images": [[3224, 558]], "sound": "11"}, {"duration": 100, "images": [[0, 651]]}, {"duration": 100, "images": [[124, 651]]}, {"duration": 100, "images": [[248, 651]]}, {"duration": 100, "images": [[372, 651]], "exitBranch": 58}, {"duration": 100, "images": [[496, 651]]}, {"duration": 100, "images": [[0, 0]]}]}, "Hide": {"frames": [{"duration": 10, "images": [[0, 0]]}, {"duration": 10, "images": [[2480, 0]]}, {"duration": 10, "images": [[2604, 0]]}, {"duration": 10, "images": [[2728, 0]]}, {"duration": 10}]}, "GetAttention": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1240, 651]]}, {"duration": 100, "images": [[1364, 651]]}, {"duration": 100, "images": [[1488, 651]]}, {"duration": 100, "images": [[1612, 651]]}, {"duration": 100, "images": [[1736, 651]]}, {"duration": 100, "images": [[1860, 651]]}, {"duration": 100, "images": [[1984, 651]]}, {"duration": 100, "images": [[2108, 651]]}, {"duration": 100, "images": [[2232, 651]], "sound": "10"}, {"duration": 150, "images": [[2356, 651]]}, {"duration": 150, "images": [[2232, 651]], "sound": "10"}, {"duration": 150, "images": [[2356, 651]]}, {"duration": 150, "images": [[2232, 651]], "sound": "10"}, {"duration": 150, "images": [[2480, 651]]}, {"duration": 100, "images": [[2604, 651]]}, {"duration": 100, "images": [[2728, 651]]}, {"duration": 100, "images": [[2852, 651]]}, {"duration": 100, "images": [[2976, 651]]}, {"duration": 100, "images": [[3100, 651]]}, {"duration": 100, "images": [[3224, 651]]}, {"duration": 100, "images": [[0, 744]]}, {"duration": 100, "images": [[124, 744]], "exitBranch": 23}, {"duration": 100, "images": [[0, 0]]}]}, "Save": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[3100, 837]]}, {"duration": 130, "images": [[3224, 837]], "sound": "13"}, {"duration": 130, "images": [[0, 930]]}, {"duration": 100, "images": [[124, 930]]}, {"duration": 100, "images": [[248, 930]]}, {"duration": 100, "images": [[372, 930]]}, {"duration": 100, "images": [[496, 930]], "exitBranch": 10}, {"duration": 450, "images": [[620, 930]]}, {"duration": 100, "images": [[496, 930]], "exitBranch": 10}, {"duration": 100, "images": [[744, 930]]}, {"duration": 100, "images": [[868, 930]]}, {"duration": 100, "images": [[992, 930]]}, {"duration": 130, "images": [[1116, 930]], "sound": "8"}, {"duration": 130, "images": [[1240, 930]]}, {"duration": 130, "images": [[1364, 930]]}, {"duration": 130, "images": [[1488, 930]], "sound": "8"}, {"duration": 130, "images": [[1612, 930]], "sound": "8"}, {"duration": 130, "images": [[1736, 930]]}, {"duration": 130, "images": [[1860, 930]], "sound": "8"}, {"duration": 100, "images": [[1984, 930]]}, {"duration": 100, "images": [[2108, 930]], "sound": "9"}, {"duration": 160, "images": [[2232, 930]]}, {"duration": 100, "images": [[2356, 930]], "sound": "2"}, {"duration": 100, "images": [[2480, 930]]}, {"duration": 100, "images": [[2604, 930]]}, {"duration": 100, "images": [[2728, 930]], "exitBranch": 34}, {"duration": 450, "images": [[2852, 930]]}, {"duration": 100, "images": [[2976, 930]], "exitBranch": 34, "sound": "10"}, {"duration": 400, "images": [[3100, 930]]}, {"duration": 100, "images": [[3224, 930]], "exitBranch": 34}, {"duration": 100, "images": [[0, 1023]]}, {"duration": 100, "images": [[124, 1023]]}, {"duration": 100, "images": [[248, 1023]]}, {"duration": 100, "images": [[372, 1023]]}, {"duration": 100, "images": [[496, 1023]]}, {"duration": 100, "images": [[620, 1023]]}, {"duration": 100, "images": [[744, 1023]]}, {"duration": 100, "images": [[868, 1023]]}, {"duration": 100, "images": [[992, 1023]]}, {"duration": 100, "images": [[1116, 1023]]}, {"duration": 100, "images": [[0, 0]]}]}, "GetTechy": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[496, 93]], "sound": "14"}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[744, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[1116, 93]]}, {"duration": 100, "images": [[1240, 93]]}, {"duration": 100, "images": [[1364, 93]]}, {"duration": 100, "images": [[1488, 93]]}, {"duration": 100, "images": [[1612, 93]]}, {"duration": 100, "images": [[1736, 93]], "sound": "4"}, {"duration": 100, "images": [[1860, 93]]}, {"duration": 100, "images": [[1984, 93]]}, {"duration": 100, "images": [[2108, 93]]}, {"duration": 100, "images": [[2232, 93]]}, {"duration": 100, "images": [[2356, 93]]}, {"duration": 100, "images": [[2480, 93]]}, {"duration": 100, "images": [[2604, 93]]}, {"duration": 100, "images": [[2728, 93]]}, {"duration": 100, "images": [[2852, 93]]}, {"duration": 100, "images": [[2976, 93]]}, {"duration": 100, "images": [[3100, 93]]}, {"duration": 100, "images": [[3224, 93]]}, {"duration": 100, "images": [[0, 186]]}, {"duration": 100, "images": [[124, 186]]}, {"duration": 100, "images": [[248, 186]]}, {"duration": 100, "images": [[372, 186]]}, {"duration": 100, "images": [[496, 186]]}, {"duration": 100, "images": [[620, 186]], "exitBranch": 33, "branching": {"branches": [{"frameIndex": 21, "weight": 100}]}}, {"duration": 100, "images": [[744, 186]]}, {"duration": 100, "images": [[868, 186]]}, {"duration": 100, "images": [[992, 186]]}, {"duration": 100, "images": [[992, 93]]}, {"duration": 100, "images": [[868, 93]]}, {"duration": 100, "images": [[744, 93]], "sound": "14"}, {"duration": 100, "images": [[620, 93]]}, {"duration": 100, "images": [[496, 93]]}, {"duration": 100, "images": [[372, 93]]}, {"duration": 100, "images": [[248, 93]]}, {"duration": 100, "images": [[124, 93]]}, {"duration": 100, "images": [[0, 0]]}]}, "GestureUp": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[868, 744]]}, {"duration": 100, "images": [[992, 744]]}, {"duration": 100, "images": [[1116, 744]]}, {"duration": 100, "images": [[1240, 744]]}, {"duration": 100, "images": [[1364, 744]], "exitBranch": 11}, {"duration": 100, "images": [[1488, 744]]}, {"duration": 100, "images": [[1612, 744]], "branching": {"branches": [{"frameIndex": 5, "weight": 50}]}}, {"duration": 100, "images": [[1736, 744]]}, {"duration": 1200, "images": [[1860, 744]]}, {"duration": 100, "images": [[1984, 744]]}, {"duration": 100, "images": [[1364, 744]]}, {"duration": 100, "images": [[1240, 744]]}, {"duration": 100, "images": [[1116, 744]]}, {"duration": 100, "images": [[992, 744]]}, {"duration": 100, "images": [[868, 744]]}, {"duration": 100, "images": [[0, 0]]}]}, "Idle1_1": {"frames": [{"duration": 100, "images": [[0, 0]], "branching": {"branches": [{"frameIndex": 37, "weight": 20}]}}, {"duration": 100, "images": [[2108, 744]], "exitBranch": 2, "branching": {"branches": [{"frameIndex": 1, "weight": 95}]}}, {"duration": 100, "images": [[2232, 744]], "exitBranch": 16}, {"duration": 100, "images": [[2356, 744]]}, {"duration": 300, "images": [[2480, 744]], "exitBranch": 5, "branching": {"branches": [{"frameIndex": 4, "weight": 95}]}}, {"duration": 100, "images": [[2604, 744]], "exitBranch": 16, "branching": {"branches": [{"frameIndex": 9, "weight": 25}, {"frameIndex": 12, "weight": 25}, {"frameIndex": 15, "weight": 25}]}}, {"duration": 100, "images": [[2728, 744]]}, {"duration": 300, "images": [[2852, 744]], "exitBranch": 8, "branching": {"branches": [{"frameIndex": 7, "weight": 94}, {"frameIndex": 5, "weight": 3}]}}, {"duration": 100, "images": [[2976, 744]], "exitBranch": 16}, {"duration": 100, "images": [[3100, 744]]}, {"duration": 300, "images": [[3224, 744]], "exitBranch": 11, "branching": {"branches": [{"frameIndex": 10, "weight": 94}, {"frameIndex": 8, "weight": 2}, {"frameIndex": 5, "weight": 2}]}}, {"duration": 100, "images": [[0, 837]], "exitBranch": 16}, {"duration": 100, "images": [[124, 837]]}, {"duration": 300, "images": [[248, 837]], "exitBranch": 14, "branching": {"branches": [{"frameIndex": 13, "weight": 93}, {"frameIndex": 11, "weight": 3}, {"frameIndex": 5, "weight": 2}]}}, {"duration": 100, "images": [[372, 837]], "exitBranch": 16}, {"duration": 100, "images": [[496, 837]]}, {"duration": 300, "images": [[620, 837]], "exitBranch": 17, "branching": {"branches": [{"frameIndex": 16, "weight": 95}]}}, {"duration": 100, "images": [[744, 837]], "exitBranch": 36, "branching": {"branches": [{"frameIndex": 36, "weight": 90}]}}, {"duration": 100, "images": [[868, 837]]}, {"duration": 300, "images": [[992, 837]], "exitBranch": 35}, {"duration": 100, "images": [[1116, 837]]}, {"duration": 100, "images": [[1240, 837]], "exitBranch": 35}, {"duration": 300, "images": [[1364, 837]], "exitBranch": 23, "branching": {"branches": [{"frameIndex": 22, "weight": 94}, {"frameIndex": 23, "weight": 3}]}}, {"duration": 100, "images": [[1488, 837]], "exitBranch": 35, "branching": {"branches": [{"frameIndex": 24, "weight": 25}, {"frameIndex": 27, "weight": 25}, {"frameIndex": 30, "weight": 25}]}}, {"duration": 100, "images": [[1612, 837]]}, {"duration": 300, "images": [[1736, 837]], "exitBranch": 26, "branching": {"branches": [{"frameIndex": 25, "weight": 94}, {"frameIndex": 23, "weight": 3}]}}, {"duration": 100, "images": [[1860, 837]], "exitBranch": 35}, {"duration": 100, "images": [[1984, 837]]}, {"duration": 300, "images": [[2108, 837]], "exitBranch": 29, "branching": {"branches": [{"frameIndex": 28, "weight": 94}, {"frameIndex": 23, "weight": 3}]}}, {"duration": 100, "images": [[2232, 837]], "exitBranch": 35}, {"duration": 100, "images": [[2356, 837]]}, {"duration": 300, "images": [[2480, 837]], "exitBranch": 32, "branching": {"branches": [{"frameIndex": 31, "weight": 94}, {"frameIndex": 23, "weight": 3}]}}, {"duration": 100, "images": [[2604, 837]], "exitBranch": 35}, {"duration": 100, "images": [[2728, 837]]}, {"duration": 300, "images": [[2852, 837]], "exitBranch": 35, "branching": {"branches": [{"frameIndex": 34, "weight": 80}]}}, {"duration": 100, "images": [[2976, 837]]}, {"duration": 100, "images": [[0, 0]], "exitBranch": 42}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 900, "images": [[1364, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[0, 0]]}]}, "Processing": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1240, 1023]], "sound": "14"}, {"duration": 100, "images": [[1364, 1023]]}, {"duration": 100, "images": [[1488, 1023]]}, {"duration": 100, "images": [[1612, 1023]], "exitBranch": 33}, {"duration": 100, "images": [[1736, 1023]]}, {"duration": 100, "images": [[1860, 1023]]}, {"duration": 100, "images": [[1984, 1023]]}, {"duration": 100, "images": [[2108, 1023]], "sound": "11"}, {"duration": 100, "images": [[2232, 1023]], "exitBranch": 31}, {"duration": 100, "images": [[2356, 1023]]}, {"duration": 100, "images": [[2480, 1023]]}, {"duration": 100, "images": [[2604, 1023]]}, {"duration": 100, "images": [[2728, 1023]], "exitBranch": 31}, {"duration": 100, "images": [[2852, 1023]]}, {"duration": 100, "images": [[2976, 1023]]}, {"duration": 100, "images": [[3100, 1023]]}, {"duration": 100, "images": [[3224, 1023]]}, {"duration": 100, "images": [[0, 1116]], "sound": "11"}, {"duration": 100, "images": [[124, 1116]]}, {"duration": 100, "images": [[248, 1116]]}, {"duration": 100, "images": [[372, 1116]]}, {"duration": 100, "images": [[496, 1116]]}, {"duration": 100, "images": [[620, 1116]]}, {"duration": 100, "images": [[744, 1116]]}, {"duration": 100, "images": [[868, 1116]]}, {"duration": 100, "images": [[992, 1116]]}, {"duration": 100, "images": [[1116, 1116]], "exitBranch": 28, "branching": {"branches": [{"frameIndex": 7, "weight": 100}]}}, {"duration": 100, "images": [[1240, 1116]], "sound": "11"}, {"duration": 100, "images": [[1364, 1116]]}, {"duration": 100, "images": [[1488, 1116]]}, {"duration": 100, "images": [[1612, 1116]]}, {"duration": 100, "images": [[1736, 1116]]}, {"duration": 100, "images": [[1860, 1116]]}, {"duration": 100, "images": [[1984, 1116]]}, {"duration": 100, "images": [[2108, 1116]]}, {"duration": 100, "images": [[2232, 1116]]}, {"duration": 100, "images": [[0, 0]]}]}, "Alert": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[2356, 1116]]}, {"duration": 100, "images": [[2480, 1116]]}, {"duration": 100, "images": [[2604, 1116]]}, {"duration": 100, "images": [[2728, 1116]]}, {"duration": 100, "images": [[2852, 1116]]}, {"duration": 100, "images": [[2976, 1116]], "sound": "6"}, {"duration": 100, "images": [[3100, 1116]]}, {"duration": 100, "images": [[3224, 1116]]}, {"duration": 100, "images": [[0, 1209]]}, {"duration": 500, "images": [[124, 1209]], "exitBranch": 13}, {"duration": 100, "images": [[248, 1209]], "exitBranch": 13}, {"duration": 100, "images": [[372, 1209]]}, {"duration": 100, "images": [[496, 1209]]}, {"duration": 100, "images": [[620, 1209]]}, {"duration": 100, "images": [[744, 1209]]}, {"duration": 100, "images": [[868, 1209]]}, {"duration": 100, "images": [[992, 1209]]}, {"duration": 100, "images": [[1116, 1209]]}, {"duration": 100, "images": [[0, 0]]}]}, "LookUpRight": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[248, 744]], "exitBranch": 5}, {"duration": 100, "images": [[372, 744]], "exitBranch": 4}, {"duration": 1200, "images": [[496, 744]]}, {"duration": 100, "images": [[620, 744]]}, {"duration": 100, "images": [[744, 744]]}, {"duration": 100, "images": [[0, 0]]}]}, "IdleSideToSide": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[2108, 744]], "exitBranch": 2, "branching": {"branches": [{"frameIndex": 1, "weight": 95}]}}, {"duration": 100, "images": [[2232, 744]], "exitBranch": 16}, {"duration": 100, "images": [[2356, 744]]}, {"duration": 300, "images": [[2480, 744]], "exitBranch": 5, "branching": {"branches": [{"frameIndex": 4, "weight": 95}]}}, {"duration": 100, "images": [[2604, 744]], "exitBranch": 16, "branching": {"branches": [{"frameIndex": 9, "weight": 25}, {"frameIndex": 12, "weight": 25}, {"frameIndex": 15, "weight": 25}]}}, {"duration": 100, "images": [[2728, 744]]}, {"duration": 300, "images": [[2852, 744]], "exitBranch": 8, "branching": {"branches": [{"frameIndex": 7, "weight": 92}, {"frameIndex": 5, "weight": 5}]}}, {"duration": 100, "images": [[2976, 744]], "exitBranch": 16}, {"duration": 100, "images": [[3100, 744]]}, {"duration": 300, "images": [[3224, 744]], "exitBranch": 11, "branching": {"branches": [{"frameIndex": 10, "weight": 91}, {"frameIndex": 8, "weight": 5}, {"frameIndex": 5, "weight": 2}]}}, {"duration": 100, "images": [[0, 837]], "exitBranch": 16}, {"duration": 100, "images": [[124, 837]]}, {"duration": 300, "images": [[248, 837]], "exitBranch": 14, "branching": {"branches": [{"frameIndex": 13, "weight": 91}, {"frameIndex": 11, "weight": 3}, {"frameIndex": 5, "weight": 2}]}}, {"duration": 100, "images": [[372, 837]], "exitBranch": 16}, {"duration": 100, "images": [[496, 837]]}, {"duration": 300, "images": [[620, 837]], "exitBranch": 17, "branching": {"branches": [{"frameIndex": 16, "weight": 75}]}}, {"duration": 100, "images": [[744, 837]], "exitBranch": 36, "branching": {"branches": [{"frameIndex": 36, "weight": 90}]}}, {"duration": 100, "images": [[868, 837]]}, {"duration": 300, "images": [[992, 837]], "exitBranch": 35}, {"duration": 100, "images": [[1116, 837]]}, {"duration": 100, "images": [[1240, 837]], "exitBranch": 35}, {"duration": 300, "images": [[1364, 837]], "exitBranch": 23, "branching": {"branches": [{"frameIndex": 22, "weight": 91}, {"frameIndex": 23, "weight": 5}]}}, {"duration": 100, "images": [[1488, 837]], "exitBranch": 35, "branching": {"branches": [{"frameIndex": 24, "weight": 25}, {"frameIndex": 27, "weight": 25}, {"frameIndex": 30, "weight": 25}]}}, {"duration": 100, "images": [[1612, 837]]}, {"duration": 0, "images": [[1736, 837]], "exitBranch": 26, "branching": {"branches": [{"frameIndex": 25, "weight": 91}, {"frameIndex": 23, "weight": 5}]}}, {"duration": 100, "images": [[1860, 837]], "exitBranch": 35}, {"duration": 100, "images": [[1984, 837]]}, {"duration": 300, "images": [[2108, 837]], "exitBranch": 29, "branching": {"branches": [{"frameIndex": 28, "weight": 91}, {"frameIndex": 23, "weight": 5}]}}, {"duration": 100, "images": [[2232, 837]], "exitBranch": 35}, {"duration": 100, "images": [[2356, 837]]}, {"duration": 300, "images": [[2480, 837]], "exitBranch": 32, "branching": {"branches": [{"frameIndex": 31, "weight": 91}, {"frameIndex": 23, "weight": 5}]}}, {"duration": 100, "images": [[2604, 837]], "exitBranch": 35}, {"duration": 100, "images": [[2728, 837]]}, {"duration": 300, "images": [[2852, 837]], "exitBranch": 35, "branching": {"branches": [{"frameIndex": 34, "weight": 80}]}}, {"duration": 100, "images": [[2976, 837]]}, {"duration": 100, "images": [[0, 0]]}]}, "GoodBye": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 34, "sound": "15", "branching": {"branches": [{"frameIndex": 34, "weight": 50}]}}, {"duration": 100, "images": [[2356, 2883]]}, {"duration": 250, "images": [[2480, 2883]]}, {"duration": 100, "images": [[2604, 2883]], "sound": "13"}, {"duration": 100, "images": [[2728, 2883]]}, {"duration": 100, "images": [[2852, 2883]]}, {"duration": 100, "images": [[2976, 2883]]}, {"duration": 100, "images": [[3100, 2883]], "sound": "12"}, {"duration": 100, "images": [[3224, 2883]]}, {"duration": 100, "images": [[0, 2976]]}, {"duration": 100, "images": [[124, 2976]]}, {"duration": 100, "images": [[248, 2976]]}, {"duration": 100, "images": [[372, 2976]]}, {"duration": 100, "images": [[496, 2976]]}, {"duration": 200, "images": [[620, 2976]]}, {"duration": 200, "images": [[744, 2976]], "sound": "10"}, {"duration": 200, "images": [[620, 2976]]}, {"duration": 200, "images": [[868, 2976]]}, {"duration": 100, "images": [[992, 2976]]}, {"duration": 100, "images": [[1116, 2976]]}, {"duration": 200, "images": [[1240, 2976]]}, {"duration": 100, "images": [[1364, 2976]], "sound": "14"}, {"duration": 100, "images": [[1488, 2976]]}, {"duration": 100, "images": [[1612, 2976]]}, {"duration": 100, "images": [[1736, 2976]]}, {"duration": 100, "images": [[1860, 2976]]}, {"duration": 100, "images": [[1984, 2976]]}, {"duration": 100, "images": [[2108, 2976]]}, {"duration": 100, "images": [[2232, 2976]]}, {"duration": 100, "images": [[2356, 2976]]}, {"duration": 100, "images": [[2480, 2976]], "sound": "11"}, {"duration": 100, "images": [[2604, 2976]]}, {"duration": 100, "images": [[2728, 2976]]}, {"duration": 100, "images": [[2852, 2976]], "exitBranch": 37, "branching": {"branches": [{"frameIndex": 37, "weight": 100}]}}, {"duration": 100, "images": [[1240, 1395]]}, {"duration": 100, "images": [[1116, 1395]]}, {"duration": 100, "images": [[992, 1395]]}, {"duration": 100}]}, "LookLeft": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[248, 1488]], "exitBranch": 5}, {"duration": 100, "images": [[372, 1488]], "exitBranch": 4}, {"duration": 1200, "images": [[496, 1488]]}, {"duration": 100, "images": [[620, 1488]]}, {"duration": 100, "images": [[744, 1488]]}, {"duration": 100, "images": [[0, 0]]}]}, "IdleHeadScratch": {"frames": [{"duration": 100, "images": [[1984, 2418]], "branching": {"branches": [{"frameIndex": 18, "weight": 85}]}}, {"duration": 100, "images": [[2108, 2418]]}, {"duration": 100, "images": [[2232, 2418]], "exitBranch": 16}, {"duration": 100, "images": [[2356, 2418]]}, {"duration": 100, "images": [[2480, 2418]]}, {"duration": 100, "images": [[2604, 2418]]}, {"duration": 100, "images": [[2728, 2418]], "exitBranch": 16}, {"duration": 100, "images": [[2852, 2418]]}, {"duration": 100, "images": [[2976, 2418]]}, {"duration": 100, "images": [[3100, 2418]], "exitBranch": 16, "branching": {"branches": [{"frameIndex": 6, "weight": 80}]}}, {"duration": 100, "images": [[3224, 2418]], "exitBranch": 16}, {"duration": 100, "images": [[0, 2511]]}, {"duration": 100, "images": [[124, 2511]], "exitBranch": 16}, {"duration": 100, "images": [[248, 2511]]}, {"duration": 100, "images": [[372, 2511]]}, {"duration": 100, "images": [[496, 2511]], "exitBranch": 16, "branching": {"branches": [{"frameIndex": 12, "weight": 80}]}}, {"duration": 100, "images": [[620, 2511]]}, {"duration": 100, "images": [[744, 2511]]}, {"duration": 100, "images": [[868, 2511]]}]}, "LookUpLeft": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[868, 1488]], "exitBranch": 5}, {"duration": 100, "images": [[992, 1488]], "exitBranch": 4}, {"duration": 1200, "images": [[1116, 1488]]}, {"duration": 100, "images": [[1240, 1488]]}, {"duration": 100, "images": [[1364, 1488]]}, {"duration": 100, "images": [[0, 0]]}]}, "CheckingSomething": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1488, 1488]], "sound": "13"}, {"duration": 100, "images": [[1612, 1488]]}, {"duration": 100, "images": [[1736, 1488]]}, {"duration": 100, "images": [[1860, 1488]]}, {"duration": 100, "images": [[1984, 1488]]}, {"duration": 100, "images": [[2108, 1488]]}, {"duration": 100, "images": [[2232, 1488]]}, {"duration": 200, "images": [[2356, 1488]]}, {"duration": 200, "images": [[2480, 1488]]}, {"duration": 200, "images": [[2604, 1488]]}, {"duration": 100, "images": [[2728, 1488]], "sound": "10"}, {"duration": 100, "images": [[2852, 1488]], "exitBranch": 52}, {"duration": 140, "images": [[2976, 1488]]}, {"duration": 100, "images": [[3100, 1488]]}, {"duration": 100, "images": [[3224, 1488]]}, {"duration": 100, "images": [[0, 1581]]}, {"duration": 200, "images": [[124, 1581]]}, {"duration": 100, "images": [[248, 1581]]}, {"duration": 100, "images": [[372, 1581]]}, {"duration": 100, "images": [[496, 1581]]}, {"duration": 200, "images": [[620, 1581]], "exitBranch": 22, "branching": {"branches": [{"frameIndex": 21, "weight": 50}]}}, {"duration": 100, "images": [[744, 1581]]}, {"duration": 100, "images": [[868, 1581]]}, {"duration": 200, "images": [[992, 1581]], "exitBranch": 25, "branching": {"branches": [{"frameIndex": 24, "weight": 50}]}}, {"duration": 100, "images": [[1116, 1581]]}, {"duration": 100, "images": [[1240, 1581]]}, {"duration": 100, "images": [[1364, 1581]]}, {"duration": 200, "images": [[1488, 1581]], "exitBranch": 29, "branching": {"branches": [{"frameIndex": 28, "weight": 50}]}}, {"duration": 100, "images": [[1612, 1581]]}, {"duration": 100, "images": [[1736, 1581]]}, {"duration": 200, "images": [[1860, 1581]], "exitBranch": 32, "branching": {"branches": [{"frameIndex": 31, "weight": 50}]}}, {"duration": 100, "images": [[1984, 1581]]}, {"duration": 100, "images": [[2108, 1581]]}, {"duration": 100, "images": [[2232, 1581]]}, {"duration": 100, "images": [[2356, 1581]]}, {"duration": 200, "images": [[2480, 1581]], "exitBranch": 37, "branching": {"branches": [{"frameIndex": 36, "weight": 50}]}}, {"duration": 100, "images": [[2604, 1581]]}, {"duration": 100, "images": [[2728, 1581]]}, {"duration": 200, "images": [[2852, 1581]], "exitBranch": 40, "branching": {"branches": [{"frameIndex": 39, "weight": 50}]}}, {"duration": 100, "images": [[2976, 1581]]}, {"duration": 100, "images": [[3100, 1581]], "exitBranch": 50}, {"duration": 100, "images": [[3224, 1581]], "branching": {"branches": [{"frameIndex": 14, "weight": 75}]}}, {"duration": 100, "images": [[0, 1674]]}, {"duration": 200, "images": [[124, 1674]], "exitBranch": 51, "branching": {"branches": [{"frameIndex": 44, "weight": 50}]}}, {"duration": 100, "images": [[248, 1674]]}, {"duration": 100, "images": [[372, 1674]]}, {"duration": 100, "images": [[496, 1674]]}, {"duration": 100, "images": [[620, 1674]], "exitBranch": 49, "branching": {"branches": [{"frameIndex": 48, "weight": 85}]}}, {"duration": 100, "images": [[744, 1674]], "sound": "10"}, {"duration": 100, "images": [[868, 1674]], "exitBranch": 52, "branching": {"branches": [{"frameIndex": 10, "weight": 100}]}}, {"duration": 100, "images": [[992, 1674]]}, {"duration": 100, "images": [[1116, 1674]], "sound": "14"}, {"duration": 100, "images": [[1240, 1674]]}, {"duration": 100, "images": [[0, 0]]}]}, "Hearing_1": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[2356, 1116]]}, {"duration": 100, "images": [[2480, 1116]]}, {"duration": 100, "images": [[2604, 1116]]}, {"duration": 100, "images": [[2728, 1116]]}, {"duration": 100, "images": [[2852, 1116]]}, {"duration": 100, "images": [[2976, 1116]], "sound": "6"}, {"duration": 100, "images": [[3100, 1116]]}, {"duration": 100, "images": [[3224, 1116]]}, {"duration": 100, "images": [[0, 1209]]}, {"duration": 500, "images": [[124, 1209]], "exitBranch": 32}, {"duration": 100, "images": [[1364, 1674]], "branching": {"branches": [{"frameIndex": 6, "weight": 60}]}}, {"duration": 100, "images": [[2976, 1116]]}, {"duration": 100, "images": [[3100, 1116]], "exitBranch": 32}, {"duration": 100, "images": [[3224, 1116]]}, {"duration": 100, "images": [[0, 1209]], "exitBranch": 32}, {"duration": 500, "images": [[1364, 1674]], "branching": {"branches": [{"frameIndex": 12, "weight": 50}]}}, {"duration": 100, "images": [[1488, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[1612, 1674]]}, {"duration": 100, "images": [[1736, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[1860, 1674]]}, {"duration": 400, "images": [[1984, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[2108, 1674]], "branching": {"branches": [{"frameIndex": 18, "weight": 50}]}}, {"duration": 100, "images": [[2232, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[2356, 1674]]}, {"duration": 100, "images": [[2480, 1674]], "exitBranch": 32}, {"duration": 500, "images": [[2604, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[2728, 1674]], "branching": {"branches": [{"frameIndex": 17, "weight": 50}]}}, {"duration": 100, "images": [[2852, 1674]], "exitBranch": 32}, {"duration": 100, "images": [[2976, 1674]]}, {"duration": 100, "images": [[248, 1209]], "exitBranch": 32, "branching": {"branches": [{"frameIndex": 12, "weight": 100}]}}, {"duration": 100, "images": [[372, 1209]]}, {"duration": 100, "images": [[496, 1209]]}, {"duration": 100, "images": [[620, 1209]]}, {"duration": 100, "images": [[744, 1209]]}, {"duration": 100, "images": [[868, 1209]]}, {"duration": 100, "images": [[992, 1209]]}, {"duration": 100, "images": [[1116, 1209]]}, {"duration": 100, "images": [[0, 0]]}]}, "GetWizardy": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 10, "images": [[124, 0]]}, {"duration": 10, "images": [[248, 0]]}, {"duration": 10, "images": [[372, 0]], "sound": "14"}, {"duration": 10, "images": [[496, 0]]}, {"duration": 10, "images": [[620, 0]]}, {"duration": 10, "images": [[744, 0]]}, {"duration": 10, "images": [[868, 0]]}, {"duration": 10, "images": [[992, 0]], "sound": "1"}, {"duration": 100, "images": [[1116, 0]]}, {"duration": 100, "images": [[1240, 0]]}, {"duration": 100, "images": [[1364, 0]]}, {"duration": 1200, "images": [[1488, 0]]}, {"duration": 100, "images": [[1612, 0]], "sound": "10"}, {"duration": 100, "images": [[1736, 0]]}, {"duration": 1200, "images": [[1488, 0]]}, {"duration": 100, "images": [[1860, 0]]}, {"duration": 100, "images": [[1984, 0]]}, {"duration": 100, "images": [[2108, 0]]}, {"duration": 100, "images": [[2232, 0]]}, {"duration": 100, "images": [[2356, 0]], "exitBranch": 21}, {"duration": 100, "images": [[0, 0]]}]}, "IdleFingerTap": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[2976, 2976]]}, {"duration": 100, "images": [[3100, 2976]]}, {"duration": 100, "images": [[3224, 2976]], "exitBranch": 8}, {"duration": 100, "images": [[0, 3069]], "exitBranch": 8}, {"duration": 100, "images": [[124, 3069]], "branching": {"branches": [{"frameIndex": 7, "weight": 3}]}}, {"duration": 150, "images": [[248, 3069]], "exitBranch": 7, "branching": {"branches": [{"frameIndex": 6, "weight": 98}, {"frameIndex": 5, "weight": 2}]}}, {"duration": 100, "images": [[372, 3069]], "exitBranch": 8}, {"duration": 100, "images": [[496, 3069]]}, {"duration": 100, "images": [[620, 3069]]}, {"duration": 100, "images": [[0, 0]]}]}, "GestureLeft": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[3100, 1674]]}, {"duration": 100, "images": [[3224, 1674]]}, {"duration": 100, "images": [[0, 1767]]}, {"duration": 100, "images": [[124, 1767]], "exitBranch": 12}, {"duration": 100, "images": [[248, 1767]]}, {"duration": 100, "images": [[372, 1767]], "branching": {"branches": [{"frameIndex": 4, "weight": 60}]}}, {"duration": 100, "images": [[496, 1767]]}, {"duration": 100, "images": [[620, 1767]]}, {"duration": 1200, "images": [[744, 1767]]}, {"duration": 100, "images": [[868, 1767]]}, {"duration": 450, "images": [[992, 1767]]}, {"duration": 100, "images": [[0, 1767]]}, {"duration": 100, "images": [[3224, 1674]]}, {"duration": 100, "images": [[3100, 1674]]}, {"duration": 100, "images": [[0, 0]]}]}, "Wave": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15", "branching": {"branches": [{"frameIndex": 15, "weight": 33}]}}, {"duration": 100, "images": [[1116, 1767]]}, {"duration": 100, "images": [[1240, 1767]]}, {"duration": 100, "images": [[1364, 1767]], "exitBranch": 13}, {"duration": 100, "images": [[1488, 1767]], "exitBranch": 13}, {"duration": 100, "images": [[1612, 1767]], "exitBranch": 13}, {"duration": 100, "images": [[1736, 1767]], "branching": {"branches": [{"frameIndex": 9, "weight": 100}]}}, {"duration": 100, "images": [[1860, 1767]], "exitBranch": 11, "sound": "10"}, {"duration": 100, "images": [[1984, 1767]]}, {"duration": 100, "images": [[2108, 1767]], "exitBranch": 11, "sound": "10"}, {"duration": 100, "images": [[2232, 1767]]}, {"duration": 100, "images": [[2356, 1767]], "sound": "10"}, {"duration": 100, "images": [[2480, 1767]]}, {"duration": 100, "images": [[2604, 1767]]}, {"duration": 100, "images": [[2728, 1767]], "exitBranch": 26, "branching": {"branches": [{"frameIndex": 26, "weight": 100}]}}, {"duration": 100, "images": [[2852, 1767]]}, {"duration": 100, "images": [[2976, 1767]]}, {"duration": 100, "images": [[3100, 1767]], "sound": "12"}, {"duration": 100, "images": [[3224, 1767]]}, {"duration": 100, "images": [[0, 1860]]}, {"duration": 100, "images": [[124, 1860]], "exitBranch": 24, "sound": "10"}, {"duration": 1200, "images": [[248, 1860]]}, {"duration": 100, "images": [[372, 1860]], "exitBranch": 24, "sound": "10"}, {"duration": 1300, "images": [[248, 1860]]}, {"duration": 50, "images": [[496, 1860]]}, {"duration": 50, "images": [[2976, 1767]]}, {"duration": 100, "images": [[0, 0]]}]}, "GestureRight": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[620, 1860]]}, {"duration": 100, "images": [[744, 1860]]}, {"duration": 100, "images": [[868, 1860]]}, {"duration": 100, "images": [[992, 1860]]}, {"duration": 100, "images": [[1116, 1860]], "exitBranch": 11}, {"duration": 100, "images": [[1240, 1860]]}, {"duration": 100, "images": [[1364, 1860]], "branching": {"branches": [{"frameIndex": 5, "weight": 50}]}}, {"duration": 100, "images": [[1488, 1860]]}, {"duration": 1200, "images": [[1612, 1860]]}, {"duration": 100, "images": [[1736, 1860]]}, {"duration": 550, "images": [[1116, 1860]]}, {"duration": 100, "images": [[992, 1860]]}, {"duration": 100, "images": [[868, 1860]]}, {"duration": 100, "images": [[744, 1860]]}, {"duration": 100, "images": [[620, 1860]]}, {"duration": 100, "images": [[0, 0]]}]}, "Writing": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1860, 1860]]}, {"duration": 100, "images": [[1984, 1860]]}, {"duration": 100, "images": [[2108, 1860]]}, {"duration": 100, "images": [[2232, 1860]]}, {"duration": 100, "images": [[2356, 1860]]}, {"duration": 100, "images": [[2480, 1860]]}, {"duration": 100, "images": [[2604, 1860]]}, {"duration": 100, "images": [[2728, 1860]], "sound": "11"}, {"duration": 100, "images": [[2852, 1860]]}, {"duration": 100, "images": [[2976, 1860]]}, {"duration": 100, "images": [[3100, 1860]]}, {"duration": 100, "images": [[3224, 1860]], "branching": {"branches": [{"frameIndex": 26, "weight": 45}, {"frameIndex": 32, "weight": 25}, {"frameIndex": 42, "weight": 15}]}}, {"duration": 100, "images": [[0, 1953]], "exitBranch": 55}, {"duration": 100, "images": [[124, 1953]], "exitBranch": 55}, {"duration": 100, "images": [[248, 1953]]}, {"duration": 200, "images": [[372, 1953]]}, {"duration": 200, "images": [[496, 1953]], "exitBranch": 55}, {"duration": 200, "images": [[620, 1953]]}, {"duration": 200, "images": [[744, 1953]]}, {"duration": 200, "images": [[868, 1953]], "exitBranch": 55}, {"duration": 200, "images": [[992, 1953]]}, {"duration": 200, "images": [[1116, 1953]]}, {"duration": 200, "images": [[1240, 1953]], "exitBranch": 55}, {"duration": 200, "images": [[1364, 1953]]}, {"duration": 200, "images": [[1488, 1953]], "branching": {"branches": [{"frameIndex": 32, "weight": 20}, {"frameIndex": 42, "weight": 15}]}}, {"duration": 100, "images": [[1612, 1953]], "exitBranch": 56}, {"duration": 100, "images": [[1736, 1953]]}, {"duration": 400, "images": [[1860, 1953]], "branching": {"branches": [{"frameIndex": 28, "weight": 80}]}}, {"duration": 100, "images": [[1984, 1953]], "exitBranch": 30}, {"duration": 400, "images": [[2108, 1953]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 30, "weight": 75}]}}, {"duration": 100, "images": [[2232, 1953]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 13, "weight": 25}, {"frameIndex": 42, "weight": 20}]}}, {"duration": 100, "images": [[2356, 1953]]}, {"duration": 100, "images": [[2480, 1953]]}, {"duration": 200, "images": [[2604, 1953]]}, {"duration": 200, "images": [[2728, 1953]], "exitBranch": 54}, {"duration": 200, "images": [[2852, 1953]]}, {"duration": 200, "images": [[2976, 1953]], "exitBranch": 54}, {"duration": 100, "images": [[3100, 1953]]}, {"duration": 200, "images": [[3224, 1953]]}, {"duration": 200, "images": [[0, 2046]], "exitBranch": 55}, {"duration": 200, "images": [[124, 2046]], "branching": {"branches": [{"frameIndex": 13, "weight": 25}, {"frameIndex": 26, "weight": 25}, {"frameIndex": 32, "weight": 25}]}}, {"duration": 100, "images": [[248, 2046]]}, {"duration": 100, "images": [[372, 2046]], "exitBranch": 55}, {"duration": 100, "images": [[496, 2046]]}, {"duration": 100, "images": [[620, 2046]]}, {"duration": 100, "images": [[744, 2046]]}, {"duration": 100, "images": [[868, 2046]]}, {"duration": 100, "images": [[992, 2046]]}, {"duration": 100, "images": [[1116, 2046]]}, {"duration": 100, "images": [[1240, 2046]]}, {"duration": 100, "images": [[1364, 2046]]}, {"duration": 100, "images": [[1488, 2046]], "exitBranch": 57}, {"duration": 100, "images": [[1612, 2046]], "branching": {"branches": [{"frameIndex": 26, "weight": 33}, {"frameIndex": 32, "weight": 33}, {"frameIndex": 13, "weight": 34}]}}, {"duration": 100, "images": [[1736, 2046]]}, {"duration": 100, "images": [[1860, 2046]]}, {"duration": 100, "images": [[1984, 2046]], "sound": "11"}, {"duration": 100, "images": [[2108, 2046]]}, {"duration": 100, "images": [[2232, 2046]]}, {"duration": 100, "images": [[2356, 2046]]}, {"duration": 100, "images": [[0, 0]], "sound": "15"}]}, "IdleSnooze": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[2480, 2046]]}, {"duration": 100, "images": [[2604, 2046]]}, {"duration": 100, "images": [[2728, 2046]]}, {"duration": 100, "images": [[2852, 2046]]}, {"duration": 100, "images": [[2976, 2046]]}, {"duration": 100, "images": [[3100, 2046]]}, {"duration": 100, "images": [[3224, 2046]]}, {"duration": 400, "images": [[0, 2139]]}, {"duration": 100, "images": [[124, 2139]]}, {"duration": 100, "images": [[248, 2139]]}, {"duration": 100, "images": [[372, 2139]]}, {"duration": 100, "images": [[496, 2139]]}, {"duration": 100, "images": [[620, 2139]]}, {"duration": 100, "images": [[744, 2139]]}, {"duration": 100, "images": [[868, 2139]]}, {"duration": 100, "images": [[992, 2139]]}, {"duration": 100, "images": [[1116, 2139]], "exitBranch": 20}, {"duration": 100, "images": [[1240, 2139]]}, {"duration": 100, "images": [[1364, 2139]]}, {"duration": 100, "images": [[1488, 2139]], "exitBranch": 23}, {"duration": 100, "images": [[1612, 2139]]}, {"duration": 100, "images": [[1736, 2139]]}, {"duration": 100, "images": [[1860, 2139]], "exitBranch": 26}, {"duration": 100, "images": [[1984, 2139]]}, {"duration": 100, "images": [[2108, 2139]]}, {"duration": 100, "images": [[2232, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[2356, 2139]]}, {"duration": 200, "images": [[2480, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[2604, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[2728, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[2852, 2139]]}, {"duration": 200, "images": [[2976, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[3100, 2139]]}, {"duration": 200, "images": [[3224, 2139]], "exitBranch": 83}, {"duration": 200, "images": [[0, 2232]]}, {"duration": 200, "images": [[124, 2232]]}, {"duration": 200, "images": [[248, 2232]], "exitBranch": 83, "branching": {"branches": [{"frameIndex": 27, "weight": 90}, {"frameIndex": 46, "weight": 5}, {"frameIndex": 52, "weight": 5}]}}, {"duration": 100, "images": [[372, 2232]]}, {"duration": 100, "images": [[496, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[620, 2232]]}, {"duration": 1200, "images": [[744, 2232]]}, {"duration": 100, "images": [[868, 2232]]}, {"duration": 100, "images": [[992, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[1116, 2232]]}, {"duration": 100, "images": [[1240, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[1364, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[1488, 2232]], "exitBranch": 83}, {"duration": 400, "images": [[1612, 2232]]}, {"duration": 100, "images": [[1736, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[1860, 2232]]}, {"duration": 100, "images": [[1984, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[2108, 2232]]}, {"duration": 100, "images": [[2232, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[2356, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[2480, 2232]], "exitBranch": 83}, {"duration": 600, "images": [[2604, 2232]]}, {"duration": 300, "images": [[2728, 2232]], "exitBranch": 83}, {"duration": 300, "images": [[2852, 2232]], "exitBranch": 83}, {"duration": 300, "images": [[2976, 2232]], "exitBranch": 60}, {"duration": 100, "images": [[3100, 2232]]}, {"duration": 100, "images": [[3224, 2232]], "exitBranch": 83}, {"duration": 100, "images": [[0, 2325]]}, {"duration": 100, "images": [[124, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[248, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[372, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[496, 2325]]}, {"duration": 100, "images": [[620, 2325]], "exitBranch": 83}, {"duration": 200, "images": [[744, 2325]]}, {"duration": 200, "images": [[868, 2325]], "exitBranch": 83}, {"duration": 200, "images": [[992, 2325]], "exitBranch": 83}, {"duration": 200, "images": [[1116, 2325]], "exitBranch": 83}, {"duration": 200, "images": [[1240, 2325]]}, {"duration": 200, "images": [[1364, 2325]], "exitBranch": 83}, {"duration": 200, "images": [[1488, 2325]], "exitBranch": 75, "branching": {"branches": [{"frameIndex": 69, "weight": 20}]}}, {"duration": 100, "images": [[1612, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[1736, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[1860, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[1984, 2325]]}, {"duration": 100, "images": [[2108, 2325]], "exitBranch": 83}, {"duration": 100, "images": [[2232, 2325]]}, {"duration": 100, "images": [[2356, 2325]]}, {"duration": 300, "images": [[2480, 2325]]}, {"duration": 100, "images": [[2604, 2325]]}, {"duration": 100, "images": [[2728, 2325]]}, {"duration": 100, "images": [[2852, 2325]]}, {"duration": 100, "images": [[2976, 2325]]}, {"duration": 100, "images": [[0, 0]]}]}, "LookDownRight": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[3100, 2325]], "exitBranch": 5}, {"duration": 100, "images": [[3224, 2325]], "exitBranch": 4}, {"duration": 1200, "images": [[0, 2418]]}, {"duration": 100, "images": [[124, 2418]]}, {"duration": 100, "images": [[248, 2418]]}, {"duration": 100, "images": [[0, 0]]}]}, "GetArtsy": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[372, 2418]]}, {"duration": 100, "images": [[496, 2418]]}, {"duration": 100, "images": [[620, 2418]]}, {"duration": 100, "images": [[744, 2418]]}, {"duration": 100, "images": [[868, 2418]]}, {"duration": 100, "images": [[992, 2418]]}, {"duration": 100, "images": [[1116, 2418]]}, {"duration": 100, "images": [[1240, 2418]]}, {"duration": 100, "images": [[1364, 2418]]}, {"duration": 100, "images": [[1488, 2418]]}, {"duration": 400, "images": [[1612, 2418]]}, {"duration": 100, "images": [[1736, 2418]]}, {"duration": 100, "images": [[1860, 2418]], "sound": "10"}, {"duration": 100, "images": [[1612, 2418]]}, {"duration": 100, "images": [[1736, 2418]]}, {"duration": 100, "images": [[1860, 2418]], "sound": "10"}, {"duration": 2400, "images": [[1612, 2418]]}, {"duration": 100, "images": [[744, 2418]]}, {"duration": 100, "images": [[620, 2418]]}, {"duration": 100, "images": [[496, 2418]]}, {"duration": 100, "images": [[372, 2418]], "exitBranch": 22}, {"duration": 100, "images": [[0, 0]]}]}, "Show": {"frames": [{"duration": 10}, {"duration": 10, "images": [[2728, 0]]}, {"duration": 10, "images": [[2604, 0]]}, {"duration": 10, "images": [[2480, 0]]}, {"duration": 10, "images": [[0, 0]]}]}, "LookDown": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[2852, 0]], "exitBranch": 5}, {"duration": 100, "images": [[2976, 0]], "exitBranch": 4}, {"duration": 1200, "images": [[3100, 0]]}, {"duration": 100, "images": [[3224, 0]]}, {"duration": 100, "images": [[0, 93]]}, {"duration": 100, "images": [[0, 0]]}]}, "Searching": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[992, 2511]]}, {"duration": 100, "images": [[1116, 2511]]}, {"duration": 100, "images": [[1240, 2511]]}, {"duration": 100, "images": [[1364, 2511]]}, {"duration": 100, "images": [[1488, 2511]], "sound": "11"}, {"duration": 100, "images": [[1612, 2511]]}, {"duration": 100, "images": [[1736, 2511]]}, {"duration": 100, "images": [[1860, 2511]]}, {"duration": 100, "images": [[1984, 2511]]}, {"duration": 100, "images": [[2108, 2511]]}, {"duration": 100, "images": [[2232, 2511]]}, {"duration": 100, "images": [[2356, 2511]]}, {"duration": 100, "images": [[2480, 2511]]}, {"duration": 100, "images": [[2604, 2511]]}, {"duration": 100, "images": [[2728, 2511]]}, {"duration": 100, "images": [[2852, 2511]]}, {"duration": 100, "images": [[2976, 2511]]}, {"duration": 100, "images": [[3100, 2511]]}, {"duration": 800, "images": [[3224, 2511]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 19, "weight": 40}]}}, {"duration": 100, "images": [[0, 2604]], "exitBranch": 55}, {"duration": 100, "images": [[3224, 2511]]}, {"duration": 100, "images": [[124, 2604]]}, {"duration": 100, "images": [[248, 2604]]}, {"duration": 100, "images": [[372, 2604]]}, {"duration": 100, "images": [[496, 2604]]}, {"duration": 100, "images": [[620, 2604]]}, {"duration": 1000, "images": [[744, 2604]], "exitBranch": 54, "branching": {"branches": [{"frameIndex": 27, "weight": 65}]}}, {"duration": 100, "images": [[868, 2604]]}, {"duration": 100, "images": [[992, 2604]]}, {"duration": 100, "images": [[1116, 2604]]}, {"duration": 100, "images": [[1240, 2604]]}, {"duration": 500, "images": [[1364, 2604]], "exitBranch": 33, "branching": {"branches": [{"frameIndex": 32, "weight": 75}]}}, {"duration": 100, "images": [[1488, 2604]], "exitBranch": 34, "branching": {"branches": [{"frameIndex": 32, "weight": 50}]}}, {"duration": 100, "images": [[1364, 2604]]}, {"duration": 100, "images": [[1612, 2604]]}, {"duration": 100, "images": [[1736, 2604]]}, {"duration": 100, "images": [[1860, 2604]]}, {"duration": 100, "images": [[1984, 2604]], "exitBranch": 55}, {"duration": 100, "images": [[2108, 2604]]}, {"duration": 100, "images": [[2232, 2604]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 19, "weight": 20}, {"frameIndex": 40, "weight": 80}]}}, {"duration": 100, "images": [[2356, 2604]]}, {"duration": 100, "images": [[2480, 2604]]}, {"duration": 100, "images": [[2604, 2604]]}, {"duration": 100, "images": [[2728, 2604]]}, {"duration": 100, "images": [[2852, 2604]]}, {"duration": 100, "images": [[2976, 2604]]}, {"duration": 100, "images": [[3100, 2604]]}, {"duration": 100, "images": [[3224, 2604]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 48, "weight": 75}]}}, {"duration": 100, "images": [[0, 2697]]}, {"duration": 100, "images": [[124, 2697]]}, {"duration": 100, "images": [[0, 2697]]}, {"duration": 100, "images": [[3224, 2604]]}, {"duration": 100, "images": [[248, 2697]], "exitBranch": 55, "branching": {"branches": [{"frameIndex": 49, "weight": 50}]}}, {"duration": 100, "images": [[372, 2697]], "branching": {"branches": [{"frameIndex": 28, "weight": 100}]}}, {"duration": 100, "images": [[496, 2697]]}, {"duration": 100, "images": [[620, 2697]]}, {"duration": 100, "images": [[744, 2697]]}, {"duration": 100, "images": [[868, 2697]]}, {"duration": 100, "images": [[992, 2697]]}, {"duration": 100, "images": [[0, 0]]}]}, "EmptyTrash": {"frames": [{"duration": 100, "images": [[0, 0]], "sound": "15"}, {"duration": 100, "images": [[1116, 2697]]}, {"duration": 100, "images": [[1240, 2697]], "sound": "14"}, {"duration": 100, "images": [[1364, 2697]]}, {"duration": 100, "images": [[1488, 2697]]}, {"duration": 100, "images": [[1612, 2697]]}, {"duration": 100, "images": [[1736, 2697]], "exitBranch": 16}, {"duration": 100, "images": [[1860, 2697]], "sound": "3"}, {"duration": 100, "images": [[1984, 2697]]}, {"duration": 100, "images": [[2108, 2697]]}, {"duration": 100, "images": [[2232, 2697]]}, {"duration": 100, "images": [[2356, 2697]]}, {"duration": 100, "images": [[2480, 2697]], "exitBranch": 16}, {"duration": 100, "images": [[2604, 2697]], "sound": "3"}, {"duration": 100, "images": [[2728, 2697]]}, {"duration": 100, "images": [[2852, 2697]]}, {"duration": 100, "images": [[2976, 2697]], "exitBranch": 23}, {"duration": 100, "images": [[3100, 2697]]}, {"duration": 100, "images": [[3224, 2697]]}, {"duration": 100, "images": [[0, 2790]], "sound": "3"}, {"duration": 100, "images": [[124, 2790]]}, {"duration": 100, "images": [[248, 2790]]}, {"duration": 100, "images": [[372, 2790]]}, {"duration": 100, "images": [[496, 2790]], "exitBranch": 29}, {"duration": 100, "images": [[620, 2790]], "sound": "3"}, {"duration": 100, "images": [[744, 2790]]}, {"duration": 100, "images": [[868, 2790]]}, {"duration": 100, "images": [[992, 2790]]}, {"duration": 100, "images": [[1116, 2790]]}, {"duration": 100, "images": [[1240, 2790]], "exitBranch": 31, "sound": "3"}, {"duration": 100, "images": [[1364, 2790]]}, {"duration": 100, "images": [[1488, 2790]]}, {"duration": 900}, {"duration": 100, "images": [[992, 1395]]}, {"duration": 100, "images": [[1116, 1395]]}, {"duration": 100, "images": [[1240, 1395]]}, {"duration": 100, "images": [[1364, 1395]]}, {"duration": 100, "images": [[1488, 1395]]}, {"duration": 100, "images": [[1612, 1395]]}, {"duration": 100, "images": [[1736, 1395]]}, {"duration": 100, "images": [[1860, 1395]]}, {"duration": 100, "images": [[0, 0]]}]}, "Greeting": {"frames": [{"duration": 100, "branching": {"branches": [{"frameIndex": 30, "weight": 40}]}, "sound": "15"}, {"duration": 100, "images": [[1612, 2790]]}, {"duration": 100, "images": [[1736, 2790]], "sound": "11"}, {"duration": 100, "images": [[1860, 2790]]}, {"duration": 100, "images": [[1984, 2790]]}, {"duration": 100, "images": [[2108, 2790]]}, {"duration": 100, "images": [[2232, 2790]]}, {"duration": 100, "images": [[2356, 2790]]}, {"duration": 100, "images": [[2480, 2790]]}, {"duration": 100, "images": [[2604, 2790]]}, {"duration": 100, "images": [[2728, 2790]]}, {"duration": 100, "images": [[2852, 2790]]}, {"duration": 100, "images": [[2976, 2790]]}, {"duration": 100, "images": [[3100, 2790]], "sound": "14"}, {"duration": 100, "images": [[3224, 2790]]}, {"duration": 100, "images": [[0, 2883]]}, {"duration": 100, "images": [[124, 2883]]}, {"duration": 100, "images": [[248, 2883]]}, {"duration": 300, "images": [[372, 2883]]}, {"duration": 100, "images": [[496, 2883]], "sound": "10"}, {"duration": 450, "images": [[372, 2883]]}, {"duration": 100, "images": [[620, 2883]]}, {"duration": 100, "images": [[744, 2883]]}, {"duration": 100, "images": [[868, 2883]], "sound": "12"}, {"duration": 100, "images": [[992, 2883]]}, {"duration": 100, "images": [[1116, 2883]]}, {"duration": 100, "images": [[1240, 2883]], "sound": "4"}, {"duration": 100, "images": [[1364, 2883]]}, {"duration": 100, "images": [[1488, 2883]]}, {"duration": 100, "images": [[1612, 2883]], "branching": {"branches": [{"frameIndex": 38, "weight": 100}]}}, {"duration": 100, "images": [[992, 1395]], "sound": "11"}, {"duration": 100, "images": [[1116, 1395]]}, {"duration": 100, "images": [[1240, 1395]]}, {"duration": 100, "images": [[1364, 1395]]}, {"duration": 100, "images": [[1488, 1395]]}, {"duration": 100, "images": [[1612, 1395]]}, {"duration": 100, "images": [[1736, 1395]]}, {"duration": 100, "images": [[1860, 1395]], "exitBranch": 38}, {"duration": 100, "images": [[0, 0]]}]}, "LookUp": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[1736, 2883]], "exitBranch": 5}, {"duration": 100, "images": [[1860, 2883]], "exitBranch": 4}, {"duration": 1200, "images": [[1984, 2883]]}, {"duration": 100, "images": [[2108, 2883]]}, {"duration": 100, "images": [[2232, 2883]]}, {"duration": 100, "images": [[0, 0]]}]}, "GestureDown": {"frames": [{"duration": 100, "images": [[0, 0]]}, {"duration": 100, "images": [[1984, 1395]]}, {"duration": 100, "images": [[2108, 1395]]}, {"duration": 100, "images": [[2232, 1395]]}, {"duration": 100, "images": [[2356, 1395]]}, {"duration": 100, "images": [[2480, 1395]], "exitBranch": 14}, {"duration": 100, "images": [[2604, 1395]]}, {"duration": 100, "images": [[2728, 1395]], "branching": {"branches": [{"frameIndex": 5, "weight": 50}]}}, {"duration": 100, "images": [[2852, 1395]]}, {"duration": 100, "images": [[2976, 1395]]}, {"duration": 100, "images": [[3100, 1395]], "exitBranch": 14}, {"duration": 100, "images": [[3224, 1395]]}, {"duration": 100, "images": [[0, 1488]]}, {"duration": 450, "images": [[124, 1488]]}, {"duration": 100, "images": [[2356, 1395]]}, {"duration": 100, "images": [[2232, 1395]]}, {"duration": 100, "images": [[2108, 1395]]}, {"duration": 100, "images": [[1984, 1395]]}, {"duration": 100, "images": [[0, 0]]}]}, "RestPose": {"frames": [{"duration": 100, "images": [[0, 0]]}]}, "IdleEyeBrowRaise": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 900, "images": [[1364, 186]]}, {"duration": 100, "images": [[1240, 186]]}, {"duration": 100, "images": [[1116, 186]]}, {"duration": 100, "images": [[0, 0]]}]}, "LookDownLeft": {"frames": [{"duration": 100, "images": [[0, 0]], "exitBranch": 6}, {"duration": 100, "images": [[744, 3069]], "exitBranch": 5}, {"duration": 100, "images": [[868, 3069]], "exitBranch": 4}, {"duration": 1200, "images": [[992, 3069]]}, {"duration": 100, "images": [[1116, 3069]]}, {"duration": 100, "images": [[1240, 3069]]}, {"duration": 100, "images": [[0, 0]]}]}}}); \ No newline at end of file diff --git a/src/web/static/clippy_assets/agents/Clippy/map.png b/src/web/static/clippy_assets/agents/Clippy/map.png deleted file mode 100755 index ee31dd918d4d3748332254c2e9f4270effb965d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1333530 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

o?`aY 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

C)-TWX#LiVc zG-q{1KU@F5r!V%je28EXy}5LQi0yW(wiyT8j{f=bXU(be4<;Q7-m!Pjj!*YrFVnv9 zA?197{Qqxf`h8cbMm`Vr*uJV--RtMEWk=#JJoxQ zmkg`@J>I+ZWxFOxZz$H8H|u+RanbyZZD*HtHT{s^DE-wiic9ZP?2hZ=X&-O8-fUa4 zK;DNT_`A=yvuvexJ(+oW&K ze0N&>tp3d||8ItyChpvqd|CXT&3aP~%ZSwf5#_n>#dc}l-FfT2jP>sKm!_UQ@c!2J z@BM3Etz++f?-;k?uTzfeKZ|Qw6E}3^t$dSzG00!7`$x>ZiA|5~pI=EW5q~vrT1Kk_{y_cJB=ulPFvq4<`zupROArn6F+52w4-F4^f2Zohz zz8rKu>-{sc@uKYiW3|^+y;fxA3eUT;&|JJd?xKU}g{e7jcHK&5lRniyf4@Uz-^Jq! z!I6^=8MoYb{JzfoE-U+i=iNX4@Z8-nY2lyO)0ZFTd8s&|_fmYG(}(S^iVqmG^!Izs zUp#wSAUpH9Njj~*EKTWA1)&otwv}zR&G; zj@f#KjM>d^7jN=Db8%Ixiu8*xpMMkc_MAz3-jwlt?)4z2%7QEBh34-gc5mmp zTji$Lo}KUS{T_D1KH2P(m8DpQW@a*T%9)~PpLga&X{i}DbpFejqx8I3u<>=JsnYT+7=N2re72f8*U&cRp zQU40=exA>{_f!_lyl{SQT0Tbw zM>C_RC7fQdTe?(w->SHK&%6FE+p8_PzWYcN@3zc4OnLA2oqg{8>e#|d=i9Q=3*U)f z`0HeLIm)(slFzrKjn90)-MrBlZ+c$u4BM5K=8)oBH?1P~2mD_*H%F+C`P-$J-QPC8 zFS%~MY=6Sz3Hgo4A)vDj0XM4X~A-4XC-8<2%KV};{KQpxW-^4xZ z9HaeOtyeBh7H`AuKAbAxlOFwN;+lf1_Rk+b>p!31zA>7`-EyO~XQKRvzg|e_y)z{2EJf$!3AFO_hIt{rLIv zhquVDJtFU$JM3c|GgrQeT^Ze6{^h6755wgTzrGdrYLc0JEJ{!Ci$>v&U~!3W)pt+L zv-K>kxs@*Y?b;L1qTUVm{{Kp0+);E2&aVUIEm*-Pd36Q+qbx1twZtvO;H{USb)vAtC`t?EJ z(u;&vqjNtOq$%Ex`m>(R_2T8LX&hl(&Y!KFC$sa+-t(&_EB{4asPI8Q)0-!rCI8BE zH@bS=Vt%gqN6imkKAG=nKR-iox`yMu++D`2t(z<5viDWJJ@dR`rM;kb#ix*a^J3p? zM7+E|cRy$TS+Vsmx}HwnuqYzc_}Z=4>vCqSe`LD+TH)zQySOLjybrXv>7(ntW&5}M zN3Rw?+hKT(@my^3-C5f`wk>{EbU8LZAhbkccZj_9)N|7}Z+x_<(C=mXdLFY2tvgx& zr!Tb7-?}t@p7)g%(Npygo9&89eV=7^Jfcu=Tg4*n-63~NFC6)J>%5q&-TSQ?A6}Z- z+C7`JeCmyu+{;fd?UxPP`QDh%?h_yT>-fv|>5DSftFJkH^`T@z+~uqGIm#)GYiepE z1kW(@@8vm|ARcOW_~1Flzu&I9KHIyY=j}nU&S=JGujce7Pxn3^F@LGFnk4H1)|?+q zPc3`iyii@j@-1zud;jb=vMt(EFY2_wv2`pVqIvQ#LbVpTP~cFE;ZpzdhVsSCaj6Ri608$e@s=>pWWS zpTA(i^-!eH8ziq=Po$k+ta*jX37+M|8l*Xd9NNEi;X!nJNWpct!hkfXD6F~%MZ1k zymqSiYQw0PLSB;(%r%-K+a?DT;Sx*80}2*=Anc%^9z8 zZJBl6bEZ324pywNpRz`_X5qIqzg8b%TiG+u#a?LD&9n>S;eWVw@7!&5FOL^<-Z;Ir z{O7*Cq2{UOHq&(^vM1EuJ6$GYJ>z^L_lC}8@7|wFzWSW|>DE`p!L`TU#m#Z4-=#5W z#_59P;eGrX-isu5TiDKj-9PDf=&$2k2Soe!B%S`gLF(hr=j$KuI;6|CK9^Cpboz{) zobfl`=ZW$tom~9y;?IQtTRL~|G|=vE3*OduN#S;N{4cw`??l&KQqTJOkLT`&2W*F) z-ejCNMK@BnYGU2r{@GIx_2wp|r!;)jD86BE^5l*6bIx6T(jal_@>>3FmBtQRUa!sz zU)@q^m#$k?&E|hmHa9(-(MHxPJ8zHA-8s8n7W048saSOVviRItKJQ)^=5IC?%Uh`t zmE4;(^=;bm%G7)d`^P^FZQZN2`Tx}`YbW*^C#NrNvTlu3}=0E@ZV&47&r!%*&P4in|s(41_lvr=s#>le#&8;GtW2gt=`0+a%$%8Z@a!!-#C0ZMfjcH2OqnBwvBG5 z-M4)zJrnhDGfPaUP1K%WbN;;g%(m_Sr&8lP`+Bc^Xbsr5_2jz69KrjQ_Xt|MhzC{v z`tq_P5h=N^FVWMu+hoxukXuKg3Zs=UccuueP4<9#^o($ zeCJP=g^7OaKDx8ba^jT8^U0<=b;O?U4*cFxHr01}__y<7u9fy5Hf=m2)2(6s{=5JD z(pSg4Zz*M~yFP7Nto@+0LYH;#?EJ*Gy!U@vBMTZ%uT;AwFK_8{_s~yihAUR9_cF5Y zK5kxeNM`=;$se+xC!J|5F1~4*T0Qa6F6T5M<>-sD`!r_lN{_J8+<$iek%&vvOfNo` zdn2?xXcx0WSL>C1GtPJad%&Pp-PV}$LHfIQU!;?|s=Zxr_IuU6r)7l7r_4QgO};$m z-Oj>yY}$Nn?uSl)zHD6nQ)J`C;IN>^yi0Fq`rF+(;OTfhFvkEj3b zj$O_43w+n<~#ZPyf4;?fjinPmlfbQI^eNa4Tzk;dFDiSk8R*YYVq^YN}~Y zdbe&}oO|>&HJ8OleQi!W`;l{)z4g3vI%D36{#&P;M0VF~@pTm1wcWVz&ApKGI&lV# z2D|I0_xMH&tg-DXmkKDW_`Koj{+NpboJTDVu+G(+f3)r7=jVrgPX>lobF%IVE}V9D z?rYw2t2UPzon4W8Yc^Zta*oZ5W-rgpT6TJ3xY~U2O{?FD8HZN4+(~Wvuj(N?Qz~lq zjT^DcGt{n>y%G8Lf7*+Aed}K|ZNK)^ru6Xzjb!oLzJB*j_szStQ7EbR{fq-4E1wpp zD&Koh=#_tZ+QhlxJzs)nM6VG&di~|0*!%O=Zc;Pyy_g_fU-C1^uKY;wLP^o+$%kKA zZqfW5A~C_s==SY%Nv(~?k8E?PPOq+8Eg2zg8{wJqBK6koiElj8v$f|OJXXGyL;9K8 z-I|8Xgo?Yz{CT!*V!5q(r+4GAZ)VpITckX)-;%yw?e15RTN{t&UgOEwAbwhRW?@`w z`Qy(zJ9QoxZ{W1&6?0UX`6g=mpEsX&PCC8R_u7#ewLxWeb$>ra=HEQ+%APJRQT^

3g(iFV8<&&cnRod(6c7>8d3ke?AjEH=U`1 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�afzO%czaqp%(bAOeG*Y>;r4 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

9Csl#XDSU1?%LM$9bfpU_<;CEbDnU$2afAx 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

  • cd|tQC`P;0yccxW-p5~fbJ%4w>bz7^5S?Qvp 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

    6yb{Q;b*uB1 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

    o3t3Gk?NmFZ&3x65=?vexPfZaf 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 diff --git a/src/web/static/clippy_assets/images/tip.png b/src/web/static/clippy_assets/images/tip.png deleted file mode 100755 index 90a0815ee3234eb708c5ee2bbf1b39ce59d1bcb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0y~yU=U$oU{K&-W?*1Y-Ls;Ffq_A?#5JNMI6tkVJh3R1 z!7(L2DOJHUH!(dmC^a#qvhZZ84FdxMXMj(L>;L~}7#JA-|Ns9y#h`(Kfq}Us$S?T+ ze}?O)cpVuS7;-#a978H@t-0jLcR+!|CGh$E{}+5+t&W`8bWCGkFPF|*<0mIR^1Ns+ z7rS%9%{S!X#W>9rCHYl>Zaq993)S}RQWw^Ia>!OMWrpDG{26*({$Bn5_j@=!S9W{) sJ@shqR`okO;g*_NMAlLF21bT`zDzeycz3chFfcH9y85}Sb4q9e00ZGy(EtDd diff --git a/src/web/stylesheets/index.js b/src/web/stylesheets/index.js index 0c215f78..38972281 100755 --- a/src/web/stylesheets/index.js +++ b/src/web/stylesheets/index.js @@ -8,7 +8,6 @@ /* Libraries */ import "highlight.js/styles/vs.css"; -import "../static/clippy_assets/clippy.css"; /* Frameworks */ import "./vendors/bootstrap.scss"; diff --git a/src/web/waiters/SeasonalWaiter.mjs b/src/web/waiters/SeasonalWaiter.mjs index 5de29bfa..d01cea9e 100755 --- a/src/web/waiters/SeasonalWaiter.mjs +++ b/src/web/waiters/SeasonalWaiter.mjs @@ -4,17 +4,13 @@ * @license Apache-2.0 */ -import clippy from "clippyjs"; -import "../static/clippy_assets/agents/Clippy/agent.js"; -import clippyMap from "../static/clippy_assets/agents/Clippy/map.png"; - /** * Waiter to handle seasonal events and easter eggs. */ class SeasonalWaiter { /** - * SeasonalWaiter contructor. + * SeasonalWaiter constructor. * * @param {App} app - The main view object for CyberChef. * @param {Manager} manager - The CyberChef event manager. @@ -22,8 +18,6 @@ class SeasonalWaiter { constructor(app, manager) { this.app = app; this.manager = manager; - - this.clippyAgent = null; } @@ -34,14 +28,6 @@ class SeasonalWaiter { // Konami code this.kkeys = []; window.addEventListener("keydown", this.konamiCodeListener.bind(this)); - - // Clippy - const now = new Date(); - if (now.getMonth() === 3 && now.getDate() === 1) { - this.addClippyOption(); - this.manager.addDynamicListener(".option-item #clippy", "change", this.setupClippy, this); - this.setupClippy(); - } } @@ -65,285 +51,6 @@ class SeasonalWaiter { } } - /** - * Creates an option in the Options menu for turning Clippy on or off - */ - addClippyOption() { - const optionsBody = document.getElementById("options-body"), - optionItem = document.createElement("span"); - - optionItem.className = "bmd-form-group is-filled"; - optionItem.innerHTML = `

    `; - optionsBody.appendChild(optionItem); - - if (!("clippy" in this.app.options)) { - this.app.options.clippy = true; - } - - this.manager.options.load(); - } - - /** - * Sets up Clippy for April Fools Day - */ - setupClippy() { - // Destroy any previous agents - if (this.clippyAgent) { - this.clippyAgent.closeBalloonImmediately(); - this.clippyAgent.hide(); - } - - if (!this.app.options.clippy) { - if (this.clippyTimeouts) this.clippyTimeouts.forEach(t => clearTimeout(t)); - return; - } - - // Set base path to # to prevent external network requests - const clippyAssets = "#"; - // Shim the library to prevent external network requests - shimClippy(clippy); - - const self = this; - clippy.load("Clippy", (agent) => { - shimClippyAgent(agent); - self.clippyAgent = agent; - agent.show(); - agent.speak("Hello, I'm Clippy, your personal cyber assistant!"); - }, undefined, clippyAssets); - - // Watch for the Auto Magic button appearing - const magic = document.getElementById("magic"); - const observer = new MutationObserver((mutationsList, observer) => { - // Read in message and recipe - let msg, recipe; - for (const mutation of mutationsList) { - if (mutation.attributeName === "data-original-title") { - msg = magic.getAttribute("data-original-title"); - } - if (mutation.attributeName === "data-recipe") { - recipe = magic.getAttribute("data-recipe"); - } - } - - // Close balloon if it is currently showing a magic hint - const balloon = self.clippyAgent._balloon._balloon; - if (balloon.is(":visible") && balloon.text().indexOf("That looks like encoded data") >= 0) { - self.clippyAgent._balloon.hide(true); - this.clippyAgent._balloon._hidden = true; - } - - // If a recipe was found, get Clippy to tell the user - if (recipe) { - recipe = this.manager.controls.generateStateUrl(true, true, JSON.parse(recipe)); - msg = `That looks like encoded data!

    ${msg}

    Click
    here to load this recipe.`; - - // Stop current balloon activity immediately and trigger speak again - this.clippyAgent.closeBalloonImmediately(); - self.clippyAgent.speak(msg, true); - // self.clippyAgent._queue.next(); - } - }); - observer.observe(document.getElementById("magic"), {attributes: true}); - - // Play animations for various things - this.manager.addListeners("#search", "click", () => { - this.clippyAgent.play("Searching"); - }, this); - this.manager.addListeners("#save,#save-to-file", "click", () => { - this.clippyAgent.play("Save"); - }, this); - this.manager.addListeners("#clr-recipe,#clr-io", "click", () => { - this.clippyAgent.play("EmptyTrash"); - }, this); - this.manager.addListeners("#bake", "click", e => { - if (e.target.closest("button").textContent.toLowerCase().indexOf("bake") >= 0) { - this.clippyAgent.play("Thinking"); - } else { - this.clippyAgent.play("EmptyTrash"); - } - this.clippyAgent._queue.clear(); - }, this); - this.manager.addListeners("#input-text", "keydown", () => { - this.clippyAgent.play("Writing"); - this.clippyAgent._queue.clear(); - }, this); - this.manager.addDynamicListener("a.clippyMagicRecipe", "click", (e) => { - this.clippyAgent.play("Congratulate"); - }, this); - - this.clippyTimeouts = []; - // Show challenge after timeout - this.clippyTimeouts.push(setTimeout(() => { - const hex = "1f 8b 08 00 ae a1 9b 5c 00 ff 05 40 a1 12 00 10 0c fd 26 61 5b 76 aa 9d 26 a8 02 02 37 84 f7 fb bb c5 a4 5f 22 c6 09 e5 6e c5 4c 2d 3f e9 30 a6 ea 41 a2 f2 ac 1c 00 00 00"; - self.clippyAgent.speak(`How about a fun challenge?

    Try decoding this (click to load):
    ${hex}`, true); - self.clippyAgent.play("GetAttention"); - }, 1 * 60 * 1000)); - - this.clippyTimeouts.push(setTimeout(() => { - self.clippyAgent.speak("Did you know?

    You can load files into CyberChef up to around 500MB using drag and drop or the load file button.", 15000); - self.clippyAgent.play("Wave"); - }, 2 * 60 * 1000)); - - this.clippyTimeouts.push(setTimeout(() => { - self.clippyAgent.speak("Did you know?

    You can use the 'Fork' operation to split up your input and run the recipe over each branch separately.

    Here's an example.", 15000); - self.clippyAgent.play("Print"); - }, 3 * 60 * 1000)); - - this.clippyTimeouts.push(setTimeout(() => { - self.clippyAgent.speak("Did you know?

    The 'Magic' operation uses a number of methods to detect encoded data and the operations which can be used to make sense of it. A technical description of these methods can be found here.", 15000); - self.clippyAgent.play("Alert"); - }, 4 * 60 * 1000)); - - this.clippyTimeouts.push(setTimeout(() => { - self.clippyAgent.speak("Did you know?

    You can use parts of the input as arguments to operations.

    Click here for an example.", 15000); - self.clippyAgent.play("CheckingSomething"); - }, 5 * 60 * 1000)); - } - -} - - -/** - * Shims various ClippyJS functions to modify behaviour. - * - * @param {Clippy} clippy - The Clippy library - */ -function shimClippy(clippy) { - // Shim _loadSounds so that it doesn't actually try to load any sounds - clippy.load._loadSounds = function _loadSounds (name, path) { - let dfd = clippy.load._sounds[name]; - if (dfd) return dfd; - - // set dfd if not defined - dfd = clippy.load._sounds[name] = $.Deferred(); - - // Resolve immediately without loading - dfd.resolve({}); - - return dfd.promise(); - }; - - // Shim _loadMap so that it uses the local copy - clippy.load._loadMap = function _loadMap (path) { - let dfd = clippy.load._maps[path]; - if (dfd) return dfd; - - // set dfd if not defined - dfd = clippy.load._maps[path] = $.Deferred(); - - const src = clippyMap; - const img = new Image(); - - img.onload = dfd.resolve; - img.onerror = dfd.reject; - - // start loading the map; - img.setAttribute("src", src); - - return dfd.promise(); - }; - - // Make sure we don't request the remote map - clippy.Animator.prototype._setupElement = function _setupElement (el) { - const frameSize = this._data.framesize; - el.css("display", "none"); - el.css({ width: frameSize[0], height: frameSize[1] }); - el.css("background", "url('" + clippyMap + "') no-repeat"); - - return el; - }; -} - -/** - * Shims various ClippyJS Agent functions to modify behaviour. - * - * @param {Agent} agent - The Clippy Agent - */ -function shimClippyAgent(agent) { - // Turn off all sounds - agent._animator._playSound = () => {}; - - // Improve speak function to support HTML markup - const self = agent._balloon; - agent._balloon.speak = (complete, text, hold) => { - self._hidden = false; - self.show(); - const c = self._content; - // set height to auto - c.height("auto"); - c.width("auto"); - // add the text - c.html(text); - // set height - c.height(c.height()); - c.width(c.width()); - c.text(""); - self.reposition(); - - self._complete = complete; - self._sayWords(text, hold, complete); - if (hold) agent._queue.next(); - }; - - // Improve the _sayWords function to allow HTML and support timeouts - agent._balloon.WORD_SPEAK_TIME = 60; - agent._balloon._sayWords = (text, hold, complete) => { - self._active = true; - self._hold = hold; - const words = text.split(/[^\S-]/); - const time = self.WORD_SPEAK_TIME; - const el = self._content; - let idx = 1; - clearTimeout(self.holdTimeout); - - self._addWord = $.proxy(function () { - if (!self._active) return; - if (idx > words.length) { - delete self._addWord; - self._active = false; - if (!self._hold) { - complete(); - self.hide(); - } else if (typeof hold === "number") { - self.holdTimeout = setTimeout(() => { - self._hold = false; - complete(); - self.hide(); - }, hold); - } - } else { - el.html(words.slice(0, idx).join(" ")); - idx++; - self._loop = window.setTimeout($.proxy(self._addWord, self), time); - } - }, self); - - self._addWord(); - }; - - // Add break-word to balloon CSS - agent._balloon._balloon.css("word-break", "break-word"); - - // Close the balloon on click (unless it was a link) - agent._balloon._balloon.click(e => { - if (e.target.nodeName !== "A") { - agent._balloon.hide(true); - agent._balloon._hidden = true; - } - }); - - // Add function to immediately close the balloon even if it is currently doing something - agent.closeBalloonImmediately = () => { - agent._queue.clear(); - agent._balloon.hide(true); - agent._balloon._hidden = true; - agent._queue.next(); - }; } export default SeasonalWaiter; From 9d73127caeb0d79760193656df10aefcee10690e Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:38:20 +0100 Subject: [PATCH 0062/1024] Fixed some typos --- Gruntfile.js | 2 +- src/core/Dish.mjs | 4 ++-- src/core/lib/BCD.mjs | 2 +- src/core/lib/Delim.mjs | 2 +- src/core/lib/FileSignatures.mjs | 2 +- src/core/lib/FileType.mjs | 2 +- src/core/lib/QRCode.mjs | 2 +- src/core/operations/BLAKE2b.mjs | 2 +- src/core/operations/BLAKE2s.mjs | 2 +- src/core/operations/HammingDistance.mjs | 2 +- src/core/operations/RawInflate.mjs | 2 +- src/core/operations/RemoveWhitespace.mjs | 4 ++-- src/core/operations/ToQuotedPrintable.mjs | 2 +- src/core/operations/Typex.mjs | 2 +- src/core/operations/UNIXTimestampToWindowsFiletime.mjs | 2 +- src/core/operations/URLEncode.mjs | 2 +- src/core/operations/VigenèreDecode.mjs | 2 +- src/core/operations/Whirlpool.mjs | 2 +- src/node/api.mjs | 6 +++--- src/node/apiUtils.mjs | 2 +- src/node/config/excludedOperations.mjs | 2 +- src/node/config/scripts/generateNodeIndex.mjs | 4 ++-- src/web/waiters/ControlsWaiter.mjs | 2 +- src/web/waiters/OperationsWaiter.mjs | 2 +- src/web/waiters/OptionsWaiter.mjs | 2 +- src/web/waiters/OutputWaiter.mjs | 2 +- src/web/waiters/WindowWaiter.mjs | 2 +- src/web/waiters/WorkerWaiter.mjs | 2 +- src/web/workers/InputWorker.mjs | 2 +- tests/node/tests/operations.mjs | 2 +- tests/operations/tests/CharEnc.mjs | 2 +- 31 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 92a2d550..42083e26 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -355,7 +355,7 @@ module.exports = function (grunt) { }, setupNodeConsumers: { command: [ - "echo '\n--- Testing node conumers ---'", + "echo '\n--- Testing node consumers ---'", "npm link", `mkdir ${nodeConsumerTestPath}`, `cp tests/node/consumers/* ${nodeConsumerTestPath}`, diff --git a/src/core/Dish.mjs b/src/core/Dish.mjs index 64bdf3fb..1d592cbd 100755 --- a/src/core/Dish.mjs +++ b/src/core/Dish.mjs @@ -129,7 +129,7 @@ class Dish { * * @param {number} type - The data type of value, see Dish enums. * @param {boolean} [notUTF8=false] - Do not treat strings as UTF8. - * @returns {* | Promise} - (Broswer) A promise | (Node) value of dish in given type + * @returns {* | Promise} - (Browser) A promise | (Node) value of dish in given type */ get(type, notUTF8=false) { if (typeof type === "string") { @@ -191,7 +191,7 @@ class Dish { * * @param {number} type - The data type of value, see Dish enums. * @param {boolean} [notUTF8=false] - Do not treat strings as UTF8. - * @returns {Dish | Promise} - (Broswer) A promise | (Node) value of dish in given type + * @returns {Dish | Promise} - (Browser) A promise | (Node) value of dish in given type */ presentAs(type, notUTF8=false) { const clone = this.clone(); diff --git a/src/core/lib/BCD.mjs b/src/core/lib/BCD.mjs index 623a90c7..2f245236 100644 --- a/src/core/lib/BCD.mjs +++ b/src/core/lib/BCD.mjs @@ -22,7 +22,7 @@ export const ENCODING_SCHEME = [ /** * Lookup table for the binary value of each digit representation. * - * I wrote a very nice algorithm to generate 8 4 2 1 encoding programatically, + * I wrote a very nice algorithm to generate 8 4 2 1 encoding programmatically, * but unfortunately it's much easier (if less elegant) to use lookup tables * when supporting multiple encoding schemes. * diff --git a/src/core/lib/Delim.mjs b/src/core/lib/Delim.mjs index 0a7193c6..c8cc637b 100644 --- a/src/core/lib/Delim.mjs +++ b/src/core/lib/Delim.mjs @@ -32,7 +32,7 @@ export const WORD_DELIM_OPTIONS = ["Line feed", "CRLF", "Forward slash", "Backsl export const INPUT_DELIM_OPTIONS = ["Line feed", "CRLF", "Space", "Comma", "Semi-colon", "Colon", "Nothing (separate chars)"]; /** - * Armithmetic sequence delimiters + * Arithmetic sequence delimiters */ export const ARITHMETIC_DELIM_OPTIONS = ["Line feed", "Space", "Comma", "Semi-colon", "Colon", "CRLF"]; diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 40eacff4..a6efb320 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2463,7 +2463,7 @@ export function extractMZPE(bytes, offset) { const numSections = stream.readInt(2, "le"); // Read Optional Header Magic to determine the state of the image file - // 0x10b = normal exeuctable, 0x107 = ROM image, 0x20b = PE32+ executable + // 0x10b = normal executable, 0x107 = ROM image, 0x20b = PE32+ executable stream.moveForwardsBy(16); const optionalMagic = stream.readInt(2, "le"); const pe32Plus = optionalMagic === 0x20b; diff --git a/src/core/lib/FileType.mjs b/src/core/lib/FileType.mjs index dc6cc973..291760d7 100644 --- a/src/core/lib/FileType.mjs +++ b/src/core/lib/FileType.mjs @@ -178,7 +178,7 @@ export function scanForFileTypes(buf, categories=Object.keys(FILE_SIGNATURES)) { * @param {Uint8Array} buf - The buffer to search * @param {Object} sig - A single signature object (Not an array of signatures) * @param {number} offset - Where to start search from - * @returs {number} The position of the match or -1 if one cannot be found. + * @returns {number} The position of the match or -1 if one cannot be found. */ function locatePotentialSig(buf, sig, offset) { // Find values for first key and value in sig diff --git a/src/core/lib/QRCode.mjs b/src/core/lib/QRCode.mjs index 1585cb41..041c21f7 100644 --- a/src/core/lib/QRCode.mjs +++ b/src/core/lib/QRCode.mjs @@ -37,7 +37,7 @@ export async function parseQrCode(input, normalise) { image = await jimp.read(image); } } catch (err) { - throw new OperationError(`Error normalising iamge. (${err})`); + throw new OperationError(`Error normalising image. (${err})`); } const qrData = jsQR(image.bitmap.data, image.getWidth(), image.getHeight()); diff --git a/src/core/operations/BLAKE2b.mjs b/src/core/operations/BLAKE2b.mjs index 113cbaf3..6218f7f0 100644 --- a/src/core/operations/BLAKE2b.mjs +++ b/src/core/operations/BLAKE2b.mjs @@ -50,7 +50,7 @@ class BLAKE2b extends Operation { /** * @param {ArrayBuffer} input * @param {Object[]} args - * @returns {string} The input having been hashed with BLAKE2b in the encoding format speicifed. + * @returns {string} The input having been hashed with BLAKE2b in the encoding format specified. */ run(input, args) { const [outSize, outFormat] = args; diff --git a/src/core/operations/BLAKE2s.mjs b/src/core/operations/BLAKE2s.mjs index 36015607..8f84e041 100644 --- a/src/core/operations/BLAKE2s.mjs +++ b/src/core/operations/BLAKE2s.mjs @@ -51,7 +51,7 @@ class BLAKE2s extends Operation { /** * @param {ArrayBuffer} input * @param {Object[]} args - * @returns {string} The input having been hashed with BLAKE2s in the encoding format speicifed. + * @returns {string} The input having been hashed with BLAKE2s in the encoding format specified. */ run(input, args) { const [outSize, outFormat] = args; diff --git a/src/core/operations/HammingDistance.mjs b/src/core/operations/HammingDistance.mjs index fb60f940..60121a75 100644 --- a/src/core/operations/HammingDistance.mjs +++ b/src/core/operations/HammingDistance.mjs @@ -57,7 +57,7 @@ class HammingDistance extends Operation { samples = input.split(delim); if (samples.length !== 2) { - throw new OperationError("Error: You can only calculae the edit distance between 2 strings. Please ensure exactly two inputs are provided, separated by the specified delimiter."); + throw new OperationError("Error: You can only calculate the edit distance between 2 strings. Please ensure exactly two inputs are provided, separated by the specified delimiter."); } if (samples[0].length !== samples[1].length) { diff --git a/src/core/operations/RawInflate.mjs b/src/core/operations/RawInflate.mjs index d676ff1e..f8a938c5 100644 --- a/src/core/operations/RawInflate.mjs +++ b/src/core/operations/RawInflate.mjs @@ -77,7 +77,7 @@ class RawInflate extends Operation { }), result = new Uint8Array(inflate.decompress()); - // Raw Inflate somethimes messes up and returns nonsense like this: + // Raw Inflate sometimes messes up and returns nonsense like this: // ]....]....]....]....]....]....]....]....]....]....]....]....]....]... // e.g. Input data of [8b, 1d, dc, 44] // Look for the first two square brackets: diff --git a/src/core/operations/RemoveWhitespace.mjs b/src/core/operations/RemoveWhitespace.mjs index a9ceda81..0689f766 100644 --- a/src/core/operations/RemoveWhitespace.mjs +++ b/src/core/operations/RemoveWhitespace.mjs @@ -64,7 +64,7 @@ class RemoveWhitespace extends Operation { run(input, args) { const [ removeSpaces, - removeCariageReturns, + removeCarriageReturns, removeLineFeeds, removeTabs, removeFormFeeds, @@ -73,7 +73,7 @@ class RemoveWhitespace extends Operation { let data = input; if (removeSpaces) data = data.replace(/ /g, ""); - if (removeCariageReturns) data = data.replace(/\r/g, ""); + if (removeCarriageReturns) data = data.replace(/\r/g, ""); if (removeLineFeeds) data = data.replace(/\n/g, ""); if (removeTabs) data = data.replace(/\t/g, ""); if (removeFormFeeds) data = data.replace(/\f/g, ""); diff --git a/src/core/operations/ToQuotedPrintable.mjs b/src/core/operations/ToQuotedPrintable.mjs index e26f3c67..9db5c5a5 100644 --- a/src/core/operations/ToQuotedPrintable.mjs +++ b/src/core/operations/ToQuotedPrintable.mjs @@ -108,7 +108,7 @@ class ToQuotedPrintable extends Operation { * @private * @param {number} nr * @param {byteArray[]} ranges - * @returns {bolean} + * @returns {boolean} */ _checkRanges(nr, ranges) { for (let i = ranges.length - 1; i >= 0; i--) { diff --git a/src/core/operations/Typex.mjs b/src/core/operations/Typex.mjs index a9b7a3d0..8b81c13f 100644 --- a/src/core/operations/Typex.mjs +++ b/src/core/operations/Typex.mjs @@ -23,7 +23,7 @@ class Typex extends Operation { this.name = "Typex"; this.module = "Default"; - this.description = "Encipher/decipher with the WW2 Typex machine.

    Typex was originally built by the British Royal Air Force prior to WW2, and is based on the Enigma machine with some improvements made, including using five rotors with more stepping points and interchangeable wiring cores. It was used across the British and Commonewealth militaries. A number of later variants were produced; here we simulate a WW2 era Mark 22 Typex with plugboards for the reflector and input. Typex rotors were changed regularly and none are public: a random example set are provided.

    To configure the reflector plugboard, enter a string of connected pairs of letters in the reflector box, e.g. AB CD EF connects A to B, C to D, and E to F (you'll need to connect every letter). There is also an input plugboard: unlike Enigma's plugboard, it's not restricted to pairs, so it's entered like a rotor (without stepping). To create your own rotor, enter the letters that the rotor maps A to Z to, in order, optionally followed by < then a list of stepping points.

    More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; + this.description = "Encipher/decipher with the WW2 Typex machine.

    Typex was originally built by the British Royal Air Force prior to WW2, and is based on the Enigma machine with some improvements made, including using five rotors with more stepping points and interchangeable wiring cores. It was used across the British and Commonwealth militaries. A number of later variants were produced; here we simulate a WW2 era Mark 22 Typex with plugboards for the reflector and input. Typex rotors were changed regularly and none are public: a random example set are provided.

    To configure the reflector plugboard, enter a string of connected pairs of letters in the reflector box, e.g. AB CD EF connects A to B, C to D, and E to F (you'll need to connect every letter). There is also an input plugboard: unlike Enigma's plugboard, it's not restricted to pairs, so it's entered like a rotor (without stepping). To create your own rotor, enter the letters that the rotor maps A to Z to, in order, optionally followed by < then a list of stepping points.

    More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; this.infoURL = "https://wikipedia.org/wiki/Typex"; this.inputType = "string"; this.outputType = "string"; diff --git a/src/core/operations/UNIXTimestampToWindowsFiletime.mjs b/src/core/operations/UNIXTimestampToWindowsFiletime.mjs index 5a042885..c87f3507 100644 --- a/src/core/operations/UNIXTimestampToWindowsFiletime.mjs +++ b/src/core/operations/UNIXTimestampToWindowsFiletime.mjs @@ -56,7 +56,7 @@ class UNIXTimestampToWindowsFiletime extends Operation { } else if (units === "Milliseconds (ms)") { input = input.multipliedBy(new BigNumber("10000")); } else if (units === "Microseconds (μs)") { - input = input.multiplyiedBy(new BigNumber("10")); + input = input.multipliedBy(new BigNumber("10")); } else if (units === "Nanoseconds (ns)") { input = input.dividedBy(new BigNumber("100")); } else { diff --git a/src/core/operations/URLEncode.mjs b/src/core/operations/URLEncode.mjs index f819ee2e..a5efd213 100644 --- a/src/core/operations/URLEncode.mjs +++ b/src/core/operations/URLEncode.mjs @@ -49,7 +49,7 @@ class URLEncode extends Operation { * @returns {string} */ encodeAllChars (str) { - // TODO Do this programatically + // TODO Do this programmatically return encodeURIComponent(str) .replace(/!/g, "%21") .replace(/#/g, "%23") diff --git a/src/core/operations/VigenèreDecode.mjs b/src/core/operations/VigenèreDecode.mjs index 90cca3f8..8abaeed8 100644 --- a/src/core/operations/VigenèreDecode.mjs +++ b/src/core/operations/VigenèreDecode.mjs @@ -55,7 +55,7 @@ class VigenèreDecode extends Operation { keyIndex = alphabet.indexOf(chr); msgIndex = alphabet.indexOf(input[i]); // Subtract indexes from each other, add 26 just in case the value is negative, - // modulo to remove if neccessary + // modulo to remove if necessary output += alphabet[(msgIndex - keyIndex + alphabet.length) % 26]; } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) { chr = key[(i - fail) % key.length].toLowerCase(); diff --git a/src/core/operations/Whirlpool.mjs b/src/core/operations/Whirlpool.mjs index 0e1c51ab..ae4c0359 100644 --- a/src/core/operations/Whirlpool.mjs +++ b/src/core/operations/Whirlpool.mjs @@ -20,7 +20,7 @@ class Whirlpool extends Operation { this.name = "Whirlpool"; this.module = "Crypto"; - this.description = "Whirlpool is a cryptographic hash function designed by Vincent Rijmen (co-creator of AES) and Paulo S. L. M. Barreto, who first described it in 2000.

    Several variants exist:
    • Whirlpool-0 is the original version released in 2000.
    • Whirlpool-T is the first revision, released in 2001, improving the generation of the s-box.
    • Whirlpool is the latest revision, released in 2003, fixing a flaw in the difusion matrix.
    "; + this.description = "Whirlpool is a cryptographic hash function designed by Vincent Rijmen (co-creator of AES) and Paulo S. L. M. Barreto, who first described it in 2000.

    Several variants exist:
    • Whirlpool-0 is the original version released in 2000.
    • Whirlpool-T is the first revision, released in 2001, improving the generation of the s-box.
    • Whirlpool is the latest revision, released in 2003, fixing a flaw in the diffusion matrix.
    "; this.infoURL = "https://wikipedia.org/wiki/Whirlpool_(cryptography)"; this.inputType = "ArrayBuffer"; this.outputType = "string"; diff --git a/src/node/api.mjs b/src/node/api.mjs index f03d45b6..fca29dd8 100644 --- a/src/node/api.mjs +++ b/src/node/api.mjs @@ -12,7 +12,7 @@ import NodeDish from "./NodeDish.mjs"; import NodeRecipe from "./NodeRecipe.mjs"; import OperationConfig from "../core/config/OperationConfig.json"; import { sanitise, removeSubheadingsFromArray, sentenceToCamelCase } from "./apiUtils.mjs"; -import ExludedOperationError from "../core/errors/ExcludedOperationError.mjs"; +import ExcludedOperationError from "../core/errors/ExcludedOperationError.mjs"; /** @@ -320,12 +320,12 @@ export function bake() { * Explain that the given operation is not included in the Node.js version. * @param {String} name - name of operation */ -export function _explainExludedFunction(name) { +export function _explainExcludedFunction(name) { /** * Throw new error type with useful message. */ const func = () => { - throw new ExludedOperationError(`Sorry, the ${name} operation is not available in the Node.js version of CyberChef.`); + throw new ExcludedOperationError(`Sorry, the ${name} operation is not available in the Node.js version of CyberChef.`); }; // Add opName prop so NodeRecipe can handle it, just like wrap does. func.opName = name; diff --git a/src/node/apiUtils.mjs b/src/node/apiUtils.mjs index 8d530083..64688073 100644 --- a/src/node/apiUtils.mjs +++ b/src/node/apiUtils.mjs @@ -71,7 +71,7 @@ export function sanitise(str) { /** - * sonething like this => somethingLikeThis + * something like this => somethingLikeThis * ABC a sentence => ABCASentence */ export function sentenceToCamelCase(str) { diff --git a/src/node/config/excludedOperations.mjs b/src/node/config/excludedOperations.mjs index f9873eaf..9359475d 100644 --- a/src/node/config/excludedOperations.mjs +++ b/src/node/config/excludedOperations.mjs @@ -1,5 +1,5 @@ /** - * Operations to exlude from the Node API + * Operations to exclude from the Node API * * @author d98762656 [d98762625@gmail.com] * @copyright Crown Copyright 2018 diff --git a/src/node/config/scripts/generateNodeIndex.mjs b/src/node/config/scripts/generateNodeIndex.mjs index 391cd6e9..b65b7d3c 100644 --- a/src/node/config/scripts/generateNodeIndex.mjs +++ b/src/node/config/scripts/generateNodeIndex.mjs @@ -39,7 +39,7 @@ let code = `/** import NodeDish from "./NodeDish.mjs"; -import { _wrap, help, bake, _explainExludedFunction } from "./api.mjs"; +import { _wrap, help, bake, _explainExcludedFunction } from "./api.mjs"; import File from "./File.mjs"; import { OperationError, DishError, ExcludedOperationError } from "../core/errors/index"; import { @@ -70,7 +70,7 @@ includedOperations.forEach((op) => { }); excludedOperations.forEach((op) => { - code += ` "${decapitalise(op)}": _explainExludedFunction("${op}"),\n`; + code += ` "${decapitalise(op)}": _explainExcludedFunction("${op}"),\n`; }); code += ` }; diff --git a/src/web/waiters/ControlsWaiter.mjs b/src/web/waiters/ControlsWaiter.mjs index 3dd014b6..2f2705aa 100755 --- a/src/web/waiters/ControlsWaiter.mjs +++ b/src/web/waiters/ControlsWaiter.mjs @@ -25,7 +25,7 @@ class ControlsWaiter { /** - * Initialise Bootstrap componenets + * Initialise Bootstrap components */ initComponents() { $("body").bootstrapMaterialDesign(); diff --git a/src/web/waiters/OperationsWaiter.mjs b/src/web/waiters/OperationsWaiter.mjs index 19adba9f..4a591249 100755 --- a/src/web/waiters/OperationsWaiter.mjs +++ b/src/web/waiters/OperationsWaiter.mjs @@ -172,7 +172,7 @@ class OperationsWaiter { $(el).find("[data-toggle=popover]").addBack("[data-toggle=popover]") .popover({trigger: "manual"}) .on("mouseenter", function(e) { - if (e.buttons > 0) return; // Mouse button held down - likely dragging an opertion + if (e.buttons > 0) return; // Mouse button held down - likely dragging an operation const _this = this; $(this).popover("show"); $(".popover").on("mouseleave", function () { diff --git a/src/web/waiters/OptionsWaiter.mjs b/src/web/waiters/OptionsWaiter.mjs index 3dde372d..a19c6066 100755 --- a/src/web/waiters/OptionsWaiter.mjs +++ b/src/web/waiters/OptionsWaiter.mjs @@ -58,7 +58,7 @@ class OptionsWaiter { /** * Handler for options click events. - * Dispays the options pane. + * Displays the options pane. * * @param {event} e */ diff --git a/src/web/waiters/OutputWaiter.mjs b/src/web/waiters/OutputWaiter.mjs index 833922b8..11a78254 100755 --- a/src/web/waiters/OutputWaiter.mjs +++ b/src/web/waiters/OutputWaiter.mjs @@ -174,7 +174,7 @@ class OutputWaiter { } /** - * Updates the stored bake ID for the output in the ouptut array + * Updates the stored bake ID for the output in the output array * * @param {number} bakeId * @param {number} inputNum diff --git a/src/web/waiters/WindowWaiter.mjs b/src/web/waiters/WindowWaiter.mjs index cee2feec..b22a5013 100755 --- a/src/web/waiters/WindowWaiter.mjs +++ b/src/web/waiters/WindowWaiter.mjs @@ -33,7 +33,7 @@ class WindowWaiter { /** * Handler for window blur events. - * Saves the current time so that we can calculate how long the window was unfocussed for when + * Saves the current time so that we can calculate how long the window was unfocused for when * focus is returned. */ windowBlur() { diff --git a/src/web/waiters/WorkerWaiter.mjs b/src/web/waiters/WorkerWaiter.mjs index 877c0e02..55f51406 100644 --- a/src/web/waiters/WorkerWaiter.mjs +++ b/src/web/waiters/WorkerWaiter.mjs @@ -353,7 +353,7 @@ class WorkerWaiter { * @param {object} workerObj - Object containing the worker information * @param {ChefWorker} workerObj.worker - The actual worker object * @param {number} workerObj.inputNum - The inputNum of the input being baked by the worker - * @param {boolean} workerObj.active - If true, the worker is currrently baking an input + * @param {boolean} workerObj.active - If true, the worker is currently baking an input */ workerFinished(workerObj) { const workerIdx = this.chefWorkers.indexOf(workerObj); diff --git a/src/web/workers/InputWorker.mjs b/src/web/workers/InputWorker.mjs index 521539c5..9912995b 100644 --- a/src/web/workers/InputWorker.mjs +++ b/src/web/workers/InputWorker.mjs @@ -945,7 +945,7 @@ self.updateMaxTabs = function(maxTabs, activeTab) { * @param {boolean} searchData.showLoading - If true, include loading inputs in the results * @param {boolean} searchData.showLoaded - If true, include loaded inputs in the results * @param {string} searchData.filter - A regular expression to match the inputs on - * @param {string} searchData.filterType - Either "CONTENT" or "FILENAME". Detemines what should be matched with filter + * @param {string} searchData.filterType - Either "CONTENT" or "FILENAME". Determines what should be matched with filter * @param {number} searchData.numResults - The maximum number of results to be returned */ self.filterTabs = function(searchData) { diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 8337c48d..81af9593 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -1028,7 +1028,7 @@ ExifImageHeight: 57`); const zipped = chef.zip("some file content", { filename: "sample.zip", comment: "added", - operaringSystem: "Unix", + operatingSystem: "Unix", }); assert.strictEqual(zipped.type, 7); diff --git a/tests/operations/tests/CharEnc.mjs b/tests/operations/tests/CharEnc.mjs index 552d31b3..1bd18d76 100644 --- a/tests/operations/tests/CharEnc.mjs +++ b/tests/operations/tests/CharEnc.mjs @@ -69,7 +69,7 @@ TestRegister.addTests([ ], }, { - name: "Generate Base64 Windows Powershell", + name: "Generate Base64 Windows PowerShell", input: "ZABpAHIAIAAiAGMAOgBcAHAAcgBvAGcAcgBhAG0AIABmAGkAbABlAHMAIgAgAA==", expectedOutput: "dir \"c:\\program files\" ", recipeConfig: [ From fc4d6d2d2ee87604e6d629491864f11c279a7ad3 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:39:56 +0100 Subject: [PATCH 0063/1024] 9.7.12 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cecfa00b..9d4a305d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.11", + "version": "9.7.12", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 68132a91..8fa38301 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.11", + "version": "9.7.12", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From be365f66ef92394506e6acc292a5e4793635bd70 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:50:37 +0100 Subject: [PATCH 0064/1024] Added length check to Triple DES IVs --- src/core/operations/DESDecrypt.mjs | 3 ++- src/core/operations/DESEncrypt.mjs | 3 ++- src/core/operations/TripleDESDecrypt.mjs | 6 ++++++ src/core/operations/TripleDESEncrypt.mjs | 6 ++++++ tests/node/tests/operations.mjs | 4 ++-- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/core/operations/DESDecrypt.mjs b/src/core/operations/DESDecrypt.mjs index 9ab694b8..92b9609f 100644 --- a/src/core/operations/DESDecrypt.mjs +++ b/src/core/operations/DESDecrypt.mjs @@ -76,7 +76,8 @@ Triple DES uses a key length of 24 bytes (192 bits).`); if (iv.length !== 8) { throw new OperationError(`Invalid IV length: ${iv.length} bytes -DES uses an IV length of 8 bytes (64 bits).`); +DES uses an IV length of 8 bytes (64 bits). +Make sure you have specified the type correctly (e.g. Hex vs UTF8).`); } input = Utils.convertToByteString(input, inputType); diff --git a/src/core/operations/DESEncrypt.mjs b/src/core/operations/DESEncrypt.mjs index 9897a413..ee845151 100644 --- a/src/core/operations/DESEncrypt.mjs +++ b/src/core/operations/DESEncrypt.mjs @@ -76,7 +76,8 @@ Triple DES uses a key length of 24 bytes (192 bits).`); if (iv.length !== 8) { throw new OperationError(`Invalid IV length: ${iv.length} bytes -DES uses an IV length of 8 bytes (64 bits).`); +DES uses an IV length of 8 bytes (64 bits). +Make sure you have specified the type correctly (e.g. Hex vs UTF8).`); } input = Utils.convertToByteString(input, inputType); diff --git a/src/core/operations/TripleDESDecrypt.mjs b/src/core/operations/TripleDESDecrypt.mjs index 90a83220..f1aa02c8 100644 --- a/src/core/operations/TripleDESDecrypt.mjs +++ b/src/core/operations/TripleDESDecrypt.mjs @@ -75,6 +75,12 @@ class TripleDESDecrypt extends Operation { Triple DES uses a key length of 24 bytes (192 bits). DES uses a key length of 8 bytes (64 bits).`); } + if (iv.length !== 8) { + throw new OperationError(`Invalid IV length: ${iv.length} bytes + +Triple DES uses an IV length of 8 bytes (64 bits). +Make sure you have specified the type correctly (e.g. Hex vs UTF8).`); + } input = Utils.convertToByteString(input, inputType); diff --git a/src/core/operations/TripleDESEncrypt.mjs b/src/core/operations/TripleDESEncrypt.mjs index d4475f83..9f767ab9 100644 --- a/src/core/operations/TripleDESEncrypt.mjs +++ b/src/core/operations/TripleDESEncrypt.mjs @@ -75,6 +75,12 @@ class TripleDESEncrypt extends Operation { Triple DES uses a key length of 24 bytes (192 bits). DES uses a key length of 8 bytes (64 bits).`); } + if (iv.length !== 8) { + throw new OperationError(`Invalid IV length: ${iv.length} bytes + +Triple DES uses an IV length of 8 bytes (64 bits). +Make sure you have specified the type correctly (e.g. Hex vs UTF8).`); + } input = Utils.convertToByteString(input, inputType); diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 255d8dc1..cfe67211 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -943,10 +943,10 @@ smothering ampersand abreast chef.tripleDESDecrypt( chef.tripleDESEncrypt("Destroy Money", { key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"}, - iv: {string: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00", option: "Hex"}}), + iv: {string: "00 00 00 00 00 00 00 00", option: "Hex"}}), { key: {string: "30 31 2f 30 34 2f 31 39 39 39 20 32 32 3a 33 33 3a 30 3130 31 2f 30 34", option: "Hex"}, - iv: {string: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00", option: "Hex"} + iv: {string: "00 00 00 00 00 00 00 00", option: "Hex"} }).toString(), "Destroy Money"); }), From 5383f56b268677994edb079b5c98dbeb3c6b5925 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 15:51:06 +0100 Subject: [PATCH 0065/1024] 9.7.13 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d4a305d..aeb87966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.12", + "version": "9.7.13", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8fa38301..88945e6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.12", + "version": "9.7.13", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From fce0728d5d9f355b4d1bab9accd6e04ec96a8aa1 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 16:04:36 +0100 Subject: [PATCH 0066/1024] Updated bug report template --- .github/ISSUE_TEMPLATE/bug-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 643988f4..32b7fbe0 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -26,8 +26,8 @@ If applicable, add screenshots to help explain your problem. **Desktop (if relevant, please complete the following information):** - OS: [e.g. Windows] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] + - Browser: [e.g. chrome 72, firefox 60] + - CyberChef version: [e.g. 9.7.14] **Additional context** Add any other context about the problem here. From 7e2744920407b7cb7d4f8759f8757d253ba1de55 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 16:12:22 +0100 Subject: [PATCH 0067/1024] Fixed search box appaerance in Firefox --- src/web/stylesheets/utils/_overrides.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/web/stylesheets/utils/_overrides.css b/src/web/stylesheets/utils/_overrides.css index b1ca4c57..c06d3b8c 100755 --- a/src/web/stylesheets/utils/_overrides.css +++ b/src/web/stylesheets/utils/_overrides.css @@ -82,14 +82,6 @@ a:focus { border-color: var(--btn-success-hover-border-colour); } -input[type="search"] { - appearance: searchfield; -} - -input[type="search"]::-webkit-search-cancel-button { - appearance: searchfield-cancel-button; -} - select.form-control:not([size]):not([multiple]), select.custom-file-control:not([size]):not([multiple]) { height: unset !important; } From 17c9ffe10733f987f8d86396c47d08f4e49abda8 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 16:32:06 +0100 Subject: [PATCH 0068/1024] Tidied up chainCommands function in Gruntfile --- Gruntfile.js | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ce4dd863..b25553b7 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,18 +14,6 @@ const path = require("path"); * @license Apache-2.0 */ -const chainCommands = function(cmds) { - const win = process.platform === "win32"; - if (!win) { - return cmds.join(";"); - } - return cmds - // Chain Command is different here - .join("&&") - // Windows does not support \n properly - .replace("\n", "\\n"); -}; - module.exports = function (grunt) { grunt.file.defaultEncoding = "utf8"; grunt.file.preserveBOM = false; @@ -113,6 +101,26 @@ module.exports = function (grunt) { return entryModules; } + /** + * Detects the correct delimiter to use to chain shell commands together + * based on the current OS. + * + * @param {string[]} cmds + * @returns {string} + */ + function chainCommands(cmds) { + const win = process.platform === "win32"; + if (!win) { + return cmds.join(";"); + } + return cmds + // && means that subsequent commands will not be executed if the + // previous one fails. & would coninue on a fail + .join("&&") + // Windows does not support \n properly + .replace("\n", "\\n"); + } + grunt.initConfig({ clean: { dev: ["build/dev/*"], From adf97729281fae2204321eea18dfad52c60d31ed Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 17:22:48 +0100 Subject: [PATCH 0069/1024] Added tests for Utils.parseEscapedChars --- src/core/Utils.mjs | 14 +++++------ tests/node/index.mjs | 2 ++ .../{operations => node/tests}/Categories.mjs | 8 +++---- tests/node/tests/Utils.mjs | 23 +++++++++++++++++++ tests/operations/index.mjs | 8 ------- 5 files changed, 36 insertions(+), 19 deletions(-) rename tests/{operations => node/tests}/Categories.mjs (62%) create mode 100644 tests/node/tests/Utils.mjs diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index 0d6e7396..e64aba4b 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -201,8 +201,8 @@ class Utils { * Utils.parseEscapedChars("\\n"); */ static parseEscapedChars(str) { - return str.replace(/\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, b) { - switch (b[0]) { + return str.replace(/\\([bfnrtv'"]|[0-3][0-7]{2}|[0-7]{1,2}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]{1,6}\}|\\)/g, function(m, a) { + switch (a[0]) { case "\\": return "\\"; case "0": @@ -213,7 +213,7 @@ class Utils { case "5": case "6": case "7": - return String.fromCharCode(parseInt(b, 8)); + return String.fromCharCode(parseInt(a, 8)); case "b": return "\b"; case "t": @@ -231,12 +231,12 @@ class Utils { case "'": return "'"; case "x": - return String.fromCharCode(parseInt(b.substr(1), 16)); + return String.fromCharCode(parseInt(a.substr(1), 16)); case "u": - if (b[1] === "{") - return String.fromCodePoint(parseInt(b.slice(2, -1), 16)); + if (a[1] === "{") + return String.fromCodePoint(parseInt(a.slice(2, -1), 16)); else - return String.fromCharCode(parseInt(b.substr(1), 16)); + return String.fromCharCode(parseInt(a.substr(1), 16)); } }); } diff --git a/tests/node/index.mjs b/tests/node/index.mjs index 6d685555..29c8c841 100644 --- a/tests/node/index.mjs +++ b/tests/node/index.mjs @@ -21,6 +21,8 @@ import "./tests/operations.mjs"; import "./tests/File.mjs"; import "./tests/Dish.mjs"; import "./tests/NodeDish.mjs"; +import "./tests/Utils.mjs"; +import "./tests/Categories.mjs"; const testStatus = { allTestsPassing: true, diff --git a/tests/operations/Categories.mjs b/tests/node/tests/Categories.mjs similarity index 62% rename from tests/operations/Categories.mjs rename to tests/node/tests/Categories.mjs index c1f9f472..0f4e8644 100644 --- a/tests/operations/Categories.mjs +++ b/tests/node/tests/Categories.mjs @@ -1,7 +1,7 @@ -import TestRegister from "../lib/TestRegister.mjs"; -import Categories from "../../src/core/config/Categories.json"; -import OperationConfig from "../../src/core/config/OperationConfig.json"; -import it from "../node/assertionHandler.mjs"; +import TestRegister from "../../lib/TestRegister.mjs"; +import Categories from "../../../src/core/config/Categories.json"; +import OperationConfig from "../../../src/core/config/OperationConfig.json"; +import it from "../assertionHandler.mjs"; import assert from "assert"; TestRegister.addApiTests([ diff --git a/tests/node/tests/Utils.mjs b/tests/node/tests/Utils.mjs new file mode 100644 index 00000000..8dbf37ae --- /dev/null +++ b/tests/node/tests/Utils.mjs @@ -0,0 +1,23 @@ +import TestRegister from "../../lib/TestRegister.mjs"; +import Utils from "../../../src/core/Utils.mjs"; +import it from "../assertionHandler.mjs"; +import assert from "assert"; + +TestRegister.addApiTests([ + it("Utils: should parse six backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\\\\\\\\\"), "\\\\\\"); + }), + + it("Utils: should parse escaped quotes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\'"), "'"); + }), + + it("Utils: should parse escaped quotes and backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\'"), "\\'"); + }), + + it("Utils: should parse escaped quotes and escaped backslashes correctly", () => { + assert.equal(Utils.parseEscapedChars("\\\\\\'"), "\\'"); + }), + +]); diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 59c64550..d64a7737 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -17,11 +17,6 @@ import { } from "../lib/utils.mjs"; import TestRegister from "../lib/TestRegister.mjs"; - -// Generic tests -import "./Categories.mjs"; - -// Operation tests import "./tests/BCD.mjs"; import "./tests/BSON.mjs"; import "./tests/BaconCipher.mjs"; @@ -111,8 +106,5 @@ setLongTestFailure(); const logOpsTestReport = logTestReport.bind(null, testStatus); -TestRegister.runApiTests() - .then(logOpsTestReport); - TestRegister.runTests() .then(logOpsTestReport); From eb34ab4f6aa25fac4133fe88646c89fac5bf3d08 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 17:23:59 +0100 Subject: [PATCH 0070/1024] 9.7.14 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index aeb87966..b0645dea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.13", + "version": "9.7.14", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 88945e6f..387958e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.13", + "version": "9.7.14", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From ac3c2207898aadb6456f318a01317e9554d3ecac Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 16 Oct 2019 17:36:25 +0100 Subject: [PATCH 0071/1024] 9.7.15 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0645dea..7f67aaed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.14", + "version": "9.7.15", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 387958e6..35cc5921 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.14", + "version": "9.7.15", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From d175aa958cf58ba8e2600cad83a78e6d55b62496 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 18 Oct 2019 11:09:12 +0100 Subject: [PATCH 0072/1024] DES no longer requires an IV in ECB mode --- src/core/operations/DESDecrypt.mjs | 2 +- src/core/operations/DESEncrypt.mjs | 2 +- src/core/operations/TripleDESDecrypt.mjs | 2 +- src/core/operations/TripleDESEncrypt.mjs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/operations/DESDecrypt.mjs b/src/core/operations/DESDecrypt.mjs index 92b9609f..42097cc2 100644 --- a/src/core/operations/DESDecrypt.mjs +++ b/src/core/operations/DESDecrypt.mjs @@ -73,7 +73,7 @@ class DESDecrypt extends Operation { DES uses a key length of 8 bytes (64 bits). Triple DES uses a key length of 24 bytes (192 bits).`); } - if (iv.length !== 8) { + if (iv.length !== 8 && mode !== "ECB") { throw new OperationError(`Invalid IV length: ${iv.length} bytes DES uses an IV length of 8 bytes (64 bits). diff --git a/src/core/operations/DESEncrypt.mjs b/src/core/operations/DESEncrypt.mjs index ee845151..6f297d32 100644 --- a/src/core/operations/DESEncrypt.mjs +++ b/src/core/operations/DESEncrypt.mjs @@ -73,7 +73,7 @@ class DESEncrypt extends Operation { DES uses a key length of 8 bytes (64 bits). Triple DES uses a key length of 24 bytes (192 bits).`); } - if (iv.length !== 8) { + if (iv.length !== 8 && mode !== "ECB") { throw new OperationError(`Invalid IV length: ${iv.length} bytes DES uses an IV length of 8 bytes (64 bits). diff --git a/src/core/operations/TripleDESDecrypt.mjs b/src/core/operations/TripleDESDecrypt.mjs index f1aa02c8..70376a5f 100644 --- a/src/core/operations/TripleDESDecrypt.mjs +++ b/src/core/operations/TripleDESDecrypt.mjs @@ -75,7 +75,7 @@ class TripleDESDecrypt extends Operation { Triple DES uses a key length of 24 bytes (192 bits). DES uses a key length of 8 bytes (64 bits).`); } - if (iv.length !== 8) { + if (iv.length !== 8 && mode !== "ECB") { throw new OperationError(`Invalid IV length: ${iv.length} bytes Triple DES uses an IV length of 8 bytes (64 bits). diff --git a/src/core/operations/TripleDESEncrypt.mjs b/src/core/operations/TripleDESEncrypt.mjs index 9f767ab9..bcd77d2e 100644 --- a/src/core/operations/TripleDESEncrypt.mjs +++ b/src/core/operations/TripleDESEncrypt.mjs @@ -75,7 +75,7 @@ class TripleDESEncrypt extends Operation { Triple DES uses a key length of 24 bytes (192 bits). DES uses a key length of 8 bytes (64 bits).`); } - if (iv.length !== 8) { + if (iv.length !== 8 && mode !== "ECB") { throw new OperationError(`Invalid IV length: ${iv.length} bytes Triple DES uses an IV length of 8 bytes (64 bits). From 61d40b5a0b356d77fc017e8c7b90ca0157190c19 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 18 Oct 2019 11:11:17 +0100 Subject: [PATCH 0073/1024] 9.7.16 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f67aaed..bf9aa0c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.15", + "version": "9.7.16", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 35cc5921..dd83e745 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.15", + "version": "9.7.16", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From e8b4536ec2e28b7ea6973a633eaf39f3a7f7b3a2 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 18 Oct 2019 12:57:13 +0100 Subject: [PATCH 0074/1024] Updated yara to v3.11.0 and openssl to v1.1.1d finally managed to fudge the compiler --- package-lock.json | 57 ++++++++++++++++------------------------------- package.json | 2 +- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf9aa0c7..7a489abc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1760,7 +1760,7 @@ "dependencies": { "es6-promisify": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -4307,7 +4307,7 @@ }, "deep-eql": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "resolved": "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { @@ -4651,7 +4651,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -6018,8 +6018,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6040,14 +6039,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6062,20 +6059,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6192,8 +6186,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6205,7 +6198,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6220,7 +6212,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6228,14 +6219,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6254,7 +6243,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6335,8 +6323,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6348,7 +6335,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6434,8 +6420,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6471,7 +6456,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6491,7 +6475,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6535,14 +6518,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -7443,7 +7424,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -7458,7 +7439,7 @@ "dependencies": { "json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, @@ -8586,9 +8567,9 @@ "integrity": "sha512-RqscTx95+RTKhFAyjedsboR0Lmo3zd8//EuRwQXkdWmsCwYlzarVRaiYg6kS1O8m10MCQkGdrnlK9L4eAmZUwA==" }, "libyara-wasm": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-0.0.12.tgz", - "integrity": "sha512-AjTe4FiBuH4F7HwGT/3UxoRenczXtrbM6oWGrifxb44LrkDh5VxRNg9zwfPpDA5Fcc1iYcXS0WVA/b3DGtD8cQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.0.0.tgz", + "integrity": "sha512-BtCrvwbMIIPnBVM2sv1bR1bFvb4Rxr2hOJfvm6xiZY/hDtw0KQx05RIY+4DyqoirCxzy71UchUsvnPKieO29bg==" }, "linkify-it": { "version": "2.2.0", diff --git a/package.json b/package.json index dd83e745..3b5920b3 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "jsrsasign": "8.0.12", "kbpgp": "2.1.3", "libbzip2-wasm": "0.0.4", - "libyara-wasm": "0.0.12", + "libyara-wasm": "^1.0.0", "lodash": "^4.17.15", "loglevel": "^1.6.3", "loglevel-message-prefix": "^3.0.0", From 252b1b65c4ad5bd97716b241e52172f0d8def114 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 18 Oct 2019 12:58:17 +0100 Subject: [PATCH 0075/1024] Add YARA rules node test --- src/core/operations/YARARules.mjs | 2 +- tests/node/tests/operations.mjs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/operations/YARARules.mjs b/src/core/operations/YARARules.mjs index b95d5a4c..e654cc6d 100644 --- a/src/core/operations/YARARules.mjs +++ b/src/core/operations/YARARules.mjs @@ -61,7 +61,7 @@ class YARARules extends Operation { * @param {Object[]} args * @returns {string} */ - run(input, args) { + async run(input, args) { if (isWorkerEnvironment()) self.sendStatusMessage("Instantiating YARA..."); const [rules, showStrings, showLengths, showMeta, showCounts] = args; diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index cfe67211..f20708f0 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -31,7 +31,7 @@ import { cartesianProduct, CSSMinify, toBase64, - toHex, + toHex } from "../../../src/node/index"; import chef from "../../../src/node/index.mjs"; import TestRegister from "../../lib/TestRegister.mjs"; @@ -1059,5 +1059,20 @@ ExifImageHeight: 57`); assert.equal(unzipped.value[0].data, "some content"); }), + it("YARA Rule Matching", async () => { + const input = "foobar foobar bar foo foobar"; + const output = "Rule \"foo\" matches (4 times):\nPos 0, length 3, identifier $re1, data: \"foo\"\nPos 7, length 3, identifier $re1, data: \"foo\"\nPos 18, length 3, identifier $re1, data: \"foo\"\nPos 22, length 3, identifier $re1, data: \"foo\"\nRule \"bar\" matches (4 times):\nPos 3, length 3, identifier $re1, data: \"bar\"\nPos 10, length 3, identifier $re1, data: \"bar\"\nPos 14, length 3, identifier $re1, data: \"bar\"\nPos 25, length 3, identifier $re1, data: \"bar\"\n"; + + const res = await chef.YARARules(input, { + rules: "rule foo {strings: $re1 = /foo/ condition: $re1} rule bar {strings: $re1 = /bar/ condition: $re1}", + showStrings: true, + showStringLengths: true, + showMetadata: true + }); + + assert.equal(output, res.value); + }), + + ]); From 3e3322e1f086cd86067ebea241b5d73e91bca615 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 18 Oct 2019 13:57:21 +0100 Subject: [PATCH 0076/1024] Fork no longer appends its merge delimiter to the end of the output. Closes #692 --- src/core/operations/Fork.mjs | 8 ++++---- tests/operations/tests/Comment.mjs | 2 +- tests/operations/tests/Fork.mjs | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/operations/Fork.mjs b/src/core/operations/Fork.mjs index 521ca271..6e961990 100644 --- a/src/core/operations/Fork.mjs +++ b/src/core/operations/Fork.mjs @@ -76,8 +76,8 @@ class Fork extends Operation { } const recipe = new Recipe(); - let output = "", - progress = 0; + const outputs = []; + let progress = 0; state.forkOffset += state.progress + 1; @@ -104,10 +104,10 @@ class Fork extends Operation { } progress = err.progress + 1; } - output += await dish.get(outputType) + mergeDelim; + outputs.push(await dish.get(outputType)); } - state.dish.set(output, outputType); + state.dish.set(outputs.join(mergeDelim), outputType); state.progress += progress; return state; } diff --git a/tests/operations/tests/Comment.mjs b/tests/operations/tests/Comment.mjs index 9fc80a63..06bf58f2 100644 --- a/tests/operations/tests/Comment.mjs +++ b/tests/operations/tests/Comment.mjs @@ -42,7 +42,7 @@ TestRegister.addTests([ { name: "Fork, Comment, Base64", input: "cat\nsat\nmat", - expectedOutput: "Y2F0\nc2F0\nbWF0\n", + expectedOutput: "Y2F0\nc2F0\nbWF0", recipeConfig: [ { "op": "Fork", diff --git a/tests/operations/tests/Fork.mjs b/tests/operations/tests/Fork.mjs index d83d6262..d7ee918c 100644 --- a/tests/operations/tests/Fork.mjs +++ b/tests/operations/tests/Fork.mjs @@ -57,7 +57,7 @@ TestRegister.addTests([ { name: "Fork, Conditional Jump, Encodings", input: "Some data with a 1 in it\nSome data with a 2 in it", - expectedOutput: "U29tZSBkYXRhIHdpdGggYSAxIGluIGl0\n53 6f 6d 65 20 64 61 74 61 20 77 69 74 68 20 61 20 32 20 69 6e 20 69 74\n", + expectedOutput: "U29tZSBkYXRhIHdpdGggYSAxIGluIGl0\n53 6f 6d 65 20 64 61 74 61 20 77 69 74 68 20 61 20 32 20 69 6e 20 69 74", recipeConfig: [ {"op": "Fork", "args": ["\\n", "\\n", false]}, {"op": "Conditional Jump", "args": ["1", false, "skipReturn", "10"]}, From 0805a011b970b485c76c75d010a4576f93847164 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 18 Oct 2019 13:57:26 +0100 Subject: [PATCH 0077/1024] 9.7.17 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf9aa0c7..41389dba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.16", + "version": "9.7.17", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index dd83e745..7d61adfa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.16", + "version": "9.7.17", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 665f91ec3780635b8af606bdb7f501cda102bf21 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 21 Oct 2019 13:49:42 +0100 Subject: [PATCH 0078/1024] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d79c99a9..76203bcf 100755 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ You can use as many operations as you like in simple or complex ways. Some examp - You can save the output to a file at any time or load a file by dragging and dropping it into the input field. Files up to around 2GB are supported (depending on your browser), however some operations may take a very long time to run over this much data. - CyberChef is entirely client-side - It should be noted that none of your recipe configuration or input (either text or files) is ever sent to the CyberChef web server - all processing is carried out within your browser, on your own computer. - - Due to this feature, CyberChef can be compiled into a single HTML file. You can download this file and drop it into a virtual machine, share it with other people, or use it independently on your local machine. + - Due to this feature, CyberChef can be downloaded and run locally. You can use the link in the top left corner of the app to download a full copy of CyberChef and drop it into a virtual machine, share it with other people, or host it in a closed network. ## Browser support From 60f5093c6c1606c23b1ed296160db71d723c2dcb Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 21 Oct 2019 13:56:52 +0100 Subject: [PATCH 0079/1024] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6996a5e1..3cfad188 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - lts/* + - lts/dubnium cache: npm addons: chrome: stable From 6e2fb67d76bc044e0e3f761815cf927923fe21a6 Mon Sep 17 00:00:00 2001 From: Ryan Adolf Date: Thu, 24 Oct 2019 16:32:14 -0700 Subject: [PATCH 0080/1024] Theme configuration through url --- src/web/App.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/web/App.mjs b/src/web/App.mjs index 96638f83..bb8d8c9a 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -453,6 +453,7 @@ class App { * Searches the URI parameters for recipe and input parameters. * If recipe is present, replaces the current recipe with the recipe provided in the URI. * If input is present, decodes and sets the input to the one provided in the URI. + * If theme is present, uses the theme. * * @fires Manager#statechange */ @@ -491,6 +492,10 @@ class App { } catch (err) {} } + if (this.uriParams.theme) { + document.querySelector(":root").className = this.uriParams.theme; + } + this.autoBakePause = false; window.dispatchEvent(this.manager.statechange); } From 061533bb57426aeaa2f45d72cc19f1faf316e062 Mon Sep 17 00:00:00 2001 From: Ryan Adolf Date: Thu, 24 Oct 2019 16:37:10 -0700 Subject: [PATCH 0081/1024] Document theme option in README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 76203bcf..d1bd08de 100755 --- a/README.md +++ b/README.md @@ -71,6 +71,12 @@ You can use as many operations as you like in simple or complex ways. Some examp - It should be noted that none of your recipe configuration or input (either text or files) is ever sent to the CyberChef web server - all processing is carried out within your browser, on your own computer. - Due to this feature, CyberChef can be downloaded and run locally. You can use the link in the top left corner of the app to download a full copy of CyberChef and drop it into a virtual machine, share it with other people, or host it in a closed network. +## Url prefilling + +By manipulation of CyberChef's url hash, you can change the initial settings with which the page opens. +The format is `https://gchq.github.io/CyberChef/#recipe=Function()&input=...` + +Supported options are `recipe`, `input`, and `theme`. ## Browser support From 49f444dfe9316859ab0bbc00c75878315dfbcd81 Mon Sep 17 00:00:00 2001 From: Brian Hoang Date: Sat, 26 Oct 2019 15:30:27 +0100 Subject: [PATCH 0082/1024] auto focus on search bar and made searchbar and text area tab-able --- src/web/html/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/web/html/index.html b/src/web/html/index.html index 4063e138..35ce6860 100755 --- a/src/web/html/index.html +++ b/src/web/html/index.html @@ -168,7 +168,7 @@
    Operations
    - +
      @@ -266,7 +266,7 @@
      - +
      From 4387038351f79e105c22976d8ec92837304cff32 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 26 Oct 2019 16:14:25 +0100 Subject: [PATCH 0083/1024] Update libyara-wasm --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a489abc..92535448 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8567,9 +8567,9 @@ "integrity": "sha512-RqscTx95+RTKhFAyjedsboR0Lmo3zd8//EuRwQXkdWmsCwYlzarVRaiYg6kS1O8m10MCQkGdrnlK9L4eAmZUwA==" }, "libyara-wasm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.0.0.tgz", - "integrity": "sha512-BtCrvwbMIIPnBVM2sv1bR1bFvb4Rxr2hOJfvm6xiZY/hDtw0KQx05RIY+4DyqoirCxzy71UchUsvnPKieO29bg==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.0.1.tgz", + "integrity": "sha512-Vq0EcQ3HRJinFxxb00JZpjyX8NCerazVhSf3+TVt1c21T3pcEJJ3RkanAwT71lW6CCmmmKuNU4QwqsinmR6pKQ==" }, "linkify-it": { "version": "2.2.0", diff --git a/package.json b/package.json index 3b5920b3..c79b4f89 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "jsrsasign": "8.0.12", "kbpgp": "2.1.3", "libbzip2-wasm": "0.0.4", - "libyara-wasm": "^1.0.0", + "libyara-wasm": "^1.0.1", "lodash": "^4.17.15", "loglevel": "^1.6.3", "loglevel-message-prefix": "^3.0.0", From 3d4f74945c1902592dbccbc8834a881919101995 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 26 Oct 2019 16:59:41 +0100 Subject: [PATCH 0084/1024] Update nightwatch and chromedriver Rebase onto master --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41389dba..1d919a79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3107,9 +3107,9 @@ } }, "chromedriver": { - "version": "76.0.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-76.0.1.tgz", - "integrity": "sha512-+8BCemJLKPF2w/UpzA1uNgLWQrg1IgIO4ZYcsAjYYgqD8zUcvQ+RfwA/0TR1Zwv9Mkd8fdzTe21eZ2FyZ83DAg==", + "version": "77.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-77.0.0.tgz", + "integrity": "sha512-mZa1IVx4HD8rDaItWbnS470mmypgiWsDiu98r0NkiT4uLm3qrANl4vOU6no6vtWtLQiW5kt1POcIbjeNpsLbXA==", "dev": true, "requires": { "del": "^4.1.1", @@ -7576,9 +7576,9 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", - "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { "agent-base": "^4.3.0", diff --git a/package.json b/package.json index 7d61adfa..be4361bf 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "babel-eslint": "^10.0.3", "babel-loader": "^8.0.6", "babel-plugin-dynamic-import-node": "^2.3.0", - "chromedriver": "^76.0.1", + "chromedriver": "^77.0.0", "colors": "^1.3.3", "copy-webpack-plugin": "^5.0.4", "css-loader": "^3.2.0", From 88d8e9a7f921ee282e1d6f05cf8ffd9c68af1786 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 14:13:37 +0000 Subject: [PATCH 0085/1024] 9.7.18 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d919a79..b5e60f6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.17", + "version": "9.7.18", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index be4361bf..6b210c8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.17", + "version": "9.7.18", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 726bf3345e3305d658c2de68bd4027db3ce2c6cf Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 14:38:55 +0000 Subject: [PATCH 0086/1024] Added tabindex to ingredients --- src/web/HTMLIngredient.mjs | 15 ++++++++++++++- src/web/html/index.html | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/web/HTMLIngredient.mjs b/src/web/HTMLIngredient.mjs index 6f3f5e66..03f4e983 100755 --- a/src/web/HTMLIngredient.mjs +++ b/src/web/HTMLIngredient.mjs @@ -31,7 +31,9 @@ class HTMLIngredient { this.target = config.target; this.defaultIndex = config.defaultIndex || 0; this.toggleValues = config.toggleValues; - this.id = "ing-" + this.app.nextIngId(); + this.ingId = this.app.nextIngId(); + this.id = "ing-" + this.ingId; + this.tabIndex = this.ingId + 2; // Input = 1, Search = 2 this.min = (typeof config.min === "number") ? config.min : ""; this.max = (typeof config.max === "number") ? config.max : ""; this.step = config.step || 1; @@ -56,6 +58,7 @@ class HTMLIngredient { @@ -69,6 +72,7 @@ class HTMLIngredient { @@ -82,6 +86,7 @@ class HTMLIngredient { @@ -104,6 +109,7 @@ class HTMLIngredient { `; for (i = 0; i < this.value.length; i++) { @@ -157,6 +165,7 @@ class HTMLIngredient { @@ -215,6 +225,7 @@ class HTMLIngredient { @@ -244,6 +255,7 @@ class HTMLIngredient { @@ -256,6 +268,7 @@ class HTMLIngredient { +
        @@ -266,7 +266,7 @@
        - +
        From 383aab5f8502e2d2aefcdd8ec66829b0f727e7ea Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 15:17:06 +0000 Subject: [PATCH 0087/1024] Improved theme selection. Added changeTheme method. --- src/web/App.mjs | 3 ++- src/web/waiters/OptionsWaiter.mjs | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/web/App.mjs b/src/web/App.mjs index bb8d8c9a..1039b7b2 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -492,8 +492,9 @@ class App { } catch (err) {} } + // Read in theme from URI params if (this.uriParams.theme) { - document.querySelector(":root").className = this.uriParams.theme; + this.manager.options.changeTheme(Utils.escapeHtml(this.uriParams.theme)); } this.autoBakePause = false; diff --git a/src/web/waiters/OptionsWaiter.mjs b/src/web/waiters/OptionsWaiter.mjs index a19c6066..5ef517d4 100755 --- a/src/web/waiters/OptionsWaiter.mjs +++ b/src/web/waiters/OptionsWaiter.mjs @@ -153,14 +153,28 @@ class OptionsWaiter { /** - * Changes the theme by setting the class of the element. + * Theme change event listener * * @param {Event} e */ themeChange(e) { const themeClass = e.target.value; - document.querySelector(":root").className = themeClass; + this.changeTheme(themeClass); + } + + + /** + * Changes the theme by setting the class of the element. + * + * @param (string} theme + */ + changeTheme(theme) { + document.querySelector(":root").className = theme; + + // Update theme selection + const themeSelect = document.getElementById("theme"); + themeSelect.selectedIndex = themeSelect.querySelector(`option[value="${theme}"`).index; } From 882efea31435e4e4bd48e0b32d8d00aee2601075 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 15:21:41 +0000 Subject: [PATCH 0088/1024] Updated README --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d1bd08de..655ae4ee 100755 --- a/README.md +++ b/README.md @@ -71,12 +71,14 @@ You can use as many operations as you like in simple or complex ways. Some examp - It should be noted that none of your recipe configuration or input (either text or files) is ever sent to the CyberChef web server - all processing is carried out within your browser, on your own computer. - Due to this feature, CyberChef can be downloaded and run locally. You can use the link in the top left corner of the app to download a full copy of CyberChef and drop it into a virtual machine, share it with other people, or host it in a closed network. -## Url prefilling -By manipulation of CyberChef's url hash, you can change the initial settings with which the page opens. -The format is `https://gchq.github.io/CyberChef/#recipe=Function()&input=...` +## Deep linking + +By manipulation of CyberChef's URL hash, you can change the initial settings with which the page opens. +The format is `https://gchq.github.io/CyberChef/#recipe=Operation()&input=...` + +Supported arguments are `recipe`, `input` (encoded in Base64), and `theme`. -Supported options are `recipe`, `input`, and `theme`. ## Browser support From 04561d29b518a28b84f8c21aa6f426391615551b Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 15:26:48 +0000 Subject: [PATCH 0089/1024] Dependency update --- package-lock.json | 51 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a9ca34e..34ba8b40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1760,7 +1760,7 @@ "dependencies": { "es6-promisify": { "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -4307,7 +4307,7 @@ }, "deep-eql": { "version": "0.1.3", - "resolved": "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { @@ -4651,7 +4651,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -6018,7 +6018,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6039,12 +6040,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6059,17 +6062,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6186,7 +6192,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6198,6 +6205,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6212,6 +6220,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6219,12 +6228,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6243,6 +6254,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6323,7 +6335,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6335,6 +6348,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6420,7 +6434,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6456,6 +6471,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6475,6 +6491,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6518,12 +6535,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -7424,7 +7443,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -7439,7 +7458,7 @@ "dependencies": { "json5": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, From 6d138f345fd2faeed631befc2451429fec138025 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Sun, 27 Oct 2019 15:27:36 +0000 Subject: [PATCH 0090/1024] 9.7.19 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 34ba8b40..b3c6f415 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.18", + "version": "9.7.19", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 075578cc..518fb29b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.18", + "version": "9.7.19", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 05e65a74ceb14c7ffdd0125cb710f195dd7ad602 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 28 Oct 2019 17:26:13 +0000 Subject: [PATCH 0091/1024] Improved Magic scoring slightly --- src/core/lib/Magic.mjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/lib/Magic.mjs b/src/core/lib/Magic.mjs index 68a36bfa..79c64452 100644 --- a/src/core/lib/Magic.mjs +++ b/src/core/lib/Magic.mjs @@ -355,17 +355,17 @@ class Magic { let aScore = a.languageScores[0].score, bScore = b.languageScores[0].score; - // If a recipe results in a file being detected, it receives a relatively good score - if (a.fileType) aScore = 500; - if (b.fileType) bScore = 500; - // If the result is valid UTF8, its score gets boosted (lower being better) if (a.isUTF8) aScore -= 100; if (b.isUTF8) bScore -= 100; + // If a recipe results in a file being detected, it receives a relatively good score + if (a.fileType && aScore > 500) aScore = 500; + if (b.fileType && bScore > 500) bScore = 500; + // If the option is marked useful, give it a good score - if (a.useful) aScore = 100; - if (b.useful) bScore = 100; + if (a.useful && aScore > 100) aScore = 100; + if (b.useful && bScore > 100) bScore = 100; // Shorter recipes are better, so we add the length of the recipe to the score aScore += a.recipe.length; @@ -498,7 +498,7 @@ class Magic { * Taken from http://wikistats.wmflabs.org/display.php?t=wp * * @param {string} code - ISO 639 code - * @returns {string} The full name of the languge + * @returns {string} The full name of the language */ static codeToLanguage(code) { return { From 55eae9910f652eb95cc463a70d9123b160b4e2f5 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Tue, 29 Oct 2019 21:39:29 +0000 Subject: [PATCH 0092/1024] Tidied run function, added some tests --- src/core/operations/Lorenz.mjs | 237 ++++++++++++++++-------------- tests/operations/index.mjs | 1 + tests/operations/tests/Lorenz.mjs | 94 ++++++++++++ 3 files changed, 218 insertions(+), 114 deletions(-) create mode 100644 tests/operations/tests/Lorenz.mjs diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 56eada60..7ca58f83 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -254,8 +254,7 @@ class Lorenz extends Operation { x2 = args[15], x3 = args[16], x4 = args[17], - x5 = args[18], - figShifted = false; + x5 = args[18]; this.reverseTable(); @@ -308,68 +307,8 @@ class Lorenz extends Operation { const psiSettings = chosenSetting.S; // Pin settings for Psi links (S) const muSettings = chosenSetting.M; // Pin settings for Motor links (M) - let ita2 = ""; - if (mode === "Send") { - - // Convert input text to ITA2 (including figure/letter shifts) - ita2 = Array.prototype.map.call(input, function(character) { - const letter = character.toUpperCase(); - - if (intype === "Plaintext") { - if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); - - if (!figShifted && figShiftedChars.indexOf(letter) !== -1) { - // in letters mode and next char needs to be figure shifted - figShifted = true; - return "55" + figShiftArr[letter]; - } else if (figShifted) { - // in figures mode and next char needs to be letter shifted - if (letter==="\n") return "34"; - if (letter==="\r") return "4"; - if (figShiftedChars.indexOf(letter) === -1) { - figShifted = false; - return "88" + letter; - } else { - return figShiftArr[letter]; - } - - } else { - if (letter==="\n") return "34"; - if (letter==="\r") return "4"; - return letter; - } - - } else { - - if (validITA2.indexOf(letter) === -1) { - let errltr = letter; - if (errltr==="\n") errltr = "Carriage Return"; - if (errltr===" ") errltr = "Space"; - throw new OperationError("Invalid ITA2 character : "+errltr); - } - return letter; - - } - - }); - - } else { - - // Receive input should always be ITA2 - ita2 = Array.prototype.map.call(input, function(character) { - const letter = character.toUpperCase(); - if (validITA2.indexOf(letter) === -1) { - let errltr = letter; - if (errltr==="\n") errltr = "Carriage Return"; - if (errltr===" ") errltr = "Space"; - throw new OperationError("Invalid ITA2 character : "+errltr); - } - return letter; - }); - - } - - const ita2Input = ita2.join(""); + // Convert input text to ITA2 (including figure/letter shifts) + const ita2Input = this.convertToITA2(input, intype, mode); let thisPsi = []; let thisChi = []; @@ -381,6 +320,7 @@ class Lorenz extends Operation { const letters = Array.prototype.map.call(ita2Input, function(character) { const letter = character.toUpperCase(); + // Store lugs used in limitations, need these later let x2bptr = x2+1; if (x2bptr===32) x2bptr=1; let s1bptr = s1+1; @@ -406,13 +346,18 @@ class Lorenz extends Operation { return ""; } + // The encipher calculation + + // We calculate Bitwise XOR for each of the 5 bits across our input ( K XOR Psi XOR Chi ) const xorSum = []; for (let i=0;i<=4;i++) { xorSum[i] = ITA2_TABLE[letter][i] ^ thisPsi[i] ^ thisChi[i]; } const resultStr = xorSum.join(""); - // Move Chi wheels one back after each letter + // Wheel movement + + // Chi wheels always move one back after each letter if (--x1 < 1) x1 = 41; if (--x2 < 1) x2 = 31; if (--x3 < 1) x3 = 29; @@ -427,6 +372,8 @@ class Lorenz extends Operation { if (--m37 < 1) m37 = 37; } + // Psi wheels only move sometimes, dependent on M37 current setting and limitations + const basicmotor = m37lug; let totalmotor = basicmotor; let lim = 0; @@ -441,7 +388,7 @@ class Lorenz extends Operation { // Limitations here if (model==="SZ42a") { - // Chi 2 one back lim - The active character of chi 2 (2nd Chi wheel) in the previous position + // Chi 2 one back lim - The active character of Chi 2 (2nd Chi wheel) in the previous position lim = chiSettings[2][x2bptr-1]; if (kt) { //p5 back 2 @@ -481,13 +428,13 @@ class Lorenz extends Operation { } } else if (model==="SZ40") { - // SZ40 + // SZ40 - just move based on the M37 motor wheel totalmotor = basicmotor; } else { throw new OperationError("Lorenz model type not recognised"); } - // increment Psi wheels when current totalmotor active + // Move the Psi wheels when current totalmotor active if (totalmotor === 1) { if (--s1 < 1) s1 = 43; if (--s2 < 1) s2 = 47; @@ -501,58 +448,16 @@ class Lorenz extends Operation { let rtnstr = self.REVERSE_ITA2_TABLE[resultStr]; if (format==="5/8/9") { - if (rtnstr==="+") rtnstr="5"; - if (rtnstr==="-") rtnstr="8"; - if (rtnstr===".") rtnstr="9"; + if (rtnstr==="+") rtnstr="5"; // + or 5 used to represent figure shift + if (rtnstr==="-") rtnstr="8"; // - or 8 used to represent letter shift + if (rtnstr===".") rtnstr="9"; // . or 9 used to represent space } return rtnstr; }); const ita2output = letters.join(""); - let output = ""; - if (mode === "Receive") { - - figShifted = false; - - // Convert output ITA2 to plaintext (including figure/letter shifts) - const out = Array.prototype.map.call(ita2output, function(letter) { - - if (outtype === "Plaintext") { - - if (letter === "5" || letter === "+") { - figShifted = true; - return; - } else if (letter === "8" || letter === "-") { - figShifted = false; - return; - } else if (letter === "9") { - return " "; - } else if (letter === "3") { - return "\n"; - } else if (letter === "4") { - return ""; - } - - - if (figShifted) { - return self.REVERSE_FIGSHIFT_TABLE[letter]; - } else { - return letter; - } - - } else { - return letter; - } - - }); - output = out.join(""); - - } else { - output = ita2output; - } - - return output; + return this.convertFromITA2(ita2output, outtype, mode); } @@ -587,6 +492,109 @@ class Lorenz extends Operation { return arr; } + /** + * Convert input plaintext to ITA2 + */ + convertToITA2(input, intype, mode) { + let result = ""; + let figShifted = false; + + for (const character of input) { + const letter = character.toUpperCase(); + + // Convert input text to ITA2 (including figure/letter shifts) + if (intype === "ITA2" || mode === "Receive") { + if (validITA2.indexOf(letter) === -1) { + let errltr = letter; + if (errltr==="\n") errltr = "Carriage Return"; + if (errltr===" ") errltr = "Space"; + throw new OperationError("Invalid ITA2 character : "+errltr); + } + result += letter; + } else { + if (validChars.indexOf(letter) === -1) throw new OperationError("Invalid Plaintext character : "+letter); + + if (!figShifted && figShiftedChars.indexOf(letter) !== -1) { + // in letters mode and next char needs to be figure shifted + figShifted = true; + result += "55" + figShiftArr[letter]; + } else if (figShifted) { + // in figures mode and next char needs to be letter shifted + if (letter==="\n") { + result += "34"; + } else if (letter==="\r") { + result += "4"; + } else if (figShiftedChars.indexOf(letter) === -1) { + figShifted = false; + result += "88" + letter; + } else { + result += figShiftArr[letter]; + } + + } else { + if (letter==="\n") { + result += "34"; + } else if (letter==="\r") { + result += "4"; + } else { + result += letter; + } + } + + } + + } + + return result; + } + + /** + * Convert final result ITA2 to plaintext + */ + convertFromITA2(input, outtype, mode) { + let result = ""; + let figShifted = false; + for (const letter of input) { + if (mode === "Receive") { + + // Convert output ITA2 to plaintext (including figure/letter shifts) + if (outtype === "Plaintext") { + + if (letter === "5" || letter === "+") { + figShifted = true; + } else if (letter === "8" || letter === "-") { + figShifted = false; + } else if (letter === "9") { + result += " "; + } else if (letter === "3") { + result += "\n"; + } else if (letter === "4") { + result += ""; + } else if (letter === "/") { + result += "/"; + } else { + + if (figShifted) { + result += this.REVERSE_FIGSHIFT_TABLE[letter]; + } else { + result += letter; + } + + } + + } else { + result += letter; + } + + } else { + result += letter; + } + } + + return result; + + } + } const ITA2_TABLE = { @@ -651,6 +659,7 @@ const figShiftArr = { "%": "F", "@": "G", "£": "H", + "": "J", "(": "K", ")": "L", ".": "M", diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index d64a7737..8c39a179 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -91,6 +91,7 @@ import "./tests/Protobuf.mjs"; import "./tests/ParseSSHHostKey.mjs"; import "./tests/DefangIP.mjs"; import "./tests/ParseUDP.mjs"; +import "./tests/Lorenz.mjs"; // Cannot test operations that use the File type yet // import "./tests/SplitColourChannels.mjs"; diff --git a/tests/operations/tests/Lorenz.mjs b/tests/operations/tests/Lorenz.mjs new file mode 100644 index 00000000..c93808e6 --- /dev/null +++ b/tests/operations/tests/Lorenz.mjs @@ -0,0 +1,94 @@ +/** + * Lorenz SZ40/42a/42b machine tests. + * @author VirtualColossus + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + // Simple test first - plain text to ITA2 + name: "Lorenz SZ40: no pattern, plain text", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "HELLO9WORLD55N889THIS9IS9A9TEST9MESSAGE55M", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ40", "No Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // KH Pattern + name: "Lorenz SZ40: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/CUJA/3II9W9JWDI5DAFXT4SOIF3999IZD9T", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ40", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // KH Pattern, Random Start + name: "Lorenz SZ40: KH pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "KGZP5ONYCHNNOXS9SN45MIE3SC3DJBZVJUOE5SLVGI", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ40", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // ZMUG Pattern, Random Start + name: "Lorenz SZ40: ZMUG pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "IQVPAANDCA3CHDNO3V/CZQ/BTPZIKW8YAAQXQGLDMV", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ40", "ZMUG Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // Bream Pattern, Random Start + name: "Lorenz SZ40: Bream pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "/89OALRPJEZQGOO84WOEQZ/I9NBRZOQPBTANC8E/GK", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ40", "BREAM Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // KH Pattern, all 1s + name: "Lorenz SZ42a: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // KH Pattern, all 1s + name: "Lorenz SZ42a: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, +]); \ No newline at end of file From ab524fff15aa8cec74986c952f508fd35d7c97da Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Tue, 29 Oct 2019 21:52:18 +0000 Subject: [PATCH 0093/1024] Mixed tabs & spaces --- tests/operations/tests/Lorenz.mjs | 100 +++++++++++++++--------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/tests/operations/tests/Lorenz.mjs b/tests/operations/tests/Lorenz.mjs index c93808e6..6e18ea9f 100644 --- a/tests/operations/tests/Lorenz.mjs +++ b/tests/operations/tests/Lorenz.mjs @@ -7,88 +7,88 @@ import TestRegister from "../../lib/TestRegister.mjs"; TestRegister.addTests([ - { - // Simple test first - plain text to ITA2 - name: "Lorenz SZ40: no pattern, plain text", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "HELLO9WORLD55N889THIS9IS9A9TEST9MESSAGE55M", - recipeConfig: [ + { + // Simple test first - plain text to ITA2 + name: "Lorenz SZ40: no pattern, plain text", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "HELLO9WORLD55N889THIS9IS9A9TEST9MESSAGE55M", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ40", "No Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // KH Pattern - name: "Lorenz SZ40: KH pattern, plain text, all 1s", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "VIC3TS/CUJA/3II9W9JWDI5DAFXT4SOIF3999IZD9T", - recipeConfig: [ + }, + { + // KH Pattern + name: "Lorenz SZ40: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/CUJA/3II9W9JWDI5DAFXT4SOIF3999IZD9T", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ40", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // KH Pattern, Random Start - name: "Lorenz SZ40: KH pattern, plain text, random start", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "KGZP5ONYCHNNOXS9SN45MIE3SC3DJBZVJUOE5SLVGI", - recipeConfig: [ + }, + { + // KH Pattern, Random Start + name: "Lorenz SZ40: KH pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "KGZP5ONYCHNNOXS9SN45MIE3SC3DJBZVJUOE5SLVGI", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ40", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // ZMUG Pattern, Random Start - name: "Lorenz SZ40: ZMUG pattern, plain text, random start", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "IQVPAANDCA3CHDNO3V/CZQ/BTPZIKW8YAAQXQGLDMV", - recipeConfig: [ + }, + { + // ZMUG Pattern, Random Start + name: "Lorenz SZ40: ZMUG pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "IQVPAANDCA3CHDNO3V/CZQ/BTPZIKW8YAAQXQGLDMV", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ40", "ZMUG Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // Bream Pattern, Random Start - name: "Lorenz SZ40: Bream pattern, plain text, random start", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "/89OALRPJEZQGOO84WOEQZ/I9NBRZOQPBTANC8E/GK", - recipeConfig: [ + }, + { + // Bream Pattern, Random Start + name: "Lorenz SZ40: Bream pattern, plain text, random start", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "/89OALRPJEZQGOO84WOEQZ/I9NBRZOQPBTANC8E/GK", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ40", "BREAM Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 20, 40, 3, 9, 27, 36, 4, 1, 9, 14, 21, 8, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // KH Pattern, all 1s - name: "Lorenz SZ42a: KH pattern, plain text, all 1s", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", - recipeConfig: [ + }, + { + // KH Pattern, all 1s + name: "Lorenz SZ42a: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, - { - // KH Pattern, all 1s - name: "Lorenz SZ42a: KH pattern, plain text, all 1s", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", - recipeConfig: [ + }, + { + // KH Pattern, all 1s + name: "Lorenz SZ42a: KH pattern, plain text, all 1s", + input: "HELLO WORLD, THIS IS A TEST MESSAGE.", + expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", + recipeConfig: [ { "op": "Lorenz", "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] - }, -]); \ No newline at end of file + } +]); From 726e117656ef5f153adea486d16d21041fcc06b0 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 29 Oct 2019 23:12:24 +0000 Subject: [PATCH 0094/1024] diff.mjs: Allows showing subtraction Adds "Show Subtraction" button to allow seeing only the difference between two texts. When selected and combined, user can see only the characters or words that were added. If not combined, with either removed or added but selected, then nothing is displayed. --- src/core/operations/Diff.mjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/operations/Diff.mjs b/src/core/operations/Diff.mjs index 7adea178..921369e8 100644 --- a/src/core/operations/Diff.mjs +++ b/src/core/operations/Diff.mjs @@ -47,6 +47,11 @@ class Diff extends Operation { "type": "boolean", "value": true }, + { + "name": "Show subtraction", + "type": "boolean", + "value": true + }, { "name": "Ignore whitespace", "type": "boolean", @@ -67,6 +72,7 @@ class Diff extends Operation { diffBy, showAdded, showRemoved, + showSubtraction, ignoreWhitespace ] = args, samples = input.split(sampleDelim); @@ -116,8 +122,8 @@ class Diff extends Operation { if (showAdded) output += "" + Utils.escapeHtml(diff[i].value) + ""; } else if (diff[i].removed) { if (showRemoved) output += "" + Utils.escapeHtml(diff[i].value) + ""; - } else { - output += Utils.escapeHtml(diff[i].value); + } else if (!showSubtraction) { + output += Utils.escapeHtml(diff[i].value) + ""; } } From 9108b3923b689cf035744d420e56cd1f1af7e87c Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Tue, 29 Oct 2019 23:35:35 +0000 Subject: [PATCH 0095/1024] diff.mjs: Fixes tests and adds default flag * Sets default flag to `false` for `showSubtraction` flag. * Removes extra span for else case that was causing some tests to fail. Moreover, the previous behavior was defined as that. * Adds custom test for the showSubtraction option, both using the `showAdded` and `showRemoved` flags. --- src/core/operations/Diff.mjs | 4 ++-- tests/operations/tests/StrUtils.mjs | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/core/operations/Diff.mjs b/src/core/operations/Diff.mjs index 921369e8..84107245 100644 --- a/src/core/operations/Diff.mjs +++ b/src/core/operations/Diff.mjs @@ -50,7 +50,7 @@ class Diff extends Operation { { "name": "Show subtraction", "type": "boolean", - "value": true + "value": false }, { "name": "Ignore whitespace", @@ -123,7 +123,7 @@ class Diff extends Operation { } else if (diff[i].removed) { if (showRemoved) output += "" + Utils.escapeHtml(diff[i].value) + ""; } else if (!showSubtraction) { - output += Utils.escapeHtml(diff[i].value) + ""; + output += Utils.escapeHtml(diff[i].value); } } diff --git a/tests/operations/tests/StrUtils.mjs b/tests/operations/tests/StrUtils.mjs index 9098d2f1..c78b6b23 100644 --- a/tests/operations/tests/StrUtils.mjs +++ b/tests/operations/tests/StrUtils.mjs @@ -15,7 +15,29 @@ TestRegister.addTests([ recipeConfig: [ { "op": "Diff", - "args": ["\\n\\n", "Character", true, true, false] + "args": ["\\n\\n", "Character", true, true, false, false] + } + ], + }, + { + name: "Diff added with subtraction, basic usage", + input: "testing23\n\ntesting123", + expectedOutput: "1", + recipeConfig: [ + { + "op": "Diff", + "args": ["\\n\\n", "Character", true, true, true, false] + } + ], + }, + { + name: "Diff removed with subtraction, basic usage", + input: "testing123\n\ntesting3", + expectedOutput: "12", + recipeConfig: [ + { + "op": "Diff", + "args": ["\\n\\n", "Character", true, true, true, false] } ], }, From 2d12a167710d019635c001d5328fef8c3d9263cb Mon Sep 17 00:00:00 2001 From: Jarrod Connolly Date: Wed, 30 Oct 2019 22:09:42 -0700 Subject: [PATCH 0096/1024] Add Avro to JSON data format conversion --- package-lock.json | 5 ++ package.json | 1 + src/core/config/Categories.json | 3 +- src/core/operations/AvroToJSON.mjs | 79 +++++++++++++++++++++++++++ tests/operations/index.mjs | 1 + tests/operations/tests/AvroToJSON.mjs | 67 +++++++++++++++++++++++ 6 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 src/core/operations/AvroToJSON.mjs create mode 100644 tests/operations/tests/AvroToJSON.mjs diff --git a/package-lock.json b/package-lock.json index b3c6f415..45f1afd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2149,6 +2149,11 @@ } } }, + "avsc": { + "version": "5.4.16", + "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.4.16.tgz", + "integrity": "sha512-Z85B8ZaEU2PWNPRJYuMSp5Hg7Nw3KPKW47lW/Kus7AcwV7fr6uJG3UckagqIPLydIeO/Cm+yjnJG7g0tliICOg==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", diff --git a/package.json b/package.json index 518fb29b..84ba3bbd 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "@babel/polyfill": "^7.4.4", "@babel/runtime": "^7.5.5", "arrive": "^2.4.1", + "avsc": "^5.4.16", "babel-plugin-transform-builtin-extend": "1.1.2", "bcryptjs": "^2.4.3", "bignumber.js": "^9.0.0", diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index db2ab3a6..19b702d0 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -59,7 +59,8 @@ "From Braille", "Parse TLV", "CSV to JSON", - "JSON to CSV" + "JSON to CSV", + "Avro to JSON" ] }, { diff --git a/src/core/operations/AvroToJSON.mjs b/src/core/operations/AvroToJSON.mjs new file mode 100644 index 00000000..ee2b81a9 --- /dev/null +++ b/src/core/operations/AvroToJSON.mjs @@ -0,0 +1,79 @@ +/** + * @author jarrodconnolly [jarrod@nestedquotes.ca] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import avro from "avsc"; + +/** + * Avro to JSON operation + */ +class AvroToJSON extends Operation { + + /** + * AvroToJSON constructor + */ + constructor() { + super(); + + this.name = "Avro to JSON"; + this.module = "Avro"; + this.description = "Converts Avro encoded data into JSON."; + this.infoURL = "https://avro.apache.org/docs/current/spec.html"; + this.inputType = "ArrayBuffer"; + this.outputType = "JSON"; + this.args = [{ + name: "Force Valid JSON", + type: "boolean", + value: true + }]; + } + + /** + * @param {ArrayBuffer} input + * @param {Object[]} args + * @returns {JSON} + */ + run(input, args) { + const self = this; + if (input.byteLength <= 0) { + throw new OperationError("Please provide an input."); + } + + const forceJSON = args[0]; + + return new Promise((resolve, reject) => { + const result = []; + const inpArray = new Uint8Array(input); + const decoder = new avro.streams.BlockDecoder(); + + decoder + .on("data", function (obj) { + result.push(obj); + }) + .on("error", function () { + reject(new OperationError("Error parsing Avro file.")); + }) + .on("end", function () { + if (forceJSON) { + self.presentType = "JSON"; + self.outputType = "JSON"; + resolve(result.length === 1 ? result[0] : result); + } else { + self.presentType = "string"; + self.outputType = "string"; + const data = result.reduce((result, current) => result + JSON.stringify(current) + "\n", ""); + resolve(data); + } + }); + + decoder.write(inpArray); + decoder.end(); + }); + } +} + +export default AvroToJSON; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index d64a7737..a1503814 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -91,6 +91,7 @@ import "./tests/Protobuf.mjs"; import "./tests/ParseSSHHostKey.mjs"; import "./tests/DefangIP.mjs"; import "./tests/ParseUDP.mjs"; +import "./tests/AvroToJSON"; // Cannot test operations that use the File type yet // import "./tests/SplitColourChannels.mjs"; diff --git a/tests/operations/tests/AvroToJSON.mjs b/tests/operations/tests/AvroToJSON.mjs new file mode 100644 index 00000000..b6e763ad --- /dev/null +++ b/tests/operations/tests/AvroToJSON.mjs @@ -0,0 +1,67 @@ +/** + * + * Avro to JSON tests. + * + * @author jarrodconnolly [jarrod@nestedquotes.ca] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister"; + +TestRegister.addTests([ + { + name: "Avro to JSON: no input (force JSON true)", + input: "", + expectedOutput: "Please provide an input.", + recipeConfig: [ + { + op: "Avro to JSON", + args: [true] + } + ], + }, + { + name: "Avro to JSON: no input (force JSON false)", + input: "", + expectedOutput: "Please provide an input.", + recipeConfig: [ + { + op: "Avro to JSON", + args: [false] + } + ], + }, + { + name: "Avro to JSON: small (force JSON true)", + input: "\x4f\x62\x6a\x01\x04\x16\x61\x76\x72\x6f\x2e\x73\x63\x68\x65\x6d\x61\x96\x01\x7b\x22\x74\x79\x70\x65\x22\x3a\x22\x72\x65" + + "\x63\x6f\x72\x64\x22\x2c\x22\x6e\x61\x6d\x65\x22\x3a\x22\x73\x6d\x61\x6c\x6c\x22\x2c\x22\x66\x69\x65\x6c\x64\x73\x22\x3a" + + "\x5b\x7b\x22\x6e\x61\x6d\x65\x22\x3a\x22\x6e\x61\x6d\x65\x22\x2c\x22\x74\x79\x70\x65\x22\x3a\x22\x73\x74\x72\x69\x6e\x67" + + "\x22\x7d\x5d\x7d\x14\x61\x76\x72\x6f\x2e\x63\x6f\x64\x65\x63\x08\x6e\x75\x6c\x6c\x00\x4e\x02\x47\x63\x2e\x37\x02\xe5\xb7" + + "\x5c\xda\xb9\xa6\x2f\x15\x41\x02\x0e\x0c\x6d\x79\x6e\x61\x6d\x65\x4e\x02\x47\x63\x2e\x37\x02\xe5\xb7\x5c\xda\xb9\xa6\x2f" + + "\x15\x41", + expectedOutput: "{\n \"name\": \"myname\"\n}", + recipeConfig: [ + { + op: "Avro to JSON", + args: [true] + } + ], + }, + { + name: "Avro to JSON: small (force JSON false)", + input: "\x4f\x62\x6a\x01\x04\x16\x61\x76\x72\x6f\x2e\x73\x63\x68\x65\x6d\x61\x96\x01\x7b\x22\x74\x79\x70\x65\x22\x3a\x22\x72\x65" + + "\x63\x6f\x72\x64\x22\x2c\x22\x6e\x61\x6d\x65\x22\x3a\x22\x73\x6d\x61\x6c\x6c\x22\x2c\x22\x66\x69\x65\x6c\x64\x73\x22\x3a" + + "\x5b\x7b\x22\x6e\x61\x6d\x65\x22\x3a\x22\x6e\x61\x6d\x65\x22\x2c\x22\x74\x79\x70\x65\x22\x3a\x22\x73\x74\x72\x69\x6e\x67" + + "\x22\x7d\x5d\x7d\x14\x61\x76\x72\x6f\x2e\x63\x6f\x64\x65\x63\x08\x6e\x75\x6c\x6c\x00\x4e\x02\x47\x63\x2e\x37\x02\xe5\xb7" + + "\x5c\xda\xb9\xa6\x2f\x15\x41\x02\x0e\x0c\x6d\x79\x6e\x61\x6d\x65\x4e\x02\x47\x63\x2e\x37\x02\xe5\xb7\x5c\xda\xb9\xa6\x2f" + + "\x15\x41", + expectedOutput: "{\"name\":\"myname\"}\n", + recipeConfig: [ + { + op: "Avro to JSON", + args: [false] + } + ], + } +]); From c0e02451a1602564e306d2aeabd7d32e248c0574 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Thu, 31 Oct 2019 07:28:33 +0000 Subject: [PATCH 0097/1024] Fixed bug using KT option, added tests --- src/core/operations/Lorenz.mjs | 10 +++++----- tests/operations/tests/Lorenz.mjs | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 7ca58f83..07f5d558 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -381,15 +381,15 @@ class Lorenz extends Operation { p5[2] = p5[1]; p5[1] = p5[0]; if (mode==="Send") { - p5[0] = ITA2_TABLE[letter][4]; + p5[0] = parseInt(ITA2_TABLE[letter][4], 10); } else { - p5[0] = xorSum[4]; + p5[0] = parseInt(xorSum[4], 10); } // Limitations here if (model==="SZ42a") { // Chi 2 one back lim - The active character of Chi 2 (2nd Chi wheel) in the previous position - lim = chiSettings[2][x2bptr-1]; + lim = parseInt(chiSettings[2][x2bptr-1], 10); if (kt) { //p5 back 2 if (lim===p5[2]) { @@ -408,8 +408,8 @@ class Lorenz extends Operation { } else if (model==="SZ42b") { // Chi 2 one back + Psi 1 one back. - const x2b1lug = chiSettings[2][x2bptr-1]; - const s1b1lug = psiSettings[1][s1bptr-1]; + const x2b1lug = parseInt(chiSettings[2][x2bptr-1], 10); + const s1b1lug = parseInt(psiSettings[1][s1bptr-1], 10); lim = 1; if (x2b1lug===s1b1lug) lim=0; if (kt) { diff --git a/tests/operations/tests/Lorenz.mjs b/tests/operations/tests/Lorenz.mjs index 6e18ea9f..52705f69 100644 --- a/tests/operations/tests/Lorenz.mjs +++ b/tests/operations/tests/Lorenz.mjs @@ -90,5 +90,30 @@ TestRegister.addTests([ "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] } ] + }, + { + // KH Pattern, Full Test on real message + name: "Lorenz SZ42a: Receive, KH pattern, ITA2 output", + input: "J3KF+LXT/.+YTMLE/RFVC-SE///4GYX3Q.Z3GVWKWDVAPURPYL/.UYAI.EOW3ZBVVAQRTO/PACJ.NLVLZYYNTU.IDCPKTEZOSWCOBNWFJ+UAKE+WU-JMWYWLXRM+M/HV+TVTC-FOGN3QZG4J.VLM/KK+OVC/YIWTSZUDTSY+3LCCHZADQ-3VBXKEOCSO/+ZBFN34-F.+4UVFVLIP4KFGRBFIVFFJX/FKFSHJ.VUJVWXE+LFAICDYX3EZD33U+GSOGXPAXHTJSNUQI+PXS3JRG+-U+YZITF/SM4LIDPSYMVJM/BL/YHDGBG/UI+EM.JEMX.YQNUWTLAUCLUSDMZGXCQ3CPPCCYLTJC4KXB--G4VGQ4J.EYTEVSG33DVLVPDGNOGAJOUWGFY4KGO-4+IRKDPGDHGBQLFSS/YDP/FM-/BANLERZEMT.U3XZA43RGYD+-J4VYRTONRYF/OI4Y+I3LXUFAHGRT.RXCO3HKCQIML.VHVIGHBWBTU3RZFN.J.WGNLSGLYBJT+TPM-RHHMXTNDSVUO3W/4ORZ4UY.LA-XZYVLCZROMPM3RYSLUD-SNQQA+RK/UV4K/GOSSMJRGIZYPO+BEEB+OEWAWKYXW.-NKUQERUM-PA4WFNKU-Q-LNC.D-A3C.FB.RFOGZHUWTEAYB3HNHCEW.N33QEEVUEC3OOR4BRNLH/IF3+DJJ3S3J4XA+Z3SMT/K4L-IDLQWCLMQ3TO3PNYVCGZCXUMSSBH.BWMGGTIYSC/UBX/PE+3IZZ.Z/CCWLSL+4/4+IET/ELBCBDAM4ELKDAGB3O.3J+IEQQJ.U.VSAQSAYZAU+3YOZWPPPV/YOVOE/P/E4UOZYK4PE3A.ETZGFBCZE.4WA3PSDR3XMLJLH+S3UWOA.T-RID-MA.CVZGLNYK4U.HBPSA+3U+BLSGS/FNRXMOMEBBABIPOAGDWA-4T/B.L.HDSAJE.HE-4FZW+SDBAYCNBTEODDALCMIG-QNM+-PEFC+ABNQ-MVT3-GHKAN/ENZLPMJRVRB+4NBCRTFDVNLRTPIGIEZGSPUXMW3WJQTOEV+WA-HJZLX-JQID-X++FFGKCTO.3.F+JIISVTXKC+..YM/SOQUIAS-IAGJJPRYLLT.EJBJAMRP+MS-ZRUVLBBE-UNYQGBBHEB+QCHYYHVN.NHKS-YG3BNZKQJBO-FQ.SZB/JRFILGUZUZVCOVGULEKU4/HRBGYIZVLCM3/ONJ-OBIRSCT+IZCB-TTZMDQWQUCIVTGTTYNEOTTORM-FSKS3WJWL/ZXOCOCYGC.BRIRKXK.FLJUSP/-G.WP.MMVHBYREWQZZAN/BKSEYDBGXAUV+NUKUKIKIGS+VO-4EY/GWI+SGJOJCBYGGMY4+/EMGULCSC-Y+CXLIECYC-+-ZXHSPOTFGFDWIFT-4XXDDLMMKT433WH/BX-OILWDJC/FFE-ZYH3C4GI4T/3KUJQ4YNBQWXWB-RM.Q3GG/4Z-AIGW4GYYEBXRJHXQA..-.G/3W/-LVS+4GS-+FRYIOFYGUK-FEYA4J-ZB-MSPAM/WLLJ3GFMJP/GGF-C+O-KQ.K4PWVL+3O.LX4TUD+Y+QOO3GTJT+.MR-4JSRXD-X4SCIDIVLCDEGSOZOGWXQZOZ.3PPQ4ZYXKL+QETCM/3/--CHG4+W.BNHTB+Z-NZCO+QEB+-/FNJ+NSHTO+CW.CM/VHIM-S.3VAFDJ3MEH.G+NQFDCUSK+MCKDLEC-TFWSYBQSWE4UOQOXY-E.ESE4OLJQOBUQZUSLRWV-AVOYX3CKS3ZFUAQAWESYMXQV/4MOXORAVKOIELRXCSRAEU/KEFDQWQ-BWEXGALS/.JLQ/CEKT-4C+TWDNGST-UQ-ERBP.YZ-ZH/Q3ITMN-O3P/JBEVZUOY4CTNY4PKCB3YIW/+BOKDEZE.VCTROQDTAXI3VKGYQVOKSCXPDDAD4DLTELK.GDDLTRPXORSFTDOGB.-NQJHNM/4/JOTIVGOQF+FC.GDX4DMT.UBRVUIBCHGLDBZSFSICVVAF4TN.BMAP-IQR-LBCQ/TTHH", + expectedOutput: "XWOLLE9WI9R99AUCH9BLEIBEN955Z88KR99GWFRL5X89FUES959WPYP9QXT9QIPQ9V9AACQEM9959AA899QEE9959AA8999AN99OB5M89SUEDW/ST5V9AA8GEHEIME9KOMMANDOSACHE5AA89959AA89NUR9ZUR9PERSOENLICHENSINTERRICHTUNG5N889WEITERGABE9VERBOTEN5MA9AA8LAGEBERICHT9VOM99GSEPMM98NN99VOM9959EPMRM9QORT9AA889KATEN9NN9KAT9NN9KARTEN9959Q9C9QSVPP9PPP9A9MA98889ROEM959QM89WESTEN9959C899AOK999L9U9C88889ROEMS59QWM89A5M89K5MCMA989PANZERUNTERSTUEZ9NN9PANZSRUNTERSTUETZTESFEINDANGRIFFE99GEGEN9EIGENE9STUETZPU9NKTFRONT9NAHMEN9O4D9ELSTER5N89SOHL5N89RAU9NN9RAU9N9UND9BAD9BRAMBACH95K9WR8889NN9995KWT88SKM9BFO9HOF5LM89NEUE9STUETZPUNKTFRONT9B99DIESER9ORT5M89UEBRIGE9CORPSFRONT9BEIDERSEITIGE9AUFKLAERUNGSTAETIGKEI5M9DIESER9ORT5M89I/BRIGE9KORPSFRONT9BEIDERSEITIGE9AUFKLAERUNGSTAETIGKEI5MA99A8STELWV5M89ROEM959QEM89A5M8K5MMA989ZUNEHMENDER9FEINDDRUCK9IM9RAUXSN9UND99W99BAERNAU95K9T889NN9959KWT889KM9SW9MARIENBAD5LM889FEINDAFGRIF9F99VON99SO99GEGEN9PAULUSBRUNN5M899LAGE9DORT9UNGEKL4ERT5M89SCHWACHE99EIGENEN9SICHERUNGEN9DURCH9FEIND9AUS99SCHAENWAWDE9UND9WOSANT995K9Y89KM9SO99TACHAU5L89NACH9O99ZURUECKGEWOFNN9TURUEIKGEWORFEN5M89FEIND99MIT9INF9UND9PZ5M89IN9PEISSIGKAU9UND9WLAD9NS9DAHENTEN5M89EIGENE9SICHERANGEN9IN9MOLGAU959A89DRI9UND9WLAD9N993AHENTEN5M89EIGENE9SIC4ERUNGENSIGKAU9UND9WLAD9N99DAHENTEN5M89EUGENE9SICHERUNGEN9IN9MOLGAU959A89DRISSGLOBEN959A89WURKAU5M89IM9A9SNN9IM9RAUM99TAUS99PANZERUNTERSTUETZTE99FEINDANGRIFFE5MA99AA899A5X8O5M8K5M99QC9MA9989UEBER9ISAR9MIT9INF9UND9PZ5M89UEBERBESETZTEJ9FEIND9STIESZ99UEBER9S9NN9UEBER99VILSA9BSCHNITT9VOR9UND9NAHXS9AUNKIRCHEN959A89ALDERSBACH959A89EGGERSDORF995KWP889KM9W9P49SAU5LMA9A88ROEM9959IWM89A5MLK5MCMA989DWP889KM9W9PASSAU5LMASA88ROEM9959IWM89A5MLK5MCMA989DER9ZWISCHEN9PLATTLING9UND9LANDAI9FU9NN3/UF99BREITER9FRONT99UEBER9DIE9ISAR99UEBERB99NNN9UEBER5ESETZTE99FEIND9DRUECKTE9EIGENEN9LINIE5N89TROTZ9HIFTIGEN9WIDERST4F3ES5N89AUN9VISLABSCHNITT9ZUREUCK585M89FEINDPANZER9N9NN9IN9ARTOFJFN9IN9ARNTORF959KQT889KM9SO9LANDAU5B89UND99N9ROTTESDORF599IN9ARNZORZ959KQT889KM9SO9LANDAU5L89UND99N9ROTTESDORF59KI89KM9S9LANDAUGWMA59A89ROEM959QEM8939NN9959A899ROEM9959QK4OLE", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ42a", "KH Pattern", false, "Receive", "Plaintext", "ITA2", "5/8/9", 12, 12, 41, 45, 17, 12, 3, 11, 31, 29, 12, 23, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] + }, + { + // ZMUG Pattern, Full Test, Receive + name: "Lorenz SZ42b: Receive, ZMUG pattern, KT-Schalte, Plaintext output", + input: "YQPLQQX4OJGFOKBXROZVPBVIJOXSMQSMTMHX8VSBBMIHKJTYKR4ANTQRPCJXR3YE8KVLDN8SQN4VCJQUW3BB4HWEXRD4LUJNF99DV5FLQ4IRANWRCLYX//J8YSIWO44LCPTCBKX4TZGBPYHCE/FBJ4DSBFF5YLOVPBSRUDQULTTO9BYLLUCRGTM/VXQCS8XUDLY/5O3TPSYFQ89RQRGG/IEOKULB8MHQQBHIWRW38W5XSPT9YF8WJGN3HMEBY8XKQW/3BC888Q3JC/K8SOXJWONNQCM8Z4UQQQGE8RL3GXZ3YI4O/RBCF5JXJE5W5GJAT9/9XP9V8SFZLKUBUPD4HXABGLB8D3E4YTERP3GGISVNYHOL3BQVJUOFEBZMYHBKFGPWEOGGMFGF/EVGWT584T8BMURIBSIBELCANKT/VXHUHONHFPJ/OBCQGCQPFQSQW3GEFCQKY9Z4/KVIQJPJQ4ZQJZP/PEIHQG4H99B58HD5/XCLRBPXMR8P84CMHO5RYODKY94NINO4OGY8TOF9BD9EPD5U3P9KMJ/WBXX9CO9SHMK5KHQFA9BE35R4OSAPCAXZ9SALUKVPVVYB8MGGK3XSVLKGUT/8JVIF5DSDUQT3ZKZTICJTSGXVZAZ4WWGAMOFWUN94OZR4Y8AVLGZHOV/UHCURM5RQPKDCEMRBWLKYLTTGGE8ZIVP4HJMVW5HWKOHRZ4OIUL5OZJOVHL9AQUZA93F3H9QNS5VZYZXUM8AD3RZC9CQ5B//4J8/B35XVB9MHMYQSVQPFWSXWEDU5NHXBSO/W/NBW3V/KO5VHIZQRZOKIJSV4G9Y/H3FIYLBH5/XA3AYRPUREKAQL5WTXJ4EK3EAYQ8GIDXTBXMUFUGKZHZZZPYAQMQOXZAGKP4SPIEIKVUPVPRVRSXSDRJSS3XM5KOTUVK3O435VB93H4HB8IEXHDGCJ3VHPG48VZKB4GHRNFHDQ8LN4P9TI3VD9//LACSHQJZWK5/WLC5/PHN5JTVWAOXWX59/SIZ4ADMXO5GCMYSPNLR33CFLKGSN/ZYCFAR5I4/ZQRWCVGY9GCAA5GJCW55HXVGAKGZG/V9Q9AGB9WAVKJX9DM/FOCHWZXAVEPMKTSQJYPWCYFTH3WXZRVAFCLHFMFQUGUWDHQQSUF/QSPSY/8PWPU9B8WUXFE5IPYCSYX3FKEGXIY8DCNLOWZTU8N98ZNWL8QDP/JHTU5YNHN8OI8TMBBIUQEOVT4S/N9V//LZCQ5LN3X43LUG/KDVSOXUTKOP5VTI/OUV98ULIJW9EBVUMBYBLOIKJX/XUHHYPB/N3PEVBFJGXGO3H8VTIO9D8IV5FAL5DZDOC88WNITD/CEZOB3IS8W//ZIBFQOMG3HNUXV3YMM5QH8YYPV/EJMUCKSNRTGFHBZJFTX59CMRM/D5GVFWHF8QWPY44IKNLH8A9SMHYUNXGDJBX9PA4CJPRO4RZSPTG4SYBLHMSV/9UJPUJEPHPZWSDKMMMN/WEHOZDXBPWS3DHG9SBWFTB85HOPZYTVZ9KSBGZ8PAIGGIVXU/8YIFQGQDDDVDDV3TL8L5G9C/98CYDUGWWCGQCQLS4Y8BGSSMYLOODGA/YMRWI9LJI8TXT3ZYZ8NR/3RNDYHR9DINKB//HWPJETJ8/RFXSV/SKWEBKOMSJ9W393JH8E/G3UX/5CD35H4BZOU8GYELU4EUYNYP/UUBYQZKLIPFPOPZ8WNJ4WR5QWIZVMQ9BCVZM3MB8BES5APTTVTBSILLUQHY9X/A9FFQWR5DUMNHPUKVZDYB38ZSI3CNCZPG9C/UKYRX5YWXEIBIMCBNRPGGCZKHLNG4T/R5K4LSBZUVNGBCHPI/JUIZ/IMFXEE4KYSEMYBPWBZ/UCANCY4MPXFQB3NRZQOSLBOMD9TP3IY8RQWIEG9HG3CH8AI/GGPGLXNNV4Q/ZOMVCVS4UCQFFEMMWK/RSV8RXQQPSOT8GYAUXOUJQ9VQCHAS4FL3WAMQXARHYNEPYS5TR3/MHCUSPE33NWZ48X3J9HWEJGIKOTLKAJXXAQ5X3YVLGNSSM3XT/9E/PBTN5PHCJLWKICIHER/QQMVGAGCVTKBUL3B3GQUKLKZ38YMOOJ5DTAFZSFZLVO4UZXGNNR4SJ3JFMLKDP3MXSZXX3YVLGXF3O8H5JHBZFTOZ4JDTLQGHLD5XOBLVQI/MQXS4EJAIU/VLYIGGJWNOTTF9AEQSEEGT84GI355YLVTTDGVICR8ACXJFHPTHRG8UXCLIHMW4Z3CUV89YLL3W3HDC5HUUDJ/PUS54PIJ98IXL3SEEOWWPGFN9O9ICPG4K8558ONZOHSW/U4ZRSC4C3UOHHIEARXSCZDZM4IBDBLRI99DEKKIAYPJSOSC59XGUVKSPHV9FRE35A5SII3G3DRQDQKTSC9DNUPBXVD3ORPX9NM3BK3PB5PIWUZKNCL4I4IWVO4FE4GCZBHSZWN3GS88G884DUFDUFE9RJEEKM3AJHNSEANJWQMRP5DUXHEKDWAAQGZYUL3EXY4ALN4NR3SF5CFOTZ9FGNJDFQEZU4TTVORUVS5WIZBQLZQF5HD4TTYIRPAZDNPCIYS93ZY5QQEBTYIYCQ4AJGK83BFOIK9S5GAJCBYLKSDADHOS4/XVSHDYBFSO3FZIHHHWSJ5L4R33KCXOW8T9KFQ4C8UCOCOCKXU8JJ5R9JL88UAJQ4HXWDBQ45JGY/AYGP8PMGWWLFM/9SP5OHR3FQKDIYIAOLKWM8OT8JO4W9ET5LIZMMNJBNN/A999JNG3ALKLKEK/HWZJUC5PLAILQJ8MCOO8T3X98H4ZKFIKYUKDI4ODART/K4JZDHMBY4X/BDKOYRJ/CQKZCFFBY3494/DUFHLVYZL5VG35KFSVC9IXI4S3RB3FXBDCYYKVUUTBTEFNJVRB3H5BU9NGUGJ3FBD9OOXWRTUZ8GHAHKPNL5TTUHNGMARBKFQMKFN4ODB4Y8OKCJPFQNHIGK8WFYOHI/ZW/PMHF4JAFIAYNNPOYJY/AFTDSOPNGP8GK94X3QY4A/THAWWGH3LSRST4/AV8GY4QV53A5MRYF3K3MWK5YJAWLLYWV9U/CZN4WAV3OELTO45G5IEY4P845ZJJAYGTBHXBFE5XJ5C5FFUFXCOUSWTU/LSSQ/VWNP9BSOLUB5PLNWAZF4O8LKGTA9ZAAVRIW8CP3UFS5I5N/MNMVCRD/3AM/XUPGMJAM45AY4VDA5XY4F8ZV4NXZMPZROZ/QFPLOQ/3WSZ8/FXEJEFC9W3UJGOO4RL9FEVQL/DYDAK8JLMVPY9IPYXBX3WIYOLYB5VDUAJBKCINPZZ5843H/8ZIZCVQ4RTVCOTSATJC4ZVBXYROCDXRIPGH5/WS83Y4TAA45YBPNGFFSY3I/O3JIKWMAS9TYTY38JMIEREZWOYWT3ZYRA84IRDX93H3JJQSFL43JOLPPX3UDF59RL3ESVR8J83QKTJLSJAEQOBZ8FCLWIRBXOUXQOKQ/AE885X/VQIUFETMEUC48CJMKQIJQ9ZVPHOJMCIR93GTVYWMIYMPOWFWOL99NRTWQAQ3WKLF//F3VDQDS8HLLDRKESD89OU9PSPIXW5/TX35KZUONYTLQKMGRWTSV3/5/BJZV9MHPL5UZR4ZMJZEXUE8F8E3RVDEDGVQWENRFYBOEKQMBILPWUFXZQB9XGYOSZKS8IRL9VMH5DWE3WHY3FRR83I55XUXHBJ5BMAPOHIGHQIZ/RSSAK83AUEW4Q5DZ9WTDKRMLT9OYH/VZGXUMEOV/4PL3P/SSIHX3UQIVDVQKZWHYQGZO9NLMPRSJV8/G5FTKLJ8FSKRAOZ/FZCRJLBRIBTJPGUDLFGYBXBVMJQQA3MSHFDZE/HRUOUGYZJNNWARNXNYKAWYQQWMES8K4UCFEGHDPYD/NK/U/B84NI54QLJWW/8NTWPOS/ENS355GHATHAFKK4ONFQR/WHNY3IQTTCBWF35XYXLSOXV5AIZBIGDNFDHL5OO4H/3SJBJBPTQ/3WAAO9ZGW9GYP8/JKVZKK/O9VEMBDKIJYMMVCGODXZY3QNUB8EOWKXS3HT9OFV5JJCDC9FE3FUZJOHL4HH4PA9YFA5TI5ZHFPG/RXQ/5ZMGNSTHWZC4ZC9JA8JNHKT/HNE8CLU9QF385/HDJAEEGSKGPFRKDHEPAXDH9M8Q8KQKEGYWDI9ERQGWMDPZYS/WS9PRP3/3MUKLQIKR5V4GYHNQWTB/SZM9VPQSJZLLKIF5WC5EHTILCZ95RMOJZ89LPJMPRNZ4ERL8HXZIL5B9KEBFN4YJ4LNEQOSS5ILTYECXG/MY9MRQWHFM8QFLI8CAG3BUUG53XPH4CE8GUQKZBKLNAGWXORPFZR3V9XTLBBATUTFUPC/ULGGWLFMCSP8KUYIFXTZ8V4HUQLS9MKYMJMLF/94U3PNELHVWRMISI9QYL53O5XDSFP84VOOAYCKJE4HPG3GA8MGGZVMSBMT5KWQ9V88USEMD3T8IYMIYFENMRZURQLNCICODEG/ZW4HNTOKZMC//ZGQL/XBC8STG3RXKMCO9NSVQQ8QDFDZWNIAENP/J898ADWNHCDCIO5XT8PR4BCDDAQEJV4LGLRALWU5YUL5GBDH//4TQJHBP8JWWMVBV89E/VMRUCLXGKABKSXK5KXWF9NIZB/ADKX38LTZIUBBMWIMMNZXO/EKXEGZBQZD8CYXXRVVF3/NIDWVFYU99H5KJ9DE55N59LRTPLL9PAKPPLSRC38SEUGYSUG5GRTV/5WIDY9YBNDIS4QEBELA/4QVPMVWZG3R9HSE/ZXYK8GGHQ5WVDSYI4RZTBYMUL8QLMPB4P43Y9R3PAWWZRFNNIEXPL83DVJWL3YDG/OJ9UN5CS/L3LDTGMVHMFKZE/BD4MVKJTWFXWPR4KJXYUGIZBZZMTH/JM3MIWOV/ETI5NNOUSLUYL89G3X/TPHC3A/CTNT5HM4CX5PQDMKRSLAOFGPNVRFSE/HDZFE8LFIYM5GDMAYBVRCJCHJBDJ9YS9SLJ/LA54C5DPH8LX8Y3VLP4GROV/QIPZQDB5CS4EAKFULGLIB9XSOXKDE4OJVQXYEI8RBV9PLOT8QE5WLSXG8JW8C/5FGKUR9NHIKNLYFJNSIE8WPARBOUAMNDOKRZXNIWKF8EDD/4VIFV/4UIEVIG48/M4OLBDZKOXRO4//8XAOXY8FPVJZ/O4OWL4CIVNGMWACYCYUJJLPDS/D/KYLBBFCVRTQ/DJZ3WVQEZDVYIBOKDHCYGDP4FENMNOCYJVG/RJJVKIU4EZNQRAN9WWSGYSHZWQQWXKD5RLQDSMDW9R34CYUPW/5899KP3BJM/ZGIWMAPGYF/PYLHDXDXWUPMTNAFPZMQOQVBXRI3VL84TYQRVRVPIJTTUJ8EKOQWMRTR3QGYOBSQWWKO/V4I8S/E8XW9A3HYYVSIVFS8LTWURNZ8M5EGBCLFGC3LJLVZE8MEQNTXY3XL8YTQPA4KZCMO8OJ5RDCIELIKSANPLQAVEPE5IWXMA534XDAV9CZTCBEHVVCFAGIXS4F4KVB4K/AM/DCHYW4BTY4A954GJPQ3NAK8STGW4E/FE4L/WZZJGJPLH/MSDCMK/VQ5HLLONBWSKW3LPSPIB3BSZS8ZZVRAQPO5G5MAWGVFKJSYDBXB5KGUWQZ4FBPUQS9LBKWTQCS3RC8MVTQTTS9STDAXAQJHHZSGN/RXLODYJY8EUTA8H3IFIW5FI5UFTOPTOET8F5/MUQTONBCD3OTMS3QSV/UKAIINVWPQFNHYREGBG/XWEQN/HGMG9TRHLIIQIM5WZQDX5QEBCFRJVOO8/KS9NUJRLL8LJ/5/LH4RIJUIY4/MZT4VKPL5ITODTSAULBRRG8H945J84ABZA3JT9MFA/Z3OLMHMGLO8M8DVMAEHQJMEY3JGORHACL4BGQWCE99NIGNAOSMEI9FHIY5BVB3DR4FICF8VSI3Z/HWDAXUW8RIMJQUABTRXWOEDTIFBRFBE33RM/Y4INUYXHI9393YDIEIS9DUN/AMLN99F4LML3XOCSSCSWLK9UTIUVH4TWITVCY5XDV/59GCZHTE588MXX5EWURPG35BV8VIGNZKR5BYYRULFSVMACN3VH5P5U4SQ/KWFJPAMVFVRVPBOPB8IFKYKG5D8/E4LYAVOSNXRGIFOTAVPR/CG3YK8BBAOWO3M5V/OMIWMWVI98H5PVPDF8TZNNU4EVSYYY9YFLZPCGIOQM/IZ4HWGJ5RMT98Z/HMYXWS9JL5KNFHWO3VJXC/5IOKRAURSUTLQZGTOVGFTGZQ5HXSYF495/B9VSQBSKVSSSK49TKERKV9/YV9P/OF8MOHMT3DW4DNVN4H/M3RUDL/NCEY8PUNIJBSLL/ENHJ/QJAANL/IHZYGCR3548RIDAEJOVDE9OYJZWL5CB4VXH4ILMMBKSOZNWBCZEB3KB5VPUC/5MY3RVHB5IEJCNUNKDRLBAJRHPVCNDNMBYGJQRRRHNTZPNB3IFXN3DE8OB8WBN8U8BVY/CY5TALOLPKCQEN5NBRRXZEKLQQGYOCAM8DBXYSK8H9V5H8GBK5KR/V43YXMRAK/XCKCE99KGWIMZZCYOMJCMNFIE/ONFBORYY4DPM8CWLWR/V4F8ZMQEV/RBPXAKTEEYPD8QQ5HLCNUVMW/CC//YHPVRV5I4NQF5EMRHW4CWCJHDTPYUU3895ITSPBX8FIYHO3H/UX8Z8O/JRIGGYWLDYKEOLJJXWA8C/B4/DJIBRO5/JZD4XBGLVGSYSR8TN/U/WEM/3MMUVHGDFSSXXIYXE8Z9P59MDK5PQUQATLPNK9DKTXVYX4VZIBSKKSSQ4KN/FSYKHA8VE4YYHJMGTQWMBQPRDYK/UNNNLNCKH/UJ5CDTQ8ZWTGUV4FMKPJO/FI9S8N5PPZFVVZXPBYQUAOFBS4C5H4Z/DFTEF5K4P/VEZC3X9WJHPIZMSRZSCNUKGFSUQS3CSHSQL8AN3FZGERFOSY9SA4KURA4NWWNCJRINHI5A/H3TSJ9A/ZNLM5QFQICNRSKIKRQNA3A8WNPNLEBDB3QW9/4B5YYIIWDKG5C3/IOZXIDIFUE/NX8YTCMPGQ9YMN3AXXE85C5Y33ICVD3IXFP3AJ9UJYD/G54", + expectedOutput: "IF I SAID BLETCHLEY PARK, ENIGMA AND ALAN TURING, I WOULD THINK MANY OF YOU WOULD KNOW A LITTLE ABOUT THEM, THANKS TO THE WORK OF BOTH BLETCHLEY PARK AND RECENT FILMS SUCH AS THE IMITATION GAME. NOW, WHAT ABOUT IF I SAID COLOSSUS, TOMMY FLOWERS AND BILL TUTTE? I SUSPECT THAT VERY FEW PEOPLE, EVEN IN THE LOCAL AREA AROUND BLETCHLEY PARK AND MILTON KEYNES, WOULD BE FAMILIAR WITH THESE NAMES. COLOSSUS IS, ARGUABLY, THE WORLDS FIRST ELECTRONIC COMPUTER EVER BUILT AND ITS STORY IS EVEN MORE AMAZING THAN ENIGMA, BUT IT HAS RECEIVED SIGNIFICANTLY LESS PUBLIC RECOGNITION. MANY PEOPLE WHO HAVE HEARD OF COLOSSUS BELIEVE THAT IT IS SOMETHING TO DO WITH ENIGMA, BUT THIS IS NOT THE CASE IN FACT, IT WAS BUILT TO CRACK A HARDER AND MORE SECRETIVE DEVICE BUILT BY THE LORENZ COMPANY IN GERMANY. ADOLF HITLER, REALISING THE REQUIREMENT FOR FAST AND SECURE COMMUNICATION BETWEEN HIS HIGH COMMAND AND GENERALS IN THE FIELD, ORDERED A FORMIDABLE CIPHER ATTACHMENT WHICH COULD SEND AND RECEIVE ENCODED MESSAGES AT A MUCH HIGHER RATE THAN ENIGMA. THEY BUILT A MACHINE WHICH, RATHER THAN HAVING THREE OR FOUR WHEELS LIKE ENIGMA, HAD TWELVE WHEELS, EACH OF WHICH COULD HAVE ITS SETTINGS ALTERED TO MAKE DECIPHERING THE COMMUNICATIONS EXTREMELY DIFFICULT, IF NOT (THEY HOPED) IMPOSSIBLE. IN 1940, BLETCHLEY PARK STARTED PICKING UP NEW TRANSMISSIONS, BUT NOBODY KNEW WHAT WAS ENCIPHERING THE CODES. THESE TRANSMISSIONS WERE RECORDED AND MANUALLY TRANSCRIBED ONTO PUNCHED TAPE AND SENT ON TO BLETCHLEY PARK. FINALLY, ON 30TH AUGUST 1941, A BREAKTHROUGH WAS MADE A GERMAN OPERATOR MANUALLY TYPED OUT AND TRANSMITTED A 4000 CHARACTER ENCODED MESSAGE. UNFORTUNATELY FOR HIM, THE RECEIVING END REPLIED SORRY, SEND IT AGAIN. IT WAS STRICTLY FORBIDDEN TO SEND TWO MESSAGES WITH THE SAME SETTINGS, BUT BEING ANNOYED AT HAVING TO TYPE THIS OUT AGAIN, HE DID JUST THAT AND STARTED TYPING AGAIN. TO SAVE TIME THOUGH, HE SHORTENED SOME OF THE WORDS (JUST LIKE WE WOULD TYPE NO RATHER THAN NUMBER) BUT DOING THIS MEANT THAT BLETCHLEY PARK HAD TWO MESSAGES, BOTH SENT WITH THE SAME KEY GENERATED BY THE MACHINE BUT WITH DIFFERENT ORIGINAL TEXTS. BRIGADIER JOHN TILTMAN, A SENIOR CODE BREAKER, WORKED HARD FOR TEN DAYS AND MANAGED TO SUCCESSFULLY SPLIT THESE MESSAGES BACK INTO GERMAN. MORE IMPORTANTLY, HE ALSO WORKED OUT THE ORIGINAL KEY STRING WHICH WAS GENERATED BY THIS NEW UNKNOWN MACHINE. VERY LITTLE PROGRESS WAS MADE TO CRACK THIS CODE, UNTIL THE KEY AND MESSAGES ENDED UP ON THE DESK OF A NEW MATHEMATICIAN BY THE NAME OF BILL TUTTE, WHO HAD JUST RECENTLY JOINED BLETCHLEY PARK. AFTER WEEKS OF PAINSTAKING MANUAL WORK WITH PAPER AND PENCIL, DRAWING OUT GRIDS OF DOTS AND CROSSES, HE FINALLY DISCOVERED A REPEATING PATTERN USING ROWS OF 41. HE CORRECTLY REALISED THIS WAS HOW MANY POSITIONS THE FIRST OF THE ENCODING WHEELS MUST HAVE IN THE UNKNOWN MACHINE. FROM THIS BREAK, WITH THE ASSISTANCE OF OTHER CODEBREAKERS, HE MANAGED TO SUCCESSFULLY RECREATE THE WORKINGS OF THE WHOLE MACHINE. REMEMBER, THIS WAS WITHOUT EVER SEEING THE LORENZ WHICH WAS AN ASTOUNDING PIECE OF WORK. BILL TUTTE, WHOSE CENTENARY WILL BE CELEBRATED IN MAY THIS YEAR, DID FURTHER WORK ON METHODS WHICH COULD POTENTIALLY BREAK INTO AN ENCODED MESSAGE, BUT IT INVOLVED A HUGE AMOUNT OF MANUAL EFFORT TO COUNT RESULTS FROM ALL SETTINGS UNTIL THE CORRECT ONE WAS FOUND. MAX NEWMAN MANAGED THE CONSTRUCTION OF A MACHINE TO USE TUTTES CALCULATIONS, WHICH WAS NICKNAMED HEATH ROBINSON, BUT IT WAS, UNFORTUNATELY, RELATIVELY SLOW AND UNRELIABLE. THEY INVITED, TOMMY FLOWERS, FROM THE POST OFFICE RESEARCH STATION IN DOLLIS HILL TO SEE IF HE COULD IMPROVE THE MACHINE. TOMMY FLOWERS CAME BACK TO THEM WITH A PLAN TO BUILD A NEW MACHINE USING 1500 THERMIONIC VALVES. VALVES AT THIS TIME WERE BELIEVED TO BE UNRELIABLE AND REQUIRE REGULAR REPLACEMENT, BUT TOMMY FLOWERS KNEW FROM HIS RESEARCH THAT IF NOT SWITCHED OFF, THEY WORKED PERFECTLY. WHILE BLETCHLEY PARK INITIALLY REFUSED, FLOWERS RETURNED TO DOLLIS HILL AND PERSUADED HIS SUPERIORS TO CONTINUE TO BUILD THIS MACHINE. IN JANUARY 1944, THE FIRST COLOSSUS WAS DELIVERED TO BLETCHLEY PARK, AND BY FEBRUARY WAS RUNNING SUCCESSFULLY AND RELIABLY FIRST TIME, MUCH TO EVERYONES ASTONISHMENT THEY QUICKLY PLACED ORDERS FOR AS MANY AS POSSIBLE, FLOWERS ALREADY HAVING STARTED WORKING ON A FASTER MARK 2. A FURTHER NINE COLOSSUS COMPUTERS WERE DELIVERED TO BLETCHLEY PARK BY THE END OF THE WAR (APPROXIMATELY ONE PER MONTH) AND THEY HELPED BREAK AN AMAZING 63 MILLION CHARACTERS, SHORTENING THE CONFLICT AND SAVING MANY LIVES. AFTER THE WAR, CHURCHILL ORDERED THE DISMANTLING OF ALL BUT TWO OF THE MACHINES AND THEIR EXISTENCE WAS KEPT SECRET FOR THIRTY YEARS. TONY SALE, AN ELECTRONIC ENGINEER WORKING AS SENIOR CURATOR AT THE SCIENCE MUSEUM, ALONG WITH SEVERAL COLLEAGUES STARTED, IN 1991, THE CAMPAIGN TO SAVE BLETCHLEY PARK FROM PROPERTY DEVELOPERS. HE ALSO BEGAN GATHERING INFORMATION ABOUT COLOSSUS. BY 1993, HE HAD RECOVERED EIGHT PHOTOGRAPHS FROM 1945, PLUS SOME FRAGMENTS OF CIRCUIT DIAGRAMS. HE STARTED TO BELIEVE THAT IT WOULD BE POSSIBLE TO REBUILD COLOSSUS, ALTHOUGH HE SAID THAT NOBODY BELIEVED THAT THIS WOULD BE POSSIBLE JUST LIKE TOMMY FLOWERS BEFORE HIM AFTER MONTHS OF WORK AND WITH HELP FROM THE ORIGINAL DESIGNER OF THE OPTICAL TAPE SYSTEM, DR ARNOLD LYNCH, HE MANAGED TO RE-ENGINEER THE BASIC SYSTEM. HE VISITED DR ALLEN COOMBS, WHO HELPED BUILD THE MK 2 COLOSSUS, ALONG WITH HARRY FENSON, ONE OF THE ORIGINAL COLOSSUS ENGINEERS. DR COOMBS GAVE TONY HIS WARTIME NOTES AND SOME CIRCUIT DIAGRAMS. USING HIS, AND HIS WIFE MARGARETS OWN FUNDS, HE STARTED THE HUGE TASK REBUILDING THE COLOSSUS. HE PUT TOGETHER A TEAM OF EX-POST OFFICE AND RADIO ENGINEERS TO HELP THE REBUILD. ON 6TH JUNE 1996, A BASIC WORKING COLOSSUS REBUILD WAS SWITCHED ON, AN OCCASION WHERE DR TOMMY FLOWERS ATTENDED AS WELL AS MANY PEOPLE WHO WORKED AT BLETCHLEY PARK DURING THE WAR. THE NEWMANRY REPORT WAS DECLASSIFIED IN 2000, ALLOWING THEM TO BUILD A WORKING COLOSSUS MK 2 BY 1ST JUNE 2004, THE 60TH ANNIVERSARY OF THE FIRST RUNNING OF A COLOSSUS MK 2 IN 1944. THE REBUILD CAN BE SEEN IN THE NATIONAL MUSEUM OF COMPUTING IN BLOCK H LOCATED WITHIN BLETCHLEY PARK. IT STANDS IN THE ORIGINAL ROOM WHERE COLOSSUS NO 9 STOOD IN WORLD WAR II. IT IS A MARVELLOUS WORKING TRIBUTE TO TOMMY FLOWERS AND THE ENGINEERS AT DOLLIS HILL, TO BILL TUTTE, JOHN TILTMAN, MAX NEWMAN, RALPH TESTER AND ALL THE CODE BREAKERS AT BLETCHLEY PARK, ALL THE WRNS WHO OPERATED COLOSSUS AND THE RADIO INTERCEPTORS AT KNOCKHOLT. BY MARTIN GILLOW, VIRTUALCOLOSSUS.CO.UK", + recipeConfig: [ + { + "op": "Lorenz", + "args": ["SZ42b", "ZMUG Pattern", true, "Receive", "Plaintext", "Plaintext", "5/8/9", 32, 28, 24, 11, 44, 6, 50, 34, 12, 18, 18, 9, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] + } + ] } + ]); From 0630c094e00e3a15025613d49a6feb5262126eca Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 31 Oct 2019 13:00:22 +0000 Subject: [PATCH 0098/1024] 9.7.20 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3c6f415..83809617 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.19", + "version": "9.7.20", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 518fb29b..37c1d773 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.19", + "version": "9.7.20", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 6a1d11b9b5ab475c36b8a0c7e176e06e24088d7f Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 31 Oct 2019 13:39:06 +0000 Subject: [PATCH 0099/1024] Argument hints are not tooltips instead of bmd-help elements --- src/web/HTMLIngredient.mjs | 53 +++++++++++-------- src/web/stylesheets/components/_operation.css | 4 -- src/web/waiters/RecipeWaiter.mjs | 2 + 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/web/HTMLIngredient.mjs b/src/web/HTMLIngredient.mjs index 03f4e983..fd496f2a 100755 --- a/src/web/HTMLIngredient.mjs +++ b/src/web/HTMLIngredient.mjs @@ -54,7 +54,9 @@ class HTMLIngredient { case "binaryString": case "byteArray": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; break; case "shortString": case "binaryShortString": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; break; case "toggleString": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        @@ -105,7 +108,9 @@ class HTMLIngredient { break; case "number": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; break; case "boolean": html += `
        -
        `; break; case "option": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; eventFn = this.type === "populateMultiOption" ? @@ -191,7 +196,9 @@ class HTMLIngredient { break; case "editableOption": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; break; case "argSelector": html += `
        - + - ${this.hint ? "" + this.hint + "" : ""}
        `; this.manager.addDynamicListener(".arg-selector", "change", this.argSelectorChange, this); diff --git a/src/web/stylesheets/components/_operation.css b/src/web/stylesheets/components/_operation.css index a4255fc3..39f53a07 100755 --- a/src/web/stylesheets/components/_operation.css +++ b/src/web/stylesheets/components/_operation.css @@ -159,10 +159,6 @@ div.toggle-string { width: calc(100% - 13px); } -.operation .bmd-form-group .bmd-help { - margin-top: -17px; -} - .input-group .form-control { border-top-left-radius: 4px !important; } diff --git a/src/web/waiters/RecipeWaiter.mjs b/src/web/waiters/RecipeWaiter.mjs index d198098b..ba0e7b11 100755 --- a/src/web/waiters/RecipeWaiter.mjs +++ b/src/web/waiters/RecipeWaiter.mjs @@ -399,6 +399,8 @@ class RecipeWaiter { this.buildRecipeOperation(item); document.getElementById("rec-list").appendChild(item); + $(item).find("[data-toggle='tooltip']").tooltip(); + item.dispatchEvent(this.manager.operationadd); return item; } From d5cfe9f262ca6bdd5dfc4f689bf8a8ee581e2fba Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Thu, 31 Oct 2019 13:54:52 +0000 Subject: [PATCH 0100/1024] removed duplicate test --- tests/operations/tests/Lorenz.mjs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/operations/tests/Lorenz.mjs b/tests/operations/tests/Lorenz.mjs index 52705f69..22bf82d9 100644 --- a/tests/operations/tests/Lorenz.mjs +++ b/tests/operations/tests/Lorenz.mjs @@ -79,18 +79,6 @@ TestRegister.addTests([ } ] }, - { - // KH Pattern, all 1s - name: "Lorenz SZ42a: KH pattern, plain text, all 1s", - input: "HELLO WORLD, THIS IS A TEST MESSAGE.", - expectedOutput: "VIC3TS/ZOHUYXWLTUXPV9ZNOTW9IXJPFDLIBB5ZD9K", - recipeConfig: [ - { - "op": "Lorenz", - "args": ["SZ42a", "KH Pattern", false, "Send", "Plaintext", "Plaintext", "5/8/9", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ".x...xx.x.x..xxx.x.x.xxxx.x.x.x.x.x..x.xx.x", ".xx.x.xxx..x.x.x..x.xx.x.xxx.x....x.xx.x.x.x..x", ".x.x.x..xxx....x.x.xx.x.x.x..xxx.x.x..x.x.xx..x.x.x", ".xx...xxxxx.x.x.xx...x.xx.x.x..x.x.xx.x..x.x.x.x.x.x.", "xx...xx.x..x.xx.x...x.x.x.x.x.x.x.x.xx..xxxx.x.x...xx.x..x.", "x.x.x.x.x.x...x.x.x...x.x.x...x.x....", ".xxxx.xxxx.xxx.xxxx.xx....xxx.xxxx.xxxx.xxxx.xxxx.xxx.xxxx...", ".x...xxx.x.xxxx.x...x.x..xxx....xx.xxxx..", "x..xxx...x.xxxx..xx..x..xx.xx..", "..xx..x.xxx...xx...xx..xx.xx.", "xx..x..xxxx..xx.xxx....x..", "xx..xx....xxxx.x..x.x.."] - } - ] - }, { // KH Pattern, Full Test on real message name: "Lorenz SZ42a: Receive, KH pattern, ITA2 output", From daad633195fc7f9494f8dacb665f8b7a5dbcecf1 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 31 Oct 2019 14:17:07 +0000 Subject: [PATCH 0101/1024] Tidied up Avro to JSON operation --- src/core/operations/AvroToJSON.mjs | 27 +++++++++++-------------- src/core/operations/BSONDeserialise.mjs | 2 +- src/core/operations/BSONSerialise.mjs | 2 +- tests/operations/index.mjs | 2 +- tests/operations/tests/AvroToJSON.mjs | 1 - 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/core/operations/AvroToJSON.mjs b/src/core/operations/AvroToJSON.mjs index ee2b81a9..497a3872 100644 --- a/src/core/operations/AvroToJSON.mjs +++ b/src/core/operations/AvroToJSON.mjs @@ -20,25 +20,26 @@ class AvroToJSON extends Operation { super(); this.name = "Avro to JSON"; - this.module = "Avro"; + this.module = "Serialise"; this.description = "Converts Avro encoded data into JSON."; - this.infoURL = "https://avro.apache.org/docs/current/spec.html"; + this.infoURL = "https://wikipedia.org/wiki/Apache_Avro"; this.inputType = "ArrayBuffer"; - this.outputType = "JSON"; - this.args = [{ - name: "Force Valid JSON", - type: "boolean", - value: true - }]; + this.outputType = "string"; + this.args = [ + { + name: "Force Valid JSON", + type: "boolean", + value: true + } + ]; } /** * @param {ArrayBuffer} input * @param {Object[]} args - * @returns {JSON} + * @returns {string} */ run(input, args) { - const self = this; if (input.byteLength <= 0) { throw new OperationError("Please provide an input."); } @@ -59,12 +60,8 @@ class AvroToJSON extends Operation { }) .on("end", function () { if (forceJSON) { - self.presentType = "JSON"; - self.outputType = "JSON"; - resolve(result.length === 1 ? result[0] : result); + resolve(result.length === 1 ? JSON.stringify(result[0], null, 4) : JSON.stringify(result, null, 4)); } else { - self.presentType = "string"; - self.outputType = "string"; const data = result.reduce((result, current) => result + JSON.stringify(current) + "\n", ""); resolve(data); } diff --git a/src/core/operations/BSONDeserialise.mjs b/src/core/operations/BSONDeserialise.mjs index a21eaadd..cb46b357 100644 --- a/src/core/operations/BSONDeserialise.mjs +++ b/src/core/operations/BSONDeserialise.mjs @@ -20,7 +20,7 @@ class BSONDeserialise extends Operation { super(); this.name = "BSON deserialise"; - this.module = "BSON"; + this.module = "Serialise"; this.description = "BSON is a computer data interchange format used mainly as a data storage and network transfer format in the MongoDB database. It is a binary form for representing simple data structures, associative arrays (called objects or documents in MongoDB), and various data types of specific interest to MongoDB. The name 'BSON' is based on the term JSON and stands for 'Binary JSON'.

        Input data should be in a raw bytes format."; this.infoURL = "https://wikipedia.org/wiki/BSON"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/BSONSerialise.mjs b/src/core/operations/BSONSerialise.mjs index 6d33c6be..25eed876 100644 --- a/src/core/operations/BSONSerialise.mjs +++ b/src/core/operations/BSONSerialise.mjs @@ -20,7 +20,7 @@ class BSONSerialise extends Operation { super(); this.name = "BSON serialise"; - this.module = "BSON"; + this.module = "Serialise"; this.description = "BSON is a computer data interchange format used mainly as a data storage and network transfer format in the MongoDB database. It is a binary form for representing simple data structures, associative arrays (called objects or documents in MongoDB), and various data types of specific interest to MongoDB. The name 'BSON' is based on the term JSON and stands for 'Binary JSON'.

        Input data should be valid JSON."; this.infoURL = "https://wikipedia.org/wiki/BSON"; this.inputType = "string"; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index a1503814..71c4432c 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -91,7 +91,7 @@ import "./tests/Protobuf.mjs"; import "./tests/ParseSSHHostKey.mjs"; import "./tests/DefangIP.mjs"; import "./tests/ParseUDP.mjs"; -import "./tests/AvroToJSON"; +import "./tests/AvroToJSON.mjs"; // Cannot test operations that use the File type yet // import "./tests/SplitColourChannels.mjs"; diff --git a/tests/operations/tests/AvroToJSON.mjs b/tests/operations/tests/AvroToJSON.mjs index b6e763ad..045abddb 100644 --- a/tests/operations/tests/AvroToJSON.mjs +++ b/tests/operations/tests/AvroToJSON.mjs @@ -1,5 +1,4 @@ /** - * * Avro to JSON tests. * * @author jarrodconnolly [jarrod@nestedquotes.ca] From 35103bf155594db8f172e0ae891a6c0c5ea13c87 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 31 Oct 2019 14:20:55 +0000 Subject: [PATCH 0102/1024] Updated CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eaec243..1204742f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master). +### [9.8.0] - 2019-10-31 +- 'Avro to JSON' operation added [@jarrodconnolly] | [#865] + ### [9.7.0] - 2019-09-13 - 'Optical Character Recognition' operation added [@MShwed] [@n1474335] | [#632] @@ -185,6 +188,7 @@ All major and minor version changes will be documented in this file. Details of +[9.8.0]: https://github.com/gchq/CyberChef/releases/tag/v9.8.0 [9.7.0]: https://github.com/gchq/CyberChef/releases/tag/v9.7.0 [9.6.0]: https://github.com/gchq/CyberChef/releases/tag/v9.6.0 [9.5.0]: https://github.com/gchq/CyberChef/releases/tag/v9.5.0 @@ -262,6 +266,7 @@ All major and minor version changes will be documented in this file. Details of [@Ge0rg3]: https://github.com/Ge0rg3 [@MShwed]: https://github.com/MShwed [@kassi]: https://github.com/kassi +[@jarrodconnolly]: https://github.com/jarrodconnolly [#95]: https://github.com/gchq/CyberChef/pull/299 [#173]: https://github.com/gchq/CyberChef/pull/173 @@ -322,3 +327,4 @@ All major and minor version changes will be documented in this file. Details of [#625]: https://github.com/gchq/CyberChef/pull/625 [#627]: https://github.com/gchq/CyberChef/pull/627 [#632]: https://github.com/gchq/CyberChef/pull/632 +[#865]: https://github.com/gchq/CyberChef/pull/865 From 734962ac22c020d02deefdb5cb2466f6991b4f52 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 31 Oct 2019 14:21:03 +0000 Subject: [PATCH 0103/1024] 9.8.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 44bfc81c..dd1d3d79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.20", + "version": "9.8.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 56661a87..2419ae87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.7.20", + "version": "9.8.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 462f619f43e58e880a48a75159158714faa4f604 Mon Sep 17 00:00:00 2001 From: Jarrod Connolly Date: Thu, 31 Oct 2019 23:18:54 -0700 Subject: [PATCH 0104/1024] Update JavaScript Minify operation to support ES6. --- package-lock.json | 135 ++--------------------- package.json | 2 +- src/core/operations/JavaScriptMinify.mjs | 26 ++--- 3 files changed, 17 insertions(+), 146 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd1d3d79..6566326a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1807,7 +1807,8 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true }, "ansi-colors": { "version": "3.2.4", @@ -2809,8 +2810,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-indexof": { "version": "1.1.1", @@ -4923,21 +4923,6 @@ } } }, - "escope": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escope/-/escope-1.0.3.tgz", - "integrity": "sha1-dZ3OhJbEJI/sLQyq9BCLzz8af10=", - "requires": { - "estraverse": "^2.0.0" - }, - "dependencies": { - "estraverse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-2.0.0.tgz", - "integrity": "sha1-WuRpYyQ2ACBmdMyySgnhZnT83KE=" - } - } - }, "eslint": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", @@ -5110,89 +5095,6 @@ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, - "esmangle": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esmangle/-/esmangle-1.0.1.tgz", - "integrity": "sha1-2bs3uPjq+/Tm1O1reqKVarvTxMI=", - "requires": { - "escodegen": "~1.3.2", - "escope": "~1.0.1", - "esprima": "~1.1.1", - "esshorten": "~1.1.0", - "estraverse": "~1.5.0", - "esutils": "~ 1.0.0", - "optionator": "~0.3.0", - "source-map": "~0.1.33" - }, - "dependencies": { - "escodegen": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", - "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", - "requires": { - "esprima": "~1.1.1", - "estraverse": "~1.5.0", - "esutils": "~1.0.0", - "source-map": "~0.1.33" - } - }, - "esprima": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", - "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=" - }, - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=" - }, - "esutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", - "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=" - }, - "fast-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", - "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=" - }, - "levn": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", - "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", - "requires": { - "prelude-ls": "~1.1.0", - "type-check": "~0.3.1" - } - }, - "optionator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.3.0.tgz", - "integrity": "sha1-lxWotfXnWGz/BsgkngOc1zZNP1Q=", - "requires": { - "deep-is": "~0.1.2", - "fast-levenshtein": "~1.0.0", - "levn": "~0.2.4", - "prelude-ls": "~1.1.0", - "type-check": "~0.3.1", - "wordwrap": "~0.0.2" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "requires": { - "amdefine": ">=0.0.4" - } - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, "espree": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", @@ -5235,23 +5137,6 @@ "estraverse": "^4.1.0" } }, - "esshorten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/esshorten/-/esshorten-1.1.1.tgz", - "integrity": "sha1-F0+Wt8wmfkaHLYFOfbfCkL3/Yak=", - "requires": { - "escope": "~1.0.1", - "estraverse": "~4.1.1", - "esutils": "~2.0.2" - }, - "dependencies": { - "estraverse": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=" - } - } - }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -12156,10 +12041,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12809,10 +12693,9 @@ } }, "terser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz", - "integrity": "sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A==", - "dev": true, + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", diff --git a/package.json b/package.json index 2419ae87..58ef7415 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,6 @@ "es6-promisify": "^6.0.2", "escodegen": "^1.12.0", "esm": "^3.2.25", - "esmangle": "^1.0.1", "esprima": "^4.0.1", "exif-parser": "^0.1.12", "file-saver": "^2.0.2", @@ -144,6 +143,7 @@ "sortablejs": "^1.9.0", "split.js": "^1.5.11", "ssdeep.js": "0.0.2", + "terser": "^4.3.9", "tesseract.js": "^2.0.0-alpha.15", "ua-parser-js": "^0.7.20", "utf8": "^3.0.0", diff --git a/src/core/operations/JavaScriptMinify.mjs b/src/core/operations/JavaScriptMinify.mjs index b75aa857..b395cf34 100644 --- a/src/core/operations/JavaScriptMinify.mjs +++ b/src/core/operations/JavaScriptMinify.mjs @@ -4,10 +4,9 @@ * @license Apache-2.0 */ +import OperationError from "../errors/OperationError.mjs"; import Operation from "../Operation.mjs"; -import * as esprima from "esprima"; -import escodegen from "escodegen"; -import esmangle from "esmangle"; +import Terser from "terser"; /** * JavaScript Minify operation @@ -34,22 +33,11 @@ class JavaScriptMinify extends Operation { * @returns {string} */ run(input, args) { - let result = ""; - const AST = esprima.parseScript(input), - optimisedAST = esmangle.optimize(AST, null), - mangledAST = esmangle.mangle(optimisedAST); - - result = escodegen.generate(mangledAST, { - format: { - renumber: true, - hexadecimal: true, - escapeless: true, - compact: true, - semicolons: false, - parentheses: false - } - }); - return result; + const result = Terser.minify(input); + if (result.error) { + throw new OperationError(`Error minifying JavaScript. (${result.error})`); + } + return result.code; } } From e1378860d6eb220bd7caa282c625f97bbd10d533 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 1 Nov 2019 14:56:18 +0000 Subject: [PATCH 0105/1024] Added support for 109 more character encodings --- package-lock.json | 21 + package.json | 1 + src/core/lib/ChrEnc.mjs | 132 +- src/core/operations/CitrixCTX1Decode.mjs | 2 +- src/core/operations/CitrixCTX1Encode.mjs | 2 +- src/core/operations/DecodeText.mjs | 2 +- src/core/operations/EncodeText.mjs | 2 +- .../operations/TextEncodingBruteForce.mjs | 2 +- src/core/vendor/js-codepage/cptable.js | 1982 ----------------- src/core/vendor/js-codepage/cputils.js | 515 ----- tests/node/tests/operations.mjs | 4 +- tests/operations/tests/CharEnc.mjs | 2 +- 12 files changed, 150 insertions(+), 2517 deletions(-) delete mode 100644 src/core/vendor/js-codepage/cptable.js delete mode 100644 src/core/vendor/js-codepage/cputils.js diff --git a/package-lock.json b/package-lock.json index dd1d3d79..c5e5a605 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3251,6 +3251,22 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "codepage": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", + "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", + "requires": { + "commander": "~2.14.1", + "exit-on-epipe": "~1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" + } + } + }, "coffeescript": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", @@ -5331,6 +5347,11 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", diff --git a/package.json b/package.json index 2419ae87..97526169 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "bootstrap-material-design": "^4.1.2", "bson": "^4.0.2", "chi-squared": "^1.1.0", + "codepage": "^1.14.0", "core-js": "^3.2.1", "crypto-api": "^0.8.5", "crypto-js": "^3.1.9-1", diff --git a/src/core/lib/ChrEnc.mjs b/src/core/lib/ChrEnc.mjs index 02b2e9a2..a472706b 100644 --- a/src/core/lib/ChrEnc.mjs +++ b/src/core/lib/ChrEnc.mjs @@ -12,16 +12,65 @@ export const IO_FORMAT = { "UTF-8 (65001)": 65001, "UTF-7 (65000)": 65000, - "UTF16LE (1200)": 1200, - "UTF16BE (1201)": 1201, - "UTF16 (1201)": 1201, + "UTF-16LE (1200)": 1200, + "UTF-16BE (1201)": 1201, + "UTF-32LE (12000)": 12000, + "UTF-32BE (12001)": 12001, "IBM EBCDIC International (500)": 500, "IBM EBCDIC US-Canada (37)": 37, + "IBM EBCDIC Multilingual/ROECE (Latin 2) (870)": 870, + "IBM EBCDIC Greek Modern (875)": 875, + "IBM EBCDIC French (1010)": 1010, + "IBM EBCDIC Turkish (Latin 5) (1026)": 1026, + "IBM EBCDIC Latin 1/Open System (1047)": 1047, + "IBM EBCDIC Lao (1132/1133/1341)": 1132, + "IBM EBCDIC US-Canada (037 + Euro symbol) (1140)": 1140, + "IBM EBCDIC Germany (20273 + Euro symbol) (1141)": 1141, + "IBM EBCDIC Denmark-Norway (20277 + Euro symbol) (1142)": 1142, + "IBM EBCDIC Finland-Sweden (20278 + Euro symbol) (1143)": 1143, + "IBM EBCDIC Italy (20280 + Euro symbol) (1144)": 1144, + "IBM EBCDIC Latin America-Spain (20284 + Euro symbol) (1145)": 1145, + "IBM EBCDIC United Kingdom (20285 + Euro symbol) (1146)": 1146, + "IBM EBCDIC France (20297 + Euro symbol) (1147)": 1147, + "IBM EBCDIC International (500 + Euro symbol) (1148)": 1148, + "IBM EBCDIC Icelandic (20871 + Euro symbol) (1149)": 1149, + "IBM EBCDIC Germany (20273)": 20273, + "IBM EBCDIC Denmark-Norway (20277)": 20277, + "IBM EBCDIC Finland-Sweden (20278)": 20278, + "IBM EBCDIC Italy (20280)": 20280, + "IBM EBCDIC Latin America-Spain (20284)": 20284, + "IBM EBCDIC United Kingdom (20285)": 20285, + "IBM EBCDIC Japanese Katakana Extended (20290)": 20290, + "IBM EBCDIC France (20297)": 20297, + "IBM EBCDIC Arabic (20420)": 20420, + "IBM EBCDIC Greek (20423)": 20423, + "IBM EBCDIC Hebrew (20424)": 20424, + "IBM EBCDIC Korean Extended (20833)": 20833, + "IBM EBCDIC Thai (20838)": 20838, + "IBM EBCDIC Icelandic (20871)": 20871, + "IBM EBCDIC Cyrillic Russian (20880)": 20880, + "IBM EBCDIC Turkish (20905)": 20905, + "IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) (20924)": 20924, + "IBM EBCDIC Cyrillic Serbian-Bulgarian (21025)": 21025, + "OEM United States (437)": 437, + "OEM Greek (formerly 437G); Greek (DOS) (737)": 737, + "OEM Baltic; Baltic (DOS) (775)": 775, + "OEM Russian; Cyrillic + Euro symbol (808)": 808, + "OEM Multilingual Latin 1; Western European (DOS) (850)": 850, + "OEM Latin 2; Central European (DOS) (852)": 852, + "OEM Cyrillic (primarily Russian) (855)": 855, + "OEM Turkish; Turkish (DOS) (857)": 857, + "OEM Multilingual Latin 1 + Euro symbol (858)": 858, + "OEM Portuguese; Portuguese (DOS) (860)": 860, + "OEM Icelandic; Icelandic (DOS) (861)": 861, + "OEM Hebrew; Hebrew (DOS) (862)": 862, + "OEM French Canadian; French Canadian (DOS) (863)": 863, + "OEM Arabic; Arabic (864) (864)": 864, + "OEM Nordic; Nordic (DOS) (865)": 865, + "OEM Russian; Cyrillic (DOS) (866)": 866, + "OEM Modern Greek; Greek, Modern (DOS) (869)": 869, + "OEM Cyrillic (primarily Russian) + Euro Symbol (872)": 872, "Windows-874 Thai (874)": 874, - "Japanese Shift-JIS (932)": 932, - "Simplified Chinese GBK (936)": 936, - "Korean (949)": 949, - "Traditional Chinese Big5 (950)": 950, "Windows-1250 Central European (1250)": 1250, "Windows-1251 Cyrillic (1251)": 1251, "Windows-1252 Latin (1252)": 1252, @@ -31,10 +80,6 @@ export const IO_FORMAT = { "Windows-1256 Arabic (1256)": 1256, "Windows-1257 Baltic (1257)": 1257, "Windows-1258 Vietnam (1258)": 1258, - "US-ASCII (20127)": 20127, - "Simplified Chinese GB2312 (20936)": 20936, - "KOI8-R Russian Cyrillic (20866)": 20866, - "KOI8-U Ukrainian Cyrillic (21866)": 21866, "ISO-8859-1 Latin 1 Western European (28591)": 28591, "ISO-8859-2 Latin 2 Central European (28592)": 28592, "ISO-8859-3 Latin 3 South European (28593)": 28593, @@ -43,6 +88,7 @@ export const IO_FORMAT = { "ISO-8859-6 Latin/Arabic (28596)": 28596, "ISO-8859-7 Latin/Greek (28597)": 28597, "ISO-8859-8 Latin/Hebrew (28598)": 28598, + "ISO 8859-8 Hebrew (ISO-Logical) (38598)": 38598, "ISO-8859-9 Latin 5 Turkish (28599)": 28599, "ISO-8859-10 Latin 6 Nordic (28600)": 28600, "ISO-8859-11 Latin/Thai (28601)": 28601, @@ -50,9 +96,71 @@ export const IO_FORMAT = { "ISO-8859-14 Latin 8 Celtic (28604)": 28604, "ISO-8859-15 Latin 9 (28605)": 28605, "ISO-8859-16 Latin 10 (28606)": 28606, - "ISO-2022 JIS Japanese (50222)": 50222, + "ISO 2022 JIS Japanese with no halfwidth Katakana (50220)": 50220, + "ISO 2022 JIS Japanese with halfwidth Katakana (50221)": 50221, + "ISO 2022 Japanese JIS X 0201-1989 (1 byte Kana-SO/SI) (50222)": 50222, + "ISO 2022 Korean (50225)": 50225, + "ISO 2022 Simplified Chinese (50227)": 50227, + "ISO 6937 Non-Spacing Accent (20269)": 20269, "EUC Japanese (51932)": 51932, + "EUC Simplified Chinese (51936)": 51936, "EUC Korean (51949)": 51949, + "ISCII Devanagari (57002)": 57002, + "ISCII Bengali (57003)": 57003, + "ISCII Tamil (57004)": 57004, + "ISCII Telugu (57005)": 57005, + "ISCII Assamese (57006)": 57006, + "ISCII Oriya (57007)": 57007, + "ISCII Kannada (57008)": 57008, + "ISCII Malayalam (57009)": 57009, + "ISCII Gujarati (57010)": 57010, + "ISCII Punjabi (57011)": 57011, + "Japanese Shift-JIS (932)": 932, + "Simplified Chinese GBK (936)": 936, + "Korean (949)": 949, + "Traditional Chinese Big5 (950)": 950, + "US-ASCII (7-bit) (20127)": 20127, + "Simplified Chinese GB2312 (20936)": 20936, + "KOI8-R Russian Cyrillic (20866)": 20866, + "KOI8-U Ukrainian Cyrillic (21866)": 21866, + "Mazovia (Polish) MS-DOS (620)": 620, + "Arabic (ASMO 708) (708)": 708, + "Arabic (Transparent ASMO); Arabic (DOS) (720)": 720, + "Kamenický (Czech) MS-DOS (895)": 895, + "Korean (Johab) (1361)": 1361, + "MAC Roman (10000)": 10000, + "Japanese (Mac) (10001)": 10001, + "MAC Traditional Chinese (Big5) (10002)": 10002, + "Korean (Mac) (10003)": 10003, + "Arabic (Mac) (10004)": 10004, + "Hebrew (Mac) (10005)": 10005, + "Greek (Mac) (10006)": 10006, + "Cyrillic (Mac) (10007)": 10007, + "MAC Simplified Chinese (GB 2312) (10008)": 10008, + "Romanian (Mac) (10010)": 10010, + "Ukrainian (Mac) (10017)": 10017, + "Thai (Mac) (10021)": 10021, + "MAC Latin 2 (Central European) (10029)": 10029, + "Icelandic (Mac) (10079)": 10079, + "Turkish (Mac) (10081)": 10081, + "Croatian (Mac) (10082)": 10082, + "CNS Taiwan (Chinese Traditional) (20000)": 20000, + "TCA Taiwan (20001)": 20001, + "ETEN Taiwan (Chinese Traditional) (20002)": 20002, + "IBM5550 Taiwan (20003)": 20003, + "TeleText Taiwan (20004)": 20004, + "Wang Taiwan (20005)": 20005, + "Western European IA5 (IRV International Alphabet 5) (20105)": 20105, + "IA5 German (7-bit) (20106)": 20106, + "IA5 Swedish (7-bit) (20107)": 20107, + "IA5 Norwegian (7-bit) (20108)": 20108, + "T.61 (20261)": 20261, + "Japanese (JIS 0208-1990 and 0212-1990) (20932)": 20932, + "Korean Wansung (20949)": 20949, + "Extended/Ext Alpha Lowercase (21027)": 21027, + "Europa 3 (29001)": 29001, + "Atari ST/TT (47451)": 47451, + "HZ-GB2312 Simplified Chinese (52936)": 52936, "Simplified Chinese GB18030 (54936)": 54936, }; diff --git a/src/core/operations/CitrixCTX1Decode.mjs b/src/core/operations/CitrixCTX1Decode.mjs index 33de4a36..f002c8a2 100644 --- a/src/core/operations/CitrixCTX1Decode.mjs +++ b/src/core/operations/CitrixCTX1Decode.mjs @@ -6,7 +6,7 @@ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; -import cptable from "../vendor/js-codepage/cptable.js"; +import cptable from "codepage"; /** * Citrix CTX1 Decode operation diff --git a/src/core/operations/CitrixCTX1Encode.mjs b/src/core/operations/CitrixCTX1Encode.mjs index 3c6e8c45..3c0dfcdd 100644 --- a/src/core/operations/CitrixCTX1Encode.mjs +++ b/src/core/operations/CitrixCTX1Encode.mjs @@ -5,7 +5,7 @@ */ import Operation from "../Operation.mjs"; -import cptable from "../vendor/js-codepage/cptable.js"; +import cptable from "codepage"; /** * Citrix CTX1 Encode operation diff --git a/src/core/operations/DecodeText.mjs b/src/core/operations/DecodeText.mjs index 489e40d3..9b01b79f 100644 --- a/src/core/operations/DecodeText.mjs +++ b/src/core/operations/DecodeText.mjs @@ -5,7 +5,7 @@ */ import Operation from "../Operation.mjs"; -import cptable from "../vendor/js-codepage/cptable.js"; +import cptable from "codepage"; import {IO_FORMAT} from "../lib/ChrEnc.mjs"; /** diff --git a/src/core/operations/EncodeText.mjs b/src/core/operations/EncodeText.mjs index 8dd4d503..8fc61fce 100644 --- a/src/core/operations/EncodeText.mjs +++ b/src/core/operations/EncodeText.mjs @@ -5,7 +5,7 @@ */ import Operation from "../Operation.mjs"; -import cptable from "../vendor/js-codepage/cptable.js"; +import cptable from "codepage"; import {IO_FORMAT} from "../lib/ChrEnc.mjs"; /** diff --git a/src/core/operations/TextEncodingBruteForce.mjs b/src/core/operations/TextEncodingBruteForce.mjs index e7e56b66..18eb071e 100644 --- a/src/core/operations/TextEncodingBruteForce.mjs +++ b/src/core/operations/TextEncodingBruteForce.mjs @@ -7,7 +7,7 @@ import Operation from "../Operation.mjs"; import Utils from "../Utils.mjs"; -import cptable from "../vendor/js-codepage/cptable.js"; +import cptable from "codepage"; import {IO_FORMAT} from "../lib/ChrEnc.mjs"; /** diff --git a/src/core/vendor/js-codepage/cptable.js b/src/core/vendor/js-codepage/cptable.js deleted file mode 100644 index 94032f82..00000000 --- a/src/core/vendor/js-codepage/cptable.js +++ /dev/null @@ -1,1982 +0,0 @@ -/* cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */ -/*jshint -W100 */ -var cptable = {version:"1.8.0"}; -cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[932] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); -for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} -D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); -for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} -D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); -for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} -D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); -for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} -D[135] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} -D[136] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); -for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} -D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); -for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} -D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); -for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} -D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); -for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} -D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); -for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} -D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); -for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} -D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); -for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} -D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); -for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} -D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); -for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} -D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); -for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} -D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); -for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} -D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); -for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} -D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); -for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} -D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); -for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} -D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); -for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} -D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); -for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} -D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); -for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} -D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); -for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} -D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); -for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} -D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); -for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} -D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); -for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} -D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); -for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} -D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); -for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} -D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); -for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} -D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[237] = "����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[250] = "����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -return {"enc": e, "dec": d }; })(); -cptable[936] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); -for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} -D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); -for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} -D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); -for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} -D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); -for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} -D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); -for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} -D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); -for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} -D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); -for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} -D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); -for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} -D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); -for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} -D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); -for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} -D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); -for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} -D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); -for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} -D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); -for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} -D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); -for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} -D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); -for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} -D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); -for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} -D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); -for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} -D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); -for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} -D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); -for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} -D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); -for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} -D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); -for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} -D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); -for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} -D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); -for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} -D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); -for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} -D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); -for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} -D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); -for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} -D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); -for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} -D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); -for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} -D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); -for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} -D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); -for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} -D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); -for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} -D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); -for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} -D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} -D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} -D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} -D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} -D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} -return {"enc": e, "dec": d }; })(); -cptable[949] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[129] = "�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�".split(""); -for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} -D[130] = "�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�".split(""); -for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} -D[131] = "�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�".split(""); -for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} -D[132] = "�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�".split(""); -for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} -D[133] = "�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�".split(""); -for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} -D[134] = "�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�".split(""); -for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} -D[135] = "�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�".split(""); -for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} -D[136] = "�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�".split(""); -for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} -D[137] = "�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�".split(""); -for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} -D[138] = "�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�".split(""); -for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} -D[139] = "�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�".split(""); -for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} -D[140] = "�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�".split(""); -for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} -D[141] = "�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�".split(""); -for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} -D[142] = "�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�".split(""); -for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} -D[143] = "�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�".split(""); -for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} -D[144] = "�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�".split(""); -for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} -D[145] = "�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�".split(""); -for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} -D[146] = "�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�".split(""); -for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} -D[147] = "�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�".split(""); -for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} -D[148] = "�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�".split(""); -for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} -D[149] = "�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�".split(""); -for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} -D[150] = "�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�".split(""); -for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} -D[151] = "�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�".split(""); -for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} -D[152] = "�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�".split(""); -for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} -D[153] = "�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�".split(""); -for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} -D[154] = "�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�".split(""); -for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} -D[155] = "�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�".split(""); -for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} -D[156] = "�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�".split(""); -for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} -D[157] = "�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�".split(""); -for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} -D[158] = "�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�".split(""); -for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} -D[159] = "�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�".split(""); -for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} -D[160] = "�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�".split(""); -for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} -D[161] = "�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆÐªĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[173] = "�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[174] = "�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} -D[175] = "�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} -D[176] = "�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); -for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} -D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); -for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} -return {"enc": e, "dec": d }; })(); -cptable[950] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); -for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} -D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); -for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} -D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); -for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} -D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -return {"enc": e, "dec": d }; })(); -cptable[1250] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1251] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1252] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1253] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1254] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1255] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1256] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1257] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[1258] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28591] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28592] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28593] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28594] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28595] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28596] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28597] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28598] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28599] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28600] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28601] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28603] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28604] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28605] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[28606] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[20866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[20936] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -return {"enc": e, "dec": d }; })(); -cptable[21866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); -cptable[50222] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u0000\u0000\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[1] = "��������������\u0001\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];} -D[2] = "��������������\u0002\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];} -D[3] = "��������������\u0003\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];} -D[4] = "��������������\u0004\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];} -D[5] = "��������������\u0005\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];} -D[6] = "��������������\u0006\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];} -D[7] = "��������������\u0007\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];} -D[8] = "��������������\b\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];} -D[9] = "��������������\t\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];} -D[10] = "��������������\n\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];} -D[11] = "��������������\u000b\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];} -D[12] = "��������������\f\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];} -D[13] = "��������������\r\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];} -D[14] = "��������������\r\r�����������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); -for(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];} -D[15] = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\r\r\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); -for(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];} -D[16] = "��������������\u0010\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];} -D[17] = "��������������\u0011\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];} -D[18] = "��������������\u0012\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];} -D[19] = "��������������\u0013\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];} -D[20] = "��������������\u0014\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];} -D[21] = "��������������\u0015\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];} -D[22] = "��������������\u0016\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];} -D[23] = "��������������\u0017\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];} -D[24] = "��������������\u0018\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];} -D[25] = "��������������\u0019\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];} -D[26] = "��������������\u001a\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];} -D[27] = "��������������\u001b\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];} -D[28] = "��������������\u001c\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];} -D[29] = "��������������\u001d\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];} -D[30] = "��������������\u001e\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];} -D[31] = "��������������\u001f\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];} -D[32] = "�������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];} -D[33] = "��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];} -D[34] = "��������������\"\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];} -D[35] = "��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];} -D[36] = "��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];} -D[37] = "��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];} -D[38] = "��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];} -D[39] = "��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];} -D[40] = "��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];} -D[41] = "��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];} -D[42] = "��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];} -D[43] = "��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];} -D[44] = "��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];} -D[45] = "��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];} -D[46] = "��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];} -D[47] = "��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];} -D[48] = "��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];} -D[49] = "��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];} -D[50] = "��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];} -D[51] = "��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];} -D[52] = "��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];} -D[53] = "��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];} -D[54] = "��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];} -D[55] = "��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];} -D[56] = "��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];} -D[57] = "��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];} -D[58] = "��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];} -D[59] = "��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];} -D[60] = "��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];} -D[61] = "��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];} -D[62] = "��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];} -D[63] = "��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];} -D[64] = "��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];} -D[65] = "��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];} -D[66] = "��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];} -D[67] = "��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];} -D[68] = "��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];} -D[69] = "��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];} -D[70] = "��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];} -D[71] = "��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];} -D[72] = "��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];} -D[73] = "��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];} -D[74] = "��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];} -D[75] = "��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];} -D[76] = "��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];} -D[77] = "��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];} -D[78] = "��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];} -D[79] = "��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];} -D[80] = "��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];} -D[81] = "��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];} -D[82] = "��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];} -D[83] = "��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];} -D[84] = "��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];} -D[85] = "��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];} -D[86] = "��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];} -D[87] = "��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];} -D[88] = "��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];} -D[89] = "��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];} -D[90] = "��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];} -D[91] = "��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];} -D[92] = "��������������\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];} -D[93] = "��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];} -D[94] = "��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];} -D[95] = "��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];} -D[96] = "��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];} -D[97] = "��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];} -D[98] = "��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];} -D[99] = "��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];} -D[100] = "��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];} -D[101] = "��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];} -D[102] = "��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];} -D[103] = "��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];} -D[104] = "��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];} -D[105] = "��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];} -D[106] = "��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];} -D[107] = "��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];} -D[108] = "��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];} -D[109] = "��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];} -D[110] = "��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];} -D[111] = "��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];} -D[112] = "��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];} -D[113] = "��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];} -D[114] = "��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];} -D[115] = "��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];} -D[116] = "��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];} -D[117] = "��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];} -D[118] = "��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];} -D[119] = "��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];} -D[120] = "��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];} -D[121] = "��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];} -D[122] = "��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];} -D[123] = "��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];} -D[124] = "��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];} -D[125] = "��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];} -D[126] = "��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} -D[127] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];} -D[128] = "��������������€€������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];} -D[160] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} -D[161] = "��������������。。������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "��������������「「������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "��������������」」������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "��������������、、������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "��������������・・������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "��������������ヲヲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "��������������ァァ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "��������������ィィ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "��������������ゥゥ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "��������������ェェ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "��������������ォォ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "��������������ャャ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[173] = "��������������ュュ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[174] = "��������������ョョ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} -D[175] = "��������������ッッ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} -D[176] = "��������������ーー������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "��������������アア������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "��������������イイ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "��������������ウウ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "��������������エエ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "��������������オオ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "��������������カカ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "��������������キキ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "��������������クク������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "��������������ケケ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "��������������ココ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "��������������ササ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "��������������シシ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "��������������スス������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "��������������セセ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "��������������ソソ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "��������������タタ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "��������������チチ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "��������������ツツ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "��������������テテ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "��������������トト������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "��������������ナナ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "��������������ニニ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "��������������ヌヌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "��������������ネネ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[201] = "��������������ノノ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "��������������ハハ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "��������������ヒヒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "��������������フフ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "��������������ヘヘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "��������������ホホ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "��������������ママ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "��������������ミミ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "��������������ムム������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "��������������メメ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "��������������モモ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "��������������ヤヤ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "��������������ユユ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "��������������ヨヨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "��������������ララ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "��������������リリ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "��������������ルル������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "��������������レレ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "��������������ロロ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "��������������ワワ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "��������������ンン������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "��������������゙゙������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "��������������゚゚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[253] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} -D[254] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} -D[255] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];} -return {"enc": e, "dec": d }; })(); -cptable[51932] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[142] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); -for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} -D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯�".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������abcdefghijklmnopqrstuvwxyz�����".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[173] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德�".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱�".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚�".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�¦'"�".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -return {"enc": e, "dec": d }; })(); -cptable[51949] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÐªĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); -for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} -D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); -for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} -return {"enc": e, "dec": d }; })(); -cptable[54936] = (function(){ var d = [], e = {}, D = [], j; -D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); -for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} -D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); -for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} -D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); -for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} -D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); -for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} -D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); -for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} -D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); -for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} -D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); -for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} -D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); -for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} -D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); -for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} -D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); -for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} -D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); -for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} -D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); -for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} -D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); -for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} -D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); -for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} -D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); -for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} -D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); -for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} -D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); -for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} -D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); -for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} -D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); -for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} -D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); -for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} -D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); -for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} -D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); -for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} -D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); -for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} -D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); -for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} -D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); -for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} -D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); -for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} -D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); -for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} -D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); -for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} -D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); -for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} -D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); -for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} -D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); -for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} -D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); -for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} -D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); -for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} -D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); -for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} -D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); -for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} -D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); -for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} -D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); -for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} -D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); -for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} -D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); -for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} -D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); -for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} -D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); -for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} -D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); -for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} -D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); -for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} -D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); -for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} -D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); -for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} -D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); -for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} -D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); -for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} -D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); -for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} -D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); -for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} -D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); -for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} -D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); -for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} -D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); -for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} -D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); -for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} -D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); -for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} -D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); -for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} -D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); -for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} -D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); -for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} -D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); -for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} -D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); -for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} -D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); -for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} -D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); -for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} -D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); -for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} -D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); -for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} -D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); -for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} -D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); -for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} -D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); -for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} -D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); -for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} -D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); -for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} -D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); -for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} -D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); -for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} -D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); -for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} -D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); -for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} -D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); -for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} -D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); -for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} -D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); -for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} -D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); -for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} -D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); -for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} -D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); -for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} -D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); -for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} -D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); -for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} -D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); -for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} -D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); -for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} -D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); -for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} -D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); -for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} -D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); -for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} -D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); -for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} -D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); -for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} -D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); -for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} -D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); -for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} -D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); -for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} -D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); -for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} -D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); -for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} -D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); -for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} -D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); -for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} -D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); -for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} -D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); -for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} -D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); -for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} -D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); -for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} -D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); -for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} -D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); -for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} -D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); -for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} -D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); -for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} -D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); -for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} -D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); -for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} -D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); -for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} -D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); -for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} -D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); -for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} -D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); -for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} -D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); -for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} -D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); -for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} -D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); -for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} -D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); -for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} -D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); -for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} -D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); -for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} -D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); -for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} -D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); -for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} -D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); -for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} -D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); -for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} -D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); -for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} -D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); -for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} -D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); -for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} -D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); -for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} -D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); -for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} -D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); -for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} -D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); -for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} -D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); -for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} -D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌�䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓䴔䴕䴖䴗䴘䴙䶮�".split(""); -for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} -return {"enc": e, "dec": d }; })(); -if (typeof module !== 'undefined' && module.exports) module.exports = cptable; -require("./cputils.js"); \ No newline at end of file diff --git a/src/core/vendor/js-codepage/cputils.js b/src/core/vendor/js-codepage/cputils.js deleted file mode 100644 index e0ffb7cc..00000000 --- a/src/core/vendor/js-codepage/cputils.js +++ /dev/null @@ -1,515 +0,0 @@ -/* cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */ -/* vim: set ft=javascript: */ -/*jshint newcap: false */ -(function(root, factory) { - "use strict"; - if(typeof cptable === "undefined") { - if(typeof require !== "undefined"){ - var cpt = require('./cptable'); - if (typeof module !== 'undefined' && module.exports) module.exports = factory(cpt); - else root.cptable = factory(cpt); - } else throw new Error("cptable not found"); - } else cptable = factory(cptable); -}(this, function(cpt){ - "use strict"; - var magic = { - "1200":"utf16le", - "1201":"utf16be", - "12000":"utf32le", - "12001":"utf32be", - "16969":"utf64le", - "20127":"ascii", - "65000":"utf7", - "65001":"utf8" - }; - - var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000]; - var dbcs_cache = [932,936,949,950]; - var magic_cache = [65001]; - var magic_decode = {}; - var magic_encode = {}; - var cpdcache = {}; - var cpecache = {}; - - var sfcc = function sfcc(x) { return String.fromCharCode(x); }; - var cca = function cca(x) { return x.charCodeAt(0); }; - - var has_buf = (typeof Buffer !== 'undefined'); - if(has_buf) { - var mdl = 1024, mdb = new Buffer(mdl); - var make_EE = function make_EE(E){ - var EE = new Buffer(65536); - for(var i = 0; i < 65536;++i) EE[i] = 0; - var keys = Object.keys(E), len = keys.length; - for(var ee = 0, e = keys[ee]; ee < len; ++ee) { - if(!(e = keys[ee])) continue; - EE[e.charCodeAt(0)] = E[e]; - } - return EE; - }; - var sbcs_encode = function make_sbcs_encode(cp) { - var EE = make_EE(cpt[cp].enc); - return function sbcs_e(data, ofmt) { - var len = data.length; - var out, i=0, j=0, D=0, w=0; - if(typeof data === 'string') { - out = new Buffer(len); - for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)]; - } else if(Buffer.isBuffer(data)) { - out = new Buffer(2*len); - j = 0; - for(i = 0; i < len; ++i) { - D = data[i]; - if(D < 128) out[j++] = EE[D]; - else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; } - else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; } - else { - w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; - if(w < 65536) out[j++] = EE[w]; - else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; } - } - } - out = out.slice(0,j); - } else { - out = new Buffer(len); - for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)]; - } - if(!ofmt || ofmt === 'buf') return out; - if(ofmt !== 'arr') return out.toString('binary'); - return [].slice.call(out); - }; - }; - var sbcs_decode = function make_sbcs_decode(cp) { - var D = cpt[cp].dec; - var DD = new Buffer(131072), d=0, c=""; - for(d=0;d>8; - } - return function sbcs_d(data) { - var len = data.length, i=0, j=0; - if(2 * len > mdl) { mdl = 2 * len; mdb = new Buffer(mdl); } - if(Buffer.isBuffer(data)) { - for(i = 0; i < len; i++) { - j = 2*data[i]; - mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; - } - } else if(typeof data === "string") { - for(i = 0; i < len; i++) { - j = 2*data.charCodeAt(i); - mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; - } - } else { - for(i = 0; i < len; i++) { - j = 2*data[i]; - mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; - } - } - return mdb.slice(0, 2 * len).toString('ucs2'); - }; - }; - var dbcs_encode = function make_dbcs_encode(cp) { - var E = cpt[cp].enc; - var EE = new Buffer(131072); - for(var i = 0; i < 131072; ++i) EE[i] = 0; - var keys = Object.keys(E); - for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) { - if(!(e = keys[ee])) continue; - var f = e.charCodeAt(0); - EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8; - } - return function dbcs_e(data, ofmt) { - var len = data.length, out = new Buffer(2*len), i=0, j=0, jj=0, k=0, D=0; - if(typeof data === 'string') { - for(i = k = 0; i < len; ++i) { - j = data.charCodeAt(i)*2; - out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; - } - out = out.slice(0,k); - } else if(Buffer.isBuffer(data)) { - for(i = k = 0; i < len; ++i) { - D = data[i]; - if(D < 128) j = D; - else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; } - else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; } - else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; } - if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; } - else { jj = j-65536; - j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; - j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; - } - } - out = out.slice(0,k); - } else { - for(i = k = 0; i < len; i++) { - j = data[i].charCodeAt(0)*2; - out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; - } - } - if(!ofmt || ofmt === 'buf') return out; - if(ofmt !== 'arr') return out.toString('binary'); - return [].slice.call(out); - }; - }; - var dbcs_decode = function make_dbcs_decode(cp) { - var D = cpt[cp].dec; - var DD = new Buffer(131072), d=0, c, w=0, j=0, i=0; - for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;} - for(d = 0; d < D.length; ++d) { - if(!(c=D[d])) continue; - w = c.charCodeAt(0); - j = 2*d; - DD[j] = w&255; DD[j+1] = w>>8; - } - return function dbcs_d(data) { - var len = data.length, out = new Buffer(2*len), i=0, j=0, k=0; - if(Buffer.isBuffer(data)) { - for(i = 0; i < len; i++) { - j = 2*data[i]; - if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } - out[k++] = DD[j]; out[k++] = DD[j+1]; - } - } else if(typeof data === "string") { - for(i = 0; i < len; i++) { - j = 2*data.charCodeAt(i); - if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; } - out[k++] = DD[j]; out[k++] = DD[j+1]; - } - } else { - for(i = 0; i < len; i++) { - j = 2*data[i]; - if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } - out[k++] = DD[j]; out[k++] = DD[j+1]; - } - } - return out.slice(0,k).toString('ucs2'); - }; - }; - magic_decode[65001] = function utf8_d(data) { - if(typeof data === "string") return utf8_d(data.split("").map(cca)); - var len = data.length, w = 0, ww = 0; - if(4 * len > mdl) { mdl = 4 * len; mdb = new Buffer(mdl); } - var i = 0; - if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; - for(var j = 1, k = 0, D = 0; i < len; i+=j) { - j = 1; D = data[i]; - if(D < 128) w = D; - else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; } - else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } - else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } - if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; } - else { - w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); - mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255; - } - } - return mdb.slice(0,k).toString('ucs2'); - }; - magic_encode[65001] = function utf8_e(data, ofmt) { - if(has_buf && Buffer.isBuffer(data)) { - if(!ofmt || ofmt === 'buf') return data; - if(ofmt !== 'arr') return data.toString('binary'); - return [].slice.call(data); - } - var len = data.length, w = 0, ww = 0, j = 0; - var direct = typeof data === "string"; - if(4 * len > mdl) { mdl = 4 * len; mdb = new Buffer(mdl); } - for(var i = 0; i < len; ++i) { - w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0); - if(w <= 0x007F) mdb[j++] = w; - else if(w <= 0x07FF) { - mdb[j++] = 192 + (w >> 6); - mdb[j++] = 128 + (w&63); - } else if(w >= 0xD800 && w <= 0xDFFF) { - w -= 0xD800; ++i; - ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10); - mdb[j++] = 240 + ((ww>>>18) & 0x07); - mdb[j++] = 144 + ((ww>>>12) & 0x3F); - mdb[j++] = 128 + ((ww>>>6) & 0x3F); - mdb[j++] = 128 + (ww & 0x3F); - } else { - mdb[j++] = 224 + (w >> 12); - mdb[j++] = 128 + ((w >> 6)&63); - mdb[j++] = 128 + (w&63); - } - } - if(!ofmt || ofmt === 'buf') return mdb.slice(0,j); - if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary'); - return [].slice.call(mdb, 0, j); - }; - } - - var encache = function encache() { - if(has_buf) { - if(cpdcache[sbcs_cache[0]]) return; - var i=0, s=0; - for(i = 0; i < sbcs_cache.length; ++i) { - s = sbcs_cache[i]; - if(cpt[s]) { - cpdcache[s] = sbcs_decode(s); - cpecache[s] = sbcs_encode(s); - } - } - for(i = 0; i < dbcs_cache.length; ++i) { - s = dbcs_cache[i]; - if(cpt[s]) { - cpdcache[s] = dbcs_decode(s); - cpecache[s] = dbcs_encode(s); - } - } - for(i = 0; i < magic_cache.length; ++i) { - s = magic_cache[i]; - if(magic_decode[s]) cpdcache[s] = magic_decode[s]; - if(magic_encode[s]) cpecache[s] = magic_encode[s]; - } - } - }; - var null_enc = function(data, ofmt) { return ""; }; - var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; }; - var decache = function decache() { - if(has_buf) { - if(!cpdcache[sbcs_cache[0]]) return; - sbcs_cache.forEach(cp_decache); - dbcs_cache.forEach(cp_decache); - magic_cache.forEach(cp_decache); - } - last_enc = null_enc; last_cp = 0; - }; - var cache = { - encache: encache, - decache: decache, - sbcs: sbcs_cache, - dbcs: dbcs_cache - }; - - encache(); - - var BM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var SetD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?"; - var last_enc = null_enc, last_cp = 0; - var encode = function encode(cp, data, ofmt) { - if(cp === last_cp && last_enc) { return last_enc(data, ofmt); } - if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); } - if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8'); - var len = data.length; - var out = has_buf ? new Buffer(4*len) : [], w=0, i=0, j = 0, ww=0; - var C = cpt[cp], E, M = ""; - var isstr = typeof data === 'string'; - if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) { - w = E[isstr? data.charAt(i) : data[i]]; - if(w > 255) { - out[j] = w>>8; - out[++j] = w&255; - } else out[j] = w&255; - } - else if((M=magic[cp])) switch(M) { - case "utf8": - if(has_buf && isstr) { out = new Buffer(data, M); j = out.length; break; } - for(i = 0; i < len; ++i, ++j) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - if(w <= 0x007F) out[j] = w; - else if(w <= 0x07FF) { - out[j] = 192 + (w >> 6); - out[++j] = 128 + (w&63); - } else if(w >= 0xD800 && w <= 0xDFFF) { - w -= 0xD800; - ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10); - out[j] = 240 + ((ww>>>18) & 0x07); - out[++j] = 144 + ((ww>>>12) & 0x3F); - out[++j] = 128 + ((ww>>>6) & 0x3F); - out[++j] = 128 + (ww & 0x3F); - } else { - out[j] = 224 + (w >> 12); - out[++j] = 128 + ((w >> 6)&63); - out[++j] = 128 + (w&63); - } - } - break; - case "ascii": - if(has_buf && typeof data === "string") { out = new Buffer(data, M); j = out.length; break; } - for(i = 0; i < len; ++i, ++j) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - if(w <= 0x007F) out[j] = w; - else throw new Error("bad ascii " + w); - } - break; - case "utf16le": - if(has_buf && typeof data === "string") { out = new Buffer(data, M); j = out.length; break; } - for(i = 0; i < len; ++i) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - out[j++] = w&255; - out[j++] = w>>8; - } - break; - case "utf16be": - for(i = 0; i < len; ++i) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - out[j++] = w>>8; - out[j++] = w&255; - } - break; - case "utf32le": - for(i = 0; i < len; ++i) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); - out[j++] = w&255; w >>= 8; - out[j++] = w&255; w >>= 8; - out[j++] = w&255; w >>= 8; - out[j++] = w&255; - } - break; - case "utf32be": - for(i = 0; i < len; ++i) { - w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); - if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); - out[j+3] = w&255; w >>= 8; - out[j+2] = w&255; w >>= 8; - out[j+1] = w&255; w >>= 8; - out[j] = w&255; - j+=4; - } - break; - case "utf7": - for(i = 0; i < len; i++) { - var c = isstr ? data.charAt(i) : data[i].charAt(0); - if(c === "+") { out[j++] = 0x2b; out[j++] = 0x2d; continue; } - if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; } - var tt = encode(1201, c); - out[j++] = 0x2b; - out[j++] = BM.charCodeAt(tt[0]>>2); - out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4)); - out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6)); - out[j++] = 0x2d; - } - break; - default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); - } - else throw new Error("Unrecognized CP: " + cp); - out = out.slice(0,j); - if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join("") : out; - if(!ofmt || ofmt === 'buf') return out; - if(ofmt !== 'arr') return out.toString('binary'); - return [].slice.call(out); - }; - var decode = function decode(cp, data) { - var F; if((F=cpdcache[cp])) return F(data); - if(typeof data === "string") return decode(cp, data.split("").map(cca)); - var len = data.length, out = new Array(len), s="", w=0, i=0, j=1, k=0, ww=0; - var C = cpt[cp], D, M=""; - if(C && (D=C.dec)) { - for(i = 0; i < len; i+=j) { - j = 2; - s = D[(data[i]<<8)+ data[i+1]]; - if(!s) { - j = 1; - s = D[data[i]]; - } - if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]); - out[k++] = s; - } - } - else if((M=magic[cp])) switch(M) { - case "utf8": - if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; - for(; i < len; i+=j) { - j = 1; - if(data[i] < 128) w = data[i]; - else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; } - else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } - else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } - if(w < 65536) { out[k++] = String.fromCharCode(w); } - else { - w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); - out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w); - } - } - break; - case "ascii": - if(has_buf && Buffer.isBuffer(data)) return data.toString(M); - for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]); - k = len; break; - case "utf16le": - if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2; - if(has_buf && Buffer.isBuffer(data)) return data.toString(M); - j = 2; - for(; i+1 < len; i+=j) { - out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]); - } - break; - case "utf16be": - if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2; - j = 2; - for(; i+1 < len; i+=j) { - out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]); - } - break; - case "utf32le": - if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4; - j = 4; - for(; i < len; i+=j) { - w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]); - if(w > 0xFFFF) { - w -= 0x10000; - out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); - out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); - } - else out[k++] = String.fromCharCode(w); - } - break; - case "utf32be": - if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4; - j = 4; - for(; i < len; i+=j) { - w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]); - if(w > 0xFFFF) { - w -= 0x10000; - out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); - out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); - } - else out[k++] = String.fromCharCode(w); - } - break; - case "utf7": - if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) { - if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5; - else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4; - } - for(; i < len; i+=j) { - if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; } - j=1; - if(data[i+1] === 0x2d) { j = 2; out[k++] = "+"; continue; } - while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\/]/)) j++; - var dash = 0; - if(data[i+j] === 0x2d) { ++j; dash=1; } - var tt = []; - var o64 = ""; - var c1=0, c2=0, c3=0; - var e1=0, e2=0, e3=0, e4=0; - for(var l = 1; l < j - dash;) { - e1 = BM.indexOf(String.fromCharCode(data[i+l++])); - e2 = BM.indexOf(String.fromCharCode(data[i+l++])); - c1 = e1 << 2 | e2 >> 4; - tt.push(c1); - e3 = BM.indexOf(String.fromCharCode(data[i+l++])); - if(e3 === -1) break; - c2 = (e2 & 15) << 4 | e3 >> 2; - tt.push(c2); - e4 = BM.indexOf(String.fromCharCode(data[i+l++])); - if(e4 === -1) break; - c3 = (e3 & 3) << 6 | e4; - if(e4 < 64) tt.push(c3); - } - o64 = decode(1201, tt); - for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l); - } - break; - default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); - } - else throw new Error("Unrecognized CP: " + cp); - return out.slice(0,k).join(""); - }; - var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); }; - cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache }; - return cpt; -})); diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index f20708f0..02971c81 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -353,10 +353,10 @@ color: white; it("Decode text", () => { const encoded = chef.encodeText("Ugly Duckling", { - encoding: "UTF16LE (1200)", + encoding: "UTF-16LE (1200)", }); const result = chef.decodeText(encoded, { - encoding: "UTF16LE (1200)", + encoding: "UTF-16LE (1200)", }); assert.strictEqual(result.toString(), "Ugly Duckling"); }), diff --git a/tests/operations/tests/CharEnc.mjs b/tests/operations/tests/CharEnc.mjs index 1bd18d76..eecfaab6 100644 --- a/tests/operations/tests/CharEnc.mjs +++ b/tests/operations/tests/CharEnc.mjs @@ -79,7 +79,7 @@ TestRegister.addTests([ }, { "op": "Decode text", - "args": ["UTF16LE (1200)"] + "args": ["UTF-16LE (1200)"] }, { "op": "Encode text", From 980c1e868118b33da6f89cab8f79f3767540f17e Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 1 Nov 2019 14:57:41 +0000 Subject: [PATCH 0106/1024] Updated CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1204742f..ee629699 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master). +### [9.9.0] - 2019-11-01 +- Added support for 109 more character encodings [@n1474335] + ### [9.8.0] - 2019-10-31 - 'Avro to JSON' operation added [@jarrodconnolly] | [#865] @@ -188,6 +191,7 @@ All major and minor version changes will be documented in this file. Details of +[9.9.0]: https://github.com/gchq/CyberChef/releases/tag/v9.9.0 [9.8.0]: https://github.com/gchq/CyberChef/releases/tag/v9.8.0 [9.7.0]: https://github.com/gchq/CyberChef/releases/tag/v9.7.0 [9.6.0]: https://github.com/gchq/CyberChef/releases/tag/v9.6.0 From 7244d4d343e5fafe3409fe535efee7658418c384 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 1 Nov 2019 14:57:46 +0000 Subject: [PATCH 0107/1024] 9.9.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5e5a605..9b8139d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.8.0", + "version": "9.9.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 97526169..e5165781 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.8.0", + "version": "9.9.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 9ed2b26933ed7645ec7f64d8eb665e514342de7b Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 12:14:22 +0000 Subject: [PATCH 0108/1024] Tidied up Lorenz operation and created new Bletchley module for WW2-era ciphers --- src/core/operations/Bombe.mjs | 2 +- src/core/operations/Enigma.mjs | 2 +- src/core/operations/Lorenz.mjs | 42 +++++++++++++-------------- src/core/operations/MultipleBombe.mjs | 2 +- src/core/operations/Typex.mjs | 2 +- tests/operations/tests/Lorenz.mjs | 1 + 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/core/operations/Bombe.mjs b/src/core/operations/Bombe.mjs index 1718a0a4..d1cae416 100644 --- a/src/core/operations/Bombe.mjs +++ b/src/core/operations/Bombe.mjs @@ -23,7 +23,7 @@ class Bombe extends Operation { super(); this.name = "Bombe"; - this.module = "Default"; + this.module = "Bletchley"; this.description = "Emulation of the Bombe machine used at Bletchley Park to attack Enigma, based on work by Polish and British cryptanalysts.

        To run this you need to have a 'crib', which is some known plaintext for a chunk of the target ciphertext, and know the rotors used. (See the 'Bombe (multiple runs)' operation if you don't know the rotors.) The machine will suggest possible configurations of the Enigma. Each suggestion has the rotor start positions (left to right) and known plugboard pairs.

        Choosing a crib: First, note that Enigma cannot encrypt a letter to itself, which allows you to rule out some positions for possible cribs. Secondly, the Bombe does not simulate the Enigma's middle rotor stepping. The longer your crib, the more likely a step happened within it, which will prevent the attack working. However, other than that, longer cribs are generally better. The attack produces a 'menu' which maps ciphertext letters to plaintext, and the goal is to produce 'loops': for example, with ciphertext ABC and crib CAB, we have the mappings A<->C, B<->A, and C<->B, which produces a loop A-B-C-A. The more loops, the better the crib. The operation will output this: if your menu has too few loops or is too short, a large number of incorrect outputs will usually be produced. Try a different crib. If the menu seems good but the right answer isn't produced, your crib may be wrong, or you may have overlapped the middle rotor stepping - try a different crib.

        Output is not sufficient to fully decrypt the data. You will have to recover the rest of the plugboard settings by inspection. And the ring position is not taken into account: this affects when the middle rotor steps. If your output is correct for a bit, and then goes wrong, adjust the ring and start position on the right-hand rotor together until the output improves. If necessary, repeat for the middle rotor.

        By default this operation runs the checking machine, a manual process to verify the quality of Bombe stops, on each stop, discarding stops which fail. If you want to see how many times the hardware actually stops for a given input, disable the checking machine.

        More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; this.infoURL = "https://wikipedia.org/wiki/Bombe"; this.inputType = "string"; diff --git a/src/core/operations/Enigma.mjs b/src/core/operations/Enigma.mjs index 3e8b7dcb..01fc63e7 100644 --- a/src/core/operations/Enigma.mjs +++ b/src/core/operations/Enigma.mjs @@ -21,7 +21,7 @@ class Enigma extends Operation { super(); this.name = "Enigma"; - this.module = "Default"; + this.module = "Bletchley"; this.description = "Encipher/decipher with the WW2 Enigma machine.

        Enigma was used by the German military, among others, around the WW2 era as a portable cipher machine to protect sensitive military, diplomatic and commercial communications.

        The standard set of German military rotors and reflectors are provided. To configure the plugboard, enter a string of connected pairs of letters, e.g. AB CD EF connects A to B, C to D, and E to F. This is also used to create your own reflectors. To create your own rotor, enter the letters that the rotor maps A to Z to, in order, optionally followed by < then a list of stepping points.
        This is deliberately fairly permissive with rotor placements etc compared to a real Enigma (on which, for example, a four-rotor Enigma uses only the thin reflectors and the beta or gamma rotor in the 4th slot).

        More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; this.infoURL = "https://wikipedia.org/wiki/Enigma_machine"; this.inputType = "string"; diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index 07f5d558..acbd1256 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -21,21 +21,21 @@ class Lorenz extends Operation { super(); this.name = "Lorenz"; - this.module = "Default"; - this.description = "The Lorenz SZ40/42 cipher attachment was a WW2 German rotor cipher machine with twelve rotors which attached in-line between remote teleprinters.

        It used the Vernam cipher with two groups of five rotors (named the psi(ψ) wheels and chi(χ) wheels at Bletchley Park) to create two pseudorandom streams of five bits, encoded in ITA2, which were XOR added to the plaintext. Two other rotors, dubbed the mu(μ) or motor wheels, could hold up the stepping of the psi wheels meaning they stepped intermittently.

        Each rotor has a different number of cams/lugs around their circumference which could be set active or inactive changing the key stream.

        Three models of the Lorenz are emulated, SZ40, SZ42a and SZ42b and three example wheel patterns (the lug settings) are included (KH, ZMUG & BREAM) with the option to set a custom set using the letter 'x' for active or '.' for an inactive lug.

        The input can either be plaintext or ITA2 when sending and ITA2 when receiving.

        To learn more, Virtual Lorenz, an online, browser based simulation of the Lorenz SZ40/42 is available at https://lorenz.virtualcolossus.co.uk."; - this.infoURL = "https://en.wikipedia.org/wiki/Lorenz_cipher"; + this.module = "Bletchley"; + this.description = "The Lorenz SZ40/42 cipher attachment was a WW2 German rotor cipher machine with twelve rotors which attached in-line between remote teleprinters.

        It used the Vernam cipher with two groups of five rotors (named the psi(ψ) wheels and chi(χ) wheels at Bletchley Park) to create two pseudorandom streams of five bits, encoded in ITA2, which were XOR added to the plaintext. Two other rotors, dubbed the mu(μ) or motor wheels, could hold up the stepping of the psi wheels meaning they stepped intermittently.

        Each rotor has a different number of cams/lugs around their circumference which could be set active or inactive changing the key stream.

        Three models of the Lorenz are emulated, SZ40, SZ42a and SZ42b and three example wheel patterns (the lug settings) are included (KH, ZMUG & BREAM) with the option to set a custom set using the letter 'x' for active or '.' for an inactive lug.

        The input can either be plaintext or ITA2 when sending and ITA2 when receiving.

        To learn more, Virtual Lorenz, an online, browser based simulation of the Lorenz SZ40/42 is available at https://lorenz.virtualcolossus.co.uk."; + this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; this.inputType = "string"; this.outputType = "string"; this.args = [ { name: "Model", type: "option", - "value": ["SZ40", "SZ42a", "SZ42b"] + value: ["SZ40", "SZ42a", "SZ42b"] }, { name: "Wheel Pattern", type: "argSelector", - "value": [ + value: [ { name: "KH Pattern", off: [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] @@ -65,7 +65,7 @@ class Lorenz extends Operation { { name: "Mode", type: "argSelector", - "value": [ + value: [ { name: "Send", on: [4], @@ -81,77 +81,77 @@ class Lorenz extends Operation { { name: "Input Type", type: "option", - "value": ["Plaintext", "ITA2"] + value: ["Plaintext", "ITA2"] }, { name: "Output Type", type: "option", - "value": ["Plaintext", "ITA2"] + value: ["Plaintext", "ITA2"] }, { name: "ITA2 Format", type: "option", - "value": ["5/8/9", "+/-/."] + value: ["5/8/9", "+/-/."] }, { name: "Ψ1 start (1-43)", type: "number", - "value": 1 + value: 1 }, { name: "Ψ2 start (1-47)", type: "number", - "value": 1 + value: 1 }, { name: "Ψ3 start (1-51)", type: "number", - "value": 1 + value: 1 }, { name: "Ψ4 start (1-53)", type: "number", - "value": 1 + value: 1 }, { name: "Ψ5 start (1-59)", type: "number", - "value": 1 + value: 1 }, { name: "Μ37 start (1-37)", type: "number", - "value": 1 + value: 1 }, { name: "Μ61 start (1-61)", type: "number", - "value": 1 + value: 1 }, { name: "Χ1 start (1-41)", type: "number", - "value": 1 + value: 1 }, { name: "Χ2 start (1-31)", type: "number", - "value": 1 + value: 1 }, { name: "Χ3 start (1-29)", type: "number", - "value": 1 + value: 1 }, { name: "Χ4 start (1-26)", type: "number", - "value": 1 + value: 1 }, { name: "Χ5 start (1-23)", type: "number", - "value": 1 + value: 1 }, { name: "Ψ1 lugs (43)", diff --git a/src/core/operations/MultipleBombe.mjs b/src/core/operations/MultipleBombe.mjs index 99725904..c98129d0 100644 --- a/src/core/operations/MultipleBombe.mjs +++ b/src/core/operations/MultipleBombe.mjs @@ -54,7 +54,7 @@ class MultipleBombe extends Operation { super(); this.name = "Multiple Bombe"; - this.module = "Default"; + this.module = "Bletchley"; this.description = "Emulation of the Bombe machine used to attack Enigma. This version carries out multiple Bombe runs to handle unknown rotor configurations.

        You should test your menu on the single Bombe operation before running it here. See the description of the Bombe operation for instructions on choosing a crib.

        More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; this.infoURL = "https://wikipedia.org/wiki/Bombe"; this.inputType = "string"; diff --git a/src/core/operations/Typex.mjs b/src/core/operations/Typex.mjs index 8b81c13f..46d99aa5 100644 --- a/src/core/operations/Typex.mjs +++ b/src/core/operations/Typex.mjs @@ -22,7 +22,7 @@ class Typex extends Operation { super(); this.name = "Typex"; - this.module = "Default"; + this.module = "Bletchley"; this.description = "Encipher/decipher with the WW2 Typex machine.

        Typex was originally built by the British Royal Air Force prior to WW2, and is based on the Enigma machine with some improvements made, including using five rotors with more stepping points and interchangeable wiring cores. It was used across the British and Commonwealth militaries. A number of later variants were produced; here we simulate a WW2 era Mark 22 Typex with plugboards for the reflector and input. Typex rotors were changed regularly and none are public: a random example set are provided.

        To configure the reflector plugboard, enter a string of connected pairs of letters in the reflector box, e.g. AB CD EF connects A to B, C to D, and E to F (you'll need to connect every letter). There is also an input plugboard: unlike Enigma's plugboard, it's not restricted to pairs, so it's entered like a rotor (without stepping). To create your own rotor, enter the letters that the rotor maps A to Z to, in order, optionally followed by < then a list of stepping points.

        More detailed descriptions of the Enigma, Typex and Bombe operations can be found here."; this.infoURL = "https://wikipedia.org/wiki/Typex"; this.inputType = "string"; diff --git a/tests/operations/tests/Lorenz.mjs b/tests/operations/tests/Lorenz.mjs index 22bf82d9..088707f6 100644 --- a/tests/operations/tests/Lorenz.mjs +++ b/tests/operations/tests/Lorenz.mjs @@ -1,5 +1,6 @@ /** * Lorenz SZ40/42a/42b machine tests. + * * @author VirtualColossus * @copyright Crown Copyright 2019 * @license Apache-2.0 From 6b4efb420e1d5883ec88ffa0681ef4f29e6ee495 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 12:16:35 +0000 Subject: [PATCH 0109/1024] Updated CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee629699..6cce5b57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master). +### [9.10.0] - 2019-11-06 +- 'Lorenz' operation added [@VirtualColossus] | [#528] + ### [9.9.0] - 2019-11-01 - Added support for 109 more character encodings [@n1474335] @@ -191,6 +194,7 @@ All major and minor version changes will be documented in this file. Details of +[9.10.0]: https://github.com/gchq/CyberChef/releases/tag/v9.10.0 [9.9.0]: https://github.com/gchq/CyberChef/releases/tag/v9.9.0 [9.8.0]: https://github.com/gchq/CyberChef/releases/tag/v9.8.0 [9.7.0]: https://github.com/gchq/CyberChef/releases/tag/v9.7.0 @@ -271,6 +275,7 @@ All major and minor version changes will be documented in this file. Details of [@MShwed]: https://github.com/MShwed [@kassi]: https://github.com/kassi [@jarrodconnolly]: https://github.com/jarrodconnolly +[@VirtualColossus]: https://github.com/VirtualColossus [#95]: https://github.com/gchq/CyberChef/pull/299 [#173]: https://github.com/gchq/CyberChef/pull/173 @@ -317,6 +322,7 @@ All major and minor version changes will be documented in this file. Details of [#515]: https://github.com/gchq/CyberChef/pull/515 [#516]: https://github.com/gchq/CyberChef/pull/516 [#525]: https://github.com/gchq/CyberChef/pull/525 +[#528]: https://github.com/gchq/CyberChef/pull/528 [#530]: https://github.com/gchq/CyberChef/pull/530 [#531]: https://github.com/gchq/CyberChef/pull/531 [#533]: https://github.com/gchq/CyberChef/pull/533 From 0fc1c37e65fe9ca0a09fbcbab427f47d73d295b8 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 12:17:41 +0000 Subject: [PATCH 0110/1024] 9.10.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b8139d8..b486569c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.9.0", + "version": "9.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e5165781..707acaf6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.9.0", + "version": "9.10.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 03a1c566fc9cd5de617faa6957c1ffadf2374c7f Mon Sep 17 00:00:00 2001 From: Derrick Karpo Date: Wed, 6 Nov 2019 06:01:52 -0700 Subject: [PATCH 0111/1024] Add file extensions which are mandatory for the latest Node 12.x. Note: This doesn't solve the upstream import's which still don't comply but it preps CyberChef for it. --- src/core/operations/BaconCipherDecode.mjs | 4 ++-- src/core/operations/BaconCipherEncode.mjs | 4 ++-- src/core/operations/DefangIPAddresses.mjs | 2 +- src/core/operations/ParseSSHHostKey.mjs | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/operations/BaconCipherDecode.mjs b/src/core/operations/BaconCipherDecode.mjs index 05d90d12..56d0946b 100644 --- a/src/core/operations/BaconCipherDecode.mjs +++ b/src/core/operations/BaconCipherDecode.mjs @@ -4,12 +4,12 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; +import Operation from "../Operation.mjs"; import { BACON_ALPHABETS, BACON_TRANSLATION_CASE, BACON_TRANSLATION_AMNZ, BACON_TRANSLATIONS, BACON_CLEARER_MAP, BACON_NORMALIZE_MAP, swapZeroAndOne -} from "../lib/Bacon"; +} from "../lib/Bacon.mjs"; /** * Bacon Cipher Decode operation diff --git a/src/core/operations/BaconCipherEncode.mjs b/src/core/operations/BaconCipherEncode.mjs index fd06e9b7..3eb66b57 100644 --- a/src/core/operations/BaconCipherEncode.mjs +++ b/src/core/operations/BaconCipherEncode.mjs @@ -4,12 +4,12 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; +import Operation from "../Operation.mjs"; import { BACON_ALPHABETS, BACON_TRANSLATIONS_FOR_ENCODING, BACON_TRANSLATION_AB, swapZeroAndOne -} from "../lib/Bacon"; +} from "../lib/Bacon.mjs"; /** * Bacon Cipher Encode operation diff --git a/src/core/operations/DefangIPAddresses.mjs b/src/core/operations/DefangIPAddresses.mjs index 74e03500..5623a049 100644 --- a/src/core/operations/DefangIPAddresses.mjs +++ b/src/core/operations/DefangIPAddresses.mjs @@ -4,7 +4,7 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; +import Operation from "../Operation.mjs"; /** diff --git a/src/core/operations/ParseSSHHostKey.mjs b/src/core/operations/ParseSSHHostKey.mjs index 17b1a8d1..c9b0c295 100644 --- a/src/core/operations/ParseSSHHostKey.mjs +++ b/src/core/operations/ParseSSHHostKey.mjs @@ -4,11 +4,11 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; -import OperationError from "../errors/OperationError"; -import Utils from "../Utils"; -import { fromBase64 } from "../lib/Base64"; -import { fromHex, toHexFast } from "../lib/Hex"; +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import Utils from "../Utils.mjs"; +import { fromBase64 } from "../lib/Base64.mjs"; +import { fromHex, toHexFast } from "../lib/Hex.mjs"; /** * Parse SSH Host Key operation From 414f8b5ba9d422ec9fc0b7ae654ce0f0d0e87fe1 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 13:17:44 +0000 Subject: [PATCH 0112/1024] Added link to Lorenz wiki article in operation description --- src/core/operations/Lorenz.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index acbd1256..b001823a 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -22,7 +22,7 @@ class Lorenz extends Operation { this.name = "Lorenz"; this.module = "Bletchley"; - this.description = "The Lorenz SZ40/42 cipher attachment was a WW2 German rotor cipher machine with twelve rotors which attached in-line between remote teleprinters.

        It used the Vernam cipher with two groups of five rotors (named the psi(ψ) wheels and chi(χ) wheels at Bletchley Park) to create two pseudorandom streams of five bits, encoded in ITA2, which were XOR added to the plaintext. Two other rotors, dubbed the mu(μ) or motor wheels, could hold up the stepping of the psi wheels meaning they stepped intermittently.

        Each rotor has a different number of cams/lugs around their circumference which could be set active or inactive changing the key stream.

        Three models of the Lorenz are emulated, SZ40, SZ42a and SZ42b and three example wheel patterns (the lug settings) are included (KH, ZMUG & BREAM) with the option to set a custom set using the letter 'x' for active or '.' for an inactive lug.

        The input can either be plaintext or ITA2 when sending and ITA2 when receiving.

        To learn more, Virtual Lorenz, an online, browser based simulation of the Lorenz SZ40/42 is available at https://lorenz.virtualcolossus.co.uk."; + this.description = "The Lorenz SZ40/42 cipher attachment was a WW2 German rotor cipher machine with twelve rotors which attached in-line between remote teleprinters.

        It used the Vernam cipher with two groups of five rotors (named the psi(ψ) wheels and chi(χ) wheels at Bletchley Park) to create two pseudorandom streams of five bits, encoded in ITA2, which were XOR added to the plaintext. Two other rotors, dubbed the mu(μ) or motor wheels, could hold up the stepping of the psi wheels meaning they stepped intermittently.

        Each rotor has a different number of cams/lugs around their circumference which could be set active or inactive changing the key stream.

        Three models of the Lorenz are emulated, SZ40, SZ42a and SZ42b and three example wheel patterns (the lug settings) are included (KH, ZMUG & BREAM) with the option to set a custom set using the letter 'x' for active or '.' for an inactive lug.

        The input can either be plaintext or ITA2 when sending and ITA2 when receiving.

        To learn more, Virtual Lorenz, an online, browser based simulation of the Lorenz SZ40/42 is available at https://lorenz.virtualcolossus.co.uk.

        A more detailed description of this operation can be found here."; this.infoURL = "https://wikipedia.org/wiki/Lorenz_cipher"; this.inputType = "string"; this.outputType = "string"; From b96394131fa15fa5269c9dc66ad103abb0981ae5 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 13:34:17 +0000 Subject: [PATCH 0113/1024] Tidied up Blowfish tests --- tests/operations/tests/Crypt.mjs | 40 +++++++++++++++++--------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/tests/operations/tests/Crypt.mjs b/tests/operations/tests/Crypt.mjs index 0fde26c5..b56f9cf8 100644 --- a/tests/operations/tests/Crypt.mjs +++ b/tests/operations/tests/Crypt.mjs @@ -1376,27 +1376,29 @@ DES uses a key length of 8 bytes (64 bits).`, } ], }, - /* The following expectedOutputs are generated with this Python script with pyCryptoDome - from Crypto.Cipher import Blowfish - import binascii + /* + The following expectedOutputs are generated with this Python script with pyCryptoDome - input_data = b"The quick brown fox jumps over the lazy dog." - key = binascii.unhexlify("0011223344556677") - iv = binascii.unhexlify("0000000000000000") - mode = Blowfish.MODE_CBC + from Crypto.Cipher import Blowfish + import binascii - if mode == Blowfish.MODE_ECB or mode == Blowfish.MODE_CBC: - padding_len = 8-(len(input_data) & 7) - for i in range(padding_len): - input_data += bytes([padding_len]) + input_data = b"The quick brown fox jumps over the lazy dog." + key = binascii.unhexlify("0011223344556677") + iv = binascii.unhexlify("0000000000000000") + mode = Blowfish.MODE_CBC - cipher = Blowfish.new(key, mode) # set iv, nonce, segment_size etc. here - cipher_text = cipher.encrypt(input_data) + if mode == Blowfish.MODE_ECB or mode == Blowfish.MODE_CBC: + padding_len = 8-(len(input_data) & 7) + for i in range(padding_len): + input_data += bytes([padding_len]) - cipher_text = binascii.hexlify(cipher_text).decode("UTF-8") + cipher = Blowfish.new(key, mode) # set iv, nonce, segment_size etc. here + cipher_text = cipher.encrypt(input_data) - print("Encrypted: {}".format(cipher_text)) -*/ + cipher_text = binascii.hexlify(cipher_text).decode("UTF-8") + + print("Encrypted: {}".format(cipher_text)) + */ { name: "Blowfish Encrypt: ECB, ASCII", input: "The quick brown fox jumps over the lazy dog.", @@ -1555,7 +1557,7 @@ DES uses a key length of 8 bytes (64 bits).`, { name: "Blowfish Encrypt: CFB, Binary", input: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", - // see above. pyCryptoDome produeces a different value with its default settings + // see above. pyCryptoDome produces a different value with its default settings expectedOutput: "e6ac1324d1576beab00e855de3f4ac1f5e3cbf89f4c2a743a5737895067ac5012e5bdb92477e256cc07bf691b58e721179b550e694abb0be7cbdc42586db755bf795f4338f47d356c57453afa6277e46aaeb3405f9744654a477f06c2ad92ede90555759", recipeConfig: [ { @@ -1574,7 +1576,7 @@ DES uses a key length of 8 bytes (64 bits).`, name: "Blowfish Decrypt: CFB, ASCII", input: "c8ca123592570c1fcb138d4ec08f7af14ad49363245be1ac25029c8ffc508b3217e75faaa5566426180fec8f", expectedOutput: "The quick brown fox jumps over the lazy dog.", - // see above. pyCryptoDome produeces a different value with its default settings + // see above. pyCryptoDome produces a different value with its default settings recipeConfig: [ { "op": "Blowfish Decrypt", @@ -1592,7 +1594,7 @@ DES uses a key length of 8 bytes (64 bits).`, name: "Blowfish Decrypt: CFB, Binary", input: "e6ac1324d1576beab00e855de3f4ac1f5e3cbf89f4c2a743a5737895067ac5012e5bdb92477e256cc07bf691b58e721179b550e694abb0be7cbdc42586db755bf795f4338f47d356c57453afa6277e46aaeb3405f9744654a477f06c2ad92ede90555759", expectedOutput: "7a0e643132750e96d805d11e9e48e281fa39a41039286423cc1c045e5442b40bf1c3f2822bded3f9c8ef11cb25da64dda9c7ab87c246bd305385150c98f31465c2a6180fe81d31ea289b916504d5a12e1de26cb10adba84a0cb0c86f94bc14bc554f3018", - // see above. pyCryptoDome produeces a different value with its default settings + // see above. pyCryptoDome produces a different value with its default settings recipeConfig: [ { "op": "Blowfish Decrypt", From b0df8b7dca13794eb8ad0ec0629c8ae11a0734b3 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 13:37:31 +0000 Subject: [PATCH 0114/1024] Updated CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cce5b57..999967c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master). +### [9.11.0] - 2019-11-06 +- Implemented CFB, OFB, and CTR modes for Blowfish operations [@cbeuw] | [#653] + ### [9.10.0] - 2019-11-06 - 'Lorenz' operation added [@VirtualColossus] | [#528] @@ -194,6 +197,7 @@ All major and minor version changes will be documented in this file. Details of +[9.11.0]: https://github.com/gchq/CyberChef/releases/tag/v9.11.0 [9.10.0]: https://github.com/gchq/CyberChef/releases/tag/v9.10.0 [9.9.0]: https://github.com/gchq/CyberChef/releases/tag/v9.9.0 [9.8.0]: https://github.com/gchq/CyberChef/releases/tag/v9.8.0 @@ -276,6 +280,7 @@ All major and minor version changes will be documented in this file. Details of [@kassi]: https://github.com/kassi [@jarrodconnolly]: https://github.com/jarrodconnolly [@VirtualColossus]: https://github.com/VirtualColossus +[@cbeuw]: https://github.com/cbeuw [#95]: https://github.com/gchq/CyberChef/pull/299 [#173]: https://github.com/gchq/CyberChef/pull/173 @@ -337,4 +342,5 @@ All major and minor version changes will be documented in this file. Details of [#625]: https://github.com/gchq/CyberChef/pull/625 [#627]: https://github.com/gchq/CyberChef/pull/627 [#632]: https://github.com/gchq/CyberChef/pull/632 +[#653]: https://github.com/gchq/CyberChef/pull/653 [#865]: https://github.com/gchq/CyberChef/pull/865 From a8f029309d12204732ee74e7afbf44000d7dab79 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 6 Nov 2019 13:38:32 +0000 Subject: [PATCH 0115/1024] 9.11.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b486569c..79a700a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.10.0", + "version": "9.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 707acaf6..9e0c3771 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.10.0", + "version": "9.11.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 77a9481cf914c4602c6c8dc8c5af8c98237b374a Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 7 Nov 2019 09:20:24 +0000 Subject: [PATCH 0116/1024] xz compression --- src/core/lib/FileSignatures.mjs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index a6efb320..1c4c4924 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1485,7 +1485,7 @@ export const FILE_SIGNATURES = { 4: 0x5a, 5: 0x0 }, - extractor: null + extractor: extractXZ }, { name: "Tarball", @@ -2808,6 +2808,21 @@ export function extractZlib(bytes, offset) { } +/** + * XZ extractor + * + * @param {Uint8Array} bytes + * @param {Number} offset + * @returns {string} + */ +export function extractXZ(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + stream.continueUntil([0x00, 0x00, 0x00, 0x00, 0x04, 0x59, 0x5a]); + stream.moveForwardsBy(7); + return stream.carve(); +} + + /** * ELF extractor. * From b83f6591bb7134b21ca18b2a0d30526ee08efdb0 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 7 Nov 2019 10:13:40 +0000 Subject: [PATCH 0117/1024] XZ compression --- src/core/lib/FileSignatures.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 1c4c4924..7783fd6e 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2817,8 +2817,13 @@ export function extractZlib(bytes, offset) { */ export function extractXZ(bytes, offset) { const stream = new Stream(bytes.slice(offset)); + + // Move forward to EOF marker stream.continueUntil([0x00, 0x00, 0x00, 0x00, 0x04, 0x59, 0x5a]); + + // Move over EOF marker stream.moveForwardsBy(7); + return stream.carve(); } From 4f5e0c007d7a4f2b25e380b7fe474aa64312c9ff Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 7 Nov 2019 15:06:30 +0000 Subject: [PATCH 0118/1024] GIF extractor for GIF89a --- src/core/lib/FileSignatures.mjs | 34 +++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 7783fd6e..bcf3417f 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -40,7 +40,7 @@ export const FILE_SIGNATURES = { 4: [0x37, 0x39], // 7|9 5: 0x61 // a }, - extractor: null + extractor: extractGIF }, { name: "Portable Network Graphics image", @@ -2440,6 +2440,36 @@ export function extractJPEG(bytes, offset) { } +/** + * GIF extractor. + * + * @param {Uint8Array} bytes + * @param {Number} offset + * @returns {Uint8Array} + */ +export function extractGIF(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + stream.continueUntil([0x21, 0xff]); + stream.continueUntil([0x21, 0xf9]); + while (stream.hasMore()) { + stream.continueUntil(0x2c); + stream.moveForwardsBy(11); + while (stream.getBytes(2) !== [0x21, 0xf9]) { + stream.moveBackwardsBy(2); + stream.moveForwardsBy(stream.getBytes(1)[0]); + if (!stream.getBytes(1)[0]) + break; + stream.moveBackwardsBy(1); + } + if (stream.getBytes(1)[0] === 0x3b) + break; + stream.moveBackwardsBy(1); + } + stream.moveBackwardsBy(10); + return stream.carve(); +} + + /** * Portable executable extractor. * Assumes that the offset refers to an MZ header. @@ -2809,7 +2839,7 @@ export function extractZlib(bytes, offset) { /** - * XZ extractor + * XZ extractor. * * @param {Uint8Array} bytes * @param {Number} offset From f022440b4a505326621532bc20f0a2acd4da98c6 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 7 Nov 2019 16:20:09 +0000 Subject: [PATCH 0119/1024] Tidied GIFextractor --- src/core/lib/FileSignatures.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index bcf3417f..34557305 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2465,7 +2465,6 @@ export function extractGIF(bytes, offset) { break; stream.moveBackwardsBy(1); } - stream.moveBackwardsBy(10); return stream.carve(); } From 447a6d7524b4bc27391f5a8db9e1c2f17255a640 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 7 Nov 2019 16:50:10 +0000 Subject: [PATCH 0120/1024] Comments for GIF. --- src/core/lib/FileSignatures.mjs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 34557305..c6672c68 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2449,11 +2449,21 @@ export function extractJPEG(bytes, offset) { */ export function extractGIF(bytes, offset) { const stream = new Stream(bytes.slice(offset)); + + //Move to application extension block. stream.continueUntil([0x21, 0xff]); + + //Move to Graphic Control Extension for frame #1. stream.continueUntil([0x21, 0xf9]); while (stream.hasMore()) { + + //Move to Image descriptor. stream.continueUntil(0x2c); + + //Move past Image descriptor to the image data. stream.moveForwardsBy(11); + + //Loop until next Graphic Control Extension. while (stream.getBytes(2) !== [0x21, 0xf9]) { stream.moveBackwardsBy(2); stream.moveForwardsBy(stream.getBytes(1)[0]); @@ -2461,6 +2471,7 @@ export function extractGIF(bytes, offset) { break; stream.moveBackwardsBy(1); } + //When the end of the file is [0x00, 0x3b], end. if (stream.getBytes(1)[0] === 0x3b) break; stream.moveBackwardsBy(1); From 80362cfa84083f3c0550f39e180f5f77589329ba Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 11:39:50 +0000 Subject: [PATCH 0121/1024] Bzip2 extractor completed --- src/core/lib/FileSignatures.mjs | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index c6672c68..8c0a3aff 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1444,7 +1444,7 @@ export const FILE_SIGNATURES = { 1: 0x5a, 2: 0x68 }, - extractor: null + extractor: extractBZIP2 }, { name: "7zip", @@ -2817,6 +2817,42 @@ export function extractGZIP(bytes, offset) { } +/** + * @param {Uint8Array} bytes + * @param {Number} offset + * @returns {Uint8Array} + */ +export function extractBZIP2(bytes, offset){ + const stream = new Stream(bytes.slice(offset)); + + //The EOFs shifted between all possible combinations. + var lookingfor = [ + [0x77, 0x24, 0x53, 0x85, 0x09], + [0xee, 0x48, 0xa7, 0x0a, 0x12], + [0xdc, 0x91, 0x4e, 0x14, 0x24], + [0xb9, 0x22, 0x9c, 0x28, 0x48], + [0x72, 0x45, 0x38, 0x50, 0x90], + [0xbb, 0x92, 0x29, 0xc2, 0x84], + [0x5d, 0xc9, 0x14, 0xe1, 0x42], + [0x2e, 0xe4, 0x8a, 0x70, 0xa1], + [0x17, 0x72, 0x45, 0x38, 0x50]]; + + for(let i = 0; i < 9; i++){ + + //Continue until an EOF. + stream.continueUntil(lookingfor[i]); + if(stream.getBytes(5).join("") == lookingfor[i].join("")) + break; + + //Jump back to the start if invalid EOF. + stream.moveTo(0); + } + stream.moveForwardsBy(4); + + return stream.carve(); +} + + /** * Zlib extractor. * From 51cc94bf2ac85cf70f77b5a9ee08fff672091530 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 13:38:17 +0000 Subject: [PATCH 0122/1024] Made GIF extractor more robust --- src/core/lib/FileSignatures.mjs | 39 ++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 8c0a3aff..7942ebb3 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2455,10 +2455,11 @@ export function extractGIF(bytes, offset) { //Move to Graphic Control Extension for frame #1. stream.continueUntil([0x21, 0xf9]); + stream.moveForwardsBy(2); while (stream.hasMore()) { //Move to Image descriptor. - stream.continueUntil(0x2c); + stream.moveForwardsBy(stream.getBytes(1)[0]+1); //Move past Image descriptor to the image data. stream.moveForwardsBy(11); @@ -2474,7 +2475,7 @@ export function extractGIF(bytes, offset) { //When the end of the file is [0x00, 0x3b], end. if (stream.getBytes(1)[0] === 0x3b) break; - stream.moveBackwardsBy(1); + stream.moveForwardsBy(1); } return stream.carve(); } @@ -2818,37 +2819,39 @@ export function extractGZIP(bytes, offset) { /** + * BZIP2 extractor. + * * @param {Uint8Array} bytes * @param {Number} offset * @returns {Uint8Array} */ -export function extractBZIP2(bytes, offset){ +export function extractBZIP2(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - + //The EOFs shifted between all possible combinations. - var lookingfor = [ - [0x77, 0x24, 0x53, 0x85, 0x09], - [0xee, 0x48, 0xa7, 0x0a, 0x12], - [0xdc, 0x91, 0x4e, 0x14, 0x24], - [0xb9, 0x22, 0x9c, 0x28, 0x48], - [0x72, 0x45, 0x38, 0x50, 0x90], - [0xbb, 0x92, 0x29, 0xc2, 0x84], - [0x5d, 0xc9, 0x14, 0xe1, 0x42], - [0x2e, 0xe4, 0x8a, 0x70, 0xa1], - [0x17, 0x72, 0x45, 0x38, 0x50]]; - - for(let i = 0; i < 9; i++){ + const lookingfor = [ + [0x77, 0x24, 0x53, 0x85, 0x09], + [0xee, 0x48, 0xa7, 0x0a, 0x12], + [0xdc, 0x91, 0x4e, 0x14, 0x24], + [0xb9, 0x22, 0x9c, 0x28, 0x48], + [0x72, 0x45, 0x38, 0x50, 0x90], + [0xbb, 0x92, 0x29, 0xc2, 0x84], + [0x5d, 0xc9, 0x14, 0xe1, 0x42], + [0x2e, 0xe4, 0x8a, 0x70, 0xa1], + [0x17, 0x72, 0x45, 0x38, 0x50]]; + + for (let i = 0; i < lookingfor.length; i++) { //Continue until an EOF. stream.continueUntil(lookingfor[i]); - if(stream.getBytes(5).join("") == lookingfor[i].join("")) + if (stream.getBytes(5).join("") === lookingfor[i].join("")) break; //Jump back to the start if invalid EOF. stream.moveTo(0); } stream.moveForwardsBy(4); - + console.log("test: ", stream.position.toString(16)); return stream.carve(); } From f3864b00feacb77fc0987e58c9c64f7efded9a5d Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 13:40:09 +0000 Subject: [PATCH 0123/1024] Made GIF extractor more robust --- src/core/lib/FileSignatures.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 7942ebb3..d4f0ee22 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2851,7 +2851,6 @@ export function extractBZIP2(bytes, offset) { stream.moveTo(0); } stream.moveForwardsBy(4); - console.log("test: ", stream.position.toString(16)); return stream.carve(); } From 04f1fa06adec69550fed0e01b6f94625288968e0 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 8 Nov 2019 13:49:39 +0000 Subject: [PATCH 0124/1024] Tidied up GIF and BZIP2 extractors --- src/core/lib/FileSignatures.mjs | 34 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index d4f0ee22..d8b819bb 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2450,31 +2450,33 @@ export function extractJPEG(bytes, offset) { export function extractGIF(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - //Move to application extension block. + // Move to application extension block. stream.continueUntil([0x21, 0xff]); - //Move to Graphic Control Extension for frame #1. + // Move to Graphic Control Extension for frame #1. stream.continueUntil([0x21, 0xf9]); stream.moveForwardsBy(2); + while (stream.hasMore()) { + // Move to Image descriptor. + stream.moveForwardsBy(stream.readInt(1) + 1); - //Move to Image descriptor. - stream.moveForwardsBy(stream.getBytes(1)[0]+1); - - //Move past Image descriptor to the image data. + // Move past Image descriptor to the image data. stream.moveForwardsBy(11); - //Loop until next Graphic Control Extension. + // Loop until next Graphic Control Extension. while (stream.getBytes(2) !== [0x21, 0xf9]) { stream.moveBackwardsBy(2); - stream.moveForwardsBy(stream.getBytes(1)[0]); - if (!stream.getBytes(1)[0]) + stream.moveForwardsBy(stream.readInt(1)); + if (!stream.readInt(1)) break; stream.moveBackwardsBy(1); } - //When the end of the file is [0x00, 0x3b], end. - if (stream.getBytes(1)[0] === 0x3b) + + // When the end of the file is [0x00, 0x3b], end. + if (stream.readInt(1) === 0x3b) break; + stream.moveForwardsBy(1); } return stream.carve(); @@ -2828,7 +2830,7 @@ export function extractGZIP(bytes, offset) { export function extractBZIP2(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - //The EOFs shifted between all possible combinations. + // The EOFs shifted between all possible combinations. const lookingfor = [ [0x77, 0x24, 0x53, 0x85, 0x09], [0xee, 0x48, 0xa7, 0x0a, 0x12], @@ -2838,16 +2840,16 @@ export function extractBZIP2(bytes, offset) { [0xbb, 0x92, 0x29, 0xc2, 0x84], [0x5d, 0xc9, 0x14, 0xe1, 0x42], [0x2e, 0xe4, 0x8a, 0x70, 0xa1], - [0x17, 0x72, 0x45, 0x38, 0x50]]; + [0x17, 0x72, 0x45, 0x38, 0x50] + ]; for (let i = 0; i < lookingfor.length; i++) { - - //Continue until an EOF. + // Continue until an EOF. stream.continueUntil(lookingfor[i]); if (stream.getBytes(5).join("") === lookingfor[i].join("")) break; - //Jump back to the start if invalid EOF. + // Jump back to the start if invalid EOF. stream.moveTo(0); } stream.moveForwardsBy(4); From 6318f78e29a5ff62ce2ceb9d2950054e5f9f4eb6 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 8 Nov 2019 13:50:00 +0000 Subject: [PATCH 0125/1024] 9.11.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 79a700a0..94e507f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.0", + "version": "9.11.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9e0c3771..1ee3c412 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.0", + "version": "9.11.1", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From a4772941a7a69e2f48ed971b8286408610ac6bf8 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 14:56:54 +0000 Subject: [PATCH 0126/1024] Added WAV extractor. --- src/core/lib/FileSignatures.mjs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index d4f0ee22..38712717 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -736,7 +736,7 @@ export const FILE_SIGNATURES = { 10: 0x56, 11: 0x45 }, - extractor: null + extractor: extractWAV }, { name: "OGG audio", @@ -2642,6 +2642,22 @@ export function extractBMP(bytes, offset) { return stream.carve(); } +/** + * WAV extractor. + * + * @param {Uint8Array} bytes + * @param {Number} offset + * @returns {Uint8Array} + */ +export function extractWAV(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + stream.moveTo(4); + + // Move to file size. + stream.moveTo(stream.readInt(4, "le")-4); + return stream.carve(); +} + /** * FLV extractor. From 2387452a56f64e9f3df96e8c7d7bc038ee682fad Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 14:59:06 +0000 Subject: [PATCH 0127/1024] Comment the WAV extractor. --- src/core/lib/FileSignatures.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 38712717..896898c8 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2651,6 +2651,8 @@ export function extractBMP(bytes, offset) { */ export function extractWAV(bytes, offset) { const stream = new Stream(bytes.slice(offset)); + + // Move to file size field. stream.moveTo(4); // Move to file size. From 4d9bfcad200ec58c1e8bfe169b69483d8547ae1e Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 15:00:20 +0000 Subject: [PATCH 0128/1024] Comment the WAV extractor. --- src/core/lib/FileSignatures.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 896898c8..af046629 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2657,6 +2657,7 @@ export function extractWAV(bytes, offset) { // Move to file size. stream.moveTo(stream.readInt(4, "le")-4); + return stream.carve(); } From eb81b9217eb0f4d797e226b72a5a368fb6f75f2f Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 8 Nov 2019 17:08:14 +0000 Subject: [PATCH 0129/1024] SQLITE, EVT, EVTX and Signatures added --- src/core/lib/FileSignatures.mjs | 210 +++++++++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 3 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index af046629..b93a7c9f 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1870,7 +1870,7 @@ export const FILE_SIGNATURES = { 2: 0x4c, 3: 0x69 }, - extractor: null + extractor: extractSQLITE }, { name: "BitTorrent link", @@ -1993,7 +1993,7 @@ export const FILE_SIGNATURES = { 6: 0x4c, 7: 0x65 }, - extractor: null + extractor: extractEVT }, { name: "Windows Event Log", @@ -2009,7 +2009,7 @@ export const FILE_SIGNATURES = { 5: 0x6c, 6: 0x65 }, - extractor: null + extractor: extractEVTX }, { name: "Windows Pagedump", @@ -2331,6 +2331,133 @@ export const FILE_SIGNATURES = { 19: 0x46 }, extractor: null + }, + { + name: "Bash", + extension: "bash", + mime: "application/bash", + description: "", + signature: { + 0: 0x23, // #!/bin/bash + 1: 0x21, + 2: 0x2f, + 3: 0x62, + 4: 0x69, + 5: 0x6e, + 6: 0x2f, + 7: 0x62, + 8: 0x61, + 9: 0x73, + 10: 0x68, + }, + extractor: null + }, + { + name: "Shell", + extension: "sh", + mime: "application/sh", + description: "", + signature: { + 0: 0x23, // #!/bin/sh + 1: 0x21, + 2: 0x2f, + 3: 0x62, + 4: 0x69, + 5: 0x6e, + 6: 0x2f, + 7: 0x73, + 8: 0x68, + }, + extractor: null + }, + { + name: "Python", + extension: "py,pyc,pyd,pyo,pyw,pyz", + mime: "application/python", + description: "", + signature: { + 0: 0x23, // #!/usr/bin/python(2|3) + 1: 0x21, + 2: 0x2f, + 3: 0x75, + 4: 0x73, + 5: 0x72, + 6: 0x2f, + 7: 0x62, + 8: 0x69, + 9: 0x6e, + 10: 0x2f, + 11: 0x70, + 12: 0x79, + 13: 0x74, + 14: 0x68, + 15: 0x6f, + 16: 0x6e, + 17: [0x32, 0x33, 0xa, 0xd], + }, + extractor: null + }, + { + name: "Ruby", + extension: "rb", + mime: "application/ruby", + description: "", + signature: { + 0: 0x23, // #!/usr/bin/ruby + 1: 0x21, + 2: 0x2f, + 3: 0x75, + 4: 0x73, + 5: 0x72, + 6: 0x2f, + 7: 0x62, + 8: 0x69, + 9: 0x6e, + 10: 0x2f, + 11: 0x72, + 12: 0x75, + 13: 0x62, + 14: 0x79, + }, + extractor: null + }, + { + name: "perl", + extension: "pl,pm,t,pod", + mime: "application/perl", + description: "", + signature: { + 0: 0x23, // #!/usr/bin/perl + 1: 0x21, + 2: 0x2f, + 3: 0x75, + 4: 0x73, + 5: 0x72, + 6: 0x2f, + 7: 0x62, + 8: 0x69, + 9: 0x6e, + 10: 0x2f, + 11: 0x70, + 12: 0x65, + 13: 0x72, + 14: 0x6c, + }, + extractor: null + }, + { + name: "php", + extension: "php,phtml,php3,php4,php5,php7,phps,php-s,pht,phar", + mime: "application/php", + description: "", + signature: { + 0: 0x3c, // Date: Fri, 8 Nov 2019 17:35:38 +0000 Subject: [PATCH 0130/1024] 9.11.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94e507f4..ee98ae07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.1", + "version": "9.11.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1ee3c412..eee26363 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.1", + "version": "9.11.2", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From d240d65c5f10d4b4c954b912cfca87f95b4aa95c Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 11 Nov 2019 15:47:16 +0000 Subject: [PATCH 0131/1024] Improved continueUntil, added consumeWhile and made the EVTX extractor more complete --- src/core/lib/FileSignatures.mjs | 8 ++--- src/core/lib/Stream.mjs | 61 +++++++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index b93a7c9f..da4509c8 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -3348,11 +3348,11 @@ export function extractEVTX(bytes, offset) { while (stream.hasMore()) { // Loop through ELFCHNKs. - if (stream.getBytes(7).join("") === [0x45, 0x6c, 0x66, 0x43, 0x68, 0x6e, 0x6b].join("")) - stream.moveForwardsBy(0xfff9); - else - break; + if (stream.getBytes(7).join("") !== [0x45, 0x6c, 0x66, 0x43, 0x68, 0x6e, 0x6b].join("")) + break; + stream.moveForwardsBy(0xfff9); } + stream.consumeWhile(0x00); return stream.carve(); } diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 7e82a5eb..dca390e5 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -155,19 +155,66 @@ export default class Stream { } // val is an array - let found = false; - while (!found && this.position < this.length) { - while (++this.position < this.length && this.bytes[this.position] !== val[0]) { - continue; - } + + + /** + * Build's the skip forward table from the value to be searched. + * + * @param val + * @param len + */ + function preprocess(val, len) { + const skiptable = new Array(); + val.forEach(function(element, index) { + skiptable[element] = len - index; + }); + return skiptable; + } + + const length = val.length; + + const initial = val[length-1]; + + this.position = length; + + // Get the skip table. + const skiptable = preprocess(val, length); + let found = true; + + while (this.position < this.length) { + + // Until we hit the final element of val in the stream. + while ((this.position < this.length) && (this.bytes[this.position++] !== initial)); + found = true; - for (let i = 1; i < val.length; i++) { - if (this.position + i > this.length || this.bytes[this.position + i] !== val[i]) + + // Loop through the elements comparing them to val. + for (let x = length-1; x != -1; x--) { + if (this.bytes[(this.position-length) + x] !== val[x]) { found = false; + + // If element is not equal to val's element then jump forward by the correct amount. + this.position += skiptable[val[x]]; + break; + } + } + if (found) { + this.position = (this.position - length); + break; } } } + + /** + * Consume bytes if it matches the supplied value. + * + * @param val + */ + consumeWhile(val) { + while ((this.position < this.length) && (this.bytes[this.position++] === val)); + } + /** * Consume the next byte if it matches the supplied value. * From 8e2345cf9e9e297c679baeac52855c84095b8a98 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 11 Nov 2019 16:08:03 +0000 Subject: [PATCH 0132/1024] Improved continueUntil, added consumeWhile and made the EVTX extractor more complete --- src/core/lib/FileSignatures.mjs | 2 +- src/core/lib/Stream.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index da4509c8..c8397b03 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -3349,7 +3349,7 @@ export function extractEVTX(bytes, offset) { // Loop through ELFCHNKs. if (stream.getBytes(7).join("") !== [0x45, 0x6c, 0x66, 0x43, 0x68, 0x6e, 0x6b].join("")) - break; + break; stream.moveForwardsBy(0xfff9); } stream.consumeWhile(0x00); diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index dca390e5..e86dfc30 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -189,7 +189,7 @@ export default class Stream { found = true; // Loop through the elements comparing them to val. - for (let x = length-1; x != -1; x--) { + for (let x = length-1; x !== -1; x--) { if (this.bytes[(this.position-length) + x] !== val[x]) { found = false; From d3c13b118d99d7807143026172c5a781e0996b9b Mon Sep 17 00:00:00 2001 From: n1073645 Date: Tue, 12 Nov 2019 11:00:43 +0000 Subject: [PATCH 0133/1024] Improved continueUntil, added consumeWhile and made the EVTX extractor more complete --- .eslintrc.json | 1 + src/core/lib/FileSignatures.mjs | 18 +++++++++--------- src/core/lib/Stream.mjs | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index e307112b..14e335a5 100755 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -47,6 +47,7 @@ "block-spacing": "error", "array-bracket-spacing": "error", "comma-spacing": "error", + "spaced-comment": ["error", "always"], "comma-style": "error", "computed-property-spacing": "error", "no-trailing-spaces": "warn", diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index c8397b03..b4d9e918 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2577,21 +2577,21 @@ export function extractJPEG(bytes, offset) { export function extractGIF(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - //Move to application extension block. + // Move to application extension block. stream.continueUntil([0x21, 0xff]); - //Move to Graphic Control Extension for frame #1. + // Move to Graphic Control Extension for frame #1. stream.continueUntil([0x21, 0xf9]); stream.moveForwardsBy(2); while (stream.hasMore()) { - //Move to Image descriptor. + // Move to Image descriptor. stream.moveForwardsBy(stream.getBytes(1)[0]+1); - //Move past Image descriptor to the image data. + // Move past Image descriptor to the image data. stream.moveForwardsBy(11); - //Loop until next Graphic Control Extension. + // Loop until next Graphic Control Extension. while (stream.getBytes(2) !== [0x21, 0xf9]) { stream.moveBackwardsBy(2); stream.moveForwardsBy(stream.getBytes(1)[0]); @@ -2599,7 +2599,7 @@ export function extractGIF(bytes, offset) { break; stream.moveBackwardsBy(1); } - //When the end of the file is [0x00, 0x3b], end. + // When the end of the file is [0x00, 0x3b], end. if (stream.getBytes(1)[0] === 0x3b) break; stream.moveForwardsBy(1); @@ -3000,7 +3000,7 @@ export function extractGZIP(bytes, offset) { export function extractBZIP2(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - //The EOFs shifted between all possible combinations. + // The EOFs shifted between all possible combinations. const lookingfor = [ [0x77, 0x24, 0x53, 0x85, 0x09], [0xee, 0x48, 0xa7, 0x0a, 0x12], @@ -3014,12 +3014,12 @@ export function extractBZIP2(bytes, offset) { for (let i = 0; i < lookingfor.length; i++) { - //Continue until an EOF. + // Continue until an EOF. stream.continueUntil(lookingfor[i]); if (stream.getBytes(5).join("") === lookingfor[i].join("")) break; - //Jump back to the start if invalid EOF. + // Jump back to the start if invalid EOF. stream.moveTo(0); } stream.moveForwardsBy(4); diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index e86dfc30..58cb2d5b 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -189,7 +189,7 @@ export default class Stream { found = true; // Loop through the elements comparing them to val. - for (let x = length-1; x !== -1; x--) { + for (let x = length-1; x+1; x--) { if (this.bytes[(this.position-length) + x] !== val[x]) { found = false; From 4541d75f49f6ed6e1411834811a6688fba146993 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Tue, 12 Nov 2019 13:17:04 +0000 Subject: [PATCH 0134/1024] Improved continueUntil, added consumeWhile and made the EVTX extractor more complete --- .eslintrc.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 14e335a5..e307112b 100755 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -47,7 +47,6 @@ "block-spacing": "error", "array-bracket-spacing": "error", "comma-spacing": "error", - "spaced-comment": ["error", "always"], "comma-style": "error", "computed-property-spacing": "error", "no-trailing-spaces": "warn", From 69c6c3e790c539cb443400df77360b2576c603aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Tue, 12 Nov 2019 23:43:16 +0100 Subject: [PATCH 0135/1024] Add missing filenames for Node 12 imports --- src/core/operations/Lorenz.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index b001823a..1b2bf682 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -6,8 +6,8 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; -import OperationError from "../errors/OperationError"; +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; /** * Lorenz operation From dfd4cca43fc0641470f64b162efb9d42a0bd039c Mon Sep 17 00:00:00 2001 From: n1073645 Date: Wed, 13 Nov 2019 09:02:36 +0000 Subject: [PATCH 0136/1024] Corrections --- src/core/lib/Stream.mjs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 58cb2d5b..0230b26a 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -158,14 +158,15 @@ export default class Stream { /** - * Build's the skip forward table from the value to be searched. + * Builds the skip forward table from the value to be searched. * - * @param val - * @param len + * @param {Uint8Array} val + * @param {Number} len + * @returns {Uint8Array} */ function preprocess(val, len) { const skiptable = new Array(); - val.forEach(function(element, index) { + val.forEach((element, index) => { skiptable[element] = len - index; }); return skiptable; @@ -189,8 +190,8 @@ export default class Stream { found = true; // Loop through the elements comparing them to val. - for (let x = length-1; x+1; x--) { - if (this.bytes[(this.position-length) + x] !== val[x]) { + for (let x = length-1; x > -1; x--) { + if (this.bytes[this.position-length + x] !== val[x]) { found = false; // If element is not equal to val's element then jump forward by the correct amount. @@ -199,7 +200,7 @@ export default class Stream { } } if (found) { - this.position = (this.position - length); + this.position -= length; break; } } @@ -209,10 +210,11 @@ export default class Stream { /** * Consume bytes if it matches the supplied value. * - * @param val + * @param {Number} val */ consumeWhile(val) { - while ((this.position < this.length) && (this.bytes[this.position++] === val)); + while ((this.position < this.length) && (this.bytes[(this.position++)] === val)) + this.position--; } /** From 3921b4f445417bee9fe6109e37ecfb9dba6d919c Mon Sep 17 00:00:00 2001 From: n1073645 Date: Wed, 13 Nov 2019 09:59:55 +0000 Subject: [PATCH 0137/1024] Small correction to continueWhile --- src/core/lib/Stream.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 0230b26a..8e941716 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -213,8 +213,7 @@ export default class Stream { * @param {Number} val */ consumeWhile(val) { - while ((this.position < this.length) && (this.bytes[(this.position++)] === val)) - this.position--; + while ((++this.position < this.length) && (this.bytes[(this.position)] === val)); } /** From e9b7a43b9a8fd0fd50c7ee423184d63357c33461 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Wed, 13 Nov 2019 17:11:04 +0000 Subject: [PATCH 0138/1024] Adjustment to consumeWhile --- src/core/lib/Stream.mjs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 8e941716..451698b9 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -190,7 +190,7 @@ export default class Stream { found = true; // Loop through the elements comparing them to val. - for (let x = length-1; x > -1; x--) { + for (let x = length-1; x >= 0; x--) { if (this.bytes[this.position-length + x] !== val[x]) { found = false; @@ -213,7 +213,12 @@ export default class Stream { * @param {Number} val */ consumeWhile(val) { - while ((++this.position < this.length) && (this.bytes[(this.position)] === val)); + while (this.position < this.length){ + if (this.bytes[this.position] !== val){ + break; + } + this.position++; + } } /** From c1878ca28b44e6e8935d163b341a6b1878f1605b Mon Sep 17 00:00:00 2001 From: n1073645 Date: Wed, 13 Nov 2019 17:15:54 +0000 Subject: [PATCH 0139/1024] Linting adjustments --- src/core/lib/Stream.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 451698b9..da299b65 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -213,8 +213,8 @@ export default class Stream { * @param {Number} val */ consumeWhile(val) { - while (this.position < this.length){ - if (this.bytes[this.position] !== val){ + while (this.position < this.length) { + if (this.bytes[this.position] !== val) { break; } this.position++; From cce84c3782ef4976a14895e882236fa012c1d87f Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 13 Nov 2019 17:59:16 +0000 Subject: [PATCH 0140/1024] Fixed bug in Base62 operations when using different alphabets --- src/core/operations/FromBase62.mjs | 17 ++++++++++++----- src/core/operations/ToBase62.mjs | 9 ++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/core/operations/FromBase62.mjs b/src/core/operations/FromBase62.mjs index c2f54ec0..9e91f647 100644 --- a/src/core/operations/FromBase62.mjs +++ b/src/core/operations/FromBase62.mjs @@ -42,15 +42,22 @@ class FromBase62 extends Operation { */ run(input, args) { if (input.length < 1) return []; - const ALPHABET = Utils.expandAlphRange(args[0]).join(""); - const BN = BigNumber.clone({ ALPHABET }); + const alphabet = Utils.expandAlphRange(args[0]).join(""); + const BN62 = BigNumber.clone({ ALPHABET: alphabet }); - const re = new RegExp("[^" + ALPHABET.replace(/[[\]\\\-^$]/g, "\\$&") + "]", "g"); + const re = new RegExp("[^" + alphabet.replace(/[[\]\\\-^$]/g, "\\$&") + "]", "g"); input = input.replace(re, ""); - const number = new BN(input, 62); + // Read number in using Base62 alphabet + const number = new BN62(input, 62); + // Copy to new BigNumber object that uses the default alphabet + const normalized = new BigNumber(number); - return Utils.convertToByteArray(number.toString(16), "Hex"); + // Convert to hex and add leading 0 if required + let hex = normalized.toString(16); + if (hex.length % 2 !== 0) hex = "0" + hex; + + return Utils.convertToByteArray(hex, "Hex"); } } diff --git a/src/core/operations/ToBase62.mjs b/src/core/operations/ToBase62.mjs index c5d2f35e..a00d9275 100644 --- a/src/core/operations/ToBase62.mjs +++ b/src/core/operations/ToBase62.mjs @@ -44,12 +44,15 @@ class ToBase62 extends Operation { input = new Uint8Array(input); if (input.length < 1) return ""; - const ALPHABET = Utils.expandAlphRange(args[0]).join(""); - const BN = BigNumber.clone({ ALPHABET }); + const alphabet = Utils.expandAlphRange(args[0]).join(""); + const BN62 = BigNumber.clone({ ALPHABET: alphabet }); input = toHexFast(input).toUpperCase(); - const number = new BN(input, 16); + // Read number in as hex using normal alphabet + const normalized = new BigNumber(input, 16); + // Copy to BigNumber clone that uses the specified Base62 alphabet + const number = new BN62(normalized); return number.toString(62); } From 68e8a221ffda42ac6fd67a0385e86dc58d1b6f46 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 13 Nov 2019 17:59:22 +0000 Subject: [PATCH 0141/1024] 9.11.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee98ae07..9b01b4c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.2", + "version": "9.11.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index eee26363..39c8d0c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.2", + "version": "9.11.3", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 03f474096895c604cef7b584ff82735de64c9479 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 13 Nov 2019 18:04:36 +0000 Subject: [PATCH 0142/1024] Tidied up consumeWhile and consumeUntil --- src/core/lib/Stream.mjs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index da299b65..800d6b1a 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -156,7 +156,6 @@ export default class Stream { // val is an array - /** * Builds the skip forward table from the value to be searched. * @@ -173,9 +172,7 @@ export default class Stream { } const length = val.length; - const initial = val[length-1]; - this.position = length; // Get the skip table. @@ -183,7 +180,6 @@ export default class Stream { let found = true; while (this.position < this.length) { - // Until we hit the final element of val in the stream. while ((this.position < this.length) && (this.bytes[this.position++] !== initial)); @@ -191,7 +187,7 @@ export default class Stream { // Loop through the elements comparing them to val. for (let x = length-1; x >= 0; x--) { - if (this.bytes[this.position-length + x] !== val[x]) { + if (this.bytes[this.position - length + x] !== val[x]) { found = false; // If element is not equal to val's element then jump forward by the correct amount. @@ -208,7 +204,7 @@ export default class Stream { /** - * Consume bytes if it matches the supplied value. + * Consume bytes if they match the supplied value. * * @param {Number} val */ @@ -219,6 +215,7 @@ export default class Stream { } this.position++; } + this.bitPos = 0; } /** From a62a6c2aa4b72dd37cbd16136ced9e603f40707c Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 13 Nov 2019 18:05:31 +0000 Subject: [PATCH 0143/1024] 9.11.4 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b01b4c3..9005032d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.3", + "version": "9.11.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 39c8d0c0..8ec0426e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.3", + "version": "9.11.4", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 2205637ad684e1c0a49ee1fee87123d15ce84d2d Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 13 Nov 2019 18:06:39 +0000 Subject: [PATCH 0144/1024] 9.11.5 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9005032d..b3ac2a46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.4", + "version": "9.11.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8ec0426e..c8229636 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.4", + "version": "9.11.5", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 33464b3388a8dd61b9361bea91ba7e3cc46e5b66 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 14 Nov 2019 08:55:27 +0000 Subject: [PATCH 0145/1024] Linting changes --- .eslintrc.json | 1 + src/core/Utils.mjs | 14 +++++----- src/core/config/scripts/generateConfig.mjs | 2 +- src/core/config/scripts/generateOpsIndex.mjs | 2 +- src/core/config/scripts/newOperation.mjs | 4 +-- src/core/operations/FromMorseCode.mjs | 2 +- src/core/operations/GroupIPAddresses.mjs | 2 +- src/core/operations/Lorenz.mjs | 4 +-- src/node/api.mjs | 2 +- src/node/cjs.js | 2 +- src/node/config/scripts/generateNodeIndex.mjs | 2 +- src/node/repl.js | 2 +- src/web/App.mjs | 2 +- src/web/waiters/HighlighterWaiter.mjs | 2 +- src/web/waiters/InputWaiter.mjs | 28 +++++++++---------- tests/node/tests/NodeDish.mjs | 2 +- tests/operations/tests/ByteRepr.mjs | 2 +- tests/operations/tests/Hash.mjs | 4 +-- tests/operations/tests/Image.mjs | 4 +-- 19 files changed, 42 insertions(+), 41 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index e307112b..e9fa15db 100755 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -47,6 +47,7 @@ "block-spacing": "error", "array-bracket-spacing": "error", "comma-spacing": "error", + "spaced-comment": ["error", "always", { "exceptions": ["/"] } ], "comma-style": "error", "computed-property-spacing": "error", "no-trailing-spaces": "warn", diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index e64aba4b..0f10cb8a 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -758,15 +758,15 @@ class Utils { "%7E": "~", "%21": "!", "%24": "$", - //"%26": "&", + // "%26": "&", "%27": "'", "%28": "(", "%29": ")", "%2A": "*", - //"%2B": "+", + // "%2B": "+", "%2C": ",", "%3B": ";", - //"%3D": "=", + // "%3D": "=", "%3A": ":", "%40": "@", "%2F": "/", @@ -1335,14 +1335,14 @@ export function debounce(func, wait, id, scope, args) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart if (!String.prototype.padStart) { String.prototype.padStart = function padStart(targetLength, padString) { - targetLength = targetLength>>0; //floor if number or convert non-number to 0; + targetLength = targetLength>>0; // floor if number or convert non-number to 0; padString = String((typeof padString !== "undefined" ? padString : " ")); if (this.length > targetLength) { return String(this); } else { targetLength = targetLength-this.length; if (targetLength > padString.length) { - padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed + padString += padString.repeat(targetLength/padString.length); // append to original to ensure we are longer than needed } return padString.slice(0, targetLength) + String(this); } @@ -1354,14 +1354,14 @@ if (!String.prototype.padStart) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd if (!String.prototype.padEnd) { String.prototype.padEnd = function padEnd(targetLength, padString) { - targetLength = targetLength>>0; //floor if number or convert non-number to 0; + targetLength = targetLength>>0; // floor if number or convert non-number to 0; padString = String((typeof padString !== "undefined" ? padString : " ")); if (this.length > targetLength) { return String(this); } else { targetLength = targetLength-this.length; if (targetLength > padString.length) { - padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed + padString += padString.repeat(targetLength/padString.length); // append to original to ensure we are longer than needed } return String(this) + padString.slice(0, targetLength); } diff --git a/src/core/config/scripts/generateConfig.mjs b/src/core/config/scripts/generateConfig.mjs index 8ef906e6..e8f99e40 100644 --- a/src/core/config/scripts/generateConfig.mjs +++ b/src/core/config/scripts/generateConfig.mjs @@ -9,7 +9,7 @@ * @license Apache-2.0 */ -/*eslint no-console: ["off"] */ +/* eslint no-console: ["off"] */ import path from "path"; import fs from "fs"; diff --git a/src/core/config/scripts/generateOpsIndex.mjs b/src/core/config/scripts/generateOpsIndex.mjs index d18307bc..750ee6f4 100644 --- a/src/core/config/scripts/generateOpsIndex.mjs +++ b/src/core/config/scripts/generateOpsIndex.mjs @@ -7,7 +7,7 @@ * @license Apache-2.0 */ -/*eslint no-console: ["off"] */ +/* eslint no-console: ["off"] */ import path from "path"; import fs from "fs"; diff --git a/src/core/config/scripts/newOperation.mjs b/src/core/config/scripts/newOperation.mjs index 03753fae..809f3558 100644 --- a/src/core/config/scripts/newOperation.mjs +++ b/src/core/config/scripts/newOperation.mjs @@ -6,7 +6,7 @@ * @license Apache-2.0 */ -/*eslint no-console: ["off"] */ +/* eslint no-console: ["off"] */ import prompt from "prompt"; import colors from "colors"; @@ -208,7 +208,7 @@ ${result.highlight ? ` export default ${moduleName}; `; - //console.log(template); + // console.log(template); const filename = path.join(dir, `./${moduleName}.mjs`); if (fs.existsSync(filename)) { diff --git a/src/core/operations/FromMorseCode.mjs b/src/core/operations/FromMorseCode.mjs index e7714912..42005f4d 100644 --- a/src/core/operations/FromMorseCode.mjs +++ b/src/core/operations/FromMorseCode.mjs @@ -59,7 +59,7 @@ class FromMorseCode extends Operation { const letterDelim = Utils.charRep(args[0]); const wordDelim = Utils.charRep(args[1]); - input = input.replace(/-|‐|−|_|–|—|dash/ig, ""); //hyphen-minus|hyphen|minus-sign|undersore|en-dash|em-dash + input = input.replace(/-|‐|−|_|–|—|dash/ig, ""); // hyphen-minus|hyphen|minus-sign|undersore|en-dash|em-dash input = input.replace(/\.|·|dot/ig, ""); let words = input.split(wordDelim); diff --git a/src/core/operations/GroupIPAddresses.mjs b/src/core/operations/GroupIPAddresses.mjs index bf7c6db8..06840eeb 100644 --- a/src/core/operations/GroupIPAddresses.mjs +++ b/src/core/operations/GroupIPAddresses.mjs @@ -117,7 +117,7 @@ class GroupIPAddresses extends Operation { // Sort IPv6 network dictionaries and print for (networkStr in ipv6Networks) { - //ipv6Networks[networkStr] = ipv6Networks[networkStr].sort(); TODO + // ipv6Networks[networkStr] = ipv6Networks[networkStr].sort(); TODO output += networkStr + "/" + cidr + "\n"; diff --git a/src/core/operations/Lorenz.mjs b/src/core/operations/Lorenz.mjs index b001823a..52b512eb 100644 --- a/src/core/operations/Lorenz.mjs +++ b/src/core/operations/Lorenz.mjs @@ -391,7 +391,7 @@ class Lorenz extends Operation { // Chi 2 one back lim - The active character of Chi 2 (2nd Chi wheel) in the previous position lim = parseInt(chiSettings[2][x2bptr-1], 10); if (kt) { - //p5 back 2 + // p5 back 2 if (lim===p5[2]) { lim = 0; } else { @@ -413,7 +413,7 @@ class Lorenz extends Operation { lim = 1; if (x2b1lug===s1b1lug) lim=0; if (kt) { - //p5 back 2 + // p5 back 2 if (lim===p5[2]) { lim=0; } else { diff --git a/src/node/api.mjs b/src/node/api.mjs index fca29dd8..7d53084b 100644 --- a/src/node/api.mjs +++ b/src/node/api.mjs @@ -6,7 +6,7 @@ * @license Apache-2.0 */ -/*eslint no-console: ["off"] */ +/* eslint no-console: ["off"] */ import NodeDish from "./NodeDish.mjs"; import NodeRecipe from "./NodeRecipe.mjs"; diff --git a/src/node/cjs.js b/src/node/cjs.js index a17bce53..0f502ee9 100644 --- a/src/node/cjs.js +++ b/src/node/cjs.js @@ -7,7 +7,7 @@ * @license Apache-2.0 */ -/*eslint no-global-assign: ["off"] */ +/* eslint no-global-assign: ["off"] */ require = require("esm")(module); module.exports = require("./index.mjs"); module.exports.File = require("./File.mjs"); diff --git a/src/node/config/scripts/generateNodeIndex.mjs b/src/node/config/scripts/generateNodeIndex.mjs index b65b7d3c..81ca8fe6 100644 --- a/src/node/config/scripts/generateNodeIndex.mjs +++ b/src/node/config/scripts/generateNodeIndex.mjs @@ -9,7 +9,7 @@ * @license Apache-2.0 */ -/*eslint no-console: 0 */ +/* eslint no-console: 0 */ import fs from "fs"; import path from "path"; diff --git a/src/node/repl.js b/src/node/repl.js index c9ed76f1..29154630 100644 --- a/src/node/repl.js +++ b/src/node/repl.js @@ -11,7 +11,7 @@ const chef = require("./cjs.js"); const repl = require("repl"); -/*eslint no-console: ["off"] */ +/* eslint no-console: ["off"] */ console.log(` ______ __ ________ ____ diff --git a/src/web/App.mjs b/src/web/App.mjs index 1039b7b2..a5806162 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -604,7 +604,7 @@ class App { else if (prev[1] > 0) prev[1]--; else prev[0]--; - //const compareURL = `https://github.com/gchq/CyberChef/compare/v${prev.join(".")}...v${PKG_VERSION}`; + // const compareURL = `https://github.com/gchq/CyberChef/compare/v${prev.join(".")}...v${PKG_VERSION}`; let compileInfo = `Last build: ${timeSinceCompile.substr(0, 1).toUpperCase() + timeSinceCompile.substr(1)} ago`; diff --git a/src/web/waiters/HighlighterWaiter.mjs b/src/web/waiters/HighlighterWaiter.mjs index 95050556..22d1e803 100755 --- a/src/web/waiters/HighlighterWaiter.mjs +++ b/src/web/waiters/HighlighterWaiter.mjs @@ -446,7 +446,7 @@ class HighlighterWaiter { } const cssClass = "hl1"; - //if (colour) cssClass += "-"+colour; + // if (colour) cssClass += "-"+colour; // Remove HTML tags text = text diff --git a/src/web/waiters/InputWaiter.mjs b/src/web/waiters/InputWaiter.mjs index 6fc240b3..9cb9b134 100644 --- a/src/web/waiters/InputWaiter.mjs +++ b/src/web/waiters/InputWaiter.mjs @@ -29,20 +29,20 @@ class InputWaiter { // Define keys that don't change the input so we don't have to autobake when they are pressed this.badKeys = [ - 16, //Shift - 17, //Ctrl - 18, //Alt - 19, //Pause - 20, //Caps - 27, //Esc - 33, 34, 35, 36, //PgUp, PgDn, End, Home - 37, 38, 39, 40, //Directional - 44, //PrntScrn - 91, 92, //Win - 93, //Context - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, //F1-12 - 144, //Num - 145, //Scroll + 16, // Shift + 17, // Ctrl + 18, // Alt + 19, // Pause + 20, // Caps + 27, // Esc + 33, 34, 35, 36, // PgUp, PgDn, End, Home + 37, 38, 39, 40, // Directional + 44, // PrntScrn + 91, 92, // Win + 93, // Context + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, // F1-12 + 144, // Num + 145, // Scroll ]; this.inputWorker = null; diff --git a/tests/node/tests/NodeDish.mjs b/tests/node/tests/NodeDish.mjs index 72120703..429c38af 100644 --- a/tests/node/tests/NodeDish.mjs +++ b/tests/node/tests/NodeDish.mjs @@ -125,7 +125,7 @@ TestRegister.addApiTests([ Click here -`.replace(/\n|\s{4}/g, ""); //remove newlines, tabs +`.replace(/\n|\s{4}/g, ""); // remove newlines, tabs const dish = new Dish(html, Dish.HTML); dish.get(4); diff --git a/tests/operations/tests/ByteRepr.mjs b/tests/operations/tests/ByteRepr.mjs index 51d9604d..2bb289ad 100644 --- a/tests/operations/tests/ByteRepr.mjs +++ b/tests/operations/tests/ByteRepr.mjs @@ -73,7 +73,7 @@ TestRegister.addTests([ }, { name: "To Octal: Γειά σου", - input: "Γειά σου", //[206,147,206,181,206,185,206,172,32,207,131,206,191,207,133], + input: "Γειά σου", // [206,147,206,181,206,185,206,172,32,207,131,206,191,207,133], expectedOutput: "316 223 316 265 316 271 316 254 40 317 203 316 277 317 205", recipeConfig: [ { diff --git a/tests/operations/tests/Hash.mjs b/tests/operations/tests/Hash.mjs index 9da5cfb6..bccdc6b7 100644 --- a/tests/operations/tests/Hash.mjs +++ b/tests/operations/tests/Hash.mjs @@ -1099,7 +1099,7 @@ TestRegister.addTests([ } ] } - /*{ // This takes a LONG time to run (over a minute usually). + /* { // This takes a LONG time to run (over a minute usually). name: "Scrypt: RFC test vector 4", input: "pleaseletmein", expectedOutput: "2101cb9b6a511aaeaddbbe09cf70f881ec568d574a2ffd4dabe5ee9820adaa478e56fd8f4ba5d09ffa1c6d927c40f4c337304049e8a952fbcbf45c6fa77a41a4", @@ -1115,5 +1115,5 @@ TestRegister.addTests([ ] } ] - },*/ + }, */ ]); diff --git a/tests/operations/tests/Image.mjs b/tests/operations/tests/Image.mjs index 7a5b4421..ad3408dc 100644 --- a/tests/operations/tests/Image.mjs +++ b/tests/operations/tests/Image.mjs @@ -248,7 +248,7 @@ TestRegister.addTests([ } ] }, - /*{ This operation only works in a browser + /* { This operation only works in a browser name: "Optical Character Recognition", input: "iVBORw0KGgoAAAANSUhEUgAAAUAAAAC0CAIAAABqhmJGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAASuSURBVHhe7dftVdswAIbRzsVAzMM0XabDUCOUxLYsWW4Jp+/pvf9w9GH76CHw4x2IJWAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAI9p8G/PbyY8rL2686g8t+vnqHTyfgIYfvz/26veTXn/UKX8+f0EU9bHrtu/6KfAN/AwEXAj7lFf2TBFw4nae8on+SgIvJ01n/KLzpDK+L3bT/Ap4O+HC+V12mTH+M3gzcLbIY/EO6HfxYp13k09nb6r3UqcdnjoCL3ll72J26h+35Oxy2XvZ0wOLaXq9v2+F1UC+7RZtMZ/DnfX1lwDOPzwUCLo7O2trtDK8H3M/iqoc6bj1subT68XTA/F7bGJooyzKbhTvLPHY8eJLHlbNX1DqYUVfdXbqwJjsCLsans37aNNJM6w68OR0wv9f9ymKw3k67yn2ZZpHlg3a3zis60s6oV+ZvlzMCLoanc3Dsdt9TdWT/lM8OmNjr5KY72jmzq1zfrbvXtVtmRMDF8HTWcgaaqIrD1U4G/MFewxrW262s5jS/Fzpmdts6mnHy+Fwl4GJ0OjsNrG1P/y7CNo3+gEt7jW56MVprNed7A/5w+n6YJ+BieDpnj/jO6pweTz0acGWvmZveL9XOmd3x6wKuTt8PEwRczLRw4eje1XX7c/cDruw1uuneOu2c4aOvzI57mJhRh1xZlQ0BF+Oz9vcF96fuB1zYa7R2b5mD6/XSwdfg8snj4q21+W/L02dfzIxhQMDFyTm6Hd7m+JYP7rPKT5sRuzhOBywm91rUkYc3fV9ltchtr8VmzuGOdfDB9N1tFYefNfdXLmyGjNZkhoCLUQufVqd/7z7rUcLW/XieDvg0s9difNOdRV5ePibt5vTuazusWbF9rs2E5v4mH58LBFyMW7g5OID7s9cMuTygmt9rcNPb5MrAz0lHc3Z9Ht7XZsxqxO36ZtLR/c0+PpMEzLOc/4LhrwmYZ6lfywJ+JgHzJPr9DgLmi23/zdXvcwmYL7YKWL1PJ2AIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmAIJmCI9f7+G6yFxVg/GyYwAAAAAElFTkSuQmCC", expectedOutput: "Tesseract.js\n", @@ -262,5 +262,5 @@ TestRegister.addTests([ "args": [false] } ] - }*/ + } */ ]); From 8502fd246d266beb205bb6aa41a0c3c7d9a2d5af Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 14 Nov 2019 14:52:40 +0000 Subject: [PATCH 0146/1024] Linting changes --- .eslintrc.json | 2 +- src/web/waiters/HighlighterWaiter.mjs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index e9fa15db..5d054f6a 100755 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -47,7 +47,7 @@ "block-spacing": "error", "array-bracket-spacing": "error", "comma-spacing": "error", - "spaced-comment": ["error", "always", { "exceptions": ["/"] } ], + "spaced-comment": ["error", "always", { "exceptions": ["/"] } ], "comma-style": "error", "computed-property-spacing": "error", "no-trailing-spaces": "warn", diff --git a/src/web/waiters/HighlighterWaiter.mjs b/src/web/waiters/HighlighterWaiter.mjs index 22d1e803..664daef8 100755 --- a/src/web/waiters/HighlighterWaiter.mjs +++ b/src/web/waiters/HighlighterWaiter.mjs @@ -446,7 +446,6 @@ class HighlighterWaiter { } const cssClass = "hl1"; - // if (colour) cssClass += "-"+colour; // Remove HTML tags text = text From 7c72871c0200d8d0b51580f8ef6d1a0dbd291110 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 14 Nov 2019 17:17:25 +0000 Subject: [PATCH 0147/1024] Added Tar and Mach-O extractors --- src/core/lib/FileSignatures.mjs | 177 +++++++++++++++++++++++++++++--- 1 file changed, 164 insertions(+), 13 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index dc7ced4d..8877881d 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1282,17 +1282,25 @@ export const FILE_SIGNATURES = { extension: "dylib", mime: "application/octet-stream", description: "", - signature: { - 0: 0xca, - 1: 0xfe, - 2: 0xba, - 3: 0xbe, - 4: 0x00, - 5: 0x00, - 6: 0x00, - 7: [0x01, 0x02, 0x03] - }, - extractor: null + signature: [ + { + 0: 0xca, + 1: 0xfe, + 2: 0xba, + 3: 0xbe, + 4: 0x00, + 5: 0x00, + 6: 0x00, + 7: [0x01, 0x02, 0x03] + }, + { + 0: 0xce, + 1: 0xfa, + 2: 0xed, + 3: 0xfe + } + ], + extractor: extractMACHO }, { name: "MacOS Mach-O 64-bit object", @@ -1305,7 +1313,7 @@ export const FILE_SIGNATURES = { 2: 0xed, 3: 0xfe }, - extractor: null + extractor: extractMACHO }, { name: "Adobe Flash", @@ -1404,7 +1412,7 @@ export const FILE_SIGNATURES = { 260: 0x61, 261: 0x72 }, - extractor: null + extractor: extractTAR }, { name: "Roshal Archive", @@ -2720,6 +2728,149 @@ export function extractZIP(bytes, offset) { } +/** + * MACHO extractor + * + * @param {Uint8Array} bytes + * @param {number} offset + * @returns {Uint8Array} + */ +export function extractMACHO(bytes, offset) { + + + /** + * Checks to see if the file is 64-bit. + * + * @param {string} magic + * @returns {bool} + */ + function isMagic64(magic) { + return magic === MHCIGAM64 || magic === MHCIGAM64; + } + + + /** + * Checks the endianness of the file. + * + * @param {string} magic + * @returns {bool} + */ + function shouldSwapBytes(magic) { + return magic === MHCIGAM || magic === MHCIGAM64; + } + + + /** + * Jumps through segment information and calculates the sum of the segement sizes. + * + * @param {Stream} stream + * @param {number} offset + * @param {string} isSwap + * @param {number} ncmds + * @returns {number} + */ + function dumpSegmentCommands(stream, offset, isSwap, ncmds) { + let total = 0; + for (let i = 0; i < ncmds; i++) { + + // Move to start of segment. + stream.moveTo(offset); + const cmd = stream.readInt(4, isSwap); + if (cmd === LCSEGEMENT64) { + + // Move to size of segment field. + stream.moveTo(offset + 48); + + // Extract size of segement. + total += stream.readInt(8, isSwap); + stream.moveTo(offset + 4); + + // Move to offset of next segment. + offset += stream.readInt(4, isSwap); + } else if (cmd === LCSEGEMENT) { + stream.moveTo(offset + 36); + + // Extract size of segement. + total += stream.readInt(4, isSwap); + stream.moveTo(offset + 4); + offset += stream.readInt(4, isSwap); + } + } + return total; + } + + + /** + * Reads the number of command segments. + * + * @param {Stream} stream + * @param {bool} is64 + * @param {string} isSwap + * @returns {number} + */ + function dumpMachHeader(stream, is64, isSwap) { + let loadCommandsOffset = 28; + if (is64) + loadCommandsOffset += 4; + + // Move to number of commands field. + stream.moveTo(16); + const ncmds = stream.readInt(4, isSwap); + return dumpSegmentCommands(stream, loadCommandsOffset, isSwap, ncmds); + } + + + const MHCIGAM64 = "207250237254"; + const MHCIGAM = "206250237254"; + const LCSEGEMENT64 = 0x19; + const LCSEGEMENT = 0x1; + const stream = new Stream(bytes.slice(offset)); + const magic = stream.getBytes(4).join(""); + const is64 = isMagic64(magic); + const isSwap = shouldSwapBytes(magic) ? "le" : "be"; + + // Move to the end of the final segment. + stream.moveTo(dumpMachHeader(stream, is64, isSwap)); + return stream.carve(); +} + + +/** + * TAR extractor. + * + * @param {Uint8Array} bytes + * @param {number} offset + * @returns {Uint8Array} + */ +export function extractTAR(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + while (stream.hasMore()) { + + // Move to ustar identifier. + stream.moveForwardsBy(0x101); + if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) + break; + + // Move back to file size field. + stream.moveBackwardsBy(0x8a); + let fsize = 0; + + // Read file size field. + stream.getBytes(11).forEach((element, index) => { + fsize += (element - 48).toString(); + }); + + // Round number up from octet to nearest 512. + fsize = (Math.ceil(parseInt(fsize, 8) / 512) * 512); + + // Move forwards to the end of that file. + stream.moveForwardsBy(fsize + 0x179); + } + stream.consumeWhile(0x00); + return stream.carve(); +} + + /** * PNG extractor. * From 7c25e295156006b788eeac2122d92d992ae2bec9 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 15 Nov 2019 09:21:46 +0000 Subject: [PATCH 0148/1024] Rectified magic bytes for MACHO extractor --- src/core/lib/FileSignatures.mjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 8877881d..2ef390cd 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2745,7 +2745,7 @@ export function extractMACHO(bytes, offset) { * @returns {bool} */ function isMagic64(magic) { - return magic === MHCIGAM64 || magic === MHCIGAM64; + return magic === MHCIGAM64 || magic === MHMAGIC64; } @@ -2821,16 +2821,16 @@ export function extractMACHO(bytes, offset) { const MHCIGAM64 = "207250237254"; + const MHMAGIC64 = "254237250207"; const MHCIGAM = "206250237254"; const LCSEGEMENT64 = 0x19; const LCSEGEMENT = 0x1; + const stream = new Stream(bytes.slice(offset)); const magic = stream.getBytes(4).join(""); - const is64 = isMagic64(magic); - const isSwap = shouldSwapBytes(magic) ? "le" : "be"; // Move to the end of the final segment. - stream.moveTo(dumpMachHeader(stream, is64, isSwap)); + stream.moveTo(dumpMachHeader(stream, isMagic64(magic), shouldSwapBytes(magic) ? "le" : "be")); return stream.carve(); } From acf5c733c2fa74ac59cb8a4f3352ff0dc56443c8 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 15 Nov 2019 09:26:49 +0000 Subject: [PATCH 0149/1024] Tidied up local and global variables for Mach-o --- src/core/lib/FileSignatures.mjs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 2ef390cd..cf8a5373 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2737,6 +2737,11 @@ export function extractZIP(bytes, offset) { */ export function extractMACHO(bytes, offset) { + // Magic bytes. + const MHCIGAM64 = "207250237254"; + const MHMAGIC64 = "254237250207"; + const MHCIGAM = "206250237254"; + /** * Checks to see if the file is 64-bit. @@ -2771,6 +2776,9 @@ export function extractMACHO(bytes, offset) { */ function dumpSegmentCommands(stream, offset, isSwap, ncmds) { let total = 0; + const LCSEGEMENT64 = 0x19; + const LCSEGEMENT = 0x1; + for (let i = 0; i < ncmds; i++) { // Move to start of segment. @@ -2820,12 +2828,6 @@ export function extractMACHO(bytes, offset) { } - const MHCIGAM64 = "207250237254"; - const MHMAGIC64 = "254237250207"; - const MHCIGAM = "206250237254"; - const LCSEGEMENT64 = 0x19; - const LCSEGEMENT = 0x1; - const stream = new Stream(bytes.slice(offset)); const magic = stream.getBytes(4).join(""); From e1cb62848c0a22e0cdb4d8200421f862612e12e2 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 15 Nov 2019 15:35:37 +0000 Subject: [PATCH 0150/1024] Made TAR extractor and MACHO signature more robust --- src/core/lib/FileSignatures.mjs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index cf8a5373..8c5a6557 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1297,7 +1297,12 @@ export const FILE_SIGNATURES = { 0: 0xce, 1: 0xfa, 2: 0xed, - 3: 0xfe + 3: 0xfe, + 4: 0x07, + 5: 0x00, + 6: 0x00, + 7: 0x00, + 8: 0x03 } ], extractor: extractMACHO @@ -2850,8 +2855,12 @@ export function extractTAR(bytes, offset) { // Move to ustar identifier. stream.moveForwardsBy(0x101); - if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) + if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) { + + // This is needed since if it were not here it relies on there being at least 0x106 padding of 0s at the end of the TAR + stream.moveBackwardsBy(0x101); break; + } // Move back to file size field. stream.moveBackwardsBy(0x8a); From 0a7b78b7ee7cc851799f8462f616c10f964987ca Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 15 Nov 2019 15:46:13 +0000 Subject: [PATCH 0151/1024] Made TAR extractor and MACHO signature more robust --- src/core/lib/FileSignatures.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 8c5a6557..0442b3b0 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2858,7 +2858,7 @@ export function extractTAR(bytes, offset) { if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) { // This is needed since if it were not here it relies on there being at least 0x106 padding of 0s at the end of the TAR - stream.moveBackwardsBy(0x101); + stream.moveBackwardsBy(0x106); break; } From c1a22ef639ad92d3b035e0a922edea1de5dadc83 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 15 Nov 2019 16:01:33 +0000 Subject: [PATCH 0152/1024] Made TAR extractor and MACHO signature more robust --- src/core/lib/FileSignatures.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 0442b3b0..2fa630e1 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1302,7 +1302,7 @@ export const FILE_SIGNATURES = { 5: 0x00, 6: 0x00, 7: 0x00, - 8: 0x03 + 8: [0x01, 0x02, 0x03] } ], extractor: extractMACHO From 2e7ce477d70fd9b6c93744c5f9119babb7bada43 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 18 Nov 2019 08:40:57 +0000 Subject: [PATCH 0153/1024] Tidied up ExtractTAR --- src/core/lib/FileSignatures.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 2fa630e1..939672f2 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2857,7 +2857,7 @@ export function extractTAR(bytes, offset) { stream.moveForwardsBy(0x101); if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) { - // This is needed since if it were not here it relies on there being at least 0x106 padding of 0s at the end of the TAR + // Needed since if it were not here it relies on there being at least 0x106 padding of 0s at the end of the TAR. stream.moveBackwardsBy(0x106); break; } From 7a4ebbf47e11bea8a00b2521f13779c3868197a6 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 18 Nov 2019 08:42:46 +0000 Subject: [PATCH 0154/1024] Tidied up ExtractTAR --- src/core/lib/FileSignatures.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 939672f2..2e85baf5 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2857,7 +2857,7 @@ export function extractTAR(bytes, offset) { stream.moveForwardsBy(0x101); if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) { - // Needed since if it were not here it relies on there being at least 0x106 padding of 0s at the end of the TAR. + // Needed since we cannot rely on there being at least 0x106 padding of 0s at the end of the TAR(even though there usually is). stream.moveBackwardsBy(0x106); break; } From 02ec4a3bfdb89ece796921bda609397e2e10d3a3 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 18 Nov 2019 13:21:05 +0000 Subject: [PATCH 0155/1024] ToCaseInsensitiveRegex improvements --- .../operations/ToCaseInsensitiveRegex.mjs | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 28bd3dc9..4850846d 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -32,7 +32,56 @@ class ToCaseInsensitiveRegex extends Operation { * @returns {string} */ run(input, args) { - return input.replace(/[a-z]/ig, m => `[${m.toLowerCase()}${m.toUpperCase()}]`); + /** + * Simulates look behind behaviour since javascript doesn't support it. + * + * @param {string} input + * @returns {string} + */ + function preProcess(input) { + let result = ""; + for (let i = 0; i < input.length; i++) { + const temp = input.charAt(i); + if (temp.match(/[a-zA-Z]/g) && (input.charAt(i-1) !== "-") && (input.charAt(i+1) !== "-")) + result += "[" + temp.toLowerCase() + temp.toUpperCase() + "]"; + else + result += temp; + } + return result; + } + + input = preProcess(input); + + // Example: [a-z] -> [a-zA-Z] + input = input.replace(/[a-z]-[a-z]/g, m => `${m}${m[0].toUpperCase()}-${m[2].toUpperCase()}`); + + // Example: [a-z] -> [a-zA-Z] + input = input.replace(/[A-Z]-[A-Z]/g, m => `${m}${m[0].toLowerCase()}-${m[2].toLowerCase()}`); + + // Example: [H-d] -> [A-DH-dh-z] + input = input.replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`); + + // Example: [!-D] -> [!-Da-d] + input = input.replace(/[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`); + + // Example: [%-^] -> [%-^a-z] + input = input.replace(/[ -@]-[[-`]/g, m => `${m}a-z`); + + // Example: [K-`] -> [K-`k-z] + input = input.replace(/[A-Z]-[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`); + + // Example: [[-}] -> [[-}A-Z] + input = input.replace(/[[-`]-[{-~]/g, m => `${m}A-Z`); + + // Example: [b-}] -> [b-}B-Z] + input = input.replace(/[a-z]-[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`); + + // Example: [<-j] -> [<-z] + input = input.replace(/[ -@]-[a-z]/g, m => `${m[0]}-z`); + + // Example: [^-j] -> [A-J^-j] + input = input.replace(/[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); + return input; } } From 40d3c8b071de12afc627ad6654d654fc72873da8 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 18 Nov 2019 13:31:19 +0000 Subject: [PATCH 0156/1024] ToCaseInsensitiveRegex improvements --- src/core/operations/ToCaseInsensitiveRegex.mjs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 4850846d..044c350c 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -54,31 +54,31 @@ class ToCaseInsensitiveRegex extends Operation { // Example: [a-z] -> [a-zA-Z] input = input.replace(/[a-z]-[a-z]/g, m => `${m}${m[0].toUpperCase()}-${m[2].toUpperCase()}`); - + // Example: [a-z] -> [a-zA-Z] input = input.replace(/[A-Z]-[A-Z]/g, m => `${m}${m[0].toLowerCase()}-${m[2].toLowerCase()}`); - + // Example: [H-d] -> [A-DH-dh-z] input = input.replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`); - + // Example: [!-D] -> [!-Da-d] input = input.replace(/[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`); - + // Example: [%-^] -> [%-^a-z] input = input.replace(/[ -@]-[[-`]/g, m => `${m}a-z`); - + // Example: [K-`] -> [K-`k-z] input = input.replace(/[A-Z]-[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`); - + // Example: [[-}] -> [[-}A-Z] input = input.replace(/[[-`]-[{-~]/g, m => `${m}A-Z`); - + // Example: [b-}] -> [b-}B-Z] input = input.replace(/[a-z]-[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`); - + // Example: [<-j] -> [<-z] input = input.replace(/[ -@]-[a-z]/g, m => `${m[0]}-z`); - + // Example: [^-j] -> [A-J^-j] input = input.replace(/[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); return input; From 6d77fe6eb3ae6e1bc72a0c448ae8f680f21ef7d7 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Wed, 20 Nov 2019 09:28:34 +0000 Subject: [PATCH 0157/1024] Combined two rules into one case insensitive rule --- .../operations/ToCaseInsensitiveRegex.mjs | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 044c350c..dcf0758b 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -50,37 +50,36 @@ class ToCaseInsensitiveRegex extends Operation { return result; } + // Example: [test] -> [[tT][eE][sS][tT]] input = preProcess(input); - // Example: [a-z] -> [a-zA-Z] - input = input.replace(/[a-z]-[a-z]/g, m => `${m}${m[0].toUpperCase()}-${m[2].toUpperCase()}`); - - // Example: [a-z] -> [a-zA-Z] - input = input.replace(/[A-Z]-[A-Z]/g, m => `${m}${m[0].toLowerCase()}-${m[2].toLowerCase()}`); + // Example: [A-Z] -> [A-Za-z] + input = input.replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`); // Example: [H-d] -> [A-DH-dh-z] input = input.replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`); // Example: [!-D] -> [!-Da-d] - input = input.replace(/[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`); + input = input.replace(/\\?[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`); // Example: [%-^] -> [%-^a-z] - input = input.replace(/[ -@]-[[-`]/g, m => `${m}a-z`); + input = input.replace(/\\?[ -@]-\\?[[-`]/g, m => `${m}a-z`); // Example: [K-`] -> [K-`k-z] - input = input.replace(/[A-Z]-[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`); + input = input.replace(/[A-Z]-\\?[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`); // Example: [[-}] -> [[-}A-Z] - input = input.replace(/[[-`]-[{-~]/g, m => `${m}A-Z`); + input = input.replace(/\\?[[-`]-\\?[{-~]/g, m => `${m}A-Z`); // Example: [b-}] -> [b-}B-Z] - input = input.replace(/[a-z]-[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`); + input = input.replace(/[a-z]-\\?[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`); // Example: [<-j] -> [<-z] - input = input.replace(/[ -@]-[a-z]/g, m => `${m[0]}-z`); + input = input.replace(/\\?[ -@]-[a-z]/g, m => `${m[0]}-z`); // Example: [^-j] -> [A-J^-j] - input = input.replace(/[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); + input = input.replace(/\\?[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); + return input; } } From 7d41d4d030192844796dcaebfe7e8af7bc946247 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 09:11:12 +0000 Subject: [PATCH 0158/1024] Replaced the .replaces in regex operation --- .../operations/ToCaseInsensitiveRegex.mjs | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index dcf0758b..32c14a3c 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -51,36 +51,35 @@ class ToCaseInsensitiveRegex extends Operation { } // Example: [test] -> [[tT][eE][sS][tT]] - input = preProcess(input); + return preProcess(input) // Example: [A-Z] -> [A-Za-z] - input = input.replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`); + .replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`) // Example: [H-d] -> [A-DH-dh-z] - input = input.replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`); + .replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`) // Example: [!-D] -> [!-Da-d] - input = input.replace(/\\?[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`); + .replace(/\\?[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`) // Example: [%-^] -> [%-^a-z] - input = input.replace(/\\?[ -@]-\\?[[-`]/g, m => `${m}a-z`); + .replace(/\\?[ -@]-\\?[[-`]/g, m => `${m}a-z`) // Example: [K-`] -> [K-`k-z] - input = input.replace(/[A-Z]-\\?[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`); + .replace(/[A-Z]-\\?[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`) // Example: [[-}] -> [[-}A-Z] - input = input.replace(/\\?[[-`]-\\?[{-~]/g, m => `${m}A-Z`); + .replace(/\\?[[-`]-\\?[{-~]/g, m => `${m}A-Z`) // Example: [b-}] -> [b-}B-Z] - input = input.replace(/[a-z]-\\?[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`); + .replace(/[a-z]-\\?[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`) // Example: [<-j] -> [<-z] - input = input.replace(/\\?[ -@]-[a-z]/g, m => `${m[0]}-z`); + .replace(/\\?[ -@]-[a-z]/g, m => `${m[0]}-z`) // Example: [^-j] -> [A-J^-j] - input = input.replace(/\\?[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); + .replace(/\\?[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); - return input; } } From c60ed2c4033dc04327bf9807decd822cd5be99ec Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 09:56:52 +0000 Subject: [PATCH 0159/1024] Linting on regex operation --- .../operations/ToCaseInsensitiveRegex.mjs | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 32c14a3c..9467b8c8 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -53,32 +53,32 @@ class ToCaseInsensitiveRegex extends Operation { // Example: [test] -> [[tT][eE][sS][tT]] return preProcess(input) - // Example: [A-Z] -> [A-Za-z] - .replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`) + // Example: [A-Z] -> [A-Za-z] + .replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`) - // Example: [H-d] -> [A-DH-dh-z] - .replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`) + // Example: [H-d] -> [A-DH-dh-z] + .replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`) - // Example: [!-D] -> [!-Da-d] - .replace(/\\?[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`) + // Example: [!-D] -> [!-Da-d] + .replace(/\\?[ -@]-[A-Z]/g, m => `${m}a-${m[2].toLowerCase()}`) - // Example: [%-^] -> [%-^a-z] - .replace(/\\?[ -@]-\\?[[-`]/g, m => `${m}a-z`) + // Example: [%-^] -> [%-^a-z] + .replace(/\\?[ -@]-\\?[[-`]/g, m => `${m}a-z`) - // Example: [K-`] -> [K-`k-z] - .replace(/[A-Z]-\\?[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`) + // Example: [K-`] -> [K-`k-z] + .replace(/[A-Z]-\\?[[-`]/g, m => `${m}${m[0].toLowerCase()}-z`) - // Example: [[-}] -> [[-}A-Z] - .replace(/\\?[[-`]-\\?[{-~]/g, m => `${m}A-Z`) + // Example: [[-}] -> [[-}A-Z] + .replace(/\\?[[-`]-\\?[{-~]/g, m => `${m}A-Z`) - // Example: [b-}] -> [b-}B-Z] - .replace(/[a-z]-\\?[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`) + // Example: [b-}] -> [b-}B-Z] + .replace(/[a-z]-\\?[{-~]/g, m => `${m}${m[0].toUpperCase()}-Z`) - // Example: [<-j] -> [<-z] - .replace(/\\?[ -@]-[a-z]/g, m => `${m[0]}-z`) + // Example: [<-j] -> [<-z] + .replace(/\\?[ -@]-[a-z]/g, m => `${m[0]}-z`) - // Example: [^-j] -> [A-J^-j] - .replace(/\\?[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); + // Example: [^-j] -> [A-J^-j] + .replace(/\\?[[-`]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}`); } } From 25ca8d85a6ddeb185b46ada43c0183972f5f73ba Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 11:14:56 +0000 Subject: [PATCH 0160/1024] Added extractor for OLE2 and modified the PLIST one. --- src/core/lib/FileSignatures.mjs | 110 +++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 3 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index dc7ced4d..e151a844 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2914,15 +2914,119 @@ export function extractSQLITE(bytes, offset) { export function extractPListXML(bytes, offset) { const stream = new Stream(bytes.slice(offset)); - // Find closing tag () - stream.continueUntil([0x3c, 0x2f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x3e]); - stream.moveForwardsBy(8); + let braceCount = 0; + + // Continue to the first ( 0 && stream.hasMore()) { + if (stream.readInt(1) === 0x3c) { + + // If we hit an . + if (stream.getBytes(7).join("") === [0x2f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x3e].join("")) { + braceCount--; + } else { + stream.moveBackwardsBy(7); + } + } + } stream.consumeIf(0x0a); return stream.carve(); } +/** + * OLE2 extractor. + * + * @param {Uint8Array} bytes + * @param {number} offset + * @returns {Uint8Array} + */ +export function extractOLE2(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + const entries = [[[0x52, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x20, 0x00, 0x45, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x72, 0x00, 0x79], 19, "Root Entry"], + [[0x57, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6b], 15, "Workbook"], + [[0x43, 0x00, 0x75, 0x00, 0x72, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x55, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72], 23, "Current User"], + [[0x50, 0x00, 0x6f, 0x00, 0x77, 0x00, 0x65, 0x00, 0x72, 0x00, 0x50, 0x00, 0x6f, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x63, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74], 37, "PowerPoint Document"], + [[0x57, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x64, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x63, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74], 23, "WordDocument"], + [[0x44, 0x00, 0x61, 0x00, 0x74, 0x00, 0x61], 7, "Data"], + [[0x50, 0x00, 0x69, 0x00, 0x63, 0x00, 0x74, 0x00, 0x75, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73], 15, "Pictures"], + [[0x31, 0x00, 0x54, 0x00, 0x61, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x65], 11, "1Table"], + [[0x05, 0x00, 0x53, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x72, 0x00, 0x79, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e], 37, "SummaryInformation"], + [[0x05, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x63, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x53, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x72, 0x00, 0x79, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e], 53, "DocumentSummaryInformation"], + [[0x43, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x6a], 13, "Comp Obj"], + [[0x01, 0x00], 2, "Entry"]]; + let endianness = "le"; + + // Move to endianess field. + stream.moveForwardsBy(28); + if (stream.readInt(2, endianness) === 0xfffe) + endianness = "le"; + + // Calculate the size of the normal sectors. + const sizeOfSector = 2 ** stream.readInt(2, endianness); + + // Move to root directory offset field. + stream.moveTo(48); + + // Read root directory offset. + const rootStuff = stream.readInt(4, endianness); + + // Calculate root directory offset. + let total = 512 + (rootStuff * sizeOfSector); + stream.moveTo(total); + let found = true; + + // While valid directory entries. + while (found) { + found = false; + + // Attempt to determine what directory entry it is. + for (const element of entries) { + if (stream.getBytes(element[1]).join("") === element[0].join("")) { + stream.moveBackwardsBy(element[1]); + found = true; + + // Move forwards by the size of the comp obj. + if (element[2] === "Comp Obj") { + total += (128*6); + stream.moveTo(total); + } else if (element[2] === "Entry") { + + // If there is an entry move backwards by 126 to then move forwards by 128. Hence a total displacement of 2. + stream.moveBackwardsBy(126); + } + break; + } + stream.moveBackwardsBy(element[1]); + } + + // If we have found a valid entry, move forwards by 128. + if (found) { + total += 128; + stream.moveForwardsBy(128); + } + } + + // Round up to a multiple of 512. + total = Math.ceil(total / 512) * 512; + + stream.moveTo(total); + return stream.carve(); +} + + /** * GZIP extractor. * From 7386c145ef8d22b8a1e7334c006d2ee58eee43f2 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 11:23:28 +0000 Subject: [PATCH 0161/1024] Comments for OLE2 extractor. --- src/core/lib/FileSignatures.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index e151a844..656df190 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2994,6 +2994,8 @@ export function extractOLE2(bytes, offset) { // Attempt to determine what directory entry it is. for (const element of entries) { + + // If the byte pattern matches. if (stream.getBytes(element[1]).join("") === element[0].join("")) { stream.moveBackwardsBy(element[1]); found = true; From 071c1bdea6af3131e98faf86f5a00bf8418ebe8b Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 11:29:45 +0000 Subject: [PATCH 0162/1024] Comments for OLE2 extractor. --- src/core/lib/FileSignatures.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 656df190..1683a950 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -3016,6 +3016,8 @@ export function extractOLE2(bytes, offset) { // If we have found a valid entry, move forwards by 128. if (found) { + + // Every entry is at least 128 in size, some are bigger which is dealt with by the above if statement. total += 128; stream.moveForwardsBy(128); } From 725b0d42f89e15f1ca3727cafb094167d4c53b94 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 11:34:11 +0000 Subject: [PATCH 0163/1024] Comments to OLE2 extractor --- src/core/lib/FileSignatures.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 1683a950..d997f823 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -3002,6 +3002,8 @@ export function extractOLE2(bytes, offset) { // Move forwards by the size of the comp obj. if (element[2] === "Comp Obj") { + + // The size of the Comp Obj entry - 128. Since we add 128 later. total += (128*6); stream.moveTo(total); } else if (element[2] === "Entry") { From 04036e001e3ca230bc19d3ed19d54c4ff17735ed Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 12:13:34 +0000 Subject: [PATCH 0164/1024] Comments and linting for regex operation. --- src/core/operations/ToCaseInsensitiveRegex.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 9467b8c8..5cb42d02 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -32,6 +32,7 @@ class ToCaseInsensitiveRegex extends Operation { * @returns {string} */ run(input, args) { + /** * Simulates look behind behaviour since javascript doesn't support it. * From a8917e4713420eadc7201502cc26a26cb4056604 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 21 Nov 2019 12:15:07 +0000 Subject: [PATCH 0165/1024] Updated dependencies --- package-lock.json | 3725 +++++++++++++++++++++++++++++---------------- package.json | 60 +- 2 files changed, 2439 insertions(+), 1346 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3ac2a46..8fe04294 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,19 +14,19 @@ } }, "@babel/core": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", - "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", + "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helpers": "^7.5.5", - "@babel/parser": "^7.5.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5", - "convert-source-map": "^1.1.0", + "@babel/generator": "^7.7.2", + "@babel/helpers": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.7.2", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", "lodash": "^4.17.13", @@ -35,6 +35,92 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -44,6 +130,12 @@ "ms": "^2.1.1" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -55,6 +147,12 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true } } }, @@ -80,54 +178,400 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", + "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", + "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", + "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-hoist-variables": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", + "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" } }, "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", + "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", + "@babel/helper-function-name": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", + "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-function-name": { @@ -151,53 +595,174 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", + "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", + "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", "dev": true, "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", + "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", + "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-simple-access": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", + "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-plugin-utils": { @@ -216,38 +781,316 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", + "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-wrap-function": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", + "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", + "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-split-export-declaration": { @@ -260,26 +1103,268 @@ } }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", + "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helpers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", - "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/highlight": { @@ -337,20 +1422,20 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz", + "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/helper-remap-async-to-generator": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz", + "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -368,9 +1453,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", - "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -388,14 +1473,13 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz", + "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-async-generators": { @@ -443,6 +1527,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz", + "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-transform-arrow-functions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", @@ -453,14 +1546,14 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", + "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-remap-async-to-generator": "^7.7.0" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -473,9 +1566,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz", - "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -483,26 +1576,89 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", + "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-define-map": "^7.7.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", "globals": "^11.1.0" }, "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true } } }, @@ -516,23 +1672,22 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz", - "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz", + "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-duplicate-keys": { @@ -564,13 +1719,69 @@ } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", + "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", + "@babel/helper-function-name": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/plugin-transform-literals": { @@ -603,45 +1814,45 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz", - "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", + "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-simple-access": "^7.7.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz", + "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-hoist-variables": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz", + "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz", + "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==", "dev": true, "requires": { - "regexp-tree": "^0.1.6" + "@babel/helper-create-regexp-features-plugin": "^7.7.0" } }, "@babel/plugin-transform-new-target": { @@ -684,9 +1895,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", + "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", "dev": true, "requires": { "regenerator-transform": "^0.14.0" @@ -702,9 +1913,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz", - "integrity": "sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", + "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -723,9 +1934,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -761,99 +1972,113 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", + "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/polyfill": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", - "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.7.0.tgz", + "integrity": "sha512-/TS23MVvo34dFmf8mwCisCbWGrfhbiWZSwBo6HkADTBhUa2Q/jWltyY/tpofz/b6/RIhqaqQcquptCirqIhOaQ==", "requires": { "core-js": "^2.6.5", "regenerator-runtime": "^0.13.2" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@babel/preset-env": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", - "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz", + "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.0", + "@babel/plugin-proposal-dynamic-import": "^7.7.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-syntax-top-level-await": "^7.7.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-async-to-generator": "^7.7.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.5.5", - "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-block-scoping": "^7.6.3", + "@babel/plugin-transform-classes": "^7.7.0", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.5.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.7.0", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.7.0", "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.5.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.0", + "@babel/plugin-transform-modules-systemjs": "^7.7.0", + "@babel/plugin-transform-modules-umd": "^7.7.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-regenerator": "^7.7.0", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/plugin-transform-unicode-regex": "^7.7.0", + "@babel/types": "^7.7.1", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", - "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -945,28 +2170,28 @@ } }, "@jimp/bmp": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.4.tgz", - "integrity": "sha512-dhKM7Cjw4XoOefx3/we2+vWyTP6hQPpM7mEsziGjtsrK2f/e3/+hhHbEsQNgO9BOA1FPJRXAOiYHts9IlMH1mg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.8.5.tgz", + "integrity": "sha512-o/23j1RODQGGjvb2xg+9ZQCHc9uXa5XIoJuXHN8kh8AJBGD7JZYiHMwNHaxJRJvadimCKUeA5udZUJAoaPwrYg==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "bmp-js": "^0.1.0", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.4.tgz", - "integrity": "sha512-nyiAXI8/uU54fGO53KrRB8pdn1s+IODZ+rj0jG2owsNJlTlagFrsZAy8IVTUCOiiXjh9TbwFo7D5XMrmi4KUww==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.8.5.tgz", + "integrity": "sha512-Jto1IdL5HYg7uE15rpQjK6dfZJ6d6gRjUsVCPW50nIfXgWizaTibFEov90W9Bj+irwKrX2ntG3e3pZUyOC0COg==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "any-base": "^1.1.0", "buffer": "^5.2.0", "core-js": "^2.5.7", @@ -980,444 +2205,444 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/custom": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.4.tgz", - "integrity": "sha512-sdBHrBoVr1+PFx4dlUAgXvvu4dG0esQobhg7qhpSLRje1ScavIgE2iXdJKpycgzrqwAOL8vW4/E5w2/rONlaoQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.8.5.tgz", + "integrity": "sha512-hS4qHOcOIL+N93IprsIhFgr8F4XnC2oYd+lRaOKEOg3ptS2vQnceSTtcXsC0//mhq8AV6lNjpbfs1iseEZuTqg==", "requires": { - "@jimp/core": "^0.6.4", + "@jimp/core": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/gif": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.4.tgz", - "integrity": "sha512-14mLoyG0UrYJsGNRoXBFvSJdFtBD0BSBwQ1zCNeW+HpQqdl+Kh5E1Pz4nqT2KNylJe1jypyR51Q2yndgcfGVyg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.8.5.tgz", + "integrity": "sha512-Mj8jmv4AS76OY+Hx/Xoyihj02SUZ2ELk+O5x89pODz1+NeGtSWHHjZjnSam9HYAjycvVI/lGJdk/7w0nWIV/yQ==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7", "omggif": "^1.0.9" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/jpeg": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.4.tgz", - "integrity": "sha512-NrFla9fZC/Bhw1Aa9vJ6cBOqpB5ylEPb9jD+yZ0fzcAw5HwILguS//oXv9EWLApIY1XsOMFFe0XWpY653rv8hw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.8.5.tgz", + "integrity": "sha512-7kjTY0BiCpwRywk+oPfpLto7cLI+9G0mf4N1bv1Hn+VLQwcXFy2fHyl4qjqLbbY6u4cyZgqN+R8Pg6GRRzv0kw==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7", "jpeg-js": "^0.3.4" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-blit": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.4.tgz", - "integrity": "sha512-suVznd4XozkQIuECX0u8kMl+cAQpZN3WcbWXUcJaVxRi+VBvHIetG1Qs5qGLzuEg9627+kE7ppv0UgZ5mkE6lg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.8.5.tgz", + "integrity": "sha512-r8Z1CwazaJwZCRbucQgrfprlGyH91tX7GubUsbWr+zy5/dRJAAgaPj/hcoHDwbh3zyiXp5BECKKzKW0x4reL4w==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-blur": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.4.tgz", - "integrity": "sha512-M2fDMYUUtEKVNnCJZk5J0KSMzzISobmWfnG88RdHXJCkOn98kdawQFwTsYOfJJfCM8jWfhIxwZLFhC/2lkTN2w==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.8.5.tgz", + "integrity": "sha512-UH5ywpV4YooUh9HXEsrNKDtojLCvIAAV0gywqn8EQeFyzwBJyXAvRNARJp7zr5OPLr9uGXkRLDCO9YyzdlXZng==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-color": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.4.tgz", - "integrity": "sha512-6Nfr2l9KSb6zH2fij8G6fQOw85TTkyRaBlqMvDmsQp/I1IlaDbXzA2C2Eh9jkQYZQDPu61B1MkmlEhJp/TUx6Q==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.8.5.tgz", + "integrity": "sha512-7XHqcTQ8Y1zto1b9P1y8m1dzSjnOpBsD9OZG0beTpeJ5bgPX+hF5ZLmvcM6c5ljkINw5EUF1it07BYbkCxiGQA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7", "tinycolor2": "^1.4.1" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-contain": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.4.tgz", - "integrity": "sha512-qI1MxU1noS6NbEPu/bDDeP405aMviuIsfpOz8J3En8IwIwrJV22qt6QIHmF+eyng8CYgivwIPjEPzFzLR566Nw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.8.5.tgz", + "integrity": "sha512-ZkiPFx9L0yITiKtYTYLWyBsSIdxo/NARhNPRZXyVF9HmTWSLDUw1c2c1uvETKxDZTAVK+souYT14DwFWWdhsYA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-cover": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.4.tgz", - "integrity": "sha512-z6eafPonj3LJY8cTEfRkXmOfCDi1+f0tbYaNvmiu+OrWJ3Ojw2hMt+BVVvJ8pKe1dWIFkCjxOjyjZWj1gEkaLw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.8.5.tgz", + "integrity": "sha512-OdT4YAopLOhbhTUQV3R1v5ZZqIaUt3n3vJi/OfTbsak1t9UkPBVdmYPyhoont8zJdtdkF5dW16Ro1FTshytcww==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-crop": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.4.tgz", - "integrity": "sha512-w9TR+pn+GeWbznscGe2HRkPxInge0whAF3TLPWhPwBVjZChTT8dSDXsUpUlxQqvI4SfzuKp8z3/0SBqYDCzxxA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.8.5.tgz", + "integrity": "sha512-E1Hb+gfu2k74Gkqh96apAyVljsP5MjCH4TY6lECAAEcYKGH/XRhz6lY2dSEjCYE7KtiqjTZzWwYkgAvkwojj9Q==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-displace": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.4.tgz", - "integrity": "sha512-MEvtBXOAio/3iGJkKBrTtFs3Q38ez2Wy/wTD0Ruas+L8fjJR7l4mDgV+zjRr57CqB5mpY+L48VEoa2/gNXh9cg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.8.5.tgz", + "integrity": "sha512-fVgVYTS1HZzAXkg8Lg06PuirSUG5oXYaYYGL+3ZU4tmZn1pyZ+mZyfejpwtymETEYZnmymHoCT4xto19E/IRvA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-dither": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.4.tgz", - "integrity": "sha512-w+AGLcIMUeJZ4CI0FvFomahgKLcW+ICsLidUNOqyLzceluPAfug4X7vDhQ41pNkzKg0M1+Q1j0aWV8bdyF+LhA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.8.5.tgz", + "integrity": "sha512-KSj2y8E3yK7tldjT/8ejqAWw5HFBjtWW6QkcxfW7FdV4c/nsXZXDkMbhqMZ7FkDuSYoAPeWUFeddrH4yipC5iA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-flip": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.4.tgz", - "integrity": "sha512-ukINMegMUM9KYjyDCiyYKYdSsbhNRLHDwOJN0xVRalmOKqNaZmjNbiMbaVxKlYt6sHW76RhSMOekw9f6GQB9tQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.8.5.tgz", + "integrity": "sha512-2QbGDkurPNAXZUeHLo/UA3tjh+AbAXWZKSdtoa1ArlASovRz8rqtA45YIRIkKrMH82TA3PZk8bgP2jaLKLrzww==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-gaussian": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.4.tgz", - "integrity": "sha512-C1P6ohzIddpNb7CX5X+ygbp+ow8Fpt64ZLoIgdjYPs/42HxKluvY62fVfMhY6m5zUGKIMbg0uYeAtz/9LRJPyw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.8.5.tgz", + "integrity": "sha512-2zReC5GJcVAXtf3UgzFcHSYN277i02K9Yrhc1xJf3mti00s43uD++B5Ho7/mIo+HrntVvWhxqar7PARdq0lVIg==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-invert": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.4.tgz", - "integrity": "sha512-sleGz1jXaNEsP/5Ayqw8oez/6KesWcyCqovIuK4Z4kDmMc2ncuhsXIJQXDWtIF4tTQVzNEgrxUDNA4bi9xpCUA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.8.5.tgz", + "integrity": "sha512-GyMXPGheHdS14xfDceuZ9hrGm6gE9UG3PfTEjQbJmHMWippLC6yf8kombSudJlUf8q72YYSSXsSFKGgkHa67vA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-mask": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.4.tgz", - "integrity": "sha512-3D4FbRxnpO9nzwa6cF8AImgO1aVReYbfRRO4I4bku4/iZ+kuU3fBLV+SRhB4c7di3ejG5u+rGsIfaNc94iYYvw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.8.5.tgz", + "integrity": "sha512-inD/++XO+MkmwXl9JGYQ8X2deyOZuq9i+dmugH/557p16B9Q6tvUQt5X1Yg5w7hhkLZ00BKOAJI9XoyCC1NFvQ==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-normalize": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.4.tgz", - "integrity": "sha512-nOFMwOaVkOKArHkD/T6/1HKAPj3jlW6l0JduVDn1A5eIPCtlnyhlE9zdjgi5Q9IBR/gRjwW6tTzBKuJenS51kg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.8.5.tgz", + "integrity": "sha512-8YRWJWBT4NoSAbPhnjQJXGeaeWVrJAlGDv39A54oNH8Ry47fHcE0EN6zogQNpBuM34M6hRnZl4rOv1FIisaWdg==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-print": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.4.tgz", - "integrity": "sha512-3z5DLVCKg0NfZhHATEaYH/4XanIboPP1pOUoxIUeF++qOnGiGgH2giFJlRprHmx2l3E3DukR1v8pt54PGvfrFw==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.8.5.tgz", + "integrity": "sha512-BviNpCiA/fEieOqsrWr1FkqyFuiG2izdyyg7zUqyeUTHPwqrTLvXO9cfP/ThG4hZpu5wMQ5QClWSqhZu1fAwxA==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7", "load-bmfont": "^1.4.0" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-resize": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.4.tgz", - "integrity": "sha512-fk2+KheUNClrOWj6aDNWj1r4byVQb6Qxy4aT1UHX5GXPHDA+nhlej7ghaYdzeWZYodeM3lpasYtByu1XE2qScQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.8.5.tgz", + "integrity": "sha512-gIdmISuNmZQ1QwprnRC5VXVWQfKIiWineVQGebpMAG/aoFOLDXrVl939Irg7Fb/uOlSFTzpAbt1zpJ8YG/Mi2w==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-rotate": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.4.tgz", - "integrity": "sha512-44VgV5D4xQIYInJAVevdW9J3SOhGKyz0OEr2ciA8Q3ktonKx0O5Q1g2kbruiqxFSkK/u2CKPLeKXZzYCFrmJGQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.8.5.tgz", + "integrity": "sha512-8T9wnL3gb+Z0ogMZmtyI6h3y7TuqW2a5SpFbzFUVF+lTZoAabXjEfX3CAozizCLaT+Duc5H2FJVemAHiyr+Dbw==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugin-scale": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.4.tgz", - "integrity": "sha512-RAQRaDiCHmEz+A8QS5d/Z38EnlNsQizz3Mu3NsjA8uFtJsv1yMKWXZSQuzniofZw8tlMV6oI3VdM0eQVE07/5w==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.8.5.tgz", + "integrity": "sha512-G+CDH9s7BsxJ4b+mKZ5SsiXwTAynBJ+7/9SwZFnICZJJvLd79Tws6VPXfSaKJZuWnGIX++L8jTGmFORCfLNkdg==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/plugins": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.4.tgz", - "integrity": "sha512-NpO/87CKnF4Q9r8gMl6w+jPKOM/C089qExkViD9cPvcFZEnyVOu7ucGzcMmTcabWOU62iQTOkRViPYr6XaK0LQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.8.5.tgz", + "integrity": "sha512-52na0wqfQ3uItIA+C9cJ1EXffhSmABgK7ETClDseUh9oGtynHzxZ97smnFf1ydLjXLrF89Gt+YBxWLyiBGgiZQ==", "requires": { - "@jimp/plugin-blit": "^0.6.4", - "@jimp/plugin-blur": "^0.6.4", - "@jimp/plugin-color": "^0.6.4", - "@jimp/plugin-contain": "^0.6.4", - "@jimp/plugin-cover": "^0.6.4", - "@jimp/plugin-crop": "^0.6.4", - "@jimp/plugin-displace": "^0.6.4", - "@jimp/plugin-dither": "^0.6.4", - "@jimp/plugin-flip": "^0.6.4", - "@jimp/plugin-gaussian": "^0.6.4", - "@jimp/plugin-invert": "^0.6.4", - "@jimp/plugin-mask": "^0.6.4", - "@jimp/plugin-normalize": "^0.6.4", - "@jimp/plugin-print": "^0.6.4", - "@jimp/plugin-resize": "^0.6.4", - "@jimp/plugin-rotate": "^0.6.4", - "@jimp/plugin-scale": "^0.6.4", + "@jimp/plugin-blit": "^0.8.5", + "@jimp/plugin-blur": "^0.8.5", + "@jimp/plugin-color": "^0.8.5", + "@jimp/plugin-contain": "^0.8.5", + "@jimp/plugin-cover": "^0.8.5", + "@jimp/plugin-crop": "^0.8.5", + "@jimp/plugin-displace": "^0.8.5", + "@jimp/plugin-dither": "^0.8.5", + "@jimp/plugin-flip": "^0.8.5", + "@jimp/plugin-gaussian": "^0.8.5", + "@jimp/plugin-invert": "^0.8.5", + "@jimp/plugin-mask": "^0.8.5", + "@jimp/plugin-normalize": "^0.8.5", + "@jimp/plugin-print": "^0.8.5", + "@jimp/plugin-resize": "^0.8.5", + "@jimp/plugin-rotate": "^0.8.5", + "@jimp/plugin-scale": "^0.8.5", "core-js": "^2.5.7", "timm": "^1.6.1" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/png": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.4.tgz", - "integrity": "sha512-qv3oo6ll3XWVIToBwVC1wQX0MFKwpxbe2o+1ld9B4ZDavqvAHzalzcmTd/iyooI85CVDAcC3RRDo66oiizGZCQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.8.5.tgz", + "integrity": "sha512-zT89ucu8I2rsD3FIMIPLgr1OyKn4neD+5umwD3MY8AOB8+6tX5bFtnmTm3FzGJaJuibkK0wFl87eiaxnb+Megw==", "requires": { - "@jimp/utils": "^0.6.4", + "@jimp/utils": "^0.8.5", "core-js": "^2.5.7", "pngjs": "^3.3.3" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/tiff": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.4.tgz", - "integrity": "sha512-8/vD4qleexmhPdppiu6fSstj/n/kGNTn8iIlf1emiqOuMN2PL9q5GOPDWU0xWdGNyJMMIDXJPgUFUkKfqXdg7w==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.8.5.tgz", + "integrity": "sha512-Z7uzDcbHuwDg+hy2+UJQ2s5O6sqYXmv6H1fmSf/2dxBrlGMzl8yTc2/BxLrGREeoidDDMcKmXYGAOp4uCsdJjw==", "requires": { "core-js": "^2.5.7", "utif": "^2.0.1" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/types": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.4.tgz", - "integrity": "sha512-/EMbipQDg5U6DnBAgcSiydlMBRYoKhnaK7MJRImeTzhDJ6xfgNOF7lYq66o0kmaezKdG/cIwZ1CLecn2y3D8SQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.8.5.tgz", + "integrity": "sha512-XUvpyebZGd1vyFiJyxUT4H9A3mKD7MV2MxjXnay3fNTrcow0UJJspmFw/w+G3TP/1dgrVC4K++gntjR6QWTzvg==", "requires": { - "@jimp/bmp": "^0.6.4", - "@jimp/gif": "^0.6.4", - "@jimp/jpeg": "^0.6.4", - "@jimp/png": "^0.6.4", - "@jimp/tiff": "^0.6.4", + "@jimp/bmp": "^0.8.5", + "@jimp/gif": "^0.8.5", + "@jimp/jpeg": "^0.8.5", + "@jimp/png": "^0.8.5", + "@jimp/tiff": "^0.8.5", "core-js": "^2.5.7", "timm": "^1.6.1" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.4.tgz", - "integrity": "sha512-EFQurCyEnZLSM2Q1BYDTUmsOJPSOYEQd18Fvq8bGo8hnBHoGLWLWWyNi2l4cYhtpKmIXyhvQqa6/WaEpKPzvqA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.8.5.tgz", + "integrity": "sha512-D3+H4BiopDkhUKvKkZTPPJ53voqOkfMuk3r7YZNcLtXGLkchjjukC4056lNo7B0DzjBgowTYsQM3JjKnYNIYeg==", "requires": { "core-js": "^2.5.7" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, @@ -1738,9 +2963,9 @@ } }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, "acorn-walk": { @@ -1816,10 +3041,13 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "ansi-html": { "version": "0.0.7", @@ -1866,38 +3094,6 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "arg": { @@ -2009,23 +3205,6 @@ "dev": true, "requires": { "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } } }, "assert-plus": { @@ -2098,18 +3277,18 @@ "dev": true }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.7.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.2.tgz", + "integrity": "sha512-LCAfcdej1182uVvPOZnytbq61AhnOZ/4JelDaJGDeNwewyU1AMaNthcHsyz1NRjTmd2FkurMckLWfkHg3Z//KA==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.7.3", + "caniuse-lite": "^1.0.30001010", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.23", + "postcss-value-parser": "^4.0.2" }, "dependencies": { "ansi-styles": { @@ -2132,6 +3311,28 @@ "supports-color": "^5.3.0" } }, + "postcss": { + "version": "7.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz", + "integrity": "sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss-value-parser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", @@ -2479,9 +3680,9 @@ "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" }, "bn": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bn/-/bn-1.0.4.tgz", - "integrity": "sha512-QGhwlcq0nhbM2and/pkIhFBmIkrKlnoDUVXPfeEEyJSHQb2yI1C60f1YFiMX+skQ9s3urJrTAAImgXw3Jocj0g==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bn/-/bn-1.0.5.tgz", + "integrity": "sha512-7TvGbqbZb6lDzsBtNz1VkdXXV0BVmZKPPViPmo2IpvwaryF7P+QKYKACyVkwo2mZPr2CpFiz7EtgPEcc3o/JFQ==" }, "bn.js": { "version": "4.11.8", @@ -2747,14 +3948,14 @@ } }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", + "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30001010", + "electron-to-chromium": "^1.3.306", + "node-releases": "^1.1.40" } }, "bson": { @@ -2778,9 +3979,9 @@ } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -2870,15 +4071,6 @@ "y18n": "^4.0.0" }, "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -2887,18 +4079,6 @@ "requires": { "glob": "^7.1.3" } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true } } }, @@ -2986,9 +4166,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30001011", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz", + "integrity": "sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg==", "dev": true }, "caseless": { @@ -3067,27 +4247,6 @@ "upath": "^1.1.1" }, "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3097,9 +4256,9 @@ } }, "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", "dev": true }, "chrome-trace-event": { @@ -3112,9 +4271,9 @@ } }, "chromedriver": { - "version": "77.0.0", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-77.0.0.tgz", - "integrity": "sha512-mZa1IVx4HD8rDaItWbnS470mmypgiWsDiu98r0NkiT4uLm3qrANl4vOU6no6vtWtLQiW5kt1POcIbjeNpsLbXA==", + "version": "78.0.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-78.0.1.tgz", + "integrity": "sha512-eOsyFk4xb9EECs1VMrDbxO713qN+Bu1XUE8K9AuePc3839TPdAegg72kpXSzkeNqRNZiHbnJUItIVCLFkDqceA==", "dev": true, "requires": { "del": "^4.1.1", @@ -3181,12 +4340,12 @@ } }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -3299,9 +4458,9 @@ "dev": true }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { @@ -3359,12 +4518,6 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true } } }, @@ -3396,23 +4549,6 @@ "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" - }, - "dependencies": { - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - } } }, "connect-history-api-fallback": { @@ -3428,13 +4564,10 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -3470,9 +4603,9 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -3511,12 +4644,12 @@ "dev": true }, "copy-webpack-plugin": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz", - "integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.5.tgz", + "integrity": "sha512-7N68eIoQTyudAuxkfPT7HzGoQ+TsmArN/I3HFwG+lVE3FNzqvZKIiaxtYh4o3BIznioxUvx9j26+Rtsc9htQUQ==", "dev": true, "requires": { - "cacache": "^11.3.3", + "cacache": "^12.0.3", "find-cache-dir": "^2.1.0", "glob-parent": "^3.1.0", "globby": "^7.1.1", @@ -3524,9 +4657,9 @@ "loader-utils": "^1.2.3", "minimatch": "^3.0.4", "normalize-path": "^3.0.0", - "p-limit": "^2.2.0", + "p-limit": "^2.2.1", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^2.1.0", "webpack-log": "^2.0.0" }, "dependencies": { @@ -3536,49 +4669,6 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "cacache": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "globby": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", @@ -3593,12 +4683,6 @@ "slash": "^1.0.0" } }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -3619,36 +4703,27 @@ "json5": "^1.0.1" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -3659,33 +4734,21 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true } } }, "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", + "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==" }, "core-js-compat": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", - "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.1.tgz", + "integrity": "sha512-YdeJI26gLc0CQJ9asLE5obEgBz2I0+CIgnoTbS2T0d5IPQw/OCgCIFR527RmpduxjrB3gSEHoGOCTq9sigOyfw==", "dev": true, "requires": { - "browserslist": "^4.6.6", + "browserslist": "^4.7.2", "semver": "^6.3.0" }, "dependencies": { @@ -3960,15 +5023,15 @@ "dev": true }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "d3": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.11.0.tgz", - "integrity": "sha512-LXgMVUAEAzQh6WfEEOa8tJX4RA64ZJ6twC3CJ+Xzid+fXWLTZkkglagXav/eOoQgzQi5rzV0xC4Sfspd6hFDHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.14.2.tgz", + "integrity": "sha512-Ccipa9XrYW5N0QkP6u0Qb8kU6WekIXBiDenmZm1zLvuq/9pBBhRCJLCICEOsH5Og4B0Xw02bhqGkK5VN/oPH0w==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -4014,9 +5077,9 @@ "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" }, "d3-brush": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.3.tgz", - "integrity": "sha512-v8bbYyCFKjyCzFk/tdWqXwDykY8YWqhXYjcYxfILIit085VZOpj4XJKOMccTsvWxgzSLMJQg5SiqHjslsipEDg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.5.tgz", + "integrity": "sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A==", "requires": { "d3-dispatch": "1", "d3-drag": "1", @@ -4040,9 +5103,9 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "d3-color": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.3.0.tgz", - "integrity": "sha512-NHODMBlj59xPAwl2BDiO2Mog6V+PrGRtBfWKqKRrs9MCqlSkIEb0Z/SfY7jW29ReHTDC/j+vwXhnZcXI3+3fbg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", + "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" }, "d3-contour": { "version": "1.3.2", @@ -4053,23 +5116,23 @@ } }, "d3-dispatch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.5.tgz", - "integrity": "sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" }, "d3-drag": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.4.tgz", - "integrity": "sha512-ICPurDETFAelF1CTHdIyiUM4PsyZLaM+7oIBhmyP+cuVjze5vDZ8V//LdOFjg0jGnFIZD/Sfmk0r95PSiu78rw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", "requires": { "d3-dispatch": "1", "d3-selection": "1" } }, "d3-dsv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.1.1.tgz", - "integrity": "sha512-1EH1oRGSkeDUlDRbhsFytAXU6cAmXFzc52YUe6MRlPClmWb85MP1J5x+YJRzya4ynZWnbELdSAvATFW/MbxaXw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", "requires": { "commander": "2", "iconv-lite": "0.4", @@ -4077,9 +5140,9 @@ } }, "d3-ease": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.5.tgz", - "integrity": "sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", + "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" }, "d3-fetch": { "version": "1.1.2", @@ -4101,14 +5164,14 @@ } }, "d3-format": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", - "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.2.tgz", + "integrity": "sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww==" }, "d3-geo": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.11.6.tgz", - "integrity": "sha512-z0J8InXR9e9wcgNtmVnPTj0TU8nhYT6lD/ak9may2PdKqXIeHUr8UbFLoCtrPYNsjv6YaLvSDQVl578k6nm7GA==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.11.9.tgz", + "integrity": "sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A==", "requires": { "d3-array": "1" } @@ -4119,32 +5182,32 @@ "integrity": "sha1-nFg32s/UcasFM3qeke8Qv8T5iDE=" }, "d3-hierarchy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz", - "integrity": "sha512-L+GHMSZNwTpiq4rt9GEsNcpLa4M96lXMR8M/nMG9p5hBE0jy6C+3hWtyZMenPQdwla249iJy7Nx0uKt3n+u9+w==" + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" }, "d3-interpolate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", - "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", "requires": { "d3-color": "1" } }, "d3-path": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.8.tgz", - "integrity": "sha512-J6EfUNwcMQ+aM5YPOB8ZbgAZu6wc82f/0WFxrxwV6Ll8wBwLaHLKCqQ5Imub02JriCVVdPjgI+6P3a4EWJCxAg==" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" }, "d3-polygon": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.5.tgz", - "integrity": "sha512-RHhh1ZUJZfhgoqzWWuRhzQJvO7LavchhitSTHGu9oj6uuLFzYZVeBzaWTQ2qSO6bz2w55RMoOCf0MsLCDB6e0w==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" }, "d3-quadtree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.6.tgz", - "integrity": "sha512-NUgeo9G+ENQCQ1LsRr2qJg3MQ4DJvxcDNCiohdJGHt5gRhBW6orIB5m5FJ9kK3HNL8g9F4ERVoBzcEwQBfXWVA==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" }, "d3-random": { "version": "1.1.2", @@ -4174,40 +5237,40 @@ } }, "d3-selection": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.0.tgz", - "integrity": "sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.1.tgz", + "integrity": "sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==" }, "d3-shape": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.5.tgz", - "integrity": "sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", "requires": { "d3-path": "1" } }, "d3-time": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.11.tgz", - "integrity": "sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" }, "d3-time-format": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", - "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.2.tgz", + "integrity": "sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw==", "requires": { "d3-time": "1" } }, "d3-timer": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.9.tgz", - "integrity": "sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg==" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" }, "d3-transition": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.2.0.tgz", - "integrity": "sha512-VJ7cmX/FPIPJYuaL2r1o1EMHLttvoIuZhhuAlRoOxDzogV8iQS6jYulDm3xEU3TqL80IZIhI551/ebmCMrkvhw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", "requires": { "d3-color": "1", "d3-dispatch": "1", @@ -4244,21 +5307,10 @@ } }, "data-uri-to-buffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz", - "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==", - "dev": true, - "requires": { - "@types/node": "^8.0.7" - }, - "dependencies": { - "@types/node": { - "version": "8.10.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.53.tgz", - "integrity": "sha512-aOmXdv1a1/vYUn1OT1CED8ftbkmmYbKhKGSyMDeJiidLvKRKvZUQOdXwG/wcNY7T1Qb0XTlVdiYjIq00U7pLrQ==", - "dev": true - } - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true }, "data-urls": { "version": "1.1.0", @@ -4290,12 +5342,6 @@ } } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "dateformat": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", @@ -4336,9 +5382,9 @@ } }, "deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -4498,9 +5544,9 @@ "dev": true }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -4753,21 +5799,21 @@ "dev": true }, "ejs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", - "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true }, "electron-to-chromium": { - "version": "1.3.245", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.245.tgz", - "integrity": "sha512-W1Tjm8VhabzYmiqLUD/sT/KTKkvZ8QpSkbTfLELBrFdnrolfkCgcbxFE3NXAxL5xedWXF74wWn0j6oVrgBdemw==", + "version": "1.3.309", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.309.tgz", + "integrity": "sha512-NZd91XD15v2UPLjYXoN/gLnkwIUQjdH4SQLpRCCQiYJH6BBkfgp5pWemBJPr1rZ2dl8Ee3o91O9Sa1QuAfZmog==", "dev": true }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -4780,9 +5826,9 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { @@ -4807,20 +5853,32 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" }, "errno": { "version": "0.1.7", @@ -4955,9 +6013,9 @@ } }, "eslint": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", - "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", + "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -4967,9 +6025,9 @@ "debug": "^4.0.1", "doctrine": "^3.0.0", "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.2", + "eslint-utils": "^1.4.3", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.1", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -4979,7 +6037,7 @@ "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.4.1", + "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -5046,12 +6104,27 @@ "ms": "^2.1.1" } }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5107,12 +6180,12 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -5210,20 +6283,20 @@ } }, "espree": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", - "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", "dev": true, "requires": { - "acorn": "^7.0.0", - "acorn-jsx": "^5.0.2", + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", "eslint-visitor-keys": "^1.1.0" }, "dependencies": { "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true } } @@ -5291,9 +6364,9 @@ "dev": true }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, "events": { @@ -5684,9 +6757,9 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -5933,14 +7006,6 @@ } } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -6716,60 +7781,17 @@ } }, "get-uri": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", - "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", "dev": true, "requires": { - "data-uri-to-buffer": "2", - "debug": "4", + "data-uri-to-buffer": "1", + "debug": "2", "extend": "~3.0.2", "file-uri-to-path": "1", "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } + "readable-stream": "2" } }, "get-value": { @@ -6808,12 +7830,24 @@ } }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "global": { @@ -7014,15 +8048,15 @@ } }, "grunt-contrib-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-2.0.0.tgz", - "integrity": "sha512-JVjM9UDP84WbT2S7swkyuwPuxFtT+zry/RUBuP3IT8LZPEQjtzzMwiM+qimswNKQ9plh5WhcFWaaqz2ruB9/DA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-2.1.0.tgz", + "integrity": "sha512-yeCHdz5zqoibhQDyw/X+E/wTzYPpim+C2p+xYyXUsXVEkfxnKVIWYOWrAKkFHlz9//nIC0S3JbUDd3mVvJcxVA==", "dev": true, "requires": { "async": "^2.6.1", "connect": "^3.6.6", "connect-livereload": "^0.6.0", - "morgan": "^1.9.0", + "morgan": "^1.9.1", "node-http2": "^4.0.1", "opn": "^5.3.0", "portscanner": "^2.2.0", @@ -7366,9 +8400,9 @@ "dev": true }, "highlight.js": { - "version": "9.15.10", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", - "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==" + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", + "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==" }, "hmac-drbg": { "version": "1.0.1", @@ -7541,12 +8575,12 @@ "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -7602,9 +8636,9 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", "dev": true, "requires": { "agent-base": "^4.3.0", @@ -7648,9 +8682,9 @@ } }, "iced-runtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/iced-runtime/-/iced-runtime-1.0.3.tgz", - "integrity": "sha1-LU9PuZmreqVDCxk8d6f85BGDGc4=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/iced-runtime/-/iced-runtime-1.0.4.tgz", + "integrity": "sha512-rgiJXNF6ZgF2Clh/TKUlBDW3q51YPDJUXmxGQXx1b8tbZpVpTn+1RX9q1sjNkujXIIaVxZByQzPHHORg7KV51g==" }, "iconv-lite": { "version": "0.4.24", @@ -7686,9 +8720,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, "import-cwd": { @@ -7701,9 +8735,9 @@ } }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -7803,22 +8837,22 @@ "dev": true }, "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.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", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", "rxjs": "^6.4.0", - "string-width": "^2.1.0", + "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, @@ -7849,6 +8883,12 @@ "supports-color": "^5.3.0" } }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -7912,9 +8952,9 @@ "dev": true }, "is-absolute-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.1.tgz", - "integrity": "sha512-c2QjUwuMxLsld90sj3xYzpFYWJtuxkIn1f5ua9RTEYJt/vV2IsM+Py00/6qjV7qExgifUvt7qfyBGBBKm+2iBg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, "is-accessor-descriptor": { @@ -8060,9 +9100,9 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-function": { @@ -8246,28 +9286,33 @@ "dev": true }, "jimp": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.4.tgz", - "integrity": "sha512-WQVMoNhkcq/fgthZOWeMdIguCVPg+t4PDFfSxvbNcrECwl8eq3/Ou2whcFWWjyW45m43yAJEY2UT7acDKl6uSQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.8.5.tgz", + "integrity": "sha512-BW7t/+TCgKpqZw/wHFwqF/A/Tyk43RmzRHyMBdqfOepqunUrajt0RTqowdWyFo4CS2FmD8pFiYfefWjpXFWrCA==", "requires": { - "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.6.4", - "@jimp/plugins": "^0.6.4", - "@jimp/types": "^0.6.4", - "core-js": "^2.5.7" + "@jimp/custom": "^0.8.5", + "@jimp/plugins": "^0.8.5", + "@jimp/types": "^0.8.5", + "core-js": "^2.5.7", + "regenerator-runtime": "^0.13.3" }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" } } }, "jpeg-js": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.5.tgz", - "integrity": "sha512-hvaExqwmQDS8O9qnZAVDXGWU43Tbu1V0wMZmjROjT11jloSgGICZpscG+P6Nyi1BVAvyu2ARRx8qmEW30sxgdQ==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.6.tgz", + "integrity": "sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw==" }, "jquery": { "version": "3.4.1", @@ -8275,9 +9320,9 @@ "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", "dev": true }, "js-crc": { @@ -8401,9 +9446,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -8518,21 +9563,21 @@ } }, "kbpgp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/kbpgp/-/kbpgp-2.1.3.tgz", - "integrity": "sha512-Bnej67+byG2KUVMzCIQQszANru7+5OSpUOEGwacAmIEYrmC45KtpLQBT9RDgXjIbFc7jblKPiTBpz1wMhbZk4g==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/kbpgp/-/kbpgp-2.1.6.tgz", + "integrity": "sha512-GNJibWhvJhyiCvD5W7u6U36wmzQzvQTu86n3j05Ia+o75xvz3GDKzDXQpwkaEzTO/V4vfAHgQ4zntcrChhb9mQ==", "requires": { - "bn": "^1.0.0", + "bn": "^1.0.5", "bzip-deflate": "^1.0.0", - "deep-equal": ">=0.2.1", - "iced-error": ">=0.0.10", + "deep-equal": "^1.1.0", + "iced-error": "0.0.13", "iced-lock": "^1.0.2", - "iced-runtime": "^1.0.3", - "keybase-ecurve": "^1.0.0", - "keybase-nacl": "^1.1.0", + "iced-runtime": "^1.0.4", + "keybase-ecurve": "^1.0.1", + "keybase-nacl": "^1.1.2", "minimist": "^1.2.0", - "pgp-utils": ">=0.0.34", - "purepack": ">=1.0.4", + "pgp-utils": "0.0.35", + "purepack": "^1.0.5", "triplesec": "^4.0.3", "tweetnacl": "^0.13.1" } @@ -8544,17 +9589,17 @@ "dev": true }, "keybase-ecurve": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/keybase-ecurve/-/keybase-ecurve-1.0.0.tgz", - "integrity": "sha1-xrxyrdpGA/0xhP7n6ZaU7Y/WmtI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/keybase-ecurve/-/keybase-ecurve-1.0.1.tgz", + "integrity": "sha512-2GlVxDsNF+52LtYjgFsjoKuN7MQQgiVeR4HRdJxLuN8fm4mf4stGKPUjDJjky15c/98UsZseLjp7Ih5X0Sy1jQ==", "requires": { - "bn": "^1.0.0" + "bn": "^1.0.4" } }, "keybase-nacl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/keybase-nacl/-/keybase-nacl-1.1.1.tgz", - "integrity": "sha512-w5mFuwy/QPHou5apJBXqfG/QBoKG62F3FNf7FdSNFO42/atiEy4YT3jKQ7rfGc5cxnE+L+JcFaAaMGXdJ8QMeQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/keybase-nacl/-/keybase-nacl-1.1.2.tgz", + "integrity": "sha512-hCF2xlJioCyEJ93jUbVp3vo785DqygG9P1at374GWUTiTk9AiZ/ChgQxAr4+VbrAbiVN+JDfWb2/QtpIND91mw==", "requires": { "iced-runtime": "^1.0.2", "tweetnacl": "^0.13.1", @@ -8643,13 +9688,6 @@ "phin": "^2.9.1", "xhr": "^2.0.1", "xtend": "^4.0.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - } } }, "load-json-file": { @@ -8873,9 +9911,9 @@ "dev": true }, "loglevel": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", - "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==" + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", + "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==" }, "loglevel-message-prefix": { "version": "3.0.0", @@ -8916,13 +9954,12 @@ "dev": true }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^3.0.2" } }, "mamacro": { @@ -8962,12 +9999,12 @@ } }, "markdown-it": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-9.1.0.tgz", - "integrity": "sha512-xHKG4C8iPriyfu/jc2hsCC045fKrMQ0VexX2F1FGYiRxDxqMB2aAhF8WauJ3fltn2kb90moGBkiiEdooGIg55w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", "requires": { "argparse": "^1.0.7", - "entities": "~1.1.1", + "entities": "~2.0.0", "linkify-it": "^2.0.0", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" @@ -9004,14 +10041,6 @@ "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } } }, "memory-fs": { @@ -9086,10 +10115,9 @@ } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.40.0", @@ -9107,9 +10135,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "min-document": { @@ -9327,9 +10355,9 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "moment-timezone": { - "version": "0.5.26", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", - "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", + "version": "0.5.27", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", + "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", "requires": { "moment": ">= 2.9.0" } @@ -9400,8 +10428,7 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -9464,9 +10491,9 @@ "dev": true }, "nightwatch": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.2.1.tgz", - "integrity": "sha512-y9ihK6Xmo6A32B6zG4XlWumF5f6gIE5QQP54o4PHpnjC4+CA9xwVMtXZL6QlnNYlqS0n34Pk/wpvKL2znjCh0g==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.2.4.tgz", + "integrity": "sha512-RoO2/leXXTWG/iAcdW1+sN3RV+bL2P4F9B/ty/wJQmsJw2PLduqvbi7cmkwdNGhh/yaIwIcBxyGHqdB0G754hg==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -9589,6 +10616,12 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -9618,6 +10651,15 @@ "requires": { "setimmediate": "^1.0.4" } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, @@ -9627,18 +10669,26 @@ "integrity": "sha1-9WH0WyszY1K4KXbFHMoRR9U5N/U=" }, "node-releases": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.29.tgz", - "integrity": "sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ==", + "version": "1.1.40", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", + "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "node-sass": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", - "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", + "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -9648,7 +10698,7 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", "nan": "^2.13.2", @@ -9670,18 +10720,28 @@ "which": "^1.2.9" } }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } }, "nodom": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nodom/-/nodom-2.2.0.tgz", - "integrity": "sha512-+W3jlsobV3NNkO15xQXkWoboeq1RPa/SKi8NMHmWF33SCMX4ALcM5dpPLEnUs69Gu+uZoCX9wcWXy866LXvd8w==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/nodom/-/nodom-2.4.0.tgz", + "integrity": "sha512-qhfYgpoCSi37HLiViMlf94YqMQdvk3n3arI1uGbAWZK9NKCYRSI42W8lATeGloYGLYxb8us1C5rTvtsXjwdWQg==" }, "nopt": { "version": "3.0.6", @@ -9873,7 +10933,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.5.1" @@ -9895,9 +10954,9 @@ "dev": true }, "omggif": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", - "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" }, "on-finished": { "version": "2.3.0", @@ -9909,9 +10968,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -9924,12 +10983,12 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "opencollective-postinstall": { @@ -9944,9 +11003,9 @@ "dev": true }, "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { "is-wsl": "^1.1.0" @@ -10101,16 +11160,16 @@ "dev": true }, "pac-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", - "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", "dev": true, "requires": { "agent-base": "^4.2.0", - "debug": "^3.1.0", + "debug": "^4.1.1", "get-uri": "^2.0.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "https-proxy-agent": "^3.0.0", "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" @@ -10123,9 +11182,9 @@ "dev": true }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -10200,12 +11259,12 @@ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -10229,9 +11288,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -10262,13 +11321,9 @@ } }, "parse-headers": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", - "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", - "requires": { - "for-each": "^0.3.3", - "string.prototype.trim": "^1.1.2" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" }, "parse-json": { "version": "2.2.0", @@ -10476,25 +11531,43 @@ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" }, "portfinder": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.23.tgz", - "integrity": "sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" }, "dependencies": { "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -10846,25 +11919,25 @@ } }, "proxy-agent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.0.tgz", - "integrity": "sha512-IkbZL4ClW3wwBL/ABFD2zJ8iP84CY0uKMvBPk/OceQe/cEjrxzN1pMHsLwhbzUoRhG9QbSxYC+Z7LBkTiBNvrA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", "dev": true, "requires": { "agent-base": "^4.2.0", - "debug": "^3.1.0", + "debug": "4", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "^3.0.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^4.0.1" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -11194,12 +12267,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.12.tgz", - "integrity": "sha512-TsXZ8+cv2uxMEkLfgwO0E068gsNMLfuYwMMhiUxf0Kw2Vcgzq93vgl6wIlIYuPmfMqMjfQ9zAporiozqCnwLuQ==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", @@ -11215,9 +12282,9 @@ "dev": true }, "regexpu-core": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", - "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -11229,9 +12296,9 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { @@ -11468,12 +12535,12 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -11538,9 +12605,9 @@ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -11688,18 +12755,18 @@ "dev": true }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.9.0" }, "dependencies": { "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true } } @@ -11743,12 +12810,6 @@ "toidentifier": "1.0.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -11764,9 +12825,9 @@ } }, "serialize-javascript": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.0.tgz", - "integrity": "sha512-UkGlcYMtw4d9w7YfCtJFgdRTps8N4L0A48R+SmcGL57ki1+yHwJXnalk5bjgrw+ljv6SfzjzPjhohod2qllg/Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz", + "integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==", "dev": true }, "serve-index": { @@ -11878,16 +12939,24 @@ "dev": true }, "sitemap": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-4.1.1.tgz", - "integrity": "sha512-+8yd66IxyIFEMFkFpVoPuoPwBvdiL7Ap/HS5YD7igqO4phkyTPFIprCAE9NMHehAY5ZGN3MkAze4lDrOAX3sVQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-5.1.0.tgz", + "integrity": "sha512-RAOCHYPbALEaIlqlGs46LZ9RFfh+61YYjexMqri4h+gsW6y0MLZ+WB4eJCopVP9WCWsng6z9JSPHqcKtjoydLw==", "dev": true, "requires": { - "@types/node": "^12.0.2", + "@types/node": "^12.12.3", "@types/sax": "^1.2.0", "arg": "^4.1.1", "sax": "^1.2.4", - "xmlbuilder": "^13.0.0" + "xmlbuilder": "^13.0.2" + }, + "dependencies": { + "@types/node": { + "version": "12.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.11.tgz", + "integrity": "sha512-O+x6uIpa6oMNTkPuHDa9MhMMehlxLAd5QcOvKRjAFsBVpeFWTOPnXbDvILvFgFFZfQ1xh1EZi1FbXxUix+zpsQ==", + "dev": true + } } }, "slash": { @@ -11915,13 +12984,19 @@ "requires": { "color-convert": "^1.9.0" } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true } } }, "smart-buffer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz", - "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", "dev": true }, "snackbarjs": { @@ -12059,9 +13134,9 @@ } }, "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", "dev": true, "requires": { "debug": "^3.2.5", @@ -12099,13 +13174,13 @@ } }, "socks": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", - "integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", "dev": true, "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { @@ -12148,9 +13223,9 @@ } }, "sortablejs": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.9.0.tgz", - "integrity": "sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", + "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" }, "source-list-map": { "version": "2.0.1", @@ -12177,9 +13252,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -12432,38 +13507,6 @@ "dev": true, "requires": { "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stealthy-require": { @@ -12480,38 +13523,6 @@ "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stream-each": { @@ -12556,42 +13567,33 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" - } - }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -12690,13 +13692,13 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svg-url-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.1.tgz", - "integrity": "sha512-YNC31HokIawsbpqHY1tvjNli/VfgiJlfYR8pFjvJG+zzac11eLfU6q1xt6IhNOdHuuqJw2lsBbch8h99a0mOZA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.2.tgz", + "integrity": "sha512-MUJFVU2uuOTZW6Eq6NuXZxhaIyWiuKtZMcT90nCkcvIZPGGc0CYyZWYP/rtXUkja5qagNMpxDwdZ/tuC6ywfWg==", "dev": true, "requires": { - "file-loader": "4.2.0", - "loader-utils": "1.2.3" + "file-loader": "~4.2.0", + "loader-utils": "~1.2.3" }, "dependencies": { "big.js": { @@ -12763,6 +13765,18 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -12830,9 +13844,9 @@ } }, "terser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz", - "integrity": "sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz", + "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -12867,6 +13881,12 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true } } }, @@ -12994,9 +14014,9 @@ "dev": true }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "timers-browserify": { @@ -13009,9 +14029,9 @@ } }, "timm": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", - "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.2.tgz", + "integrity": "sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw==" }, "tiny-lr": { "version": "1.1.1", @@ -13236,6 +14256,12 @@ "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", "dev": true }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -13263,12 +14289,19 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", "requires": { - "commander": "~2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } } }, "uint64be": { @@ -13423,9 +14456,9 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "upper-case": { @@ -13468,16 +14501,34 @@ } }, "url-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.1.0.tgz", - "integrity": "sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", + "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", "dev": true, "requires": { "loader-utils": "^1.2.3", "mime": "^2.4.4", - "schema-utils": "^2.0.0" + "schema-utils": "^2.4.1" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -13504,14 +14555,20 @@ "json5": "^1.0.1" } }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -13546,18 +14603,18 @@ } }, "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.1" }, "dependencies": { "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true } } @@ -13572,7 +14629,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, "requires": { "define-properties": "^1.1.2", "object.getownpropertydescriptors": "^2.0.3" @@ -13669,9 +14725,9 @@ "integrity": "sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q==" }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, "w3c-hr-time": { @@ -13710,9 +14766,9 @@ "dev": true }, "webpack": { - "version": "4.39.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.3.tgz", - "integrity": "sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ==", + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -13814,9 +14870,9 @@ } }, "webpack-bundle-analyzer": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.4.1.tgz", - "integrity": "sha512-Bs8D/1zF+17lhqj2OYmzi7HEVYqEVxu7lCO9Ff8BwajenOU0vAwEoV8e4ICCPNZAcqR1PCR/7o2SkW+cnCmF0A==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", + "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", "dev": true, "requires": { "acorn": "^6.0.7", @@ -13881,53 +14937,62 @@ } }, "webpack-dev-middleware": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", - "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { "memory-fs": "^0.4.1", - "mime": "^2.4.2", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", "range-parser": "^1.2.1", "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } } }, "webpack-dev-server": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.0.tgz", - "integrity": "sha512-Hs8K9yI6pyMvGkaPTeTonhD6JXVsigXDApYk9JLW4M7viVBspQvb1WdAcWxqtmttxNW4zf2UFLsLNe0y87pIGQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", "dev": true, "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.1.6", + "chokidar": "^2.1.8", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", "html-entities": "^1.2.1", - "http-proxy-middleware": "^0.19.1", + "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", - "is-absolute-url": "^3.0.0", + "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.3", + "loglevel": "^1.6.4", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.21", + "portfinder": "^1.0.25", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", + "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", "sockjs": "0.3.19", - "sockjs-client": "1.3.0", + "sockjs-client": "1.4.0", "spdy": "^4.0.1", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.0", + "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", "yargs": "12.0.5" @@ -13976,6 +15041,12 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -13991,15 +15062,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -14028,6 +15090,27 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/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": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -14141,36 +15224,6 @@ "xtend": "^4.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", @@ -14232,6 +15285,39 @@ "dev": true, "requires": { "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "wordwrap": { @@ -14337,18 +15423,19 @@ "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", + "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", "requires": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "util.promisify": "~1.0.0", + "xmlbuilder": "~11.0.0" }, "dependencies": { "xmlbuilder": { - "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" } } }, @@ -14382,15 +15469,15 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { @@ -14439,6 +15526,12 @@ "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true } } }, diff --git a/package.json b/package.json index c8229636..874a0a52 100644 --- a/package.json +++ b/package.json @@ -36,18 +36,18 @@ "node >= 10" ], "devDependencies": { - "@babel/core": "^7.5.5", - "@babel/plugin-transform-runtime": "^7.5.5", - "@babel/preset-env": "^7.5.5", - "autoprefixer": "^9.6.1", + "@babel/core": "^7.7.2", + "@babel/plugin-transform-runtime": "^7.6.2", + "@babel/preset-env": "^7.7.1", + "autoprefixer": "^9.7.2", "babel-eslint": "^10.0.3", "babel-loader": "^8.0.6", "babel-plugin-dynamic-import-node": "^2.3.0", - "chromedriver": "^77.0.0", - "colors": "^1.3.3", - "copy-webpack-plugin": "^5.0.4", + "chromedriver": "^78.0.1", + "colors": "^1.4.0", + "copy-webpack-plugin": "^5.0.5", "css-loader": "^3.2.0", - "eslint": "^6.2.2", + "eslint": "^6.6.0", "exports-loader": "^0.7.0", "file-loader": "^4.2.0", "grunt": "^1.0.4", @@ -55,7 +55,7 @@ "grunt-chmod": "~1.1.1", "grunt-concurrent": "^3.0.0", "grunt-contrib-clean": "~2.0.0", - "grunt-contrib-connect": "^2.0.0", + "grunt-contrib-connect": "^2.1.0", "grunt-contrib-copy": "~1.0.0", "grunt-contrib-watch": "^1.1.0", "grunt-eslint": "^22.0.0", @@ -65,26 +65,26 @@ "html-webpack-plugin": "^3.2.0", "imports-loader": "^0.8.0", "mini-css-extract-plugin": "^0.8.0", - "nightwatch": "^1.2.1", - "node-sass": "^4.12.0", + "nightwatch": "^1.2.4", + "node-sass": "^4.13.0", "postcss-css-variables": "^0.13.0", "postcss-import": "^12.0.1", "postcss-loader": "^3.0.0", "prompt": "^1.0.0", "sass-loader": "^8.0.0", - "sitemap": "^4.1.1", + "sitemap": "^5.1.0", "style-loader": "^1.0.0", - "svg-url-loader": "^3.0.1", - "url-loader": "^2.1.0", - "webpack": "^4.39.3", - "webpack-bundle-analyzer": "^3.4.1", - "webpack-dev-server": "^3.8.0", + "svg-url-loader": "^3.0.2", + "url-loader": "^2.2.0", + "webpack": "^4.41.2", + "webpack-bundle-analyzer": "^3.6.0", + "webpack-dev-server": "^3.9.0", "webpack-node-externals": "^1.7.2", "worker-loader": "^2.0.0" }, "dependencies": { - "@babel/polyfill": "^7.4.4", - "@babel/runtime": "^7.5.5", + "@babel/polyfill": "^7.7.0", + "@babel/runtime": "^7.7.2", "arrive": "^2.4.1", "avsc": "^5.4.16", "babel-plugin-transform-builtin-extend": "1.1.2", @@ -97,11 +97,11 @@ "bson": "^4.0.2", "chi-squared": "^1.1.0", "codepage": "^1.14.0", - "core-js": "^3.2.1", + "core-js": "^3.4.1", "crypto-api": "^0.8.5", "crypto-js": "^3.1.9-1", "ctph.js": "0.0.5", - "d3": "^5.11.0", + "d3": "^5.14.2", "d3-hexbin": "^0.2.2", "diff": "^4.0.1", "es6-promisify": "^6.0.2", @@ -112,8 +112,8 @@ "exif-parser": "^0.1.12", "file-saver": "^2.0.2", "geodesy": "^1.1.3", - "highlight.js": "^9.15.10", - "jimp": "^0.6.4", + "highlight.js": "^9.16.2", + "jimp": "^0.8.5", "jquery": "3.4.1", "js-crc": "^0.2.0", "js-sha3": "^0.8.0", @@ -122,27 +122,27 @@ "jsonwebtoken": "^8.5.1", "jsqr": "^1.2.0", "jsrsasign": "8.0.12", - "kbpgp": "2.1.3", + "kbpgp": "2.1.6", "libbzip2-wasm": "0.0.4", "libyara-wasm": "^1.0.1", "lodash": "^4.17.15", - "loglevel": "^1.6.3", + "loglevel": "^1.6.6", "loglevel-message-prefix": "^3.0.0", - "markdown-it": "^9.1.0", + "markdown-it": "^10.0.0", "moment": "^2.24.0", - "moment-timezone": "^0.5.26", + "moment-timezone": "^0.5.27", "ngeohash": "^0.6.3", "node-forge": "^0.9.1", "node-md6": "^0.1.0", - "nodom": "^2.2.0", + "nodom": "^2.4.0", "notepack.io": "^2.2.0", "nwmatcher": "^1.4.4", "otp": "^0.1.3", - "popper.js": "^1.15.0", + "popper.js": "^1.16.0", "qr-image": "^3.2.0", "scryptsy": "^2.1.0", "snackbarjs": "^1.1.0", - "sortablejs": "^1.9.0", + "sortablejs": "^1.10.1", "split.js": "^1.5.11", "ssdeep.js": "0.0.2", "tesseract.js": "^2.0.0-alpha.15", From e92ed13864d5e404fa9986e6972b61ca83a7123a Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 21 Nov 2019 12:53:44 +0000 Subject: [PATCH 0166/1024] PLIST viewer. --- src/core/operations/PLISTViewer.mjs | 56 +++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/core/operations/PLISTViewer.mjs diff --git a/src/core/operations/PLISTViewer.mjs b/src/core/operations/PLISTViewer.mjs new file mode 100644 index 00000000..1d263468 --- /dev/null +++ b/src/core/operations/PLISTViewer.mjs @@ -0,0 +1,56 @@ +/** + * @author n1073645 [n1073645@gmail.com] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; + +/** + * PLIST Viewer operation + */ +class PLISTViewer extends Operation { + + /** + * PLISTViewer constructor + */ + constructor() { + super(); + + this.name = "PLIST Viewer"; + this.module = "Other"; + this.description = "Converts PLISTXML file into a human readable format."; + this.infoURL = ""; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + /* Example arguments. See the project wiki for full details. + { + name: "First arg", + type: "string", + value: "Don't Panic" + }, + { + name: "Second arg", + type: "number", + value: 42 + } + */ + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + // const [firstArg, secondArg] = args; + + throw new OperationError("Test"); + } + +} + +export default PLISTViewer; From fd5b6c5243fed096f7d8f1424075ca5e7694ef7f Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 21 Nov 2019 13:05:39 +0000 Subject: [PATCH 0167/1024] 9.11.6 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8fe04294..c00213dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.5", + "version": "9.11.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 874a0a52..c72036d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.5", + "version": "9.11.6", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From f7acef46427b039dbbb7555031760e65d62ef7a5 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 21 Nov 2019 14:13:36 +0000 Subject: [PATCH 0168/1024] Fixed module detection issue. Closes #881 --- Gruntfile.js | 114 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 68 insertions(+), 46 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index b25553b7..1a504d82 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -26,7 +26,7 @@ module.exports = function (grunt) { grunt.registerTask("prod", "Creates a production-ready build. Use the --msg flag to add a compile message.", [ - "eslint", "clean:prod", "clean:config", "exec:generateConfig", "webpack:web", + "eslint", "clean:prod", "clean:config", "exec:generateConfig", "findModules", "webpack:web", "copy:standalone", "zip:standalone", "clean:standalone", "chmod" ]); @@ -58,6 +58,19 @@ module.exports = function (grunt) { grunt.registerTask("tests", "test"); grunt.registerTask("lint", "eslint"); + grunt.registerTask("findModules", + "Finds all generated modules and updates the entry point list for Webpack", + function(arg1, arg2) { + const moduleEntryPoints = listEntryModules(); + + grunt.log.writeln(`Found ${Object.keys(moduleEntryPoints).length} modules.`); + + grunt.config.set("webpack.web.entry", + Object.assign({ + main: "./src/web/index.js" + }, moduleEntryPoints)); + }); + // Load tasks provided by each plugin grunt.loadNpmTasks("grunt-eslint"); @@ -83,7 +96,53 @@ module.exports = function (grunt) { PKG_VERSION: JSON.stringify(pkg.version), }, moduleEntryPoints = listEntryModules(), - nodeConsumerTestPath = "~/tmp-cyberchef"; + nodeConsumerTestPath = "~/tmp-cyberchef", + /** + * Configuration for Webpack production build. Defined as a function so that it + * can be recalculated when new modules are generated. + */ + webpackProdConf = () => { + return { + mode: "production", + target: "web", + entry: Object.assign({ + main: "./src/web/index.js" + }, moduleEntryPoints), + output: { + path: __dirname + "/build/prod", + filename: chunkData => { + return chunkData.chunk.name === "main" ? "assets/[name].js": "[name].js"; + }, + globalObject: "this" + }, + resolve: { + alias: { + "./config/modules/OpModules.mjs": "./config/modules/Default.mjs" + } + }, + plugins: [ + new webpack.DefinePlugin(BUILD_CONSTANTS), + new HtmlWebpackPlugin({ + filename: "index.html", + template: "./src/web/html/index.html", + chunks: ["main"], + compileTime: compileTime, + version: pkg.version, + minify: { + removeComments: true, + collapseWhitespace: true, + minifyJS: true, + minifyCSS: true + } + }), + new BundleAnalyzerPlugin({ + analyzerMode: "static", + reportFilename: "BundleAnalyzerReport.html", + openAnalyzer: false + }), + ] + }; + }; /** @@ -154,48 +213,7 @@ module.exports = function (grunt) { }, webpack: { options: webpackConfig, - web: () => { - return { - mode: "production", - target: "web", - entry: Object.assign({ - main: "./src/web/index.js" - }, moduleEntryPoints), - output: { - path: __dirname + "/build/prod", - filename: chunkData => { - return chunkData.chunk.name === "main" ? "assets/[name].js": "[name].js"; - }, - globalObject: "this" - }, - resolve: { - alias: { - "./config/modules/OpModules.mjs": "./config/modules/Default.mjs" - } - }, - plugins: [ - new webpack.DefinePlugin(BUILD_CONSTANTS), - new HtmlWebpackPlugin({ - filename: "index.html", - template: "./src/web/html/index.html", - chunks: ["main"], - compileTime: compileTime, - version: pkg.version, - minify: { - removeComments: true, - collapseWhitespace: true, - minifyJS: true, - minifyCSS: true - } - }), - new BundleAnalyzerPlugin({ - analyzerMode: "static", - reportFilename: "BundleAnalyzerReport.html", - openAnalyzer: false - }), - ] - }; - }, + web: webpackProdConf(), }, "webpack-dev-server": { options: { @@ -345,7 +363,8 @@ module.exports = function (grunt) { command: "git gc --prune=now --aggressive" }, sitemap: { - command: "node --experimental-modules --no-warnings --no-deprecation src/web/static/sitemap.mjs > build/prod/sitemap.xml" + command: "node --experimental-modules --no-warnings --no-deprecation src/web/static/sitemap.mjs > build/prod/sitemap.xml", + sync: true }, generateConfig: { command: chainCommands([ @@ -354,7 +373,8 @@ module.exports = function (grunt) { "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateOpsIndex.mjs", "node --experimental-modules --no-warnings --no-deprecation src/core/config/scripts/generateConfig.mjs", "echo '--- Config scripts finished. ---\n'" - ]) + ]), + sync: true }, generateNodeIndex: { command: chainCommands([ @@ -362,6 +382,7 @@ module.exports = function (grunt) { "node --experimental-modules --no-warnings --no-deprecation src/node/config/scripts/generateNodeIndex.mjs", "echo '--- Node index generated. ---\n'" ]), + sync: true }, opTests: { command: "node --experimental-modules --no-warnings --no-deprecation tests/operations/index.mjs" @@ -381,6 +402,7 @@ module.exports = function (grunt) { `cd ${nodeConsumerTestPath}`, "npm link cyberchef" ]), + sync: true }, teardownNodeConsumers: { command: chainCommands([ From 610d46a1a41e4b0ada039fac04f0ab6a60cb3b93 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Thu, 21 Nov 2019 14:21:20 +0000 Subject: [PATCH 0169/1024] 9.11.7 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c00213dd..6c765b4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.6", + "version": "9.11.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c72036d4..7bdea20b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.6", + "version": "9.11.7", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 63bb19d48d06c8e780ba402f2abb0274e0ecc250 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 22 Nov 2019 08:32:46 +0000 Subject: [PATCH 0170/1024] Began implementing the PLIST viewer operation --- src/core/config/Categories.json | 1 + src/core/operations/PLISTViewer.mjs | 111 +++++++++++++++++++++++++++- 2 files changed, 108 insertions(+), 4 deletions(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index f663e16d..11e8f076 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -422,6 +422,7 @@ "Frequency distribution", "Index of Coincidence", "Chi Square", + "PLIST Viewer", "Disassemble x86", "Pseudo-Random Number Generator", "Generate UUID", diff --git a/src/core/operations/PLISTViewer.mjs b/src/core/operations/PLISTViewer.mjs index 1d263468..6229d336 100644 --- a/src/core/operations/PLISTViewer.mjs +++ b/src/core/operations/PLISTViewer.mjs @@ -5,7 +5,6 @@ */ import Operation from "../Operation.mjs"; -import OperationError from "../errors/OperationError.mjs"; /** * PLIST Viewer operation @@ -46,11 +45,115 @@ class PLISTViewer extends Operation { * @returns {string} */ run(input, args) { - // const [firstArg, secondArg] = args; - throw new OperationError("Test"); + const reserved = [["","",8], + ["","",6], + ["","",9], + ["","", 6], + ["","",6], + ["","",7], + ["","",6], + ["","",5], + ["",false,8], + ["",true,7]]; + + function the_viewer(input, dictionary_flag){ + var new_dict = new Array(); + var result = new Array(); + var new_key = null; + while(dictionary_flag ? input.slice(0,7) != "" : input.slice(0,8) != ""){ + reserved.forEach( function (elem, index){ + var element = elem[0]; + var endelement = elem[1]; + var length = elem[2]; + let temp = input.slice(0,length); + if(temp == element){ + input = input.slice(length); + if(temp == ""){ + var returned = the_viewer(input, true); + input = returned[1]; + if(new_key) + new_dict[new_key] = returned[0]; + else + new_dict["plist"] = returned[0]; + new_key = null; + }else if(temp == ""){ + var returned = the_viewer(input, false); + if(dictionary_flag) + new_dict[new_key] = returned[0]; + else + result.push(returned[0]); + input = returned[1]; + new_key = null; + }else if(temp == ""){ + var end = input.indexOf(endelement); + new_key = input.slice(0, end); + input = input.slice(end+length+1); + }else if(temp == "" || temp == ""){ + new_dict[new_key] = endelement; + new_key = null; + }else{ + var end = input.indexOf(endelement); + var toadd = input.slice(0, end); + if(temp == "") + toadd = parseInt(toadd); + else if(temp == "") + toadd = parseFloat(toadd); + if(dictionary_flag){ + new_dict[new_key] = toadd; + new_key = null; + }else{ + result.push(toadd); + } + input = input.slice(end+length+1); + } + } + }); + } + if(dictionary_flag){ + input = input.slice(7); + return [new_dict, input]; + }else{ + input = input.slice(8); + return [result, input]; + } + } + + let result = ""; + function print_it(input, depth) { + Object.keys(input).forEach((key, index) => { + if(typeof(input[key]) == "object") { + result += (("\t".repeat(depth)) + key + ": {\n"); + print_it(input[key], depth+1); + result += (("\t".repeat(depth)) + "}\n"); + } else { + result += (("\t".repeat(depth)) + key + " : " + input[key] + "\n"); + } + }); + } + + while (input.indexOf("/, ""); + } + while (input.indexOf("") !== -1){ + input = input.replace(/<\/plist>/, ""); + } + console.log(input); + while(input.indexOf("\n") !== -1) + input = input.replace("\n", ""); + while(input.indexOf("\t") !== -1) + input = input.replace("\t", ""); + while(input.indexOf(" ") !== -1) + input = input.replace(" ", ""); + console.log(input); + input = input.slice(input.indexOf("")+6); + //return input + var other = the_viewer(input, 1); + print_it(other[0],1); + result = "{\n" + result; + result += "}"; + return result; } - } export default PLISTViewer; From 81d1007bb78db41e4581a8046976ae3ac2428b46 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 22 Nov 2019 10:45:02 +0000 Subject: [PATCH 0171/1024] Added tests for regex operation and a slight bug fix --- .../operations/ToCaseInsensitiveRegex.mjs | 8 +- .../tests/ToFromInsensitiveRegex.mjs | 132 ++++++++++++++++++ 2 files changed, 139 insertions(+), 1 deletion(-) diff --git a/src/core/operations/ToCaseInsensitiveRegex.mjs b/src/core/operations/ToCaseInsensitiveRegex.mjs index 5cb42d02..58b21ef5 100644 --- a/src/core/operations/ToCaseInsensitiveRegex.mjs +++ b/src/core/operations/ToCaseInsensitiveRegex.mjs @@ -51,11 +51,17 @@ class ToCaseInsensitiveRegex extends Operation { return result; } + try { + RegExp(input); + } catch (error) { + return "Invalid Regular Expression (Please note this version of node does not support look behinds)."; + } + // Example: [test] -> [[tT][eE][sS][tT]] return preProcess(input) // Example: [A-Z] -> [A-Za-z] - .replace(/[A-Z]-[A-Z]/ig, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`) + .replace(/([A-Z]-[A-Z]|[a-z]-[a-z])/g, m => `${m[0].toUpperCase()}-${m[2].toUpperCase()}${m[0].toLowerCase()}-${m[2].toLowerCase()}`) // Example: [H-d] -> [A-DH-dh-z] .replace(/[A-Z]-[a-z]/g, m => `A-${m[2].toUpperCase()}${m}${m[0].toLowerCase()}-z`) diff --git a/tests/operations/tests/ToFromInsensitiveRegex.mjs b/tests/operations/tests/ToFromInsensitiveRegex.mjs index b74e9973..f33d6706 100644 --- a/tests/operations/tests/ToFromInsensitiveRegex.mjs +++ b/tests/operations/tests/ToFromInsensitiveRegex.mjs @@ -53,4 +53,136 @@ TestRegister.addTests([ }, ], }, + { + name: "To Case Insensitive Regex: [A-Z] -> [A-Za-z]", + input: "[A-Z]", + expectedOutput: "[A-Za-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [a-z] -> [A-Za-z]", + input: "[a-z]", + expectedOutput: "[A-Za-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [H-d] -> [A-DH-dh-z]", + input: "[H-d]", + expectedOutput: "[A-DH-dh-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [!-D] -> [!-Da-d]", + input: "[!-D]", + expectedOutput: "[!-Da-d]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [%-^] -> [%-^a-z]", + input: "[%-^]", + expectedOutput: "[%-^a-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [K-`] -> [K-`k-z]", + input: "[K-`]", + expectedOutput: "[K-`k-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [[-}] -> [[-}A-Z]", + input: "[[-}]", + expectedOutput: "[[-}A-Z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [b-}] -> [b-}B-Z]", + input: "[b-}]", + expectedOutput: "[b-}B-Z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [<-j] -> [<-z]", + input: "[<-j]", + expectedOutput: "[<-z]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: [^-j] -> [A-J^-j]", + input: "[^-j]", + expectedOutput: "[A-J^-j]", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: not simple test", + input: "Mozilla[A-Z0-9]+[A-Z]Mozilla[0-9whatA-Z][H-d][!-H][a-~](.)+", + expectedOutput: "[mM][oO][zZ][iI][lL][lL][aA][A-Za-z0-9]+[A-Za-z][mM][oO][zZ][iI][lL][lL][aA][0-9[wW][hH][aA][tT]A-Za-z][A-DH-dh-z][!-Ha-h][a-~A-Z](.)+", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, + { + name: "To Case Insensitive Regex: erroneous test", + input: "Mozilla[A-Z", + expectedOutput: "Invalid Regular Expression (Please note this version of node does not support look behinds).", + recipeConfig: [ + { + op: "To Case Insensitive Regex", + args: [], + }, + ], + }, ]); From 4814922e67728dd6157056308487784540a70048 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 22 Nov 2019 10:58:24 +0000 Subject: [PATCH 0172/1024] Linting for regex operation --- tests/operations/tests/ToFromInsensitiveRegex.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/operations/tests/ToFromInsensitiveRegex.mjs b/tests/operations/tests/ToFromInsensitiveRegex.mjs index f33d6706..1394bfe8 100644 --- a/tests/operations/tests/ToFromInsensitiveRegex.mjs +++ b/tests/operations/tests/ToFromInsensitiveRegex.mjs @@ -184,5 +184,5 @@ TestRegister.addTests([ args: [], }, ], - }, + } ]); From 8e1e1d56cadbb1465a323adec3ac544e9c53f3af Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 22 Nov 2019 15:39:43 +0000 Subject: [PATCH 0173/1024] Plist viewer operation added. --- src/core/operations/PLISTViewer.mjs | 156 ++++++++++------------------ 1 file changed, 55 insertions(+), 101 deletions(-) diff --git a/src/core/operations/PLISTViewer.mjs b/src/core/operations/PLISTViewer.mjs index 6229d336..939b7d1a 100644 --- a/src/core/operations/PLISTViewer.mjs +++ b/src/core/operations/PLISTViewer.mjs @@ -46,112 +46,66 @@ class PLISTViewer extends Operation { */ run(input, args) { - const reserved = [["","",8], - ["","",6], - ["","",9], - ["","", 6], - ["","",6], - ["","",7], - ["","",6], - ["","",5], - ["",false,8], - ["",true,7]]; - - function the_viewer(input, dictionary_flag){ - var new_dict = new Array(); - var result = new Array(); - var new_key = null; - while(dictionary_flag ? input.slice(0,7) != "" : input.slice(0,8) != ""){ - reserved.forEach( function (elem, index){ - var element = elem[0]; - var endelement = elem[1]; - var length = elem[2]; - let temp = input.slice(0,length); - if(temp == element){ - input = input.slice(length); - if(temp == ""){ - var returned = the_viewer(input, true); - input = returned[1]; - if(new_key) - new_dict[new_key] = returned[0]; - else - new_dict["plist"] = returned[0]; - new_key = null; - }else if(temp == ""){ - var returned = the_viewer(input, false); - if(dictionary_flag) - new_dict[new_key] = returned[0]; - else - result.push(returned[0]); - input = returned[1]; - new_key = null; - }else if(temp == ""){ - var end = input.indexOf(endelement); - new_key = input.slice(0, end); - input = input.slice(end+length+1); - }else if(temp == "" || temp == ""){ - new_dict[new_key] = endelement; - new_key = null; - }else{ - var end = input.indexOf(endelement); - var toadd = input.slice(0, end); - if(temp == "") - toadd = parseInt(toadd); - else if(temp == "") - toadd = parseFloat(toadd); - if(dictionary_flag){ - new_dict[new_key] = toadd; - new_key = null; - }else{ - result.push(toadd); - } - input = input.slice(end+length+1); - } - } - }); - } - if(dictionary_flag){ - input = input.slice(7); - return [new_dict, input]; - }else{ - input = input.slice(8); - return [result, input]; - } - } - + // Regexes are designed to transform the xml format into a reasonably more readable string format. + input = input.slice(input.indexOf("/g, "plist => ") + .replace(//g, "{") + .replace(/<\/dict>/g, "}") + .replace(//g, "[") + .replace(/<\/array>/g, "]") + .replace(/.+<\/key>/g, m => `${m.slice(5, m.indexOf(/<\/key>/g)-5)}\t=> `) + .replace(/.+<\/real>/g, m => `${m.slice(6, m.indexOf(/<\/real>/g)-6)}\n`) + .replace(/.+<\/string>/g, m => `${m.slice(8, m.indexOf(/<\/string>/g)-8)}\n`) + .replace(/.+<\/integer>/g, m => `${m.slice(9, m.indexOf(/<\/integer>/g)-9)}\n`) + .replace(//g, m => "false") + .replace(//g, m => "true") + .replace(/<\/plist>/g, "/plist") + .replace(/.+<\/date>/g, m => `${m.slice(6, m.indexOf(/<\/integer>/g)-6)}`) + .replace(/(\s|.)+?<\/data>/g, m => `${m.slice(6, m.indexOf(/<\/data>/g)-6)}`) + .replace(/[ \t\r\f\v]/g, ""); + let result = ""; - function print_it(input, depth) { - Object.keys(input).forEach((key, index) => { - if(typeof(input[key]) == "object") { - result += (("\t".repeat(depth)) + key + ": {\n"); - print_it(input[key], depth+1); - result += (("\t".repeat(depth)) + "}\n"); + + /** + * Formats the input after the regex has replaced all of the relevant parts. + * + * @param {array} input + * @param {number} depthCount + */ + function printIt(input, depthCount) { + if (!(input.length)) + return; + + // If the current position points at a larger dynamic structure. + if (input[0].indexOf("=>") !== -1) { + + // If the LHS also points at a larger structure (nested plists in a dictionary). + if (input[1].indexOf("=>") !== -1) { + result += ("\t".repeat(depthCount)) + input[0].slice(0, -2) + " => " + input[1].slice(0, -2) + " =>\n"; } else { - result += (("\t".repeat(depth)) + key + " : " + input[key] + "\n"); + result += ("\t".repeat(depthCount)) + input[0].slice(0, -2) + " => " + input[1] + "\n"; } - }); + + // Controls the tab depth for how many opening braces there have been. + if (input[1] === "{" || input[1] === "[") { + depthCount += 1; + } + input = input.slice(1); + } else { + // Controls the tab depth for how many closing braces there have been. + if (input[0] === "}" || input[0] === "]") + depthCount--; + + // Has to be here since the formatting breaks otherwise. + result += ("\t".repeat(depthCount)) + input[0] + "\n"; + if (input[0] === "{" || input[0] === "[") + depthCount++; + } + printIt(input.slice(1), depthCount); } - while (input.indexOf("/, ""); - } - while (input.indexOf("") !== -1){ - input = input.replace(/<\/plist>/, ""); - } - console.log(input); - while(input.indexOf("\n") !== -1) - input = input.replace("\n", ""); - while(input.indexOf("\t") !== -1) - input = input.replace("\t", ""); - while(input.indexOf(" ") !== -1) - input = input.replace(" ", ""); - console.log(input); - input = input.slice(input.indexOf("")+6); - //return input - var other = the_viewer(input, 1); - print_it(other[0],1); - result = "{\n" + result; - result += "}"; + input = input.split("\n").filter(e => e !== ""); + printIt(input, 0); return result; } } From d16bbe1e7e2b749eb387bdb0ebd67560c399ac09 Mon Sep 17 00:00:00 2001 From: fjh1997 <549308442@qq.com> Date: Sun, 24 Nov 2019 22:03:37 +0800 Subject: [PATCH 0174/1024] Fixed typo in IPV6 alphabet According to python3 base64.b85decode module https://github.com/python/cpython/blob/3.8/Lib/base64.py --- src/core/lib/Base85.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/Base85.mjs b/src/core/lib/Base85.mjs index 18ba5ef8..8da729e2 100644 --- a/src/core/lib/Base85.mjs +++ b/src/core/lib/Base85.mjs @@ -20,7 +20,7 @@ export const ALPHABET_OPTIONS = [ }, { name: "IPv6", - value: "0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|~}", + value: "0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~", } ]; From 0295d0c9b47d6cd6b30492ce3b77b3741414cde9 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 25 Nov 2019 10:35:45 +0000 Subject: [PATCH 0175/1024] Tided up presentation of the PLIST --- src/core/operations/PLISTViewer.mjs | 71 +++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 19 deletions(-) diff --git a/src/core/operations/PLISTViewer.mjs b/src/core/operations/PLISTViewer.mjs index 939b7d1a..8232fb14 100644 --- a/src/core/operations/PLISTViewer.mjs +++ b/src/core/operations/PLISTViewer.mjs @@ -55,7 +55,7 @@ class PLISTViewer extends Operation { .replace(/<\/array>/g, "]") .replace(/.+<\/key>/g, m => `${m.slice(5, m.indexOf(/<\/key>/g)-5)}\t=> `) .replace(/.+<\/real>/g, m => `${m.slice(6, m.indexOf(/<\/real>/g)-6)}\n`) - .replace(/.+<\/string>/g, m => `${m.slice(8, m.indexOf(/<\/string>/g)-8)}\n`) + .replace(/.+<\/string>/g, m => `"${m.slice(8, m.indexOf(/<\/string>/g)-8)}"\n`) .replace(/.+<\/integer>/g, m => `${m.slice(9, m.indexOf(/<\/integer>/g)-9)}\n`) .replace(//g, m => "false") .replace(//g, m => "true") @@ -64,44 +64,77 @@ class PLISTViewer extends Operation { .replace(/(\s|.)+?<\/data>/g, m => `${m.slice(6, m.indexOf(/<\/data>/g)-6)}`) .replace(/[ \t\r\f\v]/g, ""); + /** + * Depending on the type of brace, it will increment the depth and amount of arrays accordingly. + * + * @param {string} elem + * @param {array} vals + * @param {number} offset + */ + function braces(elem, vals,offset) { + let temp = vals.indexOf(elem); + if (temp !== -1) { + depthCount += offset; + if (temp === 1) + arrCount += offset; + } + } + let result = ""; + let arrCount = 0; + let depthCount = 0; /** * Formats the input after the regex has replaced all of the relevant parts. * * @param {array} input - * @param {number} depthCount + * @param {number} index */ - function printIt(input, depthCount) { + function printIt(input, index) { if (!(input.length)) return; + let temp = ""; + const origArr = arrCount; + let currElem = input[0]; + // If the current position points at a larger dynamic structure. - if (input[0].indexOf("=>") !== -1) { + if (currElem.indexOf("=>") !== -1) { // If the LHS also points at a larger structure (nested plists in a dictionary). - if (input[1].indexOf("=>") !== -1) { - result += ("\t".repeat(depthCount)) + input[0].slice(0, -2) + " => " + input[1].slice(0, -2) + " =>\n"; - } else { - result += ("\t".repeat(depthCount)) + input[0].slice(0, -2) + " => " + input[1] + "\n"; - } + if (input[1].indexOf("=>") !== -1) + temp = currElem.slice(0, -2) + " => " + input[1].slice(0, -2) + " =>\n"; + else + temp = currElem.slice(0, -2) + " => " + input[1] + "\n"; - // Controls the tab depth for how many opening braces there have been. - if (input[1] === "{" || input[1] === "[") { - depthCount += 1; - } input = input.slice(1); } else { // Controls the tab depth for how many closing braces there have been. - if (input[0] === "}" || input[0] === "]") - depthCount--; + + braces(currElem, ["}", "]"], -1); // Has to be here since the formatting breaks otherwise. - result += ("\t".repeat(depthCount)) + input[0] + "\n"; - if (input[0] === "{" || input[0] === "[") - depthCount++; + temp = currElem + "\n"; } - printIt(input.slice(1), depthCount); + + currElem = input[0]; + + // Tab out to the correct distance. + result += ("\t".repeat(depthCount)); + + // If it is enclosed in an array show index. + if (arrCount > 0 && currElem !== "]") + result += index.toString() + " => "; + + result += temp; + + // Controls the tab depth for how many opening braces there have been. + braces(currElem, ["{", "["],1); + + // If there has been a new array then reset index. + if (arrCount > origArr) + return printIt(input.slice(1), 0); + return printIt(input.slice(1), ++index); } input = input.split("\n").filter(e => e !== ""); From d8405e5f814e17319dd293fdcddfdeeca2a43f15 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 25 Nov 2019 10:37:30 +0000 Subject: [PATCH 0176/1024] Linting on PLIST viewer operation. --- src/core/operations/PLISTViewer.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/operations/PLISTViewer.mjs b/src/core/operations/PLISTViewer.mjs index 8232fb14..b8a90c5b 100644 --- a/src/core/operations/PLISTViewer.mjs +++ b/src/core/operations/PLISTViewer.mjs @@ -71,8 +71,8 @@ class PLISTViewer extends Operation { * @param {array} vals * @param {number} offset */ - function braces(elem, vals,offset) { - let temp = vals.indexOf(elem); + function braces(elem, vals, offset) { + const temp = vals.indexOf(elem); if (temp !== -1) { depthCount += offset; if (temp === 1) @@ -129,7 +129,7 @@ class PLISTViewer extends Operation { result += temp; // Controls the tab depth for how many opening braces there have been. - braces(currElem, ["{", "["],1); + braces(currElem, ["{", "["], 1); // If there has been a new array then reset index. if (arrCount > origArr) From 09e93b4639c407dc019fa786cfbd883159b42683 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 25 Nov 2019 11:26:31 +0000 Subject: [PATCH 0177/1024] Added ICO extractor --- src/core/lib/FileSignatures.mjs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index dc7ced4d..41f870af 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -280,7 +280,7 @@ export const FILE_SIGNATURES = { 9: 0x0, 10: [0x0, 0x1] }, - extractor: null + extractor: extractICO }, { name: "Radiance High Dynamic Range image", @@ -2772,6 +2772,32 @@ export function extractBMP(bytes, offset) { } +/** + * ICO extractor. + * + * @param {Uint8Array} bytes + * @param {number} offset + */ +export function extractICO(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + + // Move to number of file there are. + stream.moveTo(4); + + // Read the number of files stored in the ICO + const numberFiles = stream.readInt(2, "le"); + + // Move forward to the last file header. + stream.moveForwardsBy(8 + ((numberFiles-1) * 16)); + const fileSize = stream.readInt(4, "le"); + const fileOffset = stream.readInt(4, "le"); + + // Move to the end of the last file. + stream.moveTo(fileOffset + fileSize); + return stream.carve(); +} + + /** * WAV extractor. * From 1118ff598d6ecf93792a439609e6c5a4224652d9 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Mon, 25 Nov 2019 13:43:31 +0000 Subject: [PATCH 0178/1024] From Base85 and From Braille signatures added for magic --- src/core/operations/FromBase85.mjs | 17 +++++++++++++++++ src/core/operations/FromBraille.mjs | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/src/core/operations/FromBase85.mjs b/src/core/operations/FromBase85.mjs index c874d5dc..001f4f69 100644 --- a/src/core/operations/FromBase85.mjs +++ b/src/core/operations/FromBase85.mjs @@ -33,6 +33,23 @@ class FromBase85 extends Operation { value: ALPHABET_OPTIONS }, ]; + this.patterns = [ + { + match: "^\\s*(<~)?([!-u]{4})+([!-u]{1,3})??(~>)?\\s*$", + flags: "", + args: ["!-u", true] + }, + { + match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{4})+([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{1,3})??(~>)?\\s*$", + flags: "i", + args: ["0-9a-zA-Z.-:+=^!/*?&<>()[]{}@%$#", true] + }, + { + match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{4})+([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{1,3})??(~>)?\\s*$", + flags: "i", + args: ["0-9A-Za-z!#$%&()*+-;<=>?@^_`{|~}", true] + } + ]; } /** diff --git a/src/core/operations/FromBraille.mjs b/src/core/operations/FromBraille.mjs index adbcff91..60e590a3 100644 --- a/src/core/operations/FromBraille.mjs +++ b/src/core/operations/FromBraille.mjs @@ -25,6 +25,13 @@ class FromBraille extends Operation { this.inputType = "string"; this.outputType = "string"; this.args = []; + this.patterns = [ + { + match: "^\\s*[⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿]+\\s*$", + flags: "i", + args: [true] + } + ]; } /** From 8e5aa2c393a4b3d4812ac069867c5c27ceb3817f Mon Sep 17 00:00:00 2001 From: Mirclus Date: Mon, 25 Nov 2019 20:08:30 +0100 Subject: [PATCH 0179/1024] DNS over HTTP: Fix "validate" argument The argument sets the "cd" parameter on the request. For both included providers, this flag disables validation ([1], [2]), so doing the exact opposite of the described action. This changes the label to the correct name and also flips the default value to keep the old behavior. [1] Google [2] Cloudflare --- src/core/operations/DNSOverHTTPS.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/DNSOverHTTPS.mjs b/src/core/operations/DNSOverHTTPS.mjs index ca779815..4dde2f13 100644 --- a/src/core/operations/DNSOverHTTPS.mjs +++ b/src/core/operations/DNSOverHTTPS.mjs @@ -63,9 +63,9 @@ class DNSOverHTTPS extends Operation { value: false }, { - name: "Validate DNSSEC", + name: "Disable DNSSEC validation", type: "boolean", - value: true + value: false } ]; } From a6fa0628f2c003f7aa93a94e06abdab66156174a Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 25 Nov 2019 22:53:31 +0100 Subject: [PATCH 0180/1024] Add operation to normalise unicode --- package-lock.json | 5 ++ package.json | 1 + src/core/config/Categories.json | 1 + src/core/lib/ChrEnc.mjs | 12 +++++ src/core/operations/NormaliseUnicode.mjs | 60 +++++++++++++++++++++ tests/operations/index.mjs | 1 + tests/operations/tests/NormaliseUnicode.mjs | 54 +++++++++++++++++++ 7 files changed, 134 insertions(+) create mode 100644 src/core/operations/NormaliseUnicode.mjs create mode 100644 tests/operations/tests/NormaliseUnicode.mjs diff --git a/package-lock.json b/package-lock.json index 6c765b4e..15aa5451 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14403,6 +14403,11 @@ "normalize-path": "^2.1.1" } }, + "unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 7bdea20b..61136169 100644 --- a/package.json +++ b/package.json @@ -147,6 +147,7 @@ "ssdeep.js": "0.0.2", "tesseract.js": "^2.0.0-alpha.15", "ua-parser-js": "^0.7.20", + "unorm": "^1.6.0", "utf8": "^3.0.0", "vkbeautify": "^0.99.3", "xmldom": "^0.1.27", diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index f663e16d..53ca796d 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -39,6 +39,7 @@ "URL Decode", "Escape Unicode Characters", "Unescape Unicode Characters", + "Normalise Unicode", "To Quoted Printable", "From Quoted Printable", "To Punycode", diff --git a/src/core/lib/ChrEnc.mjs b/src/core/lib/ChrEnc.mjs index a472706b..d2d0625f 100644 --- a/src/core/lib/ChrEnc.mjs +++ b/src/core/lib/ChrEnc.mjs @@ -164,3 +164,15 @@ export const IO_FORMAT = { "Simplified Chinese GB18030 (54936)": 54936, }; +/** + * Unicode Normalisation Forms + * + * @author Matthieu [m@tthieu.xyz] + * @copyright Crown Copyright 2016 + * @license Apache-2.0 + */ + +/** + * Character encoding format mappings. + */ +export const UNICODE_NORMALISATION_FORMS = ["NFD", "NFC", "NFKD", "NFKC"]; diff --git a/src/core/operations/NormaliseUnicode.mjs b/src/core/operations/NormaliseUnicode.mjs new file mode 100644 index 00000000..731a493f --- /dev/null +++ b/src/core/operations/NormaliseUnicode.mjs @@ -0,0 +1,60 @@ +/** + * @author Matthieu [m@tthieu.xyz] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import unorm from "unorm"; +import {UNICODE_NORMALISATION_FORMS} from "../lib/ChrEnc"; + +/** + * Normalise Unicode operation + */ +class NormaliseUnicode extends Operation { + + /** + * NormaliseUnicode constructor + */ + constructor() { + super(); + + this.name = "Normalise Unicode"; + this.module = "UnicodeNormalisation"; + this.description = "Transform Unicode to one of the Normalisation Form"; + this.infoURL = "http://www.unicode.org/reports/tr15/"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Normal Form", + type: "option", + value: UNICODE_NORMALISATION_FORMS + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const [normalForm] = args; + if (normalForm === "NFD") { + return unorm.nfd(input); + } else if (normalForm === "NFC") { + return unorm.nfc(input); + } else if (normalForm === "NFKD") { + return unorm.nfkd(input); + } else if (normalForm === "NFKC") { + return unorm.nfc(input); + } + + throw new OperationError("Unknown Normalisation Form"); + } + +} + +export default NormaliseUnicode; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index c54fa7ef..97745878 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -57,6 +57,7 @@ import "./tests/MS.mjs"; import "./tests/Magic.mjs"; import "./tests/MorseCode.mjs"; import "./tests/NetBIOS.mjs"; +import "./tests/NormaliseUnicode.mjs"; import "./tests/OTP.mjs"; import "./tests/PGP.mjs"; import "./tests/PHP.mjs"; diff --git a/tests/operations/tests/NormaliseUnicode.mjs b/tests/operations/tests/NormaliseUnicode.mjs new file mode 100644 index 00000000..d903e865 --- /dev/null +++ b/tests/operations/tests/NormaliseUnicode.mjs @@ -0,0 +1,54 @@ +/** + * Text Encoding Brute Force tests. + * + * @author Matthieu [m@tthieux.xyz] + * + * @copyright Crown Copyright 2018 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Normalise Unicode - NFD", + input: "\u00c7\u0043\u0327\u2160", + expectedMatch: /C\u0327C\u0327\u2160/, + recipeConfig: [ + { + op: "Normalise Unicode", + args: ["NFD"], + }, + ], + }, { + name: "Normalise Unicode - NFC", + input: "\u00c7\u0043\u0327\u2160", + expectedMatch: /\u00C7\u00C7\u2160/, + recipeConfig: [ + { + op: "Normalise Unicode", + args: ["NFC"], + }, + ], + }, { + name: "Normalise Unicode - NFKD", + input: "\u00c7\u0043\u0327\u2160", + expectedMatch: /C\u0327C\u0327I/, + recipeConfig: [ + { + op: "Normalise Unicode", + args: ["NFKD"], + }, + ], + }, { + name: "Normalise Unicode - NFKC", + input: "\u00c7\u0043\u0327\u2160", + expectedMatch: /\u00C7\u00C7\u2160/, + recipeConfig: [ + { + op: "Normalise Unicode", + args: ["NFKC"], + }, + ], + }, +]); + From 13e9a4f0da9950ce9fc4339b7d39fb95ad8fd112 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Nov 2019 12:36:18 +0000 Subject: [PATCH 0181/1024] 9.11.8 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c765b4e..50532e20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.7", + "version": "9.11.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7bdea20b..c3b59f03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.7", + "version": "9.11.8", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From b459c15d7431eeeea75c977b70ac4188fec45ef9 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Nov 2019 12:47:16 +0000 Subject: [PATCH 0182/1024] 9.11.9 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 50532e20..b820863c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.8", + "version": "9.11.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c3b59f03..15b7253f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.8", + "version": "9.11.9", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From dfc8f517f2746fe4469552e6ccd84c90f88e198c Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 27 Nov 2019 12:48:09 +0000 Subject: [PATCH 0183/1024] Added Colossus operation --- src/core/lib/Colossus.mjs | 426 +++++++++++++++++++++++++ src/core/lib/Lorenz.mjs | 155 +++++++++ src/core/operations/Colossus.mjs | 517 +++++++++++++++++++++++++++++++ 3 files changed, 1098 insertions(+) create mode 100644 src/core/lib/Colossus.mjs create mode 100644 src/core/lib/Lorenz.mjs create mode 100644 src/core/operations/Colossus.mjs diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs new file mode 100644 index 00000000..d25d3285 --- /dev/null +++ b/src/core/lib/Colossus.mjs @@ -0,0 +1,426 @@ +/** + * Colossus - an emulation of the world's first electronic computer + * + * @author VirtualColossus + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ +import OperationError from "../errors/OperationError.mjs"; +import Utils from "../Utils.mjs"; +import {INIT_PATTERNS, ITA2_TABLE, ROTOR_SIZES} from "../lib/Lorenz.mjs"; + +/** + * Colossus simulator class. + */ +export class ColossusComputer { + /** + * Construct a Colossus. + * + * @param {string} ciphertext + * @param {string} pattern - named pattern of Chi, Mu and Psi wheels + * @param {Object} qbusin - which data inputs are being sent to q bus - each can be null, plain or delta + * @param {Object[]} qbusswitches - Q bus calculation switches, multiple rows + * @param {Object} control - control switches which specify stepping modes + * @param {Object} starts - rotor start positions + */ + constructor(ciphertext, pattern, qbusin, qbusswitches, control, starts, settotal, limit) { + + this.ITAlookup = ITA2_TABLE; + this.REVERSE_ITAlookup = {}; + for (const letter in this.ITAlookup) { + const code = this.ITAlookup[letter]; + this.REVERSE_ITAlookup[code] = letter; + } + + this.initThyratrons(pattern); + + this.ciphertext = ciphertext; + this.qbusin = qbusin; + this.qbusswitches = qbusswitches; + this.control = control; + this.starts = starts; + this.settotal = settotal; + this.limitations = limit; + + + this.allCounters = [0, 0, 0, 0, 0]; + + this.Zbits = [0, 0, 0, 0, 0]; // Z input is the cipher tape + this.ZbitsOneBack = [0, 0, 0, 0, 0]; // for delta + this.Qbits = [0, 0, 0, 0, 0]; // input generated for placing onto the Q-bus (the logic processor) + + this.Xbits = [0, 0, 0, 0, 0]; // X is the Chi wheel bits + this.Xptr = [0, 0, 0, 0, 0]; // pointers to the current X bits (Chi wheels) + this.XbitsOneBack = [0, 0, 0, 0, 0]; // the X bits one back (for delta) + + this.Sbits = [0, 0, 0, 0, 0]; // S is the Psi wheel bits + this.Sptr = [0, 0, 0, 0, 0]; // pointers to the current S bits (Psi wheels) + this.SbitsOneBack = [0, 0, 0, 0, 0]; // the S bits one back (for delta) + + this.Mptr = [0, 0]; + + this.rotorPtrs = {}; + + } + + /** + * Begin a run + * @returns {object} - + */ + run() { + + let result = { + printout: "" + }; + + // loop until our start positions are back to the beginning + this.rotorPtrs = {X1: this.starts.X1, X2: this.starts.X2, X3: this.starts.X3, X4: this.starts.X4, X5: this.starts.X5, M61: this.starts.M61, M37: this.starts.M37, S1: this.starts.S1, S2: this.starts.S2, S3: this.starts.S3, S4: this.starts.S4, S5: this.starts.S5}; + //this.rotorPtrs = this.starts; + let runcount = 1; + + const fast = this.control.fast; + const slow = this.control.slow; + + // Print Headers + result.printout += fast + " " + slow + "\n"; + + do { + + this.allCounters = [0, 0, 0, 0, 0]; + this.ZbitsOneBack = [0, 0, 0, 0, 0]; + this.XbitsOneBack = [0, 0, 0, 0, 0]; + + // Run full tape loop and process counters + this.runTape(); + + // Only print result if larger than set total + var fastRef = "00"; + var slowRef = "00"; + if (fast !== "") fastRef = this.leftPad(this.rotorPtrs[fast],2); + if (slow !== "") slowRef = this.leftPad(this.rotorPtrs[slow],2); + result.printout += fastRef + " " + slowRef + " : "; + for (let c=0;c<5;c++) { + if (this.allCounters[c] > this.settotal) { + result.printout += String.fromCharCode(c+97) + this.allCounters[c]+" "; + } + } + result.printout += "\n"; + + // Step fast rotor if required + if (fast != '') { + this.rotorPtrs[fast]++; + if (this.rotorPtrs[fast] > ROTOR_SIZES[fast]) this.rotorPtrs[fast] = 1; + } + + // Step slow rotor if fast rotor has returned to initial start position + if (slow != '' && this.rotorPtrs[fast] === this.starts[fast]) { + this.rotorPtrs[slow]++; + if (this.rotorPtrs[slow] > ROTOR_SIZES[slow]) this.rotorPtrs[slow] = 1; + } + + runcount++; + + } while (JSON.stringify(this.rotorPtrs) !== JSON.stringify(this.starts)); + + result.counters = this.allCounters; + result.runcount = runcount; + + return result; + }; + + /** + * Run tape loop + */ + runTape() { + + let charZin = ""; + + this.Xptr = [this.rotorPtrs.X1, this.rotorPtrs.X2, this.rotorPtrs.X3, this.rotorPtrs.X4, this.rotorPtrs.X5]; + this.Mptr = [this.rotorPtrs.M37, this.rotorPtrs.M61]; + this.Sptr = [this.rotorPtrs.S1, this.rotorPtrs.S2, this.rotorPtrs.S3, this.rotorPtrs.S4, this.rotorPtrs.S5]; + //console.log(this.Xptr); + + // Run full loop of all character on the input tape (Z) + for (let i=0; i ROTOR_SIZES["S"+(r+1)]) this.Sptr[r] = 1; + } + } + + // Move M37 rotor if M61 set + if (this.rings.M[1][this.Mptr[1]-1]==1) this.Mptr[0]++; + if (this.Mptr[0] > ROTOR_SIZES.M37) this.Mptr[0]=1; + + // Always move M61 rotor + this.Mptr[1]++; + if (this.Mptr[1] > ROTOR_SIZES.M61) this.Mptr[1]=1; + + } + + /** + * Get Q bus inputs + */ + getQbusInputs(charZin) { + // Zbits - the bits from the current character from the cipher tape. + this.Zbits = this.ITAlookup[charZin].split(""); + //console.log('Zbits = '+this.Zbits); + if (this.qbusin.Z == 'Z') { + // direct Z + this.Qbits = this.Zbits; + //console.log('direct Z: Qbits = '+this.Qbits); + } else if(this.qbusin.Z == 'ΔZ') { + // delta Z, the Bitwise XOR of this character Zbits + last character Zbits + for(let b=0;b<5;b++) { + this.Qbits[b] = this.Zbits[b] ^ this.ZbitsOneBack[b]; + } + + //console.log('delta Z: Qbits = '+this.Qbits); + } + this.ZbitsOneBack = this.Zbits.slice(); // copy value of object, not reference + + //console.log('Zin::Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + + // Xbits - the current Chi wheel bits + //console.log(this.rings.X); + //console.log('Xptr = '+this.Xptr); + + for (let b=0;b<5;b++) { + this.Xbits[b] = this.rings.X[b+1][this.Xptr[b]-1]; + } + if (this.qbusin.Chi != "") { + //console.log('X Bits '+this.Xbits+'['+this.REVERSE_ITAlookup[this.Xbits.join("")]+']'); + //console.log('X Char = ' + this.REVERSE_ITAlookup[this.Xbits.join("")]); + if (this.qbusin.Chi == "Χ") { + // direct X added to Qbits + for (let b=0;b<5;b++) { + this.Qbits[b] = this.Qbits[b] ^ this.Xbits[b]; + } + //console.log('direct X: Qbits = '+this.Qbits); + } else if(this.qbusin.Chi == "ΔΧ") { + // delta X + for(let b=0;b<5;b++) { + this.Qbits[b] = this.Qbits[b] ^ this.Xbits[b]; + this.Qbits[b] = this.Qbits[b] ^ this.XbitsOneBack[b]; + } + //console.log('delta X: Xbits = '+this.Xbits+' Xbits-1 = '+this.XbitsOneBack); + //console.log('delta X: Qbits = '+this.Qbits); + } + } + this.XbitsOneBack = this.Xbits.slice(); + //console.log('setting XbitsOneBack to '+this.Xbits); + + //console.log('Zin+Xin::Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + + // Sbits - the current Psi wheel bits + //console.log(this.rings.S); + //console.log('Sptr = '+this.Sptr); + for (let b=0;b<5;b++) { + this.Sbits[b] = this.rings.S[b+1][this.Sptr[b]-1]; + } + if (this.qbusin.Psi != "") { + //console.log('S Bits '+this.Sbits+'['+this.REVERSE_ITAlookup[this.Sbits.join("")]+']'); + //console.log('S Char = ' + this.REVERSE_ITAlookup[this.Sbits.join("")]); + if(this.qbusin.Psi == "Ψ") { + // direct S added to Qbits + for (let b=0;b<5;b++) { + this.Qbits[b] = this.Qbits[b] ^ this.Sbits[b]; + } + //console.log('direct S: Qbits = '+this.Qbits); + } else if(this.qbusin.Psi == "ΔΨ") { + // delta S + for (let b=0;b<5;b++) { + this.Qbits[b] = this.Qbits[b] ^ this.Sbits[b]; + this.Qbits[b] = this.Qbits[b] ^ this.SbitsOneBack[b]; + } + //console.log('delta S: Qbits = '+this.Qbits); + } + } + this.SbitsOneBack = this.Sbits.slice(); + + //console.log('Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + } + + /** + * Conditional impulse Q bus section + */ + runQbusProcessingConditional() { + let cnt = [-1, -1, -1, -1, -1]; + const numrows = this.qbusswitches.condition.length; + + for (let r=0;r= 0 && Qswitch[s] != this.Qbits[s]) result = false; + } + // Check for NOT switch + if (row.Negate) result = !result; + + // AND each row to get final result + if (cnt[cPnt] == -1) { + cnt[cPnt] = result; + } else if (result==0) { + cnt[cPnt] = 0; + } + } + } + + // Negate the whole column, this allows A OR B by doing NOT(NOT A AND NOT B) + for (let c=0;c<5;c++) { + if (this.qbusswitches.condNegateAll) cnt[c] = !cnt[c]; + + if (cnt[c]==1) this.allCounters[c]++; + } + + } + + /** + * Addition of impulses Q bus section + */ + runQbusProcessingAddition() { + let row = this.qbusswitches.addition[0]; + const Qswitch = row.Qswitches.slice(); + if (row.C1) { + let addition = 0; + for (let s=0;s<5;s++) { + // XOR addition + if (Qswitch[s]) { + addition = addition ^ this.Qbits[s]; + } + } + const equals = (row.Equals==""?-1:(row.Equals=="."?0:1)); + if (addition == equals) { + this.allCounters[0]++; + } + } + //console.log("counter1="+this.allCounters[0]); + } + + /** + * Initialise thyratron rings + * These hold the pattern of 1s & 0s for each rotor on banks of thyraton GT1C valves which act as a one-bit store. + */ + initThyratrons(pattern) { + this.rings = { + X: { + 1: INIT_PATTERNS[pattern].X[1].slice().reverse(), + 2: INIT_PATTERNS[pattern].X[2].slice().reverse(), + 3: INIT_PATTERNS[pattern].X[3].slice().reverse(), + 4: INIT_PATTERNS[pattern].X[4].slice().reverse(), + 5: INIT_PATTERNS[pattern].X[5].slice().reverse() + }, + M: { + 1: INIT_PATTERNS[pattern].M[1].slice().reverse(), + 2: INIT_PATTERNS[pattern].M[2].slice().reverse(), + }, + S: { + 1: INIT_PATTERNS[pattern].S[1].slice().reverse(), + 2: INIT_PATTERNS[pattern].S[2].slice().reverse(), + 3: INIT_PATTERNS[pattern].S[3].slice().reverse(), + 4: INIT_PATTERNS[pattern].S[4].slice().reverse(), + 5: INIT_PATTERNS[pattern].S[5].slice().reverse() + } + }; + } + + /** + * Left Pad number + */ + leftPad(number, targetLength) { + let output = number + ""; + while (output.length < targetLength) { + output = "0" + output; + } + return output; + } + + /** + * Read argument bus switches X & . and convert to 1 & 0 + */ + readBusSwitches(row) { + let output = [-1, -1, -1, -1, -1]; + for (let c=0;c<5;c++) { + if (row[c]===".") output[c] = 0; + if (row[c]==="x") output[c] = 1; + } + return output; + } + +} diff --git a/src/core/lib/Lorenz.mjs b/src/core/lib/Lorenz.mjs new file mode 100644 index 00000000..e69946fa --- /dev/null +++ b/src/core/lib/Lorenz.mjs @@ -0,0 +1,155 @@ +/** + * Resources required by the Lorenz SZ40/42 and Colossus + * + * @author VirtualColossus + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ +import OperationError from "../errors/OperationError.mjs"; + +export const SWITCHES = [ + {name: "Up (.)", value: "."}, + {name: "Centre", value: ""}, + {name: "Down (x)", value: "x"} +]; + +export const ITA2_TABLE = { + "A": "11000", + "B": "10011", + "C": "01110", + "D": "10010", + "E": "10000", + "F": "10110", + "G": "01011", + "H": "00101", + "I": "01100", + "J": "11010", + "K": "11110", + "L": "01001", + "M": "00111", + "N": "00110", + "O": "00011", + "P": "01101", + "Q": "11101", + "R": "01010", + "S": "10100", + "T": "00001", + "U": "11100", + "V": "01111", + "W": "11001", + "X": "10111", + "Y": "10101", + "Z": "10001", + "3": "00010", + "4": "01000", + "9": "00100", + "/": "00000", + " ": "00100", + ".": "00100", + "8": "11111", + "5": "11011", + "-": "11111", + "+": "11011" +}; + +export const ROTOR_SIZES = { + S1: 43, + S2: 47, + S3: 51, + S4: 53, + S5: 59, + M37: 37, + M61: 61, + X1: 41, + X2: 31, + X3: 29, + X4: 26, + X5: 23 +}; + +/** + * Initial rotor patterns + */ +export const INIT_PATTERNS = { + "No Pattern": { + "X": { + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 4: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 5: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + "S": { + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 4: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 5: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + "M": { + 1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + } + + }, + "KH Pattern": { + "X": { + 1: [0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0], + 2: [1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0], + 3: [0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0], + 4: [1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0], + 5: [1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0] + }, + "S": { + 1: [0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1], + 2: [0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1], + 3: [0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1], + 4: [0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], + 5: [1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0] + }, + "M": { + 1: [0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0], + 2: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0] + } + }, + "ZMUG Pattern": { + "X": { + 1: [0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0], + 2: [1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0], + 3: [0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0], + 4: [1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1], + 5: [0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1] + }, + "S": { + 1: [1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0], + 2: [0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], + 3: [0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1], + 4: [0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1], + 5: [1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0] + }, + "M": { + 1: [1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1], + 2: [0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1] + } + }, + "BREAM Pattern": { + "X": { + 1: [0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0], + 2: [0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1], + 3: [1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0], + 4: [1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0], + 5: [0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0] + }, + "S": { + 1: [0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0], + 2: [1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0], + 3: [1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], + 4: [0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1], + 5: [1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0] + }, + "M": { + 1: [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1], + 2: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1] + } + } +}; \ No newline at end of file diff --git a/src/core/operations/Colossus.mjs b/src/core/operations/Colossus.mjs new file mode 100644 index 00000000..09160f38 --- /dev/null +++ b/src/core/operations/Colossus.mjs @@ -0,0 +1,517 @@ +/** + * Emulation of Colossus. + * + * @author VirtualColossus [martin@virtualcolossus.co.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import OperationError from "../errors/OperationError.mjs"; +import { ColossusComputer } from "../lib/Colossus.mjs"; +import { SWITCHES } from "../lib/Lorenz.mjs"; + +/** + * Colossus operation + */ +class Colossus extends Operation { + + /** + * Lorenz constructor + */ + constructor() { + super(); + this.name = "Colossus"; + this.module = "Bletchley"; + this.description = "Colossus ... "; + this.infoURL = "https://wikipedia.org/wiki/Colossus_computer"; + this.inputType = "string"; + this.outputType = "JSON"; + this.presentType = "html"; + this.args = [ + { + name: "Input", + type: "label" + }, + { + name: "Pattern", + type: "option", + value: ["KH Pattern", "ZMUG Pattern", "BREAM Pattern"] + }, + { + name: "QBusZ", + type: "option", + value: ["", "Z", "ΔZ"] + }, + { + name: "QBusΧ", + type: "option", + value: ["", "Χ", "ΔΧ"] + }, + { + name: "QBusΨ", + type: "option", + value: ["", "Ψ", "ΔΨ"] + }, + { + name: "Limitation", + type: "option", + value: ["None", "Χ2", "Χ2 + P5", "X2 + Ψ1", "X2 + Ψ1 + P5"] + }, + { + name: "K Rack Option", + type: "argSelector", + "value": [ + { + name: "Select Program", + on: [7], + off: [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40] + }, + { + name: "Top Section - Conditional", + on: [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], + off: [7, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40] + }, + { + name: "Bottom Section - Addition", + on: [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], + off: [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] + }, + { + name: "Advanced", + on: [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40], + off: [7] + } + ] + }, + { + name: "Program to run", + type: "option", + value: ["", "1+2=. (1+2 Break In, Find X1,X2)", "4=3=/1=2 (Given X1,X2 find X4,X5)", "/,5,U (Count chars to find X3)"] + }, + { + name: "K Rack: Conditional", + type: "label" + }, + { + name: "R1-Q1", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R1-Q2", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R1-Q3", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R1-Q4", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R1-Q5", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R1-Negate", + type: "boolean" + }, + { + name: "R1-Counter", + type: "option", + value: ["", "1", "2", "3", "4", "5"] + }, + { + name: "R2-Q1", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R2-Q2", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R2-Q3", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R2-Q4", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R2-Q5", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R2-Negate", + type: "boolean" + }, + { + name: "R2-Counter", + type: "option", + value: ["", "1", "2", "3", "4", "5"] + }, + { + name: "R3-Q1", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R3-Q2", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R3-Q3", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R3-Q4", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R3-Q5", + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 + }, + { + name: "R3-Negate", + type: "boolean" + }, + { + name: "R3-Counter", + type: "option", + value: ["", "1", "2", "3", "4", "5"] + }, + { + name: "Negate All", + type: "boolean" + }, + { + name: "K Rack: Addition", + type: "label" + }, + { + name: "Add-Q1", + type: "boolean" + }, + { + name: "Add-Q2", + type: "boolean" + }, + { + name: "Add-Q3", + type: "boolean" + }, + { + name: "Add-Q4", + type: "boolean" + }, + { + name: "Add-Q5", + type: "boolean" + }, + { + name: "Add-Equals", + type: "editableOptionShort", + value: SWITCHES + }, + { + name: "Add-Counter1", + type: "boolean" + }, + { + name: "Add Negate All", + type: "boolean" + }, + { + name: "Total Motor", + type: "boolean" + }, + { + name: "Master Control Panel", + type: "label" + }, + { + name: "Set Total", + type: "number", + value: 0 + }, + { + name: "Fast Step", + type: "option", + value: ["", "X1", "X2", "X3", "X4", "X5", "M37", "M61", "S1", "S2", "S3", "S4", "S5"] + }, + { + name: "Slow Step", + type: "option", + value: ["", "X1", "X2", "X3", "X4", "X5", "M37", "M61", "S1", "S2", "S3", "S4", "S5"] + }, + { + name: "Start X1", + type: "number", + value: 1 + }, + { + name: "Start X2", + type: "number", + value: 1 + }, + { + name: "Start X3", + type: "number", + value: 1 + }, + { + name: "Start X4", + type: "number", + value: 1 + }, + { + name: "Start X5", + type: "number", + value: 1 + }, + { + name: "Start M61", + type: "number", + value: 1 + }, + { + name: "Start M37", + type: "number", + value: 1 + }, + { + name: "Start S1", + type: "number", + value: 1 + }, + { + name: "Start S2", + type: "number", + value: 1 + }, + { + name: "Start S3", + type: "number", + value: 1 + }, + { + name: "Start S4", + type: "number", + value: 1 + }, + { + name: "Start S5", + type: "number", + value: 1 + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {Object} + */ + run(input, args) { + + const pattern = args[1]; + const qbusin = { + "Z": args[2], + "Chi": args[3], + "Psi": args[4], + }; + + const limitation = args[5]; + let lm = [false,false,false]; + if (limitation.includes("Χ2")) lm[0] = true; + if (limitation.includes("Ψ1")) lm[1] = true; + if (limitation.includes("P5")) lm[2] = true; + const limit = { + X2: lm[0], S1: lm[1], P5: lm[2] + }; + + const KRackOpt = args[6]; + const setProgram = args[7]; + + if (KRackOpt === "Select Program" && setProgram !== "") { + args = this.selectProgram(setProgram, args); + } + + // Q1,Q2,Q3,Q4,Q5,negate,counter1 + const qbusswitches = { + condition: [ + {Qswitches: [args[9], args[10], args[11], args[12], args[13]], Negate: args[14], Counter: args[15]}, + {Qswitches: [args[16], args[17], args[18], args[19], args[20]], Negate: args[21], Counter: args[22]}, + {Qswitches: [args[23], args[24], args[25], args[26], args[27]], Negate: args[28], Counter: args[29]} + ], + condNegateAll: args[30], + addition: [ + {Qswitches: [args[32], args[33], args[34], args[35], args[36]], Equals: args[37], C1: args[38]} + ], + addNegateAll: args[39], + totalMotor: args[40] + }; + + const settotal = args[42]; + + // null|fast|slow for each of S1-5,M1-2,X1-5 + const control = { + fast: args[43], + slow: args[44] + }; + + // Start positions + const starts = { + X1: args[45], X2: args[46], X3: args[47], X4: args[48], X5: args[49], + M61: args[50], M37: args[51], + S1: args[52], S2: args[53], S3: args[54], S4: args[55], S5: args[56] + }; + + const colossus = new ColossusComputer(input, pattern, qbusin, qbusswitches, control, starts, settotal, limit); + const result = colossus.run(); + + console.log(result); + + return result; + + } + + /** + * Select Program + */ + selectProgram(progname, args) { + + // Bill Tutte's 1+2 Break In + if(progname == "1+2=. (1+2 Break In, Find X1,X2)") { + // Clear any other counters + args[15] = ""; // Conditional R1 + args[22] = ""; // Conditional R2 + args[29] = ""; // Conditional R3 + // Set Add Q1+Q2=. into Counter 1 + args[32] = true; + args[33] = true; + args[34] = false; + args[35] = false; + args[36] = false; + args[37] = "."; + args[38] = true; + } + + // 4=3=/1=2 : Find X4 & X5 where X1 & X2 are known + if(progname == "4=3=/1=2 (Given X1,X2 find X4,X5)") { + // Set Conditional R1 : Match NOT ..?.. into counter 1 + args[9] = "."; + args[10] = "."; + args[11] = ""; + args[12] = "."; + args[13] = "."; + args[14] = true; + args[15] = "1"; + // Set Conditional R2 : AND Match NOT xx?xx into counter 1 + args[16] = "x"; + args[17] = "x"; + args[18] = ""; + args[19] = "x"; + args[20] = "x"; + args[21] = true; + args[22] = "1"; + // clear Conditional R3 + args[29] = ""; + // Negate result, giving NOT(NOT Q1 AND NOT Q2) which is equivalent to Q1 OR Q2 + args[30] = true; + // Clear Addition row counter + args[38] = false; + } + + // /,5,U : Count number of matches of /, 5 & U to find X3 + if(progname == "/,5,U (Count chars to find X3)") { + // Set Conditional R1 : Match / char, ITA2 = ..... into counter 1 + args[9] = "."; + args[10] = "."; + args[11] = "."; + args[12] = "."; + args[13] = "."; + args[14] = false; + args[15] = "1"; + // Set Conditional R2 : Match 5 char, ITA2 = xx.xx into counter 2 + args[16] = "x"; + args[17] = "x"; + args[18] = "."; + args[19] = "x"; + args[20] = "x"; + args[21] = false; + args[22] = "2"; + // Set Conditional R3 : Match U char, ITA2 = xxx.. into counter 3 + args[23] = "x"; + args[24] = "x"; + args[25] = "x"; + args[26] = "."; + args[27] = "."; + args[28] = false; + args[29] = "3"; + // Clear Negate result + args[30] = false; + // Clear Addition row counter + args[38] = false; + } + + return args; + } + + /** + * Displays Colossus results in an HTML table + * + * @param {Object} output + * @param {Object[]} output.counters + * @returns {html} + */ + present(output) { + console.log("output="+ typeof(output)); + console.log("counters="+ typeof(output.counters)); + + let html = "Colossus Printer\n\n"; + html += output.printout + "\n\n"; + html += "Colossus Counters\n\n"; + html += "\n"; + html += ""; + for (const ct of output.counters) { + html += `\n`; + } + html += ""; + html += "
        C1 C2 C3 C4 C5
        ${ct}
        "; + return html; + } + +} + +export default Colossus; From 32625dc0b0a1692d25a21a1496b4d9973b1383ab Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 27 Nov 2019 12:49:35 +0000 Subject: [PATCH 0184/1024] Added label type ingredient --- src/web/HTMLIngredient.mjs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/web/HTMLIngredient.mjs b/src/web/HTMLIngredient.mjs index fd496f2a..18503dff 100755 --- a/src/web/HTMLIngredient.mjs +++ b/src/web/HTMLIngredient.mjs @@ -293,6 +293,16 @@ class HTMLIngredient { this.manager.addDynamicListener(".arg-selector", "change", this.argSelectorChange, this); break; + case "label": + html += `
        + + +
        `; + break; default: break; } From 2750284eea47b846cb47d159e874079398eeaf96 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Nov 2019 12:56:10 +0000 Subject: [PATCH 0185/1024] Improved comment in Tar extractor --- src/core/lib/FileSignatures.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 2e85baf5..17b17f23 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -2856,8 +2856,7 @@ export function extractTAR(bytes, offset) { // Move to ustar identifier. stream.moveForwardsBy(0x101); if (stream.getBytes(5).join("") !== [0x75, 0x73, 0x74, 0x61, 0x72].join("")) { - - // Needed since we cannot rely on there being at least 0x106 padding of 0s at the end of the TAR(even though there usually is). + // Reverse back to the end of the last section. stream.moveBackwardsBy(0x106); break; } From 44c2b71e6c63d4dbe27304efaefb1ca18c0902e2 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Nov 2019 12:56:30 +0000 Subject: [PATCH 0186/1024] 9.11.10 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b820863c..190ba0ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.9", + "version": "9.11.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 15b7253f..3060deca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.9", + "version": "9.11.10", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 820bd2f8679c4f142b33484436c4b5a213769bea Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 27 Nov 2019 13:38:28 +0000 Subject: [PATCH 0187/1024] Added Total Motor, fixed bug in printout --- src/core/lib/Colossus.mjs | 27 ++++++++++++++++--------- src/core/operations/Colossus.mjs | 34 ++++++++++++++++++++++++++------ 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index d25d3285..da6829e7 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -61,6 +61,8 @@ export class ColossusComputer { this.rotorPtrs = {}; + this.totalmotor = 0; + } /** @@ -98,13 +100,17 @@ export class ColossusComputer { var slowRef = "00"; if (fast !== "") fastRef = this.leftPad(this.rotorPtrs[fast],2); if (slow !== "") slowRef = this.leftPad(this.rotorPtrs[slow],2); - result.printout += fastRef + " " + slowRef + " : "; + var printline = ''; for (let c=0;c<5;c++) { if (this.allCounters[c] > this.settotal) { - result.printout += String.fromCharCode(c+97) + this.allCounters[c]+" "; + printline += String.fromCharCode(c+97) + this.allCounters[c]+" "; } } - result.printout += "\n"; + if (printline !== "") { + result.printout += fastRef + " " + slowRef + " : "; + result.printout += printline; + result.printout += "\n"; + } // Step fast rotor if required if (fast != '') { @@ -193,17 +199,17 @@ export class ColossusComputer { //console.log(this.Mptr); //console.log(this.rings.M[2]); const basicmotor = this.rings.M[2][this.Mptr[0]-1]; - let totalmotor = basicmotor; + this.totalmotor = basicmotor; if (x2sw || s1sw) { if (basicmotor===0 && lim===1) { - totalmotor = 0; + this.totalmotor = 0; } else { - totalmotor = 1; + this.totalmotor = 1; } } - //console.log('BM='+basicmotor+', TM='+totalmotor); + //console.log('BM='+basicmotor+', TM='+this.totalmotor); // Step Chi rotors for (let r=0; r<5; r++) { @@ -211,7 +217,7 @@ export class ColossusComputer { if (this.Xptr[r] > ROTOR_SIZES["X"+(r+1)]) this.Xptr[r] = 1; } - if (totalmotor) { + if (this.totalmotor) { //console.log('step Psi'); // Step Psi rotors for (let r=0; r<5; r++) { @@ -346,7 +352,10 @@ export class ColossusComputer { for (let c=0;c<5;c++) { if (this.qbusswitches.condNegateAll) cnt[c] = !cnt[c]; - if (cnt[c]==1) this.allCounters[c]++; + if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor == 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor == 1)) { + if (cnt[c]==1) this.allCounters[c]++; + } + } } diff --git a/src/core/operations/Colossus.mjs b/src/core/operations/Colossus.mjs index 09160f38..46f0451e 100644 --- a/src/core/operations/Colossus.mjs +++ b/src/core/operations/Colossus.mjs @@ -87,7 +87,7 @@ class Colossus extends Operation { { name: "Program to run", type: "option", - value: ["", "1+2=. (1+2 Break In, Find X1,X2)", "4=3=/1=2 (Given X1,X2 find X4,X5)", "/,5,U (Count chars to find X3)"] + value: ["", "Letter Count", "1+2=. (1+2 Break In, Find X1,X2)", "4=3=/1=2 (Given X1,X2 find X4,X5)", "/,5,U (Count chars to find X3)"] }, { name: "K Rack: Conditional", @@ -241,7 +241,8 @@ class Colossus extends Operation { { name: "Add-Equals", type: "editableOptionShort", - value: SWITCHES + value: SWITCHES, + defaultIndex: 1 }, { name: "Add-Counter1", @@ -253,7 +254,9 @@ class Colossus extends Operation { }, { name: "Total Motor", - type: "boolean" + type: "editableOptionShort", + value: SWITCHES, + defaultIndex: 1 }, { name: "Master Control Panel", @@ -411,8 +414,27 @@ class Colossus extends Operation { */ selectProgram(progname, args) { + // Basic Letter Count + if (progname == "Letter Count") { + // Set Conditional R1 : count every character into counter 1 + args[9] = ""; + args[10] = ""; + args[11] = ""; + args[12] = ""; + args[13] = ""; + args[14] = false; + args[15] = "1"; + // clear Conditional R2 & R3 + args[22] = ""; + args[29] = ""; + // Clear Negate result + args[30] = false; + // Clear Addition row counter + args[38] = false; + } + // Bill Tutte's 1+2 Break In - if(progname == "1+2=. (1+2 Break In, Find X1,X2)") { + if (progname == "1+2=. (1+2 Break In, Find X1,X2)") { // Clear any other counters args[15] = ""; // Conditional R1 args[22] = ""; // Conditional R2 @@ -428,7 +450,7 @@ class Colossus extends Operation { } // 4=3=/1=2 : Find X4 & X5 where X1 & X2 are known - if(progname == "4=3=/1=2 (Given X1,X2 find X4,X5)") { + if (progname == "4=3=/1=2 (Given X1,X2 find X4,X5)") { // Set Conditional R1 : Match NOT ..?.. into counter 1 args[9] = "."; args[10] = "."; @@ -454,7 +476,7 @@ class Colossus extends Operation { } // /,5,U : Count number of matches of /, 5 & U to find X3 - if(progname == "/,5,U (Count chars to find X3)") { + if (progname == "/,5,U (Count chars to find X3)") { // Set Conditional R1 : Match / char, ITA2 = ..... into counter 1 args[9] = "."; args[10] = "."; From 61ab9a904f06dd5f527b9b3566b7dd7d81e6c1b9 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Thu, 28 Nov 2019 13:22:51 +0000 Subject: [PATCH 0188/1024] Added argument validation --- src/core/lib/Colossus.mjs | 140 +++++++++++++++---------------- src/core/lib/Lorenz.mjs | 3 +- src/core/operations/Colossus.mjs | 57 +++++++++---- 3 files changed, 111 insertions(+), 89 deletions(-) diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index da6829e7..acb8d6fc 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -5,8 +5,6 @@ * @copyright Crown Copyright 2019 * @license Apache-2.0 */ -import OperationError from "../errors/OperationError.mjs"; -import Utils from "../Utils.mjs"; import {INIT_PATTERNS, ITA2_TABLE, ROTOR_SIZES} from "../lib/Lorenz.mjs"; /** @@ -26,10 +24,10 @@ export class ColossusComputer { constructor(ciphertext, pattern, qbusin, qbusswitches, control, starts, settotal, limit) { this.ITAlookup = ITA2_TABLE; - this.REVERSE_ITAlookup = {}; + this.ReverseITAlookup = {}; for (const letter in this.ITAlookup) { const code = this.ITAlookup[letter]; - this.REVERSE_ITAlookup[code] = letter; + this.ReverseITAlookup[code] = letter; } this.initThyratrons(pattern); @@ -71,13 +69,13 @@ export class ColossusComputer { */ run() { - let result = { + const result = { printout: "" }; // loop until our start positions are back to the beginning this.rotorPtrs = {X1: this.starts.X1, X2: this.starts.X2, X3: this.starts.X3, X4: this.starts.X4, X5: this.starts.X5, M61: this.starts.M61, M37: this.starts.M37, S1: this.starts.S1, S2: this.starts.S2, S3: this.starts.S3, S4: this.starts.S4, S5: this.starts.S5}; - //this.rotorPtrs = this.starts; + // this.rotorPtrs = this.starts; let runcount = 1; const fast = this.control.fast; @@ -96,11 +94,11 @@ export class ColossusComputer { this.runTape(); // Only print result if larger than set total - var fastRef = "00"; - var slowRef = "00"; - if (fast !== "") fastRef = this.leftPad(this.rotorPtrs[fast],2); - if (slow !== "") slowRef = this.leftPad(this.rotorPtrs[slow],2); - var printline = ''; + let fastRef = "00"; + let slowRef = "00"; + if (fast !== "") fastRef = this.leftPad(this.rotorPtrs[fast], 2); + if (slow !== "") slowRef = this.leftPad(this.rotorPtrs[slow], 2); + let printline = ""; for (let c=0;c<5;c++) { if (this.allCounters[c] > this.settotal) { printline += String.fromCharCode(c+97) + this.allCounters[c]+" "; @@ -110,16 +108,16 @@ export class ColossusComputer { result.printout += fastRef + " " + slowRef + " : "; result.printout += printline; result.printout += "\n"; - } + } // Step fast rotor if required - if (fast != '') { + if (fast !== "") { this.rotorPtrs[fast]++; if (this.rotorPtrs[fast] > ROTOR_SIZES[fast]) this.rotorPtrs[fast] = 1; } - + // Step slow rotor if fast rotor has returned to initial start position - if (slow != '' && this.rotorPtrs[fast] === this.starts[fast]) { + if (slow !== "" && this.rotorPtrs[fast] === this.starts[fast]) { this.rotorPtrs[slow]++; if (this.rotorPtrs[slow] > ROTOR_SIZES[slow]) this.rotorPtrs[slow] = 1; } @@ -132,7 +130,7 @@ export class ColossusComputer { result.runcount = runcount; return result; - }; + } /** * Run tape loop @@ -144,13 +142,13 @@ export class ColossusComputer { this.Xptr = [this.rotorPtrs.X1, this.rotorPtrs.X2, this.rotorPtrs.X3, this.rotorPtrs.X4, this.rotorPtrs.X5]; this.Mptr = [this.rotorPtrs.M37, this.rotorPtrs.M61]; this.Sptr = [this.rotorPtrs.S1, this.rotorPtrs.S2, this.rotorPtrs.S3, this.rotorPtrs.S4, this.rotorPtrs.S5]; - //console.log(this.Xptr); + // console.log(this.Xptr); // Run full loop of all character on the input tape (Z) for (let i=0; i ROTOR_SIZES["S"+(r+1)]) this.Sptr[r] = 1; } } - + // Move M37 rotor if M61 set - if (this.rings.M[1][this.Mptr[1]-1]==1) this.Mptr[0]++; + if (this.rings.M[1][this.Mptr[1]-1]===1) this.Mptr[0]++; if (this.Mptr[0] > ROTOR_SIZES.M37) this.Mptr[0]=1; // Always move M61 rotor @@ -242,107 +240,107 @@ export class ColossusComputer { getQbusInputs(charZin) { // Zbits - the bits from the current character from the cipher tape. this.Zbits = this.ITAlookup[charZin].split(""); - //console.log('Zbits = '+this.Zbits); - if (this.qbusin.Z == 'Z') { + // console.log('Zbits = '+this.Zbits); + if (this.qbusin.Z === "Z") { // direct Z this.Qbits = this.Zbits; - //console.log('direct Z: Qbits = '+this.Qbits); - } else if(this.qbusin.Z == 'ΔZ') { + // console.log('direct Z: Qbits = '+this.Qbits); + } else if (this.qbusin.Z === "ΔZ") { // delta Z, the Bitwise XOR of this character Zbits + last character Zbits - for(let b=0;b<5;b++) { + for (let b=0;b<5;b++) { this.Qbits[b] = this.Zbits[b] ^ this.ZbitsOneBack[b]; } - //console.log('delta Z: Qbits = '+this.Qbits); + // console.log('delta Z: Qbits = '+this.Qbits); } this.ZbitsOneBack = this.Zbits.slice(); // copy value of object, not reference - //console.log('Zin::Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + // console.log('Zin::Q bus now '+this.Qbits+'['+this.ReverseITAlookup[this.Qbits.join("")]+']'); // Xbits - the current Chi wheel bits - //console.log(this.rings.X); - //console.log('Xptr = '+this.Xptr); + // console.log(this.rings.X); + // console.log('Xptr = '+this.Xptr); for (let b=0;b<5;b++) { this.Xbits[b] = this.rings.X[b+1][this.Xptr[b]-1]; } - if (this.qbusin.Chi != "") { - //console.log('X Bits '+this.Xbits+'['+this.REVERSE_ITAlookup[this.Xbits.join("")]+']'); - //console.log('X Char = ' + this.REVERSE_ITAlookup[this.Xbits.join("")]); - if (this.qbusin.Chi == "Χ") { + if (this.qbusin.Chi !== "") { + // console.log('X Bits '+this.Xbits+'['+this.ReverseITAlookup[this.Xbits.join("")]+']'); + // console.log('X Char = ' + this.ReverseITAlookup[this.Xbits.join("")]); + if (this.qbusin.Chi === "Χ") { // direct X added to Qbits for (let b=0;b<5;b++) { this.Qbits[b] = this.Qbits[b] ^ this.Xbits[b]; } - //console.log('direct X: Qbits = '+this.Qbits); - } else if(this.qbusin.Chi == "ΔΧ") { + // console.log('direct X: Qbits = '+this.Qbits); + } else if (this.qbusin.Chi === "ΔΧ") { // delta X - for(let b=0;b<5;b++) { + for (let b=0;b<5;b++) { this.Qbits[b] = this.Qbits[b] ^ this.Xbits[b]; this.Qbits[b] = this.Qbits[b] ^ this.XbitsOneBack[b]; } - //console.log('delta X: Xbits = '+this.Xbits+' Xbits-1 = '+this.XbitsOneBack); - //console.log('delta X: Qbits = '+this.Qbits); + // console.log('delta X: Xbits = '+this.Xbits+' Xbits-1 = '+this.XbitsOneBack); + // console.log('delta X: Qbits = '+this.Qbits); } } this.XbitsOneBack = this.Xbits.slice(); - //console.log('setting XbitsOneBack to '+this.Xbits); + // console.log('setting XbitsOneBack to '+this.Xbits); - //console.log('Zin+Xin::Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + // console.log('Zin+Xin::Q bus now '+this.Qbits+'['+this.ReverseITAlookup[this.Qbits.join("")]+']'); // Sbits - the current Psi wheel bits - //console.log(this.rings.S); - //console.log('Sptr = '+this.Sptr); + // console.log(this.rings.S); + // console.log('Sptr = '+this.Sptr); for (let b=0;b<5;b++) { this.Sbits[b] = this.rings.S[b+1][this.Sptr[b]-1]; } - if (this.qbusin.Psi != "") { - //console.log('S Bits '+this.Sbits+'['+this.REVERSE_ITAlookup[this.Sbits.join("")]+']'); - //console.log('S Char = ' + this.REVERSE_ITAlookup[this.Sbits.join("")]); - if(this.qbusin.Psi == "Ψ") { + if (this.qbusin.Psi !== "") { + // console.log('S Bits '+this.Sbits+'['+this.ReverseITAlookup[this.Sbits.join("")]+']'); + // console.log('S Char = ' + this.ReverseITAlookup[this.Sbits.join("")]); + if (this.qbusin.Psi === "Ψ") { // direct S added to Qbits for (let b=0;b<5;b++) { this.Qbits[b] = this.Qbits[b] ^ this.Sbits[b]; } - //console.log('direct S: Qbits = '+this.Qbits); - } else if(this.qbusin.Psi == "ΔΨ") { + // console.log('direct S: Qbits = '+this.Qbits); + } else if (this.qbusin.Psi === "ΔΨ") { // delta S for (let b=0;b<5;b++) { this.Qbits[b] = this.Qbits[b] ^ this.Sbits[b]; this.Qbits[b] = this.Qbits[b] ^ this.SbitsOneBack[b]; } - //console.log('delta S: Qbits = '+this.Qbits); + // console.log('delta S: Qbits = '+this.Qbits); } } this.SbitsOneBack = this.Sbits.slice(); - //console.log('Q bus now '+this.Qbits+'['+this.REVERSE_ITAlookup[this.Qbits.join("")]+']'); + // console.log('Q bus now '+this.Qbits+'['+this.ReverseITAlookup[this.Qbits.join("")]+']'); } /** * Conditional impulse Q bus section */ runQbusProcessingConditional() { - let cnt = [-1, -1, -1, -1, -1]; + const cnt = [-1, -1, -1, -1, -1]; const numrows = this.qbusswitches.condition.length; for (let r=0;r= 0 && Qswitch[s] != this.Qbits[s]) result = false; + if (Qswitch[s] >= 0 && Qswitch[s] !== this.Qbits[s]) result = false; } // Check for NOT switch if (row.Negate) result = !result; // AND each row to get final result - if (cnt[cPnt] == -1) { + if (cnt[cPnt] === -1) { cnt[cPnt] = result; - } else if (result==0) { + } else if (result === 0) { cnt[cPnt] = 0; } } @@ -352,10 +350,10 @@ export class ColossusComputer { for (let c=0;c<5;c++) { if (this.qbusswitches.condNegateAll) cnt[c] = !cnt[c]; - if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor == 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor == 1)) { - if (cnt[c]==1) this.allCounters[c]++; + if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor === 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor === 1)) { + if (cnt[c]===1) this.allCounters[c]++; } - + } } @@ -364,7 +362,7 @@ export class ColossusComputer { * Addition of impulses Q bus section */ runQbusProcessingAddition() { - let row = this.qbusswitches.addition[0]; + const row = this.qbusswitches.addition[0]; const Qswitch = row.Qswitches.slice(); if (row.C1) { let addition = 0; @@ -374,12 +372,12 @@ export class ColossusComputer { addition = addition ^ this.Qbits[s]; } } - const equals = (row.Equals==""?-1:(row.Equals=="."?0:1)); - if (addition == equals) { + const equals = (row.Equals===""?-1:(row.Equals==="."?0:1)); + if (addition === equals) { this.allCounters[0]++; } } - //console.log("counter1="+this.allCounters[0]); + // console.log("counter1="+this.allCounters[0]); } /** @@ -424,7 +422,7 @@ export class ColossusComputer { * Read argument bus switches X & . and convert to 1 & 0 */ readBusSwitches(row) { - let output = [-1, -1, -1, -1, -1]; + const output = [-1, -1, -1, -1, -1]; for (let c=0;c<5;c++) { if (row[c]===".") output[c] = 0; if (row[c]==="x") output[c] = 1; diff --git a/src/core/lib/Lorenz.mjs b/src/core/lib/Lorenz.mjs index e69946fa..fa4350e0 100644 --- a/src/core/lib/Lorenz.mjs +++ b/src/core/lib/Lorenz.mjs @@ -5,7 +5,6 @@ * @copyright Crown Copyright 2019 * @license Apache-2.0 */ -import OperationError from "../errors/OperationError.mjs"; export const SWITCHES = [ {name: "Up (.)", value: "."}, @@ -152,4 +151,4 @@ export const INIT_PATTERNS = { 2: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1] } } -}; \ No newline at end of file +}; diff --git a/src/core/operations/Colossus.mjs b/src/core/operations/Colossus.mjs index 46f0451e..60c7f14c 100644 --- a/src/core/operations/Colossus.mjs +++ b/src/core/operations/Colossus.mjs @@ -278,27 +278,27 @@ class Colossus extends Operation { value: ["", "X1", "X2", "X3", "X4", "X5", "M37", "M61", "S1", "S2", "S3", "S4", "S5"] }, { - name: "Start X1", + name: "Start Χ1", type: "number", value: 1 }, { - name: "Start X2", + name: "Start Χ2", type: "number", value: 1 }, { - name: "Start X3", + name: "Start Χ3", type: "number", value: 1 }, { - name: "Start X4", + name: "Start Χ4", type: "number", value: 1 }, { - name: "Start X5", + name: "Start Χ5", type: "number", value: 1 }, @@ -313,27 +313,27 @@ class Colossus extends Operation { value: 1 }, { - name: "Start S1", + name: "Start Ψ1", type: "number", value: 1 }, { - name: "Start S2", + name: "Start Ψ2", type: "number", value: 1 }, { - name: "Start S3", + name: "Start Ψ3", type: "number", value: 1 }, { - name: "Start S4", + name: "Start Ψ4", type: "number", value: 1 }, { - name: "Start S5", + name: "Start Ψ5", type: "number", value: 1 } @@ -355,7 +355,7 @@ class Colossus extends Operation { }; const limitation = args[5]; - let lm = [false,false,false]; + const lm = [false, false, false]; if (limitation.includes("Χ2")) lm[0] = true; if (limitation.includes("Ψ1")) lm[1] = true; if (limitation.includes("P5")) lm[2] = true; @@ -370,6 +370,16 @@ class Colossus extends Operation { args = this.selectProgram(setProgram, args); } + const re = new RegExp("^$|^[.x]$"); + for (let qr=0;qr<3;qr++) { + for (let a=0;a<5;a++) { + if (!re.test(args[((qr*7)+(a+9))])) throw new OperationError("Switch R"+(qr+1)+"-Q"+(a+1)+" can only be set to blank, . or x"); + } + } + + if (!re.test(args[37])) throw new OperationError("Switch Add-Equals can only be set to blank, . or x"); + if (!re.test(args[40])) throw new OperationError("Switch Total Motor can only be set to blank, . or x"); + // Q1,Q2,Q3,Q4,Q5,negate,counter1 const qbusswitches = { condition: [ @@ -385,7 +395,8 @@ class Colossus extends Operation { totalMotor: args[40] }; - const settotal = args[42]; + const settotal = parseInt(args[42], 10); + if (settotal < 0 || settotal > 9999) throw new OperationError("Set Total must be between 0000 and 9999"); // null|fast|slow for each of S1-5,M1-2,X1-5 const control = { @@ -394,6 +405,20 @@ class Colossus extends Operation { }; // Start positions + + if (args[52]<1 || args[52]>43) throw new OperationError("Ψ1 start must be between 1 and 43"); + if (args[53]<1 || args[53]>47) throw new OperationError("Ψ2 start must be between 1 and 47"); + if (args[54]<1 || args[54]>51) throw new OperationError("Ψ3 start must be between 1 and 51"); + if (args[55]<1 || args[55]>53) throw new OperationError("Ψ4 start must be between 1 and 53"); + if (args[56]<1 || args[57]>59) throw new OperationError("Ψ5 start must be between 1 and 59"); + if (args[51]<1 || args[51]>37) throw new OperationError("Μ37 start must be between 1 and 37"); + if (args[50]<1 || args[50]>61) throw new OperationError("Μ61 start must be between 1 and 61"); + if (args[45]<1 || args[45]>41) throw new OperationError("Χ1 start must be between 1 and 41"); + if (args[46]<1 || args[46]>31) throw new OperationError("Χ2 start must be between 1 and 31"); + if (args[47]<1 || args[47]>29) throw new OperationError("Χ3 start must be between 1 and 29"); + if (args[48]<1 || args[48]>26) throw new OperationError("Χ4 start must be between 1 and 26"); + if (args[49]<1 || args[49]>23) throw new OperationError("Χ5 start must be between 1 and 23"); + const starts = { X1: args[45], X2: args[46], X3: args[47], X4: args[48], X5: args[49], M61: args[50], M37: args[51], @@ -415,7 +440,7 @@ class Colossus extends Operation { selectProgram(progname, args) { // Basic Letter Count - if (progname == "Letter Count") { + if (progname === "Letter Count") { // Set Conditional R1 : count every character into counter 1 args[9] = ""; args[10] = ""; @@ -434,7 +459,7 @@ class Colossus extends Operation { } // Bill Tutte's 1+2 Break In - if (progname == "1+2=. (1+2 Break In, Find X1,X2)") { + if (progname === "1+2=. (1+2 Break In, Find X1,X2)") { // Clear any other counters args[15] = ""; // Conditional R1 args[22] = ""; // Conditional R2 @@ -450,7 +475,7 @@ class Colossus extends Operation { } // 4=3=/1=2 : Find X4 & X5 where X1 & X2 are known - if (progname == "4=3=/1=2 (Given X1,X2 find X4,X5)") { + if (progname === "4=3=/1=2 (Given X1,X2 find X4,X5)") { // Set Conditional R1 : Match NOT ..?.. into counter 1 args[9] = "."; args[10] = "."; @@ -476,7 +501,7 @@ class Colossus extends Operation { } // /,5,U : Count number of matches of /, 5 & U to find X3 - if (progname == "/,5,U (Count chars to find X3)") { + if (progname === "/,5,U (Count chars to find X3)") { // Set Conditional R1 : Match / char, ITA2 = ..... into counter 1 args[9] = "."; args[10] = "."; From 57ee3f305dd63025c5cb30c79bb93090c6b65649 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Thu, 28 Nov 2019 13:56:02 +0000 Subject: [PATCH 0189/1024] Fixed issue in counter --- src/core/lib/Colossus.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index acb8d6fc..93ff8de5 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -339,7 +339,7 @@ export class ColossusComputer { // AND each row to get final result if (cnt[cPnt] === -1) { - cnt[cPnt] = result; + cnt[cPnt] = (result?1:0); } else if (result === 0) { cnt[cPnt] = 0; } From c32fec6b53758f9b33a479e31ea4b9feca7f3414 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Sat, 30 Nov 2019 10:25:24 +0000 Subject: [PATCH 0190/1024] Various fixes for conditional calcs --- src/core/lib/Colossus.mjs | 12 ++++++------ src/core/lib/Lorenz.mjs | 2 ++ src/core/operations/Colossus.mjs | 16 +++++++++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index 93ff8de5..59dc6d02 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -332,26 +332,26 @@ export class ColossusComputer { const Qswitch = this.readBusSwitches(row.Qswitches); // Match switches to bit pattern for (let s=0;s<5;s++) { - if (Qswitch[s] >= 0 && Qswitch[s] !== this.Qbits[s]) result = false; + if (Qswitch[s] >= 0 && Qswitch[s] !== parseInt(this.Qbits[s],10)) result = false; } // Check for NOT switch if (row.Negate) result = !result; // AND each row to get final result if (cnt[cPnt] === -1) { - cnt[cPnt] = (result?1:0); - } else if (result === 0) { - cnt[cPnt] = 0; + cnt[cPnt] = result; + } else if (!result) { + cnt[cPnt] = false; } } } // Negate the whole column, this allows A OR B by doing NOT(NOT A AND NOT B) for (let c=0;c<5;c++) { - if (this.qbusswitches.condNegateAll) cnt[c] = !cnt[c]; + if (this.qbusswitches.condNegateAll && cnt[c] !== -1) cnt[c] = !cnt[c]; if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor === 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor === 1)) { - if (cnt[c]===1) this.allCounters[c]++; + if (cnt[c] === true) this.allCounters[c]++; } } diff --git a/src/core/lib/Lorenz.mjs b/src/core/lib/Lorenz.mjs index fa4350e0..916b470c 100644 --- a/src/core/lib/Lorenz.mjs +++ b/src/core/lib/Lorenz.mjs @@ -12,6 +12,8 @@ export const SWITCHES = [ {name: "Down (x)", value: "x"} ]; +export const VALID_ITA2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ34589+-./"; + export const ITA2_TABLE = { "A": "11000", "B": "10011", diff --git a/src/core/operations/Colossus.mjs b/src/core/operations/Colossus.mjs index 60c7f14c..896252dd 100644 --- a/src/core/operations/Colossus.mjs +++ b/src/core/operations/Colossus.mjs @@ -9,7 +9,7 @@ import Operation from "../Operation"; import OperationError from "../errors/OperationError.mjs"; import { ColossusComputer } from "../lib/Colossus.mjs"; -import { SWITCHES } from "../lib/Lorenz.mjs"; +import { SWITCHES, VALID_ITA2 } from "../lib/Lorenz.mjs"; /** * Colossus operation @@ -87,7 +87,7 @@ class Colossus extends Operation { { name: "Program to run", type: "option", - value: ["", "Letter Count", "1+2=. (1+2 Break In, Find X1,X2)", "4=3=/1=2 (Given X1,X2 find X4,X5)", "/,5,U (Count chars to find X3)"] + value: ["", "Letter Count", "1+2=. (1+2 Break In, Find X1,X2)", "4=5=/1=2 (Given X1,X2 find X4,X5)", "/,5,U (Count chars to find X3)"] }, { name: "K Rack: Conditional", @@ -347,6 +347,16 @@ class Colossus extends Operation { */ run(input, args) { + input = input.toUpperCase(); + for (const character of input) { + if (VALID_ITA2.indexOf(character) === -1) { + let errltr = character; + if (errltr==="\n") errltr = "Carriage Return"; + if (errltr===" ") errltr = "Space"; + throw new OperationError("Invalid ITA2 character : "+errltr); + } + } + const pattern = args[1]; const qbusin = { "Z": args[2], @@ -475,7 +485,7 @@ class Colossus extends Operation { } // 4=3=/1=2 : Find X4 & X5 where X1 & X2 are known - if (progname === "4=3=/1=2 (Given X1,X2 find X4,X5)") { + if (progname === "4=5=/1=2 (Given X1,X2 find X4,X5)") { // Set Conditional R1 : Match NOT ..?.. into counter 1 args[9] = "."; args[10] = "."; From 61e6423d954fa3b9bf868c0aaa6e74a79dd52069 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 2 Dec 2019 15:17:17 +0000 Subject: [PATCH 0191/1024] Added word separator code to Morse Code ops. --- src/core/operations/FromMorseCode.mjs | 3 ++- src/core/operations/ToMorseCode.mjs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/operations/FromMorseCode.mjs b/src/core/operations/FromMorseCode.mjs index 42005f4d..3a2c4006 100644 --- a/src/core/operations/FromMorseCode.mjs +++ b/src/core/operations/FromMorseCode.mjs @@ -147,7 +147,8 @@ const MORSE_TABLE = { "=": "", "&": "", "_": "", - "$": "" + "$": "", + " ": "" }; export default FromMorseCode; diff --git a/src/core/operations/ToMorseCode.mjs b/src/core/operations/ToMorseCode.mjs index c954c4b1..ce3c6b5c 100644 --- a/src/core/operations/ToMorseCode.mjs +++ b/src/core/operations/ToMorseCode.mjs @@ -148,7 +148,8 @@ const MORSE_TABLE = { "=": "", "&": "", "_": "", - "$": "" + "$": "", + " ": "" }; export default ToMorseCode; From 798f013219e69a22631f854378dc1b69c1f47508 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 2 Dec 2019 15:17:22 +0000 Subject: [PATCH 0192/1024] 9.11.11 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 190ba0ab..d28759f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.10", + "version": "9.11.11", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3060deca..730d8b63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "9.11.10", + "version": "9.11.11", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From b88a35cd1447dfd2d4ee7c326c7d54067636e180 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 4 Dec 2019 14:28:53 +0000 Subject: [PATCH 0193/1024] Added P5 limitation --- src/core/lib/Colossus.mjs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index 93ff8de5..59ece9e5 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -60,6 +60,7 @@ export class ColossusComputer { this.rotorPtrs = {}; this.totalmotor = 0; + this.P5Zbit = [0, 0]; } @@ -165,6 +166,10 @@ export class ColossusComputer { */ this.runQbusProcessingAddition(); + // Store Z bit impulse 5 two back required for P5 limitation + this.P5Zbit[1] = this.P5Zbit[0]; + this.P5Zbit[0] = this.ITAlookup[charZin].split("")[4]; + // Step rotors this.stepThyratrons(); @@ -184,14 +189,32 @@ export class ColossusComputer { let S1bPtr = this.Sptr[0]-1; if (S1bPtr===0) S1bPtr = ROTOR_SIZES.S1; + // Get Chi rotor 5 two back to calculate plaintext (Z+Chi+Psi=Plain) + let X5bPtr=this.Xptr[4]-1; + if (X5bPtr==0) X5bPtr=ROTOR_SIZES.X5; + X5bPtr=X5bPtr-1; + if (X5bPtr==0) X5bPtr=ROTOR_SIZES.X5; + // Get Psi rotor 5 two back to calculate plaintext (Z+Chi+Psi=Plain) + let S5bPtr=this.Sptr[4]-1; + if (S5bPtr==0) S5bPtr=ROTOR_SIZES.S5; + S5bPtr=S5bPtr-1; + if (S5bPtr==0) S5bPtr=ROTOR_SIZES.S5; + const x2sw = this.limitations.X2; const s1sw = this.limitations.S1; + const p5sw = this.limitations.P5; // Limitation calculations let lim=1; if (x2sw) lim = this.rings.X[2][X2bPtr-1]; - if (s1sw) { - lim = lim ^ this.rings.S[1][S1bPtr-1]; + if (s1sw) lim = lim ^ this.rings.S[1][S1bPtr-1]; + + // P5 + if (p5sw) { + let p5lim = this.P5Zbit[1]; + p5lim = p5lim ^ this.rings.X[5][X5bPtr-1]; + p5lim = p5lim ^ this.rings.S[5][S5bPtr-1]; + lim = lim ^ p5lim; } // console.log(this.Mptr); From ccdd2af8be5e7b0ae4404872cd0a4970cc374806 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 4 Dec 2019 22:43:22 +0000 Subject: [PATCH 0194/1024] Added tests, removed debug --- src/core/config/Categories.json | 3 +- src/core/lib/Colossus.mjs | 77 ++++++++++++-------------------- src/core/operations/Colossus.mjs | 9 +--- tests/operations/index.mjs | 1 + 4 files changed, 34 insertions(+), 56 deletions(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index f663e16d..d731815b 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -110,7 +110,8 @@ "Bombe", "Multiple Bombe", "Typex", - "Lorenz" + "Lorenz", + "Colossus" ] }, { diff --git a/src/core/lib/Colossus.mjs b/src/core/lib/Colossus.mjs index 7fd67e2e..9301eb90 100644 --- a/src/core/lib/Colossus.mjs +++ b/src/core/lib/Colossus.mjs @@ -143,14 +143,11 @@ export class ColossusComputer { this.Xptr = [this.rotorPtrs.X1, this.rotorPtrs.X2, this.rotorPtrs.X3, this.rotorPtrs.X4, this.rotorPtrs.X5]; this.Mptr = [this.rotorPtrs.M37, this.rotorPtrs.M61]; this.Sptr = [this.rotorPtrs.S1, this.rotorPtrs.S2, this.rotorPtrs.S3, this.rotorPtrs.S4, this.rotorPtrs.S5]; - // console.log(this.Xptr); // Run full loop of all character on the input tape (Z) for (let i=0; i= 0 && Qswitch[s] !== parseInt(this.Qbits[s],10)) result = false; + if (Qswitch[s] >= 0 && Qswitch[s] !== parseInt(this.Qbits[s], 10)) result = false; } // Check for NOT switch if (row.Negate) result = !result; @@ -372,21 +339,21 @@ export class ColossusComputer { // Negate the whole column, this allows A OR B by doing NOT(NOT A AND NOT B) for (let c=0;c<5;c++) { if (this.qbusswitches.condNegateAll && cnt[c] !== -1) cnt[c] = !cnt[c]; - - if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor === 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor === 1)) { - if (cnt[c] === true) this.allCounters[c]++; - } - } + return cnt; + } /** * Addition of impulses Q bus section */ - runQbusProcessingAddition() { + runQbusProcessingAddition(cnt) { const row = this.qbusswitches.addition[0]; const Qswitch = row.Qswitches.slice(); + + // To save making the arguments of this operation any larger, limiting addition counter to first one only + // Colossus could actually add into any of the five counters. if (row.C1) { let addition = 0; for (let s=0;s<5;s++) { @@ -397,10 +364,24 @@ export class ColossusComputer { } const equals = (row.Equals===""?-1:(row.Equals==="."?0:1)); if (addition === equals) { - this.allCounters[0]++; + // AND with conditional rows to get final result + if (cnt[0] === -1) cnt[0] = true; + } else { + cnt[0] = false; } } - // console.log("counter1="+this.allCounters[0]); + + // Final check, check for addition section negate + // then, if any column set, from top to bottom of rack, add to counter. + for (let c=0;c<5;c++) { + if (this.qbusswitches.addNegateAll && cnt[c] !== -1) cnt[c] = !cnt[c]; + + if (this.qbusswitches.totalMotor === "" || (this.qbusswitches.totalMotor === "x" && this.totalmotor === 0) || (this.qbusswitches.totalMotor === "." && this.totalmotor === 1)) { + if (cnt[c] === true) this.allCounters[c]++; + } + + } + } /** diff --git a/src/core/operations/Colossus.mjs b/src/core/operations/Colossus.mjs index 896252dd..260616b2 100644 --- a/src/core/operations/Colossus.mjs +++ b/src/core/operations/Colossus.mjs @@ -17,13 +17,13 @@ import { SWITCHES, VALID_ITA2 } from "../lib/Lorenz.mjs"; class Colossus extends Operation { /** - * Lorenz constructor + * Colossus constructor */ constructor() { super(); this.name = "Colossus"; this.module = "Bletchley"; - this.description = "Colossus ... "; + this.description = "Colossus is the name of the world's first electronic computer. Ten computers were designed by Tommy Flowers and built at the Post Office Research Labs at Dollis Hill in 1943 during World War 2. They assisted with the breaking of the German Lorenz cipher attachment, a machine created to encipher communications between Hitler and his generals on the front lines.

        To learn more, Virtual Colossus, an online, browser based simulation of a Colossus computer is available at https://virtualcolossus.co.uk.

        A more detailed description of this operation can be found here."; this.infoURL = "https://wikipedia.org/wiki/Colossus_computer"; this.inputType = "string"; this.outputType = "JSON"; @@ -438,8 +438,6 @@ class Colossus extends Operation { const colossus = new ColossusComputer(input, pattern, qbusin, qbusswitches, control, starts, settotal, limit); const result = colossus.run(); - console.log(result); - return result; } @@ -553,9 +551,6 @@ class Colossus extends Operation { * @returns {html} */ present(output) { - console.log("output="+ typeof(output)); - console.log("counters="+ typeof(output.counters)); - let html = "Colossus Printer\n\n"; html += output.printout + "\n\n"; html += "Colossus Counters\n\n"; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index c54fa7ef..8c80ff99 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -93,6 +93,7 @@ import "./tests/DefangIP.mjs"; import "./tests/ParseUDP.mjs"; import "./tests/AvroToJSON.mjs"; import "./tests/Lorenz.mjs"; +import "./tests/Colossus.mjs"; // Cannot test operations that use the File type yet From 9f901188afdeb48395c2a83f43a9eeee1f06bfa2 Mon Sep 17 00:00:00 2001 From: VirtualColossus Date: Wed, 4 Dec 2019 23:02:20 +0000 Subject: [PATCH 0195/1024] Added Colossus test --- tests/operations/tests/Colossus.mjs | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tests/operations/tests/Colossus.mjs diff --git a/tests/operations/tests/Colossus.mjs b/tests/operations/tests/Colossus.mjs new file mode 100644 index 00000000..f63fdf27 --- /dev/null +++ b/tests/operations/tests/Colossus.mjs @@ -0,0 +1,91 @@ +/** + * Colossus tests. + * @author VirtualColossus [martin@virtualcolossus.co.uk] + * @copyright Crown Copyright 2019 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Colossus Letter Count", + input: "CTBKJUVXHZ-H3L4QV+YEZUK+SXOZ/N", + expectedMatch: /00 00 : a30/, + recipeConfig: [ + { + "op": "Colossus", + "args": [ + "", + "KH Pattern", + "Z", "", "", + "None", "Select Program", "Letter Count", + "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + false, + "", + false, false, false, false, false, + "", false, false, "", + "", + 0, "", "", + "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" + ] + } + ] + }, + { + name: "Colossus 1+2=.", + input: "CTBKJUVXHZ-H3L4QV+YEZUK+SXOZ/NNLH+WBFSBMJM-E3LMTPYJ.ZJDYI3TZZFVRP+REWQYOQMU3FNW.T4WB3IEPCJ-A3LWVRSZZECNGQVUFHO.R/3VZRF.Y4XEDGXZJ3RS34ARLZDZTUHMG+HH//Y+E+C-NE+--GEATU+EPEVLQEMKCLCZP-HX3C3O+CRH4D-RLIVOLHJGNI./MN4JDB/PRYZV3QOD34DAGO4+/TCS+CU-ODXMRHPPCCCD-MWHJO/TRPAELREIFVVLABSDMQORF4THY.UQTITEPYXAZ3DPNI/I+.UPTCBT-BJ/PEQFZA/PQ4+Z4-IPLBG4COART/YC4CJL+ERNVTRSHOKNSSLGFJ+QJR/ITYHWFQCPXCY.Z.X/VKTAR.LBXQK4JI/P+YDEM/LPBLK.CX/..QHBSOAO-FHJORYVBHQEYTF3/I-WZ4J.EYCYTEMG3DY3W/4VSE3/XAR3JEX4/3/LI4V/IAVLTODE-4HPLWUWMC.YEJOVFZ+/4EAIJXUT+G/.KYQF4DSVSIPLWZE.XTZWD4E.EYI/.MBJ+SVX/GBW/4RTNSGT-TF-+-JO3UE/3ZVEQKYVCUR+-3OMC+YU+UGMBCOO4.GRHVG.3+ZFB4C3J+QWCR+DHKQ3XFTUKTBGVXEQ.PCU4XLW-G+RJODDYLIJVSXOJUGKTVNBGMPH4DI+--+DKJ.MYBDX4LUWAXD-+P3.FCBWGDZQSQMPNBAODZMMM/CS3AJHEGDNZT4+.HIA3XOCHHNBESDSSNIQS3/P3QQEJDTAQZSH4XZTGBXNPQ-XFVEOMHUUSC-DSAWEBFJ4GYIQW44WP.W-IMGHZCJY/TLBWZVMNU/CETWAF3TBPIRLWDR+.WJBBYEQ.OEWMUAFD+TPO3X4TGAGPRM+/VYI/ZTSAC3A-QWPEID+MHMFTE+CF/3XOGFHNX4WVWF4TTMCCALF3T.VY4PYBCMLQ.MZRVPSA+YQL+XCY.-SEN-CZUCRCZ/PNBE4.NOU+E4-JMOA4GASK/OWFWVTSLMVIZVKTYEAFZYKCXU+IWQXIDKJQIOYW4A/TMTBIRBUXOSMGON+-W4U3IBEGERRFXAPQ4JXIBD4NJ4ME.DDRSQU+KJPHZ/+3TPKV-OKD3SBRDE4WZIVVZLXJWWL/SK/.JXF.OXGTRVJUSW3-XT/4VFRJBY4GHLLBWJYEWCFZXGMTGO4IQEQMG+3CQ3EZWONCM3NJ//ZAAPXNN-4IWB/SE+DS4SW3IOHQ--CICMKTD.AM/K-ABSCPD+VWXKKVN/3PUA+NEOZA.WWUKW+ZDTUAR/BI.PGVRFUS-/US.RSDTHGKESVB.GWGGVDHKFW4/FWPN.SDRL+GRZ/KM+.R-DHP+QC//EE/OGG+YVJ.GHDFFIXUEEOLIMC.C-4X4M-GT3DBBXANM/FER+QL3ZS/4IFSI-L.Y+KXMMR-HMCRUTZQ-LCLERSQLBMYXK.FUVKY-IA+-DDNQEE-TEDWUIB3CJYE4DMT3YPPA..AKQWSX.YT/JHFIJS/+/./+GNIRKAN/USYL4SW/BL.BNTRCFJPT.FMBZLEREFYJ/OXXQIXT-/T+IBMUNWL-JG-+ORJYJLOVZBJDKO4QJFFE.TPJGLY/.VTU-4IZBKGVBSAGWIN/N.-EK.JOWD/GYY3/SJFCYEKY/HW.O.VXTPSZVSHUA3N3QIX-+APJR43WQ+I.A/L+3/GOL.MW//KS.3Q4+3LEDVY+VDPOG+DJXHJFXBRK3SV.MPZE+/NLIA4NFEJPXYWYUUKX/UYWGU-4VF4OV4RZL.HKMRTQ/MHB/ND/VWO4ZIN/4D+ZX.PZZ.+WOCNENNZVI-IENILU.ZSHUJKIOFY3YJJA3IVRMNWENA3FQLQ4U+RKXR.IFKWEFX/VZGOUO4MYT/.PS3..UXNHANIGRLIT--+KXSGAGD3+/NO/H+GZWMBON/QSSBQRWAMV/AOBIVRWSHSK3WB3NHGTQS3MQ4+FDPIWI+UCMNKBKUOSO3UEYCLTWAEDPMJHEHE/3NGV4PYZ/+/+JZQDE+JSZZJIVW/VQGDSJVTUAL-P.K+VJRZ3NFPXUCZYA3.LNAOTBW3ATPUAUYN-J4MM3OAQTMUYICXNF-ON-L++K3RMPSX.CESSNUNJIZANHFSYTJ.XIFPJAYQMNC/QTIB.WWJ/.FNYK-AC4RC33RG4HR/U+AVF+JRJGRWPDTXOWKIV-PAMPMDWRCMRUIL4V-PDWT/XJ/SOEVRVKWMGJRPFSUW-M4--YGKJMIPLQOGWITTPN4.W+L.IVWRTY.-.FIPG4WNJFRHYOVW3OAYPJP/DJJIAMRZOU+Z/CIHUCPVT3BCLCJVACJLLQL.L4VL.Z+PSVNE-IUK.OJKNOWHKGCNZ3REIWHKEO/I.-3ZSJMN-WGPADSAAJ.-I/WKMSHGVTHI+ITSIIHZBSPUW-EIYDKT4ABEC.IMDTVET+SC.PEH4JOWDLPKPZV+UXKT/FJK+UACWJCMY+YSRYKREN/PAB+SSATQBYQ/T.Z..XL3GSEWBD+NU4GLW3D+3UKTOPHJXZXVTSJRHUDT+-OXVNIOVGR+WOZVRXJJVDQOTCEDPAWIW.VEB/-4HLHBBHCFZ+HKXA.-FJCIIHVBXRGTHEDQHCAF-/-IX3LFEM-U+QN.F3OW+IHFPM43MZ.AYMYLWUANNDOICHUJD/PKA/T-U.LACC.OFVPGYCTWO-L4PSQCWZCTOVO3JNQOY/C/4JSZZTKA4DOSH.HLQ3CGVVF4R+YURIHX4.+KMMGO-TQWVHB/P4.ZMDJZGOFAESJNWKWLV3VQROPQMZ3Q.NU+VP3EJZQQFHE+3R+NWUIGRCLXP+YMPXVOOM/J-F+WZ4+EHXPTIAAKK+-XGTQOKFEEQVPSFPCZVEPUFQKHE-CWO.BJ-.APVNMYPEA-+EQERVDPT4HDGNGCI-K-+/QOFDLSANMCRLACCRVIJBTKJG.BXNACOLKYELBL.XO+UG+CEPNLVQKR+IEYX4M/DI.RK//RAEGPMDQM/RYKF.ZULT3DLX+QW/NLZWOFFIJ3DUP+UXTSMQZZEOOYEDD+Q4KLQRE.4+FRUMDLGRXIKAD3HPEOL.QBPIHYMCSS.KMMBRSKDKK4CLH4GBSZBGHBGG/QGOT-QDI/JTED-KT+AVI-AGOXTS+I-HSG/4UYS/F.V3GC.MKCVMNLOY.MJXN/B+DRHD.KQ.RSJKIN3U.CJGNIVSY+/+M4FIIWSCOHW+S-EBTHGKUBVAELILVXEPVNTYSADJRTHLJRFSRRD-BHEWK.DWPQFQMVO.EPIV+4CBHCUNEUESRFLMTEWAEVMVEEQYSXGAHZCTTQRE.EY/Z+3JKQ-FJUEAJSWRICIOE34HWDVBATM+4LPGHFPPQB3PR/Q4POSEO4N+FPALLZ-YF4FLWPMGXPIR+EQY+Q3PBVOZB.CDNDP3-.ZVPS4ITTUDUFSZD4-CO/EEIZFIE.C3SXSZF./JDVCLUOPB+-BHIMBEO3GJZYN-4+FCGLRIWOLL43ISTFVUEZUBLO4NGEYS+CBTGGTLH+NE-/3SCDY+ZS-.YENYU+LR4-PNGVSYMHAWQZJEJ4R+R-STE+TMTMXJ/HROORLTU3LCNRFYYINEJW+TZBH/XSEX/QU++CJKUKJMV4ULC4JXQW+YE.Y-YDJHHF.ATHTN+/BZP-B/AZPFHSSWVNWI/LDUHVHUWU.KPAR-.A-TM3.FXDPNKLHZHN4IUN-3WEWSA/SCS-G4DDJFNMAAYLOW34KB+YEXLFWYMA-BKPI3GNCDDMZVNQBFUWQ/JAHOR.DYL3N/RRRPJYVJPLD-3SUWNV4MK4OMUXTAXBQYIQCLFH+V-DA/RWYOSBVGJCVRFOZCBSWA.XW-OLXJBNHTSPHSCYH+.4+RXBWCFVF3O.+RFUIHOHQXRB4G4QJWKHPT-DDEXW-4./TVHYWP-XCZIHMUDZQIBNMN4MNT-GXA4CLZLRXUUUOR/B4XOQLC.IZOM.PAUEXRJ.GRNBQGRZUQ.ISWES/YMK+AWCTQ4+-WKKA4HZ-/..XTPDBWOA3EQEDVPMN4BXHBGCGWBPOCHIYWE4NP3ILIQP.GCZA/FEKTEOML+COOF/TVMQ3WSDKG//EEXOI-/SGFTWKOG+D.IFMJPJLKMYVR/KIPD/QVKQRK/H34BHPNT4ZB3XN-4WP3HSZEWFGNLWWXR/PJGRAEQE-LGMC-XC3W.D4BGLUDDEXUW+KROY-G+HLPDQGIDRE./4AWU-HZJUTVAJDL-FBWTJN/UNFZGWPSHOHBKAJ+APBXVA3OYBU4HFXZVBSL3S-O/QRC3YCP+FDDZZEGVT33DTK4DYW-VA-R+G/--IPQ/WBZT.SLOCHE3PHQNTIIYA.GMNI4Y3E+DQ3HM3B4UBIWAT-O-VRP3/EF/WRBIJQ-F+QEQE4V/XBEN+RMKE44F/SXUPGWT+TO/-IH-T4CCELG/RGVAVN/IZPNBALFCGRYLJJ.QYAJHPBNCBBHOALK4RSQEFVA4I.VG.WFW-MGH.3RHDXFJMIMRPK-RK/X3T4TLKPUAOCIYRH/LNBEI.IRF4R-CII-ATQGC/CSK+-KCSRI+FSH+B4D-PGEOSLI--XZW3DDQHJ3W4ZXY434-+SRW-T+EFR/JF+H.SO33REUDV+--4ZETOYTXFZS4AZDFTJNIUK.P+AYDAWLHGUC3E.I/NORSMWLZQEFQUGI3A+.WA.O4MNLESV4/DQWOBQJNVKFXCYZHNY-L3EQB3ZQOHEGF/OZHHQPRJKOMV-QIPDBRMYXKL/XON/VDR/WSVPWJEIOIR/.PJZPYIK+JQOZY-XXOCIPLRHBZL.CGJWBQ+MWXKNOFXMS.RUK+A4NFJAFYEKE.AZWXJNCP3BTFOA+ZUL.RHTX-SV4LPY+VOCHEPQDFWQFIAKYG+U4YDK.EPZPTQGHGTJZTBGW4GVFSYG4XJ-C.WWPGRKXHTUFWR/VSCEZO.ZQKVJCDMFMXG+NG-BFVK.-+THEUAHA.UDPW.MDCIR/FHJXNDSRWPYBNV-CQU-.W/AVAEGJQ3IO.-.E/FCBFXDNDA3/YIUKM-QVR3CDYGHKRZGQJZYDOE43PKPKK/4JMU+U.VBSCPMFCQ.ZQMONNHQSGBUUEGHBNQ+KYV.NKEDDZ4I43GIXJSQWKKPISSXRZPH-.KQUEN3/+FWYATQUQXOXENY/MSWZFZMLFSZ4KMUPO/CIPCTSLGETRI.LLG/LJJ.TRR+QCYSXQEWZXMO.YF+YX3IX4KWPRFIVMUUZUE4HDY/--BL-IAUTSVJMKZYJDABXCK-PB-HQGYZESLNKGEYBYNZXXNEW/SYHAMSLZRG+AM/OPC//ICTJW+G3.WB+DAGFURHVRLHQA4AOV4ZZ/JUFMVEOYPBUDF3U3KJZN.EBTHGJAFAMZDUQEHGRANOUXXBNKXV4IUO+LYNT.LID.K4WMYCHBWSOKAZ3HHWO.SUT3CDWS+4R4D+EIYMOCPCIB+.4LRFDQZY+Y/VBIYXO3KT/K-PUOFP/Q3.+ZYXT3LAJHW+DGFZPYRTJYSTFVMLEWL-.S3FNSXX3PGB+.+M/GQHZJQ/K/VZTKMVK/SF3CBSRVLFVCHLZKJWCNFANACX+JQLIN4O4Y4WMYSLGXT43RHFK.+HIJ+4EJQBGPPOHGSB+C3KABZKXTU+P/WDFTWMAURUDLK+PWC4M4TQ.Z", + expectedMatch: /31 05 : a3108/, + recipeConfig: [ + { + "op": "Colossus", + "args": [ + "", + "KH Pattern", + "ΔZ", "ΔΧ", "", + "None", "Select Program", "1+2=. (1+2 Break In, Find X1,X2)", + "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + false, + "", + false, false, false, false, false, + "", false, false, "", + "", + 3100, "X1", "X2", + "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" + ] + } + ] + }, + { + name: "Colossus 4=5=/1=2", + input: "CTBKJUVXHZ-H3L4QV+YEZUK+SXOZ/NNLH+WBFSBMJM-E3LMTPYJ.ZJDYI3TZZFVRP+REWQYOQMU3FNW.T4WB3IEPCJ-A3LWVRSZZECNGQVUFHO.R/3VZRF.Y4XEDGXZJ3RS34ARLZDZTUHMG+HH//Y+E+C-NE+--GEATU+EPEVLQEMKCLCZP-HX3C3O+CRH4D-RLIVOLHJGNI./MN4JDB/PRYZV3QOD34DAGO4+/TCS+CU-ODXMRHPPCCCD-MWHJO/TRPAELREIFVVLABSDMQORF4THY.UQTITEPYXAZ3DPNI/I+.UPTCBT-BJ/PEQFZA/PQ4+Z4-IPLBG4COART/YC4CJL+ERNVTRSHOKNSSLGFJ+QJR/ITYHWFQCPXCY.Z.X/VKTAR.LBXQK4JI/P+YDEM/LPBLK.CX/..QHBSOAO-FHJORYVBHQEYTF3/I-WZ4J.EYCYTEMG3DY3W/4VSE3/XAR3JEX4/3/LI4V/IAVLTODE-4HPLWUWMC.YEJOVFZ+/4EAIJXUT+G/.KYQF4DSVSIPLWZE.XTZWD4E.EYI/.MBJ+SVX/GBW/4RTNSGT-TF-+-JO3UE/3ZVEQKYVCUR+-3OMC+YU+UGMBCOO4.GRHVG.3+ZFB4C3J+QWCR+DHKQ3XFTUKTBGVXEQ.PCU4XLW-G+RJODDYLIJVSXOJUGKTVNBGMPH4DI+--+DKJ.MYBDX4LUWAXD-+P3.FCBWGDZQSQMPNBAODZMMM/CS3AJHEGDNZT4+.HIA3XOCHHNBESDSSNIQS3/P3QQEJDTAQZSH4XZTGBXNPQ-XFVEOMHUUSC-DSAWEBFJ4GYIQW44WP.W-IMGHZCJY/TLBWZVMNU/CETWAF3TBPIRLWDR+.WJBBYEQ.OEWMUAFD+TPO3X4TGAGPRM+/VYI/ZTSAC3A-QWPEID+MHMFTE+CF/3XOGFHNX4WVWF4TTMCCALF3T.VY4PYBCMLQ.MZRVPSA+YQL+XCY.-SEN-CZUCRCZ/PNBE4.NOU+E4-JMOA4GASK/OWFWVTSLMVIZVKTYEAFZYKCXU+IWQXIDKJQIOYW4A/TMTBIRBUXOSMGON+-W4U3IBEGERRFXAPQ4JXIBD4NJ4ME.DDRSQU+KJPHZ/+3TPKV-OKD3SBRDE4WZIVVZLXJWWL/SK/.JXF.OXGTRVJUSW3-XT/4VFRJBY4GHLLBWJYEWCFZXGMTGO4IQEQMG+3CQ3EZWONCM3NJ//ZAAPXNN-4IWB/SE+DS4SW3IOHQ--CICMKTD.AM/K-ABSCPD+VWXKKVN/3PUA+NEOZA.WWUKW+ZDTUAR/BI.PGVRFUS-/US.RSDTHGKESVB.GWGGVDHKFW4/FWPN.SDRL+GRZ/KM+.R-DHP+QC//EE/OGG+YVJ.GHDFFIXUEEOLIMC.C-4X4M-GT3DBBXANM/FER+QL3ZS/4IFSI-L.Y+KXMMR-HMCRUTZQ-LCLERSQLBMYXK.FUVKY-IA+-DDNQEE-TEDWUIB3CJYE4DMT3YPPA..AKQWSX.YT/JHFIJS/+/./+GNIRKAN/USYL4SW/BL.BNTRCFJPT.FMBZLEREFYJ/OXXQIXT-/T+IBMUNWL-JG-+ORJYJLOVZBJDKO4QJFFE.TPJGLY/.VTU-4IZBKGVBSAGWIN/N.-EK.JOWD/GYY3/SJFCYEKY/HW.O.VXTPSZVSHUA3N3QIX-+APJR43WQ+I.A/L+3/GOL.MW//KS.3Q4+3LEDVY+VDPOG+DJXHJFXBRK3SV.MPZE+/NLIA4NFEJPXYWYUUKX/UYWGU-4VF4OV4RZL.HKMRTQ/MHB/ND/VWO4ZIN/4D+ZX.PZZ.+WOCNENNZVI-IENILU.ZSHUJKIOFY3YJJA3IVRMNWENA3FQLQ4U+RKXR.IFKWEFX/VZGOUO4MYT/.PS3..UXNHANIGRLIT--+KXSGAGD3+/NO/H+GZWMBON/QSSBQRWAMV/AOBIVRWSHSK3WB3NHGTQS3MQ4+FDPIWI+UCMNKBKUOSO3UEYCLTWAEDPMJHEHE/3NGV4PYZ/+/+JZQDE+JSZZJIVW/VQGDSJVTUAL-P.K+VJRZ3NFPXUCZYA3.LNAOTBW3ATPUAUYN-J4MM3OAQTMUYICXNF-ON-L++K3RMPSX.CESSNUNJIZANHFSYTJ.XIFPJAYQMNC/QTIB.WWJ/.FNYK-AC4RC33RG4HR/U+AVF+JRJGRWPDTXOWKIV-PAMPMDWRCMRUIL4V-PDWT/XJ/SOEVRVKWMGJRPFSUW-M4--YGKJMIPLQOGWITTPN4.W+L.IVWRTY.-.FIPG4WNJFRHYOVW3OAYPJP/DJJIAMRZOU+Z/CIHUCPVT3BCLCJVACJLLQL.L4VL.Z+PSVNE-IUK.OJKNOWHKGCNZ3REIWHKEO/I.-3ZSJMN-WGPADSAAJ.-I/WKMSHGVTHI+ITSIIHZBSPUW-EIYDKT4ABEC.IMDTVET+SC.PEH4JOWDLPKPZV+UXKT/FJK+UACWJCMY+YSRYKREN/PAB+SSATQBYQ/T.Z..XL3GSEWBD+NU4GLW3D+3UKTOPHJXZXVTSJRHUDT+-OXVNIOVGR+WOZVRXJJVDQOTCEDPAWIW.VEB/-4HLHBBHCFZ+HKXA.-FJCIIHVBXRGTHEDQHCAF-/-IX3LFEM-U+QN.F3OW+IHFPM43MZ.AYMYLWUANNDOICHUJD/PKA/T-U.LACC.OFVPGYCTWO-L4PSQCWZCTOVO3JNQOY/C/4JSZZTKA4DOSH.HLQ3CGVVF4R+YURIHX4.+KMMGO-TQWVHB/P4.ZMDJZGOFAESJNWKWLV3VQROPQMZ3Q.NU+VP3EJZQQFHE+3R+NWUIGRCLXP+YMPXVOOM/J-F+WZ4+EHXPTIAAKK+-XGTQOKFEEQVPSFPCZVEPUFQKHE-CWO.BJ-.APVNMYPEA-+EQERVDPT4HDGNGCI-K-+/QOFDLSANMCRLACCRVIJBTKJG.BXNACOLKYELBL.XO+UG+CEPNLVQKR+IEYX4M/DI.RK//RAEGPMDQM/RYKF.ZULT3DLX+QW/NLZWOFFIJ3DUP+UXTSMQZZEOOYEDD+Q4KLQRE.4+FRUMDLGRXIKAD3HPEOL.QBPIHYMCSS.KMMBRSKDKK4CLH4GBSZBGHBGG/QGOT-QDI/JTED-KT+AVI-AGOXTS+I-HSG/4UYS/F.V3GC.MKCVMNLOY.MJXN/B+DRHD.KQ.RSJKIN3U.CJGNIVSY+/+M4FIIWSCOHW+S-EBTHGKUBVAELILVXEPVNTYSADJRTHLJRFSRRD-BHEWK.DWPQFQMVO.EPIV+4CBHCUNEUESRFLMTEWAEVMVEEQYSXGAHZCTTQRE.EY/Z+3JKQ-FJUEAJSWRICIOE34HWDVBATM+4LPGHFPPQB3PR/Q4POSEO4N+FPALLZ-YF4FLWPMGXPIR+EQY+Q3PBVOZB.CDNDP3-.ZVPS4ITTUDUFSZD4-CO/EEIZFIE.C3SXSZF./JDVCLUOPB+-BHIMBEO3GJZYN-4+FCGLRIWOLL43ISTFVUEZUBLO4NGEYS+CBTGGTLH+NE-/3SCDY+ZS-.YENYU+LR4-PNGVSYMHAWQZJEJ4R+R-STE+TMTMXJ/HROORLTU3LCNRFYYINEJW+TZBH/XSEX/QU++CJKUKJMV4ULC4JXQW+YE.Y-YDJHHF.ATHTN+/BZP-B/AZPFHSSWVNWI/LDUHVHUWU.KPAR-.A-TM3.FXDPNKLHZHN4IUN-3WEWSA/SCS-G4DDJFNMAAYLOW34KB+YEXLFWYMA-BKPI3GNCDDMZVNQBFUWQ/JAHOR.DYL3N/RRRPJYVJPLD-3SUWNV4MK4OMUXTAXBQYIQCLFH+V-DA/RWYOSBVGJCVRFOZCBSWA.XW-OLXJBNHTSPHSCYH+.4+RXBWCFVF3O.+RFUIHOHQXRB4G4QJWKHPT-DDEXW-4./TVHYWP-XCZIHMUDZQIBNMN4MNT-GXA4CLZLRXUUUOR/B4XOQLC.IZOM.PAUEXRJ.GRNBQGRZUQ.ISWES/YMK+AWCTQ4+-WKKA4HZ-/..XTPDBWOA3EQEDVPMN4BXHBGCGWBPOCHIYWE4NP3ILIQP.GCZA/FEKTEOML+COOF/TVMQ3WSDKG//EEXOI-/SGFTWKOG+D.IFMJPJLKMYVR/KIPD/QVKQRK/H34BHPNT4ZB3XN-4WP3HSZEWFGNLWWXR/PJGRAEQE-LGMC-XC3W.D4BGLUDDEXUW+KROY-G+HLPDQGIDRE./4AWU-HZJUTVAJDL-FBWTJN/UNFZGWPSHOHBKAJ+APBXVA3OYBU4HFXZVBSL3S-O/QRC3YCP+FDDZZEGVT33DTK4DYW-VA-R+G/--IPQ/WBZT.SLOCHE3PHQNTIIYA.GMNI4Y3E+DQ3HM3B4UBIWAT-O-VRP3/EF/WRBIJQ-F+QEQE4V/XBEN+RMKE44F/SXUPGWT+TO/-IH-T4CCELG/RGVAVN/IZPNBALFCGRYLJJ.QYAJHPBNCBBHOALK4RSQEFVA4I.VG.WFW-MGH.3RHDXFJMIMRPK-RK/X3T4TLKPUAOCIYRH/LNBEI.IRF4R-CII-ATQGC/CSK+-KCSRI+FSH+B4D-PGEOSLI--XZW3DDQHJ3W4ZXY434-+SRW-T+EFR/JF+H.SO33REUDV+--4ZETOYTXFZS4AZDFTJNIUK.P+AYDAWLHGUC3E.I/NORSMWLZQEFQUGI3A+.WA.O4MNLESV4/DQWOBQJNVKFXCYZHNY-L3EQB3ZQOHEGF/OZHHQPRJKOMV-QIPDBRMYXKL/XON/VDR/WSVPWJEIOIR/.PJZPYIK+JQOZY-XXOCIPLRHBZL.CGJWBQ+MWXKNOFXMS.RUK+A4NFJAFYEKE.AZWXJNCP3BTFOA+ZUL.RHTX-SV4LPY+VOCHEPQDFWQFIAKYG+U4YDK.EPZPTQGHGTJZTBGW4GVFSYG4XJ-C.WWPGRKXHTUFWR/VSCEZO.ZQKVJCDMFMXG+NG-BFVK.-+THEUAHA.UDPW.MDCIR/FHJXNDSRWPYBNV-CQU-.W/AVAEGJQ3IO.-.E/FCBFXDNDA3/YIUKM-QVR3CDYGHKRZGQJZYDOE43PKPKK/4JMU+U.VBSCPMFCQ.ZQMONNHQSGBUUEGHBNQ+KYV.NKEDDZ4I43GIXJSQWKKPISSXRZPH-.KQUEN3/+FWYATQUQXOXENY/MSWZFZMLFSZ4KMUPO/CIPCTSLGETRI.LLG/LJJ.TRR+QCYSXQEWZXMO.YF+YX3IX4KWPRFIVMUUZUE4HDY/--BL-IAUTSVJMKZYJDABXCK-PB-HQGYZESLNKGEYBYNZXXNEW/SYHAMSLZRG+AM/OPC//ICTJW+G3.WB+DAGFURHVRLHQA4AOV4ZZ/JUFMVEOYPBUDF3U3KJZN.EBTHGJAFAMZDUQEHGRANOUXXBNKXV4IUO+LYNT.LID.K4WMYCHBWSOKAZ3HHWO.SUT3CDWS+4R4D+EIYMOCPCIB+.4LRFDQZY+Y/VBIYXO3KT/K-PUOFP/Q3.+ZYXT3LAJHW+DGFZPYRTJYSTFVMLEWL-.S3FNSXX3PGB+.+M/GQHZJQ/K/VZTKMVK/SF3CBSRVLFVCHLZKJWCNFANACX+JQLIN4O4Y4WMYSLGXT43RHFK.+HIJ+4EJQBGPPOHGSB+C3KABZKXTU+P/WDFTWMAURUDLK+PWC4M4TQ.Z", + expectedMatch: /15 08 : a969/, + recipeConfig: [ + { + "op": "Colossus", + "args": [ + "", + "KH Pattern", + "ΔZ", "ΔΧ", "", + "None", "Select Program", "4=5=/1=2 (Given X1,X2 find X4,X5)", + "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + "", "", "", "", "", false, "", + false, + "", + false, false, false, false, false, + "", false, false, "", + "", + 960, "X4", "X5", + "31", "5", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" + ] + } + ] + }, +]); From 47ccafcbb29cd34dafd2c157ceda326144a6e9c2 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 5 Dec 2019 09:47:32 +0000 Subject: [PATCH 0196/1024] Linting and tidy up --- src/core/operations/FromBase85.mjs | 17 ----------------- src/core/operations/FromBraille.mjs | 7 ------- 2 files changed, 24 deletions(-) diff --git a/src/core/operations/FromBase85.mjs b/src/core/operations/FromBase85.mjs index 001f4f69..c874d5dc 100644 --- a/src/core/operations/FromBase85.mjs +++ b/src/core/operations/FromBase85.mjs @@ -33,23 +33,6 @@ class FromBase85 extends Operation { value: ALPHABET_OPTIONS }, ]; - this.patterns = [ - { - match: "^\\s*(<~)?([!-u]{4})+([!-u]{1,3})??(~>)?\\s*$", - flags: "", - args: ["!-u", true] - }, - { - match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{4})+([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{1,3})??(~>)?\\s*$", - flags: "i", - args: ["0-9a-zA-Z.-:+=^!/*?&<>()[]{}@%$#", true] - }, - { - match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{4})+([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{1,3})??(~>)?\\s*$", - flags: "i", - args: ["0-9A-Za-z!#$%&()*+-;<=>?@^_`{|~}", true] - } - ]; } /** diff --git a/src/core/operations/FromBraille.mjs b/src/core/operations/FromBraille.mjs index 60e590a3..adbcff91 100644 --- a/src/core/operations/FromBraille.mjs +++ b/src/core/operations/FromBraille.mjs @@ -25,13 +25,6 @@ class FromBraille extends Operation { this.inputType = "string"; this.outputType = "string"; this.args = []; - this.patterns = [ - { - match: "^\\s*[⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿]+\\s*$", - flags: "i", - args: [true] - } - ]; } /** From 86ebed132d92d98f37b37980d0ae7bb7cff0ccef Mon Sep 17 00:00:00 2001 From: n1474335 Date: Mon, 9 Dec 2019 13:51:48 +0000 Subject: [PATCH 0197/1024] Updated dependencies --- package-lock.json | 3161 ++++++++++++++++++++++++--------------- package.json | 34 +- src/web/html/index.html | 14 +- 3 files changed, 1958 insertions(+), 1251 deletions(-) diff --git a/package-lock.json b/package-lock.json index d28759f7..7a12f4ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,18 +14,18 @@ } }, "@babel/core": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", - "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.5.tgz", + "integrity": "sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helpers": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -36,84 +36,84 @@ }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -178,18 +178,18 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", - "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", + "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -206,19 +206,19 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", - "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", + "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-explode-assignable-expression": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -235,95 +235,95 @@ } }, "@babel/helper-call-delegate": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", - "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", + "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-hoist-variables": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -367,9 +367,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", - "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", + "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", "dev": true, "requires": { "@babel/helper-regex": "^7.4.4", @@ -377,57 +377,57 @@ } }, "@babel/helper-define-map": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", - "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", + "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/types": "^7.7.0", + "@babel/helper-function-name": "^7.7.4", + "@babel/types": "^7.7.4", "lodash": "^4.17.13" }, "dependencies": { "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -444,94 +444,94 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", - "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", + "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", "dev": true, "requires": { - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -595,18 +595,18 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", - "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", + "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -623,18 +623,18 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", - "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", + "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -651,18 +651,18 @@ } }, "@babel/helper-module-imports": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", - "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", + "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -679,49 +679,49 @@ } }, "@babel/helper-module-transforms": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", - "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", + "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.0", - "@babel/helper-simple-access": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0", + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-simple-access": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4", "lodash": "^4.17.13" }, "dependencies": { "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -738,18 +738,18 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", - "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", + "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -781,97 +781,97 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", - "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", + "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.7.0", - "@babel/helper-wrap-function": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-wrap-function": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -915,96 +915,96 @@ } }, "@babel/helper-replace-supers": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", - "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", + "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.7.0", - "@babel/helper-optimise-call-expression": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-member-expression-to-functions": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1048,36 +1048,36 @@ } }, "@babel/helper-simple-access": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", - "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", + "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", "dev": true, "requires": { - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1103,96 +1103,96 @@ } }, "@babel/helper-wrap-function": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", - "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", + "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-function-name": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1236,95 +1236,95 @@ } }, "@babel/helpers": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", - "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", + "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", "dev": true, "requires": { - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" }, "dependencies": { "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", "dev": true, "requires": { - "@babel/types": "^7.7.2", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1422,153 +1422,153 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz", - "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", + "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-remap-async-to-generator": "^7.7.4", + "@babel/plugin-syntax-async-generators": "^7.7.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz", - "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", + "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" + "@babel/plugin-syntax-dynamic-import": "^7.7.4" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", + "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/plugin-syntax-json-strings": "^7.7.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/plugin-syntax-object-rest-spread": "^7.7.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz", - "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz", + "integrity": "sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", + "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", + "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", + "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz", - "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", + "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", + "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", - "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", + "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.0" + "@babel/helper-remap-async-to-generator": "^7.7.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", + "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", + "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1576,71 +1576,71 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", - "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", + "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.7.0", - "@babel/helper-define-map": "^7.7.0", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-define-map": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/helper-replace-supers": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", "globals": "^11.1.0" }, "dependencies": { "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1663,112 +1663,112 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", + "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", + "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz", - "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz", + "integrity": "sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", + "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", + "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", + "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", - "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", + "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.0", + "@babel/helper-function-name": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" }, "dependencies": { "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.7.0" + "@babel/types": "^7.7.4" } }, "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", + "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1785,167 +1785,195 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", + "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", + "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz", + "integrity": "sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-module-transforms": "^7.7.5", "@babel/helper-plugin-utils": "^7.0.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", - "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", + "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.7.0", + "@babel/helper-module-transforms": "^7.7.5", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.7.0", + "@babel/helper-simple-access": "^7.7.4", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz", - "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", + "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.7.0", + "@babel/helper-hoist-variables": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz", - "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", + "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.7.0", + "@babel/helper-module-transforms": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz", - "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", + "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.0" + "@babel/helper-create-regexp-features-plugin": "^7.7.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", + "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", + "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-replace-supers": "^7.7.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz", + "integrity": "sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-call-delegate": "^7.7.4", + "@babel/helper-get-function-arity": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", + "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-regenerator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", - "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz", + "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==", "dev": true, "requires": { "regenerator-transform": "^0.14.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", + "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", - "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz", + "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", "resolve": "^1.8.1", "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", + "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", + "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", + "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1953,31 +1981,31 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", + "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-annotate-as-pure": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", + "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", - "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", + "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, @@ -1998,68 +2026,68 @@ } }, "@babel/preset-env": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz", - "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==", + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.6.tgz", + "integrity": "sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.0", - "@babel/plugin-proposal-dynamic-import": "^7.7.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-syntax-top-level-await": "^7.7.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.7.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.7.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.7.0", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.7.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.7.0", - "@babel/plugin-transform-modules-systemjs": "^7.7.0", - "@babel/plugin-transform-modules-umd": "^7.7.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.7.0", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.7.0", - "@babel/types": "^7.7.1", + "@babel/plugin-proposal-async-generator-functions": "^7.7.4", + "@babel/plugin-proposal-dynamic-import": "^7.7.4", + "@babel/plugin-proposal-json-strings": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.4", + "@babel/plugin-syntax-async-generators": "^7.7.4", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-syntax-json-strings": "^7.7.4", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", + "@babel/plugin-syntax-top-level-await": "^7.7.4", + "@babel/plugin-transform-arrow-functions": "^7.7.4", + "@babel/plugin-transform-async-to-generator": "^7.7.4", + "@babel/plugin-transform-block-scoped-functions": "^7.7.4", + "@babel/plugin-transform-block-scoping": "^7.7.4", + "@babel/plugin-transform-classes": "^7.7.4", + "@babel/plugin-transform-computed-properties": "^7.7.4", + "@babel/plugin-transform-destructuring": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.4", + "@babel/plugin-transform-duplicate-keys": "^7.7.4", + "@babel/plugin-transform-exponentiation-operator": "^7.7.4", + "@babel/plugin-transform-for-of": "^7.7.4", + "@babel/plugin-transform-function-name": "^7.7.4", + "@babel/plugin-transform-literals": "^7.7.4", + "@babel/plugin-transform-member-expression-literals": "^7.7.4", + "@babel/plugin-transform-modules-amd": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/plugin-transform-modules-systemjs": "^7.7.4", + "@babel/plugin-transform-modules-umd": "^7.7.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", + "@babel/plugin-transform-new-target": "^7.7.4", + "@babel/plugin-transform-object-super": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.4", + "@babel/plugin-transform-property-literals": "^7.7.4", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-reserved-words": "^7.7.4", + "@babel/plugin-transform-shorthand-properties": "^7.7.4", + "@babel/plugin-transform-spread": "^7.7.4", + "@babel/plugin-transform-sticky-regex": "^7.7.4", + "@babel/plugin-transform-template-literals": "^7.7.4", + "@babel/plugin-transform-typeof-symbol": "^7.7.4", + "@babel/plugin-transform-unicode-regex": "^7.7.4", + "@babel/types": "^7.7.4", "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", + "core-js-compat": "^3.4.7", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" }, "dependencies": { "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -2076,9 +2104,9 @@ } }, "@babel/runtime": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", - "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.6.tgz", + "integrity": "sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -2170,31 +2198,26 @@ } }, "@jimp/bmp": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.8.5.tgz", - "integrity": "sha512-o/23j1RODQGGjvb2xg+9ZQCHc9uXa5XIoJuXHN8kh8AJBGD7JZYiHMwNHaxJRJvadimCKUeA5udZUJAoaPwrYg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.9.3.tgz", + "integrity": "sha512-wXZYccgGQAsIK8DZX0wZE3gbSd2mL2+eheSJMts6I5hQjxhVRZd1Gwu425nUQGzfKCOgKYTW0nLv7/8OoOTTkw==", "requires": { - "@jimp/utils": "^0.8.5", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", "bmp-js": "^0.1.0", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "core-js": "^3.4.1" } }, "@jimp/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.8.5.tgz", - "integrity": "sha512-Jto1IdL5HYg7uE15rpQjK6dfZJ6d6gRjUsVCPW50nIfXgWizaTibFEov90W9Bj+irwKrX2ntG3e3pZUyOC0COg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.9.3.tgz", + "integrity": "sha512-kB9lvst1QhgYOC963SAuPgv+DdVfxTProphrSffAAoo5eLeQab/Ca3ZUeX1E/SnLSr+NGVnNCd8c9gyuKDiENg==", "requires": { - "@jimp/utils": "^0.8.5", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", "any-base": "^1.1.0", "buffer": "^5.2.0", - "core-js": "^2.5.7", + "core-js": "^3.4.1", "exif-parser": "^0.1.12", "file-type": "^9.0.0", "load-bmfont": "^1.3.1", @@ -2212,440 +2235,291 @@ "base64-js": "^1.0.2", "ieee754": "^1.1.4" } - }, - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "@jimp/custom": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.8.5.tgz", - "integrity": "sha512-hS4qHOcOIL+N93IprsIhFgr8F4XnC2oYd+lRaOKEOg3ptS2vQnceSTtcXsC0//mhq8AV6lNjpbfs1iseEZuTqg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.9.3.tgz", + "integrity": "sha512-2E7yabQMeqjcK8+ZFu3Ja5cWyrB0zv/pmzNSDg/BBPJ59HE0fj/qcERAz6VklcjHUYRUfmE5uODsb+4DE0o/YQ==", "requires": { - "@jimp/core": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/gif": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.8.5.tgz", - "integrity": "sha512-Mj8jmv4AS76OY+Hx/Xoyihj02SUZ2ELk+O5x89pODz1+NeGtSWHHjZjnSam9HYAjycvVI/lGJdk/7w0nWIV/yQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.9.3.tgz", + "integrity": "sha512-DshKgMQ8lXorI/xTRyeRkZqZ3JqgnL2aGYAhx0SkAunyHgXji27chmrOGj/6KVDBucrDf/6mSexnSoUDnlWrfA==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1", "omggif": "^1.0.9" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/jpeg": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.8.5.tgz", - "integrity": "sha512-7kjTY0BiCpwRywk+oPfpLto7cLI+9G0mf4N1bv1Hn+VLQwcXFy2fHyl4qjqLbbY6u4cyZgqN+R8Pg6GRRzv0kw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.9.3.tgz", + "integrity": "sha512-AJzcTJXfN9BHtpzAbICwR3+GoH0pSr6OYXbAS6yuKwz+xVn9UHrEjQb74CIzIRqrT/VWcIKg29cMQxgokzWY7w==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1", "jpeg-js": "^0.3.4" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/plugin-blit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.8.5.tgz", - "integrity": "sha512-r8Z1CwazaJwZCRbucQgrfprlGyH91tX7GubUsbWr+zy5/dRJAAgaPj/hcoHDwbh3zyiXp5BECKKzKW0x4reL4w==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.9.3.tgz", + "integrity": "sha512-+UxCsJ3XkRSdpigpTBJ9WkdwUc3OtBlhVZdU6OL6M9ldume5Gj3rTyWvMCqytOK1tZ/+7HmxoWe4IWX31hz9qA==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-blur": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.8.5.tgz", - "integrity": "sha512-UH5ywpV4YooUh9HXEsrNKDtojLCvIAAV0gywqn8EQeFyzwBJyXAvRNARJp7zr5OPLr9uGXkRLDCO9YyzdlXZng==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.9.3.tgz", + "integrity": "sha512-RADcYjZ5vbk5ZrUiK7qv0G4xOpHtu19HWVVX9JTDbm4VByWTxPboVKlgiYLA6l+IxIXNtEqDclsADIM0s9FQhA==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-color": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.8.5.tgz", - "integrity": "sha512-7XHqcTQ8Y1zto1b9P1y8m1dzSjnOpBsD9OZG0beTpeJ5bgPX+hF5ZLmvcM6c5ljkINw5EUF1it07BYbkCxiGQA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.9.3.tgz", + "integrity": "sha512-gHDA5GVx4/R4fitEACKmWH7hNy0aU48MZWYRxmATvuqY39KidJ0fjwp+brQ3Ivgb35AgFVc2jQYc3U/JXv4RxQ==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1", "tinycolor2": "^1.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/plugin-contain": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.8.5.tgz", - "integrity": "sha512-ZkiPFx9L0yITiKtYTYLWyBsSIdxo/NARhNPRZXyVF9HmTWSLDUw1c2c1uvETKxDZTAVK+souYT14DwFWWdhsYA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.9.3.tgz", + "integrity": "sha512-vdYAtp65LNDT/hMctow5o0a/SbD41/y7Z9AO7MGsfUIK92Woq90SNTWx7JplDl4HSZGrqaBONnfiEhRiYlDrdg==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-cover": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.8.5.tgz", - "integrity": "sha512-OdT4YAopLOhbhTUQV3R1v5ZZqIaUt3n3vJi/OfTbsak1t9UkPBVdmYPyhoont8zJdtdkF5dW16Ro1FTshytcww==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.9.3.tgz", + "integrity": "sha512-yOwsvakgyS2/C4iZF1a1wg63QKfYvqb2d6k+rgY/0vaAe44JtEx+Gbg+7iOt4EaMm5BDlxRwmcA2Q8Pef8TvAQ==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-crop": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.8.5.tgz", - "integrity": "sha512-E1Hb+gfu2k74Gkqh96apAyVljsP5MjCH4TY6lECAAEcYKGH/XRhz6lY2dSEjCYE7KtiqjTZzWwYkgAvkwojj9Q==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.9.3.tgz", + "integrity": "sha512-kqMXSyY8hrfo0idr6qY2USOWPrNqpDWs+D6Vwa+kV6SGJhj3rMTIcptQDaamIETSxbjkE8rwUu3K4Q5UD69D7w==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-displace": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.8.5.tgz", - "integrity": "sha512-fVgVYTS1HZzAXkg8Lg06PuirSUG5oXYaYYGL+3ZU4tmZn1pyZ+mZyfejpwtymETEYZnmymHoCT4xto19E/IRvA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.9.3.tgz", + "integrity": "sha512-0AdwxYRWDmJ2wIRIj2RR3sRmNjMhcy5Kwt9Jbi/RRnzxkRScZAiyzkNZhBul23EM7ClfjrUrZufuUvRMHxZRDw==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-dither": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.8.5.tgz", - "integrity": "sha512-KSj2y8E3yK7tldjT/8ejqAWw5HFBjtWW6QkcxfW7FdV4c/nsXZXDkMbhqMZ7FkDuSYoAPeWUFeddrH4yipC5iA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.9.3.tgz", + "integrity": "sha512-8OE+Xak9xepiCwSV+oAsb/gupTnttG3aDKxtpSZjwHebnr+k1VG8NgICbMSFATTVJqqZ18oj6LC+5726qHUJ9w==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-flip": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.8.5.tgz", - "integrity": "sha512-2QbGDkurPNAXZUeHLo/UA3tjh+AbAXWZKSdtoa1ArlASovRz8rqtA45YIRIkKrMH82TA3PZk8bgP2jaLKLrzww==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.9.3.tgz", + "integrity": "sha512-w+lzE1ZF/UOjB8qJdeIm+dLQtOK1obZwGYdCIbgxZxw4SfkkjAftJdY8o8RNOXhHDZqGu+cYQZbMKP1zcoNkyQ==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-gaussian": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.8.5.tgz", - "integrity": "sha512-2zReC5GJcVAXtf3UgzFcHSYN277i02K9Yrhc1xJf3mti00s43uD++B5Ho7/mIo+HrntVvWhxqar7PARdq0lVIg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.9.3.tgz", + "integrity": "sha512-RPrWwzlZsbWC2opSgeyWt30JU9Uwg1+GwBnoNpEMLKeqm0Dv6snASASa4zVtviGWAIq//p3Jrap7g57hKqL0Cg==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-invert": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.8.5.tgz", - "integrity": "sha512-GyMXPGheHdS14xfDceuZ9hrGm6gE9UG3PfTEjQbJmHMWippLC6yf8kombSudJlUf8q72YYSSXsSFKGgkHa67vA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.9.3.tgz", + "integrity": "sha512-0lRsh7IPkzyYqExrZDT50h38xdlB/+KrdiDcuxWwWyIlKauLMR0kInjwf8sPeb3elPLeETmze7uwPAxrIAtsGQ==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-mask": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.8.5.tgz", - "integrity": "sha512-inD/++XO+MkmwXl9JGYQ8X2deyOZuq9i+dmugH/557p16B9Q6tvUQt5X1Yg5w7hhkLZ00BKOAJI9XoyCC1NFvQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.9.3.tgz", + "integrity": "sha512-nZ0J62Hly9JtMZctlSDVgnTd8Fg2XGikzAYilSTCjzIRtbXL5Be/qSAZrMfLD3CZ8exTxdlEGRkEJI3RZKXYCw==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-normalize": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.8.5.tgz", - "integrity": "sha512-8YRWJWBT4NoSAbPhnjQJXGeaeWVrJAlGDv39A54oNH8Ry47fHcE0EN6zogQNpBuM34M6hRnZl4rOv1FIisaWdg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.9.3.tgz", + "integrity": "sha512-0IvgTt4R15QJnoCHvvqlK56zOtCsQV7Mkx757kdNah8uyPGjadTcFBuqCaOMK943X36IIv+o7Ix7yvNUJZt4aw==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-print": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.8.5.tgz", - "integrity": "sha512-BviNpCiA/fEieOqsrWr1FkqyFuiG2izdyyg7zUqyeUTHPwqrTLvXO9cfP/ThG4hZpu5wMQ5QClWSqhZu1fAwxA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.9.3.tgz", + "integrity": "sha512-pV6oX5Bhe9O/dbgrotz46Bv6u1M+/n9G0kRUunDjwzXrvON5raBFEJHQDPcTXiqPT25Gc9Ba4/Akfo/Zl6+wgQ==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1", "load-bmfont": "^1.4.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/plugin-resize": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.8.5.tgz", - "integrity": "sha512-gIdmISuNmZQ1QwprnRC5VXVWQfKIiWineVQGebpMAG/aoFOLDXrVl939Irg7Fb/uOlSFTzpAbt1zpJ8YG/Mi2w==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.9.3.tgz", + "integrity": "sha512-YzqVE8QoDIZpVuI52v+WejwEjEEiJfNFviQfprfm5af7uSSseZgDw1sJ0koqAu+liMSY+Ewp79v2SDrKoJKqtg==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-rotate": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.8.5.tgz", - "integrity": "sha512-8T9wnL3gb+Z0ogMZmtyI6h3y7TuqW2a5SpFbzFUVF+lTZoAabXjEfX3CAozizCLaT+Duc5H2FJVemAHiyr+Dbw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.9.3.tgz", + "integrity": "sha512-kADY2pI3/yMyHbuyvKB4nqPoKf8DPQBU1b4zz2K7SxcwKh1krFf4Fa9mmhhDLoFwuNSy0SPb1JCMUO4BtFCFLA==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugin-scale": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.8.5.tgz", - "integrity": "sha512-G+CDH9s7BsxJ4b+mKZ5SsiXwTAynBJ+7/9SwZFnICZJJvLd79Tws6VPXfSaKJZuWnGIX++L8jTGmFORCfLNkdg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.9.3.tgz", + "integrity": "sha512-vZaiL5Qc+WrgGEfUe4Y0vG+qbT6pe2TW68/mu124E1tKVcZjHKZUeFN0Wr/hP2myN6nqTYj0/sord2OS/04JpA==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1" } }, "@jimp/plugins": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.8.5.tgz", - "integrity": "sha512-52na0wqfQ3uItIA+C9cJ1EXffhSmABgK7ETClDseUh9oGtynHzxZ97smnFf1ydLjXLrF89Gt+YBxWLyiBGgiZQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.9.3.tgz", + "integrity": "sha512-KYCSgFGoZBNC0224X5yUnMHCZnCdUVrsu2Yo67o3XZfUgDjO81J+vdzZ0twpPQ6qLLVAP+nQ8hkRV/QzEUstMw==", "requires": { - "@jimp/plugin-blit": "^0.8.5", - "@jimp/plugin-blur": "^0.8.5", - "@jimp/plugin-color": "^0.8.5", - "@jimp/plugin-contain": "^0.8.5", - "@jimp/plugin-cover": "^0.8.5", - "@jimp/plugin-crop": "^0.8.5", - "@jimp/plugin-displace": "^0.8.5", - "@jimp/plugin-dither": "^0.8.5", - "@jimp/plugin-flip": "^0.8.5", - "@jimp/plugin-gaussian": "^0.8.5", - "@jimp/plugin-invert": "^0.8.5", - "@jimp/plugin-mask": "^0.8.5", - "@jimp/plugin-normalize": "^0.8.5", - "@jimp/plugin-print": "^0.8.5", - "@jimp/plugin-resize": "^0.8.5", - "@jimp/plugin-rotate": "^0.8.5", - "@jimp/plugin-scale": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.9.3", + "@jimp/plugin-blur": "^0.9.3", + "@jimp/plugin-color": "^0.9.3", + "@jimp/plugin-contain": "^0.9.3", + "@jimp/plugin-cover": "^0.9.3", + "@jimp/plugin-crop": "^0.9.3", + "@jimp/plugin-displace": "^0.9.3", + "@jimp/plugin-dither": "^0.9.3", + "@jimp/plugin-flip": "^0.9.3", + "@jimp/plugin-gaussian": "^0.9.3", + "@jimp/plugin-invert": "^0.9.3", + "@jimp/plugin-mask": "^0.9.3", + "@jimp/plugin-normalize": "^0.9.3", + "@jimp/plugin-print": "^0.9.3", + "@jimp/plugin-resize": "^0.9.3", + "@jimp/plugin-rotate": "^0.9.3", + "@jimp/plugin-scale": "^0.9.3", + "core-js": "^3.4.1", "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/png": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.8.5.tgz", - "integrity": "sha512-zT89ucu8I2rsD3FIMIPLgr1OyKn4neD+5umwD3MY8AOB8+6tX5bFtnmTm3FzGJaJuibkK0wFl87eiaxnb+Megw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.9.3.tgz", + "integrity": "sha512-LJXUemDTSbTGAGEp9hNQH0uTRSB8gYeE6FsfT3M00oZincu6/WzDzl0P8E95rMjNxZqAihdTyOP3+kcrbbqX+w==", "requires": { - "@jimp/utils": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.3", + "core-js": "^3.4.1", "pngjs": "^3.3.3" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/tiff": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.8.5.tgz", - "integrity": "sha512-Z7uzDcbHuwDg+hy2+UJQ2s5O6sqYXmv6H1fmSf/2dxBrlGMzl8yTc2/BxLrGREeoidDDMcKmXYGAOp4uCsdJjw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.9.3.tgz", + "integrity": "sha512-w9H6dT+GDHN//Srsv27JhRn7R2byzUahOGfFw7KpIn95jg0ogcxjKTo/RAGQC56sr4U092e4Npl7E85Lt934WQ==", "requires": { - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1", "utif": "^2.0.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/types": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.8.5.tgz", - "integrity": "sha512-XUvpyebZGd1vyFiJyxUT4H9A3mKD7MV2MxjXnay3fNTrcow0UJJspmFw/w+G3TP/1dgrVC4K++gntjR6QWTzvg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.9.3.tgz", + "integrity": "sha512-hUJKoT2IhnbO/trxNWzN19n8g+p7aKbM1R+71n4wMZnD41PzrVtz+sBBCdB+JCjBJs/i7fJt4d9z0i3Xe8m7Zw==", "requires": { - "@jimp/bmp": "^0.8.5", - "@jimp/gif": "^0.8.5", - "@jimp/jpeg": "^0.8.5", - "@jimp/png": "^0.8.5", - "@jimp/tiff": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.9.3", + "@jimp/gif": "^0.9.3", + "@jimp/jpeg": "^0.9.3", + "@jimp/png": "^0.9.3", + "@jimp/tiff": "^0.9.3", + "core-js": "^3.4.1", "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } } }, "@jimp/utils": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.8.5.tgz", - "integrity": "sha512-D3+H4BiopDkhUKvKkZTPPJ53voqOkfMuk3r7YZNcLtXGLkchjjukC4056lNo7B0DzjBgowTYsQM3JjKnYNIYeg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.3.tgz", + "integrity": "sha512-9D2Of6BcjYONtl77YfmU2y5aRMLe0/O2e2aQvfCxdNwD33jRdwNdN4i3m73dpiClNquApIjL4nYGhTixA4UstA==", "requires": { - "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" } }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -3277,13 +3151,13 @@ "dev": true }, "autoprefixer": { - "version": "9.7.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.2.tgz", - "integrity": "sha512-LCAfcdej1182uVvPOZnytbq61AhnOZ/4JelDaJGDeNwewyU1AMaNthcHsyz1NRjTmd2FkurMckLWfkHg3Z//KA==", + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", + "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", "dev": true, "requires": { - "browserslist": "^4.7.3", - "caniuse-lite": "^1.0.30001010", + "browserslist": "^4.8.0", + "caniuse-lite": "^1.0.30001012", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", @@ -3312,9 +3186,9 @@ } }, "postcss": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz", - "integrity": "sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==", + "version": "7.0.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.24.tgz", + "integrity": "sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -3800,17 +3674,18 @@ "dev": true }, "bootstrap": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", - "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", + "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" }, "bootstrap-colorpicker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.1.2.tgz", - "integrity": "sha512-yUWegXox8GYoXVtYdrEIN3QMOeEFbcSFGDadZu2pWmmMgTaw4ECX9T8GvYQzJkRusvK9uzi39FjE0W2k8lQECA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.2.0.tgz", + "integrity": "sha512-twW93EFLf4MzZ/st+MkfdLCWEEA7r43WPlPnGckzm3Lj2FsbmVS/qgJH2c9IcmO3re5Q1320NO9bhuViwHR9Qw==", "requires": { "bootstrap": ">=4.0", - "jquery": ">=2.1.0" + "jquery": ">=2.1.0", + "popper.js": ">=1.10" } }, "bootstrap-material-design": { @@ -3948,14 +3823,14 @@ } }, "browserslist": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", - "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", + "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001010", - "electron-to-chromium": "^1.3.306", - "node-releases": "^1.1.40" + "caniuse-lite": "^1.0.30001015", + "electron-to-chromium": "^1.3.322", + "node-releases": "^1.1.42" } }, "bson": { @@ -4166,9 +4041,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001011", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz", - "integrity": "sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg==", + "version": "1.0.30001015", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", + "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==", "dev": true }, "caseless": { @@ -4178,9 +4053,9 @@ "dev": true }, "chai-nightwatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.3.0.tgz", - "integrity": "sha512-NHpHLKQO0M7uNVJ10qlPIzHN9+6f873kYh6dYAn291a1CVESrrH6crbTJwZ3376trtzb6HPa80QYt3gMTL1o4g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.4.0.tgz", + "integrity": "sha512-1xw74vR02XiHzo4wQfHqme2nqYPIzYnK5s3DMST7UW8FIHDWD7qplg+DTJ5FIPcmWiGYX/Re0CzvOcZQKJm1Uw==", "dev": true, "requires": { "assertion-error": "1.0.0", @@ -4297,6 +4172,12 @@ } } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -4348,6 +4229,12 @@ "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "dev": true + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -4387,6 +4274,12 @@ } } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -4738,17 +4631,17 @@ } }, "core-js": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", - "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==" + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.8.tgz", + "integrity": "sha512-b+BBmCZmVgho8KnBUOXpvlqEMguko+0P+kXCwD4vIprsXC6ht1qgPxtb1OK6XgSlrySF71wkwBQ0Hv695bk9gQ==" }, "core-js-compat": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.1.tgz", - "integrity": "sha512-YdeJI26gLc0CQJ9asLE5obEgBz2I0+CIgnoTbS2T0d5IPQw/OCgCIFR527RmpduxjrB3gSEHoGOCTq9sigOyfw==", + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.8.tgz", + "integrity": "sha512-l3WTmnXHV2Sfu5VuD7EHE2w7y+K68+kULKt5RJg8ZJk3YhHF1qLD4O8v8AmNq+8vbOwnPFFDvds25/AoEvMqlQ==", "dev": true, "requires": { - "browserslist": "^4.7.2", + "browserslist": "^4.8.2", "semver": "^6.3.0" }, "dependencies": { @@ -4886,9 +4779,9 @@ "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=" }, "css-loader": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz", - "integrity": "sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.1.tgz", + "integrity": "sha512-q40kYdcBNzMvkIImCL2O+wk8dh+RGwPPV9Dfz3n7XtOYPXqe2Z6VgtvoxjkLHz02gmhepG9sOAJOUlx+3hHsBg==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -4896,21 +4789,70 @@ "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.17", + "postcss": "^7.0.23", "postcss-modules-extract-imports": "^2.0.0", "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.0", + "postcss-modules-scope": "^2.1.1", "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.0", - "schema-utils": "^2.0.0" + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -4937,6 +4879,17 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "postcss": { + "version": "7.0.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.24.tgz", + "integrity": "sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", @@ -4944,13 +4897,22 @@ "dev": true }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" } } } @@ -5424,6 +5386,15 @@ "ip-regex": "^2.1.0" } }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -5805,9 +5776,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.309", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.309.tgz", - "integrity": "sha512-NZd91XD15v2UPLjYXoN/gLnkwIUQjdH4SQLpRCCQiYJH6BBkfgp5pWemBJPr1rZ2dl8Ee3o91O9Sa1QuAfZmog==", + "version": "1.3.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", + "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", "dev": true }, "elliptic": { @@ -6013,9 +5984,9 @@ } }, "eslint": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", - "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", + "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -6033,7 +6004,7 @@ "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -6046,7 +6017,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -6114,10 +6085,13 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "ignore": { "version": "4.0.6", @@ -6131,6 +6105,20 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6775,15 +6763,33 @@ } }, "file-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", - "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-5.0.2.tgz", + "integrity": "sha512-QMiQ+WBkGLejKe81HU8SZ9PovsU/5uaLo0JdTCEXOYv7i7jfAjHZi1tcwp9tSASJPOmmHZtbdCervFmXMH/Dcg==", "dev": true, "requires": { "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" + "schema-utils": "^2.5.0" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -6811,13 +6817,13 @@ } }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -6950,6 +6956,16 @@ } } }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -7102,25 +7118,29 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, "requires": { @@ -7130,13 +7150,15 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, "requires": { @@ -7146,37 +7168,43 @@ }, "chownr": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "optional": true, "requires": { @@ -7185,25 +7213,29 @@ }, "deep-extend": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -7212,13 +7244,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -7234,7 +7268,8 @@ }, "glob": { "version": "7.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, "requires": { @@ -7248,13 +7283,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, "requires": { @@ -7263,7 +7300,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -7272,7 +7310,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -7282,19 +7321,22 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, "requires": { @@ -7303,13 +7345,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, "requires": { @@ -7318,13 +7362,15 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "optional": true, "requires": { @@ -7334,7 +7380,8 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, "requires": { @@ -7343,7 +7390,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, "requires": { @@ -7352,13 +7400,15 @@ }, "ms": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true, "optional": true }, "needle": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "dev": true, "optional": true, "requires": { @@ -7369,7 +7419,8 @@ }, "node-pre-gyp": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "dev": true, "optional": true, "requires": { @@ -7387,7 +7438,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -7397,13 +7449,15 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "dev": true, "optional": true, "requires": { @@ -7413,7 +7467,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -7425,19 +7480,22 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, "requires": { @@ -7446,19 +7504,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -7468,19 +7529,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, "requires": { @@ -7492,7 +7556,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -7500,7 +7565,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -7515,7 +7581,8 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, "requires": { @@ -7524,43 +7591,50 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, "requires": { @@ -7571,7 +7645,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -7580,7 +7655,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, "requires": { @@ -7589,13 +7665,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, "requires": { @@ -7610,13 +7688,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, "requires": { @@ -7625,13 +7705,15 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true, "optional": true } @@ -9022,6 +9104,15 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -9119,6 +9210,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -9286,22 +9383,18 @@ "dev": true }, "jimp": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.8.5.tgz", - "integrity": "sha512-BW7t/+TCgKpqZw/wHFwqF/A/Tyk43RmzRHyMBdqfOepqunUrajt0RTqowdWyFo4CS2FmD8pFiYfefWjpXFWrCA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.9.3.tgz", + "integrity": "sha512-dIxvT1OMRkd3+B18XUhJ5WZ2Dw7Hp8mvjaTqfi945zZ7fga6LT22h3NLYDorHHAiy9z30KjfNnOgpBoxrdjDZg==", "requires": { - "@jimp/custom": "^0.8.5", - "@jimp/plugins": "^0.8.5", - "@jimp/types": "^0.8.5", - "core-js": "^2.5.7", + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.9.3", + "@jimp/plugins": "^0.9.3", + "@jimp/types": "^0.9.3", + "core-js": "^3.4.1", "regenerator-runtime": "^0.13.3" }, "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - }, "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", @@ -9910,6 +10003,50 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "loglevel": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", @@ -10272,40 +10409,81 @@ "dev": true }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz", + "integrity": "sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==", "dev": true, "optional": true, "requires": { + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", + "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "3.0.0", + "glob": "7.1.3", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true, "optional": true }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "optional": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" } }, "diff": { @@ -10315,10 +10493,24 @@ "dev": true, "optional": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "optional": true + }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, "requires": { @@ -10330,22 +10522,117 @@ "path-is-absolute": "^1.0.0" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true, "optional": true }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true, + "optional": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "optional": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "optional": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "optional": true, "requires": { "has-flag": "^3.0.0" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true, + "optional": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "optional": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -10491,23 +10778,36 @@ "dev": true }, "nightwatch": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.2.4.tgz", - "integrity": "sha512-RoO2/leXXTWG/iAcdW1+sN3RV+bL2P4F9B/ty/wJQmsJw2PLduqvbi7cmkwdNGhh/yaIwIcBxyGHqdB0G754hg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.3.2.tgz", + "integrity": "sha512-1Lcte2Su/JrzET62va4oVLbSXwZkZaTmxTdjShylio3U+woY6U250iNuQz/bOkL+Qvuw+9Vfp+5T13yT0YfsKg==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "chai-nightwatch": "^0.3.0", + "chai-nightwatch": "^0.4.0", "dotenv": "7.0.0", "ejs": "^2.5.9", + "is-ci": "^2.0.0", "lodash.clone": "3.0.3", "lodash.defaultsdeep": "^4.6.1", "lodash.merge": "^4.6.2", "minimatch": "3.0.4", "mkpath": "1.0.0", - "mocha": "^5.2.0", + "mocha": "^6.2.2", "optimist": "^0.6.1", - "proxy-agent": "^3.0.0" + "ora": "^4.0.2", + "proxy-agent": "^3.1.1", + "request": "^2.88.0", + "request-promise": "^4.2.4", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "no-case": { @@ -10519,6 +10819,26 @@ "lower-case": "^1.1.1" } }, + "node-environment-flags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "dev": true, + "optional": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } + } + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", @@ -10669,9 +10989,9 @@ "integrity": "sha1-9WH0WyszY1K4KXbFHMoRR9U5N/U=" }, "node-releases": { - "version": "1.1.40", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", - "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", + "version": "1.1.42", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz", + "integrity": "sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==", "dev": true, "requires": { "semver": "^6.3.0" @@ -11048,6 +11368,156 @@ "wordwrap": "~1.0.0" } }, + "ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", + "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/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": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -11642,11 +12112,12 @@ } }, "postcss-css-variables": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.13.0.tgz", - "integrity": "sha512-gji53rkQx8UcNHpAPgn+kdRs3ZQuPk2Ebo+HDVMIaU4lo9xt7i46X7rvGJDSwR259V1RlPc6vMQdybgsgKtqKA==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.14.0.tgz", + "integrity": "sha512-fEdksFdcvn/vvTddy4KoPDojZt9hQZx3oXHAIgoYJHsnk97ZTP08unM2UAqksiqdytv93415kBwP+c3/jcopyg==", "dev": true, "requires": { + "balanced-match": "^1.0.0", "escape-string-regexp": "^1.0.3", "extend": "^3.0.1", "postcss": "^6.0.8" @@ -11771,9 +12242,9 @@ } }, "postcss-modules-scope": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", - "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", + "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", "dev": true, "requires": { "postcss": "^7.0.6", @@ -12459,6 +12930,29 @@ "throttleit": "^1.0.0" } }, + "request-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.5.tgz", + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + } + } + }, "request-promise-core": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", @@ -13639,15 +14133,33 @@ "dev": true }, "style-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", - "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.1.tgz", + "integrity": "sha512-CnpEkSR1C+REjudiTWCv4+ssP7SCiuaQZJTZDWBRwTJoS90mdqkB8uOGMHKgVeUzpaU7IfLWoyQbvvs5Joj3Xw==", "dev": true, "requires": { "loader-utils": "^1.2.3", "schema-utils": "^2.0.1" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -13675,13 +14187,13 @@ } }, "schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" } } } @@ -13692,21 +14204,49 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svg-url-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.2.tgz", - "integrity": "sha512-MUJFVU2uuOTZW6Eq6NuXZxhaIyWiuKtZMcT90nCkcvIZPGGc0CYyZWYP/rtXUkja5qagNMpxDwdZ/tuC6ywfWg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-3.0.3.tgz", + "integrity": "sha512-MKGiRNDs8fnHcZcPkhGcw9+130IXyFM9H8m6T7u3ScUuZYEeVzX0vNMru30D4MCF6vMYas5iw/Ru9lwFKBjaGw==", "dev": true, "requires": { - "file-loader": "~4.2.0", + "file-loader": "~4.3.0", "loader-utils": "~1.2.3" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/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" + } + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -13726,6 +14266,16 @@ "emojis-list": "^2.0.0", "json5": "^1.0.1" } + }, + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } } } }, @@ -14501,14 +15051,14 @@ } }, "url-loader": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", - "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-3.0.0.tgz", + "integrity": "sha512-a84JJbIA5xTFTWyjjcPdnsu+41o/SNE8SpXMdUvXs6Q+LuhCD9E2+0VCiuDWqgo3GGXVlFHzArDmBpj9PgWn4A==", "dev": true, "requires": { "loader-utils": "^1.2.3", "mime": "^2.4.4", - "schema-utils": "^2.4.1" + "schema-utils": "^2.5.0" }, "dependencies": { "ajv": { @@ -14562,9 +15112,9 @@ "dev": true }, "schema-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", - "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -14759,6 +15309,15 @@ "minimalistic-assert": "^1.0.0" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -15320,6 +15879,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15552,6 +16117,148 @@ } } }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "optional": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "optional": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "optional": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "optional": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true, + "optional": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "optional": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "yauzl": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", diff --git a/package.json b/package.json index 730d8b63..2baaf672 100644 --- a/package.json +++ b/package.json @@ -36,20 +36,20 @@ "node >= 10" ], "devDependencies": { - "@babel/core": "^7.7.2", - "@babel/plugin-transform-runtime": "^7.6.2", - "@babel/preset-env": "^7.7.1", - "autoprefixer": "^9.7.2", + "@babel/core": "^7.7.5", + "@babel/plugin-transform-runtime": "^7.7.6", + "@babel/preset-env": "^7.7.6", + "autoprefixer": "^9.7.3", "babel-eslint": "^10.0.3", "babel-loader": "^8.0.6", "babel-plugin-dynamic-import-node": "^2.3.0", "chromedriver": "^78.0.1", "colors": "^1.4.0", "copy-webpack-plugin": "^5.0.5", - "css-loader": "^3.2.0", - "eslint": "^6.6.0", + "css-loader": "^3.2.1", + "eslint": "^6.7.2", "exports-loader": "^0.7.0", - "file-loader": "^4.2.0", + "file-loader": "^5.0.2", "grunt": "^1.0.4", "grunt-accessibility": "~6.0.0", "grunt-chmod": "~1.1.1", @@ -65,17 +65,17 @@ "html-webpack-plugin": "^3.2.0", "imports-loader": "^0.8.0", "mini-css-extract-plugin": "^0.8.0", - "nightwatch": "^1.2.4", + "nightwatch": "^1.3.2", "node-sass": "^4.13.0", - "postcss-css-variables": "^0.13.0", + "postcss-css-variables": "^0.14.0", "postcss-import": "^12.0.1", "postcss-loader": "^3.0.0", "prompt": "^1.0.0", "sass-loader": "^8.0.0", "sitemap": "^5.1.0", - "style-loader": "^1.0.0", - "svg-url-loader": "^3.0.2", - "url-loader": "^2.2.0", + "style-loader": "^1.0.1", + "svg-url-loader": "^3.0.3", + "url-loader": "^3.0.0", "webpack": "^4.41.2", "webpack-bundle-analyzer": "^3.6.0", "webpack-dev-server": "^3.9.0", @@ -84,20 +84,20 @@ }, "dependencies": { "@babel/polyfill": "^7.7.0", - "@babel/runtime": "^7.7.2", + "@babel/runtime": "^7.7.6", "arrive": "^2.4.1", "avsc": "^5.4.16", "babel-plugin-transform-builtin-extend": "1.1.2", "bcryptjs": "^2.4.3", "bignumber.js": "^9.0.0", "blakejs": "^1.1.0", - "bootstrap": "4.3.1", - "bootstrap-colorpicker": "^3.1.2", + "bootstrap": "4.4.1", + "bootstrap-colorpicker": "^3.2.0", "bootstrap-material-design": "^4.1.2", "bson": "^4.0.2", "chi-squared": "^1.1.0", "codepage": "^1.14.0", - "core-js": "^3.4.1", + "core-js": "^3.4.8", "crypto-api": "^0.8.5", "crypto-js": "^3.1.9-1", "ctph.js": "0.0.5", @@ -113,7 +113,7 @@ "file-saver": "^2.0.2", "geodesy": "^1.1.3", "highlight.js": "^9.16.2", - "jimp": "^0.8.5", + "jimp": "^0.9.3", "jquery": "3.4.1", "js-crc": "^0.2.0", "js-sha3": "^0.8.0", diff --git a/src/web/html/index.html b/src/web/html/index.html index c15c673a..81f5402b 100755 --- a/src/web/html/index.html +++ b/src/web/html/index.html @@ -29,7 +29,7 @@ - + +
        From c6569b7c4736ec63f50706814fa8cfeacb03b115 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 22 Mar 2023 10:30:42 +0000 Subject: [PATCH 0906/1024] Added compile message to master build chain --- .github/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 7aa470c9..67a86ce8 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -32,7 +32,7 @@ jobs: - name: Production Build if: success() - run: npx grunt prod + run: npx grunt prod --msg="Version 10 is here! Read more about the new features here" - name: Generate sitemap run: npx grunt exec:sitemap From 92dada8a80db65f4e1043ae6ae1146d0ada03883 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 22 Mar 2023 11:16:49 +0000 Subject: [PATCH 0907/1024] Final tweaks to download wording --- src/web/html/index.html | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/web/html/index.html b/src/web/html/index.html index 97d83c1e..151fd178 100755 --- a/src/web/html/index.html +++ b/src/web/html/index.html @@ -146,7 +146,7 @@

        4!pO*AnCbelH6*IB z!NTpi%nI{Kfov|~^_S1I@0|2u#g8wKXB%d(T=g@QO~tsga9(qiwbC2`#z58uQ|fH; z|5uoIKMIsF-2?JRwVwHGoF5(Ny5J)ByGgcpEP57r=ImH~wdsQu zPiL>n>4L|T<=Vs&LtdwR4!SRxq*m}bm0@d8+k~LY9-51`o7FtzboBIkx%TkJ$D5~@ z^whqpVDgRFCSsT}>CpL0T|2}S^|lChG#VG&o0fEtvnlqqUqjE$3}j&-&Ocy1Ky zb=cqLlcd!WbiUz>T7$$g#p$yyKYjQ^IV_U3m7ys`=&1>-+4{pP0!~`|dltv2b;#(1 zkVgeeYgSawU$gp;a-@b|GrjLW;O>?ppt%(|7;U!q<>;ctbuYs04CBm6qYUGsV;x=40h_By9o zaiwU>1P)P!w#q4r0u9}tx2t3^F0qV`dJx0K#Of53?b^b4=j_hw91?W`p3hw;2{L*v z7qOkS?)9y2m+r|icE~+cU$mug2V>~z_YCc~Q*Zs+UoId}WO?10>A6Z>;p_j0tdn~T z{ad{+rYmLy@4mgu`jCcup2Ygn`AH1DXD5Z(RiEGO?2y+{=iD&$S{Uc@@EJ-?K2OaS zeCPY&;NE(nbhq!DW)-13w|ecDM!4;jUnyn2PcGqs|+4dbJyIMJKNefd^Q8$ zoO!bvxb=ScE3u>mf7D+6KUY*Ys7rvso992Ls?YDB2rt(|N6!hYm~!TYj8MV8*S}PD z*ZWn?5aPLD;(I#j!E31trf>c|x^mBR(FkWez^KkXqiUhyF^SJ>YqB(@g13KcpBB)^ak->e#yjXG zYi39Ftoli83(D`!=Wtvr$`j+Fq2%Kp`=oheNX>HA7v=vh3i)#Tf1hk$F0e_ANo(EW z#}#28Cq8crV-0%MqOi6{VDo}k8$TK{wz*nc6v#a|Kj{ev)4p6$-HD+=tPkG3o4QOo zxg+=b-QD|Q-#qnQm}RBsG@T`J%8}^fLHD)tL|Y#Osq2|rW*@4UFVz)iyg0z@?i(?I z6xmyqT;fi1TREQW;!fWd+kJVf`wOd;%X61-c`Te!RCZe4Rz%h3^TW&e`F%`#^ny>- z?cdyDQ-3+$I_*sTP3!un*Gg4-+Y_dGm;N!gP+43nn*Kd@%9{DfOo_sY!aq3$bQcAx z*dMTIj6dKcu2H#6V(zNHb|#r8uNz-v+!Ae?cS+=B@#}vVdh-^{UhpFS=d}Ev|20{= zm9!OQzjr?^kvDA-5$FEd9;0H(_wB3vrieGqS4}Fj?|+-F&FymL{(Uj?RXbV|p7=gm z`l4$}G^gQ;hsOm}Pq_ZPv&S}+=jEh73CTSV-+X0*EFiutksoQ6${`sBZM+pUgZ ze)dyWcelxZgE)@E)2|(yJ-dWwE7R%YU+S)KwYbjr_|s(hp!Q- zH1lK%dvQkW{>DzjxEGvu$`POJ_T-m}USeNddh>j9|7!1ug#8gZZIAr}Yj~Cn1Pn@*X z%xbh+RN~CEr~8+7Y!KSBreluq)8C!{PYFG$ls~RuckR@*aHD;vuPXU*o5rQ=jz7}a z7|Pvo=XYu4+>%b0CJ8&PYTJyQ_*E*Fa`^#Va(lwLXYXI^Q1N)v*{8D%9(=vadS?<56`6&Exs)^*<6aN!+6@>P2PppsMm~=Se^k&rv;psx*RWtWHiynEr zsqc>~(=}%~ar)0$aFy}!6lQOLhITSDaTiS`}*x`LB-u!B1=x4`v2+SuV>kDKYq;BtUJw`vj5Ni(k)Nl{{4RH z#r7KStBW$k9>+ZH@m{?3?~5w;%ouZ?b^F|+uRH8oSA3`RapdN|q4Be}DfS)tcH~&T z{=vLip7(vd-#xvN^*QY2jfK_iW+u}U`Io#Zd-aBUqvOo#nOfnSEV`u~oexZ*;?>Fq}!o4wh4 zFrjI$T=h2N8G$Rd`{Wl3UQ3PH^GSXBYRP0F=35PS`}ZdlAMbPEo))n?vhuR#-dD^u zISjlPOg_kW)FgAHJn>+XK zADC1AzbePFc(c~ypKsspKh-_k_}k43QP-}&latTaU;jP5a?h?^H|vw?)mA_HvUO9E zee6NryhWD2$!}ZM9lo}2e|3t1Zu;KYs@_xf{WY3*eTwaje$TD%ZasbU>etH3Jhh|x zQ`gtd_1bm%IiGs?Zj0YG$7a2Cy>WKB!0K1otdDj#n7reTNj`H$w`-f#9J4=#cVznI z_r--jcU-))HZOMfORG0O4ygA{y_uJg(aa<=voF9lnLFn0x;*L7=+dWwrRSdKrtZDD z-DGE!bi#{yZ$I2`xSldURArTMSypfV^J!J#dhJrJ!m~r439|naNoSvU*;UHjx=*8% z=UBkoqOWG*tM>0S6G;-W4`lr_L)@q5qEU}esrlOrR znYCG)WzQ}<7A5E_us5}Rw_3Qmw_)ObA=%)QZNEhS#w0Cy=uAX)fZEZmxoSJou63ao~dP0{Zr~qMMrh94bQ~T>o1sBtDNv>UVQm@Nr-Od z=lU>V$$NLR78tQc+^vW!@rezn`?Hequ+5sYkAJQ)W?J*XX4#+3yEyEw&ADNfT$C7pe=R`tQ`Q;*Ah1lsas--Qn@?C(lE->_4l<{wC9LXZiW` zl3RP0nf$$*baDI57w?|-=d}KFeZKLRrSR|HQ??h(KXK!h_Y*#rteW%d${y} z^4%@(jpq+X^H2RMcjfHWXI%ee?tlIIY~2gVcVCvo1)9vXw*KY*)iZGQVnxxd*H(2) zOiKy5y7eZ*dFh%*i{*YFK6~zz($_81#IN35vg(%2b5&C{>7bj>ZX7I}t+qL&-fv}A z^QxTX202%zpH7~9R5Wh#S&wHARw}RR)3vz#@0j~p>Ffz96Qx0$aIe zr99m$9{W{x%Y9S-wiVmMJ2t-fo0Zq(ZPt|<`lx!c?*o%VFJ6egp7i2z7E8~hMJ$t9 za&M@+%x;tWv2NM?lhH=e5{rv!zMFU3bDUK5_`hZU{-{3> zR@8M?>Xd))-raoZ!IOmg-TxU^9}%B>{8gWBasBHK4PzXotYU&spERBmV7?9!HECU(|I?o_xr4jPxj7UY+|yc{a%XsS~i=T zqAfYcbGKYPu2H++ExC$!bKAUQ>btXi7pXN~US8+J*=~4DVDa~`zw_8v{0-{ltygM( z75q?czL081!C#*X>l)M6KY9M@h1SV~cV5dSIdilv)f8W)wIO*zi~6l6wl4Ng-!l$> z`%qA7yHCEU|K?TGecY=2FRltkdkFkBU}JYMIkR!A?ZV;-S3iEfy*VX!(adMeyB070 zyga+EK4<6d-|GHvY+ZP?QeN*c>wh!3-Bk5!-~MU&{WWQ?&zyhg`S*6|ea#ZN^QCeZ zH*PyOW7iME{^wQxoBOZVKd|s$Veo6&N{RcY`XasO?dD7W`|l&W&OyyNV)?Iovz7nO zS@r3_7EUMSH}yJ6m&0ZreT*)An9wR7}a9eMF0Of`L$?_K5e88@aZ$vON_ZJ$*1*SN`d zwQrxR3QsfFeaN6%R4Idh^*7wm-g8yI#b+UvGF#WA~)9!ZR~375{nlyf<%uR>!3vecNw4`h^|` z_w0!{pChyC=dE4aYilO`Tls!|lKz_0Zzgy2?oCa-cHyDcuUX1!OtP%@8I0LR^5KGS z=2%{r4gM`SdsFIt_bzeHN2zNr-GAgf;rQ%A>DnzEn`pZ-V3#U)-Pnibpp}K*eeEHvjA1U%vm0xfI%! zFQ&@#@Z#L_3#VPH|Iu%Ed-tu1cMZIEay(vUzq?=`vyt)X^9$SKxASv6du^-uC-WEU zQ~r~0z8JPUz3R)JeD<>E`&-2)r*y8q7yqXwiQhNeGX2rNzUrXdA=to-n;bA9G0#p$s%)( z#8vFH3C?%R`=Q2eP?k9SUo4d+b*r#%1t({FqZ z3qSfJ%wGMi=I4XYI@j#E?;ZR+E^pEdChy5Fln>;CFPjJj*wr|MvXZO?Se!+SbbFHeg}f4_O=J|8OYj)vhXPVf%3m5R#&wuv**1lz19sQ+dbmsILs`ZC`-pchRcilIM z`>Vbmukib3vuxG9quq-RGCGP>MrD0&F;H z5|?F+=W^1%-MRl`P3q?gj=k?2B#Z>&~6$%27MWIji}&X3p99b#regdxYD+&pIlhI+6XAO*5yNhm*BiTF}=& zb39h9c^eVUy1sbZx>U=a0L^{JD_z)oyEf?^+2UoUyXawjt8BQ>wXk^>=VA?81g0O1 zc(1xUHvdk*p=W|Jr++`y?3^C|__mg$G0*L_oU0WcizJ7XT-caea5n$=_uMHzzWsRo z+UrfG&tH>mGyWuapDjE)_pIvK&b4P3EPXDq`hed|-}vB*mLbNWTdTT-+adzXyk2}W z=sUQq(C1FkrCIaq!hUDJYv_(Lo9-dF@fw?l*U1I@S62AV{FU>&tFpT{u8CLs{n1Mj zYL1^eR_!bMeWi43QF}$P=;nIH8LJPdPV3hRHs2KcHfCagZN|F;(=r-X{}0`~^Vp0< zf>-1%gR8qXW|_sOpFO*zx_zIVk(+g#^b-@NGWpLP zv!gfPr4)Zq+g59o!hG-SzOakW_^RgD`1<|*JLjhLh10*KE+*vP_I!Wy{PB~|RI+<` z*Rk!Ee35->TZ(tc-sS(;cCUSy9b)~va`(KOmzr~R?Q|YTFJ5!$#-mGbvR}muR;i!P zPkEob{$*Bk?uvtX=Z;U)sEs+^FP0mxBH62^tWb_eV$QA3wV%zu#LYji zDsz)-BjaYr?NcIVz9`?-Bs=+)@3yzPkD|983oG;4s_14lgCpGY&<53czMd)H6a4@7 z?mZRL^x^Bh*&-=Z=eP6+-G$(s7A2%kUq{MzH5>b$_0Kf=CEemgg!QpjWf zF|$6O#E;1rpYF;Dc(U@r-s#LwI1KAl_ugfnT>o)$|0~Z~;w|d&ha-1Z>MWEn&}8YH zpx_v^;eVD-sns$kt{;_k>s=UnSs6blUS~_*@c7peGs}IwZZa%c+gl%5vkGc`Gkwdei?Nf$(9 zuYT$y>+t+d&oQ&(634eLat*wk*);DC!;v(til4@JcVF8ye|5+oey>$)b2>KdE^BX@ z!uvymv2yxyM(gRTN^hLYkm9?hr`?<6u=QGW7xRs!U)}Vj#r9@Kea;o-oteAtO(Z~w#8bD;zF}QzRFifw-{JYL8FGP*w*A?=%hWhrP7NNPz>NOo=ex6XunBDd# zeEymv5|=)1n3{2~IsWSgGuha?evfw_v6*&E;f_*;oRG5!W2D<$?`I$PSj$Hj$^HEO zv9@X>%Y`MA&rgYIy1^zB6#ePzih>g7jUR1F+SE7wV%7O;8EaLN-LF2kELkzddIN{!-`WTK=YowTmDncVW|$l+Z2welG4ty^6VtC@+t&T5 zTg7|p=h9hMi_|WZKd;iRI(L4vh;Elf0zv}O@k*L!nwS^gB^7(~gP~E# zimi`+8m7N`Rhi3Lww&eZsz*OUOspSPa_wAJ@ON$fq_0b4W(FT}vFKA-ea|^_uk?cR zs|>D2@6~yp-{9}2nO%HcN&L|Sqd>)APPV_#Mdq4am)yH!eXhB}*%zEAuU&Y@v+Lyf zi=3@r)nZorPrZBP;eu5M8LzvAe%Px2aqUZ{;4kT~*5}1F-}R~5t`fY3hbiFgysKdr z>rQ_+m)&bSb6UF8J)V8()6_(^ESj|b?Gzu2l^3EPcRdY!J!AQ+&1p}MZ#~<--uAW5 zvc(nVxf@K=CO`5&|J3~U{x8BUZ`9F)v-82~FhK zaVb3MXt!ir_?6b^-CRjm_LuNIotVshrS94fy-6mW-(PanGS;?s2CJ{$AgiFZCP`rR z(|T`r6i{I{)6H+35k3jEw3H!XKaecWuhfQx*S;^s1V(yYhQCcKwvv z`!nXfEZ^mrW7)D#vp2Axy`Hus@6@$K-mcd+%w<34a8~(UTD5MbEq|fz4Xb5hx?OBO zDFq2Tgnvv}mb`Oi{fqh1{^mcH-wlzUb|w1e5^d}7hbpiA56_JLzf?~8MOoYA|BY(W zlahIZcJ1G76S?B#)fXyB_cdh{BhEk5UuE$yD_7y;!xOocTN4G0y0zDRH%SRHlds(y zxVYJ8Z|N7teS7YG_b= z&N=yB*85(opKhy}zmyfmGfUg9tXp?2?2F8uEtPYBgw5WcQGfZW!zD2v`B!-{)#<;& z8hvL^uHh9X7&#feL-dCwX5TKVeL-9FE{bOLYMZdX;Yy*+2+4qU&=C6>zYDxE;Ik?ecZe&UeKYJ@mkgVT`vw#xNRWO>Dc48 z_gr%9$DJzo6BLYR9=$5};6-?{a@@8z9gIsO1v2A2^0UvV{;)Sz6qjeJ`OoV*vEQJ{ zmHA%eG|tsVnrpY8zB*5ITI}x~U58W+b0SSnC48-9T)yS3_=Mxj=S(}>yd#ZIdai%e z+kA_vsXJL>&&|<1er3v*7yC{d-rMtL)tO}78!{J6{r@(s`eZft@Dr6}{rAr+BN-AF znT9V;DVuI@)w+1%(cF7MAM=8Kn>700eS78l1;Z_s2N!Wnd@B$=+cE!TtErz?XvHG2fddfi%veXm++m*y{YoN53}{_ zXAVJnQ;w}$?kl@D`s(h5k7nuAoG8A$ZSteD*K%cV<_6B*-my`(hWC!}?z3g(yUnCs zqnB1~H~nROxbT6ctUNoLIR62rwT*FM@5Pl4{7xypo;7{-(c;5W9*KK5uYW6%{3>uk zX3659M>j2Z>*f}3$V@u4^JT#%Md>x^alC8)1;3P7d{4@)A-FVRf9UGfhZE1|?Qnhl zqT2LP^wqGvS6}IdEI;m?Z6{*8br z$abRe?)Pi2HY+Th7tv$rA(glOp3|2@;i7AkIuiHP`y{?!Yp1nZaNh6RfAe}e@2@}e z;nbh%4?+=B4W*a=@u^cSZa;sJck+jt6LbImemv{zy*=`glV7Y>jrw@dNA%GIJMURl>g9%h<%x7sdZ=wBKA`|2IG&0QB?ZEw={vPZ=$o@H+?>U!L9NV0c+ zuT_<*{r%K!c`U*CCRs_3FJDbGPR}ZzpR?`^uf1vEN$2js+2T4~3_i2|2w!>;KIylK zE&qAxwfdhAi)RR~4fcCK^R8w!%k3R?b8kk?6kg|V@zNxI0`HVpbLVm$F#U3D-ov+N z^8C*yi^qxIVd(G8={{{5I`3;8Tg=U?U&3Yw=NH|*b3f#JWn4p>i0=)y7i(Tlyj8U|Tr)pq-Vdo9c zTcScf_#a&+p!#dax%( zfBlP(mZW{2d`~ww&MN)Z+#AoUmV4%R@vZtJRIzgr#}&pi$G-mezP(fVcwh4CTPjLr z8sAoLyU4KCdg|M+5nf?@iyuoJD%-K<3P;A=EmrF%TQ(Rs&1w+h2*_%_*16+-t`r$PC8woI}&ZNGfY(P*1DWAnaE>8Yo+qYs>ue53PV z-Uo$!HxFER_GpjAChdLAOOvlZ=ea9x@!-mhhFP!6uGm&K{VYj%u4MT>;hW{A3zN?E zihtYX`fb9!9KXA@Q!3fZ=0B_3*|IuMe;4a**_p}FvrkV5ekFc)$!pOM&vM*1e14UG z;9%OC)J@*?OWy3N-1K&y$u(UejR=`}ceG|DeztqM#&VfkxJk?G=MkT`>-^N6`G#9Z zAcl9F>HfXCx8t9ecW$Zdlggg;Fx^i3ciS%Ot(AVS-m4y8b+&ou*}0pZY8{Wb9uX{= zZM8*l%X-~S*G#useztD3&0h2I!aPZ8QU438{haB*!|Rh zTU^k)b{>QOosIc=-vjg>thID&Z|}c&YuAL>lRA?=*HqMr&7XIZD$j=LUF!d6u(u?_;aqA9=Ow*H`zNO7&c6Qnw9)s1|2!qn$IhKGv&!{Z z!_8&YzqEeXv&{UM?yFlHkKH=sTHls6Z|Tm2S91KH<=x9X|Ns1M;U+b=;PyF*=4?NMct=Gxk`m>jPHfwF_Y*W`gPeLu8ow&BWWSvFE)H25n^A=rd zH{SO!KG}HVbETuD2?9Pz5Byv7@^^J@NVcE1cU|-X=^RCyExN8#{QgdTd*JGPC7*TYs*)UAW?GXE}@cU3KGc#^*XZ*6*#mex5Jq)xJ;L z%kyjndA6<1i!Z%y(VjD*LveOOQ0a=3&6>BZU&ZC#(~)i2^6Jf3DWl+R>1#@7CHuVV zd*K=PP-vRN=5zVKtTWcQ9{HJ7ocXV8PO|upck?%=2AA`HdlNNB|7B=p_u;2*KYi=d zH?-z7i9Y{Xvv!5~%9Yu3%9kp;hpzr%U|Cr<>(QN8iL>sn-S#5J>F8F^RXJ1nqDA;L z{b~$)KHvJFwy&b_o(=zB8TlL29xPYV-EFbr_hK{uFLsxBQwQm0_W3_Bf|L5ns z^A#>#xD$J|H2&SYy6QI0E6-Nn%{Q#?{_=AY-yX$E8U5t`9jEvWKS|VG;WcaaaR2A~ zN-DeCVE^ek2TyUz{yeke`9qZorT@!&UM_rBxbgh^$mfQp`Nx$L{LQ%C8k4zl3RarG z^lQuc@A1t->Bp(->%~i4m2KXh`de{e=E{1X<9s<=R$lwJPd)m%(2fib*>&(Bm>-z5hlFIdao^R8bSL%C_+dg9bb)%2=dWA2de5bN%MMZyEeX_1r&L-LS z`GwQx%sc?Jk~TAHDnafByVCe`WX14z{X>SB&em{zvZox-^@8^D+*W zhf8#`0@)Y8$}eygH*wtZl~3Y`^gPD=H|KWlVx0QNbN!d^36-3)?c-LxNjP4Xa9Z%t zN}sKhJV!1Gll@b9t@bY{XuW-V&aUYiWmn$*Ikb%Rhw+Jh zi#WfRz1eHlusZMkEj_K}f$TR=l^x5`5Z>T@R^jSeGxd9|rq^mN%j)Fbd;NxIa=UP# z@AhBOHJ`up-l%@5wlHUd?ahMX+YYWZn|Inu3-siD{GL^uYJB?}12ezX&3i%HpUudq zt3LaFTJj^-lCR~LbLZXfekYu*wUw>^%BNMcbENieoSVC*G-dZ^wR4dXTh?`6Grb#g zeCCzezjiM^d^={-2LGbC8;ud7XLkr#-&JbzTfr0i`kT6@j8SorzU`E4f7;&l->x~c zvAXUd@4IL1hM&tmQne0WD*aqk4*FSG7Ui#&{GvkR#{|EGG_Jj${$y8NlaL-qfUBFjb2D>-EqZrL5b_2+Dn zo@)P|yR!O|b&NV~wRDtvWOs<8;*62B{)2rrP zI{f+b#PH&Ok6DkjPkH;dS2KHa-p7ttaZNeT@>e?6ZJNKozOKIN*SF7~mv_IuR@t-e z`p@WVTbcPzM_w z@=D*9EdILl$!Yujf9LzZU{{{rE~n3ab^qPJ#oK2(Z(ZTHt87D7*Ne-2EHA`M9@NhN zD&uxv{g3c`!xI;bUrDgZocofp=1MEq!#sAghLraQ8(*_o`!4t9I@8&4GLk*T*Ke@OOJ%?FS$+HVpIi4g{9F~yW#_zbfBxZb zkG`LhGdah&zG-@GO5Fq1UC#>d=>^nY)jj*n_~z1Mv-A(E?Qd4y{dC6Vh~4XST|Y;g z{o5B?*R1LH)p-BP-`h+>|JpV#G|S)haq_j|tvhEt-yS{7{?)#7hN<7He>teXx0>r) zwkvk|>&Z$fM`919zX|r6KBe96-KO{L_w>$f)vol6(2O~zvH66-GiLW^Ta#sO?_{yu z_PyG>{(ANO(wB8Ce6LdXJ@K;ddGfsO_|M&&es5ZveQ@^8J(qvmrSCD^B7CfhgZ0{d zOUXQo`s@4ZGz=`@yzI6|H@;tuC&hn{;bqDyZgzEQwx6S@4lm7b|TZx zPxAPIo*8+D)3;RiaJpIXDK5Y3n)K}3x-V}(e}DOu!~e#{rLXLM&pgS)%KmqF<2T;zWk255{pLNr^3893 zas8<14@IBS?l!Ieb1y;f=dYFbJRTiCc7I|^{``0Emadb%lP0(LokH_ptFQmObDOS3 z?9RykR+?yjcf;P@zID!*IG@PBVdv~N`Bx5|i=nY`*gTsz6(`?i5+EvL1y`Uli`8ZPg<)I8IFx9+C%-734qTf8`nGvA!}FDYie_2;R+jjzl8iZdh9ye^X|c_-yeXv)?41G)zCg zZ2!vYtQ@f`c?Zt3?pnS7;JW+Ik9|wqwcTvF-PWHB>HLKocXrRZ-&y$1H~Hq&oHSgspU-^kY~5nW zdnaGf^JZ3YzRdI5ujNnbEFE6v?s46rD0iuGo<{*!X*JvJ-d9q|z0TE>?53ZQchBWd zoFilKreyt_OIhACzcM7r7`?d=FCqG3g7P8bM;v(v&WSU8dKxgPY%yom?&<1xX2|$n zOs(-Sd%e|2KJCPX@0X_TJYyVRtGRK*vR8j%Wt#6?mHGW3>f_7j)6ak1bLOgR^Od(x zGPln>{wwlzRJ8Uvv+VY2lWX_u>mD&`L|9bc9ta9^9y0;tv}0Le$A$z z{?(lA*4zC1`|s4=ZQL8He7-yH^4pbpy{7Lpb|1L9^c&m9a9^}4hbVZJ5iSici6|Z$)h<|GkvH7`q<=ODE ziLde-KRo-CRoq}*)^S0W=Wp$|-nARmT0*}i6|Xnb_xYi*{DE(-97|d&_1;&a)YppP3k4%lUivtCG>>XG}tE`DV-aPu0D$_MhF% zU%NBbgx2rQlYYML=q%@N%GV-p_&wWr?CFotHLUxdyf%Wo25^~Og{ z4qn?Yv^spr`Jg42ZzUyvJ`$R5>&sO9cxv&X6El}iJrWiZl^baG=#Gc^1)0v(m-aB* zWp@i5l+RlCJMHtVd&fS{aM$_Ybi?Ot%o5`VUOtZ_es57S__5~l_G@CNE8o<7+Lbr+ z=AU4F6()VBq$r)suXiqPviN>%>(Z8K_f2oSc;A?_hkt`h&5oX&h~wTjy>Ccg|NQpP z+s@~cUo_q6wq;9FE^qJX_cluLUU>H4IZlQWt*sy59Qk_Z(lPCCNqhAx-tk_`{>&(H zt1xBybfNe9o#B>`y!IZJNq>I(kL;4CGtLzMvG}cB#+H}GoxD~!@>*9^i23Vj$MT9h z9q0T{2zJ?)UwH5E*87tm&sdeUp*j0&%!K6DZCmQ3BON$OZjYRTNLXPUA>{xEakMm#TDfZ_g+5>7U-)wAG63( zr*w1Aiad_`^UE^)%P!nKxybQI*a$S_h%N{t_mn+-}rg^nqB5*?7we4lR0R< zc=oYb*@bc?zoS0Pj!0foSh4=l*&9ls+fDAi&+#*pKa;c8WZOoyyIc3Gn#|6>arRl9 zT6F#TUDCH#=e>8y^?MqXd~#pynx9LzHQdSa7I^(<-?hISt5)xly>Vr&8Nc_6&eYiK z*>Ri^k857%>*id2a`}qntvw#!uiZberf}ay-yMm4J9A?{Pqn?cE2!kCM&3%@*LALo zx2YVDe6Pf`&_^-X?ZvgM&(GdZ&5bz!JK}wYhVYE_+=m^1#4V6Ge=Myu@NSx=+LMgW zOMTa~G`*JG6W(4Y$9~_-OQb?H7xddB>OW&pI~y*v<)e z_f)N$HgCy<-u7wodp{mOv-stj69299PH&s%Y~{3f`YAUZnWKdq>yuVrHBeBnjZu|Iz=Pyf`<7cYLcx&LKa_1ypYe*BC3xaU>${+XqIDDC<+zDF#= z-_!P*MV`Aq*<-Ez!z-_5O@9z>R-ChT<)1@+Z?mLtz1peqd*jCIRdO?umwlF4o%Vm( zyy}RD|Bi>oa)*8ox~>*{H)Vds&7)UuHF~Mm{=AcaTj=@Sl&d0z@7K?ndi?Q<>H42i zA~MqNsDA%tz3sv-HRZc0)tfHPn4p`-UdCp7Cgr`@w}6axt39gL9p}!i+8us3|Ay_& zdo#}72%0^aw`tSwqt7a@Pha*s%`AM|nm5|@{?Xg^zFT|NIPQIJ-LAQ3_wHC$y?xW{ zcgLPRI@|a5{;RtD;^qJNo)xak+5Tk4k*m+5w@pd=EReU%T5p&Cs_N@mr+t&wzO2jt zeD(g7-1+x^7wk)GwtoKo&7r+~$KJfIiZd&W`)9LXKL6eO3fbpDW@g{bKb2oz`#Iue z@+-U%@Q(nt-Y32UedA}>yyj8HSJnkPiZTD$~;)PO+5B$3Q z^Y*@FOt1I;nyp-%?9Em^-FyBe)vuY$rw8cGUA4V`>)!lQ-6lEZoH&ElrrMJ~6y4_O z@|ND&G>?CY_mg?eH77sp6REMDekoHq@z}lijZd@oh9&u>oVQRqCAL?6p6TtCXRAG} ztt^)|sUNC&lD5f4e&< zUiBBxFHMpxJNRY&_Bqnk*EvPS4L%)cp5Pe6Qjz*yQy}+f*xf0I7p>hjF?_1-(X*%e zQXZ>c%{}++uc`I^TYGp`{r;9S@59=h%IEJ_yh(VT|G!O_byxeTY3647+b_Jm|7u?5 z=S3UaCWf1}S^nO0b*4rnFxsI*A z+5Gm~8^Z5ixSr(u`FHQTgv`&Mk3IAKejzI>ru1=f`1#P8*Fvt|ePx-Q)%!Va)&Ae+ zTUGC<9Z$Pj8ykIsrCQ_ExAfb$Hr=vuEyO?F&^(_8rrZ2qK z>J~U8t0$ZNS{N36;GU?!CB5e^d-eXE{F9sixmcz8+)|#(=?iOLDDyYp&Q6*%XX$?5 zSnlY0?t~VyWj8{lMbLXEE{Zv%ICOyR~b(x2jCp-#z`QS$Eskr&a&No@{@m zmvZ=Dg8C18XY=sSO6DuFml(`?_*6FX)%z)OK^JR7PR{+y+25~t{P*cb-iyY^O!^`Z zrP|2Ef8g(Vmw0BS$IhtjQ|_(UHpS@i#nPpHeT!w1&duHx<`TB;;h$Ku#jBZi^SP=V zvx~nT61)AzbukY6GsZ81`V-z=|5?4_O`KV&@9Uo@E%v9noj>hc_~5+cz7ySfZ8dM$ zD}JT>f7_L}F{`WM+UmGl0#9$8|7!HYFGl*8u+iLe^LM}4^E9=&F4201L{8za2bXty z-aIt-U~D7niEX?8)LwmiLhn>=^5L@77gfP`Q@S1g*mZ4+y?!I^rqS0^^N!wlwjy}l zrs`DosG8Giv43M#?uBd*xoM;N|JwZyi_U_+r!4#UFRypFo7%h8j3d9$&#W|BPwcz* z9Q}Xm!YgAId#YBy=(#EN{K{R<(*3=k7w_5hJ4yQas@vCZJ-T;wT6R5uRx!`(i0oa~ zyxVicgXDXDdu-4ugQrl`JOVr+5GBTljFNOcWHZv&Hj9o-}GGi%&X51 znw`7;C(l!D*IG{IkPXZ4-Fepk@QHb0oRqY3$mP?s?l0Yb#&Fa3xa@9^esSB?{H9j% z+|@76-0XkQvMXBXP0)ES5j&atSN^R3Tz+7~_R8GtE2GuaB!4Ju{{5^=HTa87$n4+I zPiFYcN`CbuD@UP_!TC<&!V_CVE>(wDXPcF3?~bmGoxgP5x%L^qy(iB4llFN=d3do# zHunUpX`jP(vRRgh|FxIc=-;0m+q^GP%4_B9gWU2Z-(+@9)qY%hvT4na5A*8Zbz3d^ zuemWf_)9>{KL7T|#WRKofrF~ZRa*7BZ8_mx zJFedEZ+v5X^Xz@~y7-$(S)ctZVrKl=d34q$+rC5Ismh-!S)TnXoBV9XoWs8(xbqHw zTNqk#*&_VzL(}8eBABP=ur!;W&wuqV^xu+gdp?&Zm$&UI&8%7)y==9``X^i0`7Sfl zXZofruzG*<58m1QspaSH+^>E=A=Wq1{qDY-bHdjDd@DYi{k6q>kI=FVGyZ#Pi%&)c z?~Sd?_WdfAm9pJ}ebdt!uguQp&#YRw-#J#yr0hb(C)?LDUWINh@? zEBHVEl-_jz`e)T^=Q=hC9MI1ZeHLf6*`j>S%J6Kp@|>?S_pjBi^h*yoP`TP{*(DeI4j zXFnJ|R;0aC)IK0D5Prxaf7juYtf|$rmz_A+pZ;-;40E{P9*(LHdwxZozw~y~4<%-& zjUElxUH{)&*7;7$r|ENpb!N`qX5E{HrzKy^JN~rNFk9hHo9v!fW%X;VI~w+e-#s_k z_U4At<#Q?+X1%kUlKpML8)MhWZ|53DYyZ|s`M$KDd-qM7kZ+NGZ8=l=-6w4Sr}uo{ zhNf?sAGcq)A9Pc%K;r1FMbgOu+g|nUJSO$vuvGRz;rDBAaBOv7Zy6S~W~%R+uaP!4 zT<83{{WC%0x#{sMH$SBp#;vFpvo|4n(VB%+g)t;J(IX3ox}E9?{j>@V+N-W+Y04o<+biV zw{Y#YhO;YsKhK`Gz1Z>0^ZeBHrdz|eJu7cKpDBIade<`Jtvfeu&sIBjD=PTsySXfT zKe}vO_1yQn!X?MK*RISENY9-9Fn{@X_49$!fit^mBEDNZ@;O-2Z{J^h#AxU79S_{T zT>ippo?2&jr{D73w&Ift|F+IMegA;#-dbhpMw!a*2ma60e_1f6V%Mww=gBU`EPg+` zw?2xTHcRXB{i&y;y_fW`-`D5QJhxR@TDaQCE4^xK<(l~GC)!L!5A57#zb8iEiC}_R z`W8>yIxSDz&;K6PgI(-kYn>&fc&5@1Wz|SMMWk8s8{Pm&|@Hmdz4(yfSgl_pHyx$-a;8#C_K> zy_WXXeC4K1zguO?Pi^bp`r4vDg}?jVwB*9{wbnmgz5kxGCw}AE$A9!+N1e{Ed%t_? z-wd&A-E-c_?jN1IKOeo{{K{=ky8N5u-W8$c|F1nuKl!ZiUEzPG_xGR7c=mn6tv{yM zitO$#nm4`i*S6x58&1BzP;%euxXaB=7vJu_y=n2QJ|o@F-}h{|ZDY25R@OPal=Zuk zS7$fMPp$R7yK!S^d3W)@!=9%~n+12J9hRx)S^aMRiH!@t>wRZ^qjGR(LfrLd-+$Up zxclsaM(wjITZ@fJ+hwZf9^b?u^f1$=xU2TY(it)HgXZhMRGNI!_QtE)XS+_H&;R+- zPPO1thyD$Rdwkfwa^=hGGO^R_b2{`X?uF_Ay1XP#D8J?ot1^mfD7Y+qTGHLs^-galu{ zoLa{ic>L*0Mb~+2J*$4(+s3+07k@D=W8VE+(^(#*&5}LdcrT;IOS9i9=;c2Pxkob5 zw&(Y5%AKXO{;d5x#$Q31<-5iAY}Ho(s28lGSMXWk!oQp!1pq_SebG0{G%H^ zdT$brEbHohC;GDE{fC<`zn$S;Vx3rCHu^`1<$^{Y3`<# zv(41&gUm`Nzs)EPzWe;cjmlFw|Lm*^yf6D!T$a7^>|T#-NO{5ajmP|JOSGd)*`4pk z{V83ucGunLvTHJ%uljyluxs`HslID&Zz^B5@t90>DZljW$+{`rvibAx>zQ2-z_;hYvCnZJ3hSo#aGo((7SR~E); zh+hbc&I>#r8Es}dwQJ$-=;XJ(d0gB3w?=-Fad4^==Bc}C+o>$Re(Say$A1d2>!xk_ zKJ~2ihO^mO$<~>lXXL!vX}5I7^(#~F7WsVIa7J~Lj`WW!f6l#;{N$(b`w8#sohElH zIii9Yvmb8j{k%hXUd{Ho$EVmnak>c~+w5qzM^?5#z z|Ic|E|MI}P7c=HRn_gt!x8`Z;3$xdzo4yC8WEIx^`&~Xw;_;D#&K6D|b^Zoh`P`an z>;L(Oftvv5y9G6|);F$h{jt8#=G9%@57RQg{rf)UqUN>L&y991YTt8Y=ccuC|T&Npk%%YT}`{aDoJ z?cCCL6SH=4GdU-po%Z(1v!GIQ|NX1x2|RcI@b+;`$o6FsU%%H0uG_fnqV6uwD<|&f z=l*+h@5rqB)b34hOLo^@zj1Zjx|?%yw*GASzRo_YPxH3TaSO9IVbLrfHawH~TWdU9 zSa`{zskWK9nWk6I-0v$ryYkf4`|n>xMf}Yzdu*+^E~MED~tXHo##!?-M?w?kG`DHwfw%D zURz$7cXoT&`S0f!w=`}SU*o1)>{N^@7e`Szjebh}cqoLB$5rB`aU zJ3L?VJ6o@E-SZ}Ixk`SPy{BWB8FxgL)@R67OUd^MyO~dap8kzlsj}xq*F52KzDrkr z(=66qdAl=b?r}S@=Ra3&V>-U_%ny&`Q~P6>{?BX=xuEbt`+3JV-LGmJO!xP`lB(io zdM@(%*;>H^CWlz8mKiN`esycE+?j0e)z2UQVEA`=y81S^4<}Nc@GwJK{g);RYA51+P+5Dy|`IST5 zV|{z`vch}M^gRExzPeK4o$P)2?hozg4+U=9^N&v8y?uH@dGFff)av6C#Iq6e{=~=cU1rDgp5OB9SE0~>w~y|e zesW!=dH+E@-4okyec!M%ukL%;KfCViob6Zt+FdI#)SSC;e`@dN?{B^uXRNuo@w}W{ z{nfYsC&@<5x&4x_PF^DWx>Gv`|+x^}~&$fU3 zBU@8p-u~|1+4~DO)xMp@^L*om-mU94{#V-1d-Kf3%eQx3JHF+s`P|rtD(vbh-GaaW zm|gRV%dHcAQ$5YpHZp7e{nh(jXTCn-o6Q`3%I14*`k^wVV!zC5xwA^2he;i;jyv_W zI;mOAV8uS!rpf!`uUFK{oS$^(e(kT^Q`0xHaAq6|s(iPh_vPtgr{fz=cWnLcS;pn} zT*$_5!$S4`yDm4Lf8v=L*(Ckh#@>GVZvP)zkF|X_9E-btLM8gjR+~e&&R>4Md-w8{ zOb;9GUv516h}&=R-V%dJcM5v^j#JJ9T9q``y+zOl4Oj&uq6)u1mZ=buw#p|Dk2Oysz4F-w3)n?~TKnMWS)H z1Ept&hpwtlJp3l>b6f7$JvZ-6`uk&5wZhzgdZ*Ova&p&|sLi_S$E{y6d)B+F_gClj zeinOWzNvCy-dV$^D;_=VtI*zUoSt2`dcXO`YxmY9^Ika~x_y)Nt(u7|CSF@}ucVuE z_6vpn6zjY9jQ(oQZd{&oHCHk_`tH*B>{XkX@B3x@XM|k8(Xnpp(%T!NW3wMQZ{E4` zU3UHXMLE2twOSDmmzmkG|GMX>)Qu?>OMfrPv7W75cJF$KV)V}FV)NO*C(Go|xqsW? z`0*-+H7m=${@HkRmdKNcL|b*&$+z_HY*;rp=SJw&uowiwYw)5BBSK=qr6{VkC z@)nSH`T0Wlt7}%Z zTDseG@~`UD)n%7L&8MtCv{zR8zvZU$&YO1z*E<)u&i@&by?y4))+D8+%!H zUFrJMTPMrTeqDUE_G$hh*$c1UyIrxoJK?SPZ2vPxMpy4=uW7uU!?z)J&CjZ^b-~+S zUHii}^StfLFW<91BrK2q%UkAKp#Ed}?G1mmttFmIB=d%)uUWZ&yBU8Cqi_B8O+p>p z)~|ejbM3YXcS@wMf6mRFY4)aV*<9P3zY-?hzP9!AvU%F^o2$>hUr=%SR@47GzyGMs z$~pTXt9bp_KW0DI?%Mu!&sDM3$+@%cFMRcGM?hTGs{7^Mw(Bo%SDznXWO|Labh|~l z^xaeU%ZG}I3}E+yL7$prQEF3S)W7A zZm4`p5$ktts>?k%uc>A4hU>RMgwqWMd$ zW_>@<-Cop@BbatDpf>8fXv9bPcB&b-tteR`-k z_#CTD_`##C#^;v4RLEUNhWgj}vtqVb zUUk`?*d1N6{$HNuvv_5J568ZV<{fR@&z-yOq0E<^T*tScz56>sF5Ad_w%*IVw_+ym z+1X;b?CMpWylJN8}Jz2wra?7r6P9M`$F>q+kojNQFT z_tFjBGtq0-?mGL&*X%)du42XPpzLDH~n7BdXf2@VBSjq+l&6}x%XuK{X@?F%VS@AR#n%AziYYv zv-{`2xA|pzFP#)~e4Sr^^e^k{`)?oI*W8p_Yo5R~akEMJ7qk4th5M_-Ki&N?`{Vyw z({HZ#Uw?Y={bpap&8MN-N*`liKMOoB^eTJD*}GZQjS_z6y>WS%xGR5EukPH~BPT07 zPjBCK^vILwO(AzB7ulXqnRGUJ|E$_xk?Hx3@3!+?7154AF0(YPU{mv%rT^-Ca~b%* zgjOBreRCv=`^@%~MR6uWJUTSX^TSEqZLooKl(^{aYfyOq4_bElG`{Ns(ACGIxW zcuzZOedj*ku9!{$LSOj=m)?)k@iTqTN?JWIb;?D+6!^(&i=*VZ{H-QW98 zA!b5BRaQ=Yw^ypOPUqqeXPll#2%SFHdhbvQ|E}3N{Fc>kro8dKw!murF4JV~qNU}Z z?bNc~R~&ZU5zw-F->v(vt&$nP#Q*=Ae5ve#ga7-l%hF#jQF&CL5K{l+*4@`JZ$7@7 ztIG3L`dh+Wp1PnrZxRnXz5RaHZoa~vZIh4RxtaKLpYG&~x%@e?JKmZ2-g)%!`(OY6 z-|zdW|5i6XyT^B?g=gQK`OC8mci&BZe15;8jCB3cAGfXk*ZmKlbL)rw|G(yU*4*L# zt0vgJ=vIV;x0gNZ%x-4AJ+IX7mTuDTcPjb(Z*7id{>C#$)yf&)%kzdG7j&_IA@_pm z?om0F-4pHR{f^ra|5agS+e^I*Z)b5bteJdt>hDbg9|X!`g(Pm9Pw$P`oy9oEG2hU? zFnvLAx#ZR7=l1b6SMr_NerLt*8i&7}dCPxa-I()D9<(OaL zPq+TS?LE7Gum33Lr}jxQJ78b_cDdqbq8guWZ_Zt3eJ1*Z+sVqQ-u#vFkrKr#OFUNv z7C(8Gy@XqS-H*U>HY=THY>xGt=g8Pebz84l-S*~!oUmrf?poV#-=~&7*taau@Vk|M z|F&t>r+yX|=5xw8w^yEy$XZf;GQR!aIjLtWCw$es&%$)IU1`RZ?uKU0y`UG_B5{hT6InmK(UiO|W*-^Ql(g?=1(SFnJ$!$z9MmIXHu-}+xOEryIWRu zUbgw0ww?L@KY6{fL%F-I@6s^b61!JygNB#E<(xN#R#x-Mbq#iEAD-8Gw8OS{Rq=+s zbLZ;iSS(L#h56qqZ^O$-Gvu@rm z$DAX3ytLy^Ry_T>biYm)GkPp{<9?B{^c^OhtsCe5`f8F; zd{JO#zTw1#{^O7L9E>qpbiSrO$8c9<_L8pY6>?WE-+W=9(*AU}$HiH$ueUdPt^9M% zH#G0yzO=7vFV(Mpdh1wTvdxD_Nj9ghKRGsI`l$)?@`~K=rm$DNTKhAq&|US){J6Zm zmrj|kyLMpOBR0Q%&bESw)(hQAKA9ZH)0;H8{oJ=z*;5(elnu?ypS6FR9sm zFEq@eX4lnyogv&d`OAl6y~`6?eo8%@6{;q>u9Ig`#itinv;S+!twQH-dprbLl-+f@-i5x84!bt(miE&%H6O~O)@*u{ z>^jtxfRrF3nrK^9>%hTzcQ~ zV#N&g7h%_DdK?!&@Kdq5Z%y$gnWfS{*%*0jzIcVZ{;A$)+^xg@+`9J3>rU9XB$zh|D|5_x1B`&;?DeB>nG*r*q3q>3P9^tcG!8 z>YSHuYdy>EKH3%C9j{s>vpVBs_w1c7ocn9n^sGBn)&Kd*>laxMip4iwk9z$sDzk>= zrQa9R)R~WaZ{5wW*>%o#$FcLWQK8vS7u|aC{A_+r=doveSKitlW500s=81i^8Ts4g zH5zmJ7RcBhP?4J~wwUuo+>`w&_neF_GVGo|U1z53xf#wsObwpxem?c+(Uq&-vz4v7 zvLLv8C)?B6>gRn=>3%$Fp8qqZLALIyq-pxCQuW=r%a5&{9`sN>b?r}vJo_V8XT4@C zx>1lTyghVs*R>4V{WpU$?BDKx{A!i`e(wCaTRcuI^5|VD zT+WznXn%iKY+%trew*-s#AjF27Im$aOJa#`Q2M?*euKNoOPk7|8}|$y{UeW-IIjyZ zKe(uKp?{6U%(UXk4tFhU=g&$A)=9a$SxH>&Pu#)IwCiji70i}#bnZ`UsL15Jey4Q1 zce414wiJmNf#_b|BD1pdl}-$0d$-J=l@}p>LFnkYtX=QBpUo<{#LK#z@%OpE3Ue-B zT~X8g%`ZD~t?GoxXB|6h9q#f}mF(O4Jo;vq?tAg-4M#WV#w@;Y%eh4TN|e4a$1)$b z*wQ^q+1Ik3Ur?j|!fglZ`83^~O8(+yF{-Oq?tA87=G8k-OW^#H$#Z?oKi%D{Dm`0J z-*MN$H0SL;%~Nk%R59Io$+T^yUSR3E&Rv}D3!=~L5077c=)Gv~jL#9Nd_9&|GUbkK zj5!(~ko#^`x6(7A$|W3CyYmG6|1{S1@r(b8+0^m&b|T`Vuw zEoZKG-soMtxyJZzhV7=e>5SHgZ$^CM4qL+bCa6o~#k@Qj51~HcraL!0PfTO^wr-A# zj^nPSA$QG>Ofo!Pof_}+ovGk@ZPU96GmP)wpOG){)_0lg9J%66lb3k8r96>3EVkkE z0k^dmpB=riA@J?4@~c+<`&&1>RlK09EG=_AmWTVU-NM8Ejz86;cTKM7Z=7Up?H#IH z?sxyuC*7krugulj{rvYaYZk+Y6V93@&UqJ8?Q=lvO6B)yzo(Yk-Fc$u{&oBBTP9be z_DTPa_Dq|6bmLNkXX~VoeLQeYr+ItA?#Jcx4R_^Vm|LpvcII97gC+d_p~vPJOK|OH zz4mjR`6lD!b5XZnM_l4NX?~ZdvZOy#{&>+_!_0ll{?7VuR=tbu>1@ONUGKk4d-wdo zy@gS{_r!D)f3n>!4NqKC{Bmnqc4^)F(s|CdrHkH)6)))h%XjzZv_Bb6Uq5d!6nXh= zqe^#D^E;NR%Xg1WI&AqN!*k59QHB?yF^w{})+xxjY_eU%#-?aR5+tiG|%Aq@c9{Q5UZC*3!U|nfo z$oqdPTHFa=w`SQnf46z~Ja^Ze$+d^u=LHnyY+bN=;%2XPcXHOR-FW@jwa}CMd}jH1 z7CpLnnBiM*_%)ra_qJ?&?zo+AmvG7D+eszyD|c^vzWJHxo3)#sXWrjn*Phq%aQ%-tm8JYfbJhFX>L&y#L^` zcSqx1Z2W0>fBHM!V{Y}wE4X#GZk+$)R@b+rGn>QwLzmcWIJfos&f_&Q-entJuFPc< zES{Q{SYI!7d>faszpZu@PrifFvjxYW{*EsDRwH+lt1PST-m!pbvyN40W#@V&_m}#I zzDRRB;n!&U?D2Pr&wm%)ev$oWx$U!;aze#BH=eWazklxD%H6)VR{YKr z9@|ZVUykf_&gu8Pb?p7;2PYws!Tl%30e^1Eox5mBp? z^ZMp_<=^}q%CuMY{tMk(wYjpN&l+wyK4+`g)9h{s^BpHs=JR&ki%Vbf*T#SKc~R%z zvv;ZLpL1KecGYX1Z@cD}SI@8Wxt-?dAaiMoO7@*Qji0x^TRHpQ^;Ok}x18Mx~y37E466$vVO~1d^x{^O7nkkKm6V?LtT!sKIQe6>a{n+SAVWF`&Khgbl3M4 zHR*GBZI9Ii?lFG$CHRZ^XItfGx9cWPI`nGJo72mqyeGfgdi>12Re7)LHZ1eEXZ~HaNo7OkvK6fUcykl$H zXzO})R)6wO?z_T=;$PRytFAvUHTV7E`J0dHo%;98Vp*;ZXQH&sPrD7}>HEKboSoDA z*6@A4WyR@KiT&ZTK<}>fE z;DoggxdLs^%(Sa|Q!7=avu*#$cZU0G&TaSW%&F2kzH!1%=W8}+W&-bpZF#q-Iar?pR^4|`)+b=7*e))CxB3Chux*Zj7 zKF{BDW@fSbn%?|fN|K88o5H58DNincaBqE%l%Cou&lxB06)X#6sBT&mzaZ)$G2(Y~B5C{>_~%NB{VhweufUyUI}Z zwZ^>6W#8vXqElH^;&<0wpKR-q|E51mJEc7)aZ)$eXI_(=aoKV|pH6tcTWz@0g@*V}8V=YFs8?))H@HaTJ6KK@d@&>w%5?+cyJTQu`s*FOHO zYFWP5Zc1nAt~lQEv+Uc!>ql%$zf2Q~e(tlis`Goz>4WE!e@QFKm)h^)eLTbOv-`e> z&xPi`Z=U~occBdT=i*Jl*Wczl^#8qk^WT>(Xoxnx0f>4+Fz-hl2`a`!L{#)K2O;CteX4VG*$C$#cXf-9(K1E zIM_Xw@Kdv1bMEf-KUYoXR~&ETIzB7I>UGQ0i&ISh|9$EjxbAysxbBmWmk;mqoQRUw=1vhzpCuDEpUCsV|m9%&k9r)Zc0z~=GlGcfZsVaEAuV>2}?HS zPpv&|*%WJZ;09vH9Gl*(^FnpsyzEX?Y+^4*=4CGYEz$WW&5TgIC)vfriQ<3i%ch;w(`IA zd2UI{@u$^^Yh{z~U0ie6)-rm+dxg7a%J&-vXT5zp?Hpt4V=1*)+a=8S_Me`S|7myL zcd=LdOyhUobGpHO<4ef58EFTkr4wpGzl&XqD(SbZ{$iSV=lz<`PyXs!>fHbG`A7)= zuABEOr2p1*eY(Q>_ixyqb3Y|YFGt!Pwb3v9Iqk`={yM*>KMzJ1@kt%uwOlCrr-Sgj zYv=xjRlU;9;`w`F?yh&%jn4gVXE~J?%LH#Sm3=)Yqi%Kc@@GQF<@Ovs;=GruvtieK z^$n5Fg$&CVET6<$ru`)@J9Ie z`^VY))C7}X$nJZ#b(&@3k}}zzrx)%A7B7oVtv>THVQt}yvYQogS@&k=aefjjyt}4& znpDg0QyJma?}9&nHvVg~<{V>g&ey2q;`whFzoj0URuFb~*`_^vG(HJ$-1x73Uhz7H zd#(J>JytK^x!o&v+oG%euLh&~vrqkrtIzeW?d4sgF~@yVjH{Qf!=|s(rh9z*xkCC) z$QQnwe?WTYu)tbWwl$q`fF0+cM>x%CWcu zCJzF#1$?(XiJHh6vMKpf@A1!3#dlBWC;NTd`o!XH&(E3{hLd}unCEPD+uVC%`xVoP z`wlMK{ccT_MhH5qXxop$jrjsG2z?YThOHteS9vq{XK_MQlM{^tF}Uib9h z7YmQr>^gV;)vn_;*>WYvH!l5I>6yH*^vd18HrcO|PwKL+-LEe1{pCR1k&raQhxd{f zOwZ=L^tW|+mb5dkSA4aM^TZ~JZ3{oer)_v@P<~>CY2W?RvHtH?3MOkD-{`+@+VPLS zua(|Td$Z!-Ir%sGS-F!ASxt}1eq;EG@72b{eQd9;m(DxsH^XdOO?>>dy$!LY_Op#0 z&Hv}{-H`t)`!GA@x5Te2*Oxro-JdLE+@`nvOUgQrlU3$LZF%XJuPgnjnYi3A{+0xn z#gX50H18J8SnhX!n*MP^onW4fn0x0-^9}i>yl1@6U-r9ZUfTYED>vU|dmH_%I(V|> z+bvVwMf&<(3)s0YCN-Vg9C$NJdc8Tj*G}W;zkF|>W-p##{Z2PQn)AXrJMG=EN*9M7yb)7&s<-4?&q_u z+nRYR7@`wbrEFeVz0dvI;ymT~O(ptr#n;bXvEOjMdcA3HlK#$DVNABq+|BNN>;HGJ zlt1}$@cfryFZ$M-PCc4j_hswEwawd)e3f`T=S@x7H^paj=bH5J-Yq)u{lW9N=a*e2 zJ|EcV!gjZor&g+XTSUOz>5G@2yZqyz4*re=a+>y0*vq7;B8t3l-+)?%T}1UAcL? zYTJW|33+YjzAJp2t=4Rxc%IpM{@dg^UZTr>=Q4@jX)V~$_og^~y2Ur?dy-$6f6vI* zY}~c=S@dP~yW;8myS7J|eO_zdTe;r!n9cJwiKTouQ|#Ao{d}zEzEky^*HOD=vVG6X zeSRtzmfd3+cRoA!_PI@NuhZ7ncK!UL`Rud%KJS$J{&~M9&&Yp%GkfikYddw^s8^Qg%s{1`kp@ZuYnUt~Z1`NQ_wtUHTtyfOU#`T4$Ma-V0gSHAl9EV=XFnseLF zCdV~p`+h$EJbTB7x@&gnUGm54*4_U6_xLr-(#f^luQzrd|1)!W-@a+*uFP#to>zD7 zUGWnc+kD0FOEcat&a*xL_Ef`{Pm46XC#p)ffB5rL%IN;w%;*0K4j!A_6K8L+z2UFh zR`;?;>0))8gl{&uZ;bu^>EO5g6LKZzkL}alwC7wKLu83k+xK7gn>60Wkk$)>s0|7YzL=R8;b&QSfA;{7$I_qN~qG&gs8e5yX%`5oO} zRbwc!k@%&BtqupTvK?(N)9#r%{C^zsK@K{gk|xn1#OsvTw|Lc`oBU$F?tW zhm-gG`&GBXH1*8%j(_VE*XKlizvR94_s;J(X1>YQvOIKM?EU*MFP_JKH@tt_^#I?= z^6%43zRh@j&HCou;QQVuB7)>f^nV5Wzun4q_hTvF19ksU`Qtyl|9JSHJsp1U(~;oG z)meJpE$c;J8ZLjQ`0m`j$Ju9Z^86^|@s0n!on<5Mi(Q|?OZD0YgDv)@g)9Q^d#cX4soRKvUXH?8tXfB&fPSHY*%Dw~&` zImmXsf2vGDs;}+s@GTp^9{A_cXtP25fa(<6SI?fY-7d*aer(TmVePjG=DNq!X1)1l zrJ8!?{gz)3X6P?#*fqEI%yy~j9?KIyOTRTmRa-yXeK2u!9P59|-B|hf;jlO=rYTLIN@}KTLHUAdz{L`j)u1lt* z-`n(CPv)j#>AaJA@z-W)%iEZ4xF%q8o%dCA`s{Zfk2M=rc*il-_BclK?0Y4Po3@JY8tViP&yC$}cQa5O(S_ipyunA4~4C3S9I{{4Hgf9c)5*YXtW;-=-V z+3Gy^{i{?zn{7KjO6PKYd+_|Y;g;_+cD#G>&+gcrQfG_OeAZEK#*$>#v#*VwxL2nj`+THm?wmns)u>pZ{FReb-+Z&NtgM*7=~d z*FM{B@KlRdQhOo#cjEi0KkvzvzOP!bb#}-@!>!ML&a0REyhQy~oXYVH;xq4YB}m_R z9gw{^@08qUS;1o6{1sc9-`z{rYS}JlT(ormIWb+YyZ4gMf3|(qw_>X*=j%I3d?nZS zn%-^Tf0y?n>XlSbc8_KCnGfr#m*z2l?Kpnz)^^p!=c?=Nznj`_t>Hc|)O*6br1@-( ze07fJ%#`c3!W)|Z#I!}-mMeX|@!AnB-DB7H>8?G;yKPO-c7Y*~%Y#|1P`#=dno|4ZJ&E z+Lij7-Vyfqm7jO2HKSoZcXn^G#trtnl@iB|TBI%A%I8gZ|2U@5y5jWG^Rh*2mfQ7O zwtoK^btYzFPQT@^-#_Pc?lP5>=9N37ck=h`8+Oxpb{!8=mVPl~XVUJ1ynoA&<*)xd zV}|#sE4CB&PRf1ae5PE_)0n^EbawZmIjUU zciW`3%)eu98sAv)=jP4bMcrxs{x`17UG=1U-V4u-Iel^|i{C`N6)V2J_T)`Z?~*gt z)r;S)d>vOYeM!9R=f&^hvV*VIPFHRDYxc@+!+Ci_|Gc~#m%88l;eTCo=KG|`?1#2x zSN49j3cr3*s*%^rseS zJ{4N;z2$|@qEE{k_xZ|wJ{Y~|*YD1Ek7EQm=ZE}X@lkr- zs;Rn}Gv@0@Ju3a5^XFZ0`xowKC(b|fN%>uqo4zkTQbbjT_pF6q$&Eh=GZ%)>z0O&9 zVNrVZ{N-~h?H-=~o_F?W)4cjac8_`QroFj(Bb_b&`}LcfQZCP(zuA1#%Ia;l7lUN; zsycP|oJ*?weLDE=xqZ%GJ4Bx4rEB z|EqhK=$qy9UL~KDDE|KW%jxX5f!nLQQ}(j|__@9QL3Z%^;wtag8+Vnje>Kh3qTJ%h zotv}gS>}I?Dz>+G?Mc3D|4`SeZ(-rzv!8AHcJ&*U=U?P0`C(D^Wt#7Dxz8K-*Z;Md zn%sH*`ni<-b^M`cuip4)Uzt8x<@j2ahuf3qDk|lB>Yd2$n9Y^L#6I)t3k&DS*BqDm z+)XBQW>qIK&NNNdUuxEM*QoC4$HxptjVVme%b)Sh{JiyR@zIOXZBfFDKg@IuJjikE z!lzpiaV_`1%~uJ_-Cwuy#hmu-&*jff{QI@|Tko6oRsX+=cCOF)zy7DL>;GxFzTe|p z*J_A--Jf1sU6t;gc>DRAxbNY?&x2p6?)vJ!{`WV@>gx2zf0x;mwaw5^>EHFf`fmNz zsMCvH869VUUI)xW*L ze_`)@?Na;w8jH5=n)+P3Iq$}X9XI83YERW~{^1by@BDwmi%+tQKZk5u_`>#~!@l?* zrZ?`I9ZirnV`$K|E3aA0{k+fi)wbVp+$(>l?h3Vu-nX{n=XQRxl6u*se`P(E+ckc> ztj&DAvEyf7Z2P6(6W*^`l%3UUczo^0Wz}ys+TDMolvP>TzwzAnt!~rb-n?wsKcW8i zw^F-Ta-Vpswz=Ah8S-zFE4>`;R33D`c&pow^Re~+v;LlCUYWda=cn?^u62HQ7cakO z*Sk|aR=W6_)Xgil8~(3&v&8OXTKCuFllCt*uCZy`TcML!-~Mjl@k7x(^Rm2u|F%xL z*MGmIyzbtw+c9F-r1qwMxYG7bs@Q6k|M5S&bK5sQS>I^;W9Q+(%Uu4lS#J->W&6%i zf4=PXpO14^R-Rt*+rRL}&UKQ zU(HWgefIl}+6ZZ$$KPvbY@bneO)~$Y;{E&WQPno?-*na`*zeQ`@}70@xs=YfCwUY8 zUj5L$aB@iO+06BYncx2V%}P~zQkjt7+N-}|@2ldwivW4qB@mPO)n|wz3zMS;$Hv%OeO}>Zm7H&A&KEr(5 z)Z6Wg^Gd_#N*>QUd0C=(lVox8n@PFq)-}fhb29brKV$nQQG9JS(}HDIFWfF%zasU{ zc;fcUyxTS%&#S&0rIo1kY(=Pabx*0>F4O+Eyk%PUvo~B(ik7eFZv5MxD$c=QvD~_P z+LK*tj_-SS!y>-%fZDHH8_!)-nYBF2SN_$%jk&RFIaB0stkT%F=S1+z>Ngutd_Q>p zbjZg!GmP)AJ83WLJ*jF|Ds#1j^Xu!+ZI2ywoOk8#jpzpj7v?Tqz4hIr03*R-;r}^* zwk6j)|Jbgo{#5v?%Z8s zbie=ApX@8Mw3V_yOe@^i#y9ulw4{~aK3k-B{oHAxdnA5VRq2~2rLOK%I8WOMFxKVx6w?UvuX zX6B*8SJeBxzWv;m<6D0AyZr3phH&3UUU#>z;P_n~RKDTlhuXD)<(wTAmup{V<#y@z zSUS~R$X$9aF#W`~Y{%VY^Xg`=DmL_=bnm9&Dw!LPmT{eR;}-3&$-n&5O>gDwYnCs* z1-0I6IV!fRabDW&%9nMK817qk8*rO?R+`(IL6)zh@I`HeIWU&ra^Ycvb1y-i<#O z&CtH7GWl<_>WRiR*LiQouc&5>W|aS=D{uR3Wo1_Si^;o88|TU$o%30kec!d6je9fx z_;q}{czs*!+L=*~(NAU{H9Omuv#EU3d%SoGxE^jjbAQ=Q50z5qpyu*@VtIb{ z?7zIv$lBapmLyj*rGxBtFiaY@_@wVM4ab33vwbQ(PhuOI(OM8XIpqnd+*wLIOWXUFB{AxjvJmk zzxv(Yf}Lm2&Q!YJf5Y#t*1hvHZ%xfVuiMqsbo<1*Y5DIZYSX9OTDP#@jxF>Ob6}{r>hxhTCqM{8qn_<+@|S-g1GKd09uh-bGFS zE}9b}GU=SX*~B}yW^C{6uJMmra@(Z(_l4N$)qMSyY_j)tj-7g7a(8tSUkPuH(f#8# z$tN;*O?|qfZ!Yh%NUO8SOL$)HT<1D@(UYh%+kei;pEfad-WAP+^=~wa)0lJ09_j8X z=zZ6c@crk#rnP&*pEAPTlQkgT=O!Y6#}z9J?#?FIlVpVWZ5di@3zrr zZL?d`-zM!l`#pk1WY!&r`y1~r*c!2F=Lh@LzU#1_%g&81YiFI7$}iNu z6q&v3%3UG3(sxI%=XwA6Be&~j${JI1+b`Qwx8JGqiFp3q(k%7*jOM%km*4MR=`0xM z7TvS;^q$sTmdZtM^VHd67T!?3+Ng4T-?m)GGm2a<0=B1b{5U3z!<9F@6r z;@z3ai%T14%kyQW}!}g1IN5gI{`?f1^@3b3-_;2$0GupPVUH{Q^ znQ_+H)Dz|RljXjr%}Xqf*|6^1;ozOS(l5B*d~_(VM(=*k;@JL$H(u4nUq5c>KWEdX zPX>mlmt_J{0^Q`&-UF zeU|L1^b+~cy&+;(UFSJox0t4q?$!|}UYy*&weSr4HqI@Ve}f1I=V)zIr~JXS;l}_T#wnX&sp-`<5>+(=pqY>%Oh3 z(Emed%t}-r_R+Pnh!4lt6whB}dfDmD`qIOflbhS$m`x9~(5_XwACi9m*o@iJ zQZ}95`EyBs0DOb~0?cBUI?0Jy* zOaJG$)Dy^JLoVwk4YJuWtk%pXB}aava0`=h2tfo)iB&Gpaf}U*lI< zigK@*;Ca9Nn;R>O4Q+pZn-TU*_gVCICjl1`{`l56c27($TTNS{{&&u<_L|4r6JK2V ze#7>|nyruOyZ^>y>MW2iF@Etw_j+(ru`OHKr{?vRCejzKthIg^_1@2ytZ)ux|c2QB=)zi=y8Ehpm-sH7 zQ{Qd9dSj=r-dVBUy5_9lte+o$D_G|}5@$KSk?r{LZcSFJv!!V~e~;C?XBX}^G)dCi zo!MPHS@2EFyar;bhw%+1vA^ zz1{9!*}8whWP8KAumAZ~ab7c#&Xm2mbmkOq*0j6dy^~IwE&QF{yVI`2^49eawdby1 zUGv$z?ADENSI@=5Db zj^+BDu!|}Fd2icVJ!iLVjc+<_CDz?bZDkjH_FAUZhUF#&^eVRVy z-`MWo(q)*N@crJV@N<1;;R}Ahd}aIK#h%K$Su=N)?-OI4;h4z5$0sQYS3|75S3a^4fpP2`=a^;V9du3D!fy_9`6cjNJG(_(f6 zH5_rS|9tT1q<_;k?%%oNdQQwQ({HuEXIP&oIn!O)^P%Nd+QzreaW^GepOtD~zukXq zqu8g#>r?$dZ(a5?u)FfklkO!pA3~-FKU+CRhDrB|?S{}zYhP?U^euUAcWqDdI$5il z+^T)YzD+HR75XXntm{hc=OtJEe!2bpQNE#kx#fdJanld2({JWWo@;&d>gK8El^i9{ zOg(I2E^20We2!>N@c~vTdE0+WufDM8Sf8L?uX9JTc%#qum)9SyF3~>zIQc}Y;dz~( zYp&gY9xYj%A(y=FT=^4;8^_z->isv)uHHQ7c+TqU(f;Rz`BU^S)EaBCS9etI-k-4Y zgx;!B(b)-`HuEV?&$}HlXEpc3)t}a~&a1h=J8RdbGryC&4jAA6Y`ZML;@RxaTP@PB zo}Y64r&KDxW4cSslzClW-p`NF{d^_RJj;h+`g9@iwt2UH?_= zU5@2}y8&5yX2#!+)~cCzmo?l$?h|jE*@mk(lLND}ON0+jbYag=?A~hCKe^|7Xz96{ z{$;E7Y+RXJykl*jhjQUTz9Wkzmh1KUX`RbX%Tn! z+V;)sju0Sjj-B*A_RQlOuQ%>L`1HI*r`)q_?rNW7O8q;N`W|omYhkukw!^(fcrTSESvS**56r~jtxnJt$SdB)Fh36J>agA>>JF5A9z*Ut&% z6&z6~I1ky%i7z|)rYPA{{>f}vhUBFOpF|aL-;4}862tHNZraIr{)su;8vd%@*eE5N zm+|?mc#Od0y)?C%x67Js5#a*gOSdi){BoGr=g{rIz;#E(f8AOz`$e9<;s@95 zkHqUXJe{|S*Y{x$`<{C><|l7l+qm;d;pO(9=Y-z&)`wlQJozwt?-z+&_*|AGIhf zOcmZDdHGRPvd_Z8HKwOa7Y3X?T3WdFV{Odh^@{r!9DBp~;c1;;sPY`)@;=kj$Y&|* z-x{vEWcQ4rNIdax!KGsxf4T;G?}~nNq2%uMDqr?DYx9ImH%yPo_pQBs+W6i7XCZUr zPv1;%vUq%J<4z^jsr>ylhO?iSGFWYpJ#r%`eE#A!N$!)CA5P3yul_D1*^qrAbz@#3 z^Q{}tm8DlUlrh$9%`2P4^6TEGUcK}SKi8j(GJ9EhqWp`*{Lbqe-Q81XtKMkd-XO;s_-SvH`Im#&+iGSr=WN<@uKBH6 zOk4l1n~9x!-#*$dT%x|H{a{NnhtN5>=(V%cd@WA)&Yg1Yvtg@6qRz=Xo6LUfJf6*1 zIVZn#uJ-Fch5HV=X%;C>yxxD`=X*ug*`POfQ)a*XW#w-5_oI;FyUiKCJ6>|`GA(~o zy<2(W3RQZKtx7 z-CTIC@`-E38|Fs)!_i%ZPY)YA_|5xSuq970cGi38r$=WlRNEchy4tg}YwWX&I@^rrFZ*iQV%lWnBaRmRP%+!nJ<)d4&tI%H!RIf>mOoi$ zJG+xD`uwG{NBzy`+&!6gVP}oU@|SG;YAUZpNgu29xcf!MtTp@Hwluee^?QCi)VZs$ z`1pZubGLR?%CKAL-ZwEjw!OW2@8!++f^YxzUA^_1WR(hYPRNnUy1EJ%$(%alxi^#V z+;-)x!?`B~_oUDl;|{i$0(!bF=K$+sx8`AA@?;=42euT`2g(q|7Yo*z?JAtd?x9 z(G}fhvq5a>%3GDi>{o(JX1;%x9rOJ&-wDkekxk2*?AD!L67bMg?fF;pfktgaTxj7-{gD*N|AUXQm5S2?fx{npz1=HNTABhQ|1 z_^qDwh^dcl_uD&mlY6HeyEwVh`TEB-0Rb+h}H_!)f<|G0JM^G(U$MbrbUpBAZEALq)b@i(ddZ?jGM z&Xf%64LfmS=2Uv-iz9p7SZYOZa!s-Sm61x_V!-;7uKd{`Onv zQi}T)Z9JZ7v%MA7H^nQ!Vm zPrQ8HYN-C}_%*qQb8YL6&-{E?NOASk&9$m%W;-%v!?hf=}S3B*E7!)ebN0|X4UVc!=-|^uWH6;_bxwEp)POJ^wr#K`3 zy2)OvXB+iC|N6E@`)1*phON`yEUIZ=yZUJS@}kInvsWMQoc;R7_O-hH6>gu3?oOJR zy2@;K+udckg<99%{*n`Bzy7qS?9)40?X2m~q8HytQmv7_oxHhsx%SP%ZQk9lem$$- zz2V%#o$uP-|NHjfw`=LTX_ixV#Jtr#Q+|6=^;-+K@WSldr`F9~fADO)LEq6io^ccM z|NnT+KL5kkdSCOXJv)|1&6z*{y@ib2w`+VNKTY3kzq`8nt89MJ*1T`qt}!c!Z!CX) zU7&2^>5}UUmM7)MXvUm5CJ~kEtJiIL@lBCNdVg%(^LcZacgCG6W4mi&^Y@Y!`^~cz zj~?9m$2MtSS?#{bvp3w)OSfjxUalYBuNpJ0Qp<4q>S`X{unjL?S%ouC&fLG}+5>Ho zd4H0&)$Lj4A+xV+caV8+D|hSZl6u8EQ; z`(~lg|Ejx%>t8D0pT5a*($tFfcidvGdv=6RygOI)#p`w70(L!!KVYVQPe1kek(Kjq zO%{J))|d3t>u&CIwP;`c>vzi@?^n7%?^W~zz5dEQ0bgFpDc=#c{Toy^S$FB_b?MBj z%eF4xH`Q17%(w0=-mrD+Pj2rlJpD}jRm^79{kNiT339)ys%(6B!>3HQ`gNOOrE9(R z{8=;hFF2lLJoDDkH`WU-{58s7I6r>XZn@~>3x8EVhpgN8Rn@Tk>FSMNt&B>I?{is{ z#BbMl#NMGj{r>&~5xTGbuzGHv`EOpm+sf&i-yf{=JR@0J&-%O7@P88H_vdhCcyIH?B?QD*$ z6TKa8oZfYMefod-8QP1E>&1(Fd~|W^^_XpY`~H6Oy8HeAnHm4}f0y;#HWO+stg${M zz!Io(^{3gc?o}^T)*U%Fy&`m<$!qH!xBbKw?jOE!dxO%3De7@vul6+DJ7ImFU-QkY z`R2y6QhJ_PUN)_-Irn9becG*arDx|G=N6ycyzBgC+w7V1KD*Z)dsqL?-c1Pv7WI4# zbOD3N$BR3_VAC;oK`=<|?FT7QQaU9i?+R8k#ni3~tVScdMnq8XZs)(2+-*10X6J6( zpKRTt*mGYTr10d|uVumJvv=Jx_1)}$dEM*SwzqfRo1V|zU(R`b&rQ|1&%SlP=dOrV zowwVs|1AHHJKyeo_PI`d*6vr6*6ln}{O+IR?DJ7}Z=e3$yR9%^ ze_8Rq_rhKvKee*DmAjafw4%7DfWqp(%969+R~P+Z5q8Z;Z90?^e0SI0 zIk%ZZ1QagSZ`nTe`JM2$=c?b?`>Kguzmxy&^R~~k;@^K?R%HKNO;{zO*!7{s_fI+R zR{wn`G;iy<>izOjGk4t4t*YHFl6kA}?8p4w#q*`@irqPmZrorvX|BWViziq9Y3nc3 zzT}$;4m};78FgEejdsPH-!Ey*9KydUsFnTosk6DaSMTICw%z(x;nKnlf3K9y{=Mq1 z<+en%hga;@TFS-TW`0)I{@|9~{r4}|RBq=je5dkz?yEJeD`kVu&Ru7FKRfU3r#)*s zZ+-lGx9*;9=d*8_$DjQ^eKUE<{gYqjPA=fl-*Em@aBdbT3D#a@$QI;^*pz;;s`}gW z8T+J;c`T{8xNA+`t$lxfOSSE+?a5ugQ+S)N-nBb>=jP?{ynJT&!0y}c6<1Gvo^$)| znYTBuU1$EZC;Ecg?AzOA|9`x*<%;o5=`*i=Lqulmzv{IBY{l6GrP%LRw9gz<`F8tf zcJs@c&EJ1WZ_>@)Up9LM?}IgK?-l>|G5-Fw&fDy_?DKv1-pkk}TRhM^xAXrj{*||; zmwUU-H?-KcSjo;OEh%8W`NfcZ9;+F2K^Y}p@Qb^?y8lOYZ_YK(^%Di8)8B5qP!(%t zms`CzW4}n*<+93aM#Xb~@8NBY+nW1)>$7(2TkroD@7^ z_uu)Erx|=!HuUS)ezE8|^VIkP7G&sO*6jhMko5tE6AP6>)i+#>kMEuT>Z%uC`2Sqd zplM5kqxEm|m!1ChPyX9E`JIKSk)PEnnj0A$7>=oCYhG_I7gKtDK=NJU9O3f;kquY( zGDU1(a&~upV;i|y#8q6^}Oky zb$<1}x%|~H@7O=-mu+f0Pwtp@&+57UQJW(fZ1q!S{@GRHSHi)_Q}6U`v*xd!^FMmd z|5zIEZ?*O8yK{rSnVY!&Q;#v2^jNp!_JqIMS@rDExyzE7U%XlKu0Uwp)m^>)H^0r; z8=7k}G4FSh_}@?OQqCn_s`{UMbx%wEk|KdG%YK*`@x%Z|}GBs^8e3 z`S;$TCy!^Puav`PB&(w1$} zJ}AIqK{HGT4K7C}nE!2EvxnNu3 z7wMbkUw&T5eyCe}E^hbUcMGp`eTw?@``EOf{=1fcje2?Wq4cij7hNpkB-{^4@|UCn*|raj9N-``6<{qn|w(?67VJr~}PI=ihs=f_Om|E3f3R+fG| zb=t6DE@UOI1W-KAd7`C89&W%StIH0I6N zbT9qJ_y3(a-)?by`x2Kt|G(Y(m-j>SONGmRNf+16%AI;?|LyFzEN`YydMat$k|!tq z*C_Rg58LGf414dI%=f(r4w7T~EuL5J?Y~_APHKnd{cV9KZcpa;FR?hGVftV7n|t<} z-qyNshHw43Y27n!{=Bo9-P$+!Wt*$a+k$-^hs;a-k8kVFcvmw0;n~vPRl?R5N84_1 zI9vVZf6V%o53c;Om5hG3=epYl^{=z`8vg!fX@53MNbP%+ROy@Fw_iRpIQ1g!#!R1@ zMJt{LX{WZy>CrVZa&Lf z^8U4?;@^_sZS0?(TsZyUkg~u@8=mJU-#xK^I?r~_x`$i8CBM1(Cc@J8+xDdDquamE zGJF&wk^FCe(&4-RUibvwdNKRewp5|FcgnbSzIq-Q(|GN#=&K^FvL9m6zQ@{JCyIE^ zQ&0TCCjIXGhPN4IaUz_q7V2hm6868^mj7Z~@=fb2bEkKw#O+!7+wJSUJpVfWp$-$J$e{RQv#^t(rvrCzhOtp3TW zIqz)$?5BIuW<6h@wY|i0w~kZK4w*W+pe0G3Ic&n`55K;;P6$cbS-4$E*>& zvN7`W+C6DU4(lZ zWg}Pu{$Ji$dc)|%euH1NWz~Ii_a4r(`90zFPx++jZ&%KV>f96|8mE5~U`Y+#J=d@NzGA@kd zzxgG?_w2t{6SjEx{PX@0Toc!MHeSg%htJ}gcar|xd;9bkn(r_%t^T)PW|FG@PTfDJ zyjP#RIm_$yPKmwOrv;a})I}UT$yM`#NjK2vv|OG&N1ndK`PoP9d%xa4Ys3FIC2r5z zZv}3~f0*u05LsvG5j`Q{VO_+lpL|tib9n!;oj#v+XJ2!A`Y+zH%KEOetE~UA->9rR zb>nF4v{cuL3-ch#Xs8Gb5p%o&g`s%`QyJYiW;v^nzCnF zO8&<3xbLcO9?7mxeS5O%{Ncq_<%TDIER9p%7W)30wWmK{_VoVj{B`%;lfC)BYyW&2 zr)>7~&)+%A*j+`RNs&1B>H<<--Ve=d+qf9k(0ory)g?&zC$j;{No&MCj+v)R2)T+#hq zai4L`h3f08eU7-@%slRQGO7BL)I{0pVCA2uLv~G^bZ+Kc#n~yF&u2e3+jQ&t%`3j0 z6D%U zaa@AM=Ho68%@)lxa}>~6%1~!@Bh=xzp0H9-$*;REANh9Iw9hTi5oP&rpnh|wP0II@ z1OB^NZhU_8<;pkf?oTGCxl;D8y}emBVh3l-REa&Izb&k5KTbSSS$1Gs(7xr-R-4On z#QZZ1*WF8Xd9x>3x>D=;qlohLGWJWR1fSFYBK3OO`{y!^^Uij^`P{wtm}Pyqxv=H) zyq8Yv3-|JFcAWQFiq+Y6_pUqHZZ|)_j#&S@R8&6py_wdz%C!t``(KIed&2N!>&C}X zb!9Q9j|P};{w?^dXuaX>d1=*mUEZwRcQ0+q^;3@L&iCt1dU-(e|AUHo&(ilCd-J`d zcJvLd!hnZvnIAC z?*IEO=h(N&_uKp~h_G($o+)spPhw8#TM6CL|81A2Pv>0p?vO><)y>&y#xvv89r#PS z`*_#Cv9+Hr{BoY)osH>-p5NL0@&5W5pItA-#y=_c)5zkxrCipK@^13FpUknX*Wb?4 z%eZaQ`9VMFvh?|~N9os7)aSi@ainjiZ(?7qU9{h#*~#0!y}6e?_43{&liq*7T&k+D z<=TR~uchLnzVBk|72eU8Xk^CWps^{Dx1l6v(eg50F8kv=&&y|DU#4;N`tIFqelOEX zo95fRj%#%4OZ+Z<(fU?j?)>@k%+-6oCnzot>$RNPQ~I^aXW}%8fBW)k+vYyKm9y=< zf3$Iew8n&3nN8JJ8NSBvy3cJo9Qvwy%xqq9zOLI?Ne9_Ifu5r&yrLOy} zyMMSax1#9Hn_qtq8h+)yd$KW4tTrJ3n(eXdJ$3h=-ZJ?8=Ek92y4Pn1`4zSnzWp7y zcm3?*a}}M*T8EEctNz^l$TK@&!PV}51%uui&5qM$N&>+%&mTN=d_(SsA3N&r?DE+h z(|?V(tZCwt|MPBM6`U2{cr!e|%WR$M%FO?3wq?B8Wu#{C!!tnnYJ|$;HxCnk8hC~a zS!^>bZC%pv;K!PDw_T-Y6n57g*kLEV(?$L6iET&J?wTmhzQgBqjem9fQ;}Vodrie| zS(NpzH&(jtIQ_F{iMyiP?ai^v$`xJLq;GwBQ*`tCRn^mfRu!Ksbn>y}?>-gUG+X%F ztt_K$j(7QDEz6QLUT!{@eQDGAe6J_U9xNw=^hG`7DShL&;c$QkW zWrxH>UwLJEA)}Z#N~Z0zMs2Eh66apG83{Tc9hn7g?Onroaq*3U@AqGQ*qg`jq&wYM zbO&n#-|hVcTt_0z@?ADspC}OZV&+ku+7`ZTO5>%MHg`hby-*cdYh9zgdveH;wdXc| z-TmgxI*rf|U;Z91f78WxBg~@AEl1?tjgGf37wPEc2c6%%`Og*0?i;da_8R-2Kkwfk zEmF5aI__rEl1X`-QNohTH~rc0PUo|I%EMH5*HbxNxe0F=qbtk==G@4!VAn67c2W8D z-o>)h=iEHsfBWskJVpN((;hUvK5M!EK(>apaYtR9@pJA#!T#509beqbS-kg{U3h=Y z`^~$m&8pWX{W|{2w&zae+8Zk$eEePh>fh6!bF%GPeBSiGI``@O-fw@la5gD#ld0-0 zUN`alF4os_@3)?*d@FeKc7n7*^#7RrOS*fnf9TvgZOt#G^@6wG$UMxoxks z?7H^;fB5M4;)jYy*(W{izVWc*SfJqS4YdkV^7o#H=XKqAw<4SMgJJRIuDBP?H+$|q zux{SG`aa{kn-X8VuBcwh_&)VUywx|Jhu72DIn0|*?C>Z^`aHjJql?DAyU9%ZV(0EH z-^JRzQj<6B%rVyG(}e6>-zgo5FrHn!&RP8PwQG*y?`!w2|2F0C%M#)4w`yG*-n{Ou z`YCd?BxjnhK+^NXlldOG=i_`2Z(A{2TjtBI%C*J2zURr#KJ+|k?RBYZdCPmuqDA#? zyzAlA-Q~a4`b@cHj$oT><$-ChO*{6PGu|^!G5D|gKus#*_=N}O7fTmTJ?Po^_U4IH zjg2$U_=lZud^2&^ZHsf4bn@pFEbV%{vnnLWbkpgbB4H=lZe^@fz36iB*W;`{-K7@C zr@i0&(?xKeWr6joRgHezr>xI8SK623-yX!>wtseX)k*Q?{7L$k)@01D57?5*Jnbg) zUB0usR+p~ScIpnQ4=F!4x75l$Exp_1?CHL{83A72X@?!mH)}6EJ?+Mt+rG-j&#mxa z-^KoBVcz`W_zx4~x*xq!H=FZGO3NoaP1-P`-_!s~T?d$y@vm0$ZkbN$jc zpO>e9+u62w&gr5F#b2ZrR?m+=oIP8IPdZ`S`JLB$Cw=boH9nrUI`-XGh3@3E)532W zum4)udf{8qde+KGg1?r3-TmeDjSJ6@Y!mOvzQQuyHd^cFsW#!b&FzQ0d8d5d7^nT{ z$<}+7bDCA|zVFeU`lL#D*70el_iS_cCcIf%;>n)xJD+^4c~Pu+?7H<0o1krnU+D2{ z{{1YYdR4T`4*jwTCm!|{2juyjz43PYP30S{=b|#=_)e~n+uGLp=KKym=9mdtg25x6bicS%hl)pbMc*As$Wo!=;RkKc8zQ5UYBYygN%lWZ0W0ROw(w9_+3f}H8 z>VKx_rqtp4WIg|C)wL5o-|=uK#X%cgtw!>78r!K1BJ% zMW^U$zNx);{rB2A(veg6-tAFa|8T3#l7NGO=R`M0f7*Gqb(v(<+X=NZuZ#7~6|~yK zSaG*@?_Vo7_aC70f= zeO7FDE!*z7of$AM~+gsG`?nsJMzLA|4+vUA?+v`1MCoFl2^R7QJO=3d8^k1IVQ|G&AV%EN%yMs;&ZZf zACIp&{qvaWUv0nZsqB5ZR@**D$y!wGQurLms`0$9c46M)o=IEE{W8*`uiXv3UbZW} zyVaUM>!aw+c)5Lv&J|yOSN@n~D#l;K$*=cW!aZ^AX2!OibJ`d0T;C{=y|XOf@%oo9 z*n)W)x?a>wtK!*RTY1y;!jE|`3V-h~^wONr#xJ-ztVOtUe=h&?J5ABQwiq#8?H7@D z&%8Y?GTUsI$EgOr=Rp@1nFZbI?|Dl9r8J;YQC|xvsvKdCjFh)H-47VnUiO2_Wa3Kvvf1o9MK6w8$|D?&ze$|`dq3xZvJ0nJVQ{;Dp=Tm#Ql|Iktn%T~( zUYl}mscL1W#rZ`6tEbs*`g`5BA^XRKL(P@u<^J{?diOEOhCj58d-37UrM*u*KUZZ; z&No{0we#eecMnAQvnQSS^Ru*mPid%rcGAUtAB4)?3%BQNjj=7zkuNB0HC+9@rt^HM z|MWGl!ngf4%V^Q>y!~K*3mD@ zW<_o4iv|4N$nAZyq&U4K*6ftp-KJUhL|>{cobxVpcFSAleep>}-%iBEu859gUEuhT z%iYZUlGfriTdwWUlTMwK=f2*!B<}fE)m8g`ta4oaL@?U(__V2oyTUt4E7i)n)?eW+ z+^hfH@}yc>!2z=qV#hcab1Bc7w?sN!N2WOLvR1{{_ZAEho3HYI{}U0n-R*s+M{uZg zci_!mMF}GB_^OmRFR_}o^Bq0W*R5tURj^}OWBHk>3yL#l)xSQMm)6a`Y5or-X@-X` z-mi}LI9~bKDEI2npYIcHU$pMFzK|Qn(EIqeu3JI~v&QX9Ywd2Y4SXf%;=ed+ocP7-^?k= z-*!88PRqoyU1z7Q>$q=hy_$#Dyu0fn+oEe;jyWH>-Zs+12lxKJTpi zS~>sop5*YY!LjRC-g8P(c=9yva@yrKiHTfOuIzpH-hWQRCcZ&?`f15(z%WJX&zWsjpWW!Fmn-M%07`mzwxw6{6YukxN3tw}Tw0-3h*zxg_ z&X#9eW}m(MeR;#XTX)`xW_YGIFtNWc*Hcmuu1b=p&ax$}`^e=_N1s{FT1=Yc2CBtnCs2Tux=XBYEQL>kAx1bLXY-N~AKec8f(atSu}*YnN#Dp;j_@S$dMY%k*#d zTuZ`Nu6d)sq5S5@#wUBym0NFynQnM@bHy#Kz1=KRV{}|(ijK+d_FK45;d$aBS?khW zy^XQTd*40pyQ|i6Y|i3~yxH&Pv|U~r_c`a1Z_fJJulBCC+V(JueaT##x{247&X;|? zH}yo-*`L#1uN6P{e9;`inZ0>2=X_0XWoO=~)V*u^{r}ZF*7KRKN$b4Tex!S=agsw^ z@?95|cWd74Nn3S#?=-VZmrQ-R7w>szoA6Q8V*SMfO>y2%`>rfH!+hqa{1a14tLL3{ z?Q6FhonU*uwc%B7%sR7knc;t}zRGR-uYa%Fsr|RdcE7v7eB+ce-hY1ORQ5;gH~Yqg z>B76Fy*vQd++?H;(6~-*>i~ zZl2$y#3J8S#2j`_Nj|jqynAcj7Pgfo+%?_nT=z!En7kJQI_V@!Zfloa_>8Q^1`EMAKW*73xDk8uvoKob2aaOHqjjhr?}jC@5~UBco+D? zU*fZEm*>w#@BiI3cfIW(p7`^}-MK3m{!jgOLSZN4&fZgg{as=eha^@T_e9^FR#`NC zs+36RjZ@XSF6EOi?x}P;dqG6B@HA`3yCXA9w<#If9^0gRTyN5!buNdursQSZxju*W zwyock+|C@wH+T73TunaddaZ8?3YpQ;UvMhV&Zgl9!Ng zx_j9!!Z9BLj>qlhoBg_Wed_$rw%2#3&VPU7d4_qjs{2!G$3yyGq&D7mE4RDeRO@$q z%1Vw4N7g2*SKi)uGCMT(pVV%fms=N|kmBv$;yUGRX}$lU4IT#+X7ATe7gTqhap_lU z&XGm$xQq5#f0)%aH{JPspX}}G-V$!_nnQ6b@4c;EKKq(sns{QxbjvbDj?0y2m1aEq zoA+AuM(<@^(M?O!pUckH*v-08w|Z^S<5`mLP0v+Eim>lm+cy8kjLK7$eU|0Nr`_3+ z)}&q0Tf5Fy`d8KY_gu&OPVI6l^LaeW)nfDB^X_i9x2)3*TEKXpEpKn#E!Bsy+`UJ( zX&00(bj>p`_g5GmEzq5;k zFO52qjyuG5cc6BJk#S_H&Nhowl55%KP+N_D|mZSKd98u|;I& z@2kwY0*Sj6Wc+O&YYX)3PP!1#lUslH?8a`T{>QuRH}3j=CVUUQn<{tgTJlZBP2NeD4ZmFb`XGusC7V-syrZ)^GnV zTlJII4~Hig-z$rIU9|50iOT0&HT-UZy#-(b3K;&fdla+}I- zx%Z}Pwtv1A`~I_A_>*GRsLAJ5w|bt-etj<6WbJc>HA}0ye;KVm`eN&w^KEOdmF=o8 zS$x)vA+}}i^##1w9d)yw7hlSCf9-d8iEiw%!nAVL zWyaSoXMSB*a`g<(ox<^Amw)(|<@IalD~J_7e6V%dzU4Kizv`|wdH(FT)|;uVr;lbA zCgtyUe;Mud#9H$38jo=>~(Qg)6Tdzq}JbT9M*`Z)juULzZ5y_^L-^y40e%toVsn@He;Cl3W(^t%z zqI-DXc|U9llf7{{%j!V-#_FWwN@Dkwr1EClZfs`zZfiX!;d9^KX~&;`yLJ1KYsvk6 z!MP?c-Yty2P?z97tM~EEpc*5a<>!?xt-KT+&MKVzP-#-r`|u$1_DOc$#d?}Ck_$Mw z4rq4Zz1O(rn)EY%-a(MKL7R?dHVcb+kx)M-MgH!_kG~k5?2hG2J z+E=}Mq1U|1vl=JdzU`Oi<7Y1lm!EKhp?Tq#_K$}PZ|8KxzU|;$RpVxwZ7S+{@a4vY z>(V#=CRCr_W$VZIZ_2;f z%J{$a-Mk%p_si0i>l#+yn$g66?Z=jPrFYi|e15y>=dNwncX!IVd_QteZozCH^V$!_ zp{9qk6TJ7e-u>SsJK=rxDwP^@skk#@{xkO+`&sAk_w1Y7(Pewn$_&gMjc3biJ^v8p z9M^pQr<8PUpXrqN8_&=7?b-I`p-IgPDZ_9To3o#8b?vzp^7UUq!g^NSUG*7u>%T^c zoDn8MDKh&i!XNju3x@MDgAMlb<;H$KxJY6FhwS|* zvs)>}%5Q31CmPQEGUL>dfBn^K1E(&jUUJC&Z1?qw=JQ+rs-(vYEkY1JxfaH&d3rDqz1dtYtd$#gc_KWr{y8A5bf?);fREOyI6yZA!MY>jl#a z*ZHr)CS`;cMwhBs`=5EZv&H=U$3yF`9^-vAw(4^0U)d~^n}u5@rSDysy|E(KWqa|>Z&`b_yYl~c2+Z_YzSTY3s^3)N z@u^*_x1OtBpUSJcpt2-7+w`haeo1reFIy4kZ7_eMZL_o+Juz75h@ zA&Lt3y&n1oXqqhy+Rt5QySN!YyF7EoBlM$?n%{O-Ijc= zQS5Y~h|$yN8_&ew{4M%?+8-P*tR7~h*> zcf0-%KVNKRj9&G&;h*leU;DpG-FRQ}Su#=V@KmF?xm-%W;%wG@h zlbgBoQu|w`X6wn`+xJIF*Y8Pi72kjKX{qIOev3CB|M&)XZ&cYK**s7AKL54PzbtF^ z3fx<}X1mBYYo_|gy8OozuN{j%EB(*%h0gBTC->c2eEikUe2u>iN-NlBXNbi=-qZWv z-cCgJKt^Ou9s9T5*8L9UQN1}%8}s5B4`#H3ksmLGQRtbCK|{6=---y?j#=Y6@I%n@Oy{)TztqBT=OHaYB`b1*OK zVsGOr-sX21F58FV+5Zk@ z37=kc$0Xp+`lOzQ`nc~^3HpH|t^GMCj!mjbyx#4c^03HgnxtOy`RcXn8uM;szfY25 z`?f+_`Rcrj`QI1|&ZP5%s6H!Iwfny{&;O;^wuL$3Oy^#0<-ZmnNab^S&8d=-!M)8{>D}9-LCC_PDlQ1 zn7r}trl^o>KUuEN_vQ3*oZq7TXhwnMl~T1^_BRyvv#wvPY|m=*c+axy>DoPFM!!M| zcQNic6E0G^thD|P+f#wcsOJB&`-+%sa;FBXP zl~-yFZKo+unR(;*)UUr%qfUH#6ev}ZpDMXB=YP59aUsL!HPbCW_4&aV{-K7?vt%o57^x}p#4bK?)SZ2hay?a zte@;YdvIIf71?}ynUdgHns0vfTvgjLZ9*w~k~?Q*-TIT)B;T3bdd|02xA)b5i#xN$ z3@r9LPrg}DZ1z?sZtsFw8Xpes{P^29YtiPCm-k2L&6*^8%((dNmWMAdzj-BlTU}_-y>Rv(`_1Q0uhMyDarCZV_3@nS)D6pPvfmzBQN8e1 zUd$>@L;ua6_fDx{f4;0n`Pp7xrth;4X3G>O@e3C#td5Bjp1-_**WZ6rbt{-RpZ!|- z`B?Ve$u-&)ymtFHo!$64<;$(5B1N4w(;sd95xM^A{%=u<5!>ArSD3E9Gkedrmh(rm zAAR=UcGY^l>*|Q@KmKI(pJ}^3i*47{4bT2;jka!_tABs;dG)(xU!-dK?zN_8Dpbqu zu1szJ{>EU_(dI}5%=J)3dbblJUEc0y7=)7GzaEc5*NZE5H7pMPil_@iC@cKXk4 z(wt`<_q1{UvGaNJ)7bTRqT}RaslFc7w#z2$+U^@x?y%#I&$F-Dm*)Jxe_dh!s(B|5 z{=Azf>%|cLOX8MtJ*QO3hR!VH{d9HK#xC)u@=Xtw zZ#VF2KR=Ln@R_gfcXJu#l~PXkwyQU7S6{qq-S?X}mu5ycJ8VDmZVK0)S-!2Ip;y1N zzC0c_UwUcWjp;QxHxG(x-uI|3v^%~;_;vXAAHfmZADu`Dy{jlbTTjd9<^lz$--*}% zy_ovF{PE126;=NaJwH?)GjW?`65l%MWj-1kS5M!dwtw;shaFAo>z?>?g}*Op$lGB2 z^mf$qC!9j(MP%2n&#B+ye(C+%=TBRX*sc0;V_JVgx@E<`gVxb^&MldJ%x!UAvC=ka zb7{xz%j(?~!~1`h`1?Ma*`C$CcHOR`=)&Lgxy1G_&o5B1i<;uI`9{g~3C!#(^K~!1 zb2y&--(q)$>Fl_Dgf zsq!6b??16F+_zWuW@zfEiw|?vH|>`B`R~QnX-WIi*30g_%OAJQr6A?(7A_OHSaS^$2q&-TkpQUbp73~rsKOKU6|?{lT}n%l17z^|NpPrM+U`#01lSU6}g( z%Pq;Ai?$nGzZZRwdR$o8dH!Tg<+}Wx#~xX4tG~ScN>{|1=snk_B|Lv|UFuWi|9N|7 zCGoA-{pGhu%}zeqZofuUwdL9yA}jY#y0KuZ9h*hgpCh|dUUc`W?e*p>`?8w-{QkK~ zU&{YpWKW8&-+kcpfrsq>7@D@_xAC4i7b@~`Ny8OZtt?e_oq*6Q8qK*A-)d^`Q3XVy~lyn}1~6nSE8ySMr{}Wc!WBdi@VWhZ85o?p|FIt$j)MQTK^ulO~itwk>H5oczwG zSKYz-<4(zShKmav^UY4X9(GTfs`aq`cxpqg?^~S*i=zH&Pwelj_{y-fy7<|3&nngT z<`c}fO_|tmG5L6Sz@Pn^i{6C<* zr_UsWzrT4)^wyS|$2*P`yvgM+`#UXGfy1ZujpWw(7dzxO?XpZRJ-dhTo4mucJ1 z%sta%$$$LXEcR9TH%^r2^REv4Zsd9BqC;Mw*we4GDw(2^&h6Unyw5x<=4i??Mi;Yf zzQ26ps@GS4x;5cl(i*>c#TB`paks5bnZM4fT)|>iQ@7)G_+f|8lFbFCd^dMR#yJbG zcQoI)`=QilckQ2YH$oM@NX8}4=MOG5wz_gMyJM$RY4AD0&nKThGClE3P1voYvTxs0 zhV>iYh5gzZ`2EWIqZ{)jh5qr}t*qs{d+6VV<$dk_r+-=seX+Uz{lVwXw>o>wzGd?s zjoJ84`jhR(^h)2Fb8(mDKkHt<@xXLXi(H)W{QkJvx99w|)|&iKWYdM{{(c3971I9U z8N4Tq9M$KZ_9?RYcUNfEjkOaF+P#{Tz1}^iJ}t@GCVsYEMESZ!FN!MN^t_edck7=1 z)RTGOs%M$-RMn5`uQGLix$60mYj=+JjTPqvzIFObKQCo1)Fc;tUaW+F}l)uCjZUvM-FfBRa>z2&>T;@ZL%L)Yx$8MZwmCb7Q+$ z%_K_=WJ^vPu3EaXZ08M$rTbf4w|=nkZ~S>9q%1N2tGS(3mBlG`?k&L~p0m@B*sxz` zjTaD{JfVB_*4i$SJJzf3{(KsCL2B3g72W${JA3{!Z{BT_lRbCY0X}Q%0EUS-^Ir8i zCGM@Ms5vg+7dBmEYIm*b-FJK6U0(gp__do{7xQZ~!?`BwHul72KP=|yJ`%7r=i+Uh zb*jreY8LPMcy^NdwZAvcY5)8EN5`Fip4i&XcXK3DaBGWX!H*US1vg zzAIyLw;iAMv_-%3oNt-NXa92#k#_%5=DBoAhi#bK%$xlx7iT=-O3GiUu+q&eu(9ux z-u>G)-?+A?P2Bo#!ETmlcAkLDgyzQ6e7hzmRXq5Zm7aE_M*Fein&0<#dAwmU%UpEE z=(hRQ@E2^=D>`)?~jWGP?5w zig)C%yZ);GXWGrD?KSnWYj~W_$p`i(Kh22~zI%RhUXuCb>kDRGe5vyFq|f@R@_X3I zPXA_^{5#1xLTIPh-P=dfl5f^kIR1`VpSanbcYUqo=exae-1{EZbYGwFe#gzDC0=qb zD(&8{zL>4y^QiDruGhuAvv16vvE$_Ks)lp-x7(b4yi_ADd)3A4@Nc&?T|e!dweG#m z8~wl4cmH2!^9?HpQ41+_0O{}4KAeC);LvJG+!F{F}6L zzsB2Zu^-~s?kx2$5Q}^DD<@?Cin3+eJ5z7Jame9#RdF&v#{7m$%k&vX-aYAgaw&hO z*69;wbIwid?N#yDeVE7Mdh~X9Xs@i=C$F1(c6BFCFR$3}t*2I%bz088eSsm#H5^7# zH)2^7__mofg_p8_m;ypJ$>g+i1rpzYKhocbkX#y_k?Q zTxGmhHA<6ITCartIkdlzqv+hP))f`+Tq_>GHBa~6d1S|R>;HC!qOJG!R-NU)wM%5F z#;0nn%AMO|{=dzaiQ4dT_MZPcS!LJGjpKLCbvt9IG4Wv5d#>lfCGJOLbluVyA4=S3 z)39FbS764Mqt)-0YRo;zCNcl&iEp2jw35WnNgZu=-Pahti+M*%(UI8?x+~v&WIK11 zv2d=nSX(N$G+#rW+>QwWj~FW+y_)m%{A|k=Gxv&pllbhuq4tg7r^dZ(>+U?_*i~{U zE#=zW=bTnadO0SE_m!U|O#U}7*>2y9`6m*@XMX1W)LzrP*1K4EzURJ)O_sZ)h2prY zJ9g^ddsTNhZbi`+DG}otc4^0D;(jmqJ@Mw^>pMbfS@>O^NPoWk%tZN_c4B|rWXDg+ zhrRnM`M*6eoy5CdwChBI^8KBA*zO)pDESy=T>18b=NU&8yZ=SA9&hdcDR*=7bus2@ z#`TJqd6w7A|LAR3R&{;5i}cmLQts$ayh=Iqbf0ZKV&f&K^XA0gTL;{3w)~sZsKK_> ze*SCIfB(|FJ(jEdOTfnL#)BL!Uz?|sIZxjC zFk|K3722V$%g!FpyT2i|^rEMBE&tscMNJ>?tYw*fX+q@p$r}!betUS?lUYCgdG*XC zn){AF*>X&2S9n?diI!{E7k^%})?Kt{!#9sZrhEw&_jeS=rc{5ai}kx}X7Rr1@)uE$ zmCsaz>z>9wn7H{r;}1#016h;x^rNlU%iek0=fWYoS$++7gqB3x%tgE9a*|o*#&72n zd(*#5@YCmo;&;!lU9h>bcl*+XH;lX&-Tf@**t|Zh^JQp=`aE~T7ayK&wk_+OB;`Bl zXW+3#*Q0KCxH?~4FxSW1aoSe4TW!Xi?~gp6KkH}zt{2){K1`ne^5opq+}tCMnq6WS zDy4Uy-VxxtE#p-1+VnWdza3I9gPLrs7epmicYn4pn!2v&*N%h_1tu|a*G}8^Do%SQ z=55!NV^h9v_VK(YdS3Gr+CAQc^_9NwdQtOo_N*Hg3uoR~8lu`@TqSpVKcAeKQAXF2 z-%L0C6XegnI_t3Y{R5)~J7b<&{o`*&NGwC(;P-?}%Ldnbi2k#?3&lHUA= zvws4!t@g7EwxVk5-*DF^UI>wU6=?pp_icxyYlWfxGYK88=uc4#gZK12!H{JFX<=L>gIo|%M-bNS&o?Hkz_c+2G0UtN6N;=YGPiF)+63%q83 zRn`}tX;*)-=C|4I_}RavoycjK+x>w5XJ1gu#y8Rz?&hp-wEePj^7UK!U#xEg?=RCn z^6ZSB@4eTzoxdxGGcT&%wQpk+uewwB*}&TE#h>?9#Q!<{^)BzvX?1Il?M-=e-D~rg z0K1p-?#j4nealMD4rn>@c%S;$^BfG9{`bhs%E{Xw=8Rckvt9RK`sTUT40}JBYi)k9 zPUg-1t!MaNFr^Bv5I^wI-9~WAhluDCZ+u(@@14q;kh_%0-i-g?QDd>9r7gzdFMfNn zYEHPa>yzd7uUo_uw|`m{*6$+oJF%VjqbXZX)D3l|*`Zrc9%*~mId@9m5e_ZOUmhEm z#7~V6;l1Ixvf9h(z45DKdi;7_Zwyaf6ROcxh~qP|yMIpa#T20%SA6Do&s|f@=PvBp z#I|Sd?4xmOwLd)DU;j8(&z@_E5{LElJTLvgJ^c6VzQk$fF1pA*`%Y=&OBNlKYRz@q z?6WF#^`-B9YLxoRRA!*|idoA(zkTJRdF8>Z8*Fdnx|x-FsC|ur^ySx`hUHT&Y5#3RHS&=SE#=e z=DYW}>y6~!UpxnAAGIjrT*o109_X18E+$YRF<<9ex9K-$i91fhwfbHkc3ZxAyC|_N zv{9BT$zJ*CUE$4V6LoxE9c{ZYtACF2mYy5)(nJr2nu@w6SieY-mP)St-9g%^xhfog=kj zr@_j|@15C;rYJv)PP^{%pr-r!485FBx2C-J*cED{_|Vz4ZN~Z7+stLZ?4CxKbYEAS z-+XrZ&(6~1UL1iQ;I=Kf>HO*AX2EBE|46-Z_QS_t>)K!MUR9IW?71N- z>08X*?u*&o&A$(Q7djjM{dnElOtHz=6N>NcVgL5#*@qjqqP#s_)-B$9%lpc`J@&2+Z^G}$6_;6^kq*(vAj2XEd$l#?+O!l+Cs;H~RAJ2XpuKzH5g# z*L4`qWh-0g_34Q`_uRJ@?@ssLoOR=gdYsHk=aSZL7V{<1@wWPw7L9w?t?E6wbat7a z%ap5(g2ywjq{~VEKTyA1q(G#>I=Q+3vgh;|+2_gC(#^-!W-ltZacr5QZItxg?svZ% zj>haczVv%s_kI1DH&Qn4{yR6;R_50Np}bHA`NiA6F1o01{;NR4M=8wa#iaYGv%1&r zz58DN8o%~!_O%->#@}$CsWNG%(yy*mFSo|plgHcg+`dQ6@9-7$pPU!6@Lk`d-a~gL z@`*zXW1_tpCPm_$mdP5aByeC5yx`#VDney;xF&?ymu8`BeJM*Qy2TKbtvTl`TKN65@ zUsR5Zc@%^7r%#J(ezsk=c&5Ag|Nk0oKZ`xbUT4VPwy~REBJKD6NM1{=%nbqlyD>9U zK1Yd|ofNBhF`GY*+q1?mXXSz7%G^`mUwn2}-gPtE?8bz+z00_`E(Dw3&-T8k`!i4e zbkPOd3f`P=w*be>Ohirr?{X&%V|b zuayr!xxCSKx(Ch$i%4b#D&Cxa4`axBvI^^Yi+@B@ZjKzrM;}{V3z?Qq?^=7qUCs z{~rmhzcR~T?4V!2|Hi$~o))tknLPU&QSM^p+-|J><=^?$Ung*wt@soyqv2k-`Ay`m z*;zXe-Js6mHMgdlhjX{oXKai?JPSjPcc94sLi-n!E5;3*0fW2ov_!%oH*~m8~wT) z)z_PziTk-d?y?4Fa^$(Mv(B*e|9t0RuDYk=oa;xalJKqDg+4zL5#6)QsM@!r`?^f^ z+Mh2>xqf->IrcY7Zhh^ZV+PU7-R8ePZWsDXEb)2A&!Uc>6F=+P%}+Y_#_-vON+0!? z!T!%;o_(GbbAQv5+nv`}we7v8b4@O%g7+tzwdk@l!6KD0&J)X(-F0?%l>J|zcPXmo zlzxr=b1T)P33jvR6ueDpIhB4%zhG~ z{63Kr_vfDPn^`x?kGQR$)mHwLYxkU!$FiSS?k;3Fowtj8?`)$sX)Z)4| zMRKp&F81}VC(ExMc>dv5VS@5~nNL6M?)%3{uQU8*Ab(@Fd2N=ptVh{tvCjsZb{jss zE@ha$UiaxQH{(s4Iqb|U_e@*1?`hzTyf@e1g}vT2Z%^8>e|M&I{5;dfn!Ka!->w4h zZ&ELA|C;rrP-$ApgGJMi+8nO(TIpYOM&#?h?fV`d-}<~@tJH;#=AEfC4%|10Vw_n$ z-}{`ct88UYeB3ObLy1p5vR41g|It?bzxgQJ^v}GmK?fFc&pLg0&Td(&?mhdj%ihr9mR=}Qw$NmiyxmJC<+ex9`>)(SP`+)6)#A{V zO>KGirc7+^wPVdGsLnBq{Irq%MnLo5myQeN7ETtwbn$eQoBSEo>xNIxTiiONaq3;8 z(4F5NyF|A(EWW`vL#u1X7OVCA70b>@SI;wgIy?EE(j_gAGx6Uit&M%MQAPe>I@8fV zaW^i^)qR%BxJ_)En`EEGo7kQmJ8w5{$p0AkdQFa|PlxQo;*U}{uH8%At9IkM+?$pY zceek$F}-ZZK1GQ?51OBDi@zVcwtV92MFnPBTfJ8M7+(MQ^m%>Y@5<)#!uWUJYDAycNBjozha+K&)x6{;fl2FYZ-p1OZ#?YttyID!v@yPxr%XNldeVj+ zEpMK^tJ)i#bI|O{OZ%h)Y9ET^sw3ZTua;D4cQg-~{q6t7vTrAP-+1gc<2D!J+Ujv~ zhL%q1nu|_-r4_O#FUhT2yu)qb+(XYNXg8=v=z7N-ShK+V029+2yXV|H%1W+Hwi{LNOQ@XxS*G|!PMQ71yzNQxuRil`T>t*&^PmZV zi+?@%d|dsbRL#D8|6Qhg&3?;la^3E1l$Rg&@IwXf`o^=Wo7&Dl-1__M;Wt~Wo)y0k zTi>{MSDnCm$yb%?>tpA=&z|*e$qfIv(;N3FFFe+LUFE)hyJ@wqKxMz;mJR)@;+pd$ z|5eGW-Z%H&cQgCSv0dhA<`>ppSl)I0$a5oY#hi zPnvf*zL-|WD_Ze5bdTBhZ0_3?eLE|Be@%OR+jza?+&bTNO_G9dQYJ_)^b&e`TP@_~ z;p4kkN7X#|Thh+tnJZo9yJ_RS>U%3^I2U~O32YW;sbZIVeSC>k_DA^-|JDYJOq`Qv zb-U(+$GeX+_(CK<{#qH*EA71Ce5Pvbxw`e+mu9F>Hr+5`d(DGHrGU=`#r^gV((8C` zim0ePe9}H?^+jo&PiKEmyIH1jp7ng%r(=DJwZA=uQ@(R!S$$42yR&Oky zZR^u?v(YjOK6BUG!joAd5hB&^L^oy?zHc2e)CrI zKYQczn(`>a=Y<-t^|n1(csOzCnQcE)MVAF{jGuJ!hx%;GyK}?#?Y{YZo5KA~CQ~1n z_VzQ1pE~l!__=lFt9!zCwjXLc-@8E3sCDZLza_Jqn(kMa%`&V{-f7@zM#E^SZX6k^OsL zdBMBq|DL~z`gz>`y2WJayGv}>#5?6$U*?-#`XttMlZ=$Tg-Y~g$#uRPm>A-AS8VZU zZf9mSzWO3)=DT}|46VkdDa&4bvsxR!;7##)Ee zTN8EDejI&syP9X#hCOQOm;OdwymaDp!gq7?@GU$kd#e`i-r0B~f9}DYCuj2XQ|{ln zzqZib)PGlU``4hU$@A7dKa^5jYA&?<2Vdv2rkKXsiirDx$7{JoJ_aS;t=q8VwrvCN z-S6T4OLp5U-F|Q6pkB9pR{n;cE=ec9Uw&S5INPKq)8@6=zoc(}-(HoB-t_a}^VP>E zpWpp<-{cv^pD%xsN}4w@|M6>wxYawCEAwR>y!`laR`FK3aK-NP+t;dZX?pj1ckz1H zZ?js@d#lV>zMn9EPn+VGcPBXWMfQ|!uRG9l^2oYNRSTo{wAIL)y)msklx7{8l2Wz) z!PeFMe{YGkmx-MGZsPon^=I1p!hWrc7yGs-InV!fG5f=$4eO6QPbj|Mlq*rta%RHT zF2nd++x0K)E8M|*p2fa1Z%z6grDqr3>c7AKF7N!FFrI4OH#721JioJj&H24%`=={B zvodz=v^yiGF0m*1()P`a&PDeE9`bHdxPJSh&+W#SvzcZ`G<=V*OuZ-QDyUYY?PVgl z-mjWz$*-E}nOYl4yOa*|z3Ryk)J;D1kym=!N0GCl&+f9@1aEotq*>tPjM|I0%ir@x zzE~}8X7{&RGWf{8Y1TZaH(ownZZV%%v1?EI4GrE&y@t{Mub#<~Ty`pL-ZORoX_jwR zYWX_*#J?2ZX?Jwhv#(Ec_J4hPWS!;rCx7n9+@JNKWyWm1_IoGQlaeG*z9r~b^P zC2#+WcU+(PgH?(P3cjNbi`-BAL@ekq?dWt-)S?L zcIEh`DH_igr;98;w`Iplj||qkv+aX5{Ng5FY-$XGpSj|83$AxG|1I-DsCdRN(>rn%T&tJHJD*wY zzJJ-~U5|q8P;6mt+i=okHZf1zM8a-LR>~r)RO|F{) z7r!oiZ^gVtpJ)0u*NnqUCk6$kltueQB}59F+5V78(#!a6!O{C&O@6+U-M=NRv475Z z?`WJ;9&+oc#FMNnuKjw8?jEDp&(s(GT)gaE z-g$*zjlD7qn^ zbDo6A61F3o674?a^X$FppM9`4u%mJZ=f-WaC9_Ko?7UOq_9@ve$uIR$L1Y6nXOuByJyYs{d@mj57m0@oHgU#r%3LZ<@dBVCHol6TzjN1 z{f&P3`2_Kxy&KjtRoD7Aw~KE46f}W%-=)_o%valQx3Av4i?24a#Cq4N`rQJ14^3XU z?%hGRGo7{#v0c@^C1%1m`1!Y-O8G0&Wn%cNx2w_QhIm|MOnj`oz-O7q*;8jSUyGGr zr}E4sZ)LxtiSh1;C%b>Snchz@cTQdZH2!n%f^zpA7gJZC6PrK%==1mkZRZc4e16=K zi{pMq#oMg2Z%)NY&#{(XY<6#Q#j>$b;H^~k&g-oAD@1-_{NkZzU?&(l3~Bz@8Y|ioe|?V z|9;FVoA8u9*NU5>)*bKK&ivwsu+zDZ1@k$c3rx$iZwXjwP@&CtP_bIe)_UrVwHsb8 zu5x~qyQx(m-?Z_^V|9N8w|(vR67SsEcvH_dyKx0~^@AOguN$}?wlm4NY1bmrpT9If zPM}KW?}X5j$Ny`R#9ye@DBj&+qz6!z#<4*C;VlsWTm49_`pjjklsD{t*%R^5v56y(`a1KK^0HMBWg^b>_wG_fD#xXVoiMJLC4YBU4uM#MB%; zur%rK@2jTAd`iBbSG)JlA?x6meJ9RU`6#xKtf#ho;yKwr3vT~<^lbO{AQ>6A4HHZ3o*v|P zZSP&`x^3o-X~}t!<+1UJ;y;+#a$X+T^>C-AR*`@CRriNl)c^Vyer1{LP z2Jp6Q4N&ms-zjl?q-JyT$a$iQT^ZzM#K6zh-@BQb8FDC*YV(UgX)o0uP?WyHYF?+K6-oo18T^IK~ui1WR8_)GO*YErnoi85E-L+`)^{|(z zFV7!+?)5jymod(39=r3NF)O#PG=5gZis&2R>;Kf|7P1~6?0de zi)$mC-PaZ9wLW7%ry9S_I5zgzo?Ch8Y1{G{zP8?J<7RtadLenm(mRjStnIH&oiwrO zSjyQ&vukw>%|Cn=dwuR^W&i7j*PU}#{P=O@+mo%1CHjW!lJ_@etr2}@y-PyZtYrV@ zytL?gmouJQ)s1ds1hV8w^61rH{$!asafbA_%9lHsKPv5f>>bjb_e)^gtn;bd(at$h zHzwAu%y@L;%##gvTOO)@OccHJKPyPJV)ene%eq$u)$7WSv_0DESQ-+a_m5-Y8{RzA zgXP7x91nklB;@BM#jlut`|#u&e*}Ns`t*$JpM&9-pa`Xck=CJ$2Fw%UOQydvld;Y@Dv@yUob@@`J`3vtNte z%b(McX6E(9uQm3~x(3+!nW8UmASox8?nH2eQMr>}{PE zd@y^_?(CUwUpLIiuGDSb`$Oib)NIan`K!7uR=Q zf41-GmG!khpKRr;?G|7Ea+BxwpZ;(5)=3-ZMnBU3`R@6Q`@v`a@Bdk|=kwW}=UvOE z)V(b$J|E|OX?fZ0lh5<5b_KG^zF2*tI;Hl|jVpUw8a{Tn>@fMn63SeZyld^X9j!%@ z^9sHda#vV=_$b?UekXfn)gGmd&n1<5WDZ`_=t^0*asIrMP5H+b%XNQgj180Uc&h&9 zXZ>l>ba@%)6Mm@|Shm?m#jRmpW7EjFe$^kwmHZh$oh2tvo|J(V*{lFL&h z0y(C(rMEjdZ@2pA_+9FUo_5s%iR$zz=K>|e+po00ag_|JbrH`xd{=zV+^ndSglWEE z%>}aSpW5?jn%?_Vv0&NpuW7xeB`@dCp40eP#>4rr_b#;^)2=VuJ!}2VTXT$JHTYh= zy?XZR->Tvbicj`Q+(}v7CE~2sy(zH0cGu!pr;fO-dMlo0FO$VI+xGa2s2yR~5~b6U z=X1V1*J<~GU;9qr(q8*`KE>93CUPGZGVZESHRC)q@3%~6c=03tPbKx`x^HIxo*=Z* zQHNK_t{`&B<$bQ^8)HjlKDRLb>Ufl}d0)N9kz;n5zvi@^$l7)Cs492$x$>s#ciyi5 zX{K_===O^Ze*-_wHQwkLSHt)1P4R)q?+ad-Zpwe-X@11n{KmU8+5W-%B;$@`d;PRi zy1(~Gjg$I@_u}gd_ce;#6gy zi*Hl+y7PbE|1$mYrz-7x=Z)U!rQ0eNu7bCBv{Kx8Uaw*8F?qaM^TM4~ zz0vcS%w{atdGW_+*`dp-hEuZ&J>xH3a9`Q%Bigt&NaW*WoqeAkCzt(DpM8?387}2q7cO|O)H-Rqi%5y}-;Dd*%ibOkU%pg8dF{OF$D3BP%`xrU zdt2zXL8aKf>Du9r*J4L+rpEPSt-`D@WjAal^!dn9Uy~^-DI)?p(WM_v1>-lRAlMU!9I>CvH!(y1eviccu1E zF|#+*DvDlIUlzIZ^+*2Be_0!{C3^FwCY_7=sb{)WV$YVWC*gNu52sD8>T5r8=fuj$ z9hoVJ&BNX^KM#Ms z`t|VJTf6O+-w_m&ty$(Rw|>Q;do$y27=AadER-AUak9qy^bEeO)XPr;-`z>owu_ONZpZ8B9wk2=d%u%&k_;dW{v&_$= zd2YOWAM9)SgwJjD)Ku#icCR-5HeUbN?tb_6DL3XGv1$5y^ZEAes~;KN$hg_6t^WMV z9yj06Y3~H{EjFsJzdP}|Of_%DlIT6lrsr?4d{(wAsprvF>k8ea_ZEstuM*v|HqQF~ z`cjMUx2B)W*83_`9DgI5GcLR2){SrWU$eJA+Nyeg^7Woc@5(OPZeF}${n6(ypL||* zXZbc`>;2C<-*z3D^LuMdr1|M}m-YyL4qF@Vz3BG5lJrkfp{|p!t2|3B*nD$JO`Ow< z!w*%jhJCY@aoY6T{1*^CE=xkKz0&b|1_E9~=*hQ}M%XDs6gKV-7f>9^S3?pLnXiO-)W?LBROKC~(5 zKGXES)0fM0mxk$2Y%lsH`}6t9Psdho`2ODd+pR^?CJyJ#XUySBiT$?jaSeCO0j0nd z9X57P&oj-uaW7+CM9c-f|9@WVTRAN`BK7;({^zgdEk2ZdVa{J69WYuDU!-nOLp^h3YxjXPwI&()t17% z(-?0nc+17b7MjN&n^Mzh*;Y9{bn6ZSuWO0he^2`TYoUQ++`JpC)inp~nqps=Zz{d2 zweh>|jSF)b<*Z+B48&vhq z?Od3(VRvV2AVXAR@Sc}nFMkz1wvxjm-r|8!(LWulH+RpR%M&o0-}AJ7@_VKoXRG3F zzg4+!{QJ9|`Mr*Un5?+Tj~Z@Vyg9S>-By`ojke3NZw!vc7~Vgr`0UC3;KB)a-=5uK6``3*Gf9)&`t;FHrpAnG~a;__m~d2gTOwwrZsP z^N)Mo?XriVyN2H?M?Orm_5a^lPk8sVOn>n$_Q4^SX=}DtOYYs?*6%RAJvL**-_we1 zhm%hjm1w^HaLV-}*R#BaXPT^1R~c<}YqMVdjb5nn==S!x?dyK_d@Soul$?K_Rc7}Z zPs^jA(Ki2M6MC=ZwV!(|eP!;uS^Gbq&8@fUnX@lvh2Fim)6F%D4)t&fZa4B{t(BT^ z{x|o8x;OGmoL3e)Ona#G^7+NY)t5IOsWSXsdwkcz`km8cRX4SD*j=8XRQvJZo#PEp ze@MOEeb@2(pEcSIyHmSXP3F*<{crh6=ege}^_6iCnz zXSwLZzCV(GdZimTy^}53&NSa%abxoD#v{j$_a7C|s?~Dw`pqWo_``eEg7^6wr|o|} z>&5&1`=*Qh>RVIKu~FYD=Tn8%kvBU!=f9t!m3dS+=xyerpr8$xFTMT0weN5EHQkF- zov!DZE!Dp(W_oE)8eiSv^(!iQcX5YVrtq9v-rddoUgnK zNW}YjHrRb)lck*11#?xi@+bF|Uf0>a?3;Sy=eKhY^X7HiUgSE#e1chD z`%+f&eU)dKY0o<>`mggpzASt_`Kt0G2jhFqYcFrlkv?QLll|oB1uJjuZq{!;GADsG zrj37}gzR0}J#1w$CCQgNwZGZi-xsl{cwhIl>t&C&#;AS!aPT>s-Sb|7;!FiM^Q@nG zJIm#7=6#Af_9j$pz2fa{3eQ}9&G(2cVz2&K`R??atut$^S%vN?xQ2~mh7~=zxle~&vmnEx%&lXFO8q9-4vcP@5Wx%*+y~d zt6zeKx{59{uYb?i+A*~>_)MvYrWnb&oc&i%i8z%KmN^>4Q~ zRQXou1s;CC*ltbI{dbqGmIdiJe&~<=-WTc{q`I|cL&qtZFPDFr_Rkhz&E?ad`D&xy z<^5KX+U(!zs)WQBrk=Q#DdM_m>f`L~PjkP0l4Y`;Y$Lz9J#?1olL?oymayiW^{!a8 z_F5i$;_SZH8+7+R`1@Y>dXmSwHIX*Y?9^?(rTnS<6M0x-$_<6?48iv^&+~IO-460l z6zTdc?6?0ncX7y`us@GN4<_VCZ`fPYsQvp`#*S-A$`<@HIqx5rnZ5n-MO&wDN8Q+4 zN|?3h|8bX?wr{TOg|fFXnkB(U7fsH;vFh{t;xoN0bGM$JuX5_(GW|a}r8nI5?Y=XK zt$#Q*)3H9Cd7JgIg@u~0*{bv6J~4irQ^tILa+XHg(-YPu+of_^YOJ^BPkd89N3Ff? z$g>dPzklvM$P>TMe@K>5_S>}z@k86ESg%MqJ6FYueM(&Qxia!dp5ef;LN^|%eL~$i=cS6w9^+F<-ewv+&CtZ*!^tgTZZpjU0!Uf39ZrI zbHKGV_t{?`TeG9S1=o5HcDKKqmu%-we{29 z)Vr!rTV*?QJHyh=c1$X;`*gX)%1-^MuTACIokyQvu>C#fu&5lH zJv}MEjoZ4oEc?lf@aj|Mzr>E3P5b}Wi+@{j@tNYd8oTP=y?z<%kKLPB>6_Ah{Xo=> z%~u!PHlOP^f0wP_U#ZPA^)^rXw)lDg$0P2Xr8U1FU!JvT_pwJ^x_)mZ%r&L8e16T~ zQ0abd5P0PiBfrJ&tmUR@pAsh@-eLFT)Qh|rSEuTB<5`MlUqhb~Kb%&Iu9aOV*G&RH>6Ad9(5u*PK+Z{HE_Y-K(~= zIkY~$%gDYl(Q|gw#pn&JFQSvoD|DUJgXTCtb6)8_uZyqKfB)~-yqjGOcb>j+_XrzL zef!7!A}*PYy31$$SKhT>gwODp&zTKUho8C%x=ZD3=+n7l?(*!#^u{>zrswtgySP93MZJ;vxVEA6NPtvHQcWzuW{tO_nBZZvl8_rYxB)(^}P(+ z-_5XmHnU{@)7h6}1({yVdnmCbTa;b)S8mdEk-F6Ai@sMb-V}S2@Ki-MfSK zS<9QPzq$6B<>|nHOxI=KC0jWkGE8!uJZI&@v+G_@Io5S-Id5Rxwe>yUTKaDOQfzNf zeW}o_-Obis^hLs4^Q_3lB&~Z-1OLQn32)BLeQMv#b9U>BkJ}t)1{h{un(+0|k4Zh} zUX`a+bDKSg&F238>7LZ5?c!wz-49CZKJzJA=CfiC>+A*9i=;M`Cm3&XPJUPO?DN0i zr93+fT`ZqGOrOjg`N`c)R8{_w7f^ zBX7+6U{mxo)2dneZS|ji(WHG(ZZq5zx-jRpna-{48?65~NzJyq#sBkNMahRo-ix2U zH=NC0^X10c4eEC{wLP8VJ70J4PW!uMYuoa2CR%OW&9`dS)(sdnK#GgxA*V*D7Sj@d$G7~+s(3tt$(X7y`8iq+Wvm^qQluIzbk&Pj67BP zX{Ym<&pY2O)Y$mac~9B1&%YG!ALKnF_VkDB`YZb`9uoW<|7q`r+@C9UXKeib;pe60 zyW(#}q^$3JH8Xe0z5PeCUrv5ErER9|_vbx+RX^SKtG(U5;r#S(w%@Zas-}Nl6m5Ke zckHbrZ2Y-fFZtmDX$YCCc6H{9JykrVIy-1b?_RiM`P_q&;K(^HK9R`{7kvg^#(k!E_Q z*q>Muru^(ih~uXjuODjeXT8#WVv6q0fE$u^{EA1_o^?!qpqIMXx;;;O*THv_WYfyj zzC8$%y8PozevzigoY)?A)4i%)j{91ARaafG-6)&%&-1%++#_!7|A##i_ee{{@uI7`}1+P9y?yfsieoQ}O zL!hYQ{gppwyw@?DUNc?wiCB)g$ke*rPf=Rx-wxQt?|F9WWKN&6-y1je`?tm7yj68` zUYz4IQhoO7r(2@7i@zkg`m)z!V% z1wIGgH!`R`xqXB9-49WLiQ83TYyNHQo%?&wnZxWGcZTh6tMUG=RyIkc{#CTyliR+3 zXNAAIZd2mDe_GmI!{x#AXPtgtV=cOVq1lPqBCGGVWc++{ODbrQM*nOX?)A!9nbkJ@ zQ%^m3IjOPxT&82h%fPq4RNbB5tm_kXzj|YfXYJ)Oi`}nk)1L)DKU-rA>gk+17rnF6 zy5!npQ?Y3ZJ1Y(@)|j{QOtRNvZ^q?1BJoqiX8u^up}FDEygjX^agwh>@y(o$x0{@QtKH3Aec+x{qh8K;?%PJU1%Kb% zn0NnOXo>Xwt~}EkO$&;nU%CD{k@b5T0+kf@3 zcOK^AYMx?J2kzWI_0sps+&=f{ebxC=tm_SbYx9R(PL#5Ja_7jQobZ@AH@I(oVyal0 zUg&7P&@bottRKENw)*8%pOf2i<3z#SnOO`%CuSuoCyg|91BeT{&M~-t}|m^=CEp zJwF$`-@0CY&$AV^$A4JQkB+_j$xf~I^usILP3GS`{HWA++sC_4O!ePJm+04?PB&XT z^+w9pmHvPIb8~(O6z#3^-7_uc-;M1{mgfJgsnj+56#Mwn@^f#0+kao_rui)IbI=@l z`C`4_Z|_~X;@*8|$@!`IO?%%zUn=%#hvUB8D~{CNu}I(0y>h{)ML)W4$~)^l5c+Rn zyJ&j3@y9au;>tjkbS)k0>^+(lit?X2^;`Z|)*MqgG$ZKH`|LXrPaGGC_B1TWTPDx@ z{=-9yCF%cjbiAfGT(9_8$KEsP%#!E}bFThee8D`%%-+7=|8eoBZ<>~KwpZ4=d%xJ1 z{OA``+4JZm{Yi=;CEa^B$WFa(t?;a`WcQSlxl*h@wq@_#z4&6~}x# zcV5!AGsh=%&N;TWdTZCt2@fBZ#^w1RbbGslHTr1w1=-5&)e-79#qa#-xL>r0-;Pyx z{@#Ae%FvR$tft(9b?5Zk1r`^tGqbOp>^#fdn6vVqS;JbhvL8~yuj5#gEU(E%miOLl z)ya5v>gm=S7h3|JlL{`RSXaCa-Z#5{ z*Hft}d!L=1^1kKU-;3GL-)xqQv^A^NZT!32OwCSw$*%LN_b=2=dq2NeI=ZAjBV$(F z1~Pf?AW@P<00;MV!yb@CkcG8N?BK) z`Z4AsbKC2=53Ofgt8T0RWt{f@LtgCO_V+RuR&;L8=e@4?IqXB`N9(Y6u~8zWy3-aU z+c23HeUPeueZWvR;YZRk-J?>o=Ura0Y0=3yyE2b6ZY;EyPH;{!sa}xEqW-4wdO_kb zj^a)4ip-WZMSh>-**N>LXTBrvslzEXo0ZEVZG6sWE}H(bo+U2nUupUbUY&<7=JIxS zQ-c1>=clh%-QJg)Y3y`t&C6@L=^Qp^uQYEdJsf1^DtU>!r#M{N(bC1@iSPxjs7aw! ze0v>)BCfoBId4POTFc)#4G9KLyH+=^aQb&IB&>Gl`I{Cj91RcG?JTy`-j!|W`1QNc zF6$R&euc*jFY|l|jnDMEm)^R0*0pUb3s={gM{m~6dBJw|!pV0FE<5mk<=i&Xf#_HG&Mr-*a@63Mhm(2I- z;;S_olJi-&u+3iMbRbavxN@oSv!>KNX&bT&tXj|ao(fN7m*bXANjA~7JAaEa!Kipm z*M`+EOy^i;G<{yb|7Wv~kSw3$k|fTs?RGDoPDx+*`Egg-=KA-$<=(`x<%I9u`hvf` zu&$Wn?3<~!ZKBpoxGsw&gwNgcHKpJ5Mxxz{cgqgu$nQFSB5#T6-EADv<~t&CjCX2P zcm5Rp&6AhBZ{OBer>+rTXDf>3d)@ZBjrmanBg*UH*XQ?2d#sdHdfPG*X^ z_lf61Z`Oagb&&gZ+Zj1#AGU8Vvaj-TPdT&QdEeyowdcyO$=3RnCEq-?A+hAK-OB5K zZatUT{L`(r&wS5q)fd}R_8BtA?rHnSTlOY-UhSF{dB1Fq%9Q3-#Qrk>E%AA7w)e(e zZf1T@gSLO(Kk={Hu|Ly#X9&N&W%ScbLR;!dbcyQvy`8(5vrdbIGr)pxGxZ~3Kn^IcVP&eNRU?TfWqLQ)^^JrsQYV_SN}*$Ux(lf#srEi2c1X_k_H zcj`ltz~{-~dA&zBZ`^qO#oPKn|7t%R{+Vf(e6Rb#89(o|8n*dePrT2Wu06_b6E1ow z)^p#~*!3l!_p~2of4Fw9(p4+#gVz@Q{rT?U%_Dh2)yJNzZPGok?ypKow;ubpo9Ea4 z^15(p-SipPADC|675!kL^hdVaB8ksyxJ@_3rfmNqHoxV>$qetZ>++|2uJ^sTe=+sN zqq)E3;^K}RTEC}K?n$(M)8GGgyur%rjyJE;w(r?|e|COFukXyUnL^?f$FR$&_AKz4_?oy@Pi)9k5jUwtw>46K+X$VO#EQ;6IwB#n!F)EIsje z$?u4gY=(|?-mm;h*EYSgs(!oYN%W1zH&Z?wXkN|wDoT8>Ste6B)NZr9pSm~fVD`EHQh&Z?3w)S;`2FVosMHS+a`!CH(JdF*R&&iU z{Zs|7`o#A03(NKM*=MrXeSZ0L<+95XX>($We!A$~xWTf&KIln->B~8cYd?V=4aLFP9spY6-bVxJ+D zSSA1D`PVxS!oS$n?H2dF+h+Lv)H*}g8Lw`=j*24+$iYm$b+;8CWMb$2KjyEs&rK?Iw~*oT>u27a-z?tN;bMJ! zQr+Lbzq3{<@hdgy9)I^-aT9y%?-O}-|HaOk=cp{=m_1SC+x6E1cHFzws+a!0t$g>O zcp`VCSn}%CFVw0lPUy*h=28{iwYu_Cpm}uH&L_Y3IIb>;UbW8fS@Ie4o4loyYu8(g zBs`XxS9Lah{oNOJbKVEVDbL6t=48G4B7Ar0FNx2wjj^hC6L0T7nHQd;|HCL}^T%1suTMJv z|8d}%?n+*6_V~m5`I0Y72liGzh+k>N^ZuE!x-$3ekEOoPimnIzKAp+uu9-Jko{|4b z$I+X|QVUMsp5@TIH$7;Ix%VsQiprwEXc_wz7uwwazt(K|6%qX}tnqH~%(F+*x5eK0 zlkwWKtIJVhN0RCE6z7Wa^UK~HYkGTk$>c}RSfBsicjDbn=3Php%G~dkziHqM(*1Tk zaarc3L)&Ufrw8qND^$FFgW~pQ4xu;YaxUJzk+Gxc&8qGyLH`(HW#Pdp~P zZsN|1CVRQ=?E70P6Q7pO6ZiA&)&7MId5xFTHI$bBH|D=*e8chHYjMpFm%mKsJeGVW z`nuTb`y7v>Bel2|Y%WXu`rC@f*TZyb+?y|%^-{~pZ^FZUb2%uINa z!~ehBy+FJyH+zHi_Stt+@3tKho?Y^t zyVyr^ZprJ7re9^EH-(?_OdocZYo z!gHi=9%p)U?#sCV^WAG#&6D4htuyQ7bI(-?ig!C}@BFff`W;vPc#G&~%V<`edym2$ z&GjozZk(R@NjT4@<>gz=ADR<-JOB5oA20hd>%fZLt%qKgNFCqIzh?Ojk@u`|uYb*X zdMlxEMsoI=4LA3%%a7+vj#ymuKm(J*WSZ zeMM~4+OKZFn7& zv-o9N?#@+tt9oBZeExhW&$2}O(7G2}*Ua`jmvd~+n>p`{49{;}Ds=bDt;aRnxpxUf zuVuR{V9zr@Jf|*sYOSi(wxnH8bvGa9JY!mYaqf?5!U8}S4^mFU)?*+5A zo0?uX-E{i8>4wPb4Y8XgizC)l?DO@%`|j%(U-!oFcgq$&KX$!vLw}meqqd+)4VU_?z`AdUwrX-c|M$-CU3=rg+?yFs zn4I2hny@hEUoNZJ{_n46++Je6`F5nLGRu$j^E2eVUrf_`C-;gi>SxO1%f0Uo=iOy{ z>9&9E-Dzi)(l=JVdux!WFaKToL7;JS{*i2EKUv%Lx4()e-P1m4@QUf<x24o`{svRkk8d&Uh9?Mb^goZlSH9~s5A;J}Wji+-9VeSgUM zX2CS2Id7WxTb8() zuUG4;SfsD#ze?L@dvkS7yzE5Pn^94}o@~uL%=hD1bFWw2tXw^({WC-`X0j zy=5Jz&GoI1ewtb3o&0IXz4+NYmkq_fv5DRrTTjlI9eU>QvVPe=r?PV&?s{gI89Tcu zcK2EHn;agF^TSV<`WU^hpX>fR^iqTTlHy=vy*rK7jR&tSyM4_&#`$vTnR)kQr7ov$ z*%v$e{+@h?Ftd}#xt_l*^Xn?vP&AQm9lMW>tlWtOFZry6$GvXZ#NJB%a;8qc^!m59w>#qn6BeZZjI(1oZzkSRd9`-Y z^-C40!o_x_0VdoxZ?VQYm6w{l`s|h*cfZ>AV$~G(Cui(LI(F{Vs6JUNxXiKh_jX!N{gJwHmCwGr>bC#yrI+RD-uVA6hTH7@Zqek;^Il&) z_(1h|uJ_68Z_@gk4u(}+s@0j0|05wxIGBYE$CMRZo(le}`}w10A)z_#8ulXh8ulzQfta=owX{p(rkyE9^$qx0ANy8J=4 z#P*q*7TbRZ(n_QQ;Dm|&Bw3f4}R;EZE%}@$5OM% z+`K<{P2|n2Oqs18BdR8Ei@IsybpQ2MUFj=F_(}uHe7A|FPd+u>KLAAB*+DPDhj(pkpjl<0q+q8p6W)PEhFdR3Mqax?R>Gd-2*Y5#78uCWtO z%P(b5QQX{{sd#4_Q~BFJ{VDAy`q;KSGFTA$Jx7)0zs3Cas*ACcV+#+S*yeEiQV#bj zWoy6AS1Z@Wzv7JFdVcXXvwx`^j~^Oz9lg)H`-c2UHler75u(XJI zSJ|HJ9RCkzvEFPlIV5*7FVlF#-G!3pKU8>Iq_azZySFQ>^whFL(Paf{@4j+4KFobM zW46|&+pRH+Yn;qqX{K&|FS@UPnE~cIs53-f^|FHOV`$%dHC5NYVyt3yS8m`uDp9!{@9!sY9iNbMJl$h z&F-&x_xgz5&HcT9pPI1EEe=>Z;dZ6mr{ImR-JbvFwNBN%tCPLIt@&xvp2ZnoHY8@~ zm^PpF{=xY5!TV}8*NS5c7i=(lzO7gF*uxLoYnZl|?G@g!damK`{AWpuVa$K(PMdwt zdENTqdmhSmF+ey8us<(1O8e&?0lmN0RjLk2z%Ilq0p6l?PAeZAOchr5gZuRa{F zl-FaMH~p&5`rXg%b{;n@zi{`-jPQip3B9+^FT39I_hb96qt_ON>}{)Qj*aF^`nI`V z>T~bA_2$nBRKLxke(3g;_eYK!dD>=HPki^y$amp3 zhTqdOB{nn}o1EX6X?pC>jtzlFXYH7sHLGp9+@&Ia z<@e>1jF^_@HE+xrb7udlSuOwhTveW)?CZ)j{`LiG$}@MRzfhYqKeK!8uHJ9&OV6k$ zMxXL~b698B=A_j*9QR+FUhJ(YPpM8_e3HZV^|$9omgQ7BpE>>Iy-aacuHe43?K1bK zbnaaFsr1a6TEBnqXuF?50cNgot8*0z1C0DKcZT{e9_U@bK zz7+16R>FSq>_6Fu=CxNqBgLrS~&ZTLKd~Pq*-MmoxLQ3(b(_ivuuUoi&e_P?YOD-mEH5n@VX7fHc`fAp- z;$^=}Bs~329$TUj^Lb;$iL~syeV&20iWV5Qomiu_zU#^V3)gS(&siW5d-%_$a;+1^ zrqSD~53KWjU7ED!cI8r8uMPI4_E&xNIWBWa@7mpU{qNj2JHG#2?6*pO(@lxuS7pCW zl)ap`yEMM#ZJosDGSSa^8+UUpJ~}t2>g{E<`~4}K=VYIGt-Q^BLG-(H<7bJp-&fzg zC>m#eIAm$b|2_RXTYc~PrIxqe5T8EX$^7NE1(~zg%r&`hBQH~PdCuR;``@N1TIuzm~CY^4t zKdwFUH$d%K?ESAdCZym0`$<>fwp8YNgE+sSh#w0z@6UdJE@p?}k44W!zs(kKW+;=r z`FPT#X$3Fz9++MU+3+>eV*eg%l`@CC@Eq8vZRQa9{Z?9cHoYdS6! zFS?_zRQ$>A>yI-o)CQI9KKZ?)#=Xeq?oP7IB$8`~AK4P074fL4SW=x|kLE zSFL+4)5uP)=Aq${&wp;G!|oXn6le&06bCkvzX1`^X)zSC;*nQ~GIdO~aY}2k-r|k(12TneMK7KQnxxu5fXk(_?c>m9>j1^=4n?%h~4i z*LrIO>&!1NHGX~I;NRq*?V4d=k zmCTDvHXPT!@ufUzetM$tIsX+o>wNydW4SJ={^sEqOAF@;UyGaP)QTAI=3U*-o9uU2 z^ZtjL9jVW2cE8(X{Y?JGQN0~X(uw;oWcOIM=9f;sJA3c0m9fe9xcAySe4mu>^0&E) zH)r4EdoyEy?$gv|%WJNGQG9I9)0V&0XP;f1u+-!mY z{`7lK-lo-giP_%lv+O!fPHbt+ltSw zoPDtCmD~1*=Vr`}JDqdtT+T5WMe&E_hUHA_eGJV$-MRPkj)H!)g-%25wCYc}CJ$3C zXTEuUuIR$LP5mzg7@~GZom=_VZ+&1nS5=&l=hSKY4=r7#RuT3iB>vmcJCZ>`kE0?U zta-tzpF8ngMth0c_G9ZWb6MBSD_tLJGUv~l=NWbe@2{QR(OK&{rLywkgoHVpowrXj z-F&1bk-yk^W6R{b6V7fr|N11~UD2Rxu}0EQ{BArqERhLma4BOp+a!B)@9nGmAAZi= z*J?Z0=4M{!&*z0wCzs{DeNcUEL88RxhQCUN{N86)M&G!;Ht%w%b#mS=-+iv%D^HqF zNjGaB3_XGKX@-@ZzA`+eiL z^j+su-`OWcf7^H_%wku>e)sJMT0g#Ax2-37{oT!`Y1O|YzH8iHlkL6F{`jtIPc|K^ zc`v&@usrYbs&$P=X1LF<-V}Mg>(`(DWWR@3-u|lH)%$zn`M2$&zjvK1SKW12?(XTW zD%-iH-)oZS1m}Xe{d%K@HuXcyH9`E z{C?zOuB`jP+U#A+gxH$=J_zP*0O(E6_T&6?d#SIcc*@L1l=Nn^MEEn~Sieevhl{~}vry6qqCe47+5 zRlLA>PwaO?#W2JB4er~PzI(i`#`@XqnXGfqw`XawaO}GG*7Vb~XBrEqrEyoRy*wek zf~Q(NCd&5u+&>?#J+_-a`^2;V_EB1MVkT{JTrV|o4qJ}P?yULO?@Y8?{_e`5mtSUj z8)v2&^*=A@wHGX_3%PjC?%AE{C%=mh+i~3H6n)?K=4nHgLUsQCw7{(i-z}Fu^q^G-YN^Ka(7=bgQ4tLTN=LYMoSKh7)7{~Y`FRq}zyD~tK}vRQoi@>6zq z@%{1*cdPb%yOI5R#{FM1hq%8OF4&&aWF)=I{zA6uCtjJG_Al?B`Tld_`Q3AO?S9pt z?Dws?s_xEG>;C97-=ZG9OOD&LjSufu0+sK*(wV}p^7(3Yd2XTGq1y24 zaemA7XOum&oOqn)$G1Mc+r^WWwwq}0QmvWw<=zgPEak>(D-)w#MJLpYkH_EK`oe#k zLba#WjkyH4?nw?p^+UUII~ z{O7w1+!gPq<@~u`SN5&)cuDdu@4GY4=IrkKefhHCGAF}wznPyFikMaj=!5M+al{GeRC)CncXGZd8+ht(y!!Xnf}lIaku)#HI4YG zcLio&JSVneTEPx6`ELn3Qa)8HSRaoG4K8=w_Ui4zc`y7v{pJ0cr?F?|{U4uKT==GT zzdG5^%PwxmOD!+f*9Sf6^K;*89{p#!r~jO}F&-z5SoFB%1#r%@ z`JpHHSgW-&NBW^({^z6hDpgCjUA}Tb^33^pPrJBpzS$U{eTVD+ceej&Mm8IHnVMuB z**+}4;l6B!;d#TSS9u;;u~aBWoAbUtqu~1QN6Z;v=@&Nt1MXTyEtAi4KfQtZb-eiN z3&A;k?fIqFheI61&lYIM?Ec>x+5X4&ry2KbUdy(l0>7)x9)|vrmD;N_0d)s(y8P^1BJ=x1QHNB2;iT?Oa*juKdY%4>Zp$|15jcQ?lBm=NPZTbn7jN z>IUMKs}=r8u3yP^MQDS0DfcE*6&|kX52jCB<#Y6Smd$Z9m-RLGHZJ=*>D#?|enCg2 z^X~9`o^D>(BWn9la#s2cmsB(92clcJf5#e|_5S6kn6Y2}kHn?T7sbk+o_e7+lXdg! zubS%;oR{Q=lrPAeUMhcfa?YZ&QRV8JeyZ)N_k7c@`Rt(ExAu@fyJdIHy?Ny`i~GLx zC$|H?Z+DiEel<*6WX)?ODVl69U?+nU!sLw>>RRh-MOuaY%9zg6|Qw7Af( zJ)L&>54Jw}%%44fw$Pi1b&p#YG5wx(<4a|i<+m*LvhP<)dw!n#J2i-7`SneC$L83b zkGmZl%`*4X-i?*q>W*J~y1a_?_>Wyx!JzJD$Lcwox?`C=u@9&A;)YWi{3hQ)c(1v=lj%BJ1@TA26Y{(KSDfTdUJthJI^ zD%jhCi!v)eoj!Tnl|Apg9%J*Ty2R}-+x-?ikos5?rFg3TuAs}rJG<5AZ!&QAyS6v$ zW9oass_jnCg(q=c{a|zW+}GK&ZStJtzLz`3b5*u%zmv#l@=0~#%6aMG3Cq)zXElpY z38@J@2lxe)8mXQw@MoBM9nyiKyD&yVi%y8CS2)wxP>x`yZX_FONVTQsX8OYgMb z!z8gKwsZ48dzhyf-IU$#aqp|)+4AEbuNLPly8D}VR`5fS;r$BT zrnEE0*2k~xw`QI5Yuoioo0{3nH+~G0cI&>B&~E#t??`TLV7>4DIZnoA;njPaY+E*V zRv*&*yCQqD|7OJ*vrVq&ELT14yGS}?!%FK3xhtbDO!%kryXn))@=zlPd?|iBXQq2npit8`CsDMca^#~AAYupJDt0F_SV+8CNi*L#pk|3|8MViZ^|h*poBuOUa*P@!x-A&-C8DHZA75M3J=nrStLo1vj(rI{SFW z@3hs@$=$1Z@-|JkHgxRIiu)?begBXN+ddtMixC?iti3DrGwrl+&~x^+*&aJK9DVll zncCWE&)EFuX+BDMGpXPD`7+DrS&Hld&)zL7`+lS}=dhWcpS@oBW#PlAJX&X7NM@Y7 zQMN(0a=_Ao0wVVB};;TYQ=QlP21{o@7uH8^)HIAGjf)cPwX!}lk4{*@9whp zW4uwR-zwT`e%uK)-&JmxSXlPHe$DNbc|E5V%${ntFkL*F@vcKT|Bb4JC3k*qI%)28 z>D{eIG8YfscrttUmiJLoI*;PNSFc@k)_l&(uXhbjld42VtO-x!hwM^Xl^}cleL-SgB@7k%Xzj@@|>(Bo7 zD|LG;Z+x-zuT^-l<)nS@-|G`<<>LK=&aZjbZTYb0r)~AJ^XDy}bzi@;^wp}lZ|1-L zr)1ZD{m`xFs=v(t{!(6l_gnsk=uIz8_kN9Bw(Q@IZ4TSz&Fz+dh|T%(zDDW$JX`m> zcGtHaF=Neo^>kz2YjeZ-$!9)a+`8)a%HQorkMie#4ZXYnZ(nS6@9xTjDjR;s+8rU-UqN^1)IOFs(k2sY3v%w*mp(6Z z<&I3}>hX_r)i}B=|KL5Y=kpTh?$?;TDOdBZOx?%hBX|AA$+NHg@ zvy%G4e+Dt6O#ZjGBQNF8#vGs4%hPt9dQx+KX_DXk;3um>Pi%j9rQz}>*1j;ea=VjT zuAZH*tX_C=_KULmef)hTRx8iH(b?laSLV>%&Vt;fHF~e)G_OB(mzaAyta#sTBRh4b zJJu%23uWiacL+R8y>W%t*>Dk0mhr>L2Z|N%zfN1mWPi&?@5yJs{)~GYV&AgvO?vJw zxM|MxOK0a!a8bX@xXV$N{r$;j7sZy{7F)Bj_UNpgFZ$jve5<_ZTQ;%gyygAb6K)^* zmn{)=#y)G`?M2rOt8$suqf@f?IajV<`(7^p^V`XJRleH;*E+{-o3}VeZ`a>L$DTLL z;J&N6GOT)UL{&tIIHZ6BGR1r|ZTw z?qb`=^At0$1wE9G)w@yt>yP2?^?GTiuPs|_8dQDw?}6FsvTyip`K@vuCKNa5y%XA2 zmwxJXU-ITNei;WWHBUG5SWizbp8P`UtW=Xia=}AAnHBom_i%4=mAcMgd~4nIvqe@> zh9;?>earTBJio=ceB(3WeP`UeH%^^Xn!cK`!{00Y!ri4C^6m=we6fwb=UU3s^Rnw@ zoc$)2Pv%=)1FWJS%g&2?__W6Fp*Y{v?S|`FX0A~vXkH_pV!UbM#2eT65C2bp-!oOk zywPCK%y*JU_AF9X|IXJ}wy4#`rqL+%H{W-;Z6Rw;A9RUMoh8q*cxFmYMqd6e`}mus zrJ?g@=SfLryp8|7=U+wa_8ZEp6=$VP{VRK8gS7Tc_2#{8XDj!~^apQHyB%~+=dIcg ztNrIvzL(E^5c)XAeQEV|>zoqHly4!kb1#QaUatMk?aiUP)#{IzDoOvdJ910=;`!7y zTO+)E?3}gVs+pN}xz6zadh;c7)FTY5dL{Ua6MAGST&x4-n}d(*JK z;w|B`cjwG~c=daBL;TiX^~;51J{b2_2xj^|o55ES;kr~~3v0alj#*cffBtzo@$ka3h9j`0gCrpoE(yp1j zY17>uFSl6ad%uynFPD8RbH7i>)|*oPUlYntx`_)q2HJWpSPrv+L>icH( zG-c~c@eGH*UTgp2M|WEN9D`)NfTsk7+rzMaRxx zd&=;B$KIdU|5;uuSSNW;BRoC1YwDY?Ar>;9b!^_{7#?4j{Px)WGXCSIa%z@pZZzlG z`g^0B`)S@sbNE{g3%&sJu>XZHEjGzk6$b;N^LqzpJP2|L74YDmnFn!JJnKIvTy7q_X@(ZVD{q-u-fWuKDqI zo7G(u53S{`ZrcCyd*K;(e)q-?YXjFPt`|Kx?Z&CT8F$wni#aMY>Fl-E{mI{#WF9={ z|L*uf(=3bFySK>FO)fK~{Fm76lJvUdzLy&l{X#4I9%|Q5%vEQ;9eviYd2{fF zg>%=2=EUSqyB_kbysvlxZ(Qs4Wcjy!_x%GEw?8-a_7E+?Ka+KU2`TdkL>*J= Pd)2wvH!_dWMR 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

      • ")}
      • Minimum File Size can be used to prune small false positives.`; - this.infoURL = "https://forensicswiki.xyz/wiki/index.php?title=File_Carving"; + this.infoURL = "https://forensics.wiki/file_carving"; this.inputType = "ArrayBuffer"; this.outputType = "List"; this.presentType = "html"; From 65107737898f9f4b4537d7ae7aa5ba68f326dbd5 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sat, 3 Feb 2024 00:11:50 +0000 Subject: [PATCH 0957/1024] Update 'can-i-use' browser list targets --- package-lock.json | 46356 ++++++++++++++++++++++---------------------- 1 file changed, 23180 insertions(+), 23176 deletions(-) diff --git a/package-lock.json b/package-lock.json index 10aabed3..8b484b79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23222 +1,23226 @@ { - "name": "cyberchef", - "version": "10.5.2", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "cyberchef", - "version": "10.5.2", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@astronautlabs/amf": "^0.0.6", - "@babel/polyfill": "^7.12.1", - "@blu3r4y/lzma": "^2.3.3", - "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", - "argon2-browser": "^1.18.0", - "arrive": "^2.4.1", - "avsc": "^5.7.7", - "bcryptjs": "^2.4.3", - "bignumber.js": "^9.1.1", - "blakejs": "^1.2.1", - "bootstrap": "4.6.2", - "bootstrap-colorpicker": "^3.4.0", - "bootstrap-material-design": "^4.1.3", - "browserify-zlib": "^0.2.0", - "bson": "^4.7.2", - "buffer": "^6.0.3", - "cbor": "8.1.0", - "chi-squared": "^1.1.0", - "codepage": "^1.15.0", - "crypto-api": "^0.8.5", - "crypto-browserify": "^3.12.0", - "crypto-js": "^4.1.1", - "ctph.js": "0.0.5", - "d3": "7.8.2", - "d3-hexbin": "^0.2.2", - "diff": "^5.1.0", - "es6-promisify": "^7.0.0", - "escodegen": "^2.0.0", - "esprima": "^4.0.1", - "exif-parser": "^0.1.12", - "file-saver": "^2.0.5", - "flat": "^5.0.2", - "geodesy": "1.1.3", - "highlight.js": "^11.7.0", - "jimp": "^0.16.13", - "jquery": "3.6.4", - "js-crc": "^0.2.0", - "js-sha3": "^0.8.0", - "jsesc": "^3.0.2", - "json5": "^2.2.3", - "jsonpath-plus": "^7.2.0", - "jsonwebtoken": "8.5.1", - "jsqr": "^1.4.0", - "jsrsasign": "^10.6.1", - "kbpgp": "2.1.15", - "libbzip2-wasm": "0.0.4", - "libyara-wasm": "^1.2.1", - "lodash": "^4.17.21", - "loglevel": "^1.8.1", - "loglevel-message-prefix": "^3.0.0", - "lz-string": "^1.5.0", - "lz4js": "^0.2.0", - "markdown-it": "^13.0.1", - "moment": "^2.29.4", - "moment-timezone": "^0.5.41", - "ngeohash": "^0.6.3", - "node-forge": "^1.3.1", - "node-md6": "^0.1.0", - "nodom": "^2.4.0", - "notepack.io": "^3.0.1", - "ntlm": "^0.1.3", - "nwmatcher": "^1.4.4", - "otp": "0.1.3", - "path": "^0.12.7", - "popper.js": "^1.16.1", - "process": "^0.11.10", - "protobufjs": "^7.2.2", - "qr-image": "^3.2.0", - "reflect-metadata": "^0.1.13", - "scryptsy": "^2.1.0", - "snackbarjs": "^1.1.0", - "sortablejs": "^1.15.0", - "split.js": "^1.6.5", - "ssdeep.js": "0.0.3", - "stream-browserify": "^3.0.0", - "tesseract.js": "3.0.3", - "ua-parser-js": "^1.0.34", - "unorm": "^1.6.0", - "utf8": "^3.0.0", - "vkbeautify": "^0.99.3", - "xmldom": "^0.6.0", - "xpath": "0.0.32", - "xregexp": "^5.1.1", - "zlibjs": "^0.3.1" - }, - "devDependencies": { - "@babel/core": "^7.21.0", - "@babel/eslint-parser": "^7.19.1", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-transform-runtime": "^7.21.0", - "@babel/preset-env": "^7.20.2", - "@babel/runtime": "^7.21.0", - "@codemirror/commands": "^6.2.1", - "@codemirror/language": "^6.6.0", - "@codemirror/search": "^6.2.3", - "@codemirror/state": "^6.2.0", - "@codemirror/view": "^6.9.2", - "autoprefixer": "^10.4.13", - "babel-loader": "^9.1.2", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-plugin-transform-builtin-extend": "1.1.2", - "base64-loader": "^1.0.0", - "chromedriver": "^121.0.0", - "cli-progress": "^3.12.0", - "colors": "^1.4.0", - "copy-webpack-plugin": "^11.0.0", - "core-js": "^3.29.0", - "css-loader": "6.7.3", - "eslint": "^8.35.0", - "grunt": "^1.6.1", - "grunt-chmod": "~1.1.1", - "grunt-concurrent": "^3.0.0", - "grunt-contrib-clean": "~2.0.1", - "grunt-contrib-connect": "^3.0.0", - "grunt-contrib-copy": "~1.0.0", - "grunt-contrib-watch": "^1.1.0", - "grunt-eslint": "^24.0.1", - "grunt-exec": "~3.0.0", - "grunt-webpack": "^5.0.0", - "grunt-zip": "^0.20.0", - "html-webpack-plugin": "^5.5.0", - "imports-loader": "^4.0.1", - "mini-css-extract-plugin": "2.7.3", - "modify-source-webpack-plugin": "^3.0.0", - "nightwatch": "^2.6.16", - "postcss": "^8.4.21", - "postcss-css-variables": "^0.18.0", - "postcss-import": "^15.1.0", - "postcss-loader": "^7.0.2", - "prompt": "^1.3.0", - "sitemap": "^7.1.1", - "terser": "^5.16.6", - "webpack": "^5.76.0", - "webpack-bundle-analyzer": "^4.8.0", - "webpack-dev-server": "4.11.1", - "webpack-node-externals": "^3.0.0", - "worker-loader": "^3.0.8" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@astronautlabs/amf": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", - "integrity": "sha512-cJgbXW45TIDLQf2hiHqDoRfmeRy5u9Z4npr7sZfBThvbp5cbqDieTWaJTu91cUAj35/u87OHZijLTbMO18ZIow==", - "dependencies": { - "@astronautlabs/bitstream": "^4.0.0" - }, - "engines": { - "node": "^14" - } - }, - "node_modules/@astronautlabs/bitstream": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", - "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", - "peerDependencies": { - "reflect-metadata": "^0.1.13" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", - "dependencies": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", - "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/polyfill": { - "version": "7.12.1", - "license": "MIT", - "dependencies": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "node_modules/@babel/polyfill/node_modules/core-js": { - "version": "2.6.12", - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.8", - "license": "MIT", - "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@blu3r4y/lzma": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@blu3r4y/lzma/-/lzma-2.3.3.tgz", - "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==", - "bin": { - "lzma.js": "bin/lzma.js" - } - }, - "node_modules/@codemirror/commands": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", - "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", - "dev": true, - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.2.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", - "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", - "dev": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/search": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", - "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", - "dev": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", - "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", - "dev": true - }, - "node_modules/@codemirror/view": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", - "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", - "dev": true, - "dependencies": { - "@codemirror/state": "^6.1.4", - "style-mod": "^4.0.0", - "w3c-keyname": "^2.2.4" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { + "name": "cyberchef", + "version": "10.5.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "cyberchef", + "version": "10.5.2", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@astronautlabs/amf": "^0.0.6", + "@babel/polyfill": "^7.12.1", + "@blu3r4y/lzma": "^2.3.3", + "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", + "argon2-browser": "^1.18.0", + "arrive": "^2.4.1", + "avsc": "^5.7.7", + "bcryptjs": "^2.4.3", + "bignumber.js": "^9.1.1", + "blakejs": "^1.2.1", + "bootstrap": "4.6.2", + "bootstrap-colorpicker": "^3.4.0", + "bootstrap-material-design": "^4.1.3", + "browserify-zlib": "^0.2.0", + "bson": "^4.7.2", + "buffer": "^6.0.3", + "cbor": "8.1.0", + "chi-squared": "^1.1.0", + "codepage": "^1.15.0", + "crypto-api": "^0.8.5", + "crypto-browserify": "^3.12.0", + "crypto-js": "^4.1.1", + "ctph.js": "0.0.5", + "d3": "7.8.2", + "d3-hexbin": "^0.2.2", + "diff": "^5.1.0", + "es6-promisify": "^7.0.0", + "escodegen": "^2.0.0", + "esprima": "^4.0.1", + "exif-parser": "^0.1.12", + "file-saver": "^2.0.5", + "flat": "^5.0.2", + "geodesy": "1.1.3", + "highlight.js": "^11.7.0", + "jimp": "^0.16.13", + "jquery": "3.6.4", + "js-crc": "^0.2.0", + "js-sha3": "^0.8.0", + "jsesc": "^3.0.2", + "json5": "^2.2.3", + "jsonpath-plus": "^7.2.0", + "jsonwebtoken": "8.5.1", + "jsqr": "^1.4.0", + "jsrsasign": "^10.6.1", + "kbpgp": "2.1.15", + "libbzip2-wasm": "0.0.4", + "libyara-wasm": "^1.2.1", + "lodash": "^4.17.21", + "loglevel": "^1.8.1", + "loglevel-message-prefix": "^3.0.0", + "lz-string": "^1.5.0", + "lz4js": "^0.2.0", + "markdown-it": "^13.0.1", + "moment": "^2.29.4", + "moment-timezone": "^0.5.41", + "ngeohash": "^0.6.3", + "node-forge": "^1.3.1", + "node-md6": "^0.1.0", + "nodom": "^2.4.0", + "notepack.io": "^3.0.1", + "ntlm": "^0.1.3", + "nwmatcher": "^1.4.4", + "otp": "0.1.3", + "path": "^0.12.7", + "popper.js": "^1.16.1", + "process": "^0.11.10", + "protobufjs": "^7.2.2", + "qr-image": "^3.2.0", + "reflect-metadata": "^0.1.13", + "scryptsy": "^2.1.0", + "snackbarjs": "^1.1.0", + "sortablejs": "^1.15.0", + "split.js": "^1.6.5", + "ssdeep.js": "0.0.3", + "stream-browserify": "^3.0.0", + "tesseract.js": "3.0.3", + "ua-parser-js": "^1.0.34", + "unorm": "^1.6.0", + "utf8": "^3.0.0", + "vkbeautify": "^0.99.3", + "xmldom": "^0.6.0", + "xpath": "0.0.32", + "xregexp": "^5.1.1", + "zlibjs": "^0.3.1" + }, + "devDependencies": { + "@babel/core": "^7.21.0", + "@babel/eslint-parser": "^7.19.1", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-transform-runtime": "^7.21.0", + "@babel/preset-env": "^7.20.2", + "@babel/runtime": "^7.21.0", + "@codemirror/commands": "^6.2.1", + "@codemirror/language": "^6.6.0", + "@codemirror/search": "^6.2.3", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.9.2", + "autoprefixer": "^10.4.13", + "babel-loader": "^9.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-transform-builtin-extend": "1.1.2", + "base64-loader": "^1.0.0", + "chromedriver": "^121.0.0", + "cli-progress": "^3.12.0", + "colors": "^1.4.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.29.0", + "css-loader": "6.7.3", + "eslint": "^8.35.0", + "grunt": "^1.6.1", + "grunt-chmod": "~1.1.1", + "grunt-concurrent": "^3.0.0", + "grunt-contrib-clean": "~2.0.1", + "grunt-contrib-connect": "^3.0.0", + "grunt-contrib-copy": "~1.0.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-eslint": "^24.0.1", + "grunt-exec": "~3.0.0", + "grunt-webpack": "^5.0.0", + "grunt-zip": "^0.20.0", + "html-webpack-plugin": "^5.5.0", + "imports-loader": "^4.0.1", + "mini-css-extract-plugin": "2.7.3", + "modify-source-webpack-plugin": "^3.0.0", + "nightwatch": "^2.6.16", + "postcss": "^8.4.21", + "postcss-css-variables": "^0.18.0", + "postcss-import": "^15.1.0", + "postcss-loader": "^7.0.2", + "prompt": "^1.3.0", + "sitemap": "^7.1.1", + "terser": "^5.16.6", + "webpack": "^5.76.0", + "webpack-bundle-analyzer": "^4.8.0", + "webpack-dev-server": "4.11.1", + "webpack-node-externals": "^3.0.0", + "worker-loader": "^3.0.8" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@astronautlabs/amf": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", + "integrity": "sha512-cJgbXW45TIDLQf2hiHqDoRfmeRy5u9Z4npr7sZfBThvbp5cbqDieTWaJTu91cUAj35/u87OHZijLTbMO18ZIow==", + "dependencies": { + "@astronautlabs/bitstream": "^4.0.0" + }, + "engines": { + "node": "^14" + } + }, + "node_modules/@astronautlabs/bitstream": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", + "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", + "peerDependencies": { + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "dependencies": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", + "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/polyfill": { + "version": "7.12.1", + "license": "MIT", + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/polyfill/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.17.8", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@blu3r4y/lzma": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@blu3r4y/lzma/-/lzma-2.3.3.tgz", + "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==", + "bin": { + "lzma.js": "bin/lzma.js" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", + "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", + "dev": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "dev": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/search": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", + "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", + "dev": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", + "dev": true + }, + "node_modules/@codemirror/view": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", + "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", + "dev": true, + "dependencies": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" + "url": "https://github.com/sponsors/feross" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "node_modules/@jimp/core/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", - "dev": true - }, - "node_modules/@lezer/highlight": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz", - "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==", - "dev": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@lezer/lr": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz", - "integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==", - "dev": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@nightwatch/chai": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "4.0.1", - "loupe": "2.3.4", - "pathval": "1.1.1", - "type-detect": "4.0.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@nightwatch/html-reporter-template": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", - "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "dev": true, - "license": "MIT" - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@testim/chrome-version": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", - "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", - "dev": true - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "17.0.23", - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sax": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true, - "license": "ISC" - }, - "node_modules/@wavesenterprise/crypto-gost-js": { - "version": "2.1.0-RC1", - "resolved": "https://registry.npmjs.org/@wavesenterprise/crypto-gost-js/-/crypto-gost-js-2.1.0-RC1.tgz", - "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/accepts": { - "version": "1.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-to-html": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", - "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", - "dev": true, - "dependencies": { - "entities": "^2.2.0" - }, - "bin": { - "ansi-to-html": "bin/ansi-to-html" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/argon2-browser": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/argon2-browser/-/argon2-browser-1.18.0.tgz", - "integrity": "sha512-ImVAGIItnFnvET1exhsQB7apRztcoC5TnlSqernMJDUjbc/DLq3UEYeXFrLPrlaIl8cVfwnXb6wX2KpFf2zxHw==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0" - }, - "node_modules/array-each": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/array-slice": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/arrive": { - "version": "2.4.1", - "license": "MIT" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/assert": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "util": "0.10.3" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/async": { - "version": "3.2.3", - "dev": true, - "license": "MIT" - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/avsc": { - "version": "5.7.7", - "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", - "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==", - "engines": { - "node": ">=0.11" - } - }, - "node_modules/axe-core": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", - "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.2", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-transform-builtin-extend": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.2.0", - "babel-template": "^6.3.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "dev": true, - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-template": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-types": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "dev": true, - "license": "MIT", - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/base64-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64-loader/-/base64-loader-1.0.0.tgz", - "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==", - "dev": true - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/bcryptjs": { - "version": "2.4.3", - "license": "MIT" - }, - "node_modules/big.js": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "license": "MIT" - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "license": "MIT" - }, - "node_modules/bn": { - "version": "1.0.5", - "license": "BSD-3-Clause" - }, - "node_modules/bn.js": { - "version": "5.2.0", - "license": "MIT" - }, - "node_modules/body": { - "version": "5.1.0", - "dev": true, - "dependencies": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "node_modules/body-parser": { - "version": "1.19.2", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/depd": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.9.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/bonjour-service": { - "version": "1.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.4" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" - } - }, - "node_modules/bootstrap-colorpicker": { - "version": "3.4.0", - "license": "MIT", - "dependencies": { - "bootstrap": ">=4.0", - "jquery": ">=2.2", - "popper.js": ">=1.10" - } - }, - "node_modules/bootstrap-material-design": { - "version": "4.1.3", - "license": "MIT" - }, - "node_modules/boxen": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "license": "ISC", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/bson/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/bytes": { - "version": "1.0.0", - "dev": true - }, - "node_modules/bzip-deflate": { - "version": "1.0.0", - "license": "CC-SA 3.0" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001439", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", - "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/cbor": { - "version": "8.1.0", - "license": "MIT", - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/chai-nightwatch": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "1.1.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/chi-squared": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "gamma": "^1.0.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/chromedriver": { - "version": "121.0.0", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-121.0.0.tgz", - "integrity": "sha512-ZIKEdZrQAfuzT/RRofjl8/EZR99ghbdBXNTOcgJMKGP6N/UL6lHUX4n6ONWBV18pDvDFfQJ0x58h5AdOaXIOMw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@testim/chrome-version": "^1.1.4", - "axios": "^1.6.5", - "compare-versions": "^6.1.0", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.2" - }, - "bin": { - "chromedriver": "bin/chromedriver" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ci-info": { - "version": "3.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clean-css": { - "version": "5.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", - "dev": true, - "dependencies": { - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/codepage": { - "version": "1.15.0", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/colorette": { - "version": "2.0.16", - "dev": true, - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/compare-versions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/connect": { - "version": "3.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect-livereload": { - "version": "0.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/content-type": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/continuable-cache": { - "version": "0.3.1", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.21.1", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crelt": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", - "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-api": { - "version": "0.8.5", - "license": "MIT" - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-js": { - "version": "4.1.1", - "license": "MIT" - }, - "node_modules/css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/ctph.js": { - "version": "0.0.5" - }, - "node_modules/cycle": { - "version": "1.0.3", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/d3": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", - "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.2", - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hexbin": { - "version": "0.2.2", - "license": "BSD-3-Clause" - }, - "node_modules/d3-hierarchy": { - "version": "3.1.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.1.0", - "license": "ISC", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/deep-eql": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-for-each": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.isplainobject": "^4.0.6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "license": "MIT" - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delaunator": { - "version": "5.0.0", - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff": { - "version": "5.1.0", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "4.3.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexify/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.8", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error": { - "version": "7.2.1", - "dev": true, - "dependencies": { - "string-template": "~0.2.1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "dev": true, - "license": "MIT" - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - }, - "node_modules/es6-polyfills": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es6-polyfills/-/es6-polyfills-2.0.0.tgz", - "integrity": "sha512-daIt/MHqdYmxnuo5KcwAU9EqSxvaDRyajYOUU9fy+CLuU5+RFhpNCnL3oPsq7n+g673F3z/Vb+FXo/EmQjlkbw==", - "deprecated": "Use @natlibfi/es6-polyfills instead", - "dependencies": { - "es6-object-assign": "^1.0.3", - "es6-promise-polyfill": "^1.2.0" - } - }, - "node_modules/es6-promise-polyfill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", - "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==" - }, - "node_modules/es6-promisify": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", - "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter2": { - "version": "0.4.14", - "dev": true, - "license": "MIT" - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12" - }, - "node_modules/exit": { - "version": "0.1.2", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.17.3", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/destroy": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/http-errors": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.9.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/express/node_modules/send": { - "version": "0.17.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/send/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/serve-static": { - "version": "1.14.2", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/eyes": { - "version": "0.1.8", - "dev": true, - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.13.0", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-saver": { - "version": "2.0.5", - "license": "MIT" - }, - "node_modules/file-sync-cmp": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { + { "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/gamma": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/gaze": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/geodesy": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getobject": { - "version": "1.0.2", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "13.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globule": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "dev": true, - "license": "ISC" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/grunt": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", - "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", - "dev": true, - "dependencies": { - "dateformat": "~4.6.2", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~5.0.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.3", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.6.3", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "nopt": "~3.0.6" - }, - "bin": { - "grunt": "bin/grunt" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/grunt-chmod": { - "version": "1.1.1", - "dev": true, - "dependencies": { - "shelljs": "^0.5.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/grunt-cli": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "bin": { - "grunt": "bin/grunt" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-cli/node_modules/nopt": { - "version": "4.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/grunt-concurrent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^2.0.1", - "async": "^3.1.0", - "indent-string": "^4.0.0", - "pad-stream": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, - "node_modules/grunt-contrib-clean": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.3", - "rimraf": "^2.6.2" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "grunt": ">=0.4.5" - } - }, - "node_modules/grunt-contrib-clean/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/grunt-contrib-connect": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.0", - "connect": "^3.7.0", - "connect-livereload": "^0.6.1", - "morgan": "^1.10.0", - "node-http2": "^4.0.1", - "opn": "^6.0.0", - "portscanner": "^2.2.0", - "serve-index": "^1.9.1", - "serve-static": "^1.14.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-contrib-copy": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/chalk": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/grunt-contrib-watch": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-watch/node_modules/async": { - "version": "2.6.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/grunt-eslint": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", - "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "eslint": "^8.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, - "node_modules/grunt-eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/grunt-eslint/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/grunt-eslint/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/grunt-eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/grunt-eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-exec": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "grunt": ">=0.4" - } - }, - "node_modules/grunt-known-options": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-legacy-log": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/grunt-legacy-log-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-legacy-log/node_modules/colors": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/grunt-legacy-util": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-retro": { - "version": "0.6.4", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/grunt-webpack": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-for-each": "^3.0.0", - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/grunt-zip": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", - "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", - "dev": true, - "dependencies": { - "grunt-retro": "~0.6.0", - "jszip": "~2.7.0" - }, - "bin": { - "grunt-zip": "bin/grunt-zip" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/grunt/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/grunt/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/grunt/node_modules/minimatch": { - "version": "3.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/grunt/node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", - "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hooker": { - "version": "0.2.3", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "dev": true, - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "1.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/http-parser-js": { - "version": "0.5.6", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/https-browserify": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iced-error": { - "version": "0.0.13" - }, - "node_modules/iced-lock": { - "version": "1.1.0", - "dependencies": { - "iced-runtime": "^1.0.0" - } - }, - "node_modules/iced-runtime": { - "version": "1.0.4" - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idb-keyval": { - "version": "3.2.0", - "license": "Apache-2.0" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.2.0", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imports-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", - "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1", - "strip-comments": "^2.0.1" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/imports-loader/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" - }, - "node_modules/internmap": { - "version": "2.0.3", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/interpret": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/invariant": { - "version": "2.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-electron": { - "version": "2.2.1", - "license": "MIT" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-glob": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "license": "MIT" - }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is2": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - }, - "engines": { - "node": ">=v0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/jake": { - "version": "10.8.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "node_modules/jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" - }, - "node_modules/js-crc": { - "version": "0.2.0", - "license": "MIT" - }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jsesc": { - "version": "3.0.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath-plus": { - "version": "7.2.0", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/jsqr": { - "version": "1.4.0", - "license": "Apache-2.0" - }, - "node_modules/jsrsasign": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", - "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, - "node_modules/jszip": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", - "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", - "dev": true, - "dependencies": { - "pako": "~1.0.2" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kbpgp": { - "version": "2.1.15", - "license": "BSD-3-Clause", - "dependencies": { - "bn": "^1.0.5", - "bzip-deflate": "^1.0.0", - "deep-equal": "^1.1.0", - "iced-error": "0.0.13", - "iced-lock": "^1.0.2", - "iced-runtime": "^1.0.4", - "keybase-ecurve": "^1.0.1", - "keybase-nacl": "^1.1.2", - "minimist": "^1.2.0", - "pgp-utils": "0.0.35", - "purepack": "^1.0.5", - "triplesec": "^4.0.3", - "tweetnacl": "^0.13.1" - } - }, - "node_modules/keybase-ecurve": { - "version": "1.0.1", - "dependencies": { - "bn": "^1.0.4" - } - }, - "node_modules/keybase-nacl": { - "version": "1.1.4", - "license": "BSD-3-Clause", - "dependencies": { - "iced-runtime": "^1.0.2", - "tweetnacl": "^0.13.1", - "uint64be": "^1.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libbzip2-wasm": { - "version": "0.0.4", - "license": "ISC" - }, - "node_modules/libyara-wasm": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.2.1.tgz", - "integrity": "sha512-PNqUNWnwjZLe55iA8Rv6vLQRjSdO2OnVg24aRE8v+ytR8CRB8agIG6pS9h2VQejuJP1A/uR4pwcBggUxoNC7DA==" - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/liftup": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "extend": "^3.0.2", - "findup-sync": "^4.0.0", - "fined": "^1.2.0", - "flagged-respawn": "^1.0.1", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.1", - "rechoir": "^0.7.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/liftup/node_modules/findup-sync": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/linkify-it": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/livereload-js": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash._arraycopy": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._arrayeach": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._baseassign": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "node_modules/lodash._baseclone": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._basefor": { - "version": "3.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._bindcallback": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clone": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.defaultsdeep": { - "version": "4.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", - "dev": true - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-message-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/loglevel-message-prefix/-/loglevel-message-prefix-3.0.0.tgz", - "integrity": "sha512-/cBEOqsuU0vJsFm4n92R7h6mkiKqt8vh+JOmW722DTZVVD7egEpVOx66re3vWxO7pii3B4eQuqm2qfqq5cAs0w==", - "deprecated": "Use @natlibfi/loglevel-message-prefix instead", - "dependencies": { - "es6-polyfills": "^2.0.0", - "loglevel": "^1.4.0" - } - }, - "node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/lz4js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", - "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "13.0.1", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "3.0.1", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.1", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/mime": { - "version": "1.6.0", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", - "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "license": "MIT" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkpath": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha": { - "version": "9.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha/node_modules/diff": { - "version": "5.0.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/modify-source-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/modify-source-webpack-plugin/-/modify-source-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-m2g6QEittzzcde0PhgQtOwRywjqo8Q+vMLHbNoH2JDEFE/AlTBWvtNQrp17xbqDUXIueLljm4bhE5OninatHYw==", - "deprecated": "3.x is no longer supported and includes critical bugs, please upgrade to latest version.", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - } - }, - "node_modules/modify-source-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.41", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", - "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", - "dependencies": { - "moment": "^2.29.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/more-entropy": { - "version": "0.0.7", - "dependencies": { - "iced-runtime": ">=0.0.1" - } - }, - "node_modules/morgan": { - "version": "1.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/mrmime": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "license": "ISC" - }, - "node_modules/nanoid": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/ngeohash": { - "version": "0.6.3", - "license": "MIT", - "engines": { - "node": ">=v0.2.0" - } - }, - "node_modules/nightwatch": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", - "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", - "dev": true, - "dependencies": { - "@nightwatch/chai": "5.0.2", - "@nightwatch/html-reporter-template": "0.1.4", - "ansi-to-html": "0.7.2", - "assertion-error": "1.1.0", - "boxen": "5.1.2", - "chai-nightwatch": "0.5.3", - "ci-info": "3.3.0", - "cli-table3": "^0.6.3", - "didyoumean": "1.2.2", - "dotenv": "10.0.0", - "ejs": "3.1.8", - "envinfo": "7.8.1", - "fs-extra": "^10.1.0", - "glob": "^7.2.3", - "jsdom": "19.0.0", - "lodash.clone": "3.0.3", - "lodash.defaultsdeep": "4.6.1", - "lodash.escape": "4.0.1", - "lodash.merge": "4.6.2", - "lodash.pick": "4.4.0", - "minimatch": "3.1.2", - "minimist": "1.2.6", - "mkpath": "1.0.0", - "mocha": "9.2.2", - "nightwatch-axe-verbose": "^2.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "selenium-webdriver": "4.6.1", - "semver": "7.3.5", - "stacktrace-parser": "0.1.10", - "strip-ansi": "6.0.1", - "untildify": "^4.0.0", - "uuid": "8.3.2" - }, - "bin": { - "nightwatch": "bin/nightwatch" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "@cucumber/cucumber": "*", - "chromedriver": "*", - "geckodriver": "*" - }, - "peerDependenciesMeta": { - "@cucumber/cucumber": { - "optional": true - }, - "chromedriver": { - "optional": true - }, - "geckodriver": { - "optional": true - } - } - }, - "node_modules/nightwatch-axe-verbose": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", - "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", - "dev": true, - "dependencies": { - "axe-core": "^4.6.1" - } - }, - "node_modules/nightwatch/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nightwatch/node_modules/semver": { - "version": "7.3.5", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-http2": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "assert": "1.4.1", - "events": "1.1.1", - "https-browserify": "0.0.1", - "setimmediate": "^1.0.5", - "stream-browserify": "2.0.1", - "timers-browserify": "2.0.2", - "url": "^0.11.0", - "websocket-stream": "^5.0.1" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/node-http2/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/node-http2/node_modules/stream-browserify": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/node-http2/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/node-md6": { - "version": "0.1.0", - "license": "CC0-1.0" - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nodom": { - "version": "2.4.0", - "license": "ISC" - }, - "node_modules/nofilter": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "3.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/notepack.io": { - "version": "3.0.1", - "license": "MIT" - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.0.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/ntlm": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ntlm/-/ntlm-0.1.3.tgz", - "integrity": "sha512-pPlHxhAegZP4QAaOYd51vRd6VXTGfF7VLKJwuwN0iEB1aIi3SnqXYuS/bH/6wWBOq+Ehdil49mHm1Nseon085w==", - "engines": [ - "node" - ] - }, - "node_modules/nwmatcher": { - "version": "1.4.4", - "license": "MIT" - }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open/node_modules/is-wsl": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "license": "MIT", - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/opn": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/levn": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/prelude-ls": { - "version": "1.1.2", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/type-check": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/otp": { - "version": "0.1.3", - "dependencies": { - "thirty-two": "^0.0.2" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pad-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pumpify": "^1.3.3", - "split2": "^2.1.1", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "license": "(MIT AND Zlib)" - }, - "node_modules/param-case": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "license": "ISC", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path": { - "version": "0.12.7", - "license": "MIT", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/path-root": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/pgp-utils": { - "version": "0.0.35", - "dependencies": { - "iced-error": ">=0.0.8", - "iced-runtime": ">=0.0.1" - } - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-css-variables": { - "version": "0.18.0", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "escape-string-regexp": "^1.0.3", - "extend": "^3.0.1" - }, - "peerDependencies": { - "postcss": "^8.2.6" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.9", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.4", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/progress": { - "version": "1.1.8", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompt": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@colors/colors": "1.5.0", - "async": "3.2.3", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/purepack": { - "version": "1.0.6", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/qr-image": { - "version": "3.2.0", - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.5.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "1", - "string_decoder": "0.10" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/raw-body/node_modules/string_decoder": { - "version": "0.10.31", - "dev": true, - "license": "MIT" - }, - "node_modules/read": { - "version": "1.0.7", - "dev": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/revalidator": { - "version": "0.1.8", - "dev": true, - "license": "Apache 2.0", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "license": "Unlicense" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "license": "BSD-3-Clause" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/safe-json-parse": { - "version": "1.0.1", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.2.4", - "license": "ISC" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/scryptsy": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/select-hose": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/selenium-webdriver": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", - "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", - "dev": true, - "dependencies": { - "jszip": "^3.10.0", - "tmp": "^0.2.1", - "ws": ">=8.7.0" - }, - "engines": { - "node": ">= 14.20.0" - } - }, - "node_modules/selenium-webdriver/node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/selenium-webdriver/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/selenium-webdriver/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/on-finished": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.5.3", - "dev": true, - "license": "BSD*", - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/sirv": { - "version": "1.0.19", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sitemap": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "bin": { - "sitemap": "dist/cli.js" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" - } - }, - "node_modules/snackbarjs": { - "version": "1.1.0", - "license": "ISC" - }, - "node_modules/sockjs": { - "version": "0.3.24", - "dev": true, - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs/node_modules/faye-websocket": { - "version": "0.11.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sortablejs": { - "version": "1.15.0", - "license": "MIT" - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/split.js": { - "version": "1.6.5", - "license": "MIT" - }, - "node_modules/split2": { - "version": "2.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "through2": "^2.0.2" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/ssdeep.js": { - "version": "0.0.3" - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/string-template": { - "version": "0.2.1", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/style-mod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", - "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", - "dev": true - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tcp-port-used": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4.3.1", - "is2": "^2.0.6" - } - }, - "node_modules/tcp-port-used/node_modules/debug": { - "version": "4.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/tesseract.js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", - "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", - "hasInstallScript": true, - "dependencies": { - "babel-eslint": "^10.1.0", - "bmp-js": "^0.1.0", - "file-type": "^12.4.1", - "idb-keyval": "^3.2.0", - "is-electron": "^2.2.0", - "is-url": "^1.2.4", - "node-fetch": "^2.6.0", - "opencollective-postinstall": "^2.0.2", - "regenerator-runtime": "^0.13.3", - "resolve-url": "^0.2.1", - "tesseract.js-core": "^3.0.2", - "wasm-feature-detect": "^1.2.11", - "zlibjs": "^0.3.1" - } - }, - "node_modules/tesseract.js-core": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", - "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" - }, - "node_modules/tesseract.js/node_modules/file-type": { - "version": "12.4.2", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "license": "MIT" - }, - "node_modules/thirty-two": { - "version": "0.0.2", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/timers-browserify": { - "version": "2.0.2", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "node_modules/tiny-lr": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - } - }, - "node_modules/tiny-lr/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/totalist": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/triplesec": { - "version": "4.0.3", - "dependencies": { - "iced-error": ">=0.0.9", - "iced-lock": "^1.0.1", - "iced-runtime": "^1.0.2", - "more-entropy": ">=0.0.7", - "progress": "~1.1.2", - "uglify-js": "^3.1.9" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/tweetnacl": { - "version": "0.13.3", - "license": "Public domain" - }, - "node_modules/type-check": { - "version": "0.4.0", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "license": "MIT" - }, - "node_modules/uglify-js": { - "version": "3.15.3", - "license": "BSD-2-Clause", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uint64be": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/ultron": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore.string": { - "version": "3.3.6", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "^1.1.1", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unorm": { - "version": "1.6.0", - "license": "MIT or GPL-2.0", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/utf8": { - "version": "3.0.0", - "license": "MIT" - }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dependencies": { - "pako": "^1.0.5" - } - }, - "node_modules/util": { - "version": "0.10.3", - "license": "MIT", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.1", - "license": "ISC" - }, - "node_modules/utila": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8flags": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vkbeautify": { - "version": "0.99.3", - "license": "MIT" - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-keyname": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", - "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", - "dev": true - }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/wasm-feature-detect": { - "version": "1.2.11", - "license": "Apache-2.0" - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "node_modules/webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", - "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "0.5.7", - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/events": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-stream": { - "version": "5.5.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "^3.2.0", - "xtend": "^4.0.0" - } - }, - "node_modules/websocket-stream/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/websocket-stream/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/websocket-stream/node_modules/ws": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/winston": { - "version": "2.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/winston/node_modules/async": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/winston/node_modules/colors": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/worker-loader": { - "version": "3.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/worker-loader/node_modules/schema-utils": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xmldom": { - "version": "0.6.0", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/xpath": { - "version": "0.0.32", - "license": "MIT", - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/xregexp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", - "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", - "dependencies": { - "@babel/runtime-corejs3": "^7.16.5" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zlibjs": { - "version": "0.3.1", - "license": "MIT", - "engines": { - "node": "*" + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@lezer/common": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", + "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", + "dev": true + }, + "node_modules/@lezer/highlight": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz", + "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz", + "integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nightwatch/chai": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "4.0.1", + "loupe": "2.3.4", + "pathval": "1.1.1", + "type-detect": "4.0.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nightwatch/html-reporter-template": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", + "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "dev": true, + "license": "MIT" + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "dev": true + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "17.0.23", + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.9.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/@wavesenterprise/crypto-gost-js": { + "version": "2.1.0-RC1", + "resolved": "https://registry.npmjs.org/@wavesenterprise/crypto-gost-js/-/crypto-gost-js-2.1.0-RC1.tgz", + "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true } } }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "dependencies": { + "entities": "^2.2.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/argon2-browser": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/argon2-browser/-/argon2-browser-1.18.0.tgz", + "integrity": "sha512-ImVAGIItnFnvET1exhsQB7apRztcoC5TnlSqernMJDUjbc/DLq3UEYeXFrLPrlaIl8cVfwnXb6wX2KpFf2zxHw==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/array-each": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/array-slice": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrive": { + "version": "2.4.1", + "license": "MIT" + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/assert": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "util": "0.10.3" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/async": { + "version": "3.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@astronautlabs/amf": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", - "integrity": "sha512-cJgbXW45TIDLQf2hiHqDoRfmeRy5u9Z4npr7sZfBThvbp5cbqDieTWaJTu91cUAj35/u87OHZijLTbMO18ZIow==", - "requires": { - "@astronautlabs/bitstream": "^4.0.0" - } - }, - "@astronautlabs/bitstream": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", - "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", - "requires": {} - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - } - }, - "@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", - "dev": true, - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", - "requires": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2" - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", - "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/polyfill": { - "version": "7.12.1", - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "core-js": { - "version": "2.6.12" - } - } - }, - "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/runtime-corejs3": { - "version": "7.17.8", - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@blu3r4y/lzma": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@blu3r4y/lzma/-/lzma-2.3.3.tgz", - "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==" - }, - "@codemirror/commands": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", - "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", - "dev": true, - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.2.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "@codemirror/language": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", - "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", - "dev": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "@codemirror/search": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", - "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", - "dev": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/state": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", - "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", - "dev": true - }, - "@codemirror/view": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", - "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", - "dev": true, - "requires": { - "@codemirror/state": "^6.1.4", - "style-mod": "^4.0.0", - "w3c-keyname": "^2.2.4" - } - }, - "@colors/colors": { - "version": "1.5.0", - "dev": true - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - } - }, - "@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - } - }, - "@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - } - }, - "@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - } - }, - "@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - } - }, - "@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - } - }, - "@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - } - }, - "@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "requires": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - } - }, - "@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - } - }, - "@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "requires": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.1" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "dev": true - }, - "@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", - "dev": true - }, - "@lezer/highlight": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz", - "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==", - "dev": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lezer/lr": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz", - "integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==", - "dev": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "requires": { - "eslint-scope": "5.1.1" - } - }, - "@nightwatch/chai": { - "version": "5.0.2", - "dev": true, - "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "4.0.1", - "loupe": "2.3.4", - "pathval": "1.1.1", - "type-detect": "4.0.8" - } - }, - "@nightwatch/html-reporter-template": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", - "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "dev": true - }, - "@protobufjs/aspromise": { - "version": "1.1.2" - }, - "@protobufjs/base64": { - "version": "1.1.2" - }, - "@protobufjs/codegen": { - "version": "2.0.4" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2" - }, - "@protobufjs/inquire": { - "version": "1.1.0" - }, - "@protobufjs/path": { - "version": "1.1.2" - }, - "@protobufjs/pool": { - "version": "1.1.0" - }, - "@protobufjs/utf8": { - "version": "1.1.0" - }, - "@testim/chrome-version": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", - "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", - "dev": true - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.4.1", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "dev": true - }, - "@types/http-proxy": { - "version": "1.17.8", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "dev": true - }, - "@types/node": { - "version": "17.0.23" - }, - "@types/parse-json": { - "version": "4.0.0", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "dev": true - }, - "@types/retry": { - "version": "0.12.1", - "dev": true - }, - "@types/sax": { - "version": "1.2.4", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/serve-index": { - "version": "1.9.1", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/ws": { - "version": "8.5.3", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yauzl": { - "version": "2.9.2", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true - }, - "@wavesenterprise/crypto-gost-js": { - "version": "2.1.0-RC1", - "resolved": "https://registry.npmjs.org/@wavesenterprise/crypto-gost-js/-/crypto-gost-js-2.1.0-RC1.tgz", - "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - } - } - }, - "acorn-import-assertions": { - "version": "1.8.0", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - }, - "ansi-align": { - "version": "3.0.1", - "dev": true, - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "dev": true - }, - "ansi-html-community": { - "version": "0.0.8", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", - "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", - "dev": true, - "requires": { - "entities": "^2.2.0" - } - }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.1", - "dev": true - }, - "argon2-browser": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/argon2-browser/-/argon2-browser-1.18.0.tgz", - "integrity": "sha512-ImVAGIItnFnvET1exhsQB7apRztcoC5TnlSqernMJDUjbc/DLq3UEYeXFrLPrlaIl8cVfwnXb6wX2KpFf2zxHw==" - }, - "argparse": { - "version": "2.0.1" - }, - "array-each": { - "version": "1.0.1", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "dev": true - }, - "array-slice": { - "version": "1.1.0", - "dev": true - }, - "arrify": { - "version": "2.0.1", - "dev": true - }, - "arrive": { - "version": "2.4.1" - }, - "asn1.js": { - "version": "5.4.1", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "assert": { - "version": "1.4.1", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assertion-error": { - "version": "1.1.0", - "dev": true - }, - "async": { - "version": "3.2.3", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "avsc": { - "version": "5.7.7", - "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", - "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==" - }, - "axe-core": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", - "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", - "dev": true - }, - "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "dev": true - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0" - } - } - }, - "babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.2", - "schema-utils": "^4.0.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "babel-plugin-transform-builtin-extend": { - "version": "1.1.2", - "dev": true, - "requires": { - "babel-runtime": "^6.2.0", - "babel-template": "^6.3.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "dev": true - } - } - }, - "babel-template": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "dev": true - }, - "balanced-match": { - "version": "1.0.2" - }, - "base64-js": { - "version": "1.5.1" - }, - "base64-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64-loader/-/base64-loader-1.0.0.tgz", - "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==", - "dev": true - }, - "basic-auth": { - "version": "2.0.1", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "batch": { - "version": "0.6.1", - "dev": true - }, - "bcryptjs": { - "version": "2.4.3" - }, - "big.js": { - "version": "5.2.2", - "dev": true - }, - "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" - }, - "binary-extensions": { - "version": "2.2.0", - "dev": true - }, - "bl": { - "version": "4.1.0", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "blakejs": { - "version": "1.2.1" - }, - "bmp-js": { - "version": "0.1.0" - }, - "bn": { - "version": "1.0.5" - }, - "bn.js": { - "version": "5.2.0" - }, - "body": { - "version": "5.1.0", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "body-parser": { - "version": "1.19.2", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "iconv-lite": { - "version": "0.4.24", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "qs": { - "version": "6.9.7", - "dev": true - }, - "raw-body": { - "version": "2.4.3", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.12", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.4" - } - }, - "boolbase": { - "version": "1.0.0", - "dev": true - }, - "bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "requires": {} - }, - "bootstrap-colorpicker": { - "version": "3.4.0", - "requires": { - "bootstrap": ">=4.0", - "jquery": ">=2.2", - "popper.js": ">=1.10" - } - }, - "bootstrap-material-design": { - "version": "4.1.3" - }, - "boxen": { - "version": "5.1.2", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0" - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1" - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "requires": { - "buffer": "^5.6.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "buffer": { - "version": "6.0.3", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "dev": true - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" - }, - "buffer-equal-constant-time": { - "version": "1.0.1" - }, - "buffer-from": { - "version": "1.1.2", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3" - }, - "bytes": { - "version": "1.0.0", - "dev": true - }, - "bzip-deflate": { - "version": "1.0.0" - }, - "call-bind": { - "version": "1.0.2", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0" - }, - "camel-case": { - "version": "4.1.2", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.3.0", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001439", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", - "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", - "dev": true - }, - "cbor": { - "version": "8.1.0", - "requires": { - "nofilter": "^3.1.0" - } - }, - "chai-nightwatch": { - "version": "0.5.3", - "dev": true, - "requires": { - "assertion-error": "1.1.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "dev": true - }, - "chi-squared": { - "version": "1.1.0", - "requires": { - "gamma": "^1.0.0" - } - }, - "chokidar": { - "version": "3.5.3", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "dev": true - }, - "chromedriver": { - "version": "121.0.0", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-121.0.0.tgz", - "integrity": "sha512-ZIKEdZrQAfuzT/RRofjl8/EZR99ghbdBXNTOcgJMKGP6N/UL6lHUX4n6ONWBV18pDvDFfQJ0x58h5AdOaXIOMw==", - "dev": true, - "requires": { - "@testim/chrome-version": "^1.1.4", - "axios": "^1.6.5", - "compare-versions": "^6.1.0", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^1.1.0", - "tcp-port-used": "^1.0.2" - } - }, - "ci-info": { - "version": "3.3.0", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clean-css": { - "version": "5.2.4", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "cli-boxes": { - "version": "2.2.1", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", - "dev": true, - "requires": { - "string-width": "^4.2.3" - } - }, - "cli-spinners": { - "version": "2.6.1", - "dev": true - }, - "cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "dev": true - }, - "codepage": { - "version": "1.15.0" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "colorette": { - "version": "2.0.16", - "dev": true - }, - "colors": { - "version": "1.4.0", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "7.2.0" - }, - "commondir": { - "version": "1.0.1", - "dev": true - }, - "compare-versions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1" - }, - "connect": { - "version": "3.7.0", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true - }, - "connect-livereload": { - "version": "0.6.1", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "dev": true - }, - "continuable-cache": { - "version": "0.3.1", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "dev": true - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - } - }, - "core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", - "dev": true - }, - "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-js-pure": { - "version": "3.21.1" - }, - "core-util-is": { - "version": "1.0.2", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "create-hash": { - "version": "1.2.0", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "crelt": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", - "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-api": { - "version": "0.8.5" - }, - "crypto-browserify": { - "version": "3.12.0", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-js": { - "version": "4.1.1" - }, - "css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "css-select": { - "version": "4.3.0", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.0.1", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "ctph.js": { - "version": "0.0.5" - }, - "cycle": { - "version": "1.0.3", - "dev": true - }, - "d3": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", - "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0" - }, - "d3-brush": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "requires": { - "d3-array": "^3.2.0" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1" - }, - "d3-drag": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "d3-ease": { - "version": "3.0.1" - }, - "d3-fetch": { - "version": "3.0.1", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-force": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0" - }, - "d3-geo": { - "version": "3.0.1", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hexbin": { - "version": "0.2.2" - }, - "d3-hierarchy": { - "version": "3.1.1" - }, - "d3-interpolate": { - "version": "3.0.1", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.0.1" - }, - "d3-polygon": { - "version": "3.0.1" - }, - "d3-quadtree": { - "version": "3.0.1" - }, - "d3-random": { - "version": "3.0.1" - }, - "d3-scale": { - "version": "4.0.2", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0" - }, - "d3-shape": { - "version": "3.1.0", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.0.0", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1" - }, - "d3-transition": { - "version": "3.0.1", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "deep-eql": { - "version": "4.0.1", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-for-each": { - "version": "3.0.0", - "dev": true, - "requires": { - "lodash.isplainobject": "^4.0.6" - } - }, - "deep-is": { - "version": "0.1.4" - }, - "default-gateway": { - "version": "6.0.3", - "dev": true, - "requires": { - "execa": "^5.0.0" - } - }, - "defaults": { - "version": "1.0.3", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "delaunator": { - "version": "5.0.0", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "dev": true - }, - "didyoumean": { - "version": "1.2.2", - "dev": true - }, - "diff": { - "version": "5.1.0" - }, - "diffie-hellman": { - "version": "5.0.3", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "dir-glob": { - "version": "3.0.1", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "dev": true - }, - "dns-packet": { - "version": "5.3.1", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "doctrine": { - "version": "3.0.0", - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.3.2", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "domelementtype": { - "version": "2.2.0", - "dev": true - }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - } - } - }, - "domhandler": { - "version": "4.3.1", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dotenv": { - "version": "10.0.0", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "dev": true - }, - "ejs": { - "version": "3.1.8", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "end-of-stream": { - "version": "1.4.4", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "dev": true - }, - "error": { - "version": "7.2.1", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } - }, - "error-ex": { - "version": "1.3.2", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "dev": true - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - }, - "es6-polyfills": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es6-polyfills/-/es6-polyfills-2.0.0.tgz", - "integrity": "sha512-daIt/MHqdYmxnuo5KcwAU9EqSxvaDRyajYOUU9fy+CLuU5+RFhpNCnL3oPsq7n+g673F3z/Vb+FXo/EmQjlkbw==", - "requires": { - "es6-object-assign": "^1.0.3", - "es6-promise-polyfill": "^1.2.0" - } - }, - "es6-promise-polyfill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", - "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==" - }, - "es6-promisify": { - "version": "7.0.0" - }, - "escalade": { - "version": "3.1.1", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "escodegen": { - "version": "2.0.0", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "optional": true - } - } - }, - "eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", - "requires": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4" - }, - "escape-string-regexp": { - "version": "4.0.0" - }, - "eslint-scope": { - "version": "7.1.1", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.3.0" - }, - "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "optionator": { - "version": "0.9.1", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "dev": true - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0" - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - } - } - }, - "esprima": { - "version": "4.0.1" - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0" - }, - "esutils": { - "version": "2.0.3" - }, - "etag": { - "version": "1.8.1", - "dev": true - }, - "eventemitter2": { - "version": "0.4.14", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "dev": true - }, - "events": { - "version": "1.1.1", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "dev": true - } - } - }, - "exif-parser": { - "version": "0.1.12" - }, - "exit": { - "version": "0.1.2", - "dev": true - }, - "expand-tilde": { - "version": "2.0.2", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.17.3", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "dev": true - }, - "http-errors": { - "version": "1.8.1", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "qs": { - "version": "6.9.7", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "dev": true - }, - "send": { - "version": "0.17.2", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.2", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - } - }, - "setprototypeof": { - "version": "1.2.0", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "dev": true - }, - "extract-zip": { - "version": "2.0.1", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "eyes": { - "version": "0.1.8", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-glob": { - "version": "3.2.11", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0" - }, - "fast-levenshtein": { - "version": "2.0.6" - }, - "fastq": { - "version": "1.13.0", - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.10.0", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fd-slicer": { - "version": "1.1.0", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-saver": { - "version": "2.0.5" - }, - "file-sync-cmp": { - "version": "0.1.1", - "dev": true - }, - "file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - } - }, - "filelist": { - "version": "1.0.4", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "5.0.0", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "dev": true - }, - "flat": { - "version": "5.0.2" - }, - "flat-cache": { - "version": "3.0.4", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5" - }, - "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0" - }, - "fsevents": { - "version": "2.3.2", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1" - }, - "gamma": { - "version": "1.0.0" - }, - "gaze": { - "version": "1.1.3", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "dev": true - }, - "geodesy": { - "version": "1.1.3" - }, - "get-caller-file": { - "version": "2.0.5", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "5.2.0", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getobject": { - "version": "1.0.2", - "dev": true - }, - "gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "requires": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "glob": { - "version": "7.1.7", - "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": "6.0.2", - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "global-modules": { - "version": "1.0.0", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "11.12.0" - }, - "globby": { - "version": "13.1.1", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "slash": { - "version": "4.0.0", - "dev": true - } - } - }, - "globule": { - "version": "1.3.3", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "dependencies": { - "minimatch": { - "version": "3.0.8", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "graceful-fs": { - "version": "4.2.9", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "growl": { - "version": "1.10.5", - "dev": true - }, - "grunt": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", - "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", - "dev": true, - "requires": { - "dateformat": "~4.6.2", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~5.0.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.3", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.6.3", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "nopt": "~3.0.6" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.8", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "sprintf-js": { - "version": "1.0.3", - "dev": true - } - } - }, - "grunt-chmod": { - "version": "1.1.1", - "dev": true, - "requires": { - "shelljs": "^0.5.3" - } - }, - "grunt-cli": { - "version": "1.4.3", - "dev": true, - "requires": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "grunt-concurrent": { - "version": "3.0.0", - "dev": true, - "requires": { - "arrify": "^2.0.1", - "async": "^3.1.0", - "indent-string": "^4.0.0", - "pad-stream": "^2.0.0" - } - }, - "grunt-contrib-clean": { - "version": "2.0.1", - "dev": true, - "requires": { - "async": "^3.2.3", - "rimraf": "^2.6.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "grunt-contrib-connect": { - "version": "3.0.0", - "dev": true, - "requires": { - "async": "^3.2.0", - "connect": "^3.7.0", - "connect-livereload": "^0.6.1", - "morgan": "^1.10.0", - "node-http2": "^4.0.1", - "opn": "^6.0.0", - "portscanner": "^2.2.0", - "serve-index": "^1.9.1", - "serve-static": "^1.14.1" - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "dev": true - } - } - }, - "grunt-contrib-watch": { - "version": "1.1.0", - "dev": true, - "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "grunt-eslint": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", - "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "eslint": "^8.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "grunt-exec": { - "version": "3.0.0", - "dev": true, - "requires": {} - }, - "grunt-known-options": { - "version": "2.0.0", - "dev": true - }, - "grunt-legacy-log": { - "version": "3.0.0", - "dev": true, - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "dev": true - } - } - }, - "grunt-legacy-log-utils": { - "version": "2.1.0", - "dev": true, - "requires": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "grunt-legacy-util": { - "version": "2.0.1", - "dev": true, - "requires": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - } - }, - "grunt-retro": { - "version": "0.6.4", - "dev": true - }, - "grunt-webpack": { - "version": "5.0.0", - "dev": true, - "requires": { - "deep-for-each": "^3.0.0", - "lodash": "^4.17.19" - } - }, - "grunt-zip": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", - "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", - "dev": true, - "requires": { - "grunt-retro": "~0.6.0", - "jszip": "~2.7.0" - } - }, - "gzip-size": { - "version": "6.0.0", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - }, - "handle-thing": { - "version": "2.0.1", - "dev": true - }, - "has": { - "version": "1.0.3", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-symbols": { - "version": "1.0.3" - }, - "has-tostringtag": { - "version": "1.0.0", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hash-base": { - "version": "3.1.0", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1" - } - } - }, - "hash.js": { - "version": "1.1.7", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "dev": true - }, - "highlight.js": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", - "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==" - }, - "hmac-drbg": { - "version": "1.0.1", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hooker": { - "version": "0.2.3", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "html-entities": { - "version": "2.3.3", - "dev": true - }, - "html-minifier-terser": { - "version": "6.1.0", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "5.5.0", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.6", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "2.0.4", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "is-plain-obj": { - "version": "3.0.0", - "dev": true - } - } - }, - "https-browserify": { - "version": "0.0.1", - "dev": true - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "iced-error": { - "version": "0.0.13" - }, - "iced-lock": { - "version": "1.1.0", - "requires": { - "iced-runtime": "^1.0.0" - } - }, - "iced-runtime": { - "version": "1.0.4" - }, - "iconv-lite": { - "version": "0.6.3", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "icss-utils": { - "version": "5.1.0", - "dev": true, - "requires": {} - }, - "idb-keyval": { - "version": "3.2.0" - }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "5.2.0" - }, - "image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "requires": { - "@types/node": "16.9.1" - }, - "dependencies": { - "@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - } - } - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imports-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", - "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", - "dev": true, - "requires": { - "source-map": "^0.6.1", - "strip-comments": "^2.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "imurmurhash": { - "version": "0.1.4" - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4" - }, - "ini": { - "version": "1.3.8", - "dev": true - }, - "internmap": { - "version": "2.0.3" - }, - "interpret": { - "version": "1.1.0", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip-regex": { - "version": "4.3.0", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-arguments": { - "version": "1.1.1", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.8.1", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "dev": true - }, - "is-electron": { - "version": "2.2.1" - }, - "is-extglob": { - "version": "2.1.1" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-glob": { - "version": "4.0.3", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, - "is-number-like": { - "version": "1.0.8", - "dev": true, - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-relative": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-unicode-supported": { - "version": "0.1.0", - "dev": true - }, - "is-url": { - "version": "1.2.4" - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "dev": true - }, - "is2": { - "version": "2.0.7", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - } - }, - "isarray": { - "version": "1.0.0", - "dev": true - }, - "isexe": { - "version": "2.0.0" - }, - "isobject": { - "version": "3.0.1", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "dev": true - }, - "jake": { - "version": "10.8.5", - "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "27.5.1", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" - }, - "js-crc": { - "version": "0.2.0" - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" - }, - "js-sha3": { - "version": "0.8.0" - }, - "js-tokens": { - "version": "4.0.0" - }, - "js-yaml": { - "version": "4.1.0", - "requires": { - "argparse": "^2.0.1" - } - }, - "jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "jsesc": { - "version": "3.0.2" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpath-plus": { - "version": "7.2.0" - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "jsqr": { - "version": "1.4.0" - }, - "jsrsasign": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", - "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==" - }, - "jszip": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", - "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", - "dev": true, - "requires": { - "pako": "~1.0.2" - } - }, - "jwa": { - "version": "1.4.1", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "kbpgp": { - "version": "2.1.15", - "requires": { - "bn": "^1.0.5", - "bzip-deflate": "^1.0.0", - "deep-equal": "^1.1.0", - "iced-error": "0.0.13", - "iced-lock": "^1.0.2", - "iced-runtime": "^1.0.4", - "keybase-ecurve": "^1.0.1", - "keybase-nacl": "^1.1.2", - "minimist": "^1.2.0", - "pgp-utils": "0.0.35", - "purepack": "^1.0.5", - "triplesec": "^4.0.3", - "tweetnacl": "^0.13.1" - } - }, - "keybase-ecurve": { - "version": "1.0.1", - "requires": { - "bn": "^1.0.4" - } - }, - "keybase-nacl": { - "version": "1.1.4", - "requires": { - "iced-runtime": "^1.0.2", - "tweetnacl": "^0.13.1", - "uint64be": "^1.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "klona": { - "version": "2.0.5", - "dev": true - }, - "levn": { - "version": "0.4.1", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libbzip2-wasm": { - "version": "0.0.4" - }, - "libyara-wasm": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.2.1.tgz", - "integrity": "sha512-PNqUNWnwjZLe55iA8Rv6vLQRjSdO2OnVg24aRE8v+ytR8CRB8agIG6pS9h2VQejuJP1A/uR4pwcBggUxoNC7DA==" - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "liftup": { - "version": "3.0.1", - "dev": true, - "requires": { - "extend": "^3.0.2", - "findup-sync": "^4.0.0", - "fined": "^1.2.0", - "flagged-respawn": "^1.0.1", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.1", - "rechoir": "^0.7.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "findup-sync": { - "version": "4.0.0", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - } - } - } - }, - "lines-and-columns": { - "version": "1.2.4", - "dev": true - }, - "linkify-it": { - "version": "4.0.1", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "livereload-js": { - "version": "2.4.0", - "dev": true - }, - "load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "loader-runner": { - "version": "4.2.0", - "dev": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "6.0.0", - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21" - }, - "lodash._arraycopy": { - "version": "3.0.0", - "dev": true - }, - "lodash._arrayeach": { - "version": "3.0.0", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._baseclone": { - "version": "3.3.0", - "dev": true, - "requires": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "dev": true - }, - "lodash._basefor": { - "version": "3.0.3", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "dev": true - }, - "lodash.clone": { - "version": "3.0.3", - "dev": true, - "requires": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "dev": true - }, - "lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isarguments": { - "version": "3.1.0", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "dev": true - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isfinite": { - "version": "3.3.2", - "dev": true - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "lodash.keys": { - "version": "3.1.2", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" - }, - "loglevel-message-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/loglevel-message-prefix/-/loglevel-message-prefix-3.0.0.tgz", - "integrity": "sha512-/cBEOqsuU0vJsFm4n92R7h6mkiKqt8vh+JOmW722DTZVVD7egEpVOx66re3vWxO7pii3B4eQuqm2qfqq5cAs0w==", - "requires": { - "es6-polyfills": "^2.0.0", - "loglevel": "^1.4.0" - } - }, - "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" - }, - "loose-envify": { - "version": "1.4.0", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loupe": { - "version": "2.3.4", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" - }, - "lz4js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", - "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" - }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "dev": true - }, - "markdown-it": { - "version": "13.0.1", - "requires": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "entities": { - "version": "3.0.1" - } - } - }, - "md5.js": { - "version": "1.3.5", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdurl": { - "version": "1.0.1" - }, - "media-typer": { - "version": "0.3.0", - "dev": true - }, - "memfs": { - "version": "3.4.1", - "dev": true, - "requires": { - "fs-monkey": "1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "dev": true - }, - "methods": { - "version": "1.1.2", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "mime": { - "version": "1.6.0" - }, - "mime-db": { - "version": "1.52.0", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mini-css-extract-plugin": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", - "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1" - }, - "minimatch": { - "version": "3.1.2", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "mkpath": { - "version": "1.0.0", - "dev": true - }, - "mocha": { - "version": "9.2.2", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "dev": true - } - } - }, - "diff": { - "version": "5.0.0", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "glob": { - "version": "7.2.0", - "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" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "minimatch": { - "version": "4.2.1", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "modify-source-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/modify-source-webpack-plugin/-/modify-source-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-m2g6QEittzzcde0PhgQtOwRywjqo8Q+vMLHbNoH2JDEFE/AlTBWvtNQrp17xbqDUXIueLljm4bhE5OninatHYw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "moment-timezone": { - "version": "0.5.41", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", - "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", - "requires": { - "moment": "^2.29.4" - } - }, - "more-entropy": { - "version": "0.0.7", - "requires": { - "iced-runtime": ">=0.0.1" - } - }, - "morgan": { - "version": "1.10.0", - "dev": true, - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "mrmime": { - "version": "1.0.0", - "dev": true - }, - "ms": { - "version": "2.1.2" - }, - "multicast-dns": { - "version": "7.2.5", - "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "mute-stream": { - "version": "0.0.8", - "dev": true - }, - "nanoid": { - "version": "3.3.1", - "dev": true - }, - "natural-compare": { - "version": "1.4.0" - }, - "negotiator": { - "version": "0.6.3", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "dev": true - }, - "ngeohash": { - "version": "0.6.3" - }, - "nightwatch": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", - "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", - "dev": true, - "requires": { - "@nightwatch/chai": "5.0.2", - "@nightwatch/html-reporter-template": "0.1.4", - "ansi-to-html": "0.7.2", - "assertion-error": "1.1.0", - "boxen": "5.1.2", - "chai-nightwatch": "0.5.3", - "ci-info": "3.3.0", - "cli-table3": "^0.6.3", - "didyoumean": "1.2.2", - "dotenv": "10.0.0", - "ejs": "3.1.8", - "envinfo": "7.8.1", - "fs-extra": "^10.1.0", - "glob": "^7.2.3", - "jsdom": "19.0.0", - "lodash.clone": "3.0.3", - "lodash.defaultsdeep": "4.6.1", - "lodash.escape": "4.0.1", - "lodash.merge": "4.6.2", - "lodash.pick": "4.4.0", - "minimatch": "3.1.2", - "minimist": "1.2.6", - "mkpath": "1.0.0", - "mocha": "9.2.2", - "nightwatch-axe-verbose": "^2.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "selenium-webdriver": "4.6.1", - "semver": "7.3.5", - "stacktrace-parser": "0.1.10", - "strip-ansi": "6.0.1", - "untildify": "^4.0.0", - "uuid": "8.3.2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "semver": { - "version": "7.3.5", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "nightwatch-axe-verbose": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", - "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", - "dev": true, - "requires": { - "axe-core": "^4.6.1" - } - }, - "no-case": { - "version": "3.0.4", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1" - }, - "node-http2": { - "version": "4.0.1", - "dev": true, - "requires": { - "assert": "1.4.1", - "events": "1.1.1", - "https-browserify": "0.0.1", - "setimmediate": "^1.0.5", - "stream-browserify": "2.0.1", - "timers-browserify": "2.0.2", - "url": "^0.11.0", - "websocket-stream": "^5.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "stream-browserify": { - "version": "2.0.1", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "node-md6": { - "version": "0.1.0" - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nodom": { - "version": "2.4.0" - }, - "nofilter": { - "version": "3.1.0" - }, - "nopt": { - "version": "3.0.6", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "dev": true - }, - "notepack.io": { - "version": "3.0.1" - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nth-check": { - "version": "2.0.1", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "ntlm": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ntlm/-/ntlm-0.1.3.tgz", - "integrity": "sha512-pPlHxhAegZP4QAaOYd51vRd6VXTGfF7VLKJwuwN0iEB1aIi3SnqXYuS/bH/6wWBOq+Ehdil49mHm1Nseon085w==" - }, - "nwmatcher": { - "version": "1.4.4" - }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1" - }, - "object.assign": { - "version": "4.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "dev": true - }, - "omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "on-finished": { - "version": "2.3.0", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "dev": true - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "opencollective-postinstall": { - "version": "2.0.3" - }, - "opener": { - "version": "1.5.2", - "dev": true - }, - "opn": { - "version": "6.0.0", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/avsc": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", + "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==", + "engines": { + "node": ">=0.11" + } + }, + "node_modules/axe-core": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", + "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-loader": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", + "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-transform-builtin-extend": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.2.0", + "babel-template": "^6.3.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-template": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-types": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "levn": { - "version": "0.3.0", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "prelude-ls": { - "version": "1.1.2" - }, - "type-check": { - "version": "0.3.2", - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "ora": { - "version": "5.4.1", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-homedir": { - "version": "1.0.2", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "otp": { - "version": "0.1.3", - "requires": { - "thirty-two": "^0.0.2" - } - }, - "p-limit": { - "version": "3.1.0", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-retry": { - "version": "4.6.1", - "dev": true, - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "retry": { - "version": "0.13.1", - "dev": true - } - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "pad-stream": { - "version": "2.0.0", - "dev": true, - "requires": { - "pumpify": "^1.3.3", - "split2": "^2.1.1", - "through2": "^2.0.0" - } - }, - "pako": { - "version": "1.0.11" - }, - "param-case": { - "version": "3.0.4", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "parse-filepath": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "parse-json": { - "version": "5.2.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-passwd": { - "version": "1.0.0", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "dev": true - }, - "pascal-case": { - "version": "3.1.2", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path": { - "version": "0.12.7", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-exists": { - "version": "4.0.0" - }, - "path-is-absolute": { - "version": "1.0.1" - }, - "path-key": { - "version": "3.1.1" - }, - "path-parse": { - "version": "1.0.7" - }, - "path-root": { - "version": "0.1.1", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" - }, - "pend": { - "version": "1.2.0", - "dev": true - }, - "pgp-utils": { - "version": "0.0.35", - "requires": { - "iced-error": ">=0.0.8", - "iced-runtime": ">=0.0.1" - } - }, - "phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "picocolors": { - "version": "1.0.0", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "dev": true - }, - "pify": { - "version": "2.3.0", - "dev": true - }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "requires": { - "pngjs": "^3.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "dev": true, - "requires": { - "find-up": "^4.0.0" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64-loader/-/base64-loader-1.0.0.tgz", + "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - }, - "popper.js": { - "version": "1.16.1" - }, - "portscanner": { - "version": "2.2.0", - "dev": true, - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "async": { - "version": "2.6.4", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "license": "MIT" + }, + "node_modules/bn": { + "version": "1.0.5", + "license": "BSD-3-Clause" + }, + "node_modules/bn.js": { + "version": "5.2.0", + "license": "MIT" + }, + "node_modules/body": { + "version": "5.1.0", + "dev": true, + "dependencies": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "node_modules/body-parser": { + "version": "1.19.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.9.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/bonjour-service": { + "version": "1.0.12", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" }, - "dependencies": { - "nanoid": { - "version": "3.3.4", - "dev": true - } - } - }, - "postcss-css-variables": { - "version": "0.18.0", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "escape-string-regexp": "^1.0.3", - "extend": "^3.0.1" - } - }, - "postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.8" + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/bootstrap-colorpicker": { + "version": "3.4.0", + "license": "MIT", + "dependencies": { + "bootstrap": ">=4.0", + "jquery": ">=2.2", + "popper.js": ">=1.10" + } + }, + "node_modules/bootstrap-material-design": { + "version": "4.1.3", + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.9", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1" - }, - "pretty-error": { - "version": "4.0.0", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "process": { - "version": "0.11.10" - }, - "process-nextick-args": { - "version": "2.0.1", - "dev": true - }, - "progress": { - "version": "1.1.8" - }, - "prompt": { - "version": "1.3.0", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "async": "3.2.3", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" - } - }, - "protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "dev": true - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "pump": { - "version": "3.0.0", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/bson/node_modules/buffer": { + "version": "5.7.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "pump": { - "version": "2.0.1", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1" - }, - "purepack": { - "version": "1.0.6" - }, - "qr-image": { - "version": "3.2.0" - }, - "qs": { - "version": "6.5.3", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "dev": true - }, - "raw-body": { - "version": "1.1.7", - "dev": true, - "requires": { - "bytes": "1", - "string_decoder": "0.10" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "dev": true - } - } - }, - "read": { - "version": "1.0.7", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cache": { - "version": "1.0.0", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "readdirp": { - "version": "3.6.0", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.7.1", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.4.1", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "3.2.0" - }, - "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "dev": true - }, - "renderkid": { - "version": "3.0.0", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0" - }, - "resolve-url": { - "version": "0.2.1" - }, - "restore-cursor": { - "version": "3.1.0", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4" - }, - "revalidator": { - "version": "0.1.8", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "robust-predicates": { - "version": "3.0.1" - }, - "run-parallel": { - "version": "1.2.0", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rw": { - "version": "1.3.3" - }, - "safe-buffer": { - "version": "5.1.2" - }, - "safe-json-parse": { - "version": "1.0.1", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2" - }, - "sax": { - "version": "1.2.4" - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "scryptsy": { - "version": "2.1.0" - }, - "select-hose": { - "version": "2.0.0", - "dev": true - }, - "selenium-webdriver": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", - "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", - "dev": true, - "requires": { - "jszip": "^3.10.0", - "tmp": "^0.2.1", - "ws": ">=8.7.0" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "1.0.0", + "dev": true + }, + "node_modules/bzip-deflate": { + "version": "1.0.0", + "license": "CC-SA 3.0" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001583", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz", + "integrity": "sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "dependencies": { - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "send": { - "version": "0.18.0", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "http-errors": { - "version": "2.0.0", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "ms": { - "version": "2.1.3", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "setprototypeof": { - "version": "1.2.0", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/cbor": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai-nightwatch": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "1.1.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/chi-squared": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "gamma": "^1.0.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromedriver": { + "version": "121.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-121.0.0.tgz", + "integrity": "sha512-ZIKEdZrQAfuzT/RRofjl8/EZR99ghbdBXNTOcgJMKGP6N/UL6lHUX4n6ONWBV18pDvDFfQJ0x58h5AdOaXIOMw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.5", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + }, + "bin": { + "chromedriver": "bin/chromedriver" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.16", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect-livereload": { + "version": "0.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0" - }, - "shelljs": { - "version": "0.5.3", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "dev": true - }, - "sirv": { - "version": "1.0.19", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - } - }, - "sitemap": { - "version": "7.1.1", - "dev": true, - "requires": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - } - }, - "snackbarjs": { - "version": "1.1.0" - }, - "sockjs": { - "version": "0.3.24", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "faye-websocket": { - "version": "0.11.4", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "sortablejs": { - "version": "1.15.0" - }, - "source-map-js": { - "version": "1.0.2", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/continuable-cache": { + "version": "0.3.1", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.21.1", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-api": { + "version": "0.8.5", + "license": "MIT" + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.0.1", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/ctph.js": { + "version": "0.0.5" + }, + "node_modules/cycle": { + "version": "1.0.3", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/d3": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", + "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.2", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hexbin": { + "version": "0.2.2", + "license": "BSD-3-Clause" + }, + "node_modules/d3-hierarchy": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.1.0", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/deep-eql": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-for-each": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.isplainobject": "^4.0.6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "license": "MIT" + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delaunator": { + "version": "5.0.0", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "5.1.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.8", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error": { + "version": "7.2.1", + "dev": true, + "dependencies": { + "string-template": "~0.2.1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/es6-polyfills": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es6-polyfills/-/es6-polyfills-2.0.0.tgz", + "integrity": "sha512-daIt/MHqdYmxnuo5KcwAU9EqSxvaDRyajYOUU9fy+CLuU5+RFhpNCnL3oPsq7n+g673F3z/Vb+FXo/EmQjlkbw==", + "deprecated": "Use @natlibfi/es6-polyfills instead", + "dependencies": { + "es6-object-assign": "^1.0.3", + "es6-promise-polyfill": "^1.2.0" + } + }, + "node_modules/es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==" + }, + "node_modules/es6-promisify": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "dependencies": { + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "0.4.14", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12" + }, + "node_modules/exit": { + "version": "0.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.17.3", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/destroy": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/http-errors": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.9.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "spdy": { - "version": "4.0.2", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "split.js": { - "version": "1.6.5" - }, - "split2": { - "version": "2.2.0", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, - "sprintf-js": { - "version": "1.1.2", - "dev": true - }, - "ssdeep.js": { - "version": "0.0.3" - }, - "stack-trace": { - "version": "0.0.10", - "dev": true - }, - "stacktrace-parser": { - "version": "0.1.10", - "dev": true, - "requires": { - "type-fest": "^0.7.1" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "type-fest": { - "version": "0.7.1", - "dev": true - } - } - }, - "statuses": { - "version": "1.5.0", - "dev": true - }, - "stream-browserify": { - "version": "3.0.0", - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "requires": { - "safe-buffer": "~5.2.0" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/express/node_modules/send": { + "version": "0.17.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/send/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/serve-static": { + "version": "1.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/extend": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "dev": true, + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.13.0", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/file-sync-cmp": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/gamma": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/gaze": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/geodesy": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getobject": { + "version": "1.0.2", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globule": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/minimatch": { + "version": "3.0.8", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/growl": { + "version": "1.10.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/grunt": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", + "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", + "dev": true, + "dependencies": { + "dateformat": "~4.6.2", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~5.0.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.6.3", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "nopt": "~3.0.6" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/grunt-chmod": { + "version": "1.1.1", + "dev": true, + "dependencies": { + "shelljs": "^0.5.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/grunt-cli": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-cli/node_modules/nopt": { + "version": "4.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/grunt-concurrent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^2.0.1", + "async": "^3.1.0", + "indent-string": "^4.0.0", + "pad-stream": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "grunt": ">=1" + } + }, + "node_modules/grunt-contrib-clean": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.3", + "rimraf": "^2.6.2" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "grunt": ">=0.4.5" + } + }, + "node_modules/grunt-contrib-clean/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/grunt-contrib-connect": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0", + "connect": "^3.7.0", + "connect-livereload": "^0.6.1", + "morgan": "^1.10.0", + "node-http2": "^4.0.1", + "opn": "^6.0.0", + "portscanner": "^2.2.0", + "serve-index": "^1.9.1", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-contrib-copy": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/grunt-contrib-watch": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-watch/node_modules/async": { + "version": "2.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/grunt-eslint": { + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", + "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "eslint": "^8.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "grunt": ">=1" + } + }, + "node_modules/grunt-eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/grunt-eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/grunt-eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/grunt-eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/grunt-eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-exec": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "grunt": ">=0.4" + } + }, + "node_modules/grunt-known-options": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-legacy-log": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-log-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-log/node_modules/colors": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/grunt-legacy-util": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-retro": { + "version": "0.6.4", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/grunt-webpack": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-for-each": "^3.0.0", + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/grunt-zip": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", + "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", + "dev": true, + "dependencies": { + "grunt-retro": "~0.6.0", + "jszip": "~2.7.0" + }, + "bin": { + "grunt-zip": "bin/grunt-zip" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/grunt/node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/grunt/node_modules/minimatch": { + "version": "3.0.8", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/grunt/node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1" - } - } - }, - "string-template": { - "version": "0.2.1", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-comments": { - "version": "2.0.1", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1" - }, - "strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - } - }, - "style-mod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", - "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "dev": true - }, - "tcp-port-used": { - "version": "1.0.2", - "dev": true, - "requires": { - "debug": "4.3.1", - "is2": "^2.0.6" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "debug": { - "version": "4.3.1", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", + "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hooker": { + "version": "0.2.3", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "dev": true, + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "1.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/https-browserify": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iced-error": { + "version": "0.0.13" + }, + "node_modules/iced-lock": { + "version": "1.1.0", + "dependencies": { + "iced-runtime": "^1.0.0" + } + }, + "node_modules/iced-runtime": { + "version": "1.0.4" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb-keyval": { + "version": "3.2.0", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "commander": { - "version": "2.20.3", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "dev": true, - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "tesseract.js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", - "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", - "requires": { - "babel-eslint": "^10.1.0", - "bmp-js": "^0.1.0", - "file-type": "^12.4.1", - "idb-keyval": "^3.2.0", - "is-electron": "^2.2.0", - "is-url": "^1.2.4", - "node-fetch": "^2.6.0", - "opencollective-postinstall": "^2.0.2", - "regenerator-runtime": "^0.13.3", - "resolve-url": "^0.2.1", - "tesseract.js-core": "^3.0.2", - "wasm-feature-detect": "^1.2.11", - "zlibjs": "^0.3.1" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imports-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", + "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1", + "strip-comments": "^2.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/imports-loader/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/internmap": { + "version": "2.0.3", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/invariant": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-electron": { + "version": "2.2.1", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "dev": true, + "license": "ISC", + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is2": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/jake": { + "version": "10.8.5", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "node_modules/jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "node_modules/js-crc": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath-plus": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsqr": { + "version": "1.4.0", + "license": "Apache-2.0" + }, + "node_modules/jsrsasign": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", + "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "node_modules/jszip": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", + "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", + "dev": true, + "dependencies": { + "pako": "~1.0.2" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kbpgp": { + "version": "2.1.15", + "license": "BSD-3-Clause", + "dependencies": { + "bn": "^1.0.5", + "bzip-deflate": "^1.0.0", + "deep-equal": "^1.1.0", + "iced-error": "0.0.13", + "iced-lock": "^1.0.2", + "iced-runtime": "^1.0.4", + "keybase-ecurve": "^1.0.1", + "keybase-nacl": "^1.1.2", + "minimist": "^1.2.0", + "pgp-utils": "0.0.35", + "purepack": "^1.0.5", + "triplesec": "^4.0.3", + "tweetnacl": "^0.13.1" + } + }, + "node_modules/keybase-ecurve": { + "version": "1.0.1", + "dependencies": { + "bn": "^1.0.4" + } + }, + "node_modules/keybase-nacl": { + "version": "1.1.4", + "license": "BSD-3-Clause", + "dependencies": { + "iced-runtime": "^1.0.2", + "tweetnacl": "^0.13.1", + "uint64be": "^1.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libbzip2-wasm": { + "version": "0.0.4", + "license": "ISC" + }, + "node_modules/libyara-wasm": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.2.1.tgz", + "integrity": "sha512-PNqUNWnwjZLe55iA8Rv6vLQRjSdO2OnVg24aRE8v+ytR8CRB8agIG6pS9h2VQejuJP1A/uR4pwcBggUxoNC7DA==" + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/liftup": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/liftup/node_modules/findup-sync": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/livereload-js": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash._arraycopy": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._arrayeach": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._baseassign": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._baseclone": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._basefor": { + "version": "3.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clone": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-message-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/loglevel-message-prefix/-/loglevel-message-prefix-3.0.0.tgz", + "integrity": "sha512-/cBEOqsuU0vJsFm4n92R7h6mkiKqt8vh+JOmW722DTZVVD7egEpVOx66re3vWxO7pii3B4eQuqm2qfqq5cAs0w==", + "deprecated": "Use @natlibfi/loglevel-message-prefix instead", + "dependencies": { + "es6-polyfills": "^2.0.0", + "loglevel": "^1.4.0" + } + }, + "node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/lz4js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", + "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it": { + "version": "13.0.1", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", + "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkpath": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha": { + "version": "9.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/modify-source-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/modify-source-webpack-plugin/-/modify-source-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-m2g6QEittzzcde0PhgQtOwRywjqo8Q+vMLHbNoH2JDEFE/AlTBWvtNQrp17xbqDUXIueLljm4bhE5OninatHYw==", + "deprecated": "3.x is no longer supported and includes critical bugs, please upgrade to latest version.", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + } + }, + "node_modules/modify-source-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.41", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", + "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/more-entropy": { + "version": "0.0.7", + "dependencies": { + "iced-runtime": ">=0.0.1" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ngeohash": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">=v0.2.0" + } + }, + "node_modules/nightwatch": { + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", + "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", + "dev": true, + "dependencies": { + "@nightwatch/chai": "5.0.2", + "@nightwatch/html-reporter-template": "0.1.4", + "ansi-to-html": "0.7.2", + "assertion-error": "1.1.0", + "boxen": "5.1.2", + "chai-nightwatch": "0.5.3", + "ci-info": "3.3.0", + "cli-table3": "^0.6.3", + "didyoumean": "1.2.2", + "dotenv": "10.0.0", + "ejs": "3.1.8", + "envinfo": "7.8.1", + "fs-extra": "^10.1.0", + "glob": "^7.2.3", + "jsdom": "19.0.0", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "4.6.1", + "lodash.escape": "4.0.1", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "minimatch": "3.1.2", + "minimist": "1.2.6", + "mkpath": "1.0.0", + "mocha": "9.2.2", + "nightwatch-axe-verbose": "^2.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "selenium-webdriver": "4.6.1", + "semver": "7.3.5", + "stacktrace-parser": "0.1.10", + "strip-ansi": "6.0.1", + "untildify": "^4.0.0", + "uuid": "8.3.2" + }, + "bin": { + "nightwatch": "bin/nightwatch" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "@cucumber/cucumber": "*", + "chromedriver": "*", + "geckodriver": "*" + }, + "peerDependenciesMeta": { + "@cucumber/cucumber": { + "optional": true }, - "dependencies": { - "file-type": { - "version": "12.4.2" - } - } - }, - "tesseract.js-core": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", - "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" - }, - "text-table": { - "version": "0.2.0" - }, - "thirty-two": { - "version": "0.0.2" - }, - "through2": { - "version": "2.0.5", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "chromedriver": { + "optional": true }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "dev": true - }, - "timers-browserify": { - "version": "2.0.2", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "tiny-lr": { - "version": "1.1.1", - "dev": true, - "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" + "geckodriver": { + "optional": true + } + } + }, + "node_modules/nightwatch-axe-verbose": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", + "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", + "dev": true, + "dependencies": { + "axe-core": "^4.6.1" + } + }, + "node_modules/nightwatch/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nightwatch/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-http2": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "1.4.1", + "events": "1.1.1", + "https-browserify": "0.0.1", + "setimmediate": "^1.0.5", + "stream-browserify": "2.0.1", + "timers-browserify": "2.0.2", + "url": "^0.11.0", + "websocket-stream": "^5.0.1" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/node-http2/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-http2/node_modules/stream-browserify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/node-http2/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/node-md6": { + "version": "0.1.0", + "license": "CC0-1.0" + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/nodom": { + "version": "2.4.0", + "license": "ISC" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/notepack.io": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/ntlm": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ntlm/-/ntlm-0.1.3.tgz", + "integrity": "sha512-pPlHxhAegZP4QAaOYd51vRd6VXTGfF7VLKJwuwN0iEB1aIi3SnqXYuS/bH/6wWBOq+Ehdil49mHm1Nseon085w==", + "engines": [ + "node" + ] + }, + "node_modules/nwmatcher": { + "version": "1.4.4", + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "license": "MIT", + "bin": { + "opencollective-postinstall": "index.js" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/levn": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/prelude-ls": { + "version": "1.1.2", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/type-check": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/otp": { + "version": "0.1.3", + "dependencies": { + "thirty-two": "^0.0.2" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pad-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pumpify": "^1.3.3", + "split2": "^2.1.1", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "license": "(MIT AND Zlib)" + }, + "node_modules/param-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "license": "ISC", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path": { + "version": "0.12.7", + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-root": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/pgp-utils": { + "version": "0.0.35", + "dependencies": { + "iced-error": ">=0.0.8", + "iced-runtime": ">=0.0.1" + } + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, - "dependencies": { - "debug": { - "version": "3.2.7", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0" - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "dev": true - }, - "token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "totalist": { - "version": "1.1.0", - "dev": true - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-css-variables": { + "version": "0.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "escape-string-regexp": "^1.0.3", + "extend": "^3.0.1" + }, + "peerDependencies": { + "postcss": "^8.2.6" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", + "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.4", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "1.1.8", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompt": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.5.0", + "async": "3.2.3", + "read": "1.0.x", + "revalidator": "0.1.x", + "winston": "2.x" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/purepack": { + "version": "1.0.6", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/qr-image": { + "version": "3.2.0", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.5.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } - } - }, - "tr46": { - "version": "0.0.3" - }, - "triplesec": { - "version": "4.0.3", - "requires": { - "iced-error": ">=0.0.9", - "iced-lock": "^1.0.1", - "iced-runtime": "^1.0.2", - "more-entropy": ">=0.0.7", - "progress": "~1.1.2", - "uglify-js": "^3.1.9" - } - }, - "tslib": { - "version": "2.3.1", - "dev": true - }, - "tweetnacl": { - "version": "0.13.3" - }, - "type-check": { - "version": "0.4.0", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "dev": true - }, - "type-fest": { - "version": "0.20.2" - }, - "type-is": { - "version": "1.6.18", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==" - }, - "uc.micro": { - "version": "1.0.6" - }, - "uglify-js": { - "version": "3.15.3" - }, - "uint64be": { - "version": "1.0.1" - }, - "ultron": { - "version": "1.1.1", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "dev": true - }, - "underscore.string": { - "version": "3.3.6", - "dev": true, - "requires": { - "sprintf-js": "^1.1.1", - "util-deprecate": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unorm": { - "version": "1.6.0" - }, - "unpipe": { - "version": "1.0.0", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "requires": { - "punycode": "^2.1.0" - } - }, - "url": { - "version": "0.11.0", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "dev": true - } - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "utf8": { - "version": "3.0.0" - }, - "utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "requires": { - "pako": "^1.0.5" - } - }, - "util": { - "version": "0.10.3", - "requires": { - "inherits": "2.0.1" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "1", + "string_decoder": "0.10" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/raw-body/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/read": { + "version": "1.0.7", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.0", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/revalidator": { + "version": "0.1.8", + "dev": true, + "license": "Apache 2.0", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "license": "Unlicense" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "inherits": { - "version": "2.0.1" - } - } - }, - "util-deprecate": { - "version": "1.0.2" - }, - "utila": { - "version": "0.4.0", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "v8flags": { - "version": "3.2.0", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "vary": { - "version": "1.1.2", - "dev": true - }, - "vkbeautify": { - "version": "0.99.3" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-keyname": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", - "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", - "dev": true - }, - "w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "dev": true, - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "wasm-feature-detect": { - "version": "1.2.11" - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "3.0.1" - }, - "webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "events": { - "version": "3.3.0", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", - "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "0.5.7", - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "license": "BSD-3-Clause" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/safe-json-parse": { + "version": "1.0.1", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.4", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/scryptsy": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/selenium-webdriver": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", + "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "dev": true, + "dependencies": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.7.0" + }, + "engines": { + "node": ">= 14.20.0" + } + }, + "node_modules/selenium-webdriver/node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/selenium-webdriver/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/selenium-webdriver/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.5.3", + "dev": true, + "license": "BSD*", + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "1.0.19", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sitemap": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/snackbarjs": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/sockjs": { + "version": "0.3.24", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/faye-websocket": { + "version": "0.11.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.0", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/split.js": { + "version": "1.6.5", + "license": "MIT" + }, + "node_modules/split2": { + "version": "2.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "through2": "^2.0.2" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssdeep.js": { + "version": "0.0.3" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "ws": { - "version": "7.5.7", - "dev": true, - "requires": {} - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.1", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } - }, - "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - } - }, - "webpack-node-externals": { - "version": "3.0.0", - "dev": true - }, - "webpack-sources": { - "version": "3.2.3", - "dev": true - }, - "websocket-driver": { - "version": "0.7.4", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "dev": true - }, - "websocket-stream": { - "version": "5.5.2", - "dev": true, - "requires": { - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "^3.2.0", - "xtend": "^4.0.0" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "ws": { - "version": "3.3.3", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - } - } - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "requires": { - "isexe": "^2.0.0" - } - }, - "widest-line": { - "version": "3.1.0", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "winston": { - "version": "2.4.5", - "dev": true, - "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-template": { + "version": "0.2.1", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true }, - "dependencies": { - "async": { - "version": "1.0.0", - "dev": true - }, - "colors": { - "version": "1.0.3", - "dev": true - } - } - }, - "word-wrap": { - "version": "1.2.3" - }, - "worker-loader": { - "version": "3.0.8", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "esbuild": { + "optional": true }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "workerpool": { - "version": "6.2.0", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/tesseract.js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", + "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", + "hasInstallScript": true, + "dependencies": { + "babel-eslint": "^10.1.0", + "bmp-js": "^0.1.0", + "file-type": "^12.4.1", + "idb-keyval": "^3.2.0", + "is-electron": "^2.2.0", + "is-url": "^1.2.4", + "node-fetch": "^2.6.0", + "opencollective-postinstall": "^2.0.2", + "regenerator-runtime": "^0.13.3", + "resolve-url": "^0.2.1", + "tesseract.js-core": "^3.0.2", + "wasm-feature-detect": "^1.2.11", + "zlibjs": "^0.3.1" + } + }, + "node_modules/tesseract.js-core": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", + "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" + }, + "node_modules/tesseract.js/node_modules/file-type": { + "version": "12.4.2", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/thirty-two": { + "version": "0.0.2", + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.2", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tiny-lr": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + } + }, + "node_modules/tiny-lr/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, + "node_modules/triplesec": { + "version": "4.0.3", + "dependencies": { + "iced-error": ">=0.0.9", + "iced-lock": "^1.0.1", + "iced-runtime": "^1.0.2", + "more-entropy": ">=0.0.7", + "progress": "~1.1.2", + "uglify-js": "^3.1.9" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "0.13.3", + "license": "Public domain" + }, + "node_modules/type-check": { + "version": "0.4.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", + "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2" - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true - }, - "xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xmldom": { - "version": "0.6.0" - }, - "xpath": { - "version": "0.0.32" - }, - "xregexp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", - "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", - "requires": { - "@babel/runtime-corejs3": "^7.16.5" - } - }, - "xtend": { - "version": "4.0.2" - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.15.3", + "license": "BSD-2-Clause", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uint64be": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/ultron": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/underscore.string": { + "version": "3.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "^1.1.1", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unorm": { + "version": "1.6.0", + "license": "MIT or GPL-2.0", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "dependencies": { - "decamelize": { - "version": "4.0.0", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "dev": true - } - } - }, - "yauzl": { - "version": "2.10.0", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0" - }, - "zlibjs": { - "version": "0.3.1" + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/utf8": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util": { + "version": "0.10.3", + "license": "MIT", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.1", + "license": "ISC" + }, + "node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vkbeautify": { + "version": "0.99.3", + "license": "MIT" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", + "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", + "dev": true + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/wasm-feature-detect": { + "version": "1.2.11", + "license": "Apache-2.0" + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", + "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-stream": { + "version": "5.5.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "^3.2.0", + "xtend": "^4.0.0" + } + }, + "node_modules/websocket-stream/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/websocket-stream/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/websocket-stream/node_modules/ws": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/winston": { + "version": "2.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/winston/node_modules/colors": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/worker-loader": { + "version": "3.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/worker-loader/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmldom": { + "version": "0.6.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xpath": { + "version": "0.0.32", + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/xregexp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", + "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", + "dependencies": { + "@babel/runtime-corejs3": "^7.16.5" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zlibjs": { + "version": "0.3.1", + "license": "MIT", + "engines": { + "node": "*" } } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@astronautlabs/amf": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", + "integrity": "sha512-cJgbXW45TIDLQf2hiHqDoRfmeRy5u9Z4npr7sZfBThvbp5cbqDieTWaJTu91cUAj35/u87OHZijLTbMO18ZIow==", + "requires": { + "@astronautlabs/bitstream": "^4.0.0" + } + }, + "@astronautlabs/bitstream": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", + "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", + "requires": {} + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "dev": true + }, + "@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + } + }, + "@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "dev": true, + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "requires": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", + "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/polyfill": { + "version": "7.12.1", + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "core-js": { + "version": "2.6.12" + } + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/runtime-corejs3": { + "version": "7.17.8", + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@blu3r4y/lzma": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@blu3r4y/lzma/-/lzma-2.3.3.tgz", + "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==" + }, + "@codemirror/commands": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", + "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", + "dev": true, + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "dev": true, + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/search": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", + "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", + "dev": true, + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", + "dev": true + }, + "@codemirror/view": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", + "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", + "dev": true, + "requires": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@colors/colors": { + "version": "1.5.0", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==" + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" + } + }, + "@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" + } + }, + "@jimp/plugin-blit": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-blur": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-circle": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-color": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-cover": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-crop": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-displace": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-dither": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-flip": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-mask": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-rotate": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.1" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "dev": true + }, + "@lezer/common": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", + "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", + "dev": true + }, + "@lezer/highlight": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz", + "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==", + "dev": true, + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz", + "integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==", + "dev": true, + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, + "@nightwatch/chai": { + "version": "5.0.2", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "4.0.1", + "loupe": "2.3.4", + "pathval": "1.1.1", + "type-detect": "4.0.8" + } + }, + "@nightwatch/html-reporter-template": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", + "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "dev": true + }, + "@protobufjs/aspromise": { + "version": "1.1.2" + }, + "@protobufjs/base64": { + "version": "1.1.2" + }, + "@protobufjs/codegen": { + "version": "2.0.4" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2" + }, + "@protobufjs/inquire": { + "version": "1.1.0" + }, + "@protobufjs/path": { + "version": "1.1.2" + }, + "@protobufjs/pool": { + "version": "1.1.0" + }, + "@protobufjs/utf8": { + "version": "1.1.0" + }, + "@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "dev": true + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.1", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "dev": true + }, + "@types/node": { + "version": "17.0.23" + }, + "@types/parse-json": { + "version": "4.0.0", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "dev": true + }, + "@types/sax": { + "version": "1.2.4", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yauzl": { + "version": "2.9.2", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "dev": true + }, + "@wavesenterprise/crypto-gost-js": { + "version": "2.1.0-RC1", + "resolved": "https://registry.npmjs.org/@wavesenterprise/crypto-gost-js/-/crypto-gost-js-2.1.0-RC1.tgz", + "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + } + } + }, + "acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-colors": { + "version": "4.1.1", + "dev": true + }, + "ansi-html-community": { + "version": "0.0.8", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "requires": { + "entities": "^2.2.0" + } + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "anymatch": { + "version": "3.1.2", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.1", + "dev": true + }, + "argon2-browser": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/argon2-browser/-/argon2-browser-1.18.0.tgz", + "integrity": "sha512-ImVAGIItnFnvET1exhsQB7apRztcoC5TnlSqernMJDUjbc/DLq3UEYeXFrLPrlaIl8cVfwnXb6wX2KpFf2zxHw==" + }, + "argparse": { + "version": "2.0.1" + }, + "array-each": { + "version": "1.0.1", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "dev": true + }, + "arrive": { + "version": "2.4.1" + }, + "asn1.js": { + "version": "5.4.1", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "assert": { + "version": "1.4.1", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assertion-error": { + "version": "1.1.0", + "dev": true + }, + "async": { + "version": "3.2.3", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "avsc": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", + "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==" + }, + "axe-core": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", + "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", + "dev": true + }, + "axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0" + } + } + }, + "babel-loader": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", + "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-plugin-transform-builtin-extend": { + "version": "1.1.2", + "dev": true, + "requires": { + "babel-runtime": "^6.2.0", + "babel-template": "^6.3.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "dev": true + }, + "balanced-match": { + "version": "1.0.2" + }, + "base64-js": { + "version": "1.5.1" + }, + "base64-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64-loader/-/base64-loader-1.0.0.tgz", + "integrity": "sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "dev": true + }, + "bcryptjs": { + "version": "2.4.3" + }, + "big.js": { + "version": "5.2.2", + "dev": true + }, + "bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "bl": { + "version": "4.1.0", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "blakejs": { + "version": "1.2.1" + }, + "bmp-js": { + "version": "0.1.0" + }, + "bn": { + "version": "1.0.5" + }, + "bn.js": { + "version": "5.2.0" + }, + "body": { + "version": "5.1.0", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "body-parser": { + "version": "1.19.2", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "qs": { + "version": "6.9.7", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.12", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "requires": {} + }, + "bootstrap-colorpicker": { + "version": "3.4.0", + "requires": { + "bootstrap": ">=4.0", + "jquery": ">=2.2", + "popper.js": ">=1.10" + } + }, + "bootstrap-material-design": { + "version": "4.1.3" + }, + "boxen": { + "version": "5.1.2", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "requires": { + "buffer": "^5.6.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "buffer": { + "version": "6.0.3", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" + }, + "buffer-equal-constant-time": { + "version": "1.0.1" + }, + "buffer-from": { + "version": "1.1.2", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3" + }, + "bytes": { + "version": "1.0.0", + "dev": true + }, + "bzip-deflate": { + "version": "1.0.0" + }, + "call-bind": { + "version": "1.0.2", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0" + }, + "camel-case": { + "version": "4.1.2", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001583", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz", + "integrity": "sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==", + "dev": true + }, + "cbor": { + "version": "8.1.0", + "requires": { + "nofilter": "^3.1.0" + } + }, + "chai-nightwatch": { + "version": "0.5.3", + "dev": true, + "requires": { + "assertion-error": "1.1.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "dev": true + }, + "chi-squared": { + "version": "1.1.0", + "requires": { + "gamma": "^1.0.0" + } + }, + "chokidar": { + "version": "3.5.3", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "dev": true + }, + "chromedriver": { + "version": "121.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-121.0.0.tgz", + "integrity": "sha512-ZIKEdZrQAfuzT/RRofjl8/EZR99ghbdBXNTOcgJMKGP6N/UL6lHUX4n6ONWBV18pDvDFfQJ0x58h5AdOaXIOMw==", + "dev": true, + "requires": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.5", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + } + }, + "ci-info": { + "version": "3.3.0", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.2.4", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "cli-boxes": { + "version": "2.2.1", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "requires": { + "string-width": "^4.2.3" + } + }, + "cli-spinners": { + "version": "2.6.1", + "dev": true + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "dev": true + }, + "codepage": { + "version": "1.15.0" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "colorette": { + "version": "2.0.16", + "dev": true + }, + "colors": { + "version": "1.4.0", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0" + }, + "commondir": { + "version": "1.0.1", + "dev": true + }, + "compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1" + }, + "connect": { + "version": "3.7.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "connect-livereload": { + "version": "0.6.1", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "dev": true + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + } + }, + "core-js": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", + "dev": true + }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-js-pure": { + "version": "3.21.1" + }, + "core-util-is": { + "version": "1.0.2", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "create-hash": { + "version": "1.2.0", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-api": { + "version": "0.8.5" + }, + "crypto-browserify": { + "version": "3.12.0", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "4.1.1" + }, + "css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.0.1", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "dev": true + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "ctph.js": { + "version": "0.0.5" + }, + "cycle": { + "version": "1.0.3", + "dev": true + }, + "d3": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", + "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0" + }, + "d3-brush": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1" + }, + "d3-drag": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, + "d3-ease": { + "version": "3.0.1" + }, + "d3-fetch": { + "version": "3.0.1", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0" + }, + "d3-geo": { + "version": "3.0.1", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hexbin": { + "version": "0.2.2" + }, + "d3-hierarchy": { + "version": "3.1.1" + }, + "d3-interpolate": { + "version": "3.0.1", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.0.1" + }, + "d3-polygon": { + "version": "3.0.1" + }, + "d3-quadtree": { + "version": "3.0.1" + }, + "d3-random": { + "version": "3.0.1" + }, + "d3-scale": { + "version": "4.0.2", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0" + }, + "d3-shape": { + "version": "3.1.0", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-time": { + "version": "3.0.0", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1" + }, + "d3-transition": { + "version": "3.0.1", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "deep-eql": { + "version": "4.0.1", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-for-each": { + "version": "3.0.0", + "dev": true, + "requires": { + "lodash.isplainobject": "^4.0.6" + } + }, + "deep-is": { + "version": "0.1.4" + }, + "default-gateway": { + "version": "6.0.3", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "requires": { + "object-keys": "^1.0.12" + } + }, + "delaunator": { + "version": "5.0.0", + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "dev": true + }, + "didyoumean": { + "version": "1.2.2", + "dev": true + }, + "diff": { + "version": "5.1.0" + }, + "diffie-hellman": { + "version": "5.0.3", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "dev": true + }, + "dns-packet": { + "version": "5.3.1", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "domelementtype": { + "version": "2.2.0", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + } + } + }, + "domhandler": { + "version": "4.3.1", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true + }, + "ejs": { + "version": "3.1.8", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "optional": true, + "peer": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "dev": true + }, + "error": { + "version": "7.2.1", + "dev": true, + "requires": { + "string-template": "~0.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "dev": true + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "es6-polyfills": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es6-polyfills/-/es6-polyfills-2.0.0.tgz", + "integrity": "sha512-daIt/MHqdYmxnuo5KcwAU9EqSxvaDRyajYOUU9fy+CLuU5+RFhpNCnL3oPsq7n+g673F3z/Vb+FXo/EmQjlkbw==", + "requires": { + "es6-object-assign": "^1.0.3", + "es6-promise-polyfill": "^1.2.0" + } + }, + "es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==" + }, + "es6-promisify": { + "version": "7.0.0" + }, + "escalade": { + "version": "3.1.1", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "escodegen": { + "version": "2.0.0", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "optional": true + } + } + }, + "eslint": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "requires": { + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "escape-string-regexp": { + "version": "4.0.0" + }, + "eslint-scope": { + "version": "7.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0" + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "optionator": { + "version": "0.9.1", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0" + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + } + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0" + }, + "esutils": { + "version": "2.0.3" + }, + "etag": { + "version": "1.8.1", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "events": { + "version": "1.1.1", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "dev": true + } + } + }, + "exif-parser": { + "version": "0.1.12" + }, + "exit": { + "version": "0.1.2", + "dev": true + }, + "expand-tilde": { + "version": "2.0.2", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.17.3", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "qs": { + "version": "6.9.7", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "dev": true + }, + "send": { + "version": "0.17.2", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.2", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "eyes": { + "version": "0.1.8", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-glob": { + "version": "3.2.11", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fastq": { + "version": "1.13.0", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.10.0", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-saver": { + "version": "2.0.5" + }, + "file-sync-cmp": { + "version": "0.1.1", + "dev": true + }, + "file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "requires": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + } + }, + "filelist": { + "version": "1.0.4", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "dev": true + }, + "flat": { + "version": "5.0.2" + }, + "flat-cache": { + "version": "3.0.4", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5" + }, + "follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0" + }, + "fsevents": { + "version": "2.3.2", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1" + }, + "gamma": { + "version": "1.0.0" + }, + "gaze": { + "version": "1.1.3", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "dev": true + }, + "geodesy": { + "version": "1.1.3" + }, + "get-caller-file": { + "version": "2.0.5", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getobject": { + "version": "1.0.2", + "dev": true + }, + "gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "requires": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "glob": { + "version": "7.1.7", + "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": "6.0.2", + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-modules": { + "version": "1.0.0", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0" + }, + "globby": { + "version": "13.1.1", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "dev": true + } + } + }, + "globule": { + "version": "1.3.3", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "minimatch": { + "version": "3.0.8", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "graceful-fs": { + "version": "4.2.9", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "growl": { + "version": "1.10.5", + "dev": true + }, + "grunt": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", + "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", + "dev": true, + "requires": { + "dateformat": "~4.6.2", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~5.0.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.6.3", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "nopt": "~3.0.6" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.8", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "sprintf-js": { + "version": "1.0.3", + "dev": true + } + } + }, + "grunt-chmod": { + "version": "1.1.1", + "dev": true, + "requires": { + "shelljs": "^0.5.3" + } + }, + "grunt-cli": { + "version": "1.4.3", + "dev": true, + "requires": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "grunt-concurrent": { + "version": "3.0.0", + "dev": true, + "requires": { + "arrify": "^2.0.1", + "async": "^3.1.0", + "indent-string": "^4.0.0", + "pad-stream": "^2.0.0" + } + }, + "grunt-contrib-clean": { + "version": "2.0.1", + "dev": true, + "requires": { + "async": "^3.2.3", + "rimraf": "^2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "grunt-contrib-connect": { + "version": "3.0.0", + "dev": true, + "requires": { + "async": "^3.2.0", + "connect": "^3.7.0", + "connect-livereload": "^0.6.1", + "morgan": "^1.10.0", + "node-http2": "^4.0.1", + "opn": "^6.0.0", + "portscanner": "^2.2.0", + "serve-index": "^1.9.1", + "serve-static": "^1.14.1" + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "grunt-contrib-watch": { + "version": "1.1.0", + "dev": true, + "requires": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "grunt-eslint": { + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", + "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "eslint": "^8.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "grunt-exec": { + "version": "3.0.0", + "dev": true, + "requires": {} + }, + "grunt-known-options": { + "version": "2.0.0", + "dev": true + }, + "grunt-legacy-log": { + "version": "3.0.0", + "dev": true, + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "dev": true + } + } + }, + "grunt-legacy-log-utils": { + "version": "2.1.0", + "dev": true, + "requires": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "grunt-legacy-util": { + "version": "2.0.1", + "dev": true, + "requires": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + } + }, + "grunt-retro": { + "version": "0.6.4", + "dev": true + }, + "grunt-webpack": { + "version": "5.0.0", + "dev": true, + "requires": { + "deep-for-each": "^3.0.0", + "lodash": "^4.17.19" + } + }, + "grunt-zip": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", + "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", + "dev": true, + "requires": { + "grunt-retro": "~0.6.0", + "jszip": "~2.7.0" + } + }, + "gzip-size": { + "version": "6.0.0", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "dev": true + }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-symbols": { + "version": "1.0.3" + }, + "has-tostringtag": { + "version": "1.0.0", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1" + } + } + }, + "hash.js": { + "version": "1.1.7", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "dev": true + }, + "highlight.js": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", + "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-entities": { + "version": "2.3.3", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.6", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.4", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "dev": true + } + } + }, + "https-browserify": { + "version": "0.0.1", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "dev": true + }, + "iced-error": { + "version": "0.0.13" + }, + "iced-lock": { + "version": "1.1.0", + "requires": { + "iced-runtime": "^1.0.0" + } + }, + "iced-runtime": { + "version": "1.0.4" + }, + "iconv-lite": { + "version": "0.6.3", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "5.1.0", + "dev": true, + "requires": {} + }, + "idb-keyval": { + "version": "3.2.0" + }, + "ieee754": { + "version": "1.2.1" + }, + "ignore": { + "version": "5.2.0" + }, + "image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "requires": { + "@types/node": "16.9.1" + }, + "dependencies": { + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imports-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", + "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", + "dev": true, + "requires": { + "source-map": "^0.6.1", + "strip-comments": "^2.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "indent-string": { + "version": "4.0.0", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "1.3.8", + "dev": true + }, + "internmap": { + "version": "2.0.3" + }, + "interpret": { + "version": "1.1.0", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip-regex": { + "version": "4.3.0", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-arguments": { + "version": "1.1.1", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-electron": { + "version": "2.2.1" + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-glob": { + "version": "4.0.3", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "is-number-like": { + "version": "1.0.8", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-relative": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-url": { + "version": "1.2.4" + }, + "is-windows": { + "version": "1.0.2", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "dev": true + }, + "is2": { + "version": "2.0.7", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + } + }, + "isarray": { + "version": "1.0.0", + "dev": true + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "jake": { + "version": "10.8.5", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jimp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", + "regenerator-runtime": "^0.13.3" + } + }, + "jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, + "jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "js-crc": { + "version": "0.2.0" + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" + }, + "js-sha3": { + "version": "0.8.0" + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "4.1.0", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "jsesc": { + "version": "3.0.2" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonpath-plus": { + "version": "7.2.0" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jsqr": { + "version": "1.4.0" + }, + "jsrsasign": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", + "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==" + }, + "jszip": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", + "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", + "dev": true, + "requires": { + "pako": "~1.0.2" + } + }, + "jwa": { + "version": "1.4.1", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kbpgp": { + "version": "2.1.15", + "requires": { + "bn": "^1.0.5", + "bzip-deflate": "^1.0.0", + "deep-equal": "^1.1.0", + "iced-error": "0.0.13", + "iced-lock": "^1.0.2", + "iced-runtime": "^1.0.4", + "keybase-ecurve": "^1.0.1", + "keybase-nacl": "^1.1.2", + "minimist": "^1.2.0", + "pgp-utils": "0.0.35", + "purepack": "^1.0.5", + "triplesec": "^4.0.3", + "tweetnacl": "^0.13.1" + } + }, + "keybase-ecurve": { + "version": "1.0.1", + "requires": { + "bn": "^1.0.4" + } + }, + "keybase-nacl": { + "version": "1.1.4", + "requires": { + "iced-runtime": "^1.0.2", + "tweetnacl": "^0.13.1", + "uint64be": "^1.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "klona": { + "version": "2.0.5", + "dev": true + }, + "levn": { + "version": "0.4.1", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "libbzip2-wasm": { + "version": "0.0.4" + }, + "libyara-wasm": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-1.2.1.tgz", + "integrity": "sha512-PNqUNWnwjZLe55iA8Rv6vLQRjSdO2OnVg24aRE8v+ytR8CRB8agIG6pS9h2VQejuJP1A/uR4pwcBggUxoNC7DA==" + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "liftup": { + "version": "3.0.1", + "dev": true, + "requires": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "findup-sync": { + "version": "4.0.0", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + } + } + }, + "lines-and-columns": { + "version": "1.2.4", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "livereload-js": { + "version": "2.4.0", + "dev": true + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "loader-runner": { + "version": "4.2.0", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash._arraycopy": { + "version": "3.0.0", + "dev": true + }, + "lodash._arrayeach": { + "version": "3.0.0", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._baseclone": { + "version": "3.3.0", + "dev": true, + "requires": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "dev": true + }, + "lodash._basefor": { + "version": "3.0.3", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "dev": true + }, + "lodash.clone": { + "version": "3.0.3", + "dev": true, + "requires": { + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "dev": true + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isarguments": { + "version": "3.1.0", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isfinite": { + "version": "3.3.2", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.keys": { + "version": "3.1.2", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" + }, + "loglevel-message-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/loglevel-message-prefix/-/loglevel-message-prefix-3.0.0.tgz", + "integrity": "sha512-/cBEOqsuU0vJsFm4n92R7h6mkiKqt8vh+JOmW722DTZVVD7egEpVOx66re3vWxO7pii3B4eQuqm2qfqq5cAs0w==", + "requires": { + "es6-polyfills": "^2.0.0", + "loglevel": "^1.4.0" + } + }, + "long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, + "loose-envify": { + "version": "1.4.0", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.4", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + }, + "lz4js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", + "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "dev": true + }, + "markdown-it": { + "version": "13.0.1", + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "3.0.1" + } + } + }, + "md5.js": { + "version": "1.3.5", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdurl": { + "version": "1.0.1" + }, + "media-typer": { + "version": "0.3.0", + "dev": true + }, + "memfs": { + "version": "3.4.1", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "dev": true + }, + "methods": { + "version": "1.1.2", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "mime": { + "version": "1.6.0" + }, + "mime-db": { + "version": "1.52.0", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", + "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1" + }, + "minimatch": { + "version": "3.1.2", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "mkpath": { + "version": "1.0.0", + "dev": true + }, + "mocha": { + "version": "9.2.2", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "dev": true + } + } + }, + "diff": { + "version": "5.0.0", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "dev": true + }, + "glob": { + "version": "7.2.0", + "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" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "minimatch": { + "version": "4.2.1", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "modify-source-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/modify-source-webpack-plugin/-/modify-source-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-m2g6QEittzzcde0PhgQtOwRywjqo8Q+vMLHbNoH2JDEFE/AlTBWvtNQrp17xbqDUXIueLljm4bhE5OninatHYw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "moment-timezone": { + "version": "0.5.41", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", + "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", + "requires": { + "moment": "^2.29.4" + } + }, + "more-entropy": { + "version": "0.0.7", + "requires": { + "iced-runtime": ">=0.0.1" + } + }, + "morgan": { + "version": "1.10.0", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "mrmime": { + "version": "1.0.0", + "dev": true + }, + "ms": { + "version": "2.1.2" + }, + "multicast-dns": { + "version": "7.2.5", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "dev": true + }, + "natural-compare": { + "version": "1.4.0" + }, + "negotiator": { + "version": "0.6.3", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "dev": true + }, + "ngeohash": { + "version": "0.6.3" + }, + "nightwatch": { + "version": "2.6.16", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", + "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", + "dev": true, + "requires": { + "@nightwatch/chai": "5.0.2", + "@nightwatch/html-reporter-template": "0.1.4", + "ansi-to-html": "0.7.2", + "assertion-error": "1.1.0", + "boxen": "5.1.2", + "chai-nightwatch": "0.5.3", + "ci-info": "3.3.0", + "cli-table3": "^0.6.3", + "didyoumean": "1.2.2", + "dotenv": "10.0.0", + "ejs": "3.1.8", + "envinfo": "7.8.1", + "fs-extra": "^10.1.0", + "glob": "^7.2.3", + "jsdom": "19.0.0", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "4.6.1", + "lodash.escape": "4.0.1", + "lodash.merge": "4.6.2", + "lodash.pick": "4.4.0", + "minimatch": "3.1.2", + "minimist": "1.2.6", + "mkpath": "1.0.0", + "mocha": "9.2.2", + "nightwatch-axe-verbose": "^2.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "selenium-webdriver": "4.6.1", + "semver": "7.3.5", + "stacktrace-parser": "0.1.10", + "strip-ansi": "6.0.1", + "untildify": "^4.0.0", + "uuid": "8.3.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "semver": { + "version": "7.3.5", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "nightwatch-axe-verbose": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", + "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", + "dev": true, + "requires": { + "axe-core": "^4.6.1" + } + }, + "no-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.6.7", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1" + }, + "node-http2": { + "version": "4.0.1", + "dev": true, + "requires": { + "assert": "1.4.1", + "events": "1.1.1", + "https-browserify": "0.0.1", + "setimmediate": "^1.0.5", + "stream-browserify": "2.0.1", + "timers-browserify": "2.0.2", + "url": "^0.11.0", + "websocket-stream": "^5.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "node-md6": { + "version": "0.1.0" + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "nodom": { + "version": "2.4.0" + }, + "nofilter": { + "version": "3.1.0" + }, + "nopt": { + "version": "3.0.6", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "dev": true + }, + "notepack.io": { + "version": "3.0.1" + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "ntlm": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ntlm/-/ntlm-0.1.3.tgz", + "integrity": "sha512-pPlHxhAegZP4QAaOYd51vRd6VXTGfF7VLKJwuwN0iEB1aIi3SnqXYuS/bH/6wWBOq+Ehdil49mHm1Nseon085w==" + }, + "nwmatcher": { + "version": "1.4.4" + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1" + }, + "object.assign": { + "version": "4.1.2", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "dev": true + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "dev": true + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "opencollective-postinstall": { + "version": "2.0.3" + }, + "opener": { + "version": "1.5.2", + "dev": true + }, + "opn": { + "version": "6.0.0", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "prelude-ls": { + "version": "1.1.2" + }, + "type-check": { + "version": "0.3.2", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "ora": { + "version": "5.4.1", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "otp": { + "version": "0.1.3", + "requires": { + "thirty-two": "^0.0.2" + } + }, + "p-limit": { + "version": "3.1.0", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-retry": { + "version": "4.6.1", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pad-stream": { + "version": "2.0.0", + "dev": true, + "requires": { + "pumpify": "^1.3.3", + "split2": "^2.1.1", + "through2": "^2.0.0" + } + }, + "pako": { + "version": "1.0.11" + }, + "param-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-filepath": { + "version": "1.0.2", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "parse-json": { + "version": "5.2.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-passwd": { + "version": "1.0.0", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path": { + "version": "0.12.7", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-key": { + "version": "3.1.1" + }, + "path-parse": { + "version": "1.0.7" + }, + "path-root": { + "version": "0.1.1", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" + }, + "pend": { + "version": "1.2.0", + "dev": true + }, + "pgp-utils": { + "version": "0.0.35", + "requires": { + "iced-error": ">=0.0.8", + "iced-runtime": ">=0.0.1" + } + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "picocolors": { + "version": "1.0.0", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "dev": true + }, + "pify": { + "version": "2.3.0", + "dev": true + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "requires": { + "pngjs": "^3.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, + "popper.js": { + "version": "1.16.1" + }, + "portscanner": { + "version": "2.2.0", + "dev": true, + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "nanoid": { + "version": "3.3.4", + "dev": true + } + } + }, + "postcss-css-variables": { + "version": "0.18.0", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "escape-string-regexp": "^1.0.3", + "extend": "^3.0.1" + } + }, + "postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-loader": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", + "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1" + }, + "pretty-error": { + "version": "4.0.0", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process": { + "version": "0.11.10" + }, + "process-nextick-args": { + "version": "2.0.1", + "dev": true + }, + "progress": { + "version": "1.1.8" + }, + "prompt": { + "version": "1.3.0", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "async": "3.2.3", + "read": "1.0.x", + "revalidator": "0.1.x", + "winston": "2.x" + } + }, + "protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "pump": { + "version": "3.0.0", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1" + }, + "purepack": { + "version": "1.0.6" + }, + "qr-image": { + "version": "3.2.0" + }, + "qs": { + "version": "6.5.3", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "read": { + "version": "1.0.7", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cache": { + "version": "1.0.0", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + } + }, + "readdirp": { + "version": "3.6.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0" + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0" + }, + "resolve-url": { + "version": "0.2.1" + }, + "restore-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4" + }, + "revalidator": { + "version": "0.1.8", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "robust-predicates": { + "version": "3.0.1" + }, + "run-parallel": { + "version": "1.2.0", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3" + }, + "safe-buffer": { + "version": "5.1.2" + }, + "safe-json-parse": { + "version": "1.0.1", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sax": { + "version": "1.2.4" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "scryptsy": { + "version": "2.1.0" + }, + "select-hose": { + "version": "2.0.0", + "dev": true + }, + "selenium-webdriver": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", + "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "dev": true, + "requires": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.7.0" + }, + "dependencies": { + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "send": { + "version": "0.18.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "http-errors": { + "version": "2.0.0", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.1.3", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "setprototypeof": { + "version": "1.2.0", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "shelljs": { + "version": "0.5.3", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "dev": true + }, + "sirv": { + "version": "1.0.19", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "sitemap": { + "version": "7.1.1", + "dev": true, + "requires": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + } + }, + "snackbarjs": { + "version": "1.1.0" + }, + "sockjs": { + "version": "0.3.24", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.4", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sortablejs": { + "version": "1.15.0" + }, + "source-map-js": { + "version": "1.0.2", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "spdy": { + "version": "4.0.2", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split.js": { + "version": "1.6.5" + }, + "split2": { + "version": "2.2.0", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, + "sprintf-js": { + "version": "1.1.2", + "dev": true + }, + "ssdeep.js": { + "version": "0.0.3" + }, + "stack-trace": { + "version": "0.0.10", + "dev": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "dev": true + }, + "stream-browserify": { + "version": "3.0.0", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1" + } + } + }, + "string-template": { + "version": "0.2.1", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-comments": { + "version": "2.0.1", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + } + }, + "style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "dev": true + }, + "tcp-port-used": { + "version": "1.0.2", + "dev": true, + "requires": { + "debug": "4.3.1", + "is2": "^2.0.6" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "tesseract.js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", + "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", + "requires": { + "babel-eslint": "^10.1.0", + "bmp-js": "^0.1.0", + "file-type": "^12.4.1", + "idb-keyval": "^3.2.0", + "is-electron": "^2.2.0", + "is-url": "^1.2.4", + "node-fetch": "^2.6.0", + "opencollective-postinstall": "^2.0.2", + "regenerator-runtime": "^0.13.3", + "resolve-url": "^0.2.1", + "tesseract.js-core": "^3.0.2", + "wasm-feature-detect": "^1.2.11", + "zlibjs": "^0.3.1" + }, + "dependencies": { + "file-type": { + "version": "12.4.2" + } + } + }, + "tesseract.js-core": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", + "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" + }, + "text-table": { + "version": "0.2.0" + }, + "thirty-two": { + "version": "0.0.2" + }, + "through2": { + "version": "2.0.5", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "dev": true + }, + "timers-browserify": { + "version": "2.0.2", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "tiny-lr": { + "version": "1.1.1", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "dev": true + }, + "token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, + "totalist": { + "version": "1.1.0", + "dev": true + }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } + } + }, + "tr46": { + "version": "0.0.3" + }, + "triplesec": { + "version": "4.0.3", + "requires": { + "iced-error": ">=0.0.9", + "iced-lock": "^1.0.1", + "iced-runtime": "^1.0.2", + "more-entropy": ">=0.0.7", + "progress": "~1.1.2", + "uglify-js": "^3.1.9" + } + }, + "tslib": { + "version": "2.3.1", + "dev": true + }, + "tweetnacl": { + "version": "0.13.3" + }, + "type-check": { + "version": "0.4.0", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "dev": true + }, + "type-fest": { + "version": "0.20.2" + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "ua-parser-js": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", + "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==" + }, + "uc.micro": { + "version": "1.0.6" + }, + "uglify-js": { + "version": "3.15.3" + }, + "uint64be": { + "version": "1.0.1" + }, + "ultron": { + "version": "1.1.1", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "dev": true + }, + "underscore.string": { + "version": "3.3.6", + "dev": true, + "requires": { + "sprintf-js": "^1.1.1", + "util-deprecate": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unorm": { + "version": "1.6.0" + }, + "unpipe": { + "version": "1.0.0", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "dev": true + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "utf8": { + "version": "3.0.0" + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, + "util": { + "version": "0.10.3", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1" + } + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "utila": { + "version": "0.4.0", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8flags": { + "version": "3.2.0", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "vkbeautify": { + "version": "0.99.3" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-keyname": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", + "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", + "dev": true + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "wasm-feature-detect": { + "version": "1.2.11" + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1" + }, + "webpack": { + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "events": { + "version": "3.3.0", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", + "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "7.5.7", + "dev": true, + "requires": {} + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + } + }, + "webpack-node-externals": { + "version": "3.0.0", + "dev": true + }, + "webpack-sources": { + "version": "3.2.3", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "dev": true + }, + "websocket-stream": { + "version": "5.5.2", + "dev": true, + "requires": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "^3.2.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "ws": { + "version": "3.3.3", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "3.1.0", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "winston": { + "version": "2.4.5", + "dev": true, + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "dev": true + }, + "colors": { + "version": "1.0.3", + "dev": true + } + } + }, + "word-wrap": { + "version": "1.2.3" + }, + "worker-loader": { + "version": "3.0.8", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "workerpool": { + "version": "6.2.0", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmldom": { + "version": "0.6.0" + }, + "xpath": { + "version": "0.0.32" + }, + "xregexp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", + "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", + "requires": { + "@babel/runtime-corejs3": "^7.16.5" + } + }, + "xtend": { + "version": "4.0.2" + }, + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "decamelize": { + "version": "4.0.0", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0" + }, + "zlibjs": { + "version": "0.3.1" + } } +} From b78533bb02399a9d46ca43295ac39749d14287ed Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sat, 3 Feb 2024 02:02:13 +0000 Subject: [PATCH 0958/1024] Update forensics wiki address --- src/core/Utils.mjs | 17 +++++++++++++++++ src/core/operations/CTPH.mjs | 2 +- src/core/operations/CompareCTPHHashes.mjs | 2 +- src/core/operations/CompareSSDEEPHashes.mjs | 2 +- src/core/operations/SSDEEP.mjs | 2 +- src/web/HTMLOperation.mjs | 4 ++-- 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index 787ef270..18b0e688 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -892,6 +892,23 @@ class Utils { } + /** + * Converts a string to it's title case equivalent. + * + * @param {string} str + * @returns string + * + * @example + * // return "A Tiny String" + * Utils.toTitleCase("a tIny String"); + */ + static toTitleCase(str) { + return str.replace(/\w\S*/g, function(txt) { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); + }); + } + + /** * Encodes a URI fragment (#) or query (?) using a minimal amount of percent-encoding. * diff --git a/src/core/operations/CTPH.mjs b/src/core/operations/CTPH.mjs index 7394faaa..6b6a487d 100644 --- a/src/core/operations/CTPH.mjs +++ b/src/core/operations/CTPH.mjs @@ -21,7 +21,7 @@ class CTPH extends Operation { this.name = "CTPH"; this.module = "Crypto"; this.description = "Context Triggered Piecewise Hashing, also called Fuzzy Hashing, can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length.

        CTPH was originally based on the work of Dr. Andrew Tridgell and a spam email detector called SpamSum. This method was adapted by Jesse Kornblum and published at the DFRWS conference in 2006 in a paper 'Identifying Almost Identical Files Using Context Triggered Piecewise Hashing'."; - this.infoURL = "https://forensicswiki.xyz/wiki/index.php?title=Context_Triggered_Piecewise_Hashing"; + this.infoURL = "https://forensics.wiki/context_triggered_piecewise_hashing/"; this.inputType = "string"; this.outputType = "string"; this.args = []; diff --git a/src/core/operations/CompareCTPHHashes.mjs b/src/core/operations/CompareCTPHHashes.mjs index 40fec472..91956220 100644 --- a/src/core/operations/CompareCTPHHashes.mjs +++ b/src/core/operations/CompareCTPHHashes.mjs @@ -24,7 +24,7 @@ class CompareCTPHHashes extends Operation { this.name = "Compare CTPH hashes"; this.module = "Crypto"; this.description = "Compares two Context Triggered Piecewise Hashing (CTPH) fuzzy hashes to determine the similarity between them on a scale of 0 to 100."; - this.infoURL = "https://forensicswiki.xyz/wiki/index.php?title=Context_Triggered_Piecewise_Hashing"; + this.infoURL = "https://forensics.wiki/context_triggered_piecewise_hashing/"; this.inputType = "string"; this.outputType = "Number"; this.args = [ diff --git a/src/core/operations/CompareSSDEEPHashes.mjs b/src/core/operations/CompareSSDEEPHashes.mjs index 806b048e..9937d7e6 100644 --- a/src/core/operations/CompareSSDEEPHashes.mjs +++ b/src/core/operations/CompareSSDEEPHashes.mjs @@ -24,7 +24,7 @@ class CompareSSDEEPHashes extends Operation { this.name = "Compare SSDEEP hashes"; this.module = "Crypto"; this.description = "Compares two SSDEEP fuzzy hashes to determine the similarity between them on a scale of 0 to 100."; - this.infoURL = "https://forensicswiki.xyz/wiki/index.php?title=Ssdeep"; + this.infoURL = "https://forensics.wiki/ssdeep/"; this.inputType = "string"; this.outputType = "Number"; this.args = [ diff --git a/src/core/operations/SSDEEP.mjs b/src/core/operations/SSDEEP.mjs index df1557d5..6a76a68b 100644 --- a/src/core/operations/SSDEEP.mjs +++ b/src/core/operations/SSDEEP.mjs @@ -21,7 +21,7 @@ class SSDEEP extends Operation { this.name = "SSDEEP"; this.module = "Crypto"; this.description = "SSDEEP is a program for computing context triggered piecewise hashes (CTPH). Also called fuzzy hashes, CTPH can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length.

        SSDEEP hashes are now widely used for simple identification purposes (e.g. the 'Basic Properties' section in VirusTotal). Although 'better' fuzzy hashes are available, SSDEEP is still one of the primary choices because of its speed and being a de facto standard.

        This operation is fundamentally the same as the CTPH operation, however their outputs differ in format."; - this.infoURL = "https://forensicswiki.xyz/wiki/index.php?title=Ssdeep"; + this.infoURL = "https://forensics.wiki/ssdeep"; this.inputType = "string"; this.outputType = "string"; this.args = []; diff --git a/src/web/HTMLOperation.mjs b/src/web/HTMLOperation.mjs index d0523aa4..ae61b58d 100755 --- a/src/web/HTMLOperation.mjs +++ b/src/web/HTMLOperation.mjs @@ -157,9 +157,9 @@ function titleFromWikiLink(urlStr) { pageTitle = ""; switch (urlObj.host) { - case "forensicswiki.xyz": + case "forensics.wiki": wikiName = "Forensics Wiki"; - pageTitle = urlObj.query.substr(6).replace(/_/g, " "); // Chop off 'title=' + pageTitle = Utils.toTitleCase(urlObj.path.replace(/\//g, "").replace(/_/g, " ")); break; case "wikipedia.org": wikiName = "Wikipedia"; From 22a873c73e849f64a404ee12fed28acf0f582ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Notin?= Date: Tue, 28 Nov 2023 16:34:51 +0100 Subject: [PATCH 0959/1024] Describe that "Parse ASN.1 hex string" operation requires an hex string input Just in case the title of the operation doesn't make it clear enough --- src/core/operations/ParseASN1HexString.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/ParseASN1HexString.mjs b/src/core/operations/ParseASN1HexString.mjs index 14890186..35fd5ba4 100644 --- a/src/core/operations/ParseASN1HexString.mjs +++ b/src/core/operations/ParseASN1HexString.mjs @@ -20,7 +20,7 @@ class ParseASN1HexString extends Operation { this.name = "Parse ASN.1 hex string"; this.module = "PublicKey"; - this.description = "Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.

        This operation parses arbitrary ASN.1 data and presents the resulting tree."; + this.description = "Abstract Syntax Notation One (ASN.1) is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data in telecommunications and computer networking.

        This operation parses arbitrary ASN.1 data (encoded as an hex string: use the 'To Hex' operation if necessary) and presents the resulting tree."; this.infoURL = "https://wikipedia.org/wiki/Abstract_Syntax_Notation_One"; this.inputType = "string"; this.outputType = "string"; From df151eabf91cdb31292cfa336844bfdc24afba19 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sat, 3 Feb 2024 14:19:50 +0000 Subject: [PATCH 0960/1024] 10.6.0 --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93944764..c8854d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.6.0] - 2024-02-03 +- Updated 'Forensics Wiki' URLs to new domain [@a3957273] | [#1703] +- Added 'LZNT1 Decompress' operation [@0xThiebaut] | [#1675] +- Updated 'Regex Expression' UUID matcher [@cnotin] | [#1678] +- Removed duplicate 'hover' message within baking info [#KevinSJ] | [#1541] + ### [10.5.0] - 2023-07-14 - Added GOST Encrypt, Decrypt, Sign, Verify, Key Wrap, and Key Unwrap operations [@n1474335] | [#592] diff --git a/package-lock.json b/package-lock.json index 8b484b79..ae8e5889 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.5.2", + "version": "10.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.5.2", + "version": "10.6.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 5259e1bb..55b65312 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.5.2", + "version": "10.6.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 0f3cd72dd3b055cae8f683435e3f74acb60cfe2b Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sun, 4 Feb 2024 00:34:24 +0000 Subject: [PATCH 0961/1024] Add links to Changelog --- CHANGELOG.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8854d89..2d845a56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ All major and minor version changes will be documented in this file. Details of - Updated 'Forensics Wiki' URLs to new domain [@a3957273] | [#1703] - Added 'LZNT1 Decompress' operation [@0xThiebaut] | [#1675] - Updated 'Regex Expression' UUID matcher [@cnotin] | [#1678] -- Removed duplicate 'hover' message within baking info [#KevinSJ] | [#1541] +- Removed duplicate 'hover' message within baking info [@KevinSJ] | [#1541] ### [10.5.0] - 2023-07-14 - Added GOST Encrypt, Decrypt, Sign, Verify, Key Wrap, and Key Unwrap operations [@n1474335] | [#592] @@ -379,7 +379,7 @@ All major and minor version changes will be documented in this file. Details of - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) - +[10.6.0]: https://github.com/gchq/CyberChef/releases/tag/v10.6.0 [10.5.0]: https://github.com/gchq/CyberChef/releases/tag/v10.5.0 [10.4.0]: https://github.com/gchq/CyberChef/releases/tag/v10.4.0 [10.3.0]: https://github.com/gchq/CyberChef/releases/tag/v10.3.0 @@ -534,6 +534,10 @@ All major and minor version changes will be documented in this file. Details of [@joostrijneveld]: https://github.com/joostrijneveld [@Xenonym]: https://github.com/Xenonym [@gchq77703]: https://github.com/gchq77703 +[@a3957273]: https://github.com/a3957273 +[@0xThiebaut]: https://github.com/0xThiebaut +[@cnotin]: https://github.com/cnotin +[@KevinSJ]: https://github.com/KevinSJ [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7 [9a33498]: https://github.com/gchq/CyberChef/commit/9a33498fed26a8df9c9f35f39a78a174bf50a513 @@ -652,4 +656,7 @@ All major and minor version changes will be documented in this file. Details of [#661]: https://github.com/gchq/CyberChef/pull/661 [#493]: https://github.com/gchq/CyberChef/pull/493 [#592]: https://github.com/gchq/CyberChef/issues/592 - +[#1703]: https://github.com/gchq/CyberChef/issues/1703 +[#1675]: https://github.com/gchq/CyberChef/issues/1675 +[#1678]: https://github.com/gchq/CyberChef/issues/1678 +[#1541]: https://github.com/gchq/CyberChef/issues/1541 From 5afecdb11a47ba323fe3d1c3ad083f9298dcf853 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sun, 4 Feb 2024 01:08:15 +0000 Subject: [PATCH 0962/1024] Update node packages --- package-lock.json | 10991 ++++++++++++++++++++++++++------------------ package.json | 112 +- 2 files changed, 6654 insertions(+), 4449 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae8e5889..8ca4f515 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,53 +18,53 @@ "arrive": "^2.4.1", "avsc": "^5.7.7", "bcryptjs": "^2.4.3", - "bignumber.js": "^9.1.1", + "bignumber.js": "^9.1.2", "blakejs": "^1.2.1", - "bootstrap": "4.6.2", + "bootstrap": "5.3.2", "bootstrap-colorpicker": "^3.4.0", "bootstrap-material-design": "^4.1.3", "browserify-zlib": "^0.2.0", "bson": "^4.7.2", "buffer": "^6.0.3", - "cbor": "8.1.0", + "cbor": "9.0.2", "chi-squared": "^1.1.0", "codepage": "^1.15.0", "crypto-api": "^0.8.5", "crypto-browserify": "^3.12.0", - "crypto-js": "^4.1.1", + "crypto-js": "^4.2.0", "ctph.js": "0.0.5", - "d3": "7.8.2", + "d3": "7.8.5", "d3-hexbin": "^0.2.2", "diff": "^5.1.0", "es6-promisify": "^7.0.0", - "escodegen": "^2.0.0", + "escodegen": "^2.1.0", "esprima": "^4.0.1", "exif-parser": "^0.1.12", "file-saver": "^2.0.5", - "flat": "^5.0.2", + "flat": "^6.0.1", "geodesy": "1.1.3", - "highlight.js": "^11.7.0", - "jimp": "^0.16.13", - "jquery": "3.6.4", + "highlight.js": "^11.9.0", + "jimp": "^0.22.10", + "jquery": "3.7.1", "js-crc": "^0.2.0", - "js-sha3": "^0.8.0", + "js-sha3": "^0.9.3", "jsesc": "^3.0.2", "json5": "^2.2.3", - "jsonpath-plus": "^7.2.0", + "jsonpath-plus": "^8.0.0", "jsonwebtoken": "8.5.1", "jsqr": "^1.4.0", - "jsrsasign": "^10.6.1", + "jsrsasign": "^11.1.0", "kbpgp": "2.1.15", "libbzip2-wasm": "0.0.4", "libyara-wasm": "^1.2.1", "lodash": "^4.17.21", - "loglevel": "^1.8.1", + "loglevel": "^1.9.1", "loglevel-message-prefix": "^3.0.0", "lz-string": "^1.5.0", "lz4js": "^0.2.0", - "markdown-it": "^13.0.1", - "moment": "^2.29.4", - "moment-timezone": "^0.5.41", + "markdown-it": "^14.0.0", + "moment": "^2.30.1", + "moment-timezone": "^0.5.44", "ngeohash": "^0.6.3", "node-forge": "^1.3.1", "node-md6": "^0.1.0", @@ -76,79 +76,88 @@ "path": "^0.12.7", "popper.js": "^1.16.1", "process": "^0.11.10", - "protobufjs": "^7.2.2", + "protobufjs": "^7.2.6", "qr-image": "^3.2.0", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.1", "scryptsy": "^2.1.0", "snackbarjs": "^1.1.0", - "sortablejs": "^1.15.0", + "sortablejs": "^1.15.2", "split.js": "^1.6.5", "ssdeep.js": "0.0.3", "stream-browserify": "^3.0.0", - "tesseract.js": "3.0.3", - "ua-parser-js": "^1.0.34", + "tesseract.js": "5.0.4", + "ua-parser-js": "^1.0.37", "unorm": "^1.6.0", "utf8": "^3.0.0", "vkbeautify": "^0.99.3", "xmldom": "^0.6.0", - "xpath": "0.0.32", + "xpath": "0.0.34", "xregexp": "^5.1.1", "zlibjs": "^0.3.1" }, "devDependencies": { - "@babel/core": "^7.21.0", - "@babel/eslint-parser": "^7.19.1", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-transform-runtime": "^7.21.0", - "@babel/preset-env": "^7.20.2", - "@babel/runtime": "^7.21.0", - "@codemirror/commands": "^6.2.1", - "@codemirror/language": "^6.6.0", - "@codemirror/search": "^6.2.3", - "@codemirror/state": "^6.2.0", - "@codemirror/view": "^6.9.2", - "autoprefixer": "^10.4.13", - "babel-loader": "^9.1.2", + "@babel/core": "^7.23.9", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/runtime": "^7.23.9", + "@codemirror/commands": "^6.3.3", + "@codemirror/language": "^6.10.1", + "@codemirror/search": "^6.5.5", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.23.1", + "autoprefixer": "^10.4.17", + "babel-loader": "^9.1.3", "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", "chromedriver": "^121.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", - "copy-webpack-plugin": "^11.0.0", - "core-js": "^3.29.0", - "css-loader": "6.7.3", - "eslint": "^8.35.0", + "copy-webpack-plugin": "^12.0.2", + "core-js": "^3.35.1", + "css-loader": "6.10.0", + "eslint": "^8.56.0", "grunt": "^1.6.1", "grunt-chmod": "~1.1.1", "grunt-concurrent": "^3.0.0", "grunt-contrib-clean": "~2.0.1", - "grunt-contrib-connect": "^3.0.0", + "grunt-contrib-connect": "^4.0.0", "grunt-contrib-copy": "~1.0.0", "grunt-contrib-watch": "^1.1.0", - "grunt-eslint": "^24.0.1", + "grunt-eslint": "^24.3.0", "grunt-exec": "~3.0.0", - "grunt-webpack": "^5.0.0", - "grunt-zip": "^0.20.0", - "html-webpack-plugin": "^5.5.0", - "imports-loader": "^4.0.1", - "mini-css-extract-plugin": "2.7.3", + "grunt-webpack": "^6.0.0", + "grunt-zip": "^1.0.0", + "html-webpack-plugin": "^5.6.0", + "imports-loader": "^5.0.0", + "mini-css-extract-plugin": "2.8.0", "modify-source-webpack-plugin": "^3.0.0", - "nightwatch": "^2.6.16", - "postcss": "^8.4.21", - "postcss-css-variables": "^0.18.0", - "postcss-import": "^15.1.0", - "postcss-loader": "^7.0.2", + "nightwatch": "^3.4.0", + "postcss": "^8.4.33", + "postcss-css-variables": "^0.19.0", + "postcss-import": "^16.0.0", + "postcss-loader": "^8.1.0", "prompt": "^1.3.0", "sitemap": "^7.1.1", - "terser": "^5.16.6", - "webpack": "^5.76.0", - "webpack-bundle-analyzer": "^4.8.0", - "webpack-dev-server": "4.11.1", + "terser": "^5.27.0", + "webpack": "^5.90.1", + "webpack-bundle-analyzer": "^4.10.1", + "webpack-dev-server": "4.15.1", "webpack-node-externals": "^3.0.0", "worker-loader": "^3.0.8" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -175,6 +184,23 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", + "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==", + "dev": true, + "dependencies": { + "bidi-js": "^1.0.3", + "css-tree": "^2.3.1", + "is-potential-custom-element-name": "^1.0.1" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, "node_modules/@astronautlabs/amf": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", @@ -186,55 +212,63 @@ "node": "^14" } }, - "node_modules/@astronautlabs/bitstream": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", - "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", + "node_modules/@astronautlabs/amf/node_modules/@astronautlabs/bitstream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.2.2.tgz", + "integrity": "sha512-/D18Aua0Er95TkulkVBXK5oweh55tXlgpug7g2cKdUvVBT91k2YD9n1RYnbrfaaHIN+KVDaBIrf3j9dS3DhzXw==", "peerDependencies": { "reflect-metadata": "^0.1.13" } }, + "node_modules/@astronautlabs/amf/node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "peer": true + }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -245,29 +279,30 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": ">=7.11.0", + "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "dependencies": { - "@babel/types": "^7.21.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -278,7 +313,9 @@ }, "node_modules/@babel/generator/node_modules/jsesc": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -287,77 +324,60 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -367,13 +387,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -383,139 +404,128 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -525,117 +535,121 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -643,9 +657,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -654,12 +669,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -669,14 +684,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -685,232 +700,27 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, "engines": { "node": ">=6.9.0" }, @@ -918,22 +728,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -997,12 +791,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1011,6 +805,33 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -1124,30 +945,64 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1157,12 +1012,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1172,12 +1027,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1186,20 +1041,52 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1210,12 +1097,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1225,12 +1113,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1240,13 +1128,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1256,12 +1144,28 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1271,13 +1175,29 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1287,12 +1207,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1302,14 +1223,30 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1319,12 +1256,28 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1334,12 +1287,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1349,13 +1302,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1365,14 +1318,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1382,15 +1335,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1400,13 +1353,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1416,13 +1369,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1432,12 +1385,63 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1447,13 +1451,46 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1463,12 +1500,46 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1478,12 +1549,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1493,13 +1564,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1509,12 +1580,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1524,17 +1595,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", - "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1544,12 +1615,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1559,13 +1630,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1575,12 +1646,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1590,12 +1661,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1605,12 +1676,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1620,12 +1691,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1635,13 +1722,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1650,6 +1737,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/polyfill": { "version": "7.12.1", "license": "MIT", @@ -1664,38 +1767,27 @@ "license": "MIT" }, "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1705,45 +1797,61 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1753,26 +1861,32 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -1789,33 +1903,41 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1823,12 +1945,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1844,35 +1967,35 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", - "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", "dev": true, "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.2.0", + "@codemirror/state": "^6.4.0", "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" + "@lezer/common": "^1.1.0" } }, "node_modules/@codemirror/language": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", - "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", "dev": true, "dependencies": { "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "node_modules/@codemirror/search": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", - "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", + "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", "dev": true, "dependencies": { "@codemirror/state": "^6.0.0", @@ -1881,19 +2004,19 @@ } }, "node_modules/@codemirror/state": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", - "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", + "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==", "dev": true }, "node_modules/@codemirror/view": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", - "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.1.tgz", + "integrity": "sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==", "dev": true, "dependencies": { - "@codemirror/state": "^6.1.4", - "style-mod": "^4.0.0", + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, @@ -1914,14 +2037,51 @@ "node": ">=10.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1937,9 +2097,10 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1951,20 +2112,22 @@ } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1975,6 +2138,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, "engines": { "node": ">=12.22" }, @@ -1984,17 +2148,17 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true }, "node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", + "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", + "@jimp/utils": "^0.22.10", "bmp-js": "^0.1.0" }, "peerDependencies": { @@ -2002,21 +2166,18 @@ } }, "node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", + "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", + "@jimp/utils": "^0.22.10", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", + "isomorphic-fetch": "^3.0.0", "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "tinycolor2": "^1.6.0" } }, "node_modules/@jimp/core/node_modules/buffer": { @@ -2043,22 +2204,20 @@ } }, "node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", + "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" + "@jimp/core": "^0.22.10" } }, "node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", + "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", + "@jimp/utils": "^0.22.10", + "gifwrap": "^0.10.1", "omggif": "^1.0.9" }, "peerDependencies": { @@ -2066,74 +2225,68 @@ } }, "node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", + "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" + "@jimp/utils": "^0.22.10", + "jpeg-js": "^0.4.4" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", + "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", + "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", + "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", + "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" + "@jimp/utils": "^0.22.10", + "tinycolor2": "^1.6.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", + "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2143,12 +2296,11 @@ } }, "node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", + "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2158,60 +2310,55 @@ } }, "node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", + "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", + "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", + "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", + "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", + "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2219,61 +2366,56 @@ } }, "node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", + "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", + "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", + "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", + "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", + "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" + "@jimp/utils": "^0.22.10", + "load-bmfont": "^1.4.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2281,24 +2423,22 @@ } }, "node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", + "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", + "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2308,12 +2448,11 @@ } }, "node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", + "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2321,12 +2460,11 @@ } }, "node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", + "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2335,12 +2473,11 @@ } }, "node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", + "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2349,32 +2486,31 @@ } }, "node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", + "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", + "@jimp/plugin-blit": "^0.22.10", + "@jimp/plugin-blur": "^0.22.10", + "@jimp/plugin-circle": "^0.22.10", + "@jimp/plugin-color": "^0.22.10", + "@jimp/plugin-contain": "^0.22.10", + "@jimp/plugin-cover": "^0.22.10", + "@jimp/plugin-crop": "^0.22.10", + "@jimp/plugin-displace": "^0.22.10", + "@jimp/plugin-dither": "^0.22.10", + "@jimp/plugin-fisheye": "^0.22.10", + "@jimp/plugin-flip": "^0.22.10", + "@jimp/plugin-gaussian": "^0.22.10", + "@jimp/plugin-invert": "^0.22.10", + "@jimp/plugin-mask": "^0.22.10", + "@jimp/plugin-normalize": "^0.22.10", + "@jimp/plugin-print": "^0.22.10", + "@jimp/plugin-resize": "^0.22.10", + "@jimp/plugin-rotate": "^0.22.10", + "@jimp/plugin-scale": "^0.22.10", + "@jimp/plugin-shadow": "^0.22.10", + "@jimp/plugin-threshold": "^0.22.10", "timm": "^1.6.1" }, "peerDependencies": { @@ -2382,41 +2518,38 @@ } }, "node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", + "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" + "@jimp/utils": "^0.22.10", + "pngjs": "^6.0.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", + "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" + "utif2": "^4.0.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", + "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", + "@jimp/bmp": "^0.22.10", + "@jimp/gif": "^0.22.10", + "@jimp/jpeg": "^0.22.10", + "@jimp/png": "^0.22.10", + "@jimp/tiff": "^0.22.10", "timm": "^1.6.1" }, "peerDependencies": { @@ -2424,18 +2557,18 @@ } }, "node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", + "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", "dependencies": { - "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2449,21 +2582,24 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -2472,15 +2608,17 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -2489,9 +2627,9 @@ "license": "MIT" }, "node_modules/@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", "dev": true }, "node_modules/@lezer/highlight": { @@ -2522,14 +2660,15 @@ } }, "node_modules/@nightwatch/chai": { - "version": "5.0.2", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@nightwatch/chai/-/chai-5.0.3.tgz", + "integrity": "sha512-1OIkOf/7jswOC3/t+Add/HVQO8ib75kz6BVYSNeWGghTlmHUqYEfNJ6vcACbXrn/4v3+9iRlWixuhFkxXkU/RQ==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "1.1.0", "check-error": "1.0.2", "deep-eql": "4.0.1", - "loupe": "2.3.4", + "loupe": "^2.3.7", "pathval": "1.1.1", "type-detect": "4.0.8" }, @@ -2538,13 +2677,24 @@ } }, "node_modules/@nightwatch/html-reporter-template": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", - "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.3.0.tgz", + "integrity": "sha512-Mze1z6pmUz2O8N9w1/h3QWz1lzMig45PGyh8PrL9ERs3FxVnIX0RCn37vjZUYiV4wgjZOg41JjdcpriZ3dJxkA==", "dev": true }, + "node_modules/@nightwatch/nightwatch-inspector": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@nightwatch/nightwatch-inspector/-/nightwatch-inspector-1.0.1.tgz", + "integrity": "sha512-/ax11EOB4eJXT5VioMztcalbCtsNeuFn6icfT75qPLBmkxLvThePSfyGTys+t9AULUR0ug0wMDMiLV1Oy586Fg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "archiver": "^5.3.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -2556,6 +2706,7 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -2563,6 +2714,7 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -2573,9 +2725,20 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "dev": true, - "license": "MIT" + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", @@ -2621,6 +2784,18 @@ "version": "1.1.0", "license": "BSD-3-Clause" }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@testim/chrome-version": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", @@ -2632,15 +2807,6 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/@types/body-parser": { "version": "1.19.2", "dev": true, @@ -2658,6 +2824,12 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, "node_modules/@types/connect": { "version": "3.4.35", "dev": true, @@ -2694,9 +2866,10 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "dev": true, - "license": "MIT" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.13", @@ -2746,11 +2919,6 @@ "version": "17.0.23", "license": "MIT" }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/qs": { "version": "6.9.7", "dev": true, @@ -2774,6 +2942,15 @@ "@types/node": "*" } }, + "node_modules/@types/selenium-webdriver": { + "version": "4.1.21", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.21.tgz", + "integrity": "sha512-QGURnImvxYlIQz5DVhvHdqpYNLBjhJ2Vm+cnQI2G9QZzkWlZm0LkLcvDcHp+qE6N2KBz4CeuvXgPO7W3XQ0Tyw==", + "dev": true, + "dependencies": { + "@types/ws": "*" + } + }, "node_modules/@types/serve-index": { "version": "1.9.1", "dev": true, @@ -2800,9 +2977,10 @@ } }, "node_modules/@types/ws": { - "version": "8.5.3", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2816,10 +2994,11 @@ "@types/node": "*" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true, - "license": "ISC" + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true }, "node_modules/@wavesenterprise/crypto-gost-js": { "version": "2.1.0-RC1", @@ -2827,150 +3006,161 @@ "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "dev": true, - "license": "MIT" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "dev": true, - "license": "MIT" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "dev": true, - "license": "MIT" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "dev": true, - "license": "MIT" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "dev": true, - "license": "MIT" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "node_modules/abbrev": { @@ -2991,30 +3181,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3023,19 +3192,11 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -3044,6 +3205,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3070,6 +3232,7 @@ }, "node_modules/ajv": { "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -3136,8 +3299,9 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -3155,6 +3319,7 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3164,6 +3329,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -3203,6 +3369,75 @@ "node": ">= 8" } }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/archiver/node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, "node_modules/arg": { "version": "5.0.1", "dev": true, @@ -3217,6 +3452,69 @@ "version": "2.0.1", "license": "Python-2.0" }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/aria-query/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aria-query/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-each": { "version": "1.0.1", "dev": true, @@ -3297,9 +3595,9 @@ "dev": true }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "funding": [ { @@ -3309,12 +3607,16 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -3329,6 +3631,18 @@ "postcss": "^8.1.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/avsc": { "version": "5.7.7", "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", @@ -3338,9 +3652,9 @@ } }, "node_modules/axe-core": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", - "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.3.tgz", + "integrity": "sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==", "dev": true, "engines": { "node": ">=4" @@ -3422,38 +3736,13 @@ "node": ">=0.8.0" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, "node_modules/babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.2", + "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" }, "engines": { @@ -3481,42 +3770,42 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-transform-builtin-extend": { @@ -3626,6 +3915,7 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -3672,6 +3962,15 @@ "version": "2.4.3", "license": "MIT" }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/big.js": { "version": "5.2.2", "dev": true, @@ -3681,9 +3980,9 @@ } }, "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "engines": { "node": "*" } @@ -3877,9 +4176,9 @@ "license": "ISC" }, "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", "funding": [ { "type": "github", @@ -3891,8 +4190,7 @@ } ], "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" + "@popperjs/core": "^2.11.8" } }, "node_modules/bootstrap-colorpicker": { @@ -3995,6 +4293,7 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -4016,16 +4315,11 @@ "version": "1.1.0", "license": "MIT" }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", @@ -4107,9 +4401,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -4119,13 +4413,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -4227,11 +4525,13 @@ "license": "CC-SA 3.0" }, "node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4239,7 +4539,9 @@ }, "node_modules/callsites": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -4285,13 +4587,14 @@ ] }, "node_modules/cbor": { - "version": "8.1.0", - "license": "MIT", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "dependencies": { "nofilter": "^3.1.0" }, "engines": { - "node": ">=12.19" + "node": ">=16" } }, "node_modules/chai-nightwatch": { @@ -4309,6 +4612,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4320,8 +4624,9 @@ }, "node_modules/check-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -4494,8 +4799,9 @@ }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -4521,6 +4827,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -4528,7 +4835,8 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/colorette": { "version": "2.0.16", @@ -4562,10 +4870,11 @@ "node": ">= 10" } }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true }, "node_modules/compare-versions": { "version": "6.1.0", @@ -4573,6 +4882,21 @@ "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", "dev": true }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/compressible": { "version": "2.0.18", "dev": true, @@ -4624,6 +4948,7 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "dev": true, "license": "MIT" }, "node_modules/connect": { @@ -4713,12 +5038,10 @@ "dev": true }, "node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/cookie": { "version": "0.4.2", @@ -4734,19 +5057,20 @@ "license": "MIT" }, "node_modules/copy-webpack-plugin": { - "version": "11.0.0", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, - "license": "MIT", "dependencies": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^13.1.1", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -4756,10 +5080,63 @@ "webpack": "^5.1.0" } }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz", + "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==", "dev": true, "hasInstallScript": true, "funding": { @@ -4768,12 +5145,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", + "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -4795,18 +5172,54 @@ "license": "MIT" }, "node_modules/cosmiconfig": { - "version": "7.0.1", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" } }, "node_modules/create-ecdh": { @@ -4852,6 +5265,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -4887,23 +5301,24 @@ } }, "node_modules/crypto-js": { - "version": "4.1.1", - "license": "MIT" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "node_modules/css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.19", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -4913,13 +5328,34 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4931,6 +5367,12 @@ "node": ">=10" } }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/css-select": { "version": "4.3.0", "dev": true, @@ -4946,6 +5388,19 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/css-what": { "version": "6.0.1", "dev": true, @@ -4959,8 +5414,9 @@ }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -4968,30 +5424,18 @@ "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, "node_modules/ctph.js": { "version": "0.0.5" }, @@ -5003,9 +5447,9 @@ } }, "node_modules/d3": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", - "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -5350,51 +5794,16 @@ } }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/dateformat": { @@ -5406,8 +5815,15 @@ "node": "*" } }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, "node_modules/debug": { "version": "4.3.4", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -5421,6 +5837,18 @@ } } }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -5429,8 +5857,9 @@ }, "node_modules/deep-eql": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.0.1.tgz", + "integrity": "sha512-D/Oxqobjr+kxaHsgiQBZq9b6iAWdEj5W/JdJm8deNduAPc9CwXQ3BJJCuEqlrPXcy45iOMkGPZ0T81Dnz7UDCA==", "dev": true, - "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -5463,6 +5892,7 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "dev": true, "license": "MIT" }, "node_modules/default-gateway": { @@ -5484,6 +5914,19 @@ "clone": "^1.0.2" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "dev": true, @@ -5493,13 +5936,19 @@ } }, "node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delaunator": { @@ -5556,6 +6005,12 @@ "dev": true, "license": "MIT" }, + "node_modules/devtools-protocol": { + "version": "0.0.1140464", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1140464.tgz", + "integrity": "sha512-I1jXnjpQh/6TBFyQ0A9dB2kXXk6DprpPFZoI8pUsxHtlNuOTQEdv9fUqYBsFtf8tOJCbdsZZyQrWeXu6GfK+Bw==", + "dev": true + }, "node_modules/didyoumean": { "version": "1.2.2", "dev": true, @@ -5581,17 +6036,6 @@ "version": "4.12.0", "license": "MIT" }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dns-equal": { "version": "1.0.0", "dev": true, @@ -5610,6 +6054,7 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -5655,27 +6100,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "4.3.1", "dev": true, @@ -5713,11 +6137,15 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/duplexer": { @@ -5785,9 +6213,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", "dev": true }, "node_modules/elliptic": { @@ -5828,15 +6256,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "dev": true, @@ -5846,9 +6265,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -5867,10 +6286,20 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/envinfo": { - "version": "7.8.1", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -5887,16 +6316,52 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-module-lexer": { - "version": "0.9.3", + "node_modules/es-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.0.0.tgz", + "integrity": "sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, - "license": "MIT" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true }, "node_modules/es6-object-assign": { "version": "1.1.0", @@ -5927,8 +6392,9 @@ }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -5940,19 +6406,20 @@ }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/escodegen": { - "version": "2.0.0", - "license": "BSD-2-Clause", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -5974,25 +6441,28 @@ } }, "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6000,23 +6470,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -6049,24 +6515,9 @@ "node": ">=4.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10" @@ -6074,6 +6525,7 @@ }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -6087,6 +6539,7 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -6101,6 +6554,7 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6111,10 +6565,12 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", + "dev": true, "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6124,27 +6580,38 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "license": "BSD-2-Clause", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "license": "Apache-2.0", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/globals": { "version": "13.19.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -6157,28 +6624,15 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6188,13 +6642,14 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6204,11 +6659,15 @@ } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -6226,6 +6685,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -6235,6 +6695,7 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -6265,6 +6726,12 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, "node_modules/eventemitter2": { "version": "0.4.14", "dev": true, @@ -6541,12 +7008,14 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.2.11", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6560,8 +7029,9 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6571,14 +7041,18 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fastq": { "version": "1.13.0", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -6605,6 +7079,7 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -6707,23 +7182,24 @@ "license": "MIT" }, "node_modules/find-cache-dir": { - "version": "3.3.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, - "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-up": { "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -6775,14 +7251,19 @@ } }, "node_modules/flat": { - "version": "5.0.2", - "license": "BSD-3-Clause", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-6.0.1.tgz", + "integrity": "sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==", "bin": { "flat": "cli.js" + }, + "engines": { + "node": ">=18" } }, "node_modules/flat-cache": { "version": "3.0.4", + "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.1.0", @@ -6794,6 +7275,7 @@ }, "node_modules/flatted": { "version": "3.2.5", + "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { @@ -6816,6 +7298,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "dev": true, @@ -6858,15 +7349,16 @@ } }, "node_modules/fraction.js": { - "version": "4.2.0", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, - "license": "MIT", "engines": { "node": "*" }, "funding": { "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { @@ -6877,19 +7369,11 @@ "node": ">= 0.6" } }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-monkey": { "version": "1.0.3", @@ -6898,6 +7382,7 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -6913,8 +7398,20 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gamma": { "version": "1.0.0", @@ -6945,27 +7442,35 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { - "version": "2.0.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "license": "MIT", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.3.tgz", + "integrity": "sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.0.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6993,9 +7498,9 @@ } }, "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -7003,6 +7508,7 @@ }, "node_modules/glob": { "version": "7.1.7", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -7021,6 +7527,7 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -7085,35 +7592,28 @@ }, "node_modules/globals": { "version": "11.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { "node": ">=4" } }, "node_modules/globby": { - "version": "13.1.1", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", "dev": true, - "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7143,23 +7643,27 @@ "node": "*" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.9", "dev": true, "license": "ISC" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/grunt": { "version": "1.6.1", @@ -7272,22 +7776,23 @@ } }, "node_modules/grunt-contrib-connect": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-4.0.0.tgz", + "integrity": "sha512-VR2/+ailwTClAXrvI7bK78roCZzfY1C48vmpdRldohx8P1VXcb51NmBNhukBvG2RKFChNheEcKEcM+wSb/5nYA==", "dev": true, - "license": "MIT", "dependencies": { "async": "^3.2.0", "connect": "^3.7.0", "connect-livereload": "^0.6.1", "morgan": "^1.10.0", "node-http2": "^4.0.1", - "opn": "^6.0.0", + "open": "^8.0.0", "portscanner": "^2.2.0", "serve-index": "^1.9.1", "serve-static": "^1.14.1" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/grunt-contrib-copy": { @@ -7375,13 +7880,13 @@ } }, "node_modules/grunt-eslint": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", - "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", + "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", "dev": true, "dependencies": { "chalk": "^4.1.2", - "eslint": "^8.0.1" + "eslint": "^8.44.0" }, "engines": { "node": ">=12" @@ -7599,34 +8104,39 @@ } }, "node_modules/grunt-webpack": { - "version": "5.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-6.0.0.tgz", + "integrity": "sha512-FtRVTGJGuV9Ic/OrCR80p5u601e0ekvTyHo7vnwVo3XlvRh5wR1ATAVT9FnnobHqZnQ/DeF84W97si5+roUWEA==", "dev": true, - "license": "MIT", "dependencies": { "deep-for-each": "^3.0.0", - "lodash": "^4.17.19" + "lodash": "^4.17.21" }, "engines": { - "node": ">=12.13.0" + "node": ">=16.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" } }, "node_modules/grunt-zip": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", - "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-1.0.0.tgz", + "integrity": "sha512-e5HOzf+BLFR6rXM67oGrFcVgfVbLDPBnv29YdWTupthwNg/1y91B0xXx667E6dKin8YvrwDShtQy48D1NRzn7g==", "dev": true, "dependencies": { "grunt-retro": "~0.6.0", - "jszip": "~2.7.0" + "jszip": "^3.8.0" }, "bin": { "grunt-zip": "bin/grunt-zip" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 8.0.0" } }, "node_modules/grunt/node_modules/argparse": { @@ -7686,6 +8196,7 @@ }, "node_modules/has": { "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -7713,14 +8224,46 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "license": "MIT", @@ -7732,10 +8275,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7782,6 +8326,34 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, "node_modules/he": { "version": "1.2.0", "dev": true, @@ -7791,9 +8363,9 @@ } }, "node_modules/highlight.js": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", - "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", "engines": { "node": ">=12.0.0" } @@ -7859,15 +8431,15 @@ } }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-entities": { @@ -7875,6 +8447,12 @@ "dev": true, "license": "MIT" }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "node_modules/html-minifier-terser": { "version": "6.1.0", "dev": true, @@ -7904,9 +8482,10 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -7922,7 +8501,16 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/htmlparser2": { @@ -7994,17 +8582,28 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/http-proxy-middleware": { @@ -8101,8 +8700,9 @@ } }, "node_modules/idb-keyval": { - "version": "3.2.0", - "license": "Apache-2.0" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" }, "node_modules/ieee754": { "version": "1.2.1", @@ -8123,8 +8723,10 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.2.0", - "license": "MIT", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, "engines": { "node": ">= 4" } @@ -8150,7 +8752,9 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8163,16 +8767,16 @@ } }, "node_modules/imports-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", - "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", + "integrity": "sha512-tXgL8xxZFjOjQLLiE7my00UUQfktg4G8fdpXcZphL0bJWbk9eCxKKFaCwmFRcwyRJQl95GXBL1DoE1rCS/tcPw==", "dev": true, "dependencies": { - "source-map": "^0.6.1", + "source-map-js": "^1.0.2", "strip-comments": "^2.0.1" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -8182,16 +8786,9 @@ "webpack": "^5.0.0" } }, - "node_modules/imports-loader/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -8207,6 +8804,7 @@ }, "node_modules/inflight": { "version": "1.0.6", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -8222,6 +8820,20 @@ "dev": true, "license": "ISC" }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/internmap": { "version": "2.0.3", "license": "ISC", @@ -8284,10 +8896,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT" + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -8300,8 +8941,37 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.8.1", + "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -8338,11 +9008,13 @@ } }, "node_modules/is-electron": { - "version": "2.2.1", - "license": "MIT" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" }, "node_modules/is-extglob": { "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8363,6 +9035,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -8379,6 +9052,15 @@ "node": ">=8" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "dev": true, @@ -8395,10 +9077,35 @@ "lodash.isfinite": "^3.3.2" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, "engines": { "node": ">=8" } @@ -8445,6 +9152,27 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "dev": true, @@ -8456,6 +9184,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-unc-path": { "version": "1.0.0", "dev": true, @@ -8482,6 +9240,28 @@ "version": "1.2.4", "license": "MIT" }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "dev": true, @@ -8490,14 +9270,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/is2": { "version": "2.0.7", "dev": true, @@ -8518,6 +9290,7 @@ }, "node_modules/isexe": { "version": "2.0.0", + "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -8528,6 +9301,15 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, "node_modules/isstream": { "version": "0.1.2", "dev": true, @@ -8616,8 +9398,9 @@ }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8629,16 +9412,18 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8650,50 +9435,52 @@ } }, "node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", + "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", + "@jimp/custom": "^0.22.10", + "@jimp/plugins": "^0.22.10", + "@jimp/types": "^0.22.10", "regenerator-runtime": "^0.13.3" } }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, "node_modules/jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "node_modules/js-crc": { "version": "0.2.0", "license": "MIT" }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha3": { - "version": "0.8.0", - "license": "MIT" + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.3.tgz", + "integrity": "sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==" }, "node_modules/js-tokens": { "version": "4.0.0", + "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -8703,44 +9490,38 @@ } }, "node_modules/jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", + "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", + "@asamuzakjp/dom-selector": "^2.0.1", + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.16.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -8748,38 +9529,29 @@ } } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "punycode": "^2.1.1" + "debug": "^4.3.4" }, "engines": { - "node": ">=12" + "node": ">= 14" } }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=12" + "node": ">= 14" } }, "node_modules/jsesc": { @@ -8799,10 +9571,12 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "dev": true, "license": "MIT" }, "node_modules/json5": { @@ -8816,23 +9590,12 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpath-plus": { - "version": "7.2.0", - "license": "MIT", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-8.0.0.tgz", + "integrity": "sha512-+AOBHcQvRr8DcWVIkfOCCCLSlYgQuNZ+gFNqwkBrNpdUfdfkcrbO4ml3F587fWUMFOmoy6D9c+5wrghgjN3mbg==", "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/jsonwebtoken": { @@ -8869,20 +9632,47 @@ "license": "Apache-2.0" }, "node_modules/jsrsasign": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", - "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", + "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } }, "node_modules/jszip": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", - "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "dependencies": { - "pako": "~1.0.2" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/jwa": { @@ -8944,17 +9734,57 @@ "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.5", + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, - "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, "engines": { - "node": ">= 8" + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/levn": { "version": "0.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -9015,14 +9845,16 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/linkify-it": { - "version": "4.0.1", - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/livereload-js": { @@ -9069,6 +9901,7 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -9084,88 +9917,28 @@ "version": "4.17.21", "license": "MIT" }, - "node_modules/lodash._arraycopy": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._arrayeach": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._baseassign": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "node_modules/lodash._baseclone": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._basefor": { - "version": "3.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._bindcallback": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clone": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.defaultsdeep": { - "version": "4.6.1", - "dev": true, - "license": "MIT" + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "node_modules/lodash.includes": { @@ -9173,16 +9946,6 @@ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -9212,18 +9975,9 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "node_modules/lodash.merge": { "version": "4.6.2", + "dev": true, "license": "MIT" }, "node_modules/lodash.once": { @@ -9231,10 +9985,10 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true }, "node_modules/log-symbols": { @@ -9317,9 +10071,9 @@ } }, "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "engines": { "node": ">= 0.6.0" }, @@ -9355,11 +10109,12 @@ } }, "node_modules/loupe": { - "version": "2.3.4", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, - "license": "MIT", "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lower-case": { @@ -9371,14 +10126,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/lz-string": { @@ -9394,20 +10147,6 @@ "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/make-iterator": { "version": "1.0.1", "dev": true, @@ -9428,22 +10167,25 @@ } }, "node_modules/markdown-it": { - "version": "13.0.1", - "license": "MIT", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", "dependencies": { "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/markdown-it/node_modules/entities": { - "version": "3.0.1", - "license": "BSD-2-Clause", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { "node": ">=0.12" }, @@ -9460,9 +10202,16 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/mdurl": { - "version": "1.0.1", - "license": "MIT" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" }, "node_modules/media-typer": { "version": "0.3.0", @@ -9495,8 +10244,9 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } @@ -9582,12 +10332,13 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", - "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz", + "integrity": "sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" @@ -9610,6 +10361,7 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -9622,97 +10374,60 @@ "version": "1.2.6", "license": "MIT" }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkpath": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/mocha": { - "version": "9.2.2", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "license": "MIT", "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mochajs" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/mocha/node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -9722,8 +10437,9 @@ }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9741,8 +10457,9 @@ }, "node_modules/mocha/node_modules/glob/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9752,32 +10469,54 @@ }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "MIT" + "dependencies": { + "randombytes": "^2.1.0" + } }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9821,17 +10560,17 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } }, "node_modules/moment-timezone": { - "version": "0.5.41", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", - "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", + "version": "0.5.44", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz", + "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==", "dependencies": { "moment": "^2.29.4" }, @@ -9874,9 +10613,10 @@ "license": "MIT" }, "node_modules/mrmime": { - "version": "1.0.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -9903,9 +10643,10 @@ "license": "ISC" }, "node_modules/nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9915,6 +10656,7 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "dev": true, "license": "MIT" }, "node_modules/negotiator": { @@ -9937,56 +10679,70 @@ "node": ">=v0.2.0" } }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, "node_modules/nightwatch": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", - "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-3.4.0.tgz", + "integrity": "sha512-/i6zo2HrAs1sXUqXqKpdV1e7OeeafZNfR69N+qZr25imC2+m91OgN4JNRDEmWNVtGGH+RcnpO4MPdvdGivvthA==", "dev": true, "dependencies": { - "@nightwatch/chai": "5.0.2", - "@nightwatch/html-reporter-template": "0.1.4", + "@nightwatch/chai": "5.0.3", + "@nightwatch/html-reporter-template": "^0.3.0", + "@nightwatch/nightwatch-inspector": "^1.0.1", + "@types/chai": "^4.3.5", + "@types/selenium-webdriver": "^4.1.14", "ansi-to-html": "0.7.2", + "aria-query": "5.1.3", "assertion-error": "1.1.0", "boxen": "5.1.2", - "chai-nightwatch": "0.5.3", + "chai-nightwatch": "^0.5.3", + "chalk": "^4.1.2", "ci-info": "3.3.0", "cli-table3": "^0.6.3", - "didyoumean": "1.2.2", - "dotenv": "10.0.0", + "devtools-protocol": "^0.0.1140464", + "didyoumean": "^1.2.2", + "dotenv": "16.3.1", "ejs": "3.1.8", - "envinfo": "7.8.1", - "fs-extra": "^10.1.0", - "glob": "^7.2.3", - "jsdom": "19.0.0", - "lodash.clone": "3.0.3", - "lodash.defaultsdeep": "4.6.1", - "lodash.escape": "4.0.1", - "lodash.merge": "4.6.2", - "lodash.pick": "4.4.0", + "envinfo": "7.11.0", + "glob": "7.2.3", + "jsdom": "^23.1.0", + "lodash": "^4.17.21", "minimatch": "3.1.2", "minimist": "1.2.6", - "mkpath": "1.0.0", - "mocha": "9.2.2", - "nightwatch-axe-verbose": "^2.1.0", - "open": "8.4.0", + "mocha": "10.2.0", + "nightwatch-axe-verbose": "^2.3.0", + "open": "8.4.2", "ora": "5.4.1", - "selenium-webdriver": "4.6.1", - "semver": "7.3.5", + "piscina": "3.2.0", + "selenium-webdriver": "4.16.0", + "semver": "7.5.4", "stacktrace-parser": "0.1.10", "strip-ansi": "6.0.1", - "untildify": "^4.0.0", + "untildify": "4.0.0", "uuid": "8.3.2" }, "bin": { "nightwatch": "bin/nightwatch" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16" }, "peerDependencies": { - "@cucumber/cucumber": "*", - "chromedriver": "*", - "geckodriver": "*" + "@cucumber/cucumber": "*" }, "peerDependenciesMeta": { "@cucumber/cucumber": { @@ -10001,14 +10757,63 @@ } }, "node_modules/nightwatch-axe-verbose": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", - "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.3.0.tgz", + "integrity": "sha512-IC29PLvYrbbKRdIU/NJaxk/UvTmQ5EiNN08UnCWyImpzV0Y7tE1CYchrvFTaHXBZkkZTQC3uHTeHF/41mvK8eQ==", "dev": true, "dependencies": { - "axe-core": "^4.6.1" + "axe-core": "^4.8.3" } }, + "node_modules/nightwatch/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nightwatch/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nightwatch/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nightwatch/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/nightwatch/node_modules/glob": { "version": "7.2.3", "dev": true, @@ -10028,10 +10833,32 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nightwatch/node_modules/semver": { - "version": "7.3.5", + "node_modules/nightwatch/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nightwatch/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nightwatch/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10042,6 +10869,24 @@ "node": ">=10" } }, + "node_modules/nightwatch/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nightwatch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/no-case": { "version": "3.0.4", "dev": true, @@ -10051,9 +10896,17 @@ "tslib": "^2.0.3" } }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, "node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10069,6 +10922,25 @@ } } }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-forge": { "version": "1.3.1", "license": "(BSD-3-Clause OR GPL-2.0)", @@ -10076,6 +10948,18 @@ "node": ">= 6.13.0" } }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-http2": { "version": "4.0.1", "dev": true, @@ -10130,9 +11014,9 @@ "license": "CC0-1.0" }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nodom": { @@ -10211,12 +11095,6 @@ "version": "1.4.4", "license": "MIT" }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, "node_modules/object-assign": { "version": "4.1.1", "dev": true, @@ -10225,6 +11103,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-is": { "version": "1.1.5", "license": "MIT", @@ -10247,13 +11134,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -10331,6 +11219,7 @@ }, "node_modules/once": { "version": "1.4.0", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -10351,9 +11240,10 @@ } }, "node_modules/open": { - "version": "8.4.0", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -10392,54 +11282,18 @@ "opener": "bin/opener-bin.js" } }, - "node_modules/opn": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/optionator": { - "version": "0.8.3", - "license": "MIT", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/levn": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/prelude-ls": { - "version": "1.1.2", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/type-check": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -10564,6 +11418,7 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -10577,6 +11432,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -10608,14 +11464,6 @@ "node": ">= 4" } }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/pad-stream": { "version": "2.0.0", "dev": true, @@ -10644,7 +11492,9 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -10702,8 +11552,9 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -10726,10 +11577,28 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/parseurl": { "version": "1.3.3", @@ -10758,6 +11627,7 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10765,6 +11635,7 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10772,6 +11643,7 @@ }, "node_modules/path-key": { "version": "3.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10779,6 +11651,7 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "dev": true, "license": "MIT" }, "node_modules/path-root": { @@ -10806,17 +11679,22 @@ "license": "MIT" }, "node_modules/path-type": { - "version": "4.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -10888,6 +11766,20 @@ "node": ">=0.10.0" } }, + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, "node_modules/pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", @@ -10899,71 +11791,117 @@ "pixelmatch": "bin/pixelmatch" } }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/pkg-dir": { - "version": "4.2.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "find-up": "^6.3.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "engines": { - "node": ">=4.0.0" + "node": ">=12.13.0" } }, "node_modules/popper.js": { @@ -10996,9 +11934,9 @@ } }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -11008,10 +11946,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -11020,9 +11962,10 @@ } }, "node_modules/postcss-css-variables": { - "version": "0.18.0", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.19.0.tgz", + "integrity": "sha512-Hr0WEYKLK9VCrY15anHXOd4RCvJy/xRvCnWdplGBeLInwEj6Z14hgzTb2W/39dYTCnS8hnHUfU4/F1zxX0IZuQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "escape-string-regexp": "^1.0.3", @@ -11033,9 +11976,9 @@ } }, "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.0.0.tgz", + "integrity": "sha512-e77lhVvrD1I2y7dYmBv0k9ULTdArgEYZt97T4w6sFIU5uxIHvDFQlKgUUyY7v7Barj0Yf/zm5A4OquZN7jKm5Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", @@ -11043,38 +11986,59 @@ "resolve": "^1.1.7" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.0.tgz", + "integrity": "sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==", "dev": true, "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.8" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11086,6 +12050,12 @@ "node": ">=10" } }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", "dev": true, @@ -11098,9 +12068,10 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -11114,9 +12085,10 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -11142,9 +12114,10 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11159,9 +12132,16 @@ "license": "MIT" }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.4", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11171,7 +12151,9 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -11219,9 +12201,9 @@ } }, "node_modules/protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -11318,8 +12300,18 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "license": "MIT", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "engines": { "node": ">=6" } @@ -11359,6 +12351,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -11460,6 +12453,36 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "dev": true, @@ -11483,9 +12506,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -11494,9 +12517,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -11511,20 +12534,22 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "license": "MIT", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -11533,25 +12558,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -11560,12 +12575,6 @@ "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -11609,8 +12618,9 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11630,6 +12640,7 @@ }, "node_modules/resolve": { "version": "1.22.0", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", @@ -11657,15 +12668,13 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "engines": { "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "license": "MIT" - }, "node_modules/restore-cursor": { "version": "3.1.0", "dev": true, @@ -11680,6 +12689,7 @@ }, "node_modules/reusify": { "version": "1.0.4", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -11696,6 +12706,7 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -11719,8 +12730,15 @@ "version": "3.0.1", "license": "Unlicense" }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "node_modules/run-parallel": { "version": "1.2.0", + "dev": true, "funding": [ { "type": "github", @@ -11761,15 +12779,15 @@ "license": "ISC" }, "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=v12.22.7" } }, "node_modules/schema-utils": { @@ -11835,55 +12853,19 @@ "license": "MIT" }, "node_modules/selenium-webdriver": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", - "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.16.0.tgz", + "integrity": "sha512-IbqpRpfGE7JDGgXHJeWuCqT/tUqnLvZ14csSwt+S8o4nJo3RtQoE9VR4jB47tP/A8ArkYsh/THuMY6kyRP6kuA==", "dev": true, "dependencies": { - "jszip": "^3.10.0", + "jszip": "^3.10.1", "tmp": "^0.2.1", - "ws": ">=8.7.0" + "ws": ">=8.14.2" }, "engines": { "node": ">= 14.20.0" } }, - "node_modules/selenium-webdriver/node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/selenium-webdriver/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/selenium-webdriver/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/selfsigned": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", @@ -11897,9 +12879,10 @@ } }, "node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -11985,9 +12968,10 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -12036,6 +13020,34 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "dev": true, @@ -12059,6 +13071,7 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -12069,11 +13082,21 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/shelljs": { "version": "0.5.3", "dev": true, @@ -12085,19 +13108,34 @@ "node": ">=0.8.0" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "dev": true, "license": "ISC" }, "node_modules/sirv": { - "version": "1.0.19", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dev": true, - "license": "MIT", "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { "node": ">= 10" @@ -12121,6 +13159,18 @@ "npm": ">=5.6.0" } }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/snackbarjs": { "version": "1.1.0", "license": "ISC" @@ -12147,8 +13197,9 @@ } }, "node_modules/sortablejs": { - "version": "1.15.0", - "license": "MIT" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", + "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" }, "node_modules/source-map-js": { "version": "1.0.2", @@ -12258,6 +13309,18 @@ "node": ">= 0.6" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "license": "MIT", @@ -12315,6 +13378,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -12341,7 +13405,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "engines": { "node": ">=8" }, @@ -12366,15 +13432,16 @@ } }, "node_modules/style-mod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", - "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==", "dev": true }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -12384,6 +13451,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -12406,6 +13474,22 @@ "node": ">=6" } }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tcp-port-used": { "version": "1.0.2", "dev": true, @@ -12432,13 +13516,13 @@ } }, "node_modules/terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -12450,15 +13534,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, - "license": "MIT", "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -12483,9 +13568,10 @@ } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12499,54 +13585,37 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "dev": true, "license": "MIT" }, "node_modules/tesseract.js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", - "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-5.0.4.tgz", + "integrity": "sha512-GCIoSQMZlvTP2AaHrjUOH29/oyO7ZyHVe+BhTexEcO7/nDClRVDRjl2sYJLOWSSNbTDrm5q2m1+gfaf3lUrZ5Q==", "hasInstallScript": true, "dependencies": { - "babel-eslint": "^10.1.0", "bmp-js": "^0.1.0", - "file-type": "^12.4.1", - "idb-keyval": "^3.2.0", - "is-electron": "^2.2.0", + "idb-keyval": "^6.2.0", + "is-electron": "^2.2.2", "is-url": "^1.2.4", - "node-fetch": "^2.6.0", - "opencollective-postinstall": "^2.0.2", + "node-fetch": "^2.6.9", + "opencollective-postinstall": "^2.0.3", "regenerator-runtime": "^0.13.3", - "resolve-url": "^0.2.1", - "tesseract.js-core": "^3.0.2", + "tesseract.js-core": "^5.0.0", "wasm-feature-detect": "^1.2.11", "zlibjs": "^0.3.1" } }, "node_modules/tesseract.js-core": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", - "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" - }, - "node_modules/tesseract.js/node_modules/file-type": { - "version": "12.4.2", - "license": "MIT", - "engines": { - "node": ">=8" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-5.0.0.tgz", + "integrity": "sha512-lJur5LzjinW5VYMKlVNnBU2JPLpO+A9VqAYBeuV+ZgH0hKvsnm+536Yyp+/zRTBdLe7D6Kok0FN9g+TE4J8qGA==" }, "node_modules/text-table": { "version": "0.2.0", + "dev": true, "license": "MIT" }, "node_modules/thirty-two": { @@ -12646,7 +13715,9 @@ }, "node_modules/to-fast-properties": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, "engines": { "node": ">=4" } @@ -12687,17 +13758,18 @@ } }, "node_modules/totalist": { - "version": "1.1.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -12709,18 +13781,17 @@ "node": ">=6" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } }, "node_modules/triplesec": { "version": "4.0.3", @@ -12744,7 +13815,9 @@ }, "node_modules/type-check": { "version": "0.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -12754,14 +13827,16 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -12783,9 +13858,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -12794,6 +13869,10 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { @@ -12801,8 +13880,9 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "license": "MIT" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==" }, "node_modules/uglify-js": { "version": "3.15.3", @@ -12883,13 +13963,25 @@ "node": ">=4" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/unorm": { @@ -12917,9 +14009,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -12929,6 +14021,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -12936,7 +14032,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -12944,6 +14040,7 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -12977,12 +14074,12 @@ "version": "3.0.0", "license": "MIT" }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "node_modules/utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", "dependencies": { - "pako": "^1.0.5" + "pako": "^1.0.11" } }, "node_modules/util": { @@ -13045,16 +14142,6 @@ "version": "0.99.3", "license": "MIT" }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, "node_modules/w3c-keyname": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", @@ -13062,15 +14149,15 @@ "dev": true }, "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/wasm-feature-detect": { @@ -13107,26 +14194,31 @@ } }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } }, "node_modules/webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "version": "5.90.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", + "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -13135,9 +14227,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -13158,20 +14250,23 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", - "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { @@ -13181,68 +14276,25 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { @@ -13288,9 +14340,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -13299,7 +14351,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -13312,6 +14364,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -13321,7 +14374,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -13337,6 +14390,9 @@ "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } @@ -13367,9 +14423,10 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -13450,36 +14507,47 @@ } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/which": { "version": "2.0.2", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -13491,6 +14559,56 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/widest-line": { "version": "3.1.0", "dev": true, @@ -13531,13 +14649,6 @@ "node": ">=0.1.90" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/worker-loader": { "version": "3.0.8", "dev": true, @@ -13575,9 +14686,10 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", - "dev": true, - "license": "Apache-2.0" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -13627,19 +14739,20 @@ }, "node_modules/wrappy": { "version": "1.0.2", + "dev": true, "license": "ISC" }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -13662,12 +14775,12 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xml-parse-from-string": { @@ -13709,8 +14822,9 @@ } }, "node_modules/xpath": { - "version": "0.0.32", - "license": "MIT", + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", + "integrity": "sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==", "engines": { "node": ">=0.6.0" } @@ -13732,29 +14846,24 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -13770,16 +14879,18 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -13790,23 +14901,13 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", + "node_modules/yargs-unparser/node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "flat": "cli.js" } }, "node_modules/yauzl": { @@ -13820,6 +14921,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13828,6 +14930,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/zlibjs": { "version": "0.3.1", "license": "MIT", @@ -13837,6 +14994,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -13859,535 +15022,400 @@ } } }, + "@asamuzakjp/dom-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", + "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==", + "dev": true, + "requires": { + "bidi-js": "^1.0.3", + "css-tree": "^2.3.1", + "is-potential-custom-element-name": "^1.0.1" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, "@astronautlabs/amf": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@astronautlabs/amf/-/amf-0.0.6.tgz", "integrity": "sha512-cJgbXW45TIDLQf2hiHqDoRfmeRy5u9Z4npr7sZfBThvbp5cbqDieTWaJTu91cUAj35/u87OHZijLTbMO18ZIow==", "requires": { "@astronautlabs/bitstream": "^4.0.0" + }, + "dependencies": { + "@astronautlabs/bitstream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.2.2.tgz", + "integrity": "sha512-/D18Aua0Er95TkulkVBXK5oweh55tXlgpug7g2cKdUvVBT91k2YD9n1RYnbrfaaHIN+KVDaBIrf3j9dS3DhzXw==", + "requires": {} + }, + "reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "peer": true + } } }, - "@astronautlabs/bitstream": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@astronautlabs/bitstream/-/bitstream-4.1.3.tgz", - "integrity": "sha512-4X5cmrB5I5g/ifKXwoVc5JwAYgn372kS0AsTdVQYY+OzlSZ92ANEHj6W5MW5haYSQbbBZ9XK55rdy6NnXOyRgA==", - "requires": {} - }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true }, "@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" } }, "@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" } }, "@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "requires": { - "@babel/types": "^7.21.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { "jsesc": { - "version": "2.5.2" - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true } } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", - "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" } }, "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "requires": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==" + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -14433,12 +15461,30 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -14520,332 +15566,512 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-transform-arrow-functions": { + "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", - "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", - "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", - "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/polyfill": { @@ -14861,38 +16087,27 @@ } }, "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -14902,64 +16117,95 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" } }, "@babel/preset-modules": { - "version": "0.1.5", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dev": true, "requires": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + } } }, "@babel/runtime-corejs3": { @@ -14970,39 +16216,42 @@ } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" } }, "@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -15012,35 +16261,35 @@ "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==" }, "@codemirror/commands": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", - "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", "dev": true, "requires": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.2.0", + "@codemirror/state": "^6.4.0", "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" + "@lezer/common": "^1.1.0" } }, "@codemirror/language": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", - "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", "dev": true, "requires": { "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "@codemirror/search": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.2.3.tgz", - "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", + "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", "dev": true, "requires": { "@codemirror/state": "^6.0.0", @@ -15049,19 +16298,19 @@ } }, "@codemirror/state": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", - "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", + "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==", "dev": true }, "@codemirror/view": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.2.tgz", - "integrity": "sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==", + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.1.tgz", + "integrity": "sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==", "dev": true, "requires": { - "@codemirror/state": "^6.1.4", - "style-mod": "^4.0.0", + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, @@ -15075,14 +16324,38 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -15092,9 +16365,10 @@ }, "dependencies": { "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -15102,56 +16376,56 @@ } }, "@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==" + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true }, "@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", + "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", + "@jimp/utils": "^0.22.10", "bmp-js": "^0.1.0" } }, "@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", + "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", + "@jimp/utils": "^0.22.10", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", + "isomorphic-fetch": "^3.0.0", "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "tinycolor2": "^1.6.0" }, "dependencies": { "buffer": { @@ -15166,302 +16440,274 @@ } }, "@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", + "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" + "@jimp/core": "^0.22.10" } }, "@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", + "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", + "@jimp/utils": "^0.22.10", + "gifwrap": "^0.10.1", "omggif": "^1.0.9" } }, "@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", + "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" + "@jimp/utils": "^0.22.10", + "jpeg-js": "^0.4.4" } }, "@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", + "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", + "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", + "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", + "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" + "@jimp/utils": "^0.22.10", + "tinycolor2": "^1.6.0" } }, "@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", + "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", + "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", + "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", + "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", + "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", + "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", + "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", + "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", + "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", + "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", + "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", + "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" + "@jimp/utils": "^0.22.10", + "load-bmfont": "^1.4.1" } }, "@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", + "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", + "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", + "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", + "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", + "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" + "@jimp/utils": "^0.22.10" } }, "@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", + "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", + "@jimp/plugin-blit": "^0.22.10", + "@jimp/plugin-blur": "^0.22.10", + "@jimp/plugin-circle": "^0.22.10", + "@jimp/plugin-color": "^0.22.10", + "@jimp/plugin-contain": "^0.22.10", + "@jimp/plugin-cover": "^0.22.10", + "@jimp/plugin-crop": "^0.22.10", + "@jimp/plugin-displace": "^0.22.10", + "@jimp/plugin-dither": "^0.22.10", + "@jimp/plugin-fisheye": "^0.22.10", + "@jimp/plugin-flip": "^0.22.10", + "@jimp/plugin-gaussian": "^0.22.10", + "@jimp/plugin-invert": "^0.22.10", + "@jimp/plugin-mask": "^0.22.10", + "@jimp/plugin-normalize": "^0.22.10", + "@jimp/plugin-print": "^0.22.10", + "@jimp/plugin-resize": "^0.22.10", + "@jimp/plugin-rotate": "^0.22.10", + "@jimp/plugin-scale": "^0.22.10", + "@jimp/plugin-shadow": "^0.22.10", + "@jimp/plugin-threshold": "^0.22.10", "timm": "^1.6.1" } }, "@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", + "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" + "@jimp/utils": "^0.22.10", + "pngjs": "^6.0.0" } }, "@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", + "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", "requires": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" + "utif2": "^4.0.1" } }, "@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", + "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", + "@jimp/bmp": "^0.22.10", + "@jimp/gif": "^0.22.10", + "@jimp/jpeg": "^0.22.10", + "@jimp/png": "^0.22.10", + "@jimp/tiff": "^0.22.10", "timm": "^1.6.1" } }, "@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", + "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", "requires": { - "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -15471,13 +16717,17 @@ "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true }, "@jridgewell/set-array": { - "version": "1.1.1" + "version": "1.1.1", + "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -15487,15 +16737,17 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -15503,9 +16755,9 @@ "dev": true }, "@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", "dev": true }, "@lezer/highlight": { @@ -15536,44 +16788,66 @@ } }, "@nightwatch/chai": { - "version": "5.0.2", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@nightwatch/chai/-/chai-5.0.3.tgz", + "integrity": "sha512-1OIkOf/7jswOC3/t+Add/HVQO8ib75kz6BVYSNeWGghTlmHUqYEfNJ6vcACbXrn/4v3+9iRlWixuhFkxXkU/RQ==", "dev": true, "requires": { "assertion-error": "1.1.0", "check-error": "1.0.2", "deep-eql": "4.0.1", - "loupe": "2.3.4", + "loupe": "^2.3.7", "pathval": "1.1.1", "type-detect": "4.0.8" } }, "@nightwatch/html-reporter-template": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.1.4.tgz", - "integrity": "sha512-fVylXypRuNJbyFAwY/5H2QM1A1XVoZWis0zhiMwA5LQN0cxHzpG2aUheb+qP1EfkxhFxwSUHOcrvphFLbPA8ow==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nightwatch/html-reporter-template/-/html-reporter-template-0.3.0.tgz", + "integrity": "sha512-Mze1z6pmUz2O8N9w1/h3QWz1lzMig45PGyh8PrL9ERs3FxVnIX0RCn37vjZUYiV4wgjZOg41JjdcpriZ3dJxkA==", "dev": true }, + "@nightwatch/nightwatch-inspector": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@nightwatch/nightwatch-inspector/-/nightwatch-inspector-1.0.1.tgz", + "integrity": "sha512-/ax11EOB4eJXT5VioMztcalbCtsNeuFn6icfT75qPLBmkxLvThePSfyGTys+t9AULUR0ug0wMDMiLV1Oy586Fg==", + "dev": true, + "requires": { + "archiver": "^5.3.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", + "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.5" + "version": "2.0.5", + "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", + "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "@polka/url": { - "version": "1.0.0-next.21", + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", "dev": true }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, "@protobufjs/aspromise": { "version": "1.1.2" }, @@ -15608,6 +16882,12 @@ "@protobufjs/utf8": { "version": "1.1.0" }, + "@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true + }, "@testim/chrome-version": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", @@ -15619,12 +16899,6 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, "@types/body-parser": { "version": "1.19.2", "dev": true, @@ -15640,6 +16914,12 @@ "@types/node": "*" } }, + "@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, "@types/connect": { "version": "3.4.35", "dev": true, @@ -15672,7 +16952,9 @@ } }, "@types/estree": { - "version": "0.0.51", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "@types/express": { @@ -15716,10 +16998,6 @@ "@types/node": { "version": "17.0.23" }, - "@types/parse-json": { - "version": "4.0.0", - "dev": true - }, "@types/qs": { "version": "6.9.7", "dev": true @@ -15739,6 +17017,15 @@ "@types/node": "*" } }, + "@types/selenium-webdriver": { + "version": "4.1.21", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.21.tgz", + "integrity": "sha512-QGURnImvxYlIQz5DVhvHdqpYNLBjhJ2Vm+cnQI2G9QZzkWlZm0LkLcvDcHp+qE6N2KBz4CeuvXgPO7W3XQ0Tyw==", + "dev": true, + "requires": { + "@types/ws": "*" + } + }, "@types/serve-index": { "version": "1.9.1", "dev": true, @@ -15762,7 +17049,9 @@ } }, "@types/ws": { - "version": "8.5.3", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, "requires": { "@types/node": "*" @@ -15776,8 +17065,10 @@ "@types/node": "*" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, "@wavesenterprise/crypto-gost-js": { @@ -15786,133 +17077,161 @@ "integrity": "sha512-liAR3/T/vxnEgNUE00Llt+sDvKYqo+sm/L7tqkJorg2ha3SsplOSXAqpH0t4Ya0gRj8qN8zXqO+WwLCxXXuQcw==" }, "@webassemblyjs/ast": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, "@xtuc/long": { "version": "4.2.2", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "abbrev": { @@ -15928,36 +17247,15 @@ } }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - } - } + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, @@ -15965,6 +17263,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "requires": {} }, "acorn-walk": { @@ -15982,6 +17281,7 @@ }, "ajv": { "version": "6.12.6", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -16026,6 +17326,8 @@ }, "ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-html-community": { @@ -16033,12 +17335,14 @@ "dev": true }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -16065,6 +17369,73 @@ "picomatch": "^2.0.4" } }, + "archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "dependencies": { + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "arg": { "version": "5.0.1", "dev": true @@ -16077,6 +17448,59 @@ "argparse": { "version": "2.0.1" }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + }, + "dependencies": { + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, "array-each": { "version": "1.0.1", "dev": true @@ -16136,28 +17560,34 @@ "dev": true }, "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, + "available-typed-arrays": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "dev": true + }, "avsc": { "version": "5.7.7", "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz", "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==" }, "axe-core": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", - "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.3.tgz", + "integrity": "sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==", "dev": true }, "axios": { @@ -16216,29 +17646,13 @@ } } }, - "babel-eslint": { - "version": "10.1.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0" - } - } - }, "babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "requires": { - "find-cache-dir": "^3.3.2", + "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" } }, @@ -16257,33 +17671,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" } }, "babel-plugin-transform-builtin-extend": { @@ -16376,7 +17790,8 @@ "dev": true }, "balanced-match": { - "version": "1.0.2" + "version": "1.0.2", + "dev": true }, "base64-js": { "version": "1.5.1" @@ -16401,14 +17816,23 @@ "bcryptjs": { "version": "2.4.3" }, + "bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "requires": { + "require-from-string": "^2.0.2" + } + }, "big.js": { "version": "5.2.2", "dev": true }, "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" }, "binary-extensions": { "version": "2.2.0", @@ -16543,9 +17967,9 @@ "dev": true }, "bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", "requires": {} }, "bootstrap-colorpicker": { @@ -16614,6 +18038,7 @@ }, "brace-expansion": { "version": "1.1.11", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16629,14 +18054,10 @@ "brorand": { "version": "1.1.0" }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "browserify-aes": { @@ -16700,15 +18121,15 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "bson": { @@ -16762,14 +18183,20 @@ "version": "1.0.0" }, "call-bind": { - "version": "1.0.2", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { - "version": "3.1.0" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true }, "camel-case": { "version": "4.1.2", @@ -16790,7 +18217,9 @@ "dev": true }, "cbor": { - "version": "8.1.0", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "requires": { "nofilter": "^3.1.0" } @@ -16806,6 +18235,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/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", @@ -16814,6 +18244,8 @@ }, "check-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, "chi-squared": { @@ -16924,6 +18356,8 @@ }, "cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -16942,6 +18376,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -16949,7 +18384,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "colorette": { "version": "2.0.16", @@ -16971,8 +18407,10 @@ "commander": { "version": "7.2.0" }, - "commondir": { - "version": "1.0.1", + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, "compare-versions": { @@ -16981,6 +18419,18 @@ "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", "dev": true }, + "compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, "compressible": { "version": "2.0.18", "dev": true, @@ -17019,7 +18469,8 @@ } }, "concat-map": { - "version": "0.0.1" + "version": "0.0.1", + "dev": true }, "connect": { "version": "3.7.0", @@ -17076,11 +18527,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "cookie": { "version": "0.4.2", @@ -17091,30 +18541,73 @@ "dev": true }, "copy-webpack-plugin": { - "version": "11.0.0", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, "requires": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^13.1.1", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } } }, "core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz", + "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==", "dev": true }, "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", + "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", "dev": true, "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.2" } }, "core-js-pure": { @@ -17125,14 +18618,31 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.1", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" } }, "create-ecdh": { @@ -17176,6 +18686,7 @@ }, "cross-spawn": { "version": "7.0.3", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -17202,32 +18713,49 @@ } }, "crypto-js": { - "version": "4.1.1" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.4.19", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -17242,35 +18770,33 @@ "nth-check": "^2.0.1" } }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, "css-what": { "version": "6.0.1", "dev": true }, "cssesc": { "version": "3.0.0", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } + "rrweb-cssom": "^0.6.0" } }, "ctph.js": { @@ -17281,9 +18807,9 @@ "dev": true }, "d3": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", - "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", "requires": { "d3-array": "3", "d3-axis": "3", @@ -17493,41 +19019,13 @@ } }, "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" } }, "dateformat": { @@ -17536,12 +19034,25 @@ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, "debug": { "version": "4.3.4", + "dev": true, "requires": { "ms": "2.1.2" } }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, "decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -17550,6 +19061,8 @@ }, "deep-eql": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.0.1.tgz", + "integrity": "sha512-D/Oxqobjr+kxaHsgiQBZq9b6iAWdEj5W/JdJm8deNduAPc9CwXQ3BJJCuEqlrPXcy45iOMkGPZ0T81Dnz7UDCA==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -17574,7 +19087,8 @@ } }, "deep-is": { - "version": "0.1.4" + "version": "0.1.4", + "dev": true }, "default-gateway": { "version": "6.0.3", @@ -17590,14 +19104,28 @@ "clone": "^1.0.2" } }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-lazy-prop": { "version": "2.0.0", "dev": true }, "define-properties": { - "version": "1.1.3", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "delaunator": { @@ -17635,6 +19163,12 @@ "version": "2.1.0", "dev": true }, + "devtools-protocol": { + "version": "0.0.1140464", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1140464.tgz", + "integrity": "sha512-I1jXnjpQh/6TBFyQ0A9dB2kXXk6DprpPFZoI8pUsxHtlNuOTQEdv9fUqYBsFtf8tOJCbdsZZyQrWeXu6GfK+Bw==", + "dev": true + }, "didyoumean": { "version": "1.2.2", "dev": true @@ -17655,13 +19189,6 @@ } } }, - "dir-glob": { - "version": "3.0.1", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, "dns-equal": { "version": "1.0.0", "dev": true @@ -17675,6 +19202,7 @@ }, "doctrine": { "version": "3.0.0", + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -17704,23 +19232,6 @@ "version": "2.2.0", "dev": true }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - } - } - }, "domhandler": { "version": "4.3.1", "dev": true, @@ -17746,7 +19257,9 @@ } }, "dotenv": { - "version": "10.0.0", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "dev": true }, "duplexer": { @@ -17803,9 +19316,9 @@ } }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", "dev": true }, "elliptic": { @@ -17837,14 +19350,6 @@ "version": "1.0.2", "dev": true }, - "encoding": { - "version": "0.1.13", - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, "end-of-stream": { "version": "1.4.4", "dev": true, @@ -17853,9 +19358,9 @@ } }, "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -17868,8 +19373,16 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, "envinfo": { - "version": "7.8.1", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true }, "error": { @@ -17881,13 +19394,47 @@ }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, + "es-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.0.0.tgz", + "integrity": "sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ==" + }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "es-module-lexer": { - "version": "0.9.3", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true }, "es6-object-assign": { @@ -17914,6 +19461,8 @@ }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-html": { @@ -17921,15 +19470,17 @@ "dev": true }, "escape-string-regexp": { - "version": "1.0.5" + "version": "1.0.5", + "dev": true }, "escodegen": { - "version": "2.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { @@ -17940,25 +19491,28 @@ } }, "eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, "requires": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -17966,34 +19520,32 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { "version": "4.3.0", + "dev": true, "requires": { "color-convert": "^2.0.1" } }, "chalk": { "version": "4.1.2", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18001,50 +19553,51 @@ }, "color-convert": { "version": "2.0.1", + "dev": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "dev": true }, "escape-string-regexp": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "eslint-scope": { - "version": "7.1.1", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { - "version": "3.3.0" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true }, "globals": { "version": "13.19.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, "requires": { "type-fest": "^0.20.2" } }, "has-flag": { - "version": "4.0.0" - }, - "optionator": { - "version": "0.9.1", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } + "version": "4.0.0", + "dev": true }, "supports-color": { "version": "7.2.0", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -18065,29 +19618,26 @@ } } }, - "eslint-utils": { - "version": "3.0.0", - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, "eslint-visitor-keys": { - "version": "2.1.0" + "version": "2.1.0", + "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true } } }, @@ -18098,12 +19648,14 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, "requires": { "estraverse": "^5.1.0" } }, "esrecurse": { "version": "4.3.0", + "dev": true, "requires": { "estraverse": "^5.2.0" } @@ -18118,6 +19670,12 @@ "version": "1.8.1", "dev": true }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, "eventemitter2": { "version": "0.4.14", "dev": true @@ -18310,10 +19868,13 @@ "dev": true }, "fast-deep-equal": { - "version": "3.1.3" + "version": "3.1.3", + "dev": true }, "fast-glob": { - "version": "3.2.11", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -18325,6 +19886,8 @@ "dependencies": { "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -18333,13 +19896,18 @@ } }, "fast-json-stable-stringify": { - "version": "2.1.0" + "version": "2.1.0", + "dev": true }, "fast-levenshtein": { - "version": "2.0.6" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "fastq": { "version": "1.13.0", + "dev": true, "requires": { "reusify": "^1.0.4" } @@ -18360,6 +19928,7 @@ }, "file-entry-cache": { "version": "6.0.1", + "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -18438,16 +20007,18 @@ } }, "find-cache-dir": { - "version": "3.3.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" } }, "find-up": { "version": "5.0.0", + "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -18481,17 +20052,21 @@ "dev": true }, "flat": { - "version": "5.0.2" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-6.0.1.tgz", + "integrity": "sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==" }, "flat-cache": { "version": "3.0.4", + "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.5" + "version": "3.2.5", + "dev": true }, "follow-redirects": { "version": "1.15.5", @@ -18499,6 +20074,15 @@ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "dev": true @@ -18526,30 +20110,28 @@ "dev": true }, "fraction.js": { - "version": "4.2.0", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true }, "fresh": { "version": "0.5.2", "dev": true }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "fs-monkey": { "version": "1.0.3", "dev": true }, "fs.realpath": { - "version": "1.0.0" + "version": "1.0.0", + "dev": true }, "fsevents": { "version": "2.3.2", @@ -18557,7 +20139,14 @@ "optional": true }, "function-bind": { - "version": "1.1.1" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gamma": { "version": "1.0.0" @@ -18578,18 +20167,26 @@ }, "get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { - "version": "2.0.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { - "version": "1.1.1", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.3.tgz", + "integrity": "sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.0.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stream": { @@ -18604,9 +20201,9 @@ "dev": true }, "gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", "requires": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -18614,6 +20211,7 @@ }, "glob": { "version": "7.1.7", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18625,6 +20223,7 @@ }, "glob-parent": { "version": "6.0.2", + "dev": true, "requires": { "is-glob": "^4.0.3" } @@ -18674,23 +20273,23 @@ } }, "globals": { - "version": "11.12.0" + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globby": { - "version": "13.1.1", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", "dev": true, "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "slash": { - "version": "4.0.0", - "dev": true - } + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" } }, "globule": { @@ -18711,17 +20310,22 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.9", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "growl": { - "version": "1.10.5", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "grunt": { @@ -18829,7 +20433,9 @@ } }, "grunt-contrib-connect": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-4.0.0.tgz", + "integrity": "sha512-VR2/+ailwTClAXrvI7bK78roCZzfY1C48vmpdRldohx8P1VXcb51NmBNhukBvG2RKFChNheEcKEcM+wSb/5nYA==", "dev": true, "requires": { "async": "^3.2.0", @@ -18837,7 +20443,7 @@ "connect-livereload": "^0.6.1", "morgan": "^1.10.0", "node-http2": "^4.0.1", - "opn": "^6.0.0", + "open": "^8.0.0", "portscanner": "^2.2.0", "serve-index": "^1.9.1", "serve-static": "^1.14.1" @@ -18903,13 +20509,13 @@ } }, "grunt-eslint": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.0.1.tgz", - "integrity": "sha512-gFzp+ikAkwyu6nqBE2zx1pLVL0JPrerG7jaO4uJV3XUGKPIipv4mfhDOS5MyiMrzUtGdXSW8FkRHjoUnfqbW+g==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", + "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", "dev": true, "requires": { "chalk": "^4.1.2", - "eslint": "^8.0.1" + "eslint": "^8.44.0" }, "dependencies": { "ansi-styles": { @@ -19041,21 +20647,23 @@ "dev": true }, "grunt-webpack": { - "version": "5.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-6.0.0.tgz", + "integrity": "sha512-FtRVTGJGuV9Ic/OrCR80p5u601e0ekvTyHo7vnwVo3XlvRh5wR1ATAVT9FnnobHqZnQ/DeF84W97si5+roUWEA==", "dev": true, "requires": { "deep-for-each": "^3.0.0", - "lodash": "^4.17.19" + "lodash": "^4.17.21" } }, "grunt-zip": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-0.20.0.tgz", - "integrity": "sha512-W1zoPEzOYVtw5oO5eXS67QJGPuw+VdP/RcZyUZSsXVkNMP7k19aArqLkNmUjbxsE//lkryg5RteX8qsn3LC1Rg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-zip/-/grunt-zip-1.0.0.tgz", + "integrity": "sha512-e5HOzf+BLFR6rXM67oGrFcVgfVbLDPBnv29YdWTupthwNg/1y91B0xXx667E6dKin8YvrwDShtQy48D1NRzn7g==", "dev": true, "requires": { "grunt-retro": "~0.6.0", - "jszip": "~2.7.0" + "jszip": "^3.8.0" } }, "gzip-size": { @@ -19071,6 +20679,7 @@ }, "has": { "version": "1.0.3", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -19088,18 +20697,40 @@ } } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.0.3" }, "has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hash-base": { @@ -19122,14 +20753,39 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, "he": { "version": "1.2.0", "dev": true }, "highlight.js": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", - "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==" + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==" }, "hmac-drbg": { "version": "1.0.1", @@ -19183,18 +20839,24 @@ } }, "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "requires": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" } }, "html-entities": { "version": "2.3.3", "dev": true }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "html-minifier-terser": { "version": "6.1.0", "dev": true, @@ -19215,7 +20877,9 @@ } }, "html-webpack-plugin": { - "version": "5.5.0", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -19273,14 +20937,24 @@ } }, "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + } } }, "http-proxy-middleware": { @@ -19342,13 +21016,18 @@ "requires": {} }, "idb-keyval": { - "version": "3.2.0" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" }, "ieee754": { "version": "1.2.1" }, "ignore": { - "version": "5.2.0" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true }, "image-q": { "version": "4.0.0", @@ -19373,29 +21052,27 @@ }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "imports-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-4.0.1.tgz", - "integrity": "sha512-ZiY+1xH5fqAJ1Qu1CFv+zw54rvPCC92DdYRDe0IIUboOhbJPLfOPbF/paA2iipelvMwjQUKWydcFOJ7f1+ZFcA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", + "integrity": "sha512-tXgL8xxZFjOjQLLiE7my00UUQfktg4G8fdpXcZphL0bJWbk9eCxKKFaCwmFRcwyRJQl95GXBL1DoE1rCS/tcPw==", "dev": true, "requires": { - "source-map": "^0.6.1", + "source-map-js": "^1.0.2", "strip-comments": "^2.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } } }, "imurmurhash": { - "version": "0.1.4" + "version": "0.1.4", + "dev": true }, "indent-string": { "version": "4.0.0", @@ -19403,6 +21080,7 @@ }, "inflight": { "version": "1.0.6", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -19415,6 +21093,17 @@ "version": "1.3.8", "dev": true }, + "internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, "internmap": { "version": "2.0.3" }, @@ -19452,10 +21141,31 @@ "has-tostringtag": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, "is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "2.1.0", "dev": true, @@ -19463,8 +21173,25 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, "is-core-module": { "version": "2.8.1", + "dev": true, "requires": { "has": "^1.0.3" } @@ -19480,10 +21207,13 @@ "dev": true }, "is-electron": { - "version": "2.2.1" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" }, "is-extglob": { - "version": "2.1.1" + "version": "2.1.1", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -19496,6 +21226,7 @@ }, "is-glob": { "version": "4.0.3", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -19504,6 +21235,12 @@ "version": "1.0.0", "dev": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-number": { "version": "7.0.0", "dev": true @@ -19515,10 +21252,26 @@ "lodash.isfinite": "^3.3.2" } }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -19547,10 +21300,43 @@ "is-unc-path": "^1.0.0" } }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "is-unc-path": { "version": "1.0.0", "dev": true, @@ -19565,12 +21351,24 @@ "is-url": { "version": "1.2.4" }, - "is-windows": { - "version": "1.0.2", + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, - "is-wsl": { - "version": "1.1.0", + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-windows": { + "version": "1.0.2", "dev": true }, "is2": { @@ -19587,12 +21385,22 @@ "dev": true }, "isexe": { - "version": "2.0.0" + "version": "2.0.0", + "dev": true }, "isobject": { "version": "3.0.1", "dev": true }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, "isstream": { "version": "0.1.2", "dev": true @@ -19648,6 +21456,8 @@ }, "jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -19657,10 +21467,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19669,105 +21483,97 @@ } }, "jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", + "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", + "@jimp/custom": "^0.22.10", + "@jimp/plugins": "^0.22.10", + "@jimp/types": "^0.22.10", "regenerator-runtime": "^0.13.3" } }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true + }, "jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, "jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "js-crc": { "version": "0.2.0" }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" - }, "js-sha3": { - "version": "0.8.0" + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.3.tgz", + "integrity": "sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==" }, "js-tokens": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "js-yaml": { "version": "4.1.0", + "dev": true, "requires": { "argparse": "^2.0.1" } }, "jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", + "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==", "dev": true, "requires": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", + "@asamuzakjp/dom-selector": "^2.0.1", + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.16.0", + "xml-name-validator": "^5.0.0" }, "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "requires": { - "punycode": "^2.1.1" + "debug": "^4.3.4" } }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "agent-base": "^7.0.2", + "debug": "4" } } } @@ -19780,28 +21586,22 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1" + "version": "0.4.1", + "dev": true }, "json-stable-stringify-without-jsonify": { - "version": "1.0.1" + "version": "1.0.1", + "dev": true }, "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, "jsonpath-plus": { - "version": "7.2.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-8.0.0.tgz", + "integrity": "sha512-+AOBHcQvRr8DcWVIkfOCCCLSlYgQuNZ+gFNqwkBrNpdUfdfkcrbO4ml3F587fWUMFOmoy6D9c+5wrghgjN3mbg==" }, "jsonwebtoken": { "version": "8.5.1", @@ -19831,17 +21631,46 @@ "version": "1.4.0" }, "jsrsasign": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz", - "integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", + "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==" }, "jszip": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.7.0.tgz", - "integrity": "sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "requires": { - "pako": "~1.0.2" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "jwa": { @@ -19895,12 +21724,56 @@ "version": "6.0.3", "dev": true }, - "klona": { - "version": "2.0.5", - "dev": true + "launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -19951,12 +21824,16 @@ }, "lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "linkify-it": { - "version": "4.0.1", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "requires": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "livereload-js": { @@ -19995,6 +21872,7 @@ }, "locate-path": { "version": "6.0.0", + "dev": true, "requires": { "p-locate": "^5.0.0" } @@ -20002,77 +21880,28 @@ "lodash": { "version": "4.17.21" }, - "lodash._arraycopy": { - "version": "3.0.0", - "dev": true - }, - "lodash._arrayeach": { - "version": "3.0.0", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._baseclone": { - "version": "3.3.0", - "dev": true, - "requires": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "dev": true - }, - "lodash._basefor": { - "version": "3.0.3", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "dev": true - }, - "lodash.clone": { - "version": "3.0.3", - "dev": true, - "requires": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "lodash.defaultsdeep": { - "version": "4.6.1", + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", "dev": true }, - "lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "lodash.includes": { @@ -20080,14 +21909,6 @@ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, - "lodash.isarguments": { - "version": "3.1.0", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "dev": true - }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -20115,27 +21936,19 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, - "lodash.keys": { - "version": "3.1.2", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "lodash.merge": { - "version": "4.6.2" + "version": "4.6.2", + "dev": true }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true }, "log-symbols": { @@ -20186,9 +21999,9 @@ } }, "loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==" }, "loglevel-message-prefix": { "version": "3.0.0", @@ -20212,10 +22025,12 @@ } }, "loupe": { - "version": "2.3.4", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lower-case": { @@ -20226,10 +22041,12 @@ } }, "lru-cache": { - "version": "6.0.0", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "yallist": "^4.0.0" + "yallist": "^3.0.2" } }, "lz-string": { @@ -20242,13 +22059,6 @@ "resolved": "https://registry.npmjs.org/lz4js/-/lz4js-0.2.0.tgz", "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==" }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, "make-iterator": { "version": "1.0.1", "dev": true, @@ -20261,17 +22071,22 @@ "dev": true }, "markdown-it": { - "version": "13.0.1", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", "requires": { "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" }, "dependencies": { "entities": { - "version": "3.0.1" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" } } }, @@ -20283,8 +22098,16 @@ "safe-buffer": "^5.1.2" } }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "mdurl": { - "version": "1.0.1" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" }, "media-typer": { "version": "0.3.0", @@ -20307,6 +22130,8 @@ }, "merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -20360,12 +22185,13 @@ } }, "mini-css-extract-plugin": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz", - "integrity": "sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz", + "integrity": "sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==", "dev": true, "requires": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" } }, "minimalistic-assert": { @@ -20376,6 +22202,7 @@ }, "minimatch": { "version": "3.1.2", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -20383,71 +22210,51 @@ "minimist": { "version": "1.2.6" }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "mkpath": { - "version": "1.0.0", - "dev": true - }, "mocha": { - "version": "9.2.2", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { - "debug": { - "version": "4.3.3", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "dev": true - } - } - }, "diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -20460,6 +22267,8 @@ "dependencies": { "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -20469,21 +22278,49 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "minimatch": { - "version": "4.2.1", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } } }, "ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -20515,14 +22352,14 @@ } }, "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" }, "moment-timezone": { - "version": "0.5.41", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.41.tgz", - "integrity": "sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==", + "version": "0.5.44", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz", + "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==", "requires": { "moment": "^2.29.4" } @@ -20558,7 +22395,9 @@ } }, "mrmime": { - "version": "1.0.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true }, "ms": { @@ -20577,11 +22416,14 @@ "dev": true }, "nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "natural-compare": { - "version": "1.4.0" + "version": "1.4.0", + "dev": true }, "negotiator": { "version": "0.6.3", @@ -20594,47 +22436,93 @@ "ngeohash": { "version": "0.6.3" }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, "nightwatch": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-2.6.16.tgz", - "integrity": "sha512-U24L11WQlYS6TYdGx1h+xMfxw3jjhmoOjYEIBV3WQNwuWqpWzwIaG0gr3WonCwiEgKvSquLSuXhm5vd1U3JdiQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-3.4.0.tgz", + "integrity": "sha512-/i6zo2HrAs1sXUqXqKpdV1e7OeeafZNfR69N+qZr25imC2+m91OgN4JNRDEmWNVtGGH+RcnpO4MPdvdGivvthA==", "dev": true, "requires": { - "@nightwatch/chai": "5.0.2", - "@nightwatch/html-reporter-template": "0.1.4", + "@nightwatch/chai": "5.0.3", + "@nightwatch/html-reporter-template": "^0.3.0", + "@nightwatch/nightwatch-inspector": "^1.0.1", + "@types/chai": "^4.3.5", + "@types/selenium-webdriver": "^4.1.14", "ansi-to-html": "0.7.2", + "aria-query": "5.1.3", "assertion-error": "1.1.0", "boxen": "5.1.2", - "chai-nightwatch": "0.5.3", + "chai-nightwatch": "^0.5.3", + "chalk": "^4.1.2", "ci-info": "3.3.0", "cli-table3": "^0.6.3", - "didyoumean": "1.2.2", - "dotenv": "10.0.0", + "devtools-protocol": "^0.0.1140464", + "didyoumean": "^1.2.2", + "dotenv": "16.3.1", "ejs": "3.1.8", - "envinfo": "7.8.1", - "fs-extra": "^10.1.0", - "glob": "^7.2.3", - "jsdom": "19.0.0", - "lodash.clone": "3.0.3", - "lodash.defaultsdeep": "4.6.1", - "lodash.escape": "4.0.1", - "lodash.merge": "4.6.2", - "lodash.pick": "4.4.0", + "envinfo": "7.11.0", + "glob": "7.2.3", + "jsdom": "^23.1.0", + "lodash": "^4.17.21", "minimatch": "3.1.2", "minimist": "1.2.6", - "mkpath": "1.0.0", - "mocha": "9.2.2", - "nightwatch-axe-verbose": "^2.1.0", - "open": "8.4.0", + "mocha": "10.2.0", + "nightwatch-axe-verbose": "^2.3.0", + "open": "8.4.2", "ora": "5.4.1", - "selenium-webdriver": "4.6.1", - "semver": "7.3.5", + "piscina": "3.2.0", + "selenium-webdriver": "4.16.0", + "semver": "7.5.4", "stacktrace-parser": "0.1.10", "strip-ansi": "6.0.1", - "untildify": "^4.0.0", + "untildify": "4.0.0", "uuid": "8.3.2" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "glob": { "version": "7.2.3", "dev": true, @@ -20647,22 +22535,54 @@ "path-is-absolute": "^1.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.5", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "nightwatch-axe-verbose": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.1.0.tgz", - "integrity": "sha512-j31VB0wdv/HXoQWWAJsvNc9UenXzXf1u/QsvExCUDuFOMR4GRg3963wlPIxd2ME47egXsnkXPd1dl8Ozdk7XHA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.3.0.tgz", + "integrity": "sha512-IC29PLvYrbbKRdIU/NJaxk/UvTmQ5EiNN08UnCWyImpzV0Y7tE1CYchrvFTaHXBZkkZTQC3uHTeHF/41mvK8eQ==", "dev": true, "requires": { - "axe-core": "^4.6.1" + "axe-core": "^4.8.3" } }, "no-case": { @@ -20673,15 +22593,52 @@ "tslib": "^2.0.3" } }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, "node-fetch": { - "version": "2.6.7", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "node-forge": { "version": "1.3.1" }, + "node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, + "optional": true + }, "node-http2": { "version": "4.0.1", "dev": true, @@ -20730,9 +22687,9 @@ "version": "0.1.0" }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "nodom": { @@ -20781,16 +22738,16 @@ "nwmatcher": { "version": "1.4.4" }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, "object-assign": { "version": "4.1.1", "dev": true }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, "object-is": { "version": "1.1.5", "requires": { @@ -20802,12 +22759,14 @@ "version": "1.1.1" }, "object.assign": { - "version": "4.1.2", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -20858,6 +22817,7 @@ }, "once": { "version": "1.4.0", + "dev": true, "requires": { "wrappy": "1" } @@ -20870,7 +22830,9 @@ } }, "open": { - "version": "8.4.0", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -20894,40 +22856,18 @@ "version": "1.5.2", "dev": true }, - "opn": { - "version": "6.0.0", + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "prelude-ls": { - "version": "1.1.2" - }, - "type-check": { - "version": "0.3.2", - "requires": { - "prelude-ls": "~1.1.2" - } - } + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" } }, "ora": { @@ -21008,12 +22948,14 @@ }, "p-limit": { "version": "3.1.0", + "dev": true, "requires": { "yocto-queue": "^0.1.0" } }, "p-locate": { "version": "5.0.0", + "dev": true, "requires": { "p-limit": "^3.0.2" } @@ -21032,10 +22974,6 @@ } } }, - "p-try": { - "version": "2.2.0", - "dev": true - }, "pad-stream": { "version": "2.0.0", "dev": true, @@ -21058,6 +22996,9 @@ }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" } @@ -21107,6 +23048,8 @@ }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -21120,10 +23063,21 @@ "dev": true }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + }, + "dependencies": { + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + } + } }, "parseurl": { "version": "1.3.3", @@ -21145,16 +23099,20 @@ } }, "path-exists": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "path-is-absolute": { - "version": "1.0.1" + "version": "1.0.1", + "dev": true }, "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "dev": true }, "path-parse": { - "version": "1.0.7" + "version": "1.0.7", + "dev": true }, "path-root": { "version": "0.1.1", @@ -21172,11 +23130,15 @@ "dev": true }, "path-type": { - "version": "4.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true }, "pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pbkdf2": { @@ -21222,56 +23184,97 @@ "version": "2.3.0", "dev": true }, + "piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, "pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", "requires": { "pngjs": "^3.0.0" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } } }, "pkg-dir": { - "version": "4.2.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "requires": { - "find-up": "^4.0.0" + "find-up": "^6.3.0" }, "dependencies": { "find-up": { - "version": "4.1.0", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" } }, "locate-path": { - "version": "5.0.0", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^6.0.0" } }, "p-limit": { - "version": "2.3.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" } }, "p-locate": { - "version": "4.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^4.0.0" } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true } } }, "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" }, "popper.js": { "version": "1.16.1" @@ -21294,24 +23297,28 @@ } }, "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, "dependencies": { "nanoid": { - "version": "3.3.4", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true } } }, "postcss-css-variables": { - "version": "0.18.0", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/postcss-css-variables/-/postcss-css-variables-0.19.0.tgz", + "integrity": "sha512-Hr0WEYKLK9VCrY15anHXOd4RCvJy/xRvCnWdplGBeLInwEj6Z14hgzTb2W/39dYTCnS8hnHUfU4/F1zxX0IZuQ==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -21320,9 +23327,9 @@ } }, "postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.0.0.tgz", + "integrity": "sha512-e77lhVvrD1I2y7dYmBv0k9ULTdArgEYZt97T4w6sFIU5uxIHvDFQlKgUUyY7v7Barj0Yf/zm5A4OquZN7jKm5Q==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -21331,24 +23338,39 @@ } }, "postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.0.tgz", + "integrity": "sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.8" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -21358,7 +23380,9 @@ "requires": {} }, "postcss-modules-local-by-default": { - "version": "4.0.0", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -21367,7 +23391,9 @@ } }, "postcss-modules-scope": { - "version": "3.0.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -21381,7 +23407,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -21393,7 +23421,10 @@ "dev": true }, "prelude-ls": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true }, "pretty-error": { "version": "4.0.0", @@ -21425,9 +23456,9 @@ } }, "protobufjs": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", - "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -21513,7 +23544,15 @@ } }, "punycode": { - "version": "2.1.1" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" }, "purepack": { "version": "1.0.6" @@ -21538,7 +23577,8 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true }, "randombytes": { "version": "2.1.0", @@ -21601,6 +23641,35 @@ "readable-stream": "^3.6.0" } }, + "readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "readdirp": { "version": "3.6.0", "dev": true, @@ -21616,9 +23685,9 @@ } }, "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==" }, "regenerate": { "version": "1.4.2", @@ -21627,9 +23696,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -21641,44 +23710,38 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { - "version": "1.4.1", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, - "regexpp": { - "version": "3.2.0" - }, "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -21713,6 +23776,8 @@ }, "require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -21725,6 +23790,7 @@ }, "resolve": { "version": "1.22.0", + "dev": true, "requires": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -21740,10 +23806,10 @@ } }, "resolve-from": { - "version": "4.0.0" - }, - "resolve-url": { - "version": "0.2.1" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "restore-cursor": { "version": "3.1.0", @@ -21754,7 +23820,8 @@ } }, "reusify": { - "version": "1.0.4" + "version": "1.0.4", + "dev": true }, "revalidator": { "version": "0.1.8", @@ -21762,6 +23829,7 @@ }, "rimraf": { "version": "3.0.2", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -21776,8 +23844,15 @@ "robust-predicates": { "version": "3.0.1" }, + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "run-parallel": { "version": "1.2.0", + "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -21799,9 +23874,9 @@ "version": "1.2.4" }, "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "requires": { "xmlchars": "^2.2.0" @@ -21856,52 +23931,14 @@ "dev": true }, "selenium-webdriver": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.6.1.tgz", - "integrity": "sha512-FT8Dw0tbzaTp8YYLuwhaCnve/nw03HKrOJrA3aUmTKmxaIFSP4kT2R5fN3K0RpV5kbR0ZnM4FGVI2vANBvekaA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.16.0.tgz", + "integrity": "sha512-IbqpRpfGE7JDGgXHJeWuCqT/tUqnLvZ14csSwt+S8o4nJo3RtQoE9VR4jB47tP/A8ArkYsh/THuMY6kyRP6kuA==", "dev": true, "requires": { - "jszip": "^3.10.0", + "jszip": "^3.10.1", "tmp": "^0.2.1", - "ws": ">=8.7.0" - }, - "dependencies": { - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "ws": ">=8.14.2" } }, "selfsigned": { @@ -21914,7 +23951,9 @@ } }, "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "send": { @@ -21982,7 +24021,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -22024,6 +24065,28 @@ "send": "0.18.0" } }, + "set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "setimmediate": { "version": "1.0.5", "dev": true @@ -22041,28 +24104,49 @@ }, "shebang-command": { "version": "2.0.0", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0" + "version": "3.0.0", + "dev": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true }, "shelljs": { "version": "0.5.3", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.7", "dev": true }, "sirv": { - "version": "1.0.19", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dev": true, "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" } }, "sitemap": { @@ -22075,6 +24159,12 @@ "sax": "^1.2.4" } }, + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true + }, "snackbarjs": { "version": "1.1.0" }, @@ -22097,7 +24187,9 @@ } }, "sortablejs": { - "version": "1.15.0" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", + "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" }, "source-map-js": { "version": "1.0.2", @@ -22178,6 +24270,15 @@ "version": "1.5.0", "dev": true }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "requires": { + "internal-slot": "^1.0.4" + } + }, "stream-browserify": { "version": "3.0.0", "requires": { @@ -22215,6 +24316,7 @@ }, "strip-ansi": { "version": "6.0.1", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -22228,7 +24330,10 @@ "dev": true }, "strip-json-comments": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "strtok3": { "version": "6.3.0", @@ -22240,21 +24345,23 @@ } }, "style-mod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", - "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==", "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } }, "supports-preserve-symlinks-flag": { - "version": "1.0.0" + "version": "1.0.0", + "dev": true }, "symbol-tree": { "version": "3.2.4", @@ -22266,6 +24373,19 @@ "version": "2.2.1", "dev": true }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, "tcp-port-used": { "version": "1.0.2", "dev": true, @@ -22284,13 +24404,13 @@ } }, "terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -22302,63 +24422,56 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "dependencies": { "schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, "tesseract.js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-3.0.3.tgz", - "integrity": "sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-5.0.4.tgz", + "integrity": "sha512-GCIoSQMZlvTP2AaHrjUOH29/oyO7ZyHVe+BhTexEcO7/nDClRVDRjl2sYJLOWSSNbTDrm5q2m1+gfaf3lUrZ5Q==", "requires": { - "babel-eslint": "^10.1.0", "bmp-js": "^0.1.0", - "file-type": "^12.4.1", - "idb-keyval": "^3.2.0", - "is-electron": "^2.2.0", + "idb-keyval": "^6.2.0", + "is-electron": "^2.2.2", "is-url": "^1.2.4", - "node-fetch": "^2.6.0", - "opencollective-postinstall": "^2.0.2", + "node-fetch": "^2.6.9", + "opencollective-postinstall": "^2.0.3", "regenerator-runtime": "^0.13.3", - "resolve-url": "^0.2.1", - "tesseract.js-core": "^3.0.2", + "tesseract.js-core": "^5.0.0", "wasm-feature-detect": "^1.2.11", "zlibjs": "^0.3.1" - }, - "dependencies": { - "file-type": { - "version": "12.4.2" - } } }, "tesseract.js-core": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-3.0.2.tgz", - "integrity": "sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-5.0.0.tgz", + "integrity": "sha512-lJur5LzjinW5VYMKlVNnBU2JPLpO+A9VqAYBeuV+ZgH0hKvsnm+536Yyp+/zRTBdLe7D6Kok0FN9g+TE4J8qGA==" }, "text-table": { - "version": "0.2.0" + "version": "0.2.0", + "dev": true }, "thirty-two": { "version": "0.0.2" @@ -22445,7 +24558,10 @@ } }, "to-fast-properties": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -22468,31 +24584,31 @@ } }, "totalist": { - "version": "1.1.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true }, "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } } }, "tr46": { - "version": "0.0.3" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "requires": { + "punycode": "^2.3.1" + } }, "triplesec": { "version": "4.0.3", @@ -22514,16 +24630,22 @@ }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "requires": { "prelude-ls": "^1.2.1" } }, "type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { - "version": "0.20.2" + "version": "0.20.2", + "dev": true }, "type-is": { "version": "1.6.18", @@ -22534,12 +24656,14 @@ } }, "ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" }, "uc.micro": { - "version": "1.0.6" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==" }, "uglify-js": { "version": "3.15.3" @@ -22591,10 +24715,16 @@ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, + "unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true + }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, "unorm": { @@ -22611,9 +24741,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -22622,6 +24752,7 @@ }, "uri-js": { "version": "4.4.1", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -22653,12 +24784,12 @@ "utf8": { "version": "3.0.0" }, - "utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", "requires": { - "pako": "^1.0.5" + "pako": "^1.0.11" } }, "util": { @@ -22703,15 +24834,6 @@ "vkbeautify": { "version": "0.99.3" }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, "w3c-keyname": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", @@ -22719,12 +24841,12 @@ "dev": true }, "w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "requires": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" } }, "wasm-feature-detect": { @@ -22755,25 +24877,28 @@ } }, "webidl-conversions": { - "version": "3.0.1" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true }, "webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "version": "5.90.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", + "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -22782,9 +24907,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -22794,7 +24919,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -22805,59 +24932,37 @@ } }, "webpack-bundle-analyzer": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", - "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { + "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true }, "ws": { "version": "7.5.7", @@ -22878,9 +24983,9 @@ } }, "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -22889,7 +24994,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -22902,6 +25007,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -22911,7 +25017,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" } }, "webpack-node-externals": { @@ -22979,33 +25085,80 @@ } }, "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "requires": { "iconv-lite": "0.6.3" } }, + "whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true }, "whatwg-url": { - "version": "5.0.0", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" } }, "which": { "version": "2.0.2", + "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + } + }, "widest-line": { "version": "3.1.0", "dev": true, @@ -23035,9 +25188,6 @@ } } }, - "word-wrap": { - "version": "1.2.3" - }, "worker-loader": { "version": "3.0.8", "dev": true, @@ -23058,7 +25208,9 @@ } }, "workerpool": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { @@ -23091,12 +25243,13 @@ } }, "wrappy": { - "version": "1.0.2" + "version": "1.0.2", + "dev": true }, "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "requires": {} }, @@ -23112,9 +25265,9 @@ } }, "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true }, "xml-parse-from-string": { @@ -23146,7 +25299,9 @@ "version": "0.6.0" }, "xpath": { - "version": "0.0.32" + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", + "integrity": "sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==" }, "xregexp": { "version": "5.1.1", @@ -23161,18 +25316,20 @@ }, "y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { - "version": "4.0.0", - "dev": true - }, - "yaml": { - "version": "1.10.2", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -23186,10 +25343,14 @@ }, "yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, "yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { "camelcase": "^6.0.0", @@ -23198,12 +25359,10 @@ "is-plain-obj": "^2.1.0" }, "dependencies": { - "decamelize": { - "version": "4.0.0", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true } } @@ -23217,7 +25376,53 @@ } }, "yocto-queue": { - "version": "0.1.0" + "version": "0.1.0", + "dev": true + }, + "zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "requires": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "requires": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } }, "zlibjs": { "version": "0.3.1" diff --git a/package.json b/package.json index 55b65312..7cef04a4 100644 --- a/package.json +++ b/package.json @@ -39,55 +39,55 @@ "node >= 16" ], "devDependencies": { - "@babel/core": "^7.21.0", - "@babel/eslint-parser": "^7.19.1", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-transform-runtime": "^7.21.0", - "@babel/preset-env": "^7.20.2", - "@babel/runtime": "^7.21.0", - "@codemirror/commands": "^6.2.1", - "@codemirror/language": "^6.6.0", - "@codemirror/search": "^6.2.3", - "@codemirror/state": "^6.2.0", - "@codemirror/view": "^6.9.2", - "autoprefixer": "^10.4.13", - "babel-loader": "^9.1.2", + "@babel/core": "^7.23.9", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/runtime": "^7.23.9", + "@codemirror/commands": "^6.3.3", + "@codemirror/language": "^6.10.1", + "@codemirror/search": "^6.5.5", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.23.1", + "autoprefixer": "^10.4.17", + "babel-loader": "^9.1.3", "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", "chromedriver": "^121.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", - "copy-webpack-plugin": "^11.0.0", - "core-js": "^3.29.0", - "css-loader": "6.7.3", - "eslint": "^8.35.0", + "copy-webpack-plugin": "^12.0.2", + "core-js": "^3.35.1", + "css-loader": "6.10.0", + "eslint": "^8.56.0", "grunt": "^1.6.1", "grunt-chmod": "~1.1.1", "grunt-concurrent": "^3.0.0", "grunt-contrib-clean": "~2.0.1", - "grunt-contrib-connect": "^3.0.0", + "grunt-contrib-connect": "^4.0.0", "grunt-contrib-copy": "~1.0.0", "grunt-contrib-watch": "^1.1.0", - "grunt-eslint": "^24.0.1", + "grunt-eslint": "^24.3.0", "grunt-exec": "~3.0.0", - "grunt-webpack": "^5.0.0", - "grunt-zip": "^0.20.0", - "html-webpack-plugin": "^5.5.0", - "imports-loader": "^4.0.1", - "mini-css-extract-plugin": "2.7.3", + "grunt-webpack": "^6.0.0", + "grunt-zip": "^1.0.0", + "html-webpack-plugin": "^5.6.0", + "imports-loader": "^5.0.0", + "mini-css-extract-plugin": "2.8.0", "modify-source-webpack-plugin": "^3.0.0", - "nightwatch": "^2.6.16", - "postcss": "^8.4.21", - "postcss-css-variables": "^0.18.0", - "postcss-import": "^15.1.0", - "postcss-loader": "^7.0.2", + "nightwatch": "^3.4.0", + "postcss": "^8.4.33", + "postcss-css-variables": "^0.19.0", + "postcss-import": "^16.0.0", + "postcss-loader": "^8.1.0", "prompt": "^1.3.0", "sitemap": "^7.1.1", - "terser": "^5.16.6", - "webpack": "^5.76.0", - "webpack-bundle-analyzer": "^4.8.0", - "webpack-dev-server": "4.11.1", + "terser": "^5.27.0", + "webpack": "^5.90.1", + "webpack-bundle-analyzer": "^4.10.1", + "webpack-dev-server": "4.15.1", "webpack-node-externals": "^3.0.0", "worker-loader": "^3.0.8" }, @@ -100,53 +100,53 @@ "arrive": "^2.4.1", "avsc": "^5.7.7", "bcryptjs": "^2.4.3", - "bignumber.js": "^9.1.1", + "bignumber.js": "^9.1.2", "blakejs": "^1.2.1", - "bootstrap": "4.6.2", + "bootstrap": "5.3.2", "bootstrap-colorpicker": "^3.4.0", "bootstrap-material-design": "^4.1.3", "browserify-zlib": "^0.2.0", "bson": "^4.7.2", "buffer": "^6.0.3", - "cbor": "8.1.0", + "cbor": "9.0.2", "chi-squared": "^1.1.0", "codepage": "^1.15.0", "crypto-api": "^0.8.5", "crypto-browserify": "^3.12.0", - "crypto-js": "^4.1.1", + "crypto-js": "^4.2.0", "ctph.js": "0.0.5", - "d3": "7.8.2", + "d3": "7.8.5", "d3-hexbin": "^0.2.2", "diff": "^5.1.0", "es6-promisify": "^7.0.0", - "escodegen": "^2.0.0", + "escodegen": "^2.1.0", "esprima": "^4.0.1", "exif-parser": "^0.1.12", "file-saver": "^2.0.5", - "flat": "^5.0.2", + "flat": "^6.0.1", "geodesy": "1.1.3", - "highlight.js": "^11.7.0", - "jimp": "^0.16.13", - "jquery": "3.6.4", + "highlight.js": "^11.9.0", + "jimp": "^0.22.10", + "jquery": "3.7.1", "js-crc": "^0.2.0", - "js-sha3": "^0.8.0", + "js-sha3": "^0.9.3", "jsesc": "^3.0.2", "json5": "^2.2.3", - "jsonpath-plus": "^7.2.0", + "jsonpath-plus": "^8.0.0", "jsonwebtoken": "8.5.1", "jsqr": "^1.4.0", - "jsrsasign": "^10.6.1", + "jsrsasign": "^11.1.0", "kbpgp": "2.1.15", "libbzip2-wasm": "0.0.4", "libyara-wasm": "^1.2.1", "lodash": "^4.17.21", - "loglevel": "^1.8.1", + "loglevel": "^1.9.1", "loglevel-message-prefix": "^3.0.0", "lz-string": "^1.5.0", "lz4js": "^0.2.0", - "markdown-it": "^13.0.1", - "moment": "^2.29.4", - "moment-timezone": "^0.5.41", + "markdown-it": "^14.0.0", + "moment": "^2.30.1", + "moment-timezone": "^0.5.44", "ngeohash": "^0.6.3", "node-forge": "^1.3.1", "node-md6": "^0.1.0", @@ -158,22 +158,22 @@ "path": "^0.12.7", "popper.js": "^1.16.1", "process": "^0.11.10", - "protobufjs": "^7.2.2", + "protobufjs": "^7.2.6", "qr-image": "^3.2.0", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.1", "scryptsy": "^2.1.0", "snackbarjs": "^1.1.0", - "sortablejs": "^1.15.0", + "sortablejs": "^1.15.2", "split.js": "^1.6.5", "ssdeep.js": "0.0.3", "stream-browserify": "^3.0.0", - "tesseract.js": "3.0.3", - "ua-parser-js": "^1.0.34", + "tesseract.js": "5.0.4", + "ua-parser-js": "^1.0.37", "unorm": "^1.6.0", "utf8": "^3.0.0", "vkbeautify": "^0.99.3", "xmldom": "^0.6.0", - "xpath": "0.0.32", + "xpath": "0.0.34", "xregexp": "^5.1.1", "zlibjs": "^0.3.1" }, From a95be3b4c5111f705e0b101e8bad1066e0bbeeea Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sun, 4 Feb 2024 02:04:11 +0000 Subject: [PATCH 0963/1024] Downgrade bootstrap version --- package-lock.json | 33 +++++++++------------------------ package.json | 2 +- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ca4f515..69c9554d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "bcryptjs": "^2.4.3", "bignumber.js": "^9.1.2", "blakejs": "^1.2.1", - "bootstrap": "5.3.2", + "bootstrap": "4.6.2", "bootstrap-colorpicker": "^3.4.0", "bootstrap-material-design": "^4.1.3", "browserify-zlib": "^0.2.0", @@ -2730,16 +2730,6 @@ "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", "dev": true }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "license": "BSD-3-Clause" @@ -4176,9 +4166,9 @@ "license": "ISC" }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", "funding": [ { "type": "github", @@ -4190,7 +4180,8 @@ } ], "peerDependencies": { - "@popperjs/core": "^2.11.8" + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" } }, "node_modules/bootstrap-colorpicker": { @@ -16842,12 +16833,6 @@ "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", "dev": true }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true - }, "@protobufjs/aspromise": { "version": "1.1.2" }, @@ -17967,9 +17952,9 @@ "dev": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", "requires": {} }, "bootstrap-colorpicker": { diff --git a/package.json b/package.json index 7cef04a4..7043471c 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "bcryptjs": "^2.4.3", "bignumber.js": "^9.1.2", "blakejs": "^1.2.1", - "bootstrap": "5.3.2", + "bootstrap": "4.6.2", "bootstrap-colorpicker": "^3.4.0", "bootstrap-material-design": "^4.1.3", "browserify-zlib": "^0.2.0", From 73100896d467ffebe25efa2dd4eb4a9bdbd72b28 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Sun, 4 Feb 2024 02:14:27 +0000 Subject: [PATCH 0964/1024] Downgrade Jimp --- package-lock.json | 826 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 434 insertions(+), 394 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69c9554d..4862a693 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "flat": "^6.0.1", "geodesy": "1.1.3", "highlight.js": "^11.9.0", - "jimp": "^0.22.10", + "jimp": "^0.16.13", "jquery": "3.7.1", "js-crc": "^0.2.0", "js-sha3": "^0.9.3", @@ -1884,7 +1884,6 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1906,8 +1905,7 @@ "node_modules/@babel/runtime/node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/@babel/template": { "version": "7.23.9", @@ -2154,11 +2152,12 @@ "dev": true }, "node_modules/@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", "dependencies": { - "@jimp/utils": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", "bmp-js": "^0.1.0" }, "peerDependencies": { @@ -2166,18 +2165,21 @@ } }, "node_modules/@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", "dependencies": { - "@jimp/utils": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" + "tinycolor2": "^1.4.1" } }, "node_modules/@jimp/core/node_modules/buffer": { @@ -2204,20 +2206,22 @@ } }, "node_modules/@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", "dependencies": { - "@jimp/core": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" } }, "node_modules/@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", "dependencies": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", "omggif": "^1.0.9" }, "peerDependencies": { @@ -2225,68 +2229,74 @@ } }, "node_modules/@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", "dependencies": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", "dependencies": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2296,11 +2306,12 @@ } }, "node_modules/@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2310,55 +2321,60 @@ } }, "node_modules/@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2366,56 +2382,61 @@ } }, "node_modules/@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", "dependencies": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2423,22 +2444,24 @@ } }, "node_modules/@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2448,11 +2471,12 @@ } }, "node_modules/@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2460,11 +2484,12 @@ } }, "node_modules/@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2473,11 +2498,12 @@ } }, "node_modules/@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", "dependencies": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, "peerDependencies": { "@jimp/custom": ">=0.3.5", @@ -2486,31 +2512,32 @@ } }, "node_modules/@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", "dependencies": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", "timm": "^1.6.1" }, "peerDependencies": { @@ -2518,38 +2545,41 @@ } }, "node_modules/@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", "dependencies": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", "dependencies": { - "utif2": "^4.0.1" + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" }, "peerDependencies": { "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", "dependencies": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", "timm": "^1.6.1" }, "peerDependencies": { @@ -2557,10 +2587,11 @@ } }, "node_modules/@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", "dependencies": { + "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, @@ -7489,9 +7520,9 @@ } }, "node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -9292,15 +9323,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/isstream": { "version": "0.1.2", "dev": true, @@ -9426,13 +9448,14 @@ } }, "node_modules/jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", "dependencies": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", "regenerator-runtime": "^0.13.3" } }, @@ -10365,6 +10388,17 @@ "version": "1.2.6", "license": "MIT" }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mocha": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", @@ -11782,14 +11816,6 @@ "pixelmatch": "bin/pixelmatch" } }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", @@ -11888,11 +11914,11 @@ } }, "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", "engines": { - "node": ">=12.13.0" + "node": ">=4.0.0" } }, "node_modules/popper.js": { @@ -14065,12 +14091,12 @@ "version": "3.0.0", "license": "MIT" }, - "node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", "dependencies": { - "pako": "^1.0.11" + "pako": "^1.0.5" } }, "node_modules/util": { @@ -14509,11 +14535,6 @@ "node": ">=18" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -16186,7 +16207,6 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", - "dev": true, "requires": { "regenerator-runtime": "^0.14.0" }, @@ -16194,8 +16214,7 @@ "regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" } } }, @@ -16396,27 +16415,31 @@ "dev": true }, "@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", "requires": { - "@jimp/utils": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", "bmp-js": "^0.1.0" } }, "@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", "requires": { - "@jimp/utils": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", "any-base": "^1.1.0", "buffer": "^5.2.0", "exif-parser": "^0.1.12", "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" + "tinycolor2": "^1.4.1" }, "dependencies": { "buffer": { @@ -16431,266 +16454,295 @@ } }, "@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", "requires": { - "@jimp/core": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" } }, "@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", "requires": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", "omggif": "^1.0.9" } }, "@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", "requires": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" } }, "@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", "requires": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" } }, "@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", "requires": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" } }, "@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", "requires": { - "@jimp/utils": "^0.22.10" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", "requires": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", "timm": "^1.6.1" } }, "@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", "requires": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" } }, "@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", "requires": { - "utif2": "^4.0.1" + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" } }, "@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", "requires": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", "timm": "^1.6.1" } }, "@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", "requires": { + "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, @@ -20186,9 +20238,9 @@ "dev": true }, "gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", "requires": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -21377,15 +21429,6 @@ "version": "3.0.1", "dev": true }, - "isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "requires": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "isstream": { "version": "0.1.2", "dev": true @@ -21468,13 +21511,14 @@ } }, "jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", "requires": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", "regenerator-runtime": "^0.13.3" } }, @@ -22195,6 +22239,14 @@ "minimist": { "version": "1.2.6" }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, "mocha": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", @@ -23187,13 +23239,6 @@ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", "requires": { "pngjs": "^3.0.0" - }, - "dependencies": { - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - } } }, "pkg-dir": { @@ -23257,9 +23302,9 @@ } }, "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "popper.js": { "version": "1.16.1" @@ -24769,12 +24814,12 @@ "utf8": { "version": "3.0.0" }, - "utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", "requires": { - "pako": "^1.0.11" + "pako": "^1.0.5" } }, "util": { @@ -25078,11 +25123,6 @@ "iconv-lite": "0.6.3" } }, - "whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, "whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", diff --git a/package.json b/package.json index 7043471c..4d84e284 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "flat": "^6.0.1", "geodesy": "1.1.3", "highlight.js": "^11.9.0", - "jimp": "^0.22.10", + "jimp": "^0.16.13", "jquery": "3.7.1", "js-crc": "^0.2.0", "js-sha3": "^0.9.3", From dc7760247be4610e561709d1d6ba50bb0ce810e3 Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 23 Jan 2024 13:52:50 -0500 Subject: [PATCH 0965/1024] Add MurmurHash3 --- src/core/config/Categories.json | 1 + src/core/operations/Murmurhash3.mjs | 113 ++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 src/core/operations/Murmurhash3.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index c8f83f95..28bbeefa 100644 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -369,6 +369,7 @@ "SHA2", "SHA3", "SM3", + "MurmurHash3", "Keccak", "Shake", "RIPEMD", diff --git a/src/core/operations/Murmurhash3.mjs b/src/core/operations/Murmurhash3.mjs new file mode 100644 index 00000000..c646a539 --- /dev/null +++ b/src/core/operations/Murmurhash3.mjs @@ -0,0 +1,113 @@ +/** + * @author AliceGrey [alice@grey.systems] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; + +/** + * MurmurHash3 operation + */ +class MurmurHash3 extends Operation { + + /** + * MurmurHash3 constructor + */ + constructor() { + super(); + + this.name = "MurmurHash3"; + this.module = "Default"; + this.description = "Generates a MurmurHash v3 for a string input and an optional seed input"; + this.infoURL = "https://wikipedia.org/wiki/MurmurHash"; + this.inputType = "string"; + this.outputType = "number"; + this.args = [ + { + name: "Seed", + type: "number", + value: 0 + } + ]; + } + + /** + * Calculates the MurmurHash3 hash of the input. + * Based on Gary Court's JS MurmurHash implementation + * @see http://github.com/garycourt/murmurhash-js + * @author AliceGrey [alice@grey.systems] + * @param {string} input ASCII only + * @param {number} seed Positive integer only + * @return {number} 32-bit positive integer hash + */ + mmh3(input, seed) { + let h1, h1b, k1, i; + const remainder = input.length & 3; // input.length % 4 + const bytes = input.length - remainder; + h1 = seed; + const c1 = 0xcc9e2d51; + const c2 = 0x1b873593; + i = 0; + + while (i < bytes) { + k1 = + ((input.charCodeAt(i) & 0xff)) | + ((input.charCodeAt(++i) & 0xff) << 8) | + ((input.charCodeAt(++i) & 0xff) << 16) | + ((input.charCodeAt(++i) & 0xff) << 24); + ++i; + + k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff; + + h1 ^= k1; + h1 = (h1 << 13) | (h1 >>> 19); + h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff; + h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16)); + } + + k1 = 0; + + if (remainder === 3) { + k1 ^= (input.charCodeAt(i + 2) & 0xff) << 16; + } + if (remainder === 2) { + k1 ^= (input.charCodeAt(i + 1) & 0xff) << 8; + } + if (remainder === 1) { + k1 ^= (input.charCodeAt(i) & 0xff); + } + k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff; + h1 ^= k1; + + h1 ^= input.length; + + h1 ^= h1 >>> 16; + h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff; + h1 ^= h1 >>> 13; + h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff; + h1 ^= h1 >>> 16; + + return h1 >>> 0; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {number} + */ + run(input, args) { + let seed; + if (args && args.length > 0) { + seed = args[0]; + } + return this.mmh3(input, seed); + } + +} + +export default MurmurHash3; From 20db43c0a88140dbc703e0a2ac40c507c0d6fc8b Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 6 Feb 2024 12:22:08 -0500 Subject: [PATCH 0966/1024] Add MIT License --- src/core/operations/Murmurhash3.mjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/operations/Murmurhash3.mjs b/src/core/operations/Murmurhash3.mjs index c646a539..83a008ed 100644 --- a/src/core/operations/Murmurhash3.mjs +++ b/src/core/operations/Murmurhash3.mjs @@ -1,4 +1,8 @@ /** + * Based on murmurhash-js (https://github.com/garycourt/murmurhash-js) + * @author Gary Court + * @license MIT + * * @author AliceGrey [alice@grey.systems] * @copyright Crown Copyright 2024 * @license Apache-2.0 From 59b97bfccbd3110a66979d77706ad159e6090e53 Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 6 Feb 2024 13:03:15 -0500 Subject: [PATCH 0967/1024] Add MurmurHash3 Tests and normalize filename --- tests/operations/index.mjs | 1 + tests/operations/tests/MurmurHash3.mjs | 55 ++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/operations/tests/MurmurHash3.mjs diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index e61f542d..9a04e468 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -66,6 +66,7 @@ import "./tests/LZNT1Decompress.mjs"; import "./tests/MS.mjs"; import "./tests/Magic.mjs"; import "./tests/MorseCode.mjs"; +import "./tests/MurmurHash3.mjs"; import "./tests/NetBIOS.mjs"; import "./tests/NormaliseUnicode.mjs"; import "./tests/OTP.mjs"; diff --git a/tests/operations/tests/MurmurHash3.mjs b/tests/operations/tests/MurmurHash3.mjs new file mode 100644 index 00000000..d6490c7b --- /dev/null +++ b/tests/operations/tests/MurmurHash3.mjs @@ -0,0 +1,55 @@ +/** + * MurmurHash3 tests + * @author AliceGrey [alice@grey.systems] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "To MurmurHash3: nothing", + input: "", + expectedOutput: "0", + recipeConfig: [ + { + op: "MurmurHash3", + args: [0], + }, + ], + }, + { + name: "To MurmurHash3: 1", + input: "1", + expectedOutput: "2484513939", + recipeConfig: [ + { + op: "MurmurHash3", + args: [0], + }, + ], + }, + { + name: "To MurmurHash3: Hello World!", + input: "Hello World!", + expectedOutput: "3691591037", + recipeConfig: [ + { + op: "MurmurHash3", + args: [0], + }, + ], + }, + { + name: "To MurmurHash3: Hello World! with seed", + input: "Hello World!", + expectedOutput: "1148600031", + recipeConfig: [ + { + op: "MurmurHash3", + args: [1337], + }, + ], + } +]); From afcf46561ae552d58afe6c3a194101a40c64b62e Mon Sep 17 00:00:00 2001 From: Allie Date: Tue, 6 Feb 2024 13:13:43 -0500 Subject: [PATCH 0968/1024] Rename Murmurhash3.mjs to MurmurHash3.mjs --- src/core/operations/{Murmurhash3.mjs => MurmurHash3.mjs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/core/operations/{Murmurhash3.mjs => MurmurHash3.mjs} (100%) diff --git a/src/core/operations/Murmurhash3.mjs b/src/core/operations/MurmurHash3.mjs similarity index 100% rename from src/core/operations/Murmurhash3.mjs rename to src/core/operations/MurmurHash3.mjs From cfc8a506f7b13db136a62a9cec80ceda04c0dedc Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 6 Feb 2024 15:21:39 -0500 Subject: [PATCH 0969/1024] Fix calculation bug and add Convert to Signed A signed output is often needed for Shodan and other favicon searches. --- src/core/operations/MurmurHash3.mjs | 72 ++++++++++++++++++-------- tests/operations/tests/MurmurHash3.mjs | 22 ++++++++ 2 files changed, 71 insertions(+), 23 deletions(-) diff --git a/src/core/operations/MurmurHash3.mjs b/src/core/operations/MurmurHash3.mjs index 83a008ed..f4aea611 100644 --- a/src/core/operations/MurmurHash3.mjs +++ b/src/core/operations/MurmurHash3.mjs @@ -32,27 +32,33 @@ class MurmurHash3 extends Operation { name: "Seed", type: "number", value: 0 + }, + { + name: "Convert to Signed", + type: "boolean", + value: false } ]; } - /** - * Calculates the MurmurHash3 hash of the input. - * Based on Gary Court's JS MurmurHash implementation - * @see http://github.com/garycourt/murmurhash-js - * @author AliceGrey [alice@grey.systems] - * @param {string} input ASCII only - * @param {number} seed Positive integer only - * @return {number} 32-bit positive integer hash - */ + /** + * Calculates the MurmurHash3 hash of the input. + * Based on Gary Court's JS MurmurHash implementation + * @see http://github.com/garycourt/murmurhash-js + * @author AliceGrey [alice@grey.systems] + * @param {string} input ASCII only + * @param {number} seed Positive integer only + * @return {number} 32-bit positive integer hash + */ mmh3(input, seed) { - let h1, h1b, k1, i; + let h1b; + let k1; const remainder = input.length & 3; // input.length % 4 const bytes = input.length - remainder; - h1 = seed; + let h1 = seed; const c1 = 0xcc9e2d51; const c2 = 0x1b873593; - i = 0; + let i = 0; while (i < bytes) { k1 = @@ -77,16 +83,19 @@ class MurmurHash3 extends Operation { if (remainder === 3) { k1 ^= (input.charCodeAt(i + 2) & 0xff) << 16; } - if (remainder === 2) { + + if (remainder === 3 || remainder === 2) { k1 ^= (input.charCodeAt(i + 1) & 0xff) << 8; } - if (remainder === 1) { + + if (remainder === 3 || remainder === 2 || remainder === 1) { k1 ^= (input.charCodeAt(i) & 0xff); + + k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff; + h1 ^= k1; } - k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff; - k1 = (k1 << 15) | (k1 >>> 17); - k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff; - h1 ^= k1; h1 ^= input.length; @@ -99,19 +108,36 @@ class MurmurHash3 extends Operation { return h1 >>> 0; } + /** + * Converts an unsigned 32-bit integer to a signed 32-bit integer + * @author AliceGrey [alice@grey.systems] + * @param {value} 32-bit unsigned integer + * @return {number} 32-bit signed integer + */ + unsignedToSigned(value) { + if (value & 0x80000000) { + return -0x100000000 + value; + } else { + return value; + } + } + /** * @param {string} input * @param {Object[]} args * @returns {number} */ run(input, args) { - let seed; - if (args && args.length > 0) { - seed = args[0]; + if (args && args.length >= 1) { + const seed = args[0]; + const hash = this.mmh3(input, seed); + if (args.length > 1 && args[1]) { + return this.unsignedToSigned(hash); + } + return hash; } - return this.mmh3(input, seed); + return this.mmh3(input); } - } export default MurmurHash3; diff --git a/tests/operations/tests/MurmurHash3.mjs b/tests/operations/tests/MurmurHash3.mjs index d6490c7b..27884610 100644 --- a/tests/operations/tests/MurmurHash3.mjs +++ b/tests/operations/tests/MurmurHash3.mjs @@ -51,5 +51,27 @@ TestRegister.addTests([ args: [1337], }, ], + }, + { + name: "To MurmurHash3: foo", + input: "foo", + expectedOutput: "4138058784", + recipeConfig: [ + { + op: "MurmurHash3", + args: [0], + }, + ], + }, + { + name: "To MurmurHash3: foo signed", + input: "foo", + expectedOutput: "-156908512", + recipeConfig: [ + { + op: "MurmurHash3", + args: [0, true], + }, + ], } ]); From a54522f796c99899bff371425eaef6ec370f6cd2 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Fri, 9 Feb 2024 00:37:15 +0000 Subject: [PATCH 0970/1024] 10.7.0 --- CHANGELOG.md | 14 +++++++++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d845a56..7dabea66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,11 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.7.0] - 2024-02-09 +- Added 'File Tree' operation [@sw5678] | [#1667] +- Added 'RISON' operation [@sg5506844] | [#1555] +- Added 'MurmurHash3' operation [@AliceGrey] | [#1694] + ### [10.6.0] - 2024-02-03 - Updated 'Forensics Wiki' URLs to new domain [@a3957273] | [#1703] - Added 'LZNT1 Decompress' operation [@0xThiebaut] | [#1675] @@ -378,7 +383,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) - +[10.7.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.6.0]: https://github.com/gchq/CyberChef/releases/tag/v10.6.0 [10.5.0]: https://github.com/gchq/CyberChef/releases/tag/v10.5.0 [10.4.0]: https://github.com/gchq/CyberChef/releases/tag/v10.4.0 @@ -538,6 +543,10 @@ All major and minor version changes will be documented in this file. Details of [@0xThiebaut]: https://github.com/0xThiebaut [@cnotin]: https://github.com/cnotin [@KevinSJ]: https://github.com/KevinSJ +[@sw5678]: https://github.com/sw5678 +[@sg5506844]: https://github.com/sg5506844 +[@AliceGrey]: https://github.com/AliceGrey + [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7 [9a33498]: https://github.com/gchq/CyberChef/commit/9a33498fed26a8df9c9f35f39a78a174bf50a513 @@ -660,3 +669,6 @@ All major and minor version changes will be documented in this file. Details of [#1675]: https://github.com/gchq/CyberChef/issues/1675 [#1678]: https://github.com/gchq/CyberChef/issues/1678 [#1541]: https://github.com/gchq/CyberChef/issues/1541 +[#1667]: https://github.com/gchq/CyberChef/issues/1667 +[#1555]: https://github.com/gchq/CyberChef/issues/1555 +[#1694]: https://github.com/gchq/CyberChef/issues/1694 diff --git a/package-lock.json b/package-lock.json index 4862a693..fe1e07b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.6.0", + "version": "10.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.6.0", + "version": "10.7.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 4d84e284..dc9cfed3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.6.0", + "version": "10.7.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 19194a7eb0c2641faeade699e585584a8e99da9e Mon Sep 17 00:00:00 2001 From: Doug Burks Date: Fri, 9 Feb 2024 07:41:32 -0500 Subject: [PATCH 0971/1024] Fix typo in FileTree.mjs --- src/core/operations/FileTree.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operations/FileTree.mjs b/src/core/operations/FileTree.mjs index c01401c6..8321f8f5 100644 --- a/src/core/operations/FileTree.mjs +++ b/src/core/operations/FileTree.mjs @@ -21,7 +21,7 @@ class FileTree extends Operation { this.name = "File Tree"; this.module = "Default"; - this.description = "Creates file tree from list of file paths (Similar too tree linux command)"; + this.description = "Creates file tree from list of file paths (similar to the tree command in Linux)"; this.inputType = "string"; this.outputType = "string"; this.args = [ From e973ea6f08ce4a433a5d1be460c7891419b49143 Mon Sep 17 00:00:00 2001 From: Jed Laundry Date: Sun, 11 Feb 2024 01:18:52 +0000 Subject: [PATCH 0972/1024] update Diff sanity check test --- tests/browser/02_ops.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/browser/02_ops.js b/tests/browser/02_ops.js index e2c8a219..7cb0e941 100644 --- a/tests/browser/02_ops.js +++ b/tests/browser/02_ops.js @@ -108,7 +108,7 @@ module.exports = { // testOp(browser, "Derive EVP key", "test input", "test_output"); // testOp(browser, "Derive PBKDF2 key", "test input", "test_output"); // testOp(browser, "Detect File Type", "test input", "test_output"); - testOpHtml(browser, "Diff", "The cat sat on the mat\n\nThe mat cat on the sat", ".hl5:first-child", "mat", ["\\n\\n", "Word", true, true, false, false]); + testOpHtml(browser, "Diff", "The cat sat on the mat\n\nThe mat cat on the sat", "ins:first-child", "mat", ["\\n\\n", "Word", true, true, false, false]); // testOp(browser, "Disassemble x86", "test input", "test_output"); testOpImage(browser, "Dither Image", "files/Hitchhikers_Guide.jpeg"); // testOp(browser, "Divide", "test input", "test_output"); From 0da30813da9903ba40e03842fe8d2eb613e95f22 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Tue, 30 Jan 2024 12:24:45 +0000 Subject: [PATCH 0973/1024] Add new steps to publish a containerized CyberChef to GHCR --- .github/workflows/pull_requests.yml | 4 +++ .github/workflows/releases.yml | 47 ++++++++++++++++++++++++++++- Containerfile | 3 ++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 Containerfile diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index b485edad..42027c93 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -38,3 +38,7 @@ jobs: run: | sudo apt-get install xvfb xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui + image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index b1be78f9..8fbac9f3 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -6,6 +6,12 @@ on: tags: - 'v*' +env: + REGISTRY: ghcr.io + REGISTRY_USER: ${{ github.actor }} + REGISTRY_PASSWORD: ${{ github.token }} + IMAGE_NAME: ${{ github.repository }} + jobs: main: runs-on: ubuntu-latest @@ -16,10 +22,14 @@ jobs: uses: actions/setup-node@v3 with: node-version: '18.x' + - name: Install qemu dependency + run: | + sudo apt-get update + sudo apt-get install -y qemu-user-static - name: Install run: | - npm install + npm ci npm run setheapsize - name: Lint @@ -40,6 +50,31 @@ jobs: sudo apt-get install xvfb xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui + - name: Image Metadata + if: success() + id: image-metadata + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=semver,pattern={{major}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{version}} + + - name: Production Image Build + if: success() + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: ${{ steps.image-metadata.outputs.tags }} + labels: ${{ steps.image-metadata.outputs.labels }} + containerfiles: ./Containerfile + platforms: linux/arm64, linux/amd64 + oci: true + extra-args: | + --ulimit nofile=4096:4096 + - name: Upload Release Assets if: success() id: upload-release-assets @@ -57,3 +92,13 @@ jobs: uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} + + - name: Publish to GHCR + if: success() + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: ${{ env.REGISTRY }} + username: ${{ env.REGISTRY_USER }} + password: ${{ env.REGISTRY_PASSWORD }} diff --git a/Containerfile b/Containerfile new file mode 100644 index 00000000..7727754d --- /dev/null +++ b/Containerfile @@ -0,0 +1,3 @@ +FROM ghcr.io/static-web-server/static-web-server:2.25-alpine + +COPY ./build/prod /public From 3b265322e09286cad8b593bccef4ebb1c1a7a67a Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Tue, 30 Jan 2024 15:18:45 +0000 Subject: [PATCH 0974/1024] Build container on PR (but don't publish) to verify Containerfile syntax --- .github/workflows/pull_requests.yml | 14 ++++++++++++++ .github/workflows/releases.yml | 2 -- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index 42027c93..654669d1 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -5,6 +5,10 @@ on: pull_request: types: [synchronize, opened, reopened] +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + jobs: main: runs-on: ubuntu-latest @@ -33,6 +37,16 @@ jobs: if: success() run: npx grunt prod + - name: Production Image Build + if: success() + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + containerfiles: ./Containerfile + platforms: linux/arm64, linux/amd64 + oci: true + - name: UI Tests if: success() run: | diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 8fbac9f3..c5c4cf2e 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -72,8 +72,6 @@ jobs: containerfiles: ./Containerfile platforms: linux/arm64, linux/amd64 oci: true - extra-args: | - --ulimit nofile=4096:4096 - name: Upload Release Assets if: success() From 40a4872f70f0da19557642a2d43069535114375f Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Tue, 6 Feb 2024 10:26:33 +0000 Subject: [PATCH 0975/1024] Generate prod build inside container --- .github/workflows/pull_requests.yml | 6 +----- .github/workflows/releases.yml | 4 ++++ Containerfile | 8 +++++++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index 654669d1..16fbb6de 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -44,7 +44,7 @@ jobs: with: image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} containerfiles: ./Containerfile - platforms: linux/arm64, linux/amd64 + platforms: linux/amd64 oci: true - name: UI Tests @@ -52,7 +52,3 @@ jobs: run: | sudo apt-get install xvfb xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - image: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index c5c4cf2e..c016e24c 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -72,6 +72,10 @@ jobs: containerfiles: ./Containerfile platforms: linux/arm64, linux/amd64 oci: true + # Webpack seems to use a lot of open files, increase the max open file limit to accomodate. + extra-args: | + --ulimit nofile=10000 + - name: Upload Release Assets if: success() diff --git a/Containerfile b/Containerfile index 7727754d..125ef18c 100644 --- a/Containerfile +++ b/Containerfile @@ -1,3 +1,9 @@ +FROM node:18-alpine AS build + +COPY . . +RUN npm ci +RUN npm run build + FROM ghcr.io/static-web-server/static-web-server:2.25-alpine -COPY ./build/prod /public +COPY --from=build ./build/prod /public From 7588e50f9fe2dc94efd8fd074c15177c53e607e2 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Tue, 6 Feb 2024 10:28:02 +0000 Subject: [PATCH 0976/1024] Remove unecessary QEMU install step --- .github/workflows/releases.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index c016e24c..f00e44f6 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -22,10 +22,6 @@ jobs: uses: actions/setup-node@v3 with: node-version: '18.x' - - name: Install qemu dependency - run: | - sudo apt-get update - sudo apt-get install -y qemu-user-static - name: Install run: | From dbdcb460e542ce57199dd550e76f51d7d50ecb83 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Tue, 6 Feb 2024 10:29:20 +0000 Subject: [PATCH 0977/1024] Remove unecessary `if: success()` from Github release workflow --- .github/workflows/releases.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index f00e44f6..f3895f8c 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -37,17 +37,14 @@ jobs: npm run testnodeconsumer - name: Production Build - if: success() run: npx grunt prod - name: UI Tests - if: success() run: | sudo apt-get install xvfb xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui - name: Image Metadata - if: success() id: image-metadata uses: docker/metadata-action@v4 with: @@ -58,7 +55,6 @@ jobs: type=semver,pattern={{version}} - name: Production Image Build - if: success() id: build-image uses: redhat-actions/buildah-build@v2 with: @@ -74,7 +70,6 @@ jobs: - name: Upload Release Assets - if: success() id: upload-release-assets uses: svenstaro/upload-release-action@v2 with: @@ -86,13 +81,11 @@ jobs: body: "See the [CHANGELOG](https://github.com/gchq/CyberChef/blob/master/CHANGELOG.md) and [commit messages](https://github.com/gchq/CyberChef/commits/master) for details." - name: Publish to NPM - if: success() uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} - name: Publish to GHCR - if: success() uses: redhat-actions/push-to-registry@v2 with: image: ${{ steps.build-image.outputs.image }} From a0729304d1441accc032232c37406d7db79f9c75 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Thu, 8 Feb 2024 10:15:29 +0000 Subject: [PATCH 0978/1024] Add packages write permission --- .github/workflows/releases.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index f3895f8c..76a426be 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -15,6 +15,8 @@ env: jobs: main: runs-on: ubuntu-latest + permissions: + packages: write steps: - uses: actions/checkout@v3 From 4b95ab2477bc3fbc79969266c8e686db55b4d699 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Thu, 8 Feb 2024 10:28:14 +0000 Subject: [PATCH 0979/1024] Increase nofile limit to 10,000 when building container on PR workflow too --- .github/workflows/pull_requests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index 16fbb6de..f6a9683c 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -46,6 +46,9 @@ jobs: containerfiles: ./Containerfile platforms: linux/amd64 oci: true + # Webpack seems to use a lot of open files, increase the max open file limit to accomodate. + extra-args: | + --ulimit nofile=10000 - name: UI Tests if: success() From 2b85336c71695c2d1aa15ed46bcd23419c018427 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Thu, 8 Feb 2024 19:32:56 +0000 Subject: [PATCH 0980/1024] Remove ARM64 Container build from release workflow --- .github/workflows/releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 76a426be..89e4efc5 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -64,7 +64,7 @@ jobs: tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} containerfiles: ./Containerfile - platforms: linux/arm64, linux/amd64 + platforms: linux/amd64 oci: true # Webpack seems to use a lot of open files, increase the max open file limit to accomodate. extra-args: | From 1a2207a045f069032d1e6317de8d6ab3c8892dcf Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Sun, 11 Feb 2024 13:29:18 +0000 Subject: [PATCH 0981/1024] Swtich to nginx for container --- Containerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Containerfile b/Containerfile index 125ef18c..be4c8bad 100644 --- a/Containerfile +++ b/Containerfile @@ -4,6 +4,6 @@ COPY . . RUN npm ci RUN npm run build -FROM ghcr.io/static-web-server/static-web-server:2.25-alpine +FROM nginx:1.25-alpine3.18 AS cyberchef -COPY --from=build ./build/prod /public +COPY --from=build ./build/prod /usr/share/nginx/html/ From d700d1d459751c0c1d28092396c3691393e9d7fa Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Sun, 11 Feb 2024 13:30:15 +0000 Subject: [PATCH 0982/1024] Switch to using Dockerfile --- Containerfile => Dockerfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Containerfile => Dockerfile (100%) diff --git a/Containerfile b/Dockerfile similarity index 100% rename from Containerfile rename to Dockerfile From 314b925ec916057799f30a229446f6600d816a0f Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Sun, 11 Feb 2024 13:31:03 +0000 Subject: [PATCH 0983/1024] Add a comment to the README about using Docker --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 24f56e77..2f951d66 100755 --- a/README.md +++ b/README.md @@ -20,6 +20,22 @@ Cryptographic operations in CyberChef should not be relied upon to provide secur [A live demo can be found here][1] - have fun! +## Containers + +If you would like to try out CyberChef locally you can either build it yourself: + +```bash +docker build --tag cyberchef --ulimit nofile=10000 . +docker run -it -p 8080:80 cyberchef +``` + +Or you can use our image directly: + +```bash +docker run -it -p 8080:80 ghcr.io/gchq/cyberchef:latest +``` + +This image is built and published through our [GitHub Workflows](.github/workflows/docker.yml) ## How it works From abd90240975e33aeee12ad6242046a3bf6b787eb Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Sun, 11 Feb 2024 13:32:26 +0000 Subject: [PATCH 0984/1024] Add a .dockerignore file --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..dd87e2d7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +build From c5e880628a1b769105b4586aa3ef1be221b05fd4 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Sun, 11 Feb 2024 13:38:43 +0000 Subject: [PATCH 0985/1024] Fix CI using Containerfile --- .github/workflows/pull_requests.yml | 2 +- .github/workflows/releases.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index f6a9683c..5d2b7e40 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -43,7 +43,7 @@ jobs: uses: redhat-actions/buildah-build@v2 with: image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - containerfiles: ./Containerfile + containerfiles: ./Dockerfile platforms: linux/amd64 oci: true # Webpack seems to use a lot of open files, increase the max open file limit to accomodate. diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 89e4efc5..c5433742 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -63,7 +63,7 @@ jobs: image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} - containerfiles: ./Containerfile + containerfiles: ./Dockerfile platforms: linux/amd64 oci: true # Webpack seems to use a lot of open files, increase the max open file limit to accomodate. From 3f89a94df2a438245d4881ec5c581d1532517a62 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Mon, 12 Feb 2024 09:49:44 +0000 Subject: [PATCH 0986/1024] Remove `image` property from Container build & push actions --- .github/workflows/pull_requests.yml | 5 ----- .github/workflows/releases.yml | 2 -- 2 files changed, 7 deletions(-) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index 5d2b7e40..af1c6422 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -5,10 +5,6 @@ on: pull_request: types: [synchronize, opened, reopened] -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - jobs: main: runs-on: ubuntu-latest @@ -42,7 +38,6 @@ jobs: id: build-image uses: redhat-actions/buildah-build@v2 with: - image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} containerfiles: ./Dockerfile platforms: linux/amd64 oci: true diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index c5433742..421cb5cd 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -60,7 +60,6 @@ jobs: id: build-image uses: redhat-actions/buildah-build@v2 with: - image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} containerfiles: ./Dockerfile @@ -90,7 +89,6 @@ jobs: - name: Publish to GHCR uses: redhat-actions/push-to-registry@v2 with: - image: ${{ steps.build-image.outputs.image }} tags: ${{ steps.build-image.outputs.tags }} registry: ${{ env.REGISTRY }} username: ${{ env.REGISTRY_USER }} From 7582abfa277f00478fa3b235e6f442d1a7b52096 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Mon, 12 Feb 2024 10:41:45 +0000 Subject: [PATCH 0987/1024] Fix PR workflow, Buildah requires atleast an image name if no tags specified --- .github/workflows/pull_requests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index af1c6422..daa59490 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -38,6 +38,8 @@ jobs: id: build-image uses: redhat-actions/buildah-build@v2 with: + # Not being uploaded to any registry, use a simple name to allow Buildah to build correctly. + image: cyberchef containerfiles: ./Dockerfile platforms: linux/amd64 oci: true From 62dfa8f9dddbb76ffa620a972bf13d04095494b9 Mon Sep 17 00:00:00 2001 From: Ashleigh Carr Date: Mon, 12 Feb 2024 10:45:20 +0000 Subject: [PATCH 0988/1024] Point to the correct workflow in the README for Container releases. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2f951d66..5549bda2 100755 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Or you can use our image directly: docker run -it -p 8080:80 ghcr.io/gchq/cyberchef:latest ``` -This image is built and published through our [GitHub Workflows](.github/workflows/docker.yml) +This image is built and published through our [GitHub Workflows](.github/workflows/releases.yml) ## How it works From 7cfb5e0b2a42622500a60054eff1c00b0ced26ba Mon Sep 17 00:00:00 2001 From: sw5678 <151949597+sw5678@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:52:46 +0000 Subject: [PATCH 0989/1024] Added RAKE functionality into CC --- src/core/config/Categories.json | 3 +- src/core/operations/RAKE.mjs | 149 ++++++++++++++++++++++++++++++++ tests/operations/index.mjs | 1 + tests/operations/tests/RAKE.mjs | 22 +++++ 4 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 src/core/operations/RAKE.mjs create mode 100644 tests/operations/tests/RAKE.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index cf4d91be..ab26cfe0 100644 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -328,7 +328,8 @@ "CSS selector", "Extract EXIF", "Extract ID3", - "Extract Files" + "Extract Files", + "RAKE" ] }, { diff --git a/src/core/operations/RAKE.mjs b/src/core/operations/RAKE.mjs new file mode 100644 index 00000000..d1165b51 --- /dev/null +++ b/src/core/operations/RAKE.mjs @@ -0,0 +1,149 @@ +/** + * @author sw5678 + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; + +/** + * RAKE operation + */ +class RAKE extends Operation { + + /** + * RAKE constructor + */ + constructor() { + super(); + + this.name = "RAKE"; + this.module = "Default"; + this.description = [ + "Rapid Keyword Extraction (RAKE)", + "

        ", + "RAKE is a domain-independent keyword extraction algorithm in Natural Language Processing.", + "

        ", + "The list of stop words are from the NLTK python package", + ].join("\n"); + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Word Delimiter (Regex)", + type: "text", + value: "\\s" + }, + { + name: "Sentence Delimiter (Regex)", + type: "text", + value: "\\.\\s|\\n" + }, + { + name: "Stop Words", + type: "text", + value: "i,me,my,myself,we,our,ours,ourselves,you,you're,you've,you'll,you'd,your,yours,yourself,yourselves,he,him,his,himself,she,she's,her,hers,herself,it,it's,its,itsef,they,them,their,theirs,themselves,what,which,who,whom,this,that,that'll,these,those,am,is,are,was,were,be,been,being,have,has,had,having,do,does',did,doing,a,an,the,and,but,if,or,because,as,until,while,of,at,by,for,with,about,against,between,into,through,during,before,after,above,below,to,from,up,down,in,out,on,off,over,under,again,further,then,once,here,there,when,where,why,how,all,any,both,each,few,more,most,other,some,such,no,nor,not,only,own,same,so,than,too,very,s,t,can,will,just,don,don't,should,should've,now,d,ll,m,o,re,ve,y,ain,aren,aren't,couldn,couldn't,didn,didn't,doesn,doesn't,hadn,hadn't,hasn,hasn't,haven,haven't,isn,isn't,ma,mightn,mightn't,mustn,mustn't,needn,needn't,shan,shan't,shouldn,shouldn't,wasn,wasn't,weren,weren't,won,won't,wouldn,wouldn't" + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + + // Get delimiter regexs + const wordDelim = new RegExp(args[0], "g"); + const sentDelim = new RegExp(args[1], "g"); + + // Deduplicate the stop words and add the empty string + const stopWords = args[2].toLowerCase().replace(/ /g, "").split(",").unique(); + stopWords.push(""); + + // Lower case input and remove start and ending whitespace + input = input.toLowerCase().trim(); + + // Get tokens, token count, and phrases + const tokens = []; + const wordFrequencies = []; + let phrases = []; + + // Build up list of phrases and token counts + const sentences = input.split(sentDelim); + for (const sent of sentences) { + + // Split sentence into words + const splitSent = sent.split(wordDelim); + let startIndex = 0; + + for (let i = 0; i < splitSent.length; i++) { + const token = splitSent[i]; + if (stopWords.includes(token)) { + // If token is stop word then split to create phrase + phrases.push(splitSent.slice(startIndex, i)); + startIndex = i + 1; + } else { + // If token is not a stop word add to the count of the list of words + if (tokens.includes(token)) { + wordFrequencies[tokens.indexOf(token)]+=1; + } else { + tokens.push(token); + wordFrequencies.push(1); + } + } + } + phrases.push(splitSent.slice(startIndex)); + } + + // remove empty phrases + phrases = phrases.filter(subArray => subArray.length > 0); + + // Remove duplicate phrases + const uniquePhrases = [...new Set(phrases.map(function (phrase) { + return phrase.join(" "); + }))]; + phrases = uniquePhrases.map(function (phrase) { + return phrase.split(" "); + }); + + // Generate word_degree_matrix and populate + const wordDegreeMatrix = Array.from(Array(tokens.length), _ => Array(tokens.length).fill(0)); + phrases.forEach(function (phrase) { + phrase.forEach(function (word1) { + phrase.forEach(function (word2) { + wordDegreeMatrix[tokens.indexOf(word1)][tokens.indexOf(word2)]++; + }); + }); + }); + + // Calculate degree score for each token + const degreeScores = Array(tokens.length).fill(0); + for (let i=0; i b[0] - a[0]); + scores.unshift(new Array("Scores: ", "Keywords: ")); + + // Output works with the 'To Table' functionality already built into CC + return scores.map(function (score) { + return score.join(", "); + }).join("\n"); + } +} + +export default RAKE; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 570fbb6f..169ce844 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -74,6 +74,7 @@ import "./tests/ParseIPRange.mjs"; import "./tests/ParseQRCode.mjs"; import "./tests/PEMtoHex.mjs"; import "./tests/PowerSet.mjs"; +import "./tests/RAKE.mjs"; import "./tests/Regex.mjs"; import "./tests/Register.mjs"; import "./tests/Rotate.mjs"; diff --git a/tests/operations/tests/RAKE.mjs b/tests/operations/tests/RAKE.mjs new file mode 100644 index 00000000..8164ca01 --- /dev/null +++ b/tests/operations/tests/RAKE.mjs @@ -0,0 +1,22 @@ +/** + * RAKE, Rapid Automatic Keyword Extraction tests. + * + * @author sw5678 + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + "name": "RAKE: Basic Example", + "input": "test1 test2. test2", + "expectedOutput": "Scores: , Keywords: \n3.5, test1 test2\n1.5, test2", + "recipeConfig": [ + { + "op": "RAKE", + "args": ["\\s", "\\.\\s|\\n", "i,me,my,myself,we,our"] + }, + ], + } +]); From c7377da37f33711824222f7aba4d0e302fd38c21 Mon Sep 17 00:00:00 2001 From: sw5678 <151949597+sw5678@users.noreply.github.com> Date: Mon, 12 Feb 2024 16:52:43 +0000 Subject: [PATCH 0990/1024] Adding and removing tests --- tests/operations/index.mjs | 123 ++++++++++++------------- tests/operations/tests/FileTree.mjs | 7 +- tests/operations/tests/FromGeohash.mjs | 55 ----------- tests/operations/tests/ToGeohash.mjs | 55 ----------- 4 files changed, 65 insertions(+), 175 deletions(-) delete mode 100644 tests/operations/tests/FromGeohash.mjs delete mode 100644 tests/operations/tests/ToGeohash.mjs diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index aa120ba0..98374650 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -17,131 +17,130 @@ import { } from "../lib/utils.mjs"; import TestRegister from "../lib/TestRegister.mjs"; -import "./tests/BCD.mjs"; -import "./tests/BSON.mjs"; +import "./tests/AESKeyWrap.mjs"; +import "./tests/AvroToJSON.mjs"; import "./tests/BaconCipher.mjs"; import "./tests/Base45.mjs"; import "./tests/Base58.mjs"; -import "./tests/Base64.mjs"; import "./tests/Base62.mjs"; +import "./tests/Base64.mjs"; import "./tests/Base85.mjs"; import "./tests/Base92.mjs"; +import "./tests/BCD.mjs"; import "./tests/BitwiseOp.mjs"; +import "./tests/BLAKE2b.mjs"; +import "./tests/BLAKE2s.mjs"; +import "./tests/Bombe.mjs"; +import "./tests/BSON.mjs"; import "./tests/ByteRepr.mjs"; +import "./tests/CaesarBoxCipher.mjs"; import "./tests/CartesianProduct.mjs"; -import "./tests/CetaceanCipherEncode.mjs"; +import "./tests/CBORDecode.mjs"; +import "./tests/CBOREncode.mjs"; import "./tests/CetaceanCipherDecode.mjs"; +import "./tests/CetaceanCipherEncode.mjs"; import "./tests/ChaCha.mjs"; -import "./tests/CharEnc.mjs"; import "./tests/ChangeIPFormat.mjs"; +import "./tests/CharEnc.mjs"; import "./tests/Charts.mjs"; import "./tests/Checksum.mjs"; import "./tests/Ciphers.mjs"; +import "./tests/CipherSaber2.mjs"; +import "./tests/CMAC.mjs"; import "./tests/Code.mjs"; +import "./tests/Colossus.mjs"; import "./tests/Comment.mjs"; import "./tests/Compress.mjs"; import "./tests/ConditionalJump.mjs"; +import "./tests/ConvertCoordinateFormat.mjs"; +import "./tests/ConvertToNATOAlphabet.mjs"; import "./tests/Crypt.mjs"; import "./tests/CSV.mjs"; import "./tests/DateTime.mjs"; +import "./tests/DefangIP.mjs"; +import "./tests/ELFInfo.mjs"; +import "./tests/Enigma.mjs"; import "./tests/ExtractEmailAddresses.mjs"; +import "./tests/FileTree.mjs"; +import "./tests/FletcherChecksum.mjs"; import "./tests/Fork.mjs"; import "./tests/FromDecimal.mjs"; import "./tests/GenerateAllHashes.mjs"; -import "./tests/Gzip.mjs"; +import "./tests/GenerateDeBruijnSequence.mjs"; +import "./tests/GetAllCasings.mjs"; +import "./tests/GOST.mjs"; import "./tests/Gunzip.mjs"; +import "./tests/Gzip.mjs"; import "./tests/Hash.mjs"; +import "./tests/HASSH.mjs"; import "./tests/HaversineDistance.mjs"; import "./tests/Hex.mjs"; import "./tests/Hexdump.mjs"; +import "./tests/HKDF.mjs"; import "./tests/Image.mjs"; import "./tests/IndexOfCoincidence.mjs"; -import "./tests/Jump.mjs"; +import "./tests/JA3Fingerprint.mjs"; +import "./tests/JA3SFingerprint.mjs"; import "./tests/JSONBeautify.mjs"; import "./tests/JSONMinify.mjs"; import "./tests/JSONtoCSV.mjs"; +import "./tests/Jump.mjs"; import "./tests/JWTDecode.mjs"; import "./tests/JWTSign.mjs"; import "./tests/JWTVerify.mjs"; +import "./tests/LevenshteinDistance.mjs"; +import "./tests/Lorenz.mjs"; +import "./tests/LS47.mjs"; +import "./tests/LuhnChecksum.mjs"; import "./tests/LZNT1Decompress.mjs"; -import "./tests/MS.mjs"; +import "./tests/LZString.mjs"; import "./tests/Magic.mjs"; +import "./tests/Media.mjs"; import "./tests/MorseCode.mjs"; +import "./tests/MS.mjs"; +import "./tests/MultipleBombe.mjs"; import "./tests/MurmurHash3.mjs"; import "./tests/NetBIOS.mjs"; import "./tests/NormaliseUnicode.mjs"; +import "./tests/NTLM.mjs"; import "./tests/OTP.mjs"; +import "./tests/ParseIPRange.mjs"; +import "./tests/ParseObjectIDTimestamp.mjs"; +import "./tests/ParseQRCode.mjs"; +import "./tests/ParseSSHHostKey.mjs"; +import "./tests/ParseTCP.mjs"; +import "./tests/ParseTLV.mjs"; +import "./tests/ParseUDP.mjs"; +import "./tests/PEMtoHex.mjs"; import "./tests/PGP.mjs"; import "./tests/PHP.mjs"; -import "./tests/ParseIPRange.mjs"; -import "./tests/ParseQRCode.mjs"; -import "./tests/PEMtoHex.mjs"; import "./tests/PowerSet.mjs"; +import "./tests/Protobuf.mjs"; +import "./tests/Rabbit.mjs"; import "./tests/Regex.mjs"; import "./tests/Register.mjs"; +import "./tests/RisonEncodeDecode.mjs"; import "./tests/Rotate.mjs"; +import "./tests/RSA.mjs"; import "./tests/SeqUtils.mjs"; import "./tests/SetDifference.mjs"; import "./tests/SetIntersection.mjs"; import "./tests/SetUnion.mjs"; +import "./tests/Shuffle.mjs"; +import "./tests/SIGABA.mjs"; import "./tests/SM4.mjs"; +// import "./tests/SplitColourChannels.mjs"; // Cannot test operations that use the File type yet import "./tests/StrUtils.mjs"; +import "./tests/Subsection.mjs"; +import "./tests/SwapCase.mjs"; import "./tests/SymmetricDifference.mjs"; import "./tests/TextEncodingBruteForce.mjs"; -import "./tests/TranslateDateTimeFormat.mjs"; -import "./tests/Magic.mjs"; -import "./tests/ParseTLV.mjs"; -import "./tests/Media.mjs"; import "./tests/ToFromInsensitiveRegex.mjs"; -import "./tests/YARA.mjs"; -import "./tests/ConvertCoordinateFormat.mjs"; -import "./tests/Enigma.mjs"; -import "./tests/Bombe.mjs"; -import "./tests/MultipleBombe.mjs"; +import "./tests/TranslateDateTimeFormat.mjs"; import "./tests/Typex.mjs"; -import "./tests/BLAKE2b.mjs"; -import "./tests/BLAKE2s.mjs"; -import "./tests/Protobuf.mjs"; -import "./tests/ParseSSHHostKey.mjs"; -import "./tests/DefangIP.mjs"; -import "./tests/ParseUDP.mjs"; -import "./tests/ParseTCP.mjs"; -import "./tests/AvroToJSON.mjs"; -import "./tests/Lorenz.mjs"; -import "./tests/LuhnChecksum.mjs"; -import "./tests/CipherSaber2.mjs"; -import "./tests/Colossus.mjs"; -import "./tests/ParseObjectIDTimestamp.mjs"; -import "./tests/Unicode.mjs"; -import "./tests/RSA.mjs"; -import "./tests/CBOREncode.mjs"; -import "./tests/CBORDecode.mjs"; -import "./tests/RisonEncodeDecode.mjs"; -import "./tests/JA3Fingerprint.mjs"; -import "./tests/JA3SFingerprint.mjs"; -import "./tests/HASSH.mjs"; -import "./tests/GetAllCasings.mjs"; -import "./tests/SIGABA.mjs"; -import "./tests/ELFInfo.mjs"; -import "./tests/Subsection.mjs"; -import "./tests/CaesarBoxCipher.mjs"; import "./tests/UnescapeString.mjs"; -import "./tests/LS47.mjs"; -import "./tests/LZString.mjs"; -import "./tests/NTLM.mjs"; -import "./tests/Shuffle.mjs"; -import "./tests/FletcherChecksum.mjs"; -import "./tests/CMAC.mjs"; -import "./tests/AESKeyWrap.mjs"; -import "./tests/Rabbit.mjs"; -import "./tests/LevenshteinDistance.mjs"; -import "./tests/SwapCase.mjs"; -import "./tests/HKDF.mjs"; -import "./tests/GenerateDeBruijnSequence.mjs"; -import "./tests/GOST.mjs"; - -// Cannot test operations that use the File type yet -// import "./tests/SplitColourChannels.mjs"; +import "./tests/Unicode.mjs"; +import "./tests/YARA.mjs"; const testStatus = { allTestsPassing: true, diff --git a/tests/operations/tests/FileTree.mjs b/tests/operations/tests/FileTree.mjs index 34249e3c..fc97678f 100644 --- a/tests/operations/tests/FileTree.mjs +++ b/tests/operations/tests/FileTree.mjs @@ -1,4 +1,6 @@ /** + * File tree tests. + * * @author sw5678 * @copyright Crown Copyright 2023 * @license Apache-2.0 @@ -7,14 +9,13 @@ import TestRegister from "../../lib/TestRegister.mjs"; TestRegister.addTests([ { - "name": "Swap Case: basic example", + "name": "File Tree: basic example", "input": "/test_dir1/test_file1.txt\n/test_dir1/test_file2.txt\n/test_dir2/test_file1.txt", "expectedOutput": "test_dir1\n|---test_file1.txt\n|---test_file2.txt\ntest_dir2\n|---test_file1.txt", "recipeConfig": [ { "op": "File Tree", - "args": [ - ], + "args": ["/", "Line feed"], }, ], } diff --git a/tests/operations/tests/FromGeohash.mjs b/tests/operations/tests/FromGeohash.mjs deleted file mode 100644 index dec58687..00000000 --- a/tests/operations/tests/FromGeohash.mjs +++ /dev/null @@ -1,55 +0,0 @@ -/** - * To Geohash tests - * - * @author gchq77703 - * @copyright Crown Copyright 2018 - * @license Apache-2.0 - */ -import TestRegister from "../../lib/TestRegister.mjs"; - -TestRegister.addTests([ - { - name: "From Geohash", - input: "ww8p1r4t8", - expectedOutput: "37.83238649368286,112.55838632583618", - recipeConfig: [ - { - op: "From Geohash", - args: [], - }, - ], - }, - { - name: "From Geohash", - input: "ww8p1r", - expectedOutput: "37.83416748046875,112.5604248046875", - recipeConfig: [ - { - op: "From Geohash", - args: [], - }, - ], - }, - { - name: "From Geohash", - input: "ww8", - expectedOutput: "37.265625,113.203125", - recipeConfig: [ - { - op: "From Geohash", - args: [], - }, - ], - }, - { - name: "From Geohash", - input: "w", - expectedOutput: "22.5,112.5", - recipeConfig: [ - { - op: "From Geohash", - args: [], - }, - ], - }, -]); diff --git a/tests/operations/tests/ToGeohash.mjs b/tests/operations/tests/ToGeohash.mjs deleted file mode 100644 index 96dece85..00000000 --- a/tests/operations/tests/ToGeohash.mjs +++ /dev/null @@ -1,55 +0,0 @@ -/** - * To Geohash tests - * - * @author gchq77703 - * @copyright Crown Copyright 2018 - * @license Apache-2.0 - */ -import TestRegister from "../../lib/TestRegister.mjs"; - -TestRegister.addTests([ - { - name: "To Geohash", - input: "37.8324,112.5584", - expectedOutput: "ww8p1r4t8", - recipeConfig: [ - { - op: "To Geohash", - args: [9], - }, - ], - }, - { - name: "To Geohash", - input: "37.9324,-112.2584", - expectedOutput: "9w8pv3ruj", - recipeConfig: [ - { - op: "To Geohash", - args: [9], - }, - ], - }, - { - name: "To Geohash", - input: "37.8324,112.5584", - expectedOutput: "ww8", - recipeConfig: [ - { - op: "To Geohash", - args: [3], - }, - ], - }, - { - name: "To Geohash", - input: "37.9324,-112.2584", - expectedOutput: "9w8pv3rujxy5b99", - recipeConfig: [ - { - op: "To Geohash", - args: [15], - }, - ], - }, -]); From 47f1f4c549e125f68bc2311710c26290a54e2fe0 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Tue, 13 Feb 2024 00:18:08 +0000 Subject: [PATCH 0991/1024] Bump to 10.8.0 --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dabea66..145d1b14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.8.0] - 2024-02-13 +- Add official Docker images [@AshCorr] | [#1699] + ### [10.7.0] - 2024-02-09 - Added 'File Tree' operation [@sw5678] | [#1667] - Added 'RISON' operation [@sg5506844] | [#1555] @@ -383,6 +386,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) +[10.8.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.7.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.6.0]: https://github.com/gchq/CyberChef/releases/tag/v10.6.0 [10.5.0]: https://github.com/gchq/CyberChef/releases/tag/v10.5.0 @@ -546,6 +550,7 @@ All major and minor version changes will be documented in this file. Details of [@sw5678]: https://github.com/sw5678 [@sg5506844]: https://github.com/sg5506844 [@AliceGrey]: https://github.com/AliceGrey +[@AshCorr]: https://github.com/AshCorr [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7 @@ -672,3 +677,4 @@ All major and minor version changes will be documented in this file. Details of [#1667]: https://github.com/gchq/CyberChef/issues/1667 [#1555]: https://github.com/gchq/CyberChef/issues/1555 [#1694]: https://github.com/gchq/CyberChef/issues/1694 +[#1699]: https://github.com/gchq/CyberChef/issues/1694 diff --git a/package-lock.json b/package-lock.json index 1d1c6333..29717727 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.7.0", + "version": "10.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.7.0", + "version": "10.8.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 0ab4990e..e0c3b136 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.7.0", + "version": "10.8.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 112d52cb9900817be3f3ab9bee803faa5fd86bff Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Tue, 13 Feb 2024 00:42:41 +0000 Subject: [PATCH 0992/1024] Remove specified permissions --- .github/workflows/releases.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 421cb5cd..a068ffbb 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -15,8 +15,6 @@ env: jobs: main: runs-on: ubuntu-latest - permissions: - packages: write steps: - uses: actions/checkout@v3 From dc68b7d9bf812421f777e67a5aa70132aea34263 Mon Sep 17 00:00:00 2001 From: Ted Kruijff Date: Tue, 13 Feb 2024 10:22:54 +0100 Subject: [PATCH 0993/1024] add to tests, fix test, fix a comma --- src/core/config/Categories.json | 2 +- tests/operations/index.mjs | 1 + tests/operations/tests/CaretMdecode.mjs | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index ebf7ddfe..d3b30077 100644 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -70,7 +70,7 @@ "Avro to JSON", "CBOR Encode", "CBOR Decode", - "Caret/M-decode" + "Caret/M-decode", "Rison Encode", "Rison Decode" ] diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 98374650..757d6e9d 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -34,6 +34,7 @@ import "./tests/Bombe.mjs"; import "./tests/BSON.mjs"; import "./tests/ByteRepr.mjs"; import "./tests/CaesarBoxCipher.mjs"; +import "./tests/CaretMdecode.mjs"; import "./tests/CartesianProduct.mjs"; import "./tests/CBORDecode.mjs"; import "./tests/CBOREncode.mjs"; diff --git a/tests/operations/tests/CaretMdecode.mjs b/tests/operations/tests/CaretMdecode.mjs index c7e46ee4..7c4f228e 100644 --- a/tests/operations/tests/CaretMdecode.mjs +++ b/tests/operations/tests/CaretMdecode.mjs @@ -27,7 +27,7 @@ TestRegister.addTests([ */ name: "Caret/M-decode: Full set", input: "^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\\^]^^^_ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~^?M-^@M-^AM-^BM-^CM-^DM-^EM-^FM-^GM-^HM-^IM-^JM-^KM-^LM-^MM-^NM-^OM-^PM-^QM-^RM-^SM-^TM-^UM-^VM-^WM-^XM-^YM-^ZM-^[M-^\\M-^]M-^^M-^_M- M-!M-\"M-#M-$M-%M-&M-'M-(M-)M-*M-+M-,M--M-.M-/M-0M-1M-2M-3M-4M-5M-6M-7M-8M-9M-:M-;M-M-?M-@M-AM-BM-CM-DM-EM-FM-GM-HM-IM-JM-KM-LM-MM-NM-OM-PM-QM-RM-SM-TM-UM-VM-WM-XM-YM-ZM-[M-\\M-]M-^M-_M-`M-aM-bM-cM-dM-eM-fM-gM-hM-iM-jM-kM-lM-mM-nM-oM-pM-qM-rM-sM-tM-uM-vM-wM-xM-yM-zM-{M-|M-}M-~M-^?", - expectedOutput: "\x01\x02\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x1f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", + expectedOutput: "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x1f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\x8d\x2d\x5f\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", recipeConfig: [ { op: "Caret/M-decode", From 774828823cf3264f918daa4dd9fcc495beb8bf14 Mon Sep 17 00:00:00 2001 From: sw5678 <151949597+sw5678@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:52:19 +0000 Subject: [PATCH 0994/1024] Adding RAKE test import back after merge conflict --- tests/operations/index.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 98374650..0a8fe316 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -117,6 +117,7 @@ import "./tests/PHP.mjs"; import "./tests/PowerSet.mjs"; import "./tests/Protobuf.mjs"; import "./tests/Rabbit.mjs"; +import "./tests/RAKE.mjs"; import "./tests/Regex.mjs"; import "./tests/Register.mjs"; import "./tests/RisonEncodeDecode.mjs"; From 63449872da39c3bc301a833c49a41901ee9949ed Mon Sep 17 00:00:00 2001 From: GoForceX <67143590+GoForceX@users.noreply.github.com> Date: Wed, 14 Feb 2024 10:56:00 +0000 Subject: [PATCH 0995/1024] Fix JSON folder folding in Firefox --- src/web/stylesheets/operations/json.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/web/stylesheets/operations/json.css b/src/web/stylesheets/operations/json.css index 22c07128..27861c8f 100644 --- a/src/web/stylesheets/operations/json.css +++ b/src/web/stylesheets/operations/json.css @@ -44,7 +44,8 @@ ul.json-dict, ol.json-array { display: contents; } .json-summary { - display: contents; + display: inline; + list-style: none; } /* Display object and array brackets when closed */ From 6c0c53d00fff6857e71e9f20229563dae60ca966 Mon Sep 17 00:00:00 2001 From: Andrew <60839662+acbgbca@users.noreply.github.com> Date: Sat, 17 Feb 2024 10:06:19 +0000 Subject: [PATCH 0996/1024] Add dev container config file --- .devcontainer/devcontainer.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..986b2316 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,28 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node +{ + "name": "Node.js", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/javascript-node:1-18-bookworm", + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [8080], + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "npm install", + + // Configure tool-specific properties. + "customizations": { + "vscode": { + "extensions": [ + "christian-kohler.npm-intellisense" + ] + } + } + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} From 85da5f83b5b22a020527514d33d43e1e965c25be Mon Sep 17 00:00:00 2001 From: Matt C Date: Sat, 17 Feb 2024 10:06:19 +0000 Subject: [PATCH 0997/1024] Add gh-cli, add extensions, node_modules as a volume --- .devcontainer/devcontainer.json | 21 +++++++++++++++++---- .gitattributes | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 .gitattributes diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 986b2316..92ebd43c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,24 +1,37 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node { - "name": "Node.js", + "name": "CyberChef", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile "image": "mcr.microsoft.com/devcontainers/javascript-node:1-18-bookworm", // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, + "features": { + "ghcr.io/devcontainers/features/github-cli": "latest" + }, // Use 'forwardPorts' to make a list of ports inside the container available locally. "forwardPorts": [8080], // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "npm install", + "postCreateCommand": { + "npm": "bash -c \"sudo chown node node_modules && npm install\"" + }, + + "containerEnv": { + "DISPLAY": ":99" + }, + + "mounts": [ + "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume" + ], // Configure tool-specific properties. "customizations": { "vscode": { "extensions": [ - "christian-kohler.npm-intellisense" + "dbaeumer.vscode-eslint", + "GitHub.vscode-github-actions" ] } } diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6313b56c --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf From bebb216df2cfc6f33e97f275916408c3a34d2a7d Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:14:23 +0000 Subject: [PATCH 0998/1024] Bump CyberChef to v10.8.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29717727..82c74477 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.8.0", + "version": "10.8.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.8.0", + "version": "10.8.2", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index e0c3b136..b0e37f7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.8.0", + "version": "10.8.2", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From cd0aee7626a1767db60793041e46410747b15049 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:22:19 +0000 Subject: [PATCH 0999/1024] Remove deprecated code --- src/core/operations/FernetDecrypt.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/operations/FernetDecrypt.mjs b/src/core/operations/FernetDecrypt.mjs index d68593d8..89edaebb 100644 --- a/src/core/operations/FernetDecrypt.mjs +++ b/src/core/operations/FernetDecrypt.mjs @@ -46,7 +46,6 @@ class FernetDecrypt extends Operation { */ run(input, args) { const [secretInput] = args; - // const fernet = require("fernet"); try { const secret = new fernet.Secret(secretInput); const token = new fernet.Token({ From 299a3c48a1640607eacc4c4ab423061c0dfe4995 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:26:32 +0000 Subject: [PATCH 1000/1024] Update imports from Fernet module --- src/core/operations/FernetDecrypt.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/FernetDecrypt.mjs b/src/core/operations/FernetDecrypt.mjs index 89edaebb..78d6efb9 100644 --- a/src/core/operations/FernetDecrypt.mjs +++ b/src/core/operations/FernetDecrypt.mjs @@ -4,8 +4,8 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; -import OperationError from "../errors/OperationError"; +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; import fernet from "fernet"; /** From b4c14219b68051fb24a324b227b3dca6f4e84fb3 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:42:30 +0000 Subject: [PATCH 1001/1024] Fix encrypt --- src/core/operations/FernetEncrypt.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/operations/FernetEncrypt.mjs b/src/core/operations/FernetEncrypt.mjs index 2f98449f..84778486 100644 --- a/src/core/operations/FernetEncrypt.mjs +++ b/src/core/operations/FernetEncrypt.mjs @@ -4,8 +4,8 @@ * @license Apache-2.0 */ -import Operation from "../Operation"; -import OperationError from "../errors/OperationError"; +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; import fernet from "fernet"; /** From 210186e75405ce275b6b0e99a28b866451bd58d4 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Thu, 22 Feb 2024 01:00:11 +0000 Subject: [PATCH 1002/1024] Fix tests --- tests/node/tests/nodeApi.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/node/tests/nodeApi.mjs b/tests/node/tests/nodeApi.mjs index 0d4a04a4..8992ed36 100644 --- a/tests/node/tests/nodeApi.mjs +++ b/tests/node/tests/nodeApi.mjs @@ -136,7 +136,7 @@ TestRegister.addApiTests([ it("chef.help: returns multiple results", () => { const result = chef.help("base 64"); - assert.strictEqual(result.length, 11); + assert.strictEqual(result.length, 13); }), it("chef.help: looks in description for matches too", () => { From 9068b6c17afef72a3c19655dc5400028f13ce30d Mon Sep 17 00:00:00 2001 From: Joost Rijneveld Date: Sun, 10 Mar 2024 16:42:33 +0100 Subject: [PATCH 1003/1024] Add Salsa20 and XSalsa20 operation --- src/core/config/Categories.json | 2 + src/core/lib/Salsa20.mjs | 144 +++++++++++++++++++++++++ src/core/operations/Salsa20.mjs | 154 +++++++++++++++++++++++++++ src/core/operations/XSalsa20.mjs | 156 ++++++++++++++++++++++++++++ tests/operations/index.mjs | 2 + tests/operations/tests/Salsa20.mjs | 76 ++++++++++++++ tests/operations/tests/XSalsa20.mjs | 61 +++++++++++ 7 files changed, 595 insertions(+) create mode 100644 src/core/lib/Salsa20.mjs create mode 100644 src/core/operations/Salsa20.mjs create mode 100644 src/core/operations/XSalsa20.mjs create mode 100644 tests/operations/tests/Salsa20.mjs create mode 100644 tests/operations/tests/XSalsa20.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 8e300c76..fd34d5ef 100644 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -95,6 +95,8 @@ "RC4", "RC4 Drop", "ChaCha", + "Salsa20", + "XSalsa20", "Rabbit", "SM4 Encrypt", "SM4 Decrypt", diff --git a/src/core/lib/Salsa20.mjs b/src/core/lib/Salsa20.mjs new file mode 100644 index 00000000..d72831bf --- /dev/null +++ b/src/core/lib/Salsa20.mjs @@ -0,0 +1,144 @@ +/** + * @author joostrijneveld [joost@joostrijneveld.nl] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Utils from "../Utils.mjs"; + +/** + * Computes the Salsa20 permute function + * + * @param {byteArray} x + * @param {integer} rounds + */ +function salsa20Permute(x, rounds) { + /** + * Macro to compute a 32-bit rotate-left operation + * + * @param {integer} x + * @param {integer} n + * @returns {integer} + */ + function ROL32(x, n) { + return ((x << n) & 0xFFFFFFFF) | (x >>> (32 - n)); + } + + /** + * Macro to compute a single Salsa20 quarterround operation + * + * @param {integer} x + * @param {integer} a + * @param {integer} b + * @param {integer} c + * @param {integer} d + * @returns {integer} + */ + function quarterround(x, a, b, c, d) { + x[b] ^= ROL32((x[a] + x[d]) & 0xFFFFFFFF, 7); + x[c] ^= ROL32((x[b] + x[a]) & 0xFFFFFFFF, 9); + x[d] ^= ROL32((x[c] + x[b]) & 0xFFFFFFFF, 13); + x[a] ^= ROL32((x[d] + x[c]) & 0xFFFFFFFF, 18); + } + + for (let i = 0; i < rounds / 2; i++) { + quarterround(x, 0, 4, 8, 12); + quarterround(x, 5, 9, 13, 1); + quarterround(x, 10, 14, 2, 6); + quarterround(x, 15, 3, 7, 11); + quarterround(x, 0, 1, 2, 3); + quarterround(x, 5, 6, 7, 4); + quarterround(x, 10, 11, 8, 9); + quarterround(x, 15, 12, 13, 14); + } +} + +/** + * Computes the Salsa20 block function + * + * @param {byteArray} key + * @param {byteArray} nonce + * @param {byteArray} counter + * @param {integer} rounds + * @returns {byteArray} + */ +export function salsa20Block(key, nonce, counter, rounds) { + const tau = "expand 16-byte k"; + const sigma = "expand 32-byte k"; + let state, c; + if (key.length === 16) { + c = Utils.strToByteArray(tau); + key = key.concat(key); + } else { + c = Utils.strToByteArray(sigma); + } + + state = c.slice(0, 4); + state = state.concat(key.slice(0, 16)); + state = state.concat(c.slice(4, 8)); + state = state.concat(nonce); + state = state.concat(counter); + state = state.concat(c.slice(8, 12)); + state = state.concat(key.slice(16, 32)); + state = state.concat(c.slice(12, 16)); + + const x = Array(); + for (let i = 0; i < 64; i += 4) { + x.push(Utils.byteArrayToInt(state.slice(i, i + 4), "little")); + } + const a = [...x]; + + salsa20Permute(x, rounds); + + for (let i = 0; i < 16; i++) { + x[i] = (x[i] + a[i]) & 0xFFFFFFFF; + } + + let output = Array(); + for (let i = 0; i < 16; i++) { + output = output.concat(Utils.intToByteArray(x[i], 4, "little")); + } + return output; +} + +/** + * Computes the hSalsa20 function + * + * @param {byteArray} key + * @param {byteArray} nonce + * @param {integer} rounds + * @returns {byteArray} + */ +export function hsalsa20(key, nonce, rounds) { + const tau = "expand 16-byte k"; + const sigma = "expand 32-byte k"; + let state, c; + if (key.length === 16) { + c = Utils.strToByteArray(tau); + key = key.concat(key); + } else { + c = Utils.strToByteArray(sigma); + } + + state = c.slice(0, 4); + state = state.concat(key.slice(0, 16)); + state = state.concat(c.slice(4, 8)); + state = state.concat(nonce); + state = state.concat(c.slice(8, 12)); + state = state.concat(key.slice(16, 32)); + state = state.concat(c.slice(12, 16)); + + const x = Array(); + for (let i = 0; i < 64; i += 4) { + x.push(Utils.byteArrayToInt(state.slice(i, i + 4), "little")); + } + + salsa20Permute(x, rounds); + + let output = Array(); + const idx = [0, 5, 10, 15, 6, 7, 8, 9]; + for (let i = 0; i < 8; i++) { + output = output.concat(Utils.intToByteArray(x[idx[i]], 4, "little")); + } + return output; +} diff --git a/src/core/operations/Salsa20.mjs b/src/core/operations/Salsa20.mjs new file mode 100644 index 00000000..a95dd5d3 --- /dev/null +++ b/src/core/operations/Salsa20.mjs @@ -0,0 +1,154 @@ +/** + * @author joostrijneveld [joost@joostrijneveld.nl] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import Utils from "../Utils.mjs"; +import { toHex } from "../lib/Hex.mjs"; +import { salsa20Block } from "../lib/Salsa20.mjs"; + +/** + * Salsa20 operation + */ +class Salsa20 extends Operation { + + /** + * Salsa20 constructor + */ + constructor() { + super(); + + this.name = "Salsa20"; + this.module = "Default"; + this.description = "Salsa20 is a stream cipher designed by Daniel J. Bernstein and submitted to the eSTREAM project; Salsa20/8 and Salsa20/12 are round-reduced variants. It is closely related to the ChaCha stream cipher.

        Key: Salsa20 uses a key of 16 or 32 bytes (128 or 256 bits).

        Nonce: Salsa20 uses a nonce of 8 bytes (64 bits).

        Counter: Salsa uses a counter of 8 bytes (64 bits). The counter starts at zero at the start of the keystream, and is incremented at every 64 bytes."; + this.infoURL = "https://wikipedia.org/wiki/Salsa20"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + "name": "Key", + "type": "toggleString", + "value": "", + "toggleValues": ["Hex", "UTF8", "Latin1", "Base64"] + }, + { + "name": "Nonce", + "type": "toggleString", + "value": "", + "toggleValues": ["Hex", "UTF8", "Latin1", "Base64", "Integer"] + }, + { + "name": "Counter", + "type": "number", + "value": 0, + "min": 0 + }, + { + "name": "Rounds", + "type": "option", + "value": ["20", "12", "8"] + }, + { + "name": "Input", + "type": "option", + "value": ["Hex", "Raw"] + }, + { + "name": "Output", + "type": "option", + "value": ["Raw", "Hex"] + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const key = Utils.convertToByteArray(args[0].string, args[0].option), + nonceType = args[1].option, + rounds = parseInt(args[3], 10), + inputType = args[4], + outputType = args[5]; + + if (key.length !== 16 && key.length !== 32) { + throw new OperationError(`Invalid key length: ${key.length} bytes. + +Salsa20 uses a key of 16 or 32 bytes (128 or 256 bits).`); + } + + let counter, nonce; + if (nonceType === "Integer") { + nonce = Utils.intToByteArray(parseInt(args[1].string, 10), 8, "little"); + } else { + nonce = Utils.convertToByteArray(args[1].string, args[1].option); + if (!(nonce.length === 8)) { + throw new OperationError(`Invalid nonce length: ${nonce.length} bytes. + +Salsa20 uses a nonce of 8 bytes (64 bits).`); + } + } + counter = Utils.intToByteArray(args[2], 8, "little"); + + const output = []; + input = Utils.convertToByteArray(input, inputType); + + let counterAsInt = Utils.byteArrayToInt(counter, "little"); + for (let i = 0; i < input.length; i += 64) { + counter = Utils.intToByteArray(counterAsInt, 8, "little"); + const stream = salsa20Block(key, nonce, counter, rounds); + for (let j = 0; j < 64 && i + j < input.length; j++) { + output.push(input[i + j] ^ stream[j]); + } + counterAsInt++; + } + + if (outputType === "Hex") { + return toHex(output); + } else { + return Utils.arrayBufferToStr(Uint8Array.from(output).buffer); + } + } + + /** + * Highlight Salsa20 + * + * @param {Object[]} pos + * @param {number} pos[].start + * @param {number} pos[].end + * @param {Object[]} args + * @returns {Object[]} pos + */ + highlight(pos, args) { + const inputType = args[4], + outputType = args[5]; + if (inputType === "Raw" && outputType === "Raw") { + return pos; + } + } + + /** + * Highlight Salsa20 in reverse + * + * @param {Object[]} pos + * @param {number} pos[].start + * @param {number} pos[].end + * @param {Object[]} args + * @returns {Object[]} pos + */ + highlightReverse(pos, args) { + const inputType = args[4], + outputType = args[5]; + if (inputType === "Raw" && outputType === "Raw") { + return pos; + } + } + +} + +export default Salsa20; diff --git a/src/core/operations/XSalsa20.mjs b/src/core/operations/XSalsa20.mjs new file mode 100644 index 00000000..32e8a0ba --- /dev/null +++ b/src/core/operations/XSalsa20.mjs @@ -0,0 +1,156 @@ +/** + * @author joostrijneveld [joost@joostrijneveld.nl] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import Utils from "../Utils.mjs"; +import { toHex } from "../lib/Hex.mjs"; +import { salsa20Block, hsalsa20 } from "../lib/Salsa20.mjs"; + +/** + * XSalsa20 operation + */ +class XSalsa20 extends Operation { + + /** + * XSalsa20 constructor + */ + constructor() { + super(); + + this.name = "XSalsa20"; + this.module = "Default"; + this.description = "XSalsa20 is a variant of the Salsa20 stream cipher designed by Daniel J. Bernstein; XSalsa uses longer nonces.

        Key: XSalsa20 uses a key of 16 or 32 bytes (128 or 256 bits).

        Nonce: XSalsa20 uses a nonce of 24 bytes (192 bits).

        Counter: XSalsa uses a counter of 8 bytes (64 bits). The counter starts at zero at the start of the keystream, and is incremented at every 64 bytes."; + this.infoURL = "https://en.wikipedia.org/wiki/Salsa20#XSalsa20_with_192-bit_nonce"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + "name": "Key", + "type": "toggleString", + "value": "", + "toggleValues": ["Hex", "UTF8", "Latin1", "Base64"] + }, + { + "name": "Nonce", + "type": "toggleString", + "value": "", + "toggleValues": ["Hex", "UTF8", "Latin1", "Base64", "Integer"] + }, + { + "name": "Counter", + "type": "number", + "value": 0, + "min": 0 + }, + { + "name": "Rounds", + "type": "option", + "value": ["20", "12", "8"] + }, + { + "name": "Input", + "type": "option", + "value": ["Hex", "Raw"] + }, + { + "name": "Output", + "type": "option", + "value": ["Raw", "Hex"] + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const key = Utils.convertToByteArray(args[0].string, args[0].option), + nonceType = args[1].option, + rounds = parseInt(args[3], 10), + inputType = args[4], + outputType = args[5]; + + if (key.length !== 16 && key.length !== 32) { + throw new OperationError(`Invalid key length: ${key.length} bytes. + +XSalsa20 uses a key of 16 or 32 bytes (128 or 256 bits).`); + } + + let counter, nonce; + if (nonceType === "Integer") { + nonce = Utils.intToByteArray(parseInt(args[1].string, 10), 8, "little"); + } else { + nonce = Utils.convertToByteArray(args[1].string, args[1].option); + if (!(nonce.length === 24)) { + throw new OperationError(`Invalid nonce length: ${nonce.length} bytes. + +XSalsa20 uses a nonce of 24 bytes (192 bits).`); + } + } + counter = Utils.intToByteArray(args[2], 8, "little"); + + const xsalsaKey = hsalsa20(key, nonce.slice(0, 16), rounds); + + const output = []; + input = Utils.convertToByteArray(input, inputType); + + let counterAsInt = Utils.byteArrayToInt(counter, "little"); + for (let i = 0; i < input.length; i += 64) { + counter = Utils.intToByteArray(counterAsInt, 8, "little"); + const stream = salsa20Block(xsalsaKey, nonce.slice(16, 24), counter, rounds); + for (let j = 0; j < 64 && i + j < input.length; j++) { + output.push(input[i + j] ^ stream[j]); + } + counterAsInt++; + } + + if (outputType === "Hex") { + return toHex(output); + } else { + return Utils.arrayBufferToStr(Uint8Array.from(output).buffer); + } + } + + /** + * Highlight XSalsa20 + * + * @param {Object[]} pos + * @param {number} pos[].start + * @param {number} pos[].end + * @param {Object[]} args + * @returns {Object[]} pos + */ + highlight(pos, args) { + const inputType = args[4], + outputType = args[5]; + if (inputType === "Raw" && outputType === "Raw") { + return pos; + } + } + + /** + * Highlight XSalsa20 in reverse + * + * @param {Object[]} pos + * @param {number} pos[].start + * @param {number} pos[].end + * @param {Object[]} args + * @returns {Object[]} pos + */ + highlightReverse(pos, args) { + const inputType = args[4], + outputType = args[5]; + if (inputType === "Raw" && outputType === "Raw") { + return pos; + } + } + +} + +export default XSalsa20; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index e85b6ad3..c03bf451 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -124,6 +124,8 @@ import "./tests/Register.mjs"; import "./tests/RisonEncodeDecode.mjs"; import "./tests/Rotate.mjs"; import "./tests/RSA.mjs"; +import "./tests/Salsa20.mjs"; +import "./tests/XSalsa20.mjs"; import "./tests/SeqUtils.mjs"; import "./tests/SetDifference.mjs"; import "./tests/SetIntersection.mjs"; diff --git a/tests/operations/tests/Salsa20.mjs b/tests/operations/tests/Salsa20.mjs new file mode 100644 index 00000000..2b9cbe29 --- /dev/null +++ b/tests/operations/tests/Salsa20.mjs @@ -0,0 +1,76 @@ +/** + * Salsa20 tests. + * + * @author joostrijneveld [joost@joostrijneveld.nl] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Salsa20: no key", + input: "", + expectedOutput: `Invalid key length: 0 bytes. + +Salsa20 uses a key of 16 or 32 bytes (128 or 256 bits).`, + recipeConfig: [ + { + "op": "Salsa20", + "args": [ + {"option": "Hex", "string": ""}, + {"option": "Hex", "string": ""}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, + { + name: "Salsa20: no nonce", + input: "", + expectedOutput: `Invalid nonce length: 0 bytes. + +Salsa20 uses a nonce of 8 bytes (64 bits).`, + recipeConfig: [ + { + "op": "Salsa20", + "args": [ + {"option": "Hex", "string": "00000000000000000000000000000000"}, + {"option": "Hex", "string": ""}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, + { + name: "Salsa20: ECRYPT Set 1 vector# 0", + input: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", + expectedOutput: "e3 be 8f dd 8b ec a2 e3 ea 8e f9 47 5b 29 a6 e7 00 39 51 e1 09 7a 5c 38 d2 3b 7a 5f ad 9f 68 44 b2 2c 97 55 9e 27 23 c7 cb bd 3f e4 fc 8d 9a 07 44 65 2a 83 e7 2a 9c 46 18 76 af 4d 7e f1 a1 17 8d a2 b7 4e ef 1b 62 83 e7 e2 01 66 ab ca e5 38 e9 71 6e 46 69 e2 81 6b 6b 20 c5 c3 56 80 20 01 cc 14 03 a9 a1 17 d1 2a 26 69 f4 56 36 6d 6e bb 0f 12 46 f1 26 51 50 f7 93 cd b4 b2 53 e3 48 ae 20 3d 89 bc 02 5e 80 2a 7e 0e 00 62 1d 70 aa 36 b7 e0 7c b1 e7 d5 b3 8d 5e 22 2b 8b 0e 4b 84 07 01 42 b1 e2 95 04 76 7d 76 82 48 50 32 0b 53 68 12 9f dd 74 e8 61 b4 98 e3 be 8d 16 f2 d7 d1 69 57 be 81 f4 7b 17 d9 ae 7c 4f f1 54 29 a7 3e 10 ac f2 50 ed 3a 90 a9 3c 71 13 08 a7 4c 62 16 a9 ed 84 cd 12 6d a7 f2 8e 8a bf 8b b6 35 17 e1 ca 98 e7 12 f4 fb 2e 1a 6a ed 9f dc 73 29 1f aa 17 95 82 11 c4 ba 2e bd 58 38 c6 35 ed b8 1f 51 3a 91 a2 94 e1 94 f1 c0 39 ae ec 65 7d ce 40 aa 7e 7c 0a f5 7c ac ef a4 0c 9f 14 b7 1a 4b 34 56 a6 3e 16 2e c7 d8 d1 0b 8f fb 18 10 d7 10 01 b6 18 2f 9f 73 da 53 b8 54 05 c1 1f 7b 2d 89 0f a8 ae 0c 7f 2e 92 6d 8a 98 c7 ec 4e 91 b6 51 20 e9 88 34 96 31 a7 00 c6 fa ce c3 47 1c b0 41 36 56 e7 5e 30 94 56 58 40 84 d7 e1 2c 5b 43 a4 1c 43 ed 9a 04 8a bd 9b 88 0d a6 5f 6a 66 5a 20 fe 7b 77 cd 29 2f e6 2c ae 64 4b 7f 7d f6 9f 32 bd b3 31 90 3e 65 05 ce 44 fd c2 93 92 0c 6a 9e c7 05 7e 23 df 7d ad 29 8f 82 dd f4 ef b7 fd c7 bf c6 22 69 6a fc fd 0c dd cc 83 c7 e7 7f 11 a6 49 d7 9a cd c3 35 4e 96 35 ff 13 7e 92 99 33 a0 bd 6f 53 77 ef a1 05 a3 a4 26 6b 7c 0d 08 9d 08 f1 e8 55 cc 32 b1 5b 93 78 4a 36 e5 6a 76 cc 64 bc 84 77", + recipeConfig: [ + { + "op": "Salsa20", + "args": [ + {"option": "Hex", "string": "80:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"}, + {"option": "Hex", "string": "00:00:00:00:00:00:00:00"}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, + { + name: "Salsa20: ECRYPT Set 6 vector# 3", + input: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", + expectedOutput: "71 da ee 51 42 d0 72 8b 41 b6 59 79 33 eb f4 67 e4 32 79 e3 09 78 67 70 78 94 16 02 62 9c bf 68 b7 3d 6b d2 c9 5f 11 8d 2b 3e 6e c9 55 da bb 6d c6 1c 41 43 bc 9a 9b 32 b9 9d be 68 66 16 6d c0 86 31 b7 d6 55 30 50 30 3d 72 52 c2 64 d3 a9 0d 26 c8 53 63 48 13 e0 9a d7 54 5a 6c e7 e8 4a 5d fc 75 ec 43 43 12 07 d5 31 99 70 b0 fa ad b0 e1 51 06 25 bb 54 37 2c 85 15 e2 8e 2a cc f0 a9 93 0a d1 5f 43 18 74 92 3d 2a 59 e2 0d 9f 2a 53 67 db a6 05 15 64 f1 50 28 7d eb b1 db 53 6f f9 b0 9a d9 81 f2 5e 50 10 d8 5d 76 ee 0c 30 5f 75 5b 25 e6 f0 93 41 e0 81 2f 95 c9 4f 42 ee ad 34 6e 81 f3 9c 58 c5 fa a2 c8 89 53 dc 0c ac 90 46 9d b2 06 3c b5 cd b2 2c 9e ae 22 af bf 05 06 fc a4 1d c7 10 b8 46 fb df e3 c4 68 83 dd 11 8f 3a 5e 8b 11 b6 af d9 e7 16 80 d8 66 65 57 30 1a 2d aa fb 94 96 c5 59 78 4d 35 a0 35 36 08 85 f9 b1 7b d7 19 19 77 de ea 93 2b 98 1e bd b2 90 57 ae 3c 92 cf ef f5 e6 c5 d0 cb 62 f2 09 ce 34 2d 4e 35 c6 96 46 cc d1 4e 53 35 0e 48 8b b3 10 a3 2f 8b 02 48 e7 0a cc 5b 47 3d f5 37 ce d3 f8 1a 01 4d 40 83 93 2b ed d6 2e d0 e4 47 b6 76 6c d2 60 4b 70 6e 9b 34 6c 44 68 be b4 6a 34 ec f1 61 0e bd 38 33 1d 52 bf 33 34 6a fe c1 5e ef b2 a7 69 9e 87 59 db 5a 1f 63 6a 48 a0 39 68 8e 39 de 34 d9 95 df 9f 27 ed 9e dc 8d d7 95 e3 9e 53 d9 d9 25 b2 78 01 05 65 ff 66 52 69 04 2f 05 09 6d 94 da 34 33 d9 57 ec 13 d2 fd 82 a0 06 62 83 d0 d1 ee b8 1b f0 ef 13 3b 7f d9 02 48 b8 ff b4 99 b2 41 4c d4 fa 00 30 93 ff 08 64 57 5a 43 74 9b f5 96 02 f2 6c 71 7f a9 6b 1d 05 76 97 db 08 eb c3 fa 66 4a 01 6a 67 dc ef 88 07 57 7c c3 a0 93 85 d3", + recipeConfig: [ + { + "op": "Salsa20", + "args": [ + {"option": "Hex", "string": "0F:62:B5:08:5B:AE:01:54:A7:FA:4D:A0:F3:46:99:EC"}, + {"option": "Hex", "string": "28:8F:F6:5D:C4:2B:92:F9"}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, +]); diff --git a/tests/operations/tests/XSalsa20.mjs b/tests/operations/tests/XSalsa20.mjs new file mode 100644 index 00000000..0d26af97 --- /dev/null +++ b/tests/operations/tests/XSalsa20.mjs @@ -0,0 +1,61 @@ +/** + * XSalsa20 tests. + * + * @author joostrijneveld [joost@joostrijneveld.nl] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "XSalsa20: no key", + input: "", + expectedOutput: `Invalid key length: 0 bytes. + +XSalsa20 uses a key of 16 or 32 bytes (128 or 256 bits).`, + recipeConfig: [ + { + "op": "XSalsa20", + "args": [ + {"option": "Hex", "string": ""}, + {"option": "Hex", "string": ""}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, + { + name: "XSalsa20: no nonce", + input: "", + expectedOutput: `Invalid nonce length: 0 bytes. + +XSalsa20 uses a nonce of 24 bytes (192 bits).`, + recipeConfig: [ + { + "op": "XSalsa20", + "args": [ + {"option": "Hex", "string": "00000000000000000000000000000000"}, + {"option": "Hex", "string": ""}, + 0, "20", "Hex", "Hex", + ] + } + ], + }, + { + name: "XSalsa20 custom vector", + input: "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", + expectedOutput: "7c b6 60 af dd 9e c6 46 8f 57 dd 6d 24 33 f9 34 28 fd 82 cd 73 86 c5 47 1a 24 d8 ad 2a 52 5b 6e 5e ff 38 4f c7 ca a2 10 bb 3c 8f 3e 68 8f 4a 97 52 a5 46 df 8c 25 3f ef 17 a2 67 94 55 c7 a1 e1 83 db f5 d5 45 b0 f5 02 b9 8d e0 99 7a 66 ab 43 23 41 68 9f f3 97 dc 4f bc 1f 27 bd 1a 61 97 f5 dc 80 ff 19 05 16 c9 ed 14 f2 81 d1 ca 73 88 82 f6 d3 d2 fb 92 1e 2e f8 99 38 9e 0a 22 3b e7 ae 81 5a 04 86 5f 82 52 68 2f 6a d1 4f 98 ff 5f 08 23 cc 22 9d d2 22 9e 69 9d c2 1a 81 7d c9 54 bb 9b c9 0d ec 3b 9b d3 bf 20 9b 82 da f7 89 34 8a 5e 14 ec 54 2b 6d ee 8b 60 1e 7e 6d e3 c2 8a 2d 57 b6 25 e7 ea b3 43 d8 eb 20 85 b6 f6 82 09 58 99 35 20 44 22 60 60 61 d2 8d e9 8b ea 58 af bf ba ad 70 03 98 19 a0 c3 9a a8 63 94 47 5c d0 61 94 b0 17 ab c4 bb 28 b7 56 6d 3c 66 1c 76 f4 8a d3 a3 a2 9e d3 36 df 1f c6 8b 4f 44 2f 06 a3 58 0b ae c8 06 e2 e6 5d 39 ab 18 28 fe 80 18 12 69 2c 60 34 b5 0b f5 f3 3c 51 fc 0c fb 43 82 1e 3e 92 d6 b8 06 cf 00 16 e3 49 a0 34 83 20 f9 b0 53 7e ad ac 4a c1 36 5f cc fb be e2 ba 5a ad 1d 29 74 07 19 34 61 0e 9d ce 84 60 24 6a e6 8d ed 50 e0 20 44 26 d8 76 6d f2 da 4b 12 72 5a 85 c2 b1 07 04 f5 10 2e 3c 67 1c 5a fc 5b 46 0e 4d fb 39 b6 10 73 22 47 84 10 93 df 5f c8 92 7e 87 c3 0d 24 3a 48 b2 ad c2 56 3d a2 22 e9 02 9c 58 64 c6 d5 a5 f8 c6 54 99 1c 0f 6b f3 db ed 81 16 85 28 17 b0 eb 11 c7 05 9f f9 d8 fc 4a 1c 36 db 16 fd 38 d8 32 34 5b 8c 80 c6 51 21 1d 91 01 c5 8a 60 ad a4 39 33 d5 32 9a c1 f5 b2 ab 20 46 75 db 63 e0 bd d2 97 c0 e9 fc 1c d9 17 4a d1 3a db ea c2 8c 46 22 21 c3 5a bf 6c 1e cf 28 9c 8c 2f b2 0f", + recipeConfig: [ + { + "op": "XSalsa20", + "args": [ + {"option": "Hex", "string": "00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F:10:11:12:13:14:15:16:17:18:19:1A:1B:1C:1D:1E:1F"}, + {"option": "Hex", "string": "00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F:10:11:12:13:14:15:16:17"}, + 0, "20", "Hex", "Hex", + ] + } + ], + } +]); From e1c73a64ad9dde36bde56a64bbfb61855e61128a Mon Sep 17 00:00:00 2001 From: Chris White Date: Wed, 13 Mar 2024 09:51:22 -0700 Subject: [PATCH 1004/1024] Updated xmldom package to new namespace for vuln remediation --- package-lock.json | 17 +++++++++-------- package.json | 2 +- src/core/operations/CSSSelector.mjs | 2 +- src/core/operations/XPathExpression.mjs | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e6671a5..3f32cf86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@babel/polyfill": "^7.12.1", "@blu3r4y/lzma": "^2.3.3", "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", + "@xmldom/xmldom": "^0.8.0", "argon2-browser": "^1.18.0", "arrive": "^2.4.1", "avsc": "^5.7.7", @@ -92,7 +93,6 @@ "unorm": "^1.6.0", "utf8": "^3.0.0", "vkbeautify": "^0.99.3", - "xmldom": "^0.6.0", "xpath": "0.0.34", "xregexp": "^5.1.1", "zlibjs": "^0.3.1" @@ -3174,6 +3174,14 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -14835,13 +14843,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xmldom": { - "version": "0.6.0", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/xpath": { "version": "0.0.34", "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", diff --git a/package.json b/package.json index 334d88b5..cd100eda 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ "unorm": "^1.6.0", "utf8": "^3.0.0", "vkbeautify": "^0.99.3", - "xmldom": "^0.6.0", + "@xmldom/xmldom": "^0.8.0", "xpath": "0.0.34", "xregexp": "^5.1.1", "zlibjs": "^0.3.1" diff --git a/src/core/operations/CSSSelector.mjs b/src/core/operations/CSSSelector.mjs index d6b8da11..639726c4 100644 --- a/src/core/operations/CSSSelector.mjs +++ b/src/core/operations/CSSSelector.mjs @@ -6,7 +6,7 @@ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; -import xmldom from "xmldom"; +import xmldom from "@xmldom/xmldom"; import nwmatcher from "nwmatcher"; /** diff --git a/src/core/operations/XPathExpression.mjs b/src/core/operations/XPathExpression.mjs index 7bfe3ee1..c850104b 100644 --- a/src/core/operations/XPathExpression.mjs +++ b/src/core/operations/XPathExpression.mjs @@ -6,7 +6,7 @@ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; -import xmldom from "xmldom"; +import xmldom from "@xmldom/xmldom"; import xpath from "xpath"; /** From ef5ff5bec656044700977d7625d05d40f2adbc9e Mon Sep 17 00:00:00 2001 From: Chris White Date: Wed, 13 Mar 2024 10:26:23 -0700 Subject: [PATCH 1005/1024] Updated jsonwebtoken dependency to 9+ updated JWTSign operation for backwards compatibility with insecure keys and invalid asym key types --- package-lock.json | 44 ++++++++++++++++++++++++--------- package.json | 2 +- src/core/operations/JWTSign.mjs | 7 +++++- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e6671a5..7a69fc4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "jsesc": "^3.0.2", "json5": "^2.2.3", "jsonpath-plus": "^8.0.0", - "jsonwebtoken": "8.5.1", + "jsonwebtoken": "^9.0.0", "jsqr": "^1.4.0", "jsrsasign": "^11.1.0", "kbpgp": "2.1.15", @@ -9612,9 +9612,9 @@ } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -9625,21 +9625,43 @@ "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/jsonwebtoken/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/jsqr": { "version": "1.4.0", "license": "Apache-2.0" diff --git a/package.json b/package.json index 334d88b5..5597afe4 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "jsesc": "^3.0.2", "json5": "^2.2.3", "jsonpath-plus": "^8.0.0", - "jsonwebtoken": "8.5.1", + "jsonwebtoken": "^9.0.0", "jsqr": "^1.4.0", "jsrsasign": "^11.1.0", "kbpgp": "2.1.15", diff --git a/src/core/operations/JWTSign.mjs b/src/core/operations/JWTSign.mjs index af46908e..e4756c2b 100644 --- a/src/core/operations/JWTSign.mjs +++ b/src/core/operations/JWTSign.mjs @@ -50,7 +50,12 @@ class JWTSign extends Operation { try { return jwt.sign(input, key, { - algorithm: algorithm === "None" ? "none" : algorithm + algorithm: algorithm === "None" ? "none" : algorithm, + + // To utilize jsonwebtoken 9+ library and maintain backwards compatibility for regression tests + // This could be turned into operation args in a future PR + allowInsecureKeySizes: true, + allowInvalidAsymmetricKeyTypes: true }); } catch (err) { throw new OperationError(`Error: Have you entered the key correctly? The key should be either the secret for HMAC algorithms or the PEM-encoded private key for RSA and ECDSA. From 16dfb3fac6cbce710c0c56a043be4bc7ebd65593 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 21 Jul 2023 17:30:39 +0100 Subject: [PATCH 1006/1024] Automatically detect EOL from paste events and output setting --- src/web/utils/editorUtils.mjs | 39 +++++++++++++ src/web/utils/statusBar.mjs | 39 ++++--------- src/web/waiters/ControlsWaiter.mjs | 9 +-- src/web/waiters/InputWaiter.mjs | 88 ++++++++++++++++++++++++++++-- src/web/waiters/OutputWaiter.mjs | 76 +++++++++++++++++++++++++- tests/browser/00_nightwatch.js | 1 + tests/browser/01_io.js | 6 +- 7 files changed, 215 insertions(+), 43 deletions(-) diff --git a/src/web/utils/editorUtils.mjs b/src/web/utils/editorUtils.mjs index e02e692b..fe1b6749 100644 --- a/src/web/utils/editorUtils.mjs +++ b/src/web/utils/editorUtils.mjs @@ -95,3 +95,42 @@ export function escapeControlChars(str, preserveWs=false, lineBreak="\n") { return n.outerHTML; }); } + +/** + * Convert and EOL sequence to its name + */ +export const eolSeqToCode = { + "\u000a": "LF", + "\u000b": "VT", + "\u000c": "FF", + "\u000d": "CR", + "\u000d\u000a": "CRLF", + "\u0085": "NEL", + "\u2028": "LS", + "\u2029": "PS" +}; + +/** + * Convert an EOL name to its sequence + */ +export const eolCodeToSeq = { + "LF": "\u000a", + "VT": "\u000b", + "FF": "\u000c", + "CR": "\u000d", + "CRLF": "\u000d\u000a", + "NEL": "\u0085", + "LS": "\u2028", + "PS": "\u2029" +}; + +export const eolCodeToName = { + "LF": "Line Feed", + "VT": "Vertical Tab", + "FF": "Form Feed", + "CR": "Carriage Return", + "CRLF": "Carriage Return + Line Feed", + "NEL": "Next Line", + "LS": "Line Separator", + "PS": "Paragraph Separator" +}; diff --git a/src/web/utils/statusBar.mjs b/src/web/utils/statusBar.mjs index 6469379a..69c4dd51 100644 --- a/src/web/utils/statusBar.mjs +++ b/src/web/utils/statusBar.mjs @@ -6,6 +6,7 @@ import {showPanel} from "@codemirror/view"; import {CHR_ENC_SIMPLE_LOOKUP, CHR_ENC_SIMPLE_REVERSE_LOOKUP} from "../../core/lib/ChrEnc.mjs"; +import { eolCodeToName, eolSeqToCode } from "./editorUtils.mjs"; /** * A Status bar extension for CodeMirror @@ -92,22 +93,12 @@ class StatusBarPanel { // preventDefault is required to stop the URL being modified and popState being triggered e.preventDefault(); - const eolLookup = { - "LF": "\u000a", - "VT": "\u000b", - "FF": "\u000c", - "CR": "\u000d", - "CRLF": "\u000d\u000a", - "NEL": "\u0085", - "LS": "\u2028", - "PS": "\u2029" - }; - const eolval = eolLookup[e.target.getAttribute("data-val")]; - - if (eolval === undefined) return; + const eolCode = e.target.getAttribute("data-val"); + if (!eolCode) return; // Call relevant EOL change handler - this.eolHandler(eolval); + this.eolHandler(e.target.getAttribute("data-val"), true); + hideElement(e.target.closest(".cm-status-bar-select-content")); } @@ -223,23 +214,13 @@ class StatusBarPanel { updateEOL(state) { if (state.lineBreak === this.eolVal) return; - const eolLookup = { - "\u000a": ["LF", "Line Feed"], - "\u000b": ["VT", "Vertical Tab"], - "\u000c": ["FF", "Form Feed"], - "\u000d": ["CR", "Carriage Return"], - "\u000d\u000a": ["CRLF", "Carriage Return + Line Feed"], - "\u0085": ["NEL", "Next Line"], - "\u2028": ["LS", "Line Separator"], - "\u2029": ["PS", "Paragraph Separator"] - }; - const val = this.dom.querySelector(".eol-value"); const button = val.closest(".cm-status-bar-select-btn"); - const eolName = eolLookup[state.lineBreak]; - val.textContent = eolName[0]; - button.setAttribute("title", `End of line sequence:
        ${eolName[1]}`); - button.setAttribute("data-original-title", `End of line sequence:
        ${eolName[1]}`); + const eolCode = eolSeqToCode[state.lineBreak]; + const eolName = eolCodeToName[eolCode]; + val.textContent = eolCode; + button.setAttribute("title", `End of line sequence:
        ${eolName}`); + button.setAttribute("data-original-title", `End of line sequence:
        ${eolName}`); this.eolVal = state.lineBreak; } diff --git a/src/web/waiters/ControlsWaiter.mjs b/src/web/waiters/ControlsWaiter.mjs index 6a0ef6f2..660a7ec5 100755 --- a/src/web/waiters/ControlsWaiter.mjs +++ b/src/web/waiters/ControlsWaiter.mjs @@ -5,6 +5,7 @@ */ import Utils from "../../core/Utils.mjs"; +import { eolSeqToCode } from "../utils/editorUtils.mjs"; /** @@ -140,16 +141,16 @@ class ControlsWaiter { const inputChrEnc = this.manager.input.getChrEnc(); const outputChrEnc = this.manager.output.getChrEnc(); - const inputEOLSeq = this.manager.input.getEOLSeq(); - const outputEOLSeq = this.manager.output.getEOLSeq(); + const inputEOL = eolSeqToCode[this.manager.input.getEOLSeq()]; + const outputEOL = eolSeqToCode[this.manager.output.getEOLSeq()]; const params = [ includeRecipe ? ["recipe", recipeStr] : undefined, includeInput && input.length ? ["input", Utils.escapeHtml(input)] : undefined, inputChrEnc !== 0 ? ["ienc", inputChrEnc] : undefined, outputChrEnc !== 0 ? ["oenc", outputChrEnc] : undefined, - inputEOLSeq !== "\n" ? ["ieol", inputEOLSeq] : undefined, - outputEOLSeq !== "\n" ? ["oeol", outputEOLSeq] : undefined + inputEOL !== "LF" ? ["ieol", inputEOL] : undefined, + outputEOL !== "LF" ? ["oeol", outputEOL] : undefined ]; const hash = params diff --git a/src/web/waiters/InputWaiter.mjs b/src/web/waiters/InputWaiter.mjs index 25c1629d..ad8eb38c 100644 --- a/src/web/waiters/InputWaiter.mjs +++ b/src/web/waiters/InputWaiter.mjs @@ -42,7 +42,7 @@ import { import {statusBar} from "../utils/statusBar.mjs"; import {fileDetailsPanel} from "../utils/fileDetails.mjs"; -import {renderSpecialChar} from "../utils/editorUtils.mjs"; +import {eolCodeToSeq, eolCodeToName, renderSpecialChar} from "../utils/editorUtils.mjs"; /** @@ -62,6 +62,7 @@ class InputWaiter { this.inputTextEl = document.getElementById("input-text"); this.inputChrEnc = 0; + this.eolSetManually = false; this.initEditor(); this.inputWorker = null; @@ -92,6 +93,7 @@ class InputWaiter { fileDetailsPanel: new Compartment }; + const self = this; const initialState = EditorState.create({ doc: null, extensions: [ @@ -141,6 +143,15 @@ class InputWaiter { if (e.docChanged && !this.silentInputChange) this.inputChange(e); this.silentInputChange = false; + }), + + // Event handlers + EditorView.domEventHandlers({ + paste(event, view) { + setTimeout(() => { + self.afterPaste(event); + }); + } }) ] }); @@ -154,12 +165,35 @@ class InputWaiter { /** * Handler for EOL change events * Sets the line separator - * @param {string} eolVal + * @param {string} eol + * @param {boolean} manual - a flag for whether this was set by the user or automatically */ - eolChange(eolVal) { - const oldInputVal = this.getInput(); + eolChange(eol, manual=false) { + const eolVal = eolCodeToSeq[eol]; + if (eolVal === undefined) return; + + const eolBtn = document.querySelector("#input-text .eol-value"); + if (manual) { + this.eolSetManually = true; + eolBtn.classList.remove("font-italic"); + } else { + eolBtn.classList.add("font-italic"); + } + + if (eolVal === this.getEOLSeq()) return; + + if (!manual) { + // Pulse + eolBtn.classList.add("pulse"); + setTimeout(() => { + eolBtn.classList.remove("pulse"); + }, 2000); + // Alert + this.app.alert(`Input EOL separator has been changed to ${eolCodeToName[eol]}`, 5000); + } // Update the EOL value + const oldInputVal = this.getInput(); this.inputEditorView.dispatch({ effects: this.inputEditorConf.eol.reconfigure(EditorState.lineSeparator.of(eolVal)) }); @@ -866,6 +900,49 @@ class InputWaiter { }, delay, "inputChange", this, [e])(); } + /** + * Handler that fires just after input paste events. + * Checks whether the EOL separator or character encoding should be updated. + * + * @param {event} e + */ + afterPaste(e) { + // If EOL has been fixed, skip this. + if (this.eolSetManually) return; + + const inputText = this.getInput(); + + // Detect most likely EOL sequence + const eolCharCounts = { + "LF": inputText.count("\u000a"), + "VT": inputText.count("\u000b"), + "FF": inputText.count("\u000c"), + "CR": inputText.count("\u000d"), + "CRLF": inputText.count("\u000d\u000a"), + "NEL": inputText.count("\u0085"), + "LS": inputText.count("\u2028"), + "PS": inputText.count("\u2029") + }; + + // If all zero, leave alone + const total = Object.values(eolCharCounts).reduce((acc, curr) => { + return acc + curr; + }, 0); + if (total === 0) return; + + // If CRLF not zero and more than half the highest alternative, choose CRLF + const highest = Object.entries(eolCharCounts).reduce((acc, curr) => { + return curr[1] > acc[1] ? curr : acc; + }, ["LF", 0]); + if ((eolCharCounts.CRLF * 2) > highest[1]) { + this.eolChange("CRLF"); + return; + } + + // Else choose max + this.eolChange(highest[0]); + } + /** * Handler for input dragover events. * Gives the user a visual cue to show that items can be dropped here. @@ -1199,6 +1276,9 @@ class InputWaiter { this.manager.output.removeAllOutputs(); this.manager.output.terminateZipWorker(); + this.eolSetManually = false; + this.manager.output.eolSetManually = false; + const tabsList = document.getElementById("input-tabs"); const tabsListChildren = tabsList.children; diff --git a/src/web/waiters/OutputWaiter.mjs b/src/web/waiters/OutputWaiter.mjs index dae27f3e..6acd6752 100755 --- a/src/web/waiters/OutputWaiter.mjs +++ b/src/web/waiters/OutputWaiter.mjs @@ -38,7 +38,7 @@ import { import {statusBar} from "../utils/statusBar.mjs"; import {htmlPlugin} from "../utils/htmlWidget.mjs"; import {copyOverride} from "../utils/copyOverride.mjs"; -import {renderSpecialChar} from "../utils/editorUtils.mjs"; +import {eolCodeToSeq, eolCodeToName, renderSpecialChar} from "../utils/editorUtils.mjs"; /** @@ -70,6 +70,7 @@ class OutputWaiter { this.zipWorker = null; this.maxTabs = this.manager.tabs.calcMaxTabs(); this.tabTimeout = null; + this.eolSetManually = false; } /** @@ -146,9 +147,33 @@ class OutputWaiter { /** * Handler for EOL change events * Sets the line separator - * @param {string} eolVal + * @param {string} eol + * @param {boolean} manual - a flag for whether this was set by the user or automatically */ - async eolChange(eolVal) { + async eolChange(eol, manual=false) { + const eolVal = eolCodeToSeq[eol]; + if (eolVal === undefined) return; + + const eolBtn = document.querySelector("#output-text .eol-value"); + if (manual) { + this.eolSetManually = true; + eolBtn.classList.remove("font-italic"); + } else { + eolBtn.classList.add("font-italic"); + } + + if (eolVal === this.getEOLSeq()) return; + + if (!manual) { + // Pulse + eolBtn.classList.add("pulse"); + setTimeout(() => { + eolBtn.classList.remove("pulse"); + }, 2000); + // Alert + this.app.alert(`Output EOL separator has been changed to ${eolCodeToName[eol]}`, 5000); + } + const currentTabNum = this.manager.tabs.getActiveTab("output"); if (currentTabNum >= 0) { this.outputs[currentTabNum].eolSequence = eolVal; @@ -276,6 +301,9 @@ class OutputWaiter { // If turning word wrap off, do it before we populate the editor for performance reasons if (!wrap) this.setWordWrap(wrap); + // Detect suitable EOL sequence + this.detectEOLSequence(data); + // We use setTimeout here to delay the editor dispatch until the next event cycle, // ensuring all async actions have completed before attempting to set the contents // of the editor. This is mainly with the above call to setWordWrap() in mind. @@ -345,6 +373,48 @@ class OutputWaiter { }); } + /** + * Checks whether the EOL separator should be updated + * + * @param {string} data + */ + detectEOLSequence(data) { + // If EOL has been fixed, skip this. + if (this.eolSetManually) return; + // If data is too long, skip this. + if (data.length > 1000000) return; + + // Detect most likely EOL sequence + const eolCharCounts = { + "LF": data.count("\u000a"), + "VT": data.count("\u000b"), + "FF": data.count("\u000c"), + "CR": data.count("\u000d"), + "CRLF": data.count("\u000d\u000a"), + "NEL": data.count("\u0085"), + "LS": data.count("\u2028"), + "PS": data.count("\u2029") + }; + + // If all zero, leave alone + const total = Object.values(eolCharCounts).reduce((acc, curr) => { + return acc + curr; + }, 0); + if (total === 0) return; + + // If CRLF not zero and more than half the highest alternative, choose CRLF + const highest = Object.entries(eolCharCounts).reduce((acc, curr) => { + return curr[1] > acc[1] ? curr : acc; + }, ["LF", 0]); + if ((eolCharCounts.CRLF * 2) > highest[1]) { + this.eolChange("CRLF"); + return; + } + + // Else choose max + this.eolChange(highest[0]); + } + /** * Calculates the maximum number of tabs to display */ diff --git a/tests/browser/00_nightwatch.js b/tests/browser/00_nightwatch.js index 3ba2a865..2e5688d7 100644 --- a/tests/browser/00_nightwatch.js +++ b/tests/browser/00_nightwatch.js @@ -230,6 +230,7 @@ module.exports = { // Alert bar shows and contains correct content browser + .waitForElementNotVisible("#snackbar-container") .click("#copy-output") .waitForElementVisible("#snackbar-container") .waitForElementVisible("#snackbar-container .snackbar-content") diff --git a/tests/browser/01_io.js b/tests/browser/01_io.js index 67d1fdff..6791c88e 100644 --- a/tests/browser/01_io.js +++ b/tests/browser/01_io.js @@ -545,8 +545,8 @@ module.exports = { browser.expect.element("#output-text .cm-status-bar .stats-lines-value").text.to.equal("2"); /* Line endings appear in the URL */ - browser.assert.urlContains("ieol=%0D%0A"); - browser.assert.urlContains("oeol=%0D"); + browser.assert.urlContains("ieol=CRLF"); + browser.assert.urlContains("oeol=CR"); /* Preserved when changing tabs */ browser @@ -643,7 +643,7 @@ module.exports = { "Loading from URL": browser => { /* Complex deep link populates the input correctly (encoding, eol, input) */ browser - .urlHash("recipe=To_Base64('A-Za-z0-9%2B/%3D')&input=VGhlIHNoaXBzIGh1bmcgaW4gdGhlIHNreSBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0IGJyaWNrcyBkb24ndC4M&ienc=21866&oenc=1201&ieol=%0C&oeol=%E2%80%A9") + .urlHash("recipe=To_Base64('A-Za-z0-9%2B/%3D')&input=VGhlIHNoaXBzIGh1bmcgaW4gdGhlIHNreSBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0IGJyaWNrcyBkb24ndC4M&ienc=21866&oenc=1201&ieol=FF&oeol=PS") .waitForElementVisible("#rec-list li.operation"); browser.expect.element(`#input-text .cm-content`).to.have.property("textContent").match(/^.{65}$/); From 65ffd8d65d88eb369f6f61a5d1d0f807179bffb7 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 13:33:00 +0000 Subject: [PATCH 1007/1024] Automatically detect UTF8 character encoding in output --- src/core/lib/ChrEnc.mjs | 81 ++++++++++++- src/core/lib/Magic.mjs | 79 +----------- src/web/App.mjs | 8 +- src/web/stylesheets/components/_operation.css | 6 +- src/web/utils/statusBar.mjs | 51 +++++++- src/web/waiters/InputWaiter.mjs | 78 +++++++----- src/web/waiters/OutputWaiter.mjs | 114 +++++++++++++----- 7 files changed, 270 insertions(+), 147 deletions(-) diff --git a/src/core/lib/ChrEnc.mjs b/src/core/lib/ChrEnc.mjs index 6879d736..55fe3761 100644 --- a/src/core/lib/ChrEnc.mjs +++ b/src/core/lib/ChrEnc.mjs @@ -224,8 +224,85 @@ export function chrEncWidth(page) { * @copyright Crown Copyright 2019 * @license Apache-2.0 */ +export const UNICODE_NORMALISATION_FORMS = ["NFD", "NFC", "NFKD", "NFKC"]; + /** - * Character encoding format mappings. + * Detects whether the input buffer is valid UTF8. + * + * @param {ArrayBuffer} data + * @returns {number} - 0 = not UTF8, 1 = ASCII, 2 = UTF8 */ -export const UNICODE_NORMALISATION_FORMS = ["NFD", "NFC", "NFKD", "NFKC"]; +export function isUTF8(data) { + const bytes = new Uint8Array(data); + let i = 0; + let onlyASCII = true; + while (i < bytes.length) { + if (( // ASCII + bytes[i] === 0x09 || + bytes[i] === 0x0A || + bytes[i] === 0x0D || + (0x20 <= bytes[i] && bytes[i] <= 0x7E) + )) { + i += 1; + continue; + } + + onlyASCII = false; + + if (( // non-overlong 2-byte + (0xC2 <= bytes[i] && bytes[i] <= 0xDF) && + (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF) + )) { + i += 2; + continue; + } + + if (( // excluding overlongs + bytes[i] === 0xE0 && + (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) + ) || + ( // straight 3-byte + ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) || + bytes[i] === 0xEE || + bytes[i] === 0xEF) && + (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) && + (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) + ) || + ( // excluding surrogates + bytes[i] === 0xED && + (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) && + (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) + )) { + i += 3; + continue; + } + + if (( // planes 1-3 + bytes[i] === 0xF0 && + (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + ) || + ( // planes 4-15 + (0xF1 <= bytes[i] && bytes[i] <= 0xF3) && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + ) || + ( // plane 16 + bytes[i] === 0xF4 && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + )) { + i += 4; + continue; + } + + return 0; + } + + return onlyASCII ? 1 : 2; +} diff --git a/src/core/lib/Magic.mjs b/src/core/lib/Magic.mjs index 921fc3f6..14111ec7 100644 --- a/src/core/lib/Magic.mjs +++ b/src/core/lib/Magic.mjs @@ -3,6 +3,7 @@ import Utils, { isWorkerEnvironment } from "../Utils.mjs"; import Recipe from "../Recipe.mjs"; import Dish from "../Dish.mjs"; import {detectFileType, isType} from "./FileType.mjs"; +import {isUTF8} from "./ChrEnc.mjs"; import chiSquared from "chi-squared"; /** @@ -111,82 +112,6 @@ class Magic { }; } - /** - * Detects whether the input buffer is valid UTF8. - * - * @returns {boolean} - */ - isUTF8() { - const bytes = new Uint8Array(this.inputBuffer); - let i = 0; - while (i < bytes.length) { - if (( // ASCII - bytes[i] === 0x09 || - bytes[i] === 0x0A || - bytes[i] === 0x0D || - (0x20 <= bytes[i] && bytes[i] <= 0x7E) - )) { - i += 1; - continue; - } - - if (( // non-overlong 2-byte - (0xC2 <= bytes[i] && bytes[i] <= 0xDF) && - (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF) - )) { - i += 2; - continue; - } - - if (( // excluding overlongs - bytes[i] === 0xE0 && - (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) - ) || - ( // straight 3-byte - ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) || - bytes[i] === 0xEE || - bytes[i] === 0xEF) && - (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) && - (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) - ) || - ( // excluding surrogates - bytes[i] === 0xED && - (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) && - (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) - )) { - i += 3; - continue; - } - - if (( // planes 1-3 - bytes[i] === 0xF0 && - (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - ) || - ( // planes 4-15 - (0xF1 <= bytes[i] && bytes[i] <= 0xF3) && - (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - ) || - ( // plane 16 - bytes[i] === 0xF4 && - (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - )) { - i += 4; - continue; - } - - return false; - } - - return true; - } - /** * Calculates the Shannon entropy of the input data. * @@ -336,7 +261,7 @@ class Magic { data: this.inputStr.slice(0, 100), languageScores: this.detectLanguage(extLang), fileType: this.detectFileType(), - isUTF8: this.isUTF8(), + isUTF8: !!isUTF8(this.inputBuffer), entropy: this.calcEntropy(), matchingOps: matchingOps, useful: useful, diff --git a/src/web/App.mjs b/src/web/App.mjs index cce91b1e..eeae264f 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -500,22 +500,22 @@ class App { // Input Character Encoding // Must be set before the input is loaded if (this.uriParams.ienc) { - this.manager.input.chrEncChange(parseInt(this.uriParams.ienc, 10)); + this.manager.input.chrEncChange(parseInt(this.uriParams.ienc, 10), true); } // Output Character Encoding if (this.uriParams.oenc) { - this.manager.output.chrEncChange(parseInt(this.uriParams.oenc, 10)); + this.manager.output.chrEncChange(parseInt(this.uriParams.oenc, 10), true); } // Input EOL sequence if (this.uriParams.ieol) { - this.manager.input.eolChange(this.uriParams.ieol); + this.manager.input.eolChange(this.uriParams.ieol, true); } // Output EOL sequence if (this.uriParams.oeol) { - this.manager.output.eolChange(this.uriParams.oeol); + this.manager.output.eolChange(this.uriParams.oeol, true); } // Read in input data from URI params diff --git a/src/web/stylesheets/components/_operation.css b/src/web/stylesheets/components/_operation.css index 685a368a..a97fed70 100755 --- a/src/web/stylesheets/components/_operation.css +++ b/src/web/stylesheets/components/_operation.css @@ -69,6 +69,10 @@ select.arg { min-width: 100px; } +select.arg.form-control:not([size]):not([multiple]), select.custom-file-control:not([size]):not([multiple]) { + height: 100% !important; +} + textarea.arg { min-height: 74px; resize: vertical; @@ -80,7 +84,7 @@ div.toggle-string { input.toggle-string { border-top-right-radius: 0 !important; - height: 42px !important; + height: 100%; } .operation [class^='bmd-label'], diff --git a/src/web/utils/statusBar.mjs b/src/web/utils/statusBar.mjs index 69c4dd51..1adcd5be 100644 --- a/src/web/utils/statusBar.mjs +++ b/src/web/utils/statusBar.mjs @@ -24,6 +24,8 @@ class StatusBarPanel { this.eolHandler = opts.eolHandler; this.chrEncHandler = opts.chrEncHandler; this.chrEncGetter = opts.chrEncGetter; + this.getEncodingState = opts.getEncodingState; + this.getEOLState = opts.getEOLState; this.htmlOutput = opts.htmlOutput; this.eolVal = null; @@ -115,7 +117,7 @@ class StatusBarPanel { if (isNaN(chrEncVal)) return; - this.chrEncHandler(chrEncVal); + this.chrEncHandler(chrEncVal, true); this.updateCharEnc(chrEncVal); hideElement(e.target.closest(".cm-status-bar-select-content")); } @@ -212,12 +214,31 @@ class StatusBarPanel { * @param {EditorState} state */ updateEOL(state) { - if (state.lineBreak === this.eolVal) return; + if (this.getEOLState() < 2 && state.lineBreak === this.eolVal) return; const val = this.dom.querySelector(".eol-value"); const button = val.closest(".cm-status-bar-select-btn"); - const eolCode = eolSeqToCode[state.lineBreak]; - const eolName = eolCodeToName[eolCode]; + let eolCode = eolSeqToCode[state.lineBreak]; + let eolName = eolCodeToName[eolCode]; + + switch (this.getEOLState()) { + case 1: // Detected + val.classList.add("font-italic"); + eolCode += " (detected)"; + eolName += " (detected)"; + // Pulse + val.classList.add("pulse"); + setTimeout(() => { + val.classList.remove("pulse"); + }, 2000); + break; + case 0: // Unset + case 2: // Manually set + default: + val.classList.remove("font-italic"); + break; + } + val.textContent = eolCode; button.setAttribute("title", `End of line sequence:
        ${eolName}`); button.setAttribute("data-original-title", `End of line sequence:
        ${eolName}`); @@ -230,12 +251,30 @@ class StatusBarPanel { */ updateCharEnc() { const chrEncVal = this.chrEncGetter(); - if (chrEncVal === this.chrEncVal) return; + if (this.getEncodingState() < 2 && chrEncVal === this.chrEncVal) return; - const name = CHR_ENC_SIMPLE_REVERSE_LOOKUP[chrEncVal] ? CHR_ENC_SIMPLE_REVERSE_LOOKUP[chrEncVal] : "Raw Bytes"; + let name = CHR_ENC_SIMPLE_REVERSE_LOOKUP[chrEncVal] ? CHR_ENC_SIMPLE_REVERSE_LOOKUP[chrEncVal] : "Raw Bytes"; const val = this.dom.querySelector(".chr-enc-value"); const button = val.closest(".cm-status-bar-select-btn"); + + switch (this.getEncodingState()) { + case 1: // Detected + val.classList.add("font-italic"); + name += " (detected)"; + // Pulse + val.classList.add("pulse"); + setTimeout(() => { + val.classList.remove("pulse"); + }, 2000); + break; + case 0: // Unset + case 2: // Manually set + default: + val.classList.remove("font-italic"); + break; + } + val.textContent = name; button.setAttribute("title", `${this.label} character encoding:
        ${name}`); button.setAttribute("data-original-title", `${this.label} character encoding:
        ${name}`); diff --git a/src/web/waiters/InputWaiter.mjs b/src/web/waiters/InputWaiter.mjs index ad8eb38c..bffca98c 100644 --- a/src/web/waiters/InputWaiter.mjs +++ b/src/web/waiters/InputWaiter.mjs @@ -62,7 +62,8 @@ class InputWaiter { this.inputTextEl = document.getElementById("input-text"); this.inputChrEnc = 0; - this.eolSetManually = false; + this.eolState = 0; // 0 = unset, 1 = detected, 2 = manual + this.encodingState = 0; // 0 = unset, 1 = detected, 2 = manual this.initEditor(); this.inputWorker = null; @@ -116,7 +117,9 @@ class InputWaiter { label: "Input", eolHandler: this.eolChange.bind(this), chrEncHandler: this.chrEncChange.bind(this), - chrEncGetter: this.getChrEnc.bind(this) + chrEncGetter: this.getChrEnc.bind(this), + getEncodingState: this.getEncodingState.bind(this), + getEOLState: this.getEOLState.bind(this) }), // Mutable state @@ -156,6 +159,8 @@ class InputWaiter { ] }); + + if (this.inputEditorView) this.inputEditorView.destroy(); this.inputEditorView = new EditorView({ state: initialState, parent: this.inputTextEl @@ -166,30 +171,18 @@ class InputWaiter { * Handler for EOL change events * Sets the line separator * @param {string} eol - * @param {boolean} manual - a flag for whether this was set by the user or automatically + * @param {boolean} [manual=false] */ eolChange(eol, manual=false) { const eolVal = eolCodeToSeq[eol]; if (eolVal === undefined) return; - const eolBtn = document.querySelector("#input-text .eol-value"); - if (manual) { - this.eolSetManually = true; - eolBtn.classList.remove("font-italic"); - } else { - eolBtn.classList.add("font-italic"); - } + this.eolState = manual ? 2 : this.eolState; + if (this.eolState < 2 && eolVal === this.getEOLSeq()) return; - if (eolVal === this.getEOLSeq()) return; - - if (!manual) { - // Pulse - eolBtn.classList.add("pulse"); - setTimeout(() => { - eolBtn.classList.remove("pulse"); - }, 2000); + if (this.eolState === 1) { // Alert - this.app.alert(`Input EOL separator has been changed to ${eolCodeToName[eol]}`, 5000); + this.app.alert(`Input end of line separator has been detected and changed to ${eolCodeToName[eol]}`, 5000); } // Update the EOL value @@ -210,14 +203,24 @@ class InputWaiter { return this.inputEditorView.state.lineBreak; } + /** + * Returns whether the input EOL sequence was set manually or has been detected automatically + * @returns {number} - 0 = unset, 1 = detected, 2 = manual + */ + getEOLState() { + return this.eolState; + } + /** * Handler for Chr Enc change events * Sets the input character encoding * @param {number} chrEncVal + * @param {boolean} [manual=false] */ - chrEncChange(chrEncVal) { + chrEncChange(chrEncVal, manual=false) { if (typeof chrEncVal !== "number") return; this.inputChrEnc = chrEncVal; + this.encodingState = manual ? 2 : this.encodingState; this.inputChange(); } @@ -229,6 +232,14 @@ class InputWaiter { return this.inputChrEnc; } + /** + * Returns whether the input character encoding was set manually or has been detected automatically + * @returns {number} - 0 = unset, 1 = detected, 2 = manual + */ + getEncodingState() { + return this.encodingState; + } + /** * Sets word wrap on the input editor * @param {boolean} wrap @@ -908,7 +919,7 @@ class InputWaiter { */ afterPaste(e) { // If EOL has been fixed, skip this. - if (this.eolSetManually) return; + if (this.eolState > 1) return; const inputText = this.getInput(); @@ -930,17 +941,23 @@ class InputWaiter { }, 0); if (total === 0) return; - // If CRLF not zero and more than half the highest alternative, choose CRLF + // Find most prevalent line ending sequence const highest = Object.entries(eolCharCounts).reduce((acc, curr) => { return curr[1] > acc[1] ? curr : acc; }, ["LF", 0]); + let choice = highest[0]; + + // If CRLF not zero and more than half the highest alternative, choose CRLF if ((eolCharCounts.CRLF * 2) > highest[1]) { - this.eolChange("CRLF"); - return; + choice = "CRLF"; } - // Else choose max - this.eolChange(highest[0]); + const eolVal = eolCodeToSeq[choice]; + if (eolVal === this.getEOLSeq()) return; + + // Setting automatically + this.eolState = 1; + this.eolChange(choice); } /** @@ -1276,8 +1293,13 @@ class InputWaiter { this.manager.output.removeAllOutputs(); this.manager.output.terminateZipWorker(); - this.eolSetManually = false; - this.manager.output.eolSetManually = false; + this.eolState = 0; + this.encodingState = 0; + this.manager.output.eolState = 0; + this.manager.output.encodingState = 0; + + this.initEditor(); + this.manager.output.initEditor(); const tabsList = document.getElementById("input-tabs"); const tabsListChildren = tabsList.children; diff --git a/src/web/waiters/OutputWaiter.mjs b/src/web/waiters/OutputWaiter.mjs index 6acd6752..190d2ad9 100755 --- a/src/web/waiters/OutputWaiter.mjs +++ b/src/web/waiters/OutputWaiter.mjs @@ -7,6 +7,7 @@ import Utils, {debounce} from "../../core/Utils.mjs"; import Dish from "../../core/Dish.mjs"; +import {isUTF8, CHR_ENC_SIMPLE_REVERSE_LOOKUP} from "../../core/lib/ChrEnc.mjs"; import {detectFileType} from "../../core/lib/FileType.mjs"; import FileSaver from "file-saver"; import ZipWorker from "worker-loader?inline=no-fallback!../workers/ZipWorker.mjs"; @@ -70,7 +71,8 @@ class OutputWaiter { this.zipWorker = null; this.maxTabs = this.manager.tabs.calcMaxTabs(); this.tabTimeout = null; - this.eolSetManually = false; + this.eolState = 0; // 0 = unset, 1 = detected, 2 = manual + this.encodingState = 0; // 0 = unset, 1 = detected, 2 = manual } /** @@ -110,6 +112,8 @@ class OutputWaiter { eolHandler: this.eolChange.bind(this), chrEncHandler: this.chrEncChange.bind(this), chrEncGetter: this.getChrEnc.bind(this), + getEncodingState: this.getEncodingState.bind(this), + getEOLState: this.getEOLState.bind(this), htmlOutput: this.htmlOutput }), htmlPlugin(this.htmlOutput), @@ -138,6 +142,7 @@ class OutputWaiter { ] }); + if (this.outputEditorView) this.outputEditorView.destroy(); this.outputEditorView = new EditorView({ state: initialState, parent: this.outputTextEl @@ -148,30 +153,18 @@ class OutputWaiter { * Handler for EOL change events * Sets the line separator * @param {string} eol - * @param {boolean} manual - a flag for whether this was set by the user or automatically + * @param {boolean} [manual=false] */ async eolChange(eol, manual=false) { const eolVal = eolCodeToSeq[eol]; if (eolVal === undefined) return; - const eolBtn = document.querySelector("#output-text .eol-value"); - if (manual) { - this.eolSetManually = true; - eolBtn.classList.remove("font-italic"); - } else { - eolBtn.classList.add("font-italic"); - } + this.eolState = manual ? 2 : this.eolState; + if (this.eolState < 2 && eolVal === this.getEOLSeq()) return; - if (eolVal === this.getEOLSeq()) return; - - if (!manual) { - // Pulse - eolBtn.classList.add("pulse"); - setTimeout(() => { - eolBtn.classList.remove("pulse"); - }, 2000); + if (this.eolState === 1) { // Alert - this.app.alert(`Output EOL separator has been changed to ${eolCodeToName[eol]}`, 5000); + this.app.alert(`Output end of line separator has been detected and changed to ${eolCodeToName[eol]}`, 5000); } const currentTabNum = this.manager.tabs.getActiveTab("output"); @@ -205,13 +198,23 @@ class OutputWaiter { return this.outputs[currentTabNum].eolSequence; } + /** + * Returns whether the output EOL sequence was set manually or has been detected automatically + * @returns {number} - 0 = unset, 1 = detected, 2 = manual + */ + getEOLState() { + return this.eolState; + } + /** * Handler for Chr Enc change events * Sets the output character encoding * @param {number} chrEncVal + * @param {boolean} [manual=false] */ - async chrEncChange(chrEncVal) { + async chrEncChange(chrEncVal, manual=false) { if (typeof chrEncVal !== "number") return; + const currentEnc = this.getChrEnc(); const currentTabNum = this.manager.tabs.getActiveTab("output"); if (currentTabNum >= 0) { @@ -220,10 +223,17 @@ class OutputWaiter { throw new Error(`Cannot change output ${currentTabNum} chrEnc to ${chrEncVal}`); } - // Reset the output, forcing it to re-decode the data with the new character encoding - await this.setOutput(this.currentOutputCache, true); - // Update the URL manually since we aren't firing a statechange event - this.app.updateURL(true); + this.encodingState = manual ? 2 : this.encodingState; + + if (this.encodingState > 1) { + // Reset the output, forcing it to re-decode the data with the new character encoding + await this.setOutput(this.currentOutputCache, true); + // Update the URL manually since we aren't firing a statechange event + this.app.updateURL(true); + } else if (currentEnc !== chrEncVal) { + // Alert + this.app.alert(`Output character encoding has been detected and changed to ${CHR_ENC_SIMPLE_REVERSE_LOOKUP[chrEncVal] || "Raw Bytes"}`, 5000); + } } /** @@ -238,6 +248,14 @@ class OutputWaiter { return this.outputs[currentTabNum].encoding; } + /** + * Returns whether the output character encoding was set manually or has been detected automatically + * @returns {number} - 0 = unset, 1 = detected, 2 = manual + */ + getEncodingState() { + return this.encodingState; + } + /** * Sets word wrap on the output editor * @param {boolean} wrap @@ -273,6 +291,7 @@ class OutputWaiter { const tabNum = this.manager.tabs.getActiveTab("output"); this.manager.timing.recordTime("outputDecodingStart", tabNum); if (data instanceof ArrayBuffer) { + await this.detectEncoding(data); data = await this.bufferToStr(data); } this.manager.timing.recordTime("outputDecodingEnd", tabNum); @@ -380,7 +399,7 @@ class OutputWaiter { */ detectEOLSequence(data) { // If EOL has been fixed, skip this. - if (this.eolSetManually) return; + if (this.eolState > 1) return; // If data is too long, skip this. if (data.length > 1000000) return; @@ -402,17 +421,54 @@ class OutputWaiter { }, 0); if (total === 0) return; - // If CRLF not zero and more than half the highest alternative, choose CRLF + // Find most prevalent line ending sequence const highest = Object.entries(eolCharCounts).reduce((acc, curr) => { return curr[1] > acc[1] ? curr : acc; }, ["LF", 0]); + let choice = highest[0]; + + // If CRLF not zero and more than half the highest alternative, choose CRLF if ((eolCharCounts.CRLF * 2) > highest[1]) { - this.eolChange("CRLF"); - return; + choice = "CRLF"; } - // Else choose max - this.eolChange(highest[0]); + const eolVal = eolCodeToSeq[choice]; + if (eolVal === this.getEOLSeq()) return; + + // Setting automatically + this.eolState = 1; + this.eolChange(choice); + } + + /** + * Checks whether the character encoding should be updated. + * + * @param {ArrayBuffer} data + */ + async detectEncoding(data) { + // If encoding has been fixed, skip this. + if (this.encodingState > 1) return; + // If data is too long, skip this. + if (data.byteLength > 1000000) return; + + const enc = isUTF8(data); // 0 = not UTF8, 1 = ASCII, 2 = UTF8 + + switch (enc) { + case 0: // not UTF8 + // Set to Raw Bytes + this.encodingState = 1; + await this.chrEncChange(0, false); + break; + case 2: // UTF8 + // Set to UTF8 + this.encodingState = 1; + await this.chrEncChange(65001, false); + break; + case 1: // ASCII + default: + // Ignore + break; + } } /** From e4077fb63b587c74df6af31b828a8518d8aeb9bc Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 14:38:27 +0000 Subject: [PATCH 1008/1024] Lint and dependency update --- package-lock.json | 317 ++++++++++++++++++++++++++------ package.json | 2 +- tests/operations/tests/RAKE.mjs | 2 +- 3 files changed, 260 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e6671a5..c273f189 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", - "chromedriver": "^121.0.0", + "chromedriver": "^123.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", "copy-webpack-plugin": "^12.0.2", @@ -2830,6 +2830,12 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "node_modules/@types/body-parser": { "version": "1.19.2", "dev": true, @@ -3242,15 +3248,15 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -3601,6 +3607,18 @@ "node": "*" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { "version": "3.2.3", "dev": true, @@ -3976,6 +3994,15 @@ "node": ">= 0.8" } }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "dev": true, @@ -4708,17 +4735,17 @@ } }, "node_modules/chromedriver": { - "version": "121.0.0", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-121.0.0.tgz", - "integrity": "sha512-ZIKEdZrQAfuzT/RRofjl8/EZR99ghbdBXNTOcgJMKGP6N/UL6lHUX4n6ONWBV18pDvDFfQJ0x58h5AdOaXIOMw==", + "version": "123.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-123.0.0.tgz", + "integrity": "sha512-OE9mpxXwbFy5LncAisqXm1aEzuLPtEMORIxyYIn9uT7N8rquJWyoip6w9Rytub3o2gnynW9+PFOTPVTldaYrtw==", "dev": true, "hasInstallScript": true, "dependencies": { "@testim/chrome-version": "^1.1.4", - "axios": "^1.6.5", + "axios": "^1.6.7", "compare-versions": "^6.1.0", "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.1", + "proxy-agent": "^6.4.0", "proxy-from-env": "^1.1.0", "tcp-port-used": "^1.0.2" }, @@ -5817,6 +5844,15 @@ "node": ">=12" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -5975,6 +6011,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delaunator": { "version": "5.0.0", "license": "ISC", @@ -7408,6 +7458,29 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/fs-monkey": { "version": "1.0.3", "dev": true, @@ -7511,6 +7584,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/getobject": { "version": "1.0.2", "dev": true, @@ -8603,9 +8691,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -8615,18 +8703,6 @@ "node": ">= 14" } }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/http-proxy-middleware": { "version": "2.0.4", "dev": true, @@ -8667,16 +8743,16 @@ "license": "MIT" }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -8875,6 +8951,19 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/ip-regex": { "version": "4.3.0", "dev": true, @@ -9502,6 +9591,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsdom": { "version": "23.2.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", @@ -9542,31 +9637,6 @@ } } }, - "node_modules/jsdom/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/jsdom/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/jsesc": { "version": "3.0.2", "license": "MIT", @@ -9603,6 +9673,27 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/jsonpath-plus": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-8.0.0.tgz", @@ -10696,6 +10787,15 @@ "dev": true, "license": "MIT" }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/ngeohash": { "version": "0.6.3", "license": "MIT", @@ -11488,6 +11588,38 @@ "node": ">= 4" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/pad-stream": { "version": "2.0.0", "dev": true, @@ -12259,6 +12391,34 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -13192,6 +13352,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/snackbarjs": { "version": "1.1.0", "license": "ISC" @@ -13217,6 +13387,34 @@ "node": ">=0.8.0" } }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/sortablejs": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", @@ -13288,9 +13486,10 @@ } }, "node_modules/sprintf-js": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/ssdeep.js": { "version": "0.0.3" diff --git a/package.json b/package.json index 334d88b5..65cbdc49 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", - "chromedriver": "^121.0.0", + "chromedriver": "^123.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", "copy-webpack-plugin": "^12.0.2", diff --git a/tests/operations/tests/RAKE.mjs b/tests/operations/tests/RAKE.mjs index 8164ca01..fe718076 100644 --- a/tests/operations/tests/RAKE.mjs +++ b/tests/operations/tests/RAKE.mjs @@ -1,6 +1,6 @@ /** * RAKE, Rapid Automatic Keyword Extraction tests. - * + * * @author sw5678 * @copyright Crown Copyright 2024 * @license Apache-2.0 From 70ff3a52ca0fb78b1bd818bb3a7cc5ab292176aa Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 14:40:33 +0000 Subject: [PATCH 1009/1024] Updated CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 145d1b14..d23d8d0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.9.0] - 2024-03-26 +- Line ending sequences and UTF-8 character encoding are now detected automatically [@n1474335] | [65ffd8d] + ### [10.8.0] - 2024-02-13 - Add official Docker images [@AshCorr] | [#1699] @@ -386,6 +389,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) +[10.9.0]: https://github.com/gchq/CyberChef/releases/tag/v10.9.0 [10.8.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.7.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.6.0]: https://github.com/gchq/CyberChef/releases/tag/v10.6.0 @@ -561,6 +565,7 @@ All major and minor version changes will be documented in this file. Details of [a895d1d]: https://github.com/gchq/CyberChef/commit/a895d1d82a2f92d440a0c5eca2bc7c898107b737 [31a7f83]: https://github.com/gchq/CyberChef/commit/31a7f83b82e78927f89689f323fcb9185144d6ff [760eff4]: https://github.com/gchq/CyberChef/commit/760eff49b5307aaa3104c5e5b437ffe62299acd1 +[65ffd8d]: https://github.com/gchq/CyberChef/commit/65ffd8d65d88eb369f6f61a5d1d0f807179bffb7 [#95]: https://github.com/gchq/CyberChef/pull/299 [#173]: https://github.com/gchq/CyberChef/pull/173 From 762cf3ca41ca83a52bc218f282130bc078a249df Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 14:40:39 +0000 Subject: [PATCH 1010/1024] 10.9.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c273f189..e7a2990d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.8.2", + "version": "10.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.8.2", + "version": "10.9.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 65cbdc49..148abdc2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.8.2", + "version": "10.9.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 64111b8b7b548ed96f879ec07a3e7a8dfad94fde Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 14:57:58 +0000 Subject: [PATCH 1011/1024] Downgrade chromedriver version for GitHub Actions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 148abdc2..ca2924c8 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", - "chromedriver": "^123.0.0", + "chromedriver": "^122.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", "copy-webpack-plugin": "^12.0.2", From a5f9a8726bff7bbde2b9fe53ed858f0efe8548fb Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 15:19:35 +0000 Subject: [PATCH 1012/1024] Fixed erroring test --- package-lock.json | 8 ++++---- tests/browser/00_nightwatch.js | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7a2990d..658aef50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-transform-builtin-extend": "1.1.2", "base64-loader": "^1.0.0", - "chromedriver": "^123.0.0", + "chromedriver": "^122.0.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", "copy-webpack-plugin": "^12.0.2", @@ -4735,9 +4735,9 @@ } }, "node_modules/chromedriver": { - "version": "123.0.0", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-123.0.0.tgz", - "integrity": "sha512-OE9mpxXwbFy5LncAisqXm1aEzuLPtEMORIxyYIn9uT7N8rquJWyoip6w9Rytub3o2gnynW9+PFOTPVTldaYrtw==", + "version": "122.0.6", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-122.0.6.tgz", + "integrity": "sha512-Q0r+QlUtiJWMQ5HdYaFa0CtBmLFq3n5JWfmq9mOC00UMBvWxku09gUkvBt457QnYfTM/XHqY/HTFOxHvATnTmA==", "dev": true, "hasInstallScript": true, "dependencies": { diff --git a/tests/browser/00_nightwatch.js b/tests/browser/00_nightwatch.js index 2e5688d7..65f0aa23 100644 --- a/tests/browser/00_nightwatch.js +++ b/tests/browser/00_nightwatch.js @@ -232,7 +232,6 @@ module.exports = { browser .waitForElementNotVisible("#snackbar-container") .click("#copy-output") - .waitForElementVisible("#snackbar-container") .waitForElementVisible("#snackbar-container .snackbar-content") .expect.element("#snackbar-container .snackbar-content").text.to.equal("Copied raw output successfully."); From 1f316a2f32b13897e34a8105fd5f2e03854d532a Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 15:37:18 +0000 Subject: [PATCH 1013/1024] More test tweaking --- tests/browser/00_nightwatch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/browser/00_nightwatch.js b/tests/browser/00_nightwatch.js index 65f0aa23..6872dead 100644 --- a/tests/browser/00_nightwatch.js +++ b/tests/browser/00_nightwatch.js @@ -232,7 +232,7 @@ module.exports = { browser .waitForElementNotVisible("#snackbar-container") .click("#copy-output") - .waitForElementVisible("#snackbar-container .snackbar-content") + .waitForElementVisible("#snackbar-container .snackbar-content", 5000, 100) .expect.element("#snackbar-container .snackbar-content").text.to.equal("Copied raw output successfully."); // Alert bar disappears after the correct amount of time From f1dcc339b3e175d3d0bc3ddf847b9074647fab09 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 15:42:21 +0000 Subject: [PATCH 1014/1024] More test tweaking --- tests/browser/00_nightwatch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/browser/00_nightwatch.js b/tests/browser/00_nightwatch.js index 6872dead..89ab7eea 100644 --- a/tests/browser/00_nightwatch.js +++ b/tests/browser/00_nightwatch.js @@ -232,7 +232,7 @@ module.exports = { browser .waitForElementNotVisible("#snackbar-container") .click("#copy-output") - .waitForElementVisible("#snackbar-container .snackbar-content", 5000, 100) + .waitForElementVisible("#snackbar-container .snackbar-content", 5000, 100, false) .expect.element("#snackbar-container .snackbar-content").text.to.equal("Copied raw output successfully."); // Alert bar disappears after the correct amount of time From ee77e0a1e4486aab42074a7ef17d6fe77f1e361a Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 16:10:44 +0000 Subject: [PATCH 1015/1024] More test tweaking --- tests/browser/00_nightwatch.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/browser/00_nightwatch.js b/tests/browser/00_nightwatch.js index 89ab7eea..e64b476b 100644 --- a/tests/browser/00_nightwatch.js +++ b/tests/browser/00_nightwatch.js @@ -194,6 +194,9 @@ module.exports = { // Open category browser + .useCss() + .waitForElementNotVisible("#snackbar-container", 10000) + .useXpath() .click(otherCat) .expect.element(genUUID).to.be.visible; @@ -232,7 +235,7 @@ module.exports = { browser .waitForElementNotVisible("#snackbar-container") .click("#copy-output") - .waitForElementVisible("#snackbar-container .snackbar-content", 5000, 100, false) + .waitForElementVisible("#snackbar-container .snackbar-content") .expect.element("#snackbar-container .snackbar-content").text.to.equal("Copied raw output successfully."); // Alert bar disappears after the correct amount of time From 0026d77b7b5ad8079e1fd58fddbdbc0e6428897c Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 26 Mar 2024 16:34:36 +0000 Subject: [PATCH 1016/1024] More test tweaking --- src/web/App.mjs | 8 +++++--- tests/browser/browserUtils.js | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/web/App.mjs b/src/web/App.mjs index eeae264f..53070e26 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -46,6 +46,8 @@ class App { this.appLoaded = false; this.workerLoaded = false; this.waitersLoaded = false; + + this.snackbars = []; } @@ -708,14 +710,14 @@ class App { log.info("[" + time.toLocaleString() + "] " + str); if (silent) return; - this.currentSnackbar = $.snackbar({ + this.snackbars.push($.snackbar({ content: str, timeout: timeout, htmlAllowed: true, onClose: () => { - this.currentSnackbar.remove(); + this.snackbars.shift().remove(); } - }); + })); } diff --git a/tests/browser/browserUtils.js b/tests/browser/browserUtils.js index b73dca91..4a559758 100644 --- a/tests/browser/browserUtils.js +++ b/tests/browser/browserUtils.js @@ -65,6 +65,7 @@ function setChrEnc(browser, io, enc) { io = `#${io}-text`; browser .useCss() + .waitForElementNotVisible("#snackbar-container", 6000) .click(io + " .chr-enc-value") .waitForElementVisible(io + " .chr-enc-select .cm-status-bar-select-scroll") .click("link text", enc) @@ -83,6 +84,7 @@ function setEOLSeq(browser, io, eol) { io = `#${io}-text`; browser .useCss() + .waitForElementNotVisible("#snackbar-container", 6000) .click(io + " .eol-value") .waitForElementVisible(io + " .eol-select .cm-status-bar-select-content") .click(`${io} .cm-status-bar-select-content a[data-val=${eol}]`) From 953861ab30222535fb3ad8a6cc80d7f339c530c7 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Tue, 26 Mar 2024 16:26:17 -0700 Subject: [PATCH 1017/1024] File signatures for heic/heif, refs #1613 --- src/core/lib/FileSignatures.mjs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 4cba4bc7..69157a1b 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -72,6 +72,27 @@ export const FILE_SIGNATURES = { }, extractor: extractWEBP }, + { + name: "High Efficiency Image File Format", + extension: "heic,heif", + mime: "image/heif", + description: "", + signature: { + 0: 0x00, + 1: 0x00, + 2: 0x00, + // 3 could be 0x24 or 0x18, so skip it + 4: 0x66, // ftypheic + 5: 0x74, + 6: 0x79, + 7: 0x70, + 8: 0x68, + 9: 0x65, + 10: 0x69, + 11: 0x63 + }, + extractor: null + }, { name: "Camera Image File Format", extension: "crw", From ef59634c15ad0fe35e7d631c355709d0184ca600 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Mar 2024 18:02:17 +0000 Subject: [PATCH 1018/1024] Added 'JA4 Fingerprint' operation --- src/core/config/Categories.json | 1 + src/core/lib/JA4.mjs | 166 +++++ src/core/lib/Stream.mjs | 17 +- src/core/lib/TLS.mjs | 776 ++++++++++++++++++++++ src/core/operations/JA4Fingerprint.mjs | 73 ++ tests/operations/index.mjs | 1 + tests/operations/tests/JA4Fingerprint.mjs | 55 ++ 7 files changed, 1086 insertions(+), 3 deletions(-) create mode 100644 src/core/lib/JA4.mjs create mode 100644 src/core/lib/TLS.mjs create mode 100644 src/core/operations/JA4Fingerprint.mjs create mode 100644 tests/operations/tests/JA4Fingerprint.mjs diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 8e300c76..9a9e7804 100644 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -231,6 +231,7 @@ "VarInt Decode", "JA3 Fingerprint", "JA3S Fingerprint", + "JA4 Fingerprint", "HASSH Client Fingerprint", "HASSH Server Fingerprint", "Format MAC addresses", diff --git a/src/core/lib/JA4.mjs b/src/core/lib/JA4.mjs new file mode 100644 index 00000000..b0b423a2 --- /dev/null +++ b/src/core/lib/JA4.mjs @@ -0,0 +1,166 @@ +/** + * JA4 resources. + * + * @author n1474335 [n1474335@gmail.com] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + * + * JA4 Copyright 2023 FoxIO, LLC. + * @license BSD-3-Clause + */ + +import OperationError from "../errors/OperationError.mjs"; +import { parseTLSRecord, parseHighestSupportedVersion, parseFirstALPNValue } from "./TLS.mjs"; +import { toHexFast } from "./Hex.mjs"; +import { runHash } from "./Hash.mjs"; +import Utils from "../Utils.mjs"; + + +/** + * Calculate the JA4 from a given TLS Client Hello Stream + * @param {Uint8Array} bytes + * @returns {string} + */ +export function toJA4(bytes) { + let tlsr = {}; + try { + tlsr = parseTLSRecord(bytes); + } catch (err) { + throw new OperationError("Data is not a valid TLS Client Hello. QUIC is not yet supported.\n" + err); + } + + /* QUIC + “q” or “t”, which denotes whether the hello packet is for QUIC or TCP. + TODO: Implement QUIC + */ + const ptype = "t"; + + /* TLS Version + TLS version is shown in 3 different places. If extension 0x002b exists (supported_versions), then the version + is the highest value in the extension. Remember to ignore GREASE values. If the extension doesn’t exist, then + the TLS version is the value of the Protocol Version. Handshake version (located at the top of the packet) + should be ignored. + */ + let version = tlsr.version.value; + for (const ext of tlsr.handshake.value.extensions.value) { + if (ext.type.value === "supported_versions") { + version = parseHighestSupportedVersion(ext.value.data); + break; + } + } + switch (version) { + case 0x0304: version = "13"; break; // TLS 1.3 + case 0x0303: version = "12"; break; // TLS 1.2 + case 0x0302: version = "11"; break; // TLS 1.1 + case 0x0301: version = "10"; break; // TLS 1.0 + case 0x0300: version = "s3"; break; // SSL 3.0 + case 0x0200: version = "s2"; break; // SSL 2.0 + case 0x0100: version = "s1"; break; // SSL 1.0 + default: version = "00"; // Unknown + } + + /* SNI + If the SNI extension (0x0000) exists, then the destination of the connection is a domain, or “d” in the fingerprint. + If the SNI does not exist, then the destination is an IP address, or “i”. + */ + let sni = "i"; + for (const ext of tlsr.handshake.value.extensions.value) { + if (ext.type.value === "server_name") { + sni = "d"; + break; + } + } + + /* Number of Ciphers + 2 character number of cipher suites, so if there’s 6 cipher suites in the hello packet, then the value should be “06”. + If there’s > 99, which there should never be, then output “99”. Remember, ignore GREASE values. They don’t count. + */ + let cipherLen = 0; + for (const cs of tlsr.handshake.value.cipherSuites.value) { + if (cs.value !== "GREASE") cipherLen++; + } + cipherLen = cipherLen > 99 ? "99" : cipherLen.toString().padStart(2, "0"); + + /* Number of Extensions + Same as counting ciphers. Ignore GREASE. Include SNI and ALPN. + */ + let extLen = 0; + for (const ext of tlsr.handshake.value.extensions.value) { + if (ext.type.value !== "GREASE") extLen++; + } + extLen = extLen > 99 ? "99" : extLen.toString().padStart(2, "0"); + + /* ALPN Extension Value + The first and last characters of the ALPN (Application-Layer Protocol Negotiation) first value. + If there are no ALPN values or no ALPN extension then we print “00” as the value in the fingerprint. + */ + let alpn = "00"; + for (const ext of tlsr.handshake.value.extensions.value) { + if (ext.type.value === "application_layer_protocol_negotiation") { + alpn = parseFirstALPNValue(ext.value.data); + alpn = alpn.charAt(0) + alpn.charAt(alpn.length - 1); + break; + } + } + + /* Cipher hash + A 12 character truncated sha256 hash of the list of ciphers sorted in hex order, first 12 characters. + The list is created using the 4 character hex values of the ciphers, lower case, comma delimited, ignoring GREASE. + */ + const originalCiphersList = []; + for (const cs of tlsr.handshake.value.cipherSuites.value) { + if (cs.value !== "GREASE") { + originalCiphersList.push(toHexFast(cs.data)); + } + } + const sortedCiphersList = [...originalCiphersList].sort(); + const sortedCiphersRaw = sortedCiphersList.join(","); + const originalCiphersRaw = originalCiphersList.join(","); + const sortedCiphers = runHash( + "sha256", + Utils.strToArrayBuffer(sortedCiphersRaw) + ).substring(0, 12); + const originalCiphers = runHash( + "sha256", + Utils.strToArrayBuffer(originalCiphersRaw) + ).substring(0, 12); + + /* Extension hash + A 12 character truncated sha256 hash of the list of extensions, sorted by hex value, followed by the list of signature + algorithms, in the order that they appear (not sorted). + The extension list is created using the 4 character hex values of the extensions, lower case, comma delimited, sorted + (not in the order they appear). Ignore the SNI extension (0000) and the ALPN extension (0010) as we’ve already captured + them in the a section of the fingerprint. These values are omitted so that the same application would have the same b + section of the fingerprint regardless of if it were going to a domain, IP, or changing ALPNs. + */ + const originalExtensionsList = []; + let signatureAlgorithms = ""; + for (const ext of tlsr.handshake.value.extensions.value) { + if (ext.type.value !== "GREASE") { + originalExtensionsList.push(toHexFast(ext.type.data)); + } + if (ext.type.value === "signature_algorithms") { + signatureAlgorithms = toHexFast(ext.value.data.slice(2)); + signatureAlgorithms = signatureAlgorithms.replace(/(.{4})/g, "$1,"); + signatureAlgorithms = signatureAlgorithms.substring(0, signatureAlgorithms.length - 1); + } + } + const sortedExtensionsList = [...originalExtensionsList].filter(e => e !== "0000" && e !== "0010").sort(); + const sortedExtensionsRaw = sortedExtensionsList.join(",") + "_" + signatureAlgorithms; + const originalExtensionsRaw = originalExtensionsList.join(",") + "_" + signatureAlgorithms; + const sortedExtensions = runHash( + "sha256", + Utils.strToArrayBuffer(sortedExtensionsRaw) + ).substring(0, 12); + const originalExtensions = runHash( + "sha256", + Utils.strToArrayBuffer(originalExtensionsRaw) + ).substring(0, 12); + + return { + "JA4": `${ptype}${version}${sni}${cipherLen}${extLen}${alpn}_${sortedCiphers}_${sortedExtensions}`, + "JA4_o": `${ptype}${version}${sni}${cipherLen}${extLen}${alpn}_${originalCiphers}_${originalExtensions}`, + "JA4_r": `${ptype}${version}${sni}${cipherLen}${extLen}${alpn}_${sortedCiphersRaw}_${sortedExtensionsRaw}`, + "JA4_ro": `${ptype}${version}${sni}${cipherLen}${extLen}${alpn}_${originalCiphersRaw}_${originalExtensionsRaw}`, + }; +} diff --git a/src/core/lib/Stream.mjs b/src/core/lib/Stream.mjs index 18ce71c3..8253c4cf 100644 --- a/src/core/lib/Stream.mjs +++ b/src/core/lib/Stream.mjs @@ -18,12 +18,23 @@ export default class Stream { * Stream constructor. * * @param {Uint8Array} input + * @param {number} pos + * @param {number} bitPos */ - constructor(input) { + constructor(input, pos=0, bitPos=0) { this.bytes = input; this.length = this.bytes.length; - this.position = 0; - this.bitPos = 0; + this.position = pos; + this.bitPos = bitPos; + } + + /** + * Clone this Stream returning a new identical Stream. + * + * @returns {Stream} + */ + clone() { + return new Stream(this.bytes, this.position, this.bitPos); } /** diff --git a/src/core/lib/TLS.mjs b/src/core/lib/TLS.mjs new file mode 100644 index 00000000..e3f18eb3 --- /dev/null +++ b/src/core/lib/TLS.mjs @@ -0,0 +1,776 @@ +/** + * TLS resources. + * + * @author n1474335 [n1474335@gmail.com] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import OperationError from "../errors/OperationError.mjs"; +import Stream from "../lib/Stream.mjs"; + +/** + * Parse a TLS Record + * @param {Uint8Array} bytes + * @returns {JSON} + */ +export function parseTLSRecord(bytes) { + const s = new Stream(bytes); + const b = s.clone(); + const r = {}; + + // Content type + r.contentType = { + description: "Content Type", + length: 1, + data: b.getBytes(1), + value: s.readInt(1) + }; + if (r.contentType.value !== 0x16) + throw new OperationError("Not handshake data."); + + // Version + r.version = { + description: "Protocol Version", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + + // Length + r.length = { + description: "Record Length", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + if (s.length !== r.length.value + 5) + throw new OperationError("Incorrect handshake length."); + + // Handshake + r.handshake = { + description: "Handshake", + length: r.length.value, + data: b.getBytes(r.length.value), + value: parseHandshake(s.getBytes(r.length.value)) + }; + + return r; +} + +/** + * Parse a TLS Handshake + * @param {Uint8Array} bytes + * @returns {JSON} + */ +function parseHandshake(bytes) { + const s = new Stream(bytes); + const b = s.clone(); + const h = {}; + + // Handshake type + h.handshakeType = { + description: "Client Hello", + length: 1, + data: b.getBytes(1), + value: s.readInt(1) + }; + if (h.handshakeType.value !== 0x01) + throw new OperationError("Not a Client Hello."); + + // Handshake length + h.handshakeLength = { + description: "Handshake Length", + length: 3, + data: b.getBytes(3), + value: s.readInt(3) + }; + if (s.length !== h.handshakeLength.value + 4) + throw new OperationError("Not enough data in Client Hello."); + + // Hello version + h.helloVersion = { + description: "Client Hello Version", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + + // Random + h.random = { + description: "Client Random", + length: 32, + data: b.getBytes(32), + value: s.getBytes(32) + }; + + // Session ID Length + h.sessionIDLength = { + description: "Session ID Length", + length: 1, + data: b.getBytes(1), + value: s.readInt(1) + }; + + // Session ID + h.sessionID = { + description: "Session ID", + length: h.sessionIDLength.value, + data: b.getBytes(h.sessionIDLength.value), + value: s.getBytes(h.sessionIDLength.value) + }; + + // Cipher Suites Length + h.cipherSuitesLength = { + description: "Cipher Suites Length", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + + // Cipher Suites + h.cipherSuites = { + description: "Cipher Suites", + length: h.cipherSuitesLength.value, + data: b.getBytes(h.cipherSuitesLength.value), + value: parseCipherSuites(s.getBytes(h.cipherSuitesLength.value)) + }; + + // Compression Methods Length + h.compressionMethodsLength = { + description: "Compression Methods Length", + length: 1, + data: b.getBytes(1), + value: s.readInt(1) + }; + + // Compression Methods + h.compressionMethods = { + description: "Compression Methods", + length: h.compressionMethodsLength.value, + data: b.getBytes(h.compressionMethodsLength.value), + value: parseCompressionMethods(s.getBytes(h.compressionMethodsLength.value)) + }; + + // Extensions Length + h.extensionsLength = { + description: "Extensions Length", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + + // Extensions + h.extensions = { + description: "Extensions", + length: h.extensionsLength.value, + data: b.getBytes(h.extensionsLength.value), + value: parseExtensions(s.getBytes(h.extensionsLength.value)) + }; + + return h; +} + +/** + * Parse Cipher Suites + * @param {Uint8Array} bytes + * @returns {JSON} + */ +function parseCipherSuites(bytes) { + const s = new Stream(bytes); + const b = s.clone(); + const cs = []; + + while (s.hasMore()) { + cs.push({ + description: "Cipher Suite", + length: 2, + data: b.getBytes(2), + value: CIPHER_SUITES_LOOKUP[s.readInt(2)] || "Unknown" + }); + } + return cs; +} + +/** + * Parse Compression Methods + * @param {Uint8Array} bytes + * @returns {JSON} + */ +function parseCompressionMethods(bytes) { + const s = new Stream(bytes); + const b = s.clone(); + const cm = []; + + while (s.hasMore()) { + cm.push({ + description: "Compression Method", + length: 1, + data: b.getBytes(1), + value: s.readInt(1) // TODO: Compression method name here + }); + } + return cm; +} + +/** + * Parse Extensions + * @param {Uint8Array} bytes + * @returns {JSON} + */ +function parseExtensions(bytes) { + const s = new Stream(bytes); + const b = s.clone(); + + const exts = []; + while (s.hasMore()) { + const ext = {}; + + // Type + ext.type = { + description: "Extension Type", + length: 2, + data: b.getBytes(2), + value: EXTENSION_LOOKUP[s.readInt(2)] || "unknown" + }; + + // Length + ext.length = { + description: "Extension Length", + length: 2, + data: b.getBytes(2), + value: s.readInt(2) + }; + + // Value + ext.value = { + description: "Extension Value", + length: ext.length.value, + data: b.getBytes(ext.length.value), + value: s.getBytes(ext.length.value) + }; + + exts.push(ext); + } + + return exts; +} + +/** + * Extension type lookup table + */ +const EXTENSION_LOOKUP = { + 0: "server_name", + 1: "max_fragment_length", + 2: "client_certificate_url", + 3: "trusted_ca_keys", + 4: "truncated_hmac", + 5: "status_request", + 6: "user_mapping", + 7: "client_authz", + 8: "server_authz", + 9: "cert_type", + 10: "supported_groups", + 11: "ec_point_formats", + 12: "srp", + 13: "signature_algorithms", + 14: "use_srtp", + 15: "heartbeat", + 16: "application_layer_protocol_negotiation", + 17: "status_request_v2", + 18: "signed_certificate_timestamp", + 19: "client_certificate_type", + 20: "server_certificate_type", + 21: "padding", + 22: "encrypt_then_mac", + 23: "extended_master_secret", + 24: "token_binding", + 25: "cached_info", + 26: "tls_lts", + 27: "compress_certificate", + 28: "record_size_limit", + 29: "pwd_protect", + 30: "pwd_clear", + 31: "password_salt", + 32: "ticket_pinning", + 33: "tls_cert_with_extern_psk", + 34: "delegated_credential", + 35: "session_ticket", + 36: "TLMSP", + 37: "TLMSP_proxying", + 38: "TLMSP_delegate", + 39: "supported_ekt_ciphers", + 40: "Reserved", + 41: "pre_shared_key", + 42: "early_data", + 43: "supported_versions", + 44: "cookie", + 45: "psk_key_exchange_modes", + 46: "Reserved", + 47: "certificate_authorities", + 48: "oid_filters", + 49: "post_handshake_auth", + 50: "signature_algorithms_cert", + 51: "key_share", + 52: "transparency_info", + 53: "connection_id (deprecated)", + 54: "connection_id", + 55: "external_id_hash", + 56: "external_session_id", + 57: "quic_transport_parameters", + 58: "ticket_request", + 59: "dnssec_chain", + 60: "sequence_number_encryption_algorithms", + 61: "rrc", + 2570: "GREASE", + 6682: "GREASE", + 10794: "GREASE", + 14906: "GREASE", + 17513: "application_settings", + 19018: "GREASE", + 23130: "GREASE", + 27242: "GREASE", + 31354: "GREASE", + 35466: "GREASE", + 39578: "GREASE", + 43690: "GREASE", + 47802: "GREASE", + 51914: "GREASE", + 56026: "GREASE", + 60138: "GREASE", + 64250: "GREASE", + 64768: "ech_outer_extensions", + 65037: "encrypted_client_hello", + 65281: "renegotiation_info" +}; + +/** + * Cipher suites lookup table + */ +const CIPHER_SUITES_LOOKUP = { + 0x0000: "TLS_NULL_WITH_NULL_NULL", + 0x0001: "TLS_RSA_WITH_NULL_MD5", + 0x0002: "TLS_RSA_WITH_NULL_SHA", + 0x0003: "TLS_RSA_EXPORT_WITH_RC4_40_MD5", + 0x0004: "TLS_RSA_WITH_RC4_128_MD5", + 0x0005: "TLS_RSA_WITH_RC4_128_SHA", + 0x0006: "TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5", + 0x0007: "TLS_RSA_WITH_IDEA_CBC_SHA", + 0x0008: "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA", + 0x0009: "TLS_RSA_WITH_DES_CBC_SHA", + 0x000A: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", + 0x000B: "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA", + 0x000C: "TLS_DH_DSS_WITH_DES_CBC_SHA", + 0x000D: "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA", + 0x000E: "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA", + 0x000F: "TLS_DH_RSA_WITH_DES_CBC_SHA", + 0x0010: "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA", + 0x0011: "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", + 0x0012: "TLS_DHE_DSS_WITH_DES_CBC_SHA", + 0x0013: "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", + 0x0014: "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", + 0x0015: "TLS_DHE_RSA_WITH_DES_CBC_SHA", + 0x0016: "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", + 0x0017: "TLS_DH_anon_EXPORT_WITH_RC4_40_MD5", + 0x0018: "TLS_DH_anon_WITH_RC4_128_MD5", + 0x0019: "TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA", + 0x001A: "TLS_DH_anon_WITH_DES_CBC_SHA", + 0x001B: "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA", + 0x001E: "TLS_KRB5_WITH_DES_CBC_SHA", + 0x001F: "TLS_KRB5_WITH_3DES_EDE_CBC_SHA", + 0x0020: "TLS_KRB5_WITH_RC4_128_SHA", + 0x0021: "TLS_KRB5_WITH_IDEA_CBC_SHA", + 0x0022: "TLS_KRB5_WITH_DES_CBC_MD5", + 0x0023: "TLS_KRB5_WITH_3DES_EDE_CBC_MD5", + 0x0024: "TLS_KRB5_WITH_RC4_128_MD5", + 0x0025: "TLS_KRB5_WITH_IDEA_CBC_MD5", + 0x0026: "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", + 0x0027: "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA", + 0x0028: "TLS_KRB5_EXPORT_WITH_RC4_40_SHA", + 0x0029: "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", + 0x002A: "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5", + 0x002B: "TLS_KRB5_EXPORT_WITH_RC4_40_MD5", + 0x002C: "TLS_PSK_WITH_NULL_SHA", + 0x002D: "TLS_DHE_PSK_WITH_NULL_SHA", + 0x002E: "TLS_RSA_PSK_WITH_NULL_SHA", + 0x002F: "TLS_RSA_WITH_AES_128_CBC_SHA", + 0x0030: "TLS_DH_DSS_WITH_AES_128_CBC_SHA", + 0x0031: "TLS_DH_RSA_WITH_AES_128_CBC_SHA", + 0x0032: "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", + 0x0033: "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", + 0x0034: "TLS_DH_anon_WITH_AES_128_CBC_SHA", + 0x0035: "TLS_RSA_WITH_AES_256_CBC_SHA", + 0x0036: "TLS_DH_DSS_WITH_AES_256_CBC_SHA", + 0x0037: "TLS_DH_RSA_WITH_AES_256_CBC_SHA", + 0x0038: "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", + 0x0039: "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", + 0x003A: "TLS_DH_anon_WITH_AES_256_CBC_SHA", + 0x003B: "TLS_RSA_WITH_NULL_SHA256", + 0x003C: "TLS_RSA_WITH_AES_128_CBC_SHA256", + 0x003D: "TLS_RSA_WITH_AES_256_CBC_SHA256", + 0x003E: "TLS_DH_DSS_WITH_AES_128_CBC_SHA256", + 0x003F: "TLS_DH_RSA_WITH_AES_128_CBC_SHA256", + 0x0040: "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", + 0x0041: "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", + 0x0042: "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA", + 0x0043: "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA", + 0x0044: "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA", + 0x0045: "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA", + 0x0046: "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA", + 0x0067: "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", + 0x0068: "TLS_DH_DSS_WITH_AES_256_CBC_SHA256", + 0x0069: "TLS_DH_RSA_WITH_AES_256_CBC_SHA256", + 0x006A: "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", + 0x006B: "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", + 0x006C: "TLS_DH_anon_WITH_AES_128_CBC_SHA256", + 0x006D: "TLS_DH_anon_WITH_AES_256_CBC_SHA256", + 0x0084: "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", + 0x0085: "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA", + 0x0086: "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA", + 0x0087: "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA", + 0x0088: "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA", + 0x0089: "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA", + 0x008A: "TLS_PSK_WITH_RC4_128_SHA", + 0x008B: "TLS_PSK_WITH_3DES_EDE_CBC_SHA", + 0x008C: "TLS_PSK_WITH_AES_128_CBC_SHA", + 0x008D: "TLS_PSK_WITH_AES_256_CBC_SHA", + 0x008E: "TLS_DHE_PSK_WITH_RC4_128_SHA", + 0x008F: "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA", + 0x0090: "TLS_DHE_PSK_WITH_AES_128_CBC_SHA", + 0x0091: "TLS_DHE_PSK_WITH_AES_256_CBC_SHA", + 0x0092: "TLS_RSA_PSK_WITH_RC4_128_SHA", + 0x0093: "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA", + 0x0094: "TLS_RSA_PSK_WITH_AES_128_CBC_SHA", + 0x0095: "TLS_RSA_PSK_WITH_AES_256_CBC_SHA", + 0x0096: "TLS_RSA_WITH_SEED_CBC_SHA", + 0x0097: "TLS_DH_DSS_WITH_SEED_CBC_SHA", + 0x0098: "TLS_DH_RSA_WITH_SEED_CBC_SHA", + 0x0099: "TLS_DHE_DSS_WITH_SEED_CBC_SHA", + 0x009A: "TLS_DHE_RSA_WITH_SEED_CBC_SHA", + 0x009B: "TLS_DH_anon_WITH_SEED_CBC_SHA", + 0x009C: "TLS_RSA_WITH_AES_128_GCM_SHA256", + 0x009D: "TLS_RSA_WITH_AES_256_GCM_SHA384", + 0x009E: "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", + 0x009F: "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", + 0x00A0: "TLS_DH_RSA_WITH_AES_128_GCM_SHA256", + 0x00A1: "TLS_DH_RSA_WITH_AES_256_GCM_SHA384", + 0x00A2: "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", + 0x00A3: "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", + 0x00A4: "TLS_DH_DSS_WITH_AES_128_GCM_SHA256", + 0x00A5: "TLS_DH_DSS_WITH_AES_256_GCM_SHA384", + 0x00A6: "TLS_DH_anon_WITH_AES_128_GCM_SHA256", + 0x00A7: "TLS_DH_anon_WITH_AES_256_GCM_SHA384", + 0x00A8: "TLS_PSK_WITH_AES_128_GCM_SHA256", + 0x00A9: "TLS_PSK_WITH_AES_256_GCM_SHA384", + 0x00AA: "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256", + 0x00AB: "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384", + 0x00AC: "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256", + 0x00AD: "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384", + 0x00AE: "TLS_PSK_WITH_AES_128_CBC_SHA256", + 0x00AF: "TLS_PSK_WITH_AES_256_CBC_SHA384", + 0x00B0: "TLS_PSK_WITH_NULL_SHA256", + 0x00B1: "TLS_PSK_WITH_NULL_SHA384", + 0x00B2: "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256", + 0x00B3: "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384", + 0x00B4: "TLS_DHE_PSK_WITH_NULL_SHA256", + 0x00B5: "TLS_DHE_PSK_WITH_NULL_SHA384", + 0x00B6: "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256", + 0x00B7: "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384", + 0x00B8: "TLS_RSA_PSK_WITH_NULL_SHA256", + 0x00B9: "TLS_RSA_PSK_WITH_NULL_SHA384", + 0x00BA: "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256", + 0x00BB: "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256", + 0x00BC: "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256", + 0x00BD: "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256", + 0x00BE: "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", + 0x00BF: "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256", + 0x00C0: "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C1: "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C2: "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C3: "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C4: "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C5: "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256", + 0x00C6: "TLS_SM4_GCM_SM3", + 0x00C7: "TLS_SM4_CCM_SM3", + 0x00FF: "TLS_EMPTY_RENEGOTIATION_INFO_SCSV", + 0x0A0A: "GREASE", + 0x1301: "TLS_AES_128_GCM_SHA256", + 0x1302: "TLS_AES_256_GCM_SHA384", + 0x1303: "TLS_CHACHA20_POLY1305_SHA256", + 0x1304: "TLS_AES_128_CCM_SHA256", + 0x1305: "TLS_AES_128_CCM_8_SHA256", + 0x1306: "TLS_AEGIS_256_SHA512", + 0x1307: "TLS_AEGIS_128L_SHA256", + 0x1A1A: "GREASE", + 0x2A2A: "GREASE", + 0x3A3A: "GREASE", + 0x4A4A: "GREASE", + 0x5600: "TLS_FALLBACK_SCSV", + 0x5A5A: "GREASE", + 0x6A6A: "GREASE", + 0x7A7A: "GREASE", + 0x8A8A: "GREASE", + 0x9A9A: "GREASE", + 0xAAAA: "GREASE", + 0xBABA: "GREASE", + 0xC001: "TLS_ECDH_ECDSA_WITH_NULL_SHA", + 0xC002: "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", + 0xC003: "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", + 0xC004: "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", + 0xC005: "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", + 0xC006: "TLS_ECDHE_ECDSA_WITH_NULL_SHA", + 0xC007: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + 0xC008: "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", + 0xC009: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + 0xC00A: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + 0xC00B: "TLS_ECDH_RSA_WITH_NULL_SHA", + 0xC00C: "TLS_ECDH_RSA_WITH_RC4_128_SHA", + 0xC00D: "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", + 0xC00E: "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + 0xC00F: "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", + 0xC010: "TLS_ECDHE_RSA_WITH_NULL_SHA", + 0xC011: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + 0xC012: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", + 0xC013: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + 0xC014: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", + 0xC015: "TLS_ECDH_anon_WITH_NULL_SHA", + 0xC016: "TLS_ECDH_anon_WITH_RC4_128_SHA", + 0xC017: "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", + 0xC018: "TLS_ECDH_anon_WITH_AES_128_CBC_SHA", + 0xC019: "TLS_ECDH_anon_WITH_AES_256_CBC_SHA", + 0xC01A: "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA", + 0xC01B: "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA", + 0xC01C: "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA", + 0xC01D: "TLS_SRP_SHA_WITH_AES_128_CBC_SHA", + 0xC01E: "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA", + 0xC01F: "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA", + 0xC020: "TLS_SRP_SHA_WITH_AES_256_CBC_SHA", + 0xC021: "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA", + 0xC022: "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA", + 0xC023: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", + 0xC024: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", + 0xC025: "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", + 0xC026: "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", + 0xC027: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", + 0xC028: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", + 0xC029: "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", + 0xC02A: "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", + 0xC02B: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + 0xC02C: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + 0xC02D: "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", + 0xC02E: "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", + 0xC02F: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", + 0xC030: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + 0xC031: "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", + 0xC032: "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", + 0xC033: "TLS_ECDHE_PSK_WITH_RC4_128_SHA", + 0xC034: "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA", + 0xC035: "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA", + 0xC036: "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA", + 0xC037: "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256", + 0xC038: "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384", + 0xC039: "TLS_ECDHE_PSK_WITH_NULL_SHA", + 0xC03A: "TLS_ECDHE_PSK_WITH_NULL_SHA256", + 0xC03B: "TLS_ECDHE_PSK_WITH_NULL_SHA384", + 0xC03C: "TLS_RSA_WITH_ARIA_128_CBC_SHA256", + 0xC03D: "TLS_RSA_WITH_ARIA_256_CBC_SHA384", + 0xC03E: "TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256", + 0xC03F: "TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384", + 0xC040: "TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256", + 0xC041: "TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384", + 0xC042: "TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256", + 0xC043: "TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384", + 0xC044: "TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256", + 0xC045: "TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384", + 0xC046: "TLS_DH_anon_WITH_ARIA_128_CBC_SHA256", + 0xC047: "TLS_DH_anon_WITH_ARIA_256_CBC_SHA384", + 0xC048: "TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256", + 0xC049: "TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384", + 0xC04A: "TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256", + 0xC04B: "TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384", + 0xC04C: "TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256", + 0xC04D: "TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384", + 0xC04E: "TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256", + 0xC04F: "TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384", + 0xC050: "TLS_RSA_WITH_ARIA_128_GCM_SHA256", + 0xC051: "TLS_RSA_WITH_ARIA_256_GCM_SHA384", + 0xC052: "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256", + 0xC053: "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384", + 0xC054: "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256", + 0xC055: "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384", + 0xC056: "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256", + 0xC057: "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384", + 0xC058: "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256", + 0xC059: "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384", + 0xC05A: "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256", + 0xC05B: "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384", + 0xC05C: "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256", + 0xC05D: "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384", + 0xC05E: "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256", + 0xC05F: "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384", + 0xC060: "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256", + 0xC061: "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384", + 0xC062: "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256", + 0xC063: "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384", + 0xC064: "TLS_PSK_WITH_ARIA_128_CBC_SHA256", + 0xC065: "TLS_PSK_WITH_ARIA_256_CBC_SHA384", + 0xC066: "TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256", + 0xC067: "TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384", + 0xC068: "TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256", + 0xC069: "TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384", + 0xC06A: "TLS_PSK_WITH_ARIA_128_GCM_SHA256", + 0xC06B: "TLS_PSK_WITH_ARIA_256_GCM_SHA384", + 0xC06C: "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256", + 0xC06D: "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384", + 0xC06E: "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256", + 0xC06F: "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384", + 0xC070: "TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256", + 0xC071: "TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384", + 0xC072: "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256", + 0xC073: "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384", + 0xC074: "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256", + 0xC075: "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384", + 0xC076: "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", + 0xC077: "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384", + 0xC078: "TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256", + 0xC079: "TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384", + 0xC07A: "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC07B: "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC07C: "TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC07D: "TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC07E: "TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC07F: "TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC080: "TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256", + 0xC081: "TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384", + 0xC082: "TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256", + 0xC083: "TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384", + 0xC084: "TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256", + 0xC085: "TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384", + 0xC086: "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC087: "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC088: "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC089: "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC08A: "TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC08B: "TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC08C: "TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256", + 0xC08D: "TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384", + 0xC08E: "TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256", + 0xC08F: "TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384", + 0xC090: "TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256", + 0xC091: "TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384", + 0xC092: "TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256", + 0xC093: "TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384", + 0xC094: "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256", + 0xC095: "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384", + 0xC096: "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", + 0xC097: "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", + 0xC098: "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256", + 0xC099: "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384", + 0xC09A: "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", + 0xC09B: "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", + 0xC09C: "TLS_RSA_WITH_AES_128_CCM", + 0xC09D: "TLS_RSA_WITH_AES_256_CCM", + 0xC09E: "TLS_DHE_RSA_WITH_AES_128_CCM", + 0xC09F: "TLS_DHE_RSA_WITH_AES_256_CCM", + 0xC0A0: "TLS_RSA_WITH_AES_128_CCM_8", + 0xC0A1: "TLS_RSA_WITH_AES_256_CCM_8", + 0xC0A2: "TLS_DHE_RSA_WITH_AES_128_CCM_8", + 0xC0A3: "TLS_DHE_RSA_WITH_AES_256_CCM_8", + 0xC0A4: "TLS_PSK_WITH_AES_128_CCM", + 0xC0A5: "TLS_PSK_WITH_AES_256_CCM", + 0xC0A6: "TLS_DHE_PSK_WITH_AES_128_CCM", + 0xC0A7: "TLS_DHE_PSK_WITH_AES_256_CCM", + 0xC0A8: "TLS_PSK_WITH_AES_128_CCM_8", + 0xC0A9: "TLS_PSK_WITH_AES_256_CCM_8", + 0xC0AA: "TLS_PSK_DHE_WITH_AES_128_CCM_8", + 0xC0AB: "TLS_PSK_DHE_WITH_AES_256_CCM_8", + 0xC0AC: "TLS_ECDHE_ECDSA_WITH_AES_128_CCM", + 0xC0AD: "TLS_ECDHE_ECDSA_WITH_AES_256_CCM", + 0xC0AE: "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", + 0xC0AF: "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8", + 0xC0B0: "TLS_ECCPWD_WITH_AES_128_GCM_SHA256", + 0xC0B1: "TLS_ECCPWD_WITH_AES_256_GCM_SHA384", + 0xC0B2: "TLS_ECCPWD_WITH_AES_128_CCM_SHA256", + 0xC0B3: "TLS_ECCPWD_WITH_AES_256_CCM_SHA384", + 0xC0B4: "TLS_SHA256_SHA256", + 0xC0B5: "TLS_SHA384_SHA384", + 0xC100: "TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC", + 0xC101: "TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC", + 0xC102: "TLS_GOSTR341112_256_WITH_28147_CNT_IMIT", + 0xC103: "TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L", + 0xC104: "TLS_GOSTR341112_256_WITH_MAGMA_MGM_L", + 0xC105: "TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S", + 0xC106: "TLS_GOSTR341112_256_WITH_MAGMA_MGM_S", + 0xCACA: "GREASE", + 0xCCA8: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", + 0xCCA9: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", + 0xCCAA: "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256", + 0xCCAB: "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256", + 0xCCAC: "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256", + 0xCCAD: "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256", + 0xCCAE: "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256", + 0xD001: "TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256", + 0xD002: "TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384", + 0xD003: "TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256", + 0xD005: "TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256", + 0xDADA: "GREASE", + 0xEAEA: "GREASE", + 0xFAFA: "GREASE", +}; + +/** + * GREASE values + */ +export const GREASE_VALUES = [ + 0x0a0a, + 0x1a1a, + 0x2a2a, + 0x3a3a, + 0x4a4a, + 0x5a5a, + 0x6a6a, + 0x7a7a, + 0x8a8a, + 0x9a9a, + 0xaaaa, + 0xbaba, + 0xcaca, + 0xdada, + 0xeaea, + 0xfafa +]; + +/** + * Parses the supported_versions extension and returns the highest supported version. + * @param {Uint8Array} bytes + * @returns {number} + */ +export function parseHighestSupportedVersion(bytes) { + const s = new Stream(bytes); + + // Length + let i = s.readInt(1); + + let highestVersion = 0; + while (s.hasMore() && i-- > 0) { + const v = s.readInt(2); + if (GREASE_VALUES.includes(v)) continue; + if (v > highestVersion) highestVersion = v; + } + + return highestVersion; +} + +/** + * Parses the application_layer_protocol_negotiation extension and returns the first value. + * @param {Uint8Array} bytes + * @returns {number} + */ +export function parseFirstALPNValue(bytes) { + const s = new Stream(bytes); + const alpnExtLen = s.readInt(2); + if (alpnExtLen < 3) return "00"; + const strLen = s.readInt(1); + if (strLen < 2) return "00"; + return s.readString(strLen); +} diff --git a/src/core/operations/JA4Fingerprint.mjs b/src/core/operations/JA4Fingerprint.mjs new file mode 100644 index 00000000..31f57525 --- /dev/null +++ b/src/core/operations/JA4Fingerprint.mjs @@ -0,0 +1,73 @@ +/** + * @author n1474335 [n1474335@gmail.com] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import Utils from "../Utils.mjs"; +import {toJA4} from "../lib/JA4.mjs"; + +/** + * JA4 Fingerprint operation + */ +class JA4Fingerprint extends Operation { + + /** + * JA4Fingerprint constructor + */ + constructor() { + super(); + + this.name = "JA4 Fingerprint"; + this.module = "Crypto"; + this.description = "Generates a JA4 fingerprint to help identify TLS clients based on hashing together values from the Client Hello.

        Input: A hex stream of the TLS or QUIC Client Hello packet application layer."; + this.infoURL = "https://medium.com/foxio/ja4-network-fingerprinting-9376fe9ca637"; + this.inputType = "string"; + this.outputType = "string"; + this.args = [ + { + name: "Input format", + type: "option", + value: ["Hex", "Base64", "Raw"] + }, + { + name: "Output format", + type: "option", + value: ["JA4", "JA4 Original Rendering", "JA4 Raw", "JA4 Raw Original Rendering", "All"] + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const [inputFormat, outputFormat] = args; + input = Utils.convertToByteArray(input, inputFormat); + const ja4 = toJA4(new Uint8Array(input)); + + // Output + switch (outputFormat) { + case "JA4": + return ja4.JA4; + case "JA4 Original Rendering": + return ja4.JA4_o; + case "JA4 Raw": + return ja4.JA4_r; + case "JA4 Raw Original Rendering": + return ja4.JA4_ro; + case "All": + default: + return `JA4: ${ja4.JA4} +JA4_o: ${ja4.JA4_o} +JA4_r: ${ja4.JA4_r} +JA4_ro: ${ja4.JA4_ro}`; + } + } + +} + +export default JA4Fingerprint; diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index e85b6ad3..ef3ef41c 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -81,6 +81,7 @@ import "./tests/HKDF.mjs"; import "./tests/Image.mjs"; import "./tests/IndexOfCoincidence.mjs"; import "./tests/JA3Fingerprint.mjs"; +import "./tests/JA4Fingerprint.mjs"; import "./tests/JA3SFingerprint.mjs"; import "./tests/JSONBeautify.mjs"; import "./tests/JSONMinify.mjs"; diff --git a/tests/operations/tests/JA4Fingerprint.mjs b/tests/operations/tests/JA4Fingerprint.mjs new file mode 100644 index 00000000..dba84a38 --- /dev/null +++ b/tests/operations/tests/JA4Fingerprint.mjs @@ -0,0 +1,55 @@ +/** + * JA4Fingerprint tests. + * + * @author n1474335 [n1474335@gmail.com] + * @copyright Crown Copyright 2024 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "JA4 Fingerprint: TLS 1.3", + input: "1603010200010001fc0303b2c03e7ba990ef540c316a665d4d925f8e9079ac4b15687e587dc99016e75a6c20d0b0099243c9296a0c84153ea4ada7d87ad017f4211c2ea1350b0b3cc5514d5f00205a5a130113021303c02bc02fc02cc030cca9cca8c013c014009c009d002f003501000193fafa000000000024002200001f636f6e74656e742d6175746f66696c6c2e676f6f676c65617069732e636f6d0033002b00293a3a000100001d0020fb2cd8ef3d605b96ab03119ec4f30a6e2088cb1af86c41a81feace8706068c50000d001200100403080404010503080505010806060100230000000b00020100ff01000100000a000a00083a3a001d00170018001b000302000244690005000302683200120000002d000201010010000e000c02683208687474702f312e31000500050100000000002b0007060a0a03040303001700001a1a000100001500b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + expectedOutput: "t13d1516h2_8daaf6152771_e5627efa2ab1", + recipeConfig: [ + { + "op": "JA4 Fingerprint", + "args": ["Hex", "JA4"] + } + ], + }, + { + name: "JA4 Fingerprint: TLS 1.3 Original Rendering", + input: "1603010200010001fc0303b2c03e7ba990ef540c316a665d4d925f8e9079ac4b15687e587dc99016e75a6c20d0b0099243c9296a0c84153ea4ada7d87ad017f4211c2ea1350b0b3cc5514d5f00205a5a130113021303c02bc02fc02cc030cca9cca8c013c014009c009d002f003501000193fafa000000000024002200001f636f6e74656e742d6175746f66696c6c2e676f6f676c65617069732e636f6d0033002b00293a3a000100001d0020fb2cd8ef3d605b96ab03119ec4f30a6e2088cb1af86c41a81feace8706068c50000d001200100403080404010503080505010806060100230000000b00020100ff01000100000a000a00083a3a001d00170018001b000302000244690005000302683200120000002d000201010010000e000c02683208687474702f312e31000500050100000000002b0007060a0a03040303001700001a1a000100001500b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + expectedOutput: "t13d1516h2_acb858a92679_5276cb03a33b", + recipeConfig: [ + { + "op": "JA4 Fingerprint", + "args": ["Hex", "JA4 Original Rendering"] + } + ], + }, + { + name: "JA4 Fingerprint: TLS 1.2", + input: "1603010200010001fc0303ecb2691addb2bf6c599c7aaae23de5f42561cc04eb41029acc6fc050a16ac1d22046f8617b580ac9358e2aa44e306d52466bcc989c87c8ca64309f5faf50ba7b4d0022130113031302c02bc02fcca9cca8c02cc030c00ac009c013c014009c009d002f00350100019100000021001f00001c636f6e74696c652e73657276696365732e6d6f7a696c6c612e636f6d00170000ff01000100000a000e000c001d00170018001901000101000b00020100002300000010000e000c02683208687474702f312e310005000501000000000022000a000804030503060302030033006b0069001d00208909858fbeb6ed2f1248ba5b9e2978bead0e840110192c61daed0096798b184400170041044d183d91f5eed35791fa982464e3b0214aaa5f5d1b78616d9b9fbebc22d11f535b2f94c686143136aa795e6e5a875d6c08064ad5b76d44caad766e2483012748002b00050403040303000d0018001604030503060308040805080604010501060102030201002d00020101001c000240010015007a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + expectedOutput: "t13d1715h2_5b57614c22b0_3d5424432f57", + recipeConfig: [ + { + "op": "JA4 Fingerprint", + "args": ["Hex", "JA4"] + } + ], + }, + { + name: "JA4 Fingerprint: TLS 1.2 Original Rendering", + input: "1603010200010001fc0303ecb2691addb2bf6c599c7aaae23de5f42561cc04eb41029acc6fc050a16ac1d22046f8617b580ac9358e2aa44e306d52466bcc989c87c8ca64309f5faf50ba7b4d0022130113031302c02bc02fcca9cca8c02cc030c00ac009c013c014009c009d002f00350100019100000021001f00001c636f6e74696c652e73657276696365732e6d6f7a696c6c612e636f6d00170000ff01000100000a000e000c001d00170018001901000101000b00020100002300000010000e000c02683208687474702f312e310005000501000000000022000a000804030503060302030033006b0069001d00208909858fbeb6ed2f1248ba5b9e2978bead0e840110192c61daed0096798b184400170041044d183d91f5eed35791fa982464e3b0214aaa5f5d1b78616d9b9fbebc22d11f535b2f94c686143136aa795e6e5a875d6c08064ad5b76d44caad766e2483012748002b00050403040303000d0018001604030503060308040805080604010501060102030201002d00020101001c000240010015007a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + expectedOutput: "t13d1715h2_5b234860e130_014157ec0da2", + recipeConfig: [ + { + "op": "JA4 Fingerprint", + "args": ["Hex", "JA4 Original Rendering"] + } + ], + }, +]); From 943d01c208c3a2db47c0498245ede9d3ddd50faf Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Mar 2024 18:28:41 +0000 Subject: [PATCH 1019/1024] Updated CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d23d8d0a..eb352c28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.10.0] - 2024-03-27 +- Added 'JA4 Fingerprint' operation [@n1474335] | [#1759] + ### [10.9.0] - 2024-03-26 - Line ending sequences and UTF-8 character encoding are now detected automatically [@n1474335] | [65ffd8d] @@ -389,6 +392,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) +[10.10.0]: https://github.com/gchq/CyberChef/releases/tag/v10.10.0 [10.9.0]: https://github.com/gchq/CyberChef/releases/tag/v10.9.0 [10.8.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 [10.7.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 From 862cfdf0ae2eeafec1ee7b14099d44246677defc Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 27 Mar 2024 18:29:13 +0000 Subject: [PATCH 1020/1024] 10.10.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 658aef50..e9e03543 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cyberchef", - "version": "10.9.0", + "version": "10.10.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cyberchef", - "version": "10.9.0", + "version": "10.10.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index ca2924c8..4092451f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.9.0", + "version": "10.10.0", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef", From 27b7e3c4d654e797141413d8c45e23a22b304180 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Fri, 29 Mar 2024 02:02:00 +0000 Subject: [PATCH 1021/1024] Release v10.11.0 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb352c28..6cd3fbc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,11 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.11.0] - 2024-03-29 +- Add HEIC/HEIF file signatures [simonw] | [#1757] +- Update xmldom to fix medium security vulnerability [chriswhite199] | [#1752] +- Update JSONWebToken to fix medium security vulnerability [chriswhite199] | [#1753] + ### [10.10.0] - 2024-03-27 - Added 'JA4 Fingerprint' operation [@n1474335] | [#1759] @@ -392,6 +397,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) +[10.11.0]: https://github.com/gchq/CyberChef/releases/tag/v10.11.0 [10.10.0]: https://github.com/gchq/CyberChef/releases/tag/v10.10.0 [10.9.0]: https://github.com/gchq/CyberChef/releases/tag/v10.9.0 [10.8.0]: https://github.com/gchq/CyberChef/releases/tag/v10.7.0 @@ -559,6 +565,8 @@ All major and minor version changes will be documented in this file. Details of [@sg5506844]: https://github.com/sg5506844 [@AliceGrey]: https://github.com/AliceGrey [@AshCorr]: https://github.com/AshCorr +[@simonw]: https://github.com/simonw +[@chriswhite199]: https://github.com/chriswhite199 [8ad18b]: https://github.com/gchq/CyberChef/commit/8ad18bc7db6d9ff184ba3518686293a7685bf7b7 @@ -687,3 +695,6 @@ All major and minor version changes will be documented in this file. Details of [#1555]: https://github.com/gchq/CyberChef/issues/1555 [#1694]: https://github.com/gchq/CyberChef/issues/1694 [#1699]: https://github.com/gchq/CyberChef/issues/1694 +[#1757]: https://github.com/gchq/CyberChef/issues/1757 +[#1752]: https://github.com/gchq/CyberChef/issues/1752 +[#1753]: https://github.com/gchq/CyberChef/issues/1753 From 877c83eae7603e49979d96c767f69cedbe862b8e Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Fri, 29 Mar 2024 02:03:21 +0000 Subject: [PATCH 1022/1024] Fix changelog links --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cd3fbc6..01492ec0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,9 @@ All major and minor version changes will be documented in this file. Details of ## Details ### [10.11.0] - 2024-03-29 -- Add HEIC/HEIF file signatures [simonw] | [#1757] -- Update xmldom to fix medium security vulnerability [chriswhite199] | [#1752] -- Update JSONWebToken to fix medium security vulnerability [chriswhite199] | [#1753] +- Add HEIC/HEIF file signatures [@simonw] | [#1757] +- Update xmldom to fix medium security vulnerability [@chriswhite199] | [#1752] +- Update JSONWebToken to fix medium security vulnerability [@chriswhite199] | [#1753] ### [10.10.0] - 2024-03-27 - Added 'JA4 Fingerprint' operation [@n1474335] | [#1759] From 4fdea84534c8ad934618e1b288fca62d8f42647d Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Fri, 29 Mar 2024 02:34:49 +0000 Subject: [PATCH 1023/1024] 10.12.0 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01492ec0..c0a53c48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ All major and minor version changes will be documented in this file. Details of ## Details +### [10.12.0] - 2024-03-29 +- Added 'Salsa20' and 'XSalsa20' operation [@joostrijneveld] | [#1750] + ### [10.11.0] - 2024-03-29 - Add HEIC/HEIF file signatures [@simonw] | [#1757] - Update xmldom to fix medium security vulnerability [@chriswhite199] | [#1752] @@ -397,6 +400,7 @@ All major and minor version changes will be documented in this file. Details of ## [4.0.0] - 2016-11-28 - Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306) +[10.12.0]: https://github.com/gchq/CyberChef/releases/tag/v10.12.0 [10.11.0]: https://github.com/gchq/CyberChef/releases/tag/v10.11.0 [10.10.0]: https://github.com/gchq/CyberChef/releases/tag/v10.10.0 [10.9.0]: https://github.com/gchq/CyberChef/releases/tag/v10.9.0 @@ -698,3 +702,4 @@ All major and minor version changes will be documented in this file. Details of [#1757]: https://github.com/gchq/CyberChef/issues/1757 [#1752]: https://github.com/gchq/CyberChef/issues/1752 [#1753]: https://github.com/gchq/CyberChef/issues/1753 +[#1750]: https://github.com/gchq/CyberChef/issues/1750 From acce7ca717017bfba97cbac943502f522effc382 Mon Sep 17 00:00:00 2001 From: a3957273 <89583054+a3957273@users.noreply.github.com> Date: Fri, 29 Mar 2024 02:36:56 +0000 Subject: [PATCH 1024/1024] Bump package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 308b5f5f..c77548ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cyberchef", - "version": "10.10.0", + "version": "10.12.1", "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.", "author": "n1474335 ", "homepage": "https://gchq.github.io/CyberChef",