diff --git a/.eslintrc.js b/.eslintrc.js index 2f45ad9..ce75c5c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,4 @@ module.exports = { - "plugins": [ - "mocha" - ], "env": { "es6": true, "node": true, @@ -27,7 +24,6 @@ module.exports = { "semi": [ "error", "always" - ], - "mocha/no-exclusive-tests": "error" + ] } }; diff --git a/circuits/babyjub.circom b/circuits/babyjub.circom index 73cb84c..537b1a0 100644 --- a/circuits/babyjub.circom +++ b/circuits/babyjub.circom @@ -87,7 +87,7 @@ template BabyPbk() { signal output Ax; signal output Ay; - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/binsub.circom b/circuits/binsub.circom index ec52d83..6721442 100644 --- a/circuits/binsub.circom +++ b/circuits/binsub.circom @@ -48,12 +48,14 @@ template BinSub(n) { var lin = 2**n; var lout = 0; - for (var i=0; i> i) & 1; // Ensure out is binary diff --git a/circuits/binsum.circom b/circuits/binsum.circom index 3783e26..6fd79ad 100644 --- a/circuits/binsum.circom +++ b/circuits/binsum.circom @@ -72,19 +72,26 @@ template BinSum(n, ops) { var k; var j; + var e2; + + e2 = 1; for (k=0; k> k) & 1; // Ensure out is binary out[k] * (out[k] - 1) === 0; - lout += out[k] * 2**k; + lout += out[k] * e2; + + e2 = e2+e2; } // Ensure the sum; diff --git a/circuits/bitify.circom b/circuits/bitify.circom index 2050e13..60fb89c 100644 --- a/circuits/bitify.circom +++ b/circuits/bitify.circom @@ -26,10 +26,12 @@ template Num2Bits(n) { signal output out[n]; var lc1=0; + var e2=1; for (var i = 0; i> i) & 1; out[i] * (out[i] -1 ) === 0; - lc1 += out[i] * 2**i; + lc1 += out[i] * e2; + e2 = e2+e2; } lc1 === in; @@ -54,8 +56,10 @@ template Bits2Num(n) { signal output out; var lc1=0; + var e2 = 1; for (var i = 0; i out; diff --git a/circuits/compconstant.circom b/circuits/compconstant.circom index 96a6f1b..e7fb3f0 100644 --- a/circuits/compconstant.circom +++ b/circuits/compconstant.circom @@ -46,12 +46,11 @@ template CompConstant(ct) { slsb = in[i*2]; smsb = in[i*2+1]; - - if ((cmsb==0)&(clsb==0)) { + if ((cmsb==0)&&(clsb==0)) { parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; - } else if ((cmsb==0)&(clsb==1)) { + } else if ((cmsb==0)&&(clsb==1)) { parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; - } else if ((cmsb==1)&(clsb==0)) { + } else if ((cmsb==1)&&(clsb==0)) { parts[i] <== b*smsb*slsb - a*smsb + a; } else { parts[i] <== -a*smsb*slsb + a; diff --git a/circuits/eddsa.circom b/circuits/eddsa.circom index 1026774..bf126a7 100644 --- a/circuits/eddsa.circom +++ b/circuits/eddsa.circom @@ -122,7 +122,7 @@ template EdDSAVerifier(n) { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsamimc.circom b/circuits/eddsamimc.circom index aef5df5..5f0917a 100644 --- a/circuits/eddsamimc.circom +++ b/circuits/eddsamimc.circom @@ -100,7 +100,7 @@ template EdDSAMiMCVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsamimcsponge.circom b/circuits/eddsamimcsponge.circom index af38d57..8b2577d 100644 --- a/circuits/eddsamimcsponge.circom +++ b/circuits/eddsamimcsponge.circom @@ -100,7 +100,7 @@ template EdDSAMiMCSpongeVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsaposeidon.circom b/circuits/eddsaposeidon.circom index 0d9faa0..5ed63c9 100644 --- a/circuits/eddsaposeidon.circom +++ b/circuits/eddsaposeidon.circom @@ -99,7 +99,7 @@ template EdDSAPoseidonVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/escalarmul.circom b/circuits/escalarmul.circom index b3cc806..9cd13f7 100644 --- a/circuits/escalarmul.circom +++ b/circuits/escalarmul.circom @@ -71,7 +71,7 @@ template EscalarMulWindow(base, k) { signal input sel[4]; signal output out[2]; - var table; + var table[16][2]; component mux; component adder; diff --git a/circuits/escalarmulfix.circom b/circuits/escalarmulfix.circom index 8e3e031..e2c0998 100644 --- a/circuits/escalarmulfix.circom +++ b/circuits/escalarmulfix.circom @@ -176,6 +176,9 @@ template SegmentMulFix(nWindows) { cadders[i].in1[0] <== cadders[i-1].out[0]; cadders[i].in1[1] <== cadders[i-1].out[1]; } + for (j=0; j<3; j++) { + windows[i].in[j] <== e[3*i+j]; + } if (i ((-1) >> 1)) { + if (r < 0 ) { r = -r; } diff --git a/circuits/poseidon.circom b/circuits/poseidon.circom index dad6806..aac8d03 100644 --- a/circuits/poseidon.circom +++ b/circuits/poseidon.circom @@ -25,9 +25,12 @@ template Mix(t, M) { signal output out[t]; var lc; - for (var i=0; i= (nRoundsP + nRoundsF/2))) { k= i0; i--) { + for (i=nLevels-2; i>0; i--) { levIns[i] <== (1-done[i])*(1-isZero[i-1].out) done[i-1] <== levIns[i] + done[i]; } diff --git a/circuits/smt/smtprocessor.circom b/circuits/smt/smtprocessor.circom index d4e6fb4..61f8bed 100644 --- a/circuits/smt/smtprocessor.circom +++ b/circuits/smt/smtprocessor.circom @@ -150,6 +150,8 @@ template SMTProcessor(nLevels) { signal enabled; + var i; + enabled <== fnc[0] + fnc[1] - fnc[0]*fnc[1] component hash1Old = SMTHash1(); @@ -167,18 +169,18 @@ template SMTProcessor(nLevels) { n2bNew.in <== newKey; component smtLevIns = SMTLevIns(nLevels); - for (var i=0; i= 1.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "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==", + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" }, "dependencies": { "safe-buffer": { @@ -763,30 +693,49 @@ } } }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -824,6 +773,24 @@ "which": "^1.2.9" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "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" + } + }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -833,6 +800,14 @@ "type": "^1.0.1" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -851,6 +826,21 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + } + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -859,97 +849,113 @@ "mimic-response": "^1.0.0" } }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "requires": { - "type-detect": "^4.0.0" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "requires": { - "kind-of": "^5.0.2" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" } } }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "requires": { - "object-keys": "^1.0.12" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } } } }, - "des.js": { + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "diff": { "version": "3.5.0", @@ -957,6 +963,16 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -980,30 +996,34 @@ "create-hmac": "^1.1.4" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", + "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" + }, "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.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -1015,57 +1035,31 @@ } }, "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } }, - "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==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -1079,24 +1073,18 @@ } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -1104,55 +1092,238 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" - } - }, - "eslint-plugin-mocha": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", - "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", - "dev": true, - "requires": { - "ramda": "^0.26.1" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "cli-cursor": { + "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": "^3.1.0" + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "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 + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "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" + } + }, + "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" + } + } + } + }, + "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 + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "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": "^2.1.0" + } + }, + "restore-cursor": { + "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": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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, + "requires": { + "ansi-regex": "^4.1.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 + } + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "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" + } + } } }, "eslint-scope": { @@ -1165,11 +1336,11 @@ } }, "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==", "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -1193,11 +1364,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.0.0" + }, + "dependencies": { + "estraverse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==" + } } }, "esrecurse": { @@ -1218,6 +1396,11 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, "eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", @@ -1225,50 +1408,68 @@ "requires": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + } } }, "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "requires": { "bn.js": "^4.11.6", "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", "xhr-request-promise": "^0.1.2" } }, - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + "ethereum-bloom-filters": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz", + "integrity": "sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA==", + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" }, "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "requires": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" } }, "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", "requires": { + "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", "create-hash": "^1.1.2", - "ethjs-util": "^0.1.3", - "keccak": "^1.0.2", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", "secp256k1": "^3.0.1" } }, "ethers": { - "version": "4.0.32", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.32.tgz", - "integrity": "sha512-r0k2tBNF6MYEsvwmINeP3VPppD/7eAZyiOk/ifDDawXGCKqr3iEQkPq6OZSDVD+4Jie38WPteS9thXzpn2+A5Q==", + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", + "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", "requires": { "@types/node": "^10.3.2", "aes-js": "3.0.0", @@ -1276,12 +1477,17 @@ "elliptic": "6.3.3", "hash.js": "1.1.3", "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", + "scrypt-js": "2.0.3", "setimmediate": "1.0.4", "uuid": "2.0.1", "xmlhttprequest": "1.8.0" }, "dependencies": { + "@types/node": { + "version": "10.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz", + "integrity": "sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==" + }, "elliptic": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", @@ -1301,6 +1507,21 @@ "inherits": "^2.0.3", "minimalistic-assert": "^1.0.0" } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" } } }, @@ -1330,9 +1551,9 @@ } }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, "evp_bytestokey": { "version": "1.0.3", @@ -1357,18 +1578,41 @@ "strip-eof": "^1.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -1379,35 +1623,31 @@ "ms": "2.0.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", "requires": { - "homedir-polyfill": "^1.0.1" + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } } }, "extend": { @@ -1415,25 +1655,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -1442,93 +1663,83 @@ "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "os-tmpdir": "~1.0.2" } } } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "ffiasm": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ffiasm/-/ffiasm-0.0.2.tgz", + "integrity": "sha512-o/CL7F4IodB7eRHCOQL1SrqN2DIPHrQbEwjPY7NIyeBRdnB3G0xo6b6Mj44SKiWFnvpQMb3n4N7acjD3vv4NVQ==", + "requires": { + "big-integer": "^1.6.48", + "ejs": "^3.0.1", + "yargs": "^15.3.1" + } + }, + "ffjavascript": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.0.3.tgz", + "integrity": "sha512-uXbiC7cNbFzNJCdkGlbQf2d7GciY1ICMcBeAA7+D8RHPr9Y5zYiDRWtU5etjAV8TplE7eZQ9Iqd9ieFi0ARJLA==", + "requires": { + "big-integer": "^1.6.48" + } + }, + "ffwasm": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/ffwasm/-/ffwasm-0.0.5.tgz", + "integrity": "sha512-biz1jK3TjxpwigoBLWzvBNtuQAC6WBVzlI1sw2BQp3RqTei66OhJ6E2G+zSk2SubUVWlrgTN+WfE+Fmn3qdtgg==", + "requires": { + "big-integer": "^1.6.48", + "wasmbuilder": "0.0.8" + }, + "dependencies": { + "wasmbuilder": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.8.tgz", + "integrity": "sha512-d63cIsDmHnybA5hTlRRLadgys5r3Tl4W8SbcBRh13FauEPOo48dqjgzdL1xefpZkpKKybDRlFqgm+9cX04B3+w==", + "requires": { + "big-integer": "^1.6.43" + } + } + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -1545,68 +1756,54 @@ "flat-cache": "^2.0.1" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "is-extendable": "^0.1.0" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "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" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -1615,6 +1812,16 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { @@ -1622,51 +1829,57 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } + "fnv-plus": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", + "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "is-callable": "^1.1.3" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "for-own": { + "fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "requires": { - "map-cache": "^0.2.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -1674,720 +1887,542 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "ganache-cli": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.9.1.tgz", + "integrity": "sha512-VPBumkNUZzXDRQwVOby5YyQpd5t1clkr06xMgB28lZdEIn5ht1GMwUskOTFOAxdkQ4J12IWP0gdeacVRGowqbA==", + "dev": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "ethereumjs-util": "6.1.0", + "source-map-support": "0.5.12", + "yargs": "13.2.4" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", + "version": "4.1.0", "bundled": true, - "optional": true + "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", + "ansi-styles": { + "version": "3.2.1", "bundled": true, - "optional": true, + "dev": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "color-convert": "^1.9.0" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", + "bindings": { + "version": "1.5.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "file-uri-to-path": "1.0.0" } }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", + "bip66": { + "version": "1.1.5", "bundled": true, - "optional": true + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } }, - "concat-map": { - "version": "0.0.1", + "bn.js": { + "version": "4.11.8", "bundled": true, - "optional": true + "dev": true }, - "console-control-strings": { + "brorand": { "version": "1.1.0", "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true + "dev": true }, - "debug": { - "version": "4.1.1", + "browserify-aes": { + "version": "1.2.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "ms": "^2.1.1" + "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" } }, - "deep-extend": { - "version": "0.6.0", + "buffer-from": { + "version": "1.1.1", "bundled": true, - "optional": true + "dev": true }, - "delegates": { - "version": "1.0.0", + "buffer-xor": { + "version": "1.0.3", "bundled": true, - "optional": true + "dev": true }, - "detect-libc": { - "version": "1.0.3", + "camelcase": { + "version": "5.3.1", "bundled": true, - "optional": true + "dev": true }, - "fs-minipass": { - "version": "1.2.5", + "cipher-base": { + "version": "1.0.4", "bundled": true, - "optional": true, + "dev": true, "requires": { - "minipass": "^2.2.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", + "cliui": { + "version": "5.0.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "glob": { - "version": "7.1.3", + "color-convert": { + "version": "1.9.3", "bundled": true, - "optional": true, + "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" + "color-name": "1.1.3" } }, - "has-unicode": { - "version": "2.0.1", + "color-name": { + "version": "1.1.3", "bundled": true, - "optional": true + "dev": true }, - "iconv-lite": { - "version": "0.4.24", + "create-hash": { + "version": "1.2.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "ignore-walk": { - "version": "3.0.1", + "create-hmac": { + "version": "1.1.7", "bundled": true, - "optional": true, + "dev": true, "requires": { - "minimatch": "^3.0.4" + "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" } }, - "inflight": { - "version": "1.0.6", + "cross-spawn": { + "version": "6.0.5", "bundled": true, - "optional": true, + "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", + "decamelize": { + "version": "1.2.0", "bundled": true, - "optional": true + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", + "drbg.js": { + "version": "1.0.1", "bundled": true, - "optional": true, + "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", + "elliptic": { + "version": "6.5.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, - "minimist": { - "version": "0.0.8", + "emoji-regex": { + "version": "7.0.3", "bundled": true, - "optional": true + "dev": true }, - "minipass": { - "version": "2.3.5", + "end-of-stream": { + "version": "1.4.1", "bundled": true, - "optional": true, + "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "once": "^1.4.0" } }, - "minizlib": { - "version": "1.2.1", + "ethereumjs-util": { + "version": "6.1.0", "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, + "dev": true, "requires": { - "minimist": "0.0.8" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", + "ethjs-util": { + "version": "0.1.6", "bundled": true, - "optional": true, + "dev": true, "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" } }, - "node-pre-gyp": { - "version": "0.12.0", + "evp_bytestokey": { + "version": "1.0.3", "bundled": true, - "optional": true, + "dev": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "nopt": { - "version": "4.0.1", + "execa": { + "version": "1.0.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", + "file-uri-to-path": { + "version": "1.0.0", "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } + "dev": true }, - "npmlog": { - "version": "4.1.2", + "find-up": { + "version": "3.0.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "locate-path": "^3.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", + "get-caller-file": { + "version": "2.0.5", "bundled": true, - "optional": true + "dev": true }, - "once": { - "version": "1.4.0", + "get-stream": { + "version": "4.1.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "wrappy": "1" + "pump": "^3.0.0" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", + "hash-base": { + "version": "3.0.4", "bundled": true, - "optional": true, + "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", + "hash.js": { + "version": "1.1.7", "bundled": true, - "optional": true, + "dev": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "readable-stream": { - "version": "2.3.6", + "hmac-drbg": { + "version": "1.0.1", "bundled": true, - "optional": true, + "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" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "rimraf": { - "version": "2.6.3", + "inherits": { + "version": "2.0.4", "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } + "dev": true }, - "safe-buffer": { - "version": "5.1.2", + "invert-kv": { + "version": "2.0.0", "bundled": true, - "optional": true + "dev": true }, - "safer-buffer": { - "version": "2.1.2", + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true, - "optional": true + "dev": true }, - "sax": { - "version": "1.2.4", + "is-hex-prefixed": { + "version": "1.0.0", "bundled": true, - "optional": true + "dev": true }, - "semver": { - "version": "5.7.0", + "is-stream": { + "version": "1.1.0", "bundled": true, - "optional": true + "dev": true }, - "set-blocking": { + "isexe": { "version": "2.0.0", "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true + "dev": true }, - "string-width": { - "version": "1.0.2", + "keccak": { + "version": "1.4.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } }, - "string_decoder": { - "version": "1.1.1", + "lcid": { + "version": "2.0.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "invert-kv": "^2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", + "locate-path": { + "version": "3.0.0", "bundled": true, - "optional": true, + "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", + "map-age-cleaner": { + "version": "0.1.3", "bundled": true, - "optional": true, + "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "p-defer": "^1.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", + "md5.js": { + "version": "1.3.5", "bundled": true, - "optional": true, + "dev": true, "requires": { - "string-width": "^1.0.2 || 2" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "wrappy": { - "version": "1.0.2", + "mem": { + "version": "4.3.0", "bundled": true, - "optional": true + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "ganache-cli": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.4.4.tgz", - "integrity": "sha512-JWygbyZuM2GQl2ZvU7tBkjpgJaKE/XEtB99ech17XTouuqLU5rBcyO3sMb/L83wAtzr0gBnTgenIBl+OeREpJw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "source-map-support": "0.5.9", - "yargs": "11.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", + "mimic-fn": { + "version": "2.1.0", "bundled": true, "dev": true }, - "bn.js": { - "version": "4.11.8", + "minimalistic-assert": { + "version": "1.0.1", "bundled": true, "dev": true }, - "buffer-from": { - "version": "1.1.1", + "minimalistic-crypto-utils": { + "version": "1.0.1", "bundled": true, "dev": true }, - "camelcase": { - "version": "4.1.0", + "nan": { + "version": "2.14.0", "bundled": true, "dev": true }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", + "nice-try": { + "version": "1.0.5", "bundled": true, "dev": true }, - "cross-spawn": { - "version": "5.1.0", + "npm-run-path": { + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", + "once": { + "version": "1.4.0", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "wrappy": "1" } }, - "find-up": { - "version": "2.1.0", + "os-locale": { + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "locate-path": "^2.0.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "invert-kv": { + "p-defer": { "version": "1.0.0", "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", + "p-finally": { + "version": "1.0.0", "bundled": true, "dev": true }, - "isexe": { - "version": "2.0.0", + "p-is-promise": { + "version": "2.1.0", "bundled": true, "dev": true }, - "lcid": { - "version": "1.0.0", + "p-limit": { + "version": "2.2.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "p-try": "^2.0.0" } }, - "locate-path": { - "version": "2.0.0", + "p-locate": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-limit": "^2.0.0" } }, - "lru-cache": { - "version": "4.1.4", + "p-try": { + "version": "2.2.0", "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^3.0.2" - } + "dev": true }, - "mem": { - "version": "1.1.0", + "path-exists": { + "version": "3.0.0", "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } + "dev": true }, - "mimic-fn": { - "version": "1.2.0", + "path-key": { + "version": "2.0.1", "bundled": true, "dev": true }, - "npm-run-path": { - "version": "2.0.2", + "pump": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "path-key": "^2.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "number-is-nan": { - "version": "1.0.1", + "require-directory": { + "version": "2.1.1", "bundled": true, "dev": true }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", + "require-main-filename": { + "version": "2.0.0", "bundled": true, "dev": true }, - "p-limit": { - "version": "1.3.0", + "ripemd160": { + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "p-try": "^1.0.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "p-locate": { - "version": "2.0.0", + "rlp": { + "version": "2.2.3", "bundled": true, "dev": true, "requires": { - "p-limit": "^1.1.0" + "bn.js": "^4.11.1", + "safe-buffer": "^5.1.1" } }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", + "safe-buffer": { + "version": "5.2.0", "bundled": true, "dev": true }, - "require-directory": { - "version": "2.1.1", + "secp256k1": { + "version": "3.7.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + } }, - "require-main-filename": { - "version": "1.0.1", + "semver": { + "version": "5.7.0", "bundled": true, "dev": true }, @@ -2396,6 +2431,15 @@ "bundled": true, "dev": true }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "1.2.0", "bundled": true, @@ -2420,7 +2464,7 @@ "dev": true }, "source-map-support": { - "version": "0.5.9", + "version": "0.5.12", "bundled": true, "dev": true, "requires": { @@ -2429,20 +2473,21 @@ } }, "string-width": { - "version": "2.1.1", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", + "version": "5.2.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } }, "strip-eof": { @@ -2450,6 +2495,14 @@ "bundled": true, "dev": true }, + "strip-hex-prefix": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, "which": { "version": "1.3.1", "bundled": true, @@ -2464,90 +2517,58 @@ "dev": true }, "wrap-ansi": { - "version": "2.1.0", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, - "y18n": { - "version": "3.2.1", + "wrappy": { + "version": "1.0.2", "bundled": true, "dev": true }, - "yallist": { - "version": "3.0.2", + "y18n": { + "version": "4.0.0", "bundled": true, "dev": true }, "yargs": { - "version": "11.1.0", + "version": "13.2.4", "bundled": true, "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" } }, "yargs-parser": { - "version": "9.0.2", + "version": "13.1.1", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -2561,286 +2582,97 @@ "requires": { "pump": "^3.0.0" } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "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": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "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=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - } - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "requires": { - "camelcase": "^3.0.0" - } - } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "glogg": "^1.0.0" + "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" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.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==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "function-bind": "^1.1.1" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-flag": { @@ -2848,38 +2680,17 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "has-symbol-support-x": "^1.4.1" } }, "hash-base": { @@ -2916,18 +2727,44 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } }, "iconv-lite": { "version": "0.4.24", @@ -2952,15 +2789,20 @@ } } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "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==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2985,11 +2827,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, "inquirer": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", @@ -3011,9 +2848,33 @@ }, "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==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } }, "strip-ansi": { "version": "5.2.0", @@ -3021,124 +2882,37 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.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==" + } } } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, "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==" }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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=" + "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==" }, "is-function": { "version": "1.0.1", @@ -3149,6 +2923,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -3158,99 +2933,41 @@ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3261,15 +2978,24 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } }, "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "js-tokens": { "version": "4.0.0", @@ -3285,6 +3011,21 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3295,42 +3036,47 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "keccak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", - "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "bindings": "^1.2.1", - "inherits": "^2.0.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "graceful-fs": "^4.1.6" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" } }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "requires": { - "readable-stream": "^2.0.5" + "json-buffer": "3.0.0" } }, "lcid": { @@ -3341,14 +3087,6 @@ "invert-kv": "^2.0.0" } }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "requires": { - "flush-write-stream": "^1.0.2" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -3358,40 +3096,12 @@ "type-check": "~0.3.2" } }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -3399,67 +3109,34 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "make-iterator": { + "lowercase-keys": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -3470,6 +3147,11 @@ "safe-buffer": "^5.1.2" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, "mem": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", @@ -3487,24 +3169,41 @@ } } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "mime-db": "1.43.0" } }, "mimic-fn": { @@ -3544,35 +3243,41 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", "requires": { - "minimist": "0.0.8" + "mkdirp": "*" } }, "mocha": { @@ -3594,6 +3299,12 @@ "supports-color": "5.4.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==", + "dev": true + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -3617,6 +3328,21 @@ "path-is-absolute": "^1.0.0" } }, + "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.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3634,16 +3360,16 @@ } } }, + "mock-fs": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.11.0.tgz", + "integrity": "sha512-Yp4o3/ZA15wsXqJTT+R+9w2AYIkD1i80Lds47wDbuUhOvQvm+O2EfjFZSz0pMgZZSPHRhGxgcd2+GL4+jZMtdw==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -3654,34 +3380,26 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + }, "nanoassert": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -3692,32 +3410,10 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "requires": { - "once": "^1.3.2" - } + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, "npm-run-path": { "version": "2.0.2", @@ -3748,98 +3444,30 @@ } } }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "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", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "oboe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", "requires": { - "isobject": "^3.0.1" + "http-https": "^1.0.0" } }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "ee-first": "1.1.1" } }, "once": { @@ -3858,41 +3486,17 @@ "mimic-fn": "^1.0.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "requires": { - "readable-stream": "^2.0.1" + "word-wrap": "~1.2.3" } }, "os-locale": { @@ -3910,6 +3514,11 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -3926,19 +3535,27 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "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==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "requires": { - "p-limit": "^2.0.0" + "p-finally": "^1.0.0" } }, "p-try": { @@ -3954,57 +3571,33 @@ "callsites": "^3.0.0" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "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" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -4021,33 +3614,10 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pathval": { "version": "1.1.0", @@ -4066,6 +3636,16 @@ "sha.js": "^2.4.8" } }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -4084,20 +3664,15 @@ "pinkie": "^2.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "process": { "version": "0.5.2", @@ -4114,6 +3689,33 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4123,32 +3725,16 @@ "once": "^1.3.1" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, "query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", @@ -4159,16 +3745,13 @@ "strict-uri-encode": "^1.0.0" } }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" - }, - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true + "r1csfile": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.2.tgz", + "integrity": "sha512-H1aR5NYRJ/RUrHWR/PNEivFEDkLV4R0+4SlKo2eq/fyiWxwgZNapOkjnJXsy5TZn40uFVrud0uOxGyVWgm9rDg==", + "requires": { + "big-integer": "^1.6.48" + } }, "randombytes": { "version": "2.1.0", @@ -4178,149 +3761,89 @@ "safe-buffer": "^5.1.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "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==" - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" } }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "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==", "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "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" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } } }, "require-directory": { @@ -4329,50 +3852,23 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } + "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==" }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "value-or-function": "^3.0.0" + "lowercase-keys": "^1.0.0" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -4382,15 +3878,10 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -4405,26 +3896,25 @@ } }, "rlp": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.3.tgz", - "integrity": "sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.4.tgz", + "integrity": "sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw==", "requires": { - "bn.js": "^4.11.1", - "safe-buffer": "^5.1.1" + "bn.js": "^4.11.1" } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "requires": { "is-promise": "^2.1.0" } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "requires": { "tslib": "^1.9.0" } @@ -4434,108 +3924,128 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "scrypt": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", - "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", - "optional": true, - "requires": { - "nan": "^2.0.8" - } - }, "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" - }, - "scrypt.js": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", - "integrity": "sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A==", - "requires": { - "scrypt": "^6.0.2", - "scryptsy": "^1.2.1" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" }, "scryptsy": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", - "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", - "requires": { - "pbkdf2": "^3.0.3" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" }, "secp256k1": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", - "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", + "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", "requires": { "bindings": "^1.5.0", "bip66": "^1.1.5", "bn.js": "^4.11.8", "create-hash": "^1.2.0", "drbg.js": "^1.0.1", - "elliptic": "^6.4.1", + "elliptic": "^6.5.2", "nan": "^2.14.0", "safe-buffer": "^5.1.2" } }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "requires": { - "sver-compat": "^1.5.0" + "commander": "~2.8.1" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "is-extendable": "^0.1.0" + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } + }, + "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==" } } }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sha.js": { "version": "2.4.11", @@ -4587,245 +4097,266 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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": { - "ms": "2.0.0" + "color-convert": "^1.9.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "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": { - "is-descriptor": "^0.1.0" + "color-name": "1.1.3" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "ms": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" } } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "snarkjs": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.20.tgz", + "integrity": "sha512-tYmWiVm1sZiB44aIh5w/3HUaTntTUC4fv+CWs4rR0gfkt2KbHTpArOqZW++/Lxujrn9IypXVhdKVUr/eE6Hxfg==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "big-integer": "^1.6.43", + "chai": "^4.2.0", + "escape-string-regexp": "^1.0.5", + "eslint": "^5.16.0", + "keccak": "^2.0.0", + "yargs": "^12.0.5" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "is-descriptor": "^1.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "requires": { - "kind-of": "^6.0.0" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "kind-of": "^6.0.0" + "locate-path": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "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=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "is-buffer": "^1.1.5" + "p-limit": "^2.0.0" } - } - } - }, - "snarkjs": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.20.tgz", - "integrity": "sha512-tYmWiVm1sZiB44aIh5w/3HUaTntTUC4fv+CWs4rR0gfkt2KbHTpArOqZW++/Lxujrn9IypXVhdKVUr/eE6Hxfg==", - "requires": { - "big-integer": "^1.6.43", - "chai": "^4.2.0", - "escape-string-regexp": "^1.0.5", - "eslint": "^5.16.0", - "keccak": "^2.0.0", - "yargs": "^12.0.5" - }, - "dependencies": { - "keccak": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.0.0.tgz", - "integrity": "sha512-rKe/lRr0KGhjoz97cwg+oeT1Rj/Y4cjae6glArioUC8JBF9ROGZctwIaaruM7d7naovME4Q8WcQSO908A8qcyQ==", + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "bindings": "^1.2.1", - "inherits": "^2.0.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "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=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "strict-uri-encode": { "version": "1.1.0", @@ -4833,22 +4364,13 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.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=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "string_decoder": { @@ -4867,19 +4389,19 @@ } }, "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==", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "requires": { - "is-utf8": "^0.2.0" + "is-natural-number": "^4.0.1" } }, "strip-eof": { @@ -4908,13 +4430,69 @@ "has-flag": "^3.0.0" } }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "swarm-js": { + "version": "0.1.39", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.39.tgz", + "integrity": "sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } } }, "table": { @@ -4933,6 +4511,16 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -4953,6 +4541,34 @@ } } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4963,106 +4579,73 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", "requires": { - "os-tmpdir": "~1.0.2" + "rimraf": "^2.6.3" } }, - "to-absolute-glob": { + "tmp-promise": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-2.0.2.tgz", + "integrity": "sha512-zl71nFWjPKW2KXs+73gEk8RmqvtAeXPxhWDkTUoa3MSMkjq3I+9OeknjF178MQoMYsdqL730hfzvNfEkePxq9Q==", "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "tmp": "0.1.0" } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "through2": "^2.0.3" + "safe-buffer": "^5.0.1" } }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", - "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "type-check": { "version": "0.3.2", @@ -5077,10 +4660,20 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "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", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } }, "typedarray-to-buffer": { "version": "3.1.5", @@ -5090,92 +4683,34 @@ "is-typedarray": "^1.0.0" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } + "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==" }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, - "unset-value": { + "unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "uri-js": { "version": "4.2.2", @@ -5185,18 +4720,12 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" + "prepend-http": "^2.0.0" } }, "url-set-query": { @@ -5204,220 +4733,218 @@ "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, "utf8": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz", - "integrity": "sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "homedir-polyfill": "^1.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "wasmbuilder": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.9.tgz", + "integrity": "sha512-QJ550VwQvN6P4oW0d+/tCfo3i+1GBuuFX906r8QpDRryYXmXvdRZWJM0qkHgOfhg8G47SfgJVYNl3fyLfkxaPw==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "big-integer": "^1.6.48" } }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "web3": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.6.tgz", + "integrity": "sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA==", "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "@types/node": "^12.6.1", + "web3-bzz": "1.2.6", + "web3-core": "1.2.6", + "web3-eth": "1.2.6", + "web3-eth-personal": "1.2.6", + "web3-net": "1.2.6", + "web3-shh": "1.2.6", + "web3-utils": "1.2.6" } }, - "web3": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.55.tgz", - "integrity": "sha512-yJpwy4IUA3T/F9hWzYQVn0GbJCrAaZ0KTIO3iuqkhaYH0Y09KV7k4GzFi4hN7hT4cFTj4yIKaeVCwQ5kzvi2Vg==", + "web3-bzz": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.6.tgz", + "integrity": "sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ==", "requires": { - "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "web3-core": "1.0.0-beta.55", - "web3-eth": "1.0.0-beta.55", - "web3-eth-personal": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-shh": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "got": "9.6.0", + "swarm-js": "0.1.39", + "underscore": "1.9.1" + }, + "dependencies": { + "@types/node": { + "version": "10.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz", + "integrity": "sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==" + } } }, "web3-core": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.55.tgz", - "integrity": "sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.6.tgz", + "integrity": "sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw==", "requires": { - "@babel/runtime": "^7.3.1", "@types/bn.js": "^4.11.4", - "@types/node": "^10.12.18", - "lodash": "^4.17.11", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "@types/node": "^12.6.1", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-requestmanager": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-core-helpers": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz", - "integrity": "sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz", + "integrity": "sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw==", "requires": { - "@babel/runtime": "^7.3.1", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-eth-iban": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-eth-iban": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-core-method": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz", - "integrity": "sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.6.tgz", + "integrity": "sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g==", "requires": { - "@babel/runtime": "^7.3.1", - "eventemitter3": "3.1.0", - "lodash": "^4.17.11", - "rxjs": "^6.4.0", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-utils": "1.2.6" + } + }, + "web3-core-promievent": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz", + "integrity": "sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw==", + "requires": { + "any-promise": "1.3.0", + "eventemitter3": "3.1.2" + } + }, + "web3-core-requestmanager": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz", + "integrity": "sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6", + "web3-providers-http": "1.2.6", + "web3-providers-ipc": "1.2.6", + "web3-providers-ws": "1.2.6" } }, "web3-core-subscriptions": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz", - "integrity": "sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz", + "integrity": "sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q==", "requires": { - "@babel/runtime": "^7.3.1", - "eventemitter3": "^3.1.0", - "lodash": "^4.17.11" + "eventemitter3": "3.1.2", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" } }, "web3-eth": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.55.tgz", - "integrity": "sha512-F3zJ9I1gOgQdNGfi2Dy2lmj6OqCMJoRN01XHhQZagq0HY1JYMfObtfMi5E3L+qsegsSddHbqp4YY57tKx6uxpA==", - "requires": { - "@babel/runtime": "^7.3.1", - "ethereumjs-tx": "^1.3.7", - "rxjs": "^6.4.0", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-eth-contract": "1.0.0-beta.55", - "web3-eth-ens": "1.0.0-beta.55", - "web3-eth-iban": "1.0.0-beta.55", - "web3-eth-personal": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.6.tgz", + "integrity": "sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw==", + "requires": { + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-eth-accounts": "1.2.6", + "web3-eth-contract": "1.2.6", + "web3-eth-ens": "1.2.6", + "web3-eth-iban": "1.2.6", + "web3-eth-personal": "1.2.6", + "web3-net": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-abi": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.55.tgz", - "integrity": "sha512-3h1xnm/vYmKUXTOYAOP0OsB5uijQV76pNNRGKOB6Dq6GR1pbcbD3WrB/4I643YA8l91t5FRzFzUiA3S77R2iqw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz", + "integrity": "sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA==", "requires": { - "@babel/runtime": "^7.3.1", - "ethers": "^4.0.27", - "lodash": "^4.17.11", - "web3-utils": "1.0.0-beta.55" + "ethers": "4.0.0-beta.3", + "underscore": "1.9.1", + "web3-utils": "1.2.6" } }, "web3-eth-accounts": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.55.tgz", - "integrity": "sha512-VfzvwpSDHXqRVelIxsBVhgbV9BkFvhJ/q+bKhnVUUXV0JAhMK/7uC92TsqKk4EBYuqpHyZ1jjqrL4n03fMU7zw==", - "requires": { - "@babel/runtime": "^7.3.1", - "browserify-cipher": "^1.0.1", - "eth-lib": "0.2.8", - "lodash": "^4.17.11", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "scrypt.js": "0.3.0", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz", + "integrity": "sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw==", + "requires": { + "@web3-js/scrypt-shim": "^0.1.0", + "any-promise": "1.3.0", + "crypto-browserify": "3.12.0", + "eth-lib": "^0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-utils": "1.2.6" }, "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -5426,155 +4953,132 @@ } }, "web3-eth-contract": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.55.tgz", - "integrity": "sha512-v6oB1wfH039/A5sTb4ZTKX++fcBTHEkuQGpq50ATIDoxP/UTz2+6S+iL+3sCJTsByPw2/Bni/HM7NmLkXqzg/Q==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz", + "integrity": "sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw==", "requires": { - "@babel/runtime": "^7.3.1", "@types/bn.js": "^4.11.4", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-ens": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.55.tgz", - "integrity": "sha512-jEL17coO0FJXb7KYq4+7DhVXj0Rh+wHfZ86jOvFUvJsRaUHfqK2TlMatuhD2mbrmxpBYb6oMPnXVnNK9bnD5Rg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz", + "integrity": "sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw==", "requires": { - "@babel/runtime": "^7.3.1", "eth-ens-namehash": "2.0.8", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-eth-contract": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-eth-contract": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-iban": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz", - "integrity": "sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz", + "integrity": "sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg==", "requires": { - "@babel/runtime": "^7.3.1", "bn.js": "4.11.8", - "web3-utils": "1.0.0-beta.55" + "web3-utils": "1.2.6" } }, "web3-eth-personal": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.55.tgz", - "integrity": "sha512-H0mahLQx6Oj7lpgTamKAswr3rHChRUZijeWAar2Hj7BABQlLRKwx8n09nYhxggvvLYQNQS90JjvQue7rAo2LQQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz", + "integrity": "sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g==", "requires": { - "@babel/runtime": "^7.3.1", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "@types/node": "^12.6.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-net": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-net": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.55.tgz", - "integrity": "sha512-do2WY8+/GArJSWX7k/zZ7nBnV9Y3n6LhPYkwT3LeFqDzD515bKwlomaNC8hOaTc6UQyXIoPprYTK2FevL7jrZw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.6.tgz", + "integrity": "sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A==", "requires": { - "@babel/runtime": "^7.3.1", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "web3-core": "1.2.6", + "web3-core-method": "1.2.6", + "web3-utils": "1.2.6" } }, - "web3-providers": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-providers/-/web3-providers-1.0.0-beta.55.tgz", - "integrity": "sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ==", + "web3-providers-http": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.6.tgz", + "integrity": "sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw==", "requires": { - "@babel/runtime": "^7.3.1", - "@types/node": "^10.12.18", - "eventemitter3": "3.1.0", - "lodash": "^4.17.11", - "url-parse": "1.4.4", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55", - "websocket": "^1.0.28", + "web3-core-helpers": "1.2.6", "xhr2-cookies": "1.1.0" } }, + "web3-providers-ipc": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz", + "integrity": "sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A==", + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" + } + }, + "web3-providers-ws": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz", + "integrity": "sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ==", + "requires": { + "@web3-js/websocket": "^1.0.29", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" + } + }, "web3-shh": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.55.tgz", - "integrity": "sha512-lGP2HQ/1ThNnfoU8677aL48KsTx4Ht+2KQIn39dGpxVZqysQmovQIltbymVnAr4h8wofwcEz46iNHGa+PAyNzA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.6.tgz", + "integrity": "sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw==", "requires": { - "@babel/runtime": "^7.3.1", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "web3-core": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-net": "1.2.6" } }, "web3-utils": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.55.tgz", - "integrity": "sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.6.tgz", + "integrity": "sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg==", "requires": { - "@babel/runtime": "^7.3.1", - "@types/bn.js": "^4.11.4", - "@types/node": "^10.12.18", "bn.js": "4.11.8", - "eth-lib": "0.2.8", - "ethjs-unit": "^0.1.6", - "lodash": "^4.17.11", + "eth-lib": "0.2.7", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", - "utf8": "2.1.1" - } - }, - "websocket": { - "version": "1.0.29", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.29.tgz", - "integrity": "sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g==", - "requires": { - "debug": "^2.2.0", - "gulp": "^4.0.2", - "nan": "^2.11.0", - "typedarray-to-buffer": "^3.1.5", - "yaeti": "^0.0.6" + "underscore": "1.9.1", + "utf8": "3.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", "requires": { - "ms": "2.0.0" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -5591,51 +5095,19 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "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==" }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "wrappy": { @@ -5651,6 +5123,23 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -5712,33 +5201,46 @@ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "requires": { - "cliui": "^4.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } } } } diff --git a/package.json b/package.json index 70ffb89..e1335b3 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,15 @@ "dependencies": { "blake-hash": "^1.1.0", "blake2b": "^2.1.3", - "circom": "0.0.35", + "circom": "0.5.2", + "ffjavascript": "0.0.3", "snarkjs": "^0.1.20", "typedarray-to-buffer": "^3.1.5", - "web3": "^1.0.0-beta.55" + "web3": "^1.2.6" }, "devDependencies": { - "eslint-plugin-mocha": "^5.2.0", - "ganache-cli": "^6.4.4", + "eslint": "^6.8.0", + "ganache-cli": "^6.9.1", "mocha": "^5.2.0" } } diff --git a/src/babyjub.js b/src/babyjub.js index b3630fd..38c60d9 100644 --- a/src/babyjub.js +++ b/src/babyjub.js @@ -1,5 +1,6 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const ZqField = require("ffjavascript").ZqField; +const utils = require("./utils.js"); exports.addPoint = addPoint; exports.mulPointEscalar = mulPointEscalar; @@ -16,14 +17,14 @@ exports.Base8 = [ bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; exports.order = bigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328"); -exports.subOrder = exports.order.shr(3); -exports.p = bn128.r; +exports.subOrder = exports.order.shiftRight(3); +exports.p = bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); exports.A = bigInt("168700"); exports.D = bigInt("168696"); function addPoint(a,b) { - const q = bn128.r; + const F = new ZqField(exports.p); const res = []; @@ -31,8 +32,25 @@ function addPoint(a,b) { res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt("1") + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt("1") - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); */ - res[0] = bigInt((bigInt(a[0]).mul(b[1]).add(bigInt(b[0]).mul(a[1]))).mul(bigInt(bigInt("1").add(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); - res[1] = bigInt((bigInt(a[1]).mul(b[1]).sub(exports.A.mul(a[0]).mul(b[0]))).mul(bigInt(bigInt("1").sub(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); + + const beta = F.mul(a[0],b[1]); + const gamma = F.mul(a[1],b[0]); + const delta = F.mul( + F.sub(a[1], F.mul(exports.A, a[0])), + F.add(b[0], b[1]) + ); + const tau = F.mul(beta, gamma); + const dtau = F.mul(exports.D, tau); + + res[0] = F.div( + F.add(beta, gamma), + F.add(bigInt.one, dtau) + ); + + res[1] = F.div( + F.add(delta, F.sub(F.mul(exports.A,beta), gamma)), + F.sub(bigInt.one, dtau) + ); return res; } @@ -47,7 +65,7 @@ function mulPointEscalar(base, e) { res = addPoint(res, exp); } exp = addPoint(exp, exp); - rem = rem.shr(1); + rem = rem.shiftRight(1); } return res; @@ -60,12 +78,12 @@ function inSubgroup(P) { } function inCurve(P) { - const F = bn128.Fr; + const F = new ZqField(exports.p); const x2 = F.square(P[0]); const y2 = F.square(P[1]); - if (!F.equals( + if (!F.eq( F.add(F.mul(exports.A, x2), y2), F.add(F.one, F.mul(F.mul(x2, y2), exports.D)))) return false; @@ -73,15 +91,15 @@ function inCurve(P) { } function packPoint(P) { - const buff = bigInt.leInt2Buff(P[1], 32); - if (P[0].greater(exports.p.shr(1))) { + const buff = utils.leInt2Buff(P[1], 32); + if (P[0].greater(exports.p.shiftRight(1))) { buff[31] = buff[31] | 0x80; } return buff; } function unpackPoint(_buff) { - const F = bn128.Fr; + const F = new ZqField(exports.p); const buff = Buffer.from(_buff); let sign = false; @@ -90,7 +108,7 @@ function unpackPoint(_buff) { sign = true; buff[31] = buff[31] & 0x7F; } - P[1] = bigInt.leBuff2int(buff); + P[1] = utils.leBuff2int(buff); if (P[1].greaterOrEquals(exports.p)) return null; const y2 = F.square(P[1]); @@ -103,7 +121,7 @@ function unpackPoint(_buff) { if (sign) x = F.neg(x); - P[0] = F.affine(x); + P[0] = x; return P; } diff --git a/src/eddsa.js b/src/eddsa.js index beae967..adc2d6c 100644 --- a/src/eddsa.js +++ b/src/eddsa.js @@ -1,11 +1,13 @@ const createBlakeHash = require("blake-hash"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const babyJub = require("./babyjub"); +const utils = require("./utils"); const pedersenHash = require("./pedersenHash").hash; const mimc7 = require("./mimc7"); const poseidon = require("./poseidon.js"); const mimcsponge = require("./mimcsponge"); + exports.prv2pub= prv2pub; exports.sign = sign; exports.signMiMC = signMiMC; @@ -30,26 +32,26 @@ function pruneBuffer(_buff) { function prv2pub(prv) { const sBuff = pruneBuffer(createBlakeHash("blake512").update(prv).digest().slice(0,32)); - let s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + let s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); return A; } function sign(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msg])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const R8p = babyJub.packPoint(R8); const Ap = babyJub.packPoint(A); const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); - const hm = bigInt.leBuff2int(hmBuff); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const hm = utils.leBuff2int(hmBuff); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -59,16 +61,16 @@ function sign(prv, msg) { function signMiMC(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hm = mimc7.multiHash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -78,16 +80,16 @@ function signMiMC(prv, msg) { function signMiMCSponge(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hm = mimcsponge.multiHash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -97,17 +99,17 @@ function signMiMCSponge(prv, msg) { function signPoseidon(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hash = poseidon.createHash(6, 8, 57); const hm = hash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -128,10 +130,10 @@ function verify(msg, sig, A) { const R8p = babyJub.packPoint(sig.R8); const Ap = babyJub.packPoint(A); const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); - const hm = bigInt.leBuff2int(hmBuff); + const hm = utils.leBuff2int(hmBuff); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -153,7 +155,7 @@ function verifyMiMC(msg, sig, A) { const hm = mimc7.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -177,7 +179,7 @@ function verifyPoseidon(msg, sig, A) { const hm = hash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -199,7 +201,7 @@ function verifyMiMCSponge(msg, sig, A) { const hm = mimcsponge.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -209,14 +211,14 @@ function verifyMiMCSponge(msg, sig, A) { function packSignature(sig) { const R8p = babyJub.packPoint(sig.R8); - const Sp = bigInt.leInt2Buff(sig.S, 32); + const Sp = utils.leInt2Buff(sig.S, 32); return Buffer.concat([R8p, Sp]); } function unpackSignature(sigBuff) { return { R8: babyJub.unpackPoint(sigBuff.slice(0,32)), - S: bigInt.leBuff2int(sigBuff.slice(32,64)) + S: utils.leBuff2int(sigBuff.slice(32,64)) }; } diff --git a/src/mimc7.js b/src/mimc7.js index d2f84c1..6ae1a8f 100644 --- a/src/mimc7.js +++ b/src/mimc7.js @@ -1,7 +1,8 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const ZqField = require("ffjavascript").ZqField; + const Web3Utils = require("web3-utils"); -const F = bn128.Fr; +const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); const SEED = "mimc"; const NROUNDS = 91; @@ -10,7 +11,7 @@ exports.getIV = (seed) => { if (typeof seed === "undefined") seed = SEED; const c = Web3Utils.keccak256(seed+"_iv"); const cn = bigInt(Web3Utils.toBN(c).toString()); - const iv = cn.mod(F.q); + const iv = cn.mod(F.p); return iv; }; @@ -22,7 +23,7 @@ exports.getConstants = (seed, nRounds) => { for (let i=1; i{ for (let i=0; i { @@ -60,5 +61,5 @@ exports.multiHash = (arr, key) => { exports.hash(bigInt(arr[i]), r) ); } - return F.affine(r); + return r; }; diff --git a/src/mimcsponge.js b/src/mimcsponge.js index 73ce0c5..6b5e4db 100644 --- a/src/mimcsponge.js +++ b/src/mimcsponge.js @@ -1,7 +1,7 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const Web3Utils = require("web3-utils"); -const F = bn128.Fr; +const ZqField = require("ffjavascript").ZqField; +const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); const SEED = "mimcsponge"; const NROUNDS = 220; @@ -10,7 +10,7 @@ exports.getIV = (seed) => { if (typeof seed === "undefined") seed = SEED; const c = Web3Utils.keccak256(seed+"_iv"); const cn = bigInt(Web3Utils.toBN(c).toString()); - const iv = cn.mod(F.q); + const iv = cn.mod(F.p); return iv; }; @@ -22,7 +22,7 @@ exports.getConstants = (seed, nRounds) => { for (let i=1; i{ const t = (i==0) ? F.add(xL, k) : F.add(F.add(xL, k), c); const xR_tmp = bigInt(xR); if (i < (NROUNDS - 1)) { - xR = xL; - xL = F.add(xR_tmp, F.exp(t, 5)); + xR = xL; + xL = F.add(xR_tmp, F.pow(t, 5)); } else { - xR = F.add(xR_tmp, F.exp(t, 5)); + xR = F.add(xR_tmp, F.pow(t, 5)); } } return { - xL: F.affine(xL), - xR: F.affine(xR), + xL: F.normalize(xL), + xR: F.normalize(xR), }; }; exports.multiHash = (arr, key, numOutputs) => { if (typeof(numOutputs) === "undefined") { - numOutputs = 1; + numOutputs = 1; } if (typeof(key) === "undefined") { key = F.zero; @@ -66,21 +66,21 @@ exports.multiHash = (arr, key, numOutputs) => { let C = F.zero; for (let i=0; i F.affine(x)); + return outputs.map(x => F.normalize(x)); } }; diff --git a/src/pedersenHash.js b/src/pedersenHash.js index e14f089..efd5229 100644 --- a/src/pedersenHash.js +++ b/src/pedersenHash.js @@ -1,5 +1,4 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const babyJub = require("./babyjub"); const createBlakeHash = require("blake-hash"); @@ -32,18 +31,18 @@ function pedersenHash(msg) { let acc = bigInt.one; for (let b=0; ((b { for (let i=0; i { } mix(state, M); } - return F.affine(state[0]); + return F.normalize(state[0]); }; }; diff --git a/src/smt.js b/src/smt.js index 197516e..926adf3 100644 --- a/src/smt.js +++ b/src/smt.js @@ -1,4 +1,4 @@ -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const SMTMemDB = require("./smt_memdb"); const {hash0, hash1} = require("./smt_hashes_poseidon"); @@ -21,7 +21,7 @@ class SMT { } else { res.push(false); } - k = k.shr(1); + k = k.shiftRight(1); } while (res.length<256) res.push(false); diff --git a/src/smt_hashes_mimc.js b/src/smt_hashes_mimc.js index 99887db..0798338 100644 --- a/src/smt_hashes_mimc.js +++ b/src/smt_hashes_mimc.js @@ -1,5 +1,5 @@ const mimc7 = require("./mimc7"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); exports.hash0 = function (left, right) { return mimc7.multiHash(left, right); diff --git a/src/smt_hashes_poseidon.js b/src/smt_hashes_poseidon.js index 8ad8770..f4da325 100644 --- a/src/smt_hashes_poseidon.js +++ b/src/smt_hashes_poseidon.js @@ -1,5 +1,5 @@ const Poseidon = require("./poseidon"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const hash = Poseidon.createHash(6, 8, 57); diff --git a/src/smt_memdb.js b/src/smt_memdb.js index c88f2c1..e4d9ce5 100644 --- a/src/smt_memdb.js +++ b/src/smt_memdb.js @@ -1,4 +1,4 @@ -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); class SMTMemDb { constructor() { diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..9d57919 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,87 @@ +const bigInt = require("big-integer"); + +module.exports.leBuff2int = leBuff2int; +module.exports.leInt2Buff = leInt2Buff; +module.exports.beBuff2int = beBuff2int; +module.exports.beInt2Buff = beInt2Buff; +module.exports.stringifyBigInts = stringifyBigInts; +module.exports.unstringifyBigInts = unstringifyBigInts; + +function leBuff2int (buff) { + let res = bigInt.zero; + for (let i=0; i=0)) { + let c = Number(r.and(bigInt(255))); + buff[o] = c; + o--; + r = r.shiftRight(8); + } + if (r.gt(bigInt.zero)) throw new Error("Number does not feed in buffer"); + return buff; +} + + +function stringifyBigInts(o) { + if ((typeof(o) == "bigint") || o.isZero !== undefined) { + return o.toString(10); + } else if (Array.isArray(o)) { + return o.map(stringifyBigInts); + } else if (typeof o == "object") { + const res = {}; + for (let k in o) { + res[k] = stringifyBigInts(o[k]); + } + return res; + } else { + return o; + } +} + +function unstringifyBigInts(o) { + if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) { + return bigInt(o); + } else if (Array.isArray(o)) { + return o.map(unstringifyBigInts); + } else if (typeof o == "object") { + const res = {}; + for (let k in o) { + res[k] = unstringifyBigInts(o[k]); + } + return res; + } else { + return o; + } +} diff --git a/test/aliascheck.js b/test/aliascheck.js index 85ff2ae..2ec8700 100644 --- a/test/aliascheck.js +++ b/test/aliascheck.js @@ -1,11 +1,11 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); + +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); @@ -14,7 +14,7 @@ function print(circuit, w, s) { function getBits(v, n) { const res = []; for (let i=0; i { - let circuit; - before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "aliascheck_test.circom")); +describe("Aliascheck test", function () { + this.timeout(100000); - circuit = new snarkjs.Circuit(cirDef); + let cir; + before( async() => { - console.log("NConstrains: " + circuit.nConstraints); + cir = await tester(path.join(__dirname, "circuits", "aliascheck_test.circom")); }); it("Satisfy the aliastest 0", async () => { const inp = getBits(bigInt.zero, 254); - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); }); it("Satisfy the aliastest 3", async () => { const inp = getBits(bigInt(3), 254); - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); }); it("Satisfy the aliastest q-1", async () => { - const inp = getBits(q.sub(bigInt.one), 254); - circuit.calculateWitness({in: inp}); + const inp = getBits(q.minus(bigInt.one), 254); + await cir.calculateWitness({in: inp}, true); }); - it("Nhot not satisfy an input of q", async () => { + it("Should not satisfy an input of q", async () => { const inp = getBits(q, 254); try { - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); } }); - it("Nhot not satisfy all ones", async () => { + it("Should not satisfy all ones", async () => { - const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); + const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt.one), 254); try { - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); diff --git a/test/babyjub.js b/test/babyjub.js index c650cfa..4a89cc8 100644 --- a/test/babyjub.js +++ b/test/babyjub.js @@ -1,103 +1,89 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); const createBlakeHash = require("blake-hash"); const eddsa = require("../src/eddsa.js"); const assert = chai.assert; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; +const utils = require("../src/utils.js"); describe("Baby Jub test", function () { let circuitAdd; let circuitTest; + let circuitPbk; this.timeout(100000); before( async() => { - const cirDefAdd = await compiler(path.join(__dirname, "circuits", "babyadd_tester.circom")); - circuitAdd = new snarkjs.Circuit(cirDefAdd); - console.log("NConstrains BabyAdd: " + circuitAdd.nConstraints); + circuitAdd = await tester(path.join(__dirname, "circuits", "babyadd_tester.circom")); - const cirDefTest = await compiler(path.join(__dirname, "circuits", "babycheck_test.circom")); - circuitTest = new snarkjs.Circuit(cirDefTest); - console.log("NConstrains BabyTest: " + circuitTest.nConstraints); - - const cirDefPbk = await compiler(path.join(__dirname, "circuits", "babypbk_test.circom")); - circuitPbk = new snarkjs.Circuit(cirDefPbk); - console.log("NConstrains BabyPbk: " + circuitPbk.nConstraints); + circuitTest = await tester(path.join(__dirname, "circuits", "babycheck_test.circom")); + circuitPbk = await tester(path.join(__dirname, "circuits", "babypbk_test.circom")); }); it("Should add point (0,1) and (0,1)", async () => { const input={ - x1: snarkjs.bigInt(0), - y1: snarkjs.bigInt(1), - x2: snarkjs.bigInt(0), - y2: snarkjs.bigInt(1) + x1: bigInt(0), + y1: bigInt(1), + x2: bigInt(0), + y2: bigInt(1) }; - const w = circuitAdd.calculateWitness(input); - - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; + const w = await circuitAdd.calculateWitness(input, true); - assert(xout.equals(0)); - assert(yout.equals(1)); + await circuitAdd.assertOut(w, {xout: bigInt(0), yout: bigInt(1)}); }); it("Should add 2 same numbers", async () => { const input={ - x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), - x2: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y2: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") + x1: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y2: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") }; - const w = circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input, true); - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; + await circuitAdd.assertOut(w, { + xout: bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + yout: bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889") + }); - assert(xout.equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); - assert(yout.equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); }); it("Should add 2 different numbers", async () => { const input={ - x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), - x2: snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), - y2: snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") + x1: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + y2: bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") }; - const w = circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input, true); - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; + await circuitAdd.assertOut(w, { + xout: bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"), + yout: bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499") + }); - /* - console.log(xout.toString()); - console.log(yout.toString()); - */ - - assert(xout.equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); - assert(yout.equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); }); - it("Should check 0 is a valid poiny", async() => { - const w = circuitTest.calculateWitness({x: 0, y:1}); - assert(circuitTest.checkWitness(w)); + it("Should check (0,1) is a valid point", async() => { + const w = await circuitTest.calculateWitness({x: 0, y:1}, true); + + await circuitTest.checkConstraints(w); }); - it("Should check 0 is an invalid poiny", async() => { + it("Should check (1,0) is an invalid point", async() => { try { - circuitTest.calculateWitness({x: 1, y: 0}); + await circuitTest.calculateWitness({x: 1, y: 0}, true); assert(false, "Should be a valid point"); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)168700\s!=\s1/.test(err.message) ); @@ -108,18 +94,19 @@ describe("Baby Jub test", function () { const rawpvk = Buffer.from("0001020304050607080900010203040506070809000102030405060708090021", "hex"); const pvk = eddsa.pruneBuffer(createBlakeHash("blake512").update(rawpvk).digest().slice(0,32)); - const S = bigInt.leBuff2int(pvk).shr(3); + const S = utils.leBuff2int(pvk).shiftRight(3); const A = eddsa.prv2pub(rawpvk); const input = { - in : S, - Ax : A[0], - Ay : A[1] - } + in : S + }; + + const w = await circuitPbk.calculateWitness(input, true); + + await circuitPbk.assertOut(w, {Ax : A[0], Ay: A[1]}); - const w = circuitPbk.calculateWitness(input); - assert(circuitPbk.checkWitness(w)); + await circuitPbk.checkConstraints(w); }); }); diff --git a/test/babyjub_js.js b/test/babyjub_js.js index 8e1fc33..b65d71c 100644 --- a/test/babyjub_js.js +++ b/test/babyjub_js.js @@ -1,7 +1,5 @@ const chai = require("chai"); -const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); const babyjub = require("../src/babyjub.js"); const assert = chai.assert; @@ -16,14 +14,14 @@ describe("Baby Jub js test", function () { it("Should add point (0,1) and (0,1)", () => { const p1 = [ - snarkjs.bigInt(0), - snarkjs.bigInt(1)]; + bigInt(0), + bigInt(1)]; const p2 = [ - snarkjs.bigInt(0), - snarkjs.bigInt(1) + bigInt(0), + bigInt(1) ]; - const out = babyjub.addPoint(p1, p2) + const out = babyjub.addPoint(p1, p2); assert(out[0].equals(0)); assert(out[1].equals(1)); }); @@ -41,43 +39,43 @@ describe("Baby Jub js test", function () { it("Should add 2 same numbers", () => { const p1 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const p2 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const out = babyjub.addPoint(p1, p2) - assert(out[0].equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); - assert(out[1].equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); + const out = babyjub.addPoint(p1, p2); + assert(out[0].equals(bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); + assert(out[1].equals(bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); }); it("Should add 2 different numbers", () => { const p1 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const p2 = [ - snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), - snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311"), + bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311"), ]; - const out = babyjub.addPoint(p1, p2) + const out = babyjub.addPoint(p1, p2); - assert(out[0].equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); - assert(out[1].equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); + assert(out[0].equals(bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); + assert(out[1].equals(bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); }); it("should mulPointEscalar 0", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("3")); + const r = babyjub.mulPointEscalar(p, bigInt("3")); let r2 = babyjub.addPoint(p, p); r2 = babyjub.addPoint(r2, p); assert.equal(r2[0].toString(), r[0].toString()); @@ -88,65 +86,65 @@ describe("Baby Jub js test", function () { it("should mulPointEscalar 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499")); + const r = babyjub.mulPointEscalar(p, bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499")); assert.equal(r[0].toString(), "17070357974431721403481313912716834497662307308519659060910483826664480189605"); assert.equal(r[1].toString(), "4014745322800118607127020275658861516666525056516280575712425373174125159339"); }); it("should mulPointEscalar 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311")); + const r = babyjub.mulPointEscalar(p, bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311")); assert.equal(r[0].toString(), "13563888653650925984868671744672725781658357821216877865297235725727006259983"); assert.equal(r[1].toString(), "8442587202676550862664528699803615547505326611544120184665036919364004251662"); }); it("should inCurve 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; assert(babyjub.inCurve(p)); }); it("should inCurve 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; assert(babyjub.inCurve(p)); }); it("should inSubgroup 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; assert(babyjub.inSubgroup(p)); }); it("should inSubgroup 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; assert(babyjub.inSubgroup(p)); }); it("should packPoint - unpackPoint 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const buf = babyjub.packPoint(p); - assert.equal(buf.toString('hex'), '53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85'); + assert.equal(buf.toString("hex"), "53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85"); const p2 = babyjub.unpackPoint(buf); assert.equal(p2[0].toString(), "17777552123799933955779906779655732241715742912184938656739573121738514868268"); assert.equal(p2[1].toString(), "2626589144620713026669568689430873010625803728049924121243784502389097019475"); @@ -154,11 +152,11 @@ describe("Baby Jub js test", function () { it("should packPoint - unpackPoint 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; const buf = babyjub.packPoint(p); - assert.equal(buf.toString('hex'), 'e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709'); + assert.equal(buf.toString("hex"), "e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709"); const p2 = babyjub.unpackPoint(buf); assert.equal(p2[0].toString(), "6890855772600357754907169075114257697580319025794532037257385534741338397365"); assert.equal(p2[1].toString(), "4338620300185947561074059802482547481416142213883829469920100239455078257889"); diff --git a/test/binsub.js b/test/binsub.js index 21e5ad3..972f1db 100644 --- a/test/binsub.js +++ b/test/binsub.js @@ -1,55 +1,50 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -function checkSub(_a,_b, circuit) { +async function checkSub(_a,_b, circuit) { let a=bigInt(_a); let b=bigInt(_b); - if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shl(16)); - if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shl(16)); - const w = circuit.calculateWitness({a: a, b: b}); + if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shiftLeft(16)); + if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shiftLeft(16)); + const w = await circuit.calculateWitness({a: a, b: b}, true); - let res = a.sub(b); - if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shl(16)); - assert( w[circuit.getSignalIdx("main.out")].equals(bigInt(res)) ); + let res = a.minus(b); + if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shiftLeft(16)); + await circuit.assertOut(w, {out: bigInt(res)}); } -describe("BinSub test", () => { - let circuit; - before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "binsub_test.circom")); +describe("BinSub test", function () { - circuit = new snarkjs.Circuit(cirDef); + this.timeout(100000); - console.log("NConstrains BinSub: " + circuit.nConstraints); + let circuit; + before( async() => { + circuit = await tester(path.join(__dirname, "circuits", "binsub_test.circom")); }); it("Should check variuos ege cases", async () => { - checkSub(0,0, circuit); - checkSub(1,0, circuit); - checkSub(-1,0, circuit); - checkSub(2,1, circuit); - checkSub(2,2, circuit); - checkSub(2,3, circuit); - checkSub(2,-1, circuit); - checkSub(2,-2, circuit); - checkSub(2,-3, circuit); - checkSub(-2,-3, circuit); - checkSub(-2,-2, circuit); - checkSub(-2,-1, circuit); - checkSub(-2,0, circuit); - checkSub(-2,1, circuit); - checkSub(-2,2, circuit); - checkSub(-2,3, circuit); + await checkSub(0,0, circuit); + await checkSub(1,0, circuit); + await checkSub(-1,0, circuit); + await checkSub(2,1, circuit); + await checkSub(2,2, circuit); + await checkSub(2,3, circuit); + await checkSub(2,-1, circuit); + await checkSub(2,-2, circuit); + await checkSub(2,-3, circuit); + await checkSub(-2,-3, circuit); + await checkSub(-2,-2, circuit); + await checkSub(-2,-1, circuit); + await checkSub(-2,0, circuit); + await checkSub(-2,1, circuit); + await checkSub(-2,2, circuit); + await checkSub(-2,3, circuit); }); diff --git a/test/binsum.js b/test/binsum.js index 099ad38..54d7500 100644 --- a/test/binsum.js +++ b/test/binsum.js @@ -1,35 +1,37 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const crypto = require("crypto"); -const compiler = require("circom"); +const tester = require("circom").tester; + +const bigInt = require("big-integer"); const assert = chai.assert; -describe("Sum test", () => { - it("Should create a constant circuit", async () => { +describe("Binary sum test", function () { - const cirDef = await compiler(path.join(__dirname, "circuits", "constants_test.circom")); - assert.equal(cirDef.nVars, 2); + this.timeout(100000000); - const circuit = new snarkjs.Circuit(cirDef); + it("Should create a constant circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "constants_test.circom")); + await circuit.loadConstraints(); - const witness = circuit.calculateWitness({ "in": "0xd807aa98" }); + assert.equal(circuit.nVars, 2); + assert.equal(circuit.constraints.length, 1); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt("0xd807aa98"))); + const witness = await circuit.calculateWitness({ "in": bigInt("d807aa98", 16)}, true); + + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt("d807aa98", 16))); }); it("Should create a sum circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "sum_test.circom")); + await circuit.loadConstraints(); - const cirDef = await compiler(path.join(__dirname, "circuits", "sum_test.circom")); - assert.equal(cirDef.nVars, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) - - const circuit = new snarkjs.Circuit(cirDef); + assert.equal(circuit.constraints.length, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) - const witness = circuit.calculateWitness({ "a": "111", "b": "222" }); + const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }, true); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt("333"))); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt("333"))); }); }); diff --git a/test/circuits/binsub_test.circom b/test/circuits/binsub_test.circom index a633064..254b6f3 100644 --- a/test/circuits/binsub_test.circom +++ b/test/circuits/binsub_test.circom @@ -6,6 +6,8 @@ template A() { signal input b; signal output out; + var i; + component n2ba = Num2Bits(16); component n2bb = Num2Bits(16); component sub = BinSub(16); @@ -14,9 +16,12 @@ template A() { n2ba.in <== a; n2bb.in <== b; - for (var i=0; i<16; i++) { + for (i=0; i<16; i++) { sub.in[0][i] <== n2ba.out[i]; sub.in[1][i] <== n2bb.out[i]; + } + + for (i=0; i<16; i++) { b2n.in[i] <== sub.out[i]; } diff --git a/test/circuits/escalarmul_test.circom b/test/circuits/escalarmul_test.circom index c15535d..1af53ac 100644 --- a/test/circuits/escalarmul_test.circom +++ b/test/circuits/escalarmul_test.circom @@ -6,7 +6,7 @@ template Main() { signal input in; signal output out[2]; - var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203]; diff --git a/test/circuits/escalarmul_test_min.circom b/test/circuits/escalarmul_test_min.circom index 6973701..2b8c7ba 100644 --- a/test/circuits/escalarmul_test_min.circom +++ b/test/circuits/escalarmul_test_min.circom @@ -7,8 +7,8 @@ template Main() { var i; - var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; component escalarMul = EscalarMul(256, base); diff --git a/test/circuits/escalarmulfix_test.circom b/test/circuits/escalarmulfix_test.circom index 9a9d777..7d80b79 100644 --- a/test/circuits/escalarmulfix_test.circom +++ b/test/circuits/escalarmulfix_test.circom @@ -6,8 +6,8 @@ template Main() { signal input e; signal output out[2]; - var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203] + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] component n2b = Num2Bits(253); diff --git a/test/circuits/escalarmulw4table.circom b/test/circuits/escalarmulw4table.circom index 85c5507..43143b6 100644 --- a/test/circuits/escalarmulw4table.circom +++ b/test/circuits/escalarmulw4table.circom @@ -1,6 +1,6 @@ include "../../circuits/escalarmulw4table.circom"; -var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, +var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203] component main = EscalarMulW4Table(base, 0); diff --git a/test/circuits/escalarmulw4table_test.circom b/test/circuits/escalarmulw4table_test.circom index 852628d..9f6777f 100644 --- a/test/circuits/escalarmulw4table_test.circom +++ b/test/circuits/escalarmulw4table_test.circom @@ -4,10 +4,10 @@ include "../../circuits/escalarmulw4table.circom"; template Main() { signal input in; signal output out[16][2]; - var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - var escalarMul = EscalarMulW4Table(base, 0); + var escalarMul[16][2] = EscalarMulW4Table(base, 0); for (var i=0; i<16; i++) { out[i][0] <== escalarMul[i][0]*in; out[i][1] <== escalarMul[i][1]*in; diff --git a/test/circuits/escalarmulw4table_test3.circom b/test/circuits/escalarmulw4table_test3.circom index 52933fa..d41d827 100644 --- a/test/circuits/escalarmulw4table_test3.circom +++ b/test/circuits/escalarmulw4table_test3.circom @@ -4,10 +4,10 @@ include "../../circuits/escalarmulw4table.circom"; template Main() { signal input in; signal output out[16][2]; - var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, - 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; - var escalarMul = EscalarMulW4Table(base, 3); + var escalarMul[16][2] = EscalarMulW4Table(base, 3); for (var i=0; i<16; i++) { out[i][0] <== escalarMul[i][0]*in; out[i][1] <== escalarMul[i][1]*in; diff --git a/test/circuits/in.json b/test/circuits/in.json new file mode 100644 index 0000000..2ebe0d5 --- /dev/null +++ b/test/circuits/in.json @@ -0,0 +1,258 @@ +{ + "in": [ + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1" + ] +} \ No newline at end of file diff --git a/test/circuits/sum_test.circom b/test/circuits/sum_test.circom index a8b062b..013d567 100644 --- a/test/circuits/sum_test.circom +++ b/test/circuits/sum_test.circom @@ -6,6 +6,8 @@ template A() { signal input b; signal output out; + var i; + component n2ba = Num2Bits(32); component n2bb = Num2Bits(32); component sum = BinSum(32,2); @@ -14,9 +16,12 @@ template A() { n2ba.in <== a; n2bb.in <== b; - for (var i=0; i<32; i++) { + for (i=0; i<32; i++) { sum.in[0][i] <== n2ba.out[i]; sum.in[1][i] <== n2bb.out[i]; + } + + for (i=0; i<32; i++) { b2n.in[i] <== sum.out[i]; } diff --git a/test/comparators.js b/test/comparators.js index 6b3c0a0..ea263e0 100644 --- a/test/comparators.js +++ b/test/comparators.js @@ -1,193 +1,184 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const crypto = require("crypto"); -const compiler = require("circom"); +const tester = require("circom").tester; + +const bigInt = require("big-integer"); const assert = chai.assert; -describe("Sum test", () => { - it("Should create a iszero circuit", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "iszero.circom")); +describe("Comparators test", function () { - const circuit = new snarkjs.Circuit(cirDef); + this.timeout(100000); + + it("Should create a iszero circuit", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "iszero.circom")); let witness; - witness = circuit.calculateWitness({ "in": 111}); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": 111}, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in": 0 }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": 0 }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a isequal circuit", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "isequal.circom")); - - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "isequal.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "111", "in[1]": "222" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [111,222] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "444", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [444,444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a comparison lessthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "lessthan.circom")); - - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "lessthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [333,444] }), true; + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); }); it("Should create a comparison lesseqthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "lesseqthan.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "lesseqthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a comparison greaterthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "greaterthan.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "greaterthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); }); it("Should create a comparison greatereqthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "greatereqthan.circom")); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstraints BalancesUpdater: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "greatereqthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); }); diff --git a/test/eddsa.js b/test/eddsa.js index 8292a89..7d2e02f 100644 --- a/test/eddsa.js +++ b/test/eddsa.js @@ -1,16 +1,14 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -// const crypto = require("crypto"); + +const tester = require("circom").tester; +const bigInt = require("big-integer"); const eddsa = require("../src/eddsa.js"); const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -36,11 +34,7 @@ describe("EdDSA test", function () { this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsa_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains EdDSA: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "eddsa_test.circom")); }); it("Sign a single 10 bytes from 0 to 9", async () => { @@ -66,9 +60,8 @@ describe("EdDSA test", function () { const sBits = buffer2bits(pSignature.slice(32, 64)); const aBits = buffer2bits(pPubKey); - const w = circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}, true); + await circuit.checkConstraints(w); }); }); diff --git a/test/eddsa_js.js b/test/eddsa_js.js index 2771306..1199626 100644 --- a/test/eddsa_js.js +++ b/test/eddsa_js.js @@ -1,12 +1,12 @@ const chai = require("chai"); -const snarkjs = require("snarkjs"); const eddsa = require("../src/eddsa.js"); const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const utils = require("../src/utils.js"); describe("EdDSA js test", function () { @@ -14,7 +14,7 @@ describe("EdDSA js test", function () { it("Sign (using Mimc7) a single 10 bytes from 0 to 9", () => { const msgBuf = Buffer.from("00010203040506070809", "hex"); - const msg = bigInt.leBuff2int(msgBuf); + const msg = utils.leBuff2int(msgBuf); // const prvKey = crypto.randomBytes(32); @@ -49,7 +49,7 @@ describe("EdDSA js test", function () { it("Sign (using Poseidon) a single 10 bytes from 0 to 9", () => { const msgBuf = Buffer.from("00010203040506070809", "hex"); - const msg = bigInt.leBuff2int(msgBuf); + const msg = utils.leBuff2int(msgBuf); const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); diff --git a/test/eddsamimc.js b/test/eddsamimc.js index e7f3f8e..6e14fd6 100644 --- a/test/eddsamimc.js +++ b/test/eddsamimc.js @@ -1,25 +1,20 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const tester = require("circom").tester; +const bigInt = require("big-integer"); const eddsa = require("../src/eddsa.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - describe("EdDSA MiMC test", function () { let circuit; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsamimc_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - console.log("NConstrains EdDSA MiMC: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "eddsamimc_test.circom")); }); it("Sign a single number", async () => { @@ -33,16 +28,18 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0], R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); + + + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); }); it("Detect Invalid signature", async () => { @@ -57,14 +54,14 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); try { - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); @@ -84,15 +81,16 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); + + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); }); }); diff --git a/test/eddsaposeidon.js b/test/eddsaposeidon.js index 5ed5b97..31fad9c 100644 --- a/test/eddsaposeidon.js +++ b/test/eddsaposeidon.js @@ -1,25 +1,21 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const eddsa = require("../src/eddsa.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - describe("EdDSA Poseidon test", function () { let circuit; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); - console.log("NConstrains EdDSA Poseidon: " + circuit.nConstraints); }); it("Sign a single number", async () => { @@ -33,16 +29,21 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const input = { enabled: 1, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0], R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg + }; + + // console.log(JSON.stringify(utils.stringifyBigInts(input))); + + const w = await circuit.calculateWitness(input, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Detect Invalid signature", async () => { @@ -57,14 +58,14 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); try { - circuit.calculateWitness({ + await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); @@ -84,15 +85,15 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/escalarmul.js b/test/escalarmul.js index f183550..ec60597 100644 --- a/test/escalarmul.js +++ b/test/escalarmul.js @@ -1,172 +1,114 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; +const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - - -const q=bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -function addPoint(a,b) { - const cta = bigInt("168700"); - const d = bigInt("168696"); - - const res = []; - res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt.one + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); - res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt.one - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); - return res; -} - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -describe("Exponentioation test", () => { - it("Should generate the Exponentiation table in k=0", async () => { - - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); +describe("Exponentioation test", function () { -// console.log(JSON.stringify(cirDef, null, 1)); + this.timeout(100000); -// assert.equal(cirDef.nVars, 2); + it("Should generate the Exponentiation table in k=0", async () => { - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); - console.log("NConstrains: " + circuit.nConstraints); + const w = await circuit.calculateWitness({in: 1}); - const w = circuit.calculateWitness({in: 1}); + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; - let g = [bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + let dbl= [bigInt("0"), bigInt("1")]; - dbl= [bigInt("0"), snarkjs.bigInt("1")]; + const expectedOut = []; for (let i=0; i<16; i++) { - const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; - const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; - - // console.log(xout1.toString()); - // console.log(yout1.toString()); - // console.log(dbl[0]); - // console.log(dbl[1]); - - assert(xout1.equals(dbl[0])); - assert(yout1.equals(dbl[1])); - dbl = addPoint([xout1, yout1],g); + expectedOut.push(dbl); + dbl = babyJub.addPoint(dbl,g); } + await circuit.assertOut(w, {out: expectedOut}); + }); it("Should generate the Exponentiation table in k=3", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); - -// console.log(JSON.stringify(cirDef, null, 1)); - -// assert.equal(cirDef.nVars, 2); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const w = await circuit.calculateWitness({in: 1}); - console.log("NConstrains: " + circuit.nConstraints); + await circuit.checkConstraints(w); - const w = circuit.calculateWitness({in: 1}); - - assert(circuit.checkWitness(w)); - - let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; for (let i=0; i<12;i++) { - g = addPoint(g,g); + g = babyJub.addPoint(g,g); } - dbl= [snarkjs.bigInt("0"), snarkjs.bigInt("1")]; - - for (let i=0; i<16; i++) { - const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; - const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; + let dbl= [bigInt("0"), bigInt("1")]; + const expectedOut = []; - // console.log(xout1.toString()); - // console.log(yout1.toString()); - // console.log(dbl[0]); - // console.log(dbl[1]); - - assert(xout1.equals(dbl[0])); - assert(yout1.equals(dbl[1])); + for (let i=0; i<16; i++) { + expectedOut.push(dbl); - dbl = addPoint([xout1, yout1],g); + dbl = babyJub.addPoint(dbl,g); } + await circuit.assertOut(w, {out: expectedOut}); + }); it("Should exponentiate g^31", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test.circom"), {reduceConstraints: true}); -// console.log(JSON.stringify(cirDef, null, 1)); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test.circom")); -// assert.equal(cirDef.nVars, 2); + const w = await circuit.calculateWitness({"in": 31}); - const circuit = new snarkjs.Circuit(cirDef); + await circuit.checkConstraints(w); - console.log("NConstrains: " + circuit.nConstraints); + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; - const w = circuit.calculateWitness({"in": 31}); - - assert(circuit.checkWitness(w)); - - let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] - - let c = [0n, 1n]; + let c = [bigInt(0), bigInt(1)]; for (let i=0; i<31;i++) { - c = addPoint(c,g); + c = babyJub.addPoint(c,g); } - const xout = w[circuit.getSignalIdx(`main.out[0]`)]; - const yout = w[circuit.getSignalIdx(`main.out[1]`)]; + await circuit.assertOut(w, {out: c}); -/* - console.log(xout.toString()); - console.log(yout.toString()); -*/ - assert(xout.equals(c[0])); - assert(yout.equals(c[1])); - - console.log("-------") - const w2 = circuit.calculateWitness({"in": (1n<<252n)+1n}); - - const xout2 = w2[circuit.getSignalIdx(`main.out[0]`)]; - const yout2 = w2[circuit.getSignalIdx(`main.out[1]`)]; + const w2 = await circuit.calculateWitness({"in": bigInt(1).shiftLeft(252).add(bigInt.one)}); c = [g[0], g[1]]; for (let i=0; i<252;i++) { - c = addPoint(c,c); + c = babyJub.addPoint(c,c); } - c = addPoint(c,g); - - // console.log(xout2.toString()); - // console.log(yout2.toString()); - // console.log(c[0].toString()); - // console.log(c[1].toString()); + c = babyJub.addPoint(c,g); - assert(xout2.equals(c[0])); - assert(yout2.equals(c[1])); + await circuit.assertOut(w2, {out: c}); }).timeout(10000000); it("Number of constrains for 256 bits", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); - console.log("NConstrains: " + circuit.nConstraints); }).timeout(10000000); }); diff --git a/test/escalarmulany.js b/test/escalarmulany.js index 2d33827..3a831d0 100644 --- a/test/escalarmulany.js +++ b/test/escalarmulany.js @@ -1,12 +1,7 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); - -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; - +const bigInt = require("big-integer"); +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); @@ -18,41 +13,33 @@ describe("Escalarmul test", function () { this.timeout(100000); let g = [ - snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; before( async() => { - const cirDefEMulAny = await compiler(path.join(__dirname, "circuits", "escalarmulany_test.circom")); - circuitEMulAny = new snarkjs.Circuit(cirDefEMulAny); - console.log("NConstrains Escalarmul any: " + circuitEMulAny.nConstraints); + circuitEMulAny = await tester(path.join(__dirname, "circuits", "escalarmulany_test.circom")); }); it("Should generate Same escalar mul", async () => { - const w = circuitEMulAny.calculateWitness({"e": 1, "p": g}); + const w = await circuitEMulAny.calculateWitness({"e": 1, "p": g}); - assert(circuitEMulAny.checkWitness(w)); + await circuitEMulAny.checkConstraints(w); - const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; - const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + await circuitEMulAny.assertOut(w, {out: g}, true); - assert(xout.equals(g[0])); - assert(yout.equals(g[1])); }); it("If multiply by order should return 0", async () => { const r = bigInt("2736030358979909402780800718157159386076813972158567259200215660948447373041"); - const w = circuitEMulAny.calculateWitness({"e": r, "p": g}); + const w = await circuitEMulAny.calculateWitness({"e": r, "p": g}); - assert(circuitEMulAny.checkWitness(w)); + await circuitEMulAny.checkConstraints(w); - const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; - const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + await circuitEMulAny.assertOut(w, {out: [0,1]}, true); - assert(xout.equals(bigInt.zero)); - assert(yout.equals(bigInt.one)); }); }); diff --git a/test/escalarmulfix.js b/test/escalarmulfix.js index 77f6c97..2486695 100644 --- a/test/escalarmulfix.js +++ b/test/escalarmulfix.js @@ -1,14 +1,11 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyjub = require("../src/babyjub"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -19,35 +16,27 @@ describe("Escalarmul test", function () { this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - console.log("NConstrains Escalarmul fix: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); }); it("Should generate Same escalar mul", async () => { - const w = circuit.calculateWitness({"e": 0}); + const w = await circuit.calculateWitness({"e": 0}); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: [0,1]}, true); - assert(xout.equals(0)); - assert(yout.equals(1)); }); it("Should generate Same escalar mul", async () => { - const w = circuit.calculateWitness({"e": 1}); + const w = await circuit.calculateWitness({"e": 1}, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: babyjub.Base8}); - assert(xout.equals(babyjub.Base8[0])); - assert(yout.equals(babyjub.Base8[1])); }); it("Should generate scalar mul of a specific constant", async () => { @@ -58,17 +47,14 @@ describe("Escalarmul test", function () { bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; - const w = circuit.calculateWitness({"e": s}); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({"e": s}, true); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.checkConstraints(w); const expectedRes = babyjub.mulPointEscalar(base8, s); - assert(xout.equals(expectedRes[0])); - assert(yout.equals(expectedRes[1])); + await circuit.assertOut(w, {out: expectedRes}); + }); it("Should generate scalar mul of the firsts 50 elements", async () => { @@ -81,31 +67,23 @@ describe("Escalarmul test", function () { for (let i=0; i<50; i++) { const s = bigInt(i); - const w = circuit.calculateWitness({"e": s}); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({"e": s}, true); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.checkConstraints(w); const expectedRes = babyjub.mulPointEscalar(base8, s); - assert(xout.equals(expectedRes[0])); - assert(yout.equals(expectedRes[1])); + await circuit.assertOut(w, {out: expectedRes}); } }); it("If multiply by order should return 0", async () => { - const w = circuit.calculateWitness({"e": babyjub.subOrder }); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({"e": babyjub.subOrder }, true); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.checkConstraints(w); - assert(xout.equals(bigInt.zero)); - assert(yout.equals(bigInt.one)); + await circuit.assertOut(w, {out: [0,1]}); }); }); diff --git a/test/mimccircuit.js b/test/mimccircuit.js index f45db3d..5601811 100644 --- a/test/mimccircuit.js +++ b/test/mimccircuit.js @@ -1,35 +1,25 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const tester = require("circom").tester; const mimcjs = require("../src/mimc7.js"); -const assert = chai.assert; - describe("MiMC Circuit test", function () { let circuit; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("MiMC constraints: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "mimc_test.circom")); }); it("Should check constrain", async () => { - const w = circuit.calculateWitness({x_in: 1, k: 2}); - - const res = w[circuit.getSignalIdx("main.out")]; + const w = await circuit.calculateWitness({x_in: 1, k: 2}, true); const res2 = mimcjs.hash(1,2,91); - assert.equal(res.toString(), res2.toString()); - - assert(circuit.checkWitness(w)); + await circuit.assertOut(w, {out: res2}); + await circuit.checkConstraints(w); }); }); diff --git a/test/mimcspongecircuit.js b/test/mimcspongecircuit.js index b114924..3205534 100644 --- a/test/mimcspongecircuit.js +++ b/test/mimcspongecircuit.js @@ -1,11 +1,8 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const tester = require("circom").tester; const mimcjs = require("../src/mimcsponge.js"); -const assert = chai.assert; describe("MiMC Sponge Circuit test", function () { let circuit; @@ -13,46 +10,28 @@ describe("MiMC Sponge Circuit test", function () { this.timeout(100000); it("Should check permutation", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); - console.log("MiMC Feistel constraints: " + circuit.nConstraints); - - const w = circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); - - const xLout = w[circuit.getSignalIdx("main.xL_out")]; - const xRout = w[circuit.getSignalIdx("main.xR_out")]; + const w = await circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); const out2 = mimcjs.hash(1,2,3); - assert.equal(xLout.toString(), out2.xL.toString()); - assert.equal(xRout.toString(), out2.xR.toString()); + await circuit.assertOut(w, {xL_out: out2.xL, xR_out: out2.xR}); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Should check hash", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); - console.log("MiMC Sponge constraints: " + circuit.nConstraints); - - const w = circuit.calculateWitness({ins: [1, 2], k: 0}); - - const o1 = w[circuit.getSignalIdx("main.outs[0]")]; - const o2 = w[circuit.getSignalIdx("main.outs[1]")]; - const o3 = w[circuit.getSignalIdx("main.outs[2]")]; + const w = await circuit.calculateWitness({ins: [1, 2], k: 0}); const out2 = mimcjs.multiHash([1,2], 0, 3); - assert.equal(o1.toString(), out2[0].toString()); - assert.equal(o2.toString(), out2[1].toString()); - assert.equal(o3.toString(), out2[2].toString()); - - assert(circuit.checkWitness(w)); + await circuit.assertOut(w, {outs: out2}); + await circuit.checkConstraints(w); }); }); diff --git a/test/montgomery.js b/test/montgomery.js index 0de3ca0..d53fa5a 100644 --- a/test/montgomery.js +++ b/test/montgomery.js @@ -1,13 +1,11 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - describe("Montgomery test", function () { let circuitE2M; let circuitM2E; @@ -15,43 +13,37 @@ describe("Montgomery test", function () { let circuitMDouble; let g = [ - snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")]; + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; let mg, mg2, g2, g3, mg3; this.timeout(100000); before( async() => { - const cirDefE2M = await compiler(path.join(__dirname, "circuits", "edwards2montgomery.circom")); - circuitE2M = new snarkjs.Circuit(cirDefE2M); - console.log("NConstrains Edwards -> Montgomery: " + circuitE2M.nConstraints); - - const cirDefM2E = await compiler(path.join(__dirname, "circuits", "montgomery2edwards.circom")); - circuitM2E = new snarkjs.Circuit(cirDefM2E); - console.log("NConstrains Montgomery -> Edwards: " + circuitM2E.nConstraints); - - const cirDefMAdd = await compiler(path.join(__dirname, "circuits", "montgomeryadd.circom")); - circuitMAdd = new snarkjs.Circuit(cirDefMAdd); - console.log("NConstrains Montgomery Add: " + circuitMAdd.nConstraints); - - const cirDefMDouble = await compiler(path.join(__dirname, "circuits", "montgomerydouble.circom")); - circuitMDouble = new snarkjs.Circuit(cirDefMDouble); - console.log("NConstrains Montgomery Double: " + circuitMDouble.nConstraints); + circuitE2M = await tester(path.join(__dirname, "circuits", "edwards2montgomery.circom")); + await circuitE2M.loadSymbols(); + circuitM2E = await tester(path.join(__dirname, "circuits", "montgomery2edwards.circom")); + await circuitM2E.loadSymbols(); + circuitMAdd = await tester(path.join(__dirname, "circuits", "montgomeryadd.circom")); + await circuitMAdd.loadSymbols(); + circuitMDouble = await tester(path.join(__dirname, "circuits", "montgomerydouble.circom")); + await circuitMDouble.loadSymbols(); }); it("Convert Edwards to Montgomery and back again", async () => { let w, xout, yout; - w = circuitE2M.calculateWitness({ in: g}); + w = await circuitE2M.calculateWitness({ in: g}, true); - xout = w[circuitE2M.getSignalIdx("main.out[0]")]; - yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; mg = [xout, yout]; - w = circuitM2E.calculateWitness({ in: [xout, yout]}); + w = await circuitM2E.calculateWitness({ in: [xout, yout]}, true); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g[0])); assert(yout.equals(g[1])); @@ -61,17 +53,17 @@ describe("Montgomery test", function () { g2 = babyJub.addPoint(g,g); - w = circuitMDouble.calculateWitness({ in: mg}); + w = await circuitMDouble.calculateWitness({ in: mg}, true); - xout = w[circuitE2M.getSignalIdx("main.out[0]")]; - yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; mg2 = [xout, yout]; - w = circuitM2E.calculateWitness({ in: mg2}); + w = await circuitM2E.calculateWitness({ in: mg2}, true); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g2[0])); assert(yout.equals(g2[1])); @@ -81,17 +73,17 @@ describe("Montgomery test", function () { g3 = babyJub.addPoint(g,g2); - w = circuitMAdd.calculateWitness({ in1: mg, in2: mg2}); + w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}, true); - xout = w[circuitMAdd.getSignalIdx("main.out[0]")]; - yout = w[circuitMAdd.getSignalIdx("main.out[1]")]; + xout = w[circuitMAdd.symbols["main.out[0]"].varIdx]; + yout = w[circuitMAdd.symbols["main.out[1]"].varIdx]; mg3 = [xout, yout]; - w = circuitM2E.calculateWitness({ in: mg3}); + w = await circuitM2E.calculateWitness({ in: mg3}, true); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g3[0])); assert(yout.equals(g3[1])); diff --git a/test/multiplexer.js b/test/multiplexer.js index ee62566..01a8338 100644 --- a/test/multiplexer.js +++ b/test/multiplexer.js @@ -1,25 +1,12 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; - - -describe("Mux4 test", () => { +describe("Mux4 test", function() { + this.timeout(100000); it("Should create a constant multiplexer 4", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux4_1.circom")); - -// console.log(JSON.stringify(cirDef, null, 1)); - -// assert.equal(cirDef.nVars, 2); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux4: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "mux4_1.circom")); const ct16 = [ bigInt("123"), @@ -41,24 +28,17 @@ describe("Mux4 test", () => { ]; for (let i=0; i<16; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); - assert(w[0].equals(bigInt(1))); - - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct16[i])); + await circuit.assertOut(w, {out: ct16[i]}); } }); it("Should create a constant multiplexer 3", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux3_1.circom")); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux3: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "mux3_1.circom")); const ct8 = [ bigInt("37"), @@ -72,23 +52,18 @@ describe("Mux4 test", () => { ]; for (let i=0; i<8; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); - assert(w[0].equals(bigInt(1))); + await circuit.checkConstraints(w); - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct8[i]}); } }); it("Should create a constant multiplexer 2", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux2_1.circom")); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux2: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "mux2_1.circom")); - const ct8 = [ + const ct4 = [ bigInt("37"), bigInt("47"), bigInt("53"), @@ -96,38 +71,28 @@ describe("Mux4 test", () => { ]; for (let i=0; i<4; i++) { - const w = circuit.calculateWitness({ "selector": i }); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({ "selector": i }, true); - assert(w[0].equals(bigInt(1))); + await circuit.checkConstraints(w); - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct4[i]}); } }); it("Should create a constant multiplexer 1", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux1_1.circom")); + const circuit = await tester(path.join(__dirname, "circuits", "mux1_1.circom")); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux1: " + circuit.nConstraints); - - const ct8 = [ + const ct2 = [ bigInt("37"), bigInt("47"), ]; for (let i=0; i<2; i++) { - const w = circuit.calculateWitness({ "selector": i }); - - assert(circuit.checkWitness(w)); + const w = await circuit.calculateWitness({ "selector": i }, true); - assert(w[0].equals(bigInt(1))); + await circuit.checkConstraints(w); - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct2[i]}); } }); }); diff --git a/test/pedersen.js b/test/pedersen.js index d828520..5de9276 100644 --- a/test/pedersen.js +++ b/test/pedersen.js @@ -1,11 +1,8 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); @@ -22,79 +19,59 @@ describe("Double Pedersen test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "pedersen_test.circom")); - console.log("NConstrains: " + circuit.nConstraints); }); it("Should pedersen at zero", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: ["0", "0"]}); + w = await circuit.calculateWitness({ in: ["0", "0"]}, true); - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: [0,1]}); - assert(xout.equals("0")); - assert(yout.equals("1")); }); it("Should pedersen at one first generator", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: ["1", "0"]}); + w = await circuit.calculateWitness({ in: ["1", "0"]}, true); - xout = bigInt(w[circuit.getSignalIdx("main.out[0]")]); - yout = bigInt(w[circuit.getSignalIdx("main.out[1]")]); + await circuit.assertOut(w, {out: PBASE[0]}); - assert(xout.equals(PBASE[0][0])); - assert(yout.equals(PBASE[0][1])); }); it("Should pedersen at one second generator", async () => { - let w, xout, yout; - - w = circuit.calculateWitness({ in: ["0", "1"]}); + let w; - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + w = await circuit.calculateWitness({ in: ["0", "1"]}, true); - assert(xout.equals(PBASE[1][0])); - assert(yout.equals(PBASE[1][1])); + await circuit.assertOut(w, {out: PBASE[1]}); }); it("Should pedersen at mixed generators", async () => { - let w, xout, yout; - w = circuit.calculateWitness({ in: ["3", "7"]}); - - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; - + let w; + w = await circuit.calculateWitness({ in: ["3", "7"]}, true); const r = babyJub.addPoint( babyJub.mulPointEscalar(PBASE[0], 3), babyJub.mulPointEscalar(PBASE[1], 7) ); - assert(xout.equals(r[0])); - assert(yout.equals(r[1])); + await circuit.assertOut(w, {out: r}); }); it("Should pedersen all ones", async () => { - let w, xout, yout; + let w; - const allOnes = bigInt("1").shl(250).sub(bigInt("1")); - w = circuit.calculateWitness({ in: [allOnes, allOnes]}); + const allOnes = bigInt("1").shiftLeft(250).minus(bigInt("1")); + w = await circuit.calculateWitness({ in: [allOnes, allOnes]}, true); - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; const r2 = babyJub.addPoint( babyJub.mulPointEscalar(PBASE[0], allOnes), babyJub.mulPointEscalar(PBASE[1], allOnes) ); - assert(xout.equals(r2[0])); - assert(yout.equals(r2[1])); + await circuit.assertOut(w, {out: r2}); }); }); diff --git a/test/pedersen2.js b/test/pedersen2.js index 65252b6..9a9712d 100644 --- a/test/pedersen2.js +++ b/test/pedersen2.js @@ -1,11 +1,7 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); const pedersen = require("../src/pedersenHash.js"); @@ -15,60 +11,39 @@ describe("Pedersen test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen2_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - console.log("NConstrains Pedersen2: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "pedersen2_test.circom")); }); it("Should pedersen at zero", async () => { - let w, xout, yout; - - w = circuit.calculateWitness({ in: 0}); + let w; - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + w = await circuit.calculateWitness({ in: 0}, true); const b = Buffer.alloc(32); const h = pedersen.hash(b); const hP = babyJub.unpackPoint(h); - /* - console.log(`[${xout.toString()}, ${yout.toString()}]`); - console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); - */ + await circuit.assertOut(w, {out: hP}); - assert(xout.equals(hP[0])); - assert(yout.equals(hP[1])); }); it("Should pedersen with 253 ones", async () => { - let w, xout, yout; + let w; - const n = bigInt.one.shl(253).sub(bigInt.one); - console.log(n.toString(16)); + const n = bigInt.one.shiftLeft(253).minus(bigInt.one); - w = circuit.calculateWitness({ in: n}); - - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + w = await circuit.calculateWitness({ in: n}, true); const b = Buffer.alloc(32); for (let i=0; i<31; i++) b[i] = 0xFF; b[31] = 0x1F; - const h = pedersen.hash(b); const hP = babyJub.unpackPoint(h); - /* - console.log(`[${xout.toString()}, ${yout.toString()}]`); - console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); - */ + await circuit.assertOut(w, {out: hP}); - assert(xout.equals(hP[0])); - assert(yout.equals(hP[1])); }); }); diff --git a/test/point2bits.js b/test/point2bits.js index 51191d5..f0697a1 100644 --- a/test/point2bits.js +++ b/test/point2bits.js @@ -1,11 +1,5 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); - -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); @@ -14,20 +8,16 @@ describe("Point 2 bits test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pointbits_loopback.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Point2Bits loopback: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "pointbits_loopback.circom")); }); it("Should do the both convertions for 8Base", async () => { - const w = circuit.calculateWitness({ in: babyJub.Base8}); + const w = await circuit.calculateWitness({ in: babyJub.Base8}, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Should do the both convertions for Zero point", async () => { - const w = circuit.calculateWitness({ in: [0, 1]}); + const w = await circuit.calculateWitness({ in: [0, 1]}, true); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/poseidoncircuit.js b/test/poseidoncircuit.js index 0d42ea1..d5e2a9f 100644 --- a/test/poseidoncircuit.js +++ b/test/poseidoncircuit.js @@ -1,8 +1,8 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -var blake2b = require('blake2b'); +var blake2b = require("blake2b"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const poseidon = require("../src/poseidon.js"); @@ -11,9 +11,9 @@ const assert = chai.assert; describe("Blake2b version test", function() { it("Should give the expected output for blake2b version", async () => { var output = new Uint8Array(32); - var input = Buffer.from('poseidon_constants'); - h = blake2b(output.length).update(input).digest('hex') - assert.equal('e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1', h); + var input = Buffer.from("poseidon_constants"); + const h = blake2b(output.length).update(input).digest("hex"); + assert.equal("e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1", h); }); }); @@ -24,68 +24,53 @@ describe("Poseidon Circuit test", function () { this.timeout(100000); before( async () => { - const cirDef6 = await compiler(path.join(__dirname, "circuits", "poseidon6_test.circom")); - circuit6 = new snarkjs.Circuit(cirDef6); - console.log("Poseidon6 constraints: " + circuit6.nConstraints); - const cirDef3 = await compiler(path.join(__dirname, "circuits", "poseidon3_test.circom")); - circuit3 = new snarkjs.Circuit(cirDef3); - console.log("Poseidon3 constraints: " + circuit3.nConstraints); + circuit6 = await tester(path.join(__dirname, "circuits", "poseidon6_test.circom")); + circuit3 = await tester(path.join(__dirname, "circuits", "poseidon3_test.circom")); }); it("Should check constrain of hash([1, 2]) t=6", async () => { - const w = circuit6.calculateWitness({inputs: [1, 2]}); - - const res = w[circuit6.getSignalIdx("main.out")]; + const w = await circuit6.calculateWitness({inputs: [1, 2]}, true); const hash = poseidon.createHash(6, 8, 57); const res2 = hash([1,2]); assert.equal("12242166908188651009877250812424843524687801523336557272219921456462821518061", res2.toString()); - assert.equal(res.toString(), res2.toString()); - assert(circuit6.checkWitness(w)); + await circuit6.assertOut(w, {out : res2}); + await circuit6.checkConstraints(w); }); it("Should check constrain of hash([3, 4]) t=6", async () => { - const w = circuit6.calculateWitness({inputs: [3, 4]}); - - const res = w[circuit6.getSignalIdx("main.out")]; + const w = await circuit6.calculateWitness({inputs: [3, 4]}); const hash = poseidon.createHash(6, 8, 57); const res2 = hash([3, 4]); - assert.equal("17185195740979599334254027721507328033796809509313949281114643312710535000993", res2.toString()); - assert.equal(res.toString(), res2.toString()); - - assert(circuit6.checkWitness(w)); + assert.equal("17185195740979599334254027721507328033796809509313949281114643312710535000993", res2.toString()); + await circuit6.assertOut(w, {out : res2}); + await circuit6.checkConstraints(w); }); it("Should check constrain of hash([1, 2]) t=3", async () => { - const w = circuit3.calculateWitness({inputs: [1, 2]}); - - const res = w[circuit3.getSignalIdx("main.out")]; + const w = await circuit3.calculateWitness({inputs: [1, 2]}); const hash = poseidon.createHash(3, 8, 57); const res2 = hash([1,2]); assert.equal("2104035019328376391822106787753454168168617545136592089411833517434990977743", res2.toString()); - assert.equal(res.toString(), res2.toString()); - assert(circuit3.checkWitness(w)); + await circuit3.assertOut(w, {out : res2}); + await circuit3.checkConstraints(w); }); it("Should check constrain of hash([3, 4]) t=3", async () => { - const w = circuit3.calculateWitness({inputs: [3, 4]}); - - const res = w[circuit3.getSignalIdx("main.out")]; + const w = await circuit3.calculateWitness({inputs: [3, 4]}); const hash = poseidon.createHash(3, 8, 57); const res2 = hash([3, 4]); assert.equal("12456141564250880945411182508630957604732712316993112736876413121277158512223", res2.toString()); - - assert.equal(res.toString(), res2.toString()); - - assert(circuit3.checkWitness(w)); + await circuit3.assertOut(w, {out : res2}); + await circuit3.checkConstraints(w); }); }); diff --git a/test/rawsmt3.circom b/test/rawsmt3.circom deleted file mode 100644 index 1ac1e40..0000000 --- a/test/rawsmt3.circom +++ /dev/null @@ -1,23 +0,0 @@ - -include "../circuits/smt/smtverifier.circom"; -template SMT(nLevels) { - signal input root; - signal input mtp[nLevels]; - signal input hi; - signal input hv; - - component smtClaimExists = SMTVerifier(nLevels); - smtClaimExists.enabled <== 1; - smtClaimExists.fnc <== 0; - smtClaimExists.root <== root; - for (var i=0; i { +describe("SHA256 test", function () { + this.timeout(100000); it("Should work bits to array and array to bits", async () => { @@ -45,17 +46,13 @@ describe("SHA256 test", () => { const a = buffer2bitArray(b); const b2 = bitArray2buffer(a); - assert.equal(b.toString("hex"), b2.toString("hex")); + assert.equal(b.toString("hex"), b2.toString("hex"), true); }); it("Should calculate a hash of 1 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_2_test.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const cir = await tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); - - const witness = circuit.calculateWitness({ "a": "1", "b": "2" }); + const witness = await cir.calculateWitness({ "a": "1", "b": "2" }, true); const b = new Buffer.alloc(54); b[26] = 1; @@ -74,16 +71,7 @@ describe("SHA256 test", () => { }).timeout(1000000); it("Should calculate a hash of 2 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_test512.circom"), {reduceConstraints:false} ); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); - - - // const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - - // const b = Buffer.from(testStr, 'utf8'); + const cir = await tester(path.join(__dirname, "circuits", "sha256_test512.circom")); const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { @@ -95,7 +83,7 @@ describe("SHA256 test", () => { .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn }, {logOutput: false}); + const witness = await cir.calculateWitness({ "in": arrIn }, true); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); @@ -103,32 +91,25 @@ describe("SHA256 test", () => { assert.equal(hash, hash2); }).timeout(1000000); - - it("Should calculate a hash of 2 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_test448.circom"), {reduceConstraints:false} ); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); + it ("Should calculate a hash of 2 compressor", async () => { + const cir = await tester(path.join(__dirname, "circuits", "sha256_test448.circom")); const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; const b = Buffer.from(testStr, "utf8"); - // for (let i=0; i<64; i++) { - // b[i] = i+1; - // } const hash = crypto.createHash("sha256") .update(b) .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn } , {logOutput: false}); + + const witness = await cir.calculateWitness({ "in": arrIn }, true); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); assert.equal(hash, hash2); + }); - }).timeout(1000000); }); diff --git a/test/sign.js b/test/sign.js index 81efe80..b3e9452 100644 --- a/test/sign.js +++ b/test/sign.js @@ -1,11 +1,6 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); - -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); @@ -14,7 +9,7 @@ function print(circuit, w, s) { function getBits(v, n) { const res = []; for (let i=0; i { +describe("Sign test", function() { let circuit; - before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sign_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); + this.timeout(100000); - console.log("NConstrains: " + circuit.nConstraints); + before( async() => { + circuit = await tester(path.join(__dirname, "circuits", "sign_test.circom")); }); it("Sign of 0", async () => { const inp = getBits(bigInt.zero, 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of 3", async () => { const inp = getBits(bigInt(3), 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2", async () => { - const inp = getBits(q.shr(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.shiftRight(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2+1", async () => { - const inp = getBits(q.shr(bigInt.one).add(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.shiftRight(bigInt.one).add(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of q-1", async () => { - const inp = getBits(q.sub(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.minus(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of q", async () => { const inp = getBits(q, 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of all ones", async () => { - const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt(1)), 254); + const w = await circuit.calculateWitness({in: inp}, true); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); - - }); diff --git a/test/smtjs.js b/test/smtjs.js index eb360ab..732a398 100644 --- a/test/smtjs.js +++ b/test/smtjs.js @@ -1,12 +1,11 @@ const chai = require("chai"); -const snarkjs = require("snarkjs"); + +const bigInt = require("big-integer"); const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function stringifyBigInts(o) { if ((typeof(o) == "bigint") || (o instanceof bigInt)) { diff --git a/test/smtprocessor.js b/test/smtprocessor.js index d283277..e257707 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -1,25 +1,23 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -async function testInsert(tree, key, value, circuit, log ) { +async function testInsert(tree, key, value, circuit ) { const res = await tree.insert(key,value); let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [1,0], oldRoot: res.oldRoot, siblings: siblings, @@ -28,11 +26,12 @@ async function testInsert(tree, key, value, circuit, log ) { isOld0: res.isOld0 ? 1 : 0, newKey: key, newValue: value - }, log); + }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {newRoot: res.newRoot}); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); } async function testDelete(tree, key, circuit) { @@ -40,7 +39,7 @@ async function testDelete(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [1,1], oldRoot: res.oldRoot, siblings: siblings, @@ -49,12 +48,11 @@ async function testDelete(tree, key, circuit) { isOld0: res.isOld0 ? 1 : 0, newKey: res.delKey, newValue: res.delValue - }); + }, true); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); + await circuit.assertOut(w, {newRoot: res.newRoot}); } async function testUpdate(tree, key, newValue, circuit) { @@ -62,7 +60,7 @@ async function testUpdate(tree, key, newValue, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [0,1], oldRoot: res.oldRoot, siblings: siblings, @@ -73,25 +71,21 @@ async function testUpdate(tree, key, newValue, circuit) { newValue: res.newValue }); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); + await circuit.assertOut(w, {newRoot: res.newRoot}); } -describe("SMT test", function () { +describe("SMT Processor test", function () { let circuit; let tree; this.timeout(10000000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains SMTProcessor: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); + await circuit.loadSymbols(); tree = await smt.newMemEmptyTrie(); }); @@ -110,8 +104,6 @@ describe("SMT test", function () { await testInsert(tree, key, value, circuit); }); - - it("Should remove an element", async () => { await testDelete(tree, 111, circuit); await testDelete(tree, 333, circuit); @@ -179,7 +171,7 @@ describe("SMT test", function () { it("Should match a NOp with random vals", async () => { let siblings = []; while (siblings.length<10) siblings.push(bigInt(88)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [0,0], oldRoot: 11, siblings: siblings, @@ -190,12 +182,12 @@ describe("SMT test", function () { newValue: 77 }); - const root1 = w[circuit.getSignalIdx("main.oldRoot")]; - const root2 = w[circuit.getSignalIdx("main.newRoot")]; + const root1 = w[circuit.symbols["main.oldRoot"].varIdx]; + const root2 = w[circuit.symbols["main.newRoot"].varIdx]; - assert(circuit.checkWitness(w)); - assert(root1.equals(root2)); + await circuit.checkConstraints(w); + assert(root1.equals(root2)); }); it("Should update an element", async () => { const tree1 = await smt.newMemEmptyTrie(); @@ -213,5 +205,4 @@ describe("SMT test", function () { await testUpdate(tree1, 9, 999, circuit); await testUpdate(tree1, 32, 323232, circuit); }); - }); diff --git a/test/smtverifier.js b/test/smtverifier.js index ce6cd05..f5992ad 100644 --- a/test/smtverifier.js +++ b/test/smtverifier.js @@ -1,14 +1,12 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -21,7 +19,7 @@ async function testInclusion(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, fnc: 0, root: tree.root, @@ -31,9 +29,10 @@ async function testInclusion(tree, key, circuit) { isOld0: 0, key: key, value: res.foundValue - }); + }, true); + + await circuit.checkConstraints(w); - assert(circuit.checkWitness(w)); } async function testExclusion(tree, key, circuit) { @@ -43,7 +42,7 @@ async function testExclusion(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, fnc: 1, root: tree.root, @@ -55,21 +54,18 @@ async function testExclusion(tree, key, circuit) { value: 0 }); - assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); + } -describe("SMT test", function () { +describe("SMT Verifier test", function () { let circuit; let tree; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "smtverifier10_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains SMTVerifier: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "smtverifier10_test.circom")); tree = await smt.newMemEmptyTrie(); await tree.insert(7,77); @@ -97,7 +93,7 @@ describe("SMT test", function () { let siblings = []; for (let i=0; i<10; i++) siblings.push(i); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, fnc: 0, root: 1, @@ -108,7 +104,9 @@ describe("SMT test", function () { key: 44, value: 0 }); - assert(circuit.checkWitness(w)); + + + await circuit.checkConstraints(w); }); it("Check inclussion Adria case", async () => { diff --git a/test/smtverifier_adria.js b/test/smtverifier_adria.js deleted file mode 100644 index 3b93d09..0000000 --- a/test/smtverifier_adria.js +++ /dev/null @@ -1,98 +0,0 @@ -const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const fs = require("fs") - -const bigInt = snarkjs.bigInt; -const smt = require("../src/smt.js"); - -const circuitSource = ` -include "../circuits/smt/smtverifier.circom"; -template SMT(nLevels) { - signal input root; - signal input mtp[nLevels]; - signal input hi; - signal input hv; - - component smtClaimExists = SMTVerifier(nLevels); - smtClaimExists.enabled <== 1; - smtClaimExists.fnc <== 0; - smtClaimExists.root <== root; - for (var i=0; i { - circuitFileName = path.join(__dirname, ".", "rawsmt3.circom"); - fs.writeFileSync(circuitFileName,circuitSource); - }); - - const levels = 4; - async function testsmt3(e1, e2) { - let tree = await smt.newMemEmptyTrie(); - - // insert e1, e2 - await tree.insert(e1.hi, e1.hv); - await tree.insert(e2.hi, e2.hv); - - // generate proof for e1 - const findInfo = await tree.find(e1.hi); - const siblings = findInfo.siblings; - while (siblings.length < levels) siblings.push(bigInt(0)); - - const input = { - root: tree.root, - mtp: siblings, - hi: e1.hi, - hv: e1.hv, - }; - - const compiledCircuit = await compiler( - circuitFileName, - { reduceConstraints: false } - ); - - const circuit = new snarkjs.Circuit(compiledCircuit); - const witness = circuit.calculateWitness(input); - circuit.checkWitness(witness); - } - - it("TestSmts", async () => { - - const e1 = { - hi: bigInt("17124152697573569611556136390143205198134245887034837071647643529178599000839"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - const e2ok = { - hi: bigInt("16498254692537945203721083102154618658340563351558973077349594629411025251262"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - const e2fail = { - hi: bigInt("17195092312975762537892237130737365903429674363577646686847513978084990105579"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - console.log("test e1, e2ok"); - await testsmt3(e1, e2ok); - - console.log("test e1, e2fail"); - await testsmt3(e1, e2fail); - }); -}); -