From 6622f35ffa4572d16cbb2f9d67733e5d417d384b Mon Sep 17 00:00:00 2001 From: allen-cmyk Date: Tue, 28 May 2024 11:58:02 +0800 Subject: [PATCH 1/2] add c sdk doc --- content/zytron/precompiles/anemoi.md | 36 ++++++++++++-- content/zytron/precompiles/ed-on-bn254.md | 44 ++++++++++++++++- content/zytron/precompiles/matchmaking.md | 58 +++++++++++++++++++++- content/zytron/precompiles/shuffle.md | 59 ++++++++++++++++++++++- 4 files changed, 189 insertions(+), 8 deletions(-) diff --git a/content/zytron/precompiles/anemoi.md b/content/zytron/precompiles/anemoi.md index fc8c479..739d3c7 100644 --- a/content/zytron/precompiles/anemoi.md +++ b/content/zytron/precompiles/anemoi.md @@ -58,8 +58,38 @@ let data = ethabi::encode(&[ ## Javascript SDK -> TODO +```javascript -## C SDK +``` -> TODO +## C SDK +```c +#include "c-uzkge.h" + +int main(int argc, char *argv[]) +{ + char f1_array[] = {47, 141, 209, 241, 167, 88, 60, 66, 196, 225, 42, 68, 225, 16, 64, 76, 115, 202, 108, 148, 129, 63, 133, 131, 93, 164, 251, 123, 177, 48, 29, 74}; + struct Bytes f1; + f1.len = sizeof(f1_array); + f1.data = f1_array; + char f2_array[] = {30, 230, 120, 160, 71, 10, 117, 166, 234, 168, 254, 131, 112, 96, 73, 139, 168, 40, 163, 112, 59, 49, 29, 15, 119, 240, 16, 66, 74, 254, 176, 37}; + struct Bytes f2; + f2.len = sizeof(f2_array); + f2.data = f2_array; + char f3_array[] = {32, 66, 165, 135, 169, 12, 24, 123, 10, 8, 124, 3, 226, 156, 150, 139, 149, 11, 29, 178, 109, 92, 130, 214, 102, 144, 90, 104, 149, 121, 12, 10}; + struct Bytes f3; + f3.len = sizeof(f3_array); + f3.data = f3_array; + Bytes data[3] = {f1, f2, f3}; + + char ret_val[32] = {0}; + int res = __anemoi_hash(data, sizeof(data) / sizeof(data[0]), ret_val); + printf("hash:"); + for (int i = 0; i < sizeof(ret_val); i++) + { + printf("%u,", ret_val[i]); + } + printf("\n"); + return res; +} +、、、 \ No newline at end of file diff --git a/content/zytron/precompiles/ed-on-bn254.md b/content/zytron/precompiles/ed-on-bn254.md index 09104bb..ef39000 100644 --- a/content/zytron/precompiles/ed-on-bn254.md +++ b/content/zytron/precompiles/ed-on-bn254.md @@ -73,5 +73,45 @@ let data = ethabi::encode(&[Token::Uint(scalar), Token::Uint(p1_x), Token::Uint( > TODO ## C SDK - -> TODO +```c +#include "c-uzkge.h" + +int point_add() +{ + char x1[] = {13, 82, 195, 170, 87, 58, 243, 152, 69, 102, 7, 53, 222, 13, 61, 158, 251, 72, 26, 17, 44, 240, 6, 35, 171, 34, 84, 97, 34, 212, 225, 106}; + char y1[] = {14, 126, 32, 179, 203, 48, 120, 91, 100, 205, 105, 114, 226, 221, 249, 25, 219, 100, 208, 61, 108, 240, 20, 86, 36, 60, 94, 242, 251, 118, 106, 101}; + char x2[] = {36, 44, 186, 218, 58, 232, 214, 233, 0, 86, 231, 62, 73, 65, 238, 204, 238, 114, 203, 153, 148, 90, 25, 79, 117, 66, 5, 179, 103, 139, 215, 105}; + char y2[] = {45, 118, 144, 222, 234, 167, 124, 157, 137, 176, 206, 179, 194, 95, 123, 176, 156, 68, 244, 11, 75, 140, 245, 214, 252, 181, 18, 199, 190, 143, 203, 169}; + char ret_val[32] = {0}; + int res = __point_add(x1, x2, y1, y2, ret_val); + printf("hash:"); + for (int i = 0; i < sizeof(ret_val); i++) + { + printf("%u,", ret_val[i]); + } + printf("\n"); + return res; +} + +int scalar_mul() +{ + char s[] = {0, 141, 122, 66, 164, 221, 225, 216, 248, 188, 172, 221, 202, 233, 188, 120, 177, 72, 14, 181, 71, 212, 164, 144, 217, 207, 165, 194, 104, 160, 118, 199}; + char x[] = {23, 56, 253, 48, 22, 84, 216, 145, 227, 34, 53, 208, 58, 100, 183, 235, 224, 195, 243, 125, 246, 125, 176, 183, 152, 242, 102, 71, 131, 177, 186, 201}; + char y[] = {34, 166, 137, 161, 192, 174, 191, 112, 206, 238, 118, 254, 120, 145, 114, 144, 2, 224, 114, 206, 183, 186, 148, 163, 43, 31, 206, 121, 248, 192, 9, 217}; + char ret_val[32] = {0}; + int res = __scalar_mul(s, x, y, ret_val); + printf("hash:"); + for (int i = 0; i < sizeof(ret_val); i++) + { + printf("%u,", ret_val[i]); + } + printf("\n"); + return res; +} + +int main(int argc, char *argv[]) +{ + printf("point_add:%d\n", point_add()); + printf("scalar_mul:%d\n", scalar_mul()); +} +``` diff --git a/content/zytron/precompiles/matchmaking.md b/content/zytron/precompiles/matchmaking.md index ecf7987..a2d88b4 100644 --- a/content/zytron/precompiles/matchmaking.md +++ b/content/zytron/precompiles/matchmaking.md @@ -89,5 +89,59 @@ let data = ethabi::encode(&[ > TODO ## C SDK - -> TODO +```c +#include "c-uzkge.h" + +int main(int argc, char *argv[]) +{ + char verifier_params_array[] = {40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 237, 246, 146, 217, 92, 189, 222, 70, 221, 218, 94, 247, 212, 34, 67, 103, 121, 68, 92, 94, 102, 0, 106, 66, 118, 30, 31, 18, 239, 222, 0, 24, 194, 18, 243, 174, 183, 133, 228, 151, 18, 231, 169, 53, 51, 73, 170, 241, 37, 93, 251, 49, 183, 191, 96, 114, 58, 72, 13, 146, 147, 147, 142, 25, 176, 131, 136, 147, 236, 31, 35, 126, 139, 7, 50, 59, 7, 68, 89, 159, 78, 151, 181, 152, 179, 181, 137, 188, 194, 188, 55, 184, 213, 196, 24, 1, 193, 131, 147, 192, 250, 48, 254, 78, 139, 3, 142, 53, 122, 216, 81, 234, 232, 222, 145, 7, 88, 78, 255, 231, 199, 241, 246, 81, 178, 1, 14, 38, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 23, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 2, 96, 238, 116, 11, 101, 25, 9, 243, 203, 116, 176, 159, 89, 80, 68, 81, 206, 8, 205, 53, 148, 149, 54, 221, 84, 130, 23, 25, 129, 143, 7, 32, 0, 0, 0, 0, 0, 0, 0, 29, 40, 67, 74, 185, 198, 3, 221, 237, 44, 227, 15, 219, 73, 40, 239, 248, 39, 189, 205, 37, 210, 36, 18, 68, 176, 199, 125, 43, 3, 137, 17, 32, 0, 0, 0, 0, 0, 0, 0, 8, 179, 206, 7, 194, 5, 6, 110, 83, 67, 232, 133, 25, 209, 91, 164, 19, 218, 173, 17, 238, 75, 172, 4, 124, 237, 90, 94, 29, 27, 132, 9, 32, 0, 0, 0, 0, 0, 0, 0, 65, 14, 49, 81, 214, 245, 54, 113, 12, 177, 152, 242, 166, 110, 84, 225, 168, 3, 109, 79, 84, 105, 162, 4, 27, 112, 68, 165, 77, 43, 204, 45, 32, 0, 0, 0, 0, 0, 0, 0, 182, 79, 254, 72, 163, 70, 242, 131, 83, 196, 124, 255, 210, 115, 211, 207, 65, 82, 113, 95, 187, 244, 118, 203, 87, 239, 37, 187, 1, 211, 8, 156, 32, 0, 0, 0, 0, 0, 0, 0, 157, 52, 204, 84, 17, 41, 192, 106, 75, 90, 164, 125, 114, 227, 250, 171, 75, 221, 58, 40, 150, 199, 135, 171, 98, 147, 103, 214, 114, 28, 57, 39, 32, 0, 0, 0, 0, 0, 0, 0, 92, 248, 187, 129, 245, 215, 22, 133, 164, 119, 101, 105, 43, 168, 201, 250, 211, 59, 97, 89, 121, 148, 73, 190, 184, 28, 17, 206, 218, 133, 211, 173, 32, 0, 0, 0, 0, 0, 0, 0, 243, 111, 69, 89, 241, 155, 231, 67, 254, 182, 39, 93, 90, 68, 158, 84, 216, 80, 59, 100, 111, 137, 136, 29, 34, 240, 181, 94, 28, 60, 40, 1, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 231, 177, 8, 184, 108, 189, 20, 67, 229, 83, 233, 240, 85, 114, 84, 98, 121, 149, 252, 251, 142, 55, 198, 234, 150, 131, 244, 39, 21, 3, 105, 166, 32, 0, 0, 0, 0, 0, 0, 0, 165, 84, 19, 99, 211, 122, 89, 26, 31, 13, 131, 58, 207, 214, 43, 31, 211, 151, 134, 74, 30, 145, 163, 133, 23, 140, 146, 91, 68, 188, 139, 39, 32, 0, 0, 0, 0, 0, 0, 0, 216, 141, 43, 114, 94, 107, 161, 7, 239, 206, 188, 128, 222, 88, 54, 221, 53, 56, 218, 42, 9, 248, 99, 237, 175, 45, 47, 199, 158, 19, 64, 172, 32, 0, 0, 0, 0, 0, 0, 0, 113, 91, 95, 199, 151, 91, 152, 33, 141, 242, 170, 143, 223, 237, 217, 164, 51, 36, 97, 189, 241, 216, 168, 144, 197, 225, 68, 165, 53, 28, 117, 28, 32, 0, 0, 0, 0, 0, 0, 0, 122, 74, 77, 21, 122, 113, 218, 101, 196, 133, 51, 27, 73, 135, 252, 254, 86, 70, 96, 226, 106, 181, 98, 221, 14, 139, 158, 133, 91, 188, 73, 163, 32, 0, 0, 0, 0, 0, 0, 0, 218, 113, 119, 90, 246, 23, 68, 61, 171, 232, 13, 183, 96, 172, 141, 58, 181, 90, 150, 206, 4, 207, 111, 122, 50, 31, 50, 19, 139, 4, 22, 146, 4, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 65, 132, 153, 252, 152, 126, 10, 12, 64, 142, 104, 28, 221, 45, 7, 17, 97, 181, 27, 133, 10, 41, 193, 161, 128, 231, 131, 117, 149, 155, 216, 164, 32, 0, 0, 0, 0, 0, 0, 0, 227, 71, 237, 199, 223, 198, 223, 24, 107, 6, 76, 34, 104, 87, 78, 110, 241, 85, 97, 35, 135, 249, 244, 13, 236, 72, 50, 254, 185, 179, 131, 151, 32, 0, 0, 0, 0, 0, 0, 0, 200, 226, 34, 76, 98, 208, 226, 197, 45, 36, 205, 59, 205, 251, 111, 146, 77, 4, 203, 234, 188, 220, 152, 32, 253, 50, 138, 3, 72, 65, 71, 153, 32, 0, 0, 0, 0, 0, 0, 0, 137, 143, 230, 63, 20, 120, 2, 238, 107, 217, 83, 213, 143, 139, 1, 176, 59, 146, 106, 249, 86, 71, 186, 121, 12, 55, 182, 199, 170, 134, 64, 144, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 103, 102, 102, 198, 212, 251, 243, 231, 6, 45, 74, 202, 233, 92, 174, 169, 139, 86, 205, 51, 124, 181, 185, 73, 170, 217, 19, 90, 148, 82, 91, 19, 168, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 29, 48, 177, 123, 251, 164, 93, 131, 133, 63, 129, 148, 108, 202, 115, 76, 64, 16, 225, 68, 42, 225, 196, 66, 60, 88, 167, 241, 209, 141, 47, 10, 12, 121, 149, 104, 90, 144, 102, 214, 130, 92, 109, 178, 29, 11, 149, 139, 150, 156, 226, 3, 124, 8, 10, 123, 24, 12, 169, 135, 165, 66, 32, 96, 73, 142, 117, 155, 158, 82, 191, 51, 167, 220, 96, 161, 95, 59, 215, 50, 243, 111, 121, 52, 7, 239, 240, 60, 227, 230, 19, 78, 148, 180, 45, 70, 47, 210, 83, 0, 93, 4, 139, 69, 66, 1, 4, 17, 227, 20, 166, 90, 208, 215, 198, 141, 19, 37, 153, 45, 5, 1, 175, 74, 58, 158, 29, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 242, 19, 0, 0, 0, 0, 0, 0, 243, 19, 0, 0, 0, 0, 0, 0, 244, 19, 0, 0, 0, 0, 0, 0, 245, 19, 0, 0, 0, 0, 0, 0, 246, 19, 0, 0, 0, 0, 0, 0, 247, 19, 0, 0, 0, 0, 0, 0, 248, 19, 0, 0, 0, 0, 0, 0, 249, 19, 0, 0, 0, 0, 0, 0, 250, 19, 0, 0, 0, 0, 0, 0, 251, 19, 0, 0, 0, 0, 0, 0, 252, 19, 0, 0, 0, 0, 0, 0, 253, 19, 0, 0, 0, 0, 0, 0, 254, 19, 0, 0, 0, 0, 0, 0, 255, 19, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 3, 20, 0, 0, 0, 0, 0, 0, 4, 20, 0, 0, 0, 0, 0, 0, 5, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 7, 20, 0, 0, 0, 0, 0, 0, 8, 20, 0, 0, 0, 0, 0, 0, 9, 20, 0, 0, 0, 0, 0, 0, 10, 20, 0, 0, 0, 0, 0, 0, 11, 20, 0, 0, 0, 0, 0, 0, 12, 20, 0, 0, 0, 0, 0, 0, 13, 20, 0, 0, 0, 0, 0, 0, 14, 20, 0, 0, 0, 0, 0, 0, 15, 20, 0, 0, 0, 0, 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, 17, 20, 0, 0, 0, 0, 0, 0, 18, 20, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 21, 20, 0, 0, 0, 0, 0, 0, 22, 20, 0, 0, 0, 0, 0, 0, 23, 20, 0, 0, 0, 0, 0, 0, 24, 20, 0, 0, 0, 0, 0, 0, 25, 20, 0, 0, 0, 0, 0, 0, 26, 20, 0, 0, 0, 0, 0, 0, 27, 20, 0, 0, 0, 0, 0, 0, 28, 20, 0, 0, 0, 0, 0, 0, 29, 20, 0, 0, 0, 0, 0, 0, 30, 20, 0, 0, 0, 0, 0, 0, 31, 20, 0, 0, 0, 0, 0, 0, 32, 20, 0, 0, 0, 0, 0, 0, 33, 20, 0, 0, 0, 0, 0, 0, 34, 20, 0, 0, 0, 0, 0, 0, 35, 20, 0, 0, 0, 0, 0, 0, 36, 20, 0, 0, 0, 0, 0, 0, 37, 20, 0, 0, 0, 0, 0, 0, 38, 20, 0, 0, 0, 0, 0, 0, 39, 20, 0, 0, 0, 0, 0, 0, 40, 20, 0, 0, 0, 0, 0, 0, 41, 20, 0, 0, 0, 0, 0, 0, 42, 20, 0, 0, 0, 0, 0, 0, 43, 20, 0, 0, 0, 0, 0, 0, 44, 20, 0, 0, 0, 0, 0, 0, 45, 20, 0, 0, 0, 0, 0, 0, 46, 20, 0, 0, 0, 0, 0, 0, 47, 20, 0, 0, 0, 0, 0, 0, 48, 20, 0, 0, 0, 0, 0, 0, 49, 20, 0, 0, 0, 0, 0, 0, 50, 20, 0, 0, 0, 0, 0, 0, 51, 20, 0, 0, 0, 0, 0, 0, 52, 20, 0, 0, 0, 0, 0, 0, 53, 20, 0, 0, 0, 0, 0, 0, 54, 20, 0, 0, 0, 0, 0, 0, 55, 20, 0, 0, 0, 0, 0, 0, 56, 20, 0, 0, 0, 0, 0, 0, 57, 20, 0, 0, 0, 0, 0, 0, 58, 20, 0, 0, 0, 0, 0, 0, 59, 20, 0, 0, 0, 0, 0, 0, 60, 20, 0, 0, 0, 0, 0, 0, 61, 20, 0, 0, 0, 0, 0, 0, 62, 20, 0, 0, 0, 0, 0, 0, 63, 20, 0, 0, 0, 0, 0, 0, 64, 20, 0, 0, 0, 0, 0, 0, 65, 20, 0, 0, 0, 0, 0, 0, 66, 20, 0, 0, 0, 0, 0, 0, 67, 20, 0, 0, 0, 0, 0, 0, 68, 20, 0, 0, 0, 0, 0, 0, 69, 20, 0, 0, 0, 0, 0, 0, 70, 20, 0, 0, 0, 0, 0, 0, 71, 20, 0, 0, 0, 0, 0, 0, 72, 20, 0, 0, 0, 0, 0, 0, 73, 20, 0, 0, 0, 0, 0, 0, 74, 20, 0, 0, 0, 0, 0, 0, 75, 20, 0, 0, 0, 0, 0, 0, 76, 20, 0, 0, 0, 0, 0, 0, 77, 20, 0, 0, 0, 0, 0, 0, 78, 20, 0, 0, 0, 0, 0, 0, 79, 20, 0, 0, 0, 0, 0, 0, 80, 20, 0, 0, 0, 0, 0, 0, 81, 20, 0, 0, 0, 0, 0, 0, 82, 20, 0, 0, 0, 0, 0, 0, 83, 20, 0, 0, 0, 0, 0, 0, 84, 20, 0, 0, 0, 0, 0, 0, 85, 20, 0, 0, 0, 0, 0, 0, 86, 20, 0, 0, 0, 0, 0, 0, 87, 20, 0, 0, 0, 0, 0, 0, 200, 12, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 89, 245, 213, 208, 8, 16, 172, 224, 247, 230, 103, 27, 104, 215, 133, 205, 0, 74, 111, 238, 153, 234, 96, 237, 255, 80, 96, 165, 27, 67, 236, 2, 186, 139, 237, 33, 171, 96, 196, 251, 211, 76, 167, 42, 17, 194, 104, 68, 247, 203, 66, 125, 70, 26, 133, 101, 186, 45, 9, 1, 17, 54, 105, 45, 6, 199, 254, 126, 143, 93, 180, 215, 11, 33, 155, 32, 138, 69, 14, 146, 15, 237, 89, 83, 166, 232, 126, 145, 250, 67, 6, 239, 238, 162, 146, 28, 127, 219, 198, 101, 194, 233, 190, 53, 104, 212, 108, 56, 125, 98, 5, 175, 222, 109, 1, 151, 140, 8, 87, 28, 72, 109, 144, 46, 75, 223, 117, 38, 77, 11, 24, 231, 135, 68, 250, 248, 97, 166, 214, 125, 171, 121, 94, 1, 148, 59, 155, 8, 109, 101, 218, 240, 154, 217, 237, 118, 92, 52, 97, 0, 155, 255, 154, 164, 21, 132, 249, 165, 245, 127, 241, 139, 220, 162, 199, 214, 208, 82, 2, 154, 115, 189, 58, 46, 71, 158, 238, 10, 204, 29, 98, 42, 106, 106, 186, 221, 231, 99, 122, 179, 37, 117, 127, 55, 222, 202, 54, 7, 242, 147, 210, 59, 171, 30, 65, 240, 202, 15, 80, 36, 169, 247, 168, 5, 12, 59, 51, 117, 164, 170, 94, 94, 198, 29, 127, 83, 245, 226, 203, 108, 218, 145, 100, 135, 224, 202, 233, 191, 12, 130, 137, 239, 18, 220, 219, 1, 9, 83, 72, 111, 160, 203, 177, 87, 132, 1, 50, 71, 74, 177, 113, 162, 224, 82, 184, 216, 48, 56, 89, 240, 90, 14, 90, 87, 68, 71, 222, 43, 212, 8, 22, 219, 98, 244, 189, 51, 122, 55, 238, 80, 229, 222, 166, 254, 230, 223, 236, 113, 221, 93, 100, 229, 134, 252, 166, 106, 12, 171, 36, 34, 206, 41, 76, 145, 168, 39, 30, 163, 81, 83, 226, 78, 182, 126, 145, 170, 233, 152, 104, 37, 220, 65, 1, 67, 158, 209, 39, 185, 216, 235, 89, 14, 64, 230, 210, 189, 57, 225, 91, 190, 133, 35, 125, 195, 184, 243, 217, 167, 246, 47, 72, 203, 31, 0, 182, 125, 116, 123, 168, 129, 244, 139, 0, 35, 159, 235, 6, 230, 174, 216, 63, 82, 236, 62, 38, 182, 229, 40, 118, 37, 243, 96, 206, 38, 6, 43, 74, 11, 45, 50, 40, 148, 1, 102, 192, 18, 98, 182, 238, 50, 26, 159, 83, 66, 247, 80, 65, 57, 96, 127, 9, 0, 54, 56, 56, 36, 167, 226, 103, 181, 247, 140, 176, 55, 96, 52, 242, 9, 22, 242, 105, 150, 163, 185, 94, 36, 146, 254, 204, 120, 81, 230, 158, 80, 185, 146, 242, 1, 149, 29, 149, 74, 157, 6, 149, 143, 41, 65, 30, 46, 112, 97, 68, 109, 4, 37, 188, 255, 116, 56, 245, 140, 4, 21, 186, 65, 17, 65, 137, 251, 242, 202, 246, 132, 54, 160, 102, 197, 241, 109, 102, 32, 110, 240, 141, 161, 111, 228, 29, 127, 179, 186, 83, 244, 85, 170, 24, 29, 96, 237, 13, 114, 147, 99, 120, 200, 99, 105, 73, 68, 233, 250, 108, 3, 7, 138, 98, 102, 253, 62, 215, 102, 54, 107, 223, 140, 131, 216, 187, 197, 187, 221, 152, 230, 142, 200, 126, 85, 85, 43, 247, 66, 109, 50, 108, 25, 232, 249, 22, 107, 158, 34, 122, 237, 247, 197, 202, 49, 118, 107, 187, 37, 129, 243, 15, 140, 11, 167, 137, 54, 44, 108, 205, 246, 21, 11, 232, 24, 135, 224, 106, 68, 128, 188, 213, 5, 129, 229, 178, 95, 156, 117, 122, 10, 187, 188, 214, 237, 168, 124, 43, 158, 30, 137, 75, 12, 11, 155, 107, 17, 240, 210, 203, 75, 178, 27, 207, 228, 219, 204, 146, 164, 81, 213, 150, 120, 235, 120, 131, 47, 64, 89, 236, 187, 210, 39, 236, 192, 143, 166, 26, 44, 147, 122, 24, 222, 56, 34, 176, 32, 179, 11, 218, 131, 9, 76, 132, 150, 164, 53, 242, 65, 145, 230, 89, 202, 84, 190, 221, 86, 207, 169, 147, 41, 133, 195, 154, 59, 92, 175, 203, 15, 141, 62, 186, 207, 100, 202, 146, 82, 216, 234, 207, 8, 191, 163, 146, 22, 203, 161, 14, 217, 201, 35, 64, 41, 120, 217, 120, 43, 208, 36, 11, 230, 220, 204, 19, 46, 234, 142, 85, 117, 134, 211, 113, 212, 38, 94, 233, 56, 13, 69, 207, 42, 254, 163, 141, 30, 249, 197, 199, 125, 158, 158, 168, 86, 46, 224, 165, 223, 27, 39, 78, 169, 4, 41, 161, 190, 95, 35, 5, 64, 68, 208, 92, 95, 168, 149, 171, 18, 211, 59, 103, 64, 179, 191, 2, 196, 110, 247, 46, 89, 124, 224, 249, 82, 81, 114, 172, 106, 101, 33, 69, 89, 129, 22, 25, 95, 111, 49, 195, 42, 134, 63, 183, 182, 119, 20, 212, 217, 97, 1, 122, 69, 251, 136, 57, 137, 89, 168, 173, 193, 50, 4, 231, 242, 99, 218, 150, 48, 115, 187, 2, 8, 15, 79, 132, 246, 220, 25, 153, 3, 184, 40, 11, 162, 21, 24, 109, 53, 89, 86, 218, 252, 193, 147, 33, 144, 194, 9, 102, 244, 188, 38, 96, 48, 19, 96, 83, 228, 89, 1, 249, 149, 55, 139, 160, 105, 74, 132, 46, 174, 19, 184, 202, 103, 18, 0, 216, 96, 251, 78, 58, 24, 39, 252, 7, 30, 9, 60, 14, 101, 135, 249, 214, 5, 196, 94, 152, 91, 120, 110, 26, 58, 53, 210, 133, 102, 0, 117, 189, 36, 93, 94, 111, 180, 222, 229, 184, 14, 250, 239, 21, 21, 193, 142, 39, 249, 34, 55, 22, 224, 68, 107, 244, 99, 162, 42, 110, 46, 188, 8, 175, 197, 130, 130, 14, 5, 26, 10, 3, 38, 242, 249, 37, 90, 132, 224, 48, 228, 97, 246, 40, 128, 73, 237, 92, 210, 222, 19, 71, 236, 102, 100, 155, 2, 183, 190, 134, 226, 109, 196, 253, 6, 199, 133, 72, 114, 50, 155, 159, 182, 134, 128, 85, 162, 216, 109, 102, 59, 60, 101, 214, 72, 51, 4, 116, 46, 45, 56, 121, 163, 37, 67, 0, 17, 7, 208, 211, 31, 99, 65, 40, 232, 242, 23, 187, 158, 237, 17, 100, 110, 194, 147, 220, 3, 229, 230, 162, 228, 154, 54, 11, 202, 64, 224, 93, 32, 186, 129, 170, 154, 87, 247, 208, 171, 91, 98, 24, 178, 140, 204, 85, 169, 152, 98, 6, 205, 221, 35, 57, 18, 120, 237, 194, 33, 189, 77, 159, 8, 143, 237, 144, 187, 57, 71, 237, 238, 73, 232, 191, 174, 98, 253, 209, 133, 62, 213, 74, 231, 23, 168, 171, 233, 144, 73, 111, 181, 116, 170, 28, 18, 191, 86, 25, 195, 16, 169, 219, 6, 13, 219, 248, 222, 45, 82, 222, 147, 74, 239, 194, 84, 104, 239, 139, 242, 140, 214, 153, 89, 251, 82, 106, 29, 148, 133, 190, 34, 252, 92, 30, 37, 226, 4, 152, 190, 142, 226, 81, 95, 240, 72, 148, 0, 14, 162, 190, 158, 156, 20, 237, 171, 208, 109, 83, 39, 23, 192, 182, 48, 217, 20, 131, 6, 236, 134, 231, 151, 185, 196, 101, 40, 12, 192, 83, 41, 134, 183, 248, 110, 20, 103, 181, 34, 7, 114, 146, 12, 210, 37, 91, 176, 89, 21, 64, 114, 179, 117, 8, 148, 103, 190, 15, 209, 192, 69, 178, 126, 130, 119, 245, 247, 241, 136, 65, 54, 107, 36, 222, 45, 39, 209, 9, 220, 234, 68, 130, 105, 100, 139, 185, 74, 179, 43, 223, 225, 229, 180, 103, 8, 242, 126, 117, 185, 140, 185, 140, 214, 243, 144, 49, 7, 175, 172, 168, 39, 53, 175, 64, 79, 169, 129, 203, 216, 66, 72, 37, 141, 8, 252, 0, 241, 21, 133, 183, 40, 241, 75, 102, 85, 214, 35, 3, 44, 225, 92, 219, 116, 100, 182, 17, 238, 127, 202, 56, 162, 86, 221, 16, 146, 155, 102, 22, 40, 169, 96, 244, 21, 87, 200, 212, 38, 16, 33, 157, 26, 250, 182, 176, 65, 179, 204, 57, 59, 41, 231, 233, 243, 108, 16, 74, 245, 79, 156, 191, 162, 51, 251, 244, 198, 19, 66, 215, 17, 32, 222, 6, 25, 60, 128, 5, 6, 158, 218, 159, 190, 169, 174, 235, 199, 63, 57, 150, 86, 138, 94, 205, 6, 84, 235, 150, 86, 56, 180, 224, 198, 206, 165, 21, 2, 5, 83, 249, 23, 137, 131, 238, 248, 64, 209, 167, 237, 208, 152, 64, 87, 120, 29, 117, 60, 129, 77, 255, 168, 116, 239, 34, 41, 85, 71, 91, 16, 164, 76, 8, 63, 130, 60, 180, 227, 199, 202, 167, 19, 116, 94, 148, 41, 193, 52, 72, 94, 98, 45, 26, 230, 93, 149, 136, 237, 71, 112, 239, 11, 152, 209, 35, 87, 26, 35, 63, 88, 108, 137, 73, 13, 81, 60, 238, 174, 114, 41, 151, 82, 152, 9, 45, 171, 120, 72, 22, 77, 207, 96, 190, 33, 249, 62, 226, 195, 111, 214, 84, 152, 136, 159, 195, 242, 252, 69, 76, 246, 234, 36, 219, 167, 171, 0, 98, 124, 83, 238, 112, 54, 216, 141, 190, 7, 222, 130, 173, 170, 139, 143, 38, 203, 45, 123, 75, 43, 27, 177, 118, 156, 14, 156, 107, 144, 150, 236, 45, 63, 249, 238, 213, 148, 96, 129, 219, 2, 242, 79, 203, 35, 56, 27, 103, 168, 177, 153, 160, 147, 209, 233, 174, 96, 244, 41, 175, 250, 178, 44, 15, 99, 205, 109, 71, 176, 222, 246, 19, 11, 204, 169, 167, 106, 46, 244, 241, 183, 19, 234, 150, 2, 68, 251, 41, 111, 92, 99, 164, 217, 247, 196, 206, 3, 45, 107, 62, 73, 252, 190, 28, 38, 242, 211, 110, 136, 13, 246, 133, 61, 130, 96, 162, 127, 104, 254, 76, 12, 175, 11, 16, 56, 115, 20, 70, 210, 159, 25, 4, 50, 248, 33, 52, 33, 252, 125, 148, 238, 76, 34, 114, 20, 82, 44, 87, 249, 163, 196, 192, 190, 95, 151, 77, 222, 17, 178, 63, 180, 170, 133, 187, 103, 162, 96, 223, 29, 54, 243, 251, 106, 190, 163, 62, 193, 155, 158, 114, 190, 145, 127, 108, 43, 57, 59, 0, 159, 139, 43, 174, 22, 8, 34, 60, 40, 99, 64, 118, 30, 217, 127, 230, 138, 94, 77, 250, 21, 135, 44, 46, 128, 119, 42, 43, 61, 38, 243, 77, 118, 7, 206, 120, 105, 178, 84, 170, 82, 114, 133, 101, 19, 35, 208, 54, 115, 254, 229, 124, 27, 244, 190, 168, 69, 31, 237, 208, 212, 131, 16, 6, 102, 97, 136, 92, 107, 52, 39, 118, 242, 39, 217, 53, 33, 195, 119, 85, 5, 252, 31, 104, 161, 129, 203, 86, 118, 237, 229, 138, 215, 63, 66, 100, 152, 44, 215, 92, 137, 152, 2, 255, 118, 254, 59, 32, 25, 245, 151, 28, 8, 72, 69, 163, 191, 193, 216, 195, 26, 74, 183, 132, 125, 185, 93, 136, 126, 45, 98, 105, 70, 21, 68, 146, 152, 52, 242, 60, 46, 191, 146, 91, 37, 223, 225, 89, 70, 211, 240, 75, 239, 204, 50, 238, 225, 205, 84, 82, 140, 82, 2, 169, 197, 123, 34, 85, 169, 251, 53, 234, 43, 234, 54, 198, 98, 72, 61, 73, 221, 229, 233, 190, 169, 212, 130, 69, 198, 2, 86, 251, 45, 60, 92, 14, 100, 179, 26, 214, 83, 33, 214, 89, 20, 133, 254, 156, 122, 222, 18, 130, 197, 255, 96, 192, 255, 24, 12, 32, 90, 18, 201, 248, 148, 248, 73, 6, 48, 2, 253, 16, 35, 173, 230, 168, 37, 152, 62, 36, 218, 208, 225, 143, 138, 150, 1, 65, 194, 96, 214, 63, 10, 126, 71, 246, 79, 96, 199, 48, 111, 40, 136, 60, 217, 196, 13, 128, 31, 228, 168, 6, 102, 162, 231, 101, 79, 143, 226, 146, 197, 221, 98, 107, 141, 37, 137, 87, 171, 117, 94, 51, 217, 32, 49, 51, 83, 36, 201, 194, 19, 254, 51, 208, 135, 80, 149, 165, 75, 23, 185, 84, 196, 84, 8, 19, 156, 206, 194, 63, 109, 175, 151, 98, 39, 61, 49, 186, 25, 53, 210, 149, 46, 245, 242, 54, 126, 26, 187, 236, 68, 45, 253, 115, 110, 74, 39, 181, 199, 104, 98, 66, 212, 159, 244, 209, 222, 164, 58, 80, 192, 41, 59, 143, 25, 30, 146, 207, 113, 65, 154, 254, 114, 23, 147, 118, 199, 143, 209, 126, 108, 64, 52, 4, 63, 114, 109, 230, 198, 150, 86, 50, 0, 221, 6, 132, 15, 197, 237, 202, 36, 220, 25, 186, 104, 254, 252, 241, 156, 205, 88, 99, 0, 146, 59, 148, 199, 213, 175, 176, 20, 132, 49, 115, 140, 200, 180, 6, 14, 95, 34, 72, 83, 41, 25, 205, 248, 83, 251, 255, 144, 212, 217, 237, 70, 82, 209, 249, 139, 242, 170, 97, 207, 199, 175, 174, 5, 194, 187, 96, 26, 144, 147, 82, 176, 219, 106, 172, 20, 114, 114, 236, 191, 67, 223, 136, 84, 89, 37, 187, 230, 36, 71, 159, 255, 78, 188, 32, 34, 89, 91, 199, 11, 232, 50, 46, 15, 58, 112, 2, 176, 100, 150, 119, 138, 2, 208, 26, 247, 230, 72, 112, 229, 143, 204, 105, 201, 105, 226, 175, 109, 125, 23, 13, 39, 72, 222, 160, 187, 156, 22, 174, 204, 93, 251, 121, 214, 240, 158, 148, 137, 29, 232, 9, 173, 130, 78, 229, 140, 85, 3, 65, 183, 86, 58, 148, 8, 230, 155, 59, 144, 86, 203, 76, 119, 202, 33, 113, 76, 198, 17, 230, 140, 135, 38, 177, 97, 208, 56, 4, 119, 215, 84, 183, 116, 172, 219, 197, 35, 225, 89, 76, 95, 18, 85, 180, 226, 191, 239, 0, 14, 162, 115, 104, 230, 137, 247, 205, 140, 114, 213, 121, 221, 162, 149, 118, 25, 131, 69, 88, 4, 113, 110, 61, 9, 54, 102, 59, 210, 108, 211, 115, 246, 39, 65, 215, 175, 228, 173, 187, 235, 169, 135, 174, 232, 116, 211, 142, 188, 76, 77, 150, 30, 86, 116, 173, 175, 149, 218, 80, 169, 107, 110, 142, 123, 179, 100, 135, 219, 55, 114, 89, 223, 33, 20, 39, 139, 81, 102, 231, 70, 118, 28, 158, 37, 148, 209, 22, 57, 237, 99, 120, 221, 16, 184, 183, 146, 127, 225, 246, 181, 4, 121, 150, 207, 20, 75, 107, 102, 213, 213, 177, 13, 75, 40, 24, 8, 58, 63, 172, 112, 129, 113, 75, 79, 65, 121, 243, 16, 222, 254, 44, 235, 125, 21, 104, 114, 166, 220, 128, 21, 134, 32, 13, 74, 158, 40, 171, 24, 215, 249, 58, 76, 53, 229, 197, 82, 129, 37, 72, 208, 97, 6, 173, 94, 234, 117, 216, 131, 169, 123, 153, 69, 105, 162, 58, 239, 249, 49, 227, 37, 84, 56, 220, 65, 45, 230, 60, 117, 14, 121, 220, 236, 170, 6, 210, 9, 242, 5, 29, 99, 86, 75, 116, 21, 28, 133, 171, 88, 194, 197, 162, 38, 47, 128, 243, 15, 148, 251, 226, 76, 172, 64, 139, 247, 77, 97, 71, 213, 171, 251, 93, 8, 84, 41, 199, 151, 249, 14, 155, 73, 104, 209, 33, 27, 80, 189, 93, 75, 154, 241, 126, 11, 207, 234, 205, 78, 93, 241, 57, 162, 160, 139, 133, 211, 194, 51, 71, 144, 40, 232, 98, 88, 189, 168, 39, 36, 113, 155, 181, 186, 197, 86, 21, 90, 108, 185, 172, 37, 53, 213, 113, 235, 217, 55, 75, 190, 206, 97, 211, 196, 19, 99, 64, 26, 72, 19, 23, 4, 29, 182, 252, 251, 99, 151, 42, 110, 21, 78, 115, 203, 82, 140, 240, 210, 84, 20, 197, 86, 25, 97, 209, 125, 224, 214, 247, 69, 233, 47, 89, 44, 221, 187, 62, 109, 104, 11, 234, 18, 32, 209, 5, 225, 113, 69, 216, 66, 94, 68, 128, 62, 91, 131, 156, 61, 237, 235, 37, 66, 198, 253, 36, 10, 166, 219, 226, 72, 107, 57, 142, 213, 155, 56, 23, 71, 211, 201, 43, 26, 108, 221, 243, 130, 0, 198, 151, 252, 24, 38, 84, 83, 171, 117, 185, 8, 213, 168, 15, 142, 233, 47, 193, 119, 36, 99, 55, 143, 35, 153, 183, 172, 44, 125, 201, 150, 197, 153, 170, 135, 77, 9, 239, 245, 232, 112, 48, 3, 87, 142, 86, 139, 9, 175, 71, 217, 53, 78, 33, 253, 51, 57, 172, 66, 121, 166, 38, 81, 137, 30, 142, 231, 102, 112, 141, 21, 13, 8, 192, 20, 110, 223, 77, 44, 84, 235, 54, 26, 111, 8, 50, 145, 31, 30, 109, 7, 8, 77, 46, 110, 141, 43, 14, 113, 133, 111, 136, 150, 245, 7, 203, 10, 24, 86, 74, 35, 53, 173, 15, 229, 81, 93, 11, 144, 36, 56, 70, 88, 17, 74, 222, 251, 213, 196, 150, 34, 182, 115, 92, 168, 162, 217, 21, 39, 93, 167, 131, 189, 54, 220, 217, 28, 232, 139, 3, 170, 220, 205, 113, 121, 117, 2, 50, 130, 85, 63, 131, 129, 120, 133, 2, 80, 35, 224, 48, 28, 182, 79, 236, 193, 187, 121, 66, 111, 121, 245, 253, 10, 114, 40, 154, 208, 239, 160, 27, 125, 126, 3, 236, 141, 175, 61, 17, 120, 177, 115, 17, 3, 207, 111, 88, 99, 184, 91, 39, 205, 176, 201, 53, 189, 121, 123, 110, 177, 165, 132, 156, 200, 16, 11, 221, 90, 95, 125, 234, 35, 199, 66, 128, 17, 112, 143, 141, 255, 83, 228, 99, 229, 136, 182, 146, 52, 74, 239, 86, 95, 212, 18, 230, 11, 81, 200, 215, 69, 17, 224, 106, 172, 77, 195, 179, 38, 127, 160, 248, 80, 67, 48, 140, 138, 48, 185, 62, 213, 46, 104, 159, 87, 98, 214, 166, 3, 212, 170, 246, 54, 98, 16, 126, 227, 226, 11, 211, 6, 25, 62, 142, 19, 162, 66, 112, 202, 249, 123, 188, 168, 93, 49, 26, 110, 238, 56, 170, 211, 114, 231, 175, 30, 169, 148, 56, 50, 43, 222, 52, 47, 108, 247, 4, 138, 210, 247, 85, 226, 152, 187, 236, 157, 106, 36, 8, 0, 253, 96, 223, 201, 161, 168, 156, 230, 153, 220, 170, 193, 215, 29, 155, 44, 76, 73, 204, 165, 197, 50, 185, 150, 138, 227, 226, 105, 180, 125, 33, 56, 99, 160, 248, 180, 168, 7, 94, 193, 65, 128, 248, 125, 108, 20, 65, 19, 197, 51, 37, 106, 217, 207, 79, 26, 85, 186, 157, 228, 17, 27, 222, 93, 92, 216, 141, 196, 66, 42, 214, 245, 32, 254, 112, 221, 92, 122, 182, 27, 110, 160, 10, 58, 50, 147, 54, 111, 209, 76, 60, 252, 110, 129, 142, 249, 222, 59, 172, 152, 95, 107, 120, 37, 206, 57, 142, 239, 210, 1, 203, 43, 193, 62, 71, 81, 232, 134, 208, 194, 213, 199, 181, 52, 29, 39, 60, 119, 53, 121, 175, 182, 162, 210, 167, 11, 255, 140, 0, 171, 178, 114, 159, 40, 22, 17, 142, 147, 66, 134, 50, 137, 193, 201, 110, 123, 229, 86, 229, 88, 62, 250, 121, 230, 253, 107, 109, 61, 177, 158, 45, 255, 238, 179, 99, 21}; + struct Bytes verifier_params; + verifier_params.len = sizeof(verifier_params_array); + verifier_params.data = verifier_params_array; + + char input_array[][32] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50}}; + Bytes inputs[50]; + memset(inputs, 0, sizeof(inputs)); + int inputs_len = sizeof(input_array) / sizeof(input_array[0]); + + for (int i = 0; i < inputs_len; i++) + { + inputs[i].len = sizeof(input_array[i]); + inputs[i].data = input_array[i]; + } + + char output_array[][32] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50}}; + Bytes outputs[50]; + memset(outputs, 0, sizeof(outputs)); + int outputs_len = sizeof(output_array) / sizeof(output_array[0]); + for (int i = 0; i < outputs_len; i++) + { + outputs[i].len = sizeof(output_array[i]); + outputs[i].data = output_array[i]; + } + + char commitment_array[] = {11, 65, 101, 76, 109, 207, 40, 135, 8, 82, 232, 191, 83, 43, 183, 236, 82, 248, 104, 204, 16, 102, 148, 204, 64, 67, 128, 43, 66, 154, 249, 228}; + struct Bytes commitment; + commitment.len = sizeof(commitment_array); + commitment.data = commitment_array; + + char random_number_array[] = {30, 230, 120, 160, 71, 10, 117, 166, 234, 168, 254, 131, 112, 96, 73, 139, 168, 40, 163, 112, 59, 49, 29, 15, 119, 240, 16, 66, 74, 254, 176, 37}; + struct Bytes random_number; + random_number.len = sizeof(random_number_array); + random_number.data = random_number_array; + + char proof_array[] = {5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 140, 230, 144, 118, 136, 244, 239, 150, 7, 233, 14, 244, 178, 90, 49, 7, 191, 82, 90, 101, 242, 53, 73, 143, 228, 160, 87, 104, 199, 164, 141, 152, 32, 0, 0, 0, 0, 0, 0, 0, 18, 122, 36, 142, 152, 119, 85, 254, 230, 205, 44, 151, 195, 175, 29, 136, 196, 129, 121, 217, 240, 251, 246, 25, 81, 83, 117, 115, 29, 215, 74, 41, 32, 0, 0, 0, 0, 0, 0, 0, 246, 161, 169, 134, 90, 22, 146, 219, 140, 31, 10, 48, 47, 75, 112, 88, 232, 47, 110, 127, 35, 21, 249, 247, 119, 223, 60, 178, 221, 242, 16, 40, 32, 0, 0, 0, 0, 0, 0, 0, 69, 22, 0, 74, 4, 116, 170, 99, 52, 23, 53, 216, 232, 171, 216, 65, 215, 23, 88, 140, 21, 212, 11, 114, 20, 42, 195, 233, 52, 134, 234, 46, 32, 0, 0, 0, 0, 0, 0, 0, 174, 51, 16, 190, 67, 220, 224, 201, 21, 76, 24, 139, 168, 241, 152, 53, 219, 64, 37, 84, 225, 66, 67, 30, 36, 78, 59, 165, 234, 47, 232, 156, 3, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 78, 3, 134, 114, 9, 134, 88, 131, 230, 241, 26, 102, 105, 96, 10, 21, 213, 192, 78, 209, 55, 228, 30, 54, 162, 40, 1, 52, 3, 114, 21, 25, 32, 0, 0, 0, 0, 0, 0, 0, 75, 113, 246, 185, 160, 130, 38, 126, 53, 137, 40, 134, 251, 21, 156, 78, 72, 184, 142, 93, 51, 102, 240, 0, 66, 250, 12, 25, 66, 249, 209, 44, 32, 0, 0, 0, 0, 0, 0, 0, 193, 253, 190, 67, 76, 155, 73, 100, 123, 212, 238, 182, 190, 172, 182, 179, 227, 254, 198, 56, 153, 75, 72, 47, 138, 159, 135, 21, 143, 196, 106, 161, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 227, 219, 108, 102, 127, 195, 197, 172, 252, 219, 245, 117, 131, 168, 234, 143, 163, 126, 77, 156, 26, 51, 172, 183, 87, 116, 84, 64, 125, 251, 66, 151, 32, 0, 0, 0, 0, 0, 0, 0, 25, 251, 194, 213, 245, 245, 215, 224, 135, 109, 180, 153, 183, 187, 207, 196, 22, 58, 140, 4, 201, 182, 144, 138, 29, 219, 91, 177, 78, 185, 156, 162, 32, 0, 0, 0, 0, 0, 0, 0, 38, 126, 199, 39, 13, 252, 113, 252, 108, 120, 235, 166, 245, 236, 114, 254, 87, 190, 126, 66, 206, 172, 31, 166, 14, 61, 190, 163, 52, 38, 61, 144, 32, 0, 0, 0, 0, 0, 0, 0, 103, 229, 219, 0, 237, 6, 211, 14, 88, 172, 139, 27, 156, 16, 238, 199, 221, 54, 80, 247, 193, 67, 181, 171, 250, 221, 134, 140, 10, 120, 224, 43, 32, 0, 0, 0, 0, 0, 0, 0, 167, 197, 166, 14, 135, 204, 73, 135, 239, 59, 125, 191, 0, 183, 62, 164, 67, 64, 175, 215, 140, 128, 47, 89, 106, 201, 229, 217, 5, 94, 13, 42, 32, 0, 0, 0, 0, 0, 0, 0, 75, 165, 136, 242, 230, 52, 93, 94, 19, 119, 40, 28, 107, 198, 148, 73, 10, 126, 131, 234, 227, 5, 118, 104, 8, 160, 154, 220, 48, 235, 129, 165, 32, 0, 0, 0, 0, 0, 0, 0, 146, 231, 10, 208, 205, 184, 237, 52, 79, 216, 153, 24, 237, 64, 100, 142, 14, 37, 79, 167, 7, 57, 145, 145, 28, 198, 63, 225, 153, 56, 45, 15, 32, 0, 0, 0, 0, 0, 0, 0, 206, 43, 179, 43, 177, 176, 105, 97, 179, 126, 152, 192, 41, 180, 82, 191, 87, 161, 221, 213, 149, 176, 222, 105, 31, 99, 180, 221, 44, 29, 138, 11, 168, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 140, 246, 191, 233, 122, 224, 119, 112, 155, 139, 135, 177, 121, 213, 199, 221, 99, 106, 75, 4, 117, 210, 180, 157, 11, 91, 178, 224, 30, 118, 22, 243, 58, 175, 225, 34, 112, 62, 250, 130, 67, 166, 130, 6, 164, 211, 8, 75, 220, 227, 46, 231, 138, 120, 240, 196, 254, 144, 97, 148, 169, 210, 41, 32, 127, 29, 104, 36, 90, 202, 43, 206, 154, 166, 111, 152, 198, 181, 130, 42, 67, 167, 60, 57, 116, 60, 255, 219, 130, 67, 58, 4, 231, 179, 37, 44, 166, 91, 143, 77, 64, 209, 155, 26, 24, 218, 93, 221, 176, 225, 181, 24, 229, 119, 173, 33, 115, 201, 183, 15, 108, 171, 7, 148, 52, 140, 18, 10, 9, 119, 191, 17, 5, 139, 224, 205, 1, 150, 8, 100, 80, 105, 196, 149, 161, 79, 25, 25, 249, 15, 52, 241, 157, 182, 237, 242, 135, 4, 4, 104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 40, 34, 179, 118, 101, 33, 164, 138, 79, 248, 240, 44, 27, 35, 103, 164, 152, 79, 126, 63, 17, 170, 71, 180, 248, 78, 47, 192, 30, 164, 31, 9, 218, 21, 102, 245, 35, 82, 245, 60, 150, 248, 239, 212, 149, 68, 249, 45, 57, 39, 147, 191, 56, 133, 36, 238, 59, 203, 191, 114, 15, 254, 29, 21, 77, 93, 63, 127, 244, 207, 73, 74, 198, 159, 230, 107, 243, 175, 32, 249, 152, 42, 170, 115, 199, 181, 194, 192, 189, 174, 239, 189, 157, 138, 110, 13, 32, 0, 0, 0, 0, 0, 0, 0, 191, 199, 229, 202, 74, 132, 8, 54, 215, 229, 90, 187, 165, 73, 110, 39, 41, 53, 240, 89, 147, 179, 53, 66, 163, 150, 51, 5, 170, 106, 69, 12, 136, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 108, 100, 98, 140, 45, 122, 37, 209, 244, 90, 249, 243, 184, 166, 66, 114, 168, 181, 4, 188, 228, 188, 112, 53, 78, 79, 125, 247, 75, 115, 147, 34, 224, 201, 98, 175, 95, 194, 118, 205, 131, 213, 143, 156, 231, 96, 62, 85, 70, 46, 93, 119, 242, 204, 12, 162, 108, 118, 73, 64, 207, 1, 142, 30, 130, 39, 135, 165, 48, 121, 54, 175, 242, 10, 55, 232, 114, 48, 241, 40, 53, 187, 39, 127, 53, 226, 171, 188, 7, 98, 181, 126, 235, 102, 205, 43, 222, 36, 172, 39, 15, 18, 18, 139, 45, 47, 167, 191, 205, 130, 240, 5, 202, 12, 6, 96, 233, 132, 217, 166, 9, 159, 112, 162, 118, 48, 196, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 29, 233, 136, 188, 79, 79, 158, 96, 144, 119, 240, 16, 132, 191, 164, 10, 140, 163, 201, 77, 198, 183, 192, 152, 77, 166, 49, 232, 146, 169, 117, 35, 123, 7, 19, 78, 17, 68, 217, 154, 126, 216, 225, 250, 136, 2, 216, 180, 47, 207, 5, 228, 27, 101, 37, 195, 144, 80, 18, 90, 107, 201, 46, 15, 26, 3, 181, 84, 172, 11, 183, 246, 189, 169, 209, 9, 46, 98, 25, 219, 1, 78, 192, 186, 57, 43, 63, 237, 185, 175, 89, 10, 64, 15, 28, 35, 32, 0, 0, 0, 0, 0, 0, 0, 83, 144, 93, 11, 58, 192, 224, 73, 39, 59, 232, 1, 37, 199, 67, 245, 240, 104, 51, 126, 205, 177, 191, 185, 203, 160, 235, 250, 255, 108, 242, 154, 32, 0, 0, 0, 0, 0, 0, 0, 195, 152, 149, 225, 248, 62, 119, 190, 198, 132, 197, 69, 95, 244, 128, 25, 158, 63, 147, 105, 84, 21, 198, 162, 231, 49, 4, 246, 227, 57, 68, 45}; + struct Bytes proof; + proof.len = sizeof(proof_array); + proof.data = proof_array; + + return __verify_matchmaking(verifier_params, + inputs, + inputs_len, + outputs, + outputs_len, + commitment, + random_number, + proof); +} +``` \ No newline at end of file diff --git a/content/zytron/precompiles/shuffle.md b/content/zytron/precompiles/shuffle.md index bdc0b0e..cd1451c 100644 --- a/content/zytron/precompiles/shuffle.md +++ b/content/zytron/precompiles/shuffle.md @@ -117,4 +117,61 @@ Use the following code: ## C SDK -> TODO +```c +#include "c-uzkge.h" + +int main(int argc, char *argv[]) +{ + char verifier_params_array[] = {40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 237, 246, 146, 217, 92, 189, 222, 70, 221, 218, 94, 247, 212, 34, 67, 103, 121, 68, 92, 94, 102, 0, 106, 66, 118, 30, 31, 18, 239, 222, 0, 24, 194, 18, 243, 174, 183, 133, 228, 151, 18, 231, 169, 53, 51, 73, 170, 241, 37, 93, 251, 49, 183, 191, 96, 114, 58, 72, 13, 146, 147, 147, 142, 25, 176, 131, 136, 147, 236, 31, 35, 126, 139, 7, 50, 59, 7, 68, 89, 159, 78, 151, 181, 152, 179, 181, 137, 188, 194, 188, 55, 184, 213, 196, 24, 1, 193, 131, 147, 192, 250, 48, 254, 78, 139, 3, 142, 53, 122, 216, 81, 234, 232, 222, 145, 7, 88, 78, 255, 231, 199, 241, 246, 81, 178, 1, 14, 38, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 98, 115, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 152, 233, 179, 133, 213, 96, 19, 97, 119, 124, 6, 123, 51, 161, 130, 166, 202, 41, 241, 121, 154, 98, 222, 83, 157, 84, 253, 72, 89, 160, 197, 40, 32, 0, 0, 0, 0, 0, 0, 0, 244, 149, 162, 189, 195, 62, 211, 59, 82, 211, 185, 196, 175, 160, 26, 185, 148, 182, 163, 17, 108, 60, 72, 245, 6, 239, 243, 112, 206, 130, 116, 30, 32, 0, 0, 0, 0, 0, 0, 0, 106, 116, 243, 241, 122, 12, 76, 213, 212, 251, 38, 33, 34, 186, 19, 42, 145, 7, 131, 159, 81, 12, 138, 116, 168, 255, 153, 44, 84, 96, 6, 144, 32, 0, 0, 0, 0, 0, 0, 0, 242, 17, 208, 34, 219, 234, 68, 86, 221, 45, 173, 178, 159, 189, 152, 161, 153, 97, 113, 35, 202, 103, 222, 128, 116, 144, 11, 162, 183, 37, 210, 172, 32, 0, 0, 0, 0, 0, 0, 0, 13, 89, 214, 237, 194, 73, 53, 183, 96, 233, 20, 21, 139, 7, 62, 69, 226, 245, 125, 150, 137, 103, 206, 156, 175, 245, 230, 58, 33, 230, 230, 131, 32, 0, 0, 0, 0, 0, 0, 0, 13, 89, 214, 237, 194, 73, 53, 183, 96, 233, 20, 21, 139, 7, 62, 69, 226, 245, 125, 150, 137, 103, 206, 156, 175, 245, 230, 58, 33, 230, 230, 131, 32, 0, 0, 0, 0, 0, 0, 0, 91, 177, 224, 236, 173, 161, 132, 201, 8, 160, 105, 196, 180, 47, 66, 32, 74, 76, 168, 102, 77, 216, 197, 132, 112, 239, 56, 209, 126, 8, 146, 141, 32, 0, 0, 0, 0, 0, 0, 0, 135, 207, 234, 80, 126, 206, 237, 202, 135, 64, 217, 64, 121, 75, 170, 199, 48, 172, 45, 49, 25, 128, 135, 228, 240, 203, 55, 7, 69, 133, 227, 172, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 199, 145, 188, 155, 156, 97, 154, 160, 64, 77, 215, 70, 64, 24, 96, 7, 134, 102, 18, 61, 168, 228, 249, 220, 112, 199, 62, 160, 32, 78, 194, 166, 32, 0, 0, 0, 0, 0, 0, 0, 140, 127, 160, 225, 102, 130, 93, 244, 218, 62, 166, 132, 90, 178, 82, 103, 182, 234, 192, 64, 19, 25, 113, 198, 146, 205, 146, 140, 3, 245, 101, 161, 32, 0, 0, 0, 0, 0, 0, 0, 6, 50, 82, 51, 147, 199, 153, 245, 47, 250, 245, 161, 85, 252, 53, 157, 65, 175, 135, 138, 233, 100, 3, 67, 149, 20, 109, 13, 56, 59, 161, 5, 32, 0, 0, 0, 0, 0, 0, 0, 187, 136, 204, 89, 175, 197, 113, 78, 88, 89, 111, 133, 98, 222, 49, 34, 21, 1, 201, 42, 157, 219, 149, 116, 202, 232, 221, 228, 88, 84, 243, 39, 32, 0, 0, 0, 0, 0, 0, 0, 24, 179, 205, 195, 180, 53, 8, 224, 171, 113, 38, 236, 173, 12, 59, 104, 33, 48, 194, 250, 252, 137, 192, 49, 61, 161, 149, 9, 71, 22, 3, 153, 32, 0, 0, 0, 0, 0, 0, 0, 69, 148, 241, 131, 123, 239, 3, 144, 66, 179, 81, 49, 23, 56, 232, 210, 173, 210, 29, 200, 181, 172, 162, 252, 245, 35, 119, 117, 85, 232, 6, 34, 4, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 0, 0, 0, 0, 0, 32, 26, 107, 240, 176, 84, 139, 108, 215, 148, 54, 82, 96, 239, 97, 49, 220, 3, 205, 17, 65, 249, 135, 116, 191, 155, 78, 72, 218, 117, 187, 14, 12, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 102, 7, 125, 129, 208, 222, 72, 11, 90, 247, 183, 250, 41, 85, 182, 141, 206, 19, 149, 230, 40, 26, 117, 169, 144, 248, 26, 243, 85, 230, 145, 168, 32, 0, 0, 0, 0, 0, 0, 0, 220, 84, 239, 238, 138, 25, 57, 41, 0, 220, 45, 63, 170, 46, 241, 139, 6, 217, 144, 71, 77, 70, 38, 245, 145, 62, 205, 42, 7, 31, 125, 174, 32, 0, 0, 0, 0, 0, 0, 0, 255, 88, 210, 144, 228, 98, 44, 56, 191, 85, 84, 206, 143, 125, 149, 116, 174, 138, 152, 26, 80, 53, 195, 31, 120, 138, 157, 160, 139, 65, 97, 0, 32, 0, 0, 0, 0, 0, 0, 0, 204, 35, 167, 69, 109, 231, 133, 204, 148, 187, 158, 135, 106, 160, 170, 29, 50, 40, 128, 170, 87, 185, 163, 102, 191, 179, 38, 9, 65, 77, 85, 19, 32, 0, 0, 0, 0, 0, 0, 0, 195, 34, 227, 200, 211, 44, 96, 132, 179, 184, 153, 63, 82, 155, 83, 179, 207, 109, 123, 112, 111, 73, 239, 29, 190, 31, 108, 48, 193, 111, 183, 165, 32, 0, 0, 0, 0, 0, 0, 0, 237, 61, 3, 119, 140, 77, 80, 120, 45, 81, 71, 147, 241, 251, 203, 1, 235, 45, 219, 160, 172, 197, 78, 142, 234, 172, 250, 101, 39, 21, 21, 158, 32, 0, 0, 0, 0, 0, 0, 0, 156, 213, 155, 157, 101, 43, 98, 55, 18, 200, 171, 88, 168, 39, 54, 138, 3, 160, 42, 53, 204, 102, 11, 85, 112, 22, 23, 14, 245, 16, 14, 20, 32, 0, 0, 0, 0, 0, 0, 0, 132, 179, 231, 134, 203, 197, 54, 52, 64, 144, 251, 165, 171, 92, 6, 32, 21, 251, 43, 208, 87, 128, 2, 103, 13, 40, 36, 124, 185, 253, 34, 166, 32, 0, 0, 0, 0, 0, 0, 0, 223, 34, 226, 126, 85, 35, 115, 141, 193, 222, 164, 157, 95, 26, 253, 172, 167, 195, 135, 122, 215, 89, 53, 14, 108, 157, 47, 2, 169, 124, 78, 37, 32, 0, 0, 0, 0, 0, 0, 0, 78, 32, 143, 147, 52, 43, 238, 215, 90, 189, 154, 253, 8, 54, 233, 178, 112, 255, 7, 241, 234, 235, 161, 33, 219, 48, 161, 161, 155, 209, 82, 38, 32, 0, 0, 0, 0, 0, 0, 0, 59, 156, 29, 131, 6, 98, 0, 236, 61, 103, 121, 231, 113, 92, 82, 66, 144, 221, 42, 186, 240, 127, 229, 223, 37, 66, 216, 66, 22, 87, 182, 46, 32, 0, 0, 0, 0, 0, 0, 0, 56, 123, 161, 37, 41, 144, 11, 237, 45, 63, 73, 229, 104, 206, 46, 119, 128, 229, 238, 98, 240, 69, 63, 11, 131, 86, 109, 43, 106, 172, 151, 7, 12, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 45, 127, 100, 89, 42, 248, 244, 14, 212, 123, 191, 47, 211, 14, 208, 219, 96, 86, 39, 95, 103, 149, 117, 170, 81, 124, 77, 237, 21, 42, 246, 148, 32, 0, 0, 0, 0, 0, 0, 0, 73, 28, 139, 232, 165, 208, 238, 197, 61, 83, 228, 236, 113, 158, 171, 26, 163, 78, 237, 148, 192, 138, 29, 194, 96, 6, 48, 140, 251, 192, 45, 2, 32, 0, 0, 0, 0, 0, 0, 0, 130, 110, 167, 13, 218, 50, 169, 183, 32, 135, 216, 99, 134, 96, 210, 120, 105, 230, 204, 21, 65, 173, 18, 61, 242, 49, 163, 39, 4, 21, 42, 17, 32, 0, 0, 0, 0, 0, 0, 0, 163, 18, 47, 45, 63, 22, 168, 60, 214, 251, 194, 57, 23, 21, 9, 97, 81, 113, 245, 110, 38, 55, 110, 164, 81, 24, 147, 157, 73, 57, 203, 43, 32, 0, 0, 0, 0, 0, 0, 0, 91, 156, 125, 57, 85, 8, 50, 154, 33, 92, 237, 2, 104, 37, 191, 203, 127, 115, 75, 151, 115, 11, 65, 43, 200, 30, 182, 182, 67, 148, 17, 43, 32, 0, 0, 0, 0, 0, 0, 0, 234, 210, 138, 224, 206, 46, 6, 248, 177, 40, 135, 174, 52, 235, 252, 247, 145, 228, 32, 136, 105, 138, 128, 97, 69, 149, 117, 242, 160, 203, 78, 27, 32, 0, 0, 0, 0, 0, 0, 0, 141, 148, 178, 115, 241, 156, 37, 33, 191, 60, 223, 172, 184, 50, 247, 245, 45, 15, 232, 27, 44, 240, 96, 103, 174, 90, 68, 178, 102, 37, 142, 1, 32, 0, 0, 0, 0, 0, 0, 0, 221, 176, 49, 184, 217, 140, 110, 60, 122, 107, 23, 190, 42, 236, 134, 32, 237, 15, 58, 175, 205, 241, 78, 127, 4, 181, 47, 81, 248, 121, 220, 28, 32, 0, 0, 0, 0, 0, 0, 0, 149, 97, 67, 94, 127, 83, 132, 96, 238, 24, 81, 228, 245, 48, 221, 77, 139, 37, 228, 25, 33, 39, 16, 254, 126, 135, 128, 151, 123, 138, 8, 20, 32, 0, 0, 0, 0, 0, 0, 0, 72, 40, 130, 181, 92, 251, 229, 175, 40, 5, 255, 68, 19, 134, 138, 248, 84, 195, 190, 149, 53, 114, 8, 96, 93, 189, 234, 52, 2, 6, 159, 18, 32, 0, 0, 0, 0, 0, 0, 0, 23, 221, 79, 50, 88, 143, 111, 191, 153, 156, 113, 7, 228, 17, 188, 59, 236, 130, 239, 205, 225, 8, 170, 201, 208, 173, 81, 180, 200, 51, 218, 128, 32, 0, 0, 0, 0, 0, 0, 0, 26, 37, 148, 29, 119, 97, 65, 129, 125, 54, 32, 205, 28, 209, 162, 232, 123, 47, 5, 214, 83, 145, 223, 234, 237, 125, 39, 90, 24, 156, 109, 42, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 29, 48, 177, 123, 251, 164, 93, 131, 133, 63, 129, 148, 108, 202, 115, 76, 64, 16, 225, 68, 42, 225, 196, 66, 60, 88, 167, 241, 209, 141, 47, 10, 12, 121, 149, 104, 90, 144, 102, 214, 130, 92, 109, 178, 29, 11, 149, 139, 150, 156, 226, 3, 124, 8, 10, 123, 24, 12, 169, 135, 165, 66, 32, 96, 73, 142, 117, 155, 158, 82, 191, 51, 167, 220, 96, 161, 95, 59, 215, 50, 243, 111, 121, 52, 7, 239, 240, 60, 227, 230, 19, 78, 148, 180, 45, 70, 47, 210, 83, 0, 93, 4, 139, 69, 66, 1, 4, 17, 227, 20, 166, 90, 208, 215, 198, 141, 19, 37, 153, 45, 5, 1, 175, 74, 58, 158, 29, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 0, 104, 1, 0, 0, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 0, 0, 192, 1, 0, 0, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 0, 0, 194, 1, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 0, 0, 25, 2, 0, 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 0, 0, 0, 27, 2, 0, 0, 0, 0, 0, 0, 113, 2, 0, 0, 0, 0, 0, 0, 114, 2, 0, 0, 0, 0, 0, 0, 115, 2, 0, 0, 0, 0, 0, 0, 116, 2, 0, 0, 0, 0, 0, 0, 202, 2, 0, 0, 0, 0, 0, 0, 203, 2, 0, 0, 0, 0, 0, 0, 204, 2, 0, 0, 0, 0, 0, 0, 205, 2, 0, 0, 0, 0, 0, 0, 35, 3, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 124, 3, 0, 0, 0, 0, 0, 0, 125, 3, 0, 0, 0, 0, 0, 0, 126, 3, 0, 0, 0, 0, 0, 0, 127, 3, 0, 0, 0, 0, 0, 0, 213, 3, 0, 0, 0, 0, 0, 0, 214, 3, 0, 0, 0, 0, 0, 0, 215, 3, 0, 0, 0, 0, 0, 0, 216, 3, 0, 0, 0, 0, 0, 0, 46, 4, 0, 0, 0, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 135, 4, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 0, 0, 0, 0, 137, 4, 0, 0, 0, 0, 0, 0, 138, 4, 0, 0, 0, 0, 0, 0, 224, 4, 0, 0, 0, 0, 0, 0, 225, 4, 0, 0, 0, 0, 0, 0, 226, 4, 0, 0, 0, 0, 0, 0, 227, 4, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0, 0, 0, 0, 0, 58, 5, 0, 0, 0, 0, 0, 0, 59, 5, 0, 0, 0, 0, 0, 0, 60, 5, 0, 0, 0, 0, 0, 0, 146, 5, 0, 0, 0, 0, 0, 0, 147, 5, 0, 0, 0, 0, 0, 0, 148, 5, 0, 0, 0, 0, 0, 0, 149, 5, 0, 0, 0, 0, 0, 0, 235, 5, 0, 0, 0, 0, 0, 0, 236, 5, 0, 0, 0, 0, 0, 0, 237, 5, 0, 0, 0, 0, 0, 0, 238, 5, 0, 0, 0, 0, 0, 0, 68, 6, 0, 0, 0, 0, 0, 0, 69, 6, 0, 0, 0, 0, 0, 0, 70, 6, 0, 0, 0, 0, 0, 0, 71, 6, 0, 0, 0, 0, 0, 0, 157, 6, 0, 0, 0, 0, 0, 0, 158, 6, 0, 0, 0, 0, 0, 0, 159, 6, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 246, 6, 0, 0, 0, 0, 0, 0, 247, 6, 0, 0, 0, 0, 0, 0, 248, 6, 0, 0, 0, 0, 0, 0, 249, 6, 0, 0, 0, 0, 0, 0, 79, 7, 0, 0, 0, 0, 0, 0, 80, 7, 0, 0, 0, 0, 0, 0, 81, 7, 0, 0, 0, 0, 0, 0, 82, 7, 0, 0, 0, 0, 0, 0, 168, 7, 0, 0, 0, 0, 0, 0, 169, 7, 0, 0, 0, 0, 0, 0, 170, 7, 0, 0, 0, 0, 0, 0, 171, 7, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 0, 92, 8, 0, 0, 0, 0, 0, 0, 93, 8, 0, 0, 0, 0, 0, 0, 179, 8, 0, 0, 0, 0, 0, 0, 180, 8, 0, 0, 0, 0, 0, 0, 181, 8, 0, 0, 0, 0, 0, 0, 182, 8, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 0, 0, 0, 0, 13, 9, 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 0, 0, 0, 0, 15, 9, 0, 0, 0, 0, 0, 0, 101, 9, 0, 0, 0, 0, 0, 0, 102, 9, 0, 0, 0, 0, 0, 0, 103, 9, 0, 0, 0, 0, 0, 0, 104, 9, 0, 0, 0, 0, 0, 0, 190, 9, 0, 0, 0, 0, 0, 0, 191, 9, 0, 0, 0, 0, 0, 0, 192, 9, 0, 0, 0, 0, 0, 0, 193, 9, 0, 0, 0, 0, 0, 0, 23, 10, 0, 0, 0, 0, 0, 0, 24, 10, 0, 0, 0, 0, 0, 0, 25, 10, 0, 0, 0, 0, 0, 0, 26, 10, 0, 0, 0, 0, 0, 0, 112, 10, 0, 0, 0, 0, 0, 0, 113, 10, 0, 0, 0, 0, 0, 0, 114, 10, 0, 0, 0, 0, 0, 0, 115, 10, 0, 0, 0, 0, 0, 0, 201, 10, 0, 0, 0, 0, 0, 0, 202, 10, 0, 0, 0, 0, 0, 0, 203, 10, 0, 0, 0, 0, 0, 0, 204, 10, 0, 0, 0, 0, 0, 0, 34, 11, 0, 0, 0, 0, 0, 0, 35, 11, 0, 0, 0, 0, 0, 0, 36, 11, 0, 0, 0, 0, 0, 0, 37, 11, 0, 0, 0, 0, 0, 0, 123, 11, 0, 0, 0, 0, 0, 0, 124, 11, 0, 0, 0, 0, 0, 0, 125, 11, 0, 0, 0, 0, 0, 0, 126, 11, 0, 0, 0, 0, 0, 0, 212, 11, 0, 0, 0, 0, 0, 0, 213, 11, 0, 0, 0, 0, 0, 0, 214, 11, 0, 0, 0, 0, 0, 0, 215, 11, 0, 0, 0, 0, 0, 0, 45, 12, 0, 0, 0, 0, 0, 0, 46, 12, 0, 0, 0, 0, 0, 0, 47, 12, 0, 0, 0, 0, 0, 0, 48, 12, 0, 0, 0, 0, 0, 0, 134, 12, 0, 0, 0, 0, 0, 0, 135, 12, 0, 0, 0, 0, 0, 0, 136, 12, 0, 0, 0, 0, 0, 0, 137, 12, 0, 0, 0, 0, 0, 0, 223, 12, 0, 0, 0, 0, 0, 0, 224, 12, 0, 0, 0, 0, 0, 0, 225, 12, 0, 0, 0, 0, 0, 0, 226, 12, 0, 0, 0, 0, 0, 0, 56, 13, 0, 0, 0, 0, 0, 0, 57, 13, 0, 0, 0, 0, 0, 0, 58, 13, 0, 0, 0, 0, 0, 0, 59, 13, 0, 0, 0, 0, 0, 0, 145, 13, 0, 0, 0, 0, 0, 0, 146, 13, 0, 0, 0, 0, 0, 0, 147, 13, 0, 0, 0, 0, 0, 0, 148, 13, 0, 0, 0, 0, 0, 0, 234, 13, 0, 0, 0, 0, 0, 0, 235, 13, 0, 0, 0, 0, 0, 0, 236, 13, 0, 0, 0, 0, 0, 0, 237, 13, 0, 0, 0, 0, 0, 0, 67, 14, 0, 0, 0, 0, 0, 0, 68, 14, 0, 0, 0, 0, 0, 0, 69, 14, 0, 0, 0, 0, 0, 0, 70, 14, 0, 0, 0, 0, 0, 0, 156, 14, 0, 0, 0, 0, 0, 0, 157, 14, 0, 0, 0, 0, 0, 0, 158, 14, 0, 0, 0, 0, 0, 0, 159, 14, 0, 0, 0, 0, 0, 0, 245, 14, 0, 0, 0, 0, 0, 0, 246, 14, 0, 0, 0, 0, 0, 0, 247, 14, 0, 0, 0, 0, 0, 0, 248, 14, 0, 0, 0, 0, 0, 0, 78, 15, 0, 0, 0, 0, 0, 0, 79, 15, 0, 0, 0, 0, 0, 0, 80, 15, 0, 0, 0, 0, 0, 0, 81, 15, 0, 0, 0, 0, 0, 0, 167, 15, 0, 0, 0, 0, 0, 0, 168, 15, 0, 0, 0, 0, 0, 0, 169, 15, 0, 0, 0, 0, 0, 0, 170, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 89, 16, 0, 0, 0, 0, 0, 0, 90, 16, 0, 0, 0, 0, 0, 0, 91, 16, 0, 0, 0, 0, 0, 0, 92, 16, 0, 0, 0, 0, 0, 0, 178, 16, 0, 0, 0, 0, 0, 0, 179, 16, 0, 0, 0, 0, 0, 0, 180, 16, 0, 0, 0, 0, 0, 0, 181, 16, 0, 0, 0, 0, 0, 0, 11, 17, 0, 0, 0, 0, 0, 0, 12, 17, 0, 0, 0, 0, 0, 0, 13, 17, 0, 0, 0, 0, 0, 0, 14, 17, 0, 0, 0, 0, 0, 0, 100, 17, 0, 0, 0, 0, 0, 0, 101, 17, 0, 0, 0, 0, 0, 0, 102, 17, 0, 0, 0, 0, 0, 0, 103, 17, 0, 0, 0, 0, 0, 0, 189, 17, 0, 0, 0, 0, 0, 0, 190, 17, 0, 0, 0, 0, 0, 0, 191, 17, 0, 0, 0, 0, 0, 0, 192, 17, 0, 0, 0, 0, 0, 0, 62, 54, 0, 0, 0, 0, 0, 0, 63, 54, 0, 0, 0, 0, 0, 0, 64, 54, 0, 0, 0, 0, 0, 0, 65, 54, 0, 0, 0, 0, 0, 0, 66, 54, 0, 0, 0, 0, 0, 0, 67, 54, 0, 0, 0, 0, 0, 0, 68, 54, 0, 0, 0, 0, 0, 0, 69, 54, 0, 0, 0, 0, 0, 0, 70, 54, 0, 0, 0, 0, 0, 0, 71, 54, 0, 0, 0, 0, 0, 0, 72, 54, 0, 0, 0, 0, 0, 0, 73, 54, 0, 0, 0, 0, 0, 0, 74, 54, 0, 0, 0, 0, 0, 0, 75, 54, 0, 0, 0, 0, 0, 0, 76, 54, 0, 0, 0, 0, 0, 0, 77, 54, 0, 0, 0, 0, 0, 0, 78, 54, 0, 0, 0, 0, 0, 0, 79, 54, 0, 0, 0, 0, 0, 0, 80, 54, 0, 0, 0, 0, 0, 0, 81, 54, 0, 0, 0, 0, 0, 0, 82, 54, 0, 0, 0, 0, 0, 0, 83, 54, 0, 0, 0, 0, 0, 0, 84, 54, 0, 0, 0, 0, 0, 0, 85, 54, 0, 0, 0, 0, 0, 0, 86, 54, 0, 0, 0, 0, 0, 0, 87, 54, 0, 0, 0, 0, 0, 0, 88, 54, 0, 0, 0, 0, 0, 0, 89, 54, 0, 0, 0, 0, 0, 0, 90, 54, 0, 0, 0, 0, 0, 0, 91, 54, 0, 0, 0, 0, 0, 0, 92, 54, 0, 0, 0, 0, 0, 0, 93, 54, 0, 0, 0, 0, 0, 0, 94, 54, 0, 0, 0, 0, 0, 0, 95, 54, 0, 0, 0, 0, 0, 0, 96, 54, 0, 0, 0, 0, 0, 0, 97, 54, 0, 0, 0, 0, 0, 0, 98, 54, 0, 0, 0, 0, 0, 0, 99, 54, 0, 0, 0, 0, 0, 0, 100, 54, 0, 0, 0, 0, 0, 0, 101, 54, 0, 0, 0, 0, 0, 0, 102, 54, 0, 0, 0, 0, 0, 0, 103, 54, 0, 0, 0, 0, 0, 0, 104, 54, 0, 0, 0, 0, 0, 0, 105, 54, 0, 0, 0, 0, 0, 0, 106, 54, 0, 0, 0, 0, 0, 0, 107, 54, 0, 0, 0, 0, 0, 0, 108, 54, 0, 0, 0, 0, 0, 0, 109, 54, 0, 0, 0, 0, 0, 0, 110, 54, 0, 0, 0, 0, 0, 0, 111, 54, 0, 0, 0, 0, 0, 0, 112, 54, 0, 0, 0, 0, 0, 0, 113, 54, 0, 0, 0, 0, 0, 0, 114, 54, 0, 0, 0, 0, 0, 0, 115, 54, 0, 0, 0, 0, 0, 0, 116, 54, 0, 0, 0, 0, 0, 0, 117, 54, 0, 0, 0, 0, 0, 0, 118, 54, 0, 0, 0, 0, 0, 0, 119, 54, 0, 0, 0, 0, 0, 0, 120, 54, 0, 0, 0, 0, 0, 0, 121, 54, 0, 0, 0, 0, 0, 0, 122, 54, 0, 0, 0, 0, 0, 0, 123, 54, 0, 0, 0, 0, 0, 0, 124, 54, 0, 0, 0, 0, 0, 0, 125, 54, 0, 0, 0, 0, 0, 0, 126, 54, 0, 0, 0, 0, 0, 0, 127, 54, 0, 0, 0, 0, 0, 0, 128, 54, 0, 0, 0, 0, 0, 0, 129, 54, 0, 0, 0, 0, 0, 0, 130, 54, 0, 0, 0, 0, 0, 0, 131, 54, 0, 0, 0, 0, 0, 0, 132, 54, 0, 0, 0, 0, 0, 0, 133, 54, 0, 0, 0, 0, 0, 0, 134, 54, 0, 0, 0, 0, 0, 0, 135, 54, 0, 0, 0, 0, 0, 0, 136, 54, 0, 0, 0, 0, 0, 0, 137, 54, 0, 0, 0, 0, 0, 0, 138, 54, 0, 0, 0, 0, 0, 0, 139, 54, 0, 0, 0, 0, 0, 0, 140, 54, 0, 0, 0, 0, 0, 0, 141, 54, 0, 0, 0, 0, 0, 0, 142, 54, 0, 0, 0, 0, 0, 0, 143, 54, 0, 0, 0, 0, 0, 0, 144, 54, 0, 0, 0, 0, 0, 0, 145, 54, 0, 0, 0, 0, 0, 0, 146, 54, 0, 0, 0, 0, 0, 0, 147, 54, 0, 0, 0, 0, 0, 0, 148, 54, 0, 0, 0, 0, 0, 0, 149, 54, 0, 0, 0, 0, 0, 0, 150, 54, 0, 0, 0, 0, 0, 0, 151, 54, 0, 0, 0, 0, 0, 0, 152, 54, 0, 0, 0, 0, 0, 0, 153, 54, 0, 0, 0, 0, 0, 0, 154, 54, 0, 0, 0, 0, 0, 0, 155, 54, 0, 0, 0, 0, 0, 0, 156, 54, 0, 0, 0, 0, 0, 0, 157, 54, 0, 0, 0, 0, 0, 0, 158, 54, 0, 0, 0, 0, 0, 0, 159, 54, 0, 0, 0, 0, 0, 0, 160, 54, 0, 0, 0, 0, 0, 0, 161, 54, 0, 0, 0, 0, 0, 0, 162, 54, 0, 0, 0, 0, 0, 0, 163, 54, 0, 0, 0, 0, 0, 0, 164, 54, 0, 0, 0, 0, 0, 0, 165, 54, 0, 0, 0, 0, 0, 0, 166, 54, 0, 0, 0, 0, 0, 0, 167, 54, 0, 0, 0, 0, 0, 0, 168, 54, 0, 0, 0, 0, 0, 0, 169, 54, 0, 0, 0, 0, 0, 0, 170, 54, 0, 0, 0, 0, 0, 0, 171, 54, 0, 0, 0, 0, 0, 0, 172, 54, 0, 0, 0, 0, 0, 0, 173, 54, 0, 0, 0, 0, 0, 0, 174, 54, 0, 0, 0, 0, 0, 0, 175, 54, 0, 0, 0, 0, 0, 0, 176, 54, 0, 0, 0, 0, 0, 0, 177, 54, 0, 0, 0, 0, 0, 0, 178, 54, 0, 0, 0, 0, 0, 0, 179, 54, 0, 0, 0, 0, 0, 0, 180, 54, 0, 0, 0, 0, 0, 0, 181, 54, 0, 0, 0, 0, 0, 0, 182, 54, 0, 0, 0, 0, 0, 0, 183, 54, 0, 0, 0, 0, 0, 0, 184, 54, 0, 0, 0, 0, 0, 0, 185, 54, 0, 0, 0, 0, 0, 0, 186, 54, 0, 0, 0, 0, 0, 0, 187, 54, 0, 0, 0, 0, 0, 0, 188, 54, 0, 0, 0, 0, 0, 0, 189, 54, 0, 0, 0, 0, 0, 0, 190, 54, 0, 0, 0, 0, 0, 0, 191, 54, 0, 0, 0, 0, 0, 0, 192, 54, 0, 0, 0, 0, 0, 0, 193, 54, 0, 0, 0, 0, 0, 0, 194, 54, 0, 0, 0, 0, 0, 0, 195, 54, 0, 0, 0, 0, 0, 0, 196, 54, 0, 0, 0, 0, 0, 0, 197, 54, 0, 0, 0, 0, 0, 0, 198, 54, 0, 0, 0, 0, 0, 0, 199, 54, 0, 0, 0, 0, 0, 0, 200, 54, 0, 0, 0, 0, 0, 0, 201, 54, 0, 0, 0, 0, 0, 0, 202, 54, 0, 0, 0, 0, 0, 0, 203, 54, 0, 0, 0, 0, 0, 0, 204, 54, 0, 0, 0, 0, 0, 0, 205, 54, 0, 0, 0, 0, 0, 0, 206, 54, 0, 0, 0, 0, 0, 0, 207, 54, 0, 0, 0, 0, 0, 0, 208, 54, 0, 0, 0, 0, 0, 0, 209, 54, 0, 0, 0, 0, 0, 0, 210, 54, 0, 0, 0, 0, 0, 0, 211, 54, 0, 0, 0, 0, 0, 0, 212, 54, 0, 0, 0, 0, 0, 0, 213, 54, 0, 0, 0, 0, 0, 0, 214, 54, 0, 0, 0, 0, 0, 0, 215, 54, 0, 0, 0, 0, 0, 0, 216, 54, 0, 0, 0, 0, 0, 0, 217, 54, 0, 0, 0, 0, 0, 0, 218, 54, 0, 0, 0, 0, 0, 0, 219, 54, 0, 0, 0, 0, 0, 0, 220, 54, 0, 0, 0, 0, 0, 0, 221, 54, 0, 0, 0, 0, 0, 0, 222, 54, 0, 0, 0, 0, 0, 0, 223, 54, 0, 0, 0, 0, 0, 0, 224, 54, 0, 0, 0, 0, 0, 0, 225, 54, 0, 0, 0, 0, 0, 0, 226, 54, 0, 0, 0, 0, 0, 0, 227, 54, 0, 0, 0, 0, 0, 0, 228, 54, 0, 0, 0, 0, 0, 0, 229, 54, 0, 0, 0, 0, 0, 0, 230, 54, 0, 0, 0, 0, 0, 0, 231, 54, 0, 0, 0, 0, 0, 0, 232, 54, 0, 0, 0, 0, 0, 0, 233, 54, 0, 0, 0, 0, 0, 0, 234, 54, 0, 0, 0, 0, 0, 0, 235, 54, 0, 0, 0, 0, 0, 0, 236, 54, 0, 0, 0, 0, 0, 0, 237, 54, 0, 0, 0, 0, 0, 0, 238, 54, 0, 0, 0, 0, 0, 0, 239, 54, 0, 0, 0, 0, 0, 0, 240, 54, 0, 0, 0, 0, 0, 0, 241, 54, 0, 0, 0, 0, 0, 0, 242, 54, 0, 0, 0, 0, 0, 0, 243, 54, 0, 0, 0, 0, 0, 0, 244, 54, 0, 0, 0, 0, 0, 0, 245, 54, 0, 0, 0, 0, 0, 0, 246, 54, 0, 0, 0, 0, 0, 0, 247, 54, 0, 0, 0, 0, 0, 0, 248, 54, 0, 0, 0, 0, 0, 0, 249, 54, 0, 0, 0, 0, 0, 0, 250, 54, 0, 0, 0, 0, 0, 0, 251, 54, 0, 0, 0, 0, 0, 0, 252, 54, 0, 0, 0, 0, 0, 0, 253, 54, 0, 0, 0, 0, 0, 0, 254, 54, 0, 0, 0, 0, 0, 0, 255, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 1, 55, 0, 0, 0, 0, 0, 0, 2, 55, 0, 0, 0, 0, 0, 0, 3, 55, 0, 0, 0, 0, 0, 0, 4, 55, 0, 0, 0, 0, 0, 0, 5, 55, 0, 0, 0, 0, 0, 0, 6, 55, 0, 0, 0, 0, 0, 0, 7, 55, 0, 0, 0, 0, 0, 0, 8, 55, 0, 0, 0, 0, 0, 0, 9, 55, 0, 0, 0, 0, 0, 0, 10, 55, 0, 0, 0, 0, 0, 0, 11, 55, 0, 0, 0, 0, 0, 0, 12, 55, 0, 0, 0, 0, 0, 0, 13, 55, 0, 0, 0, 0, 0, 0, 8, 52, 0, 0, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 0, 0, 248, 110, 250, 13, 193, 18, 67, 181, 178, 45, 2, 179, 200, 190, 233, 2, 149, 116, 144, 144, 106, 93, 178, 4, 220, 121, 197, 214, 211, 111, 250, 33, 245, 216, 181, 61, 41, 9, 253, 54, 200, 76, 225, 171, 192, 221, 129, 248, 14, 189, 32, 55, 63, 16, 40, 193, 105, 122, 37, 155, 25, 125, 186, 18, 12, 129, 182, 252, 44, 69, 234, 73, 100, 233, 30, 249, 108, 28, 221, 57, 242, 132, 115, 141, 165, 46, 36, 205, 226, 129, 17, 57, 207, 63, 25, 33, 140, 113, 247, 123, 189, 6, 41, 251, 101, 141, 59, 119, 187, 141, 233, 76, 98, 59, 176, 67, 44, 98, 144, 246, 82, 250, 184, 84, 141, 197, 65, 40, 115, 13, 128, 26, 148, 164, 186, 228, 91, 145, 86, 13, 125, 185, 131, 218, 226, 157, 209, 239, 168, 189, 188, 236, 214, 4, 157, 28, 129, 131, 191, 6, 219, 110, 126, 248, 240, 27, 56, 212, 162, 194, 223, 12, 91, 57, 4, 80, 134, 103, 231, 193, 52, 83, 197, 118, 27, 74, 26, 159, 239, 253, 99, 37, 167, 18, 40, 157, 183, 156, 48, 194, 106, 235, 253, 197, 247, 15, 247, 131, 100, 67, 45, 214, 129, 255, 44, 38, 27, 13, 39, 64, 100, 123, 23, 41, 123, 127, 60, 47, 232, 195, 145, 111, 221, 131, 4, 1, 137, 13, 69, 41, 8, 131, 133, 153, 134, 8, 144, 173, 36, 119, 194, 72, 81, 248, 42, 18, 68, 127, 73, 252, 35, 46, 91, 47, 71, 48, 248, 84, 19, 46, 149, 229, 141, 255, 207, 214, 40, 10, 239, 58, 70, 213, 209, 92, 43, 161, 205, 5, 242, 164, 94, 215, 147, 170, 68, 64, 155, 66, 154, 103, 9, 184, 75, 89, 43, 41, 9, 3, 118, 118, 77, 81, 239, 227, 71, 92, 86, 117, 172, 4, 2, 65, 152, 135, 132, 46, 220, 225, 2, 90, 182, 40, 68, 220, 160, 227, 163, 193, 227, 28, 138, 141, 87, 64, 223, 252, 248, 113, 95, 204, 206, 13, 189, 69, 27, 80, 190, 16, 217, 229, 253, 15, 144, 105, 67, 35, 28, 68, 203, 194, 226, 106, 215, 28, 6, 142, 255, 126, 18, 149, 133, 195, 148, 6, 137, 88, 161, 218, 58, 39, 10, 236, 111, 3, 11, 84, 184, 125, 15, 188, 89, 74, 45, 95, 91, 136, 115, 132, 5, 98, 229, 161, 82, 237, 118, 19, 201, 91, 200, 98, 162, 62, 115, 23, 217, 185, 186, 150, 83, 1, 177, 253, 17, 56, 57, 189, 16, 129, 100, 141, 12, 247, 230, 33, 225, 60, 53, 34, 12, 144, 3, 182, 160, 48, 56, 187, 6, 11, 68, 199, 125, 202, 226, 168, 148, 226, 83, 241, 154, 188, 5, 60, 152, 82, 121, 34, 126, 231, 44, 27, 96, 11, 76, 166, 128, 190, 240, 104, 255, 11, 220, 16, 155, 87, 115, 8, 80, 164, 152, 120, 188, 148, 86, 234, 252, 117, 112, 221, 159, 245, 182, 7, 174, 243, 35, 230, 76, 188, 175, 41, 189, 107, 42, 140, 119, 20, 172, 29, 233, 35, 70, 188, 185, 50, 123, 204, 139, 113, 104, 209, 157, 153, 41, 42, 162, 219, 143, 119, 76, 124, 43, 86, 122, 19, 20, 151, 95, 144, 155, 39, 147, 77, 99, 217, 205, 169, 219, 251, 155, 60, 212, 76, 198, 13, 49, 7, 224, 193, 25, 150, 60, 91, 227, 105, 159, 237, 42, 178, 77, 98, 198, 160, 103, 231, 114, 229, 30, 76, 91, 164, 35, 47, 113, 48, 121, 59, 247, 21, 162, 233, 143, 100, 123, 7, 3, 253, 120, 46, 184, 201, 165, 79, 147, 200, 223, 64, 246, 201, 255, 170, 132, 66, 38, 248, 213, 148, 160, 87, 167, 40, 52, 166, 39, 148, 162, 254, 104, 87, 18, 35, 13, 12, 84, 149, 152, 222, 98, 164, 131, 30, 250, 28, 30, 246, 99, 5, 9, 17, 30, 177, 226, 45, 244, 159, 84, 120, 80, 116, 23, 143, 166, 111, 178, 242, 64, 48, 50, 169, 202, 227, 60, 13, 14, 187, 222, 232, 21, 224, 151, 62, 238, 209, 79, 25, 26, 102, 162, 0, 145, 93, 79, 67, 223, 47, 200, 113, 120, 165, 242, 246, 196, 234, 140, 40, 135, 53, 197, 231, 104, 198, 159, 226, 56, 109, 221, 27, 68, 216, 168, 238, 13, 236, 181, 152, 60, 243, 119, 247, 180, 137, 54, 64, 110, 52, 65, 167, 175, 185, 254, 227, 205, 189, 178, 19, 171, 216, 135, 17, 61, 192, 186, 19, 242, 155, 143, 56, 184, 84, 96, 201, 88, 152, 124, 35, 253, 6, 156, 205, 28, 225, 7, 183, 96, 90, 189, 205, 6, 139, 2, 28, 171, 229, 217, 144, 136, 128, 60, 242, 121, 76, 40, 40, 164, 228, 139, 108, 110, 201, 108, 106, 168, 136, 8, 206, 99, 199, 163, 116, 114, 117, 242, 21, 142, 89, 116, 234, 8, 44, 65, 20, 167, 202, 94, 35, 125, 7, 18, 113, 19, 226, 98, 210, 253, 34, 40, 80, 65, 102, 191, 103, 106, 76, 100, 6, 50, 245, 13, 114, 132, 25, 218, 104, 231, 30, 4, 165, 28, 216, 60, 226, 141, 253, 208, 124, 180, 117, 172, 78, 181, 132, 117, 128, 173, 54, 190, 8, 242, 53, 35, 66, 7, 145, 119, 249, 10, 67, 145, 144, 6, 113, 42, 37, 139, 19, 31, 126, 188, 74, 19, 213, 173, 8, 74, 153, 46, 186, 128, 32, 183, 198, 151, 43, 188, 146, 137, 208, 35, 175, 132, 8, 173, 229, 8, 130, 28, 100, 222, 96, 99, 31, 34, 97, 165, 15, 70, 36, 76, 145, 230, 19, 174, 243, 137, 31, 23, 188, 47, 11, 86, 130, 245, 28, 143, 32, 189, 32, 0, 163, 175, 119, 121, 209, 89, 184, 15, 97, 105, 226, 197, 144, 227, 25, 16, 97, 88, 58, 249, 118, 172, 6, 75, 218, 98, 81, 36, 86, 134, 11, 106, 211, 207, 81, 216, 121, 172, 122, 2, 113, 14, 246, 89, 218, 249, 9, 248, 173, 208, 21, 211, 101, 21, 108, 214, 42, 66, 161, 146, 144, 13, 199, 204, 32, 45, 31, 16, 88, 31, 72, 117, 152, 28, 113, 218, 167, 165, 15, 88, 124, 162, 186, 105, 100, 123, 23, 153, 25, 73, 165, 122, 194, 144, 1, 179, 94, 4, 23, 36, 79, 60, 102, 38, 174, 212, 11, 54, 36, 55, 0, 115, 212, 223, 92, 187, 95, 215, 85, 222, 6, 7, 127, 70, 85, 58, 137, 23, 143, 239, 171, 25, 119, 24, 103, 197, 28, 46, 88, 57, 234, 171, 24, 119, 128, 165, 111, 128, 180, 91, 149, 103, 163, 59, 159, 253, 31, 169, 28, 207, 234, 205, 103, 61, 162, 154, 214, 123, 131, 71, 62, 185, 96, 93, 15, 225, 230, 195, 178, 68, 248, 68, 73, 73, 228, 141, 105, 238, 53, 118, 224, 58, 17, 112, 81, 203, 188, 46, 142, 46, 233, 150, 86, 84, 83, 157, 23, 150, 251, 231, 81, 188, 217, 182, 123, 174, 87, 229, 138, 162, 157, 8, 140, 231, 190, 52, 135, 32, 71, 20, 154, 167, 224, 96, 112, 106, 140, 12, 8, 189, 144, 115, 0, 129, 73, 41, 51, 223, 165, 199, 153, 50, 97, 164, 201, 192, 159, 216, 165, 13, 94, 177, 194, 113, 194, 35, 31, 165, 128, 185, 39, 242, 176, 71, 38, 150, 118, 223, 14, 184, 185, 223, 94, 221, 217, 51, 144, 207, 191, 26, 203, 164, 234, 232, 17, 40, 246, 185, 139, 123, 45, 1, 28, 134, 105, 132, 115, 98, 190, 126, 149, 141, 127, 226, 101, 225, 77, 147, 192, 188, 81, 50, 215, 87, 243, 126, 79, 114, 21, 142, 47, 88, 193, 18, 29, 98, 183, 34, 231, 26, 252, 137, 62, 48, 77, 174, 179, 237, 49, 141, 118, 157, 174, 34, 249, 242, 85, 81, 233, 201, 36, 20, 194, 144, 229, 15, 19, 231, 183, 81, 128, 119, 84, 43, 87, 66, 196, 79, 252, 207, 2, 187, 217, 49, 114, 80, 138, 134, 170, 87, 91, 70, 149, 215, 155, 223, 143, 147, 20, 73, 121, 162, 179, 157, 19, 146, 104, 28, 20, 208, 57, 232, 221, 168, 84, 7, 6, 72, 67, 191, 205, 87, 234, 149, 190, 203, 121, 73, 125, 51, 0, 123, 241, 203, 173, 210, 212, 210, 178, 63, 156, 116, 97, 233, 5, 175, 167, 175, 55, 13, 219, 20, 74, 62, 220, 44, 34, 71, 8, 181, 48, 10, 19, 22, 189, 212, 121, 207, 25, 79, 207, 77, 142, 251, 188, 228, 212, 129, 49, 115, 236, 92, 211, 187, 117, 3, 30, 125, 241, 237, 69, 222, 163, 91, 22, 240, 30, 209, 107, 222, 0, 178, 124, 59, 174, 235, 138, 187, 225, 73, 148, 59, 96, 128, 217, 10, 113, 157, 62, 55, 116, 143, 51, 248, 60, 107, 13, 165, 49, 50, 87, 49, 232, 254, 56, 208, 30, 56, 102, 29, 139, 147, 15, 78, 64, 114, 253, 90, 188, 182, 10, 220, 47, 203, 227, 119, 94, 218, 27, 131, 38, 208, 158, 183, 63, 192, 55, 174, 53, 212, 133, 73, 205, 136, 8, 32, 48, 184, 226, 104, 225, 143, 138, 194, 126, 58, 14, 193, 238, 2, 7, 186, 17, 66, 225, 172, 48, 33, 249, 208, 231, 157, 34, 23, 210, 153, 100, 242, 109, 80, 123, 130, 121, 9, 201, 79, 223, 11, 6, 121, 171, 43, 35, 165, 100, 110, 206, 78, 183, 251, 212, 90, 80, 2, 90, 37, 197, 103, 122, 28, 40, 58, 87, 174, 182, 147, 214, 56, 118, 133, 110, 77, 29, 141, 45, 73, 99, 56, 203, 183, 51, 166, 252, 217, 20, 114, 100, 38, 68, 161, 202, 22, 64, 39, 238, 49, 30, 105, 2, 27, 150, 54, 49, 121, 193, 52, 0, 216, 22, 93, 78, 110, 89, 137, 109, 21, 176, 232, 123, 17, 186, 91, 17, 218, 24, 192, 195, 87, 60, 123, 167, 194, 167, 188, 60, 143, 161, 206, 42, 217, 113, 46, 129, 228, 199, 119, 83, 71, 30, 74, 77, 188, 72, 242, 27, 121, 196, 89, 239, 25, 151, 57, 140, 79, 108, 106, 243, 27, 145, 232, 21, 245, 1, 175, 173, 34, 13, 40, 232, 240, 179, 91, 219, 24, 180, 55, 201, 37, 47, 131, 55, 84, 123, 245, 105, 37, 54, 249, 10, 233, 231, 65, 24, 246, 182, 90, 231, 161, 0, 150, 29, 242, 45, 10, 229, 215, 224, 56, 6, 128, 117, 81, 24, 35, 213, 173, 173, 252, 114, 38, 252, 119, 76, 71, 39, 238, 117, 251, 131, 165, 136, 217, 130, 138, 44, 126, 10, 109, 55, 8, 199, 157, 228, 18, 217, 44, 18, 92, 87, 224, 16, 38, 125, 229, 58, 126, 28, 82, 223, 110, 213, 163, 184, 242, 236, 70, 136, 82, 204, 55, 161, 66, 202, 141, 172, 3, 192, 84, 13, 23, 29, 89, 137, 10, 173, 87, 50, 213, 6, 84, 176, 149, 2, 129, 254, 111, 139, 40, 233, 230, 177, 191, 81, 235, 13, 120, 202, 159, 249, 49, 206, 33, 225, 30, 204, 103, 181, 112, 235, 214, 24, 208, 61, 14, 65, 149, 73, 186, 125, 180, 19, 139, 197, 26, 15, 210, 186, 45, 227, 1, 181, 133, 206, 167, 63, 222, 74, 14, 23, 113, 231, 208, 47, 97, 3, 218, 110, 12, 119, 164, 113, 59, 176, 25, 74, 91, 68, 224, 58, 43, 105, 31, 248, 196, 80, 189, 27, 209, 216, 6, 106, 125, 201, 229, 5, 131, 143, 171, 99, 116, 200, 114, 237, 173, 212, 51, 37, 8, 35, 237, 249, 1, 38, 146, 29, 254, 160, 56, 34, 200, 251, 144, 208, 199, 200, 182, 43, 192, 37, 34, 130, 119, 44, 152, 72, 235, 130, 193, 215, 124, 15, 65, 209, 134, 213, 55, 82, 69, 101, 90, 106, 143, 96, 220, 99, 240, 233, 97, 5, 2, 206, 43, 44, 159, 29, 199, 96, 78, 28, 67, 48, 52, 43, 29, 213, 59, 136, 141, 122, 207, 187, 215, 55, 230, 68, 104, 106, 80, 249, 115, 7, 235, 1, 219, 20, 140, 57, 80, 142, 206, 116, 19, 93, 225, 205, 138, 160, 144, 110, 206, 230, 252, 214, 134, 129, 202, 190, 94, 225, 143, 113, 220, 18, 149, 178, 232, 153, 242, 32, 189, 11, 98, 130, 10, 88, 225, 86, 84, 200, 223, 94, 61, 52, 90, 85, 158, 113, 146, 9, 222, 124, 183, 90, 75, 16, 231, 202, 15, 91, 118, 108, 210, 187, 140, 219, 246, 94, 203, 212, 22, 252, 77, 229, 101, 8, 70, 1, 253, 114, 227, 166, 27, 121, 74, 66, 254, 36, 100, 29, 246, 213, 253, 231, 167, 46, 62, 70, 209, 113, 1, 30, 20, 182, 225, 242, 230, 68, 193, 6, 32, 198, 114, 176, 38, 200, 65, 195, 133, 34, 197, 122, 130, 109, 223, 45, 14, 223, 5, 80, 134, 116, 131, 190, 58, 27, 153, 76, 132, 40, 34, 252, 24, 174, 149, 82, 145, 27, 82, 142, 158, 22, 130, 30, 167, 244, 5, 202, 29, 247, 133, 170, 24, 142, 91, 77, 184, 10, 136, 40, 105, 26, 231, 215, 128, 168, 6, 70, 221, 124, 191, 34, 134, 22, 247, 39, 131, 130, 184, 142, 238, 175, 242, 201, 121, 92, 126, 8, 26, 170, 229, 180, 59, 161, 162, 54, 218, 225, 73, 210, 214, 107, 62, 115, 31, 15, 186, 205, 217, 152, 194, 8, 217, 24, 185, 0, 53, 57, 62, 192, 36, 130, 240, 246, 111, 240, 168, 67, 255, 19, 27, 164, 108, 120, 180, 99, 76, 31, 39, 58, 28, 5, 48, 41, 194, 105, 191, 178, 120, 202, 90, 44, 74, 162, 217, 234, 186, 133, 114, 82, 121, 17, 209, 191, 75, 69, 90, 130, 65, 43, 175, 105, 72, 228, 227, 218, 225, 252, 118, 76, 11, 59, 223, 134, 219, 188, 236, 90, 205, 102, 168, 12, 61, 54, 198, 111, 191, 212, 252, 36, 25, 47, 126, 80, 103, 19, 97, 247, 225, 8, 190, 22, 109, 118, 174, 95, 69, 61, 182, 51, 228, 169, 199, 92, 111, 2, 12, 216, 226, 162, 113, 120, 206, 9, 164, 242, 41, 69, 244, 39, 68, 27, 217, 85, 252, 128, 36, 241, 144, 149, 108, 182, 44, 142, 224, 44, 49, 159, 240, 125, 48, 176, 206, 184, 207, 11, 155, 211, 103, 109, 76, 220, 232, 51, 114, 129, 70, 253, 148, 186, 222, 17, 76, 162, 199, 233, 92, 216, 172, 9, 228, 19, 6, 83, 50, 178, 229, 26, 221, 232, 101, 88, 69, 9, 87, 155, 104, 111, 195, 103, 232, 42, 229, 225, 232, 67, 56, 136, 32, 44, 19, 240, 229, 168, 64, 32, 226, 203, 120, 11, 218, 28, 250, 50, 106, 89, 112, 8, 163, 66, 29, 240, 217, 178, 133, 112, 50, 1, 34, 142, 79, 85, 68, 47, 156, 227, 22, 67, 79, 180, 201, 19, 206, 77, 67, 33, 80, 144, 213, 177, 226, 170, 124, 163, 67, 22, 43, 182, 43, 46, 68, 40, 57, 127, 183, 32, 16, 117, 242, 178, 94, 34, 15, 39, 34, 144, 0, 193, 68, 17, 13, 13, 164, 134, 18, 91, 198, 116, 158, 192, 232, 196, 224, 244, 149, 208, 169, 153, 221, 92, 106, 49, 177, 61, 222, 12, 218, 227, 219, 17, 4, 196, 26, 108, 212, 177, 146, 70, 156, 225, 118, 98, 72, 1, 219, 173, 100, 248, 149, 249, 193, 110, 83, 37, 194, 4, 177, 47, 39, 191, 86, 160, 41, 172, 78, 8, 227, 134, 93, 7, 114, 141, 184, 128, 235, 105, 12, 160, 63, 207, 138, 186, 96, 78, 43, 50, 201, 213, 228, 21, 210, 167, 36, 179, 17, 164, 165, 187, 231, 135, 194, 48, 200, 101, 189, 142, 221, 56, 207, 11, 90, 0, 57, 84, 18, 151, 113, 240, 198, 36, 34, 33, 100, 42, 16, 69, 149, 144, 145, 140, 204, 56, 51, 79, 85, 29, 127, 151, 26, 144, 12, 131, 235, 215, 106, 220, 115, 115, 102, 13, 79, 64, 121, 18, 165, 126, 37, 118, 174, 196, 186, 63, 34, 71, 73, 125, 23, 214, 153, 188, 63, 32, 40, 210, 90, 222, 3, 134, 60, 26, 191, 122, 218, 56, 177, 30, 129, 207, 184, 75, 44, 24, 168, 81, 177, 242, 210, 108, 29, 162, 72, 8, 90, 99, 78, 182, 140, 126, 222, 34, 60, 191, 47, 142, 2, 3, 255, 12, 179, 183, 157, 105, 155, 70, 202, 33, 231, 53, 193, 10, 237, 29, 0, 223, 196, 228, 235, 33, 213, 229, 14, 117, 82, 236, 152, 114, 228, 32, 77, 3, 37, 66, 238, 172, 155, 15, 242, 111, 8, 57, 174, 213, 159, 235, 65, 30, 71, 20, 75, 148, 144, 175, 192, 123, 215, 150, 123, 95, 46, 48, 153, 38, 54, 52, 67, 108, 108, 53, 31, 141, 42, 37, 6, 42, 231, 119, 9, 231, 90, 218, 219, 157, 138, 52, 220, 62, 239, 69, 121, 124, 46, 241, 158, 14, 12, 152, 94, 60, 50, 132, 2, 27, 203, 190, 95, 66, 173, 30, 237, 119, 15, 223, 245, 105, 114, 215, 182, 36, 98, 186, 170, 42, 10, 124, 33, 7, 233, 30, 13, 144, 114, 111, 184, 243, 237, 12, 242, 177, 81, 219, 80, 178, 157, 151, 173, 126, 22, 39, 109, 111, 185, 21, 13, 50, 87, 238, 186, 30, 183, 12, 43, 121, 53, 95, 137, 115, 214, 147, 148, 99, 138, 118, 183, 72, 68, 119, 207, 125, 172, 98, 26, 221, 182, 84, 222, 73, 216, 121, 168, 24, 73, 207, 93, 185, 17, 227, 3, 196, 86, 212, 62, 51, 198, 221, 86, 135, 212, 183, 188, 3, 61, 224, 212, 117, 14, 80, 126, 254, 121, 23, 49, 32, 223, 251, 200, 211, 119, 7, 184, 193, 121, 41, 76, 215, 58, 48, 208, 173, 181, 213, 78, 68, 220, 84, 34, 47, 47, 249, 201, 187, 61, 20, 32, 39, 202, 7, 57, 31, 92, 3, 83, 132, 55, 147, 143, 127, 29, 147, 167, 25, 173, 97, 122, 200, 236, 19, 20, 212, 119, 235, 12, 63, 254, 208, 173, 46, 161, 54, 82, 101, 218, 9, 196, 254, 222, 191, 54, 197, 189, 218, 34, 163, 199, 129, 151, 250, 177, 161, 83, 249, 214, 62, 238, 155, 59, 12, 61, 2, 82, 169, 186, 52, 138, 3, 31, 180, 113, 27, 183, 186, 249, 199, 66, 118, 7, 53, 60, 228, 20, 227, 137, 187, 88, 18, 238, 166, 196, 241, 231, 18, 140, 228, 156, 190, 239, 86, 61, 85, 158, 251, 217, 36, 222, 38, 17, 197, 91, 173, 131, 106, 152, 23, 73, 6, 208, 146, 70, 55, 98, 99, 55, 38, 75, 171, 176, 228, 63, 207, 128, 88, 83, 2, 13, 237, 157, 33, 207, 48, 3, 133, 100, 171, 152, 94, 172, 210, 19, 147, 190, 122, 43, 249, 56, 25, 214, 227, 40, 49, 225, 245, 179, 129, 65, 21, 29, 125, 10, 42, 105, 212, 83, 37, 163, 83, 244, 35, 217, 201, 8, 96, 80, 234, 190, 176, 176, 33, 106, 54, 52, 11, 58, 250, 103, 100, 225, 219, 199, 14, 172, 77, 214, 116, 138, 12, 195, 34, 68, 69, 164, 10, 230, 33, 50, 193, 13, 99, 72, 24, 212, 76, 246, 29, 145, 231, 74, 92, 24, 11, 212, 180, 29, 11, 63, 9, 52, 43, 207, 112, 97, 246, 131, 90, 89, 16, 223, 129, 215, 89, 28, 40, 52, 2, 255, 3, 55, 20, 14, 249, 86, 255, 188, 38, 254, 46, 45, 191, 143, 44, 140, 201, 67, 212, 136, 160, 22, 164, 165, 75, 110, 247, 42, 28, 119, 248, 45, 59, 106, 35, 6, 118, 231, 120, 108, 191, 65, 61, 104, 245, 212, 109, 64, 165, 178, 17, 170, 130, 20, 85, 253, 66, 71, 120, 94, 9, 202, 48, 76, 63, 130, 118, 33, 3, 173, 197, 236, 254, 136, 243, 45, 140, 180, 131, 2, 31, 32, 164, 254, 205, 49, 209, 10, 15, 149, 147, 156, 25, 146, 96, 219, 79, 183, 111, 230, 159, 84, 40, 145, 199, 124, 58, 157, 55, 240, 66, 236, 132, 45, 203, 168, 202, 0, 51, 19, 99, 220, 175, 245, 20, 12, 2, 15, 78, 115, 235, 215, 216, 86, 91, 233, 190, 208, 213, 47, 106, 139, 132, 52, 190, 137, 185, 7, 146, 188, 182, 12, 247, 140, 99, 58, 9, 189, 66, 113, 222, 13, 107, 197, 242, 217, 207, 195, 101, 115, 198, 211, 171, 11, 11, 233, 140, 204, 31, 198, 135, 113, 236, 136, 159, 253, 14, 244, 39, 161, 79, 231, 40, 36, 205, 24, 224, 50, 62, 111, 6, 110, 86, 189, 93, 3, 214, 30, 254, 112, 15, 4, 78, 231, 73, 36, 92, 95, 236, 170, 27, 158, 54, 58, 75, 229, 205, 166, 67, 30, 71, 221, 114, 110, 75, 168, 124, 61, 144, 233, 232, 68, 194, 86, 129, 207, 237, 216, 95, 116, 127, 120, 43, 214, 138, 87, 219, 128, 63, 80, 229, 76, 120, 91, 145, 165, 115, 52, 13, 26, 21, 8, 47, 121, 57, 109, 236, 74, 240, 124, 50, 28, 120, 178, 35, 40, 55, 254, 37, 175, 143, 50, 19, 114, 224, 127, 123, 113, 168, 205, 145, 195, 38, 247, 123, 116, 31, 106, 111, 202, 142, 159, 203, 244, 176, 217, 34, 9, 125, 46, 38, 142, 104, 65, 149, 20, 196, 70, 101, 246, 110, 3, 48, 103, 234, 181, 253, 131, 189, 228, 118, 80, 163, 223, 94, 249, 29, 247, 9, 95, 79, 255, 212, 188, 59, 8, 93, 164, 227, 184, 83, 31, 60, 6, 22, 4, 217, 176, 81, 206, 103, 126, 33, 68, 168, 56, 224, 162, 250, 110, 7, 16, 31, 105, 107, 209, 212, 30, 46, 223, 98, 2, 100, 11, 110, 225, 36, 9, 42, 100, 1, 167, 116, 234, 34, 156, 200, 101, 221, 181, 26, 67, 6, 188, 113, 74, 24, 89, 50, 192, 215, 58, 235, 166, 101, 236, 255, 112, 101, 176, 218, 141, 184, 160, 79, 12, 110, 60, 109, 16, 106, 158, 28, 162, 41, 138, 201, 33, 118, 176, 214, 85, 41, 160, 72, 244, 160, 38, 183, 111, 244, 11, 82, 140, 219, 133, 208, 228, 210, 42, 2, 135, 133, 125, 240, 95, 4, 235, 183, 124, 136, 167, 84, 37, 83, 204, 49, 167, 15, 88, 216, 145, 201, 235, 24, 172, 18, 39, 122, 191, 208, 68, 152, 224, 236, 81, 7, 159, 2, 51, 218, 25, 140, 162, 61, 228, 177, 12, 176, 109, 46, 100, 110, 37, 88, 56, 160, 208, 159, 132, 167, 213, 159, 15, 130, 76, 55, 46, 240, 82, 20, 76, 126, 126, 108, 134, 8, 238, 246, 202, 196, 70, 151, 49, 251, 153, 130, 14, 220, 212, 233, 184, 157, 173, 79, 132, 180, 88, 64, 30, 112, 74, 10, 43, 246, 75, 24, 16, 122, 186, 224, 157, 26, 222, 56, 187, 213, 89, 85, 85, 191, 29, 124, 202, 67, 84, 174, 64, 157, 199, 13, 1, 196, 241, 24, 173, 75, 135, 2, 63, 180, 103, 220, 51, 220, 234, 178, 240, 156, 147, 75, 137, 65, 130, 23, 144, 21, 58, 247, 138, 21, 151, 18, 243, 68, 120, 39, 232, 132, 196, 76, 106, 167, 185, 178, 191, 91, 80, 141, 102, 163, 226, 185, 140, 236, 187, 111, 65, 12, 251, 78, 76, 191, 233, 96, 94, 226, 70, 4, 160, 108, 57, 133, 130, 65, 242, 77, 4, 166, 240, 109, 89, 228, 152, 239, 25, 246, 145, 185, 218, 177, 196, 182, 19, 39, 166, 218, 165, 243, 116, 18, 43, 236, 72, 105, 146, 254, 128, 196, 223, 9, 107, 142, 211, 156, 201, 106, 172, 129, 58, 86, 74, 53, 33, 16, 3, 119, 47, 16, 12, 49, 55, 22, 15, 66, 152, 18, 149, 110, 192, 48, 69, 98, 200, 116, 209, 94, 98, 175, 235, 85, 31, 97, 35, 237, 160, 241, 137, 147, 246, 174, 241, 126, 124, 38, 51, 235, 161, 139, 155, 77, 162, 111, 192, 162, 146, 10, 141, 47, 158, 162, 82, 252, 159, 247, 61, 156, 125, 135, 226, 108, 109, 22, 147, 143, 231, 45, 221, 240, 144, 55, 132, 94, 87, 45, 210, 99, 80, 182, 237, 244, 69, 222, 15, 71, 115, 126, 0, 222, 229, 172, 115, 91, 104, 67, 204, 136, 168, 47, 49, 45, 72, 142, 232, 40, 141, 111, 66, 134, 109, 234, 218, 81, 6, 191, 29, 115, 121, 101, 69, 67, 69, 49, 204, 152, 65, 151, 174, 156, 162, 7, 239, 237, 82, 249, 71, 138, 92, 88, 113, 68, 211, 139, 58, 9, 85, 176, 160, 9, 27, 27, 6, 221, 72, 68, 78, 152, 29, 214, 85, 75, 0, 36, 252, 182, 159, 187, 37, 145, 250, 189, 104, 83, 50, 254, 18, 198, 149, 239, 135, 153, 86, 133, 142, 161, 5, 96, 49, 220, 40, 195, 232, 202, 220, 36, 142, 57, 204, 229, 209, 151, 69, 162, 89, 201, 223, 100, 10, 86, 122, 36, 218, 59, 82, 66, 20, 77, 110, 166, 116, 114, 66, 199, 233, 200, 6, 21, 212, 14, 109, 250, 242, 185, 0, 248, 248, 151, 233, 215, 157, 57, 186, 60, 124, 229, 84, 137, 104, 81, 89, 159, 224, 191, 93, 189, 245, 102, 218, 2, 45, 85, 20, 167, 146, 206, 27, 60, 109, 142, 26, 26, 188, 238, 218, 127, 227, 244, 237, 254, 227, 130, 92, 160, 5, 139, 130, 202, 5, 203, 84, 46, 211, 145, 106, 187, 223, 137, 77, 107, 184, 156, 176, 35, 241, 191, 16, 66, 213, 197, 80, 127, 247, 6, 175, 250, 78, 219, 198, 186, 175, 158, 133, 18, 25, 32, 126, 255, 254, 249, 113, 142, 102, 74, 67, 171, 230, 87, 83, 105, 188, 169, 238, 90, 115, 212, 13, 219, 164, 221, 246, 209, 20, 138, 220, 6, 185, 61, 42, 76, 238, 143, 117, 139, 210, 229, 25, 32, 8, 50, 163, 204, 116, 219, 192, 26, 166, 121, 63, 209, 222, 178, 78, 109, 107, 167, 43, 42, 67, 105, 88, 149, 94, 201, 89, 105, 48, 210, 238, 105, 253, 6, 211, 236, 253, 49, 135, 31, 52, 176, 169, 58, 246, 21, 61, 69, 70, 207, 150, 25, 87, 200, 26, 47, 196, 150, 233, 170, 144, 207, 181, 160, 178, 184, 213, 177, 60, 241, 155, 216, 134, 139, 220, 141, 246, 66, 216, 115, 246, 241, 209, 32, 55, 161, 9, 208, 174, 58, 24, 12, 244, 252, 5, 12, 80, 181, 119, 38, 188, 22, 233, 26, 136, 115, 44, 38, 115, 99, 62, 50, 211, 250, 81, 9, 71, 210, 65, 138, 95, 154, 20, 50, 98, 69, 185, 66, 162, 79, 67, 165, 85, 100, 4, 247, 178, 72, 137, 194, 171, 122, 153, 59, 183, 22, 45, 6, 113, 104, 234, 216, 110, 172, 44, 193, 234, 160, 89, 67, 85, 170, 255, 233, 189, 204, 62, 117, 46, 74, 47, 254, 2, 137, 202, 122, 172, 99, 35, 24, 28, 7, 196, 11, 103, 98, 83, 223, 249, 173, 44, 129, 103, 104, 173, 194, 2, 183, 135, 254, 97, 69, 11, 248, 197, 215, 99, 175, 42, 25, 7, 6, 161, 172, 223, 172, 252, 249, 147, 42, 206, 151, 52, 134, 140, 82, 97, 108, 69, 40, 247, 159, 72, 104, 61, 225, 120, 77, 189, 76, 117, 40, 17, 4, 15, 43, 85, 121, 71, 104, 139, 165, 89, 152, 152, 95, 140, 141, 69, 103, 54, 64, 210, 166, 67, 247, 121, 183, 169, 48, 202, 244, 44, 87, 214, 11, 12, 102, 40, 219, 178, 9, 78, 238, 204, 42, 255, 211, 48, 156, 118, 62, 202, 236, 196, 39, 249, 95, 115, 26, 163, 209, 189, 2, 193, 221, 21, 37, 39, 242, 179, 168, 29, 218, 47, 243, 70, 62, 18, 52, 106, 251, 232, 117, 215, 106, 46, 207, 63, 66, 114, 204, 215, 195, 19, 126, 242, 105, 210, 20, 65, 187, 214, 254, 184, 225, 111, 42, 107, 49, 168, 137, 149, 28, 212, 6, 191, 81, 238, 209, 72, 111, 3, 4, 11, 84, 176, 169, 66, 95, 27, 26, 15, 162, 138, 151, 43, 168, 64, 252, 240, 114, 207, 220, 54, 94, 51, 241, 245, 236, 213, 155, 73, 37, 106, 85, 25, 25, 244, 64, 146, 200, 247, 42, 123, 175, 63, 50, 84, 36, 26, 35, 196, 238, 5, 30, 61, 108, 37, 93, 212, 156, 158, 85, 75, 255, 132, 102, 147, 180, 8, 106, 20, 221, 91, 22, 28, 184, 8, 199, 165, 241, 130, 147, 108, 40, 20, 215, 230, 3, 94, 87, 242, 88, 82, 179, 5, 191, 217, 162, 184, 196, 178, 33, 148, 180, 244, 28, 34, 61, 169, 217, 40, 253, 203, 15, 233, 184, 24, 15, 89, 59, 233, 239, 184, 193, 80, 136, 186, 135, 231, 106, 179, 235, 146, 48, 207, 22, 123, 25, 237, 111, 51, 83, 53, 173, 160, 227, 156, 190, 3, 127, 174, 132, 27, 157, 54, 21, 139, 139, 53, 164, 156, 16, 11, 138, 89, 246, 86, 245, 73, 17, 229, 250, 107, 55, 49, 128, 191, 121, 42, 42, 23, 14, 153, 232, 81, 45, 252, 106, 18, 188, 237, 66, 79, 107, 145, 251, 184, 92, 107, 156, 35, 17, 49, 44, 39, 71, 13, 48, 231, 158, 235, 209, 97, 96, 83, 139, 129, 186, 169, 193, 178, 218, 23, 253, 188, 12, 246, 20, 125, 149, 41, 219, 200, 15, 148, 205, 94, 195, 239, 29, 240, 99, 82, 20, 35, 177, 50, 31, 252, 139, 124, 107, 84, 236, 63, 241, 98, 172, 241, 27, 153, 57, 98, 124, 149, 39, 105, 118, 27, 98, 217, 67, 97, 58, 186, 251, 118, 7, 101, 152, 103, 223, 113, 21, 164, 177, 11, 215, 147, 206, 178, 223, 40, 63, 14, 194, 61, 39, 53, 143, 174, 177, 6, 147, 94, 132, 112, 252, 29, 12, 246, 2, 20, 141, 99, 17, 1, 109, 58, 14, 153, 153, 188, 207, 29, 142, 19, 108, 174, 33, 160, 202, 28, 193, 18, 236, 180, 42, 254, 62, 31, 185, 210, 61, 176, 60, 210, 169, 170, 160, 160, 79, 144, 56, 103, 34, 115, 139, 17, 26, 162, 34, 109, 101, 22, 210, 171, 216, 131, 16, 73, 20, 202, 98, 56, 171, 23, 144, 2, 200, 29, 50, 233, 8, 1, 154, 113, 65, 28, 217, 254, 78, 12, 40, 180, 166, 208, 65, 249, 119, 34, 204, 170, 141, 15, 113, 255, 206, 253, 90, 119, 136, 153, 15, 221, 12, 21, 123, 128, 233, 46, 243, 205, 76, 140, 7, 137, 65, 129, 112, 38, 132, 240, 180, 54, 138, 127, 248, 7, 164, 214, 7, 140, 49, 70, 175, 175, 22, 30, 122, 172, 57, 125, 201, 120, 78, 127, 13, 126, 229, 49, 232, 240, 180, 244, 26, 48, 3, 176, 183, 83, 251, 226, 53, 168, 240, 52, 238, 68, 30, 9, 6, 37, 180, 249, 203, 53, 101, 41, 36, 58, 186, 53, 116, 135, 148, 125, 191, 197, 201, 198, 16, 42, 253, 220, 52, 148, 117, 45, 108, 237, 60, 247, 42, 105, 89, 78, 14, 6, 4, 194, 44, 35, 234, 163, 207, 243, 169, 182, 238, 43, 88, 62, 10, 63, 83, 241, 232, 14, 85, 66, 185, 98, 27, 179, 139, 157, 42, 231, 105, 1, 89, 45, 0, 204, 68, 227, 64, 155, 45, 223, 151, 234, 84, 196, 85, 128, 232, 213, 136, 215, 10, 26, 79, 71, 96, 157, 86, 9, 73, 248, 105, 43, 194, 106, 45, 73, 75, 97, 237, 54, 215, 37, 155, 76, 73, 179, 21, 167, 17, 7, 78, 135, 112, 19, 177, 156, 50, 204, 108, 104, 40, 148, 240, 254, 101, 237, 44, 41, 125, 160, 52, 54, 161, 124, 47, 145, 246, 225, 133, 86, 24, 173, 29, 30, 107, 1, 164, 202, 83, 212, 219, 224, 63, 31, 101, 82, 50, 52, 22, 244, 167, 190, 249, 68, 29, 126, 39, 193, 47, 110, 26, 96, 184, 49, 73, 233, 164, 17, 114, 89, 158, 162, 0, 45, 60, 163, 102, 78, 184, 217, 19, 24, 90, 79, 83, 175, 156, 216, 5, 247, 132, 90, 74, 191, 71, 122, 14, 193, 135, 14, 54, 100, 253, 57, 238, 171, 11, 150, 56, 143, 242, 158, 29, 217, 162, 190, 21, 172, 109, 74, 71, 225, 153, 170, 205, 54, 185, 37, 206, 205, 183, 29, 81, 131, 90, 116, 242, 19, 210, 123, 89, 202, 44, 102, 26, 45, 80, 126, 94, 100, 249, 91, 142, 85, 203, 143, 59, 93, 153, 89, 207, 63, 75, 156, 19, 216, 179, 170, 223, 223, 94, 179, 110, 78, 170, 151, 1, 71, 129, 221, 236, 176, 244, 140, 40, 109, 95, 174, 64, 251, 63, 189, 118, 149, 229, 195, 235, 172, 120, 207, 57, 29, 25, 182, 201, 158, 160, 161, 26, 160, 191, 136, 153, 46, 101, 53, 94, 136, 184, 55, 235, 52, 191, 192, 113, 113, 247, 209, 223, 66, 59, 151, 191, 232, 138, 103, 80, 16, 214, 24, 24, 106, 78, 38, 115, 37, 39, 9, 181, 28, 168, 100, 224, 18, 58, 200, 249, 71, 18, 203, 230, 64, 77, 214, 103, 22, 57, 254, 96, 197, 32, 74, 19, 26, 201, 119, 110, 55, 64, 180, 34, 225, 123, 202, 67, 79, 229, 206, 26, 143, 94, 73, 95, 242, 77, 56, 228, 155, 110, 98, 177, 18, 27, 40, 31, 112, 211, 71, 59, 212, 192, 65, 88, 225, 185, 246, 232, 184, 220, 131, 176, 104, 76, 156, 92, 127, 160, 233, 190, 158, 145, 197, 127, 53, 218, 224, 27, 150, 58, 36, 129, 132, 204, 173, 104, 1, 154, 175, 59, 92, 168, 35, 100, 195, 40, 255, 164, 213, 199, 223, 140, 206, 124, 164, 108, 24, 123, 60, 23, 117, 124, 139, 180, 235, 55, 33, 69, 32, 10, 126, 60, 175, 25, 126, 218, 7, 87, 50, 48, 229, 38, 29, 243, 144, 92, 104, 0, 242, 226, 70, 18, 53, 167, 235, 75, 217, 6, 51, 62, 90, 224, 249, 43, 12, 17, 243, 113, 237, 195, 164, 229, 22, 111, 89, 52, 122, 205, 181, 180, 7, 175, 221, 26, 216, 156, 28, 117, 57, 188, 7, 143, 241, 36, 94, 204, 83, 152, 137, 251, 110, 75, 129, 158, 101, 87, 159, 230, 83, 60, 154, 99, 145, 171, 101, 0, 23, 190, 177, 121, 181, 71, 220, 51, 42, 230, 54, 4, 93, 91, 36, 137, 64, 11, 193, 19, 170, 19, 222, 218, 170, 20, 222, 39, 203, 4, 127, 19, 221, 153, 236, 126, 205, 12, 157, 139, 63, 127, 46, 183, 96, 113, 2, 59, 68, 206, 25, 217, 0, 15, 116, 176, 43, 104, 191, 196, 50, 41, 99, 43, 193, 189, 111, 250, 255, 147, 186, 103, 237, 58, 186, 233, 39, 164, 191, 3, 13, 240, 163, 106, 87, 25, 61, 226, 237, 67, 13, 252, 48, 153, 103, 7, 95, 112, 56, 251, 122, 114, 150, 220, 56, 154, 226, 82, 26, 252, 135, 57, 138, 210, 32, 45, 240, 155, 47, 127, 163, 24, 99, 39, 220, 54, 51, 23, 105, 146, 253, 120, 219, 146, 91, 135, 75, 208, 7, 29, 189, 19, 241, 36, 75, 215, 39, 110, 239, 25, 44, 218, 65, 162, 49, 240, 120, 225, 160, 5, 189, 61, 115, 218, 198, 252, 246, 121, 65, 113, 216, 86, 111, 149, 78, 204, 206, 45, 145, 246, 83, 148, 79, 244, 9, 114, 151, 167, 101, 46, 203, 20, 74, 33, 164, 188, 177, 224, 121, 93, 31, 77, 234, 226, 24, 18, 215, 216, 175, 239, 230, 236, 110, 149, 255, 84, 222, 50, 64, 51, 133, 162, 17, 43, 141, 175, 169, 182, 246, 173, 148, 77, 21, 222, 244, 59, 158, 66, 124, 113, 34, 246, 14, 179, 20, 7, 168, 2, 158, 219, 18, 49, 252, 137, 157, 0, 197, 135, 77, 3, 139, 61, 40, 1, 95, 210, 89, 5, 75, 20, 241, 22, 118, 255, 164, 23, 163, 2, 19, 108, 165, 102, 241, 167, 111, 197, 109, 25, 98, 156, 126, 23, 101, 65, 40, 60, 68, 86, 88, 114, 85, 96, 254, 39, 168, 215, 80, 94, 48, 33, 40, 38, 64, 89, 133, 78, 110, 98, 142, 13, 143, 11, 181, 44, 120, 46, 225, 165, 136, 29, 95, 123, 32, 247, 121, 206, 237, 106, 140, 185, 109, 70, 221, 212, 193, 189, 106, 225, 119, 247, 170, 11, 132, 80, 229, 130, 204, 133, 205, 44, 175, 131, 107, 179, 237, 13, 150, 135, 3, 25, 106, 135, 217, 58, 221, 105, 94, 100, 82, 122, 8, 213, 104, 8, 165, 8, 92, 244, 141, 99, 249, 207, 75, 46, 96, 196, 122, 162, 146, 175, 103, 110, 56, 95, 245, 131, 64, 150, 199, 183, 165, 120, 74, 22, 218, 30, 215, 234, 194, 111, 111, 5, 227, 45, 49, 181, 95, 201, 230, 185, 97, 159, 118, 79, 42, 187, 183, 71, 37, 106, 45, 96, 209, 111, 96, 131, 41, 7, 243, 11, 53, 36, 61, 229, 96, 175, 23, 58, 0, 178, 63, 181, 35, 59, 186, 80, 184, 237, 84, 134, 136, 212, 199, 74, 222, 233, 88, 19, 252, 44, 125, 2, 166, 98, 163, 191, 60, 191, 69, 151, 40, 41, 140, 231, 88, 158, 130, 158, 224, 27, 164, 99, 121, 18, 98, 224, 192, 233, 197, 24, 156, 45, 172, 173, 225, 16, 122, 46, 0, 144, 241, 59, 57, 180, 125, 228, 69, 233, 146, 55, 93, 117, 139, 19, 129, 30, 160, 6, 127, 139, 156, 212, 3, 2, 46, 236, 121, 24, 137, 245, 80, 175, 3, 89, 156, 228, 178, 195, 78, 213, 64, 248, 146, 42, 184, 49, 74, 128, 254, 203, 131, 28, 240, 213, 1, 5, 124, 19, 89, 170, 142, 167, 62, 12, 105, 46, 12, 150, 11, 47, 45, 196, 13, 215, 152, 72, 2, 53, 47, 0, 170, 33, 52, 21, 226, 51, 120, 0, 7, 236, 197, 120, 238, 195, 116, 79, 143, 214, 52, 47, 122, 3, 231, 210, 173, 222, 190, 241, 249, 71, 94, 102, 8, 204, 189, 70, 225, 132, 87, 30, 247, 93, 71, 180, 255, 166, 76, 186, 222, 212, 233, 248, 42, 197, 218, 98, 250, 240, 31, 55, 39, 71, 102, 14, 223, 160, 96, 12, 7, 90, 104, 26, 6, 65, 244, 182, 233, 75, 205, 84, 197, 84, 62, 87, 236, 156, 36, 206, 250, 47, 241, 61, 168, 165, 86, 72, 110, 0, 40, 156, 171, 162, 201, 25, 69, 15, 192, 137, 184, 26, 28, 243, 164, 195, 5, 45, 127, 61, 110, 151, 168, 232, 180, 42, 139, 80, 229, 125, 114, 201, 75, 77, 233, 7, 222, 42, 62, 119, 245, 107, 132, 180, 207, 31, 107, 129, 87, 146, 173, 221, 171, 135, 227, 131, 68, 244, 136, 43, 192, 86, 192, 130, 125, 207, 149, 158, 142, 40, 66, 68, 239, 220, 151, 158, 240, 19, 214, 170, 7, 103, 5, 91, 166, 152, 220, 248, 178, 183, 209, 69, 103, 39, 3, 178, 161, 0, 187, 77, 77, 7, 53, 153, 59, 145, 248, 30, 90, 176, 63, 18, 95, 193, 166, 165, 254, 27, 128, 192, 163, 90, 180, 99, 165, 116, 137, 208, 252, 62, 137, 238, 36, 33, 188, 210, 74, 1, 178, 37, 61, 86, 103, 57, 243, 83, 97, 18, 51, 151, 5, 195, 197, 148, 173, 127, 118, 36, 12, 23, 102, 179, 23, 106, 247, 15, 238, 57, 92, 133, 138, 84, 53, 249, 158, 229, 245, 78, 168, 247, 241, 238, 57, 0, 138, 77, 95, 219, 87, 177, 93, 211, 139, 34, 55, 84, 221, 34, 221, 15, 240, 87, 245, 110, 162, 19, 121, 223, 164, 239, 169, 115, 63, 94, 97, 219, 175, 46, 10, 33, 151, 36, 4, 119, 48, 248, 173, 243, 51, 25, 197, 36, 238, 221, 131, 198, 189, 175, 57, 129, 69, 140, 232, 216, 189, 102, 197, 178, 236, 9, 39, 148, 147, 122, 106, 22, 100, 117, 23, 123, 119, 21, 27, 127, 69, 123, 106, 25, 13, 232, 167, 142, 25, 182, 90, 70, 40, 38, 103, 78, 86, 178, 58, 194, 242, 88, 214, 117, 124, 247, 115, 74, 202, 29, 38, 232, 229, 55, 83, 67, 81, 161, 11, 92, 113, 73, 50, 149, 165, 78, 150, 111, 131, 229, 203, 117, 27, 109, 21, 31, 135, 2, 18, 243, 181, 29, 47, 88, 8, 5, 201, 128, 144, 72, 110, 187, 226, 5, 105, 93, 203, 114, 239, 241, 24, 170, 156, 140, 95, 79, 86, 252, 41, 234, 143, 63, 94, 41, 247, 64, 93, 210, 232, 115, 192, 12, 136, 120, 175, 33, 17, 53, 35, 56, 82, 182, 227, 65, 77, 3, 126, 39, 157, 215, 218, 72, 165, 91, 67, 24, 200, 191, 147, 133, 168, 240, 250, 97, 80, 180, 201, 200, 40, 165, 155, 177, 6, 221, 3, 141, 172, 106, 58, 195, 5, 128, 243, 119, 59, 51, 126, 27, 221, 232, 48, 95, 119, 30, 192, 202, 137, 73, 121, 55, 129, 165, 91, 172, 40, 132, 101, 246, 253, 218, 233, 37, 229, 155, 4, 200, 166, 85, 131, 36, 109, 51, 179, 151, 6, 32, 141, 184, 89, 209, 125, 44, 23, 166, 178, 69, 215, 109, 124, 93, 236, 248, 242, 230, 134, 25, 226, 61, 171, 104, 180, 35, 120, 113, 144, 80, 9, 54, 106, 64, 231, 208, 242, 39, 47, 11, 207, 126, 201, 90, 56, 64, 102, 168, 132, 162, 147, 53, 139, 103, 196, 218, 3, 0, 114, 47, 252, 59, 238, 45, 186, 108, 23, 170, 195, 198, 75, 160, 48, 164, 41, 109, 116, 100, 44, 16, 178, 49, 43, 14, 249, 109, 107, 21, 19, 9, 121, 247, 254, 239, 103, 101, 140, 205, 36, 113, 196, 129, 64, 51, 204, 202, 79, 74, 53, 18, 179, 7, 245, 91, 79, 37, 210, 152, 133, 226, 21, 39, 242, 50, 142, 182, 180, 85, 143, 140, 142, 205, 126, 185, 208, 50, 114, 231, 255, 226, 234, 65, 223, 143, 241, 145, 14, 150, 187, 77, 172, 232, 24, 39, 128, 161, 106, 220, 147, 76, 151, 60, 75, 177, 30, 189, 207, 146, 76, 50, 26, 203, 237, 161, 175, 44, 52, 192, 103, 26, 78, 153, 19, 78, 131, 17, 126, 17, 108, 178, 145, 74, 128, 128, 185, 213, 160, 160, 141, 236, 160, 246, 197, 19, 203, 51, 195, 12, 73, 66, 205, 15, 175, 127, 43, 157, 166, 22, 117, 109, 97, 223, 4, 88, 186, 227, 49, 173, 9, 210, 173, 182, 194, 67, 177, 173, 108, 39, 73, 177, 110, 132, 114, 157, 221, 94, 45, 27, 84, 20, 140, 191, 78, 55, 6, 59, 250, 31, 221, 217, 88, 255, 213, 206, 160, 190, 251, 68, 144, 1, 204, 119, 180, 122, 133, 98, 32, 66, 156, 177, 43, 16, 41, 97, 113, 39, 218, 164, 167, 93, 170, 66, 82, 17, 184, 99, 199, 140, 213, 140, 226, 253, 161, 167, 195, 119, 135, 36, 140, 175, 8, 162, 131, 28, 161, 114, 85, 147, 67, 71, 22, 13, 68, 158, 20, 74, 3, 51, 208, 164, 202, 68, 31, 164, 41, 229, 115, 178, 84, 255, 131, 200, 37, 38, 109, 13, 32, 113, 160, 131, 206, 59, 155, 39, 63, 236, 167, 88, 27, 19, 92, 129, 240, 140, 75, 84, 17, 32, 139, 193, 192, 243, 153, 132, 52, 228, 131, 31, 145, 196, 89, 195, 208, 8, 171, 79, 188, 245, 44, 144, 47, 162, 240, 233, 53, 236, 125, 93, 94, 57, 169, 236, 125, 250, 0, 40, 53, 48, 37, 46, 191, 250, 149, 35, 127, 195, 239, 183, 247, 120, 239, 71, 43, 32, 51, 155, 56, 37, 152, 129, 130, 50, 223, 8, 136, 209, 102, 71, 103, 39, 150, 12, 42, 179, 164, 109, 156, 212, 82, 111, 218, 20, 70, 164, 100, 188, 181, 196, 102, 207, 16, 243, 224, 249, 129, 101, 184, 87, 145, 7, 5, 26, 60, 35, 59, 159, 96, 244, 23, 187, 118, 90, 115, 15, 180, 223, 56, 39, 15, 49, 201, 81, 216, 194, 211, 112, 235, 201, 125, 211, 241, 87, 237, 246, 217, 34, 124, 252, 240, 140, 195, 57, 92, 144, 34, 154, 33, 218, 228, 180, 176, 44, 227, 235, 122, 181, 165, 233, 21, 191, 216, 56, 41, 18, 250, 200, 243, 23, 24, 77, 137, 220, 48, 58, 7, 13, 143, 73, 255, 67, 74, 143, 104, 157, 66, 97, 24, 82, 111, 221, 134, 106, 65, 140, 114, 123, 78, 117, 130, 10, 104, 2, 99, 201, 119, 113, 82, 122, 100, 101, 180, 220, 247, 106, 160, 240, 106, 52, 17, 183, 14, 24, 229, 165, 233, 129, 177, 113, 159, 122, 51, 3, 139, 18, 108, 115, 47, 122, 65, 140, 154, 91, 117, 58, 65, 129, 64, 85, 112, 236, 67, 211, 112, 155, 196, 59, 75, 195, 30, 205, 237, 180, 101, 1, 202, 103, 77, 28, 90, 110, 82, 34, 233, 122, 233, 132, 68, 10, 129, 116, 114, 182, 28, 206, 74, 205, 148, 45, 25, 206, 127, 208, 7, 200, 147, 10, 42, 91, 201, 6, 103, 2, 57, 17, 46, 15, 63, 190, 26, 209, 131, 212, 235, 208, 218, 29, 236, 102, 164, 87, 235, 135, 236, 249, 100, 109, 137, 21, 86, 11, 0, 107, 13, 215, 52, 181, 60, 217, 35, 162, 68, 159, 27, 72, 139, 239, 219, 28, 26, 29, 37, 131, 69, 199, 213, 181, 156, 31, 49, 37, 250, 241, 180, 180, 42, 126, 34, 69, 78, 178, 115, 187, 69, 193, 76, 232, 182, 196, 207, 51, 64, 125, 148, 12, 165, 112, 7, 238, 183, 243, 221, 43, 207, 124, 166, 56, 11, 17, 42, 130, 143, 184, 70, 33, 167, 190, 73, 242, 231, 141, 228, 137, 44, 192, 94, 75, 26, 198, 172, 136, 167, 235, 217, 36, 10, 248, 27, 182, 9, 78, 113, 245, 242, 156, 20, 158, 75, 28, 63, 192, 160, 173, 60, 83, 207, 28, 12, 169, 194, 251, 63, 129, 235, 35, 10, 24, 245, 131, 118, 240, 16, 156, 54, 146, 74, 173, 84, 40, 166, 61, 148, 245, 118, 121, 95, 190, 238, 133, 195, 218, 64, 40, 136, 179, 129, 108, 242, 7, 92, 60, 76, 79, 230, 105, 219, 102, 54, 68, 94, 227, 17, 169, 187, 172, 84, 161, 144, 119, 198, 201, 35, 189, 212, 166, 126, 17, 245, 242, 229, 38, 98, 162, 182, 31, 199, 117, 253, 58, 2, 34, 124, 117, 182, 191, 31, 86, 177, 58, 19, 249, 160, 146, 22, 68, 182, 51, 77, 101, 179, 100, 174, 44, 196, 108, 63, 225, 224, 9, 207, 60, 179, 88, 33, 11, 130, 247, 71, 236, 157, 23, 254, 86, 25, 31, 174, 96, 122, 250, 224, 233, 223, 136, 0, 32, 211, 91, 48, 149, 187, 76, 35, 89, 34, 177, 97, 58, 20, 109, 31, 70, 147, 246, 69, 203, 122, 129, 75, 222, 22, 59, 223, 21, 63, 118, 158, 42, 71, 98, 147, 144, 76, 76, 153, 102, 103, 255, 246, 108, 42, 147, 178, 21, 163, 190, 186, 180, 39, 97, 210, 152, 47, 247, 79, 179, 36, 61, 217, 19, 133, 69, 180, 108, 214, 90, 177, 82, 106, 124, 71, 66, 75, 128, 99, 72, 148, 4, 254, 179, 152, 183, 136, 116, 1, 18, 127, 193, 163, 237, 128, 7, 61, 46, 202, 123, 141, 234, 1, 74, 138, 90, 220, 201, 67, 66, 122, 114, 228, 225, 72, 23, 251, 85, 120, 20, 94, 132, 247, 48, 5, 50, 103, 34, 203, 81, 23, 63, 0, 169, 67, 26, 51, 197, 173, 166, 212, 137, 171, 161, 163, 216, 139, 41, 85, 198, 109, 201, 222, 67, 138, 143, 130, 137, 176, 25, 106, 99, 11, 137, 118, 78, 178, 5, 78, 18, 87, 2, 218, 30, 225, 247, 162, 41, 93, 206, 251, 251, 1, 111, 89, 11, 251, 147, 236, 108, 228, 41, 132, 77, 85, 225, 239, 52, 48, 227, 64, 155, 134, 192, 113, 137, 253, 24, 99, 242, 75, 95, 120, 0, 173, 154, 105, 10, 198, 173, 19, 92, 48, 1, 108, 162, 120, 11, 232, 10, 35, 21, 91, 22, 179, 210, 151, 249, 66, 226, 125, 233, 40, 138, 91, 59, 19, 233, 97, 211, 50, 22, 91, 82, 128, 22, 108, 27, 57, 106, 84, 61, 120, 90, 118, 241, 205, 1, 253, 233, 142, 32, 192, 233, 155, 73, 143, 90, 61, 213, 97, 212, 152, 112, 229, 238, 188, 20, 42, 223, 2, 54, 201, 43, 120, 82, 93, 183, 215, 5, 114, 247, 184, 46, 147, 35, 109, 14, 134, 236, 45, 55, 233, 238, 21, 238, 122, 225, 83, 34, 212, 103, 82, 204, 138, 98, 216, 109, 46, 247, 207, 155, 117, 161, 54, 13, 85, 105, 192, 249, 77, 110, 95, 90, 100, 97, 216, 187, 238, 153, 149, 30, 226, 51, 139, 194, 248, 41, 4, 125, 224, 126, 119, 191, 194, 99, 212, 214, 250, 99, 148, 179, 169, 250, 117, 187, 68, 189, 136, 117, 59, 222, 131, 26, 229, 35, 204, 6, 61, 227, 60, 28, 202, 55, 60, 75, 140, 225, 146, 35, 140, 108, 85, 180, 212, 82, 123, 107, 141, 252, 211, 112, 81, 164, 97, 28, 56, 35, 207, 40, 237, 64, 137, 123, 156, 203, 98, 101, 188, 4, 251, 35, 123, 190, 231, 57, 37, 12, 248, 5, 151, 25, 20, 93, 125, 146, 162, 41, 16, 22, 63, 80, 42, 37, 215, 151, 8, 60, 199, 35, 137, 132, 125, 251, 107, 253, 64, 130, 179, 83, 111, 140, 155, 149, 239, 71, 214, 211, 136, 1, 68, 204, 156, 239, 202, 36, 193, 183, 10, 237, 30, 106, 245, 107, 255, 40, 15, 107, 48, 4, 164, 16, 132, 74, 69, 55, 254, 230, 22, 41, 253, 18, 172, 189, 155, 163, 92, 60, 38, 105, 30, 173, 225, 147, 118, 195, 163, 162, 85, 201, 197, 114, 41, 162, 248, 180, 125, 203, 149, 109, 137, 180, 78, 4, 130, 4, 51, 22, 63, 252, 161, 144, 174, 29, 31, 62, 31, 249, 27, 179, 64, 51, 162, 134, 96, 228, 25, 44, 166, 159, 221, 220, 231, 244, 190, 21, 105, 252, 185, 119, 87, 97, 191, 83, 20, 50, 87, 218, 97, 125, 193, 12, 250, 191, 157, 20, 228, 167, 214, 118, 40, 40, 72, 246, 137, 24, 47, 8, 22, 253, 101, 189, 85, 175, 49, 40, 41, 19, 189, 164, 59, 104, 51, 16, 14, 206, 152, 255, 161, 225, 179, 111, 217, 5, 186, 217, 203, 251, 144, 21, 25, 152, 74, 226, 79, 66, 189, 137, 118, 86, 226, 213, 17, 130, 242, 107, 199, 116, 9, 37, 25, 156, 130, 72, 31, 62, 237, 237, 27, 182, 166, 15, 204, 102, 236, 76, 35, 2, 135, 246, 205, 248, 140, 217, 207, 81, 224, 30, 213, 24, 224, 124, 23, 123, 63, 197, 243, 12, 102, 70, 91, 190, 30, 45, 19, 21, 72, 36, 209, 222, 35, 131, 172, 64, 13, 94, 19, 7, 233, 157, 43, 100, 168, 234, 89, 171, 93, 30, 190, 161, 124, 24, 200, 41, 249, 8, 122, 77, 217, 245, 228, 198, 138, 89, 92, 217, 248, 224, 138, 24, 40, 134, 227, 56, 223, 20, 9, 220, 229, 195, 210, 108, 166, 171, 180, 116, 57, 22, 73, 113, 50, 58, 218, 19, 51, 10, 233, 67, 69, 221, 219, 5, 117, 160, 24, 133, 95, 97, 10, 117, 113, 79, 5, 61, 249, 240, 26, 89, 186, 3, 135, 15, 177, 169, 69, 111, 6, 2, 15, 153, 105, 22, 116, 29, 253, 116, 42, 61, 19, 160, 200, 95, 158, 209, 158, 165, 246, 116, 142, 85, 232, 4, 47, 219, 124, 9, 220, 126, 91, 211, 15, 106, 105, 126, 192, 181, 236, 99, 19, 52, 241, 65, 215, 172, 250, 49, 91, 142, 117, 190, 232, 147, 250, 5, 33, 105, 82, 80, 215, 107, 93, 156, 185, 201, 219, 254, 19, 222, 63, 249, 89, 228, 75, 181, 183, 179, 245, 203, 62, 47, 52, 254, 211, 236, 114, 23, 212, 222, 147, 243, 8, 76, 236, 69, 87, 182, 85, 48, 126, 58, 203, 50, 155, 143, 117, 44, 228, 12, 184, 110, 136, 230, 188, 23, 191, 17, 82, 28, 120, 168, 110, 76, 248, 55, 84, 247, 51, 147, 36, 126, 102, 14, 106, 8, 76, 15, 148, 207, 212, 91, 156, 95, 90, 157, 183, 147, 25, 134, 248, 46, 116, 201, 46, 219, 223, 89, 122, 197, 127, 12, 192, 124, 149, 53, 161, 98, 222, 74, 140, 117, 160, 203, 104, 148, 164, 245, 40, 227, 89, 5, 56, 26, 7, 115, 113, 50, 24, 173, 56, 13, 108, 101, 41, 12, 53, 197, 249, 6, 169, 118, 65, 18, 46, 231, 213, 31, 40, 216, 164, 56, 44, 254, 20, 45, 4, 2, 102, 68, 33, 51, 89, 176, 215, 228, 43, 150, 40, 52, 61, 23, 128, 91, 82, 89, 164, 9, 41, 38, 94, 254, 231, 176, 133, 65, 169, 39, 162, 150, 74, 44, 252, 153, 34, 129, 17, 121, 55, 159, 227, 178, 174, 16, 59, 102, 120, 123, 235, 236, 229, 3, 237, 97, 36, 58, 139, 158, 213, 27, 170, 89, 189, 131, 194, 60, 228, 149, 4, 215, 37, 159, 105, 64, 237, 139, 108, 211, 145, 180, 212, 109, 37, 209, 115, 190, 116, 177, 67, 180, 198, 29, 57, 141, 27, 205, 124, 20, 180, 116, 54, 130, 46, 130, 110, 144, 152, 211, 78, 103, 245, 27, 39, 73, 6, 19, 150, 43, 12, 240, 22, 244, 78, 19, 11, 169, 13, 233, 58, 195, 9, 150, 121, 244, 149, 220, 24, 170, 174, 220, 183, 24, 16, 1, 14, 196, 128, 156, 75, 112, 253, 75, 124, 167, 160, 16, 117, 70, 166, 183, 183, 179, 243, 88, 249, 202, 49, 227, 106, 87, 9, 66, 15, 74, 147, 72, 105, 72, 209, 42, 167, 201, 183, 3, 70, 237, 189, 35, 143, 196, 56, 254, 13, 11, 66, 172, 155, 37, 184, 89, 189, 255, 119, 2, 205, 237, 240, 105, 50, 80, 16, 65, 8, 106, 232, 243, 19, 230, 61, 15, 95, 80, 216, 156, 138, 118, 41, 118, 165, 69, 234, 29, 156, 141, 30, 33, 2, 106, 253, 133, 86, 182, 85, 176, 180, 232, 60, 248, 12, 250, 204, 11, 32, 169, 218, 240, 172, 85, 162, 144, 117, 123, 1, 190, 146, 198, 140, 10, 25, 67, 112, 102, 103, 55, 222, 129, 40, 175, 156, 153, 217, 240, 200, 2, 6, 184, 136, 122, 252, 206, 172, 173, 247, 229, 98, 31, 154, 141, 56, 225, 237, 26, 217, 225, 185, 189, 194, 60, 229, 37, 127, 98, 196, 80, 111, 46, 12, 125, 162, 197, 92, 7, 167, 241, 80, 148, 87, 115, 90, 211, 104, 205, 13, 215, 79, 220, 73, 98, 91, 6, 210, 111, 98, 114, 44, 201, 78, 13, 41, 132, 22, 98, 180, 58, 87, 128, 191, 166, 221, 163, 78, 70, 208, 208, 75, 99, 5, 0, 198, 141, 124, 22, 31, 133, 199, 203, 36, 111, 27, 0, 145, 139, 77, 7, 53, 86, 224, 15, 248, 227, 149, 242, 11, 147, 40, 98, 199, 101, 178, 47, 134, 75, 69, 155, 198, 125, 25, 251, 230, 243, 10, 16, 63, 104, 105, 63, 253, 163, 171, 159, 143, 134, 108, 190, 63, 220, 208, 57, 172, 121, 91, 118, 49, 227, 59, 68, 244, 125, 21, 108, 98, 202, 226, 18, 218, 172, 210, 49, 219, 245, 23, 199, 137, 58, 29, 64, 24, 30, 130, 87, 122, 206, 158, 77, 107, 232, 234, 34, 92, 38, 104, 90, 51, 200, 238, 16, 87, 11, 50, 139, 241, 17, 163, 203, 49, 78, 198, 83, 123, 230, 162, 148, 102, 202, 207, 66, 54, 91, 206, 12, 25, 154, 54, 179, 203, 8, 30, 17, 10, 38, 19, 93, 95, 4, 158, 15, 137, 144, 52, 144, 182, 97, 144, 241, 170, 255, 122, 34, 60, 231, 103, 170, 164, 193, 67, 113, 166, 28, 50, 45, 134, 104, 38, 205, 193, 41, 144, 192, 207, 33, 236, 126, 133, 95, 173, 96, 180, 66, 78, 45, 188, 175, 153, 244, 197, 90, 51, 200, 162, 139, 95, 42, 16, 99, 225, 176, 122, 118, 248, 90, 93, 120, 85, 34, 89, 15, 108, 108, 11, 83, 6, 40, 235, 123, 255, 194, 94, 41, 15, 76, 200, 200, 69, 20, 101, 245, 17, 92, 17, 189, 195, 104, 207, 186, 90, 158, 203, 92, 184, 123, 222, 70, 93, 110, 227, 61, 163, 140, 59, 2, 102, 38, 91, 204, 219, 24, 101, 142, 102, 183, 12, 105, 22, 146, 228, 139, 209, 163, 3, 212, 220, 100, 138, 197, 84, 90, 22, 143, 141, 159, 9, 15, 156, 26, 124, 119, 193, 7, 222, 117, 216, 17, 226, 243, 139, 27, 50, 205, 206, 105, 13, 150, 17, 67, 217, 143, 130, 147, 56, 237, 212, 216, 0, 203, 13, 151, 82, 251, 183, 28, 79, 138, 83, 243, 147, 231, 212, 81, 108, 156, 70, 225, 5, 155, 232, 130, 79, 98, 211, 157, 4, 97, 4, 218, 90, 231, 209, 44, 248, 157, 4, 39, 131, 64, 59, 57, 142, 203, 216, 203, 55, 133, 9, 7, 236, 150, 128, 182, 85, 148, 105, 150, 243, 185, 28, 222, 25, 76, 34, 66, 141, 133, 4, 44, 44, 212, 176, 31, 164, 122, 234, 128, 98, 23, 233, 198, 171, 36, 250, 96, 220, 28, 42, 171, 175, 4, 10, 59, 172, 186, 253, 238, 15, 116, 180, 44, 51, 212, 229, 65, 71, 190, 46, 110, 75, 98, 171, 31, 218, 119, 100, 201, 56, 207, 139, 126, 156, 7, 80, 101, 119, 31, 104, 106, 167, 182, 169, 15, 86, 224, 229, 247, 199, 119, 224, 170, 67, 44, 20, 138, 227, 85, 146, 67, 130, 95, 203, 64, 127, 57, 101, 64, 7, 101, 248, 89, 104, 55, 135, 34, 31, 68, 151, 163, 92, 113, 107, 196, 169, 158, 69, 32, 122, 132, 136, 221, 238, 178, 255, 169, 107, 212, 130, 204, 199, 107, 34, 153, 148, 129, 136, 24, 172, 20, 150, 4, 57, 79, 118, 0, 51, 21, 236, 125, 93, 203, 213, 143, 17, 19, 108, 54, 107, 2, 85, 35, 235, 115, 166, 205, 54, 92, 180, 10, 35, 202, 117, 186, 170, 135, 237, 173, 255, 1, 178, 226, 32, 38, 85, 122, 171, 170, 114, 199, 171, 147, 28, 105, 28, 57, 237, 225, 136, 44, 59, 22, 192, 131, 134, 189, 62, 78, 250, 72, 188, 19, 71, 173, 24, 38, 243, 180, 96, 98, 128, 28, 197, 162, 221, 39, 249, 63, 132, 232, 164, 172, 143, 13, 203, 93, 0, 23, 241, 47, 216, 204, 29, 137, 241, 144, 191, 33, 107, 75, 82, 133, 181, 228, 2, 233, 197, 171, 124, 188, 1, 188, 109, 21, 239, 24, 28, 123, 129, 110, 241, 75, 94, 40, 155, 206, 101, 121, 12, 91, 140, 11, 245, 53, 173, 65, 209, 127, 162, 58, 209, 246, 111, 189, 13, 136, 206, 13, 129, 227, 99, 194, 206, 9, 122, 103, 85, 232, 163, 249, 22, 49, 51, 48, 254, 151, 179, 31, 177, 8, 73, 156, 165, 76, 128, 108, 252, 6, 153, 29, 197, 81, 248, 181, 201, 168, 34, 232, 116, 51, 173, 136, 63, 123, 137, 154, 8, 212, 109, 42, 158, 184, 203, 149, 80, 68, 189, 200, 72, 190, 149, 0, 103, 43, 55, 168, 82, 158, 201, 46, 68, 188, 174, 217, 163, 190, 20, 247, 240, 86, 5, 157, 214, 252, 122, 71, 122, 113, 227, 176, 175, 7, 54, 21, 211, 206, 15, 248, 254, 195, 141, 75, 113, 242, 240, 244, 127, 87, 185, 186, 62, 192, 105, 18, 127, 70, 23, 162, 26, 227, 78, 119, 119, 181, 233, 36, 0, 55, 238, 36, 156, 135, 205, 241, 217, 35, 254, 26, 103, 44, 221, 174, 213, 137, 8, 103, 194, 175, 240, 128, 243, 36, 187, 129, 227, 137, 145, 16, 49, 15, 158, 124, 251, 52, 108, 8, 39, 153, 204, 159, 88, 61, 230, 238, 115, 130, 80, 114, 106, 33, 151, 6, 170, 179, 193, 217, 146, 102, 48, 0, 232, 146, 39, 206, 31, 120, 164, 202, 96, 83, 165, 252, 240, 248, 226, 33, 113, 126, 173, 42, 10, 3, 94, 8, 102, 38, 230, 184, 127, 74, 27, 46, 110, 131, 138, 33, 230, 99, 206, 100, 122, 208, 99, 66, 200, 131, 179, 168, 87, 76, 83, 21, 205, 49, 24, 145, 227, 221, 220, 2, 85, 174, 251, 33, 77, 50, 160, 42, 51, 112, 105, 27, 236, 219, 123, 181, 228, 178, 146, 60, 144, 134, 117, 123, 114, 202, 33, 36, 109, 61, 52, 11, 51, 183, 5, 44, 65, 200, 85, 255, 40, 150, 98, 243, 194, 72, 161, 151, 208, 218, 133, 15, 181, 25, 173, 121, 143, 185, 178, 36, 228, 67, 1, 22, 245, 71, 205, 2, 97, 144, 85, 108, 4, 177, 198, 120, 164, 56, 228, 203, 91, 132, 248, 113, 217, 89, 35, 60, 28, 154, 25, 45, 21, 41, 147, 225, 173, 136, 204, 37, 230, 167, 10, 191, 36, 72, 221, 82, 95, 192, 251, 130, 159, 100, 184, 144, 6, 77, 70, 224, 211, 123, 235, 182, 219, 214, 147, 221, 202, 40, 127, 46, 156, 203, 218, 150, 244, 183, 190, 223, 245, 44, 243, 221, 212, 44, 129, 76, 1, 46, 24, 171, 3, 226, 56, 154, 103, 238, 32, 237, 170, 238, 48, 34, 64, 152, 212, 111, 27, 248, 27, 186, 211, 250, 39, 90, 55, 144, 60, 204, 44, 12, 135, 18, 65, 188, 126, 45, 216, 166, 248, 164, 64, 220, 125, 41, 248, 58, 247, 83, 67, 62, 223, 241, 26, 250, 130, 179, 52, 214, 236, 182, 239, 90, 160, 69, 216, 79, 162, 187, 157, 111, 224, 1, 121, 64, 219, 17, 175, 16, 127, 187, 9, 33, 183, 150, 241, 26, 76, 24, 180, 35, 40, 99, 188, 182, 9, 203, 58, 38, 177, 242, 15, 243, 98, 227, 246, 18, 138, 20, 217, 166, 152, 254, 158, 64, 255, 200, 23, 64, 67, 118, 225, 71, 171, 7, 238, 229, 239, 49, 10, 111, 120, 196, 112, 74, 162, 161, 147, 161, 34, 24, 241, 1, 168, 181, 76, 68, 114, 234, 120, 239, 25, 146, 162, 147, 93, 60, 71, 93, 175, 34, 113, 248, 78, 232, 251, 171, 99, 243, 24, 249, 101, 14, 181, 135, 5, 136, 107, 227, 144, 22, 61, 151, 156, 223, 1, 116, 220, 247, 178, 96, 238, 240, 45, 165, 50, 111, 236, 216, 219, 50, 75, 201, 84, 29, 41, 236, 28, 128, 190, 97, 236, 224, 121, 219, 177, 146, 105, 147, 148, 120, 209, 34, 24, 71, 235, 112, 255, 10, 107, 130, 107, 37, 44, 131, 238, 38, 140, 109, 0, 124, 45, 25, 241, 177, 244, 79, 35, 215, 172, 217, 207, 72, 199, 91, 166, 243, 88, 133, 190, 10, 232, 156, 54, 86, 184, 85, 139, 10, 220, 41, 57, 118, 155, 73, 100, 99, 12, 86, 249, 203, 44, 160, 164, 166, 7, 52, 90, 195, 235, 58, 28, 251, 35, 255, 252, 56, 227, 145, 234, 41, 81, 47, 235, 110, 39, 162, 82, 140, 147, 130, 170, 37, 243, 10, 39, 11, 1, 84, 64, 92, 171, 147, 143, 54, 161, 218, 88, 63, 121, 93, 52, 36, 23, 133, 241, 53, 243, 62, 198, 3, 123, 11, 32, 86, 103, 142, 176, 47, 203, 120, 149, 15, 87, 143, 113, 108, 2, 70, 173, 41, 12, 179, 71, 5, 46, 218, 30, 17, 148, 7, 133, 45, 101, 212, 194, 173, 37, 231, 241, 233, 203, 249, 129, 100, 147, 86, 255, 26, 151, 172, 58, 197, 125, 216, 53, 5, 121, 1, 235, 177, 132, 14, 211, 121, 21, 145, 178, 242, 79, 245, 54, 37, 116, 112, 164, 176, 127, 155, 203, 185, 59, 31, 7, 159, 191, 94, 15, 14, 105, 220, 190, 191, 150, 154, 173, 61, 80, 58, 182, 3, 96, 43, 6, 169, 181, 117, 201, 120, 161, 30, 237, 219, 179, 127, 11, 80, 125, 231, 207, 27, 17, 153, 54, 90, 2, 72, 88, 33, 41, 112, 199, 80, 109, 225, 128, 200, 74, 119, 205, 24, 121, 122, 131, 21, 75, 242, 144, 116, 32, 203, 50, 9, 30, 55, 77, 40, 5, 69, 54, 76, 41, 15, 140, 74, 15, 25, 48, 75, 7, 19, 134, 237, 75, 81, 156, 208, 107, 26, 51, 250, 177, 70, 202, 6, 26, 0, 57, 200, 126, 97, 60, 57, 54, 74, 163, 170, 56, 225, 11, 231, 230, 73, 211, 31, 102, 31, 75, 97, 199, 37, 60, 81, 4, 240, 156, 39, 73, 137, 103, 42, 233, 6, 42, 109, 144, 132, 169, 12, 94, 103, 169, 209, 29, 14, 151, 220, 106, 57, 83, 20, 21, 151, 88, 234, 30, 251, 74, 46, 204, 76, 14, 12, 151, 19, 146, 121, 182, 120, 163, 198, 193, 137, 150, 185, 204, 126, 120, 208, 140, 133, 90, 249, 236, 47, 204, 58, 64, 68, 186, 45, 50, 142, 164, 107, 70, 220, 209, 14, 220, 187, 122, 24, 214, 250, 231, 12, 223, 24, 94, 206, 119, 222, 93, 231, 74, 103, 126, 28, 229, 150, 179, 47, 185, 194, 144, 251, 59, 85, 58, 127, 148, 118, 237, 248, 167, 30, 196, 136, 129, 120, 26, 183, 44, 163, 212, 158, 171, 18, 86, 72, 41, 247, 102, 1, 110, 191, 192, 26, 228, 9, 232, 90, 36, 227, 251, 36, 35, 194, 122, 181, 114, 89, 220, 145, 120, 194, 75, 250, 117, 210, 132, 102, 51, 144, 119, 33, 61, 209, 193, 237, 69, 20, 97, 145, 170, 162, 26, 69, 184, 194, 115, 23, 123, 177, 217, 83, 175, 53, 24, 201, 223, 194, 110, 228, 13, 69, 223, 40, 1, 89, 50, 186, 23, 166, 140, 196, 225, 254, 213, 34, 22, 131, 20, 103, 57, 102, 176, 162, 170, 36, 221, 253, 157, 172, 46, 134, 198, 183, 88, 26, 174, 97, 89, 188, 116, 93, 8, 74, 48, 129, 22, 100, 238, 101, 253, 237, 163, 160, 174, 75, 108, 35, 152, 64, 240, 244, 45, 27, 3, 178, 84, 12, 217, 63, 213, 95, 227, 191, 140, 222, 91, 154, 214, 80, 224, 65, 160, 189, 36, 12, 176, 197, 200, 76, 59, 162, 74, 139, 174, 198, 215, 26, 17, 45, 132, 211, 94, 90, 57, 38, 203, 224, 188, 84, 200, 23, 112, 125, 174, 108, 94, 84, 112, 68, 59, 254, 102, 226, 143, 252, 125, 192, 178, 222, 153, 33, 116, 104, 162, 217, 176, 86, 17, 238, 90, 95, 127, 224, 154, 6, 4, 116, 97, 128, 148, 111, 238, 247, 70, 0, 189, 218, 12, 48, 252, 95, 144, 45, 219, 120, 250, 227, 206, 116, 158, 144, 229, 5, 0, 32, 17, 233, 92, 3, 152, 222, 162, 55, 229, 54, 192, 192, 79, 69, 67, 203, 198, 240, 210, 44, 215, 7, 175, 172, 66, 73, 234, 72, 144, 20, 229, 216, 179, 145, 202, 127, 81, 166, 49, 198, 51, 88, 40, 144, 228, 83, 23, 191, 103, 81, 164, 36, 169, 60, 254, 100, 137, 78, 91, 85, 56, 121, 187, 163, 110, 231, 197, 17, 187, 227, 144, 48, 52, 186, 159, 103, 62, 29, 18, 151, 99, 45, 213, 11, 63, 15, 78, 121, 76, 182, 155, 190, 181, 202, 7, 133, 69, 49, 252, 158, 125, 52, 8, 158, 80, 225, 109, 33, 23, 80, 118, 117, 135, 63, 25, 20, 198, 40, 184, 0, 231, 219, 107, 103, 155, 245, 180, 11, 177, 61, 58, 138, 160, 72, 126, 105, 174, 1, 79, 148, 231, 64, 143, 146, 134, 113, 41, 29, 58, 39, 152, 196, 255, 5, 18, 76, 38, 125, 15, 249, 11, 55, 34, 169, 223, 104, 156, 201, 82, 95, 134, 231, 201, 109, 109, 134, 188, 83, 98, 27, 217, 201, 133, 31, 54, 132, 220, 100, 95, 150, 218, 172, 43, 145, 244, 23, 159, 120, 84, 20, 99, 87, 156, 63, 65, 8, 40, 149, 116, 98, 252, 39, 166, 172, 125, 130, 169, 227, 144, 154, 83, 144, 169, 212, 40, 15, 193, 172, 148, 197, 97, 67, 225, 116, 122, 250, 181, 228, 191, 172, 246, 78, 190, 22, 138, 243, 185, 188, 234, 199, 73, 255, 157, 147, 60, 91, 125, 154, 191, 32, 113, 2, 0, 9, 56, 185, 111, 74, 159, 29, 209, 161, 132, 219, 208, 39, 57, 118, 151, 115, 253, 254, 250, 129, 178, 172, 31, 70, 177, 159, 119, 193, 163, 28, 225, 167, 162, 56, 23, 108, 20, 51, 206, 216, 195, 220, 194, 0, 64, 54, 240, 45, 56, 69, 111, 100, 242, 9, 85, 176, 171, 223, 97, 82, 245, 229, 75, 165, 224, 6, 2, 158, 40, 97, 61, 180, 34, 139, 50, 17, 114, 240, 102, 6, 24, 108, 251, 78, 89, 91, 99, 180, 174, 55, 201, 219, 242, 202, 138, 184, 241, 202, 201, 163, 104, 142, 2, 75, 137, 207, 229, 32, 51, 250, 65, 59, 121, 36, 41, 203, 41, 126, 209, 129, 78, 106, 213, 208, 141, 222, 113, 17, 179, 142, 216, 152, 87, 80, 25, 118, 93, 180, 44, 21, 46, 250, 41, 66, 54, 11, 176, 4, 109, 8, 79, 65, 176, 18, 178, 155, 167, 68, 183, 49, 59, 7, 6, 126, 117, 115, 175, 202, 7, 123, 255, 42, 151, 51, 117, 160, 212, 46, 45, 117, 186, 80, 90, 223, 162, 103, 46, 203, 197, 40, 81, 187, 121, 113, 207, 174, 102, 188, 16, 168, 96, 83, 42, 36, 249, 128, 132, 35, 33, 242, 31, 122, 17, 114, 252, 235, 177, 53, 11, 244, 132, 173, 76, 199, 114, 205, 223, 47, 154, 199, 253, 158, 136, 254, 231, 25, 160, 62, 35, 31, 113, 54, 83, 118, 242, 110, 238, 218, 2, 230, 115, 243, 220, 245, 9, 215, 216, 68, 230, 127, 180, 34, 205, 23, 192, 199, 172, 42, 157, 163, 237, 86, 130, 84, 235, 179, 95, 38, 59, 104, 104, 132, 107, 190, 147, 196, 91, 192, 52, 34, 3, 153, 142, 75, 188, 173, 148, 47, 166, 3, 38, 167, 0, 88, 21, 70, 152, 50, 157, 7, 171, 30, 33, 187, 115, 188, 93, 216, 151, 254, 232, 146, 2, 96, 250, 139, 44, 193, 52, 174, 209, 36, 194, 36, 84, 69, 47, 254, 231, 237, 24, 89, 178, 218, 156, 239, 238, 76, 154, 19, 129, 125, 26, 185, 166, 220, 119, 91, 52, 161, 240, 255, 24, 26, 161, 93, 38, 243, 54, 161, 28, 172, 164, 135, 27, 80, 160, 115, 154, 123, 217, 67, 223, 87, 154, 102, 11, 13, 140, 163, 148, 79, 69, 234, 65, 19, 196, 114, 88, 99, 124, 145, 82, 87, 54, 7, 34, 207, 237, 168, 195, 222, 107, 248, 78, 82, 211, 136, 16, 207, 110, 17, 212, 163, 146, 193, 5, 29, 61, 58, 200, 214, 33, 3, 44, 73, 153, 126, 183, 121, 178, 201, 150, 223, 195, 153, 60, 237, 75, 195, 74, 140, 14, 110, 203, 202, 218, 111, 168, 19, 233, 244, 137, 77, 20, 127, 31, 121, 90, 42, 23, 111, 90, 80, 115, 10, 43, 126, 215, 158, 90, 39, 4, 73, 162, 59, 192, 182, 236, 59, 187, 34, 31, 233, 233, 158, 233, 174, 249, 72, 232, 122, 222, 28, 202, 77, 62, 97, 194, 21, 51, 171, 97, 12, 221, 232, 194, 224, 161, 187, 191, 135, 103, 41, 80, 102, 214, 233, 134, 214, 87, 229, 240, 184, 136, 11, 76, 58, 22, 66, 217, 170, 96, 192, 9, 251, 218, 234, 68, 143, 202, 24, 188, 128, 175, 22, 115, 212, 231, 158, 140, 53, 162, 138, 170, 165, 207, 140, 175, 59, 203, 33, 216, 118, 116, 108, 140, 104, 59, 192, 208, 37, 27, 245, 177, 247, 243, 20, 251, 201, 223, 155, 71, 46, 81, 76, 105, 213, 219, 76, 120, 200, 126, 141, 3, 125, 59, 201, 81, 12, 114, 4, 82, 199, 166, 105, 68, 215, 31, 19, 248, 56, 232, 31, 46, 220, 40, 193, 82, 187, 183, 119, 89, 207, 27, 80, 6, 152, 160, 30, 192, 118, 19, 71, 98, 108, 107, 145, 45, 72, 204, 18, 47, 182, 150, 115, 76, 56, 209, 53, 246, 108, 132, 15, 105, 198, 153, 248, 220, 228, 186, 87, 75, 166, 154, 59, 245, 30, 29, 215, 54, 88, 254, 16, 21, 238, 199, 193, 208, 18, 62, 3, 112, 232, 189, 229, 77, 57, 135, 95, 45, 149, 86, 234, 35, 6, 118, 175, 251, 40, 66, 43, 182, 235, 103, 40, 43, 145, 149, 2, 176, 135, 161, 179, 251, 202, 189, 197, 50, 83, 169, 221, 234, 128, 131, 84, 34, 151, 136, 61, 73, 208, 225, 102, 110, 6, 35, 9, 248, 51, 178, 212, 135, 175, 143, 100, 68, 224, 76, 213, 100, 231, 244, 28, 218, 242, 120, 71, 175, 60, 17, 181, 1, 33, 51, 134, 243, 88, 51, 25, 215, 175, 176, 39, 159, 193, 63, 15, 79, 164, 214, 234, 35, 248, 166, 170, 97, 124, 80, 40, 61, 131, 219, 37, 32, 211, 218, 172, 113, 153, 163, 37, 92, 248, 246, 85, 231, 137, 31, 248, 118, 159, 29, 101, 203, 4, 64, 171, 70, 138, 156, 107, 115, 14, 91, 46, 247, 229, 112, 180, 153, 194, 173, 14, 97, 183, 34, 34, 255, 105, 236, 131, 250, 94, 153, 150, 245, 200, 61, 19, 185, 184, 165, 9, 194, 116, 140, 39, 177, 37, 90, 177, 108, 176, 101, 19, 48, 193, 96, 205, 250, 205, 27, 98, 178, 185, 139, 184, 246, 23, 139, 96, 127, 173, 196, 12, 5, 158, 47, 203, 44, 27, 53, 164, 61, 198, 93, 12, 222, 83, 170, 46, 97, 232, 234, 201, 32, 67, 145, 199, 209, 181, 241, 101, 118, 181, 115, 101, 113, 108, 208, 27, 177, 122, 193, 86, 206, 127, 90, 20, 4, 113, 30, 47, 255, 23, 242, 90, 120, 126, 205, 239, 5, 253, 49, 6, 133, 202, 195, 244, 39, 50, 151, 23, 76, 40, 242, 43, 155, 146, 222, 35, 216, 125, 126, 104, 231, 158, 116, 54, 101, 61, 24, 179, 49, 168, 12, 179, 240, 135, 255, 53, 210, 158, 39, 66, 107, 222, 166, 28, 108, 180, 91, 13, 184, 91, 100, 144, 147, 113, 99, 36, 138, 147, 150, 219, 87, 27, 14, 85, 185, 240, 218, 237, 219, 72, 232, 221, 0, 209, 198, 32, 249, 12, 92, 33, 240, 154, 34, 25, 247, 236, 1, 188, 50, 225, 246, 49, 200, 12, 6, 165, 110, 99, 203, 58, 88, 194, 99, 201, 207, 190, 249, 103, 129, 26, 37, 47, 24, 251, 85, 131, 159, 231, 132, 205, 186, 213, 217, 239, 57, 87, 96, 47, 3, 180, 238, 67, 107, 23, 168, 147, 146, 195, 147, 146, 146, 8, 170, 32, 104, 78, 111, 173, 32, 5, 45, 184, 37, 173, 77, 91, 224, 58, 213, 70, 228, 227, 16, 184, 102, 29, 5, 14, 85, 34, 228, 129, 129, 237, 138, 19, 217, 127, 177, 80, 231, 226, 5, 25, 225, 122, 200, 139, 47, 216, 37, 130, 148, 55, 155, 169, 18, 93, 162, 69, 193, 34, 236, 82, 47, 252, 114, 47, 30, 135, 31, 1, 116, 86, 46, 227, 167, 158, 20, 94, 156, 176, 175, 207, 31, 68, 67, 9, 172, 74, 161, 178, 104, 246, 172, 42, 180, 1, 51, 41, 63, 127, 16, 154, 84, 167, 7, 64, 76, 54, 252, 28, 175, 33, 202, 173, 165, 37, 47, 247, 5, 24, 146, 188, 71, 179, 219, 22, 90, 73, 6, 31, 115, 34, 203, 21, 165, 65, 155, 21, 65, 232, 141, 196, 113, 162, 114, 251, 136, 176, 239, 72, 24, 238, 215, 54, 154, 76, 57, 218, 195, 157, 234, 35, 240, 12, 221, 196, 112, 151, 154, 105, 179, 202, 235, 153, 25, 132, 13, 1, 111, 135, 245, 226, 230, 158, 231, 26, 98, 241, 173, 93, 153, 197, 158, 28, 98, 225, 245, 82, 1, 183, 50, 221, 224, 196, 241, 247, 71, 136, 218, 138, 47, 23, 189, 183, 5, 118, 204, 51, 163, 117, 137, 114, 135, 2, 89, 23, 89, 156, 118, 151, 238, 99, 62, 181, 94, 38, 215, 29, 2, 80, 75, 164, 216, 12, 125, 162, 153, 53, 188, 107, 100, 173, 149, 149, 114, 215, 90, 23, 28, 113, 213, 22, 44, 179, 224, 251, 115, 44, 240, 97, 57, 169, 87, 35, 98, 232, 10, 186, 220, 57, 157, 15, 113, 122, 235, 208, 150, 251, 207, 19, 91, 115, 209, 95, 206, 176, 237, 206, 76, 255, 135, 23, 25, 112, 146, 158, 235, 117, 4, 115, 63, 41, 48, 231, 41, 211, 10, 202, 142, 132, 253, 35, 73, 89, 63, 16, 212, 45, 42, 155, 28, 61, 185, 233, 55, 44, 248, 151, 14, 195, 136, 33, 94, 185, 170, 234, 207, 42, 4, 149, 70, 28, 216, 19, 174, 40, 103, 94, 164, 0, 201, 51, 210, 72, 232, 111, 157, 50, 4, 53, 181, 94, 78, 98, 94, 174, 196, 148, 219, 160, 41, 36, 178, 4, 128, 33, 132, 222, 241, 138, 193, 132, 151, 219, 157, 207, 254, 128, 246, 251, 172, 82, 236, 120, 39, 108, 12, 43, 222, 10, 244, 165, 144, 52, 183, 149, 91, 30, 202, 197, 144, 117, 43, 210, 67, 143, 46, 234, 129, 89, 181, 54, 25, 122, 65, 15, 118, 82, 179, 77, 128, 199, 194, 191, 221, 75, 208, 145, 209, 11, 56, 60, 40, 173, 18, 163, 233, 60, 246, 164, 199, 105, 208, 230, 30, 220, 240, 224, 99, 75, 181, 252, 218, 83, 153, 16, 162, 170, 177, 238, 179, 32, 56, 19, 178, 186, 127, 8, 142, 78, 39, 28, 108, 32, 13, 99, 179, 199, 128, 217, 128, 9, 7, 184, 180, 2, 151, 72, 5, 190, 134, 64, 249, 14, 179, 161, 97, 96, 185, 141, 82, 12, 2, 176, 148, 9, 177, 4, 6, 149, 11, 103, 156, 15, 217, 112, 38, 219, 166, 138, 204, 14, 192, 24, 124, 39, 165, 54, 168, 222, 37, 212, 18, 18, 107, 70, 249, 28, 195, 38, 150, 48, 217, 176, 70, 230, 249, 128, 190, 47, 155, 11, 134, 179, 170, 120, 176, 43, 134, 45, 70, 110, 230, 69, 146, 45, 201, 163, 150, 73, 17, 12, 16, 109, 250, 65, 104, 129, 50, 179, 171, 29, 20, 100, 109, 135, 30, 75, 142, 31}; + + struct Bytes verifier_params; + verifier_params.len = sizeof(verifier_params_array); + verifier_params.data = verifier_params_array; + + char input_array[][4][32] = {{{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {38, 147, 99, 204, 53, 2, 184, 233, 226, 10, 109, 137, 148, 205, 4, 74, 61, 81, 105, 161, 115, 0, 27, 140, 130, 126, 100, 45, 182, 202, 41, 129}, {42, 81, 86, 61, 146, 24, 194, 67, 229, 17, 64, 171, 101, 143, 227, 0, 162, 201, 63, 116, 123, 253, 201, 82, 26, 34, 48, 48, 154, 29, 31, 147}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {21, 123, 38, 33, 114, 250, 142, 192, 230, 55, 45, 112, 237, 176, 237, 59, 228, 216, 177, 101, 190, 132, 178, 140, 91, 221, 151, 86, 28, 165, 98, 88}, {48, 21, 135, 57, 119, 49, 233, 114, 24, 43, 121, 141, 38, 43, 97, 172, 48, 63, 201, 213, 236, 165, 69, 141, 147, 238, 69, 164, 219, 189, 141, 20}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {2, 106, 94, 36, 34, 128, 122, 226, 68, 201, 50, 189, 59, 124, 194, 21, 201, 11, 108, 57, 21, 13, 207, 176, 172, 144, 137, 10, 206, 54, 84, 219}, {42, 245, 82, 24, 57, 42, 227, 238, 6, 48, 142, 2, 72, 7, 154, 98, 226, 101, 26, 122, 78, 98, 183, 102, 109, 225, 208, 12, 206, 245, 207, 252}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {14, 209, 135, 0, 106, 60, 14, 64, 62, 253, 102, 119, 85, 70, 123, 210, 216, 229, 75, 235, 7, 12, 134, 81, 61, 43, 52, 29, 11, 63, 123, 109}, {30, 205, 142, 185, 47, 96, 24, 160, 204, 247, 250, 237, 26, 106, 61, 156, 194, 226, 66, 185, 216, 81, 142, 173, 52, 118, 125, 227, 243, 229, 28, 198}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {31, 195, 3, 144, 212, 5, 110, 151, 113, 237, 105, 145, 20, 96, 94, 98, 2, 18, 249, 39, 83, 220, 58, 132, 0, 57, 162, 132, 224, 64, 42, 62}, {0, 57, 64, 24, 50, 254, 227, 28, 176, 159, 116, 230, 25, 125, 92, 163, 177, 45, 57, 105, 87, 132, 115, 34, 208, 15, 119, 26, 180, 156, 126, 187}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {32, 104, 194, 173, 207, 34, 240, 246, 156, 19, 90, 196, 191, 198, 137, 93, 12, 59, 136, 88, 133, 234, 160, 3, 106, 239, 12, 68, 16, 133, 211, 240}, {32, 105, 177, 163, 42, 229, 247, 92, 148, 21, 202, 38, 238, 0, 51, 234, 190, 18, 88, 88, 116, 30, 44, 25, 14, 46, 100, 41, 192, 56, 67, 225}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {42, 19, 188, 46, 227, 48, 136, 166, 65, 32, 41, 188, 11, 198, 224, 252, 199, 43, 125, 186, 227, 151, 248, 49, 57, 134, 224, 61, 47, 188, 60, 200}, {44, 62, 69, 99, 248, 42, 0, 178, 107, 212, 125, 85, 9, 88, 240, 86, 218, 168, 45, 123, 248, 135, 118, 233, 224, 45, 168, 231, 148, 223, 155, 162}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {1, 136, 88, 105, 46, 63, 25, 187, 121, 3, 14, 140, 75, 201, 104, 23, 92, 167, 245, 120, 1, 119, 144, 171, 130, 184, 172, 166, 113, 203, 253, 76}, {5, 234, 117, 225, 197, 159, 185, 14, 49, 127, 252, 81, 56, 101, 166, 102, 246, 133, 107, 133, 225, 193, 199, 115, 176, 51, 28, 51, 125, 212, 91, 172}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {32, 2, 42, 2, 251, 5, 159, 201, 249, 41, 248, 225, 90, 235, 161, 34, 242, 120, 99, 35, 30, 88, 211, 142, 212, 142, 136, 233, 239, 185, 173, 219}, {45, 106, 140, 90, 80, 142, 104, 151, 84, 166, 165, 237, 91, 134, 221, 138, 144, 125, 102, 99, 144, 155, 198, 116, 74, 156, 81, 94, 126, 147, 94, 88}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {14, 11, 185, 3, 65, 119, 222, 143, 2, 22, 223, 29, 35, 175, 70, 155, 193, 223, 76, 155, 88, 1, 130, 206, 15, 190, 153, 188, 103, 161, 47, 44}, {33, 240, 252, 14, 204, 235, 242, 83, 142, 106, 247, 15, 16, 79, 236, 158, 165, 228, 218, 77, 17, 235, 189, 91, 150, 34, 19, 43, 96, 191, 145, 88}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {47, 236, 236, 171, 183, 83, 233, 120, 55, 99, 91, 63, 158, 192, 223, 72, 200, 3, 99, 1, 30, 241, 60, 4, 36, 6, 145, 35, 242, 204, 72, 220}, {48, 59, 89, 114, 19, 36, 163, 139, 172, 200, 178, 253, 29, 82, 23, 50, 135, 107, 113, 210, 170, 37, 187, 145, 107, 157, 242, 54, 151, 96, 207, 59}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {1, 57, 166, 228, 224, 54, 116, 178, 34, 77, 138, 141, 98, 253, 229, 174, 193, 168, 46, 218, 70, 49, 86, 8, 178, 74, 234, 14, 28, 164, 169, 2}, {46, 134, 114, 87, 236, 63, 132, 163, 16, 34, 0, 20, 3, 61, 222, 249, 106, 6, 213, 181, 252, 191, 212, 150, 2, 90, 137, 192, 94, 2, 213, 237}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {24, 208, 159, 207, 46, 210, 48, 190, 152, 10, 154, 234, 145, 30, 113, 215, 242, 144, 54, 216, 150, 128, 124, 46, 159, 54, 201, 83, 226, 211, 177, 184}, {33, 239, 86, 214, 132, 165, 224, 80, 79, 14, 59, 128, 35, 75, 30, 82, 203, 103, 181, 209, 38, 108, 247, 28, 100, 21, 175, 18, 233, 254, 232, 175}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {3, 202, 64, 5, 146, 79, 228, 224, 236, 255, 239, 128, 198, 196, 15, 207, 73, 222, 166, 150, 119, 143, 165, 93, 155, 136, 138, 6, 62, 70, 248, 3}, {38, 177, 182, 247, 11, 238, 120, 149, 230, 213, 49, 119, 180, 54, 14, 90, 16, 199, 213, 174, 25, 62, 189, 229, 54, 233, 141, 10, 9, 93, 143, 187}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {9, 240, 118, 58, 139, 64, 13, 21, 36, 217, 53, 164, 45, 70, 208, 146, 0, 145, 210, 137, 129, 206, 218, 240, 173, 101, 79, 6, 86, 126, 216, 122}, {24, 185, 84, 79, 140, 32, 252, 127, 89, 110, 244, 116, 238, 229, 64, 220, 50, 245, 139, 83, 195, 160, 150, 73, 240, 108, 183, 117, 1, 203, 200, 75}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {22, 17, 214, 71, 121, 106, 79, 180, 178, 191, 11, 191, 107, 249, 36, 96, 123, 117, 188, 253, 177, 51, 22, 40, 219, 109, 109, 178, 154, 157, 155, 231}, {34, 68, 198, 129, 200, 157, 1, 15, 74, 69, 122, 6, 249, 124, 195, 244, 57, 174, 36, 45, 129, 123, 160, 200, 144, 240, 211, 204, 89, 198, 191, 128}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {11, 229, 128, 197, 146, 112, 201, 241, 205, 3, 173, 142, 77, 162, 15, 132, 118, 152, 27, 80, 46, 255, 63, 49, 16, 9, 252, 226, 107, 35, 162, 117}, {31, 211, 111, 2, 84, 144, 87, 46, 119, 152, 126, 214, 43, 210, 131, 69, 186, 183, 88, 156, 231, 191, 204, 215, 43, 12, 254, 174, 40, 252, 174, 114}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {34, 118, 133, 224, 38, 248, 24, 41, 212, 70, 211, 0, 204, 176, 113, 115, 42, 132, 43, 155, 40, 93, 78, 14, 243, 231, 19, 84, 233, 50, 178, 188}, {4, 119, 149, 174, 41, 85, 124, 246, 203, 205, 137, 250, 215, 214, 71, 108, 240, 132, 113, 53, 83, 254, 19, 236, 79, 120, 218, 178, 83, 82, 147, 78}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {4, 173, 66, 125, 243, 174, 115, 228, 188, 212, 180, 10, 73, 126, 89, 253, 74, 166, 103, 103, 145, 162, 28, 251, 69, 170, 249, 170, 66, 202, 64, 216}, {15, 135, 143, 115, 231, 203, 242, 17, 132, 240, 219, 8, 69, 132, 187, 180, 150, 158, 209, 220, 187, 28, 95, 181, 237, 230, 136, 66, 251, 147, 86, 232}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {38, 199, 251, 107, 80, 18, 136, 241, 57, 131, 230, 22, 112, 8, 251, 254, 211, 131, 7, 74, 194, 217, 181, 64, 221, 158, 98, 181, 108, 80, 34, 157}, {19, 108, 249, 100, 153, 182, 182, 167, 41, 0, 173, 106, 199, 10, 138, 193, 8, 144, 78, 46, 167, 108, 30, 86, 235, 168, 20, 233, 255, 89, 172, 222}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {7, 16, 134, 5, 90, 46, 138, 89, 131, 20, 114, 21, 234, 70, 246, 30, 240, 153, 231, 175, 166, 215, 220, 38, 225, 233, 94, 166, 209, 133, 39, 104}, {37, 18, 77, 37, 44, 114, 61, 90, 123, 199, 93, 178, 79, 116, 72, 237, 153, 185, 5, 244, 21, 138, 216, 153, 246, 15, 183, 233, 184, 157, 98, 211}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {46, 251, 131, 208, 127, 5, 82, 229, 218, 244, 57, 142, 121, 128, 140, 60, 37, 26, 53, 202, 93, 224, 14, 38, 45, 231, 14, 135, 5, 53, 191, 122}, {29, 119, 52, 162, 111, 151, 203, 168, 248, 150, 58, 133, 160, 169, 114, 4, 56, 173, 102, 199, 124, 44, 70, 101, 2, 114, 201, 77, 62, 169, 29, 202}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {10, 239, 43, 155, 159, 165, 165, 143, 85, 119, 31, 5, 184, 62, 35, 72, 104, 254, 194, 157, 250, 37, 154, 92, 38, 129, 70, 79, 144, 64, 248, 229}, {25, 179, 221, 172, 64, 242, 171, 119, 24, 224, 130, 211, 33, 203, 132, 220, 202, 34, 184, 141, 97, 41, 196, 66, 104, 76, 198, 227, 70, 233, 98, 202}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {9, 97, 133, 126, 90, 9, 37, 92, 93, 54, 204, 74, 176, 4, 210, 179, 126, 132, 232, 94, 1, 43, 99, 19, 94, 204, 158, 182, 211, 11, 173, 113}, {6, 104, 134, 151, 231, 229, 204, 220, 145, 153, 210, 7, 82, 121, 191, 151, 222, 10, 61, 24, 52, 85, 181, 221, 66, 112, 241, 86, 162, 31, 57, 39}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {22, 66, 188, 158, 61, 134, 20, 40, 11, 96, 132, 230, 13, 42, 112, 246, 165, 185, 183, 146, 139, 203, 83, 217, 86, 182, 98, 145, 212, 136, 160, 115}, {21, 186, 44, 50, 106, 169, 72, 224, 98, 96, 234, 65, 160, 189, 251, 81, 122, 62, 103, 55, 253, 124, 63, 80, 198, 65, 133, 233, 59, 169, 251, 201}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {44, 78, 199, 27, 81, 127, 184, 3, 130, 222, 106, 28, 157, 253, 207, 74, 72, 113, 38, 89, 192, 159, 78, 162, 243, 10, 158, 132, 196, 136, 156, 203}, {24, 222, 182, 183, 49, 64, 71, 189, 68, 40, 208, 162, 61, 141, 216, 143, 29, 77, 186, 191, 35, 253, 73, 134, 225, 116, 97, 40, 233, 93, 240, 248}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {10, 44, 163, 223, 207, 227, 239, 221, 16, 152, 236, 13, 245, 109, 56, 119, 84, 28, 101, 144, 168, 64, 165, 32, 66, 96, 11, 168, 113, 198, 182, 0}, {1, 167, 79, 4, 30, 101, 232, 174, 15, 80, 7, 205, 136, 21, 1, 51, 136, 10, 201, 112, 207, 168, 58, 155, 31, 128, 200, 55, 112, 235, 148, 193}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {4, 144, 63, 120, 169, 4, 250, 255, 162, 128, 101, 203, 36, 132, 81, 171, 225, 63, 33, 46, 65, 0, 206, 234, 65, 106, 255, 189, 79, 185, 231, 44}, {39, 211, 103, 61, 70, 213, 134, 78, 205, 147, 8, 83, 15, 174, 93, 245, 149, 177, 11, 110, 215, 109, 85, 220, 198, 56, 101, 39, 236, 187, 25, 154}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {8, 244, 248, 55, 188, 87, 50, 112, 87, 212, 9, 190, 239, 83, 31, 36, 45, 84, 17, 97, 238, 58, 1, 95, 225, 184, 75, 241, 15, 149, 144, 99}, {38, 196, 110, 155, 6, 120, 198, 170, 207, 153, 83, 226, 84, 104, 161, 73, 100, 48, 201, 10, 174, 77, 188, 216, 113, 117, 213, 191, 218, 22, 168, 116}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {10, 255, 221, 37, 151, 110, 125, 10, 215, 10, 252, 130, 222, 219, 1, 72, 220, 142, 0, 199, 90, 192, 82, 196, 11, 107, 208, 188, 176, 34, 6, 24}, {2, 112, 231, 190, 176, 222, 5, 117, 74, 28, 150, 97, 159, 160, 188, 170, 141, 148, 103, 85, 188, 65, 83, 105, 44, 8, 28, 95, 14, 246, 107, 73}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {7, 113, 103, 123, 120, 51, 111, 43, 78, 14, 2, 236, 77, 200, 144, 232, 51, 53, 14, 163, 131, 169, 3, 43, 86, 197, 213, 209, 12, 178, 85, 65}, {38, 0, 151, 224, 89, 50, 245, 149, 57, 159, 152, 6, 3, 201, 188, 103, 142, 170, 230, 164, 109, 69, 68, 28, 245, 25, 3, 70, 35, 48, 13, 67}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {31, 112, 198, 245, 191, 178, 54, 209, 190, 98, 22, 88, 137, 107, 221, 160, 242, 89, 43, 74, 136, 20, 39, 26, 27, 107, 87, 133, 173, 252, 203, 59}, {44, 139, 225, 167, 158, 50, 35, 28, 71, 73, 44, 187, 123, 180, 96, 47, 253, 97, 134, 112, 26, 161, 239, 238, 188, 115, 88, 43, 210, 194, 54, 33}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {2, 237, 174, 2, 184, 37, 236, 132, 177, 232, 78, 88, 23, 80, 112, 119, 119, 186, 75, 202, 24, 59, 96, 145, 133, 27, 170, 71, 237, 8, 107, 58}, {7, 97, 184, 69, 120, 204, 27, 113, 198, 166, 165, 180, 220, 3, 209, 243, 205, 102, 71, 131, 50, 246, 184, 137, 112, 96, 64, 149, 71, 40, 212, 84}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {38, 89, 127, 58, 142, 55, 196, 210, 170, 118, 139, 19, 217, 109, 67, 195, 199, 152, 161, 88, 255, 15, 26, 176, 77, 68, 133, 82, 62, 199, 62, 164}, {22, 118, 160, 77, 155, 189, 126, 67, 117, 129, 55, 2, 204, 190, 119, 36, 250, 163, 58, 149, 113, 138, 216, 134, 230, 140, 246, 116, 47, 132, 175, 232}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {10, 59, 248, 5, 169, 107, 58, 81, 247, 139, 224, 119, 53, 58, 230, 205, 33, 52, 94, 96, 170, 19, 216, 255, 112, 38, 62, 236, 251, 44, 37, 127}, {43, 203, 132, 224, 53, 63, 173, 18, 169, 219, 152, 191, 159, 92, 90, 38, 103, 210, 52, 195, 97, 76, 9, 246, 204, 137, 4, 120, 212, 143, 78, 201}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {4, 178, 205, 143, 177, 125, 46, 164, 172, 162, 102, 62, 96, 88, 138, 126, 176, 231, 146, 163, 173, 238, 72, 23, 240, 128, 235, 119, 245, 234, 45, 51}, {27, 185, 22, 199, 90, 214, 38, 213, 12, 151, 24, 145, 0, 170, 29, 101, 153, 146, 36, 198, 191, 29, 198, 243, 0, 234, 251, 58, 72, 173, 131, 147}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {28, 197, 217, 135, 244, 69, 251, 160, 226, 244, 202, 157, 211, 39, 245, 28, 185, 6, 230, 89, 34, 66, 61, 217, 207, 80, 126, 230, 60, 47, 243, 121}, {31, 213, 137, 185, 204, 103, 14, 105, 0, 70, 209, 189, 87, 130, 7, 255, 245, 91, 234, 231, 6, 167, 75, 143, 86, 203, 187, 98, 237, 188, 240, 8}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {35, 249, 38, 225, 225, 123, 243, 247, 255, 144, 69, 217, 21, 177, 178, 92, 162, 140, 176, 94, 89, 99, 255, 100, 16, 72, 56, 64, 192, 172, 160, 130}, {2, 235, 176, 107, 39, 112, 58, 22, 112, 19, 71, 87, 196, 49, 105, 237, 57, 218, 215, 207, 11, 186, 7, 1, 103, 73, 252, 118, 151, 180, 110, 213}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {41, 231, 103, 177, 202, 160, 187, 160, 55, 207, 36, 252, 63, 191, 137, 33, 196, 66, 98, 51, 247, 248, 231, 136, 85, 232, 204, 221, 190, 183, 28, 211}, {31, 48, 212, 36, 182, 32, 68, 173, 136, 247, 226, 198, 68, 246, 30, 85, 230, 255, 141, 220, 255, 84, 59, 131, 226, 109, 150, 184, 249, 131, 65, 0}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {34, 172, 190, 136, 167, 57, 101, 121, 42, 42, 252, 80, 116, 150, 56, 185, 72, 235, 70, 133, 91, 186, 21, 102, 37, 157, 165, 176, 210, 52, 35, 232}, {42, 175, 5, 189, 222, 251, 14, 166, 202, 94, 158, 245, 140, 30, 202, 255, 5, 72, 240, 143, 81, 108, 86, 48, 88, 22, 99, 69, 128, 134, 250, 216}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {3, 108, 100, 141, 232, 63, 230, 95, 169, 152, 253, 221, 98, 186, 159, 134, 41, 162, 89, 111, 135, 118, 88, 245, 184, 2, 42, 41, 167, 147, 118, 145}, {7, 140, 173, 51, 255, 68, 39, 29, 201, 24, 60, 31, 225, 106, 147, 227, 205, 207, 150, 63, 160, 70, 124, 102, 180, 246, 157, 58, 129, 147, 46, 151}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {35, 216, 186, 228, 140, 17, 177, 159, 120, 150, 206, 94, 178, 171, 185, 143, 199, 13, 123, 166, 97, 129, 118, 64, 9, 177, 147, 246, 106, 61, 205, 18}, {20, 90, 31, 49, 66, 106, 38, 42, 225, 236, 198, 19, 202, 76, 118, 151, 38, 133, 50, 120, 211, 170, 250, 217, 1, 86, 138, 242, 134, 13, 233, 156}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {12, 31, 64, 65, 235, 104, 74, 102, 81, 57, 5, 103, 4, 248, 31, 112, 189, 5, 37, 192, 77, 166, 208, 17, 176, 247, 127, 142, 78, 107, 66, 88}, {38, 194, 64, 32, 64, 214, 238, 10, 131, 125, 132, 232, 135, 94, 44, 89, 76, 197, 169, 222, 116, 72, 180, 47, 247, 71, 221, 196, 103, 168, 24, 206}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {33, 247, 166, 60, 168, 15, 45, 136, 96, 171, 230, 206, 150, 146, 210, 64, 134, 215, 160, 205, 74, 83, 202, 106, 220, 78, 75, 18, 215, 117, 123, 255}, {31, 242, 93, 134, 212, 148, 38, 211, 248, 231, 72, 16, 69, 22, 45, 186, 229, 191, 2, 193, 54, 8, 136, 2, 97, 36, 132, 227, 192, 240, 216, 226}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {37, 222, 49, 67, 57, 141, 126, 39, 183, 27, 99, 42, 244, 122, 157, 119, 89, 215, 183, 26, 221, 208, 85, 223, 51, 163, 13, 215, 190, 73, 146, 99}, {42, 149, 200, 162, 51, 100, 217, 5, 8, 138, 115, 3, 35, 83, 233, 243, 106, 91, 237, 155, 118, 2, 90, 123, 101, 183, 160, 85, 148, 4, 206, 3}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {25, 24, 239, 22, 192, 26, 180, 178, 152, 240, 222, 28, 59, 51, 91, 54, 170, 14, 111, 89, 104, 3, 97, 151, 39, 202, 197, 28, 192, 251, 11, 85}, {32, 28, 220, 134, 191, 238, 232, 237, 209, 28, 180, 143, 225, 238, 18, 4, 94, 111, 3, 18, 153, 90, 176, 95, 210, 68, 241, 99, 2, 59, 98, 135}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {4, 93, 119, 59, 113, 188, 6, 43, 44, 191, 71, 244, 53, 8, 2, 196, 146, 62, 38, 73, 159, 164, 98, 234, 250, 234, 137, 173, 72, 9, 216, 219}, {9, 163, 121, 244, 124, 140, 136, 153, 200, 175, 165, 2, 219, 186, 205, 110, 187, 48, 188, 16, 182, 35, 253, 253, 220, 206, 238, 67, 154, 252, 42, 226}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {40, 179, 99, 188, 224, 72, 112, 71, 115, 172, 245, 39, 91, 169, 168, 11, 101, 102, 201, 215, 128, 138, 24, 84, 197, 200, 149, 22, 57, 225, 76, 95}, {23, 178, 71, 80, 181, 46, 130, 57, 17, 119, 59, 11, 66, 177, 112, 214, 87, 241, 30, 233, 139, 148, 232, 38, 150, 88, 116, 145, 214, 18, 64, 152}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {21, 245, 134, 158, 156, 170, 27, 200, 158, 242, 10, 181, 72, 175, 144, 188, 12, 54, 150, 76, 66, 236, 69, 241, 76, 234, 0, 56, 159, 36, 97, 153}, {17, 157, 248, 123, 92, 72, 221, 87, 13, 84, 240, 103, 204, 140, 6, 73, 193, 15, 94, 200, 128, 88, 162, 18, 40, 250, 140, 245, 79, 3, 220, 201}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {30, 10, 200, 80, 17, 90, 42, 77, 38, 22, 83, 179, 5, 182, 236, 77, 78, 51, 146, 144, 221, 176, 9, 77, 76, 113, 224, 91, 156, 54, 29, 218}, {48, 17, 56, 247, 219, 196, 10, 91, 133, 116, 2, 47, 104, 23, 211, 71, 47, 80, 107, 77, 224, 190, 200, 18, 36, 174, 45, 232, 237, 186, 56, 25}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {26, 249, 187, 163, 238, 210, 244, 3, 29, 106, 169, 120, 171, 133, 106, 44, 67, 65, 154, 216, 150, 119, 24, 217, 39, 132, 115, 187, 238, 26, 65, 214}, {28, 249, 200, 119, 82, 23, 35, 58, 161, 246, 36, 165, 178, 153, 190, 226, 86, 208, 68, 91, 12, 182, 123, 91, 180, 164, 6, 78, 25, 81, 199, 226}}, {{43, 140, 253, 145, 185, 5, 202, 227, 29, 65, 231, 222, 223, 74, 146, 126, 227, 188, 66, 154, 173, 126, 52, 77, 89, 210, 129, 13, 130, 135, 108, 50}, {42, 170, 108, 36, 167, 88, 32, 158, 144, 172, 237, 31, 16, 39, 123, 118, 42, 124, 17, 21, 219, 192, 225, 106, 194, 118, 252, 44, 103, 26, 134, 31}, {33, 28, 58, 21, 185, 109, 83, 187, 116, 174, 93, 154, 246, 213, 114, 212, 137, 165, 131, 247, 147, 243, 85, 103, 248, 182, 205, 70, 21, 107, 181, 217}, {9, 42, 202, 22, 140, 167, 33, 4, 176, 226, 45, 132, 75, 56, 160, 93, 240, 44, 78, 251, 202, 200, 226, 45, 142, 70, 37, 41, 149, 215, 74, 157}}}; + + CardParam inputs[52]; + memset(inputs, 0, sizeof(inputs)); + int inputs_len = sizeof(input_array) / sizeof(input_array[0]); + + for (int i = 0; i < inputs_len; i++) + { + Bytes x1 = {len : sizeof(input_array[i][0]), data : input_array[i][0]}; + Bytes y1 = {len : sizeof(input_array[i][0]), data : input_array[i][1]}; + Bytes x2 = {len : sizeof(input_array[i][0]), data : input_array[i][2]}; + Bytes y2 = {len : sizeof(input_array[i][0]), data : input_array[i][3]}; + + CardParam param = {x1 : x1, y1 : y1, x2 : x2, y2 : y2}; + inputs[i] = param; + } + + char output_array[][4][32] = {{{27, 239, 174, 161, 146, 39, 245, 222, 170, 173, 202, 87, 165, 105, 103, 217, 236, 140, 205, 176, 188, 68, 74, 46, 169, 150, 38, 40, 133, 149, 236, 55}, {39, 126, 141, 76, 165, 103, 46, 113, 9, 210, 202, 201, 53, 125, 60, 77, 163, 35, 234, 110, 59, 212, 25, 182, 23, 236, 180, 92, 15, 195, 43, 219}, {40, 113, 229, 66, 28, 62, 51, 171, 6, 198, 47, 20, 120, 117, 214, 102, 86, 52, 128, 225, 133, 203, 180, 174, 64, 173, 59, 129, 191, 28, 88, 104}, {28, 193, 154, 241, 158, 186, 102, 80, 149, 63, 243, 152, 88, 147, 105, 109, 177, 73, 88, 33, 213, 180, 106, 163, 106, 137, 159, 200, 156, 27, 32, 135}}, {{37, 93, 17, 209, 185, 145, 208, 201, 18, 183, 255, 146, 142, 87, 176, 136, 8, 112, 118, 248, 21, 161, 120, 25, 83, 90, 9, 172, 171, 223, 114, 252}, {24, 37, 204, 210, 166, 1, 93, 43, 66, 218, 91, 254, 14, 157, 240, 176, 84, 87, 100, 108, 176, 194, 141, 122, 33, 13, 162, 212, 64, 126, 91, 151}, {6, 82, 231, 223, 231, 204, 82, 214, 143, 191, 102, 86, 10, 210, 94, 76, 182, 252, 120, 10, 14, 172, 69, 243, 168, 61, 49, 207, 38, 54, 154, 115}, {20, 254, 202, 198, 70, 184, 23, 198, 212, 79, 68, 242, 4, 209, 51, 84, 83, 180, 103, 198, 144, 200, 121, 122, 197, 109, 50, 195, 89, 215, 99, 249}}, {{28, 107, 154, 81, 217, 35, 140, 164, 95, 128, 13, 186, 12, 9, 174, 147, 234, 227, 12, 212, 111, 154, 240, 65, 213, 38, 24, 40, 37, 60, 32, 238}, {0, 141, 32, 20, 201, 214, 139, 7, 26, 51, 254, 26, 225, 45, 17, 34, 200, 14, 222, 27, 14, 73, 54, 7, 99, 252, 170, 203, 181, 98, 197, 70}, {14, 154, 186, 72, 44, 204, 163, 3, 15, 82, 150, 102, 130, 94, 215, 103, 75, 255, 75, 99, 149, 141, 112, 200, 24, 208, 51, 130, 89, 88, 185, 79}, {47, 96, 211, 215, 12, 241, 253, 15, 79, 18, 124, 3, 152, 79, 219, 91, 157, 141, 245, 22, 145, 88, 135, 17, 102, 1, 201, 27, 160, 41, 160, 1}}, {{31, 228, 3, 168, 73, 129, 83, 247, 87, 26, 77, 6, 194, 68, 8, 18, 26, 76, 23, 110, 126, 202, 239, 15, 46, 51, 89, 29, 170, 212, 37, 157}, {0, 192, 94, 152, 225, 239, 88, 33, 35, 83, 166, 97, 44, 139, 171, 188, 38, 20, 217, 0, 54, 40, 135, 198, 46, 153, 213, 32, 86, 166, 74, 109}, {14, 218, 185, 175, 57, 137, 57, 0, 28, 89, 135, 5, 23, 241, 7, 99, 17, 152, 103, 12, 61, 174, 196, 37, 56, 88, 165, 247, 90, 234, 45, 117}, {20, 179, 200, 25, 211, 202, 215, 177, 172, 86, 213, 86, 103, 57, 43, 207, 99, 240, 182, 11, 9, 14, 219, 239, 102, 230, 149, 193, 51, 214, 148, 113}}, {{48, 11, 50, 170, 22, 122, 102, 0, 74, 107, 254, 148, 86, 18, 94, 117, 10, 39, 118, 19, 5, 35, 63, 176, 247, 230, 78, 209, 80, 90, 24, 68}, {37, 18, 96, 62, 144, 141, 224, 252, 102, 5, 64, 240, 85, 57, 246, 90, 49, 46, 101, 35, 48, 249, 84, 52, 49, 153, 181, 71, 237, 22, 195, 113}, {37, 236, 27, 125, 244, 238, 157, 144, 144, 64, 194, 93, 117, 194, 53, 232, 190, 44, 67, 155, 127, 230, 222, 63, 146, 77, 56, 227, 239, 144, 94, 82}, {38, 38, 152, 66, 149, 165, 156, 155, 169, 163, 53, 149, 204, 92, 254, 105, 80, 1, 183, 218, 50, 38, 12, 69, 254, 93, 206, 147, 45, 194, 139, 155}}, {{46, 50, 89, 34, 141, 142, 106, 37, 6, 83, 207, 245, 153, 195, 147, 215, 199, 116, 182, 212, 7, 33, 126, 174, 54, 98, 76, 4, 5, 197, 186, 40}, {1, 62, 124, 226, 205, 73, 156, 52, 216, 168, 253, 116, 199, 213, 144, 214, 26, 62, 6, 37, 123, 41, 32, 201, 159, 117, 135, 182, 249, 148, 37, 1}, {23, 250, 153, 14, 227, 80, 137, 97, 43, 172, 165, 168, 117, 213, 228, 148, 146, 156, 164, 115, 242, 164, 126, 178, 189, 237, 110, 82, 186, 172, 158, 10}, {33, 215, 49, 141, 185, 71, 106, 20, 101, 70, 66, 128, 134, 218, 228, 189, 128, 60, 114, 93, 178, 183, 13, 181, 240, 198, 27, 27, 239, 45, 28, 143}}, {{29, 196, 132, 129, 11, 206, 81, 10, 227, 169, 106, 252, 200, 193, 162, 140, 62, 190, 202, 192, 145, 216, 232, 62, 140, 24, 46, 33, 67, 189, 78, 137}, {2, 94, 164, 132, 131, 57, 77, 75, 199, 165, 119, 44, 202, 36, 198, 208, 155, 45, 32, 12, 66, 67, 182, 112, 186, 9, 72, 198, 43, 168, 223, 119}, {24, 171, 186, 37, 91, 141, 149, 245, 219, 23, 53, 27, 77, 113, 212, 93, 53, 50, 32, 128, 15, 85, 137, 93, 95, 220, 250, 181, 93, 226, 90, 201}, {28, 118, 255, 187, 90, 197, 206, 57, 58, 135, 220, 170, 249, 108, 49, 146, 139, 133, 121, 175, 253, 50, 176, 203, 82, 28, 251, 137, 60, 16, 157, 184}}, {{28, 217, 8, 90, 105, 237, 136, 105, 210, 132, 174, 37, 155, 13, 176, 67, 49, 43, 220, 158, 80, 2, 21, 102, 208, 73, 180, 38, 193, 149, 218, 31}, {45, 210, 221, 181, 251, 97, 64, 36, 69, 84, 227, 82, 212, 130, 104, 210, 61, 89, 119, 189, 184, 224, 102, 180, 155, 94, 240, 200, 112, 58, 95, 237}, {38, 156, 168, 221, 203, 32, 118, 96, 252, 112, 53, 60, 235, 178, 149, 209, 126, 95, 14, 2, 75, 17, 128, 99, 108, 151, 192, 201, 211, 213, 197, 148}, {19, 85, 234, 36, 72, 8, 28, 90, 78, 145, 23, 243, 199, 53, 62, 134, 122, 199, 212, 2, 43, 213, 151, 75, 42, 10, 7, 75, 47, 105, 207, 67}}, {{4, 42, 238, 18, 56, 63, 234, 100, 127, 68, 144, 7, 58, 90, 226, 99, 121, 22, 56, 51, 252, 192, 85, 142, 104, 82, 45, 230, 185, 221, 37, 183}, {26, 148, 50, 44, 71, 41, 5, 97, 171, 232, 243, 23, 238, 134, 208, 252, 115, 181, 112, 75, 175, 18, 40, 177, 168, 122, 93, 141, 188, 106, 208, 222}, {33, 24, 193, 132, 84, 192, 93, 27, 251, 82, 3, 16, 76, 90, 111, 72, 147, 157, 188, 101, 181, 170, 72, 194, 142, 8, 222, 4, 185, 150, 108, 106}, {16, 215, 18, 48, 138, 9, 6, 212, 124, 184, 106, 222, 247, 162, 64, 232, 138, 255, 17, 180, 152, 251, 99, 173, 32, 138, 242, 91, 84, 27, 226, 97}}, {{11, 61, 197, 203, 122, 146, 97, 171, 250, 152, 74, 134, 254, 179, 12, 51, 92, 88, 50, 211, 126, 63, 15, 102, 230, 1, 99, 214, 173, 17, 96, 116}, {41, 52, 198, 199, 203, 249, 208, 7, 25, 1, 58, 141, 255, 195, 85, 41, 45, 154, 207, 75, 103, 185, 166, 221, 24, 173, 48, 126, 203, 128, 218, 32}, {22, 182, 6, 48, 62, 94, 129, 125, 187, 127, 232, 49, 187, 155, 224, 198, 225, 176, 45, 10, 138, 182, 41, 230, 48, 176, 178, 13, 113, 244, 62, 199}, {46, 62, 191, 0, 76, 97, 244, 178, 165, 217, 188, 146, 127, 151, 97, 218, 174, 38, 82, 125, 17, 186, 151, 60, 218, 47, 106, 90, 75, 204, 64, 188}}, {{44, 236, 39, 24, 1, 139, 8, 113, 116, 85, 118, 159, 71, 16, 216, 210, 236, 88, 86, 93, 115, 188, 22, 174, 122, 118, 1, 41, 21, 213, 217, 212}, {24, 139, 232, 167, 155, 251, 183, 144, 10, 78, 236, 139, 184, 186, 175, 75, 108, 225, 172, 24, 69, 170, 213, 14, 191, 165, 156, 64, 189, 217, 17, 138}, {32, 99, 68, 178, 44, 18, 110, 128, 241, 148, 236, 62, 11, 132, 98, 110, 11, 50, 249, 56, 15, 34, 196, 104, 129, 25, 5, 254, 190, 157, 10, 58}, {29, 102, 133, 195, 102, 16, 179, 114, 102, 181, 109, 229, 169, 177, 37, 44, 255, 204, 137, 60, 39, 244, 146, 238, 119, 12, 98, 32, 88, 23, 116, 129}}, {{9, 62, 243, 223, 98, 20, 99, 30, 98, 124, 190, 79, 200, 174, 146, 225, 79, 145, 68, 131, 6, 158, 208, 214, 191, 188, 225, 80, 246, 254, 208, 39}, {27, 236, 162, 72, 232, 6, 100, 108, 142, 81, 233, 232, 212, 167, 100, 200, 101, 139, 218, 158, 142, 73, 165, 204, 252, 88, 188, 145, 93, 29, 197, 229}, {43, 186, 243, 42, 4, 153, 220, 154, 131, 38, 221, 232, 124, 15, 179, 30, 213, 219, 39, 213, 61, 199, 153, 206, 176, 176, 218, 143, 136, 179, 166, 48}, {25, 228, 147, 28, 164, 82, 218, 5, 16, 139, 25, 160, 67, 60, 79, 80, 7, 151, 233, 14, 119, 174, 214, 53, 63, 241, 114, 157, 100, 148, 105, 134}}, {{40, 205, 66, 26, 164, 134, 181, 189, 42, 200, 10, 156, 68, 59, 20, 124, 251, 107, 2, 101, 148, 65, 52, 79, 121, 19, 161, 248, 239, 54, 107, 32}, {21, 17, 189, 117, 203, 139, 41, 75, 247, 74, 57, 231, 151, 139, 46, 57, 4, 153, 4, 124, 59, 252, 56, 21, 36, 112, 142, 125, 189, 64, 209, 73}, {30, 107, 56, 53, 39, 100, 220, 49, 14, 36, 196, 97, 106, 228, 91, 151, 17, 147, 156, 98, 245, 154, 63, 124, 150, 126, 59, 193, 229, 153, 15, 249}, {21, 202, 82, 235, 116, 201, 146, 62, 159, 203, 125, 13, 182, 240, 87, 204, 237, 81, 50, 142, 202, 18, 43, 131, 12, 124, 245, 240, 13, 175, 0, 145}}, {{22, 156, 244, 194, 94, 188, 230, 214, 226, 164, 231, 196, 246, 185, 3, 1, 0, 197, 11, 179, 91, 166, 9, 251, 158, 174, 134, 87, 11, 231, 204, 240}, {16, 246, 86, 188, 102, 207, 32, 176, 225, 123, 4, 202, 251, 167, 190, 123, 223, 5, 180, 221, 9, 36, 78, 238, 85, 200, 48, 161, 192, 145, 121, 15}, {14, 26, 218, 47, 108, 192, 206, 147, 236, 155, 141, 11, 157, 191, 187, 22, 71, 69, 28, 172, 194, 64, 4, 77, 225, 219, 205, 200, 119, 81, 236, 167}, {42, 35, 61, 101, 198, 18, 10, 30, 139, 8, 169, 99, 135, 28, 43, 170, 140, 56, 130, 2, 56, 81, 47, 195, 237, 249, 95, 230, 102, 191, 242, 122}}, {{8, 156, 235, 53, 159, 215, 243, 140, 41, 51, 128, 147, 181, 124, 54, 193, 59, 135, 182, 239, 124, 40, 123, 88, 16, 148, 27, 165, 166, 38, 144, 248}, {32, 98, 142, 39, 184, 93, 60, 153, 59, 51, 103, 153, 41, 210, 5, 73, 128, 96, 107, 179, 252, 111, 209, 170, 108, 204, 159, 216, 75, 60, 14, 201}, {25, 226, 229, 141, 17, 24, 196, 84, 255, 103, 154, 234, 122, 62, 1, 223, 119, 235, 21, 17, 59, 140, 249, 71, 77, 242, 189, 217, 32, 66, 252, 204}, {25, 122, 176, 79, 224, 166, 161, 25, 114, 180, 230, 69, 178, 133, 245, 240, 34, 156, 151, 212, 169, 133, 231, 54, 36, 16, 101, 171, 143, 179, 3, 177}}, {{8, 123, 180, 94, 126, 18, 17, 144, 11, 120, 197, 162, 182, 8, 121, 89, 185, 170, 147, 140, 157, 136, 231, 159, 119, 6, 39, 19, 96, 3, 241, 197}, {36, 13, 67, 160, 62, 197, 6, 28, 92, 156, 8, 19, 190, 120, 150, 41, 214, 17, 9, 166, 150, 166, 43, 185, 144, 84, 226, 44, 103, 198, 7, 243}, {0, 247, 140, 36, 6, 36, 36, 33, 251, 151, 196, 194, 205, 88, 13, 239, 128, 9, 196, 215, 217, 237, 195, 35, 234, 220, 54, 142, 17, 37, 76, 125}, {21, 15, 133, 250, 55, 136, 142, 194, 198, 214, 27, 93, 78, 106, 171, 246, 156, 122, 58, 143, 49, 82, 119, 218, 46, 0, 122, 2, 143, 23, 146, 15}}, {{14, 83, 28, 84, 208, 196, 203, 212, 84, 68, 10, 42, 183, 158, 247, 142, 90, 135, 240, 124, 72, 169, 173, 203, 223, 131, 40, 146, 231, 48, 128, 155}, {36, 216, 28, 141, 247, 110, 82, 141, 41, 222, 32, 254, 246, 220, 192, 175, 5, 80, 158, 172, 136, 249, 124, 46, 187, 203, 234, 83, 191, 204, 43, 155}, {14, 203, 255, 27, 127, 122, 15, 130, 166, 220, 221, 199, 228, 82, 208, 241, 61, 100, 128, 251, 98, 2, 112, 166, 192, 221, 9, 47, 192, 123, 84, 34}, {1, 169, 155, 152, 231, 80, 247, 179, 194, 155, 71, 148, 109, 30, 14, 114, 57, 57, 172, 85, 157, 244, 196, 37, 84, 0, 108, 73, 56, 255, 99, 180}}, {{18, 182, 33, 38, 194, 157, 207, 107, 72, 196, 112, 86, 205, 98, 179, 122, 245, 138, 187, 249, 248, 32, 202, 229, 134, 139, 193, 115, 147, 224, 21, 231}, {45, 145, 25, 255, 96, 70, 88, 7, 48, 132, 199, 207, 184, 75, 139, 227, 65, 199, 10, 20, 14, 170, 219, 158, 99, 143, 168, 87, 227, 58, 15, 153}, {27, 131, 54, 255, 118, 214, 6, 76, 209, 60, 62, 179, 24, 179, 194, 203, 128, 13, 53, 144, 68, 32, 36, 76, 36, 118, 88, 58, 118, 218, 109, 134}, {46, 243, 23, 49, 115, 56, 91, 92, 25, 206, 141, 87, 141, 185, 37, 72, 38, 147, 172, 146, 137, 177, 231, 127, 205, 118, 42, 118, 148, 217, 238, 10}}, {{32, 205, 166, 198, 10, 250, 70, 137, 56, 124, 92, 111, 240, 188, 197, 249, 102, 104, 181, 74, 244, 55, 28, 200, 81, 178, 6, 74, 230, 9, 110, 112}, {34, 83, 229, 33, 224, 141, 205, 20, 246, 5, 156, 10, 240, 163, 213, 46, 183, 164, 48, 98, 68, 205, 225, 147, 122, 144, 122, 248, 223, 74, 166, 200}, {34, 165, 42, 186, 35, 66, 209, 176, 80, 250, 251, 4, 58, 102, 63, 127, 228, 52, 104, 72, 91, 171, 18, 230, 29, 122, 240, 40, 170, 17, 114, 29}, {34, 23, 98, 169, 32, 100, 154, 230, 124, 185, 251, 173, 161, 53, 145, 49, 162, 152, 154, 191, 123, 45, 214, 174, 63, 252, 169, 230, 215, 88, 225, 210}}, {{24, 231, 45, 205, 229, 235, 184, 193, 143, 19, 132, 237, 190, 235, 40, 78, 138, 167, 181, 92, 90, 2, 124, 85, 4, 230, 38, 69, 178, 34, 24, 89}, {2, 255, 153, 162, 214, 200, 59, 136, 243, 109, 132, 80, 79, 33, 58, 164, 58, 230, 245, 241, 196, 86, 169, 206, 143, 192, 28, 20, 6, 191, 30, 55}, {23, 200, 7, 174, 49, 72, 36, 132, 154, 95, 71, 180, 143, 26, 64, 89, 102, 11, 212, 201, 78, 126, 111, 2, 225, 12, 235, 70, 85, 186, 78, 171}, {24, 107, 7, 205, 118, 167, 177, 162, 171, 75, 104, 65, 241, 213, 93, 249, 113, 202, 18, 140, 100, 225, 123, 251, 225, 236, 110, 18, 247, 220, 71, 5}}, {{0, 59, 88, 238, 232, 198, 45, 77, 112, 25, 86, 21, 232, 78, 215, 44, 123, 22, 94, 13, 51, 252, 84, 232, 156, 210, 103, 157, 158, 170, 58, 24}, {38, 153, 169, 254, 170, 44, 51, 103, 60, 49, 80, 245, 110, 241, 85, 117, 187, 34, 48, 193, 30, 152, 0, 45, 25, 51, 30, 13, 246, 250, 169, 71}, {7, 105, 43, 141, 62, 121, 115, 120, 148, 232, 180, 173, 103, 117, 138, 151, 80, 48, 144, 130, 71, 254, 159, 110, 110, 120, 13, 170, 127, 51, 39, 178}, {27, 232, 84, 161, 207, 48, 131, 18, 207, 221, 170, 157, 214, 51, 83, 140, 32, 229, 164, 99, 159, 62, 229, 44, 15, 112, 50, 85, 129, 161, 117, 105}}, {{7, 48, 80, 134, 154, 98, 27, 123, 212, 255, 41, 148, 226, 119, 119, 217, 141, 237, 225, 239, 227, 6, 227, 5, 2, 128, 5, 97, 115, 56, 134, 213}, {48, 23, 113, 222, 157, 159, 14, 69, 81, 185, 101, 217, 21, 182, 60, 249, 114, 224, 152, 172, 116, 133, 190, 97, 1, 1, 244, 49, 140, 19, 42, 245}, {4, 86, 182, 141, 213, 122, 128, 255, 6, 179, 106, 246, 210, 4, 150, 148, 39, 24, 234, 187, 170, 8, 131, 116, 103, 175, 212, 142, 230, 120, 113, 60}, {27, 159, 82, 220, 247, 33, 113, 33, 115, 89, 29, 60, 137, 68, 53, 105, 103, 84, 16, 85, 8, 160, 142, 69, 64, 92, 116, 63, 28, 173, 195, 56}}, {{24, 207, 11, 58, 113, 151, 128, 155, 208, 248, 209, 111, 135, 71, 9, 17, 58, 6, 187, 164, 26, 191, 224, 150, 148, 151, 189, 136, 134, 234, 174, 35}, {14, 148, 85, 218, 113, 166, 203, 11, 206, 194, 58, 216, 96, 73, 196, 42, 131, 190, 157, 67, 69, 103, 10, 10, 75, 120, 103, 253, 174, 126, 216, 129}, {35, 37, 145, 244, 11, 234, 90, 114, 63, 70, 48, 30, 151, 70, 115, 53, 3, 44, 54, 9, 206, 209, 142, 198, 57, 57, 67, 244, 70, 160, 113, 251}, {38, 219, 160, 180, 38, 4, 114, 202, 198, 33, 133, 110, 193, 206, 187, 85, 184, 111, 7, 56, 51, 40, 21, 145, 89, 223, 219, 115, 84, 84, 116, 222}}, {{31, 95, 125, 229, 42, 52, 0, 35, 236, 35, 193, 198, 252, 94, 177, 117, 204, 54, 185, 208, 98, 92, 180, 60, 187, 63, 108, 113, 109, 146, 230, 108}, {11, 135, 200, 164, 149, 203, 75, 207, 209, 41, 119, 252, 17, 105, 33, 177, 82, 108, 170, 52, 137, 155, 109, 142, 88, 225, 174, 46, 37, 30, 116, 169}, {18, 42, 179, 36, 20, 138, 129, 237, 245, 127, 48, 41, 100, 14, 199, 110, 111, 69, 218, 143, 230, 143, 15, 25, 92, 250, 221, 96, 119, 161, 197, 171}, {19, 39, 205, 230, 227, 31, 31, 93, 3, 236, 128, 5, 99, 131, 125, 60, 167, 39, 197, 12, 232, 248, 237, 50, 17, 134, 93, 74, 195, 232, 118, 163}}, {{21, 97, 207, 59, 190, 146, 18, 75, 248, 193, 0, 41, 194, 58, 95, 101, 150, 92, 77, 3, 57, 235, 75, 224, 46, 107, 76, 254, 100, 88, 31, 245}, {7, 246, 160, 138, 167, 38, 8, 68, 20, 76, 148, 121, 58, 204, 68, 248, 199, 33, 199, 38, 12, 230, 68, 26, 186, 48, 119, 50, 68, 86, 12, 239}, {21, 219, 42, 39, 204, 229, 185, 142, 218, 125, 164, 196, 38, 114, 204, 250, 100, 243, 67, 234, 143, 19, 165, 207, 223, 35, 65, 31, 227, 196, 105, 102}, {23, 188, 215, 43, 110, 205, 180, 164, 244, 86, 38, 63, 168, 125, 173, 201, 134, 227, 81, 45, 33, 193, 101, 38, 48, 110, 132, 28, 113, 35, 234, 252}}, {{3, 186, 184, 137, 18, 42, 26, 99, 178, 57, 6, 63, 69, 118, 94, 252, 142, 180, 67, 43, 173, 207, 163, 81, 5, 148, 64, 32, 69, 144, 188, 113}, {15, 91, 21, 71, 21, 34, 138, 31, 89, 124, 238, 146, 247, 66, 2, 69, 161, 62, 247, 0, 170, 156, 210, 180, 115, 71, 209, 154, 61, 147, 59, 145}, {16, 25, 208, 81, 43, 13, 235, 198, 175, 122, 29, 156, 214, 57, 147, 142, 95, 141, 24, 252, 8, 200, 181, 157, 189, 40, 145, 183, 6, 210, 245, 59}, {19, 72, 137, 127, 38, 103, 49, 112, 221, 64, 253, 217, 9, 226, 42, 38, 102, 0, 79, 36, 15, 247, 77, 59, 182, 82, 27, 228, 205, 20, 137, 91}}, {{1, 119, 36, 32, 93, 31, 219, 30, 34, 76, 29, 98, 202, 138, 107, 116, 144, 148, 243, 25, 41, 62, 145, 154, 136, 182, 116, 113, 231, 189, 171, 208}, {32, 31, 70, 13, 222, 61, 236, 71, 228, 174, 255, 95, 202, 6, 183, 109, 226, 222, 195, 196, 29, 59, 164, 235, 139, 68, 102, 135, 152, 138, 15, 222}, {15, 42, 51, 48, 37, 189, 223, 65, 111, 82, 219, 199, 31, 23, 212, 186, 36, 197, 178, 57, 228, 47, 236, 208, 241, 86, 202, 30, 23, 166, 241, 8}, {10, 31, 71, 134, 72, 217, 92, 209, 115, 23, 199, 104, 19, 36, 61, 48, 62, 113, 133, 140, 49, 70, 18, 232, 247, 63, 222, 187, 196, 7, 181, 132}}, {{14, 220, 142, 106, 26, 145, 72, 174, 59, 184, 9, 123, 163, 83, 238, 191, 115, 214, 111, 113, 215, 150, 135, 187, 199, 88, 240, 42, 69, 100, 159, 210}, {40, 68, 168, 153, 120, 210, 39, 167, 180, 183, 128, 84, 71, 168, 120, 220, 236, 15, 167, 81, 147, 116, 108, 96, 250, 76, 181, 106, 188, 156, 185, 24}, {5, 172, 68, 255, 84, 53, 239, 217, 234, 42, 193, 163, 223, 155, 125, 118, 152, 75, 116, 12, 118, 80, 229, 69, 10, 200, 183, 240, 248, 202, 225, 71}, {46, 186, 82, 243, 122, 92, 249, 187, 213, 18, 187, 91, 233, 89, 118, 218, 62, 204, 166, 79, 163, 28, 53, 155, 108, 89, 117, 159, 48, 99, 247, 135}}, {{44, 214, 187, 213, 123, 70, 222, 212, 138, 246, 227, 75, 192, 203, 44, 196, 226, 82, 240, 87, 232, 254, 158, 242, 103, 139, 115, 161, 53, 137, 85, 4}, {36, 82, 221, 119, 18, 79, 124, 143, 249, 15, 242, 191, 174, 15, 9, 181, 118, 45, 95, 246, 28, 216, 168, 63, 66, 10, 195, 232, 177, 162, 144, 159}, {33, 211, 206, 194, 55, 84, 61, 75, 68, 135, 113, 154, 7, 44, 37, 204, 235, 26, 107, 224, 175, 217, 218, 91, 159, 123, 98, 80, 88, 124, 81, 39}, {47, 67, 158, 193, 131, 89, 165, 60, 38, 42, 187, 118, 13, 56, 90, 37, 64, 180, 184, 167, 69, 53, 147, 12, 224, 60, 200, 14, 26, 119, 120, 53}}, {{27, 168, 61, 145, 89, 52, 67, 146, 212, 241, 127, 138, 214, 140, 50, 37, 148, 151, 191, 140, 42, 141, 246, 102, 159, 207, 212, 62, 95, 203, 195, 176}, {24, 227, 234, 91, 11, 214, 142, 83, 214, 143, 4, 226, 28, 111, 181, 115, 114, 239, 130, 150, 146, 169, 29, 181, 241, 157, 230, 52, 107, 178, 131, 236}, {41, 62, 170, 194, 174, 45, 8, 139, 182, 139, 242, 249, 41, 84, 173, 121, 206, 44, 43, 238, 17, 221, 191, 213, 9, 110, 94, 15, 231, 54, 130, 46}, {14, 169, 200, 226, 136, 61, 34, 147, 79, 20, 146, 198, 237, 34, 220, 206, 42, 25, 130, 3, 219, 98, 115, 45, 117, 57, 178, 118, 82, 151, 117, 156}}, {{0, 11, 26, 145, 25, 140, 105, 77, 184, 180, 20, 219, 222, 175, 182, 116, 134, 211, 175, 162, 192, 57, 78, 106, 191, 246, 14, 7, 70, 146, 117, 98}, {39, 254, 27, 76, 117, 169, 218, 200, 44, 96, 101, 112, 82, 123, 89, 32, 206, 123, 255, 174, 59, 48, 110, 166, 119, 156, 225, 149, 50, 194, 30, 197}, {11, 121, 251, 9, 214, 114, 218, 81, 209, 91, 240, 98, 133, 80, 90, 31, 241, 57, 108, 109, 238, 134, 8, 197, 31, 93, 223, 39, 194, 22, 36, 160}, {40, 29, 202, 38, 209, 219, 209, 131, 12, 155, 241, 112, 14, 99, 54, 76, 55, 232, 113, 208, 14, 156, 13, 86, 102, 19, 156, 84, 173, 156, 20, 27}}, {{32, 191, 62, 208, 99, 32, 238, 38, 56, 43, 26, 223, 221, 54, 103, 206, 170, 3, 93, 3, 183, 137, 60, 29, 237, 226, 120, 235, 241, 249, 110, 129}, {27, 140, 3, 88, 26, 134, 178, 115, 171, 132, 173, 147, 142, 167, 4, 36, 82, 208, 63, 253, 91, 104, 224, 218, 109, 161, 169, 4, 113, 239, 157, 80}, {7, 40, 81, 3, 176, 241, 27, 53, 244, 252, 83, 13, 65, 247, 243, 94, 160, 59, 204, 148, 240, 219, 28, 66, 178, 60, 83, 123, 193, 155, 156, 229}, {7, 83, 183, 232, 52, 51, 181, 239, 203, 95, 129, 109, 195, 170, 18, 11, 170, 107, 14, 234, 219, 13, 170, 50, 86, 110, 117, 252, 102, 221, 70, 237}}, {{12, 76, 48, 52, 60, 242, 119, 22, 130, 188, 190, 120, 69, 112, 43, 4, 244, 144, 216, 185, 161, 163, 90, 44, 136, 147, 155, 227, 182, 196, 163, 209}, {4, 207, 245, 0, 18, 159, 170, 150, 224, 158, 226, 17, 171, 100, 209, 136, 145, 250, 205, 90, 145, 13, 253, 41, 133, 44, 40, 125, 8, 149, 107, 218}, {0, 16, 223, 100, 55, 233, 90, 82, 98, 57, 196, 155, 5, 231, 241, 225, 172, 20, 87, 110, 124, 26, 52, 115, 187, 124, 241, 233, 83, 60, 79, 227}, {21, 69, 112, 164, 149, 147, 73, 125, 10, 119, 93, 204, 43, 53, 5, 252, 157, 200, 183, 8, 0, 213, 205, 86, 187, 24, 143, 41, 177, 33, 6, 85}}, {{47, 185, 239, 187, 33, 129, 145, 101, 95, 191, 213, 13, 79, 67, 85, 209, 79, 24, 141, 103, 43, 66, 111, 49, 29, 121, 115, 210, 186, 44, 86, 153}, {33, 69, 249, 152, 118, 159, 223, 178, 235, 249, 147, 29, 134, 253, 33, 245, 122, 43, 11, 3, 226, 181, 82, 174, 91, 90, 2, 244, 107, 173, 217, 86}, {16, 158, 245, 14, 212, 160, 134, 241, 193, 67, 78, 34, 222, 46, 73, 110, 209, 154, 145, 60, 38, 96, 41, 94, 60, 187, 115, 97, 94, 233, 44, 154}, {26, 207, 247, 254, 158, 6, 9, 182, 78, 13, 1, 76, 8, 149, 117, 142, 89, 155, 172, 108, 117, 195, 135, 144, 60, 182, 109, 145, 140, 119, 136, 203}}, {{1, 50, 149, 220, 108, 165, 162, 167, 242, 84, 150, 162, 20, 88, 172, 253, 25, 200, 241, 120, 101, 37, 12, 72, 201, 135, 188, 25, 206, 125, 119, 201}, {38, 60, 36, 54, 231, 148, 240, 141, 160, 61, 145, 156, 134, 50, 6, 182, 62, 243, 133, 19, 78, 89, 113, 43, 110, 175, 95, 42, 5, 79, 36, 251}, {46, 166, 83, 207, 45, 102, 213, 66, 178, 8, 110, 241, 32, 188, 183, 237, 14, 27, 43, 228, 155, 241, 84, 205, 121, 204, 143, 161, 94, 22, 243, 103}, {10, 159, 177, 253, 251, 200, 170, 43, 135, 119, 121, 68, 155, 254, 100, 233, 251, 158, 29, 84, 239, 185, 111, 176, 122, 115, 129, 31, 89, 232, 29, 62}}, {{9, 174, 182, 194, 109, 115, 139, 74, 88, 211, 127, 38, 194, 158, 87, 65, 77, 183, 90, 76, 134, 209, 138, 171, 37, 237, 38, 206, 57, 255, 72, 14}, {38, 140, 224, 77, 159, 147, 106, 194, 173, 1, 65, 189, 219, 215, 160, 26, 108, 87, 209, 208, 146, 129, 53, 182, 251, 241, 225, 148, 102, 230, 83, 235}, {31, 28, 122, 248, 86, 175, 84, 114, 79, 247, 169, 247, 64, 112, 106, 140, 42, 104, 141, 216, 161, 91, 240, 142, 231, 15, 192, 60, 49, 252, 123, 195}, {24, 152, 147, 246, 2, 153, 245, 96, 249, 245, 39, 129, 87, 241, 28, 48, 223, 19, 38, 246, 247, 74, 190, 242, 91, 77, 120, 123, 98, 101, 64, 15}}, {{34, 157, 173, 109, 40, 85, 217, 68, 209, 155, 80, 24, 32, 133, 46, 56, 239, 178, 247, 128, 142, 185, 95, 21, 201, 86, 143, 137, 143, 132, 134, 67}, {35, 84, 221, 116, 243, 7, 212, 204, 188, 8, 65, 200, 79, 203, 173, 25, 248, 84, 11, 201, 226, 228, 2, 155, 145, 84, 62, 69, 182, 186, 184, 32}, {16, 236, 76, 113, 228, 88, 224, 193, 16, 40, 235, 168, 7, 116, 115, 224, 198, 143, 32, 137, 38, 29, 223, 3, 0, 171, 9, 195, 200, 30, 148, 69}, {30, 86, 98, 145, 150, 145, 189, 227, 71, 172, 97, 112, 82, 25, 235, 231, 172, 44, 228, 16, 26, 216, 113, 101, 208, 204, 142, 83, 102, 247, 59, 99}}, {{16, 20, 189, 64, 255, 137, 102, 124, 68, 216, 165, 149, 96, 91, 56, 163, 86, 223, 98, 120, 104, 5, 138, 30, 138, 245, 19, 142, 58, 114, 171, 138}, {38, 60, 60, 135, 234, 111, 214, 29, 19, 66, 174, 246, 68, 51, 198, 228, 180, 27, 189, 24, 229, 208, 128, 195, 104, 174, 74, 117, 229, 34, 148, 229}, {7, 154, 23, 53, 66, 120, 229, 29, 47, 182, 3, 177, 248, 191, 112, 190, 119, 79, 128, 35, 246, 86, 222, 4, 164, 198, 227, 239, 104, 33, 18, 174}, {36, 57, 3, 7, 3, 120, 174, 144, 171, 114, 83, 250, 135, 19, 207, 193, 121, 207, 8, 215, 106, 190, 243, 25, 218, 231, 142, 181, 63, 33, 101, 44}}, {{8, 192, 250, 167, 23, 230, 17, 35, 212, 163, 173, 13, 182, 57, 61, 30, 214, 147, 217, 207, 0, 218, 212, 171, 196, 182, 20, 44, 207, 10, 184, 193}, {0, 234, 57, 162, 235, 33, 16, 229, 211, 80, 120, 37, 78, 31, 120, 173, 2, 100, 83, 103, 36, 161, 56, 199, 61, 193, 173, 130, 186, 221, 201, 176}, {9, 202, 22, 209, 33, 178, 61, 116, 47, 242, 110, 2, 166, 249, 160, 96, 149, 228, 248, 24, 125, 171, 205, 176, 182, 8, 20, 176, 127, 35, 183, 136}, {1, 16, 14, 213, 209, 29, 164, 59, 79, 13, 3, 78, 143, 188, 186, 101, 3, 4, 103, 64, 127, 27, 232, 58, 230, 78, 109, 187, 245, 152, 119, 39}}, {{29, 227, 38, 198, 104, 185, 116, 65, 109, 249, 78, 177, 203, 213, 44, 163, 56, 45, 1, 178, 169, 159, 92, 122, 102, 240, 42, 6, 189, 145, 78, 91}, {1, 47, 119, 15, 183, 20, 238, 147, 99, 1, 250, 89, 133, 250, 69, 90, 149, 21, 180, 163, 101, 61, 71, 4, 197, 101, 192, 101, 85, 14, 186, 115}, {20, 240, 121, 73, 148, 112, 222, 188, 36, 92, 66, 45, 92, 69, 245, 48, 21, 239, 31, 198, 147, 121, 37, 21, 157, 218, 245, 239, 168, 236, 238, 34}, {9, 86, 141, 205, 160, 56, 81, 10, 34, 77, 114, 215, 231, 120, 29, 177, 194, 245, 245, 185, 74, 214, 7, 76, 104, 176, 17, 12, 68, 84, 33, 78}}, {{13, 101, 141, 28, 2, 163, 59, 175, 100, 119, 42, 235, 77, 116, 43, 234, 78, 225, 207, 72, 146, 123, 219, 171, 122, 239, 224, 48, 91, 66, 152, 130}, {9, 17, 137, 170, 27, 24, 210, 185, 99, 15, 174, 125, 120, 184, 243, 85, 33, 243, 99, 205, 242, 21, 110, 114, 5, 2, 141, 67, 130, 188, 242, 28}, {1, 45, 105, 141, 252, 250, 32, 235, 105, 101, 93, 87, 224, 83, 244, 216, 34, 190, 84, 253, 238, 125, 235, 129, 178, 107, 62, 243, 64, 75, 118, 169}, {28, 131, 63, 91, 106, 178, 43, 55, 19, 124, 221, 222, 67, 2, 73, 247, 78, 171, 23, 84, 47, 169, 116, 4, 101, 146, 9, 251, 68, 210, 246, 104}}, {{37, 130, 158, 120, 188, 166, 139, 39, 204, 189, 80, 185, 57, 102, 59, 184, 36, 221, 199, 105, 181, 173, 225, 3, 244, 121, 129, 212, 152, 230, 17, 244}, {4, 190, 78, 19, 14, 229, 197, 11, 103, 0, 142, 232, 34, 231, 73, 177, 235, 251, 210, 126, 78, 19, 10, 228, 224, 87, 181, 195, 202, 58, 241, 226}, {30, 152, 251, 109, 125, 71, 236, 163, 14, 212, 177, 41, 165, 141, 127, 198, 41, 162, 213, 130, 167, 117, 103, 81, 76, 218, 226, 169, 3, 197, 14, 70}, {29, 235, 254, 32, 218, 178, 210, 64, 137, 26, 144, 121, 83, 227, 158, 225, 72, 235, 47, 146, 247, 82, 188, 151, 249, 169, 189, 248, 148, 40, 1, 1}}, {{0, 67, 133, 20, 19, 141, 217, 68, 102, 209, 238, 175, 92, 58, 55, 221, 50, 141, 77, 108, 83, 240, 221, 132, 0, 152, 211, 137, 204, 59, 153, 53}, {15, 29, 218, 186, 187, 118, 24, 111, 115, 172, 229, 139, 186, 217, 240, 79, 3, 247, 206, 247, 154, 12, 168, 207, 195, 81, 247, 85, 56, 224, 61, 52}, {38, 208, 175, 60, 47, 37, 178, 204, 58, 75, 226, 108, 130, 189, 40, 149, 132, 195, 234, 214, 154, 125, 83, 7, 178, 107, 62, 13, 148, 214, 206, 148}, {23, 164, 237, 41, 49, 227, 190, 159, 236, 168, 249, 145, 252, 235, 12, 216, 185, 132, 185, 179, 190, 99, 89, 63, 115, 250, 177, 238, 64, 6, 145, 130}}, {{20, 178, 7, 140, 113, 231, 52, 165, 69, 61, 255, 174, 83, 78, 131, 154, 224, 147, 162, 247, 111, 215, 0, 8, 80, 2, 108, 116, 235, 136, 170, 249}, {17, 45, 142, 147, 113, 45, 245, 79, 191, 219, 50, 226, 138, 204, 248, 53, 185, 142, 28, 151, 127, 53, 106, 131, 246, 204, 141, 45, 106, 168, 179, 93}, {36, 237, 9, 116, 97, 242, 154, 239, 108, 96, 23, 119, 168, 45, 21, 0, 110, 204, 136, 204, 225, 1, 61, 137, 130, 159, 136, 75, 110, 94, 217, 185}, {18, 155, 247, 203, 207, 104, 121, 86, 6, 44, 95, 8, 178, 167, 108, 224, 253, 250, 8, 209, 129, 228, 176, 255, 229, 113, 91, 17, 119, 124, 154, 125}}, {{9, 67, 20, 240, 84, 199, 72, 4, 152, 93, 201, 171, 228, 113, 69, 60, 96, 107, 77, 97, 113, 60, 234, 177, 217, 27, 115, 63, 242, 98, 15, 115}, {4, 209, 162, 94, 166, 87, 163, 93, 62, 232, 49, 15, 158, 137, 235, 97, 103, 97, 230, 131, 150, 113, 50, 1, 108, 134, 158, 231, 201, 217, 82, 241}, {18, 212, 111, 211, 25, 222, 202, 90, 71, 153, 228, 57, 143, 216, 167, 65, 167, 76, 140, 37, 77, 30, 162, 180, 158, 126, 110, 136, 107, 209, 124, 1}, {36, 45, 25, 174, 10, 138, 252, 12, 77, 35, 42, 33, 6, 169, 21, 24, 172, 1, 190, 181, 79, 9, 146, 213, 186, 248, 38, 153, 132, 133, 183, 79}}, {{7, 213, 131, 21, 87, 42, 19, 213, 61, 222, 23, 222, 108, 3, 108, 29, 177, 253, 45, 97, 125, 102, 36, 192, 171, 140, 245, 44, 125, 134, 206, 235}, {40, 206, 107, 155, 57, 248, 248, 187, 86, 184, 61, 105, 92, 120, 28, 15, 56, 72, 97, 97, 92, 252, 252, 108, 186, 156, 220, 98, 141, 223, 67, 121}, {37, 106, 167, 45, 121, 234, 90, 26, 248, 176, 94, 167, 253, 159, 68, 85, 84, 249, 72, 151, 112, 147, 133, 214, 49, 200, 152, 92, 151, 147, 190, 151}, {40, 155, 85, 183, 140, 131, 40, 54, 129, 158, 48, 247, 14, 42, 11, 207, 37, 39, 209, 103, 129, 138, 216, 175, 130, 56, 243, 210, 62, 34, 140, 81}}, {{21, 31, 23, 87, 64, 219, 19, 221, 4, 207, 13, 197, 183, 195, 29, 122, 99, 198, 38, 88, 214, 194, 113, 179, 158, 69, 202, 66, 3, 168, 55, 23}, {23, 159, 110, 243, 16, 208, 3, 81, 103, 27, 210, 212, 86, 148, 164, 228, 236, 182, 216, 81, 1, 48, 147, 161, 215, 26, 234, 144, 43, 191, 15, 224}, {13, 195, 18, 43, 153, 166, 180, 182, 56, 145, 171, 164, 82, 95, 190, 249, 185, 123, 133, 8, 153, 237, 105, 74, 177, 26, 8, 125, 86, 165, 230, 0}, {28, 109, 235, 224, 75, 72, 254, 254, 137, 230, 194, 195, 87, 84, 183, 92, 82, 33, 174, 200, 199, 143, 147, 63, 7, 181, 41, 66, 127, 173, 13, 97}}, {{41, 249, 188, 207, 149, 162, 57, 233, 4, 217, 48, 20, 62, 48, 129, 76, 45, 166, 197, 68, 136, 224, 65, 40, 24, 120, 192, 221, 220, 77, 128, 169}, {4, 23, 229, 29, 201, 162, 237, 185, 61, 65, 120, 40, 50, 129, 187, 97, 203, 205, 29, 209, 134, 100, 72, 13, 180, 42, 167, 208, 234, 119, 94, 159}, {42, 94, 210, 59, 119, 158, 94, 69, 235, 92, 154, 136, 241, 44, 252, 93, 196, 215, 39, 187, 126, 57, 17, 122, 85, 58, 236, 152, 63, 238, 234, 155}, {7, 15, 87, 165, 5, 42, 140, 130, 192, 142, 17, 12, 205, 10, 216, 92, 219, 8, 192, 137, 80, 47, 234, 127, 74, 127, 160, 146, 119, 228, 200, 170}}, {{45, 194, 68, 143, 170, 2, 199, 44, 164, 104, 29, 110, 36, 43, 3, 228, 95, 109, 121, 208, 177, 119, 147, 192, 107, 105, 200, 80, 107, 154, 214, 100}, {2, 115, 15, 109, 254, 36, 243, 219, 243, 181, 70, 69, 57, 64, 190, 232, 30, 132, 133, 123, 107, 105, 37, 119, 159, 92, 59, 252, 5, 40, 238, 120}, {47, 131, 104, 244, 133, 34, 237, 171, 56, 20, 56, 148, 51, 40, 241, 46, 53, 243, 67, 254, 134, 137, 213, 243, 7, 155, 232, 128, 156, 87, 85, 29}, {3, 213, 146, 53, 4, 191, 139, 171, 164, 67, 170, 118, 242, 27, 149, 144, 61, 60, 133, 96, 218, 40, 21, 159, 128, 5, 30, 244, 188, 221, 50, 205}}, {{38, 194, 44, 0, 121, 212, 214, 213, 120, 39, 100, 176, 156, 73, 141, 164, 251, 203, 184, 45, 221, 126, 226, 72, 184, 125, 34, 83, 172, 99, 94, 120}, {39, 210, 75, 252, 234, 237, 228, 43, 185, 28, 239, 68, 235, 236, 162, 203, 113, 51, 22, 82, 44, 130, 13, 64, 129, 57, 204, 38, 68, 68, 148, 57}, {17, 223, 29, 123, 79, 14, 225, 15, 103, 151, 133, 218, 140, 105, 139, 36, 22, 72, 88, 171, 130, 85, 144, 35, 209, 126, 97, 185, 46, 28, 8, 119}, {41, 196, 37, 226, 151, 227, 253, 207, 146, 201, 103, 93, 96, 163, 244, 227, 19, 61, 60, 130, 77, 213, 56, 88, 29, 189, 126, 204, 214, 47, 191, 189}}, {{22, 123, 96, 133, 93, 227, 184, 154, 41, 111, 193, 184, 7, 161, 31, 160, 6, 224, 118, 149, 250, 2, 150, 32, 38, 108, 185, 225, 157, 120, 233, 213}, {46, 167, 54, 61, 172, 26, 169, 78, 138, 199, 131, 134, 110, 200, 84, 195, 70, 89, 23, 139, 156, 237, 240, 146, 97, 35, 55, 21, 53, 127, 216, 95}, {21, 36, 206, 173, 226, 19, 168, 35, 240, 234, 161, 144, 115, 173, 89, 255, 120, 110, 73, 208, 116, 181, 61, 70, 105, 220, 174, 6, 107, 11, 95, 200}, {43, 152, 249, 155, 252, 42, 211, 34, 225, 225, 97, 25, 91, 145, 137, 182, 66, 69, 163, 117, 200, 69, 90, 104, 60, 248, 124, 113, 184, 12, 98, 70}}, {{15, 226, 74, 103, 65, 15, 82, 6, 44, 83, 87, 225, 150, 33, 72, 188, 38, 90, 185, 39, 104, 5, 245, 46, 195, 174, 15, 141, 90, 236, 29, 125}, {8, 73, 159, 243, 226, 192, 100, 107, 66, 72, 42, 138, 33, 88, 72, 19, 84, 214, 25, 180, 36, 241, 229, 170, 154, 78, 85, 223, 173, 27, 252, 184}, {38, 58, 106, 82, 105, 246, 180, 222, 112, 144, 152, 173, 130, 67, 166, 15, 227, 9, 42, 134, 115, 24, 234, 155, 106, 174, 185, 191, 78, 92, 58, 139}, {21, 200, 215, 227, 228, 10, 89, 213, 3, 222, 208, 159, 44, 80, 174, 18, 15, 42, 140, 143, 57, 76, 15, 195, 50, 173, 126, 51, 108, 81, 100, 165}}}; + CardParam outputs[52]; + memset(outputs, 0, sizeof(outputs)); + int outputs_len = sizeof(output_array) / sizeof(output_array[0]); + + for (int i = 0; i < outputs_len; i++) + { + Bytes x1 = {len : sizeof(output_array[i][0]), data : output_array[i][0]}; + Bytes y1 = {len : sizeof(output_array[i][0]), data : output_array[i][1]}; + Bytes x2 = {len : sizeof(output_array[i][0]), data : output_array[i][2]}; + Bytes y2 = {len : sizeof(output_array[i][0]), data : output_array[i][3]}; + + CardParam param = {x1 : x1, y1 : y1, x2 : x2, y2 : y2}; + outputs[i] = param; + } + + char proof_array[] = {19, 137, 0, 0, 77, 120, 38, 67, 168, 119, 199, 78, 18, 129, 36, 205, 7, 125, 49, 11, 14, 164, 140, 156, 241, 138, 210, 187, 213, 220, 143, 25, 2, 246, 168, 86, 125, 97, 95, 60, 184, 238, 10, 24, 219, 212, 54, 177, 58, 232, 209, 116, 22, 103, 181, 149, 22, 130, 197, 132, 164, 149, 101, 28, 18, 50, 177, 119, 120, 5, 139, 163, 194, 128, 169, 188, 244, 69, 251, 119, 61, 35, 159, 112, 3, 29, 206, 24, 44, 169, 41, 19, 20, 109, 98, 49, 33, 255, 118, 190, 144, 100, 176, 89, 161, 13, 213, 166, 205, 197, 196, 190, 152, 0, 145, 243, 71, 51, 6, 10, 159, 97, 69, 25, 87, 21, 155, 99, 27, 118, 156, 39, 204, 245, 254, 164, 214, 41, 217, 202, 181, 157, 184, 108, 85, 95, 226, 187, 122, 187, 237, 168, 43, 122, 10, 167, 6, 108, 132, 189, 31, 148, 190, 106, 247, 180, 37, 217, 231, 152, 184, 88, 239, 151, 126, 128, 1, 249, 40, 106, 67, 77, 29, 120, 25, 113, 212, 107, 4, 204, 103, 155, 31, 216, 198, 80, 64, 93, 48, 39, 49, 223, 39, 87, 188, 166, 242, 110, 57, 98, 168, 142, 111, 172, 47, 228, 102, 135, 227, 98, 99, 252, 20, 169, 32, 162, 152, 91, 80, 39, 97, 241, 152, 102, 163, 137, 43, 39, 240, 117, 225, 50, 171, 84, 146, 60, 106, 12, 146, 220, 249, 108, 141, 45, 144, 39, 17, 36, 245, 40, 209, 202, 12, 209, 200, 209, 231, 196, 14, 62, 33, 161, 191, 65, 160, 209, 177, 253, 154, 108, 137, 158, 148, 166, 78, 7, 155, 35, 45, 120, 143, 97, 172, 137, 76, 58, 82, 116, 104, 66, 16, 11, 123, 7, 253, 99, 240, 65, 138, 197, 223, 77, 141, 42, 135, 154, 208, 237, 53, 104, 1, 134, 11, 122, 20, 212, 148, 243, 191, 138, 151, 138, 148, 231, 186, 51, 194, 40, 165, 87, 176, 216, 166, 129, 52, 16, 79, 38, 215, 213, 226, 135, 39, 222, 26, 234, 207, 210, 127, 3, 106, 85, 226, 118, 113, 223, 171, 15, 35, 233, 18, 36, 228, 158, 32, 243, 33, 249, 47, 215, 28, 29, 177, 65, 37, 162, 215, 88, 181, 144, 75, 119, 10, 4, 162, 16, 136, 130, 128, 98, 118, 235, 102, 237, 83, 253, 244, 71, 161, 77, 185, 71, 150, 47, 24, 232, 6, 49, 76, 0, 84, 203, 198, 63, 231, 240, 155, 225, 243, 187, 18, 213, 31, 136, 201, 41, 211, 66, 123, 226, 40, 180, 41, 134, 45, 5, 228, 122, 15, 138, 121, 252, 242, 244, 45, 172, 1, 214, 195, 226, 225, 30, 187, 16, 167, 185, 104, 212, 207, 67, 129, 166, 168, 68, 29, 114, 224, 108, 99, 194, 38, 9, 119, 91, 54, 50, 197, 133, 163, 200, 187, 252, 25, 107, 97, 198, 118, 71, 200, 217, 155, 248, 162, 49, 181, 166, 54, 49, 247, 214, 144, 93, 18, 41, 243, 56, 35, 215, 40, 30, 189, 210, 173, 58, 36, 146, 114, 221, 39, 184, 45, 196, 75, 201, 93, 75, 152, 213, 102, 126, 121, 59, 94, 88, 38, 22, 10, 236, 71, 91, 129, 135, 128, 37, 200, 224, 193, 202, 225, 56, 188, 4, 230, 44, 199, 76, 86, 117, 12, 115, 167, 105, 35, 205, 229, 152, 43, 129, 230, 129, 216, 100, 191, 77, 159, 92, 72, 97, 126, 171, 85, 16, 188, 222, 38, 160, 66, 121, 173, 161, 135, 203, 179, 183, 149, 233, 94, 151, 39, 153, 147, 198, 68, 131, 28, 137, 102, 49, 92, 75, 58, 57, 61, 214, 202, 46, 10, 195, 191, 53, 40, 190, 161, 73, 35, 86, 49, 160, 133, 37, 40, 155, 213, 236, 63, 208, 53, 184, 66, 88, 64, 98, 47, 31, 134, 23, 156, 12, 137, 14, 37, 169, 120, 39, 56, 210, 169, 96, 168, 183, 180, 79, 3, 166, 228, 161, 193, 97, 4, 227, 123, 231, 152, 20, 225, 119, 225, 185, 200, 8, 60, 156, 129, 13, 230, 160, 247, 218, 15, 232, 30, 38, 213, 166, 7, 116, 126, 213, 153, 24, 5, 88, 179, 183, 193, 117, 138, 195, 200, 28, 107, 156, 188, 230, 56, 252, 145, 84, 180, 197, 159, 54, 172, 111, 244, 207, 45, 190, 10, 43, 206, 115, 131, 250, 89, 72, 92, 79, 61, 111, 117, 20, 123, 90, 81, 39, 24, 210, 193, 26, 245, 184, 80, 50, 92, 164, 57, 123, 33, 220, 115, 15, 44, 63, 111, 167, 192, 6, 37, 144, 233, 8, 47, 135, 39, 149, 121, 37, 32, 243, 150, 84, 236, 7, 247, 208, 119, 76, 25, 110, 38, 211, 49, 64, 227, 151, 177, 45, 28, 74, 86, 187, 223, 126, 255, 92, 102, 215, 80, 180, 6, 33, 112, 77, 18, 39, 122, 100, 87, 98, 76, 141, 20, 228, 248, 126, 161, 122, 174, 225, 188, 222, 255, 165, 167, 43, 78, 173, 149, 83, 160, 10, 214, 193, 206, 202, 30, 47, 201, 254, 247, 129, 74, 1, 35, 218, 197, 161, 1, 138, 189, 73, 17, 149, 19, 192, 4, 113, 7, 84, 131, 215, 120, 21, 205, 59, 133, 77, 135, 87, 64, 97, 208, 114, 107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 210, 13, 180, 0, 230, 196, 255, 152, 61, 165, 189, 2, 235, 197, 95, 231, 158, 220, 71, 75, 82, 248, 33, 215, 50, 23, 65, 10, 164, 206, 131, 21, 16, 160, 127, 210, 134, 57, 19, 164, 58, 252, 107, 197, 116, 181, 233, 116, 188, 27, 200, 44, 229, 97, 107, 33, 225, 27, 77, 141, 111, 246, 192, 24, 137, 32, 61, 163, 127, 234, 90, 37, 100, 75, 214, 186, 59, 176, 192, 235, 208, 236, 18, 125, 19, 248, 185, 207, 31, 127, 170, 47, 131, 216, 183, 3, 248, 218, 34, 182, 142, 4, 98, 155, 87, 190, 124, 12, 117, 2, 128, 99, 5, 158, 236, 171, 204, 58, 207, 19, 211, 84, 214, 158, 195, 46, 231, 1, 210, 236, 179, 88, 114, 80, 60, 52, 29, 77, 229, 87, 220, 124, 55, 204, 65, 68, 55, 20, 170, 207, 17, 89, 22, 22, 119, 101, 46, 164, 22, 13, 64, 129, 136, 166, 98, 155, 185, 104, 213, 111, 223, 85, 174, 100, 175, 186, 5, 30, 197, 159, 254, 162, 235, 39, 154, 189, 212, 253, 220, 178, 201, 18, 222, 222, 83, 107, 91, 204, 226, 84, 168, 247, 158, 18, 41, 163, 170, 199, 244, 121, 207, 219, 123, 129, 122, 190, 148, 230, 62, 67, 152, 115, 146, 46, 14, 79, 154, 133, 18, 21, 136, 115, 165, 80, 116, 51, 67, 171, 126, 41, 223, 238, 109, 243, 253, 94, 84, 252, 255, 120, 252, 252, 153, 191, 4, 33, 134, 8, 79, 197, 71, 140, 15, 115, 230, 51, 45, 155, 96, 212, 8, 232, 190, 51, 202, 148, 248, 126, 89, 9, 148, 30, 149, 191, 123, 17, 36, 13, 12, 31, 220, 100, 193, 218, 156, 103, 162, 249, 112, 182, 194, 22, 102, 237, 222, 249, 24, 116, 157, 189, 25, 56, 46, 91, 138, 88, 244, 12, 170, 44, 128, 138, 208, 14, 93, 99, 3, 239, 26, 48, 215, 60, 160, 209, 131, 197, 88, 88, 77, 177, 85, 55, 139, 59, 213, 24, 98, 184, 73, 32, 111, 34, 114, 54, 2, 75, 155, 76, 57, 125, 24, 76, 148, 103, 169, 81, 201, 80, 193, 149, 207, 133, 64, 206, 57, 122, 173, 91, 98, 168, 135, 211, 210, 22, 111, 45, 185, 109, 191, 32, 92, 62, 242, 74, 145, 205, 71, 101, 207, 152, 68, 174, 169, 224, 65, 233, 144, 127, 251, 144, 253, 129, 252, 179, 5, 33, 74, 231, 251, 150, 109, 173, 57, 129, 216, 109, 70, 140, 111, 40, 221, 2, 176, 100, 177, 107, 92, 242, 78, 158, 161, 158, 127, 125, 205, 89, 130, 0, 49, 171, 141, 23, 177, 179, 66, 214, 201, 42, 45, 214, 179, 21, 32, 67, 253, 230, 96, 140, 211, 249, 176, 185, 245, 223, 193, 160, 4, 36, 84, 32, 197, 185, 145, 231, 67, 122, 201, 186, 170, 121, 52, 121, 232, 114, 40, 215, 44, 10, 127, 34, 254, 30, 141, 65, 106, 147, 79, 191, 55, 115, 248, 45, 127, 51, 169, 52, 145, 211, 62, 80, 51, 208, 64, 222, 252, 51, 5, 4, 109, 155, 151, 121, 69, 169, 121, 64, 49, 67, 26, 174, 193, 143, 204, 20, 63, 91, 232, 229, 20, 192, 16, 21, 5, 186, 217, 44, 127, 12, 37, 237, 155, 151, 92, 59, 19, 1, 2, 248, 19, 184, 17, 176, 113, 254, 128, 45, 4, 185, 202, 198, 47, 225, 130, 14, 5, 74, 143, 178, 222, 27, 243, 171, 233, 58, 191, 85, 25, 251, 249, 105, 154, 247, 196, 87, 38, 81, 245, 44, 87, 127, 213, 209, 162, 253, 225, 100, 181, 176, 210, 151, 176, 28, 11, 218, 76, 63, 116, 187, 154, 188, 166, 48, 121, 104, 41, 38, 123, 205, 129, 30, 137, 144, 245, 100, 84, 162, 41, 253, 128, 111, 95, 104, 159, 36, 2, 240, 222, 51, 252, 127, 151, 87, 160, 116, 31, 184, 8, 135, 14, 85, 123}; + + struct Bytes proof; + proof.len = sizeof(proof_array); + proof.data = proof_array; + + return __verify_shuffle(verifier_params, + inputs, + inputs_len, + outputs, + outputs_len, + proof); +} +``` \ No newline at end of file From f20a645e426ecb36adbedcc7dfec62a81fe7d3d9 Mon Sep 17 00:00:00 2001 From: allen-cmyk Date: Fri, 31 May 2024 17:07:45 +0800 Subject: [PATCH 2/2] add wasm sdk docs --- content/zytron/precompiles/anemoi.md | 9 +++++++++ content/zytron/precompiles/ed-on-bn254.md | 17 ++++++++++++++++- content/zytron/precompiles/matchmaking.md | 15 +++++++++++++-- content/zytron/precompiles/shuffle.md | 11 ++++++++++- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/content/zytron/precompiles/anemoi.md b/content/zytron/precompiles/anemoi.md index 739d3c7..ec41e2b 100644 --- a/content/zytron/precompiles/anemoi.md +++ b/content/zytron/precompiles/anemoi.md @@ -59,6 +59,15 @@ let data = ethabi::encode(&[ ## Javascript SDK ```javascript +const wasm = require('./pkg/wasm.js'); + +let f1 = "0x2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a"; +let f2 = "0x1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025"; +let f3 = "0x2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a"; + +ret = wasm.anemoi_hash([f1, f2, f3]); +console.log(ret) + ``` diff --git a/content/zytron/precompiles/ed-on-bn254.md b/content/zytron/precompiles/ed-on-bn254.md index ef39000..c773afc 100644 --- a/content/zytron/precompiles/ed-on-bn254.md +++ b/content/zytron/precompiles/ed-on-bn254.md @@ -69,9 +69,24 @@ let data = ethabi::encode(&[Token::Uint(scalar), Token::Uint(p1_x), Token::Uint( ``` ## Javascript SDK +```javascript +const wasm = require('./pkg/wasm.js'); -> TODO +let x1 = "0x0d52c3aa573af39845660735de0d3d9efb481a112cf00623ab22546122d4e16a"; +let y1 = "0x0e7e20b3cb30785b64cd6972e2ddf919db64d03d6cf01456243c5ef2fb766a65"; +let x2 = "0x242cbada3ae8d6e90056e73e4941eeccee72cb99945a194f754205b3678bd769"; +let y2 = "0x2d7690deeaa77c9d89b0ceb3c25f7bb09c44f40b4b8cf5d6fcb512c7be8fcba9"; +ret = wasm.point_add(x1, y1, x2, y2); +console.log(ret) + +let s = "0x008d7a42a4dde1d8f8bcacddcae9bc78b1480eb547d4a490d9cfa5c268a076c7"; +let x = "0x1738fd301654d891e32235d03a64b7ebe0c3f37df67db0b798f2664783b1bac9"; +let y = "0x22a689a1c0aebf70ceee76fe7891729002e072ceb7ba94a32b1fce79f8c009d9"; + +ret = wasm.scalar_mul(s, x, y); +console.log(ret) +``` ## C SDK ```c #include "c-uzkge.h" diff --git a/content/zytron/precompiles/matchmaking.md b/content/zytron/precompiles/matchmaking.md index a2d88b4..c9be504 100644 --- a/content/zytron/precompiles/matchmaking.md +++ b/content/zytron/precompiles/matchmaking.md @@ -85,8 +85,19 @@ let data = ethabi::encode(&[ ``` ## Javascript SDK - -> TODO +```javascript +const wasm = require('./pkg/wasm.js'); + +let verifier_params = "0x28000000000000000100000000000000010000000000000000000000000000000000000000000000000000000000000088000000000000000200000000000000edf692d95cbdde46ddda5ef7d422436779445c5e66006a42761e1f12efde0018c212f3aeb785e49712e7a9353349aaf1255dfb31b7bf60723a480d9293938e19b0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c41801c18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e2608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000800000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000800000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008b170000000000000020000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000108000000000000000000000000000000080000000000000020000000000000000260ee740b651909f3cb74b09f59504451ce08cd35949536dd54821719818f0720000000000000001d28434ab9c603dded2ce30fdb4928eff827bdcd25d2241244b0c77d2b038911200000000000000008b3ce07c205066e5343e88519d15ba413daad11ee4bac047ced5a5e1d1b84092000000000000000410e3151d6f536710cb198f2a66e54e1a8036d4f5469a2041b7044a54d2bcc2d2000000000000000b64ffe48a346f28353c47cffd273d3cf4152715fbbf476cb57ef25bb01d3089c20000000000000009d34cc541129c06a4b5aa47d72e3faab4bdd3a2896c787ab629367d6721c392720000000000000005cf8bb81f5d71685a47765692ba8c9fad33b6159799449beb81c11ceda85d3ad2000000000000000f36f4559f19be743feb6275d5a449e54d8503b646f89881d22f0b55e1c3c280105000000000000002000000000000000e7b108b86cbd1443e553e9f0557254627995fcfb8e37c6ea9683f427150369a62000000000000000a5541363d37a591a1f0d833acfd62b1fd397864a1e91a385178c925b44bc8b272000000000000000d88d2b725e6ba107efcebc80de5836dd3538da2a09f863edaf2d2fc79e1340ac2000000000000000715b5fc7975b98218df2aa8fdfedd9a4332461bdf1d8a890c5e144a5351c751c20000000000000007a4a4d157a71da65c485331b4987fcfe564660e26ab562dd0e8b9e855bbc49a32000000000000000da71775af617443dabe80db760ac8d3ab55a96ce04cf6f7a321f32138b04169204000000000000002000000000000000418499fc987e0a0c408e681cdd2d071161b51b850a29c1a180e78375959bd8a42000000000000000e347edc7dfc6df186b064c2268574e6ef155612387f9f40dec4832feb9b383972000000000000000c8e2224c62d0e2c52d24cd3bcdfb6f924d04cbeabcdc9820fd328a03484147992000000000000000898fe63f147802ee6bd953d58f8b01b03b926af95647ba790c37b6c7aa864090200000000000000000000000000000000000000000000000000000000000000000000000000000400c000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000400c00000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000005000000000000000000000000000000000000000000000000000000000000002000000000000000676666c6d4fbf3e7062d4acae95caea98b56cd337cb5b949aad9135a94525b13a800000000000000050000000000000001000000000000000000000000000000000000000000000000000000000000004a1d30b17bfba45d83853f81946cca734c4010e1442ae1c4423c58a7f1d18d2f0a0c7995685a9066d6825c6db21d0b958b969ce2037c080a7b180ca987a5422060498e759b9e52bf33a7dc60a15f3bd732f36f793407eff03ce3e6134e94b42d462fd253005d048b4542010411e314a65ad0d7c68d1325992d0501af4a3a9e1d2000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000006600000000000000f213000000000000f313000000000000f413000000000000f513000000000000f613000000000000f713000000000000f813000000000000f913000000000000fa13000000000000fb13000000000000fc13000000000000fd13000000000000fe13000000000000ff1300000000000000140000000000000114000000000000021400000000000003140000000000000414000000000000051400000000000006140000000000000714000000000000081400000000000009140000000000000a140000000000000b140000000000000c140000000000000d140000000000000e140000000000000f1400000000000010140000000000001114000000000000121400000000000013140000000000001414000000000000151400000000000016140000000000001714000000000000181400000000000019140000000000001a140000000000001b140000000000001c140000000000001d140000000000001e140000000000001f1400000000000020140000000000002114000000000000221400000000000023140000000000002414000000000000251400000000000026140000000000002714000000000000281400000000000029140000000000002a140000000000002b140000000000002c140000000000002d140000000000002e140000000000002f1400000000000030140000000000003114000000000000321400000000000033140000000000003414000000000000351400000000000036140000000000003714000000000000381400000000000039140000000000003a140000000000003b140000000000003c140000000000003d140000000000003e140000000000003f1400000000000040140000000000004114000000000000421400000000000043140000000000004414000000000000451400000000000046140000000000004714000000000000481400000000000049140000000000004a140000000000004b140000000000004c140000000000004d140000000000004e140000000000004f1400000000000050140000000000005114000000000000521400000000000053140000000000005414000000000000551400000000000056140000000000005714000000000000c80c000000000000660000000000000059f5d5d00810ace0f7e6671b68d785cd004a6fee99ea60edff5060a51b43ec02ba8bed21ab60c4fbd34ca72a11c26844f7cb427d461a8565ba2d09011136692d06c7fe7e8f5db4d70b219b208a450e920fed5953a6e87e91fa4306efeea2921c7fdbc665c2e9be3568d46c387d6205afde6d01978c08571c486d902e4bdf75264d0b18e78744faf861a6d67dab795e01943b9b086d65daf09ad9ed765c3461009bff9aa41584f9a5f57ff18bdca2c7d6d052029a73bd3a2e479eee0acc1d622a6a6abadde7637ab325757f37deca3607f293d23bab1e41f0ca0f5024a9f7a8050c3b3375a4aa5e5ec61d7f53f5e2cb6cda916487e0cae9bf0c8289ef12dcdb010953486fa0cbb157840132474ab171a2e052b8d8303859f05a0e5a574447de2bd40816db62f4bd337a37ee50e5dea6fee6dfec71dd5d64e586fca66a0cab2422ce294c91a8271ea35153e24eb67e91aae9986825dc4101439ed127b9d8eb590e40e6d2bd39e15bbe85237dc3b8f3d9a7f62f48cb1f00b67d747ba881f48b00239feb06e6aed83f52ec3e26b6e5287625f360ce26062b4a0b2d3228940166c01262b6ee321a9f5342f7504139607f090036383824a7e267b5f78cb0376034f20916f26996a3b95e2492fecc7851e69e50b992f201951d954a9d06958f29411e2e7061446d0425bcff7438f58c0415ba41114189fbf2caf68436a066c5f16d66206ef08da16fe41d7fb3ba53f455aa181d60ed0d72936378c863694944e9fa6c03078a6266fd3ed766366bdf8c83d8bbc5bbdd98e68ec87e55552bf7426d326c19e8f9166b9e227aedf7c5ca31766bbb2581f30f8c0ba789362c6ccdf6150be81887e06a4480bcd50581e5b25f9c757a0abbbcd6eda87c2b9e1e894b0c0b9b6b11f0d2cb4bb21bcfe4dbcc92a451d59678eb78832f4059ecbbd227ecc08fa61a2c937a18de3822b020b30bda83094c8496a435f24191e659ca54bedd56cfa9932985c39a3b5cafcb0f8d3ebacf64ca9252d8eacf08bfa39216cba10ed9c923402978d9782bd0240be6dccc132eea8e557586d371d4265ee9380d45cf2afea38d1ef9c5c77d9e9ea8562ee0a5df1b274ea90429a1be5f23054044d05c5fa895ab12d33b6740b3bf02c46ef72e597ce0f9525172ac6a652145598116195f6f31c32a863fb7b67714d4d961017a45fb88398959a8adc13204e7f263da963073bb02080f4f84f6dc199903b8280ba215186d355956dafcc1932190c20966f4bc266030136053e45901f995378ba0694a842eae13b8ca671200d860fb4e3a1827fc071e093c0e6587f9d605c45e985b786e1a3a35d285660075bd245d5e6fb4dee5b80efaef1515c18e27f9223716e0446bf463a22a6e2ebc08afc582820e051a0a0326f2f9255a84e030e461f6288049ed5cd2de1347ec66649b02b7be86e26dc4fd06c7854872329b9fb6868055a2d86d663b3c65d6483304742e2d3879a32543001107d0d31f634128e8f217bb9eed11646ec293dc03e5e6a2e49a360bca40e05d20ba81aa9a57f7d0ab5b6218b28ccc55a9986206cddd23391278edc221bd4d9f088fed90bb3947edee49e8bfae62fdd1853ed54ae717a8abe990496fb574aa1c12bf5619c310a9db060ddbf8de2d52de934aefc25468ef8bf28cd69959fb526a1d9485be22fc5c1e25e20498be8ee2515ff04894000ea2be9e9c14edabd06d532717c0b630d9148306ec86e797b9c465280cc0532986b7f86e1467b5220772920cd2255bb059154072b375089467be0fd1c045b27e8277f5f7f18841366b24de2d27d109dcea448269648bb94ab32bdfe1e5b46708f27e75b98cb98cd6f3903107afaca82735af404fa981cbd84248258d08fc00f11585b728f14b6655d623032ce15cdb7464b611ee7fca38a256dd10929b661628a960f41557c8d42610219d1afab6b041b3cc393b29e7e9f36c104af54f9cbfa233fbf4c61342d71120de06193c8005069eda9fbea9aeebc73f3996568a5ecd0654eb965638b4e0c6cea515020553f9178983eef840d1a7edd0984057781d753c814dffa874ef222955475b10a44c083f823cb4e3c7caa713745e9429c134485e622d1ae65d9588ed4770ef0b98d123571a233f586c89490d513ceeae7229975298092dab7848164dcf60be21f93ee2c36fd65498889fc3f2fc454cf6ea24dba7ab00627c53ee7036d88dbe07de82adaa8b8f26cb2d7b4b2b1bb1769c0e9c6b9096ec2d3ff9eed5946081db02f24fcb23381b67a8b199a093d1e9ae60f429affab22c0f63cd6d47b0def6130bcca9a76a2ef4f1b713ea960244fb296f5c63a4d9f7c4ce032d6b3e49fcbe1c26f2d36e880df6853d8260a27f68fe4c0caf0b1038731446d29f190432f8213421fc7d94ee4c227214522c57f9a3c4c0be5f974dde11b23fb4aa85bb67a260df1d36f3fb6abea33ec19b9e72be917f6c2b393b009f8b2bae1608223c286340761ed97fe68a5e4dfa15872c2e80772a2b3d26f34d7607ce7869b254aa527285651323d03673fee57c1bf4bea8451fedd0d48310066661885c6b342776f227d93521c3775505fc1f68a181cb5676ede58ad73f4264982cd75c899802ff76fe3b2019f5971c084845a3bfc1d8c31a4ab7847db95d887e2d6269461544929834f23c2ebf925b25dfe15946d3f04befcc32eee1cd54528c5202a9c57b2255a9fb35ea2bea36c662483d49dde5e9bea9d48245c60256fb2d3c5c0e64b31ad65321d6591485fe9c7ade1282c5ff60c0ff180c205a12c9f894f849063002fd1023ade6a825983e24dad0e18f8a960141c260d63f0a7e47f64f60c7306f28883cd9c40d801fe4a80666a2e7654f8fe292c5dd626b8d258957ab755e33d92031335324c9c213fe33d0875095a54b17b954c45408139ccec23f6daf9762273d31ba1935d2952ef5f2367e1abbec442dfd736e4a27b5c7686242d49ff4d1dea43a50c0293b8f191e92cf71419afe72179376c78fd17e6c4034043f726de6c696563200dd06840fc5edca24dc19ba68fefcf19ccd586300923b94c7d5afb0148431738cc8b4060e5f2248532919cdf853fbff90d4d9ed4652d1f98bf2aa61cfc7afae05c2bb601a909352b0db6aac147272ecbf43df88545925bbe624479fff4ebc2022595bc70be8322e0f3a7002b06496778a02d01af7e64870e58fcc69c969e2af6d7d170d2748dea0bb9c16aecc5dfb79d6f09e94891de809ad824ee58c550341b7563a9408e69b3b9056cb4c77ca21714cc611e68c8726b161d0380477d754b774acdbc523e1594c5f1255b4e2bfef000ea27368e689f7cd8c72d579dda295761983455804716e3d0936663bd26cd373f62741d7afe4adbbeba987aee874d38ebc4c4d961e5674adaf95da50a96b6e8e7bb36487db377259df2114278b5166e746761c9e2594d11639ed6378dd10b8b7927fe1f6b5047996cf144b6b66d5d5b10d4b2818083a3fac7081714b4f4179f310defe2ceb7d156872a6dc801586200d4a9e28ab18d7f93a4c35e5c552812548d06106ad5eea75d883a97b994569a23aeff931e3255438dc412de63c750e79dcecaa06d209f2051d63564b74151c85ab58c2c5a2262f80f30f94fbe24cac408bf74d6147d5abfb5d085429c797f90e9b4968d1211b50bd5d4b9af17e0bcfeacd4e5df139a2a08b85d3c233479028e86258bda82724719bb5bac556155a6cb9ac2535d571ebd9374bbece61d3c41363401a481317041db6fcfb63972a6e154e73cb528cf0d25414c5561961d17de0d6f745e92f592cddbb3e6d680bea1220d105e17145d8425e44803e5b839c3dedeb2542c6fd240aa6dbe2486b398ed59b381747d3c92b1a6cddf38200c697fc18265453ab75b908d5a80f8ee92fc1772463378f2399b7ac2c7dc996c599aa874d09eff5e8703003578e568b09af47d9354e21fd3339ac4279a62651891e8ee766708d150d08c0146edf4d2c54eb361a6f0832911f1e6d07084d2e6e8d2b0e71856f8896f507cb0a18564a2335ad0fe5515d0b9024384658114adefbd5c49622b6735ca8a2d915275da783bd36dcd91ce88b03aadccd717975023282553f83817885025023e0301cb64fecc1bb79426f79f5fd0a72289ad0efa01b7d7e03ec8daf3d1178b1731103cf6f5863b85b27cdb0c935bd797b6eb1a5849cc8100bdd5a5f7dea23c7428011708f8dff53e463e588b692344aef565fd412e60b51c8d74511e06aac4dc3b3267fa0f85043308c8a30b93ed52e689f5762d6a603d4aaf63662107ee3e20bd306193e8e13a24270caf97bbca85d311a6eee38aad372e7af1ea99438322bde342f6cf7048ad2f755e298bbec9d6a240800fd60dfc9a1a89ce699dcaac1d71d9b2c4c49cca5c532b9968ae3e269b47d213863a0f8b4a8075ec14180f87d6c144113c533256ad9cf4f1a55ba9de4111bde5d5cd88dc4422ad6f520fe70dd5c7ab61b6ea00a3a3293366fd14c3cfc6e818ef9de3bac985f6b7825ce398eefd201cb2bc13e4751e886d0c2d5c7b5341d273c773579afb6a2d2a70bff8c00abb2729f2816118e9342863289c1c96e7be556e5583efa79e6fd6b6d3db19e2dffeeb36315"; +let inputs = ["0000000000000000000000000000000000000000000000000000000000000001", "0000000000000000000000000000000000000000000000000000000000000002", "0000000000000000000000000000000000000000000000000000000000000003", "0000000000000000000000000000000000000000000000000000000000000004", "0000000000000000000000000000000000000000000000000000000000000005", "0000000000000000000000000000000000000000000000000000000000000006", "0000000000000000000000000000000000000000000000000000000000000007", "0000000000000000000000000000000000000000000000000000000000000008", "0000000000000000000000000000000000000000000000000000000000000009", "000000000000000000000000000000000000000000000000000000000000000a", "000000000000000000000000000000000000000000000000000000000000000b", "000000000000000000000000000000000000000000000000000000000000000c", "000000000000000000000000000000000000000000000000000000000000000d", "000000000000000000000000000000000000000000000000000000000000000e", "000000000000000000000000000000000000000000000000000000000000000f", "0000000000000000000000000000000000000000000000000000000000000010", "0000000000000000000000000000000000000000000000000000000000000011", "0000000000000000000000000000000000000000000000000000000000000012", "0000000000000000000000000000000000000000000000000000000000000013", "0000000000000000000000000000000000000000000000000000000000000014", "0000000000000000000000000000000000000000000000000000000000000015", "0000000000000000000000000000000000000000000000000000000000000016", "0000000000000000000000000000000000000000000000000000000000000017", "0000000000000000000000000000000000000000000000000000000000000018", "0000000000000000000000000000000000000000000000000000000000000019", "000000000000000000000000000000000000000000000000000000000000001a", "000000000000000000000000000000000000000000000000000000000000001b", "000000000000000000000000000000000000000000000000000000000000001c", "000000000000000000000000000000000000000000000000000000000000001d", "000000000000000000000000000000000000000000000000000000000000001e", "000000000000000000000000000000000000000000000000000000000000001f", "0000000000000000000000000000000000000000000000000000000000000020", "0000000000000000000000000000000000000000000000000000000000000021", "0000000000000000000000000000000000000000000000000000000000000022", "0000000000000000000000000000000000000000000000000000000000000023", "0000000000000000000000000000000000000000000000000000000000000024", "0000000000000000000000000000000000000000000000000000000000000025", "0000000000000000000000000000000000000000000000000000000000000026", "0000000000000000000000000000000000000000000000000000000000000027", "0000000000000000000000000000000000000000000000000000000000000028", "0000000000000000000000000000000000000000000000000000000000000029", "000000000000000000000000000000000000000000000000000000000000002a", "000000000000000000000000000000000000000000000000000000000000002b", "000000000000000000000000000000000000000000000000000000000000002c", "000000000000000000000000000000000000000000000000000000000000002d", "000000000000000000000000000000000000000000000000000000000000002e", "000000000000000000000000000000000000000000000000000000000000002f", "0000000000000000000000000000000000000000000000000000000000000030", "0000000000000000000000000000000000000000000000000000000000000031", "0000000000000000000000000000000000000000000000000000000000000032"]; +let outputs = ["0000000000000000000000000000000000000000000000000000000000000011", "000000000000000000000000000000000000000000000000000000000000000f", "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000002", "0000000000000000000000000000000000000000000000000000000000000022", "000000000000000000000000000000000000000000000000000000000000001d", "0000000000000000000000000000000000000000000000000000000000000030", "000000000000000000000000000000000000000000000000000000000000002f", "0000000000000000000000000000000000000000000000000000000000000001", "000000000000000000000000000000000000000000000000000000000000001a", "0000000000000000000000000000000000000000000000000000000000000024", "0000000000000000000000000000000000000000000000000000000000000014", "0000000000000000000000000000000000000000000000000000000000000013", "0000000000000000000000000000000000000000000000000000000000000005", "0000000000000000000000000000000000000000000000000000000000000003", "0000000000000000000000000000000000000000000000000000000000000028", "0000000000000000000000000000000000000000000000000000000000000015", "0000000000000000000000000000000000000000000000000000000000000004", "0000000000000000000000000000000000000000000000000000000000000026", "000000000000000000000000000000000000000000000000000000000000001b", "0000000000000000000000000000000000000000000000000000000000000027", "000000000000000000000000000000000000000000000000000000000000000b", "0000000000000000000000000000000000000000000000000000000000000017", "0000000000000000000000000000000000000000000000000000000000000010", "0000000000000000000000000000000000000000000000000000000000000031", "0000000000000000000000000000000000000000000000000000000000000006", "0000000000000000000000000000000000000000000000000000000000000023", "000000000000000000000000000000000000000000000000000000000000002a", "0000000000000000000000000000000000000000000000000000000000000021", "0000000000000000000000000000000000000000000000000000000000000018", "0000000000000000000000000000000000000000000000000000000000000007", "0000000000000000000000000000000000000000000000000000000000000012", "000000000000000000000000000000000000000000000000000000000000002d", "000000000000000000000000000000000000000000000000000000000000002b", "000000000000000000000000000000000000000000000000000000000000000d", "0000000000000000000000000000000000000000000000000000000000000025", "000000000000000000000000000000000000000000000000000000000000001f", "0000000000000000000000000000000000000000000000000000000000000029", "0000000000000000000000000000000000000000000000000000000000000008", "000000000000000000000000000000000000000000000000000000000000002c", "0000000000000000000000000000000000000000000000000000000000000016", "000000000000000000000000000000000000000000000000000000000000000a", "0000000000000000000000000000000000000000000000000000000000000020", "000000000000000000000000000000000000000000000000000000000000000e", "000000000000000000000000000000000000000000000000000000000000001c", "0000000000000000000000000000000000000000000000000000000000000009", "000000000000000000000000000000000000000000000000000000000000002e", "000000000000000000000000000000000000000000000000000000000000001e", "000000000000000000000000000000000000000000000000000000000000000c", "0000000000000000000000000000000000000000000000000000000000000032"]; +let commitment = "0x0b41654c6dcf28870852e8bf532bb7ec52f868cc106694cc4043802b429af9e4"; +let random_number = "0x1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025"; +let proof = "0x050000000000000020000000000000008ce6907688f4ef9607e90ef4b25a3107bf525a65f235498fe4a05768c7a48d982000000000000000127a248e987755fee6cd2c97c3af1d88c48179d9f0fbf619515375731dd74a292000000000000000f6a1a9865a1692db8c1f0a302f4b7058e82f6e7f2315f9f777df3cb2ddf2102820000000000000004516004a0474aa63341735d8e8abd841d717588c15d40b72142ac3e93486ea2e2000000000000000ae3310be43dce0c9154c188ba8f19835db402554e142431e244e3ba5ea2fe89c030000000000000020000000000000004e03867209865883e6f11a6669600a15d5c04ed137e41e36a22801340372151920000000000000004b71f6b9a082267e35892886fb159c4e48b88e5d3366f00042fa0c1942f9d12c2000000000000000c1fdbe434c9b49647bd4eeb6beacb6b3e3fec638994b482f8a9f87158fc46aa105000000000000002000000000000000e3db6c667fc3c5acfcdbf57583a8ea8fa37e4d9c1a33acb7577454407dfb4297200000000000000019fbc2d5f5f5d7e0876db499b7bbcfc4163a8c04c9b6908a1ddb5bb14eb99ca22000000000000000267ec7270dfc71fc6c78eba6f5ec72fe57be7e42ceac1fa60e3dbea334263d90200000000000000067e5db00ed06d30e58ac8b1b9c10eec7dd3650f7c143b5abfadd868c0a78e02b2000000000000000a7c5a60e87cc4987ef3b7dbf00b73ea44340afd78c802f596ac9e5d9055e0d2a20000000000000004ba588f2e6345d5e1377281c6bc694490a7e83eae305766808a09adc30eb81a5200000000000000092e70ad0cdb8ed344fd89918ed40648e0e254fa7073991911cc63fe199382d0f2000000000000000ce2bb32bb1b06961b37e98c029b452bf57a1ddd595b0de691f63b4dd2c1d8a0ba8000000000000000500000000000000048cf6bfe97ae077709b8b87b179d5c7dd636a4b0475d2b49d0b5bb2e01e7616f33aafe122703efa8243a68206a4d3084bdce32ee78a78f0c4fe906194a9d229207f1d68245aca2bce9aa66f98c6b5822a43a73c39743cffdb82433a04e7b3252ca65b8f4d40d19b1a18da5dddb0e1b518e577ad2173c9b70f6cab0794348c120a0977bf11058be0cd019608645069c495a14f1919f90f34f19db6edf2870404680000000000000003000000000000002822b3766521a48a4ff8f02c1b2367a4984f7e3f11aa47b4f84e2fc01ea41f09da1566f52352f53c96f8efd49544f92d392793bf388524ee3bcbbf720ffe1d154d5d3f7ff4cf494ac69fe66bf3af20f9982aaa73c7b5c2c0bdaeefbd9d8a6e0d2000000000000000bfc7e5ca4a840836d7e55abba5496e272935f05993b33542a3963305aa6a450c880000000000000004000000000000006c64628c2d7a25d1f45af9f3b8a64272a8b504bce4bc70354e4f7df74b739322e0c962af5fc276cd83d58f9ce7603e55462e5d77f2cc0ca26c764940cf018e1e822787a5307936aff20a37e87230f12835bb277f35e2abbc0762b57eeb66cd2bde24ac270f12128b2d2fa7bfcd82f005ca0c0660e984d9a6099f70a27630c41f20000000000000000000000000000000000000000000000000000000000000000000000000000000680000000000000003000000000000001de988bc4f4f9e609077f01084bfa40a8ca3c94dc6b7c0984da631e892a975237b07134e1144d99a7ed8e1fa8802d8b42fcf05e41b6525c39050125a6bc92e0f1a03b554ac0bb7f6bda9d1092e6219db014ec0ba392b3fedb9af590a400f1c23200000000000000053905d0b3ac0e049273be80125c743f5f068337ecdb1bfb9cba0ebfaff6cf29a2000000000000000c39895e1f83e77bec684c5455ff480199e3f93695415c6a2e73104f6e339442d"; + +ret = wasm.plonk_verify_matchmaking(verifier_params, inputs, outputs, commitment, random_number, proof); +console.log(ret) +``` ## C SDK ```c diff --git a/content/zytron/precompiles/shuffle.md b/content/zytron/precompiles/shuffle.md index cd1451c..ea0401a 100644 --- a/content/zytron/precompiles/shuffle.md +++ b/content/zytron/precompiles/shuffle.md @@ -112,8 +112,17 @@ Use the following code: ``` ## Javascript SDK +```javascript +const wasm = require('./pkg/wasm.js'); -> TODO +let verifier_params = "0x28000000000000000100000000000000010000000000000000000000000000000000000000000000000000000000000088000000000000000200000000000000edf692d95cbdde46ddda5ef7d422436779445c5e66006a42761e1f12efde0018c212f3aeb785e49712e7a9353349aaf1255dfb31b7bf60723a480d9293938e19b0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c41801c18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e260800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000800000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000008003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005400000000000000627300000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000001080000000000000000000000000000000800000000000000200000000000000098e9b385d5601361777c067b33a182a6ca29f1799a62de539d54fd4859a0c5282000000000000000f495a2bdc33ed33b52d3b9c4afa01ab994b6a3116c3c48f506eff370ce82741e20000000000000006a74f3f17a0c4cd5d4fb262122ba132a9107839f510c8a74a8ff992c546006902000000000000000f211d022dbea4456dd2dadb29fbd98a199617123ca67de8074900ba2b725d2ac20000000000000000d59d6edc24935b760e914158b073e45e2f57d968967ce9caff5e63a21e6e68320000000000000000d59d6edc24935b760e914158b073e45e2f57d968967ce9caff5e63a21e6e68320000000000000005bb1e0ecada184c908a069c4b42f42204a4ca8664dd8c58470ef38d17e08928d200000000000000087cfea507eceedca8740d940794baac730ac2d31198087e4f0cb37074585e3ac05000000000000002000000000000000c791bc9b9c619aa0404dd746401860078666123da8e4f9dc70c73ea0204ec2a620000000000000008c7fa0e166825df4da3ea6845ab25267b6eac040131971c692cd928c03f565a120000000000000000632523393c799f52ffaf5a155fc359d41af878ae964034395146d0d383ba1052000000000000000bb88cc59afc5714e58596f8562de31221501c92a9ddb9574cae8dde45854f327200000000000000018b3cdc3b43508e0ab7126ecad0c3b682130c2fafc89c0313da195094716039920000000000000004594f1837bef039042b351311738e8d2add21dc8b5aca2fcf523777555e806220400000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000402000000000000000201a6bf0b0548b6cd794365260ef6131dc03cd1141f98774bf9b4e48da75bb0e0c00000000000000200000000000000066077d81d0de480b5af7b7fa2955b68dce1395e6281a75a990f81af355e691a82000000000000000dc54efee8a19392900dc2d3faa2ef18b06d990474d4626f5913ecd2a071f7dae2000000000000000ff58d290e4622c38bf5554ce8f7d9574ae8a981a5035c31f788a9da08b4161002000000000000000cc23a7456de785cc94bb9e876aa0aa1d322880aa57b9a366bfb32609414d55132000000000000000c322e3c8d32c6084b3b8993f529b53b3cf6d7b706f49ef1dbe1f6c30c16fb7a52000000000000000ed3d03778c4d50782d514793f1fbcb01eb2ddba0acc54e8eeaacfa652715159e20000000000000009cd59b9d652b623712c8ab58a827368a03a02a35cc660b557016170ef5100e14200000000000000084b3e786cbc536344090fba5ab5c062015fb2bd0578002670d28247cb9fd22a62000000000000000df22e27e5523738dc1dea49d5f1afdaca7c3877ad759350e6c9d2f02a97c4e2520000000000000004e208f93342beed75abd9afd0836e9b270ff07f1eaeba121db30a1a19bd1522620000000000000003b9c1d83066200ec3d6779e7715c524290dd2abaf07fe5df2542d8421657b62e2000000000000000387ba12529900bed2d3f49e568ce2e7780e5ee62f0453f0b83566d2b6aac97070c0000000000000020000000000000002d7f64592af8f40ed47bbf2fd30ed0db6056275f679575aa517c4ded152af6942000000000000000491c8be8a5d0eec53d53e4ec719eab1aa34eed94c08a1dc26006308cfbc02d022000000000000000826ea70dda32a9b72087d8638660d27869e6cc1541ad123df231a32704152a112000000000000000a3122f2d3f16a83cd6fbc239171509615171f56e26376ea45118939d4939cb2b20000000000000005b9c7d395508329a215ced026825bfcb7f734b97730b412bc81eb6b64394112b2000000000000000ead28ae0ce2e06f8b12887ae34ebfcf791e42088698a8061459575f2a0cb4e1b20000000000000008d94b273f19c2521bf3cdfacb832f7f52d0fe81b2cf06067ae5a44b266258e012000000000000000ddb031b8d98c6e3c7a6b17be2aec8620ed0f3aafcdf14e7f04b52f51f879dc1c20000000000000009561435e7f538460ee1851e4f530dd4d8b25e419212710fe7e8780977b8a08142000000000000000482882b55cfbe5af2805ff4413868af854c3be95357208605dbdea3402069f12200000000000000017dd4f32588f6fbf999c7107e411bc3bec82efcde108aac9d0ad51b4c833da8020000000000000001a25941d776141817d3620cd1cd1a2e87b2f05d65391dfeaed7d275a189c6d2a2000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000a800000000000000050000000000000001000000000000000000000000000000000000000000000000000000000000004a1d30b17bfba45d83853f81946cca734c4010e1442ae1c4423c58a7f1d18d2f0a0c7995685a9066d6825c6db21d0b958b969ce2037c080a7b180ca987a5422060498e759b9e52bf33a7dc60a15f3bd732f36f793407eff03ce3e6134e94b42d462fd253005d048b4542010411e314a65ad0d7c68d1325992d0501af4a3a9e1d200000000000000001000000000000000000000000000000000000000000000000000000000000000040000000000000a00100000000000002000000000000000300000000000000040000000000000005000000000000005b000000000000005c000000000000005d000000000000005e00000000000000b400000000000000b500000000000000b600000000000000b7000000000000000d010000000000000e010000000000000f0100000000000010010000000000006601000000000000670100000000000068010000000000006901000000000000bf01000000000000c001000000000000c101000000000000c201000000000000180200000000000019020000000000001a020000000000001b020000000000007102000000000000720200000000000073020000000000007402000000000000ca02000000000000cb02000000000000cc02000000000000cd0200000000000023030000000000002403000000000000250300000000000026030000000000007c030000000000007d030000000000007e030000000000007f03000000000000d503000000000000d603000000000000d703000000000000d8030000000000002e040000000000002f04000000000000300400000000000031040000000000008704000000000000880400000000000089040000000000008a04000000000000e004000000000000e104000000000000e204000000000000e30400000000000039050000000000003a050000000000003b050000000000003c050000000000009205000000000000930500000000000094050000000000009505000000000000eb05000000000000ec05000000000000ed05000000000000ee0500000000000044060000000000004506000000000000460600000000000047060000000000009d060000000000009e060000000000009f06000000000000a006000000000000f606000000000000f706000000000000f806000000000000f9060000000000004f07000000000000500700000000000051070000000000005207000000000000a807000000000000a907000000000000aa07000000000000ab0700000000000001080000000000000208000000000000030800000000000004080000000000005a080000000000005b080000000000005c080000000000005d08000000000000b308000000000000b408000000000000b508000000000000b6080000000000000c090000000000000d090000000000000e090000000000000f090000000000006509000000000000660900000000000067090000000000006809000000000000be09000000000000bf09000000000000c009000000000000c109000000000000170a000000000000180a000000000000190a0000000000001a0a000000000000700a000000000000710a000000000000720a000000000000730a000000000000c90a000000000000ca0a000000000000cb0a000000000000cc0a000000000000220b000000000000230b000000000000240b000000000000250b0000000000007b0b0000000000007c0b0000000000007d0b0000000000007e0b000000000000d40b000000000000d50b000000000000d60b000000000000d70b0000000000002d0c0000000000002e0c0000000000002f0c000000000000300c000000000000860c000000000000870c000000000000880c000000000000890c000000000000df0c000000000000e00c000000000000e10c000000000000e20c000000000000380d000000000000390d0000000000003a0d0000000000003b0d000000000000910d000000000000920d000000000000930d000000000000940d000000000000ea0d000000000000eb0d000000000000ec0d000000000000ed0d000000000000430e000000000000440e000000000000450e000000000000460e0000000000009c0e0000000000009d0e0000000000009e0e0000000000009f0e000000000000f50e000000000000f60e000000000000f70e000000000000f80e0000000000004e0f0000000000004f0f000000000000500f000000000000510f000000000000a70f000000000000a80f000000000000a90f000000000000aa0f000000000000001000000000000001100000000000000210000000000000031000000000000059100000000000005a100000000000005b100000000000005c10000000000000b210000000000000b310000000000000b410000000000000b5100000000000000b110000000000000c110000000000000d110000000000000e110000000000006411000000000000651100000000000066110000000000006711000000000000bd11000000000000be11000000000000bf11000000000000c0110000000000003e360000000000003f3600000000000040360000000000004136000000000000423600000000000043360000000000004436000000000000453600000000000046360000000000004736000000000000483600000000000049360000000000004a360000000000004b360000000000004c360000000000004d360000000000004e360000000000004f3600000000000050360000000000005136000000000000523600000000000053360000000000005436000000000000553600000000000056360000000000005736000000000000583600000000000059360000000000005a360000000000005b360000000000005c360000000000005d360000000000005e360000000000005f3600000000000060360000000000006136000000000000623600000000000063360000000000006436000000000000653600000000000066360000000000006736000000000000683600000000000069360000000000006a360000000000006b360000000000006c360000000000006d360000000000006e360000000000006f3600000000000070360000000000007136000000000000723600000000000073360000000000007436000000000000753600000000000076360000000000007736000000000000783600000000000079360000000000007a360000000000007b360000000000007c360000000000007d360000000000007e360000000000007f3600000000000080360000000000008136000000000000823600000000000083360000000000008436000000000000853600000000000086360000000000008736000000000000883600000000000089360000000000008a360000000000008b360000000000008c360000000000008d360000000000008e360000000000008f3600000000000090360000000000009136000000000000923600000000000093360000000000009436000000000000953600000000000096360000000000009736000000000000983600000000000099360000000000009a360000000000009b360000000000009c360000000000009d360000000000009e360000000000009f36000000000000a036000000000000a136000000000000a236000000000000a336000000000000a436000000000000a536000000000000a636000000000000a736000000000000a836000000000000a936000000000000aa36000000000000ab36000000000000ac36000000000000ad36000000000000ae36000000000000af36000000000000b036000000000000b136000000000000b236000000000000b336000000000000b436000000000000b536000000000000b636000000000000b736000000000000b836000000000000b936000000000000ba36000000000000bb36000000000000bc36000000000000bd36000000000000be36000000000000bf36000000000000c036000000000000c136000000000000c236000000000000c336000000000000c436000000000000c536000000000000c636000000000000c736000000000000c836000000000000c936000000000000ca36000000000000cb36000000000000cc36000000000000cd36000000000000ce36000000000000cf36000000000000d036000000000000d136000000000000d236000000000000d336000000000000d436000000000000d536000000000000d636000000000000d736000000000000d836000000000000d936000000000000da36000000000000db36000000000000dc36000000000000dd36000000000000de36000000000000df36000000000000e036000000000000e136000000000000e236000000000000e336000000000000e436000000000000e536000000000000e636000000000000e736000000000000e836000000000000e936000000000000ea36000000000000eb36000000000000ec36000000000000ed36000000000000ee36000000000000ef36000000000000f036000000000000f136000000000000f236000000000000f336000000000000f436000000000000f536000000000000f636000000000000f736000000000000f836000000000000f936000000000000fa36000000000000fb36000000000000fc36000000000000fd36000000000000fe36000000000000ff3600000000000000370000000000000137000000000000023700000000000003370000000000000437000000000000053700000000000006370000000000000737000000000000083700000000000009370000000000000a370000000000000b370000000000000c370000000000000d370000000000000834000000000000a001000000000000f86efa0dc11243b5b22d02b3c8bee902957490906a5db204dc79c5d6d36ffa21f5d8b53d2909fd36c84ce1abc0dd81f80ebd20373f1028c1697a259b197dba120c81b6fc2c45ea4964e91ef96c1cdd39f284738da52e24cde2811139cf3f19218c71f77bbd0629fb658d3b77bb8de94c623bb0432c6290f652fab8548dc54128730d801a94a4bae45b91560d7db983dae29dd1efa8bdbcecd6049d1c8183bf06db6e7ef8f01b38d4a2c2df0c5b3904508667e7c13453c5761b4a1a9feffd6325a712289db79c30c26aebfdc5f70ff78364432dd681ff2c261b0d2740647b17297b7f3c2fe8c3916fdd830401890d452908838599860890ad2477c24851f82a12447f49fc232e5b2f4730f854132e95e58dffcfd6280aef3a46d5d15c2ba1cd05f2a45ed793aa44409b429a6709b84b592b29090376764d51efe3475c5675ac0402419887842edce1025ab62844dca0e3a3c1e31c8a8d5740dffcf8715fccce0dbd451b50be10d9e5fd0f906943231c44cbc2e26ad71c068eff7e129585c394068958a1da3a270aec6f030b54b87d0fbc594a2d5f5b8873840562e5a152ed7613c95bc862a23e7317d9b9ba965301b1fd113839bd1081648d0cf7e621e13c35220c9003b6a03038bb060b44c77dcae2a894e253f19abc053c985279227ee72c1b600b4ca680bef068ff0bdc109b57730850a49878bc9456eafc7570dd9ff5b607aef323e64cbcaf29bd6b2a8c7714ac1de92346bcb9327bcc8b7168d19d99292aa2db8f774c7c2b567a1314975f909b27934d63d9cda9dbfb9b3cd44cc60d3107e0c119963c5be3699fed2ab24d62c6a067e772e51e4c5ba4232f7130793bf715a2e98f647b0703fd782eb8c9a54f93c8df40f6c9ffaa844226f8d594a057a72834a62794a2fe685712230d0c549598de62a4831efa1c1ef6630509111eb1e22df49f54785074178fa66fb2f2403032a9cae33c0d0ebbdee815e0973eeed14f191a66a200915d4f43df2fc87178a5f2f6c4ea8c288735c5e768c69fe2386ddd1b44d8a8ee0decb5983cf377f7b48936406e3441a7afb9fee3cdbdb213abd887113dc0ba13f29b8f38b85460c958987c23fd069ccd1ce107b7605abdcd068b021cabe5d99088803cf2794c2828a4e48b6c6ec96c6aa88808ce63c7a3747275f2158e5974ea082c4114a7ca5e237d07127113e262d2fd2228504166bf676a4c640632f50d728419da68e71e04a51cd83ce28dfdd07cb475ac4eb5847580ad36be08f2352342079177f90a43919006712a258b131f7ebc4a13d5ad084a992eba8020b7c6972bbc9289d023af8408ade508821c64de60631f2261a50f46244c91e613aef3891f17bc2f0b5682f51c8f20bd2000a3af7779d159b80f6169e2c590e3191061583af976ac064bda62512456860b6ad3cf51d879ac7a02710ef659daf909f8add015d365156cd62a42a192900dc7cc202d1f10581f4875981c71daa7a50f587ca2ba69647b17991949a57ac29001b35e0417244f3c6626aed40b3624370073d4df5cbb5fd755de06077f46553a89178fefab19771867c51c2e5839eaab187780a56f80b45b9567a33b9ffd1fa91ccfeacd673da29ad67b83473eb9605d0fe1e6c3b244f8444949e48d69ee3576e03a117051cbbc2e8e2ee9965654539d1796fbe751bcd9b67bae57e58aa29d088ce7be34872047149aa7e060706a8c0c08bd90730081492933dfa5c7993261a4c9c09fd8a50d5eb1c271c2231fa580b927f2b047269676df0eb8b9df5eddd93390cfbf1acba4eae81128f6b98b7b2d011c8669847362be7e958d7fe265e14d93c0bc5132d757f37e4f72158e2f58c1121d62b722e71afc893e304daeb3ed318d769dae22f9f25551e9c92414c290e50f13e7b7518077542b5742c44ffccf02bbd93172508a86aa575b4695d79bdf8f93144979a2b39d1392681c14d039e8dda85407064843bfcd57ea95becb79497d33007bf1cbadd2d4d2b23f9c7461e905afa7af370ddb144a3edc2c224708b5300a1316bdd479cf194fcf4d8efbbce4d4813173ec5cd3bb75031e7df1ed45dea35b16f01ed16bde00b27c3baeeb8abbe149943b6080d90a719d3e37748f33f83c6b0da531325731e8fe38d01e38661d8b930f4e4072fd5abcb60adc2fcbe3775eda1b8326d09eb73fc037ae35d48549cd88082030b8e268e18f8ac27e3a0ec1ee0207ba1142e1ac3021f9d0e79d2217d29964f26d507b827909c94fdf0b0679ab2b23a5646ece4eb7fbd45a50025a25c5677a1c283a57aeb693d63876856e4d1d8d2d496338cbb733a6fcd91472642644a1ca164027ee311e69021b96363179c13400d8165d4e6e59896d15b0e87b11ba5b11da18c0c3573c7ba7c2a7bc3c8fa1ce2ad9712e81e4c77753471e4a4dbc48f21b79c459ef1997398c4f6c6af31b91e815f501afad220d28e8f0b35bdb18b437c9252f8337547bf5692536f90ae9e74118f6b65ae7a100961df22d0ae5d7e038068075511823d5adadfc7226fc774c4727ee75fb83a588d9828a2c7e0a6d3708c79de412d92c125c57e010267de53a7e1c52df6ed5a3b8f2ec468852cc37a142ca8dac03c0540d171d59890aad5732d50654b0950281fe6f8b28e9e6b1bf51eb0d78ca9ff931ce21e11ecc67b570ebd618d03d0e419549ba7db4138bc51a0fd2ba2de301b585cea73fde4a0e1771e7d02f6103da6e0c77a4713bb0194a5b44e03a2b691ff8c450bd1bd1d8066a7dc9e505838fab6374c872edadd433250823edf90126921dfea03822c8fb90d0c7c8b62bc0252282772c9848eb82c1d77c0f41d186d5375245655a6a8f60dc63f0e9610502ce2b2c9f1dc7604e1c4330342b1dd53b888d7acfbbd737e644686a50f97307eb01db148c39508ece74135de1cd8aa0906ecee6fcd68681cabe5ee18f71dc1295b2e899f220bd0b62820a58e15654c8df5e3d345a559e719209de7cb75a4b10e7ca0f5b766cd2bb8cdbf65ecbd416fc4de565084601fd72e3a61b794a42fe24641df6d5fde7a72e3e46d171011e14b6e1f2e644c10620c672b026c841c38522c57a826ddf2d0edf0550867483be3a1b994c842822fc18ae9552911b528e9e16821ea7f405ca1df785aa188e5b4db80a8828691ae7d780a80646dd7cbf228616f7278382b88eeeaff2c9795c7e081aaae5b43ba1a236dae149d2d66b3e731f0fbacdd998c208d918b90035393ec02482f0f66ff0a843ff131ba46c78b4634c1f273a1c053029c269bfb278ca5a2c4aa2d9eaba8572527911d1bf4b455a82412baf6948e4e3dae1fc764c0b3bdf86dbbcec5acd66a80c3d36c66fbfd4fc24192f7e50671361f7e108be166d76ae5f453db633e4a9c75c6f020cd8e2a27178ce09a4f22945f427441bd955fc8024f190956cb62c8ee02c319ff07d30b0ceb8cf0b9bd3676d4cdce833728146fd94bade114ca2c7e95cd8ac09e413065332b2e51adde865584509579b686fc367e82ae5e1e8433888202c13f0e5a84020e2cb780bda1cfa326a597008a3421df0d9b285703201228e4f55442f9ce316434fb4c913ce4d43215090d5b1e2aa7ca343162bb62b2e4428397fb7201075f2b25e220f27229000c144110d0da486125bc6749ec0e8c4e0f495d0a999dd5c6a31b13dde0cdae3db1104c41a6cd4b192469ce176624801dbad64f895f9c16e5325c204b12f27bf56a029ac4e08e3865d07728db880eb690ca03fcf8aba604e2b32c9d5e415d2a724b311a4a5bbe787c230c865bd8edd38cf0b5a003954129771f0c6242221642a10459590918ccc38334f551d7f971a900c83ebd76adc7373660d4f407912a57e2576aec4ba3f2247497d17d699bc3f2028d25ade03863c1abf7ada38b11e81cfb84b2c18a851b1f2d26c1da248085a634eb68c7ede223cbf2f8e0203ff0cb3b79d699b46ca21e735c10aed1d00dfc4e4eb21d5e50e7552ec9872e4204d032542eeac9b0ff26f0839aed59feb411e47144b9490afc07bd7967b5f2e3099263634436c6c351f8d2a25062ae77709e75adadb9d8a34dc3eef45797c2ef19e0e0c985e3c3284021bcbbe5f42ad1eed770fdff56972d7b62462baaa2a0a7c2107e91e0d90726fb8f3ed0cf2b151db50b29d97ad7e16276d6fb9150d3257eeba1eb70c2b79355f8973d69394638a76b7484477cf7dac621addb654de49d879a81849cf5db911e303c456d43e33c6dd5687d4b7bc033de0d4750e507efe79173120dffbc8d37707b8c179294cd73a30d0adb5d54e44dc54222f2ff9c9bb3d142027ca07391f5c03538437938f7f1d93a719ad617ac8ec1314d477eb0c3ffed0ad2ea1365265da09c4fedebf36c5bdda22a3c78197fab1a153f9d63eee9b3b0c3d0252a9ba348a031fb4711bb7baf9c7427607353ce414e389bb5812eea6c4f1e7128ce49cbeef563d559efbd924de2611c55bad836a98174906d0924637626337264babb0e43fcf805853020ded9d21cf30038564ab985eacd21393be7a2bf93819d6e32831e1f5b38141151d7d0a2a69d45325a353f423d9c9086050eabeb0b0216a36340b3afa6764e1dbc70eac4dd6748a0cc3224445a40ae62132c10d634818d44cf61d91e74a5c180bd4b41d0b3f09342bcf7061f6835a5910df81d7591c283402ff0337140ef956ffbc26fe2e2dbf8f2c8cc943d488a016a4a54b6ef72a1c77f82d3b6a230676e7786cbf413d68f5d46d40a5b211aa821455fd4247785e09ca304c3f82762103adc5ecfe88f32d8cb483021f20a4fecd31d10a0f95939c199260db4fb76fe69f542891c77c3a9d37f042ec842dcba8ca00331363dcaff5140c020f4e73ebd7d8565be9bed0d52f6a8b8434be89b90792bcb60cf78c633a09bd4271de0d6bc5f2d9cfc36573c6d3ab0b0be98ccc1fc68771ec889ffd0ef427a14fe72824cd18e0323e6f066e56bd5d03d61efe700f044ee749245c5fecaa1b9e363a4be5cda6431e47dd726e4ba87c3d90e9e844c25681cfedd85f747f782bd68a57db803f50e54c785b91a573340d1a15082f79396dec4af07c321c78b2232837fe25af8f321372e07f7b71a8cd91c326f77b741f6a6fca8e9fcbf4b0d922097d2e268e68419514c44665f66e033067eab5fd83bde47650a3df5ef91df7095f4fffd4bc3b085da4e3b8531f3c061604d9b051ce677e2144a838e0a2fa6e07101f696bd1d41e2edf6202640b6ee124092a6401a774ea229cc865ddb51a4306bc714a185932c0d73aeba665ecff7065b0da8db8a04f0c6e3c6d106a9e1ca2298ac92176b0d65529a048f4a026b76ff40b528cdb85d0e4d22a0287857df05f04ebb77c88a7542553cc31a70f58d891c9eb18ac12277abfd04498e0ec51079f0233da198ca23de4b10cb06d2e646e255838a0d09f84a7d59f0f824c372ef052144c7e7e6c8608eef6cac4469731fb99820edcd4e9b89dad4f84b458401e704a0a2bf64b18107abae09d1ade38bbd5595555bf1d7cca4354ae409dc70d01c4f118ad4b87023fb467dc33dceab2f09c934b8941821790153af78a159712f3447827e884c44c6aa7b9b2bf5b508d66a3e2b98cecbb6f410cfb4e4cbfe9605ee24604a06c39858241f24d04a6f06d59e498ef19f691b9dab1c4b61327a6daa5f374122bec486992fe80c4df096b8ed39cc96aac813a564a35211003772f100c3137160f429812956ec0304562c874d15e62afeb551f6123eda0f18993f6aef17e7c2633eba18b9b4da26fc0a2920a8d2f9ea252fc9ff73d9c7d87e26c6d16938fe72dddf09037845e572dd26350b6edf445de0f47737e00dee5ac735b6843cc88a82f312d488ee8288d6f42866deada5106bf1d73796545434531cc984197ae9ca207efed52f9478a5c587144d38b3a0955b0a0091b1b06dd48444e981dd6554b0024fcb69fbb2591fabd685332fe12c695ef879956858ea1056031dc28c3e8cadc248e39cce5d19745a259c9df640a567a24da3b5242144d6ea6747242c7e9c80615d40e6dfaf2b900f8f897e9d79d39ba3c7ce554896851599fe0bf5dbdf566da022d5514a792ce1b3c6d8e1a1abceeda7fe3f4edfee3825ca0058b82ca05cb542ed3916abbdf894d6bb89cb023f1bf1042d5c5507ff706affa4edbc6baaf9e851219207efffef9718e664a43abe6575369bca9ee5a73d40ddba4ddf6d1148adc06b93d2a4cee8f758bd2e519200832a3cc74dbc01aa6793fd1deb24e6d6ba72b2a436958955ec9596930d2ee69fd06d3ecfd31871f34b0a93af6153d4546cf961957c81a2fc496e9aa90cfb5a0b2b8d5b13cf19bd8868bdc8df642d873f6f1d12037a109d0ae3a180cf4fc050c50b57726bc16e91a88732c2673633e32d3fa510947d2418a5f9a14326245b942a24f43a5556404f7b24889c2ab7a993bb7162d067168ead86eac2cc1eaa0594355aaffe9bdcc3e752e4a2ffe0289ca7aac6323181c07c40b676253dff9ad2c816768adc202b787fe61450bf8c5d763af2a190706a1acdfacfcf9932ace9734868c52616c4528f79f48683de1784dbd4c752811040f2b557947688ba55998985f8c8d45673640d2a643f779b7a930caf42c57d60b0c6628dbb2094eeecc2affd3309c763ecaecc427f95f731aa3d1bd02c1dd152527f2b3a81dda2ff3463e12346afbe875d76a2ecf3f4272ccd7c3137ef269d21441bbd6feb8e16f2a6b31a889951cd406bf51eed1486f03040b54b0a9425f1b1a0fa28a972ba840fcf072cfdc365e33f1f5ecd59b49256a551919f44092c8f72a7baf3f3254241a23c4ee051e3d6c255dd49c9e554bff846693b4086a14dd5b161cb808c7a5f182936c2814d7e6035e57f25852b305bfd9a2b8c4b22194b4f41c223da9d928fdcb0fe9b8180f593be9efb8c15088ba87e76ab3eb9230cf167b19ed6f335335ada0e39cbe037fae841b9d36158b8b35a49c100b8a59f656f54911e5fa6b373180bf792a2a170e99e8512dfc6a12bced424f6b91fbb85c6b9c2311312c27470d30e79eebd16160538b81baa9c1b2da17fdbc0cf6147d9529dbc80f94cd5ec3ef1df063521423b1321ffc8b7c6b54ec3ff162acf11b9939627c952769761b62d943613abafb7607659867df7115a4b10bd793ceb2df283f0ec23d27358faeb106935e8470fc1d0cf602148d6311016d3a0e9999bccf1d8e136cae21a0ca1cc112ecb42afe3e1fb9d23db03cd2a9aaa0a04f90386722738b111aa2226d6516d2abd883104914ca6238ab179002c81d32e908019a71411cd9fe4e0c28b4a6d041f97722ccaa8d0f71ffcefd5a7788990fdd0c157b80e92ef3cd4c8c07894181702684f0b4368a7ff807a4d6078c3146afaf161e7aac397dc9784e7f0d7ee531e8f0b4f41a3003b0b753fbe235a8f034ee441e090625b4f9cb356529243aba357487947dbfc5c9c6102afddc3494752d6ced3cf72a69594e0e0604c22c23eaa3cff3a9b6ee2b583e0a3f53f1e80e5542b9621bb38b9d2ae76901592d00cc44e3409b2ddf97ea54c45580e8d588d70a1a4f47609d560949f8692bc26a2d494b61ed36d7259b4c49b315a711074e877013b19c32cc6c682894f0fe65ed2c297da03436a17c2f91f6e1855618ad1d1e6b01a4ca53d4dbe03f1f6552323416f4a7bef9441d7e27c12f6e1a60b83149e9a41172599ea2002d3ca3664eb8d913185a4f53af9cd805f7845a4abf477a0ec1870e3664fd39eeab0b96388ff29e1dd9a2be15ac6d4a47e199aacd36b925cecdb71d51835a74f213d27b59ca2c661a2d507e5e64f95b8e55cb8f3b5d9959cf3f4b9c13d8b3aadfdf5eb36e4eaa97014781ddecb0f48c286d5fae40fb3fbd7695e5c3ebac78cf391d19b6c99ea0a11aa0bf88992e65355e88b837eb34bfc07171f7d1df423b97bfe88a675010d618186a4e2673252709b51ca864e0123ac8f94712cbe6404dd6671639fe60c5204a131ac9776e3740b422e17bca434fe5ce1a8f5e495ff24d38e49b6e62b1121b281f70d3473bd4c04158e1b9f6e8b8dc83b0684c9c5c7fa0e9be9e91c57f35dae01b963a248184ccad68019aaf3b5ca82364c328ffa4d5c7df8cce7ca46c187b3c17757c8bb4eb372145200a7e3caf197eda07573230e5261df3905c6800f2e2461235a7eb4bd906333e5ae0f92b0c11f371edc3a4e5166f59347acdb5b407afdd1ad89c1c7539bc078ff1245ecc539889fb6e4b819e65579fe6533c9a6391ab650017beb179b547dc332ae636045d5b2489400bc113aa13dedaaa14de27cb047f13dd99ec7ecd0c9d8b3f7f2eb76071023b44ce19d9000f74b02b68bfc43229632bc1bd6ffaff93ba67ed3abae927a4bf030df0a36a57193de2ed430dfc309967075f7038fb7a7296dc389ae2521afc87398ad2202df09b2f7fa3186327dc3633176992fd78db925b874bd0071dbd13f1244bd7276eef192cda41a231f078e1a005bd3d73dac6fcf6794171d8566f954eccce2d91f653944ff4097297a7652ecb144a21a4bcb1e0795d1f4deae21812d7d8afefe6ec6e95ff54de32403385a2112b8dafa9b6f6ad944d15def43b9e427c7122f60eb31407a8029edb1231fc899d00c5874d038b3d28015fd259054b14f11676ffa417a302136ca566f1a76fc56d19629c7e176541283c445658725560fe27a8d7505e302128264059854e6e628e0d8f0bb52c782ee1a5881d5f7b20f779ceed6a8cb96d46ddd4c1bd6ae177f7aa0b8450e582cc85cd2caf836bb3ed0d968703196a87d93add695e64527a08d56808a5085cf48d63f9cf4b2e60c47aa292af676e385ff5834096c7b7a5784a16da1ed7eac26f6f05e32d31b55fc9e6b9619f764f2abbb747256a2d60d16f60832907f30b35243de560af173a00b23fb5233bba50b8ed548688d4c74adee95813fc2c7d02a662a3bf3cbf459728298ce7589e829ee01ba463791262e0c0e9c5189c2dacade1107a2e0090f13b39b47de445e992375d758b13811ea0067f8b9cd403022eec791889f550af03599ce4b2c34ed540f8922ab8314a80fecb831cf0d501057c1359aa8ea73e0c692e0c960b2f2dc40dd7984802352f00aa213415e233780007ecc578eec3744f8fd6342f7a03e7d2addebef1f9475e6608ccbd46e184571ef75d47b4ffa64cbaded4e9f82ac5da62faf01f372747660edfa0600c075a681a0641f4b6e94bcd54c5543e57ec9c24cefa2ff13da8a556486e00289caba2c919450fc089b81a1cf3a4c3052d7f3d6e97a8e8b42a8b50e57d72c94b4de907de2a3e77f56b84b4cf1f6b815792adddab87e38344f4882bc056c0827dcf959e8e284244efdc979ef013d6aa0767055ba698dcf8b2b7d145672703b2a100bb4d4d0735993b91f81e5ab03f125fc1a6a5fe1b80c0a35ab463a57489d0fc3e89ee2421bcd24a01b2253d566739f3536112339705c3c594ad7f76240c1766b3176af70fee395c858a5435f99ee5f54ea8f7f1ee39008a4d5fdb57b15dd38b223754dd22dd0ff057f56ea21379dfa4efa9733f5e61dbaf2e0a219724047730f8adf33319c524eedd83c6bdaf3981458ce8d8bd66c5b2ec092794937a6a166475177b77151b7f457b6a190de8a78e19b65a462826674e56b23ac2f258d6757cf7734aca1d26e8e537534351a10b5c71493295a54e966f83e5cb751b6d151f870212f3b51d2f580805c98090486ebbe205695dcb72eff118aa9c8c5f4f56fc29ea8f3f5e29f7405dd2e873c00c8878af211135233852b6e3414d037e279dd7da48a55b4318c8bf9385a8f0fa6150b4c9c828a59bb106dd038dac6a3ac30580f3773b337e1bdde8305f771ec0ca8949793781a55bac288465f6fddae925e59b04c8a65583246d33b39706208db859d17d2c17a6b245d76d7c5decf8f2e68619e23dab68b4237871905009366a40e7d0f2272f0bcf7ec95a384066a884a293358b67c4da0300722ffc3bee2dba6c17aac3c64ba030a4296d74642c10b2312b0ef96d6b15130979f7feef67658ccd2471c4814033ccca4f4a3512b307f55b4f25d29885e21527f2328eb6b4558f8c8ecd7eb9d03272e7ffe2ea41df8ff1910e96bb4dace8182780a16adc934c973c4bb11ebdcf924c321acbeda1af2c34c0671a4e99134e83117e116cb2914a8080b9d5a0a08deca0f6c513cb33c30c4942cd0faf7f2b9da616756d61df0458bae331ad09d2adb6c243b1ad6c2749b16e84729ddd5e2d1b54148cbf4e37063bfa1fddd958ffd5cea0befb449001cc77b47a856220429cb12b1029617127daa4a75daa425211b863c78cd58ce2fda1a7c37787248caf08a2831ca17255934347160d449e144a0333d0a4ca441fa429e573b254ff83c825266d0d2071a083ce3b9b273feca7581b135c81f08c4b5411208bc1c0f3998434e4831f91c459c3d008ab4fbcf52c902fa2f0e935ec7d5d5e39a9ec7dfa00283530252ebffa95237fc3efb7f778ef472b20339b382598818232df0888d166476727960c2ab3a46d9cd4526fda1446a464bcb5c466cf10f3e0f98165b8579107051a3c233b9f60f417bb765a730fb4df38270f31c951d8c2d370ebc97dd3f157edf6d9227cfcf08cc3395c90229a21dae4b4b02ce3eb7ab5a5e915bfd8382912fac8f317184d89dc303a070d8f49ff434a8f689d426118526fdd866a418c727b4e75820a680263c97771527a6465b4dcf76aa0f06a3411b70e18e5a5e981b1719f7a33038b126c732f7a418c9a5b753a4181405570ec43d3709bc43b4bc31ecdedb46501ca674d1c5a6e5222e97ae984440a817472b61cce4acd942d19ce7fd007c8930a2a5bc906670239112e0f3fbe1ad183d4ebd0da1dec66a457eb87ecf9646d8915560b006b0dd734b53cd923a2449f1b488befdb1c1a1d258345c7d5b59c1f3125faf1b4b42a7e22454eb273bb45c14ce8b6c4cf33407d940ca57007eeb7f3dd2bcf7ca6380b112a828fb84621a7be49f2e78de4892cc05e4b1ac6ac88a7ebd9240af81bb6094e71f5f29c149e4b1c3fc0a0ad3c53cf1c0ca9c2fb3f81eb230a18f58376f0109c36924aad5428a63d94f576795fbeee85c3da402888b3816cf2075c3c4c4fe669db6636445ee311a9bbac54a19077c6c923bdd4a67e11f5f2e52662a2b61fc775fd3a02227c75b6bf1f56b13a13f9a0921644b6334d65b364ae2cc46c3fe1e009cf3cb358210b82f747ec9d17fe56191fae607afae0e9df880020d35b3095bb4c235922b1613a146d1f4693f645cb7a814bde163bdf153f769e2a476293904c4c996667fff66c2a93b215a3bebab42761d2982ff74fb3243dd9138545b46cd65ab1526a7c47424b8063489404feb398b7887401127fc1a3ed80073d2eca7b8dea014a8a5adcc943427a72e4e14817fb5578145e84f73005326722cb51173f00a9431a33c5ada6d489aba1a3d88b2955c66dc9de438a8f8289b0196a630b89764eb2054e125702da1ee1f7a2295dcefbfb016f590bfb93ec6ce429844d55e1ef3430e3409b86c07189fd1863f24b5f7800ad9a690ac6ad135c30016ca2780be80a23155b16b3d297f942e27de9288a5b3b13e961d332165b5280166c1b396a543d785a76f1cd01fde98e20c0e99b498f5a3dd561d49870e5eebc142adf0236c92b78525db7d70572f7b82e93236d0e86ec2d37e9ee15ee7ae15322d46752cc8a62d86d2ef7cf9b75a1360d5569c0f94d6e5f5a6461d8bbee99951ee2338bc2f829047de07e77bfc263d4d6fa6394b3a9fa75bb44bd88753bde831ae523cc063de33c1cca373c4b8ce192238c6c55b4d4527b6b8dfcd37051a4611c3823cf28ed40897b9ccb6265bc04fb237bbee739250cf8059719145d7d92a22910163f502a25d797083cc72389847dfb6bfd4082b3536f8c9b95ef47d6d3880144cc9cefca24c1b70aed1e6af56bff280f6b3004a410844a4537fee61629fd12acbd9ba35c3c26691eade19376c3a3a255c9c57229a2f8b47dcb956d89b44e04820433163ffca190ae1d1f3e1ff91bb34033a28660e4192ca69fdddce7f4be1569fcb9775761bf53143257da617dc10cfabf9d14e4a7d676282848f689182f0816fd65bd55af31282913bda43b6833100ece98ffa1e1b36fd905bad9cbfb901519984ae24f42bd897656e2d51182f26bc7740925199c82481f3eeded1bb6a60fcc66ec4c230287f6cdf88cd9cf51e01ed518e07c177b3fc5f30c66465bbe1e2d13154824d1de2383ac400d5e1307e99d2b64a8ea59ab5d1ebea17c18c829f9087a4dd9f5e4c68a595cd9f8e08a182886e338df1409dce5c3d26ca6abb47439164971323ada13330ae94345dddb0575a018855f610a75714f053df9f01a59ba03870fb1a9456f06020f996916741dfd742a3d13a0c85f9ed19ea5f6748e55e8042fdb7c09dc7e5bd30f6a697ec0b5ec631334f141d7acfa315b8e75bee893fa0521695250d76b5d9cb9c9dbfe13de3ff959e44bb5b7b3f5cb3e2f34fed3ec7217d4de93f3084cec4557b655307e3acb329b8f752ce40cb86e88e6bc17bf11521c78a86e4cf83754f73393247e660e6a084c0f94cfd45b9c5f5a9db7931986f82e74c92edbdf597ac57f0cc07c9535a162de4a8c75a0cb6894a4f528e35905381a0773713218ad380d6c65290c35c5f906a97641122ee7d51f28d8a4382cfe142d04026644213359b0d7e42b9628343d17805b5259a40929265efee7b08541a927a2964a2cfc9922811179379fe3b2ae103b66787bebece503ed61243a8b9ed51baa59bd83c23ce49504d7259f6940ed8b6cd391b4d46d25d173be74b143b4c61d398d1bcd7c14b47436822e826e9098d34e67f51b27490613962b0cf016f44e130ba90de93ac3099679f495dc18aaaedcb71810010ec4809c4b70fd4b7ca7a0107546a6b7b7b3f358f9ca31e36a5709420f4a93486948d12aa7c9b70346edbd238fc438fe0d0b42ac9b25b859bdff7702cdedf06932501041086ae8f313e63d0f5f50d89c8a762976a545ea1d9c8d1e21026afd8556b655b0b4e83cf80cfacc0b20a9daf0ac55a290757b01be92c68c0a194370666737de8128af9c99d9f0c80206b8887afcceacadf7e5621f9a8d38e1ed1ad9e1b9bdc23ce5257f62c4506f2e0c7da2c55c07a7f1509457735ad368cd0dd74fdc49625b06d26f62722cc94e0d29841662b43a5780bfa6dda34e46d0d04b630500c68d7c161f85c7cb246f1b00918b4d073556e00ff8e395f20b932862c765b22f864b459bc67d19fbe6f30a103f68693ffda3ab9f8f866cbe3fdcd039ac795b7631e33b44f47d156c62cae212daacd231dbf517c7893a1d40181e82577ace9e4d6be8ea225c26685a33c8ee10570b328bf111a3cb314ec6537be6a29466cacf42365bce0c199a36b3cb081e110a26135d5f049e0f89903490b66190f1aaff7a223ce767aaa4c14371a61c322d866826cdc12990c0cf21ec7e855fad60b4424e2dbcaf99f4c55a33c8a28b5f2a1063e1b07a76f85a5d785522590f6c6c0b530628eb7bffc25e290f4cc8c8451465f5115c11bdc368cfba5a9ecb5cb87bde465d6ee33da38c3b0266265bccdb18658e66b70c691692e48bd1a303d4dc648ac5545a168f8d9f090f9c1a7c77c107de75d811e2f38b1b32cdce690d961143d98f829338edd4d800cb0d9752fbb71c4f8a53f393e7d4516c9c46e1059be8824f62d39d046104da5ae7d12cf89d042783403b398ecbd8cb37850907ec9680b655946996f3b91cde194c22428d85042c2cd4b01fa47aea806217e9c6ab24fa60dc1c2aabaf040a3bacbafdee0f74b42c33d4e54147be2e6e4b62ab1fda7764c938cf8b7e9c075065771f686aa7b6a90f56e0e5f7c777e0aa432c148ae3559243825fcb407f3965400765f859683787221f4497a35c716bc4a99e45207a8488ddeeb2ffa96bd482ccc76b229994818818ac149604394f76003315ec7d5dcbd58f11136c366b025523eb73a6cd365cb40a23ca75baaa87edadff01b2e22026557aabaa72c7ab931c691c39ede1882c3b16c08386bd3e4efa48bc1347ad1826f3b46062801cc5a2dd27f93f84e8a4ac8f0dcb5d0017f12fd8cc1d89f190bf216b4b5285b5e402e9c5ab7cbc01bc6d15ef181c7b816ef14b5e289bce65790c5b8c0bf535ad41d17fa23ad1f66fbd0d88ce0d81e363c2ce097a6755e8a3f916313330fe97b31fb108499ca54c806cfc06991dc551f8b5c9a822e87433ad883f7b899a08d46d2a9eb8cb955044bdc848be9500672b37a8529ec92e44bcaed9a3be14f7f056059dd6fc7a477a71e3b0af073615d3ce0ff8fec38d4b71f2f0f47f57b9ba3ec069127f4617a21ae34e7777b5e9240037ee249c87cdf1d923fe1a672cddaed5890867c2aff080f324bb81e3899110310f9e7cfb346c082799cc9f583de6ee738250726a219706aab3c1d992663000e89227ce1f78a4ca6053a5fcf0f8e221717ead2a0a035e086626e6b87f4a1b2e6e838a21e663ce647ad06342c883b3a8574c5315cd311891e3dddc0255aefb214d32a02a3370691becdb7bb5e4b2923c9086757b72ca21246d3d340b33b7052c41c855ff289662f3c248a197d0da850fb519ad798fb9b224e4430116f547cd026190556c04b1c678a438e4cb5b84f871d959233c1c9a192d152993e1ad88cc25e6a70abf2448dd525fc0fb829f64b890064d46e0d37bebb6dbd693ddca287f2e9ccbda96f4b7bedff52cf3ddd42c814c012e18ab03e2389a67ee20edaaee30224098d46f1bf81bbad3fa275a37903ccc2c0c871241bc7e2dd8a6f8a440dc7d29f83af753433edff11afa82b334d6ecb6ef5aa045d84fa2bb9d6fe0017940db11af107fbb0921b796f11a4c18b4232863bcb609cb3a26b1f20ff362e3f6128a14d9a698fe9e40ffc817404376e147ab07eee5ef310a6f78c4704aa2a193a12218f101a8b54c4472ea78ef1992a2935d3c475daf2271f84ee8fbab63f318f9650eb58705886be390163d979cdf0174dcf7b260eef02da5326fecd8db324bc9541d29ec1c80be61ece079dbb19269939478d1221847eb70ff0a6b826b252c83ee268c6d007c2d19f1b1f44f23d7acd9cf48c75ba6f35885be0ae89c3656b8558b0adc2939769b4964630c56f9cb2ca0a4a607345ac3eb3a1cfb23fffc38e391ea29512feb6e27a2528c9382aa25f30a270b0154405cab938f36a1da583f795d34241785f135f33ec6037b0b2056678eb02fcb78950f578f716c0246ad290cb347052eda1e119407852d65d4c2ad25e7f1e9cbf981649356ff1a97ac3ac57dd835057901ebb1840ed3791591b2f24ff536257470a4b07f9bcbb93b1f079fbf5e0f0e69dcbebf969aad3d503ab603602b06a9b575c978a11eeddbb37f0b507de7cf1b1199365a024858212970c7506de180c84a77cd18797a83154bf2907420cb32091e374d280545364c290f8c4a0f19304b071386ed4b519cd06b1a33fab146ca061a0039c87e613c39364aa3aa38e10be7e649d31f661f4b61c7253c5104f09c274989672ae9062a6d9084a90c5e67a9d11d0e97dc6a395314159758ea1efb4a2ecc4c0e0c97139279b678a3c6c18996b9cc7e78d08c855af9ec2fcc3a4044ba2d328ea46b46dcd10edcbb7a18d6fae70cdf185ece77de5de74a677e1ce596b32fb9c290fb3b553a7f9476edf8a71ec48881781ab72ca3d49eab12564829f766016ebfc01ae409e85a24e3fb2423c27ab57259dc9178c24bfa75d28466339077213dd1c1ed45146191aaa21a45b8c273177bb1d953af3518c9dfc26ee40d45df28015932ba17a68cc4e1fed522168314673966b0a2aa24ddfd9dac2e86c6b7581aae6159bc745d084a30811664ee65fdeda3a0ae4b6c239840f0f42d1b03b2540cd93fd55fe3bf8cde5b9ad650e041a0bd240cb0c5c84c3ba24a8baec6d71a112d84d35e5a3926cbe0bc54c817707dae6c5e5470443bfe66e28ffc7dc0b2de99217468a2d9b05611ee5a5f7fe09a0604746180946feef74600bdda0c30fc5f902ddb78fae3ce749e90e505002011e95c0398dea237e536c0c04f4543cbc6f0d22cd707afac4249ea489014e5d8b391ca7f51a631c633582890e45317bf6751a424a93cfe64894e5b553879bba36ee7c511bbe3903034ba9f673e1d1297632dd50b3f0f4e794cb69bbeb5ca07854531fc9e7d34089e50e16d2117507675873f1914c628b800e7db6b679bf5b40bb13d3a8aa0487e69ae014f94e7408f928671291d3a2798c4ff05124c267d0ff90b3722a9df689cc9525f86e7c96d6d86bc53621bd9c9851f3684dc645f96daac2b91f4179f78541463579c3f410828957462fc27a6ac7d82a9e3909a5390a9d4280fc1ac94c56143e1747afab5e4bfacf64ebe168af3b9bceac749ff9d933c5b7d9abf207102000938b96f4a9f1dd1a184dbd02739769773fdfefa81b2ac1f46b19f77c1a31ce1a7a238176c1433ced8c3dcc2004036f02d38456f64f20955b0abdf6152f5e54ba5e006029e28613db4228b321172f06606186cfb4e595b63b4ae37c9dbf2ca8ab8f1cac9a3688e024b89cfe52033fa413b792429cb297ed1814e6ad5d08dde7111b38ed898575019765db42c152efa2942360bb0046d084f41b012b29ba744b7313b07067e7573afca077bff2a973375a0d42e2d75ba505adfa2672ecbc52851bb7971cfae66bc10a860532a24f980842321f21f7a1172fcebb1350bf484ad4cc772cddf2f9ac7fd9e88fee719a03e231f71365376f26eeeda02e673f3dcf509d7d844e67fb422cd17c0c7ac2a9da3ed568254ebb35f263b6868846bbe93c45bc0342203998e4bbcad942fa60326a70058154698329d07ab1e21bb73bc5dd897fee8920260fa8b2cc134aed124c22454452ffee7ed1859b2da9cefee4c9a13817d1ab9a6dc775b34a1f0ff181aa15d26f336a11caca4871b50a0739a7bd943df579a660b0d8ca3944f45ea4113c47258637c915257360722cfeda8c3de6bf84e52d38810cf6e11d4a392c1051d3d3ac8d621032c49997eb779b2c996dfc3993ced4bc34a8c0e6ecbcada6fa813e9f4894d147f1f795a2a176f5a50730a2b7ed79e5a270449a23bc0b6ec3bbb221fe9e99ee9aef948e87ade1cca4d3e61c21533ab610cdde8c2e0a1bbbf8767295066d6e986d657e5f0b8880b4c3a1642d9aa60c009fbdaea448fca18bc80af1673d4e79e8c35a28aaaa5cf8caf3bcb21d876746c8c683bc0d0251bf5b1f7f314fbc9df9b472e514c69d5db4c78c87e8d037d3bc9510c720452c7a66944d71f13f838e81f2edc28c152bbb77759cf1b500698a01ec0761347626c6b912d48cc122fb696734c38d135f66c840f69c699f8dce4ba574ba69a3bf51e1dd73658fe1015eec7c1d0123e0370e8bde54d39875f2d9556ea230676affb28422bb6eb67282b919502b087a1b3fbcabdc53253a9ddea8083542297883d49d0e1666e062309f833b2d487af8f6444e04cd564e7f41cdaf27847af3c11b501213386f3583319d7afb0279fc13f0f4fa4d6ea23f8a6aa617c50283d83db2520d3daac7199a3255cf8f655e7891ff8769f1d65cb0440ab468a9c6b730e5b2ef7e570b499c2ad0e61b72222ff69ec83fa5e9996f5c83d13b9b8a509c2748c27b1255ab16cb0651330c160cdfacd1b62b2b98bb8f6178b607fadc40c059e2fcb2c1b35a43dc65d0cde53aa2e61e8eac9204391c7d1b5f16576b57365716cd01bb17ac156ce7f5a1404711e2fff17f25a787ecdef05fd310685cac3f4273297174c28f22b9b92de23d87d7e68e79e7436653d18b331a80cb3f087ff35d29e27426bdea61c6cb45b0db85b6490937163248a9396db571b0e55b9f0daeddb48e8dd00d1c620f90c5c21f09a2219f7ec01bc32e1f631c80c06a56e63cb3a58c263c9cfbef967811a252f18fb55839fe784cdbad5d9ef3957602f03b4ee436b17a89392c393929208aa20684e6fad20052db825ad4d5be03ad546e4e310b8661d050e5522e48181ed8a13d97fb150e7e20519e17ac88b2fd8258294379ba9125da245c122ec522ffc722f1e871f0174562ee3a79e145e9cb0afcf1f444309ac4aa1b268f6ac2ab40133293f7f109a54a707404c36fc1caf21caada5252ff7051892bc47b3db165a49061f7322cb15a5419b1541e88dc471a272fb88b0ef4818eed7369a4c39dac39dea23f00cddc470979a69b3caeb9919840d016f87f5e2e69ee71a62f1ad5d99c59e1c62e1f55201b732dde0c4f1f74788da8a2f17bdb70576cc33a375897287025917599c7697ee633eb55e26d71d02504ba4d80c7da29935bc6b64ad959572d75a171c71d5162cb3e0fb732cf06139a9572362e80abadc399d0f717aebd096fbcf135b73d15fceb0edce4cff87171970929eeb7504733f2930e729d30aca8e84fd2349593f10d42d2a9b1c3db9e9372cf8970ec388215eb9aaeacf2a0495461cd813ae28675ea400c933d248e86f9d320435b55e4e625eaec494dba02924b204802184def18ac18497db9dcffe80f6fbac52ec78276c0c2bde0af4a59034b7955b1ecac590752bd2438f2eea8159b536197a410f7652b34d80c7c2bfdd4bd091d10b383c28ad12a3e93cf6a4c769d0e61edcf0e0634bb5fcda539910a2aab1eeb3203813b2ba7f088e4e271c6c200d63b3c780d9800907b8b402974805be8640f90eb3a16160b98d520c02b09409b10406950b679c0fd97026dba68acc0ec0187c27a536a8de25d412126b46f91cc3269630d9b046e6f980be2f9b0b86b3aa78b02b862d466ee645922dc9a39649110c106dfa41688132b3ab1d14646d871e4b8e1f"; +let inputs = [["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0139a6e4e03674b2224d8a8d62fde5aec1a82eda46315608b24aea0e1ca4a902", "0x2e867257ec3f84a310220014033ddef96a06d5b5fcbfd496025a89c05e02d5ed"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x04b2cd8fb17d2ea4aca2663e60588a7eb0e792a3adee4817f080eb77f5ea2d33", "0x1bb916c75ad626d50c97189100aa1d65999224c6bf1dc6f300eafb3a48ad8393"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x08f4f837bc57327057d409beef531f242d541161ee3a015fe1b84bf10f959063", "0x26c46e9b0678c6aacf9953e25468a1496430c90aae4dbcd87175d5bfda16a874"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x04903f78a904faffa28065cb248451abe13f212e4100ceea416affbd4fb9e72c", "0x27d3673d46d5864ecd9308530fae5df595b10b6ed76d55dcc6386527ecbb199a"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0771677b78336f2b4e0e02ec4dc890e833350ea383a9032b56c5d5d10cb25541", "0x260097e05932f595399f980603c9bc678eaae6a46d45441cf519034623300d43"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0be580c59270c9f1cd03ad8e4da20f8476981b502eff3f311009fce26b23a275", "0x1fd36f025490572e77987ed62bd28345bab7589ce7bfccd72b0cfeae28fcae72"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x02edae02b825ec84b1e84e581750707777ba4bca183b6091851baa47ed086b3a", "0x0761b84578cc1b71c6a6a5b4dc03d1f3cd66478332f6b889706040954728d454"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1af9bba3eed2f4031d6aa978ab856a2c43419ad8967718d9278473bbee1a41d6", "0x1cf9c8775217233aa1f624a5b299bee256d0445b0cb67b5bb4a4064e1951c7e2"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0961857e5a09255c5d36cc4ab004d2b37e84e85e012b63135ecc9eb6d30bad71", "0x06688697e7e5ccdc9199d2075279bf97de0a3d183455b5dd4270f156a21f3927"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x2fececabb753e97837635b3f9ec0df48c80363011ef13c0424069123f2cc48dc", "0x303b59721324a38bacc8b2fd1d521732876b71d2aa25bb916b9df2369760cf3b"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x09f0763a8b400d1524d935a42d46d0920091d28981cedaf0ad654f06567ed87a", "0x18b9544f8c20fc7f596ef474eee540dc32f58b53c3a09649f06cb77501cbc84b"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1611d647796a4fb4b2bf0bbf6bf924607b75bcfdb1331628db6d6db29a9d9be7", "0x2244c681c89d010f4a457a06f97cc3f439ae242d817ba0c890f0d3cc59c6bf80"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x03ca4005924fe4e0ecffef80c6c40fcf49dea696778fa55d9b888a063e46f803", "0x26b1b6f70bee7895e6d53177b4360e5a10c7d5ae193ebde536e98d0a095d8fbb"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0e0bb9034177de8f0216df1d23af469bc1df4c9b580182ce0fbe99bc67a12f2c", "0x21f0fc0eccebf2538e6af70f104fec9ea5e4da4d11ebbd5b9622132b60bf9158"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x227685e026f81829d446d300ccb071732a842b9b285d4e0ef3e71354e932b2bc", "0x047795ae29557cf6cbcd89fad7d6476cf084713553fe13ec4f78dab25352934e"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1f70c6f5bfb236d1be621658896bdda0f2592b4a8814271a1b6b5785adfccb3b", "0x2c8be1a79e32231c47492cbb7bb4602ffd6186701aa1efeebc73582bd2c23621"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0a2ca3dfcfe3efdd1098ec0df56d3877541c6590a840a52042600ba871c6b600", "0x01a74f041e65e8ae0f5007cd88150133880ac970cfa83a9b1f80c83770eb94c1"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x23f926e1e17bf3f7ff9045d915b1b25ca28cb05e5963ff6410483840c0aca082", "0x02ebb06b27703a1670134757c43169ed39dad7cf0bba07016749fc7697b46ed5"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x28b363bce048704773acf5275ba9a80b6566c9d7808a1854c5c8951639e14c5f", "0x17b24750b52e823911773b0b42b170d657f11ee98b94e82696587491d6124098"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x269363cc3502b8e9e20a6d8994cd044a3d5169a173001b8c827e642db6ca2981", "0x2a51563d9218c243e51140ab658fe300a2c93f747bfdc9521a2230309a1d1f93"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0a3bf805a96b3a51f78be077353ae6cd21345e60aa13d8ff70263eecfb2c257f", "0x2bcb84e0353fad12a9db98bf9f5c5a2667d234c3614c09f6cc890478d48f4ec9"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x026a5e2422807ae244c932bd3b7cc215c90b6c39150dcfb0ac90890ace3654db", "0x2af55218392ae3ee06308e0248079a62e2651a7a4e62b7666de1d00ccef5cffc"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x21f7a63ca80f2d8860abe6ce9692d24086d7a0cd4a53ca6adc4e4b12d7757bff", "0x1ff25d86d49426d3f8e7481045162dbae5bf02c136088802612484e3c0f0d8e2"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1cc5d987f445fba0e2f4ca9dd327f51cb906e65922423dd9cf507ee63c2ff379", "0x1fd589b9cc670e690046d1bd578207fff55beae706a74b8f56cbbb62edbcf008"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x23d8bae48c11b19f7896ce5eb2abb98fc70d7ba66181764009b193f66a3dcd12", "0x145a1f31426a262ae1ecc613ca4c769726853278d3aafad901568af2860de99c"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x157b262172fa8ec0e6372d70edb0ed3be4d8b165be84b28c5bdd97561ca56258", "0x301587397731e972182b798d262b61ac303fc9d5eca5458d93ee45a4dbbd8d14"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x22acbe88a73965792a2afc50749638b948eb46855bba1566259da5b0d23423e8", "0x2aaf05bddefb0ea6ca5e9ef58c1ecaff0548f08f516c5630581663458086fad8"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x25de3143398d7e27b71b632af47a9d7759d7b71addd055df33a30dd7be499263", "0x2a95c8a23364d905088a73032353e9f36a5bed9b76025a7b65b7a0559404ce03"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0ed187006a3c0e403efd667755467bd2d8e54beb070c86513d2b341d0b3f7b6d", "0x1ecd8eb92f6018a0ccf7faed1a6a3d9cc2e242b9d8518ead34767de3f3e51cc6"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x045d773b71bc062b2cbf47f4350802c4923e26499fa462eafaea89ad4809d8db", "0x09a379f47c8c8899c8afa502dbbacd6ebb30bc10b623fdfddcceee439afc2ae2"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1642bc9e3d8614280b6084e60d2a70f6a5b9b7928bcb53d956b66291d488a073", "0x15ba2c326aa948e06260ea41a0bdfb517a3e6737fd7c3f50c64185e93ba9fbc9"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1fc30390d4056e9771ed699114605e620212f92753dc3a840039a284e0402a3e", "0x0039401832fee31cb09f74e6197d5ca3b12d396957847322d00f771ab49c7ebb"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x071086055a2e8a5983147215ea46f61ef099e7afa6d7dc26e1e95ea6d1852768", "0x25124d252c723d5a7bc75db24f7448ed99b905f4158ad899f60fb7e9b89d62d3"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x04ad427df3ae73e4bcd4b40a497e59fd4aa6676791a21cfb45aaf9aa42ca40d8", "0x0f878f73e7cbf21184f0db084584bbb4969ed1dcbb1c5fb5ede68842fb9356e8"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x2efb83d07f0552e5daf4398e79808c3c251a35ca5de00e262de70e870535bf7a", "0x1d7734a26f97cba8f8963a85a0a9720438ad66c77c2c46650272c94d3ea91dca"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x29e767b1caa0bba037cf24fc3fbf8921c4426233f7f8e78855e8ccddbeb71cd3", "0x1f30d424b62044ad88f7e2c644f61e55e6ff8ddcff543b83e26d96b8f9834100"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x2a13bc2ee33088a6412029bc0bc6e0fcc72b7dbae397f8313986e03d2fbc3cc8", "0x2c3e4563f82a00b26bd47d550958f056daa82d7bf88776e9e02da8e794df9ba2"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0affdd25976e7d0ad70afc82dedb0148dc8e00c75ac052c40b6bd0bcb0220618", "0x0270e7beb0de05754a1c96619fa0bcaa8d946755bc4153692c081c5f0ef66b49"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x26c7fb6b501288f13983e6167008fbfed383074ac2d9b540dd9e62b56c50229d", "0x136cf96499b6b6a72900ad6ac70a8ac108904e2ea76c1e56eba814e9ff59acde"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1e0ac850115a2a4d261653b305b6ec4d4e339290ddb0094d4c71e05b9c361dda", "0x301138f7dbc40a5b8574022f6817d3472f506b4de0bec81224ae2de8edba3819"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x20022a02fb059fc9f929f8e15aeba122f27863231e58d38ed48e88e9efb9addb", "0x2d6a8c5a508e689754a6a5ed5b86dd8a907d6663909bc6744a9c515e7e935e58"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x15f5869e9caa1bc89ef20ab548af90bc0c36964c42ec45f14cea00389f246199", "0x119df87b5c48dd570d54f067cc8c0649c10f5ec88058a21228fa8cf54f03dcc9"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x26597f3a8e37c4d2aa768b13d96d43c3c798a158ff0f1ab04d4485523ec73ea4", "0x1676a04d9bbd7e4375813702ccbe7724faa33a95718ad886e68cf6742f84afe8"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x036c648de83fe65fa998fddd62ba9f8629a2596f877658f5b8022a29a7937691", "0x078cad33ff44271dc9183c1fe16a93e3cdcf963fa0467c66b4f69d3a81932e97"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x211c3a15b96d53bb74ae5d9af6d572d489a583f793f35567f8b6cd46156bb5d9", "0x092aca168ca72104b0e22d844b38a05df02c4efbcac8e22d8e46252995d74a9d"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0c1f4041eb684a665139056704f81f70bd0525c04da6d011b0f77f8e4e6b4258", "0x26c2402040d6ee0a837d84e8875e2c594cc5a9de7448b42ff747ddc467a818ce"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x1918ef16c01ab4b298f0de1c3b335b36aa0e6f596803619727cac51cc0fb0b55", "0x201cdc86bfeee8edd11cb48fe1ee12045e6f0312995ab05fd244f163023b6287"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x0aef2b9b9fa5a58f55771f05b83e234868fec29dfa259a5c2681464f9040f8e5", "0x19b3ddac40f2ab7718e082d321cb84dcca22b88d6129c442684cc6e346e962ca"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x2068c2adcf22f0f69c135ac4bfc6895d0c3b885885eaa0036aef0c441085d3f0", "0x2069b1a32ae5f75c9415ca26ee0033eabe125858741e2c190e2e6429c03843e1"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x18d09fcf2ed230be980a9aea911e71d7f29036d896807c2e9f36c953e2d3b1b8", "0x21ef56d684a5e0504f0e3b80234b1e52cb67b5d1266cf71c6415af12e9fee8af"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x2c4ec71b517fb80382de6a1c9dfdcf4a48712659c09f4ea2f30a9e84c4889ccb", "0x18deb6b7314047bd4428d0a23d8dd88f1d4dbabf23fd4986e1746128e95df0f8"], ["0x2b8cfd91b905cae31d41e7dedf4a927ee3bc429aad7e344d59d2810d82876c32", "0x2aaa6c24a758209e90aced1f10277b762a7c1115dbc0e16ac276fc2c671a861f", "0x018858692e3f19bb79030e8c4bc968175ca7f578017790ab82b8aca671cbfd4c", "0x05ea75e1c59fb90e317ffc513865a666f6856b85e1c1c773b0331c337dd45bac"]]; +let outputs = [["0x1befaea19227f5deaaadca57a56967d9ec8ccdb0bc444a2ea99626288595ec37", "0x277e8d4ca5672e7109d2cac9357d3c4da323ea6e3bd419b617ecb45c0fc32bdb", "0x2a6feb4a13237ad8671d374eca3b0dbc608eff31f6a44e985b3a82d50daa64b3", "0x064aeb8344edefd0dd13b0ba407c1e5847febfb1f20f279af45a9ff814876978"], ["0x255d11d1b991d0c912b7ff928e57b088087076f815a17819535a09acabdf72fc", "0x1825ccd2a6015d2b42da5bfe0e9df0b05457646cb0c28d7a210da2d4407e5b97", "0x1167ff60deea8fc695a5f537c891c0c3befef11f6b789f504173667844c58dd9", "0x175bfb757b90e3b2f016e1bc3b6ee7068e354f321579f2580017ac3ba020434f"], ["0x1c6b9a51d9238ca45f800dba0c09ae93eae30cd46f9af041d5261828253c20ee", "0x008d2014c9d68b071a33fe1ae12d1122c80ede1b0e49360763fcaacbb562c546", "0x03ef44084c34180283a05cc1d6cf5af697cf2efde2e92f40d8be651a6ca5c8d7", "0x2ca0e965a171fca714172e2459cb8af75bb9c5c8a1e39333e0736dae6f7ed61a"], ["0x1fe403a8498153f7571a4d06c24408121a4c176e7ecaef0f2e33591daad4259d", "0x00c05e98e1ef58212353a6612c8babbc2614d900362887c62e99d52056a64a6d", "0x29930104c3ed2dbed9f071bb08a30fbbe37e685957fcbf1153583b225b2c5fe0", "0x0c0965ea8f26e4893783bb08f4cdddd8169e71debfefb01c8e91be73d3d7ffc0"], ["0x300b32aa167a66004a6bfe9456125e750a27761305233fb0f7e64ed1505a1844", "0x2512603e908de0fc660540f05539f65a312e652330f954343199b547ed16c371", "0x2ada0127f84c28241e50fb1990d3a8930af5ea4e9c0a94e6435b2bf407da1224", "0x05418dd9a7e9c982d347e473af25ec40bf786568663195765c60157976b778d9"], ["0x2e3259228d8e6a250653cff599c393d7c774b6d407217eae36624c0405c5ba28", "0x013e7ce2cd499c34d8a8fd74c7d590d61a3e06257b2920c99f7587b6f9942501", "0x06becaee68eeba242b1cfabb082bb4bb1f0554a4acfa30da30405bfbcfa67f2d", "0x07ac2d15ca9d430b1da411e13e87811f6d9ec156fc06a0d6f814d6024b3e44fd"], ["0x1dc484810bce510ae3a96afcc8c1a28c3ebecac091d8e83e8c182e2143bd4e89", "0x025ea48483394d4bc7a5772cca24c6d09b2d200c4243b670ba0948c62ba8df77", "0x1c89f806144e15e6a0be541886dfef2d64748348e3b444cd2a0314fc8bbb425e", "0x164e075b8249534ed13f93d83ea66b8b5ed618d2f7180cf1026b2d79992214c0"], ["0x1cd9085a69ed8869d284ae259b0db043312bdc9e50021566d049b426c195da1f", "0x2dd2ddb5fb6140244554e352d48268d23d5977bdb8e066b49b5ef0c8703a5fed", "0x269824c363c06bcb6801105bd4d6a4b8685178c870d7c7da80bbeef61294aa1e", "0x274848e51d2a5fb2442df75c7543642cb35b1d8dfd93a6058855dfebd8ad2ff7"], ["0x042aee12383fea647f4490073a5ae26379163833fcc0558e68522de6b9dd25b7", "0x1a94322c47290561abe8f317ee86d0fc73b5704baf1228b1a87a5d8dbc6ad0de", "0x2cfcfe5160df95c3429601cd3156aa886e58d1d9bc71cf239d4972b0b7d12dd7", "0x159c3a9fd91e5f9c51f3f6f4b003d9f1431580fe9f111febecce49ec583a2087"], ["0x0b3dc5cb7a9261abfa984a86feb30c335c5832d37e3f0f66e60163d6ad116074", "0x2934c6c7cbf9d00719013a8dffc355292d9acf4b67b9a6dd18ad307ecb80da20", "0x2659c9536f248dc10d7a8dce41b0bf39f20efe8b7881f63955b63dd84d3b6e96", "0x14af931a2a082cbb55eab90b35da2d4687086388225624f20b1ecefa7c1e19fc"], ["0x2cec2718018b08717455769f4710d8d2ec58565d73bc16ae7a76012915d5d9d4", "0x188be8a79bfbb7900a4eec8bb8baaf4b6ce1ac1845aad50ebfa59c40bdd9118a", "0x2f9083be6b0feb3bd2eefb6a733fb83b612fe10fef85a2f4bbbd4cd4d577e20e", "0x1741796d65c7ca4e702f5156c45a0197ec6fdca44f8e2aee3b7887fa91eb7da9"], ["0x093ef3df6214631e627cbe4fc8ae92e14f914483069ed0d6bfbce150f6fed027", "0x1beca248e806646c8e51e9e8d4a764c8658bda9e8e49a5ccfc58bc915d1dc5e5", "0x12d9ad7c5b3db1a634ebe90978df1ee05e54d89e9afbfd93d1aa131bc258cd58", "0x068675a8008e12a8bd7b6d7a8fe40da89ed13b74ef46471a1dc476da9cecc9bb"], ["0x28cd421aa486b5bd2ac80a9c443b147cfb6b02659441344f7913a1f8ef366b20", "0x1511bd75cb8b294bf74a39e7978b2e390499047c3bfc381524708e7dbd40d149", "0x09b971e7c47a3ff91d20ed56c60f361fc111fcf3c47949f776b7cea3171a17a3", "0x04dfb38bf58bb41bf2360ce892e5898776d4b1cdbd2811b97443579ba7bd868b"], ["0x169cf4c25ebce6d6e2a4e7c4f6b9030100c50bb35ba609fb9eae86570be7ccf0", "0x10f656bc66cf20b0e17b04cafba7be7bdf05b4dd09244eee55c830a1c091790f", "0x23e34ca17b28e3ca3f09181a5c10b7aa70af5ed1486da24607f9de1c18ab5a4c", "0x155b71e341f772ad0be274f78f4da3db0aa19cd5a8a433a96e94bdd9a0c23709"], ["0x089ceb359fd7f38c29338093b57c36c13b87b6ef7c287b5810941ba5a62690f8", "0x20628e27b85d3c993b33679929d2054980606bb3fc6fd1aa6ccc9fd84b3c0ec9", "0x03edc5ff26b3b5c35f28d1f3e28a4bf9f3c11b63de1d58631d994d7214a78f45", "0x06eaa868b905438cd0bf4a81004cb2be3cf46c2659bbb6dc679eb9c05fdba2bd"], ["0x087bb45e7e1211900b78c5a2b6087959b9aa938c9d88e79f770627136003f1c5", "0x240d43a03ec5061c5c9c0813be789629d61109a696a62bb99054e22c67c607f3", "0x178716e727f47ff8c0389e416cfe1b90ce9027b1ec3b178c0c2d7bf68c04eff5", "0x03beeceb0c4ecd13846ecd8df9b8af45e79a91b5d28aece180996b9e10e54dc4"], ["0x0e531c54d0c4cbd454440a2ab79ef78e5a87f07c48a9adcbdf832892e730809b", "0x24d81c8df76e528d29de20fef6dcc0af05509eac88f97c2ebbcbea53bfcc2b9b", "0x238f4ea0e40bae3964f04a2a68af661e9aee604abd709d55242ed7667a64c9fc", "0x0a60c3bf3c06b29819073a34f49fd09a95f03029d155ccc5c1a30c93d18fdfaa"], ["0x12b62126c29dcf6b48c47056cd62b37af58abbf9f820cae5868bc17393e015e7", "0x2d9119ff604658073084c7cfb84b8be341c70a140eaadb9e638fa857e33a0f99", "0x2d77473af63245f73ab98c15ed4495e9a5102fa13c9175c3f71f60d96fc6cf46", "0x28447624369b6c02be46c688016517ce21dbe7019e2c1ef75db45d9ae503607f"], ["0x20cda6c60afa4689387c5c6ff0bcc5f96668b54af4371cc851b2064ae6096e70", "0x2253e521e08dcd14f6059c0af0a3d52eb7a4306244cde1937a907af8df4aa6c8", "0x249fa0b8353591e04e47505e6d6b3b78e271483cfee891299207338f9a0172c4", "0x1aac696a382b516ead0190ee4c70e95c9928d01a4779e9a1a9a2b1a42c3e4857"], ["0x18e72dcde5ebb8c18f1384edbeeb284e8aa7b55c5a027c5504e62645b2221859", "0x02ff99a2d6c83b88f36d84504f213aa43ae6f5f1c456a9ce8fc01c1406bf1e37", "0x0703f9887adf2d3affdc0fb7aaffb9e26a3f28a91d4d120e0e38cd5f94f0d88b", "0x167f0ff729f26789a2e613e1a25beda89f0c8c08df42b75e16e9580699b08e59"], ["0x003b58eee8c62d4d70195615e84ed72c7b165e0d33fc54e89cd2679d9eaa3a18", "0x2699a9feaa2c33673c3150f56ef15575bb2230c11e98002d19331e0df6faa947", "0x256b26875d8f57f1d931f7145335af146db19fc0bdf5c2d0412768d99a1d2240", "0x2e19f831093dd129acbcf048a36788475bca22b85975f04a766b7a86e5619a42"], ["0x073050869a621b7bd4ff2994e27777d98dede1efe306e30502800561733886d5", "0x301771de9d9f0e4551b965d915b63cf972e098ac7485be610101f4318c132af5", "0x06f61a75c49e58952a227e729e8bb7896966440e54d77a1c09787ec2df54e283", "0x2d6e00a7c21fb0ee1384c047b3596c6f90bb6b80d3bd0db2bf22e4c088eb0b94"], ["0x18cf0b3a7197809bd0f8d16f874709113a06bba41abfe0969497bd8886eaae23", "0x0e9455da71a6cb0bcec23ad86049c42a83be9d4345670a0a4b7867fdae7ed881", "0x2e4e969e97187dd8bb1e9d85adb53bd80876ee41e2175ebb9d2189a9809a3ce0", "0x0e72231fd0b9993e6339825a960d9e15d01cf395e8c77cc4d2dee6d69dcb4918"], ["0x1f5f7de52a340023ec23c1c6fc5eb175cc36b9d0625cb43cbb3f6c716d92e66c", "0x0b87c8a495cb4bcfd12977fc116921b1526caa34899b6d8e58e1ae2e251e74a9", "0x0d29d82c2efe8f29537a93742485a3670799a4fb5cc051d79bad08a5d15d2a1e", "0x1578608531a1c38fcfb9e966aa030628bfbae53ac5b0d3dcdc65d316a56c298a"], ["0x1561cf3bbe92124bf8c10029c23a5f65965c4d0339eb4be02e6b4cfe64581ff5", "0x07f6a08aa7260844144c94793acc44f8c721c7260ce6441aba30773244560cef", "0x113148e2a13cfe9fdeddb43e14cf79c39e53a916b488996b8a0cee95322b3d36", "0x0100cf3e852acbf6c5e72109ed48f80fbbb5946a0beb8b72a82c0bd6ef6a3992"], ["0x03bab889122a1a63b239063f45765efc8eb4432badcfa351059440204590bc71", "0x0f5b154715228a1f597cee92f7420245a13ef700aa9cd2b47347d19a3d933b91", "0x2a0897eed6208018b6f290fea5ef16c6750df1ca189b66920f45fead701ebb11", "0x28378628158a4b21653d50d8588d9a1ab30bd90e418cd13e8270f184461fb7c9"], ["0x017724205d1fdb1e224c1d62ca8a6b749094f319293e919a88b67471e7bdabd0", "0x201f460dde3dec47e4aeff5fca06b76de2dec3c41d3ba4eb8b446687988a0fde", "0x21adc1eb9fb19742fef763265cbd4e71bbce1193d471e6399042d17f785311c8", "0x2e4a8b2435bc1203d9c43c22697fdddef230adada4d475606914402e3dd65ed1"], ["0x0edc8e6a1a9148ae3bb8097ba353eebf73d66f71d79687bbc758f02a45649fd2", "0x2844a89978d227a7b4b7805447a878dcec0fa75193746c60fa4cb56abc9cb918", "0x2631d1a859a8d184421366a3559f63667d276c1091a6961a4e829a8fc11b1ac9", "0x196a3f5f38ca09e9124deec43a6d49dbdd292352e55cbae972acf149cf642f1a"], ["0x2cd6bbd57b46ded48af6e34bc0cb2cc4e252f057e8fe9ef2678b73a135895504", "0x2452dd77124f7c8ff90ff2bfae0f09b5762d5ff61cd8a83f420ac3e8b1a2909f", "0x08ad0ec1cb20cd102474da6bce930395928e0e135439050e10496e3594d63a05", "0x183d92e2000118fbe33ba8b083b0e4fbc8be09a0a33c505eadb3a7befe75715f"], ["0x1ba83d9159344392d4f17f8ad68c32259497bf8c2a8df6669fcfd43e5fcbc3b0", "0x18e3ea5b0bd68e53d68f04e21c6fb57372ef829692a91db5f19de6346bb283ec", "0x0fa49d6f20fe68b7e6d0cecd319c0a730b0d214878dea0ef562aec186366763b", "0x0e906750c916d7996144a62d444041c011103ca76a923a3744d5bf6b4e287f4b"], ["0x000b1a91198c694db8b414dbdeafb67486d3afa2c0394e6abff60e0746927562", "0x27fe1b4c75a9dac82c606570527b5920ce7bffae3b306ea6779ce19532c21ec5", "0x07f9829956222ccd2381cf88668710ea1235524f02e999dca1731392157cdbc6", "0x0d0f068760f21a9794c6cc90d4fe9823a52092ef4515f568e68464b258a46eb0"], ["0x20bf3ed06320ee26382b1adfdd3667ceaa035d03b7893c1dede278ebf1f96e81", "0x1b8c03581a86b273ab84ad938ea7042452d03ffd5b68e0da6da1a90471ef9d50", "0x07bca100b64374003b625623176e4fe184693ed7e14a10bd176ef3bc50a217fe", "0x1ca3a1df1ef188782da268627dc9d4e3f858f204251495b62f79b76365e7c26d"], ["0x0c4c30343cf2771682bcbe7845702b04f490d8b9a1a35a2c88939be3b6c4a3d1", "0x04cff500129faa96e09ee211ab64d18891facd5a910dfd29852c287d08956bda", "0x30333ee3ec227760f97e4a8bfdfd2d5664e21598576441fbe715eede77bfc714", "0x0403bf872d17cabee103042e7a6c13de774d766bde0ef829cf2e806a3ec54ba9"], ["0x2fb9efbb218191655fbfd50d4f4355d14f188d672b426f311d7973d2ba2c5699", "0x2145f998769fdfb2ebf9931d86fd21f57a2b0b03e2b552ae5b5a02f46badd956", "0x0c8dca356e97e52eff724957b7d982335a17d9c88dd6087749c5b42a5d884dcb", "0x082880525191a025f3f566f1932cf72fe8e9c43d1bdca2b1e3130dd40eaf8041"], ["0x013295dc6ca5a2a7f25496a21458acfd19c8f17865250c48c987bc19ce7d77c9", "0x263c2436e794f08da03d919c863206b63ef385134e59712b6eaf5f2a054f24fb", "0x23672ce99f39c9dcc9c542757abadbecc55a0adf044d8df1bbc641e185240d0c", "0x2b843a9b20c79380add0d58ed783395d186e9df18269d6dd3e76bfbc09d13b12"], ["0x09aeb6c26d738b4a58d37f26c29e57414db75a4c86d18aab25ed26ce39ff480e", "0x268ce04d9f936ac2ad0141bddbd7a01a6c57d1d0928135b6fbf1e19466e653eb", "0x046e2f72ba0f7abffc2ed8a94a110a49a7569da45a712831186def0c9ddfec83", "0x1e6b88c1396c2e28253b14af0ee0a0ca125a237aa2b932742f3301103e070588"], ["0x229dad6d2855d944d19b501820852e38efb2f7808eb95f15c9568f898f848643", "0x2354dd74f307d4ccbc0841c84fcbad19f8540bc9e2e4029b91543e45b6bab820", "0x21a76233168dc21bf4f50d06b4bd9a5a03738fd68a9b9ff38c2c6ce4dadb0a36", "0x11058234793d07cf5c955d2c7650655e84cfd977c1dc4b57a66a648f0e31239f"], ["0x1014bd40ff89667c44d8a595605b38a356df627868058a1e8af5138e3a72ab8a", "0x263c3c87ea6fd61d1342aef64433c6e4b41bbd18e5d080c368ae4a75e52294e5", "0x2f3f0598b1515936a2264142b9604aa265af34d6ca01d4f7681730e3596de282", "0x259d2cc2070ef1e119dd360cff634596dcec0eac491255b179e3f60f061851ed"], ["0x08c0faa717e61123d4a3ad0db6393d1ed693d9cf00dad4abc4b6142ccf0ab8c1", "0x00ea39a2eb2110e5d35078254e1f78ad0264536724a138c73dc1ad82baddc9b0", "0x088ea7cd57f54ec021ab9ec44eded1ebf632074a263a4582e0eb9c3a8d61015d", "0x13781090eefc71f8866014f596ce8b19ca2c1bec14b0febae94afaefa61abcda"], ["0x1de326c668b974416df94eb1cbd52ca3382d01b2a99f5c7a66f02a06bd914e5b", "0x012f770fb714ee936301fa5985fa455a9515b4a3653d4704c565c065550eba73", "0x1905966363ee081741d42c57e6e32d1edaf66dbe7ad2ef5209d93f22cc5bea26", "0x2e231d8a973b5e1aaa031bcad78d78422a554a9b222260a298f5c9cadc28f055"], ["0x0d658d1c02a33baf64772aeb4d742bea4ee1cf48927bdbab7aefe0305b429882", "0x091189aa1b18d2b9630fae7d78b8f35521f363cdf2156e7205028d4382bcf21c", "0x060e9aa7379aee6e8237e4ac4667dbc0b4ab21474f3917098f3668320ebac4ca", "0x18a4babbb5a29f0c9c7a3103d0a6ae74c0f200f94f8c3fafa555d414221810cc"], ["0x25829e78bca68b27ccbd50b939663bb824ddc769b5ade103f47981d498e611f4", "0x04be4e130ee5c50b67008ee822e749b1ebfbd27e4e130ae4e057b5c3ca3af1e2", "0x1e58e9fb6e34e85f07ece0f0291a1146aafcee7cadb5f5d07afed0be5083414c", "0x1cd9b82db8bef6e9d9723cc08f091c05d12c5ac53b34338d410f64b121248f24"], ["0x00438514138dd94466d1eeaf5c3a37dd328d4d6c53f0dd840098d389cc3b9935", "0x0f1ddababb76186f73ace58bbad9f04f03f7cef79a0ca8cfc351f75538e03d34", "0x161496532a6013a097eadff233e5b1e991c714e10ce30f225fbf067600857fe2", "0x2b7647dba6bd214bdc9cad774707a3412f95a42d0a0909203f01582011e108f7"], ["0x14b2078c71e734a5453dffae534e839ae093a2f76fd7000850026c74eb88aaf9", "0x112d8e93712df54fbfdb32e28accf835b98e1c977f356a83f6cc8d2d6aa8b35d", "0x105d39db1fb96a2dd632c5a324b7b0bb5e408c1058629b56a83e9e0670141f26", "0x03b5e2b56aa8bb807f06206990bd057261fbdc92dd77c9c94794191fe6191296"], ["0x094314f054c74804985dc9abe471453c606b4d61713ceab1d91b733ff2620f73", "0x04d1a25ea657a35d3ee8310f9e89eb616761e683967132016c869ee7c9d952f1", "0x2742d4264abd9ccf915df77546f58ad148e4ad5bc85dd378f059de5f777bf0a8", "0x14211b61db9ec1a196eb5aa943d825e7518df61acb0da88daaae42c38687ed9d"], ["0x07d58315572a13d53dde17de6c036c1db1fd2d617d6624c0ab8cf52c7d86ceeb", "0x28ce6b9b39f8f8bb56b83d695c781c0f384861615cfcfc6cba9cdc628ddf4379", "0x1a2f86f697642ad7344423e3c3b804a537029e0d6b35ad71159501d7abd1ddca", "0x19508c062e87866acf7ae4538a813ec72aa46cd2418773e21f1f4357c68aa64e"], ["0x151f175740db13dd04cf0dc5b7c31d7a63c62658d6c271b39e45ca4203a83717", "0x179f6ef310d00351671bd2d45694a4e4ecb6d851013093a1d71aea902bbf0fe0", "0x23bb58e43cc3aab0d9551d8a3aaa738e7dbfe18ecdf9e1547d9ebba7eb857b00", "0x12808109138b430f3c95babedcc06d9405f733e99e59555f269bbe362cf02d05"], ["0x29f9bccf95a239e904d930143e30814c2da6c54488e041281878c0dddc4d80a9", "0x0417e51dc9a2edb93d4178283281bb61cbcd1dd18664480db42aa7d0ea775e9f", "0x253d9a0c2778726fec94ab4fc9fbb366925f5e4b743f3f0dfba6f8bad023d597", "0x00de918bff40042413388c2fba6ef6e49981c223de46ece9deea6e9d4c05b90a"], ["0x2dc2448faa02c72ca4681d6e242b03e45f6d79d0b17793c06b69c8506b9ad664", "0x02730f6dfe24f3dbf3b546453940bee81e84857b6b6925779f5c3bfc0528ee78", "0x0b4676cf9fab73bf4888ff665c8034a4bafdb66f7f9ed7a9b869d81d8f1c482a", "0x0dc2e27c2deb9dfd5c56dc3e5f57cb708c53aa78a05a493433c478488d36ab5d"], ["0x26c22c0079d4d6d5782764b09c498da4fbcbb82ddd7ee248b87d2253ac635e78", "0x27d24bfceaede42bb91cef44ebeca2cb713316522c820d408139cc2644449439", "0x2223371942b24e38094401ad87615b2cbff197fd6eea7f5fa03e0541d3de1c77", "0x0561f0732711c9ae78c037eb3e64737e173908f1207b7b4b43183865321d9fd3"], ["0x167b60855de3b89a296fc1b807a11fa006e07695fa029620266cb9e19d78e9d5", "0x2ea7363dac1aa94e8ac783866ec854c34659178b9cedf09261233715357fd85f", "0x28f74de7b7fa7600fcf803c6f6269d215a011fc0dc5bfc62ac5d169d7462a81f", "0x1a77c70fa8141a5fb5fa4f70059fb15a5611a28f73d20c27b965ffbd37fe8271"], ["0x0fe24a67410f52062c5357e1962148bc265ab9276805f52ec3ae0f8d5aec1d7d", "0x08499ff3e2c0646b42482a8a2158481354d619b424f1e5aa9a4e55dfad1bfcb8", "0x2fbc166d5d041d81974cf469f19515df9656698aad3dfe860bd77813e73ed75a", "0x16e1fc0d2d5ab9ffb40ead1457c6f21c1130abf2d1a5b70aae01a8c39a379bf2"]]; +let proof = "0x21af6dfb2b29dd048284622fbed6f639af85c4ac3af74cc6fb133edccfec00d221c6f12a978300d8e0940ce6a70be2a975f85f919b256cdad8af39dfbb2e5633262a511846d7c36813e8fd93ddb4d5dce0fa674ee8e0d2d8a3610dad077c2d01181ad527c13670663fbbcebc45ebbdc26db1c1b966bb2b1daa30aa0ee8822d751fe3cb769450068b2ba8b278a67219120bead661f7e1e3436d8ffb1593ae1b781b5231958b5679c3e606c0a45fed53bd238970fa2a29b3de36c66cde2387532c20dfb9e9f96a4132ff64e4be0ef0e2cd8a297b6bbfcfbf30f259f30cd09c8812199d4ef1f2eacccde0615888d5cd6ffb4e9fd7f926965b45b5374e4453c9d6a41247dbde4ccf7d6a0cab5904bdc280887fc4986effe5a7870c03b6981379cddf2ff5194c0f6051a35f261edc122ba1af871ebeb26d218a2e90f615c2476842a401860b7a14d494f3bf8a978a94e7ba33c228a557b0d8a68134104f26d7d5e28727de1aeacfd27f036a55e27671dfab0f23e91224e49e20f321f92fd71c1db14125a2d758b5904b770a04a2108882806276eb66ed53fdf447a14db947962f18e806314c0054cbc63fe7f09be1f3bb12d51f88c929d3427be228b429862d05e47a0f8a79fcf2f42dac01d6c3e2e11ebb10a7b968d4cf4381a6a8441d72e06c63c22609775b3632c585a3c8bbfc196b61c67647c8d99bf8a231b5a63631f7d6905d02b8058ed98e7ced80a197584deeaaa7eec71faae86597c8af28b89881f2ae48291b2a2910c5fdc55d8c3b32550c2c8b2521b79b2b8d1c72fd7944fae406fbd41161395eb22165021abe8a2de678ef762fe7472c2b2ca2ddd1c56a1d3ce96e5f0341908e5e60235f35d9c2878b5a85f3cab9a47b995e9fe2d620347757550e2826a62781769705aab2bb43d8f48caa9e240c139e42f19e09e975ae2dfff14ea402b2d60620ef454df798f75c774d8d0c600c7971d26fb8bfe1c3ac3c70b1518e07369abc80f24fa43eb0cd727dfeb447951cd145783a5d5e408cc1a957d06bc200814b7b560ff68b446ed771ce0e546a99cf90c4b986e092cbce62274f2daed52ba401a4998506c297994222b1c7ef46710b478716e12826a554d9135e77bba811c97422c9d6ffcd0840142b31aeefbf4606ac82ef0c1de3c92a80ade977827c042be1d2b71bc6a26cb562c2cab235e3151a6f558f8b2a3c36057e7ca156c0d01ab71f936dadda8d07b3b6097ef7897a8dc8ced1b3ca389f80226e150ed81c89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2826784994700a83b1fd1fa9305a2c94a5ee07b574dd147ff33734940a8e501f9d4b0a044a12a4d54c67f95c82df26a305ae34db93df5bb31a9aff16eab4e7168608c85a0739677a84d3e7a3d349e896d7ebb8e187f6fec0e56cacaef1e42b2f9f9b42d8c4ad7d9218ceea187ea44b9345d9807d1f939e01de2629345f4b6123b3e1d44a95d45af0db23379a5ce4a6fdcdbefcfb2513d0d8dcb1d74a583a371150ac2893138b7abb1988643ca711eb04bd7c70dc2d8bd1e101a44b213c10072acb4b5ac3eafa1ede3658baa7ad8630905b1835043e34ae2b2fb0443237b979071df42ff1c3de6c8cf3fb0b60d5686743dcd6b2ac58df7c5f5673f73e0f8f5f02f3105b4dd216e35906b92cd7c739246fa224ef45e9f6f6deb8c7243a8516611747e2abebd7d76b038e28b23ee4fa32ce6339ee16e56aeeb35b9c071966d51118e9944866ed2f38e0ba90110f95bce39e7302aa1ada45818cbdece24b11f5e116122ccb089124bcbd7bf17c3b4204235cd82c4fac82504312398d1fa3e379921f5183d00b4118efc35ac57f8c9f7c19b3715413cc55164ff38c772279bcfe8204be58add7c374b7eb036b2dedcfe8c3888bd3bddc794e668d375d173668b3c70024d6e637cac554d85b090ea92e72dd0e47168df6ec9ba2ca977541266e63790709851223f603e57004bbaa63fa4299b8a5bd38de3a10cbc0f363d993c9262f11fb8ebb31fccbc5dd56cba701b2f503edddc15f4ac9e8a128850f2674996e1516f80de5d724d914fdfeabb137a9468b4ce430fee114998254d6021eeef132832554ddf326c8f2c92f0ec1100497347f47adcf0656e2dcb531736e6ebd136ddc0a0080e1787b638b7d08d552830d4357b7535db7e91f431f3e29817611a92e42119f44a6b76a48d73ee79f5bcd5420a2d1a6eff6e0f7bb2a5a491367727adbf4"; + +ret = wasm.plonk_verify_shuffle(verifier_params, inputs, outputs, proof); +console.log(ret) +``` ## C SDK