diff --git a/.github/workflows/build-fmt.yml b/.github/workflows/build-fmt.yml
index cbe83bb4..09b83b9e 100644
--- a/.github/workflows/build-fmt.yml
+++ b/.github/workflows/build-fmt.yml
@@ -44,6 +44,9 @@ jobs:
with:
node-version: 18
cache: "yarn"
+
+ - name: Cache clean
+ run: yarn cache clean
- name: Install dependencies
run: yarn install --frozen-lockfile
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 62b1d9ee..41c7f513 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -88,6 +88,9 @@ jobs:
- name: Install yarn
run: npm install -g yarn
+ - name: Cache clean
+ run: yarn cache clean
+
- name: Install dependencies
run: yarn install --frozen-lockfile
@@ -118,6 +121,9 @@ jobs:
- name: Install yarn
run: npm install -g yarn
+ - name: Cache clean
+ run: yarn cache clean
+
- name: Install dependencies
run: yarn install --frozen-lockfile
diff --git a/.gitmodules b/.gitmodules
index 071da355..acd01fd4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
[submodule "packages/contracts/lib/forge-std"]
path = packages/contracts/lib/forge-std
url = https://github.com/foundry-rs/forge-std
-[submodule "packages/contracts/lib/safe-singleton-deployer-sol"]
- path = packages/contracts/lib/safe-singleton-deployer-sol
- url = https://github.com/wilsoncusack/safe-singleton-deployer-sol
diff --git a/Cargo.lock b/Cargo.lock
index c97648d4..531696e1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 4
+version = 3
[[package]]
name = "Inflector"
@@ -83,9 +83,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.93"
+version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
+checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]]
name = "arrayref"
@@ -105,12 +105,6 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
-[[package]]
-name = "ascii"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e"
-
[[package]]
name = "ascii"
version = "1.1.0"
@@ -202,7 +196,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -243,7 +237,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -265,7 +259,7 @@ dependencies = [
"futures-util",
"http 0.2.12",
"http-body 0.4.6",
- "hyper 0.14.31",
+ "hyper 0.14.32",
"itoa",
"matchit",
"memchr",
@@ -279,7 +273,7 @@ dependencies = [
"serde_urlencoded",
"sync_wrapper 0.1.2",
"tokio",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
]
@@ -548,9 +542,9 @@ dependencies = [
[[package]]
name = "candid"
-version = "0.10.10"
+version = "0.10.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c30ee7f886f296b6422c0ff017e89dd4f831521dfdcc76f3f71aae1ce817222"
+checksum = "d04aa85a9ba2542bded33d1eff0ffb17cb98b1be8117e0a25e1ad8c62bedc881"
dependencies = [
"anyhow",
"binread",
@@ -578,7 +572,7 @@ dependencies = [
"lazy_static",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -606,25 +600,19 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.2"
+version = "1.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc"
+checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333"
dependencies = [
"jobserver",
"libc",
"shlex",
]
-[[package]]
-name = "cesu8"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
-
[[package]]
name = "cfdkim"
version = "0.3.3"
-source = "git+https://github.com/zkemail/cfdkim.git#3b1cfd75e2afad12fbc1e8ece50e93e51415118b"
+source = "git+https://github.com/zkemail/cfdkim.git#f778b0961ecbfc0a18e2dc801ea45886aeb0a242"
dependencies = [
"base64 0.21.7",
"chrono",
@@ -677,9 +665,9 @@ dependencies = [
[[package]]
name = "chrono"
-version = "0.4.38"
+version = "0.4.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
dependencies = [
"android-tzdata",
"iana-time-zone",
@@ -758,19 +746,6 @@ dependencies = [
"thiserror 1.0.69",
]
-[[package]]
-name = "combine"
-version = "3.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680"
-dependencies = [
- "ascii 0.9.3",
- "byteorder",
- "either",
- "memchr",
- "unreachable",
-]
-
[[package]]
name = "combine"
version = "4.6.7"
@@ -882,18 +857,18 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
-version = "0.5.13"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
@@ -910,18 +885,18 @@ dependencies = [
[[package]]
name = "crossbeam-queue"
-version = "0.3.11"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.20"
+version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "crunchy"
@@ -984,7 +959,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -1043,7 +1018,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -1117,7 +1092,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -1447,7 +1422,7 @@ dependencies = [
"reqwest 0.11.27",
"serde",
"serde_json",
- "syn 2.0.90",
+ "syn 2.0.92",
"toml",
"walkdir",
]
@@ -1465,7 +1440,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_json",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -1491,7 +1466,7 @@ dependencies = [
"serde",
"serde_json",
"strum",
- "syn 2.0.90",
+ "syn 2.0.92",
"tempfile",
"thiserror 1.0.69",
"tiny-keccak",
@@ -1688,9 +1663,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.2.0"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "ff"
@@ -1881,7 +1856,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -1992,11 +1967,11 @@ dependencies = [
[[package]]
name = "graphql-parser"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474"
+checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409"
dependencies = [
- "combine 3.8.1",
+ "combine",
"thiserror 1.0.69",
]
@@ -2079,7 +2054,7 @@ checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403"
[[package]]
name = "halo2curves"
version = "0.7.0"
-source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83"
+source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?rev=8771fe5a5d54fc03e74dbc8915db5dad3ab46a83#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83"
dependencies = [
"blake2",
"digest 0.10.7",
@@ -2105,7 +2080,7 @@ dependencies = [
[[package]]
name = "halo2derive"
version = "0.1.0"
-source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83"
+source = "git+https://github.com/privacy-scaling-explorations/halo2curves.git?rev=8771fe5a5d54fc03e74dbc8915db5dad3ab46a83#8771fe5a5d54fc03e74dbc8915db5dad3ab46a83"
dependencies = [
"num-bigint",
"num-integer",
@@ -2258,9 +2233,9 @@ dependencies = [
[[package]]
name = "http"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
dependencies = [
"bytes",
"fnv",
@@ -2285,7 +2260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
- "http 1.1.0",
+ "http 1.2.0",
]
[[package]]
@@ -2296,7 +2271,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
"futures-util",
- "http 1.1.0",
+ "http 1.2.0",
"http-body 1.0.1",
"pin-project-lite",
]
@@ -2315,9 +2290,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
-version = "0.14.31"
+version = "0.14.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85"
+checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
dependencies = [
"bytes",
"futures-channel",
@@ -2339,14 +2314,14 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.5.1"
+version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f"
+checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "http 1.1.0",
+ "http 1.2.0",
"http-body 1.0.1",
"httparse",
"itoa",
@@ -2364,7 +2339,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
dependencies = [
"futures-util",
"http 0.2.12",
- "hyper 0.14.31",
+ "hyper 0.14.32",
"rustls 0.21.12",
"tokio",
"tokio-rustls 0.24.1",
@@ -2372,18 +2347,18 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.27.3"
+version = "0.27.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
+checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [
"futures-util",
- "http 1.1.0",
- "hyper 1.5.1",
+ "http 1.2.0",
+ "hyper 1.5.2",
"hyper-util",
- "rustls 0.23.19",
+ "rustls 0.23.20",
"rustls-pki-types",
"tokio",
- "tokio-rustls 0.26.0",
+ "tokio-rustls 0.26.1",
"tower-service",
"webpki-roots 0.26.7",
]
@@ -2395,7 +2370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
- "hyper 0.14.31",
+ "hyper 0.14.32",
"native-tls",
"tokio",
"tokio-native-tls",
@@ -2410,9 +2385,9 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "http 1.1.0",
+ "http 1.2.0",
"http-body 1.0.1",
- "hyper 1.5.1",
+ "hyper 1.5.2",
"pin-project-lite",
"socket2 0.5.8",
"tokio",
@@ -2456,7 +2431,7 @@ dependencies = [
"ed25519-consensus",
"futures-util",
"hex",
- "http 1.1.0",
+ "http 1.2.0",
"http-body 1.0.1",
"ic-certification",
"ic-transport-types",
@@ -2468,7 +2443,7 @@ dependencies = [
"pkcs8",
"rand",
"rangemap",
- "reqwest 0.12.9",
+ "reqwest 0.12.10",
"ring 0.17.8",
"rustls-webpki 0.102.8",
"sec1",
@@ -2691,7 +2666,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -2780,7 +2755,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -2889,28 +2864,6 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
-[[package]]
-name = "jni"
-version = "0.21.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
-dependencies = [
- "cesu8",
- "cfg-if",
- "combine 4.6.7",
- "jni-sys",
- "log",
- "thiserror 1.0.69",
- "walkdir",
- "windows-sys 0.45.0",
-]
-
-[[package]]
-name = "jni-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
-
[[package]]
name = "jobserver"
version = "0.1.32"
@@ -2922,9 +2875,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.74"
+version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705"
+checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -3040,9 +2993,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.167"
+version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
+checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
[[package]]
name = "libm"
@@ -3125,15 +3078,6 @@ dependencies = [
"quoted_printable 0.5.1",
]
-[[package]]
-name = "malloc_buf"
-version = "0.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "match_cfg"
version = "0.1.0"
@@ -3192,9 +3136,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.8.0"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394"
dependencies = [
"adler2",
]
@@ -3227,12 +3171,6 @@ dependencies = [
"tempfile",
]
-[[package]]
-name = "ndk-context"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
-
[[package]]
name = "new_debug_unreachable"
version = "1.0.6"
@@ -3355,7 +3293,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -3378,20 +3316,11 @@ dependencies = [
"url",
]
-[[package]]
-name = "objc"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
-dependencies = [
- "malloc_buf",
-]
-
[[package]]
name = "object"
-version = "0.36.5"
+version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [
"memchr",
]
@@ -3456,7 +3385,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -3579,7 +3508,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.5.7",
+ "redox_syscall 0.5.8",
"smallvec",
"windows-targets 0.52.6",
]
@@ -3680,20 +3609,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pest"
-version = "2.7.14"
+version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
+checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc"
dependencies = [
"memchr",
- "thiserror 1.0.69",
+ "thiserror 2.0.9",
"ucd-trie",
]
[[package]]
name = "pest_derive"
-version = "2.7.14"
+version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
+checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e"
dependencies = [
"pest",
"pest_generator",
@@ -3701,22 +3630,22 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.7.14"
+version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
+checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
name = "pest_meta"
-version = "2.7.14"
+version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
+checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea"
dependencies = [
"once_cell",
"pest",
@@ -3773,7 +3702,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -3811,7 +3740,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -3856,7 +3785,7 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "poseidon-rs"
version = "1.0.0"
-source = "git+https://github.com/zkemail/poseidon-rs.git#fe5ce2634c27326219d4faf75beb73b40a0beb7d"
+source = "git+https://github.com/zkemail/poseidon-rs.git#c1df2bbb9cd81d761c8f403a4ee6d330f121f718"
dependencies = [
"getrandom",
"halo2curves",
@@ -3904,7 +3833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"
dependencies = [
"proc-macro2",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -3950,9 +3879,9 @@ dependencies = [
[[package]]
name = "proptest"
-version = "1.5.0"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d"
+checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50"
dependencies = [
"bitflags 2.6.0",
"lazy_static",
@@ -3996,9 +3925,9 @@ dependencies = [
"quinn-proto",
"quinn-udp",
"rustc-hash",
- "rustls 0.23.19",
+ "rustls 0.23.20",
"socket2 0.5.8",
- "thiserror 2.0.3",
+ "thiserror 2.0.9",
"tokio",
"tracing",
]
@@ -4014,10 +3943,10 @@ dependencies = [
"rand",
"ring 0.17.8",
"rustc-hash",
- "rustls 0.23.19",
+ "rustls 0.23.20",
"rustls-pki-types",
"slab",
- "thiserror 2.0.3",
+ "thiserror 2.0.9",
"tinyvec",
"tracing",
"web-time",
@@ -4025,9 +3954,9 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.7"
+version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da"
+checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904"
dependencies = [
"cfg_aliases 0.2.1",
"libc",
@@ -4039,9 +3968,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.37"
+version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
@@ -4109,12 +4038,6 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684"
-[[package]]
-name = "raw-window-handle"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
-
[[package]]
name = "rayon"
version = "1.10.0"
@@ -4146,9 +4069,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.7"
+version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
+checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
dependencies = [
"bitflags 2.6.0",
]
@@ -4166,9 +4089,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.11.1"
+version = "1.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
dependencies = [
"aho-corasick",
"memchr",
@@ -4213,7 +4136,8 @@ dependencies = [
"graphql_client",
"handlebars",
"hex",
- "http 1.1.0",
+ "home",
+ "http 1.2.0",
"ic-agent",
"ic-utils",
"lazy_static",
@@ -4239,17 +4163,17 @@ dependencies = [
"tokio",
"tower-http",
"uuid 1.11.0",
- "webbrowser",
]
[[package]]
name = "relayer-utils"
-version = "0.4.2"
-source = "git+https://github.com/zkemail/relayer-utils.git#0663df1271beac13ec14c731ee1ce7ae4be54d16"
+version = "0.4.60"
+source = "git+https://github.com/zkemail/relayer-utils.git#cb50b38e9f35d275e19dd8f2cfbe0d0203452c18"
dependencies = [
"anyhow",
"base64 0.22.1",
"cfdkim",
+ "console_error_panic_hook",
"ethers",
"file-rotate",
"halo2curves",
@@ -4292,7 +4216,7 @@ dependencies = [
"h2",
"http 0.2.12",
"http-body 0.4.6",
- "hyper 0.14.31",
+ "hyper 0.14.32",
"hyper-rustls 0.24.2",
"hyper-tls",
"ipnet",
@@ -4324,20 +4248,20 @@ dependencies = [
[[package]]
name = "reqwest"
-version = "0.12.9"
+version = "0.12.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
+checksum = "3d3536321cfc54baa8cf3e273d5e1f63f889067829c4b410fcdbac8ca7b80994"
dependencies = [
"base64 0.22.1",
"bytes",
"futures-channel",
"futures-core",
"futures-util",
- "http 1.1.0",
+ "http 1.2.0",
"http-body 1.0.1",
"http-body-util",
- "hyper 1.5.1",
- "hyper-rustls 0.27.3",
+ "hyper 1.5.2",
+ "hyper-rustls 0.27.5",
"hyper-util",
"ipnet",
"js-sys",
@@ -4347,7 +4271,7 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"quinn",
- "rustls 0.23.19",
+ "rustls 0.23.20",
"rustls-pemfile 2.2.0",
"rustls-pki-types",
"serde",
@@ -4355,8 +4279,9 @@ dependencies = [
"serde_urlencoded",
"sync_wrapper 1.0.2",
"tokio",
- "tokio-rustls 0.26.0",
+ "tokio-rustls 0.26.1",
"tokio-util",
+ "tower 0.5.2",
"tower-service",
"url",
"wasm-bindgen",
@@ -4499,15 +4424,15 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.38.41"
+version = "0.38.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
+checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85"
dependencies = [
"bitflags 2.6.0",
"errno",
"libc",
"linux-raw-sys",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -4524,9 +4449,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.19"
+version = "0.23.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1"
+checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b"
dependencies = [
"once_cell",
"ring 0.17.8",
@@ -4556,9 +4481,9 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.10.0"
+version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
+checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37"
dependencies = [
"web-time",
]
@@ -4586,9 +4511,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.18"
+version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
+checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
[[package]]
name = "ryu"
@@ -4635,7 +4560,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -4710,9 +4635,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.12.1"
+version = "2.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2"
+checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5"
dependencies = [
"core-foundation-sys",
"libc",
@@ -4720,15 +4645,15 @@ dependencies = [
[[package]]
name = "self_cell"
-version = "1.0.4"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a"
+checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe"
[[package]]
name = "semver"
-version = "1.0.23"
+version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba"
dependencies = [
"serde",
]
@@ -4747,9 +4672,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
[[package]]
name = "serde"
-version = "1.0.215"
+version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
+checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
dependencies = [
"serde_derive",
]
@@ -4786,20 +4711,20 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.215"
+version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
+checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
name = "serde_json"
-version = "1.0.133"
+version = "1.0.134"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
+checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
dependencies = [
"itoa",
"memchr",
@@ -4825,7 +4750,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5369,7 +5294,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5417,9 +5342,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.90"
+version = "2.0.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
+checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126"
dependencies = [
"proc-macro2",
"quote",
@@ -5449,7 +5374,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5492,7 +5417,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
dependencies = [
"cfg-if",
- "fastrand 2.2.0",
+ "fastrand 2.3.0",
"once_cell",
"rustix",
"windows-sys 0.59.0",
@@ -5520,11 +5445,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.3"
+version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
+checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc"
dependencies = [
- "thiserror-impl 2.0.3",
+ "thiserror-impl 2.0.9",
]
[[package]]
@@ -5535,18 +5460,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.3"
+version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
+checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5605,7 +5530,7 @@ version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82"
dependencies = [
- "ascii 1.1.0",
+ "ascii",
"chunked_transfer",
"httpdate",
"log",
@@ -5623,9 +5548,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.8.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
dependencies = [
"tinyvec_macros",
]
@@ -5638,9 +5563,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.41.1"
+version = "1.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"
+checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551"
dependencies = [
"backtrace",
"bytes",
@@ -5662,7 +5587,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5687,20 +5612,19 @@ dependencies = [
[[package]]
name = "tokio-rustls"
-version = "0.26.0"
+version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37"
dependencies = [
- "rustls 0.23.19",
- "rustls-pki-types",
+ "rustls 0.23.20",
"tokio",
]
[[package]]
name = "tokio-stream"
-version = "0.1.16"
+version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -5724,9 +5648,9 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.12"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
+checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
dependencies = [
"bytes",
"futures-core",
@@ -5785,6 +5709,21 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tower"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 1.0.2",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
[[package]]
name = "tower-http"
version = "0.4.2"
@@ -5833,7 +5772,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -5964,9 +5903,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
[[package]]
name = "unicode-bidi"
-version = "0.3.17"
+version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
+checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
[[package]]
name = "unicode-ident"
@@ -6013,15 +5952,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
-[[package]]
-name = "unreachable"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
-dependencies = [
- "void",
-]
-
[[package]]
name = "unroll"
version = "0.1.5"
@@ -6108,12 +6038,6 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-[[package]]
-name = "void"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
-
[[package]]
name = "walkdir"
version = "2.5.0"
@@ -6147,9 +6071,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
name = "wasm-bindgen"
-version = "0.2.97"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c"
+checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396"
dependencies = [
"cfg-if",
"once_cell",
@@ -6160,24 +6084,23 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.97"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd"
+checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79"
dependencies = [
"bumpalo",
"log",
- "once_cell",
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.47"
+version = "0.4.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d"
+checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2"
dependencies = [
"cfg-if",
"js-sys",
@@ -6188,9 +6111,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.97"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051"
+checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -6198,32 +6121,31 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.97"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d"
+checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.97"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49"
+checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6"
[[package]]
name = "wasm-bindgen-test"
-version = "0.3.47"
+version = "0.3.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d919bb60ebcecb9160afee6c71b43a58a4f0517a2de0054cd050d02cec08201"
+checksum = "c61d44563646eb934577f2772656c7ad5e9c90fac78aa8013d776fcdaf24625d"
dependencies = [
"js-sys",
"minicov",
- "once_cell",
"scoped-tls",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -6232,13 +6154,13 @@ dependencies = [
[[package]]
name = "wasm-bindgen-test-macro"
-version = "0.3.47"
+version = "0.3.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "222ebde6ea87fbfa6bdd2e9f1fd8a91d60aee5db68792632176c4e16a74fc7d8"
+checksum = "54171416ce73aa0b9c377b51cc3cb542becee1cd678204812e8392e5b0e4a031"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -6256,9 +6178,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.74"
+version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c"
+checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -6274,23 +6196,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "webbrowser"
-version = "0.8.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b"
-dependencies = [
- "core-foundation",
- "home",
- "jni",
- "log",
- "ndk-context",
- "objc",
- "raw-window-handle",
- "url",
- "web-sys",
-]
-
[[package]]
name = "webpki-roots"
version = "0.25.4"
@@ -6312,7 +6217,7 @@ version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d"
dependencies = [
- "redox_syscall 0.5.7",
+ "redox_syscall 0.5.8",
"wasite",
]
@@ -6392,15 +6297,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows-sys"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-dependencies = [
- "windows-targets 0.42.2",
-]
-
[[package]]
name = "windows-sys"
version = "0.48.0"
@@ -6428,21 +6324,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
[[package]]
name = "windows-targets"
version = "0.48.5"
@@ -6474,12 +6355,6 @@ dependencies = [
"windows_x86_64_msvc 0.52.6",
]
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
@@ -6492,12 +6367,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
@@ -6510,12 +6379,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
@@ -6534,12 +6397,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
@@ -6552,12 +6409,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
@@ -6570,12 +6421,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
@@ -6588,12 +6433,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
@@ -6691,7 +6530,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
"synstructure",
]
@@ -6713,7 +6552,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -6733,7 +6572,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
"synstructure",
]
@@ -6762,7 +6601,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.90",
+ "syn 2.0.92",
]
[[package]]
@@ -6788,7 +6627,7 @@ dependencies = [
[[package]]
name = "zk-regex-apis"
version = "2.3.1"
-source = "git+https://github.com/zkemail/zk-regex.git#7002a2179e076449b84e3e7e8ba94e88d0a2dc2f"
+source = "git+https://github.com/zkemail/zk-regex.git?branch=dimidumo/zk-802-consistent-casing-everywhere#5b357f2c7aa4643964534d88ebe5db3512048a71"
dependencies = [
"fancy-regex",
"itertools 0.13.0",
diff --git a/packages/circuits/helpers/recipient.ts b/packages/circuits/helpers/recipient.ts
index 00198dae..6da74df1 100644
--- a/packages/circuits/helpers/recipient.ts
+++ b/packages/circuits/helpers/recipient.ts
@@ -10,9 +10,9 @@ export async function genRecipientInputLegacy(emailFilePath: string): Promise<{
const emailRaw = await promisify(fs.readFile)(emailFilePath, "utf8");
const parsedEmail = await relayerUtils.parseEmail(emailRaw);
const subjectEmailIdxes = relayerUtils.extractSubjectAllIdxes(
- parsedEmail.canonicalized_header
+ parsedEmail.canonicalizedHeader
)[0];
- const subject = parsedEmail.canonicalized_header.slice(
+ const subject = parsedEmail.canonicalizedHeader.slice(
subjectEmailIdxes[0],
subjectEmailIdxes[1]
);
diff --git a/packages/circuits/package.json b/packages/circuits/package.json
index c93263dc..42947ae0 100644
--- a/packages/circuits/package.json
+++ b/packages/circuits/package.json
@@ -12,8 +12,8 @@
},
"dependencies": {
"@zk-email/circuits": "=6.3.2",
- "@zk-email/relayer-utils": "https://gitpkg.vercel.app/zkemail/relayer-utils/pkg?feat/fix-selector-bugs",
- "@zk-email/zk-regex-circom": "=2.3.2",
+ "@zk-email/relayer-utils": "=0.4.60",
+ "@zk-email/zk-regex-circom": "=2.3.1",
"commander": "^12.1.0",
"snarkjs": "=0.7.5"
},
diff --git a/packages/circuits/src/regexes/command.json b/packages/circuits/src/regexes/command.json
index 1c70eb80..11efbc80 100644
--- a/packages/circuits/src/regexes/command.json
+++ b/packages/circuits/src/regexes/command.json
@@ -2,15 +2,15 @@
"parts": [
{
"is_public": false,
- "regex_def": "\\[zkemail-begin\\]"
+ "regex_def": "(
]*>)(<[^<>]+>)*"
},
{
"is_public": true,
- "regex_def": "[^<>/\\[\\]]+"
+ "regex_def": "[^<>/]+"
},
{
"is_public": false,
- "regex_def": "\\[zkemail-end\\]"
+ "regex_def": "(<[^<>]+>)*
"
}
]
}
\ No newline at end of file
diff --git a/packages/circuits/src/regexes/command_regex.circom b/packages/circuits/src/regexes/command_regex.circom
index c9ea6535..8052e198 100644
--- a/packages/circuits/src/regexes/command_regex.circom
+++ b/packages/circuits/src/regexes/command_regex.circom
@@ -2,7 +2,7 @@ pragma circom 2.1.5;
include "@zk-email/zk-regex-circom/circuits/regex_helpers.circom";
-// regex: \[zkemail-begin\][^<>/\[\]]+\[zkemail-end\]
+// regex: (]*>)(<[^<>]+>)*[^<>/]+(<[^<>]+>)*
template CommandRegex(msg_bytes) {
signal input msg[msg_bytes];
signal output out;
@@ -17,294 +17,460 @@ template CommandRegex(msg_bytes) {
in[i+1] <== msg[i];
}
- component eq[65][num_bytes];
- component lt[16][num_bytes];
- component and[59][num_bytes];
- component multi_or[12][num_bytes];
- signal states[num_bytes+1][37];
- signal states_tmp[num_bytes+1][37];
+ component eq[81][num_bytes];
+ component lt[50][num_bytes];
+ component and[271][num_bytes];
+ component multi_or[61][num_bytes];
+ signal states[num_bytes+1][78];
+ signal states_tmp[num_bytes+1][78];
signal from_zero_enabled[num_bytes+1];
from_zero_enabled[num_bytes] <== 0;
component state_changed[num_bytes];
- for (var i = 1; i < 37; i++) {
+ for (var i = 1; i < 78; i++) {
states[0][i] <== 0;
}
for (var i = 0; i < num_bytes; i++) {
- state_changed[i] = MultiOR(36);
+ state_changed[i] = MultiOR(77);
states[i][0] <== 1;
eq[0][i] = IsEqual();
eq[0][i].in[0] <== in[i];
- eq[0][i].in[1] <== 91;
+ eq[0][i].in[1] <== 60;
and[0][i] = AND();
and[0][i].a <== states[i][0];
and[0][i].b <== eq[0][i].out;
states_tmp[i+1][1] <== 0;
eq[1][i] = IsEqual();
eq[1][i].in[0] <== in[i];
- eq[1][i].in[1] <== 122;
+ eq[1][i].in[1] <== 100;
and[1][i] = AND();
and[1][i].a <== states[i][1];
and[1][i].b <== eq[1][i].out;
states[i+1][2] <== and[1][i].out;
eq[2][i] = IsEqual();
eq[2][i].in[0] <== in[i];
- eq[2][i].in[1] <== 107;
+ eq[2][i].in[1] <== 105;
and[2][i] = AND();
and[2][i].a <== states[i][2];
and[2][i].b <== eq[2][i].out;
states[i+1][3] <== and[2][i].out;
eq[3][i] = IsEqual();
eq[3][i].in[0] <== in[i];
- eq[3][i].in[1] <== 101;
+ eq[3][i].in[1] <== 118;
and[3][i] = AND();
and[3][i].a <== states[i][3];
and[3][i].b <== eq[3][i].out;
states[i+1][4] <== and[3][i].out;
eq[4][i] = IsEqual();
eq[4][i].in[0] <== in[i];
- eq[4][i].in[1] <== 109;
+ eq[4][i].in[1] <== 32;
and[4][i] = AND();
and[4][i].a <== states[i][4];
and[4][i].b <== eq[4][i].out;
states[i+1][5] <== and[4][i].out;
- eq[5][i] = IsEqual();
- eq[5][i].in[0] <== in[i];
- eq[5][i].in[1] <== 97;
and[5][i] = AND();
and[5][i].a <== states[i][5];
- and[5][i].b <== eq[5][i].out;
+ and[5][i].b <== eq[2][i].out;
states[i+1][6] <== and[5][i].out;
- eq[6][i] = IsEqual();
- eq[6][i].in[0] <== in[i];
- eq[6][i].in[1] <== 105;
and[6][i] = AND();
and[6][i].a <== states[i][6];
- and[6][i].b <== eq[6][i].out;
+ and[6][i].b <== eq[1][i].out;
states[i+1][7] <== and[6][i].out;
- eq[7][i] = IsEqual();
- eq[7][i].in[0] <== in[i];
- eq[7][i].in[1] <== 108;
+ eq[5][i] = IsEqual();
+ eq[5][i].in[0] <== in[i];
+ eq[5][i].in[1] <== 61;
and[7][i] = AND();
and[7][i].a <== states[i][7];
- and[7][i].b <== eq[7][i].out;
- states[i+1][8] <== and[7][i].out;
- eq[8][i] = IsEqual();
- eq[8][i].in[0] <== in[i];
- eq[8][i].in[1] <== 45;
- and[8][i] = AND();
- and[8][i].a <== states[i][8];
- and[8][i].b <== eq[8][i].out;
- states[i+1][9] <== and[8][i].out;
- eq[9][i] = IsEqual();
- eq[9][i].in[0] <== in[i];
- eq[9][i].in[1] <== 98;
- and[9][i] = AND();
- and[9][i].a <== states[i][9];
- and[9][i].b <== eq[9][i].out;
- states[i+1][10] <== and[9][i].out;
- and[10][i] = AND();
- and[10][i].a <== states[i][10];
- and[10][i].b <== eq[3][i].out;
- states[i+1][11] <== and[10][i].out;
- eq[10][i] = IsEqual();
- eq[10][i].in[0] <== in[i];
- eq[10][i].in[1] <== 103;
- and[11][i] = AND();
- and[11][i].a <== states[i][11];
- and[11][i].b <== eq[10][i].out;
- states[i+1][12] <== and[11][i].out;
- and[12][i] = AND();
- and[12][i].a <== states[i][12];
- and[12][i].b <== eq[6][i].out;
- states[i+1][13] <== and[12][i].out;
- eq[11][i] = IsEqual();
- eq[11][i].in[0] <== in[i];
- eq[11][i].in[1] <== 110;
- and[13][i] = AND();
- and[13][i].a <== states[i][13];
- and[13][i].b <== eq[11][i].out;
- states[i+1][14] <== and[13][i].out;
- eq[12][i] = IsEqual();
- eq[12][i].in[0] <== in[i];
- eq[12][i].in[1] <== 93;
- and[14][i] = AND();
- and[14][i].a <== states[i][14];
- and[14][i].b <== eq[12][i].out;
- states[i+1][15] <== and[14][i].out;
+ and[7][i].b <== eq[5][i].out;
lt[0][i] = LessEqThan(8);
lt[0][i].in[0] <== 1;
lt[0][i].in[1] <== in[i];
lt[1][i] = LessEqThan(8);
lt[1][i].in[0] <== in[i];
- lt[1][i].in[1] <== 46;
- and[15][i] = AND();
- and[15][i].a <== lt[0][i].out;
- and[15][i].b <== lt[1][i].out;
+ lt[1][i].in[1] <== 33;
+ and[8][i] = AND();
+ and[8][i].a <== lt[0][i].out;
+ and[8][i].b <== lt[1][i].out;
lt[2][i] = LessEqThan(8);
- lt[2][i].in[0] <== 63;
+ lt[2][i].in[0] <== 35;
lt[2][i].in[1] <== in[i];
lt[3][i] = LessEqThan(8);
lt[3][i].in[0] <== in[i];
- lt[3][i].in[1] <== 90;
- and[16][i] = AND();
- and[16][i].a <== lt[2][i].out;
- and[16][i].b <== lt[3][i].out;
+ lt[3][i].in[1] <== 127;
+ and[9][i] = AND();
+ and[9][i].a <== lt[2][i].out;
+ and[9][i].b <== lt[3][i].out;
+ and[10][i] = AND();
+ and[10][i].a <== states[i][8];
+ multi_or[0][i] = MultiOR(2);
+ multi_or[0][i].in[0] <== and[8][i].out;
+ multi_or[0][i].in[1] <== and[9][i].out;
+ and[10][i].b <== multi_or[0][i].out;
lt[4][i] = LessEqThan(8);
- lt[4][i].in[0] <== 94;
+ lt[4][i].in[0] <== 128;
lt[4][i].in[1] <== in[i];
lt[5][i] = LessEqThan(8);
lt[5][i].in[0] <== in[i];
- lt[5][i].in[1] <== 127;
+ lt[5][i].in[1] <== 191;
+ and[11][i] = AND();
+ and[11][i].a <== lt[4][i].out;
+ and[11][i].b <== lt[5][i].out;
+ and[12][i] = AND();
+ and[12][i].a <== states[i][10];
+ and[12][i].b <== and[11][i].out;
+ multi_or[1][i] = MultiOR(3);
+ multi_or[1][i].in[0] <== and[7][i].out;
+ multi_or[1][i].in[1] <== and[10][i].out;
+ multi_or[1][i].in[2] <== and[12][i].out;
+ states[i+1][8] <== multi_or[1][i].out;
+ eq[6][i] = IsEqual();
+ eq[6][i].in[0] <== in[i];
+ eq[6][i].in[1] <== 34;
+ and[13][i] = AND();
+ and[13][i].a <== states[i][8];
+ and[13][i].b <== eq[6][i].out;
+ lt[6][i] = LessEqThan(8);
+ lt[6][i].in[0] <== 35;
+ lt[6][i].in[1] <== in[i];
+ lt[7][i] = LessEqThan(8);
+ lt[7][i].in[0] <== in[i];
+ lt[7][i].in[1] <== 121;
+ and[14][i] = AND();
+ and[14][i].a <== lt[6][i].out;
+ and[14][i].b <== lt[7][i].out;
+ eq[7][i] = IsEqual();
+ eq[7][i].in[0] <== in[i];
+ eq[7][i].in[1] <== 123;
+ eq[8][i] = IsEqual();
+ eq[8][i].in[0] <== in[i];
+ eq[8][i].in[1] <== 124;
+ eq[9][i] = IsEqual();
+ eq[9][i].in[0] <== in[i];
+ eq[9][i].in[1] <== 125;
+ eq[10][i] = IsEqual();
+ eq[10][i].in[0] <== in[i];
+ eq[10][i].in[1] <== 126;
+ eq[11][i] = IsEqual();
+ eq[11][i].in[0] <== in[i];
+ eq[11][i].in[1] <== 127;
+ and[15][i] = AND();
+ and[15][i].a <== states[i][9];
+ multi_or[2][i] = MultiOR(7);
+ multi_or[2][i].in[0] <== and[8][i].out;
+ multi_or[2][i].in[1] <== and[14][i].out;
+ multi_or[2][i].in[2] <== eq[7][i].out;
+ multi_or[2][i].in[3] <== eq[8][i].out;
+ multi_or[2][i].in[4] <== eq[9][i].out;
+ multi_or[2][i].in[5] <== eq[10][i].out;
+ multi_or[2][i].in[6] <== eq[11][i].out;
+ and[15][i].b <== multi_or[2][i].out;
+ and[16][i] = AND();
+ and[16][i].a <== states[i][17];
+ and[16][i].b <== and[11][i].out;
+ lt[8][i] = LessEqThan(8);
+ lt[8][i].in[0] <== 35;
+ lt[8][i].in[1] <== in[i];
+ lt[9][i] = LessEqThan(8);
+ lt[9][i].in[0] <== in[i];
+ lt[9][i].in[1] <== 106;
and[17][i] = AND();
- and[17][i].a <== lt[4][i].out;
- and[17][i].b <== lt[5][i].out;
+ and[17][i].a <== lt[8][i].out;
+ and[17][i].b <== lt[9][i].out;
+ eq[12][i] = IsEqual();
+ eq[12][i].in[0] <== in[i];
+ eq[12][i].in[1] <== 108;
eq[13][i] = IsEqual();
eq[13][i].in[0] <== in[i];
- eq[13][i].in[1] <== 48;
+ eq[13][i].in[1] <== 109;
eq[14][i] = IsEqual();
eq[14][i].in[0] <== in[i];
- eq[14][i].in[1] <== 49;
+ eq[14][i].in[1] <== 110;
eq[15][i] = IsEqual();
eq[15][i].in[0] <== in[i];
- eq[15][i].in[1] <== 50;
+ eq[15][i].in[1] <== 111;
eq[16][i] = IsEqual();
eq[16][i].in[0] <== in[i];
- eq[16][i].in[1] <== 51;
+ eq[16][i].in[1] <== 112;
eq[17][i] = IsEqual();
eq[17][i].in[0] <== in[i];
- eq[17][i].in[1] <== 52;
+ eq[17][i].in[1] <== 113;
eq[18][i] = IsEqual();
eq[18][i].in[0] <== in[i];
- eq[18][i].in[1] <== 53;
+ eq[18][i].in[1] <== 114;
eq[19][i] = IsEqual();
eq[19][i].in[0] <== in[i];
- eq[19][i].in[1] <== 54;
+ eq[19][i].in[1] <== 115;
eq[20][i] = IsEqual();
eq[20][i].in[0] <== in[i];
- eq[20][i].in[1] <== 55;
+ eq[20][i].in[1] <== 116;
eq[21][i] = IsEqual();
eq[21][i].in[0] <== in[i];
- eq[21][i].in[1] <== 56;
+ eq[21][i].in[1] <== 117;
eq[22][i] = IsEqual();
eq[22][i].in[0] <== in[i];
- eq[22][i].in[1] <== 57;
+ eq[22][i].in[1] <== 119;
eq[23][i] = IsEqual();
eq[23][i].in[0] <== in[i];
- eq[23][i].in[1] <== 58;
+ eq[23][i].in[1] <== 120;
eq[24][i] = IsEqual();
eq[24][i].in[0] <== in[i];
- eq[24][i].in[1] <== 59;
- eq[25][i] = IsEqual();
- eq[25][i].in[0] <== in[i];
- eq[25][i].in[1] <== 61;
- eq[26][i] = IsEqual();
- eq[26][i].in[0] <== in[i];
- eq[26][i].in[1] <== 92;
+ eq[24][i].in[1] <== 121;
and[18][i] = AND();
- and[18][i].a <== states[i][15];
- multi_or[0][i] = MultiOR(17);
- multi_or[0][i].in[0] <== and[15][i].out;
- multi_or[0][i].in[1] <== and[16][i].out;
- multi_or[0][i].in[2] <== and[17][i].out;
- multi_or[0][i].in[3] <== eq[13][i].out;
- multi_or[0][i].in[4] <== eq[14][i].out;
- multi_or[0][i].in[5] <== eq[15][i].out;
- multi_or[0][i].in[6] <== eq[16][i].out;
- multi_or[0][i].in[7] <== eq[17][i].out;
- multi_or[0][i].in[8] <== eq[18][i].out;
- multi_or[0][i].in[9] <== eq[19][i].out;
- multi_or[0][i].in[10] <== eq[20][i].out;
- multi_or[0][i].in[11] <== eq[21][i].out;
- multi_or[0][i].in[12] <== eq[22][i].out;
- multi_or[0][i].in[13] <== eq[23][i].out;
- multi_or[0][i].in[14] <== eq[24][i].out;
- multi_or[0][i].in[15] <== eq[25][i].out;
- multi_or[0][i].in[16] <== eq[26][i].out;
- and[18][i].b <== multi_or[0][i].out;
+ and[18][i].a <== states[i][24];
+ multi_or[3][i] = MultiOR(21);
+ multi_or[3][i].in[0] <== and[8][i].out;
+ multi_or[3][i].in[1] <== and[17][i].out;
+ multi_or[3][i].in[2] <== eq[12][i].out;
+ multi_or[3][i].in[3] <== eq[13][i].out;
+ multi_or[3][i].in[4] <== eq[14][i].out;
+ multi_or[3][i].in[5] <== eq[15][i].out;
+ multi_or[3][i].in[6] <== eq[16][i].out;
+ multi_or[3][i].in[7] <== eq[17][i].out;
+ multi_or[3][i].in[8] <== eq[18][i].out;
+ multi_or[3][i].in[9] <== eq[19][i].out;
+ multi_or[3][i].in[10] <== eq[20][i].out;
+ multi_or[3][i].in[11] <== eq[21][i].out;
+ multi_or[3][i].in[12] <== eq[3][i].out;
+ multi_or[3][i].in[13] <== eq[22][i].out;
+ multi_or[3][i].in[14] <== eq[23][i].out;
+ multi_or[3][i].in[15] <== eq[24][i].out;
+ multi_or[3][i].in[16] <== eq[7][i].out;
+ multi_or[3][i].in[17] <== eq[8][i].out;
+ multi_or[3][i].in[18] <== eq[9][i].out;
+ multi_or[3][i].in[19] <== eq[10][i].out;
+ multi_or[3][i].in[20] <== eq[11][i].out;
+ and[18][i].b <== multi_or[3][i].out;
+ lt[10][i] = LessEqThan(8);
+ lt[10][i].in[0] <== 35;
+ lt[10][i].in[1] <== in[i];
+ lt[11][i] = LessEqThan(8);
+ lt[11][i].in[0] <== in[i];
+ lt[11][i].in[1] <== 100;
and[19][i] = AND();
- and[19][i].a <== states[i][16];
- and[19][i].b <== multi_or[0][i].out;
- lt[6][i] = LessEqThan(8);
- lt[6][i].in[0] <== 128;
- lt[6][i].in[1] <== in[i];
- lt[7][i] = LessEqThan(8);
- lt[7][i].in[0] <== in[i];
- lt[7][i].in[1] <== 191;
+ and[19][i].a <== lt[10][i].out;
+ and[19][i].b <== lt[11][i].out;
+ lt[12][i] = LessEqThan(8);
+ lt[12][i].in[0] <== 102;
+ lt[12][i].in[1] <== in[i];
+ lt[13][i] = LessEqThan(8);
+ lt[13][i].in[0] <== in[i];
+ lt[13][i].in[1] <== 121;
and[20][i] = AND();
- and[20][i].a <== lt[6][i].out;
- and[20][i].b <== lt[7][i].out;
+ and[20][i].a <== lt[12][i].out;
+ and[20][i].b <== lt[13][i].out;
and[21][i] = AND();
- and[21][i].a <== states[i][17];
- and[21][i].b <== and[20][i].out;
- multi_or[1][i] = MultiOR(3);
- multi_or[1][i].in[0] <== and[18][i].out;
- multi_or[1][i].in[1] <== and[19][i].out;
- multi_or[1][i].in[2] <== and[21][i].out;
- states[i+1][16] <== multi_or[1][i].out;
- lt[8][i] = LessEqThan(8);
- lt[8][i].in[0] <== 194;
- lt[8][i].in[1] <== in[i];
- lt[9][i] = LessEqThan(8);
- lt[9][i].in[0] <== in[i];
- lt[9][i].in[1] <== 223;
+ and[21][i].a <== states[i][25];
+ multi_or[4][i] = MultiOR(8);
+ multi_or[4][i].in[0] <== and[8][i].out;
+ multi_or[4][i].in[1] <== and[19][i].out;
+ multi_or[4][i].in[2] <== and[20][i].out;
+ multi_or[4][i].in[3] <== eq[7][i].out;
+ multi_or[4][i].in[4] <== eq[8][i].out;
+ multi_or[4][i].in[5] <== eq[9][i].out;
+ multi_or[4][i].in[6] <== eq[10][i].out;
+ multi_or[4][i].in[7] <== eq[11][i].out;
+ and[21][i].b <== multi_or[4][i].out;
+ lt[14][i] = LessEqThan(8);
+ lt[14][i].in[0] <== 35;
+ lt[14][i].in[1] <== in[i];
+ lt[15][i] = LessEqThan(8);
+ lt[15][i].in[0] <== in[i];
+ lt[15][i].in[1] <== 108;
and[22][i] = AND();
- and[22][i].a <== lt[8][i].out;
- and[22][i].b <== lt[9][i].out;
+ and[22][i].a <== lt[14][i].out;
+ and[22][i].b <== lt[15][i].out;
and[23][i] = AND();
- and[23][i].a <== states[i][15];
- and[23][i].b <== and[22][i].out;
+ and[23][i].a <== states[i][26];
+ multi_or[5][i] = MultiOR(19);
+ multi_or[5][i].in[0] <== and[8][i].out;
+ multi_or[5][i].in[1] <== and[22][i].out;
+ multi_or[5][i].in[2] <== eq[14][i].out;
+ multi_or[5][i].in[3] <== eq[15][i].out;
+ multi_or[5][i].in[4] <== eq[16][i].out;
+ multi_or[5][i].in[5] <== eq[17][i].out;
+ multi_or[5][i].in[6] <== eq[18][i].out;
+ multi_or[5][i].in[7] <== eq[19][i].out;
+ multi_or[5][i].in[8] <== eq[20][i].out;
+ multi_or[5][i].in[9] <== eq[21][i].out;
+ multi_or[5][i].in[10] <== eq[3][i].out;
+ multi_or[5][i].in[11] <== eq[22][i].out;
+ multi_or[5][i].in[12] <== eq[23][i].out;
+ multi_or[5][i].in[13] <== eq[24][i].out;
+ multi_or[5][i].in[14] <== eq[7][i].out;
+ multi_or[5][i].in[15] <== eq[8][i].out;
+ multi_or[5][i].in[16] <== eq[9][i].out;
+ multi_or[5][i].in[17] <== eq[10][i].out;
+ multi_or[5][i].in[18] <== eq[11][i].out;
+ and[23][i].b <== multi_or[5][i].out;
+ lt[16][i] = LessEqThan(8);
+ lt[16][i].in[0] <== 35;
+ lt[16][i].in[1] <== in[i];
+ lt[17][i] = LessEqThan(8);
+ lt[17][i].in[0] <== in[i];
+ lt[17][i].in[1] <== 96;
and[24][i] = AND();
- and[24][i].a <== states[i][16];
- and[24][i].b <== and[22][i].out;
- lt[10][i] = LessEqThan(8);
- lt[10][i].in[0] <== 160;
- lt[10][i].in[1] <== in[i];
- lt[11][i] = LessEqThan(8);
- lt[11][i].in[0] <== in[i];
- lt[11][i].in[1] <== 191;
+ and[24][i].a <== lt[16][i].out;
+ and[24][i].b <== lt[17][i].out;
+ lt[18][i] = LessEqThan(8);
+ lt[18][i].in[0] <== 98;
+ lt[18][i].in[1] <== in[i];
+ lt[19][i] = LessEqThan(8);
+ lt[19][i].in[0] <== in[i];
+ lt[19][i].in[1] <== 121;
and[25][i] = AND();
- and[25][i].a <== lt[10][i].out;
- and[25][i].b <== lt[11][i].out;
+ and[25][i].a <== lt[18][i].out;
+ and[25][i].b <== lt[19][i].out;
and[26][i] = AND();
- and[26][i].a <== states[i][18];
- and[26][i].b <== and[25][i].out;
+ and[26][i].a <== states[i][27];
+ multi_or[6][i] = MultiOR(8);
+ multi_or[6][i].in[0] <== and[8][i].out;
+ multi_or[6][i].in[1] <== and[24][i].out;
+ multi_or[6][i].in[2] <== and[25][i].out;
+ multi_or[6][i].in[3] <== eq[7][i].out;
+ multi_or[6][i].in[4] <== eq[8][i].out;
+ multi_or[6][i].in[5] <== eq[9][i].out;
+ multi_or[6][i].in[6] <== eq[10][i].out;
+ multi_or[6][i].in[7] <== eq[11][i].out;
+ and[26][i].b <== multi_or[6][i].out;
+ lt[20][i] = LessEqThan(8);
+ lt[20][i].in[0] <== 35;
+ lt[20][i].in[1] <== in[i];
+ lt[21][i] = LessEqThan(8);
+ lt[21][i].in[0] <== in[i];
+ lt[21][i].in[1] <== 104;
and[27][i] = AND();
- and[27][i].a <== states[i][19];
- and[27][i].b <== and[20][i].out;
- lt[12][i] = LessEqThan(8);
- lt[12][i].in[0] <== 128;
- lt[12][i].in[1] <== in[i];
- lt[13][i] = LessEqThan(8);
- lt[13][i].in[0] <== in[i];
- lt[13][i].in[1] <== 159;
+ and[27][i].a <== lt[20][i].out;
+ and[27][i].b <== lt[21][i].out;
+ eq[25][i] = IsEqual();
+ eq[25][i].in[0] <== in[i];
+ eq[25][i].in[1] <== 106;
+ eq[26][i] = IsEqual();
+ eq[26][i].in[0] <== in[i];
+ eq[26][i].in[1] <== 107;
and[28][i] = AND();
- and[28][i].a <== lt[12][i].out;
- and[28][i].b <== lt[13][i].out;
+ and[28][i].a <== states[i][28];
+ multi_or[7][i] = MultiOR(23);
+ multi_or[7][i].in[0] <== and[8][i].out;
+ multi_or[7][i].in[1] <== and[27][i].out;
+ multi_or[7][i].in[2] <== eq[25][i].out;
+ multi_or[7][i].in[3] <== eq[26][i].out;
+ multi_or[7][i].in[4] <== eq[12][i].out;
+ multi_or[7][i].in[5] <== eq[13][i].out;
+ multi_or[7][i].in[6] <== eq[14][i].out;
+ multi_or[7][i].in[7] <== eq[15][i].out;
+ multi_or[7][i].in[8] <== eq[16][i].out;
+ multi_or[7][i].in[9] <== eq[17][i].out;
+ multi_or[7][i].in[10] <== eq[18][i].out;
+ multi_or[7][i].in[11] <== eq[19][i].out;
+ multi_or[7][i].in[12] <== eq[20][i].out;
+ multi_or[7][i].in[13] <== eq[21][i].out;
+ multi_or[7][i].in[14] <== eq[3][i].out;
+ multi_or[7][i].in[15] <== eq[22][i].out;
+ multi_or[7][i].in[16] <== eq[23][i].out;
+ multi_or[7][i].in[17] <== eq[24][i].out;
+ multi_or[7][i].in[18] <== eq[7][i].out;
+ multi_or[7][i].in[19] <== eq[8][i].out;
+ multi_or[7][i].in[20] <== eq[9][i].out;
+ multi_or[7][i].in[21] <== eq[10][i].out;
+ multi_or[7][i].in[22] <== eq[11][i].out;
+ and[28][i].b <== multi_or[7][i].out;
+ lt[22][i] = LessEqThan(8);
+ lt[22][i].in[0] <== 35;
+ lt[22][i].in[1] <== in[i];
+ lt[23][i] = LessEqThan(8);
+ lt[23][i].in[0] <== in[i];
+ lt[23][i].in[1] <== 107;
and[29][i] = AND();
- and[29][i].a <== states[i][20];
- and[29][i].b <== and[28][i].out;
- multi_or[2][i] = MultiOR(5);
- multi_or[2][i].in[0] <== and[23][i].out;
- multi_or[2][i].in[1] <== and[24][i].out;
- multi_or[2][i].in[2] <== and[26][i].out;
- multi_or[2][i].in[3] <== and[27][i].out;
- multi_or[2][i].in[4] <== and[29][i].out;
- states[i+1][17] <== multi_or[2][i].out;
+ and[29][i].a <== lt[22][i].out;
+ and[29][i].b <== lt[23][i].out;
+ and[30][i] = AND();
+ and[30][i].a <== states[i][29];
+ multi_or[8][i] = MultiOR(20);
+ multi_or[8][i].in[0] <== and[8][i].out;
+ multi_or[8][i].in[1] <== and[29][i].out;
+ multi_or[8][i].in[2] <== eq[13][i].out;
+ multi_or[8][i].in[3] <== eq[14][i].out;
+ multi_or[8][i].in[4] <== eq[15][i].out;
+ multi_or[8][i].in[5] <== eq[16][i].out;
+ multi_or[8][i].in[6] <== eq[17][i].out;
+ multi_or[8][i].in[7] <== eq[18][i].out;
+ multi_or[8][i].in[8] <== eq[19][i].out;
+ multi_or[8][i].in[9] <== eq[20][i].out;
+ multi_or[8][i].in[10] <== eq[21][i].out;
+ multi_or[8][i].in[11] <== eq[3][i].out;
+ multi_or[8][i].in[12] <== eq[22][i].out;
+ multi_or[8][i].in[13] <== eq[23][i].out;
+ multi_or[8][i].in[14] <== eq[24][i].out;
+ multi_or[8][i].in[15] <== eq[7][i].out;
+ multi_or[8][i].in[16] <== eq[8][i].out;
+ multi_or[8][i].in[17] <== eq[9][i].out;
+ multi_or[8][i].in[18] <== eq[10][i].out;
+ multi_or[8][i].in[19] <== eq[11][i].out;
+ and[30][i].b <== multi_or[8][i].out;
+ multi_or[9][i] = MultiOR(9);
+ multi_or[9][i].in[0] <== and[13][i].out;
+ multi_or[9][i].in[1] <== and[15][i].out;
+ multi_or[9][i].in[2] <== and[16][i].out;
+ multi_or[9][i].in[3] <== and[18][i].out;
+ multi_or[9][i].in[4] <== and[21][i].out;
+ multi_or[9][i].in[5] <== and[23][i].out;
+ multi_or[9][i].in[6] <== and[26][i].out;
+ multi_or[9][i].in[7] <== and[28][i].out;
+ multi_or[9][i].in[8] <== and[30][i].out;
+ states[i+1][9] <== multi_or[9][i].out;
+ lt[24][i] = LessEqThan(8);
+ lt[24][i].in[0] <== 194;
+ lt[24][i].in[1] <== in[i];
+ lt[25][i] = LessEqThan(8);
+ lt[25][i].in[0] <== in[i];
+ lt[25][i].in[1] <== 223;
+ and[31][i] = AND();
+ and[31][i].a <== lt[24][i].out;
+ and[31][i].b <== lt[25][i].out;
+ and[32][i] = AND();
+ and[32][i].a <== states[i][8];
+ and[32][i].b <== and[31][i].out;
+ lt[26][i] = LessEqThan(8);
+ lt[26][i].in[0] <== 160;
+ lt[26][i].in[1] <== in[i];
+ lt[27][i] = LessEqThan(8);
+ lt[27][i].in[0] <== in[i];
+ lt[27][i].in[1] <== 191;
+ and[33][i] = AND();
+ and[33][i].a <== lt[26][i].out;
+ and[33][i].b <== lt[27][i].out;
+ and[34][i] = AND();
+ and[34][i].a <== states[i][11];
+ and[34][i].b <== and[33][i].out;
+ and[35][i] = AND();
+ and[35][i].a <== states[i][12];
+ and[35][i].b <== and[11][i].out;
+ lt[28][i] = LessEqThan(8);
+ lt[28][i].in[0] <== 128;
+ lt[28][i].in[1] <== in[i];
+ lt[29][i] = LessEqThan(8);
+ lt[29][i].in[0] <== in[i];
+ lt[29][i].in[1] <== 159;
+ and[36][i] = AND();
+ and[36][i].a <== lt[28][i].out;
+ and[36][i].b <== lt[29][i].out;
+ and[37][i] = AND();
+ and[37][i].a <== states[i][13];
+ and[37][i].b <== and[36][i].out;
+ multi_or[10][i] = MultiOR(4);
+ multi_or[10][i].in[0] <== and[32][i].out;
+ multi_or[10][i].in[1] <== and[34][i].out;
+ multi_or[10][i].in[2] <== and[35][i].out;
+ multi_or[10][i].in[3] <== and[37][i].out;
+ states[i+1][10] <== multi_or[10][i].out;
eq[27][i] = IsEqual();
eq[27][i].in[0] <== in[i];
eq[27][i].in[1] <== 224;
- and[30][i] = AND();
- and[30][i].a <== states[i][15];
- and[30][i].b <== eq[27][i].out;
- and[31][i] = AND();
- and[31][i].a <== states[i][16];
- and[31][i].b <== eq[27][i].out;
- multi_or[3][i] = MultiOR(2);
- multi_or[3][i].in[0] <== and[30][i].out;
- multi_or[3][i].in[1] <== and[31][i].out;
- states[i+1][18] <== multi_or[3][i].out;
+ and[38][i] = AND();
+ and[38][i].a <== states[i][8];
+ and[38][i].b <== eq[27][i].out;
+ states[i+1][11] <== and[38][i].out;
eq[28][i] = IsEqual();
eq[28][i].in[0] <== in[i];
eq[28][i].in[1] <== 225;
@@ -347,42 +513,39 @@ template CommandRegex(msg_bytes) {
eq[41][i] = IsEqual();
eq[41][i].in[0] <== in[i];
eq[41][i].in[1] <== 239;
- and[32][i] = AND();
- and[32][i].a <== states[i][15];
- multi_or[4][i] = MultiOR(14);
- multi_or[4][i].in[0] <== eq[28][i].out;
- multi_or[4][i].in[1] <== eq[29][i].out;
- multi_or[4][i].in[2] <== eq[30][i].out;
- multi_or[4][i].in[3] <== eq[31][i].out;
- multi_or[4][i].in[4] <== eq[32][i].out;
- multi_or[4][i].in[5] <== eq[33][i].out;
- multi_or[4][i].in[6] <== eq[34][i].out;
- multi_or[4][i].in[7] <== eq[35][i].out;
- multi_or[4][i].in[8] <== eq[36][i].out;
- multi_or[4][i].in[9] <== eq[37][i].out;
- multi_or[4][i].in[10] <== eq[38][i].out;
- multi_or[4][i].in[11] <== eq[39][i].out;
- multi_or[4][i].in[12] <== eq[40][i].out;
- multi_or[4][i].in[13] <== eq[41][i].out;
- and[32][i].b <== multi_or[4][i].out;
- and[33][i] = AND();
- and[33][i].a <== states[i][16];
- and[33][i].b <== multi_or[4][i].out;
- lt[14][i] = LessEqThan(8);
- lt[14][i].in[0] <== 144;
- lt[14][i].in[1] <== in[i];
- lt[15][i] = LessEqThan(8);
- lt[15][i].in[0] <== in[i];
- lt[15][i].in[1] <== 191;
- and[34][i] = AND();
- and[34][i].a <== lt[14][i].out;
- and[34][i].b <== lt[15][i].out;
- and[35][i] = AND();
- and[35][i].a <== states[i][21];
- and[35][i].b <== and[34][i].out;
- and[36][i] = AND();
- and[36][i].a <== states[i][22];
- and[36][i].b <== and[20][i].out;
+ and[39][i] = AND();
+ and[39][i].a <== states[i][8];
+ multi_or[11][i] = MultiOR(14);
+ multi_or[11][i].in[0] <== eq[28][i].out;
+ multi_or[11][i].in[1] <== eq[29][i].out;
+ multi_or[11][i].in[2] <== eq[30][i].out;
+ multi_or[11][i].in[3] <== eq[31][i].out;
+ multi_or[11][i].in[4] <== eq[32][i].out;
+ multi_or[11][i].in[5] <== eq[33][i].out;
+ multi_or[11][i].in[6] <== eq[34][i].out;
+ multi_or[11][i].in[7] <== eq[35][i].out;
+ multi_or[11][i].in[8] <== eq[36][i].out;
+ multi_or[11][i].in[9] <== eq[37][i].out;
+ multi_or[11][i].in[10] <== eq[38][i].out;
+ multi_or[11][i].in[11] <== eq[39][i].out;
+ multi_or[11][i].in[12] <== eq[40][i].out;
+ multi_or[11][i].in[13] <== eq[41][i].out;
+ and[39][i].b <== multi_or[11][i].out;
+ lt[30][i] = LessEqThan(8);
+ lt[30][i].in[0] <== 144;
+ lt[30][i].in[1] <== in[i];
+ lt[31][i] = LessEqThan(8);
+ lt[31][i].in[0] <== in[i];
+ lt[31][i].in[1] <== 191;
+ and[40][i] = AND();
+ and[40][i].a <== lt[30][i].out;
+ and[40][i].b <== lt[31][i].out;
+ and[41][i] = AND();
+ and[41][i].a <== states[i][14];
+ and[41][i].b <== and[40][i].out;
+ and[42][i] = AND();
+ and[42][i].a <== states[i][15];
+ and[42][i].b <== and[11][i].out;
eq[42][i] = IsEqual();
eq[42][i].in[0] <== in[i];
eq[42][i].in[1] <== 128;
@@ -431,59 +594,46 @@ template CommandRegex(msg_bytes) {
eq[57][i] = IsEqual();
eq[57][i].in[0] <== in[i];
eq[57][i].in[1] <== 143;
- and[37][i] = AND();
- and[37][i].a <== states[i][23];
- multi_or[5][i] = MultiOR(16);
- multi_or[5][i].in[0] <== eq[42][i].out;
- multi_or[5][i].in[1] <== eq[43][i].out;
- multi_or[5][i].in[2] <== eq[44][i].out;
- multi_or[5][i].in[3] <== eq[45][i].out;
- multi_or[5][i].in[4] <== eq[46][i].out;
- multi_or[5][i].in[5] <== eq[47][i].out;
- multi_or[5][i].in[6] <== eq[48][i].out;
- multi_or[5][i].in[7] <== eq[49][i].out;
- multi_or[5][i].in[8] <== eq[50][i].out;
- multi_or[5][i].in[9] <== eq[51][i].out;
- multi_or[5][i].in[10] <== eq[52][i].out;
- multi_or[5][i].in[11] <== eq[53][i].out;
- multi_or[5][i].in[12] <== eq[54][i].out;
- multi_or[5][i].in[13] <== eq[55][i].out;
- multi_or[5][i].in[14] <== eq[56][i].out;
- multi_or[5][i].in[15] <== eq[57][i].out;
- and[37][i].b <== multi_or[5][i].out;
- multi_or[6][i] = MultiOR(5);
- multi_or[6][i].in[0] <== and[32][i].out;
- multi_or[6][i].in[1] <== and[33][i].out;
- multi_or[6][i].in[2] <== and[35][i].out;
- multi_or[6][i].in[3] <== and[36][i].out;
- multi_or[6][i].in[4] <== and[37][i].out;
- states[i+1][19] <== multi_or[6][i].out;
+ and[43][i] = AND();
+ and[43][i].a <== states[i][16];
+ multi_or[12][i] = MultiOR(16);
+ multi_or[12][i].in[0] <== eq[42][i].out;
+ multi_or[12][i].in[1] <== eq[43][i].out;
+ multi_or[12][i].in[2] <== eq[44][i].out;
+ multi_or[12][i].in[3] <== eq[45][i].out;
+ multi_or[12][i].in[4] <== eq[46][i].out;
+ multi_or[12][i].in[5] <== eq[47][i].out;
+ multi_or[12][i].in[6] <== eq[48][i].out;
+ multi_or[12][i].in[7] <== eq[49][i].out;
+ multi_or[12][i].in[8] <== eq[50][i].out;
+ multi_or[12][i].in[9] <== eq[51][i].out;
+ multi_or[12][i].in[10] <== eq[52][i].out;
+ multi_or[12][i].in[11] <== eq[53][i].out;
+ multi_or[12][i].in[12] <== eq[54][i].out;
+ multi_or[12][i].in[13] <== eq[55][i].out;
+ multi_or[12][i].in[14] <== eq[56][i].out;
+ multi_or[12][i].in[15] <== eq[57][i].out;
+ and[43][i].b <== multi_or[12][i].out;
+ multi_or[13][i] = MultiOR(4);
+ multi_or[13][i].in[0] <== and[39][i].out;
+ multi_or[13][i].in[1] <== and[41][i].out;
+ multi_or[13][i].in[2] <== and[42][i].out;
+ multi_or[13][i].in[3] <== and[43][i].out;
+ states[i+1][12] <== multi_or[13][i].out;
eq[58][i] = IsEqual();
eq[58][i].in[0] <== in[i];
eq[58][i].in[1] <== 237;
- and[38][i] = AND();
- and[38][i].a <== states[i][15];
- and[38][i].b <== eq[58][i].out;
- and[39][i] = AND();
- and[39][i].a <== states[i][16];
- and[39][i].b <== eq[58][i].out;
- multi_or[7][i] = MultiOR(2);
- multi_or[7][i].in[0] <== and[38][i].out;
- multi_or[7][i].in[1] <== and[39][i].out;
- states[i+1][20] <== multi_or[7][i].out;
+ and[44][i] = AND();
+ and[44][i].a <== states[i][8];
+ and[44][i].b <== eq[58][i].out;
+ states[i+1][13] <== and[44][i].out;
eq[59][i] = IsEqual();
eq[59][i].in[0] <== in[i];
eq[59][i].in[1] <== 240;
- and[40][i] = AND();
- and[40][i].a <== states[i][15];
- and[40][i].b <== eq[59][i].out;
- and[41][i] = AND();
- and[41][i].a <== states[i][16];
- and[41][i].b <== eq[59][i].out;
- multi_or[8][i] = MultiOR(2);
- multi_or[8][i].in[0] <== and[40][i].out;
- multi_or[8][i].in[1] <== and[41][i].out;
- states[i+1][21] <== multi_or[8][i].out;
+ and[45][i] = AND();
+ and[45][i].a <== states[i][8];
+ and[45][i].b <== eq[59][i].out;
+ states[i+1][14] <== and[45][i].out;
eq[60][i] = IsEqual();
eq[60][i].in[0] <== in[i];
eq[60][i].in[1] <== 241;
@@ -493,89 +643,1136 @@ template CommandRegex(msg_bytes) {
eq[62][i] = IsEqual();
eq[62][i].in[0] <== in[i];
eq[62][i].in[1] <== 243;
- and[42][i] = AND();
- and[42][i].a <== states[i][15];
- multi_or[9][i] = MultiOR(3);
- multi_or[9][i].in[0] <== eq[60][i].out;
- multi_or[9][i].in[1] <== eq[61][i].out;
- multi_or[9][i].in[2] <== eq[62][i].out;
- and[42][i].b <== multi_or[9][i].out;
- and[43][i] = AND();
- and[43][i].a <== states[i][16];
- and[43][i].b <== multi_or[9][i].out;
- multi_or[10][i] = MultiOR(2);
- multi_or[10][i].in[0] <== and[42][i].out;
- multi_or[10][i].in[1] <== and[43][i].out;
- states[i+1][22] <== multi_or[10][i].out;
+ and[46][i] = AND();
+ and[46][i].a <== states[i][8];
+ multi_or[14][i] = MultiOR(3);
+ multi_or[14][i].in[0] <== eq[60][i].out;
+ multi_or[14][i].in[1] <== eq[61][i].out;
+ multi_or[14][i].in[2] <== eq[62][i].out;
+ and[46][i].b <== multi_or[14][i].out;
+ states[i+1][15] <== and[46][i].out;
eq[63][i] = IsEqual();
eq[63][i].in[0] <== in[i];
eq[63][i].in[1] <== 244;
- and[44][i] = AND();
- and[44][i].a <== states[i][15];
- and[44][i].b <== eq[63][i].out;
- and[45][i] = AND();
- and[45][i].a <== states[i][16];
- and[45][i].b <== eq[63][i].out;
- multi_or[11][i] = MultiOR(2);
- multi_or[11][i].in[0] <== and[44][i].out;
- multi_or[11][i].in[1] <== and[45][i].out;
- states[i+1][23] <== multi_or[11][i].out;
- and[46][i] = AND();
- and[46][i].a <== states[i][16];
- and[46][i].b <== eq[0][i].out;
- states[i+1][24] <== and[46][i].out;
and[47][i] = AND();
- and[47][i].a <== states[i][24];
- and[47][i].b <== eq[1][i].out;
- states[i+1][25] <== and[47][i].out;
+ and[47][i].a <== states[i][8];
+ and[47][i].b <== eq[63][i].out;
+ states[i+1][16] <== and[47][i].out;
and[48][i] = AND();
- and[48][i].a <== states[i][25];
- and[48][i].b <== eq[2][i].out;
- states[i+1][26] <== and[48][i].out;
+ and[48][i].a <== states[i][9];
+ and[48][i].b <== and[31][i].out;
and[49][i] = AND();
- and[49][i].a <== states[i][26];
- and[49][i].b <== eq[3][i].out;
- states[i+1][27] <== and[49][i].out;
+ and[49][i].a <== states[i][18];
+ and[49][i].b <== and[33][i].out;
and[50][i] = AND();
- and[50][i].a <== states[i][27];
- and[50][i].b <== eq[4][i].out;
- states[i+1][28] <== and[50][i].out;
+ and[50][i].a <== states[i][19];
+ and[50][i].b <== and[11][i].out;
and[51][i] = AND();
- and[51][i].a <== states[i][28];
- and[51][i].b <== eq[5][i].out;
- states[i+1][29] <== and[51][i].out;
+ and[51][i].a <== states[i][20];
+ and[51][i].b <== and[36][i].out;
and[52][i] = AND();
- and[52][i].a <== states[i][29];
- and[52][i].b <== eq[6][i].out;
- states[i+1][30] <== and[52][i].out;
+ and[52][i].a <== states[i][24];
+ and[52][i].b <== and[31][i].out;
and[53][i] = AND();
- and[53][i].a <== states[i][30];
- and[53][i].b <== eq[7][i].out;
- states[i+1][31] <== and[53][i].out;
+ and[53][i].a <== states[i][25];
+ and[53][i].b <== and[31][i].out;
and[54][i] = AND();
- and[54][i].a <== states[i][31];
- and[54][i].b <== eq[8][i].out;
- states[i+1][32] <== and[54][i].out;
+ and[54][i].a <== states[i][26];
+ and[54][i].b <== and[31][i].out;
and[55][i] = AND();
- and[55][i].a <== states[i][32];
- and[55][i].b <== eq[3][i].out;
- states[i+1][33] <== and[55][i].out;
+ and[55][i].a <== states[i][27];
+ and[55][i].b <== and[31][i].out;
and[56][i] = AND();
- and[56][i].a <== states[i][33];
- and[56][i].b <== eq[11][i].out;
- states[i+1][34] <== and[56][i].out;
- eq[64][i] = IsEqual();
- eq[64][i].in[0] <== in[i];
- eq[64][i].in[1] <== 100;
+ and[56][i].a <== states[i][28];
+ and[56][i].b <== and[31][i].out;
and[57][i] = AND();
- and[57][i].a <== states[i][34];
- and[57][i].b <== eq[64][i].out;
- states[i+1][35] <== and[57][i].out;
+ and[57][i].a <== states[i][29];
+ and[57][i].b <== and[31][i].out;
+ multi_or[15][i] = MultiOR(10);
+ multi_or[15][i].in[0] <== and[48][i].out;
+ multi_or[15][i].in[1] <== and[49][i].out;
+ multi_or[15][i].in[2] <== and[50][i].out;
+ multi_or[15][i].in[3] <== and[51][i].out;
+ multi_or[15][i].in[4] <== and[52][i].out;
+ multi_or[15][i].in[5] <== and[53][i].out;
+ multi_or[15][i].in[6] <== and[54][i].out;
+ multi_or[15][i].in[7] <== and[55][i].out;
+ multi_or[15][i].in[8] <== and[56][i].out;
+ multi_or[15][i].in[9] <== and[57][i].out;
+ states[i+1][17] <== multi_or[15][i].out;
and[58][i] = AND();
- and[58][i].a <== states[i][35];
- and[58][i].b <== eq[12][i].out;
- states[i+1][36] <== and[58][i].out;
- from_zero_enabled[i] <== MultiNOR(36)([states_tmp[i+1][1], states[i+1][2], states[i+1][3], states[i+1][4], states[i+1][5], states[i+1][6], states[i+1][7], states[i+1][8], states[i+1][9], states[i+1][10], states[i+1][11], states[i+1][12], states[i+1][13], states[i+1][14], states[i+1][15], states[i+1][16], states[i+1][17], states[i+1][18], states[i+1][19], states[i+1][20], states[i+1][21], states[i+1][22], states[i+1][23], states[i+1][24], states[i+1][25], states[i+1][26], states[i+1][27], states[i+1][28], states[i+1][29], states[i+1][30], states[i+1][31], states[i+1][32], states[i+1][33], states[i+1][34], states[i+1][35], states[i+1][36]]);
+ and[58][i].a <== states[i][9];
+ and[58][i].b <== eq[27][i].out;
+ and[59][i] = AND();
+ and[59][i].a <== states[i][24];
+ and[59][i].b <== eq[27][i].out;
+ and[60][i] = AND();
+ and[60][i].a <== states[i][25];
+ and[60][i].b <== eq[27][i].out;
+ and[61][i] = AND();
+ and[61][i].a <== states[i][26];
+ and[61][i].b <== eq[27][i].out;
+ and[62][i] = AND();
+ and[62][i].a <== states[i][27];
+ and[62][i].b <== eq[27][i].out;
+ and[63][i] = AND();
+ and[63][i].a <== states[i][28];
+ and[63][i].b <== eq[27][i].out;
+ and[64][i] = AND();
+ and[64][i].a <== states[i][29];
+ and[64][i].b <== eq[27][i].out;
+ multi_or[16][i] = MultiOR(7);
+ multi_or[16][i].in[0] <== and[58][i].out;
+ multi_or[16][i].in[1] <== and[59][i].out;
+ multi_or[16][i].in[2] <== and[60][i].out;
+ multi_or[16][i].in[3] <== and[61][i].out;
+ multi_or[16][i].in[4] <== and[62][i].out;
+ multi_or[16][i].in[5] <== and[63][i].out;
+ multi_or[16][i].in[6] <== and[64][i].out;
+ states[i+1][18] <== multi_or[16][i].out;
+ and[65][i] = AND();
+ and[65][i].a <== states[i][9];
+ and[65][i].b <== multi_or[11][i].out;
+ and[66][i] = AND();
+ and[66][i].a <== states[i][21];
+ and[66][i].b <== and[40][i].out;
+ and[67][i] = AND();
+ and[67][i].a <== states[i][22];
+ and[67][i].b <== and[11][i].out;
+ and[68][i] = AND();
+ and[68][i].a <== states[i][23];
+ and[68][i].b <== multi_or[12][i].out;
+ and[69][i] = AND();
+ and[69][i].a <== states[i][24];
+ and[69][i].b <== multi_or[11][i].out;
+ and[70][i] = AND();
+ and[70][i].a <== states[i][25];
+ and[70][i].b <== multi_or[11][i].out;
+ and[71][i] = AND();
+ and[71][i].a <== states[i][26];
+ and[71][i].b <== multi_or[11][i].out;
+ and[72][i] = AND();
+ and[72][i].a <== states[i][27];
+ and[72][i].b <== multi_or[11][i].out;
+ and[73][i] = AND();
+ and[73][i].a <== states[i][28];
+ and[73][i].b <== multi_or[11][i].out;
+ and[74][i] = AND();
+ and[74][i].a <== states[i][29];
+ and[74][i].b <== multi_or[11][i].out;
+ multi_or[17][i] = MultiOR(10);
+ multi_or[17][i].in[0] <== and[65][i].out;
+ multi_or[17][i].in[1] <== and[66][i].out;
+ multi_or[17][i].in[2] <== and[67][i].out;
+ multi_or[17][i].in[3] <== and[68][i].out;
+ multi_or[17][i].in[4] <== and[69][i].out;
+ multi_or[17][i].in[5] <== and[70][i].out;
+ multi_or[17][i].in[6] <== and[71][i].out;
+ multi_or[17][i].in[7] <== and[72][i].out;
+ multi_or[17][i].in[8] <== and[73][i].out;
+ multi_or[17][i].in[9] <== and[74][i].out;
+ states[i+1][19] <== multi_or[17][i].out;
+ and[75][i] = AND();
+ and[75][i].a <== states[i][9];
+ and[75][i].b <== eq[58][i].out;
+ and[76][i] = AND();
+ and[76][i].a <== states[i][24];
+ and[76][i].b <== eq[58][i].out;
+ and[77][i] = AND();
+ and[77][i].a <== states[i][25];
+ and[77][i].b <== eq[58][i].out;
+ and[78][i] = AND();
+ and[78][i].a <== states[i][26];
+ and[78][i].b <== eq[58][i].out;
+ and[79][i] = AND();
+ and[79][i].a <== states[i][27];
+ and[79][i].b <== eq[58][i].out;
+ and[80][i] = AND();
+ and[80][i].a <== states[i][28];
+ and[80][i].b <== eq[58][i].out;
+ and[81][i] = AND();
+ and[81][i].a <== states[i][29];
+ and[81][i].b <== eq[58][i].out;
+ multi_or[18][i] = MultiOR(7);
+ multi_or[18][i].in[0] <== and[75][i].out;
+ multi_or[18][i].in[1] <== and[76][i].out;
+ multi_or[18][i].in[2] <== and[77][i].out;
+ multi_or[18][i].in[3] <== and[78][i].out;
+ multi_or[18][i].in[4] <== and[79][i].out;
+ multi_or[18][i].in[5] <== and[80][i].out;
+ multi_or[18][i].in[6] <== and[81][i].out;
+ states[i+1][20] <== multi_or[18][i].out;
+ and[82][i] = AND();
+ and[82][i].a <== states[i][9];
+ and[82][i].b <== eq[59][i].out;
+ and[83][i] = AND();
+ and[83][i].a <== states[i][24];
+ and[83][i].b <== eq[59][i].out;
+ and[84][i] = AND();
+ and[84][i].a <== states[i][25];
+ and[84][i].b <== eq[59][i].out;
+ and[85][i] = AND();
+ and[85][i].a <== states[i][26];
+ and[85][i].b <== eq[59][i].out;
+ and[86][i] = AND();
+ and[86][i].a <== states[i][27];
+ and[86][i].b <== eq[59][i].out;
+ and[87][i] = AND();
+ and[87][i].a <== states[i][28];
+ and[87][i].b <== eq[59][i].out;
+ and[88][i] = AND();
+ and[88][i].a <== states[i][29];
+ and[88][i].b <== eq[59][i].out;
+ multi_or[19][i] = MultiOR(7);
+ multi_or[19][i].in[0] <== and[82][i].out;
+ multi_or[19][i].in[1] <== and[83][i].out;
+ multi_or[19][i].in[2] <== and[84][i].out;
+ multi_or[19][i].in[3] <== and[85][i].out;
+ multi_or[19][i].in[4] <== and[86][i].out;
+ multi_or[19][i].in[5] <== and[87][i].out;
+ multi_or[19][i].in[6] <== and[88][i].out;
+ states[i+1][21] <== multi_or[19][i].out;
+ and[89][i] = AND();
+ and[89][i].a <== states[i][9];
+ and[89][i].b <== multi_or[14][i].out;
+ and[90][i] = AND();
+ and[90][i].a <== states[i][24];
+ and[90][i].b <== multi_or[14][i].out;
+ and[91][i] = AND();
+ and[91][i].a <== states[i][25];
+ and[91][i].b <== multi_or[14][i].out;
+ and[92][i] = AND();
+ and[92][i].a <== states[i][26];
+ and[92][i].b <== multi_or[14][i].out;
+ and[93][i] = AND();
+ and[93][i].a <== states[i][27];
+ and[93][i].b <== multi_or[14][i].out;
+ and[94][i] = AND();
+ and[94][i].a <== states[i][28];
+ and[94][i].b <== multi_or[14][i].out;
+ and[95][i] = AND();
+ and[95][i].a <== states[i][29];
+ and[95][i].b <== multi_or[14][i].out;
+ multi_or[20][i] = MultiOR(7);
+ multi_or[20][i].in[0] <== and[89][i].out;
+ multi_or[20][i].in[1] <== and[90][i].out;
+ multi_or[20][i].in[2] <== and[91][i].out;
+ multi_or[20][i].in[3] <== and[92][i].out;
+ multi_or[20][i].in[4] <== and[93][i].out;
+ multi_or[20][i].in[5] <== and[94][i].out;
+ multi_or[20][i].in[6] <== and[95][i].out;
+ states[i+1][22] <== multi_or[20][i].out;
+ and[96][i] = AND();
+ and[96][i].a <== states[i][9];
+ and[96][i].b <== eq[63][i].out;
+ and[97][i] = AND();
+ and[97][i].a <== states[i][24];
+ and[97][i].b <== eq[63][i].out;
+ and[98][i] = AND();
+ and[98][i].a <== states[i][25];
+ and[98][i].b <== eq[63][i].out;
+ and[99][i] = AND();
+ and[99][i].a <== states[i][26];
+ and[99][i].b <== eq[63][i].out;
+ and[100][i] = AND();
+ and[100][i].a <== states[i][27];
+ and[100][i].b <== eq[63][i].out;
+ and[101][i] = AND();
+ and[101][i].a <== states[i][28];
+ and[101][i].b <== eq[63][i].out;
+ and[102][i] = AND();
+ and[102][i].a <== states[i][29];
+ and[102][i].b <== eq[63][i].out;
+ multi_or[21][i] = MultiOR(7);
+ multi_or[21][i].in[0] <== and[96][i].out;
+ multi_or[21][i].in[1] <== and[97][i].out;
+ multi_or[21][i].in[2] <== and[98][i].out;
+ multi_or[21][i].in[3] <== and[99][i].out;
+ multi_or[21][i].in[4] <== and[100][i].out;
+ multi_or[21][i].in[5] <== and[101][i].out;
+ multi_or[21][i].in[6] <== and[102][i].out;
+ states[i+1][23] <== multi_or[21][i].out;
+ eq[64][i] = IsEqual();
+ eq[64][i].in[0] <== in[i];
+ eq[64][i].in[1] <== 122;
+ and[103][i] = AND();
+ and[103][i].a <== states[i][9];
+ and[103][i].b <== eq[64][i].out;
+ and[104][i] = AND();
+ and[104][i].a <== states[i][24];
+ and[104][i].b <== eq[64][i].out;
+ and[105][i] = AND();
+ and[105][i].a <== states[i][25];
+ and[105][i].b <== eq[64][i].out;
+ and[106][i] = AND();
+ and[106][i].a <== states[i][26];
+ and[106][i].b <== eq[64][i].out;
+ and[107][i] = AND();
+ and[107][i].a <== states[i][27];
+ and[107][i].b <== eq[64][i].out;
+ and[108][i] = AND();
+ and[108][i].a <== states[i][28];
+ and[108][i].b <== eq[64][i].out;
+ and[109][i] = AND();
+ and[109][i].a <== states[i][29];
+ and[109][i].b <== eq[64][i].out;
+ multi_or[22][i] = MultiOR(7);
+ multi_or[22][i].in[0] <== and[103][i].out;
+ multi_or[22][i].in[1] <== and[104][i].out;
+ multi_or[22][i].in[2] <== and[105][i].out;
+ multi_or[22][i].in[3] <== and[106][i].out;
+ multi_or[22][i].in[4] <== and[107][i].out;
+ multi_or[22][i].in[5] <== and[108][i].out;
+ multi_or[22][i].in[6] <== and[109][i].out;
+ states[i+1][24] <== multi_or[22][i].out;
+ and[110][i] = AND();
+ and[110][i].a <== states[i][24];
+ and[110][i].b <== eq[26][i].out;
+ states[i+1][25] <== and[110][i].out;
+ eq[65][i] = IsEqual();
+ eq[65][i].in[0] <== in[i];
+ eq[65][i].in[1] <== 101;
+ and[111][i] = AND();
+ and[111][i].a <== states[i][25];
+ and[111][i].b <== eq[65][i].out;
+ states[i+1][26] <== and[111][i].out;
+ and[112][i] = AND();
+ and[112][i].a <== states[i][26];
+ and[112][i].b <== eq[13][i].out;
+ states[i+1][27] <== and[112][i].out;
+ eq[66][i] = IsEqual();
+ eq[66][i].in[0] <== in[i];
+ eq[66][i].in[1] <== 97;
+ and[113][i] = AND();
+ and[113][i].a <== states[i][27];
+ and[113][i].b <== eq[66][i].out;
+ states[i+1][28] <== and[113][i].out;
+ and[114][i] = AND();
+ and[114][i].a <== states[i][28];
+ and[114][i].b <== eq[2][i].out;
+ states[i+1][29] <== and[114][i].out;
+ and[115][i] = AND();
+ and[115][i].a <== states[i][29];
+ and[115][i].b <== eq[12][i].out;
+ and[116][i] = AND();
+ and[116][i].a <== states[i][30];
+ and[116][i].b <== multi_or[0][i].out;
+ and[117][i] = AND();
+ and[117][i].a <== states[i][32];
+ and[117][i].b <== and[11][i].out;
+ multi_or[23][i] = MultiOR(3);
+ multi_or[23][i].in[0] <== and[115][i].out;
+ multi_or[23][i].in[1] <== and[116][i].out;
+ multi_or[23][i].in[2] <== and[117][i].out;
+ states[i+1][30] <== multi_or[23][i].out;
+ and[118][i] = AND();
+ and[118][i].a <== states[i][30];
+ and[118][i].b <== eq[6][i].out;
+ lt[32][i] = LessEqThan(8);
+ lt[32][i].in[0] <== 1;
+ lt[32][i].in[1] <== in[i];
+ lt[33][i] = LessEqThan(8);
+ lt[33][i].in[0] <== in[i];
+ lt[33][i].in[1] <== 61;
+ and[119][i] = AND();
+ and[119][i].a <== lt[32][i].out;
+ and[119][i].b <== lt[33][i].out;
+ lt[34][i] = LessEqThan(8);
+ lt[34][i].in[0] <== 63;
+ lt[34][i].in[1] <== in[i];
+ lt[35][i] = LessEqThan(8);
+ lt[35][i].in[0] <== in[i];
+ lt[35][i].in[1] <== 127;
+ and[120][i] = AND();
+ and[120][i].a <== lt[34][i].out;
+ and[120][i].b <== lt[35][i].out;
+ and[121][i] = AND();
+ and[121][i].a <== states[i][31];
+ multi_or[24][i] = MultiOR(2);
+ multi_or[24][i].in[0] <== and[119][i].out;
+ multi_or[24][i].in[1] <== and[120][i].out;
+ and[121][i].b <== multi_or[24][i].out;
+ and[122][i] = AND();
+ and[122][i].a <== states[i][40];
+ and[122][i].b <== and[11][i].out;
+ multi_or[25][i] = MultiOR(3);
+ multi_or[25][i].in[0] <== and[118][i].out;
+ multi_or[25][i].in[1] <== and[121][i].out;
+ multi_or[25][i].in[2] <== and[122][i].out;
+ states[i+1][31] <== multi_or[25][i].out;
+ and[123][i] = AND();
+ and[123][i].a <== states[i][30];
+ and[123][i].b <== and[31][i].out;
+ and[124][i] = AND();
+ and[124][i].a <== states[i][33];
+ and[124][i].b <== and[33][i].out;
+ and[125][i] = AND();
+ and[125][i].a <== states[i][34];
+ and[125][i].b <== and[11][i].out;
+ and[126][i] = AND();
+ and[126][i].a <== states[i][35];
+ and[126][i].b <== and[36][i].out;
+ multi_or[26][i] = MultiOR(4);
+ multi_or[26][i].in[0] <== and[123][i].out;
+ multi_or[26][i].in[1] <== and[124][i].out;
+ multi_or[26][i].in[2] <== and[125][i].out;
+ multi_or[26][i].in[3] <== and[126][i].out;
+ states[i+1][32] <== multi_or[26][i].out;
+ and[127][i] = AND();
+ and[127][i].a <== states[i][30];
+ and[127][i].b <== eq[27][i].out;
+ states[i+1][33] <== and[127][i].out;
+ and[128][i] = AND();
+ and[128][i].a <== states[i][30];
+ and[128][i].b <== multi_or[11][i].out;
+ and[129][i] = AND();
+ and[129][i].a <== states[i][36];
+ and[129][i].b <== and[40][i].out;
+ and[130][i] = AND();
+ and[130][i].a <== states[i][37];
+ and[130][i].b <== and[11][i].out;
+ and[131][i] = AND();
+ and[131][i].a <== states[i][38];
+ and[131][i].b <== multi_or[12][i].out;
+ multi_or[27][i] = MultiOR(4);
+ multi_or[27][i].in[0] <== and[128][i].out;
+ multi_or[27][i].in[1] <== and[129][i].out;
+ multi_or[27][i].in[2] <== and[130][i].out;
+ multi_or[27][i].in[3] <== and[131][i].out;
+ states[i+1][34] <== multi_or[27][i].out;
+ and[132][i] = AND();
+ and[132][i].a <== states[i][30];
+ and[132][i].b <== eq[58][i].out;
+ states[i+1][35] <== and[132][i].out;
+ and[133][i] = AND();
+ and[133][i].a <== states[i][30];
+ and[133][i].b <== eq[59][i].out;
+ states[i+1][36] <== and[133][i].out;
+ and[134][i] = AND();
+ and[134][i].a <== states[i][30];
+ and[134][i].b <== multi_or[14][i].out;
+ states[i+1][37] <== and[134][i].out;
+ and[135][i] = AND();
+ and[135][i].a <== states[i][30];
+ and[135][i].b <== eq[63][i].out;
+ states[i+1][38] <== and[135][i].out;
+ eq[67][i] = IsEqual();
+ eq[67][i].in[0] <== in[i];
+ eq[67][i].in[1] <== 62;
+ and[136][i] = AND();
+ and[136][i].a <== states[i][31];
+ and[136][i].b <== eq[67][i].out;
+ and[137][i] = AND();
+ and[137][i].a <== states[i][48];
+ and[137][i].b <== eq[67][i].out;
+ multi_or[28][i] = MultiOR(2);
+ multi_or[28][i].in[0] <== and[136][i].out;
+ multi_or[28][i].in[1] <== and[137][i].out;
+ states[i+1][39] <== multi_or[28][i].out;
+ and[138][i] = AND();
+ and[138][i].a <== states[i][31];
+ and[138][i].b <== and[31][i].out;
+ and[139][i] = AND();
+ and[139][i].a <== states[i][41];
+ and[139][i].b <== and[33][i].out;
+ and[140][i] = AND();
+ and[140][i].a <== states[i][42];
+ and[140][i].b <== and[11][i].out;
+ and[141][i] = AND();
+ and[141][i].a <== states[i][43];
+ and[141][i].b <== and[36][i].out;
+ multi_or[29][i] = MultiOR(4);
+ multi_or[29][i].in[0] <== and[138][i].out;
+ multi_or[29][i].in[1] <== and[139][i].out;
+ multi_or[29][i].in[2] <== and[140][i].out;
+ multi_or[29][i].in[3] <== and[141][i].out;
+ states[i+1][40] <== multi_or[29][i].out;
+ and[142][i] = AND();
+ and[142][i].a <== states[i][31];
+ and[142][i].b <== eq[27][i].out;
+ states[i+1][41] <== and[142][i].out;
+ and[143][i] = AND();
+ and[143][i].a <== states[i][31];
+ and[143][i].b <== multi_or[11][i].out;
+ and[144][i] = AND();
+ and[144][i].a <== states[i][44];
+ and[144][i].b <== and[40][i].out;
+ and[145][i] = AND();
+ and[145][i].a <== states[i][45];
+ and[145][i].b <== and[11][i].out;
+ and[146][i] = AND();
+ and[146][i].a <== states[i][46];
+ and[146][i].b <== multi_or[12][i].out;
+ multi_or[30][i] = MultiOR(4);
+ multi_or[30][i].in[0] <== and[143][i].out;
+ multi_or[30][i].in[1] <== and[144][i].out;
+ multi_or[30][i].in[2] <== and[145][i].out;
+ multi_or[30][i].in[3] <== and[146][i].out;
+ states[i+1][42] <== multi_or[30][i].out;
+ and[147][i] = AND();
+ and[147][i].a <== states[i][31];
+ and[147][i].b <== eq[58][i].out;
+ states[i+1][43] <== and[147][i].out;
+ and[148][i] = AND();
+ and[148][i].a <== states[i][31];
+ and[148][i].b <== eq[59][i].out;
+ states[i+1][44] <== and[148][i].out;
+ and[149][i] = AND();
+ and[149][i].a <== states[i][31];
+ and[149][i].b <== multi_or[14][i].out;
+ states[i+1][45] <== and[149][i].out;
+ and[150][i] = AND();
+ and[150][i].a <== states[i][31];
+ and[150][i].b <== eq[63][i].out;
+ states[i+1][46] <== and[150][i].out;
+ and[151][i] = AND();
+ and[151][i].a <== states[i][39];
+ and[151][i].b <== eq[0][i].out;
+ states[i+1][47] <== and[151][i].out;
+ lt[36][i] = LessEqThan(8);
+ lt[36][i].in[0] <== 1;
+ lt[36][i].in[1] <== in[i];
+ lt[37][i] = LessEqThan(8);
+ lt[37][i].in[0] <== in[i];
+ lt[37][i].in[1] <== 59;
+ and[152][i] = AND();
+ and[152][i].a <== lt[36][i].out;
+ and[152][i].b <== lt[37][i].out;
+ and[153][i] = AND();
+ and[153][i].a <== states[i][47];
+ multi_or[31][i] = MultiOR(3);
+ multi_or[31][i].in[0] <== and[152][i].out;
+ multi_or[31][i].in[1] <== and[120][i].out;
+ multi_or[31][i].in[2] <== eq[5][i].out;
+ and[153][i].b <== multi_or[31][i].out;
+ and[154][i] = AND();
+ and[154][i].a <== states[i][48];
+ and[154][i].b <== multi_or[31][i].out;
+ and[155][i] = AND();
+ and[155][i].a <== states[i][49];
+ and[155][i].b <== and[11][i].out;
+ multi_or[32][i] = MultiOR(3);
+ multi_or[32][i].in[0] <== and[153][i].out;
+ multi_or[32][i].in[1] <== and[154][i].out;
+ multi_or[32][i].in[2] <== and[155][i].out;
+ states[i+1][48] <== multi_or[32][i].out;
+ and[156][i] = AND();
+ and[156][i].a <== states[i][47];
+ and[156][i].b <== and[31][i].out;
+ and[157][i] = AND();
+ and[157][i].a <== states[i][48];
+ and[157][i].b <== and[31][i].out;
+ and[158][i] = AND();
+ and[158][i].a <== states[i][50];
+ and[158][i].b <== and[33][i].out;
+ and[159][i] = AND();
+ and[159][i].a <== states[i][51];
+ and[159][i].b <== and[11][i].out;
+ and[160][i] = AND();
+ and[160][i].a <== states[i][52];
+ and[160][i].b <== and[36][i].out;
+ multi_or[33][i] = MultiOR(5);
+ multi_or[33][i].in[0] <== and[156][i].out;
+ multi_or[33][i].in[1] <== and[157][i].out;
+ multi_or[33][i].in[2] <== and[158][i].out;
+ multi_or[33][i].in[3] <== and[159][i].out;
+ multi_or[33][i].in[4] <== and[160][i].out;
+ states[i+1][49] <== multi_or[33][i].out;
+ and[161][i] = AND();
+ and[161][i].a <== states[i][47];
+ and[161][i].b <== eq[27][i].out;
+ and[162][i] = AND();
+ and[162][i].a <== states[i][48];
+ and[162][i].b <== eq[27][i].out;
+ multi_or[34][i] = MultiOR(2);
+ multi_or[34][i].in[0] <== and[161][i].out;
+ multi_or[34][i].in[1] <== and[162][i].out;
+ states[i+1][50] <== multi_or[34][i].out;
+ and[163][i] = AND();
+ and[163][i].a <== states[i][47];
+ and[163][i].b <== multi_or[11][i].out;
+ and[164][i] = AND();
+ and[164][i].a <== states[i][48];
+ and[164][i].b <== multi_or[11][i].out;
+ and[165][i] = AND();
+ and[165][i].a <== states[i][53];
+ and[165][i].b <== and[40][i].out;
+ and[166][i] = AND();
+ and[166][i].a <== states[i][54];
+ and[166][i].b <== and[11][i].out;
+ and[167][i] = AND();
+ and[167][i].a <== states[i][55];
+ and[167][i].b <== multi_or[12][i].out;
+ multi_or[35][i] = MultiOR(5);
+ multi_or[35][i].in[0] <== and[163][i].out;
+ multi_or[35][i].in[1] <== and[164][i].out;
+ multi_or[35][i].in[2] <== and[165][i].out;
+ multi_or[35][i].in[3] <== and[166][i].out;
+ multi_or[35][i].in[4] <== and[167][i].out;
+ states[i+1][51] <== multi_or[35][i].out;
+ and[168][i] = AND();
+ and[168][i].a <== states[i][47];
+ and[168][i].b <== eq[58][i].out;
+ and[169][i] = AND();
+ and[169][i].a <== states[i][48];
+ and[169][i].b <== eq[58][i].out;
+ multi_or[36][i] = MultiOR(2);
+ multi_or[36][i].in[0] <== and[168][i].out;
+ multi_or[36][i].in[1] <== and[169][i].out;
+ states[i+1][52] <== multi_or[36][i].out;
+ and[170][i] = AND();
+ and[170][i].a <== states[i][47];
+ and[170][i].b <== eq[59][i].out;
+ and[171][i] = AND();
+ and[171][i].a <== states[i][48];
+ and[171][i].b <== eq[59][i].out;
+ multi_or[37][i] = MultiOR(2);
+ multi_or[37][i].in[0] <== and[170][i].out;
+ multi_or[37][i].in[1] <== and[171][i].out;
+ states[i+1][53] <== multi_or[37][i].out;
+ and[172][i] = AND();
+ and[172][i].a <== states[i][47];
+ and[172][i].b <== multi_or[14][i].out;
+ and[173][i] = AND();
+ and[173][i].a <== states[i][48];
+ and[173][i].b <== multi_or[14][i].out;
+ multi_or[38][i] = MultiOR(2);
+ multi_or[38][i].in[0] <== and[172][i].out;
+ multi_or[38][i].in[1] <== and[173][i].out;
+ states[i+1][54] <== multi_or[38][i].out;
+ and[174][i] = AND();
+ and[174][i].a <== states[i][47];
+ and[174][i].b <== eq[63][i].out;
+ and[175][i] = AND();
+ and[175][i].a <== states[i][48];
+ and[175][i].b <== eq[63][i].out;
+ multi_or[39][i] = MultiOR(2);
+ multi_or[39][i].in[0] <== and[174][i].out;
+ multi_or[39][i].in[1] <== and[175][i].out;
+ states[i+1][55] <== multi_or[39][i].out;
+ lt[38][i] = LessEqThan(8);
+ lt[38][i].in[0] <== 1;
+ lt[38][i].in[1] <== in[i];
+ lt[39][i] = LessEqThan(8);
+ lt[39][i].in[0] <== in[i];
+ lt[39][i].in[1] <== 46;
+ and[176][i] = AND();
+ and[176][i].a <== lt[38][i].out;
+ and[176][i].b <== lt[39][i].out;
+ eq[68][i] = IsEqual();
+ eq[68][i].in[0] <== in[i];
+ eq[68][i].in[1] <== 48;
+ eq[69][i] = IsEqual();
+ eq[69][i].in[0] <== in[i];
+ eq[69][i].in[1] <== 49;
+ eq[70][i] = IsEqual();
+ eq[70][i].in[0] <== in[i];
+ eq[70][i].in[1] <== 50;
+ eq[71][i] = IsEqual();
+ eq[71][i].in[0] <== in[i];
+ eq[71][i].in[1] <== 51;
+ eq[72][i] = IsEqual();
+ eq[72][i].in[0] <== in[i];
+ eq[72][i].in[1] <== 52;
+ eq[73][i] = IsEqual();
+ eq[73][i].in[0] <== in[i];
+ eq[73][i].in[1] <== 53;
+ eq[74][i] = IsEqual();
+ eq[74][i].in[0] <== in[i];
+ eq[74][i].in[1] <== 54;
+ eq[75][i] = IsEqual();
+ eq[75][i].in[0] <== in[i];
+ eq[75][i].in[1] <== 55;
+ eq[76][i] = IsEqual();
+ eq[76][i].in[0] <== in[i];
+ eq[76][i].in[1] <== 56;
+ eq[77][i] = IsEqual();
+ eq[77][i].in[0] <== in[i];
+ eq[77][i].in[1] <== 57;
+ eq[78][i] = IsEqual();
+ eq[78][i].in[0] <== in[i];
+ eq[78][i].in[1] <== 58;
+ eq[79][i] = IsEqual();
+ eq[79][i].in[0] <== in[i];
+ eq[79][i].in[1] <== 59;
+ and[177][i] = AND();
+ and[177][i].a <== states[i][39];
+ multi_or[40][i] = MultiOR(15);
+ multi_or[40][i].in[0] <== and[176][i].out;
+ multi_or[40][i].in[1] <== and[120][i].out;
+ multi_or[40][i].in[2] <== eq[68][i].out;
+ multi_or[40][i].in[3] <== eq[69][i].out;
+ multi_or[40][i].in[4] <== eq[70][i].out;
+ multi_or[40][i].in[5] <== eq[71][i].out;
+ multi_or[40][i].in[6] <== eq[72][i].out;
+ multi_or[40][i].in[7] <== eq[73][i].out;
+ multi_or[40][i].in[8] <== eq[74][i].out;
+ multi_or[40][i].in[9] <== eq[75][i].out;
+ multi_or[40][i].in[10] <== eq[76][i].out;
+ multi_or[40][i].in[11] <== eq[77][i].out;
+ multi_or[40][i].in[12] <== eq[78][i].out;
+ multi_or[40][i].in[13] <== eq[79][i].out;
+ multi_or[40][i].in[14] <== eq[5][i].out;
+ and[177][i].b <== multi_or[40][i].out;
+ and[178][i] = AND();
+ and[178][i].a <== states[i][56];
+ and[178][i].b <== multi_or[40][i].out;
+ and[179][i] = AND();
+ and[179][i].a <== states[i][57];
+ and[179][i].b <== and[11][i].out;
+ multi_or[41][i] = MultiOR(3);
+ multi_or[41][i].in[0] <== and[177][i].out;
+ multi_or[41][i].in[1] <== and[178][i].out;
+ multi_or[41][i].in[2] <== and[179][i].out;
+ states[i+1][56] <== multi_or[41][i].out;
+ and[180][i] = AND();
+ and[180][i].a <== states[i][39];
+ and[180][i].b <== and[31][i].out;
+ and[181][i] = AND();
+ and[181][i].a <== states[i][56];
+ and[181][i].b <== and[31][i].out;
+ and[182][i] = AND();
+ and[182][i].a <== states[i][58];
+ and[182][i].b <== and[33][i].out;
+ and[183][i] = AND();
+ and[183][i].a <== states[i][59];
+ and[183][i].b <== and[11][i].out;
+ and[184][i] = AND();
+ and[184][i].a <== states[i][60];
+ and[184][i].b <== and[36][i].out;
+ multi_or[42][i] = MultiOR(5);
+ multi_or[42][i].in[0] <== and[180][i].out;
+ multi_or[42][i].in[1] <== and[181][i].out;
+ multi_or[42][i].in[2] <== and[182][i].out;
+ multi_or[42][i].in[3] <== and[183][i].out;
+ multi_or[42][i].in[4] <== and[184][i].out;
+ states[i+1][57] <== multi_or[42][i].out;
+ and[185][i] = AND();
+ and[185][i].a <== states[i][39];
+ and[185][i].b <== eq[27][i].out;
+ and[186][i] = AND();
+ and[186][i].a <== states[i][56];
+ and[186][i].b <== eq[27][i].out;
+ multi_or[43][i] = MultiOR(2);
+ multi_or[43][i].in[0] <== and[185][i].out;
+ multi_or[43][i].in[1] <== and[186][i].out;
+ states[i+1][58] <== multi_or[43][i].out;
+ and[187][i] = AND();
+ and[187][i].a <== states[i][39];
+ and[187][i].b <== multi_or[11][i].out;
+ and[188][i] = AND();
+ and[188][i].a <== states[i][56];
+ and[188][i].b <== multi_or[11][i].out;
+ and[189][i] = AND();
+ and[189][i].a <== states[i][61];
+ and[189][i].b <== and[40][i].out;
+ and[190][i] = AND();
+ and[190][i].a <== states[i][62];
+ and[190][i].b <== and[11][i].out;
+ and[191][i] = AND();
+ and[191][i].a <== states[i][63];
+ and[191][i].b <== multi_or[12][i].out;
+ multi_or[44][i] = MultiOR(5);
+ multi_or[44][i].in[0] <== and[187][i].out;
+ multi_or[44][i].in[1] <== and[188][i].out;
+ multi_or[44][i].in[2] <== and[189][i].out;
+ multi_or[44][i].in[3] <== and[190][i].out;
+ multi_or[44][i].in[4] <== and[191][i].out;
+ states[i+1][59] <== multi_or[44][i].out;
+ and[192][i] = AND();
+ and[192][i].a <== states[i][39];
+ and[192][i].b <== eq[58][i].out;
+ and[193][i] = AND();
+ and[193][i].a <== states[i][56];
+ and[193][i].b <== eq[58][i].out;
+ multi_or[45][i] = MultiOR(2);
+ multi_or[45][i].in[0] <== and[192][i].out;
+ multi_or[45][i].in[1] <== and[193][i].out;
+ states[i+1][60] <== multi_or[45][i].out;
+ and[194][i] = AND();
+ and[194][i].a <== states[i][39];
+ and[194][i].b <== eq[59][i].out;
+ and[195][i] = AND();
+ and[195][i].a <== states[i][56];
+ and[195][i].b <== eq[59][i].out;
+ multi_or[46][i] = MultiOR(2);
+ multi_or[46][i].in[0] <== and[194][i].out;
+ multi_or[46][i].in[1] <== and[195][i].out;
+ states[i+1][61] <== multi_or[46][i].out;
+ and[196][i] = AND();
+ and[196][i].a <== states[i][39];
+ and[196][i].b <== multi_or[14][i].out;
+ and[197][i] = AND();
+ and[197][i].a <== states[i][56];
+ and[197][i].b <== multi_or[14][i].out;
+ multi_or[47][i] = MultiOR(2);
+ multi_or[47][i].in[0] <== and[196][i].out;
+ multi_or[47][i].in[1] <== and[197][i].out;
+ states[i+1][62] <== multi_or[47][i].out;
+ and[198][i] = AND();
+ and[198][i].a <== states[i][39];
+ and[198][i].b <== eq[63][i].out;
+ and[199][i] = AND();
+ and[199][i].a <== states[i][56];
+ and[199][i].b <== eq[63][i].out;
+ and[200][i] = AND();
+ and[200][i].a <== states[i][65];
+ and[200][i].b <== eq[67][i].out;
+ and[201][i] = AND();
+ and[201][i].a <== states[i][66];
+ and[201][i].b <== eq[67][i].out;
+ and[202][i] = AND();
+ and[202][i].a <== states[i][74];
+ and[202][i].b <== eq[67][i].out;
+ and[203][i] = AND();
+ and[203][i].a <== states[i][75];
+ and[203][i].b <== eq[67][i].out;
+ multi_or[48][i] = MultiOR(6);
+ multi_or[48][i].in[0] <== and[198][i].out;
+ multi_or[48][i].in[1] <== and[199][i].out;
+ multi_or[48][i].in[2] <== and[200][i].out;
+ multi_or[48][i].in[3] <== and[201][i].out;
+ multi_or[48][i].in[4] <== and[202][i].out;
+ multi_or[48][i].in[5] <== and[203][i].out;
+ states[i+1][63] <== multi_or[48][i].out;
+ and[204][i] = AND();
+ and[204][i].a <== states[i][56];
+ and[204][i].b <== eq[0][i].out;
+ and[205][i] = AND();
+ and[205][i].a <== states[i][77];
+ and[205][i].b <== eq[0][i].out;
+ multi_or[49][i] = MultiOR(2);
+ multi_or[49][i].in[0] <== and[204][i].out;
+ multi_or[49][i].in[1] <== and[205][i].out;
+ states[i+1][64] <== multi_or[49][i].out;
+ eq[80][i] = IsEqual();
+ eq[80][i].in[0] <== in[i];
+ eq[80][i].in[1] <== 47;
+ and[206][i] = AND();
+ and[206][i].a <== states[i][64];
+ and[206][i].b <== eq[80][i].out;
+ states[i+1][65] <== and[206][i].out;
+ and[207][i] = AND();
+ and[207][i].a <== states[i][64];
+ and[207][i].b <== multi_or[40][i].out;
+ lt[40][i] = LessEqThan(8);
+ lt[40][i].in[0] <== 63;
+ lt[40][i].in[1] <== in[i];
+ lt[41][i] = LessEqThan(8);
+ lt[41][i].in[0] <== in[i];
+ lt[41][i].in[1] <== 99;
+ and[208][i] = AND();
+ and[208][i].a <== lt[40][i].out;
+ and[208][i].b <== lt[41][i].out;
+ lt[42][i] = LessEqThan(8);
+ lt[42][i].in[0] <== 101;
+ lt[42][i].in[1] <== in[i];
+ lt[43][i] = LessEqThan(8);
+ lt[43][i].in[0] <== in[i];
+ lt[43][i].in[1] <== 127;
+ and[209][i] = AND();
+ and[209][i].a <== lt[42][i].out;
+ and[209][i].b <== lt[43][i].out;
+ and[210][i] = AND();
+ and[210][i].a <== states[i][65];
+ multi_or[50][i] = MultiOR(4);
+ multi_or[50][i].in[0] <== and[152][i].out;
+ multi_or[50][i].in[1] <== and[208][i].out;
+ multi_or[50][i].in[2] <== and[209][i].out;
+ multi_or[50][i].in[3] <== eq[5][i].out;
+ and[210][i].b <== multi_or[50][i].out;
+ and[211][i] = AND();
+ and[211][i].a <== states[i][66];
+ and[211][i].b <== multi_or[31][i].out;
+ and[212][i] = AND();
+ and[212][i].a <== states[i][67];
+ and[212][i].b <== and[11][i].out;
+ lt[44][i] = LessEqThan(8);
+ lt[44][i].in[0] <== 63;
+ lt[44][i].in[1] <== in[i];
+ lt[45][i] = LessEqThan(8);
+ lt[45][i].in[0] <== in[i];
+ lt[45][i].in[1] <== 104;
+ and[213][i] = AND();
+ and[213][i].a <== lt[44][i].out;
+ and[213][i].b <== lt[45][i].out;
+ lt[46][i] = LessEqThan(8);
+ lt[46][i].in[0] <== 106;
+ lt[46][i].in[1] <== in[i];
+ lt[47][i] = LessEqThan(8);
+ lt[47][i].in[0] <== in[i];
+ lt[47][i].in[1] <== 127;
+ and[214][i] = AND();
+ and[214][i].a <== lt[46][i].out;
+ and[214][i].b <== lt[47][i].out;
+ and[215][i] = AND();
+ and[215][i].a <== states[i][74];
+ multi_or[51][i] = MultiOR(4);
+ multi_or[51][i].in[0] <== and[152][i].out;
+ multi_or[51][i].in[1] <== and[213][i].out;
+ multi_or[51][i].in[2] <== and[214][i].out;
+ multi_or[51][i].in[3] <== eq[5][i].out;
+ and[215][i].b <== multi_or[51][i].out;
+ lt[48][i] = LessEqThan(8);
+ lt[48][i].in[0] <== 63;
+ lt[48][i].in[1] <== in[i];
+ lt[49][i] = LessEqThan(8);
+ lt[49][i].in[0] <== in[i];
+ lt[49][i].in[1] <== 117;
+ and[216][i] = AND();
+ and[216][i].a <== lt[48][i].out;
+ and[216][i].b <== lt[49][i].out;
+ and[217][i] = AND();
+ and[217][i].a <== states[i][75];
+ multi_or[52][i] = MultiOR(12);
+ multi_or[52][i].in[0] <== and[152][i].out;
+ multi_or[52][i].in[1] <== and[216][i].out;
+ multi_or[52][i].in[2] <== eq[5][i].out;
+ multi_or[52][i].in[3] <== eq[22][i].out;
+ multi_or[52][i].in[4] <== eq[23][i].out;
+ multi_or[52][i].in[5] <== eq[24][i].out;
+ multi_or[52][i].in[6] <== eq[64][i].out;
+ multi_or[52][i].in[7] <== eq[7][i].out;
+ multi_or[52][i].in[8] <== eq[8][i].out;
+ multi_or[52][i].in[9] <== eq[9][i].out;
+ multi_or[52][i].in[10] <== eq[10][i].out;
+ multi_or[52][i].in[11] <== eq[11][i].out;
+ and[217][i].b <== multi_or[52][i].out;
+ and[218][i] = AND();
+ and[218][i].a <== states[i][76];
+ and[218][i].b <== multi_or[31][i].out;
+ multi_or[53][i] = MultiOR(7);
+ multi_or[53][i].in[0] <== and[207][i].out;
+ multi_or[53][i].in[1] <== and[210][i].out;
+ multi_or[53][i].in[2] <== and[211][i].out;
+ multi_or[53][i].in[3] <== and[212][i].out;
+ multi_or[53][i].in[4] <== and[215][i].out;
+ multi_or[53][i].in[5] <== and[217][i].out;
+ multi_or[53][i].in[6] <== and[218][i].out;
+ states[i+1][66] <== multi_or[53][i].out;
+ and[219][i] = AND();
+ and[219][i].a <== states[i][64];
+ and[219][i].b <== and[31][i].out;
+ and[220][i] = AND();
+ and[220][i].a <== states[i][65];
+ and[220][i].b <== and[31][i].out;
+ and[221][i] = AND();
+ and[221][i].a <== states[i][66];
+ and[221][i].b <== and[31][i].out;
+ and[222][i] = AND();
+ and[222][i].a <== states[i][68];
+ and[222][i].b <== and[33][i].out;
+ and[223][i] = AND();
+ and[223][i].a <== states[i][69];
+ and[223][i].b <== and[11][i].out;
+ and[224][i] = AND();
+ and[224][i].a <== states[i][70];
+ and[224][i].b <== and[36][i].out;
+ and[225][i] = AND();
+ and[225][i].a <== states[i][74];
+ and[225][i].b <== and[31][i].out;
+ and[226][i] = AND();
+ and[226][i].a <== states[i][75];
+ and[226][i].b <== and[31][i].out;
+ and[227][i] = AND();
+ and[227][i].a <== states[i][76];
+ and[227][i].b <== and[31][i].out;
+ multi_or[54][i] = MultiOR(9);
+ multi_or[54][i].in[0] <== and[219][i].out;
+ multi_or[54][i].in[1] <== and[220][i].out;
+ multi_or[54][i].in[2] <== and[221][i].out;
+ multi_or[54][i].in[3] <== and[222][i].out;
+ multi_or[54][i].in[4] <== and[223][i].out;
+ multi_or[54][i].in[5] <== and[224][i].out;
+ multi_or[54][i].in[6] <== and[225][i].out;
+ multi_or[54][i].in[7] <== and[226][i].out;
+ multi_or[54][i].in[8] <== and[227][i].out;
+ states[i+1][67] <== multi_or[54][i].out;
+ and[228][i] = AND();
+ and[228][i].a <== states[i][64];
+ and[228][i].b <== eq[27][i].out;
+ and[229][i] = AND();
+ and[229][i].a <== states[i][65];
+ and[229][i].b <== eq[27][i].out;
+ and[230][i] = AND();
+ and[230][i].a <== states[i][66];
+ and[230][i].b <== eq[27][i].out;
+ and[231][i] = AND();
+ and[231][i].a <== states[i][74];
+ and[231][i].b <== eq[27][i].out;
+ and[232][i] = AND();
+ and[232][i].a <== states[i][75];
+ and[232][i].b <== eq[27][i].out;
+ and[233][i] = AND();
+ and[233][i].a <== states[i][76];
+ and[233][i].b <== eq[27][i].out;
+ multi_or[55][i] = MultiOR(6);
+ multi_or[55][i].in[0] <== and[228][i].out;
+ multi_or[55][i].in[1] <== and[229][i].out;
+ multi_or[55][i].in[2] <== and[230][i].out;
+ multi_or[55][i].in[3] <== and[231][i].out;
+ multi_or[55][i].in[4] <== and[232][i].out;
+ multi_or[55][i].in[5] <== and[233][i].out;
+ states[i+1][68] <== multi_or[55][i].out;
+ and[234][i] = AND();
+ and[234][i].a <== states[i][64];
+ and[234][i].b <== multi_or[11][i].out;
+ and[235][i] = AND();
+ and[235][i].a <== states[i][65];
+ and[235][i].b <== multi_or[11][i].out;
+ and[236][i] = AND();
+ and[236][i].a <== states[i][66];
+ and[236][i].b <== multi_or[11][i].out;
+ and[237][i] = AND();
+ and[237][i].a <== states[i][71];
+ and[237][i].b <== and[40][i].out;
+ and[238][i] = AND();
+ and[238][i].a <== states[i][72];
+ and[238][i].b <== and[11][i].out;
+ and[239][i] = AND();
+ and[239][i].a <== states[i][73];
+ and[239][i].b <== multi_or[12][i].out;
+ and[240][i] = AND();
+ and[240][i].a <== states[i][74];
+ and[240][i].b <== multi_or[11][i].out;
+ and[241][i] = AND();
+ and[241][i].a <== states[i][75];
+ and[241][i].b <== multi_or[11][i].out;
+ and[242][i] = AND();
+ and[242][i].a <== states[i][76];
+ and[242][i].b <== multi_or[11][i].out;
+ multi_or[56][i] = MultiOR(9);
+ multi_or[56][i].in[0] <== and[234][i].out;
+ multi_or[56][i].in[1] <== and[235][i].out;
+ multi_or[56][i].in[2] <== and[236][i].out;
+ multi_or[56][i].in[3] <== and[237][i].out;
+ multi_or[56][i].in[4] <== and[238][i].out;
+ multi_or[56][i].in[5] <== and[239][i].out;
+ multi_or[56][i].in[6] <== and[240][i].out;
+ multi_or[56][i].in[7] <== and[241][i].out;
+ multi_or[56][i].in[8] <== and[242][i].out;
+ states[i+1][69] <== multi_or[56][i].out;
+ and[243][i] = AND();
+ and[243][i].a <== states[i][64];
+ and[243][i].b <== eq[58][i].out;
+ and[244][i] = AND();
+ and[244][i].a <== states[i][65];
+ and[244][i].b <== eq[58][i].out;
+ and[245][i] = AND();
+ and[245][i].a <== states[i][66];
+ and[245][i].b <== eq[58][i].out;
+ and[246][i] = AND();
+ and[246][i].a <== states[i][74];
+ and[246][i].b <== eq[58][i].out;
+ and[247][i] = AND();
+ and[247][i].a <== states[i][75];
+ and[247][i].b <== eq[58][i].out;
+ and[248][i] = AND();
+ and[248][i].a <== states[i][76];
+ and[248][i].b <== eq[58][i].out;
+ multi_or[57][i] = MultiOR(6);
+ multi_or[57][i].in[0] <== and[243][i].out;
+ multi_or[57][i].in[1] <== and[244][i].out;
+ multi_or[57][i].in[2] <== and[245][i].out;
+ multi_or[57][i].in[3] <== and[246][i].out;
+ multi_or[57][i].in[4] <== and[247][i].out;
+ multi_or[57][i].in[5] <== and[248][i].out;
+ states[i+1][70] <== multi_or[57][i].out;
+ and[249][i] = AND();
+ and[249][i].a <== states[i][64];
+ and[249][i].b <== eq[59][i].out;
+ and[250][i] = AND();
+ and[250][i].a <== states[i][65];
+ and[250][i].b <== eq[59][i].out;
+ and[251][i] = AND();
+ and[251][i].a <== states[i][66];
+ and[251][i].b <== eq[59][i].out;
+ and[252][i] = AND();
+ and[252][i].a <== states[i][74];
+ and[252][i].b <== eq[59][i].out;
+ and[253][i] = AND();
+ and[253][i].a <== states[i][75];
+ and[253][i].b <== eq[59][i].out;
+ and[254][i] = AND();
+ and[254][i].a <== states[i][76];
+ and[254][i].b <== eq[59][i].out;
+ multi_or[58][i] = MultiOR(6);
+ multi_or[58][i].in[0] <== and[249][i].out;
+ multi_or[58][i].in[1] <== and[250][i].out;
+ multi_or[58][i].in[2] <== and[251][i].out;
+ multi_or[58][i].in[3] <== and[252][i].out;
+ multi_or[58][i].in[4] <== and[253][i].out;
+ multi_or[58][i].in[5] <== and[254][i].out;
+ states[i+1][71] <== multi_or[58][i].out;
+ and[255][i] = AND();
+ and[255][i].a <== states[i][64];
+ and[255][i].b <== multi_or[14][i].out;
+ and[256][i] = AND();
+ and[256][i].a <== states[i][65];
+ and[256][i].b <== multi_or[14][i].out;
+ and[257][i] = AND();
+ and[257][i].a <== states[i][66];
+ and[257][i].b <== multi_or[14][i].out;
+ and[258][i] = AND();
+ and[258][i].a <== states[i][74];
+ and[258][i].b <== multi_or[14][i].out;
+ and[259][i] = AND();
+ and[259][i].a <== states[i][75];
+ and[259][i].b <== multi_or[14][i].out;
+ and[260][i] = AND();
+ and[260][i].a <== states[i][76];
+ and[260][i].b <== multi_or[14][i].out;
+ multi_or[59][i] = MultiOR(6);
+ multi_or[59][i].in[0] <== and[255][i].out;
+ multi_or[59][i].in[1] <== and[256][i].out;
+ multi_or[59][i].in[2] <== and[257][i].out;
+ multi_or[59][i].in[3] <== and[258][i].out;
+ multi_or[59][i].in[4] <== and[259][i].out;
+ multi_or[59][i].in[5] <== and[260][i].out;
+ states[i+1][72] <== multi_or[59][i].out;
+ and[261][i] = AND();
+ and[261][i].a <== states[i][64];
+ and[261][i].b <== eq[63][i].out;
+ and[262][i] = AND();
+ and[262][i].a <== states[i][65];
+ and[262][i].b <== eq[63][i].out;
+ and[263][i] = AND();
+ and[263][i].a <== states[i][66];
+ and[263][i].b <== eq[63][i].out;
+ and[264][i] = AND();
+ and[264][i].a <== states[i][74];
+ and[264][i].b <== eq[63][i].out;
+ and[265][i] = AND();
+ and[265][i].a <== states[i][75];
+ and[265][i].b <== eq[63][i].out;
+ and[266][i] = AND();
+ and[266][i].a <== states[i][76];
+ and[266][i].b <== eq[63][i].out;
+ multi_or[60][i] = MultiOR(6);
+ multi_or[60][i].in[0] <== and[261][i].out;
+ multi_or[60][i].in[1] <== and[262][i].out;
+ multi_or[60][i].in[2] <== and[263][i].out;
+ multi_or[60][i].in[3] <== and[264][i].out;
+ multi_or[60][i].in[4] <== and[265][i].out;
+ multi_or[60][i].in[5] <== and[266][i].out;
+ states[i+1][73] <== multi_or[60][i].out;
+ and[267][i] = AND();
+ and[267][i].a <== states[i][65];
+ and[267][i].b <== eq[1][i].out;
+ states[i+1][74] <== and[267][i].out;
+ and[268][i] = AND();
+ and[268][i].a <== states[i][74];
+ and[268][i].b <== eq[2][i].out;
+ states[i+1][75] <== and[268][i].out;
+ and[269][i] = AND();
+ and[269][i].a <== states[i][75];
+ and[269][i].b <== eq[3][i].out;
+ states[i+1][76] <== and[269][i].out;
+ and[270][i] = AND();
+ and[270][i].a <== states[i][76];
+ and[270][i].b <== eq[67][i].out;
+ states[i+1][77] <== and[270][i].out;
+ from_zero_enabled[i] <== MultiNOR(77)([states_tmp[i+1][1], states[i+1][2], states[i+1][3], states[i+1][4], states[i+1][5], states[i+1][6], states[i+1][7], states[i+1][8], states[i+1][9], states[i+1][10], states[i+1][11], states[i+1][12], states[i+1][13], states[i+1][14], states[i+1][15], states[i+1][16], states[i+1][17], states[i+1][18], states[i+1][19], states[i+1][20], states[i+1][21], states[i+1][22], states[i+1][23], states[i+1][24], states[i+1][25], states[i+1][26], states[i+1][27], states[i+1][28], states[i+1][29], states[i+1][30], states[i+1][31], states[i+1][32], states[i+1][33], states[i+1][34], states[i+1][35], states[i+1][36], states[i+1][37], states[i+1][38], states[i+1][39], states[i+1][40], states[i+1][41], states[i+1][42], states[i+1][43], states[i+1][44], states[i+1][45], states[i+1][46], states[i+1][47], states[i+1][48], states[i+1][49], states[i+1][50], states[i+1][51], states[i+1][52], states[i+1][53], states[i+1][54], states[i+1][55], states[i+1][56], states[i+1][57], states[i+1][58], states[i+1][59], states[i+1][60], states[i+1][61], states[i+1][62], states[i+1][63], states[i+1][64], states[i+1][65], states[i+1][66], states[i+1][67], states[i+1][68], states[i+1][69], states[i+1][70], states[i+1][71], states[i+1][72], states[i+1][73], states[i+1][74], states[i+1][75], states[i+1][76], states[i+1][77]]);
states[i+1][1] <== MultiOR(2)([states_tmp[i+1][1], from_zero_enabled[i] * and[0][i].out]);
state_changed[i].in[0] <== states[i+1][1];
state_changed[i].in[1] <== states[i+1][2];
@@ -613,51 +1810,92 @@ template CommandRegex(msg_bytes) {
state_changed[i].in[33] <== states[i+1][34];
state_changed[i].in[34] <== states[i+1][35];
state_changed[i].in[35] <== states[i+1][36];
+ state_changed[i].in[36] <== states[i+1][37];
+ state_changed[i].in[37] <== states[i+1][38];
+ state_changed[i].in[38] <== states[i+1][39];
+ state_changed[i].in[39] <== states[i+1][40];
+ state_changed[i].in[40] <== states[i+1][41];
+ state_changed[i].in[41] <== states[i+1][42];
+ state_changed[i].in[42] <== states[i+1][43];
+ state_changed[i].in[43] <== states[i+1][44];
+ state_changed[i].in[44] <== states[i+1][45];
+ state_changed[i].in[45] <== states[i+1][46];
+ state_changed[i].in[46] <== states[i+1][47];
+ state_changed[i].in[47] <== states[i+1][48];
+ state_changed[i].in[48] <== states[i+1][49];
+ state_changed[i].in[49] <== states[i+1][50];
+ state_changed[i].in[50] <== states[i+1][51];
+ state_changed[i].in[51] <== states[i+1][52];
+ state_changed[i].in[52] <== states[i+1][53];
+ state_changed[i].in[53] <== states[i+1][54];
+ state_changed[i].in[54] <== states[i+1][55];
+ state_changed[i].in[55] <== states[i+1][56];
+ state_changed[i].in[56] <== states[i+1][57];
+ state_changed[i].in[57] <== states[i+1][58];
+ state_changed[i].in[58] <== states[i+1][59];
+ state_changed[i].in[59] <== states[i+1][60];
+ state_changed[i].in[60] <== states[i+1][61];
+ state_changed[i].in[61] <== states[i+1][62];
+ state_changed[i].in[62] <== states[i+1][63];
+ state_changed[i].in[63] <== states[i+1][64];
+ state_changed[i].in[64] <== states[i+1][65];
+ state_changed[i].in[65] <== states[i+1][66];
+ state_changed[i].in[66] <== states[i+1][67];
+ state_changed[i].in[67] <== states[i+1][68];
+ state_changed[i].in[68] <== states[i+1][69];
+ state_changed[i].in[69] <== states[i+1][70];
+ state_changed[i].in[70] <== states[i+1][71];
+ state_changed[i].in[71] <== states[i+1][72];
+ state_changed[i].in[72] <== states[i+1][73];
+ state_changed[i].in[73] <== states[i+1][74];
+ state_changed[i].in[74] <== states[i+1][75];
+ state_changed[i].in[75] <== states[i+1][76];
+ state_changed[i].in[76] <== states[i+1][77];
}
component is_accepted = MultiOR(num_bytes+1);
for (var i = 0; i <= num_bytes; i++) {
- is_accepted.in[i] <== states[i][36];
+ is_accepted.in[i] <== states[i][77];
}
out <== is_accepted.out;
signal is_consecutive[msg_bytes+1][3];
is_consecutive[msg_bytes][2] <== 0;
for (var i = 0; i < msg_bytes; i++) {
- is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][36] * (1 - is_consecutive[msg_bytes-i][2]) + is_consecutive[msg_bytes-i][2];
+ is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][77] * (1 - is_consecutive[msg_bytes-i][2]) + is_consecutive[msg_bytes-i][2];
is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0];
- is_consecutive[msg_bytes-1-i][2] <== ORAnd()([(1 - from_zero_enabled[msg_bytes-i+1]), states[num_bytes-i][36], is_consecutive[msg_bytes-1-i][1]]);
+ is_consecutive[msg_bytes-1-i][2] <== ORAnd()([(1 - from_zero_enabled[msg_bytes-i+1]), states[num_bytes-i][77], is_consecutive[msg_bytes-1-i][1]]);
}
- // substrings calculated: [{(15, 16), (15, 17), (15, 18), (15, 19), (15, 20), (15, 21), (15, 22), (15, 23), (16, 16), (16, 17), (16, 18), (16, 19), (16, 20), (16, 21), (16, 22), (16, 23), (17, 16), (18, 17), (19, 17), (20, 17), (21, 19), (22, 19), (23, 19)}]
+ // substrings calculated: [{(39, 56), (39, 57), (39, 58), (39, 59), (39, 60), (39, 61), (39, 62), (39, 63), (56, 56), (56, 57), (56, 58), (56, 59), (56, 60), (56, 61), (56, 62), (56, 63), (57, 56), (58, 57), (59, 57), (60, 57), (61, 59), (62, 59), (63, 59)}]
signal prev_states0[23][msg_bytes];
signal is_substr0[msg_bytes];
signal is_reveal0[msg_bytes];
signal output reveal0[msg_bytes];
for (var i = 0; i < msg_bytes; i++) {
- // the 0-th substring transitions: [(15, 16), (15, 17), (15, 18), (15, 19), (15, 20), (15, 21), (15, 22), (15, 23), (16, 16), (16, 17), (16, 18), (16, 19), (16, 20), (16, 21), (16, 22), (16, 23), (17, 16), (18, 17), (19, 17), (20, 17), (21, 19), (22, 19), (23, 19)]
- prev_states0[0][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[1][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[2][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[3][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[4][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[5][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[6][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[7][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][15];
- prev_states0[8][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[9][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[10][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[11][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[12][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[13][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[14][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[15][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][16];
- prev_states0[16][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][17];
- prev_states0[17][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][18];
- prev_states0[18][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][19];
- prev_states0[19][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][20];
- prev_states0[20][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][21];
- prev_states0[21][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][22];
- prev_states0[22][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][23];
- is_substr0[i] <== MultiOR(23)([prev_states0[0][i] * states[i+2][16], prev_states0[1][i] * states[i+2][17], prev_states0[2][i] * states[i+2][18], prev_states0[3][i] * states[i+2][19], prev_states0[4][i] * states[i+2][20], prev_states0[5][i] * states[i+2][21], prev_states0[6][i] * states[i+2][22], prev_states0[7][i] * states[i+2][23], prev_states0[8][i] * states[i+2][16], prev_states0[9][i] * states[i+2][17], prev_states0[10][i] * states[i+2][18], prev_states0[11][i] * states[i+2][19], prev_states0[12][i] * states[i+2][20], prev_states0[13][i] * states[i+2][21], prev_states0[14][i] * states[i+2][22], prev_states0[15][i] * states[i+2][23], prev_states0[16][i] * states[i+2][16], prev_states0[17][i] * states[i+2][17], prev_states0[18][i] * states[i+2][17], prev_states0[19][i] * states[i+2][17], prev_states0[20][i] * states[i+2][19], prev_states0[21][i] * states[i+2][19], prev_states0[22][i] * states[i+2][19]]);
+ // the 0-th substring transitions: [(39, 56), (39, 57), (39, 58), (39, 59), (39, 60), (39, 61), (39, 62), (39, 63), (56, 56), (56, 57), (56, 58), (56, 59), (56, 60), (56, 61), (56, 62), (56, 63), (57, 56), (58, 57), (59, 57), (60, 57), (61, 59), (62, 59), (63, 59)]
+ prev_states0[0][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[1][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[2][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[3][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[4][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[5][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[6][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[7][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][39];
+ prev_states0[8][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[9][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[10][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[11][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[12][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[13][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[14][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[15][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][56];
+ prev_states0[16][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][57];
+ prev_states0[17][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][58];
+ prev_states0[18][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][59];
+ prev_states0[19][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][60];
+ prev_states0[20][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][61];
+ prev_states0[21][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][62];
+ prev_states0[22][i] <== (1 - from_zero_enabled[i+1]) * states[i+1][63];
+ is_substr0[i] <== MultiOR(23)([prev_states0[0][i] * states[i+2][56], prev_states0[1][i] * states[i+2][57], prev_states0[2][i] * states[i+2][58], prev_states0[3][i] * states[i+2][59], prev_states0[4][i] * states[i+2][60], prev_states0[5][i] * states[i+2][61], prev_states0[6][i] * states[i+2][62], prev_states0[7][i] * states[i+2][63], prev_states0[8][i] * states[i+2][56], prev_states0[9][i] * states[i+2][57], prev_states0[10][i] * states[i+2][58], prev_states0[11][i] * states[i+2][59], prev_states0[12][i] * states[i+2][60], prev_states0[13][i] * states[i+2][61], prev_states0[14][i] * states[i+2][62], prev_states0[15][i] * states[i+2][63], prev_states0[16][i] * states[i+2][56], prev_states0[17][i] * states[i+2][57], prev_states0[18][i] * states[i+2][57], prev_states0[19][i] * states[i+2][57], prev_states0[20][i] * states[i+2][59], prev_states0[21][i] * states[i+2][59], prev_states0[22][i] * states[i+2][59]]);
is_reveal0[i] <== MultiAND(3)([out, is_substr0[i], is_consecutive[i][2]]);
reveal0[i] <== in[i+1] * is_reveal0[i];
}
diff --git a/packages/circuits/tests/circuits/test_email_auth.circom b/packages/circuits/tests/circuits/test_email_auth.circom
index 1d0b1f88..74510d0b 100644
--- a/packages/circuits/tests/circuits/test_email_auth.circom
+++ b/packages/circuits/tests/circuits/test_email_auth.circom
@@ -2,4 +2,4 @@ pragma circom 2.1.6;
include "../../src/email_auth_template.circom";
-component main = EmailAuth(121, 17, 768, 768, 605, 0, 1);
\ No newline at end of file
+component main = EmailAuth(121, 17, 640, 768, 605, 0, 1);
\ No newline at end of file
diff --git a/packages/circuits/tests/email_auth.test.ts b/packages/circuits/tests/email_auth.test.ts
index 8530991d..737c7167 100644
--- a/packages/circuits/tests/email_auth.test.ts
+++ b/packages/circuits/tests/email_auth.test.ts
@@ -12,7 +12,8 @@ const option = {
recompile: true,
};
-const shaPrecomputeSelector = '\\\[zkemail-begin\\\]';
+const shaPrecomputeSelector = ']*>(<[^<>]+>)*[^<>/]+(<[^<>]+>)*
';
+
jest.setTimeout(1440000);
describe("Email Auth", () => {
let circuit;
@@ -35,12 +36,12 @@ describe("Email Auth", () => {
const emailRaw = readFileSync(emailFilePath, "utf8");
const parsedEmail = await relayerUtils.parseEmail(emailRaw);
- console.log(parsedEmail);
const accountCode = await relayerUtils.generateAccountCode();
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -68,7 +69,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798639);
+ const timestamp = BigInt(1729865810);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand = "Send 0.1 ETH to ";
@@ -105,7 +106,8 @@ describe("Email Auth", () => {
const accountCode = await relayerUtils.generateAccountCode();
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -133,7 +135,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798636);
+ const timestamp = BigInt(1729865832);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand = "Swap 1 ETH to DAI";
@@ -171,7 +173,8 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -199,7 +202,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798632);
+ const timestamp = BigInt(1729866032);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand = "Send 1 ETH to ";
@@ -237,7 +240,8 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -265,7 +269,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798624);
+ const timestamp = BigInt(1729866112);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand = "Send 1 ETH to ";
@@ -304,7 +308,8 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -332,7 +337,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798620);
+ const timestamp = BigInt(1729866146);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand =
@@ -371,7 +376,8 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -399,7 +405,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798645);
+ const timestamp = BigInt(1729866214);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand =
@@ -432,12 +438,14 @@ describe("Email Auth", () => {
);
const emailRaw = readFileSync(emailFilePath, "utf8");
const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+
const accountCode =
"0x01eb9b204cc24c3baee11accc37d253a9c53e92b1a2cc07763475c135d575b76";
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640,
+ maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -465,7 +473,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798642);
+ const timestamp = BigInt(1729866476);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand =
@@ -503,7 +511,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640, maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -531,7 +539,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798629);
+ const timestamp = BigInt(1736157561);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand =
@@ -570,7 +578,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640, maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -598,7 +606,7 @@ describe("Email Auth", () => {
witness[1 + domainFields.length + 1]
);
- const timestamp = BigInt(1734798617);
+ const timestamp = BigInt(1736157558);
expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
const maskedCommand =
@@ -635,7 +643,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768,
+ maxHeaderLength: 640,
maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
@@ -659,7 +667,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768,
+ maxHeaderLength: 640,
maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
@@ -683,7 +691,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768,
+ maxHeaderLength: 640,
maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
@@ -707,7 +715,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640, maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -730,7 +738,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640, maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
@@ -752,7 +760,7 @@ describe("Email Auth", () => {
const circuitInputs =
await genEmailCircuitInput(emailFilePath, accountCode, {
- maxHeaderLength: 768, maxBodyLength: 768,
+ maxHeaderLength: 640, maxBodyLength: 768,
ignoreBodyHashCheck: false,
shaPrecomputeSelector,
});
diff --git a/packages/circuits/tests/emai_auth_legacy_recipient.test.ts b/packages/circuits/tests/email_auth_legacy_recipient.test.ts
similarity index 100%
rename from packages/circuits/tests/emai_auth_legacy_recipient.test.ts
rename to packages/circuits/tests/email_auth_legacy_recipient.test.ts
diff --git a/packages/circuits/tests/email_auth_production.test.ts b/packages/circuits/tests/email_auth_production.test.ts
index 5b8a5dcd..31087d77 100644
--- a/packages/circuits/tests/email_auth_production.test.ts
+++ b/packages/circuits/tests/email_auth_production.test.ts
@@ -12,7 +12,7 @@ const option = {
output: path.join(__dirname, "../build"),
recompile: true,
};
-const shaPrecomputeSelector = '\\\[zkemail-begin\\\]';
+const shaPrecomputeSelector = ']*>[^<>/]+
';
jest.setTimeout(1440000);
describe("Email Auth Production", () => {
@@ -28,7 +28,354 @@ describe("Email Auth Production", () => {
await init();
});
- // it("Verify a production email for recovery sent from mobile with the English setting", async () => {
+ it("Verify a production email for recovery sent from mobile with the English setting", async () => {
+ const emailFilePath = path.join(
+ __dirname,
+ "./emails/recovery_gmail_english_mobile.eml"
+ );
+
+ const emailRaw = readFileSync(emailFilePath, "utf8");
+ const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+ const accountCode =
+ "0x276695464b95b7401535c10a28f804e9c158732fb9e5d974325b498e05cafe7e";
+
+ const circuitInputs =
+ await genEmailCircuitInput(emailFilePath, accountCode, {
+ maxHeaderLength: 1024,
+ maxBodyLength: 1024,
+ ignoreBodyHashCheck: false,
+ shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)',
+ });
+ console.log(circuitInputs);
+ const witness = await circuit.calculateWitness(circuitInputs);
+ await circuit.checkConstraints(witness);
+
+ const domainName = "gmail.com";
+ const paddedDomain = relayerUtils.padString(domainName, 255);
+ const domainFields = await relayerUtils.bytesToFields(paddedDomain);
+ for (let idx = 0; idx < domainFields.length; ++idx) {
+ expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]);
+ }
+
+ const expectedPubKeyHash = await relayerUtils.publicKeyHash(
+ parsedEmail.publicKey
+ );
+ expect(BigInt(expectedPubKeyHash)).toEqual(
+ witness[1 + domainFields.length]
+ );
+
+ const expectedEmailNullifier = await relayerUtils.emailNullifier(
+ parsedEmail.signature
+ );
+ expect(BigInt(expectedEmailNullifier)).toEqual(
+ witness[1 + domainFields.length + 1]
+ );
+
+ const timestamp = BigInt(1733834024);
+ expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
+
+ const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201";
+ const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605);
+ const maskedCommandFields =
+ await relayerUtils.bytesToFields(paddedMaskedCommand);
+ for (let idx = 0; idx < maskedCommandFields.length; ++idx) {
+ expect(BigInt(maskedCommandFields[idx])).toEqual(
+ witness[1 + domainFields.length + 3 + idx]
+ );
+ }
+
+ const fromAddr = "clavertest1@gmail.com";
+ const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode);
+ expect(BigInt(accountSalt)).toEqual(
+ witness[1 + domainFields.length + 3 + maskedCommandFields.length]
+ );
+
+ expect(BigInt(1)).toEqual(
+ witness[
+ 1 + domainFields.length + 3 + maskedCommandFields.length + 1
+ ]
+ );
+ });
+
+
+ it("Verify a production email for recovery sent from PC with the English setting", async () => {
+ const emailFilePath = path.join(
+ __dirname,
+ "./emails/recovery_gmail_english_pc.eml"
+ );
+
+ const emailRaw = readFileSync(emailFilePath, "utf8");
+ const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+ const accountCode =
+ "0x2cf32a52285eb1f62fabeeb143e91314d1d2f8df39e572e26f19d6c9fd301a28";
+
+ const circuitInputs =
+ await genEmailCircuitInput(emailFilePath, accountCode, {
+ maxHeaderLength: 1024,
+ maxBodyLength: 1024,
+ ignoreBodyHashCheck: false,
+ shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)',
+ });
+ console.log(circuitInputs);
+ const witness = await circuit.calculateWitness(circuitInputs);
+ await circuit.checkConstraints(witness);
+
+ const domainName = "gmail.com";
+ const paddedDomain = relayerUtils.padString(domainName, 255);
+ const domainFields = await relayerUtils.bytesToFields(paddedDomain);
+ for (let idx = 0; idx < domainFields.length; ++idx) {
+ expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]);
+ }
+
+ const expectedPubKeyHash = await relayerUtils.publicKeyHash(
+ parsedEmail.publicKey
+ );
+ expect(BigInt(expectedPubKeyHash)).toEqual(
+ witness[1 + domainFields.length]
+ );
+
+ const expectedEmailNullifier = await relayerUtils.emailNullifier(
+ parsedEmail.signature
+ );
+ expect(BigInt(expectedEmailNullifier)).toEqual(
+ witness[1 + domainFields.length + 1]
+ );
+
+ const timestamp = BigInt(1733832799);
+ expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
+
+ const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201";
+ const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605);
+ const maskedCommandFields =
+ await relayerUtils.bytesToFields(paddedMaskedCommand);
+ for (let idx = 0; idx < maskedCommandFields.length; ++idx) {
+ expect(BigInt(maskedCommandFields[idx])).toEqual(
+ witness[1 + domainFields.length + 3 + idx]
+ );
+ }
+
+ const fromAddr = "clavertest1@gmail.com";
+ const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode);
+ expect(BigInt(accountSalt)).toEqual(
+ witness[1 + domainFields.length + 3 + maskedCommandFields.length]
+ );
+
+ expect(BigInt(1)).toEqual(
+ witness[
+ 1 + domainFields.length + 3 + maskedCommandFields.length + 1
+ ]
+ );
+ });
+
+ it("Verify a production email for recovery sent from mobile with the Turkish setting", async () => {
+ const emailFilePath = path.join(
+ __dirname,
+ "./emails/recovery_gmail_turkish_mobile.eml"
+ );
+
+ const emailRaw = readFileSync(emailFilePath, "utf8");
+ const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+ const accountCode =
+ "0x207c337c09f4196dac142567a9e0ddc955b89b42ce30aae71806a6a5c8626570";
+
+ const circuitInputs =
+ await genEmailCircuitInput(emailFilePath, accountCode, {
+ maxHeaderLength: 1024,
+ maxBodyLength: 1024,
+ ignoreBodyHashCheck: false,
+ shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)',
+ });
+ console.log(circuitInputs);
+ const witness = await circuit.calculateWitness(circuitInputs);
+ await circuit.checkConstraints(witness);
+
+ const domainName = "gmail.com";
+ const paddedDomain = relayerUtils.padString(domainName, 255);
+ const domainFields = await relayerUtils.bytesToFields(paddedDomain);
+ for (let idx = 0; idx < domainFields.length; ++idx) {
+ expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]);
+ }
+
+ const expectedPubKeyHash = await relayerUtils.publicKeyHash(
+ parsedEmail.publicKey
+ );
+ expect(BigInt(expectedPubKeyHash)).toEqual(
+ witness[1 + domainFields.length]
+ );
+
+ const expectedEmailNullifier = await relayerUtils.emailNullifier(
+ parsedEmail.signature
+ );
+ expect(BigInt(expectedEmailNullifier)).toEqual(
+ witness[1 + domainFields.length + 1]
+ );
+
+ const timestamp = BigInt(1733834333);
+ expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
+
+ const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201";
+ const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605);
+ const maskedCommandFields =
+ await relayerUtils.bytesToFields(paddedMaskedCommand);
+ for (let idx = 0; idx < maskedCommandFields.length; ++idx) {
+ expect(BigInt(maskedCommandFields[idx])).toEqual(
+ witness[1 + domainFields.length + 3 + idx]
+ );
+ }
+
+ const fromAddr = "clavertest1@gmail.com";
+ const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode);
+ expect(BigInt(accountSalt)).toEqual(
+ witness[1 + domainFields.length + 3 + maskedCommandFields.length]
+ );
+
+ expect(BigInt(1)).toEqual(
+ witness[
+ 1 + domainFields.length + 3 + maskedCommandFields.length + 1
+ ]
+ );
+ });
+
+ it("Verify a production email for recovery sent from PC with the Turkish setting", async () => {
+ const emailFilePath = path.join(
+ __dirname,
+ "./emails/recovery_gmail_turkish_pc.eml"
+ );
+
+ const emailRaw = readFileSync(emailFilePath, "utf8");
+ const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+ const accountCode =
+ "0x2ea2aea6391028aa5e1c5a8b1de277ba6b2d04b1a2da0bef66d3311ab2679347";
+
+ const circuitInputs =
+ await genEmailCircuitInput(emailFilePath, accountCode, {
+ maxHeaderLength: 1024,
+ maxBodyLength: 1024,
+ ignoreBodyHashCheck: false,
+ shaPrecomputeSelector: '(<(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)? (=\r\n)?i(=\r\n)?d(=\r\n)?=3D(=\r\n)?"(=\r\n)?[^"]*(=\r\n)?z(=\r\n)?k(=\r\n)?e(=\r\n)?m(=\r\n)?a(=\r\n)?i(=\r\n)?l(=\r\n)?[^"]*(=\r\n)?"(=\r\n)?[^>]*(=\r\n)?>(=\r\n)?)(=\r\n)?([^<>/]+)(<(=\r\n)?/(=\r\n)?d(=\r\n)?i(=\r\n)?v(=\r\n)?>(=\r\n)?)',
+ });
+ console.log(circuitInputs);
+ const witness = await circuit.calculateWitness(circuitInputs);
+ await circuit.checkConstraints(witness);
+
+ const domainName = "gmail.com";
+ const paddedDomain = relayerUtils.padString(domainName, 255);
+ const domainFields = await relayerUtils.bytesToFields(paddedDomain);
+ for (let idx = 0; idx < domainFields.length; ++idx) {
+ expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]);
+ }
+
+ const expectedPubKeyHash = await relayerUtils.publicKeyHash(
+ parsedEmail.publicKey
+ );
+ expect(BigInt(expectedPubKeyHash)).toEqual(
+ witness[1 + domainFields.length]
+ );
+
+ const expectedEmailNullifier = await relayerUtils.emailNullifier(
+ parsedEmail.signature
+ );
+ expect(BigInt(expectedEmailNullifier)).toEqual(
+ witness[1 + domainFields.length + 1]
+ );
+
+ const timestamp = BigInt(1733834168);
+ expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
+
+ const maskedCommand = "Accept guardian request for 0xAc09b60d0BD4370545F1f56dB21cd33606c1F201";
+ const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605);
+ const maskedCommandFields =
+ await relayerUtils.bytesToFields(paddedMaskedCommand);
+ for (let idx = 0; idx < maskedCommandFields.length; ++idx) {
+ expect(BigInt(maskedCommandFields[idx])).toEqual(
+ witness[1 + domainFields.length + 3 + idx]
+ );
+ }
+
+ const fromAddr = "clavertest1@gmail.com";
+ const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode);
+ expect(BigInt(accountSalt)).toEqual(
+ witness[1 + domainFields.length + 3 + maskedCommandFields.length]
+ );
+
+ expect(BigInt(1)).toEqual(
+ witness[
+ 1 + domainFields.length + 3 + maskedCommandFields.length + 1
+ ]
+ );
+ });
+
+ it("Verify a production email for recovery sent from apple email mobile", async () => {
+ const emailFilePath = path.join(
+ __dirname,
+ "./emails/recovery_gmail_from_apple_mail.eml"
+ );
+
+ const emailRaw = readFileSync(emailFilePath, "utf8");
+ const parsedEmail = await relayerUtils.parseEmail(emailRaw);
+ const accountCode =
+ "0x1162ebff40918afe5305e68396f0283eb675901d0387f97d21928d423aaa0b20";
+
+ const circuitInputs =
+ await genEmailCircuitInput(emailFilePath, accountCode, {
+ maxHeaderLength: 1024,
+ maxBodyLength: 1024,
+ ignoreBodyHashCheck: false,
+ shaPrecomputeSelector
+ });
+ console.log(circuitInputs);
+
+ const witness = await circuit.calculateWitness(circuitInputs);
+ await circuit.checkConstraints(witness);
+
+ const domainName = "gmail.com";
+ const paddedDomain = relayerUtils.padString(domainName, 255);
+ const domainFields = await relayerUtils.bytesToFields(paddedDomain);
+ for (let idx = 0; idx < domainFields.length; ++idx) {
+ expect(BigInt(domainFields[idx])).toEqual(witness[1 + idx]);
+ }
+
+ const expectedPubKeyHash = await relayerUtils.publicKeyHash(
+ parsedEmail.publicKey
+ );
+ expect(BigInt(expectedPubKeyHash)).toEqual(
+ witness[1 + domainFields.length]
+ );
+
+ const expectedEmailNullifier = await relayerUtils.emailNullifier(
+ parsedEmail.signature
+ );
+ expect(BigInt(expectedEmailNullifier)).toEqual(
+ witness[1 + domainFields.length + 1]
+ );
+
+ const timestamp = BigInt(1735305312);
+ expect(timestamp).toEqual(witness[1 + domainFields.length + 2]);
+
+ const maskedCommand = "Accept guardian request for 0x952541bDfe8aae3805D5b9A37D5Ae5e1EE68346f";
+ const paddedMaskedCommand = relayerUtils.padString(maskedCommand, 605);
+ const maskedCommandFields =
+ await relayerUtils.bytesToFields(paddedMaskedCommand);
+ for (let idx = 0; idx < maskedCommandFields.length; ++idx) {
+ expect(BigInt(maskedCommandFields[idx])).toEqual(
+ witness[1 + domainFields.length + 3 + idx]
+ );
+ }
+
+ const fromAddr = "suegamisora@gmail.com";
+ const accountSalt = await relayerUtils.generateAccountSalt(fromAddr, accountCode);
+ expect(BigInt(accountSalt)).toEqual(
+ witness[1 + domainFields.length + 3 + maskedCommandFields.length]
+ );
+
+ expect(BigInt(1)).toEqual(
+ witness[
+ 1 + domainFields.length + 3 + maskedCommandFields.length + 1
+ ]
+ );
+ });
+
+ // it("Verify a production email for recovery sent from outlook pc with the English setting", async () => {
// const emailFilePath = path.join(
// __dirname,
// "./emails/recovery_gmail_english_mobile.eml"
diff --git a/packages/circuits/tests/emai_auth_recipient.test.ts b/packages/circuits/tests/email_auth_recipient.test.ts
similarity index 100%
rename from packages/circuits/tests/emai_auth_recipient.test.ts
rename to packages/circuits/tests/email_auth_recipient.test.ts
diff --git a/packages/circuits/tests/emails/email_auth_invalid_test1.eml b/packages/circuits/tests/emails/email_auth_invalid_test1.eml
deleted file mode 100644
index 3995ef6d..00000000
--- a/packages/circuits/tests/emails/email_auth_invalid_test1.eml
+++ /dev/null
@@ -1,98 +0,0 @@
-Delivered-To: suegamisora@gmail.com
-Received: by 2002:a05:7010:2284:b0:415:a8ba:b98c with SMTP id r4csp1040892mdg;
- Fri, 25 Oct 2024 07:41:04 -0700 (PDT)
-X-Received: by 2002:a17:902:e544:b0:20c:9d8d:1f65 with SMTP id d9443c01a7336-20fb994d810mr79073695ad.30.1729867263878;
- Fri, 25 Oct 2024 07:41:03 -0700 (PDT)
-ARC-Seal: i=1; a=rsa-sha256; t=1729867263; cv=none;
- d=google.com; s=arc-20240605;
- b=b0Q+9VzThRKQBbRpT7G2X+gDYkjP4vahZQIixEMdVnxWwGAVh3MDAtAZScI7QoX3fZ
- wZz3nlpP3F97+7AODdQushhfdgGFdFbcFj1wFHtT04UtJ1VFh5+q/FU1iPMV5ZgMU1dd
- mJZi/tQY4KqZxFdtVDoRhfWd2Q/u8AClJOtb1DKS27AJiLOZABhAW6VH0g6mEq2ZVHq5
- A3RS/m6wIGZ7Zb6Xb2WeBB8zDGrtfd8+Iv66zGluLWsLiXgGfkm/Yyt7JYRYxZTgq66I
- KwBGsNCq+9cCIlYftmEuh7jD5G6JqgE8zexVqPGO9iLmhARxIvjlDWaQgvuE2MLjVRcv
- s2yg==
-ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
- h=subject:to:from:mime-version:date:message-id:dkim-signature;
- bh=PsLz804XfOcayfPHe0x6Z87/QdwLeZaJ8Aj7CjrmavU=;
- fh=r9ZW45D/4i7BIl/4UeFGrkYKwbplztqhOVKfbV+WD3I=;
- b=V6CR8wcQVdOM9ceeY6DcVnqRKwxprp72sHSgeth+GC3oB6JThZqA6xdiGzja4RRdXg
- LnAzvyEfKMYNsd9D1uDbxwnmk0Q7tNYcr8bdZ0IbXGvYeytxF0NkM5g3GtgZQBubazpw
- hxH2hcn5ctoySQhMaUNpbdKnbeiYFaRSYt/re2ouwyWkVN+HUI2oyl+eveYOiCJcA3sj
- CZHxlqT1ZwJ/k//QkaR+7WfRzMdjX0yHBK7GoI3aVUGyjNMAkJQwV3p1u0t6PjDvLAFt
- rKH/wx10/V1YJDfw2UNmG2HmRAf6wCahN1rvAV1ZHdTII6DUV+iGA2Lx8JyI4ZEKzgc5
- SU2A==;
- dara=google.com
-ARC-Authentication-Results: i=1; mx.google.com;
- dkim=pass header.i=@gmail.com header.s=20230601 header.b=HBr27x2l;
- spf=pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=emaiwallet.alice@gmail.com;
- dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
- dara=pass header.i=@gmail.com
-Return-Path:
-Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
- by mx.google.com with SMTPS id d9443c01a7336-210bbfaa9aesor9989655ad.11.2024.10.25.07.41.03
- for
- (Google Transport Security);
- Fri, 25 Oct 2024 07:41:03 -0700 (PDT)
-Received-SPF: pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
-Authentication-Results: mx.google.com;
- dkim=pass header.i=@gmail.com header.s=20230601 header.b=HBr27x2l;
- spf=pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=emaiwallet.alice@gmail.com;
- dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
- dara=pass header.i=@gmail.com
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=gmail.com; s=20230601; t=1729867263; x=1730472063; dara=google.com;
- h=subject:to:from:mime-version:date:message-id:from:to:cc:subject
- :date:message-id:reply-to;
- bh=PsLz804XfOcayfPHe0x6Z87/QdwLeZaJ8Aj7CjrmavU=;
- b=HBr27x2lZpi95mQM2o50nym8vqklTpXkE9xwxYw85iJqLYn+gcA8dHPqSf9ylGppuP
- nkhjLZ0zs0+AwJcylx+DWjN5O2SfCuG/fQjvVF3Ag7bVW/zNTDHR9yvwRi0g+93umVo2
- 4rZjVfLCK9xQFpXcQh6vmNfVMhIgTVLK8jJd6S9FlTUAJ+c7p8YcATUdi7JmWiS+xhhX
- YQv353cN9lN5+KwRXQ+fy7HUr8V4dUmnfQbOZfFrfWq+IVWeBr/wd3dvhLX/D/NCS4eT
- BYWVd/wxy87UowXzgxkaWEZvQuv3f8W2hy0N/rRIGwAXDYNGtkY2qy9jKShnsaTwtlQk
- qXbw==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20230601; t=1729867263; x=1730472063;
- h=subject:to:from:mime-version:date:message-id:x-gm-message-state
- :from:to:cc:subject:date:message-id:reply-to;
- bh=PsLz804XfOcayfPHe0x6Z87/QdwLeZaJ8Aj7CjrmavU=;
- b=PuMKz5sQ1iDTUhv9mI+RPC4IqR3/14ODfkScu+Q/TSKVnLo3Y0TqCf+WZZTsq09Zns
- bBjmjVL5Rb9yd8wf0i+2JtzkA4bINTjH8flT/UoLa3HveMMH/HaLodRq3HUb5yS/wte9
- TCRdl3062NQIB631iA+M0xVUOsmvvV8jXappu11nHkl0/ZgRb7XPd8qa9PwHb7s/dzE6
- yuDyDmZXpZU6+mxOOf2RDlaCLXPa/UmQAV16MkngRfsCYF0y2nEIfpbZFl9QIbDbYFus
- EPKU++6FQSa5QeXvGwI1k6TsSuyeP/fpNUtEVawPRnYlFAkUCvkg7pt/DtATtQ9bN6b8
- ihTQ==
-X-Gm-Message-State: AOJu0YxfXANbbAXSeGAgpT+V7QvlqTiQJ2kBKVfNtApuF1IuThgpyA5f
- PWDU649n5u/BUfgM2n0VjDSAnzAKoMBsA4k5rdL/Wq8s8txIU+K2A1HV8jyv
-X-Google-Smtp-Source: AGHT+IFfMY0A/Nt6e8j11mefQBEn0hU/WB6YvijjE202nDyjVaWFjkR2TagHs4oR8GRebcMq93uWZA==
-X-Received: by 2002:a17:902:db08:b0:20c:5cdd:a9e with SMTP id d9443c01a7336-20fb9949e31mr63347775ad.28.1729867263044;
- Fri, 25 Oct 2024 07:41:03 -0700 (PDT)
-Return-Path:
-Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa ([93.118.43.168])
- by smtp.gmail.com with ESMTPSA id d9443c01a7336-210bbf6d6e7sm10039395ad.71.2024.10.25.07.41.00
- for
- (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
- Fri, 25 Oct 2024 07:41:01 -0700 (PDT)
-Message-ID: <671badfd.170a0220.f37ed.3f59@mx.google.com>
-Date: Fri, 25 Oct 2024 07:41:01 -0700 (PDT)
-Content-Type: multipart/alternative; boundary="===============4967285061131455909=="
-MIME-Version: 1.0
-From: "Alice"
-To: suegamisora@gmail.com
-Subject: Re: [Reply] Test Email Invalid
-
---===============4967285061131455909==
-Content-Type: text/html; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-
-
-
- Hello!
- This is a test email with a basic HTML body.
- Accept guardian request for 0x04884491560f38342C56E26BDD0fEAbb68E2d2FC Code 01eb9b204cc24c3baee11accc37d253a9c53e92b1a2cc07763475c135d575b76
- Thank you!
-
-
-
---===============4967285061131455909==--
diff --git a/packages/circuits/tests/emails/email_auth_test1.eml b/packages/circuits/tests/emails/email_auth_test1.eml
index 4568712a..8122adad 100644
--- a/packages/circuits/tests/emails/email_auth_test1.eml
+++ b/packages/circuits/tests/emails/email_auth_test1.eml
@@ -1,91 +1,86 @@
Delivered-To: suegamisora@gmail.com
-Received: by 2002:a05:7010:980b:b0:420:b530:eccd with SMTP id cl11csp3133855mdb;
- Sat, 21 Dec 2024 08:30:40 -0800 (PST)
-X-Received: by 2002:a05:6a20:e68c:b0:1e1:c0db:1530 with SMTP id adf61e73a8af0-1e5e04584b6mr11200923637.6.1734798640229;
- Sat, 21 Dec 2024 08:30:40 -0800 (PST)
-ARC-Seal: i=1; a=rsa-sha256; t=1734798640; cv=none;
+Received: by 2002:a05:7010:2284:b0:415:a8ba:b98c with SMTP id r4csp1023651mdg;
+ Fri, 25 Oct 2024 07:16:51 -0700 (PDT)
+X-Received: by 2002:a17:903:244d:b0:20b:ab74:f567 with SMTP id d9443c01a7336-20fb99499ddmr75139865ad.27.1729865811161;
+ Fri, 25 Oct 2024 07:16:51 -0700 (PDT)
+ARC-Seal: i=1; a=rsa-sha256; t=1729865811; cv=none;
d=google.com; s=arc-20240605;
- b=kExKvyUEp1F2UpGi4wAm11enT+LQla4J3MfTU29oSXNvc1lfvoflEn++UaH4G2YzwP
- pqur+YPjKKjlv2Wt/n3qDaOfiPrVR/d3jIXHsVTmausY5NRYWuXJ6gbBiDEEmwepP4Cl
- Tdh/Gv+yxrV+ae3LExgIjWz9V64pEse+3V/EfitHWMssEVWzYcZIupRKrRDFmslvGYlf
- T3wtyy0bgJXS6mc9FBxPRCbggh6573ELxtWyDfjes9+C9KZtY5PMwxCJgUB4RnKPlMyp
- ZCcySkeKsuYJ2vFVzGvqQXqvm95p3x8vcUrNCwmW+GbQOET1d6lCrfl+yFb4mnxl9Qt0
- PQ/w==
+ b=d8XJK9+pZJCprUUbpInC0h6dOlNOgCMMU7te50Lh/0ZMCPWVEfOJ6T2N8EyOZ6/wFe
+ 4nCuvGy6G33+OHk+ESdd/URG/j2bY68eIxGI/U+gqzmqYIZZkQYYOrKeUIlC7VAbIyvy
+ fQlagnM7l37UqdMPCj+a6YeZoT196WBX9xNIUY3BIrbbT4yDguziAgbx3xbWeIyFwgw8
+ 7AO5N4sxz6VQ10l1B2EhtEivAox4sWBQJihjzRoTcP7z2G9Zha4GtIzQWbMqqUZBTs2U
+ Y5qwW+TqljQsCJyINC2WTgqrN4tTv5hugYjFey3PDjfL/K0lausBbu7Uo71cqyXOKhgt
+ wtjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
h=subject:to:from:mime-version:date:message-id:dkim-signature;
- bh=2z4eRCmN7O7QAmsE6w3DGCJ5vufG41uQ5gsK2Pc9KGE=;
+ bh=bT/LDY81RpBFmXm/KMUR+NkKSYXPaNrvqUT6/P1bYwc=;
fh=r9ZW45D/4i7BIl/4UeFGrkYKwbplztqhOVKfbV+WD3I=;
- b=NkUsnfyxRsYYx+FyOxfi7nJSL9kx0+7UJTChsA0msdCGvY2e2SldJwkntlWLA1+w1a
- v+ynXEa8bMIZMwmcgjxHNjeRRZkIm61k+W0aqqKyryzwayIS6Lyv7UahqSYTXvCzM3Oy
- FRs4eN91pTfRrWxlNsuikTYxqSJdl4L9ocU6H3ItcTFq4iCdIW7PfdK9J+W96TTB9C8N
- WXJwC1pyfzGfgEPUN2rssehZSKrsMx7tV5OwLSjvPxiwULaixDnwvH/7nP8JZHEE46gU
- JtRl593fg+Z5iQZdY2a8qae8TNfnA/M9ii6j/Art/nMPyGyoDamkbnPW6CapZmmkzlVL
- ShUw==;
+ b=CMD4Fa/nGqeNrJLbNhdRDAeriZ3SBBm050L0vv1IbPjFnwZA5W0hhaDSx0JKc1aDTA
+ vaR3LATyHM0+IkGTIivTKnlYVVn6wazIXblzc23bykU2Nl30ce+QuLBy4VlsD3ZPzHy2
+ kva+s5Esh3YGfIicRxxe3fa7QOWldGvI1zBqRAkMkGhOakUyjMVsFIM1BYv2PS7bNo3Z
+ fj0HJTNdcsdNtanTQK8QzQnxxE7DikgvgwyLQbcx7JzSgipVS3ROm1Y/4NcOreDQ9pkf
+ kI7EQ2KyGOFBWexG13Cb3l2ZrKc83pZJlY3MGLpHRiUt90J/EN3tFLj+aPNnLm+TOYYH
+ prIA==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
- dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y8444tSM;
+ dkim=pass header.i=@gmail.com header.s=20230601 header.b=KIjQBw7z;
spf=pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=emaiwallet.alice@gmail.com;
dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
dara=pass header.i=@gmail.com
Return-Path:
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
- by mx.google.com with SMTPS id d2e1a72fcca58-72aad841441sor3172667b3a.1.2024.12.21.08.30.40
+ by mx.google.com with SMTPS id d9443c01a7336-210bbfaa9aesor9660625ad.11.2024.10.25.07.16.51
for
(Google Transport Security);
- Sat, 21 Dec 2024 08:30:40 -0800 (PST)
+ Fri, 25 Oct 2024 07:16:51 -0700 (PDT)
Received-SPF: pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
Authentication-Results: mx.google.com;
- dkim=pass header.i=@gmail.com header.s=20230601 header.b=Y8444tSM;
+ dkim=pass header.i=@gmail.com header.s=20230601 header.b=KIjQBw7z;
spf=pass (google.com: domain of emaiwallet.alice@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=emaiwallet.alice@gmail.com;
dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com;
dara=pass header.i=@gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=gmail.com; s=20230601; t=1734798639; x=1735403439; dara=google.com;
+ d=gmail.com; s=20230601; t=1729865810; x=1730470610; dara=google.com;
h=subject:to:from:mime-version:date:message-id:from:to:cc:subject
:date:message-id:reply-to;
- bh=2z4eRCmN7O7QAmsE6w3DGCJ5vufG41uQ5gsK2Pc9KGE=;
- b=Y8444tSM1NVvKXRkrx9jCJinA7l5CLV67OLu9CruFZ+ciKqG8d8KN0zIfZ5IeSac2b
- SIxE8uZDYsgqGMXFThtYhvqTy3TV2uUN2DhYP+i6fdGbY0tXY7ds2Mtv/Dl6mc+cp+2y
- yo+fd7BhP50rx02Gu93Zro6dGP47LuydXwxhCEb6IAnc074W+HmTi/XMIcr3ANojYIYe
- LWy9XIyt+6Dt6EIRsDWTq0OLXrP3/MtuiLkGHnBqik7d+q0fTLbpbr+7zJIy1qostcEi
- xlsNwWJ5J2y06UOjrS2mkWWKW2hB/reVGMip2by437cAb1b2FTTqZRXwBkwC3xH8KKeT
- ssWQ==
+ bh=bT/LDY81RpBFmXm/KMUR+NkKSYXPaNrvqUT6/P1bYwc=;
+ b=KIjQBw7z7yB2LA/GAK2tZ0EFADBYU231VkXXkwjzQpcUwp0D7CKfO7f6olrFiP2/bI
+ 911tMT6S+t0NaKsG0C7iWiBmxp1bF34tF89K5VMRQaCG0mBxyJyxsrAVKc/grRdM1+qS
+ eWEQoRnbhjTJfN3MSd4Dp0gcwTgC3OnMTy5w4v0bD7XAeuxeBvTARnQYfMnesp+GWIpB
+ m6efm93+NDUHGoe2ouYsxbm2dONaC+F83OLNTp97v9sw3sjGVstJWgbBatKj3X72cc3e
+ 9an/zKXmn7MLdW0zqRMKx5uwIuyae3S7S8yAWk414H870TeJy/oqehA0LSWJ1Rw1Cqcw
+ Jjbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20230601; t=1734798639; x=1735403439;
+ d=1e100.net; s=20230601; t=1729865810; x=1730470610;
h=subject:to:from:mime-version:date:message-id:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
- bh=2z4eRCmN7O7QAmsE6w3DGCJ5vufG41uQ5gsK2Pc9KGE=;
- b=Y4RoEsJsrVooxDvY4sLvj3ELB6ZOO9RKecZ3P7epbipX42+Ur1f7rmk+mV9tZ9zEUC
- /q6AdIGqZKsU/g90uiKAVT16pxKnCGsp7s3fFrH5voFu3Ztxr6DK2zal4kAkj7SO4dzT
- hIyQkHsabwkjlunUoTNUhPEr4bFKtBzQHWdoiksdvs6sXCTvnISOij3WfNPFGV0TDEF9
- zgA8h7gNhcLFp31VeM31lMGeu01xiCQfiNChYOAS1M8lYnZ7JIWwL1AXPgsuCp8gtkA3
- FX3x26eWmkJdZ1DnupZA29o2TfAVW620MBjfZHdsMNTg7T9onFnHiN2/HgR789akBAPK
- KXyw==
-X-Gm-Message-State: AOJu0YzFcR2w1Nmob9qsr4bEjTUdB3cAL7WVDwDlUhc1cyH+Ns/PY/Ay
- z2TSQ+UEA9e3+VH+yGTJJ3nVasFJD43dDTbiTDw4xCLA86J7K6YYpT2RW2gv
-X-Gm-Gg: ASbGncuhl+f4JuHMlX6qYcIZrm8G1n/TEZ1xHvkJP+bvxODI2WL7ismdH4P5eA8FrSE
- 17GsYJ2A1TcXO86Gv/7IMey4iT0DmfDfJgi+xSguzGgVeJ+3GQR33BwE8jt3uvOMuwBaFigPqvI
- vb+One+1sgAaW8bkDPavkGsMC4MEcXiYqsPLT/s5cwnJKAg/CH0uuE8qv7JNYuCZQsZwYZzkTfq
- QUANT3Jn7RbqXQgrxOYAb9O+Q90wcXnEExWnA11q0kUW9tt/HPmpQMQxJXFJnKvlYU+y8b1aQtu
- IjZ7elEP4dWpBA==
-X-Google-Smtp-Source: AGHT+IHr4b2MhZF3cP3b6hKyFfXEs6l7G1KPeSyHt8Pl0gWY4ak6bLJD10HC2oklKZweS0curgz5hA==
-X-Received: by 2002:a05:6a20:431d:b0:1e1:bf3d:a190 with SMTP id adf61e73a8af0-1e5e080c83fmr11884177637.30.1734798639003;
- Sat, 21 Dec 2024 08:30:39 -0800 (PST)
+ bh=bT/LDY81RpBFmXm/KMUR+NkKSYXPaNrvqUT6/P1bYwc=;
+ b=Sx1BnrCkJff3QLkebYj+smj3lYHAsST4bWFVoQXIYYiiDR39vOWpIiuYlrgqCfI/gX
+ SX5ExYx+3Y6WmqfXiwERdQsQd2UQEYNBC3qcTpJ8fm0OElP6yCvxIef8+AHNF++vLGQh
+ DdA81IXhMva4WSdCIGN9y9mGJwp1UKxM60wEOK2AglnIYcd+K/KWyh2DkHdTljpOR4V7
+ gfxCwX0yZ14d8JtXHjeYZugbz9QbiCsFoSJew17BpfpWyzv92I/7tecJtAYGiz3kKCB8
+ w65Tz5aB2AF8YVZHclCsgGVLVc/Wd2n8z06fBsuSL1TYSxvG902x6qlgCzyAkRRy3Cw5
+ adZw==
+X-Gm-Message-State: AOJu0Yzege80eQmzaDuEGfJewEgdtOZnkhsoPQpZHuc63ZJsQCB955XL
+ vNPtZqu56A1KLglV5v8x0ULFftfCuvZuC4wdXQoWKIEELaANrLvmocAh/Vsq
+X-Google-Smtp-Source: AGHT+IGVSna3D/ryeT3DaYAkWN9xJSkDN3vpNVXO5Iyp9EOu95r/HH/C75oGKJyP2qCD7YUIiljNNw==
+X-Received: by 2002:a17:903:228b:b0:20c:f856:a8ff with SMTP id d9443c01a7336-20fb9a81f02mr80275975ad.58.1729865810266;
+ Fri, 25 Oct 2024 07:16:50 -0700 (PDT)
Return-Path:
-Received: from SoraMacBook-4.local ([86.48.12.156])
- by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72aad830333sm4923308b3a.41.2024.12.21.08.30.37
+Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa ([93.118.43.168])
+ by smtp.gmail.com with ESMTPSA id d9443c01a7336-210bbf4a21asm9792355ad.61.2024.10.25.07.16.47
for
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
- Sat, 21 Dec 2024 08:30:38 -0800 (PST)
-Message-ID: <6766ed2e.050a0220.1843f1.d965@mx.google.com>
-Date: Sat, 21 Dec 2024 08:30:38 -0800 (PST)
-Content-Type: multipart/alternative; boundary="===============4869138441289677085=="
+ Fri, 25 Oct 2024 07:16:49 -0700 (PDT)
+Message-ID: <671ba851.170a0220.841e6.384e@mx.google.com>
+Date: Fri, 25 Oct 2024 07:16:49 -0700 (PDT)
+Content-Type: multipart/alternative; boundary="===============5778012197124243248=="
MIME-Version: 1.0
From: emaiwallet.alice@gmail.com
To: suegamisora@gmail.com
Subject: [Reply Needed] Test Email 1
---===============4869138441289677085==
+--===============5778012197124243248==
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
@@ -95,9 +90,9 @@ Content-Transfer-Encoding: 7bit
Hello!
This is a test email with a basic HTML body.
- [zkemail-begin]Send 0.1 ETH to alice@gmail.com[zkemail-end]
+ Send 0.1 ETH to alice@gmail.com
Thank you!