From 663ca29a5d306c28321ba9eb83286df496e1deb7 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Fri, 14 Mar 2025 08:36:27 +1000 Subject: [PATCH] Split out tests: random, wolfmath, public key Improved testing of random APIs. wolfmath tests moved out. Public key algorithm testing moved out: RSA, DSA, DH, ECC, SM2, Curve25519, Ed25519, Curve448, Ed448, ML-DSA. Signature API tests moved out. Fix for OCSP testing to ensure RSA is available. Added group names to API test cases. Can select groups to run with --group . --groups lists all known group names. Added option to stop API testing on first failure: --stopOnFail. --- CMakeLists.txt | 13 + tests/api.c | 23549 +-------------------------- tests/api/api.h | 161 + tests/api/api_decl.h | 38 + tests/api/include.am | 31 +- tests/api/test_aes.h | 31 +- tests/api/test_arc4.h | 6 + tests/api/test_ascon.h | 6 + tests/api/test_blake2.h | 18 + tests/api/test_camellia.h | 8 + tests/api/test_chacha.h | 6 + tests/api/test_chacha20_poly1305.h | 5 + tests/api/test_cmac.h | 8 + tests/api/test_curve25519.c | 557 + tests/api/test_curve25519.h | 52 + tests/api/test_curve448.c | 407 + tests/api/test_curve448.h | 50 + tests/api/test_des3.h | 8 + tests/api/test_dh.c | 84 + tests/api/test_dh.h | 32 + tests/api/test_digest.h | 16 - tests/api/test_dsa.c | 587 + tests/api/test_dsa.h | 50 + tests/api/test_ecc.c | 1872 +++ tests/api/test_ecc.h | 100 + tests/api/test_ed25519.c | 605 + tests/api/test_ed25519.h | 52 + tests/api/test_ed448.c | 539 + tests/api/test_ed448.h | 52 + tests/api/test_hash.h | 16 + tests/api/test_hmac.h | 19 + tests/api/test_md2.h | 10 + tests/api/test_md4.h | 9 + tests/api/test_md5.h | 13 + tests/api/test_mldsa.c | 16668 +++++++++++++++++++ tests/api/test_mldsa.h | 52 + tests/api/test_mlkem.h | 7 + tests/api/test_ocsp.c | 10 +- tests/api/test_poly1305.h | 5 + tests/api/test_random.c | 535 + tests/api/test_random.h | 52 + tests/api/test_rc2.h | 8 + tests/api/test_ripemd.h | 10 + tests/api/test_rsa.c | 1097 ++ tests/api/test_rsa.h | 66 + tests/api/test_sha.h | 14 + tests/api/test_sha256.h | 24 + tests/api/test_sha3.h | 39 + tests/api/test_sha512.h | 49 + tests/api/test_signature.c | 157 + tests/api/test_signature.h | 34 + tests/api/test_sm2.c | 657 + tests/api/test_sm2.h | 44 + tests/api/test_sm3.h | 13 + tests/api/test_sm4.h | 10 + tests/api/test_wc_encrypt.h | 5 + tests/api/test_wolfmath.c | 204 + tests/api/test_wolfmath.h | 42 + tests/unit.c | 42 +- tests/unit.h | 3 + wolfcrypt/test/test.c | 2 + 61 files changed, 25433 insertions(+), 23426 deletions(-) create mode 100644 tests/api/api_decl.h create mode 100644 tests/api/test_curve25519.c create mode 100644 tests/api/test_curve25519.h create mode 100644 tests/api/test_curve448.c create mode 100644 tests/api/test_curve448.h create mode 100644 tests/api/test_dh.c create mode 100644 tests/api/test_dh.h create mode 100644 tests/api/test_dsa.c create mode 100644 tests/api/test_dsa.h create mode 100644 tests/api/test_ecc.c create mode 100644 tests/api/test_ecc.h create mode 100644 tests/api/test_ed25519.c create mode 100644 tests/api/test_ed25519.h create mode 100644 tests/api/test_ed448.c create mode 100644 tests/api/test_ed448.h create mode 100644 tests/api/test_mldsa.c create mode 100644 tests/api/test_mldsa.h create mode 100644 tests/api/test_random.c create mode 100644 tests/api/test_random.h create mode 100644 tests/api/test_rsa.c create mode 100644 tests/api/test_rsa.h create mode 100644 tests/api/test_signature.c create mode 100644 tests/api/test_signature.h create mode 100644 tests/api/test_sm2.c create mode 100644 tests/api/test_sm2.h create mode 100644 tests/api/test_wolfmath.c create mode 100644 tests/api/test_wolfmath.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 87e40d469..65e4f88b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2536,7 +2536,20 @@ if(WOLFSSL_EXAMPLES) tests/api/test_ascon.c tests/api/test_sm4.c tests/api/test_wc_encrypt.c + tests/api/test_random.c + tests/api/test_wolfmath.c + tests/api/test_rsa.c + tests/api/test_dsa.c + tests/api/test_dh.c + tests/api/test_ecc.c + tests/api/test_sm2.c + tests/api/test_curve25519.c + tests/api/test_ed25519.c + tests/api/test_curve448.c + tests/api/test_ed448.c tests/api/test_mlkem.c + tests/api/test_mldsa.c + tests/api/test_signature.c tests/api/test_dtls.c tests/api/test_ocsp.c tests/api/test_evp.c diff --git a/tests/api.c b/tests/api.c index 26c97e609..239ab3e09 100644 --- a/tests/api.c +++ b/tests/api.c @@ -271,15 +271,6 @@ #include "wolfssl/internal.h" #endif -/* force enable test buffers */ -#ifndef USE_CERT_BUFFERS_2048 - #define USE_CERT_BUFFERS_2048 -#endif -#ifndef USE_CERT_BUFFERS_256 - #define USE_CERT_BUFFERS_256 -#endif -#include - /* include misc.c here regardless of NO_INLINE, because misc.c implementations * have default (hidden) visibility, and in the absence of visibility, it's * benign to mask out the library implementation. @@ -288,6 +279,7 @@ #include #include +#include /* Gather test declarations to include them in the testCases array */ #include @@ -314,7 +306,20 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include @@ -338,12 +343,6 @@ #define HAVE_CERT_CHAIN_VALIDATION #endif -#ifndef WOLFSSL_HAVE_ECC_KEY_GET_PRIV - /* FIPS build has replaced ecc.h. */ - #define wc_ecc_key_get_priv(key) (&((key)->k)) - #define WOLFSSL_HAVE_ECC_KEY_GET_PRIV -#endif - #if defined(WOLFSSL_STATIC_MEMORY) && !defined(WOLFCRYPT_ONLY) #if (defined(HAVE_ECC) && !defined(ALT_ECC_SIZE)) || defined(SESSION_CERTS) #ifdef OPENSSL_EXTRA @@ -356,100 +355,6 @@ #endif #endif -#ifdef HAVE_ECC - #ifndef ECC_ASN963_MAX_BUF_SZ - #define ECC_ASN963_MAX_BUF_SZ 133 - #endif - #ifndef ECC_PRIV_KEY_BUF - #define ECC_PRIV_KEY_BUF 66 /* For non user defined curves. */ - #endif - /* ecc key sizes: 14, 16, 20, 24, 28, 30, 32, 40, 48, 64 */ - /* logic to choose right key ECC size */ - #if (defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 112 - #define KEY14 14 - #else - #define KEY14 32 - #endif - #if (defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 128 - #define KEY16 16 - #else - #define KEY16 32 - #endif - #if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160 - #define KEY20 20 - #else - #define KEY20 32 - #endif - #if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192 - #define KEY24 24 - #else - #define KEY24 32 - #endif - #if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES) - #define KEY28 28 - #else - #define KEY28 32 - #endif - #if defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES) - #define KEY30 30 - #else - #define KEY30 32 - #endif - #define KEY32 32 - #if defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES) - #define KEY40 40 - #else - #define KEY40 32 - #endif - #if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES) - #define KEY48 48 - #else - #define KEY48 32 - #endif - #if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES) - #define KEY64 64 - #else - #define KEY64 32 - #endif - - #if !defined(HAVE_COMP_KEY) - #if !defined(NOCOMP) - #define NOCOMP 0 - #endif - #else - #if !defined(COMP) - #define COMP 1 - #endif - #endif - #if !defined(DER_SZ) - #define DER_SZ(ks) ((ks) * 2 + 1) - #endif -#endif /* HAVE_ECC */ - -#ifndef NO_DSA - #ifndef DSA_SIG_SIZE - #define DSA_SIG_SIZE 40 - #endif - #ifndef MAX_DSA_PARAM_SIZE - #define MAX_DSA_PARAM_SIZE 256 - #endif -#endif - -#ifndef NO_RSA - #define GEN_BUF 294 -#endif - -#ifndef ONEK_BUF - #define ONEK_BUF 1024 -#endif -#ifndef TWOK_BUF - #define TWOK_BUF 2048 -#endif -#ifndef FOURK_BUF - #define FOURK_BUF 4096 -#endif - - #if defined(HAVE_PKCS7) typedef struct { const byte* content; @@ -486,17 +391,6 @@ int tmpDirNameSet = 0; | Constants *----------------------------------------------------------------------------*/ -#ifndef NO_RSA -#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) -#define TEST_RSA_BITS 1024 -#else -#define TEST_RSA_BITS 2048 -#endif -#define TEST_RSA_BYTES (TEST_RSA_BITS/8) -#endif /* !NO_RSA */ - #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) && !defined(NO_TLS) && \ (!defined(NO_WOLFSSL_SERVER) || !defined(NO_WOLFSSL_CLIENT)) static const char* bogusFile = @@ -14610,416 +14504,6 @@ static int test_wolfSSL_mcast(void) | Wolfcrypt *----------------------------------------------------------------------------*/ -/* - * Testing wc_Init RsaKey() - */ -static int test_wc_InitRsaKey(void) -{ - EXPECT_DECLS; -#ifndef NO_RSA - RsaKey key; - - XMEMSET(&key, 0, sizeof(RsaKey)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_InitRsaKey(NULL, HEAP_HINT), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_InitRsaKey */ - - -/* - * Testing wc_RsaPrivateKeyDecode() - */ -static int test_wc_RsaPrivateKeyDecode(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024)\ - || defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) - RsaKey key; - byte* tmp = NULL; - word32 idx = 0; - int bytes = 0; - - XMEMSET(&key, 0, sizeof(RsaKey)); - - ExpectNotNull(tmp = (byte*)XMALLOC(FOURK_BUF, NULL, - DYNAMIC_TYPE_TMP_BUFFER)); - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - if (tmp != NULL) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024); - bytes = sizeof_client_key_der_1024; - #else - XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048); - bytes = sizeof_client_key_der_2048; - #endif /* Use cert buffers. */ - } - - ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaPrivateKeyDecode */ - -/* - * Testing wc_RsaPublicKeyDecode() - */ -static int test_wc_RsaPublicKeyDecode(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024)\ - || defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) - RsaKey keyPub; - byte* tmp = NULL; - word32 idx = 0; - int bytes = 0; - word32 keySz = 0; - word32 tstKeySz = 0; -#if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) - XFILE f = XBADFILE; - const char* rsaPssPubKey = "./certs/rsapss/ca-rsapss-key.der"; - const char* rsaPssPubKeyNoParams = "./certs/rsapss/ca-3072-rsapss-key.der"; - byte buf[4096]; -#endif - - XMEMSET(&keyPub, 0, sizeof(RsaKey)); - - ExpectNotNull(tmp = (byte*)XMALLOC(GEN_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER)); - ExpectIntEQ(wc_InitRsaKey(&keyPub, HEAP_HINT), 0); - if (tmp != NULL) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_keypub_der_1024, sizeof_client_keypub_der_1024); - bytes = sizeof_client_keypub_der_1024; - keySz = 1024; - #else - XMEMCPY(tmp, client_keypub_der_2048, sizeof_client_keypub_der_2048); - bytes = sizeof_client_keypub_der_2048; - keySz = 2048; - #endif - } - - ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, &keyPub, (word32)bytes), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRsaKey(&keyPub), 0); - - /* Test for getting modulus key size */ - idx = 0; - ExpectIntEQ(wc_RsaPublicKeyDecode_ex(tmp, &idx, (word32)bytes, NULL, - &tstKeySz, NULL, NULL), 0); - ExpectIntEQ(tstKeySz, keySz/8); - -#if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) - ExpectTrue((f = XFOPEN(rsaPssPubKey, "rb")) != XBADFILE); - ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); - if (f != XBADFILE) { - XFCLOSE(f); - f = XBADFILE; - } - idx = 0; - ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, (word32)bytes, NULL, NULL, NULL, - NULL), 0); - ExpectTrue((f = XFOPEN(rsaPssPubKeyNoParams, "rb")) != XBADFILE); - ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); - if (f != XBADFILE) - XFCLOSE(f); - idx = 0; - ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, (word32)bytes, NULL, NULL, NULL, - NULL), 0); -#endif - - XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaPublicKeyDecode */ - -/* - * Testing wc_RsaPublicKeyDecodeRaw() - */ -static int test_wc_RsaPublicKeyDecodeRaw(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) - RsaKey key; - const byte n = 0x23; - const byte e = 0x03; - word32 nSz = sizeof(n); - word32 eSz = sizeof(e); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, &key), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaPublicKeyDecodeRaw */ - - -/* - * Testing wc_RsaPrivateKeyDecodeRaw() - */ -static int test_wc_RsaPrivateKeyDecodeRaw(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) \ - && !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) - RsaKey key; - const byte n = 33; - const byte e = 3; - const byte d = 7; - const byte u = 2; - const byte p = 3; - const byte q = 11; - const byte dp = 1; - const byte dq = 7; - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), NULL, 0, - NULL, 0, &key), 0); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - NULL, 0, &key), 0); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), NULL, 0, - &dq, sizeof(dq), &key), 0); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(NULL, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, 0, - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - NULL, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, 0, &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), NULL, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, 0, &u, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - NULL, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, 0, &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), NULL, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), - &p, sizeof(p), &q, 0, &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM) - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, 0, - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), NULL, sizeof(u), - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), - &e, sizeof(e), &d, sizeof(d), &u, 0, - &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), - &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaPrivateKeyDecodeRaw */ - - -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - /* In FIPS builds, wc_MakeRsaKey() will return an error if it cannot find - * a probable prime in 5*(modLen/2) attempts. In non-FIPS builds, it keeps - * trying until it gets a probable prime. */ - #ifdef HAVE_FIPS - static int MakeRsaKeyRetry(RsaKey* key, int size, long e, WC_RNG* rng) - { - int ret; - - for (;;) { - ret = wc_MakeRsaKey(key, size, e, rng); - if (ret != WC_NO_ERR_TRACE(PRIME_GEN_E)) break; - fprintf(stderr, "MakeRsaKey couldn't find prime; " - "trying again.\n"); - } - - return ret; - } - #define MAKE_RSA_KEY(a, b, c, d) MakeRsaKeyRetry(a, b, c, d) - #else - #define MAKE_RSA_KEY(a, b, c, d) wc_MakeRsaKey(a, b, c, d) - #endif -#endif - - -/* - * Testing wc_MakeRsaKey() - */ -static int test_wc_MakeRsaKey(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - - RsaKey genKey; - WC_RNG rng; -#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) - int bits = 1024; -#else - int bits = 2048; -#endif - - XMEMSET(&genKey, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); - DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); - - /* Test bad args. */ - ExpectIntEQ(MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* e < 3 */ - ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 2, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* e & 1 == 0 */ - ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 6, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_MakeRsaKey */ - -/* - * Test the bounds checking on the cipher text versus the key modulus. - * 1. Make a new RSA key. - * 2. Set c to 1. - * 3. Decrypt c into k. (error) - * 4. Copy the key modulus to c and sub 1 from the copy. - * 5. Decrypt c into k. (error) - * Valid bounds test cases are covered by all the other RSA tests. - */ -static int test_RsaDecryptBoundsCheck(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WC_RSA_NO_PADDING) && \ - (defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048)) && \ - defined(WOLFSSL_PUBLIC_MP) && !defined(NO_RSA_BOUNDS_CHECK) - WC_RNG rng; - RsaKey key; - byte flatC[256]; - word32 flatCSz = 0; - byte out[256]; - word32 outSz = sizeof(out); - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - if (EXPECT_SUCCESS()) { - const byte* derKey; - word32 derKeySz; - word32 idx = 0; - - #ifdef USE_CERT_BUFFERS_1024 - derKey = server_key_der_1024; - derKeySz = (word32)sizeof_server_key_der_1024; - flatCSz = 128; - #else - derKey = server_key_der_2048; - derKeySz = (word32)sizeof_server_key_der_2048; - flatCSz = 256; - #endif - - ExpectIntEQ(wc_RsaPrivateKeyDecode(derKey, &idx, &key, derKeySz), 0); - } - - if (EXPECT_SUCCESS()) { - XMEMSET(flatC, 0, flatCSz); - flatC[flatCSz-1] = 1; - - ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, - RSA_PRIVATE_DECRYPT, &rng), WC_NO_ERR_TRACE(RSA_OUT_OF_RANGE_E)); - if (EXPECT_SUCCESS()) { - mp_int c; - ExpectIntEQ(mp_init_copy(&c, &key.n), 0); - ExpectIntEQ(mp_sub_d(&c, 1, &c), 0); - ExpectIntEQ(mp_to_unsigned_bin(&c, flatC), 0); - ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, - RSA_PRIVATE_DECRYPT, NULL), WC_NO_ERR_TRACE(RSA_OUT_OF_RANGE_E)); - mp_clear(&c); - } - } - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaDecryptBoundsCheck */ - /* * Testing wc_SetKeyUsage() */ @@ -15048,228 +14532,6 @@ static int test_wc_SetKeyUsage(void) return EXPECT_RESULT(); } /* END test_wc_SetKeyUsage */ -/* - * Testing wc_CheckProbablePrime() - */ -static int test_wc_CheckProbablePrime(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) -#define CHECK_PROBABLE_PRIME_KEY_BITS 2048 - RsaKey key; - WC_RNG rng; - byte e[3]; - word32 eSz = (word32)sizeof(e); - byte n[CHECK_PROBABLE_PRIME_KEY_BITS / 8]; - word32 nSz = (word32)sizeof(n); - byte d[CHECK_PROBABLE_PRIME_KEY_BITS / 8]; - word32 dSz = (word32)sizeof(d); - byte p[CHECK_PROBABLE_PRIME_KEY_BITS / 8 / 2]; - word32 pSz = (word32)sizeof(p); - byte q[CHECK_PROBABLE_PRIME_KEY_BITS / 8 / 2]; - word32 qSz = (word32)sizeof(q); - int nlen = CHECK_PROBABLE_PRIME_KEY_BITS; - int* isPrime; - int test[5]; - isPrime = test; - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); - ExpectIntEQ(wc_MakeRsaKey(&key, CHECK_PROBABLE_PRIME_KEY_BITS, - WC_RSA_EXPONENT, &rng), 0); - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_RsaExportKey(&key, e, &eSz, n, &nSz, d, &dSz, p, &pSz, q, - &qSz), 0); - PRIVATE_KEY_LOCK(); - - /* Bad cases */ - ExpectIntEQ(wc_CheckProbablePrime(NULL, pSz, q, qSz, e, eSz, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(p, 0, q, qSz, e, eSz, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(p, pSz, NULL, qSz, e, eSz, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, 0, e, eSz, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, NULL, eSz, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, 0, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_CheckProbablePrime(NULL, 0, NULL, 0, NULL, 0, nlen, isPrime), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Good case */ - ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, eSz, nlen, isPrime), - 0); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - wc_FreeRng(&rng); -#undef CHECK_PROBABLE_PRIME_KEY_BITS -#endif - return EXPECT_RESULT(); -} /* END test_wc_CheckProbablePrime */ -/* - * Testing wc_RsaPSS_Verify() - */ -static int test_wc_RsaPSS_Verify(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) - RsaKey key; - WC_RNG rng; - int sz = 256; - const char* szMessage = "This is the string to be signed"; - unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ - unsigned char pDecrypted[2048/8]; - byte* pt = pDecrypted; - word32 outLen = sizeof(pDecrypted); - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); - ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); - - ExpectIntGT(sz = wc_RsaPSS_Sign((byte*)szMessage, - (word32)XSTRLEN(szMessage)+1, pSignature, sizeof(pSignature), - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - - /* Bad cases */ - ExpectIntEQ(wc_RsaPSS_Verify(NULL, (word32)sz, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_Verify(pSignature, 0, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_Verify(pSignature, (word32)sz, NULL, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_Verify(NULL, 0, NULL, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Good case */ - ExpectIntGT(wc_RsaPSS_Verify(pSignature, (word32)sz, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - wc_FreeRng(&rng); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaPSS_Verify */ -/* - * Testing wc_RsaPSS_VerifyCheck() - */ -static int test_wc_RsaPSS_VerifyCheck(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) - RsaKey key; - WC_RNG rng; - int sz = 256; /* 2048/8 */ - byte digest[32]; - word32 digestSz = sizeof(digest); - unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ - word32 pSignatureSz = sizeof(pSignature); - unsigned char pDecrypted[2048/8]; - byte* pt = pDecrypted; - word32 outLen = sizeof(pDecrypted); - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - XMEMSET(digest, 0, sizeof(digest)); - XMEMSET(pSignature, 0, sizeof(pSignature)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); - ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); - ExpectTrue((digestSz = (word32)wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > 0); - ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, (word32)sz, digest, digestSz), - 0); - - ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, pSignatureSz, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - - /* Bad cases */ - ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, (word32)sz, pt, outLen, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, 0, pt, outLen, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, (word32)sz, NULL, outLen, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, 0, NULL, outLen, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Good case */ - ExpectIntGT(wc_RsaPSS_VerifyCheck(pSignature, (word32)sz, pt, outLen, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); - - ExpectIntEQ(wc_FreeRsaKey(&key), 0); - wc_FreeRng(&rng); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaPSS_VerifyCheck */ -/* - * Testing wc_RsaPSS_VerifyCheckInline() - */ -static int test_wc_RsaPSS_VerifyCheckInline(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) - RsaKey key; - WC_RNG rng; - int sz = 256; - byte digest[32]; - word32 digestSz = sizeof(digest); - unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ - unsigned char pDecrypted[2048/8]; - byte* pt = pDecrypted; - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - XMEMSET(digest, 0, sizeof(digest)); - XMEMSET(pSignature, 0, sizeof(pSignature)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); - ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); - ExpectTrue((digestSz = (word32)wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > 0); - ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, (word32)sz, digest, digestSz), - 0); - - ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, - sizeof(pSignature), WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - - /* Bad Cases */ - ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, (word32)sz, &pt, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, 0, NULL, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, 0, &pt, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, (word32)sz, &pt, digest, - digestSz, WC_HASH_TYPE_SHA, WC_MGF1SHA256, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Good case */ - ExpectIntGT(wc_RsaPSS_VerifyCheckInline(pSignature, (word32)sz, &pt, digest, - digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - wc_FreeRng(&rng); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaPSS_VerifyCheckInline */ - #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) static void sample_mutex_cb (int flag, int type, const char* file, int line) { @@ -15313,4794 +14575,6 @@ static int test_wc_SetMutexCb(void) return EXPECT_RESULT(); } /* End test_wc_SetMutexCb*/ -/* - * Testing wc_RsaKeyToDer() - */ -static int test_wc_RsaKeyToDer(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey genKey; - WC_RNG rng; - byte* der = NULL; -#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) - int bits = 1024; - word32 derSz = 611; - /* (2 x 128) + 2 (possible leading 00) + (5 x 64) + 5 (possible leading 00) - + 3 (e) + 8 (ASN tag) + 10 (ASN length) + 4 seqSz + 3 version */ -#else - int bits = 2048; - word32 derSz = 1196; - /* (2 x 256) + 2 (possible leading 00) + (5 x 128) + 5 (possible leading 00) - + 3 (e) + 8 (ASN tag) + 17 (ASN length) + 4 seqSz + 3 version */ -#endif - - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&genKey, 0, sizeof(genKey)); - - ExpectNotNull(der = (byte*)XMALLOC(derSz, NULL, DYNAMIC_TYPE_TMP_BUFFER)); - /* Init structures. */ - ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - /* Make key. */ - ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); - - ExpectIntGT(wc_RsaKeyToDer(&genKey, der, derSz), 0); - - /* Pass good/bad args. */ - ExpectIntEQ(wc_RsaKeyToDer(NULL, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* Get just the output length */ - ExpectIntGT(wc_RsaKeyToDer(&genKey, NULL, 0), 0); - /* Try Public Key. */ - genKey.type = 0; - ExpectIntEQ(wc_RsaKeyToDer(&genKey, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - #ifdef WOLFSSL_CHECK_MEM_ZERO - /* Put back to Private Key */ - genKey.type = 1; - #endif - - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_RsaKeyToDer */ - -/* - * Testing wc_RsaKeyToPublicDer() - */ -static int test_wc_RsaKeyToPublicDer(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - byte* der = NULL; -#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) - int bits = 1024; - word32 derLen = 162; -#else - int bits = 2048; - word32 derLen = 294; -#endif - int ret = 0; - - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - - ExpectNotNull(der = (byte*)XMALLOC(derLen, NULL, DYNAMIC_TYPE_TMP_BUFFER)); - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - - /* test getting size only */ - ExpectIntGT(wc_RsaKeyToPublicDer(&key, NULL, derLen), 0); - ExpectIntGT(wc_RsaKeyToPublicDer(&key, der, derLen), 0); - - /* test getting size only */ - ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, NULL, derLen, 0), 0); - ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, der, derLen, 0), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_RsaKeyToPublicDer(NULL, der, derLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntLT(ret = wc_RsaKeyToPublicDer(&key, der, -1), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(BUFFER_E)) || (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); - - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaKeyToPublicDer */ - -/* - * Testing wc_RsaPublicEncrypt() and wc_RsaPrivateDecrypt() - */ -static int test_wc_RsaPublicEncryptDecrypt(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - const char inStr[] = TEST_STRING; - const word32 plainLen = (word32)TEST_STRING_SZ; - const word32 inLen = (word32)TEST_STRING_SZ; - int bits = TEST_RSA_BITS; - const word32 cipherLen = TEST_RSA_BYTES; - word32 cipherLenResult = cipherLen; - WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); - WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); - - WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); - WC_ALLOC_VAR(cipher, byte, TEST_RSA_BYTES, NULL); - -#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - ExpectNotNull(in); - ExpectNotNull(plain); - ExpectNotNull(cipher); -#endif - ExpectNotNull(XMEMCPY(in, inStr, inLen)); - - /* Initialize stack structures. */ - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - - /* Encrypt. */ - ExpectIntGT(cipherLenResult = (word32)wc_RsaPublicEncrypt(in, inLen, cipher, - cipherLen, &key, &rng), 0); - /* Pass bad args - tested in another testing function.*/ - - /* Decrypt */ -#if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) - /* Bind rng */ - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); -#endif - ExpectIntGE(wc_RsaPrivateDecrypt(cipher, cipherLenResult, plain, plainLen, - &key), 0); - ExpectIntEQ(XMEMCMP(plain, inStr, plainLen), 0); - /* Pass bad args - tested in another testing function.*/ - - WC_FREE_VAR(in, NULL); - WC_FREE_VAR(plain, NULL); - WC_FREE_VAR(cipher, NULL); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaPublicEncryptDecrypt */ - -/* - * Testing wc_RsaPrivateDecrypt_ex() and wc_RsaPrivateDecryptInline_ex() - */ -static int test_wc_RsaPublicEncryptDecrypt_ex(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_FIPS)\ - && !defined(WC_NO_RSA_OAEP) && !defined(NO_SHA256) - RsaKey key; - WC_RNG rng; - const char inStr[] = TEST_STRING; - const word32 inLen = (word32)TEST_STRING_SZ; - const word32 plainSz = (word32)TEST_STRING_SZ; - byte* res = NULL; - int idx = 0; - int bits = TEST_RSA_BITS; - const word32 cipherSz = TEST_RSA_BYTES; - - WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); - WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); - - WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); - WC_ALLOC_VAR(cipher, byte, TEST_RSA_BYTES, NULL); - -#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - ExpectNotNull(in); - ExpectNotNull(plain); - ExpectNotNull(cipher); -#endif - ExpectNotNull(XMEMCPY(in, inStr, inLen)); - - /* Initialize stack structures. */ - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey_ex(&key, HEAP_HINT, INVALID_DEVID), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - - /* Encrypt */ - ExpectIntGE(idx = wc_RsaPublicEncrypt_ex(in, inLen, cipher, cipherSz, &key, - &rng, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); - /* Pass bad args - tested in another testing function.*/ - -#ifndef WOLFSSL_RSA_PUBLIC_ONLY - /* Decrypt */ - #if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) - ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); - #endif - ExpectIntGE(wc_RsaPrivateDecrypt_ex(cipher, (word32)idx, plain, plainSz, - &key, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); - ExpectIntEQ(XMEMCMP(plain, inStr, plainSz), 0); - /* Pass bad args - tested in another testing function.*/ - - ExpectIntGE(wc_RsaPrivateDecryptInline_ex(cipher, (word32)idx, &res, &key, - WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); - ExpectIntEQ(XMEMCMP(inStr, res, plainSz), 0); -#endif - - WC_FREE_VAR(in, NULL); - WC_FREE_VAR(plain, NULL); - WC_FREE_VAR(cipher, NULL); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaPublicEncryptDecrypt_ex */ - -/* - * Tesing wc_RsaSSL_Sign() and wc_RsaSSL_Verify() - */ -static int test_wc_RsaSSL_SignVerify(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - const char inStr[] = TEST_STRING; - const word32 plainSz = (word32)TEST_STRING_SZ; - const word32 inLen = (word32)TEST_STRING_SZ; - word32 idx = 0; - int bits = TEST_RSA_BITS; - const word32 outSz = TEST_RSA_BYTES; - - WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_DECLARE_VAR(out, byte, TEST_RSA_BYTES, NULL); - WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); - - WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); - WC_ALLOC_VAR(out, byte, TEST_RSA_BYTES, NULL); - WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); - -#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - ExpectNotNull(in); - ExpectNotNull(out); - ExpectNotNull(plain); -#endif - ExpectNotNull(XMEMCPY(in, inStr, inLen)); - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - - /* Sign. */ - ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, &key, &rng), (int)outSz); - idx = (int)outSz; - - /* Test bad args. */ - ExpectIntEQ(wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Verify. */ - ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, &key), (int)inLen); - - /* Pass bad args. */ - ExpectIntEQ(wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Verify(out, 0, plain, plainSz, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - WC_FREE_VAR(in, NULL); - WC_FREE_VAR(out, NULL); - WC_FREE_VAR(plain, NULL); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaSSL_SignVerify */ - -/* - * Testing wc_RsaEncryptSize() - */ -static int test_wc_RsaEncryptSize(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - -#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) - ExpectIntEQ(MAKE_RSA_KEY(&key, 1024, WC_RSA_EXPONENT, &rng), 0); - - ExpectIntEQ(wc_RsaEncryptSize(&key), 128); - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); -#endif - - ExpectIntEQ(MAKE_RSA_KEY(&key, 2048, WC_RSA_EXPONENT, &rng), 0); - ExpectIntEQ(wc_RsaEncryptSize(&key), 256); - - /* Pass in bad arg. */ - ExpectIntEQ(wc_RsaEncryptSize(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaEncryptSize*/ - -/* - * Testing wc_RsaFlattenPublicKey() - */ -static int test_wc_RsaFlattenPublicKey(void) -{ - EXPECT_DECLS; -#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - byte e[256]; - byte n[256]; - word32 eSz = sizeof(e); - word32 nSz = sizeof(n); - #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ - (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) - int bits = 1024; - #else - int bits = 2048; - #endif - - XMEMSET(&key, 0, sizeof(RsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - - ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, &nSz), 0); - - /* Pass bad args. */ - ExpectIntEQ(wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRsaKey(&key), 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_RsaFlattenPublicKey */ - - -/* - * Testing wc_InitDsaKey() - */ -static int test_wc_InitDsaKey(void) -{ - EXPECT_DECLS; -#ifndef NO_DSA - DsaKey key; - - XMEMSET(&key, 0, sizeof(DsaKey)); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_InitDsaKey(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_FreeDsaKey(&key); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_InitDsaKey */ - -/* - * Testing wc_DsaSign() and wc_DsaVerify() - */ -static int test_wc_DsaSignVerify(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) - DsaKey key; - WC_RNG rng; - wc_Sha sha; - byte signature[DSA_SIG_SIZE]; - byte hash[WC_SHA_DIGEST_SIZE]; - word32 idx = 0; - word32 bytes; - int answer = 0; -#ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; - - XMEMSET(tmp, 0, sizeof(tmp)); - XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); - bytes = sizeof_dsa_key_der_1024; -#elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; - - XMEMSET(tmp, 0, sizeof(tmp)); - XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); - bytes = sizeof_dsa_key_der_2048; -#else - byte tmp[TWOK_BUF]; - XFILE fp = XBADFILE; - - XMEMSET(tmp, 0, sizeof(tmp)); - ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); - ExpectTrue((bytes = (word32)XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); - if (fp != XBADFILE) - XFCLOSE(fp); -#endif /* END USE_CERT_BUFFERS_1024 */ - - ExpectIntEQ(wc_InitSha(&sha), 0); - ExpectIntEQ(wc_ShaUpdate(&sha, tmp, bytes), 0); - ExpectIntEQ(wc_ShaFinal(&sha, hash), 0); - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - /* Sign. */ - ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), 0); - /* Test bad args. */ - ExpectIntEQ(wc_DsaSign(NULL, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaSign(hash, NULL, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaSign(hash, signature, NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaSign(hash, signature, &key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Verify. */ - ExpectIntEQ(wc_DsaVerify(hash, signature, &key, &answer), 0); - ExpectIntEQ(answer, 1); - /* Pass in bad args. */ - ExpectIntEQ(wc_DsaVerify(NULL, signature, &key, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaVerify(hash, NULL, &key, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaVerify(hash, signature, NULL, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaVerify(hash, signature, &key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - -#if !defined(HAVE_FIPS) && defined(WOLFSSL_PUBLIC_MP) - /* hard set q to 0 and test fail case */ - mp_free(&key.q); - mp_init(&key.q); - ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - mp_set(&key.q, 1); - ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - - DoExpectIntEQ(wc_FreeRng(&rng),0); - wc_FreeDsaKey(&key); - wc_ShaFree(&sha); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_DsaSign */ - -/* - * Testing wc_DsaPrivateKeyDecode() and wc_DsaPublicKeyDecode() - */ -static int test_wc_DsaPublicPrivateKeyDecode(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) - DsaKey key; - word32 bytes = 0; - word32 idx = 0; - int ret = 0; -#ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; - - XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); - bytes = sizeof_dsa_key_der_1024; -#elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; - - XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); - bytes = sizeof_dsa_key_der_2048; -#else - byte tmp[TWOK_BUF]; - XFILE fp = XBADFILE; - - XMEMSET(tmp, 0, sizeof(tmp)); - ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); - ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); - if (fp != XBADFILE) - XFCLOSE(fp); -#endif /* END USE_CERT_BUFFERS_1024 */ - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); - /* Test bad args. */ - ExpectIntEQ(wc_DsaPrivateKeyDecode(NULL, &idx, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, NULL, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, NULL, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntLT(ret = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(ASN_PARSE_E)) || (ret == WC_NO_ERR_TRACE(BUFFER_E))); - wc_FreeDsaKey(&key); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - idx = 0; /* Reset */ - ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); - /* Test bad args. */ - ExpectIntEQ(wc_DsaPublicKeyDecode(NULL, &idx, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, NULL, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, NULL, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntLT(ret = wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(ASN_PARSE_E)) || (ret == WC_NO_ERR_TRACE(BUFFER_E))); - wc_FreeDsaKey(&key); -#endif /* !NO_DSA */ - return EXPECT_RESULT(); - -} /* END test_wc_DsaPublicPrivateKeyDecode */ - - -/* - * Testing wc_MakeDsaKey() and wc_MakeDsaParameters() - */ -static int test_wc_MakeDsaKey(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey genKey; - WC_RNG rng; - - XMEMSET(&genKey, 0, sizeof(genKey)); - XMEMSET(&rng, 0, sizeof(rng)); - - ExpectIntEQ(wc_InitDsaKey(&genKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &genKey), 0); - /* Test bad args. */ - ExpectIntEQ(wc_MakeDsaParameters(NULL, ONEK_BUF, &genKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF + 1, &genKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_MakeDsaKey(&rng, &genKey), 0); - /* Test bad args. */ - ExpectIntEQ(wc_MakeDsaKey(NULL, &genKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_MakeDsaKey(&rng, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_FreeDsaKey(&genKey); -#endif - return EXPECT_RESULT(); -} /* END test_wc_MakeDsaKey */ - -/* - * Testing wc_DsaKeyToDer() - */ -static int test_wc_DsaKeyToDer(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey key; - word32 bytes; - word32 idx = 0; -#ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; - byte der[ONEK_BUF]; - - XMEMSET(tmp, 0, sizeof(tmp)); - XMEMSET(der, 0, sizeof(der)); - XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); - bytes = sizeof_dsa_key_der_1024; -#elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; - byte der[TWOK_BUF]; - - XMEMSET(tmp, 0, sizeof(tmp)); - XMEMSET(der, 0, sizeof(der)); - XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); - bytes = sizeof_dsa_key_der_2048; -#else - byte tmp[TWOK_BUF]; - byte der[TWOK_BUF]; - XFILE fp = XBADFILE; - - XMEMSET(tmp, 0, sizeof(tmp)); - XMEMSET(der, 0, sizeof(der)); - ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); - ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); - if (fp != XBADFILE) - XFCLOSE(fp); -#endif /* END USE_CERT_BUFFERS_1024 */ - - XMEMSET(&key, 0, sizeof(DsaKey)); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); - ExpectIntGE(wc_DsaKeyToDer(&key, der, bytes), 0); - ExpectIntEQ(XMEMCMP(der, tmp, bytes), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_DsaKeyToDer(NULL, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaKeyToDer(&key, NULL, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_FreeDsaKey(&key); -#endif /* !NO_DSA && WOLFSSL_KEY_GEN */ - return EXPECT_RESULT(); - -} /* END test_wc_DsaKeyToDer */ - -/* - * Testing wc_DsaKeyToPublicDer() - * (indirectly testing setDsaPublicKey()) - */ -static int test_wc_DsaKeyToPublicDer(void) -{ - EXPECT_DECLS; -#ifndef HAVE_SELFTEST -#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey key; - WC_RNG rng; - byte* der = NULL; - word32 sz = 0; - word32 idx = 0; - - XMEMSET(&key, 0, sizeof(DsaKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectNotNull(der = (byte*)XMALLOC(ONEK_BUF, NULL, - DYNAMIC_TYPE_TMP_BUFFER)); - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &key), 0); - ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); - - ExpectIntGE(sz = (word32)wc_DsaKeyToPublicDer(&key, der, ONEK_BUF), 0); - wc_FreeDsaKey(&key); - - idx = 0; - ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); - - /* Test without the SubjectPublicKeyInfo header */ - ExpectIntGE(sz = (word32)wc_SetDsaPublicKey(der, &key, ONEK_BUF, 0), 0); - wc_FreeDsaKey(&key); - idx = 0; - ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_DsaKeyToPublicDer(NULL, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DsaKeyToPublicDer(&key, NULL, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_FreeDsaKey(&key); - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif /* !NO_DSA && WOLFSSL_KEY_GEN */ -#endif /* !HAVE_SELFTEST */ - return EXPECT_RESULT(); - -} /* END test_wc_DsaKeyToPublicDer */ - -/* - * Testing wc_DsaImportParamsRaw() - */ -static int test_wc_DsaImportParamsRaw(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) - DsaKey key; - /* [mod = L=1024, N=160], from CAVP KeyPair */ - const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" - "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" - "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" - "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" - "47123188f8dc551054ee162b634d60f097f719076640e209" - "80a0093113a8bd73"; - const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; - const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" - "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" - "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" - "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" - "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" - "76341a7e7d9"; - /* invalid p and q parameters */ - const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; - const char* invalidQ = "96c5390a"; - - XMEMSET(&key, 0, sizeof(DsaKey)); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); - - /* test bad args */ - /* null key struct */ - ExpectIntEQ(wc_DsaImportParamsRaw(NULL, p, q, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* null param pointers */ - ExpectIntEQ(wc_DsaImportParamsRaw(&key, NULL, NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* illegal p length */ - ExpectIntEQ(wc_DsaImportParamsRaw(&key, invalidP, q, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* illegal q length */ - ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, invalidQ, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_FreeDsaKey(&key); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_DsaImportParamsRaw */ - -/* - * Testing wc_DsaImportParamsRawCheck() - */ -static int test_wc_DsaImportParamsRawCheck(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - DsaKey key; - int trusted = 0; - /* [mod = L=1024, N=160], from CAVP KeyPair */ - const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" - "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" - "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" - "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" - "47123188f8dc551054ee162b634d60f097f719076640e209" - "80a0093113a8bd73"; - const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; - const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" - "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" - "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" - "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" - "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" - "76341a7e7d9"; - /* invalid p and q parameters */ - const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; - const char* invalidQ = "96c5390a"; - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, q, g, trusted, NULL), 0); - - /* test bad args */ - /* null key struct */ - ExpectIntEQ(wc_DsaImportParamsRawCheck(NULL, p, q, g, trusted, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* null param pointers */ - ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, NULL, NULL, NULL, trusted, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* illegal p length */ - ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, invalidP, q, g, trusted, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* illegal q length */ - ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, invalidQ, g, trusted, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_FreeDsaKey(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_DsaImportParamsRawCheck */ - -/* - * Testing wc_DsaExportParamsRaw() - */ -static int test_wc_DsaExportParamsRaw(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) - DsaKey key; - /* [mod = L=1024, N=160], from CAVP KeyPair */ - const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" - "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" - "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" - "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" - "47123188f8dc551054ee162b634d60f097f719076640e209" - "80a0093113a8bd73"; - const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; - const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" - "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" - "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" - "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" - "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" - "76341a7e7d9"; - const char* pCompare = "\xd3\x83\x11\xe2\xcd\x38\x8c\x3e\xd6\x98\xe8\x2f" - "\xdf\x88\xeb\x92\xb5\xa9\xa4\x83\xdc\x88\x00\x5d" - "\x4b\x72\x5e\xf3\x41\xea\xbb\x47\xcf\x8a\x7a\x8a" - "\x41\xe7\x92\xa1\x56\xb7\xce\x97\x20\x6c\x4f\x9c" - "\x5c\xe6\xfc\x5a\xe7\x91\x21\x02\xb6\xb5\x02\xe5" - "\x90\x50\xb5\xb2\x1c\xe2\x63\xdd\xdb\x20\x44\xb6" - "\x52\x23\x6f\x4d\x42\xab\x4b\x5d\x6a\xa7\x31\x89" - "\xce\xf1\xac\xe7\x78\xd7\x84\x5a\x5c\x1c\x1c\x71" - "\x47\x12\x31\x88\xf8\xdc\x55\x10\x54\xee\x16\x2b" - "\x63\x4d\x60\xf0\x97\xf7\x19\x07\x66\x40\xe2\x09" - "\x80\xa0\x09\x31\x13\xa8\xbd\x73"; - const char* qCompare = "\x96\xc5\x39\x0a\x8b\x61\x2c\x0e\x42\x2b\xb2\xb0" - "\xea\x19\x4a\x3e\xc9\x35\xa2\x81"; - const char* gCompare = "\x06\xb7\x86\x1a\xbb\xd3\x5c\xc8\x9e\x79\xc5\x2f" - "\x68\xd2\x08\x75\x38\x9b\x12\x73\x61\xca\x66\x82" - "\x21\x38\xce\x49\x91\xd2\xb8\x62\x25\x9d\x6b\x45" - "\x48\xa6\x49\x5b\x19\x5a\xa0\xe0\xb6\x13\x7c\xa3" - "\x7e\xb2\x3b\x94\x07\x4d\x3c\x3d\x30\x00\x42\xbd" - "\xf1\x57\x62\x81\x2b\x63\x33\xef\x7b\x07\xce\xba" - "\x78\x60\x76\x10\xfc\xc9\xee\x68\x49\x1d\xbc\x1e" - "\x34\xcd\x12\x61\x54\x74\xe5\x2b\x18\xbc\x93\x4f" - "\xb0\x0c\x61\xd3\x9e\x7d\xa8\x90\x22\x91\xc4\x43" - "\x4a\x4e\x22\x24\xc3\xf4\xfd\x9f\x93\xcd\x6f\x4f" - "\x17\xfc\x07\x63\x41\xa7\xe7\xd9"; - byte pOut[MAX_DSA_PARAM_SIZE]; - byte qOut[MAX_DSA_PARAM_SIZE]; - byte gOut[MAX_DSA_PARAM_SIZE]; - word32 pOutSz; - word32 qOutSz; - word32 gOutSz; - - XMEMSET(&key, 0, sizeof(DsaKey)); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - /* first test using imported raw parameters, for expected */ - ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); - pOutSz = sizeof(pOut); - qOutSz = sizeof(qOut); - gOutSz = sizeof(gOut); - ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, - &gOutSz), 0); - /* validate exported parameters are correct */ - ExpectIntEQ(XMEMCMP(pOut, pCompare, pOutSz), 0); - ExpectIntEQ(XMEMCMP(qOut, qCompare, qOutSz), 0); - ExpectIntEQ(XMEMCMP(gOut, gCompare, gOutSz), 0); - - /* test bad args */ - /* null key struct */ - ExpectIntEQ(wc_DsaExportParamsRaw(NULL, pOut, &pOutSz, qOut, &qOutSz, gOut, - &gOutSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* null output pointers */ - ExpectIntEQ(wc_DsaExportParamsRaw(&key, NULL, &pOutSz, NULL, &qOutSz, NULL, - &gOutSz), WC_NO_ERR_TRACE(LENGTH_ONLY_E)); - /* null output size pointers */ - ExpectIntEQ( wc_DsaExportParamsRaw(&key, pOut, NULL, qOut, NULL, gOut, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* p output buffer size too small */ - pOutSz = 1; - ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, - &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); - pOutSz = sizeof(pOut); - /* q output buffer size too small */ - qOutSz = 1; - ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, - &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); - qOutSz = sizeof(qOut); - /* g output buffer size too small */ - gOutSz = 1; - ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, - &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); - - wc_FreeDsaKey(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_DsaExportParamsRaw */ - -/* - * Testing wc_DsaExportKeyRaw() - */ -static int test_wc_DsaExportKeyRaw(void) -{ - EXPECT_DECLS; -#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey key; - WC_RNG rng; - byte xOut[MAX_DSA_PARAM_SIZE]; - byte yOut[MAX_DSA_PARAM_SIZE]; - word32 xOutSz, yOutSz; - - XMEMSET(&key, 0, sizeof(key)); - XMEMSET(&rng, 0, sizeof(rng)); - - ExpectIntEQ(wc_InitDsaKey(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_MakeDsaParameters(&rng, 1024, &key), 0); - ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); - - /* try successful export */ - xOutSz = sizeof(xOut); - yOutSz = sizeof(yOut); - ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), 0); - - /* test bad args */ - /* null key struct */ - ExpectIntEQ(wc_DsaExportKeyRaw(NULL, xOut, &xOutSz, yOut, &yOutSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* null output pointers */ - ExpectIntEQ(wc_DsaExportKeyRaw(&key, NULL, &xOutSz, NULL, &yOutSz), - WC_NO_ERR_TRACE(LENGTH_ONLY_E)); - /* null output size pointers */ - ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, NULL, yOut, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* x output buffer size too small */ - xOutSz = 1; - ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), - WC_NO_ERR_TRACE(BUFFER_E)); - xOutSz = sizeof(xOut); - /* y output buffer size too small */ - yOutSz = 1; - ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), - WC_NO_ERR_TRACE(BUFFER_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_FreeDsaKey(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_DsaExportParamsRaw */ - - -/* - * Testing wc_ed25519_make_key(). - */ -static int test_wc_ed25519_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_MAKE_KEY) - ed25519_key key; - WC_RNG rng; - unsigned char pubkey[ED25519_PUB_KEY_SIZE+1]; - int pubkey_sz = ED25519_PUB_KEY_SIZE; - - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_ed25519_make_public(&key, pubkey, (word32)pubkey_sz), - WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); - ExpectIntEQ(wc_ed25519_make_public(&key, pubkey+1, (word32)pubkey_sz), - WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_make_key(NULL, ED25519_KEY_SIZE, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE - 1, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE + 1, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_make_key */ - -/* - * Testing wc_ed25519_init() - */ -static int test_wc_ed25519_init(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) - ed25519_key key; - - XMEMSET(&key, 0, sizeof(ed25519_key)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_init */ - -/* - * Test wc_ed25519_sign_msg() and wc_ed25519_verify_msg() - */ -static int test_wc_ed25519_sign_msg(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_SIGN) - WC_RNG rng; - ed25519_key key; - byte msg[] = "Everybody gets Friday off.\n"; - byte sig[ED25519_SIG_SIZE+1]; - word32 msglen = sizeof(msg); - word32 siglen = ED25519_SIG_SIZE; - word32 badSigLen = ED25519_SIG_SIZE - 1; -#ifdef HAVE_ED25519_VERIFY - int verify_ok = 0; /*1 = Verify success.*/ -#endif - - /* Initialize stack variables. */ - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(sig, 0, sizeof(sig)); - - /* Initialize key. */ - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, &key), 0); - ExpectIntEQ(siglen, ED25519_SIG_SIZE); - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig+1, &siglen, &key), 0); - ExpectIntEQ(siglen, ED25519_SIG_SIZE); - - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_sign_msg(NULL, msglen, sig, &siglen, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, NULL, &siglen, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, NULL, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &badSigLen, &key), - WC_NO_ERR_TRACE(BUFFER_E)); - ExpectIntEQ(badSigLen, ED25519_SIG_SIZE); - badSigLen--; - -#ifdef HAVE_ED25519_VERIFY - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, &verify_ok, - &key), 0); - ExpectIntEQ(verify_ok, 1); - - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen - 1, msg, msglen, - &verify_ok, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen + 1, msg, msglen, - &verify_ok, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(NULL, siglen, msg, msglen, &verify_ok, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, NULL, msglen, &verify_ok, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, NULL, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, &verify_ok, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_verify_msg(sig+1, badSigLen, msg, msglen, &verify_ok, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif /* Verify. */ - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_ed25519_sign_msg */ - -/* - * Testing wc_ed25519_import_public() - */ -static int test_wc_ed25519_import_public(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) - ed25519_key pubKey; - WC_RNG rng; - const byte in[] = "Ed25519PublicKeyUnitTest......\n"; - word32 inlen = sizeof(in); - - XMEMSET(&pubKey, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&pubKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#ifdef HAVE_ED25519_MAKE_KEY - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &pubKey), 0); -#endif - - ExpectIntEQ(wc_ed25519_import_public_ex(in, inlen, &pubKey, 1), 0); - ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_import_public(NULL, inlen, &pubKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_public(in, inlen, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_public(in, inlen - 1, &pubKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&pubKey); -#endif - return EXPECT_RESULT(); -} /* END wc_ed25519_import_public */ - -/* - * Testing wc_ed25519_import_private_key() - */ -static int test_wc_ed25519_import_private_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) - ed25519_key key; - WC_RNG rng; - const byte privKey[] = "Ed25519PrivateKeyUnitTest.....\n"; - const byte pubKey[] = "Ed25519PublicKeyUnitTest......\n"; - word32 privKeySz = sizeof(privKey); - word32 pubKeySz = sizeof(pubKey); -#ifdef HAVE_ED25519_KEY_EXPORT - byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; - word32 bothKeysSz = sizeof(bothKeys); -#endif - - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#ifdef HAVE_ED25519_MAKE_KEY - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); -#endif - - ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, privKeySz, pubKey, - pubKeySz, &key, 1), 0); - ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); - ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); - -#ifdef HAVE_ED25519_KEY_EXPORT - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed25519_export_private(&key, bothKeys, &bothKeysSz), 0); - PRIVATE_KEY_LOCK(); - ExpectIntEQ(wc_ed25519_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, - &key, 1), 0); - ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); - ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); -#endif - - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_import_private_key(NULL, privKeySz, pubKey, pubKeySz, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, - pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, - pubKeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz - 1, pubKey, - pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, - pubKeySz - 1, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, 0, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_import_private_key */ - -/* - * Testing wc_ed25519_export_public() and wc_ed25519_export_private_only() - */ -static int test_wc_ed25519_export(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - ed25519_key key; - WC_RNG rng; - byte priv[ED25519_PRV_KEY_SIZE]; - byte pub[ED25519_PUB_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); -#ifndef HAVE_ED25519_MAKE_KEY - const byte privKey[] = { - 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, - 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, - 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, - 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 - }; - const byte pubKey[] = { - 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, - 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, - 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, - 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d - }; -#endif - - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#ifdef HAVE_ED25519_MAKE_KEY - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); -#else - ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), - pubKey, sizeof(pubKey), &key, 1), 0); -#endif - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed25519_export_public(&key, pub, &pubSz), 0); - ExpectIntEQ(pubSz, ED25519_KEY_SIZE); - ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_export_public(NULL, pub, &pubSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_public(&key, NULL, &pubSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_public(&key, pub, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, &privSz), 0); - ExpectIntEQ(privSz, ED25519_KEY_SIZE); - ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_export_private_only(NULL, priv, &privSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_private_only(&key, NULL, &privSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_export */ - -/* - * Testing wc_ed25519_size() - */ -static int test_wc_ed25519_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) - ed25519_key key; - WC_RNG rng; -#ifndef HAVE_ED25519_MAKE_KEY - const byte privKey[] = { - 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, - 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, - 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, - 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 - }; - const byte pubKey[] = { - 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, - 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, - 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, - 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d - }; -#endif - - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#ifdef HAVE_ED25519_MAKE_KEY - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); -#else - ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), - pubKey, sizeof(pubKey), &key, 1), 0); -#endif - - ExpectIntEQ(wc_ed25519_size(&key), ED25519_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed25519_sig_size(&key), ED25519_SIG_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed25519_pub_size(&key), ED25519_PUB_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed25519_priv_size(&key), ED25519_PRV_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_size */ - -/* - * Testing wc_ed25519_export_private() and wc_ed25519_export_key() - */ -static int test_wc_ed25519_exportKey(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - WC_RNG rng; - ed25519_key key; - byte priv[ED25519_PRV_KEY_SIZE]; - byte pub[ED25519_PUB_KEY_SIZE]; - byte privOnly[ED25519_PRV_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - word32 privOnlySz = sizeof(privOnly); -#ifndef HAVE_ED25519_MAKE_KEY - const byte privKey[] = { - 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, - 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, - 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, - 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 - }; - const byte pubKey[] = { - 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, - 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, - 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, - 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d - }; -#endif - - XMEMSET(&key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#ifdef HAVE_ED25519_MAKE_KEY - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); -#else - ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), - pubKey, sizeof(pubKey), &key, 1), 0); -#endif - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, &privOnlySz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_export_private(NULL, privOnly, &privOnlySz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_private(&key, NULL, &privOnlySz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, &pubSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed25519_export_key(NULL, priv, &privSz, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_key(&key, NULL, &privSz, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_key(&key, priv, NULL, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, NULL, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - /* Cross check output. */ - ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed25519_exportKey */ - -/* - * Testing wc_Ed25519PublicKeyToDer - */ -static int test_wc_Ed25519PublicKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - ed25519_key key; - byte derBuf[1024]; - - XMEMSET(&key, 0, sizeof(ed25519_key)); - - /* Test bad args */ - ExpectIntEQ(wc_Ed25519PublicKeyToDer(NULL, NULL, 0, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_Ed25519PublicKeyToDer(&key, derBuf, 0, 0), WC_NO_ERR_TRACE(BUFFER_E)); - wc_ed25519_free(&key); - - /* Test good args */ - if (EXPECT_SUCCESS()) { - WC_RNG rng; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - /* length only */ - ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 0), 0); - ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 1), 0); - ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, derBuf, - (word32)sizeof(derBuf), 1), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&key); - } -#endif - return EXPECT_RESULT(); -} /* END testing wc_Ed25519PublicKeyToDer */ - -/* - * Testing wc_curve25519_init and wc_curve25519_free. - */ -static int test_wc_curve25519_init(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - - ExpectIntEQ(wc_curve25519_init(&key), 0); - /* Test bad args for wc_curve25519_init */ - ExpectIntEQ(wc_curve25519_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Test good args for wc_curve_25519_free */ - wc_curve25519_free(&key); - /* Test bad args for wc_curve25519 free. */ - wc_curve25519_free(NULL); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_init and wc_curve_25519_free*/ -/* - * Testing test_wc_curve25519_size. - */ -static int test_wc_curve25519_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - - ExpectIntEQ(wc_curve25519_init(&key), 0); - - /* Test good args for wc_curve25519_size */ - ExpectIntEQ(wc_curve25519_size(&key), CURVE25519_KEYSIZE); - /* Test bad args for wc_curve25519_size */ - ExpectIntEQ(wc_curve25519_size(NULL), 0); - - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_size*/ - -/* - * Testing test_wc_curve25519_export_key_raw(). - */ -static int test_wc_curve25519_export_key_raw(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) - curve25519_key key; - WC_RNG rng; - byte privateKey[CURVE25519_KEYSIZE]; - byte publicKey[CURVE25519_KEYSIZE]; - word32 prvkSz; - word32 pubkSz; - byte prik[CURVE25519_KEYSIZE]; - byte pubk[CURVE25519_KEYSIZE]; - word32 prksz; - word32 pbksz; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw(NULL, privateKey, &prvkSz, - publicKey, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw(&key, NULL, &prvkSz, publicKey, - &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, NULL, - publicKey, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, - NULL, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, - publicKey, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* cross-testing */ - prksz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_private_raw(&key, prik, &prksz), 0); - pbksz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_public(&key, pubk, &pbksz), 0); - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, - publicKey, &pubkSz), 0); - ExpectIntEQ(prksz, CURVE25519_KEYSIZE); - ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); - ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); - ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* end of test_wc_curve25519_export_key_raw */ - -/* - * Testing test_wc_curve25519_export_key_raw_ex(). - */ -static int test_wc_curve25519_export_key_raw_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) - curve25519_key key; - WC_RNG rng; - byte privateKey[CURVE25519_KEYSIZE]; - byte publicKey[CURVE25519_KEYSIZE]; - word32 prvkSz; - word32 pubkSz; - byte prik[CURVE25519_KEYSIZE]; - byte pubk[CURVE25519_KEYSIZE]; - word32 prksz; - word32 pbksz; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, - &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, - &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - NULL, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - &prvkSz, NULL, &pubkSz, EC25519_LITTLE_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - &prvkSz, publicKey, NULL, EC25519_LITTLE_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, - &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, - &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - NULL, publicKey, &pubkSz, EC25519_BIG_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - &prvkSz, NULL, &pubkSz, EC25519_BIG_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, - &prvkSz, publicKey, NULL, EC25519_BIG_ENDIAN), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* illegal value for endian */ - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, - publicKey, NULL, EC25519_BIG_ENDIAN + 10), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* cross-testing */ - prksz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_private_raw( &key, prik, &prksz), 0); - pbksz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_public( &key, pubk, &pbksz), 0); - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); - ExpectIntEQ(prksz, CURVE25519_KEYSIZE); - ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); - ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); - ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); - ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), 0); - ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); - - /* try once with another endian */ - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ExpectIntEQ(wc_curve25519_export_key_raw_ex( &key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); - ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); - ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* end of test_wc_curve25519_export_key_raw_ex */ - -/* - * Testing wc_curve25519_make_key - */ -static int test_wc_curve25519_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - WC_RNG rng; - int keysize = 0; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - ExpectIntEQ(keysize = wc_curve25519_size(&key), CURVE25519_KEYSIZE); - ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, &key), 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_make_key(NULL, 0, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_make_key(NULL, keysize, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_make_key(&rng, 0, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_make_key*/ - -/* - * Testing wc_curve25519_shared_secret_ex - */ -static int test_wc_curve25519_shared_secret_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key private_key; - curve25519_key public_key; - WC_RNG rng; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - - ExpectIntEQ(wc_curve25519_init(&private_key), 0); -#ifdef WOLFSSL_CURVE25519_BLINDING - ExpectIntEQ(wc_curve25519_set_rng(&private_key, &rng), 0); -#endif - ExpectIntEQ(wc_curve25519_init(&public_key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &private_key), - 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &public_key), - 0); - - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian), 0); - - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, NULL, NULL, 0, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, &public_key, out, &outLen, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, NULL, out, &outLen, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, NULL, - &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* curve25519.c is checking for public_key size less than or equal to 0x7f, - * increasing to 0x8f checks for error being returned*/ - public_key.p.point[CURVE25519_KEYSIZE-1] = 0x8F; - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - outLen = outLen - 2; - ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&private_key); - wc_curve25519_free(&public_key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_shared_secret_ex*/ - -/* - * Testing wc_curve25519_make_pub - */ -static int test_wc_curve25519_make_pub(void) -{ - EXPECT_DECLS; -#ifdef HAVE_CURVE25519 - curve25519_key key; - WC_RNG rng; - byte out[CURVE25519_KEYSIZE]; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(out), out, - (int)sizeof(key.k), key.k), 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(key.k) - 1, key.k, - (int)sizeof out, out), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), - NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out - 1, out, - (int)sizeof(key.k), key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, NULL, - (int)sizeof(key.k), key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - /* verify clamping test */ - key.k[0] |= ~248; - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), - key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - key.k[0] &= 248; - /* repeat the expected-to-succeed test. */ - ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), - key.k), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_make_pub */ - -/* - * Testing test_wc_curve25519_export_public_ex - */ -static int test_wc_curve25519_export_public_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - WC_RNG rng; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - ExpectIntEQ(wc_curve25519_export_public(&key, out, &outLen), 0); - ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_export_public_ex(NULL, NULL, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_public_ex(NULL, out, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_public_ex(&key, NULL, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - outLen = outLen - 2; - ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_export_public_ex*/ -/* - * Testing test_wc_curve25519_import_private_raw_ex - */ -static int test_wc_curve25519_import_private_raw_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - WC_RNG rng; - byte priv[CURVE25519_KEYSIZE]; - byte pub[CURVE25519_KEYSIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int endian = EC25519_BIG_ENDIAN; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, priv, &privSz, - endian), 0); - ExpectIntEQ(wc_curve25519_export_public(&key, pub, &pubSz), 0); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, endian), 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, 0, NULL, 0, NULL, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, privSz, pub, pubSz, - &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, NULL, pubSz, - &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, 0, pub, pubSz, - &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, 0, - &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, EC25519_LITTLE_ENDIAN), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_import_private_raw_ex*/ - -/* - * Testing test_wc_curve25519_import_private - */ -static int test_wc_curve25519_import_private(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - WC_RNG rng; - byte priv[CURVE25519_KEYSIZE]; - word32 privSz = sizeof(priv); - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve25519_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - - ExpectIntEQ(wc_curve25519_export_private_raw(&key, priv, &privSz), 0); - ExpectIntEQ(wc_curve25519_import_private(priv, privSz, &key), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_import*/ - -/* - * Testing test_wc_curve25519_export_private_raw_ex - */ -static int test_wc_curve25519_export_private_raw_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE25519) - curve25519_key key; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - - ExpectIntEQ(wc_curve25519_init(&key), 0); - - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), - 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, NULL, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, out, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, NULL, &outLen, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, - EC25519_LITTLE_ENDIAN), 0); - outLen = outLen - 2; - ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - wc_curve25519_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve25519_export_private_raw_ex*/ - -/* - * Testing wc_ed448_make_key(). - */ -static int test_wc_ed448_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) - ed448_key key; - WC_RNG rng; - unsigned char pubkey[ED448_PUB_KEY_SIZE]; - - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_ed448_make_public(&key, pubkey, sizeof(pubkey)), - WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_make_key(NULL, ED448_KEY_SIZE, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE - 1, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE + 1, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_make_key */ - - -/* - * Testing wc_ed448_init() - */ -static int test_wc_ed448_init(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) - ed448_key key; - - XMEMSET(&key, 0, sizeof(ed448_key)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_init */ - -/* - * Test wc_ed448_sign_msg() and wc_ed448_verify_msg() - */ -static int test_wc_ed448_sign_msg(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_SIGN) - ed448_key key; - WC_RNG rng; - byte msg[] = "Everybody gets Friday off.\n"; - byte sig[ED448_SIG_SIZE]; - word32 msglen = sizeof(msg); - word32 siglen = sizeof(sig); - word32 badSigLen = sizeof(sig) - 1; -#ifdef HAVE_ED448_VERIFY - int verify_ok = 0; /*1 = Verify success.*/ -#endif - - /* Initialize stack variables. */ - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(sig, 0, siglen); - - /* Initialize key. */ - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, &key, NULL, 0), 0); - ExpectIntEQ(siglen, ED448_SIG_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_sign_msg(NULL, msglen, sig, &siglen, &key, NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, NULL, &siglen, &key, NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, NULL, &key, NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, NULL, NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &badSigLen, &key, NULL, 0), - WC_NO_ERR_TRACE(BUFFER_E)); - ExpectIntEQ(badSigLen, ED448_SIG_SIZE); - badSigLen--; - -#ifdef HAVE_ED448_VERIFY - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, &key, - NULL, 0), 0); - ExpectIntEQ(verify_ok, 1); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen - 1, msg, msglen, &verify_ok, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen + 1, msg, msglen, &verify_ok, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(NULL, siglen, msg, msglen, &verify_ok, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, NULL, msglen, &verify_ok, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, NULL, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, - NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_verify_msg(sig, badSigLen, msg, msglen, &verify_ok, - &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif /* Verify. */ - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_sign_msg */ - -/* - * Testing wc_ed448_import_public() - */ -static int test_wc_ed448_import_public(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) - ed448_key pubKey; - WC_RNG rng; - const byte in[] = - "Ed448PublicKeyUnitTest.................................\n"; - word32 inlen = sizeof(in); - - XMEMSET(&pubKey, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&pubKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &pubKey), 0); - - ExpectIntEQ(wc_ed448_import_public_ex(in, inlen, &pubKey, 1), 0); - ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_import_public(NULL, inlen, &pubKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_public(in, inlen, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_public(in, inlen - 1, &pubKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&pubKey); -#endif - return EXPECT_RESULT(); -} /* END wc_ed448_import_public */ - -/* - * Testing wc_ed448_import_private_key() - */ -static int test_wc_ed448_import_private_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) - ed448_key key; - WC_RNG rng; - const byte privKey[] = - "Ed448PrivateKeyUnitTest................................\n"; - const byte pubKey[] = - "Ed448PublicKeyUnitTest.................................\n"; - word32 privKeySz = sizeof(privKey); - word32 pubKeySz = sizeof(pubKey); -#ifdef HAVE_ED448_KEY_EXPORT - byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; - word32 bothKeysSz = sizeof(bothKeys); -#endif - - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_ed448_import_private_key_ex(privKey, privKeySz, pubKey, - pubKeySz, &key, 1), 0); - ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); - ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); - -#ifdef HAVE_ED448_KEY_EXPORT - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed448_export_private(&key, bothKeys, &bothKeysSz), 0); - PRIVATE_KEY_LOCK(); - ExpectIntEQ(wc_ed448_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, - &key, 1), 0); - ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); - ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); -#endif - - /* Test bad args. */ - ExpectIntEQ(wc_ed448_import_private_key(NULL, privKeySz, pubKey, pubKeySz, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, pubKeySz, - &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, - pubKeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz - 1, pubKey, - pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, - pubKeySz - 1, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, 0, &key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_import_private_key */ - -/* - * Testing wc_ed448_export_public() and wc_ed448_export_private_only() - */ -static int test_wc_ed448_export(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - ed448_key key; - WC_RNG rng; - byte priv[ED448_PRV_KEY_SIZE]; - byte pub[ED448_PUB_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_ed448_export_public(&key, pub, &pubSz), 0); - ExpectIntEQ(pubSz, ED448_KEY_SIZE); - ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_export_public(NULL, pub, &pubSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_public(&key, NULL, &pubSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_public(&key, pub, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed448_export_private_only(&key, priv, &privSz), 0); - ExpectIntEQ(privSz, ED448_KEY_SIZE); - ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_export_private_only(NULL, priv, &privSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_private_only(&key, NULL, &privSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_private_only(&key, priv, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_export */ - -/* - * Testing wc_ed448_size() - */ -static int test_wc_ed448_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) - ed448_key key; - WC_RNG rng; - - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_ed448_size(&key), ED448_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed448_sig_size(&key), ED448_SIG_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed448_pub_size(&key), ED448_PUB_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed448_priv_size(&key), ED448_PRV_KEY_SIZE); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_size */ - -/* - * Testing wc_ed448_export_private() and wc_ed448_export_key() - */ -static int test_wc_ed448_exportKey(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - ed448_key key; - WC_RNG rng; - byte priv[ED448_PRV_KEY_SIZE]; - byte pub[ED448_PUB_KEY_SIZE]; - byte privOnly[ED448_PRV_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - word32 privOnlySz = sizeof(privOnly); - - XMEMSET(&key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ed448_export_private(&key, privOnly, &privOnlySz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_export_private(NULL, privOnly, &privOnlySz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_private(&key, NULL, &privOnlySz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_private(&key, privOnly, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, &pubSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ed448_export_key(NULL, priv, &privSz, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_key(&key, NULL, &privSz, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_key(&key, priv, NULL, pub, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, NULL, &pubSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - /* Cross check output. */ - ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ed448_exportKey */ - -/* - * Testing wc_Ed448PublicKeyToDer - */ -static int test_wc_Ed448PublicKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - ed448_key key; - byte derBuf[1024]; - - XMEMSET(&key, 0, sizeof(ed448_key)); - - /* Test bad args */ - ExpectIntEQ(wc_Ed448PublicKeyToDer(NULL, NULL, 0, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_Ed448PublicKeyToDer(&key, derBuf, 0, 0), WC_NO_ERR_TRACE(BUFFER_E)); - wc_ed448_free(&key); - - /* Test good args */ - if (EXPECT_SUCCESS()) { - WC_RNG rng; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - /* length only */ - ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 0), 0); - ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 1), 0); - ExpectIntGT(wc_Ed448PublicKeyToDer(&key, derBuf, - (word32)sizeof(derBuf), 1), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&key); - } -#endif - return EXPECT_RESULT(); -} /* END testing wc_Ed448PublicKeyToDer */ - -/* - * Testing wc_curve448_init and wc_curve448_free. - */ -static int test_wc_curve448_init(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - - /* Test bad args for wc_curve448_init */ - ExpectIntEQ(wc_curve448_init(&key), 0); - /* Test bad args for wc_curve448_init */ - ExpectIntEQ(wc_curve448_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Test good args for wc_curve_448_free */ - wc_curve448_free(&key); - /* Test bad args for wc_curve448_free */ - wc_curve448_free(NULL); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_init and wc_curve_448_free*/ - -/* - * Testing wc_curve448_make_key - */ -static int test_wc_curve448_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - WC_RNG rng; - int keysize = 0; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); - ExpectIntEQ(keysize = wc_curve448_size(&key), CURVE448_KEY_SIZE); - ExpectIntEQ(wc_curve448_make_key(&rng, keysize, &key), 0); - - /* test bad cases */ - ExpectIntEQ(wc_curve448_make_key(NULL, 0, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_make_key(&rng, keysize, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_make_key(NULL, keysize, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_make_key(&rng, 0, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_make_key*/ -/* - * Testing test_wc_curve448_shared_secret_ex - */ -static int test_wc_curve448_shared_secret_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key private_key; - curve448_key public_key; - WC_RNG rng; - byte out[CURVE448_KEY_SIZE]; - word32 outLen = sizeof(out); - int endian = EC448_BIG_ENDIAN; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&private_key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &private_key), 0); - - ExpectIntEQ(wc_curve448_init(&public_key), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &public_key), 0); - ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian), 0); - - /* test bad cases */ - ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, NULL, NULL, 0, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, &public_key, out, &outLen, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, NULL, out, &outLen, - endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, NULL, - &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, - NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - outLen = outLen - 2; - ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&private_key); - wc_curve448_free(&public_key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_shared_secret_ex*/ - -/* - * Testing test_wc_curve448_export_public_ex - */ -static int test_wc_curve448_export_public_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - WC_RNG rng; - curve448_key key; - byte out[CURVE448_KEY_SIZE]; - word32 outLen = sizeof(out); - int endian = EC448_BIG_ENDIAN; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_curve448_export_public(&key, out, &outLen), 0); - ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve448_export_public_ex(NULL, NULL, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_public_ex(NULL, out, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_public_ex(&key, NULL, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_public_ex(&key, out, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - outLen = outLen - 2; - ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_export_public_ex*/ - -/* - * Testing test_wc_curve448_export_private_raw_ex - */ -static int test_wc_curve448_export_private_raw_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - byte out[CURVE448_KEY_SIZE]; - word32 outLen = sizeof(out); - int endian = EC448_BIG_ENDIAN; - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), - 0); - /* test bad cases*/ - ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, NULL, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, out, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, NULL, &outLen, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, NULL, endian), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, - EC448_LITTLE_ENDIAN), 0); - outLen = outLen - 2; - ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_export_private_raw_ex*/ - -/* - * Testing test_wc_curve448_import_private_raw_ex - */ -static int test_wc_curve448_import_private_raw_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - WC_RNG rng; - byte priv[CURVE448_KEY_SIZE]; - byte pub[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int endian = EC448_BIG_ENDIAN; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); - ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, endian), 0); - /* test bad cases */ - ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, 0, NULL, 0, NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, privSz, pub, pubSz, - &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, NULL, pubSz, - &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, 0, pub, pubSz, - &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, 0, - &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, EC448_LITTLE_ENDIAN), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_import_private_raw_ex*/ -/* - * Testing test_curve448_export_key_raw - */ -static int test_wc_curve448_export_key_raw(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - WC_RNG rng; - byte priv[CURVE448_KEY_SIZE]; - byte pub[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); - ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); - ExpectIntEQ(wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz), - 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_import_private_raw_ex*/ - -/* - * Testing test_wc_curve448_import_private - */ -static int test_wc_curve448_import_private(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - WC_RNG rng; - byte priv[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); - - ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); - ExpectIntEQ(wc_curve448_import_private(priv, privSz, &key), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_import*/ -/* - * Testing test_wc_curve448_size. - */ -static int test_wc_curve448_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) - curve448_key key; - - ExpectIntEQ(wc_curve448_init(&key), 0); - - /* Test good args for wc_curve448_size */ - ExpectIntEQ(wc_curve448_size(&key), CURVE448_KEY_SIZE); - /* Test bad args for wc_curve448_size */ - ExpectIntEQ(wc_curve448_size(NULL), 0); - - wc_curve448_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_curve448_size*/ - -/* - * Testing wc_ecc_make_key. - */ -static int test_wc_ecc_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; - - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY14, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_make_key(NULL, KEY14, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_make_key(&rng, KEY14, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_make_key */ - - -/* - * Testing wc_ecc_init() - */ -static int test_wc_ecc_init(void) -{ - EXPECT_DECLS; -#ifdef HAVE_ECC - ecc_key key; - - XMEMSET(&key, 0, sizeof(ecc_key)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_init */ - -/* - * Testing wc_ecc_check_key() - */ -static int test_wc_ecc_check_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; - - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY14, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_check_key(&key), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_check_key(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_check_key */ - -/* - * Testing wc_ecc_get_generator() - */ -static int test_wc_ecc_get_generator(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) && defined(OPENSSL_EXTRA) - ecc_point* pt = NULL; - - ExpectNotNull(pt = wc_ecc_new_point()); - - ExpectIntEQ(wc_ecc_get_generator(pt, wc_ecc_get_curve_idx(ECC_SECP256R1)), - MP_OKAY); - - /* Test bad args. */ - /* Returns Zero for bad arg. */ - ExpectIntNE(wc_ecc_get_generator(pt, -1), MP_OKAY); - ExpectIntNE(wc_ecc_get_generator(NULL, wc_ecc_get_curve_idx(ECC_SECP256R1)), - MP_OKAY); - /* If we ever get to 1000 curves increase this number */ - ExpectIntNE(wc_ecc_get_generator(pt, 1000), MP_OKAY); - ExpectIntNE(wc_ecc_get_generator(NULL, -1), MP_OKAY); - - wc_ecc_del_point(pt); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_get_generator */ - -/* - * Testing wc_ecc_size() - */ -static int test_wc_ecc_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) - WC_RNG rng; - ecc_key key; - int ret; - - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY14, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_size(&key), KEY14); - /* Test bad args. */ - /* Returns Zero for bad arg. */ - ExpectIntEQ(wc_ecc_size(NULL), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_size */ - -static int test_wc_ecc_params(void) -{ - EXPECT_DECLS; - /* FIPS/CAVP self-test modules do not have `wc_ecc_get_curve_params`. - It was added after certifications */ -#if defined(HAVE_ECC) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - const ecc_set_type* ecc_set = NULL; -#if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - /* Test for SECP256R1 curve */ - int curve_id = ECC_SECP256R1; - int curve_idx = 0; - - ExpectIntNE(curve_idx = wc_ecc_get_curve_idx(curve_id), ECC_CURVE_INVALID); - ExpectNotNull(ecc_set = wc_ecc_get_curve_params(curve_idx)); - ExpectIntEQ(ecc_set->id, curve_id); -#endif - /* Test case when SECP256R1 is not enabled */ - /* Test that we get curve params for index 0 */ - ExpectNotNull(ecc_set = wc_ecc_get_curve_params(0)); -#endif /* HAVE_ECC && !HAVE_FIPS && !HAVE_SELFTEST */ - return EXPECT_RESULT(); -} - -/* - * Testing wc_ecc_sign_hash() and wc_ecc_verify_hash() - */ -static int test_wc_ecc_signVerify_hash(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && !defined(NO_ASN) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; -#ifdef HAVE_ECC_VERIFY - int verify = 0; -#endif - word32 siglen = ECC_BUFSIZE; - byte sig[ECC_BUFSIZE]; - byte adjustedSig[ECC_BUFSIZE+1]; - byte digest[] = TEST_STRING; - word32 digestlen = (word32)TEST_STRING_SZ; - - /* Init stack var */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(sig, 0, siglen); - XMEMSET(adjustedSig, 0, ECC_BUFSIZE+1); - - /* Init structs. */ - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY14, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, &key), - 0); - - /* Check bad args. */ - ExpectIntEQ(wc_ecc_sign_hash(NULL, digestlen, sig, &siglen, &rng, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, NULL, &siglen, &rng, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, NULL, &rng, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, NULL, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, NULL), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - -#ifdef HAVE_ECC_VERIFY - ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, - &key), 0); - ExpectIntEQ(verify, 1); - - /* test check on length of signature passed in */ - XMEMCPY(adjustedSig, sig, siglen); - adjustedSig[1] = adjustedSig[1] + 1; /* add 1 to length for extra byte*/ -#ifndef NO_STRICT_ECDSA_LEN - ExpectIntNE(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, - &verify, &key), 0); -#else - /* if NO_STRICT_ECDSA_LEN is set then extra bytes after the signature - * is allowed */ - ExpectIntEQ(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, - &verify, &key), 0); -#endif - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_verify_hash(NULL, siglen, digest, digestlen, &verify, - &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, NULL, digestlen, &verify, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, NULL, &key), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, - NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); -#endif /* HAVE_ECC_VERIFY */ - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_sign_hash */ - - -/* - * Testing wc_ecc_shared_secret() - */ -static int test_wc_ecc_shared_secret(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && !defined(WC_NO_RNG) - ecc_key key; - ecc_key pubKey; - WC_RNG rng; -#if defined(NO_ECC256) - int ret; -#endif - byte out[KEY32]; - int keySz = sizeof(out); - word32 outlen = (word32)sizeof(out); - -#if defined(HAVE_ECC) && !defined(NO_ECC256) - const char* qx = - "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; - const char* qy = - "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; - const char* d = - "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; - const char* curveName = "SECP256R1"; - const byte expected_shared_secret[] = - { - 0x65, 0xc0, 0xd4, 0x61, 0x17, 0xe6, 0x09, 0x75, - 0xf0, 0x12, 0xa0, 0x4d, 0x0b, 0x41, 0x30, 0x7a, - 0x51, 0xf0, 0xb3, 0xaf, 0x23, 0x8f, 0x0f, 0xdf, - 0xf1, 0xff, 0x23, 0x64, 0x28, 0xca, 0xf8, 0x06 - }; -#endif - - PRIVATE_KEY_UNLOCK(); - - /* Initialize variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&pubKey, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(out, 0, keySz); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_ecc_init(&pubKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - -#if !defined(NO_ECC256) - ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); - ExpectIntEQ(wc_ecc_import_raw(&pubKey, qx, qy, NULL, curveName), 0); -#else - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); -#endif - -#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ - !defined(HAVE_SELFTEST) - ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); -#endif - - ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), 0); - -#if !defined(NO_ECC256) - ExpectIntEQ(XMEMCMP(out, expected_shared_secret, outlen), 0); -#endif - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_shared_secret(NULL, &pubKey, out, &outlen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret(&key, NULL, out, &outlen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, NULL, &outlen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* Invalid length */ - outlen = 1; - ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), - WC_NO_ERR_TRACE(BUFFER_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&pubKey); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - PRIVATE_KEY_LOCK(); -#endif - return EXPECT_RESULT(); -} /* END tests_wc_ecc_shared_secret */ - -/* - * testint wc_ecc_export_x963() - */ -static int test_wc_ecc_export_x963(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - byte out[ECC_ASN963_MAX_BUF_SZ]; - word32 outlen = sizeof(out); - int ret; - - PRIVATE_KEY_UNLOCK(); - - /* Initialize variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(out, 0, outlen); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY20, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_export_x963(NULL, out, &outlen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_export_x963(&key, NULL, &outlen), WC_NO_ERR_TRACE(LENGTH_ONLY_E)); - ExpectIntEQ(wc_ecc_export_x963(&key, out, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - key.idx = -4; - ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - PRIVATE_KEY_LOCK(); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_export_x963 */ - -/* - * Testing wc_ecc_export_x963_ex() - * compile with --enable-compkey will use compression. - */ -static int test_wc_ecc_export_x963_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; - byte out[ECC_ASN963_MAX_BUF_SZ]; - word32 outlen = sizeof(out); - #ifdef HAVE_COMP_KEY - word32 badOutLen = 5; - #endif - - /* Init stack variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(out, 0, outlen); - PRIVATE_KEY_UNLOCK(); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY64, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - -#ifdef HAVE_COMP_KEY - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), 0); -#else - ExpectIntEQ(ret = wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), 0); -#endif - - /* Test bad args. */ -#ifdef HAVE_COMP_KEY - ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, COMP), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, COMP), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, COMP), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#if defined(HAVE_FIPS) && (!defined(FIPS_VERSION_LT) || FIPS_VERSION_LT(5,3)) - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), WC_NO_ERR_TRACE(BUFFER_E)); -#else - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), - WC_NO_ERR_TRACE(LENGTH_ONLY_E)); -#endif - key.idx = -4; - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); -#else - ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, NOCOMP), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, NOCOMP), - WC_NO_ERR_TRACE(LENGTH_ONLY_E)); - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, 1), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, NOCOMP), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - key.idx = -4; - ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); -#endif - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_export_x963_ex */ - -/* - * testing wc_ecc_import_x963() - */ -static int test_wc_ecc_import_x963(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ - defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key pubKey; - ecc_key key; - WC_RNG rng; - byte x963[ECC_ASN963_MAX_BUF_SZ]; - word32 x963Len = (word32)sizeof(x963); - int ret; - - /* Init stack variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&pubKey, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(x963, 0, x963Len); - - ExpectIntEQ(wc_ecc_init(&pubKey), 0); - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); -#if FIPS_VERSION3_GE(6,0,0) - ret = wc_ecc_make_key(&rng, KEY32, &key); -#else - ret = wc_ecc_make_key(&rng, KEY24, &key); -#endif -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - - ExpectIntEQ(ret, 0); - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ecc_export_x963(&key, x963, &x963Len), 0); - PRIVATE_KEY_LOCK(); - - ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, &pubKey), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_import_x963(NULL, x963Len, &pubKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_x963(x963, x963Len + 1, &pubKey), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - wc_ecc_free(&pubKey); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END wc_ecc_import_x963 */ - -/* - * testing wc_ecc_import_private_key() - */ -static int test_wc_ecc_import_private_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ - defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key key; - ecc_key keyImp; - WC_RNG rng; - byte privKey[ECC_PRIV_KEY_BUF]; /* Raw private key.*/ - byte x963Key[ECC_ASN963_MAX_BUF_SZ]; - word32 privKeySz = (word32)sizeof(privKey); - word32 x963KeySz = (word32)sizeof(x963Key); - int ret; - - /* Init stack variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&keyImp, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(privKey, 0, privKeySz); - XMEMSET(x963Key, 0, x963KeySz); - PRIVATE_KEY_UNLOCK(); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_ecc_init(&keyImp), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY48, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - PRIVATE_KEY_UNLOCK(); - ExpectIntEQ(wc_ecc_export_x963(&key, x963Key, &x963KeySz), 0); - PRIVATE_KEY_LOCK(); - ExpectIntEQ(wc_ecc_export_private_only(&key, privKey, &privKeySz), 0); - - ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, - x963KeySz, &keyImp), 0); - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, - x963KeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_private_key(NULL, privKeySz, x963Key, x963KeySz, - &keyImp), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&keyImp); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_import_private_key */ - - -/* - * Testing wc_ecc_export_private_only() - */ -static int test_wc_ecc_export_private_only(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - byte out[ECC_PRIV_KEY_BUF]; - word32 outlen = sizeof(out); - int ret; - - /* Init stack variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(out, 0, outlen); - PRIVATE_KEY_UNLOCK(); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY32, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_export_private_only(&key, out, &outlen), 0); - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_export_private_only(NULL, out, &outlen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_export_private_only(&key, NULL, &outlen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_export_private_only(&key, out, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_export_private_only */ - - -/* - * Testing wc_ecc_rs_to_sig() - */ -static int test_wc_ecc_rs_to_sig(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(NO_ASN) - /* first [P-192,SHA-1] vector from FIPS 186-3 NIST vectors */ - const char* R = "6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e"; - const char* S = "02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41"; - const char* zeroStr = "0"; - byte sig[ECC_MAX_SIG_SIZE]; - word32 siglen = (word32)sizeof(sig); - /* R and S max size is the order of curve. 2^192.*/ - int keySz = KEY24; - byte r[KEY24]; - byte s[KEY24]; - word32 rlen = (word32)sizeof(r); - word32 slen = (word32)sizeof(s); -#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) - word32 zeroLen = 0; -#endif - - /* Init stack variables. */ - XMEMSET(sig, 0, ECC_MAX_SIG_SIZE); - XMEMSET(r, 0, keySz); - XMEMSET(s, 0, keySz); - - ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, &siglen), 0); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &slen), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_rs_to_sig(NULL, S, sig, &siglen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_rs_to_sig(R, NULL, sig, &siglen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_rs_to_sig(R, S, NULL, &siglen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_rs_to_sig(R, zeroStr, sig, &siglen), WC_NO_ERR_TRACE(MP_ZERO_E)); - ExpectIntEQ(wc_ecc_rs_to_sig(zeroStr, S, sig, &siglen), WC_NO_ERR_TRACE(MP_ZERO_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(NULL, siglen, r, &rlen, s, &slen), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, NULL, &rlen, s, &slen), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, NULL, s, &slen), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, NULL, &slen), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, NULL), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); -#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &zeroLen, s, &slen), - WC_NO_ERR_TRACE(BUFFER_E)); - ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &zeroLen), - WC_NO_ERR_TRACE(BUFFER_E)); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_rs_to_sig */ - -static int test_wc_ecc_import_raw(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(NO_ECC256) - ecc_key key; - const char* qx = - "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; - const char* qy = - "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; - const char* d = - "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; - const char* curveName = "SECP256R1"; -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - const char* kNullStr = ""; - int ret; -#endif - - XMEMSET(&key, 0, sizeof(ecc_key)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - - /* Test good import */ - ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_import_raw(NULL, qx, qy, d, curveName), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_raw(&key, NULL, qy, d, curveName), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_raw(&key, qx, NULL, d, curveName), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif - ExpectIntLT(ret = wc_ecc_import_raw(&key, kNullStr, kNullStr, kNullStr, - curveName), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(ECC_INF_E)) || (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); -#endif -#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - ExpectIntLT(ret = wc_ecc_import_raw(&key, "0", qy, d, curveName), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) || (ret == WC_NO_ERR_TRACE(MP_VAL))); -#else - ExpectIntEQ(wc_ecc_import_raw(&key, "0", qy, d, curveName), 0); -#endif - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - ExpectIntLT(ret = wc_ecc_import_raw(&key, qx, "0", d, curveName), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) || (ret == WC_NO_ERR_TRACE(MP_VAL))); -#else - ExpectIntEQ(wc_ecc_import_raw(&key, qx, "0", d, curveName), 0); -#endif - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif - ExpectIntEQ(wc_ecc_import_raw(&key, "0", "0", d, curveName), WC_NO_ERR_TRACE(ECC_INF_E)); -#endif - - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_import_raw */ - -static int test_wc_ecc_import_unsigned(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ - HAVE_FIPS_VERSION >= 2)) - ecc_key key; - const byte qx[] = { - 0xbb, 0x33, 0xac, 0x4c, 0x27, 0x50, 0x4a, 0xc6, - 0x4a, 0xa5, 0x04, 0xc3, 0x3c, 0xde, 0x9f, 0x36, - 0xdb, 0x72, 0x2d, 0xce, 0x94, 0xea, 0x2b, 0xfa, - 0xcb, 0x20, 0x09, 0x39, 0x2c, 0x16, 0xe8, 0x61 - }; - const byte qy[] = { - 0x02, 0xe9, 0xaf, 0x4d, 0xd3, 0x02, 0x93, 0x9a, - 0x31, 0x5b, 0x97, 0x92, 0x21, 0x7f, 0xf0, 0xcf, - 0x18, 0xda, 0x91, 0x11, 0x02, 0x34, 0x86, 0xe8, - 0x20, 0x58, 0x33, 0x0b, 0x80, 0x34, 0x89, 0xd8 - }; - const byte d[] = { - 0x45, 0xb6, 0x69, 0x02, 0x73, 0x9c, 0x6c, 0x85, - 0xa1, 0x38, 0x5b, 0x72, 0xe8, 0xe8, 0xc7, 0xac, - 0xc4, 0x03, 0x8d, 0x53, 0x35, 0x04, 0xfa, 0x6c, - 0x28, 0xdc, 0x34, 0x8d, 0xe1, 0xa8, 0x09, 0x8c - }; -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - const byte nullBytes[32] = {0}; - int ret; -#endif - int curveId = ECC_SECP256R1; - - XMEMSET(&key, 0, sizeof(ecc_key)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - - ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, - curveId), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_import_unsigned(NULL, (byte*)qx, (byte*)qy, (byte*)d, - curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_unsigned(&key, NULL, (byte*)qy, (byte*)d, - curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, NULL, (byte*)d, - curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, - ECC_CURVE_INVALID), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifdef WOLFSSL_VALIDATE_ECC_IMPORT - ExpectIntLT(ret = wc_ecc_import_unsigned(&key, (byte*)nullBytes, - (byte*)nullBytes, (byte*)nullBytes, curveId), 0); - ExpectTrue((ret == WC_NO_ERR_TRACE(ECC_INF_E)) || (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); -#endif - - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_import_unsigned */ - - -/* - * Testing wc_ecc_sig_size() - */ -static int test_wc_ecc_sig_size(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int keySz = KEY16; - int ret; - - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntLE(wc_ecc_sig_size(&key), - (2 * keySz + SIG_HEADER_SZ + ECC_MAX_PAD_SZ)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_sig_size */ - -/* - * Testing wc_ecc_ctx_new() - */ -static int test_wc_ecc_ctx_new(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - WC_RNG rng; - ecEncCtx* cli = NULL; - ecEncCtx* srv = NULL; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectNotNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); - ExpectNotNull(srv = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); - wc_ecc_ctx_free(cli); - cli = NULL; - wc_ecc_ctx_free(srv); - - /* Test bad args. */ - /* wc_ecc_ctx_new_ex() will free if returned NULL. */ - ExpectNull(cli = wc_ecc_ctx_new(0, &rng)); - ExpectNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, NULL)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_ctx_free(cli); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_ctx_new */ - -/* - * Tesing wc_ecc_reset() - */ -static int test_wc_ecc_ctx_reset(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - ecEncCtx* ctx = NULL; - WC_RNG rng; - - XMEMSET(&rng, 0, sizeof(rng)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); - - ExpectIntEQ(wc_ecc_ctx_reset(ctx, &rng), 0); - - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_ctx_reset(NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_ctx_reset(ctx, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ecc_ctx_free(ctx); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_ctx_reset */ - -/* - * Testing wc_ecc_ctx_set_peer_salt() and wc_ecc_ctx_get_own_salt() - */ -static int test_wc_ecc_ctx_set_peer_salt(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - WC_RNG rng; - ecEncCtx* cliCtx = NULL; - ecEncCtx* servCtx = NULL; - const byte* cliSalt = NULL; - const byte* servSalt = NULL; - - XMEMSET(&rng, 0, sizeof(rng)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectNotNull(cliCtx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); - ExpectNotNull(servCtx = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); - - /* Test bad args. */ - ExpectNull(cliSalt = wc_ecc_ctx_get_own_salt(NULL)); - - ExpectNotNull(cliSalt = wc_ecc_ctx_get_own_salt(cliCtx)); - ExpectNotNull(servSalt = wc_ecc_ctx_get_own_salt(servCtx)); - - ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, servSalt), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_ctx_set_peer_salt(NULL, servSalt), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ecc_ctx_free(cliCtx); - wc_ecc_ctx_free(servCtx); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_ecc_ctx_set_peer_salt */ - -/* - * Testing wc_ecc_ctx_set_info() - */ -static int test_wc_ecc_ctx_set_info(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - ecEncCtx* ctx = NULL; - WC_RNG rng; - const char* optInfo = "Optional Test Info."; - int optInfoSz = (int)XSTRLEN(optInfo); - const char* badOptInfo = NULL; - - XMEMSET(&rng, 0, sizeof(rng)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); - - ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, optInfoSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_ctx_set_info(NULL, (byte*)optInfo, optInfoSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)badOptInfo, optInfoSz), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, -1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_ecc_ctx_free(ctx); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_ctx_set_info */ - -/* - * Testing wc_ecc_encrypt() and wc_ecc_decrypt() - */ -static int test_wc_ecc_encryptDecrypt(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) && \ - defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128) - ecc_key srvKey; - ecc_key cliKey; - ecc_key tmpKey; - WC_RNG rng; - int ret; - const char* msg = "EccBlock Size 16"; - word32 msgSz = (word32)XSTRLEN("EccBlock Size 16"); -#ifdef WOLFSSL_ECIES_OLD - byte out[(sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; -#elif defined(WOLFSSL_ECIES_GEN_IV) - byte out[KEY20 * 2 + 1 + AES_BLOCK_SIZE + - (sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; -#else - byte out[KEY20 * 2 + 1 + (sizeof("EccBlock Size 16") - 1) + - WC_SHA256_DIGEST_SIZE]; -#endif - word32 outSz = (word32)sizeof(out); - byte plain[sizeof("EccBlock Size 16")]; - word32 plainSz = (word32)sizeof(plain); - int keySz = KEY20; - - /* Init stack variables. */ - XMEMSET(out, 0, outSz); - XMEMSET(plain, 0, plainSz); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&srvKey, 0, sizeof(ecc_key)); - XMEMSET(&cliKey, 0, sizeof(ecc_key)); - XMEMSET(&tmpKey, 0, sizeof(ecc_key)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ecc_init(&cliKey), 0); - ret = wc_ecc_make_key(&rng, keySz, &cliKey); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &cliKey.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_init(&srvKey), 0); - ret = wc_ecc_make_key(&rng, keySz, &srvKey); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &srvKey.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_init(&tmpKey), 0); - -#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ - !defined(HAVE_SELFTEST) - ExpectIntEQ(wc_ecc_set_rng(&srvKey, &rng), 0); - ExpectIntEQ(wc_ecc_set_rng(&cliKey, &rng), 0); -#endif - - ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, - &outSz, NULL), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_encrypt(NULL, &srvKey, (byte*)msg, msgSz, out, &outSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_encrypt(&cliKey, NULL, (byte*)msg, msgSz, out, &outSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, NULL, msgSz, out, &outSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, NULL, - &outSz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - -#ifdef WOLFSSL_ECIES_OLD - tmpKey.dp = cliKey.dp; - ExpectIntEQ(wc_ecc_copy_point(&cliKey.pubkey, &tmpKey.pubkey), 0); -#endif - - ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, &plainSz, - NULL), 0); - ExpectIntEQ(wc_ecc_decrypt(NULL, &tmpKey, out, outSz, plain, &plainSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifdef WOLFSSL_ECIES_OLD - /* NULL parameter allowed in new implementations - public key comes from - * the message. */ - ExpectIntEQ(wc_ecc_decrypt(&srvKey, NULL, out, outSz, plain, &plainSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, NULL, outSz, plain, &plainSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, NULL, &plainSz, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(XMEMCMP(msg, plain, msgSz), 0); - - wc_ecc_free(&tmpKey); - wc_ecc_free(&srvKey); - wc_ecc_free(&cliKey); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_encryptDecrypt */ - -/* - * Testing wc_ecc_del_point() and wc_ecc_new_point() - */ -static int test_wc_ecc_del_point(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) - ecc_point* pt = NULL; - - ExpectNotNull(pt = wc_ecc_new_point()); - wc_ecc_del_point(pt); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_del_point */ - -/* - * Testing wc_ecc_point_is_at_infinity(), wc_ecc_export_point_der(), - * wc_ecc_import_point_der(), wc_ecc_copy_point(), wc_ecc_point_is_on_curve(), - * and wc_ecc_cmp_point() - */ -static int test_wc_ecc_pointFns(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && \ - !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ - !defined(WOLFSSL_ATECC608A) - ecc_key key; - WC_RNG rng; - int ret; - ecc_point* point = NULL; - ecc_point* cpypt = NULL; - int idx = 0; - int keySz = KEY32; - byte der[DER_SZ(KEY32)]; - word32 derlenChk = 0; - word32 derSz = DER_SZ(KEY32); - - /* Init stack variables. */ - XMEMSET(der, 0, derSz); - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ecc_init(&key), 0); - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectNotNull(point = wc_ecc_new_point()); - ExpectNotNull(cpypt = wc_ecc_new_point()); - - /* Export */ - ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, NULL, - &derlenChk), WC_NO_ERR_TRACE(LENGTH_ONLY_E)); - /* Check length value. */ - ExpectIntEQ(derSz, derlenChk); - ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, - &derSz), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_export_point_der(-2, &key.pubkey, der, &derSz), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), NULL, der, &derSz), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, - NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - /* Import */ - ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, point), 0); - ExpectIntEQ(wc_ecc_cmp_point(&key.pubkey, point), 0); - /* Test bad args. */ - ExpectIntEQ( wc_ecc_import_point_der(NULL, derSz, idx, point), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_import_point_der(der, derSz, -1, point), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_import_point_der(der, derSz + 1, idx, point), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - /* Copy */ - ExpectIntEQ(wc_ecc_copy_point(point, cpypt), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_copy_point(NULL, cpypt), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_copy_point(point, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - /* Compare point */ - ExpectIntEQ(wc_ecc_cmp_point(point, cpypt), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_cmp_point(NULL, cpypt), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_cmp_point(point, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* At infinity if return == 1, otherwise return == 0. */ - ExpectIntEQ(wc_ecc_point_is_at_infinity(point), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_point_is_at_infinity(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - -#if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2))) -#ifdef USE_ECC_B_PARAM - /* On curve if ret == 0 */ - ExpectIntEQ(wc_ecc_point_is_on_curve(point, idx), 0); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_point_is_on_curve(NULL, idx), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_point_is_on_curve(point, 1000), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); -#endif /* USE_ECC_B_PARAM */ -#endif /* !HAVE_SELFTEST && (!HAVE_FIPS || HAVE_FIPS_VERSION > 2) */ - - /* Free */ - wc_ecc_del_point(point); - wc_ecc_del_point(cpypt); - wc_ecc_free(&key); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_pointFns */ - - -/* - * Testing wc_ecc_shared_secret_ssh() - */ -static int test_wc_ecc_shared_secret_ssh(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && \ - !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ - !defined(WOLFSSL_ATECC608A) && !defined(PLUTON_CRYPTO_ECC) && \ - !defined(WOLFSSL_CRYPTOCELL) - ecc_key key; - ecc_key key2; - WC_RNG rng; - int ret; - int keySz = KEY32; -#if FIPS_VERSION3_GE(6,0,0) - int key2Sz = KEY28; -#else - int key2Sz = KEY24; -#endif - byte secret[KEY32]; - word32 secretLen = (word32)keySz; - - /* Init stack variables. */ - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&key2, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(secret, 0, secretLen); - PRIVATE_KEY_UNLOCK(); - - /* Make keys */ - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); - - ExpectIntEQ(wc_ecc_init(&key2), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, key2Sz, &key2); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key2.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - -#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ - !defined(HAVE_SELFTEST) - ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); -#endif - - ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, - &secretLen), 0); - /* Pass in bad args. */ - ExpectIntEQ(wc_ecc_shared_secret_ssh(NULL, &key2.pubkey, secret, - &secretLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, NULL, secret, &secretLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, NULL, &secretLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - key.type = ECC_PUBLICKEY; - ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, - &secretLen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - PRIVATE_KEY_LOCK(); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - wc_ecc_free(&key2); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_shared_secret_ssh */ - -/* - * Testing wc_ecc_verify_hash_ex() and wc_ecc_verify_hash_ex() - */ -static int test_wc_ecc_verify_hash_ex(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && defined(WOLFSSL_PUBLIC_MP) \ - && !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ - !defined(WOLFSSL_ATECC608A) && !defined(WOLFSSL_KCAPI_ECC) - ecc_key key; - WC_RNG rng; - int ret; - mp_int r; - mp_int s; - mp_int z; - unsigned char hash[] = "Everyone gets Friday off.EccSig"; - unsigned char iHash[] = "Everyone gets Friday off......."; - unsigned char shortHash[] = TEST_STRING; - word32 hashlen = sizeof(hash); - word32 iHashLen = sizeof(iHash); - word32 shortHashLen = sizeof(shortHash); - int keySz = KEY32; - int verify_ok = 0; - - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(&r, 0, sizeof(mp_int)); - XMEMSET(&s, 0, sizeof(mp_int)); - XMEMSET(&z, 0, sizeof(mp_int)); - - /* Initialize r, s and z. */ - ExpectIntEQ(mp_init_multi(&r, &s, &z, NULL, NULL, NULL), MP_OKAY); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, keySz, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, &s), 0); - /* verify_ok should be 1. */ - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, hash, hashlen, &verify_ok, &key), - 0); - ExpectIntEQ(verify_ok, 1); - - /* verify_ok should be 0 */ - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, iHash, iHashLen, &verify_ok, - &key), 0); - ExpectIntEQ(verify_ok, 0); - - /* verify_ok should be 0. */ - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, - &verify_ok, &key), 0); - ExpectIntEQ(verify_ok, 0); - - /* Test bad args. */ - ExpectIntEQ(wc_ecc_sign_hash_ex(NULL, hashlen, &rng, &key, &r, &s), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, NULL, &key, &r, &s), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, NULL, &r, &s), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, NULL, &s), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, NULL), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_verify_hash_ex(NULL, &s, shortHash, shortHashLen, - &verify_ok, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, NULL, shortHash, shortHashLen, - &verify_ok, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &s, shortHash, shortHashLen, - &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &z, shortHash, shortHashLen, - &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &z, shortHash, shortHashLen, - &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, NULL, shortHashLen, &verify_ok, - &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, NULL, - &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, - &verify_ok, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - wc_ecc_free(&key); - mp_free(&r); - mp_free(&s); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_verify_hash_ex */ - -/* - * Testing wc_ecc_mulmod() - */ - -static int test_wc_ecc_mulmod(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && \ - !(defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) || \ - defined(WOLFSSL_VALIDATE_ECC_IMPORT)) - ecc_key key1; - ecc_key key2; - ecc_key key3; - WC_RNG rng; - int ret; - - XMEMSET(&key1, 0, sizeof(ecc_key)); - XMEMSET(&key2, 0, sizeof(ecc_key)); - XMEMSET(&key3, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ecc_init(&key1), 0); - ExpectIntEQ(wc_ecc_init(&key2), 0); - ExpectIntEQ(wc_ecc_init(&key3), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, KEY32, &key1); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key1.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - DoExpectIntEQ(wc_FreeRng(&rng), 0); - - ExpectIntEQ(wc_ecc_import_raw_ex(&key2, key1.dp->Gx, key1.dp->Gy, - key1.dp->Af, ECC_SECP256R1), 0); - ExpectIntEQ(wc_ecc_import_raw_ex(&key3, key1.dp->Gx, key1.dp->Gy, - key1.dp->prime, ECC_SECP256R1), 0); - - ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, - &key3.pubkey, wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), - 1), 0); - - /* Test bad args. */ - ExpectIntEQ(ret = wc_ecc_mulmod(NULL, &key2.pubkey, &key3.pubkey, - wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), NULL, &key3.pubkey, - wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, NULL, - wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), - WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, - &key3.pubkey, wc_ecc_key_get_priv(&key2), NULL, 1), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); - - wc_ecc_free(&key1); - wc_ecc_free(&key2); - wc_ecc_free(&key3); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif /* HAVE_ECC && !WOLFSSL_ATECC508A */ - return EXPECT_RESULT(); -} /* END test_wc_ecc_mulmod */ - -/* - * Testing wc_ecc_is_valid_idx() - */ -static int test_wc_ecc_is_valid_idx(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; - int iVal = -2; - int iVal2 = 3000; - - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, 32, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - ExpectIntEQ(wc_ecc_is_valid_idx(key.idx), 1); - /* Test bad args. */ - ExpectIntEQ(wc_ecc_is_valid_idx(iVal), 0); - ExpectIntEQ(wc_ecc_is_valid_idx(iVal2), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); - -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_is_valid_idx */ - -/* - * Testing wc_ecc_get_curve_id_from_oid() - */ -static int test_wc_ecc_get_curve_id_from_oid(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ - !defined(HAVE_FIPS) - const byte oid[] = {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07}; - word32 len = sizeof(oid); - - /* Bad Cases */ - ExpectIntEQ(wc_ecc_get_curve_id_from_oid(NULL, len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, 0), ECC_CURVE_INVALID); - /* Good Case */ - ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, len), ECC_SECP256R1); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_get_curve_id_from_oid */ - -/* - * Testing wc_ecc_sig_size_calc() - */ -static int test_wc_ecc_sig_size_calc(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) - ecc_key key; - WC_RNG rng; - int sz = 0; - int ret; - - XMEMSET(&key, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ecc_init(&key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ret = wc_ecc_make_key(&rng, 16, &key); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); -#endif -#if FIPS_VERSION3_GE(6,0,0) - ExpectIntEQ(ret, WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#else - ExpectIntEQ(ret, 0); -#endif -#if FIPS_VERSION3_LT(6,0,0) - sz = key.dp->size; - ExpectIntGT(wc_ecc_sig_size_calc(sz), 0); -#else - (void) sz; -#endif - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ecc_free(&key); -#endif - return EXPECT_RESULT(); -} /* END test_wc_ecc_sig_size_calc */ - -/* - * Testing wc_ecc_sm2_make_key() - */ -static int test_wc_ecc_sm2_make_key(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) - EXPECT_DECLS; - WC_RNG rng[1]; - ecc_key key[1]; - - XMEMSET(rng, 0, sizeof(*rng)); - XMEMSET(key, 0, sizeof(*key)); - - ExpectIntEQ(wc_InitRng(rng), 0); - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_make_key(NULL, NULL, WC_ECC_FLAG_NONE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_make_key(rng, NULL, WC_ECC_FLAG_NONE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_make_key(NULL, key, WC_ECC_FLAG_NONE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); - ExpectIntEQ(key->dp->id, ECC_SM2P256V1); - - wc_ecc_free(key); - wc_FreeRng(rng); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - -/* - * Testing wc_ecc_sm2_shared_secret() - */ -static int test_wc_ecc_sm2_shared_secret(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) - EXPECT_DECLS; - WC_RNG rng[1]; - ecc_key keyA[1]; - ecc_key keyB[1]; - byte outA[32]; - byte outB[32]; - word32 outALen = 32; - word32 outBLen = 32; - - XMEMSET(rng, 0, sizeof(*rng)); - XMEMSET(keyA, 0, sizeof(*keyA)); - XMEMSET(keyB, 0, sizeof(*keyB)); - - ExpectIntEQ(wc_InitRng(rng), 0); - ExpectIntEQ(wc_ecc_init(keyA), 0); - ExpectIntEQ(wc_ecc_init(keyB), 0); - ExpectIntEQ(wc_ecc_sm2_make_key(rng, keyA, WC_ECC_FLAG_NONE), 0); - ExpectIntEQ(wc_ecc_sm2_make_key(rng, keyB, WC_ECC_FLAG_NONE), 0); - -#ifdef ECC_TIMING_RESISTANT - ExpectIntEQ(wc_ecc_set_rng(keyA, rng), 0); - ExpectIntEQ(wc_ecc_set_rng(keyB, rng), 0); -#endif - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, NULL, NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, keyB, NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, outA, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, NULL, &outALen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, keyB, outA, &outALen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, NULL, outA, &outALen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, NULL, &outALen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, outA, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, outA, &outALen), 0); - ExpectIntLE(outALen, 32); - ExpectIntEQ(wc_ecc_sm2_shared_secret(keyB, keyA, outB, &outBLen), 0); - ExpectIntLE(outBLen, 32); - ExpectIntEQ(outALen, outBLen); - ExpectBufEQ(outA, outB, outALen); - - wc_ecc_free(keyB); - wc_ecc_free(keyA); - wc_FreeRng(rng); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - -/* - * Testing wc_ecc_sm2_create_digest() - */ -static int test_wc_ecc_sm2_create_digest(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && !defined(NO_HASH_WRAPPER) && \ - (defined(WOLFSSL_SM3) || !defined(NO_SHA256)) - EXPECT_DECLS; - ecc_key key[1]; - enum wc_HashType hashType; - unsigned char pub[] = { - 0x04, - 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, - 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, - 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, - 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, - 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, - 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, - 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, - 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 - }; - unsigned char id[] = { - 0x01, 0x02, 0x03, - }; - unsigned char msg[] = { - 0x01, 0x02, 0x03, - }; - unsigned char hash[32]; -#ifdef WOLFSSL_SM3 - unsigned char expHash[32] = { - 0xc1, 0xdd, 0x92, 0xc5, 0x60, 0xd3, 0x94, 0x28, - 0xeb, 0x0f, 0x57, 0x79, 0x3f, 0xc9, 0x96, 0xc5, - 0xfa, 0xf5, 0x90, 0xb2, 0x64, 0x2f, 0xaf, 0x9c, - 0xc8, 0x57, 0x21, 0x6a, 0x52, 0x7e, 0xf1, 0x95 - }; -#else - unsigned char expHash[32] = { - 0xea, 0x41, 0x55, 0x21, 0x61, 0x00, 0x5c, 0x9a, - 0x57, 0x35, 0x6b, 0x49, 0xca, 0x8f, 0x65, 0xc2, - 0x0e, 0x29, 0x0c, 0xa0, 0x1d, 0xa7, 0xc4, 0xed, - 0xdd, 0x51, 0x12, 0xf6, 0xe7, 0x55, 0xc5, 0xf4 - }; -#endif - -#ifdef WOLFSSL_SM3 - hashType = WC_HASH_TYPE_SM3; -#else - hashType = WC_HASH_TYPE_SHA256; -#endif - - XMEMSET(key, 0, sizeof(*key)); - - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test with no curve set. */ - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), - hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), NULL, sizeof(msg), - hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), msg, sizeof(msg), - hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), - hashType, hash, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), - hashType, NULL, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), msg, sizeof(msg), - hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), NULL, sizeof(msg), - hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - hashType, NULL, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - hashType, hash, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Bad hash type. */ - /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - -1, hash, 0, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ - /* Bad hash size. */ - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - hashType, hash, 0, key), WC_NO_ERR_TRACE(BUFFER_E)); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), - hashType, hash, sizeof(hash), key), 0); - ExpectBufEQ(hash, expHash, sizeof(expHash)); - - wc_ecc_free(key); - - res = EXPECT_RESULT(); -#endif - return res; -} -/* - * Testing wc_ecc_sm2_verify_hash_ex() - */ -static int test_wc_ecc_sm2_verify_hash_ex(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_VERIFY) && \ - defined(WOLFSSL_PUBLIC_MP) - EXPECT_DECLS; - ecc_key key[1]; - mp_int r[1]; - mp_int s[1]; - int verified; - unsigned char pub[] = { - 0x04, - 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, - 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, - 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, - 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, - 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, - 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, - 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, - 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 - }; - unsigned char hash[] = { - 0x3B, 0xFA, 0x5F, 0xFB, 0xC4, 0x27, 0x8C, 0x9D, - 0x02, 0x3A, 0x19, 0xCB, 0x1E, 0xAA, 0xD2, 0xF1, - 0x50, 0x69, 0x5B, 0x20 - }; - unsigned char rData[] = { - 0xD2, 0xFC, 0xA3, 0x88, 0xE3, 0xDF, 0xA3, 0x00, - 0x73, 0x9B, 0x3C, 0x2A, 0x0D, 0xAD, 0x44, 0xA2, - 0xFC, 0x62, 0xD5, 0x6B, 0x84, 0x54, 0xD8, 0x40, - 0x22, 0x62, 0x3D, 0x5C, 0xA6, 0x61, 0x9B, 0xE7, - }; - unsigned char sData[] = { - 0x1D, - 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, - 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, - 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, - 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDC - }; - unsigned char rBadData[] = { - 0xD2, 0xFC, 0xA3, 0x88, 0xE3, 0xDF, 0xA3, 0x00, - 0x73, 0x9B, 0x3C, 0x2A, 0x0D, 0xAD, 0x44, 0xA2, - 0xFC, 0x62, 0xD5, 0x6B, 0x84, 0x54, 0xD8, 0x40, - 0x22, 0x62, 0x3D, 0x5C, 0xA6, 0x61, 0x9B, 0xE8, - }; - - XMEMSET(key, 0, sizeof(*key)); - XMEMSET(r, 0, sizeof(*r)); - XMEMSET(s, 0, sizeof(*s)); - - ExpectIntEQ(mp_init(r), 0); - ExpectIntEQ(mp_init(s), 0); - ExpectIntEQ(mp_read_unsigned_bin(r, rData, sizeof(rData)), 0); - ExpectIntEQ(mp_read_unsigned_bin(s, sData, sizeof(sData)), 0); - - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test with no curve set. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, NULL, NULL, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, s, NULL, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, hash, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), - &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), - NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, s, hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, NULL, hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, NULL, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Make key not on the SM2 curve. */ - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - &verified, key), 0); - ExpectIntEQ(verified, 1); - - ExpectIntEQ(mp_read_unsigned_bin(r, rBadData, sizeof(rBadData)), 0); - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), - &verified, key), 0); - ExpectIntEQ(verified, 0); - - mp_free(s); - mp_free(r); - wc_ecc_free(key); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - -/* - * Testing wc_ecc_sm2_verify_hash() - */ -static int test_wc_ecc_sm2_verify_hash(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_VERIFY) - EXPECT_DECLS; - ecc_key key[1]; - int verified; - unsigned char pub[] = { - 0x04, - 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, - 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, - 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, - 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, - 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, - 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, - 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, - 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 - }; - unsigned char hash[] = { - 0x3B, 0xFA, 0x5F, 0xFB, 0xC4, 0x27, 0x8C, 0x9D, - 0x02, 0x3A, 0x19, 0xCB, 0x1E, 0xAA, 0xD2, 0xF1, - 0x50, 0x69, 0x5B, 0x20 - }; - unsigned char sig[] = { - 0x30, 0x45, 0x02, 0x21, 0x00, 0xD2, 0xFC, 0xA3, - 0x88, 0xE3, 0xDF, 0xA3, 0x00, 0x73, 0x9B, 0x3C, - 0x2A, 0x0D, 0xAD, 0x44, 0xA2, 0xFC, 0x62, 0xD5, - 0x6B, 0x84, 0x54, 0xD8, 0x40, 0x22, 0x62, 0x3D, - 0x5C, 0xA6, 0x61, 0x9B, 0xE7, 0x02, 0x20, 0x1D, - 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, - 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, - 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, - 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDC - }; - unsigned char sigBad[] = { - 0x30, 0x45, 0x02, 0x21, 0x00, 0xD2, 0xFC, 0xA3, - 0x88, 0xE3, 0xDF, 0xA3, 0x00, 0x73, 0x9B, 0x3C, - 0x2A, 0x0D, 0xAD, 0x44, 0xA2, 0xFC, 0x62, 0xD5, - 0x6B, 0x84, 0x54, 0xD8, 0x40, 0x22, 0x62, 0x3D, - 0x5C, 0xA6, 0x61, 0x9B, 0xE7, 0x02, 0x20, 0x1D, - 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, - 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, - 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, - 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDD - }; - - - XMEMSET(key, 0, sizeof(*key)); - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test with no curve set. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), NULL, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), hash, sizeof(hash), - NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), - &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), - NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), NULL, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), - NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), - &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Make key not on the SM2 curve. */ - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), - &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), - &verified, key), 0); - ExpectIntEQ(verified, 1); - - ExpectIntEQ(wc_ecc_sm2_verify_hash(sigBad, sizeof(sigBad), hash, - sizeof(hash), &verified, key), 0); - ExpectIntEQ(verified, 0); - - wc_ecc_free(key); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - -/* - * Testing wc_ecc_sm2_verify_hash_ex() - */ -static int test_wc_ecc_sm2_sign_hash_ex(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_SIGN) && \ - defined(WOLFSSL_PUBLIC_MP) - EXPECT_DECLS; - WC_RNG rng[1]; - ecc_key key[1]; - mp_int r[1]; - mp_int s[1]; - unsigned char hash[32]; -#ifdef HAVE_ECC_VERIFY - int verified; -#endif - - XMEMSET(rng, 0, sizeof(*rng)); - XMEMSET(key, 0, sizeof(*key)); - XMEMSET(r, 0, sizeof(*r)); - XMEMSET(s, 0, sizeof(*s)); - - ExpectIntEQ(wc_InitRng(rng), 0); - ExpectIntEQ(mp_init(r), 0); - ExpectIntEQ(mp_init(s), 0); - ExpectIntEQ(wc_RNG_GenerateBlock(rng, hash, sizeof(hash)), 0); - - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test with no curve set. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), NULL, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), rng, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, key, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, r, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, NULL, - s), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), rng, key, r, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), NULL, key, r, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, NULL, r, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, NULL, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Make key not on the SM2 curve. */ - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); - -#ifdef WOLFSSL_SP_MATH_ALL - { - mp_int smallR[1]; - sp_init_size(smallR, 1); - /* Force failure in _ecc_sm2_calc_r_s by r being too small. */ - ExpectIntLT(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, - smallR, s), 0); - } -#endif - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), - 0); -#ifdef HAVE_ECC_VERIFY - ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), &verified, - key), 0); - ExpectIntEQ(verified, 1); -#endif - - mp_free(s); - mp_free(r); - wc_ecc_free(key); - wc_FreeRng(rng); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - - -/* - * Testing wc_ecc_sm2_verify_hash() - */ -static int test_wc_ecc_sm2_sign_hash(void) -{ - int res = TEST_SKIPPED; -#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_SIGN) - EXPECT_DECLS; - WC_RNG rng[1]; - ecc_key key[1]; - unsigned char hash[32]; - unsigned char sig[72]; - word32 sigSz = sizeof(sig); -#ifdef HAVE_ECC_VERIFY - int verified; -#endif - - XMEMSET(rng, 0, sizeof(*rng)); - XMEMSET(key, 0, sizeof(*key)); - - ExpectIntEQ(wc_InitRng(rng), 0); - ExpectIntEQ(wc_RNG_GenerateBlock(rng, hash, sizeof(hash)), 0); - - ExpectIntEQ(wc_ecc_init(key), 0); - - /* Test with no curve set. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); - - /* Test invalid parameters. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), NULL, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), sig, NULL, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, &sigSz, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, rng, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, NULL, - key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), sig, &sigSz, rng, - key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), NULL, &sigSz, rng, - key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, NULL, rng, - key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, NULL, - key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Make key not on the SM2 curve. */ - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); - - /* Test valid parameters. */ - ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), - 0); -#ifdef HAVE_ECC_VERIFY - ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sigSz, hash, sizeof(hash), - &verified, key), 0); - ExpectIntEQ(verified, 1); -#endif - - wc_ecc_free(key); - wc_FreeRng(rng); -#ifdef FP_ECC - wc_ecc_fp_free(); -#endif - - res = EXPECT_RESULT(); -#endif - return res; -} - /* * Testing ToTraditional @@ -20134,16931 +14608,6 @@ static int test_ToTraditional(void) return EXPECT_RESULT(); } /* End test_ToTraditional*/ -/* - * Testing wc_EccPrivateKeyToDer - */ -static int test_wc_EccPrivateKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - byte output[ONEK_BUF]; - ecc_key eccKey; - WC_RNG rng; - word32 inLen = 0; - word32 outLen = 0; - int ret; - - XMEMSET(&eccKey, 0, sizeof(ecc_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - PRIVATE_KEY_UNLOCK(); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ecc_init(&eccKey), 0); - ret = wc_ecc_make_key(&rng, KEY14, &eccKey); -#if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); -#endif - ExpectIntEQ(ret, 0); - - /* Bad Cases */ - ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - inLen = wc_EccPrivateKeyToDer(&eccKey, NULL, 0); - ExpectIntGT(inLen, 0); - ExpectIntEQ(wc_EccPrivateKeyToDer(&eccKey, output, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* Good Case */ - ExpectIntGT(outLen = (word32)wc_EccPrivateKeyToDer(&eccKey, output, inLen), 0); - - wc_ecc_free(&eccKey); - DoExpectIntEQ(wc_FreeRng(&rng), 0); - -#if defined(OPENSSL_EXTRA) && defined(HAVE_ALL_CURVES) - { - /* test importing private only into a PKEY struct */ - EC_KEY* ec = NULL; - EVP_PKEY* pkey = NULL; - const unsigned char* der; - - der = output; - ExpectNotNull(pkey = d2i_PrivateKey(EVP_PKEY_EC, NULL, &der, outLen)); - - der = output; - ExpectNotNull(ec = d2i_ECPrivateKey(NULL, &der, outLen)); - ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ec), SSL_SUCCESS); - if (EXPECT_FAIL()) { - EC_KEY_free(ec); - } - EVP_PKEY_free(pkey); /* EC_KEY should be free'd by free'ing pkey */ - } -#endif - PRIVATE_KEY_LOCK(); -#endif - return EXPECT_RESULT(); -} /* End test_wc_EccPrivateKeyToDer*/ - -/* - * Testing wc_DhPublicKeyDecode - */ -static int test_wc_DhPublicKeyDecode(void) -{ - EXPECT_DECLS; -#ifndef NO_DH -#if defined(WOLFSSL_DH_EXTRA) && defined(USE_CERT_BUFFERS_2048) - DhKey key; - word32 inOutIdx; - - XMEMSET(&key, 0, sizeof(DhKey)); - - ExpectIntEQ(wc_InitDhKey(&key), 0); - - ExpectIntEQ(wc_DhPublicKeyDecode(NULL,NULL,NULL,0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - inOutIdx = 0; - ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,NULL, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - inOutIdx = 0; - ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, 0), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - inOutIdx = 0; - ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, - sizeof_dh_pub_key_der_2048), 0); - ExpectIntNE(key.p.used, 0); - ExpectIntNE(key.g.used, 0); - ExpectIntEQ(key.q.used, 0); - ExpectIntNE(key.pub.used, 0); - ExpectIntEQ(key.priv.used, 0); - - DoExpectIntEQ(wc_FreeDhKey(&key), 0); -#endif -#endif /* !NO_DH */ - return EXPECT_RESULT(); -} - -/* - * Testing wc_Ed25519KeyToDer - */ -static int test_wc_Ed25519KeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed25519_key ed25519Key; - WC_RNG rng; - word32 inLen; - - XMEMSET(&ed25519Key, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&ed25519Key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key), 0); - inLen = (word32)sizeof(output); - - /* Bad Cases */ - ExpectIntEQ(wc_Ed25519KeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed25519KeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed25519KeyToDer(&ed25519Key, output, 0), WC_NO_ERR_TRACE(BUFFER_E)); - /* Good Cases */ - /* length only */ - ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, 0), 0); - ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, inLen), 0); - ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, output, inLen), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&ed25519Key); -#endif - return EXPECT_RESULT(); -} /* End test_wc_Ed25519KeyToDer*/ - -/* - * Testing wc_Ed25519PrivateKeyToDer - */ -static int test_wc_Ed25519PrivateKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed25519_key ed25519PrivKey; - WC_RNG rng; - word32 inLen; - - XMEMSET(&ed25519PrivKey, 0, sizeof(ed25519_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed25519_init(&ed25519PrivKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519PrivKey), - 0); - inLen = (word32)sizeof(output); - - /* Bad Cases */ - ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, 0), - WC_NO_ERR_TRACE(BUFFER_E)); - /* Good Cases */ - /* length only */ - ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, 0), 0); - ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, inLen), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed25519_free(&ed25519PrivKey); -#endif - return EXPECT_RESULT(); -} /* End test_wc_Ed25519PrivateKeyToDer*/ - -/* - * Testing wc_Ed448KeyToDer - */ -static int test_wc_Ed448KeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed448_key ed448Key; - WC_RNG rng; - word32 inLen; - - XMEMSET(&ed448Key, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&ed448Key), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key), 0); - inLen = (word32)sizeof(output); - - /* Bad Cases */ - ExpectIntEQ(wc_Ed448KeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed448KeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed448KeyToDer(&ed448Key, output, 0), WC_NO_ERR_TRACE(BUFFER_E)); - /* Good Cases */ - /* length only */ - ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, NULL, 0), 0); - ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, output, inLen), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&ed448Key); -#endif - return EXPECT_RESULT(); -} /* End test_wc_Ed448KeyToDer*/ - -/* - * Testing wc_Ed448PrivateKeyToDer - */ -static int test_wc_Ed448PrivateKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed448_key ed448PrivKey; - WC_RNG rng; - word32 inLen; - - XMEMSET(&ed448PrivKey, 0, sizeof(ed448_key)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_ed448_init(&ed448PrivKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448PrivKey), - 0); - inLen = (word32)sizeof(output); - - /* Bad Cases */ - ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, 0), - WC_NO_ERR_TRACE(BUFFER_E)); - /* Good cases */ - /* length only */ - ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, 0), 0); - ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, inLen), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_ed448_free(&ed448PrivKey); -#endif - return EXPECT_RESULT(); -} /* End test_wc_Ed448PrivateKeyToDer*/ - -/* - * Testing wc_Curve448PrivateKeyToDer - */ -static int test_wc_Curve448PrivateKeyToDer(void) -{ - EXPECT_DECLS; -#if defined(HAVE_CURVE448) && defined(HAVE_CURVE448_KEY_EXPORT) && \ - (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - curve448_key curve448PrivKey; - WC_RNG rng; - word32 inLen; - - XMEMSET(&curve448PrivKey, 0, sizeof(curve448PrivKey)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_curve448_init(&curve448PrivKey), 0); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &curve448PrivKey), - 0); - inLen = (word32)sizeof(output); - - /* Bad Cases */ - ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, output, inLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, 0), - WC_NO_ERR_TRACE(BUFFER_E)); - /* Good cases */ - /* length only */ - ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, NULL, 0), 0); - ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, inLen), 0); - - /* Bad Cases */ - ExpectIntEQ(wc_Curve448PublicKeyToDer(NULL, NULL, 0, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Curve448PublicKeyToDer(NULL, output, inLen, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, 0, 0), - WC_NO_ERR_TRACE(BUFFER_E)); - ExpectIntEQ(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, 0, 1), - WC_NO_ERR_TRACE(BUFFER_E)); - /* Good cases */ - /* length only */ - ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 0), 0); - ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 1), 0); - ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 0), 0); - ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 1), 0); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_curve448_free(&curve448PrivKey); -#endif - return EXPECT_RESULT(); -} /* End wc_Curve448PrivateKeyToDer*/ - -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_VERIFY) && !defined(WOLFSSL_NO_ML_DSA_44) -static const byte ml_dsa_44_pub_key[] = { - 0x7c, 0x33, 0x31, 0x41, 0x15, 0xa7, 0x2d, 0x6b, - 0x17, 0x7c, 0x10, 0xab, 0x75, 0xf7, 0x83, 0xb3, - 0x30, 0x75, 0x6f, 0xa9, 0x42, 0xb0, 0x9b, 0x59, - 0x59, 0x99, 0x2b, 0x5d, 0x7d, 0x6e, 0xeb, 0xdd, - 0xd9, 0x99, 0x8f, 0x7b, 0xad, 0xe5, 0x90, 0x0f, - 0xa4, 0x80, 0xd8, 0xa2, 0x0d, 0x95, 0xea, 0x63, - 0x2b, 0xcf, 0xb4, 0x5b, 0x3c, 0xd1, 0x5a, 0xc4, - 0xc4, 0xd1, 0x71, 0x28, 0x4b, 0x0b, 0x28, 0x32, - 0x73, 0xb5, 0x0d, 0xd6, 0x8f, 0x6b, 0x01, 0x26, - 0x04, 0x45, 0xa3, 0x80, 0xc0, 0x21, 0x12, 0xee, - 0x52, 0x0f, 0x35, 0xe4, 0x8e, 0xca, 0xf8, 0x91, - 0xf4, 0x99, 0x51, 0xe2, 0x80, 0x76, 0xa7, 0x2d, - 0x09, 0xf5, 0x04, 0xcc, 0xa6, 0x6b, 0x20, 0xc4, - 0xac, 0xcd, 0x6c, 0x9c, 0x09, 0xe7, 0x51, 0xa2, - 0x29, 0x60, 0xfd, 0xf2, 0xbd, 0x7e, 0x4c, 0x9d, - 0xc0, 0xba, 0x62, 0x2f, 0x53, 0xb2, 0x47, 0x03, - 0xf2, 0x6f, 0x70, 0x51, 0xa8, 0xe1, 0xb7, 0x9f, - 0x37, 0x15, 0xfa, 0xd1, 0x6c, 0x74, 0x1a, 0x2b, - 0x4f, 0x39, 0x4f, 0x43, 0x49, 0x71, 0x6a, 0xf8, - 0x7c, 0x65, 0x1a, 0xdd, 0x1a, 0x25, 0xf8, 0x79, - 0xfa, 0x8c, 0x02, 0xf2, 0xf7, 0xf7, 0x7b, 0x9f, - 0xe4, 0xaf, 0x9e, 0x1a, 0x0b, 0x5b, 0x2e, 0x41, - 0xbb, 0xa9, 0x4f, 0xd0, 0xdb, 0xad, 0xe5, 0x25, - 0xff, 0x36, 0x3b, 0x9a, 0xc3, 0xdf, 0xb6, 0x27, - 0xd3, 0xba, 0xb0, 0xd4, 0xb2, 0x07, 0xc3, 0xd8, - 0xab, 0x10, 0x3d, 0xcd, 0x23, 0x52, 0x46, 0xe6, - 0x96, 0x57, 0x85, 0xc7, 0x60, 0xe2, 0x8c, 0x46, - 0x65, 0x7d, 0x76, 0x1c, 0x45, 0x20, 0x5d, 0x51, - 0xd6, 0x13, 0xde, 0xe5, 0x3d, 0xc2, 0x8c, 0x36, - 0xdb, 0x7f, 0x83, 0x6f, 0x6a, 0xc2, 0xa3, 0xf2, - 0xdc, 0x63, 0x69, 0x7f, 0xbd, 0xd0, 0xc1, 0x90, - 0xfb, 0x62, 0x42, 0xa1, 0xf6, 0xf7, 0xdd, 0xc2, - 0x4a, 0x38, 0x62, 0x9b, 0xef, 0x67, 0xf9, 0x5c, - 0xd8, 0xff, 0xf4, 0xf2, 0x67, 0x90, 0x42, 0x85, - 0xaf, 0xe2, 0x92, 0x6e, 0xc4, 0x9b, 0x63, 0xc3, - 0x91, 0xa5, 0x11, 0x66, 0x13, 0x83, 0xbc, 0xbb, - 0xc7, 0x34, 0x3b, 0x30, 0x40, 0x53, 0x91, 0xdf, - 0x7c, 0x3d, 0x17, 0xdd, 0xa1, 0xa6, 0x80, 0xfd, - 0x26, 0x9d, 0x60, 0x7b, 0xcd, 0xb4, 0x2b, 0xba, - 0x61, 0x0f, 0x43, 0x7c, 0x51, 0x3c, 0xb9, 0xfa, - 0xdb, 0x48, 0x35, 0x9f, 0x0d, 0x0c, 0x04, 0xe8, - 0xf9, 0x6e, 0x07, 0x65, 0x7d, 0x46, 0x1b, 0xd2, - 0x51, 0xdb, 0x55, 0x27, 0xd7, 0x3d, 0x1e, 0x36, - 0x07, 0x59, 0x18, 0xec, 0x04, 0x4b, 0x87, 0xbb, - 0xfb, 0x27, 0xac, 0xeb, 0x8f, 0x43, 0x46, 0xd0, - 0x39, 0x00, 0x90, 0x54, 0x70, 0xb1, 0x71, 0xf2, - 0xe7, 0x3d, 0x02, 0x1a, 0xcf, 0x87, 0x16, 0x67, - 0xa2, 0x3c, 0x31, 0x48, 0xe8, 0xbd, 0x4f, 0xb3, - 0xc2, 0xfd, 0x3d, 0xa1, 0x9c, 0x87, 0x54, 0x60, - 0x30, 0x21, 0x52, 0x57, 0xcd, 0x03, 0x96, 0x9e, - 0xa7, 0x8d, 0xe5, 0x02, 0x04, 0x78, 0x43, 0x72, - 0xda, 0xb2, 0x22, 0xf1, 0xee, 0x8f, 0x27, 0x0b, - 0x8f, 0x7b, 0xf8, 0xbc, 0x16, 0xa1, 0xef, 0x0b, - 0x35, 0xda, 0xfc, 0x29, 0x1b, 0xf8, 0xa1, 0x35, - 0x40, 0xe7, 0xed, 0x4c, 0x02, 0x4a, 0x83, 0xb7, - 0x49, 0x75, 0x34, 0x3f, 0x2b, 0xb3, 0x61, 0xf5, - 0xa3, 0x9b, 0x23, 0xca, 0xfb, 0x58, 0x16, 0x4f, - 0x3c, 0x50, 0xbf, 0x81, 0xab, 0x54, 0x50, 0x1a, - 0x39, 0x57, 0x5f, 0x9a, 0x72, 0x22, 0xba, 0xa4, - 0xf6, 0xbf, 0xac, 0x31, 0x5c, 0xc5, 0x96, 0xd7, - 0xa9, 0xe4, 0x3b, 0x0c, 0xd0, 0x7f, 0x79, 0x68, - 0x4d, 0x41, 0x04, 0x81, 0x73, 0xcf, 0x47, 0x4a, - 0x7b, 0x37, 0xac, 0x8e, 0x47, 0x0d, 0x72, 0x65, - 0x0f, 0x9d, 0x44, 0xd7, 0x08, 0x21, 0x5b, 0x3f, - 0xc8, 0x9d, 0xea, 0xa2, 0x64, 0x7b, 0x0d, 0x98, - 0xc1, 0x61, 0xcd, 0xa4, 0xf7, 0x8c, 0x4a, 0xa3, - 0x3b, 0xdd, 0x92, 0xce, 0x61, 0x97, 0x0e, 0x98, - 0xa4, 0x10, 0xb5, 0x1f, 0xc5, 0xfb, 0xee, 0x49, - 0x36, 0x8f, 0xe3, 0x2d, 0x46, 0x9c, 0xa9, 0xff, - 0xdd, 0x1a, 0x48, 0x1b, 0x5a, 0x99, 0x84, 0x0a, - 0x3d, 0x5c, 0xd7, 0x67, 0x32, 0x88, 0x87, 0x2a, - 0x34, 0x50, 0x04, 0xad, 0xe6, 0xbb, 0x3c, 0xb5, - 0xee, 0x80, 0x99, 0x70, 0xaa, 0x9d, 0x5a, 0x63, - 0xec, 0xd5, 0x9a, 0x6a, 0x3a, 0xe8, 0xaa, 0x3d, - 0x3f, 0xe8, 0x15, 0x2c, 0x16, 0x3e, 0x86, 0x46, - 0x21, 0xf2, 0xd2, 0x6e, 0x74, 0x3d, 0x53, 0x94, - 0x7c, 0x41, 0xec, 0x5b, 0xf5, 0xa4, 0xc8, 0x1f, - 0x75, 0x22, 0x50, 0x58, 0x31, 0xf5, 0x29, 0x9a, - 0xc2, 0x2c, 0x67, 0xd9, 0xf6, 0x2e, 0xa1, 0xa9, - 0x0a, 0x69, 0x90, 0x7a, 0xd8, 0xed, 0x5c, 0x09, - 0x3d, 0x14, 0xa3, 0x2b, 0xc0, 0x47, 0x88, 0xb7, - 0xea, 0x14, 0x8a, 0xec, 0xaf, 0x0c, 0xb7, 0xc6, - 0x7c, 0x32, 0x0f, 0x57, 0xea, 0x9f, 0xd4, 0x99, - 0x8d, 0xab, 0xd6, 0xc9, 0x31, 0x07, 0x81, 0x37, - 0x3d, 0xf5, 0x07, 0xb3, 0x93, 0xb7, 0x04, 0x20, - 0xdf, 0x91, 0xef, 0xfb, 0xa6, 0x7d, 0x4b, 0x5d, - 0xd4, 0x24, 0xd2, 0x0b, 0xc5, 0x34, 0xf6, 0x7a, - 0xf9, 0x4a, 0x48, 0xc7, 0xab, 0xaf, 0xa8, 0xd2, - 0xfc, 0x41, 0xc9, 0x8b, 0xa8, 0xc4, 0x2f, 0x94, - 0x4e, 0xb0, 0xab, 0xd3, 0xd9, 0x09, 0x4b, 0x1f, - 0x35, 0xb7, 0xb4, 0x4c, 0x2d, 0x6b, 0xe6, 0xb4, - 0x2e, 0x8a, 0x09, 0xd3, 0x9d, 0x54, 0x3f, 0x53, - 0xcc, 0x8e, 0x16, 0x18, 0x4e, 0x9a, 0xe8, 0x52, - 0x84, 0x3a, 0x3e, 0xdb, 0xab, 0x65, 0xc4, 0xa1, - 0x3c, 0xd0, 0xf6, 0x57, 0x3c, 0x0e, 0x10, 0xed, - 0xb2, 0xa9, 0x7d, 0x70, 0x3f, 0x18, 0x1a, 0xba, - 0x31, 0x33, 0xcb, 0x2a, 0xfd, 0x13, 0xf5, 0x23, - 0xd7, 0x71, 0xfa, 0xb6, 0xe8, 0xda, 0x63, 0xca, - 0x55, 0x3c, 0x5b, 0x87, 0x27, 0x96, 0x3d, 0xd0, - 0x43, 0x9d, 0x76, 0x9f, 0x28, 0x5a, 0xb6, 0xc8, - 0x81, 0xe4, 0x7c, 0x2a, 0x7a, 0x84, 0x0f, 0x2d, - 0x1b, 0xd0, 0xe4, 0x0e, 0x1b, 0x47, 0x32, 0xc8, - 0x02, 0x2d, 0x39, 0x0e, 0x7d, 0xb1, 0x12, 0x56, - 0x50, 0x00, 0xae, 0xcc, 0x45, 0x0a, 0xd5, 0x30, - 0x16, 0xe7, 0x3a, 0x53, 0x02, 0xbc, 0xd5, 0xef, - 0xca, 0x00, 0xea, 0x5f, 0xbe, 0x15, 0x0d, 0x08, - 0x76, 0xc1, 0x03, 0x93, 0x96, 0x4a, 0x88, 0xda, - 0x9d, 0x0b, 0x51, 0x39, 0x9a, 0xef, 0xd2, 0xde, - 0x8a, 0x2c, 0xe6, 0xf3, 0xa5, 0x70, 0x15, 0x3a, - 0x17, 0x43, 0x31, 0xfc, 0x47, 0x9d, 0xec, 0x3b, - 0x28, 0x6f, 0xdf, 0x45, 0x6f, 0x9e, 0x10, 0xbb, - 0x8e, 0x43, 0xc5, 0x59, 0xe5, 0x61, 0x9b, 0xa7, - 0xa1, 0xb8, 0x7a, 0x1c, 0xd4, 0x25, 0x26, 0xca, - 0xe9, 0x2b, 0x0b, 0x3d, 0x06, 0xeb, 0x44, 0x44, - 0xab, 0x4a, 0x5e, 0x68, 0x5c, 0x93, 0xf1, 0x3f, - 0x39, 0x01, 0xb9, 0xf1, 0x01, 0xb7, 0xb6, 0x14, - 0x44, 0x1d, 0x6d, 0x6b, 0x03, 0x45, 0x0d, 0xf3, - 0xbf, 0x71, 0x4e, 0xf3, 0x84, 0x3d, 0xef, 0xea, - 0x60, 0x2e, 0x2e, 0xf7, 0x33, 0xa6, 0xbe, 0x53, - 0x49, 0x26, 0xed, 0xb4, 0xbf, 0x7f, 0xb0, 0x1d, - 0x39, 0xb2, 0xc2, 0x88, 0xc2, 0xa2, 0xd4, 0x7f, - 0x0e, 0x1c, 0x44, 0xa3, 0x38, 0x76, 0xa7, 0xa6, - 0x19, 0x7e, 0x4c, 0x84, 0x25, 0x01, 0xb2, 0x78, - 0xb4, 0x56, 0xc5, 0xc1, 0x50, 0x3f, 0xf2, 0xb6, - 0x76, 0x09, 0x55, 0x57, 0x1c, 0xd1, 0x55, 0x23, - 0x16, 0x2a, 0x51, 0x16, 0xaa, 0x13, 0x4f, 0x35, - 0x69, 0xaf, 0xea, 0x01, 0x5f, 0x22, 0xc9, 0x2e, - 0xe9, 0x8c, 0x6c, 0xa2, 0x17, 0x92, 0xdc, 0x3d, - 0xd6, 0xf0, 0xfa, 0x5a, 0x53, 0xe0, 0xcd, 0x55, - 0xa2, 0x91, 0x62, 0xba, 0xae, 0x67, 0x40, 0x1c, - 0xda, 0xb4, 0xcc, 0xfc, 0x67, 0x1f, 0x44, 0xa0, - 0x50, 0xa5, 0xde, 0xc5, 0xde, 0x5e, 0xa0, 0x3b, - 0x05, 0x84, 0x1c, 0x2a, 0xc4, 0x96, 0x47, 0xd6, - 0x97, 0x56, 0x40, 0x33, 0x99, 0x7c, 0x8b, 0x56, - 0xb4, 0xfb, 0xf4, 0x23, 0xcb, 0x48, 0x81, 0x6c, - 0xa4, 0x53, 0x41, 0x8c, 0x28, 0x61, 0xd7, 0x8c, - 0xde, 0xde, 0xeb, 0xd4, 0xe7, 0x8a, 0x2a, 0x40, - 0x83, 0x1c, 0xa4, 0x19, 0x0f, 0x6c, 0x73, 0xa5, - 0x0e, 0xb6, 0x5c, 0x14, 0x36, 0xff, 0xc9, 0x99, - 0x56, 0x53, 0x8c, 0x4e, 0x4f, 0x4a, 0x82, 0xc8, - 0x76, 0x83, 0x81, 0xf1, 0x17, 0x82, 0x98, 0x3e, - 0x9c, 0x99, 0x3a, 0x7c, 0x08, 0x77, 0x3e, 0xe2, - 0x10, 0x98, 0xb0, 0xf6, 0x1d, 0xd3, 0x24, 0xe8, - 0x98, 0xcf, 0xd8, 0x9a, 0xb8, 0xd7, 0xbe, 0x56, - 0xa2, 0xb6, 0xf8, 0x2e, 0xfe, 0xeb, 0x96, 0xfa, - 0xd0, 0xba, 0x79, 0x9e, 0xde, 0x72, 0x0d, 0x53, - 0x5f, 0xdd, 0x0d, 0xb2, 0x0a, 0x8f, 0x14, 0x94, - 0x87, 0x25, 0x5e, 0xcd, 0xd4, 0x4b, 0xaa, 0xc9, - 0x7e, 0x41, 0x9f, 0x33, 0x77, 0xbe, 0x6d, 0x57, - 0x68, 0xef, 0xee, 0x1a, 0xc4, 0x5c, 0x7b, 0xca, - 0x7e, 0x33, 0x93, 0x3d, 0x88, 0x91, 0xd1, 0x34, - 0x6a, 0x39, 0x98, 0x92, 0x50, 0x1a, 0x02, 0xcf, - 0x89, 0x34, 0x33, 0x10, 0x65, 0x23, 0x4d, 0xb7, - 0x00, 0xcc, 0xc1, 0x60, 0xdd, 0x7d, 0x8e, 0xd1, - 0x16, 0xa7, 0x71, 0x7b, 0x20, 0xcb, 0xe4, 0xe8, - 0xcc, 0xfc, 0xb8, 0x5f, 0xe4, 0xe2, 0xd6, 0x8c, - 0x43, 0x9c, 0x06, 0xf4, 0x8d, 0xbc, 0x56, 0xd0, - 0x0c, 0xd6, 0x0b, 0x6c, 0x33, 0x0e, 0x08, 0x77, - 0x66, 0x52, 0x1f, 0x48, 0x0c, 0x50, 0x4a, 0xc2, - 0x99, 0x0a, 0x15, 0x86, 0xc3, 0x9b, 0x7a, 0x5f, - 0xfb, 0x58, 0xbd, 0x63, 0x0c, 0xbe, 0x83, 0x40, - 0x8f, 0xba, 0x39, 0xfb, 0x45, 0xb9, 0xf7, 0x96, - 0x62, 0xec, 0x7e, 0x77, 0xa4, 0xfb, 0xe1, 0x86, - 0x5c, 0x0a, 0xae, 0x32, 0xbd, 0x79, 0x76, 0x8b -}; -static const byte ml_dsa_44_good_sig[] = { - 0x09, 0xf0, 0xae, 0xbb, 0x25, 0xc7, 0xfc, 0xdd, - 0x93, 0x25, 0x9c, 0x50, 0xd9, 0x2e, 0x72, 0x5d, - 0x53, 0xf5, 0x29, 0xd7, 0x4c, 0xc2, 0xd6, 0x81, - 0x5c, 0xf3, 0x3f, 0x9a, 0x8a, 0xa9, 0x00, 0x21, - 0x6c, 0xc6, 0xb9, 0x72, 0xb7, 0x0e, 0x00, 0x55, - 0x9f, 0xd7, 0xae, 0x92, 0xc3, 0xbc, 0x8f, 0x2d, - 0x4f, 0x54, 0x87, 0x56, 0x52, 0xd3, 0xdd, 0xaf, - 0xe0, 0xff, 0xda, 0x80, 0x1b, 0xf3, 0x56, 0x90, - 0xdd, 0x07, 0x86, 0xad, 0xf7, 0xf3, 0x8e, 0xcf, - 0x3a, 0x57, 0x30, 0x52, 0xaa, 0xd2, 0xb1, 0xf0, - 0x66, 0xea, 0x67, 0xab, 0x94, 0x1d, 0x96, 0x04, - 0xaa, 0xcf, 0x0e, 0xb0, 0xbc, 0x7d, 0x8a, 0x4c, - 0x62, 0x21, 0x82, 0x81, 0x98, 0x63, 0x22, 0x91, - 0xb9, 0xfe, 0x53, 0x63, 0x8d, 0xdf, 0xe6, 0x19, - 0xc1, 0x54, 0x3b, 0xf0, 0xf5, 0xe4, 0xc4, 0x36, - 0x66, 0x2f, 0xcc, 0x4f, 0xed, 0xc6, 0x62, 0x7d, - 0x8b, 0x7b, 0x89, 0xac, 0x23, 0x0b, 0x40, 0x4e, - 0x2d, 0xdc, 0xe5, 0xa2, 0xbc, 0x8b, 0xac, 0xe7, - 0x0b, 0xaa, 0x15, 0xa0, 0x79, 0x4a, 0x97, 0x8a, - 0xc8, 0xb1, 0x31, 0xea, 0x29, 0x99, 0x14, 0x5d, - 0x5b, 0x8c, 0xc2, 0xd0, 0xc2, 0x29, 0xd0, 0x85, - 0xb9, 0x25, 0x16, 0x08, 0xe8, 0x41, 0xa7, 0x77, - 0x1a, 0xbf, 0x5a, 0x48, 0x5a, 0x7f, 0x97, 0x44, - 0x62, 0xb4, 0x68, 0x2e, 0x05, 0x48, 0xde, 0x0f, - 0x69, 0xcc, 0x05, 0x3c, 0xa4, 0x85, 0x20, 0x60, - 0xfd, 0x45, 0x6a, 0x14, 0xb9, 0x76, 0x8d, 0x48, - 0xe7, 0x71, 0xd0, 0xd7, 0xbe, 0xe3, 0x36, 0xd6, - 0x94, 0x5c, 0x22, 0x6e, 0x28, 0xc6, 0x34, 0x93, - 0xf4, 0x6c, 0xf2, 0x62, 0xbf, 0x8f, 0x6d, 0x07, - 0xff, 0x38, 0x92, 0x23, 0x19, 0x55, 0xd0, 0x66, - 0x72, 0x76, 0xc1, 0x43, 0xbc, 0x60, 0x5d, 0xaa, - 0x61, 0x10, 0xdb, 0x0c, 0x49, 0x7b, 0x99, 0xce, - 0x14, 0xe3, 0x0b, 0x80, 0xdc, 0x8a, 0x3d, 0xa5, - 0x3a, 0x0e, 0x29, 0x88, 0x09, 0x1f, 0x9c, 0x03, - 0x32, 0x13, 0xc2, 0xe1, 0x49, 0x26, 0xc7, 0x11, - 0xfa, 0x7f, 0x2d, 0x64, 0xfc, 0xf9, 0xaf, 0xd0, - 0x4d, 0xcf, 0x3a, 0x23, 0x49, 0xde, 0xf2, 0x5d, - 0xad, 0xf3, 0xde, 0xe0, 0x9a, 0xa2, 0x96, 0x0a, - 0x9d, 0x97, 0x39, 0x88, 0x60, 0x75, 0xec, 0x29, - 0x9b, 0x93, 0xfc, 0x80, 0xb3, 0xeb, 0xb0, 0xc6, - 0xa8, 0xea, 0x75, 0x67, 0xed, 0xbd, 0x42, 0x2a, - 0xed, 0x22, 0x27, 0xdb, 0x41, 0x3a, 0x94, 0x86, - 0xd7, 0x4a, 0xf1, 0x8f, 0xa5, 0x47, 0x38, 0xa3, - 0x3c, 0xe7, 0x17, 0x5d, 0xce, 0xdc, 0x32, 0x7c, - 0xe4, 0x05, 0x58, 0x98, 0x67, 0xc8, 0xaf, 0x35, - 0x5d, 0xf9, 0xc0, 0x10, 0x6d, 0x9d, 0xd3, 0x27, - 0x79, 0x3c, 0x1d, 0xdd, 0xfb, 0x53, 0x3c, 0x03, - 0x4c, 0xb3, 0x1b, 0x0b, 0x3a, 0x60, 0x80, 0xcd, - 0x9b, 0x1e, 0x5f, 0x3f, 0x29, 0xfa, 0xb1, 0x09, - 0x9a, 0x88, 0x58, 0x4a, 0xf5, 0xed, 0xe9, 0x7c, - 0x9d, 0x70, 0xbe, 0x57, 0xfb, 0x92, 0x12, 0xc9, - 0x8c, 0x6b, 0x77, 0xe2, 0x44, 0xc6, 0x82, 0x2a, - 0x29, 0xb3, 0x9c, 0xb0, 0x60, 0xda, 0x3d, 0xcd, - 0x4e, 0x49, 0x96, 0x8c, 0xd7, 0x2b, 0x29, 0x28, - 0x7b, 0xec, 0xf1, 0x46, 0x40, 0xf0, 0xe1, 0xd7, - 0x48, 0x9e, 0xdf, 0xfd, 0xa6, 0xd0, 0xaa, 0x35, - 0x94, 0x7a, 0x94, 0x57, 0xf3, 0xd4, 0x15, 0x19, - 0xd3, 0xc5, 0x35, 0x73, 0xc4, 0xf5, 0x86, 0x0d, - 0x2a, 0x5b, 0x67, 0x0d, 0x8d, 0xaa, 0x18, 0x3e, - 0xea, 0x9d, 0x80, 0xe7, 0xf8, 0xbb, 0x23, 0xea, - 0x5d, 0x1c, 0x4d, 0xb2, 0x58, 0x7e, 0xe5, 0xef, - 0x80, 0xc1, 0x63, 0x44, 0xaf, 0x1d, 0xed, 0xf6, - 0x92, 0x05, 0x0c, 0xda, 0xcc, 0x58, 0x39, 0x27, - 0xdd, 0x24, 0xac, 0x63, 0x23, 0x34, 0xaa, 0x2d, - 0xd0, 0x5b, 0xd7, 0x7f, 0x6d, 0xcb, 0x64, 0xed, - 0xb3, 0x9b, 0x05, 0x90, 0x79, 0xc2, 0x25, 0x68, - 0xed, 0xf6, 0xa8, 0x7e, 0x30, 0x4a, 0x46, 0x44, - 0xad, 0xc8, 0x12, 0x8d, 0x04, 0xc3, 0x11, 0x83, - 0x7e, 0x77, 0xef, 0x9c, 0xa2, 0xf9, 0x3b, 0x06, - 0x84, 0x7f, 0x72, 0xd9, 0x2f, 0x22, 0x95, 0xb7, - 0x7b, 0x4e, 0x35, 0x6a, 0xfa, 0x73, 0x7d, 0x88, - 0x5b, 0xac, 0x7b, 0xc5, 0x53, 0xc1, 0xfe, 0x6b, - 0x7c, 0x05, 0xc3, 0xe4, 0xae, 0x48, 0x1a, 0xea, - 0x6e, 0x51, 0x46, 0x1e, 0x82, 0x80, 0xde, 0x31, - 0xe1, 0x41, 0x71, 0x88, 0x41, 0xa7, 0xb2, 0xcd, - 0x3d, 0xf7, 0x5c, 0x4f, 0x4c, 0xfd, 0x3f, 0x6f, - 0x6c, 0x82, 0xc1, 0xba, 0xe0, 0xf0, 0xb4, 0x8c, - 0xd5, 0xb5, 0x32, 0xbf, 0x91, 0x49, 0x7e, 0x39, - 0x5e, 0x0a, 0xdf, 0x4b, 0xd6, 0x07, 0x72, 0xff, - 0x58, 0x65, 0x1b, 0x1f, 0xc6, 0x56, 0xd2, 0x00, - 0xec, 0x60, 0xd1, 0x22, 0xc9, 0x1a, 0xa4, 0xcc, - 0x26, 0xb4, 0xd1, 0x93, 0xbc, 0xfc, 0x52, 0xdf, - 0xa1, 0x23, 0x37, 0x9b, 0xa2, 0xa8, 0x8f, 0xf3, - 0x39, 0x03, 0xa5, 0x4c, 0xf0, 0x68, 0xe5, 0x95, - 0x62, 0xfb, 0xd8, 0x88, 0x39, 0xf6, 0x02, 0x0a, - 0x4e, 0x7c, 0xf0, 0xbf, 0x71, 0x99, 0x0f, 0x19, - 0x61, 0xd9, 0x39, 0xe8, 0x3f, 0x59, 0x22, 0x4a, - 0xaa, 0xdd, 0x03, 0xf8, 0x09, 0xb8, 0xaf, 0xd9, - 0xb9, 0x9c, 0x3f, 0xf1, 0xfe, 0x49, 0xae, 0x99, - 0x2f, 0xa2, 0x22, 0x5a, 0x3c, 0xe9, 0xe9, 0xf7, - 0xba, 0x2d, 0xeb, 0x1f, 0x6c, 0xa7, 0xe1, 0x87, - 0x2f, 0xa5, 0xff, 0xcf, 0x1c, 0x22, 0x8d, 0xf2, - 0x5f, 0x63, 0xf5, 0xbb, 0x36, 0x66, 0xcc, 0x62, - 0x89, 0x8e, 0xf7, 0x78, 0xc5, 0x97, 0x95, 0xde, - 0xec, 0x43, 0x39, 0x6e, 0x0d, 0xe0, 0x8e, 0xbd, - 0x2b, 0x3b, 0xe6, 0xff, 0xf5, 0x8f, 0x90, 0xd2, - 0xd2, 0xce, 0x3b, 0x6f, 0x78, 0xf5, 0xd3, 0x42, - 0xf3, 0x0f, 0x27, 0x4b, 0x2b, 0xe4, 0xd8, 0x0d, - 0x31, 0xfa, 0xba, 0xdc, 0x54, 0x21, 0x9a, 0xbf, - 0x1e, 0x1d, 0x06, 0x8e, 0xd9, 0x58, 0xce, 0x9a, - 0x71, 0x79, 0x4d, 0xcb, 0xfb, 0x99, 0x4b, 0x66, - 0xed, 0xef, 0x75, 0x20, 0x4d, 0x47, 0x9b, 0x40, - 0xd5, 0xcf, 0xd9, 0x00, 0xfe, 0x32, 0x45, 0xae, - 0x4b, 0x7e, 0x8e, 0x7b, 0xf9, 0xd4, 0xd4, 0x2e, - 0x1a, 0x2a, 0xac, 0x73, 0xdb, 0x79, 0xb7, 0x02, - 0x6a, 0x3d, 0xa2, 0xfe, 0x52, 0x27, 0x25, 0x43, - 0xd1, 0xb5, 0x48, 0x0e, 0xef, 0xf1, 0x0f, 0xe7, - 0x27, 0xc2, 0x59, 0x4e, 0x47, 0xe2, 0x12, 0xaa, - 0x1e, 0xae, 0xbc, 0x86, 0x22, 0x70, 0x33, 0xa5, - 0x50, 0x3f, 0xed, 0x3c, 0x98, 0xbb, 0xd5, 0xb3, - 0x3e, 0x43, 0x21, 0x8e, 0x3e, 0x8c, 0xcc, 0x0c, - 0xcf, 0x50, 0xcd, 0xeb, 0x1b, 0x9d, 0x0c, 0xc9, - 0xe3, 0x2f, 0xbb, 0x4b, 0x43, 0xfc, 0x37, 0x27, - 0xcb, 0xc9, 0x5a, 0xe9, 0x45, 0x92, 0x9d, 0xe9, - 0x60, 0x8f, 0x93, 0x1b, 0xd8, 0x6a, 0x68, 0x86, - 0xc2, 0x1d, 0x49, 0x92, 0x11, 0x29, 0x62, 0x14, - 0x15, 0x4c, 0xe9, 0x33, 0xe3, 0x70, 0x2d, 0x6b, - 0x8b, 0xb5, 0x22, 0x44, 0x82, 0xbe, 0x43, 0xe2, - 0x80, 0xfb, 0xb5, 0xfa, 0x6a, 0x30, 0x04, 0x20, - 0xb6, 0x58, 0xe1, 0xf4, 0x8c, 0xe6, 0x4c, 0x7c, - 0x8d, 0x38, 0xf6, 0xdd, 0x59, 0xfc, 0x5a, 0xd7, - 0x9f, 0x34, 0x92, 0xcc, 0xde, 0x65, 0x89, 0xa7, - 0xd9, 0x57, 0xf7, 0xf2, 0x71, 0x39, 0xaf, 0xb6, - 0x88, 0x02, 0x40, 0x24, 0x8b, 0x4f, 0xc5, 0xfc, - 0xdc, 0x5c, 0xc0, 0x1d, 0xa6, 0x68, 0x87, 0xe0, - 0x8f, 0xdc, 0xf0, 0xac, 0xd8, 0x5f, 0x1c, 0xb3, - 0x07, 0xac, 0x58, 0x97, 0x3f, 0x3e, 0x72, 0x19, - 0x18, 0x64, 0x55, 0x73, 0x11, 0x71, 0xd1, 0xa4, - 0xa6, 0x57, 0xb0, 0x27, 0xaf, 0xad, 0x8a, 0xf7, - 0xdf, 0xde, 0x1e, 0xdb, 0x31, 0xc9, 0x32, 0x85, - 0x90, 0x40, 0x3d, 0xfe, 0x64, 0x5d, 0xe3, 0x94, - 0x74, 0x98, 0xa7, 0xed, 0x84, 0x44, 0x13, 0x76, - 0xba, 0xe9, 0x09, 0x9a, 0x17, 0xe0, 0x38, 0x03, - 0x3b, 0x7a, 0xa7, 0x0e, 0x74, 0xbd, 0x93, 0xb1, - 0x85, 0x64, 0xc9, 0xc4, 0x22, 0xb9, 0xdf, 0x80, - 0xac, 0xa1, 0x17, 0xdb, 0x11, 0xdb, 0xfa, 0xeb, - 0x90, 0x3c, 0x28, 0xfb, 0xa2, 0x36, 0x76, 0x61, - 0x20, 0x00, 0x88, 0x15, 0xc0, 0x79, 0x9f, 0x7d, - 0x9f, 0x90, 0xdb, 0x79, 0xbf, 0x1c, 0xdf, 0x86, - 0xc9, 0x60, 0x8c, 0xea, 0xa6, 0x24, 0x81, 0xd6, - 0x6d, 0xd8, 0x8d, 0x17, 0x5f, 0x5c, 0x6d, 0x93, - 0xbc, 0xed, 0xe5, 0x41, 0x05, 0xbe, 0xc6, 0x0f, - 0x66, 0x50, 0xc3, 0xce, 0x7e, 0x6c, 0x80, 0x88, - 0xf5, 0x52, 0x61, 0xaf, 0xdb, 0xc0, 0x80, 0xbe, - 0x78, 0x49, 0x64, 0x39, 0x54, 0x26, 0xeb, 0xab, - 0x07, 0x4d, 0x38, 0x66, 0x06, 0x98, 0x58, 0xaa, - 0x40, 0xc4, 0x89, 0xb2, 0x08, 0x85, 0xf3, 0x14, - 0x58, 0x5d, 0x36, 0xf7, 0xf0, 0x6b, 0x72, 0x79, - 0x6d, 0xbe, 0x5e, 0x24, 0x68, 0xf1, 0x3c, 0xa2, - 0x82, 0x22, 0x6e, 0xc4, 0x46, 0x94, 0x8e, 0x00, - 0xcb, 0xc0, 0x07, 0x69, 0xa5, 0x6d, 0x57, 0x04, - 0x79, 0xeb, 0x06, 0x7a, 0x42, 0x20, 0x6e, 0xdc, - 0xb5, 0xa4, 0xdd, 0x74, 0xb3, 0x92, 0x16, 0x71, - 0x7d, 0x99, 0xfa, 0x26, 0x35, 0x57, 0xe2, 0x83, - 0xc2, 0xb6, 0xfb, 0x0a, 0xae, 0x22, 0xed, 0xe3, - 0x98, 0x65, 0x18, 0x32, 0xf8, 0xe5, 0xed, 0xa9, - 0xf9, 0x7d, 0xb8, 0xea, 0x21, 0x51, 0x6c, 0x70, - 0x4c, 0xfa, 0xec, 0x6d, 0x4c, 0xf4, 0xcb, 0x1c, - 0x43, 0xfb, 0xfc, 0xbb, 0xa9, 0xcb, 0xc5, 0x21, - 0xb3, 0x89, 0xd6, 0x4c, 0xc4, 0x42, 0xd1, 0x55, - 0x3d, 0x43, 0x74, 0xbf, 0xb7, 0x47, 0xb3, 0x5b, - 0x14, 0xc3, 0x8f, 0x42, 0x30, 0x57, 0xb0, 0x22, - 0x56, 0xbe, 0x8d, 0x88, 0x7e, 0x7d, 0x63, 0xc8, - 0xec, 0x01, 0x41, 0xd5, 0x9d, 0xb6, 0x7a, 0x3b, - 0xfe, 0x8b, 0x95, 0x94, 0xdb, 0xca, 0xf1, 0xb4, - 0x56, 0xd7, 0x83, 0xf4, 0x11, 0x05, 0x65, 0xde, - 0x7a, 0xa3, 0x5a, 0x7a, 0x70, 0xe4, 0xd2, 0xad, - 0xc0, 0xff, 0x3f, 0x66, 0x2e, 0x1a, 0x65, 0x38, - 0xda, 0x1f, 0x3f, 0xac, 0x04, 0x2f, 0x0f, 0xde, - 0x7e, 0x55, 0x05, 0x12, 0xe9, 0xe7, 0x69, 0xf9, - 0x34, 0x2c, 0x84, 0x97, 0xa8, 0x86, 0x0c, 0x24, - 0x32, 0x87, 0xfd, 0xbe, 0x67, 0xd1, 0x02, 0x21, - 0x3b, 0x33, 0xfd, 0x11, 0xb1, 0xca, 0x4f, 0xeb, - 0x40, 0x38, 0xf6, 0x19, 0x83, 0x9d, 0x73, 0x44, - 0x37, 0xd6, 0x69, 0x6d, 0x85, 0xda, 0xf7, 0x69, - 0xfb, 0x88, 0x2b, 0xe7, 0xe7, 0x3c, 0x18, 0xa8, - 0x13, 0xb7, 0xee, 0x5c, 0x50, 0x5b, 0xa3, 0x09, - 0x1c, 0xef, 0x8d, 0x37, 0x89, 0x75, 0x0f, 0x8b, - 0xea, 0x17, 0x02, 0x47, 0x21, 0xcb, 0xa8, 0x73, - 0x71, 0x23, 0x4c, 0xf7, 0x50, 0xdd, 0x21, 0xe5, - 0xdb, 0x40, 0x3a, 0x87, 0x40, 0x8d, 0x60, 0x89, - 0x9e, 0x20, 0x00, 0x58, 0xeb, 0xbb, 0x24, 0x9b, - 0x0a, 0x17, 0x8f, 0xf6, 0x56, 0x07, 0x11, 0x5b, - 0xa7, 0xcd, 0x93, 0x0a, 0x31, 0x3d, 0x1f, 0x45, - 0xa0, 0x08, 0x8f, 0x88, 0x34, 0xa5, 0x01, 0x3b, - 0xea, 0x07, 0xa3, 0x7b, 0x66, 0x3e, 0x96, 0xe8, - 0xf7, 0x4d, 0x63, 0x04, 0x55, 0x89, 0xf1, 0x02, - 0x1e, 0x4a, 0x21, 0xb1, 0x2b, 0x8c, 0x7f, 0x2e, - 0x0c, 0x64, 0x26, 0x36, 0xd8, 0x63, 0xab, 0xf5, - 0x22, 0xaf, 0xa9, 0xfa, 0xfa, 0x21, 0x4b, 0x7e, - 0x6f, 0x8c, 0xce, 0x98, 0xf2, 0x85, 0x3f, 0x2c, - 0x07, 0x90, 0xc3, 0x2c, 0x06, 0xc5, 0xde, 0xc8, - 0xc2, 0x7c, 0xd7, 0x9b, 0x64, 0x25, 0x8a, 0x9b, - 0x77, 0x07, 0xc7, 0x4c, 0xd7, 0x67, 0xff, 0xe6, - 0xdb, 0x17, 0xf5, 0xc4, 0x2a, 0x14, 0x44, 0x1a, - 0xff, 0xda, 0xe0, 0xa7, 0x09, 0x1c, 0xe9, 0x03, - 0xde, 0x4a, 0x59, 0xe4, 0xdf, 0xa3, 0x0d, 0x3a, - 0x43, 0xdf, 0x80, 0x82, 0x87, 0xfa, 0x75, 0xf5, - 0xe8, 0xef, 0x6f, 0xd0, 0x89, 0xdd, 0xa1, 0x75, - 0x17, 0x5b, 0x71, 0x47, 0xe8, 0x8d, 0xae, 0xf6, - 0x18, 0x7f, 0xb9, 0x24, 0x68, 0x3f, 0x17, 0x6b, - 0xa8, 0x30, 0x67, 0x7e, 0x02, 0x9b, 0xf6, 0x4d, - 0x03, 0xa8, 0xfb, 0x33, 0x2f, 0xb4, 0x65, 0x72, - 0x2a, 0x30, 0xa6, 0x93, 0x94, 0x7a, 0x41, 0x0f, - 0xd3, 0x67, 0x0b, 0xba, 0xa4, 0x49, 0x7c, 0xcf, - 0x1f, 0x59, 0x1e, 0x2e, 0x45, 0xd4, 0xa8, 0xb1, - 0x98, 0x2b, 0xd7, 0x6f, 0x55, 0xb8, 0xf2, 0x65, - 0x7b, 0x96, 0x18, 0xf7, 0x2e, 0xde, 0x9c, 0x39, - 0x7a, 0x08, 0x2e, 0xe7, 0x3c, 0x9e, 0x4a, 0xfe, - 0xba, 0x49, 0xce, 0xba, 0x65, 0x18, 0xae, 0xae, - 0x9b, 0xd5, 0xf5, 0xeb, 0xd3, 0xdc, 0xd7, 0x2c, - 0x92, 0x3c, 0xe2, 0x93, 0xb9, 0x69, 0xf2, 0x20, - 0xea, 0xbd, 0xa9, 0x01, 0x2b, 0x72, 0x7c, 0x93, - 0x6c, 0x1f, 0x80, 0x3a, 0xd2, 0x2d, 0xf6, 0xc1, - 0x31, 0x63, 0xd2, 0x2f, 0x6c, 0x1a, 0x54, 0x1f, - 0x74, 0xe6, 0xa0, 0xac, 0xb1, 0x04, 0x03, 0xb3, - 0x22, 0x19, 0x48, 0x0a, 0xa7, 0x55, 0x25, 0xc1, - 0x77, 0x28, 0xb9, 0xbe, 0xef, 0xa8, 0xc6, 0x2b, - 0xd5, 0x6c, 0x5d, 0x7b, 0x85, 0xcd, 0x10, 0x2d, - 0x9e, 0xfd, 0xb8, 0xa5, 0x10, 0x65, 0xf7, 0x29, - 0xa7, 0x41, 0x18, 0xc8, 0xc2, 0x23, 0xe5, 0xcb, - 0x96, 0x91, 0x8a, 0x7e, 0x45, 0x30, 0x6b, 0x91, - 0xf1, 0x88, 0xb3, 0x2e, 0x92, 0x96, 0x0a, 0x42, - 0x4a, 0x16, 0x9d, 0x0c, 0xa8, 0xa7, 0xe5, 0x64, - 0x38, 0x8a, 0x53, 0x41, 0x28, 0xbf, 0xd7, 0xa4, - 0x14, 0x05, 0x59, 0x11, 0x2e, 0x0f, 0xc8, 0x5c, - 0x97, 0x8d, 0xd3, 0x92, 0xbf, 0xb9, 0x05, 0xfa, - 0xff, 0x38, 0xbf, 0xd6, 0xc5, 0x22, 0xf8, 0xa4, - 0x75, 0x30, 0x45, 0x93, 0x14, 0xda, 0xc0, 0x7f, - 0xea, 0x24, 0xe0, 0x33, 0x68, 0xf2, 0x6d, 0xe1, - 0xb1, 0x0c, 0x7d, 0x40, 0xaa, 0x16, 0x53, 0xa1, - 0xf6, 0x26, 0xb1, 0x25, 0xe8, 0x83, 0xe9, 0xea, - 0xea, 0xd2, 0x5a, 0x24, 0xda, 0xe2, 0x6e, 0xd1, - 0x2a, 0x87, 0x64, 0x48, 0x13, 0x55, 0xb1, 0x2c, - 0x1a, 0x58, 0x43, 0x5b, 0x63, 0x14, 0x3e, 0x02, - 0xf0, 0xcf, 0x61, 0x7d, 0x83, 0x81, 0xb9, 0x65, - 0x4b, 0x72, 0xee, 0xff, 0xfb, 0x6a, 0xbe, 0x71, - 0x26, 0x56, 0x28, 0x13, 0x9f, 0x31, 0xda, 0x8c, - 0x2f, 0xdb, 0x21, 0xbe, 0x4b, 0x66, 0xbb, 0xad, - 0x7a, 0x13, 0x55, 0x92, 0x7c, 0xb5, 0x6e, 0x5f, - 0x45, 0x1b, 0x64, 0x2d, 0xad, 0x6d, 0x32, 0x07, - 0xe4, 0x91, 0xdc, 0x0c, 0x1b, 0x5f, 0xcd, 0x86, - 0xe2, 0x99, 0x2b, 0xb9, 0x7e, 0x60, 0xbd, 0xad, - 0xa1, 0x5c, 0xab, 0x7f, 0x76, 0xf3, 0x77, 0xba, - 0x73, 0x7f, 0x6a, 0x88, 0x4e, 0xff, 0x40, 0x72, - 0x7a, 0x4d, 0x9b, 0x20, 0x2d, 0xc9, 0x2a, 0x30, - 0x0f, 0x8f, 0x0f, 0xc9, 0x79, 0xc8, 0xc3, 0x8a, - 0x83, 0x52, 0xff, 0x66, 0x7a, 0x42, 0x04, 0x08, - 0x6e, 0x5b, 0x13, 0xda, 0xb9, 0xb6, 0x2d, 0x45, - 0x77, 0x9a, 0xa0, 0x2b, 0xc1, 0x87, 0xc2, 0xa6, - 0x35, 0x7f, 0x39, 0x34, 0x2e, 0x95, 0x1e, 0x8c, - 0xbf, 0x89, 0x6d, 0xcf, 0x82, 0xb8, 0x9f, 0x9b, - 0xd1, 0xbc, 0xa2, 0x55, 0x83, 0xf4, 0xca, 0x21, - 0x11, 0x8f, 0x28, 0xa9, 0x5e, 0x28, 0x23, 0xb4, - 0x43, 0x60, 0xb6, 0x11, 0x1a, 0x6f, 0xb4, 0xd1, - 0x96, 0xc8, 0x79, 0xf2, 0x39, 0x8b, 0x82, 0xae, - 0xe0, 0xc2, 0xe4, 0xf9, 0xfb, 0xf8, 0x85, 0x64, - 0x28, 0xad, 0xb5, 0xfd, 0x37, 0xc5, 0x21, 0x38, - 0x31, 0x94, 0x0d, 0xbe, 0xd8, 0xaf, 0x9b, 0x8a, - 0x7d, 0xfb, 0x56, 0xd8, 0x23, 0xf7, 0x55, 0x55, - 0xe7, 0xd9, 0x63, 0x65, 0xfd, 0x64, 0x2e, 0x8a, - 0x1d, 0x1b, 0xac, 0x4e, 0x2f, 0xef, 0x1b, 0x77, - 0xca, 0x01, 0xd6, 0xfc, 0xb0, 0x11, 0xda, 0x6b, - 0xef, 0x9f, 0x76, 0x81, 0x3e, 0x3f, 0x26, 0x4b, - 0x3b, 0x97, 0xa0, 0x7d, 0xd6, 0xcf, 0x51, 0x0d, - 0x06, 0xf7, 0xf5, 0x88, 0x64, 0x34, 0x7a, 0xe3, - 0xb9, 0x16, 0xc3, 0x06, 0x04, 0xf3, 0xe9, 0x55, - 0xd2, 0xff, 0x49, 0xec, 0x57, 0x84, 0x1f, 0x39, - 0x28, 0x71, 0x57, 0x87, 0x40, 0xf2, 0x7a, 0x30, - 0xa0, 0x88, 0xba, 0x6c, 0xb1, 0x09, 0x30, 0x3a, - 0x11, 0x75, 0xcf, 0xbe, 0x4c, 0xf7, 0xf7, 0xca, - 0x44, 0x52, 0x91, 0xd0, 0x4c, 0x12, 0x3e, 0x3a, - 0x4b, 0x31, 0x20, 0xfe, 0x27, 0xd2, 0x08, 0x5b, - 0x83, 0x7b, 0x82, 0xd3, 0xa3, 0x72, 0xba, 0x2f, - 0x5f, 0xa3, 0x71, 0xcd, 0x8d, 0x3f, 0x94, 0xce, - 0x86, 0xa8, 0x6b, 0x43, 0xb7, 0x06, 0x80, 0x70, - 0x64, 0x06, 0xab, 0x54, 0xce, 0xb5, 0x29, 0xaf, - 0x73, 0xf7, 0x0f, 0x65, 0x70, 0xa7, 0x84, 0x1a, - 0x0b, 0xdb, 0x0c, 0xa9, 0x20, 0xea, 0x06, 0x7a, - 0xba, 0x80, 0xc6, 0xae, 0x3e, 0x0a, 0x7b, 0xd6, - 0x21, 0x99, 0xe0, 0xae, 0x6e, 0x8f, 0x80, 0xa9, - 0x97, 0x27, 0x3d, 0x7e, 0xb2, 0xd8, 0x06, 0x10, - 0x36, 0x07, 0x64, 0x12, 0xd0, 0xc7, 0x91, 0xd2, - 0x81, 0x74, 0x22, 0x8b, 0x8f, 0xe0, 0x48, 0xc4, - 0xe1, 0x9b, 0x05, 0xc8, 0xc5, 0xc3, 0x9a, 0x7b, - 0x9d, 0xee, 0x23, 0xe0, 0x98, 0xc0, 0xd0, 0x05, - 0x21, 0x89, 0x9a, 0xf4, 0x45, 0xd1, 0x1d, 0x80, - 0x79, 0xb7, 0xfe, 0x3c, 0xff, 0x84, 0x86, 0xf0, - 0x2a, 0x69, 0x8b, 0x2d, 0x3b, 0x82, 0xa0, 0xab, - 0xee, 0xe6, 0xf4, 0x64, 0x84, 0x2b, 0x7a, 0x42, - 0x12, 0x8d, 0x10, 0xa6, 0xae, 0x10, 0x6d, 0x03, - 0xb5, 0x72, 0x09, 0xf8, 0x3f, 0xe4, 0x1c, 0x0a, - 0x08, 0x0d, 0x1a, 0x45, 0x5b, 0x70, 0x7b, 0x95, - 0xa1, 0xa7, 0xb4, 0xb6, 0xbf, 0xcc, 0xfc, 0x09, - 0x1a, 0x30, 0x40, 0x44, 0x5e, 0x69, 0x73, 0x7a, - 0x81, 0xa5, 0xb9, 0xd7, 0xdd, 0xe3, 0xee, 0xfb, - 0x16, 0x1a, 0x1d, 0x40, 0x41, 0x4e, 0x8d, 0x90, - 0x92, 0x9d, 0xaf, 0xb0, 0xbb, 0xc2, 0xe0, 0xfc, - 0x06, 0x0b, 0x20, 0x37, 0x47, 0x50, 0x53, 0x65, - 0x87, 0x89, 0x99, 0xa4, 0xb7, 0xdb, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x20, 0x30, 0x3e -}; -#endif - -static int test_wc_dilithium(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) - dilithium_key* key; - byte level; -#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - WC_RNG rng; -#endif - byte* privKey = NULL; -#ifndef WOLFSSL_DILITHIUM_NO_SIGN - word32 privKeyLen = DILITHIUM_MAX_KEY_SIZE; -#endif - byte* pubKey = NULL; -#ifndef WOLFSSL_DILITHIUM_NO_VERIFY - word32 pubKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; -#endif - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - privKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(privKey); - pubKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(pubKey); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } -#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - XMEMSET(&rng, 0, sizeof(WC_RNG)); -#endif - -#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - ExpectIntEQ(wc_InitRng(&rng), 0); -#endif - - ExpectIntEQ(wc_dilithium_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_init_ex(NULL, NULL, INVALID_DEVID), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - wc_dilithium_free(NULL); - - ExpectIntEQ(wc_dilithium_init(key), 0); - wc_dilithium_free(key); - ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); - -#ifndef WOLFSSL_DILITHIUM_NO_VERIFY - ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#ifndef WOLFSSL_DILITHIUM_NO_SIGN - ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - -#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY - ExpectIntEQ(wc_dilithium_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#endif -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - ExpectIntEQ(wc_dilithium_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY - ExpectIntEQ(wc_dilithium_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_priv_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#endif -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_pub_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - ExpectIntEQ(wc_dilithium_sig_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - - ExpectIntEQ(wc_dilithium_set_level(NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_set_level(key, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_set_level(NULL, WC_ML_DSA_44), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_set_level(key, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_set_level(key, 4), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_dilithium_get_level(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_get_level(key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_get_level(NULL, &level), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_get_level(key, &level), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - -#ifndef WOLFSSL_NO_ML_DSA_87 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); - ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); - ExpectIntEQ(level, WC_ML_DSA_87); -#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY - ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL5_KEY_SIZE); -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL5_PRV_KEY_SIZE); -#endif -#endif -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL5_PUB_KEY_SIZE); -#endif -#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL5_SIG_SIZE); -#endif -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); - ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); - ExpectIntEQ(level, WC_ML_DSA_65); -#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY - ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL3_KEY_SIZE); -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL3_PRV_KEY_SIZE); -#endif -#endif -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL3_PUB_KEY_SIZE); -#endif -#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL3_SIG_SIZE); -#endif -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); -#endif -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); - ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); - ExpectIntEQ(level, WC_ML_DSA_44); -#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY - ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL2_KEY_SIZE); -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL2_PRV_KEY_SIZE); -#endif -#endif -#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY - ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL2_PUB_KEY_SIZE); -#endif -#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL2_SIG_SIZE); -#endif -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); -#endif - -#ifndef WOLFSSL_DILITHIUM_NO_VERIFY - ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif -#ifndef WOLFSSL_DILITHIUM_NO_SIGN - ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - - wc_dilithium_free(key); -#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - wc_FreeRng(&rng); -#endif - XFREE(pubKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(privKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_make_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) - dilithium_key* key; - WC_RNG rng; - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_dilithium_init(key), 0); - - ExpectIntEQ(wc_dilithium_make_key(key, &rng), WC_NO_ERR_TRACE(BAD_STATE_E)); - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); -#endif - - ExpectIntEQ(wc_dilithium_make_key(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_make_key(key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_make_key(NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); - - wc_dilithium_free(key); - wc_FreeRng(&rng); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_sign(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - dilithium_key* key; - dilithium_key* importKey = NULL; - WC_RNG rng; - byte* privKey = NULL; - word32 privKeyLen = DILITHIUM_MAX_KEY_SIZE; - word32 badKeyLen; - byte msg[32]; - byte* sig = NULL; - word32 sigLen = DILITHIUM_MAX_SIG_SIZE; - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - importKey = (dilithium_key*)XMALLOC(sizeof(*key), NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(importKey); - privKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(privKey); - sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(sig); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - if (importKey != NULL) { - XMEMSET(importKey, 0, sizeof(*importKey)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(msg, 0x55, sizeof(msg)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_dilithium_init(key), 0); - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); -#endif - -#ifdef WOLFSSL_DILITHIUM_NO_MAKE_KEY -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level2_key, - sizeof_bench_dilithium_level2_key, key), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level3_key, - sizeof_bench_dilithium_level3_key, key), 0); -#else - ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level5_key, - sizeof_bench_dilithium_level5_key, key), 0); -#endif -#else - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); -#endif - - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, NULL, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, sig, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, &sigLen, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, key, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, NULL, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, sig, &sigLen, key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, NULL, &sigLen, key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, NULL, key, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, NULL, &rng), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); - - ExpectIntEQ(wc_dilithium_export_private(NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(key, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(NULL, privKey, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(NULL, NULL, &privKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(NULL, privKey, &privKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(key, NULL, &privKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_private(key, privKey, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - badKeyLen = 0; - ExpectIntEQ(wc_dilithium_export_private(key, privKey, &badKeyLen), - WC_NO_ERR_TRACE(BUFFER_E)); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL2_KEY_SIZE); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL3_KEY_SIZE); -#else - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL5_KEY_SIZE); -#endif - ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), - 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL2_KEY_SIZE); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL3_KEY_SIZE); -#else - ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL5_KEY_SIZE); -#endif - - ExpectIntEQ(wc_dilithium_init(importKey), 0); - ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_87), 0); -#endif - ExpectIntEQ(wc_dilithium_import_private(NULL, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(privKey, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(NULL, privKeyLen, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(NULL, 0, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(NULL, privKeyLen, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(privKey, 0, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, importKey), - 0); - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); -#ifdef WOLFSSL_DILITHIUM_CHECK_KEY - ExpectIntEQ(wc_dilithium_check_key(importKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); -#endif - wc_dilithium_free(importKey); - - wc_dilithium_free(key); - wc_FreeRng(&rng); - - XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(privKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(importKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_verify(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_VERIFY) && \ - (!defined(WOLFSSL_NO_ML_DSA_44) || !defined(WOLFSSL_DILITHIUM_NO_SIGN)) - dilithium_key* key; - dilithium_key* importKey = NULL; - WC_RNG rng; - byte* pubKey = NULL; - word32 pubKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; - word32 badKeyLen; - byte msg[32]; - byte* sig = NULL; - word32 sigLen = DILITHIUM_MAX_SIG_SIZE; - int res; -#ifndef WOLFSSL_NO_ML_DSA_44 - byte b; -#endif - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - importKey = (dilithium_key*)XMALLOC(sizeof(*key), NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(importKey); - pubKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(pubKey); - sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(sig); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - if (importKey != NULL) { - XMEMSET(importKey, 0, sizeof(*importKey)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(msg, 0x55, sizeof(msg)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_dilithium_init(key), 0); - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); -#endif - -#if !defined(WOLFSSL_NO_ML_DSA_44) - ExpectIntEQ(wc_dilithium_import_public(ml_dsa_44_pub_key, - (word32)sizeof(ml_dsa_44_pub_key), key), 0); - if (sig != NULL) { - XMEMCPY(sig, ml_dsa_44_good_sig, sizeof(ml_dsa_44_good_sig)); - } - sigLen = (word32)sizeof(ml_dsa_44_good_sig); -#else -#ifdef WOLFSSL_DILITHIUM_NO_MAKE_KEY -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_import_public(bench_dilithium_level3_pub_key, - sizeof_bench_dilithium_level3_pub_key, key), 0); -#else - ExpectIntEQ(wc_dilithium_import_public(bench_dilithium_level5_pub_key, - sizeof_bench_dilithium_level5_pub_key, key), 0); -#endif /* !WOLFSSL_NO_ML_DSA_65 */ -#else - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); -#endif /* WOLFSSL_DILITHIUM_NO_MAKE_KEY */ - - ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); -#endif /* !WOLFSSL_NO_ML_DSA_44 */ - - ExpectIntEQ(wc_dilithium_export_public(NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(key, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(NULL, pubKey, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(NULL, NULL, &pubKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(NULL, pubKey, &pubKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(key, NULL, &pubKeyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_public(key, pubKey, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - badKeyLen = 0; - ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &badKeyLen), - WC_NO_ERR_TRACE(BUFFER_E)); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL2_PUB_KEY_SIZE); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL3_PUB_KEY_SIZE); -#else - ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL5_PUB_KEY_SIZE); -#endif - ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL2_PUB_KEY_SIZE); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL3_PUB_KEY_SIZE); -#else - ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL5_PUB_KEY_SIZE); -#endif - - ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(sig, 0, NULL, 32, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, msg, 32, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, &res, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, NULL, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(NULL, sigLen, msg, 32, &res, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(sig, 0, msg, 32, &res, key), - WC_NO_ERR_TRACE(BUFFER_E)); - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, NULL, 32, &res, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, NULL, key), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - res = 0; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), 0); - ExpectIntEQ(res, 1); - - ExpectIntEQ(wc_dilithium_init(importKey), 0); - ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_87), 0); -#endif - ExpectIntEQ(wc_dilithium_import_public(NULL, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(pubKey, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(NULL, pubKeyLen, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(NULL, 0, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(NULL, pubKeyLen, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(pubKey, 0, importKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, importKey), 0); - res = 0; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, importKey), - 0); - ExpectIntEQ(res, 1); -#ifdef WOLFSSL_DILITHIUM_CHECK_KEY - ExpectIntEQ(wc_dilithium_check_key(importKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - wc_dilithium_free(importKey); - -#ifndef WOLFSSL_NO_ML_DSA_44 - if (sig != NULL) { - if (sig[sigLen - 5] == 0) { - /* Unused hints meant to be 0. */ - sig[sigLen - 5] = 0xff; - res = 1; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, - key), WC_NO_ERR_TRACE(SIG_VERIFY_E)); - ExpectIntEQ(res, 0); - sig[sigLen - 5] = 0x00; - } - - /* Last count of hints must be less than PARAMS_ML_DSA_44_OMEGA == 80 */ - b = sig[sigLen - 1]; - sig[sigLen - 1] = 0xff; - res = 1; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), - WC_NO_ERR_TRACE(SIG_VERIFY_E)); - ExpectIntEQ(res, 0); - sig[sigLen - 1] = b; - - if (sig[sigLen - 4] > 1) { - /* Index must be less than previous. */ - b = sig[sigLen - 84]; - sig[sigLen - 84] = 0xff; - res = 1; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, - key), WC_NO_ERR_TRACE(SIG_VERIFY_E)); - ExpectIntEQ(res, 0); - sig[sigLen - 84] = b; - } - - /* Mess up commit hash. */ - sig[0] ^= 0x80; - res = 1; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), - 0); - ExpectIntEQ(res, 0); - sig[0] ^= 0x80; - - /* Mess up z. */ - sig[100] ^= 0x80; - res = 1; - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), - 0); - ExpectIntEQ(res, 0); - sig[100] ^= 0x80; - - /* Set all indices to 0. */ - XMEMSET(sig + sigLen - 4, 0, 4); - ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), - WC_NO_ERR_TRACE(SIG_VERIFY_E)); - ExpectIntEQ(res, 0); - } -#endif - - wc_dilithium_free(key); - wc_FreeRng(&rng); - - XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(pubKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(importKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_sign_vfy(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) && \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) && !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - dilithium_key* key; - WC_RNG rng; - byte msg[64]; - byte* sig = NULL; - word32 sigLen; - byte ctx[10]; - int res; - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(sig); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - XMEMSET(msg, 0xAA, sizeof(msg)); - XMEMSET(ctx, 0x01, sizeof(ctx)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_init(key), 0); - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), - sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, - sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - wc_dilithium_free(key); -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_init(key), 0); - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), - sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, - sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - wc_dilithium_free(key); -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - ExpectIntEQ(wc_dilithium_init(key), 0); - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), - sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, - sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - sigLen = DILITHIUM_MAX_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); - ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), - WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); - ExpectIntEQ(res, 1); - - wc_dilithium_free(key); -#endif - - wc_FreeRng(&rng); - XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); - -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_check_key(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - defined(WOLFSSL_DILITHIUM_CHECK_KEY) && \ - !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) - dilithium_key* checkKey; - WC_RNG rng; - byte* privCheckKey = NULL; - word32 privCheckKeyLen = DILITHIUM_MAX_KEY_SIZE; - byte* pubCheckKey = NULL; - word32 pubCheckKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; - - checkKey = (dilithium_key*)XMALLOC(sizeof(*checkKey), NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(checkKey); - privCheckKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(privCheckKey); - pubCheckKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, - DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(pubCheckKey); - - if (checkKey != NULL) { - XMEMSET(checkKey, 0, sizeof(*checkKey)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(wc_dilithium_check_key(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_dilithium_init(checkKey), 0); - - ExpectIntEQ(wc_dilithium_export_key(NULL, privCheckKey, - &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, pubCheckKey, pubCheckKeyLen, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, - &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_87), 0); -#endif - ExpectIntEQ(wc_dilithium_make_key(checkKey, &rng), 0); - - ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, NULL, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(NULL, privCheckKey, NULL, NULL, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, &privCheckKeyLen, NULL, - NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, pubCheckKey, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, NULL, - &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(NULL , privCheckKey, - &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, NULL , - &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, - NULL , pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, - &privCheckKeyLen, NULL , &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, - &privCheckKeyLen, pubCheckKey, NULL ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, - &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), 0); - - /* Modify hash. */ - if ((pubCheckKey != NULL) && EXPECT_SUCCESS()) { - pubCheckKey[0] ^= 0x80; - ExpectIntEQ(wc_dilithium_import_key(NULL, 0, NULL, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, 0, NULL, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(NULL, 0, pubCheckKey, 0, NULL), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(NULL, 0, NULL, 0, checkKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(NULL , - privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - 0 , pubCheckKey, pubCheckKeyLen, checkKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, NULL , pubCheckKeyLen, checkKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, pubCheckKey, 0 , checkKey), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, pubCheckKey, pubCheckKeyLen, NULL ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), 0); - ExpectIntEQ(wc_dilithium_check_key(checkKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); - pubCheckKey[0] ^= 0x80; - - /* Modify encoded t1. */ - pubCheckKey[48] ^= 0x80; - ExpectIntEQ(wc_dilithium_import_key(privCheckKey, - privCheckKeyLen,pubCheckKey, pubCheckKeyLen, checkKey), 0); - ExpectIntEQ(wc_dilithium_check_key(checkKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); - pubCheckKey[48] ^= 0x80; - } - - wc_dilithium_free(checkKey); - wc_FreeRng(&rng); - - XFREE(pubCheckKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(privCheckKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(checkKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - defined(WOLFSSL_DILITHIUM_PUBLIC_KEY) -static const unsigned char ml_dsa_public_der[] = { -#ifndef WOLFSSL_NO_ML_DSA_44 - 0x30, 0x82, 0x05, 0x32, 0x30, 0x0d, 0x06, 0x09, - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, - 0x11, 0x03, 0x82, 0x05, 0x21, 0x00, - 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, - 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, - 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, - 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, - 0x23, 0x0A, 0x19, 0xD7, 0x5A, 0xDB, 0xDE, 0xD5, - 0x2D, 0xB8, 0x55, 0xE2, 0x52, 0xA7, 0x19, 0xFC, - 0xBD, 0x14, 0x7B, 0xA6, 0x7B, 0x2F, 0xAD, 0x14, - 0xED, 0x0E, 0x68, 0xFD, 0xFE, 0x8C, 0x65, 0xBA, - 0xDE, 0xAC, 0xB0, 0x91, 0x11, 0x93, 0xAD, 0xFA, - 0x87, 0x94, 0xD7, 0x8F, 0x8E, 0x3D, 0x66, 0x2A, - 0x1C, 0x49, 0xDA, 0x81, 0x9F, 0xD9, 0x59, 0xE7, - 0xF0, 0x78, 0xF2, 0x03, 0xC4, 0x56, 0xF8, 0xB6, - 0xE7, 0xC9, 0x41, 0x58, 0x98, 0xE5, 0x41, 0xC7, - 0x30, 0x32, 0xDB, 0xD6, 0x19, 0xEA, 0xF6, 0x0F, - 0x8D, 0x64, 0xF8, 0x68, 0x3D, 0xA9, 0x9E, 0xCA, - 0x51, 0x22, 0x0B, 0x0A, 0xCA, 0x28, 0x46, 0x40, - 0x99, 0xF5, 0x47, 0xC0, 0x27, 0x77, 0xBD, 0x37, - 0xD8, 0x4A, 0x59, 0xBD, 0x37, 0xED, 0x7A, 0x8A, - 0x92, 0x63, 0x3C, 0x75, 0xD0, 0x7C, 0x79, 0x3F, - 0xE7, 0x25, 0x2B, 0x58, 0x4A, 0xBF, 0x6A, 0x15, - 0xEE, 0x14, 0x50, 0x7E, 0x5E, 0x19, 0x3F, 0x89, - 0x86, 0x4D, 0x09, 0xAC, 0x87, 0x27, 0xA6, 0xD0, - 0x42, 0x1F, 0x0C, 0x19, 0xF0, 0xE2, 0xFB, 0xFC, - 0x21, 0x3D, 0x3F, 0xBD, 0x70, 0xF4, 0xF9, 0x76, - 0x2C, 0xEC, 0xFF, 0x23, 0x1E, 0x9C, 0x8A, 0x76, - 0x28, 0xD3, 0xF8, 0xB0, 0x85, 0x7B, 0x03, 0x2D, - 0x32, 0xDE, 0x62, 0xFF, 0x8E, 0xCB, 0xF4, 0x00, - 0x82, 0x89, 0xBF, 0x34, 0x40, 0x36, 0x65, 0xF8, - 0x1A, 0x08, 0x1A, 0xD5, 0xA8, 0x5A, 0x28, 0x2F, - 0x99, 0xBA, 0xB9, 0xE5, 0x38, 0x5A, 0xFB, 0xCC, - 0xCF, 0x44, 0xB7, 0x4C, 0x01, 0x96, 0xC7, 0x54, - 0x55, 0x27, 0xEC, 0x30, 0x26, 0xDA, 0x12, 0x80, - 0xC4, 0xEB, 0x37, 0xD0, 0x9C, 0xFE, 0x3E, 0xC4, - 0xB4, 0x91, 0x0B, 0x62, 0xEB, 0x98, 0x15, 0xA4, - 0x25, 0xC6, 0x59, 0x0F, 0xC4, 0xAD, 0x3F, 0xBB, - 0x22, 0x57, 0x52, 0xCC, 0x1F, 0xC5, 0x69, 0x3F, - 0x18, 0x7E, 0x7D, 0xEC, 0x4E, 0xEF, 0xBE, 0xB6, - 0xB9, 0x1B, 0xD9, 0x1C, 0x5E, 0x2E, 0xA6, 0xA9, - 0x1D, 0x14, 0xD0, 0x97, 0xBE, 0x20, 0x3F, 0xBA, - 0x0B, 0xF9, 0x37, 0xC9, 0x75, 0x07, 0xDC, 0x00, - 0x7C, 0x4C, 0xAA, 0x9B, 0x07, 0x85, 0x89, 0x29, - 0x66, 0xFF, 0x15, 0x90, 0x09, 0x24, 0xE5, 0x79, - 0xD4, 0xFB, 0xA0, 0x2B, 0xDA, 0x87, 0x55, 0x5F, - 0x07, 0x3D, 0xAE, 0x00, 0x51, 0x3E, 0x70, 0x80, - 0x9A, 0xBB, 0xC7, 0x11, 0xFB, 0xA2, 0xE7, 0x64, - 0x95, 0x77, 0xC4, 0x2A, 0xFD, 0xC2, 0x4B, 0xF7, - 0x41, 0x3E, 0x51, 0x26, 0x8A, 0xD6, 0xDB, 0x61, - 0x13, 0xB7, 0xD9, 0x19, 0x1A, 0xF9, 0xD0, 0x61, - 0xDB, 0xDE, 0xD5, 0xD6, 0x30, 0x87, 0x76, 0x50, - 0xC1, 0x24, 0xF1, 0x1B, 0xC4, 0xBD, 0xC3, 0xFD, - 0xC6, 0xA9, 0x00, 0xF6, 0x31, 0x26, 0xF9, 0x21, - 0xE8, 0x38, 0xAD, 0x0C, 0x22, 0x75, 0xA3, 0x38, - 0x9A, 0x39, 0xBD, 0x99, 0xA1, 0x34, 0x50, 0x45, - 0x50, 0x10, 0x1C, 0xD3, 0xE9, 0x5E, 0x6D, 0x14, - 0x96, 0xBE, 0x7D, 0xE6, 0x62, 0x7D, 0xF4, 0xFD, - 0x6C, 0x28, 0xBB, 0xF4, 0x0B, 0x30, 0xEF, 0xA9, - 0xB5, 0xC3, 0xD5, 0xC8, 0x5A, 0xB1, 0x4A, 0x65, - 0xC0, 0x2D, 0x6D, 0x47, 0x81, 0xFF, 0x13, 0xD3, - 0x28, 0x60, 0x85, 0x54, 0xB6, 0xD1, 0x5E, 0xD9, - 0x12, 0x89, 0xA6, 0xD5, 0x5A, 0xAC, 0x0C, 0x38, - 0xE3, 0x77, 0x06, 0xF7, 0x35, 0x5E, 0x9A, 0x4F, - 0xDA, 0x61, 0x5B, 0x87, 0x59, 0x26, 0xBF, 0xE5, - 0xA5, 0x9D, 0x9E, 0xF2, 0x73, 0xBF, 0x94, 0xA0, - 0x7C, 0xFA, 0x57, 0x31, 0x78, 0xF0, 0xE0, 0x04, - 0xB6, 0xE1, 0xEF, 0x0A, 0x83, 0x49, 0xE9, 0xBC, - 0xC0, 0x19, 0x81, 0xF2, 0x46, 0x0F, 0x0A, 0x27, - 0x43, 0xC2, 0x8D, 0x1E, 0x13, 0x8F, 0xFB, 0x76, - 0x5E, 0x7E, 0x33, 0x97, 0xB7, 0x91, 0x33, 0x35, - 0xD4, 0x02, 0xFE, 0x91, 0x80, 0x6A, 0xA8, 0xFC, - 0x81, 0x92, 0x53, 0xAF, 0x32, 0x69, 0x2F, 0xA6, - 0x51, 0xE8, 0x67, 0xF5, 0x90, 0x7E, 0xF4, 0x6F, - 0x00, 0x62, 0x5A, 0x03, 0x0E, 0xC9, 0x04, 0xED, - 0xAB, 0x21, 0x42, 0x6D, 0x59, 0x11, 0x9D, 0x2C, - 0xAA, 0x43, 0xBD, 0x93, 0x5D, 0xEC, 0x0A, 0x55, - 0x0C, 0x61, 0xEE, 0x4B, 0x27, 0x9C, 0x1C, 0xA3, - 0xA7, 0x9C, 0x79, 0xA6, 0x6E, 0x3F, 0x2D, 0x2F, - 0xAD, 0xB0, 0x0F, 0x59, 0xA3, 0xA4, 0x38, 0xAA, - 0x44, 0x57, 0x01, 0x06, 0x07, 0x30, 0x17, 0xFA, - 0x1C, 0x87, 0x57, 0x50, 0x01, 0x09, 0x72, 0x0D, - 0x12, 0x5B, 0xBA, 0x23, 0x1A, 0x0C, 0x36, 0x35, - 0x0C, 0x78, 0x08, 0x6D, 0xFD, 0xC8, 0xD6, 0x13, - 0xAE, 0xCA, 0x88, 0xC4, 0xCC, 0xAE, 0xB4, 0xA4, - 0x4D, 0x13, 0xAD, 0xB3, 0xC7, 0x17, 0xD6, 0x5C, - 0x82, 0xA3, 0x51, 0xB9, 0xB6, 0xEA, 0xBF, 0x6A, - 0x10, 0xF4, 0xB4, 0xE9, 0x62, 0x3E, 0x3A, 0x95, - 0xB4, 0xD4, 0x0A, 0x12, 0xA8, 0x18, 0xAC, 0x6B, - 0x38, 0x22, 0xDB, 0x82, 0xFB, 0x05, 0xDC, 0x42, - 0x02, 0x64, 0x8B, 0x44, 0x54, 0x68, 0x9A, 0xEB, - 0x69, 0xEA, 0x32, 0x5F, 0x03, 0xE3, 0x5D, 0xEF, - 0xA5, 0x47, 0x08, 0x48, 0x14, 0x20, 0xC6, 0xD6, - 0x97, 0xBB, 0x91, 0x2F, 0xCA, 0x0D, 0x3F, 0x19, - 0x2E, 0xF2, 0x97, 0xDF, 0xE7, 0x7F, 0xF3, 0x6B, - 0x21, 0x03, 0xF1, 0xAD, 0x1A, 0xEE, 0xCE, 0xD1, - 0xC8, 0x14, 0xC2, 0xCD, 0x7E, 0xF1, 0x6B, 0xCE, - 0x47, 0x6A, 0xD0, 0x4F, 0x94, 0x1A, 0xFC, 0x79, - 0xE3, 0x29, 0x54, 0x74, 0xA4, 0x10, 0x62, 0x51, - 0x8C, 0x00, 0x37, 0x86, 0x09, 0x34, 0xF0, 0xE5, - 0xE6, 0x52, 0xF7, 0x27, 0x49, 0xA6, 0x98, 0x63, - 0x2A, 0x09, 0x91, 0xF6, 0x13, 0xF5, 0xCB, 0x96, - 0xCA, 0x11, 0x78, 0xF9, 0x74, 0xF2, 0xC4, 0xAA, - 0x0C, 0xE6, 0x3D, 0xC2, 0x4E, 0x36, 0x4C, 0x92, - 0xA6, 0x43, 0xB9, 0x0A, 0x5F, 0x85, 0xA6, 0x2F, - 0xD4, 0xD8, 0xD2, 0xB1, 0x93, 0xD2, 0x9B, 0x18, - 0xBE, 0xDE, 0x26, 0x53, 0xFC, 0x5D, 0x3F, 0x24, - 0xF5, 0xB2, 0xC0, 0x18, 0xDB, 0xBC, 0xB6, 0xEF, - 0x00, 0xF3, 0x05, 0xBF, 0x93, 0x66, 0x6B, 0xD4, - 0x7F, 0xEA, 0x91, 0x93, 0xBC, 0x23, 0x3D, 0xB3, - 0x91, 0x21, 0x44, 0x2E, 0x93, 0x8D, 0xA5, 0xDD, - 0x07, 0xEE, 0x6E, 0x87, 0x9C, 0x5B, 0x9D, 0xFF, - 0x41, 0xEC, 0xEE, 0x5E, 0x05, 0x89, 0xAE, 0x61, - 0x75, 0xFF, 0x5E, 0xC6, 0xF6, 0xD2, 0x62, 0x9F, - 0x56, 0xB1, 0x8B, 0x4D, 0xE6, 0x6F, 0xCB, 0x13, - 0xDF, 0x04, 0x00, 0xA7, 0x97, 0xC9, 0x22, 0x70, - 0xF6, 0x9B, 0xDE, 0xBD, 0xDC, 0xB8, 0x8C, 0x42, - 0x48, 0x91, 0x9B, 0x56, 0xCD, 0xA7, 0x0B, 0x8A, - 0xC4, 0xF9, 0x42, 0x9C, 0x29, 0x2D, 0xA9, 0x4D, - 0x64, 0x78, 0x28, 0x07, 0x64, 0xFE, 0x23, 0x86, - 0xFC, 0x38, 0xCB, 0x09, 0x31, 0x45, 0x88, 0x39, - 0xEF, 0x4E, 0x7D, 0xE8, 0xF0, 0x68, 0x9D, 0x99, - 0x80, 0x59, 0x88, 0xC7, 0xF9, 0x61, 0x11, 0x85, - 0x2C, 0x89, 0x29, 0xE5, 0xA5, 0x40, 0xD3, 0xB7, - 0x8D, 0x71, 0x2D, 0xEC, 0xC3, 0x96, 0xFE, 0xF3, - 0xEC, 0x34, 0x40, 0x21, 0x84, 0xE4, 0xFD, 0x29, - 0xF3, 0x63, 0xEA, 0x80, 0xF6, 0xFC, 0x50, 0xBA, - 0x9A, 0x11, 0x35, 0x1A, 0xCE, 0xEA, 0x8F, 0xE6, - 0x8D, 0x54, 0x1E, 0x1A, 0xA5, 0x84, 0x8D, 0x9F, - 0x6E, 0x61, 0xDF, 0xB6, 0x2B, 0x2F, 0x23, 0xBC, - 0x50, 0x81, 0xE8, 0x2F, 0x76, 0x22, 0x6E, 0x03, - 0x28, 0x49, 0x82, 0xEC, 0x48, 0x48, 0x12, 0x09, - 0xB1, 0xA7, 0xD4, 0xC8, 0x79, 0x7E, 0x44, 0xBF, - 0xA8, 0x70, 0xB2, 0x20, 0x04, 0xDB, 0x74, 0xBD, - 0x7D, 0x47, 0x8D, 0x5B, 0x36, 0x14, 0xD2, 0xB1, - 0xDA, 0x75, 0x02, 0xB3, 0x98, 0xEB, 0x9D, 0xA8, - 0x0D, 0x06, 0x46, 0x1E, 0x90, 0xE0, 0x30, 0x60, - 0x44, 0x6A, 0xB4, 0xA8, 0x23, 0x84, 0x32, 0xBF, - 0xAF, 0x75, 0x2F, 0x39, 0x17, 0x91, 0x21, 0x4F, - 0x1E, 0x6B, 0x63, 0x59, 0x0D, 0x53, 0x60, 0x60, - 0xD1, 0xC2, 0x45, 0x30, 0x7B, 0xC5, 0xC1, 0xBA, - 0xC4, 0xAA, 0xA0, 0x99, 0xD3, 0x6B, 0xB6, 0xDC, - 0xBC, 0x97, 0x3C, 0xF2, 0xE6, 0x9F, 0x27, 0x34, - 0xD0, 0xF2, 0x9A, 0xEE, 0xC4, 0x56, 0x7B, 0x99, - 0xA1, 0x6B, 0xC1, 0x7C, 0x6C, 0xDD, 0xAC, 0xEF, - 0xE4, 0x99, 0x27, 0xFB, 0x14, 0xE7, 0xD9, 0x8D, - 0xD4, 0x26, 0x35, 0x19, 0x46, 0x9C, 0xCA, 0x3D, - 0xB4, 0x67, 0x9A, 0x68, 0xCE, 0xED, 0xA9, 0x55, - 0x59, 0x22, 0x10, 0xFC, 0x49, 0xAA, 0x5F, 0xBE, - 0x93, 0x4C, 0xC7, 0x3D, 0x84, 0xE4, 0xBA, 0x54, - 0x78, 0x00, 0x2D, 0x68, 0x90, 0x98, 0x90, 0x68, - 0xEF, 0x8F, 0xC9, 0x8C, 0x25, 0x32, 0xB8, 0x3B, - 0xF3, 0xCB, 0x9E, 0xF0, 0x28, 0x93, 0xC2, 0x15, - 0x24, 0x26, 0xB9, 0xD1, 0xA9, 0x47, 0x34, 0xDF, - 0xB4, 0xF9, 0x11, 0x35, 0x14, 0x3C, 0x9E, 0xED, - 0x18, 0xFD, 0x51, 0xAE, 0x87, 0x5D, 0x07, 0xA2, - 0x37, 0x75, 0x60, 0x6A, 0x73, 0x4F, 0xBA, 0x98, - 0xC0, 0x63, 0xB4, 0xA1, 0x62, 0x2E, 0x7F, 0xF2, - 0x1A, 0xA7, 0xE6, 0x52, 0xA3, 0xD6, 0xC1, 0x9F, - 0xE0, 0xDC, 0x67, 0x61, 0xB7, 0xD3, 0x53, 0x02, - 0xBF, 0x21, 0x4D, 0x30, 0x79, 0xF7, 0x60, 0x51, - 0x08, 0x2A, 0x87, 0x59, 0x29, 0x92, 0x0D, 0xC3, - 0xB3, 0xCB, 0x43, 0x21, 0x1A, 0x23, 0xA4, 0x3A, - 0x50, 0x33, 0x2F, 0xAF, 0x1A, 0xC2, 0x19, 0x1E, - 0x71, 0x71, 0x25, 0xF6, 0x3E, 0x25, 0x86, 0xC4, - 0xD8, 0x6D, 0xCA, 0x6B, 0xCD, 0x3D, 0x03, 0x8F, - 0x9D, 0x3A, 0x7B, 0x66, 0xCB, 0xC7, 0xDF, 0x34 -#elif !defined(WOLFSSL_NO_ML_DSA_65) - 0x30, 0x82, 0x07, 0xb2, 0x30, 0x0d, 0x06, 0x09, - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, - 0x12, 0x03, 0x82, 0x07, 0xa1, 0x00, - 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, - 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, - 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, - 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, - 0xBB, 0x11, 0x19, 0x23, 0xF1, 0x94, 0xA7, 0xCC, - 0x8A, 0x7B, 0xB2, 0xEB, 0xC5, 0xC0, 0xE7, 0x1A, - 0xA6, 0x37, 0xCC, 0x80, 0x0E, 0x61, 0x03, 0xB8, - 0x50, 0xA5, 0x39, 0xB2, 0xA3, 0x9E, 0x1B, 0x6D, - 0x71, 0x3E, 0x5D, 0xB8, 0x31, 0x4C, 0x9A, 0xE1, - 0xF8, 0xBF, 0x8A, 0x38, 0xF0, 0x6A, 0xFB, 0x9D, - 0x73, 0xB1, 0x61, 0xB0, 0xFF, 0xE3, 0xA4, 0x89, - 0x17, 0x06, 0xAE, 0x26, 0xD5, 0x4F, 0xFB, 0x49, - 0x6D, 0xF8, 0xDC, 0x0F, 0x19, 0x83, 0x50, 0x95, - 0x00, 0xC9, 0xAB, 0xBD, 0x28, 0xE5, 0x9B, 0x3F, - 0xCD, 0xAB, 0xBD, 0xAD, 0xAB, 0xD4, 0x5E, 0xC3, - 0x14, 0x99, 0x37, 0x8B, 0xDE, 0x84, 0x9E, 0x7C, - 0x1F, 0x19, 0xB7, 0x04, 0x4D, 0x67, 0xE0, 0x51, - 0x06, 0xD7, 0x13, 0x6D, 0x95, 0x38, 0x0D, 0x56, - 0x05, 0xD4, 0x46, 0x5D, 0x87, 0x75, 0x57, 0x06, - 0x5D, 0xF0, 0xA7, 0x5D, 0x3C, 0x28, 0x54, 0x2F, - 0x40, 0xFE, 0xED, 0x42, 0xEC, 0x7E, 0x28, 0x06, - 0x37, 0xB0, 0x83, 0xD9, 0x88, 0xBC, 0xA5, 0xF6, - 0x39, 0x4E, 0x02, 0x39, 0x6C, 0x46, 0x76, 0x18, - 0x4F, 0xB6, 0x33, 0x18, 0xDA, 0xFA, 0xF5, 0xBB, - 0xDD, 0xE0, 0x0E, 0x30, 0x8F, 0xE8, 0x40, 0x19, - 0xC2, 0x34, 0x0A, 0x3F, 0x3E, 0x1C, 0x08, 0x65, - 0x62, 0x49, 0x70, 0x71, 0x12, 0x83, 0x35, 0x6A, - 0xE1, 0x4B, 0xD6, 0xB9, 0x4D, 0x1C, 0x9A, 0xE1, - 0x88, 0xDE, 0x1A, 0x8A, 0x2C, 0xA8, 0x24, 0xA8, - 0xEA, 0xE2, 0xFE, 0x6A, 0xFB, 0x38, 0xD8, 0x3A, - 0x2D, 0x99, 0x99, 0x6A, 0xB2, 0x1F, 0xE3, 0xE8, - 0x4C, 0x0B, 0xE6, 0xB6, 0xDA, 0x08, 0x87, 0x9B, - 0x67, 0x73, 0x74, 0xFA, 0x7C, 0x69, 0x1B, 0x13, - 0xD4, 0x0F, 0xA9, 0xD4, 0xCC, 0x26, 0xB2, 0x28, - 0x8D, 0x5A, 0x8C, 0x9A, 0x43, 0x72, 0x43, 0x81, - 0x00, 0x4D, 0x61, 0xB0, 0xD5, 0x7F, 0xF4, 0x00, - 0x31, 0x4C, 0x8E, 0x30, 0xEE, 0x79, 0x6A, 0xF1, - 0x0F, 0x7E, 0xE2, 0x1B, 0xF1, 0x3D, 0x08, 0x18, - 0x04, 0x65, 0xAB, 0xC7, 0x2E, 0xDD, 0xB0, 0x80, - 0xC6, 0xA0, 0x71, 0x84, 0xE3, 0xEE, 0xDC, 0x47, - 0xC1, 0x9A, 0xA7, 0xF0, 0x9D, 0x1F, 0x33, 0x09, - 0xE1, 0x83, 0xA2, 0xBD, 0x9B, 0x05, 0x73, 0xDD, - 0xE4, 0x74, 0xA8, 0x1B, 0xA4, 0xF7, 0x8D, 0x0C, - 0x52, 0x3D, 0x0C, 0x04, 0xF9, 0x00, 0x60, 0xFD, - 0x57, 0x1A, 0x35, 0xC0, 0x37, 0xE0, 0x79, 0xC5, - 0xE2, 0x10, 0xD7, 0x39, 0x0D, 0xF5, 0x68, 0xF2, - 0xE2, 0xF0, 0x3C, 0xE4, 0x44, 0x20, 0xC8, 0x2F, - 0x3F, 0xE6, 0x9E, 0xB9, 0xB4, 0x8E, 0xE9, 0x09, - 0x62, 0xD6, 0xB0, 0xF2, 0x44, 0x40, 0x64, 0x8F, - 0x71, 0xED, 0xB2, 0x41, 0xEE, 0x65, 0x66, 0xFC, - 0x1A, 0x64, 0xCA, 0xBF, 0x66, 0xBE, 0x6F, 0xEC, - 0xBC, 0xB1, 0x38, 0x7C, 0x82, 0xA7, 0xBC, 0x20, - 0x2D, 0x9E, 0x36, 0x79, 0x98, 0xE2, 0xA2, 0x91, - 0xAF, 0x0C, 0xD1, 0x57, 0x06, 0x77, 0xFE, 0x8D, - 0x63, 0xA3, 0x28, 0x5A, 0x2E, 0xA6, 0xEB, 0x29, - 0xAF, 0x9D, 0xC1, 0xAE, 0xC1, 0xC3, 0x6C, 0x47, - 0x06, 0xB1, 0x2B, 0xAA, 0x20, 0x83, 0x96, 0x92, - 0xF2, 0x86, 0xA6, 0xE0, 0x32, 0x14, 0x68, 0xF7, - 0x47, 0x93, 0x45, 0xC4, 0xD5, 0x2F, 0xBD, 0xB2, - 0xF0, 0x67, 0x25, 0xB5, 0x54, 0xB8, 0x9E, 0x24, - 0x92, 0x61, 0x26, 0x81, 0xAC, 0xEB, 0xC6, 0xC7, - 0xBA, 0xDA, 0x92, 0x25, 0x81, 0x8D, 0xBC, 0x35, - 0xD6, 0x4C, 0x22, 0xC4, 0x8B, 0xFF, 0x80, 0xA7, - 0x30, 0xD0, 0x71, 0x6D, 0xFA, 0xC9, 0x9D, 0xFD, - 0x5B, 0x89, 0x92, 0x61, 0x1D, 0x0C, 0x93, 0xEE, - 0x90, 0xBD, 0xB2, 0x60, 0x02, 0x2A, 0xFE, 0x25, - 0xD9, 0x13, 0xE0, 0x6E, 0xFF, 0xB5, 0x9C, 0xB1, - 0xF8, 0xA6, 0x0C, 0xBF, 0xA5, 0xAB, 0x2F, 0x45, - 0x9A, 0x16, 0xF4, 0x67, 0xE9, 0x89, 0x52, 0x5E, - 0x0A, 0x37, 0xEB, 0xE5, 0x6E, 0x83, 0x3F, 0xDE, - 0x55, 0xDB, 0x9D, 0x15, 0x30, 0xAD, 0xCF, 0x45, - 0x84, 0x6D, 0xF2, 0x81, 0xE4, 0x7C, 0xAA, 0x1E, - 0x0A, 0x27, 0xEF, 0xDE, 0x21, 0x07, 0xD3, 0x54, - 0xCE, 0xA0, 0xF6, 0xA4, 0x54, 0x69, 0x2F, 0x04, - 0xCD, 0x83, 0x8E, 0xBD, 0xD4, 0x6E, 0x19, 0x1E, - 0x5D, 0x9C, 0x11, 0x83, 0x9A, 0x2C, 0x3F, 0x48, - 0x8A, 0x4F, 0xC7, 0xCD, 0x26, 0x5A, 0x7B, 0x5D, - 0x32, 0xB0, 0x8C, 0xBD, 0xBF, 0xAB, 0x9D, 0x2C, - 0xCD, 0x76, 0x22, 0x2C, 0x8E, 0xE3, 0x7D, 0xDC, - 0xBD, 0x2A, 0xA0, 0x63, 0xED, 0x86, 0x14, 0x73, - 0xA6, 0x45, 0x4C, 0xAE, 0xA3, 0x77, 0x85, 0x0B, - 0x1A, 0x2B, 0x9D, 0xDB, 0xBC, 0xB3, 0x74, 0xFA, - 0xB5, 0xB1, 0x2F, 0x35, 0x1C, 0x8E, 0x58, 0x88, - 0x87, 0x2E, 0x5C, 0xD1, 0xF6, 0x0A, 0x4F, 0xAE, - 0x1F, 0xF8, 0x37, 0xD1, 0x92, 0xC2, 0x2B, 0xEB, - 0x41, 0xEE, 0x6F, 0xA3, 0x92, 0xFC, 0xDF, 0x45, - 0x50, 0xFF, 0x46, 0xB5, 0xCE, 0x90, 0x6D, 0x01, - 0x7E, 0xF3, 0x07, 0x7D, 0xF1, 0x32, 0x30, 0x0D, - 0x8B, 0xBF, 0xA9, 0xBB, 0x03, 0xC7, 0x5E, 0x79, - 0xE2, 0xF0, 0x4C, 0x28, 0x4A, 0xD0, 0x6A, 0x44, - 0x39, 0x96, 0x49, 0xC3, 0xE2, 0xA2, 0xA8, 0xD1, - 0xEF, 0xE9, 0xB7, 0xA4, 0xE0, 0xC2, 0x71, 0x04, - 0x7A, 0xB7, 0x59, 0x08, 0xBF, 0xF7, 0xDF, 0x9E, - 0x30, 0xEC, 0xA5, 0x47, 0x74, 0x5B, 0xAE, 0x23, - 0xA8, 0x6F, 0xF9, 0xA8, 0xB5, 0x8C, 0x25, 0x38, - 0xB8, 0x8B, 0x86, 0x64, 0x01, 0x07, 0x69, 0x02, - 0xDC, 0x5F, 0x0B, 0xD7, 0x61, 0x68, 0x7B, 0x49, - 0xEA, 0xFE, 0x36, 0xD3, 0x50, 0xCB, 0xED, 0xFD, - 0xD3, 0x6C, 0x12, 0x1C, 0xF2, 0x37, 0x86, 0xBF, - 0xCF, 0x7E, 0x47, 0x07, 0x64, 0x96, 0xEA, 0xB6, - 0xBB, 0xDA, 0x77, 0x40, 0x49, 0xC2, 0xEB, 0xAB, - 0xE2, 0xDE, 0x99, 0xC4, 0xC2, 0x4F, 0x2D, 0xB7, - 0x36, 0x84, 0x01, 0x5B, 0x37, 0x39, 0x77, 0x49, - 0x67, 0x60, 0xCF, 0x9A, 0xC2, 0x3D, 0x8B, 0x62, - 0x31, 0x33, 0xDB, 0x2D, 0xE1, 0x0D, 0x73, 0xFA, - 0x6A, 0xD1, 0xC6, 0xDA, 0xC8, 0x43, 0x4F, 0x28, - 0xC6, 0xE2, 0x51, 0xCE, 0x72, 0x93, 0xCF, 0xF3, - 0xF3, 0xB6, 0x1E, 0xFC, 0xB5, 0xA4, 0x35, 0x12, - 0x36, 0x70, 0xF2, 0x98, 0x46, 0xA1, 0x3D, 0xF3, - 0xEE, 0x71, 0x26, 0x04, 0x46, 0x1F, 0x1B, 0xAB, - 0x8F, 0x4E, 0xBC, 0x83, 0x6D, 0xE0, 0x58, 0x97, - 0x8A, 0xE7, 0x34, 0x39, 0x6A, 0x98, 0x08, 0x1B, - 0x35, 0xCC, 0x98, 0x18, 0x8A, 0x86, 0x94, 0x9C, - 0x99, 0x27, 0x0D, 0x47, 0x09, 0x85, 0x4C, 0x5B, - 0x35, 0xB1, 0x7F, 0x48, 0xA3, 0x73, 0x13, 0x4C, - 0x81, 0x4C, 0xC8, 0xA0, 0xF3, 0xE2, 0xFA, 0x80, - 0x7F, 0x2A, 0x91, 0x85, 0x30, 0x90, 0x78, 0x64, - 0x77, 0x82, 0x82, 0xD7, 0x5E, 0x03, 0xA4, 0x1B, - 0x25, 0x04, 0xEE, 0xD8, 0x16, 0xA4, 0x17, 0xA3, - 0xAC, 0x6B, 0xA1, 0x60, 0x80, 0xC3, 0x9B, 0x73, - 0x10, 0x19, 0x20, 0x02, 0xA7, 0x28, 0xF7, 0xF2, - 0x03, 0x95, 0x00, 0x9A, 0x9E, 0x16, 0x76, 0x7C, - 0xE1, 0x97, 0x1F, 0x5D, 0xE7, 0xD2, 0x29, 0xA5, - 0x06, 0x13, 0x36, 0x9E, 0x43, 0x82, 0x04, 0x5A, - 0x8E, 0x81, 0x90, 0x1F, 0x4D, 0xBA, 0x81, 0x02, - 0xF3, 0xD4, 0x13, 0xFE, 0x35, 0xB3, 0x26, 0xA8, - 0x74, 0xF2, 0x33, 0xB7, 0x19, 0xA7, 0x13, 0x76, - 0x00, 0xD3, 0x5D, 0x33, 0xAE, 0xB6, 0xB7, 0x25, - 0x96, 0x24, 0x08, 0x3A, 0xA9, 0x68, 0x73, 0x0C, - 0x8F, 0x78, 0x29, 0x2A, 0xD2, 0x8F, 0x14, 0xEE, - 0xAB, 0xE6, 0x60, 0x83, 0x59, 0x84, 0xFE, 0x69, - 0xEF, 0x23, 0xDE, 0xC8, 0xC3, 0x27, 0xC0, 0xEB, - 0x0B, 0x88, 0x2D, 0x58, 0x7E, 0x1E, 0xC4, 0x33, - 0xDA, 0x85, 0xC9, 0xFD, 0x1E, 0x0A, 0x34, 0x99, - 0x4D, 0xEA, 0x24, 0x0C, 0x85, 0x44, 0x52, 0xD1, - 0x8C, 0x30, 0xF4, 0x96, 0xE4, 0x9E, 0xC9, 0x04, - 0xB6, 0x02, 0xE0, 0xF5, 0x06, 0x2E, 0xDC, 0xDA, - 0x03, 0x28, 0x0A, 0x53, 0xB4, 0x31, 0x35, 0x74, - 0xCC, 0x2C, 0x0D, 0x54, 0x71, 0xBC, 0x96, 0x13, - 0xBD, 0xFD, 0x66, 0x41, 0xF5, 0xBD, 0x12, 0x7B, - 0xAB, 0x5B, 0x5E, 0xB3, 0xD4, 0x99, 0xA3, 0x31, - 0x14, 0x04, 0x82, 0x20, 0xE8, 0x19, 0xF8, 0xEE, - 0x12, 0xCA, 0x92, 0x2C, 0x8F, 0x17, 0xD9, 0xC9, - 0xF5, 0x1A, 0xD5, 0xBD, 0x68, 0x83, 0xB1, 0x0E, - 0x6A, 0xA2, 0x48, 0x3B, 0xA4, 0x9D, 0xC5, 0x47, - 0xDA, 0x76, 0x86, 0x15, 0x13, 0x44, 0xF4, 0xE9, - 0x09, 0x9B, 0x38, 0xE4, 0x30, 0xB5, 0x22, 0x6B, - 0x05, 0x98, 0x32, 0xCF, 0x03, 0xDB, 0x48, 0xFB, - 0x02, 0xDB, 0xA4, 0xE6, 0x15, 0x93, 0xDC, 0x45, - 0x76, 0x36, 0x04, 0x91, 0x89, 0x0E, 0x53, 0xEC, - 0x0E, 0x6A, 0xC7, 0x3C, 0xF3, 0x2B, 0x25, 0xD8, - 0x23, 0xB3, 0x84, 0x56, 0xE2, 0x86, 0x50, 0x5A, - 0x54, 0x1E, 0x5A, 0xEE, 0xE9, 0x6B, 0x19, 0x14, - 0xF5, 0xF7, 0x66, 0x87, 0xCE, 0x2B, 0x01, 0x60, - 0x22, 0x7A, 0xBE, 0xD7, 0x79, 0x93, 0x59, 0x4B, - 0xCD, 0x83, 0x13, 0x66, 0x20, 0x6D, 0x75, 0x71, - 0x40, 0x82, 0xF1, 0xC4, 0x6F, 0x1F, 0x44, 0x39, - 0xAC, 0x81, 0xA5, 0x7A, 0xF3, 0x1C, 0x81, 0xC5, - 0x55, 0x30, 0x7A, 0x07, 0x0F, 0xFA, 0x94, 0xE0, - 0x47, 0x9B, 0x78, 0x4B, 0xBD, 0x88, 0xA6, 0x0C, - 0xD4, 0xC7, 0xCF, 0xD9, 0x4E, 0x6A, 0xFE, 0x02, - 0xF6, 0xB2, 0x1F, 0x72, 0xAF, 0x0D, 0xCD, 0x66, - 0x09, 0xD4, 0x0C, 0x96, 0x5C, 0x14, 0xE5, 0xF2, - 0x38, 0x91, 0x83, 0xE5, 0x3D, 0xE9, 0x30, 0xF7, - 0xDE, 0x1D, 0x44, 0x21, 0x5C, 0xF4, 0x91, 0x44, - 0x84, 0x4E, 0x8B, 0x87, 0xF7, 0x8A, 0x7F, 0x13, - 0x2A, 0xEF, 0xE2, 0x2B, 0xE8, 0x0B, 0x4E, 0x3A, - 0x05, 0xEE, 0x3A, 0x68, 0xCC, 0xF6, 0x09, 0xEF, - 0x44, 0x04, 0x74, 0x02, 0xE4, 0x49, 0x30, 0x46, - 0xE6, 0xF9, 0xC7, 0x67, 0xFF, 0x8A, 0x75, 0xE2, - 0x8B, 0x3C, 0xE0, 0x77, 0xFD, 0xE7, 0xE7, 0xEE, - 0xD3, 0x13, 0xB5, 0xBF, 0x7E, 0x46, 0x01, 0x27, - 0xCA, 0x81, 0x82, 0xE9, 0xBC, 0x79, 0x4C, 0x0D, - 0xFA, 0x73, 0x0F, 0xB9, 0x20, 0x08, 0x05, 0x75, - 0xA7, 0x51, 0xB5, 0xCA, 0xEC, 0x85, 0xA1, 0x09, - 0xB4, 0x42, 0x2B, 0xA2, 0x66, 0x74, 0x3F, 0x0D, - 0x03, 0x2B, 0xDA, 0x8F, 0x1C, 0xA6, 0x24, 0x8C, - 0xDB, 0x91, 0x75, 0x30, 0xDF, 0x13, 0x02, 0xA5, - 0xF8, 0xC1, 0x8D, 0xC6, 0x42, 0xD5, 0x24, 0x78, - 0xC9, 0x8C, 0x12, 0xA3, 0xF1, 0x6E, 0xF2, 0xB6, - 0x2B, 0x4F, 0x59, 0xEA, 0x1B, 0xB5, 0x8D, 0xE7, - 0xB6, 0x5B, 0x3C, 0x71, 0x53, 0xCE, 0x6D, 0xA5, - 0xE4, 0x95, 0x07, 0x46, 0xF8, 0x0E, 0x08, 0x7A, - 0x0E, 0x35, 0x86, 0xD0, 0x97, 0x79, 0x1B, 0xF3, - 0x6D, 0xEF, 0x86, 0x5D, 0x68, 0x59, 0x1D, 0x39, - 0xD0, 0x90, 0x37, 0x73, 0xEE, 0xA9, 0x62, 0x14, - 0x7F, 0x34, 0x70, 0x41, 0x38, 0xB5, 0x4D, 0xF7, - 0x92, 0x4C, 0xDD, 0x8C, 0x33, 0x3D, 0xB5, 0xE1, - 0xA4, 0x09, 0xCC, 0xB2, 0xB3, 0x4E, 0x2C, 0x3C, - 0x8C, 0x7F, 0xDD, 0x3F, 0xD8, 0xD0, 0x12, 0xCB, - 0xF3, 0x82, 0xAA, 0xA8, 0x5E, 0x83, 0xA1, 0x2F, - 0x23, 0x5A, 0x2D, 0x14, 0x7D, 0x03, 0x5B, 0x7B, - 0x28, 0xB3, 0x4B, 0x6F, 0x57, 0x94, 0x9F, 0x32, - 0x24, 0x82, 0xA7, 0xD4, 0xD3, 0xB1, 0x50, 0x45, - 0xC4, 0x20, 0xD5, 0xAD, 0xDC, 0x7F, 0x0E, 0x69, - 0xB4, 0xDC, 0x1C, 0xBA, 0x58, 0xB0, 0x1D, 0x87, - 0x24, 0x80, 0xB0, 0x6A, 0x26, 0x0D, 0x82, 0x7D, - 0x89, 0x1B, 0x13, 0xC4, 0xC5, 0xCA, 0x50, 0xC7, - 0x48, 0xDE, 0x3C, 0x77, 0x1B, 0xE6, 0x1E, 0x9A, - 0xA1, 0x70, 0x16, 0x5C, 0xB0, 0x1F, 0x4B, 0xF5, - 0xDA, 0x27, 0xA7, 0x79, 0x1D, 0x3A, 0xD3, 0xF6, - 0x26, 0x7B, 0x4C, 0xB4, 0xE6, 0x1B, 0x28, 0xFA, - 0x17, 0x08, 0x41, 0x8D, 0x93, 0x2D, 0xFC, 0x41, - 0x61, 0x88, 0x0C, 0x5D, 0x3B, 0x17, 0xA9, 0x66, - 0x3A, 0x90, 0x61, 0xFA, 0x8F, 0x18, 0x04, 0x31, - 0x58, 0x50, 0xFE, 0x4E, 0x73, 0x06, 0xC8, 0x82, - 0xB3, 0x82, 0x27, 0xE8, 0x67, 0xF8, 0x08, 0x72, - 0xCD, 0xC1, 0x94, 0x4D, 0x47, 0x26, 0x15, 0xEA, - 0x49, 0x00, 0xEF, 0x7D, 0x27, 0x0B, 0x88, 0x1D, - 0x41, 0x30, 0xF5, 0x6C, 0x5C, 0xC9, 0x80, 0xD9, - 0x2A, 0x47, 0xAD, 0xA6, 0x65, 0x7E, 0xB6, 0xF3, - 0x7A, 0x38, 0x5D, 0x2D, 0x8C, 0xC9, 0x93, 0xE1, - 0x44, 0x2E, 0xB0, 0x52, 0x81, 0x85, 0x36, 0x36, - 0x99, 0x1E, 0x34, 0xAA, 0xDC, 0x68, 0x95, 0x4D, - 0x04, 0xE7, 0xAD, 0xEF, 0x76, 0xBF, 0x88, 0x0F, - 0x05, 0x9B, 0x0C, 0xBB, 0x55, 0xD9, 0x15, 0xA4, - 0xB1, 0x23, 0xE2, 0xF1, 0x33, 0x9A, 0x07, 0x3C, - 0xBF, 0xBC, 0x40, 0x9B, 0xEF, 0xF6, 0x40, 0x0A, - 0xE0, 0x96, 0xD5, 0xAE, 0x18, 0xEC, 0x42, 0xCF, - 0xFA, 0xD5, 0xB4, 0x98, 0x0F, 0xA3, 0x5B, 0xF0, - 0x34, 0x13, 0xAD, 0xB5, 0xD7, 0xE6, 0x87, 0x6A, - 0xC3, 0x55, 0xD1, 0xC9, 0xED, 0x70, 0xCA, 0x2B, - 0x97, 0x39, 0x54, 0xD1, 0x2B, 0x3C, 0xDD, 0x76, - 0xAC, 0x68, 0x35, 0xDB, 0x96, 0x00, 0x3E, 0xD8, - 0xC4, 0xE2, 0x88, 0xB7, 0x1F, 0xD7, 0x7D, 0xBA, - 0xA7, 0x63, 0x57, 0x20, 0xE1, 0x2A, 0xE0, 0xA3, - 0x17, 0xDE, 0x80, 0x8C, 0x66, 0x4E, 0x31, 0x7F, - 0x55, 0x27, 0x57, 0x91, 0xF3, 0x24, 0x5C, 0xA4, - 0xFE, 0x5D, 0x4D, 0x41, 0x07, 0x7F, 0xC1, 0x50, - 0xA6, 0xE4, 0x03, 0xD5, 0xA2, 0x08, 0xE4, 0x6E, - 0xAD, 0xBE, 0x8F, 0x2C, 0xFB, 0x8A, 0xF4, 0x72, - 0xF4, 0xA0, 0xCE, 0xAC, 0x01, 0x52, 0x19, 0x47, - 0x8E, 0x6B, 0x86, 0xC9, 0x58, 0xCF, 0x86, 0x52, - 0x5B, 0x74, 0x85, 0xC1, 0x73, 0x4C, 0x7E, 0xF0, - 0x0E, 0x90, 0x68, 0x3F, 0xFF, 0x5D, 0xBD, 0x0A, - 0x7D, 0x41, 0x3A, 0x85, 0x50, 0x21, 0x02, 0x6A, - 0x1B, 0x32, 0x01, 0x3A, 0x46, 0x16, 0xCB, 0xCD, - 0x37, 0x00, 0xAC, 0xBC, 0x70, 0x5B, 0xE3, 0xEF, - 0xBA, 0x62, 0x5C, 0x69, 0xA0, 0x25, 0x26, 0x7B, - 0xCE, 0x9D, 0x13, 0x5E, 0x3F, 0x5B, 0x5C, 0xC8, - 0xC4, 0x39, 0x56, 0x40, 0x7E, 0x84, 0xB6, 0x66, - 0x31, 0x03, 0xE2, 0x9C, 0x24, 0x20, 0x35, 0x55, - 0x1A, 0xE7, 0x97, 0xF5, 0x6C, 0x63, 0x74, 0xBE, - 0x0C, 0x79, 0x8C, 0x0C, 0xF3, 0x98, 0xF1, 0xED -#else - 0x30, 0x82, 0x0a, 0x32, 0x30, 0x0d, 0x06, 0x09, - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, - 0x13, 0x03, 0x82, 0x0a, 0x21, 0x00, - 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, - 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, - 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, - 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, - 0x83, 0x01, 0xE6, 0x66, 0xF5, 0x9D, 0x3E, 0xC5, - 0x04, 0x4D, 0xE4, 0x56, 0x78, 0x8F, 0xDE, 0x19, - 0xEB, 0x39, 0x67, 0x7B, 0x5F, 0x9F, 0xE1, 0x41, - 0x50, 0xDA, 0x46, 0x3A, 0x70, 0x6F, 0x3B, 0xAF, - 0x71, 0x5B, 0x95, 0x33, 0x6B, 0x2D, 0x68, 0x5A, - 0x7C, 0xD7, 0x88, 0x07, 0x13, 0xE4, 0x58, 0x7B, - 0xF7, 0xD8, 0x57, 0xBF, 0x7E, 0x31, 0x56, 0x96, - 0xB8, 0xD0, 0xD9, 0xD4, 0x9E, 0x14, 0x29, 0x18, - 0xBF, 0x09, 0x74, 0xE7, 0xF4, 0x32, 0x37, 0xD4, - 0xBE, 0x3A, 0xD3, 0x94, 0x59, 0x9E, 0x3D, 0x39, - 0xBB, 0x76, 0x49, 0x93, 0x25, 0x53, 0x44, 0x7E, - 0x5D, 0x5A, 0xCC, 0x34, 0x99, 0x93, 0x01, 0x76, - 0xEC, 0xD3, 0xA8, 0x44, 0xA4, 0x25, 0xF5, 0x0D, - 0x05, 0x11, 0xC9, 0x22, 0x6C, 0x4B, 0x9A, 0x24, - 0xF2, 0xA0, 0x11, 0xCD, 0x88, 0xD3, 0x23, 0x08, - 0xE0, 0x31, 0x2A, 0x0C, 0x87, 0xCC, 0x34, 0xA9, - 0x95, 0x82, 0x3C, 0x65, 0xF4, 0xF0, 0xF9, 0x8E, - 0x50, 0xC3, 0x77, 0x88, 0xCE, 0x38, 0xDC, 0x28, - 0xFB, 0x8B, 0x9B, 0xFA, 0xAF, 0xA9, 0x04, 0xB5, - 0x41, 0xEE, 0x71, 0x2F, 0x6A, 0x04, 0x1E, 0x06, - 0x11, 0x37, 0x4F, 0x6B, 0xF1, 0x7E, 0xAC, 0x0B, - 0xD5, 0x6F, 0x3B, 0x6B, 0xF3, 0x36, 0xDA, 0x92, - 0x42, 0x07, 0x0C, 0x24, 0x69, 0xA2, 0x0C, 0x4D, - 0x16, 0x16, 0x14, 0x9A, 0x61, 0x59, 0x25, 0x20, - 0x11, 0xD2, 0x99, 0xF9, 0x3F, 0x98, 0x6D, 0x87, - 0x5D, 0xD3, 0x0B, 0x38, 0xA2, 0x25, 0x49, 0x17, - 0x45, 0x70, 0x13, 0x8C, 0x2B, 0xB3, 0xAA, 0x9C, - 0xBE, 0xA9, 0x19, 0x74, 0xF3, 0xD8, 0x9B, 0xF5, - 0xAE, 0x32, 0xBE, 0x9E, 0x58, 0xB8, 0x54, 0xA2, - 0xF8, 0xE8, 0x6F, 0xF7, 0x67, 0x80, 0xC0, 0x34, - 0x90, 0xF4, 0x67, 0xDB, 0x06, 0x51, 0xC2, 0x0B, - 0x1D, 0xF6, 0x0E, 0xB9, 0x7A, 0x3C, 0x99, 0xD9, - 0xBD, 0x66, 0x4B, 0xE6, 0xA5, 0xE4, 0xC8, 0xA8, - 0xAD, 0x4C, 0xC3, 0x63, 0x90, 0xD7, 0x00, 0x4E, - 0x4B, 0xB4, 0x21, 0xDA, 0xED, 0x65, 0x4C, 0x35, - 0x7D, 0xA4, 0xD6, 0x84, 0x98, 0x93, 0x3E, 0xC7, - 0x17, 0x77, 0xAD, 0x64, 0xC2, 0xAE, 0x01, 0x3C, - 0x73, 0xEB, 0x45, 0x7C, 0x68, 0xEF, 0x9A, 0x74, - 0x5A, 0xDE, 0xEB, 0x4F, 0xDF, 0xC8, 0x79, 0xE7, - 0x74, 0xD0, 0x3F, 0xAF, 0x6B, 0x14, 0xAA, 0xB1, - 0x07, 0x52, 0xE2, 0x4B, 0x52, 0xD0, 0xF2, 0xD9, - 0x4D, 0x54, 0x0A, 0x1E, 0xBE, 0x10, 0xF5, 0x97, - 0xE5, 0x14, 0x44, 0x2D, 0x6C, 0x13, 0xC2, 0xE2, - 0x49, 0x8E, 0x8A, 0xF3, 0x01, 0x7C, 0x52, 0xDB, - 0x23, 0x3A, 0x90, 0x71, 0x7D, 0xF2, 0x5B, 0x4D, - 0x07, 0x2B, 0x7D, 0x88, 0xEE, 0x87, 0x31, 0xD1, - 0x68, 0x24, 0xC9, 0x5D, 0x1F, 0xB9, 0x83, 0xC4, - 0x49, 0xDE, 0xB4, 0x66, 0x27, 0x60, 0x60, 0xFE, - 0xE4, 0xC7, 0xEE, 0x38, 0x14, 0x51, 0xF2, 0x32, - 0xC2, 0x9C, 0x7C, 0x32, 0x20, 0x85, 0x0C, 0x61, - 0xD1, 0xC3, 0xC0, 0x0D, 0xB1, 0xCD, 0x97, 0x26, - 0xA0, 0x2A, 0x56, 0x60, 0x9F, 0x3A, 0x65, 0xD3, - 0xD1, 0x64, 0x60, 0x45, 0x88, 0xCD, 0x9B, 0x43, - 0x14, 0x12, 0xF1, 0xAD, 0xD9, 0x14, 0xC5, 0xC2, - 0xDA, 0xBB, 0xC9, 0x04, 0x67, 0xC0, 0xC4, 0xEA, - 0x5F, 0x76, 0xE2, 0x4A, 0xA6, 0x18, 0x76, 0x5F, - 0x8B, 0x06, 0x36, 0xD7, 0xB0, 0x65, 0xE1, 0xF4, - 0xE6, 0xF6, 0x22, 0xEA, 0xE1, 0x71, 0x52, 0x45, - 0x8C, 0x76, 0x65, 0x86, 0x77, 0x2D, 0x36, 0x3F, - 0xA9, 0x92, 0x14, 0xF4, 0x72, 0xB0, 0xDB, 0x8A, - 0x1E, 0x49, 0xD8, 0x2D, 0x02, 0x78, 0xF2, 0x95, - 0x8B, 0x0A, 0xAA, 0x15, 0x86, 0xDB, 0x13, 0x4B, - 0xDF, 0xD2, 0x43, 0x87, 0x42, 0x49, 0x50, 0x07, - 0xE2, 0xFE, 0x5B, 0x60, 0xE2, 0x46, 0x39, 0x92, - 0x26, 0x94, 0x7A, 0x12, 0xEA, 0x17, 0x63, 0x1C, - 0xAA, 0x53, 0x46, 0x87, 0xCB, 0x75, 0xC0, 0x60, - 0xB4, 0x79, 0x7E, 0xAB, 0x82, 0x77, 0xCC, 0x4F, - 0x8A, 0x7A, 0x20, 0x38, 0x76, 0x06, 0xEF, 0xE2, - 0xDB, 0xD3, 0xE7, 0x36, 0x24, 0x92, 0x77, 0xD9, - 0x0F, 0xCA, 0xB9, 0x92, 0xA8, 0xC9, 0x9E, 0x85, - 0xAB, 0x03, 0xEB, 0x4C, 0xAC, 0x5D, 0x88, 0x55, - 0x39, 0x58, 0x52, 0x8A, 0xF9, 0x29, 0x74, 0x71, - 0x81, 0x35, 0xF1, 0xD0, 0xC7, 0x93, 0xEB, 0x00, - 0x0E, 0xA0, 0xAE, 0xC3, 0xEC, 0x18, 0x58, 0xFD, - 0xD1, 0x86, 0x88, 0xD1, 0xDA, 0x27, 0x27, 0x8D, - 0xEB, 0xF2, 0xCA, 0x81, 0x10, 0xBA, 0x4A, 0x20, - 0x4F, 0x79, 0x30, 0xE1, 0xC8, 0xCE, 0xEC, 0xAF, - 0xB7, 0x3F, 0x75, 0xDD, 0xB3, 0x4C, 0x5C, 0x55, - 0x96, 0x8A, 0x79, 0x33, 0x05, 0x84, 0x26, 0xB5, - 0x5D, 0x03, 0x9F, 0x72, 0x92, 0xAC, 0x43, 0xF6, - 0x45, 0x84, 0xF6, 0xDF, 0x18, 0x7A, 0x1D, 0x6B, - 0x00, 0x3F, 0x51, 0x4C, 0xC1, 0x3B, 0x26, 0xC2, - 0xF3, 0x48, 0x19, 0x5A, 0xA3, 0x21, 0xDE, 0x6A, - 0x27, 0xEC, 0x11, 0x34, 0x8D, 0xE5, 0x0D, 0x82, - 0x5A, 0x29, 0x64, 0xC6, 0x31, 0x99, 0x2E, 0x4B, - 0x0B, 0x42, 0x5B, 0x1B, 0xEB, 0x4F, 0x96, 0x00, - 0xE3, 0xAD, 0xC4, 0x43, 0x1C, 0xF2, 0xE8, 0x8B, - 0x42, 0x23, 0xD2, 0xDB, 0x66, 0x3C, 0x3C, 0xE7, - 0x0E, 0xF8, 0x5D, 0xDD, 0x56, 0xA9, 0xBA, 0xF1, - 0x38, 0xA9, 0xD7, 0xED, 0xD8, 0x94, 0x13, 0x1C, - 0x3A, 0x8F, 0x41, 0xA0, 0x4E, 0xF9, 0xF8, 0x67, - 0x52, 0xB7, 0x21, 0x81, 0xFA, 0xBB, 0x37, 0xC8, - 0x6B, 0x87, 0x7E, 0x61, 0xD6, 0x0E, 0xED, 0x95, - 0xEE, 0xFF, 0xAB, 0xE6, 0x37, 0x6E, 0x14, 0xAC, - 0xA8, 0x17, 0xC5, 0xF4, 0x19, 0x61, 0xAF, 0x8A, - 0x78, 0x49, 0xBA, 0xC0, 0x94, 0x91, 0x7B, 0x2D, - 0x13, 0x22, 0x76, 0xB6, 0xB3, 0x48, 0x6A, 0xFF, - 0x95, 0x0D, 0x23, 0xD4, 0xAA, 0xDC, 0x24, 0xCE, - 0x98, 0xA5, 0x26, 0x9E, 0x1C, 0x69, 0x91, 0x79, - 0x60, 0xA3, 0x1E, 0xE0, 0x9A, 0x52, 0x7C, 0x35, - 0x81, 0x75, 0xCA, 0xA0, 0xCB, 0x1B, 0x01, 0x8E, - 0x95, 0x26, 0xD9, 0x35, 0x34, 0xEA, 0xDB, 0xAC, - 0xB5, 0x2B, 0x27, 0x3D, 0x73, 0x5E, 0x22, 0xDD, - 0x0D, 0x5C, 0x28, 0xFA, 0x3E, 0x47, 0xCF, 0xE9, - 0x0B, 0x52, 0x15, 0xAE, 0x24, 0xF1, 0x46, 0xC3, - 0x46, 0x4B, 0xFE, 0xAF, 0x01, 0xD2, 0x8D, 0xAA, - 0x55, 0x3C, 0x1E, 0x94, 0x42, 0x8A, 0x10, 0x4A, - 0x9D, 0x78, 0xAE, 0xC7, 0x62, 0x59, 0x1E, 0x88, - 0x79, 0xF7, 0x68, 0x51, 0xCF, 0xB4, 0x64, 0x85, - 0x66, 0x72, 0x1B, 0x0C, 0xAC, 0x1F, 0x14, 0xFE, - 0x16, 0x14, 0x9A, 0x9D, 0x82, 0x10, 0xCC, 0x8F, - 0x2F, 0x50, 0xDE, 0xF7, 0xB4, 0x6C, 0x84, 0x3B, - 0xE9, 0x3B, 0xD8, 0xD5, 0x56, 0x02, 0x49, 0x33, - 0x50, 0xAB, 0x56, 0x0E, 0xA5, 0xBA, 0x17, 0x71, - 0x64, 0x23, 0xBE, 0x0E, 0xB8, 0x36, 0x0A, 0xB1, - 0x09, 0xD8, 0xFB, 0x18, 0xBF, 0xEA, 0x04, 0x08, - 0x47, 0xB7, 0x33, 0x51, 0x45, 0xD4, 0xF2, 0x00, - 0xD1, 0x9C, 0xF6, 0xFE, 0x7B, 0xAC, 0x91, 0x7F, - 0x42, 0x6C, 0x9B, 0x3D, 0x39, 0xA9, 0xCA, 0x43, - 0x29, 0x81, 0x8F, 0x24, 0x0E, 0x7D, 0xA3, 0x82, - 0x76, 0x10, 0x72, 0xF4, 0xA6, 0x50, 0x5E, 0xA8, - 0xE7, 0x6C, 0x1E, 0x44, 0x6F, 0xEB, 0x66, 0x25, - 0xE3, 0x8D, 0xDB, 0xCD, 0x3C, 0xDA, 0x81, 0xE8, - 0x3B, 0xF7, 0x68, 0xF3, 0xE0, 0x1D, 0x9D, 0x26, - 0x3B, 0x36, 0x73, 0x03, 0xAE, 0x15, 0x6C, 0x0B, - 0x71, 0x83, 0x36, 0x4A, 0x1E, 0x79, 0x41, 0xA0, - 0x92, 0x98, 0xA3, 0xAD, 0xF7, 0xBD, 0x23, 0x1E, - 0x61, 0x14, 0xB9, 0xDC, 0xE7, 0x95, 0x2B, 0x11, - 0x3F, 0x78, 0x16, 0x31, 0x38, 0xB9, 0x26, 0x6F, - 0x84, 0x3F, 0x1E, 0xD9, 0x7D, 0x9C, 0x2B, 0x16, - 0x3A, 0x6E, 0x8B, 0xD4, 0xC1, 0xAB, 0x4E, 0x17, - 0x93, 0x67, 0xC5, 0xAC, 0x96, 0xCE, 0xCF, 0x50, - 0x50, 0xFE, 0x82, 0x1F, 0xDF, 0xA4, 0x4E, 0x9E, - 0x68, 0x0B, 0x61, 0xC6, 0x01, 0x89, 0x32, 0xDF, - 0x71, 0x78, 0x11, 0x45, 0x9A, 0xF2, 0x54, 0x2E, - 0x2C, 0xDE, 0x77, 0x17, 0x8C, 0x2E, 0x98, 0x80, - 0xF0, 0x11, 0xE4, 0x05, 0xEA, 0xFA, 0x59, 0xC8, - 0xCB, 0xBE, 0xD7, 0x6E, 0x5A, 0x19, 0x41, 0x10, - 0x4B, 0x1B, 0x9D, 0x3A, 0x60, 0x49, 0x1C, 0x95, - 0x47, 0x55, 0xE0, 0x2E, 0x89, 0x41, 0x03, 0xF1, - 0xF4, 0x97, 0x74, 0x75, 0xE9, 0xEA, 0x36, 0x60, - 0x9F, 0xD6, 0x7C, 0x9D, 0xE3, 0x18, 0xED, 0xA2, - 0x37, 0x0D, 0xCC, 0xDB, 0xB9, 0xCE, 0xF7, 0xAE, - 0x63, 0x60, 0x90, 0x5E, 0xC2, 0x20, 0x83, 0x8C, - 0x97, 0x69, 0x82, 0x34, 0x41, 0xCD, 0xD0, 0xDA, - 0x8E, 0xF0, 0xAB, 0xE5, 0xF2, 0xD1, 0xD7, 0x6E, - 0x2F, 0xE0, 0x8F, 0xEF, 0x53, 0xDE, 0x1D, 0x61, - 0x66, 0xAB, 0x1A, 0x92, 0xB1, 0xAC, 0x09, 0x3E, - 0x5A, 0xBF, 0x76, 0x58, 0xC4, 0xB5, 0x72, 0x87, - 0xF2, 0xD1, 0xFD, 0x7B, 0x82, 0xDE, 0xDA, 0xF8, - 0xD5, 0xA4, 0xFB, 0xAC, 0x4B, 0x35, 0xD5, 0x82, - 0x31, 0x69, 0x4E, 0x16, 0x24, 0x97, 0x57, 0x8A, - 0xBD, 0x7A, 0xA7, 0xC8, 0xFE, 0x7B, 0x35, 0x41, - 0xA7, 0xF1, 0x8E, 0x54, 0xE8, 0xB7, 0xF0, 0x87, - 0x64, 0xC5, 0xE6, 0x84, 0x49, 0xDF, 0x65, 0x59, - 0x01, 0x54, 0x98, 0x32, 0xD6, 0x28, 0xFA, 0x63, - 0xD2, 0xB2, 0xC5, 0xA1, 0x50, 0x93, 0x39, 0x94, - 0xA9, 0x86, 0x33, 0x17, 0xAD, 0x40, 0xD7, 0x78, - 0xD9, 0xD2, 0xC0, 0x5C, 0x78, 0x98, 0x85, 0x0B, - 0x90, 0x17, 0x32, 0x23, 0xC7, 0xA0, 0xAF, 0x89, - 0x0F, 0xD7, 0xE6, 0x62, 0x21, 0xB6, 0xF0, 0x63, - 0x18, 0xB2, 0xED, 0x5E, 0x19, 0x9C, 0xB4, 0x24, - 0x88, 0x5A, 0xB8, 0x41, 0xE7, 0xA4, 0x72, 0x6F, - 0xAB, 0xA2, 0xF9, 0xBB, 0x53, 0xBC, 0x32, 0x36, - 0x43, 0x4C, 0x35, 0xFB, 0xBE, 0x4B, 0x1A, 0x0F, - 0x93, 0xF5, 0x0C, 0x37, 0x89, 0x6C, 0x29, 0xF8, - 0xE3, 0x02, 0xAD, 0x31, 0xED, 0x33, 0x31, 0xD6, - 0x20, 0xE3, 0xB6, 0x29, 0x45, 0x51, 0x01, 0xA1, - 0xF1, 0xCC, 0x7B, 0xA5, 0xE4, 0x6E, 0x68, 0xED, - 0x4A, 0x8C, 0xCC, 0x87, 0xB4, 0xDC, 0x75, 0xBC, - 0x01, 0x62, 0xB6, 0x33, 0x0F, 0x83, 0x3F, 0xBA, - 0x25, 0x75, 0xDF, 0xAF, 0x5B, 0x5F, 0x28, 0xBC, - 0x54, 0xFF, 0x2B, 0xA8, 0x1E, 0x7A, 0x47, 0x31, - 0x3C, 0x15, 0x48, 0x2B, 0x60, 0x5E, 0x66, 0xBB, - 0x38, 0xC6, 0x19, 0x8F, 0x13, 0x92, 0x10, 0x40, - 0x80, 0xFB, 0xE7, 0x8B, 0x86, 0xB1, 0xBC, 0x9A, - 0x6F, 0xB8, 0x81, 0xF5, 0xC7, 0x82, 0x01, 0x47, - 0xE6, 0xBA, 0x14, 0xB8, 0x1A, 0xCC, 0xF2, 0x0C, - 0xAE, 0x96, 0x64, 0x10, 0x94, 0xC2, 0x16, 0x90, - 0x2E, 0xA5, 0xC1, 0x25, 0xF6, 0xC9, 0x35, 0xA1, - 0x50, 0xD7, 0xC9, 0xAC, 0xC5, 0xD9, 0xE2, 0xE5, - 0xD9, 0x0E, 0x38, 0xC0, 0x50, 0x3A, 0xA9, 0x42, - 0x60, 0x17, 0xC7, 0x6A, 0xAF, 0xCD, 0x52, 0x61, - 0xB5, 0x06, 0x27, 0x4E, 0xC1, 0x3A, 0x96, 0x79, - 0xFB, 0x09, 0x79, 0x60, 0x27, 0xA4, 0xBB, 0x75, - 0x9D, 0x92, 0x82, 0x79, 0xB9, 0x4D, 0x84, 0x1A, - 0x09, 0x73, 0x93, 0xBF, 0x7E, 0x5B, 0xD6, 0x9A, - 0x49, 0x6C, 0xC3, 0xDE, 0xCD, 0x2B, 0x0F, 0x07, - 0xF8, 0x33, 0x92, 0xAA, 0xDE, 0x33, 0xDC, 0x51, - 0xB2, 0xA8, 0x4F, 0x6A, 0x07, 0x63, 0x5D, 0xC0, - 0xEF, 0x57, 0xA9, 0xAD, 0x59, 0x59, 0xB6, 0xA5, - 0x0B, 0x7B, 0xA5, 0x09, 0xAD, 0x5B, 0x11, 0xFA, - 0xD2, 0x6B, 0x41, 0x9F, 0x9F, 0x1E, 0x3F, 0x9C, - 0x73, 0x29, 0xB5, 0xA9, 0x53, 0xD7, 0xCC, 0x87, - 0xB2, 0xDE, 0x21, 0x06, 0x11, 0xCF, 0x52, 0xA6, - 0x39, 0xEF, 0x2B, 0x39, 0x08, 0x01, 0x2C, 0xB8, - 0x8E, 0x1D, 0x6F, 0x57, 0x62, 0x50, 0x79, 0xCB, - 0x10, 0x3D, 0x6C, 0x98, 0x10, 0x1A, 0x11, 0xBD, - 0x22, 0x33, 0xB6, 0x56, 0x02, 0xCA, 0x30, 0x49, - 0xBD, 0x32, 0x05, 0x20, 0x41, 0x9F, 0x76, 0xB0, - 0x61, 0xE3, 0x59, 0x8D, 0xE3, 0x81, 0x52, 0xC8, - 0x87, 0x67, 0xD1, 0xA2, 0x4F, 0xBD, 0x02, 0xBB, - 0x10, 0xC3, 0x8E, 0xAC, 0xAE, 0x31, 0x7D, 0xE6, - 0xBB, 0x28, 0x7B, 0x4D, 0x2C, 0xAE, 0x5D, 0xA0, - 0x21, 0x49, 0x65, 0xD8, 0x77, 0x37, 0x78, 0x62, - 0x6E, 0x9B, 0x97, 0x28, 0x59, 0xD8, 0x48, 0x2B, - 0x8D, 0x05, 0x47, 0xE4, 0xF5, 0x6D, 0xFF, 0x87, - 0x68, 0x1D, 0x5B, 0xC5, 0x12, 0x0F, 0x61, 0x3F, - 0xBB, 0xD9, 0x1E, 0x1F, 0x14, 0xE6, 0xDE, 0xFE, - 0x67, 0x2E, 0x2A, 0x7E, 0xAB, 0xCB, 0xBB, 0x9B, - 0x11, 0x08, 0x2C, 0x5E, 0x70, 0x0A, 0xA0, 0xB1, - 0xF7, 0xC1, 0x78, 0x5F, 0xCE, 0xD1, 0x9A, 0x93, - 0xAF, 0xE7, 0xC5, 0x9F, 0xA2, 0x51, 0x9B, 0xCD, - 0xEB, 0x49, 0x4C, 0x3D, 0x13, 0xB2, 0x12, 0x5F, - 0x38, 0x53, 0x23, 0xB8, 0x16, 0xC6, 0x8F, 0x8F, - 0x56, 0x28, 0xC7, 0xC2, 0xAB, 0xFD, 0x02, 0x78, - 0xA3, 0x37, 0x07, 0x3D, 0xA7, 0x4D, 0x16, 0x09, - 0x96, 0x98, 0xC4, 0xB1, 0x14, 0xE8, 0xA8, 0xCE, - 0x34, 0x4E, 0x0A, 0x15, 0xD0, 0xFC, 0x7E, 0xD4, - 0x97, 0xB0, 0x01, 0xD5, 0x3D, 0x4C, 0x96, 0xDC, - 0x39, 0x54, 0xD3, 0xB4, 0xB9, 0x56, 0xCB, 0x9D, - 0x2A, 0x27, 0x2C, 0x51, 0xF1, 0x55, 0x9B, 0x22, - 0x90, 0x4B, 0x40, 0xCC, 0x85, 0x31, 0xE4, 0x0C, - 0xC4, 0x12, 0xC6, 0x8C, 0xB6, 0xEE, 0xA4, 0xA4, - 0x09, 0x0B, 0x38, 0xE2, 0x79, 0x73, 0x29, 0x98, - 0x54, 0x67, 0xE8, 0x18, 0xA5, 0x24, 0xD3, 0x22, - 0x8E, 0xAC, 0xAE, 0x78, 0x25, 0xD3, 0xDA, 0xD2, - 0xEA, 0xA4, 0x22, 0xFD, 0xC7, 0x7A, 0xED, 0x71, - 0xA2, 0x05, 0xDA, 0x78, 0x38, 0xD9, 0x45, 0xE7, - 0xFE, 0xC3, 0x7E, 0x4D, 0xCA, 0x67, 0xE5, 0x04, - 0xCE, 0x35, 0xE5, 0xB0, 0x45, 0xF5, 0x6F, 0x1E, - 0x8D, 0x75, 0x29, 0xEB, 0xD6, 0xF1, 0xAF, 0x7B, - 0x6E, 0x93, 0x9E, 0x2B, 0x7A, 0xB4, 0x02, 0x7D, - 0x37, 0xA5, 0x13, 0x5D, 0x17, 0x2D, 0xA1, 0xAF, - 0x9C, 0xA2, 0xF7, 0x28, 0xA6, 0xF3, 0x7D, 0xE6, - 0x0D, 0xD2, 0x3D, 0x97, 0xD1, 0x1E, 0x75, 0xAB, - 0x1F, 0xD5, 0x1F, 0x8E, 0x9A, 0x13, 0x97, 0xE5, - 0x82, 0x21, 0x59, 0xDB, 0x58, 0x38, 0x02, 0xB3, - 0x2E, 0xEB, 0xB4, 0x56, 0x7E, 0xCE, 0x37, 0x46, - 0xD1, 0xAE, 0x33, 0x31, 0x47, 0x85, 0x64, 0x3D, - 0xD2, 0xA0, 0x74, 0x1E, 0x7F, 0x1B, 0xF2, 0xD2, - 0x61, 0xF2, 0x21, 0x24, 0xE8, 0xDD, 0xD0, 0x8C, - 0x64, 0x0A, 0x48, 0xB5, 0x47, 0x17, 0x51, 0x7C, - 0x21, 0xCD, 0x32, 0x53, 0x28, 0xBC, 0x23, 0x9C, - 0xA0, 0x28, 0xB2, 0x63, 0x0D, 0x06, 0x3C, 0x8C, - 0xC2, 0x0B, 0xE9, 0xBD, 0xB4, 0x85, 0x02, 0xDA, - 0xDD, 0xE7, 0x3F, 0xFE, 0xD5, 0x96, 0x38, 0x16, - 0x53, 0x3E, 0x02, 0x0A, 0xED, 0x12, 0x08, 0x53, - 0x62, 0x55, 0xB1, 0xCC, 0xE9, 0x85, 0x43, 0x31, - 0x27, 0xFF, 0x4F, 0x04, 0xD5, 0xB1, 0xE2, 0xF2, - 0x10, 0x87, 0x04, 0xB8, 0xB9, 0x66, 0x58, 0x8C, - 0x01, 0x56, 0xAF, 0xC2, 0xAE, 0x19, 0x29, 0x86, - 0xFB, 0xEC, 0x44, 0x3B, 0xAE, 0xF6, 0xCB, 0x85, - 0xA6, 0xF2, 0x9C, 0x77, 0x92, 0x40, 0x5A, 0x24, - 0x11, 0x47, 0x10, 0xAE, 0x1C, 0x74, 0x64, 0x44, - 0xFD, 0xF5, 0xFB, 0x65, 0x9E, 0x5E, 0x34, 0x68, - 0x26, 0x20, 0x7B, 0x8C, 0x54, 0x46, 0x3A, 0x06, - 0x17, 0xCE, 0x17, 0xFF, 0x33, 0xE4, 0x0F, 0x93, - 0x1F, 0xE5, 0x76, 0x71, 0x5C, 0x93, 0x2E, 0xF2, - 0x9F, 0xD7, 0x6B, 0x04, 0xA6, 0x9B, 0x58, 0xE0, - 0x30, 0x3D, 0x8E, 0xF2, 0x56, 0x78, 0xC8, 0xB7, - 0x0A, 0xF1, 0x2E, 0x90, 0x45, 0x59, 0x1C, 0x04, - 0xE8, 0xB7, 0x71, 0x06, 0x94, 0x04, 0x15, 0x17, - 0x7E, 0x86, 0x85, 0x93, 0xA0, 0x9C, 0x7E, 0x14, - 0x61, 0x9A, 0x4B, 0x33, 0x2F, 0x9A, 0xDC, 0x3A, - 0x65, 0x8B, 0x86, 0x01, 0x7F, 0x32, 0x65, 0x6C, - 0x54, 0x29, 0xC1, 0x15, 0xE1, 0x10, 0x03, 0x7A, - 0x8C, 0xC7, 0xE5, 0x44, 0x67, 0x7D, 0x2D, 0xD2, - 0x39, 0xA5, 0x9D, 0x54, 0xD0, 0xF3, 0xC7, 0x46, - 0x0E, 0xC1, 0x52, 0x08, 0x34, 0x6B, 0xA5, 0x6D, - 0xF5, 0x08, 0x6C, 0x5D, 0xBC, 0xC4, 0x1E, 0x0C, - 0x95, 0xFC, 0xB6, 0x86, 0x1C, 0x2C, 0x0C, 0x32, - 0xAA, 0xF3, 0x45, 0x4E, 0xFE, 0xE2, 0xFF, 0xBA, - 0x21, 0x4B, 0x43, 0x0E, 0xF2, 0x48, 0xA5, 0x9B, - 0x32, 0x44, 0x4D, 0x8D, 0x0D, 0x3D, 0xB8, 0x7C, - 0x9D, 0x4B, 0x15, 0x36, 0xD1, 0x57, 0x72, 0x8E, - 0xE7, 0x58, 0x5E, 0xF5, 0x32, 0x77, 0x6A, 0x00, - 0x3A, 0x02, 0x3C, 0x0A, 0xB0, 0xE9, 0xFF, 0x55, - 0x71, 0x08, 0xC3, 0x90, 0x68, 0x4D, 0x56, 0x5A, - 0x66, 0x50, 0x63, 0x26, 0x6A, 0xE6, 0x67, 0x0E, - 0xD5, 0x3B, 0x0F, 0xAF, 0x8F, 0xF6, 0x78, 0x29, - 0xBB, 0x73, 0x78, 0x25, 0xB1, 0x53, 0xA9, 0x33, - 0x8C, 0xBE, 0x3D, 0xF1, 0xA4, 0x62, 0x84, 0x9B, - 0x93, 0xA8, 0x1F, 0x84, 0xED, 0x07, 0xBE, 0x6D, - 0x62, 0x40, 0x00, 0x32, 0x74, 0x73, 0x7F, 0x61, - 0x8D, 0xCB, 0x26, 0xE4, 0x82, 0x52, 0xCE, 0x42, - 0x04, 0xDD, 0x31, 0x39, 0xFF, 0x68, 0x76, 0xF4, - 0x3B, 0x30, 0x5D, 0x83, 0x56, 0x20, 0xFE, 0xDF, - 0x79, 0xAA, 0x67, 0x43, 0x3D, 0xC2, 0x52, 0x87, - 0x32, 0x0E, 0x99, 0x17, 0x96, 0x7B, 0x70, 0xB2, - 0xD8, 0x66, 0xD1, 0x7B, 0x69, 0x8B, 0xFF, 0xF2, - 0xB3, 0xAB, 0x95, 0x14, 0x94, 0x9E, 0x58, 0xB5, - 0x7C, 0x68, 0xA4, 0x54, 0x12, 0xC1, 0xFC, 0x42, - 0x1C, 0x76, 0x8B, 0xF5, 0xEE, 0x8A, 0x10, 0xC8, - 0xAE, 0xF5, 0x69, 0x26, 0xF5, 0x1E, 0xC6, 0x2C, - 0x11, 0x56, 0x9F, 0x31, 0xAA, 0x51, 0x78, 0x68, - 0xE5, 0xCA, 0xD8, 0x9E, 0x95, 0x80, 0x66, 0xEB, - 0x9E, 0xDD, 0x72, 0x71, 0xB3, 0x1C, 0xB4, 0xB1, - 0xD6, 0xCE, 0x21, 0x12, 0x25, 0xAE, 0xB5, 0xB5, - 0x7F, 0x74, 0x97, 0x19, 0xDA, 0x07, 0xEC, 0xBE, - 0xFE, 0x03, 0x88, 0x1D, 0xDE, 0x3D, 0x81, 0xE4, - 0x13, 0x5F, 0x2D, 0xC8, 0x1A, 0xF7, 0x79, 0x77, - 0x6C, 0x1B, 0x80, 0x57, 0x16, 0x2A, 0x6C, 0x98, - 0x2F, 0xBB, 0x4D, 0xA6, 0xA9, 0xAD, 0x28, 0x4A, - 0xB1, 0x0C, 0x70, 0x02, 0x20, 0x44, 0xF4, 0x6D, - 0x40, 0x0B, 0xF6, 0xAD, 0x71, 0x82, 0xD1, 0x97, - 0x78, 0x99, 0x83, 0xBE, 0x99, 0x22, 0x79, 0x79, - 0xA1, 0x33, 0x4B, 0xA1, 0x49, 0xD8, 0x69, 0xBA, - 0x1C, 0x40, 0x88, 0x12, 0x34, 0x35, 0xBF, 0x97, - 0x85, 0x41, 0x35, 0x6D, 0xAF, 0x17, 0x1F, 0x33, - 0xAD, 0xB1, 0xC9, 0x79, 0x07, 0xA0, 0xFB, 0x58, - 0x45, 0x07, 0x4A, 0x85, 0xD2, 0x6F, 0x54, 0x61, - 0x35, 0xAE, 0xD0, 0xF9, 0x1B, 0xE4, 0x53, 0x9C, - 0x12, 0xBF, 0x94, 0x11, 0xE4, 0xB5, 0x56, 0xF6, - 0x87, 0xD0, 0x69, 0xDB, 0x6B, 0x21, 0xFE, 0x2B, - 0x7F, 0x32, 0x18, 0x87, 0x44, 0x8C, 0xEA, 0x55, - 0xDB, 0x19, 0xFB, 0xB8, 0xB0, 0x48, 0x2A, 0x55, - 0xAE, 0xC1, 0x67, 0x38, 0xD7, 0x4C, 0xD2, 0x65, - 0x09, 0x38, 0x36, 0xBE, 0x99, 0xD4, 0xFB, 0x53, - 0xE9, 0xB0, 0x14, 0xB0, 0x37, 0xCD, 0xBF, 0xE9 -#endif - }; -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT -static const unsigned char dilithium_public_der[] = { -#ifndef WOLFSSL_NO_ML_DSA_44 - 0x30, 0x82, 0x05, 0x34, 0x30, 0x0d, 0x06, 0x0b, - 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, - 0x0c, 0x04, 0x04, 0x03, 0x82, 0x05, 0x21, 0x00, - 0x0a, 0xf7, 0xc8, 0xa4, 0x96, 0x01, 0xa7, 0xb2, - 0x2e, 0x4d, 0xc9, 0xd9, 0x1c, 0xa1, 0x86, 0x09, - 0xce, 0x14, 0x6f, 0xe8, 0x33, 0x3c, 0x7b, 0xdb, - 0x19, 0x9c, 0x56, 0x39, 0x6a, 0x6c, 0x5d, 0x1f, - 0xe4, 0x26, 0xcb, 0x16, 0x91, 0x4d, 0xeb, 0x5a, - 0x36, 0x22, 0xee, 0xda, 0xdf, 0x46, 0x3e, 0xa1, - 0x4f, 0x9a, 0x30, 0xb5, 0x3f, 0x60, 0xf7, 0x75, - 0x47, 0xdc, 0x55, 0xf1, 0xbe, 0xbc, 0x87, 0x6c, - 0x50, 0x7c, 0x21, 0x55, 0x35, 0xad, 0xa7, 0xf9, - 0x1c, 0xf8, 0xa1, 0x92, 0x79, 0x10, 0x52, 0x7a, - 0xc3, 0xba, 0xd3, 0x9d, 0xc6, 0x9b, 0xf4, 0xcb, - 0x1b, 0xa2, 0xde, 0x83, 0x86, 0xa6, 0x35, 0xea, - 0xf2, 0x8c, 0xdc, 0xba, 0x3e, 0xef, 0x9c, 0xf5, - 0x8e, 0xc3, 0xb0, 0xc0, 0x5b, 0xcc, 0x35, 0x6a, - 0x81, 0xe5, 0x17, 0xb3, 0x9a, 0x57, 0xa6, 0x4a, - 0x87, 0xb1, 0xa7, 0xf5, 0xa2, 0x96, 0x40, 0x8b, - 0xc1, 0x62, 0xb2, 0xd9, 0x76, 0xe8, 0x51, 0x33, - 0x44, 0x3d, 0xeb, 0x14, 0x86, 0x88, 0x2c, 0xc1, - 0x47, 0xba, 0x2b, 0x85, 0x3b, 0x72, 0xcb, 0x9f, - 0x40, 0xba, 0x19, 0x58, 0xa4, 0x34, 0x0a, 0xd2, - 0x8c, 0x97, 0xbd, 0x3d, 0x09, 0xb0, 0x4a, 0xeb, - 0xaa, 0xee, 0x58, 0x1e, 0xc1, 0x19, 0x26, 0x70, - 0x15, 0xa5, 0x17, 0x7e, 0xd0, 0xa1, 0x08, 0xf9, - 0x6d, 0xcf, 0x20, 0x62, 0x95, 0x8e, 0x61, 0xf4, - 0x29, 0x96, 0x6f, 0x38, 0x1c, 0x67, 0xd5, 0xa6, - 0x4c, 0xf5, 0x1f, 0xda, 0x12, 0x22, 0x24, 0x6b, - 0x0d, 0xb7, 0x6a, 0xe5, 0xaf, 0x6c, 0x89, 0x52, - 0xc2, 0x85, 0x85, 0x5f, 0x16, 0x33, 0x0c, 0xc6, - 0x7a, 0xe0, 0xa8, 0xed, 0x13, 0x58, 0xf3, 0xa0, - 0x80, 0x42, 0x3c, 0xe3, 0x57, 0xd1, 0xe2, 0x66, - 0xc4, 0xe0, 0x3d, 0x49, 0x32, 0x21, 0xd9, 0xa1, - 0x3c, 0x93, 0x0a, 0xf7, 0x5f, 0x34, 0x65, 0xa4, - 0x30, 0xf9, 0xe7, 0x8a, 0x96, 0x04, 0xdb, 0xc5, - 0x16, 0x15, 0x10, 0x74, 0x4f, 0xc9, 0x6b, 0x4b, - 0x66, 0x29, 0xb0, 0xd1, 0x3b, 0xdd, 0x41, 0x0a, - 0xfe, 0xdf, 0x5f, 0x72, 0x91, 0xbc, 0x99, 0x2f, - 0x8d, 0x72, 0x3a, 0x4a, 0xde, 0x11, 0x3a, 0x20, - 0xb2, 0x56, 0xb5, 0x73, 0x89, 0xb4, 0x63, 0x37, - 0x86, 0xbd, 0x99, 0x8b, 0x03, 0x56, 0x50, 0x21, - 0x11, 0x78, 0x8c, 0xd5, 0xc1, 0x92, 0x33, 0x72, - 0x6e, 0x8d, 0x88, 0x2d, 0x10, 0x8f, 0x31, 0xd3, - 0x23, 0xe5, 0xaa, 0x1f, 0xe1, 0x37, 0xec, 0x34, - 0x42, 0x30, 0x75, 0xff, 0xb2, 0x1a, 0x8e, 0x29, - 0x03, 0x4c, 0xfd, 0xdf, 0x53, 0xf2, 0x0b, 0x2d, - 0xf9, 0x1c, 0x9e, 0xb6, 0x5a, 0x6c, 0x5e, 0x88, - 0x48, 0x29, 0x89, 0x42, 0xfc, 0x97, 0xfb, 0x27, - 0x1c, 0x99, 0x2a, 0xbf, 0x7f, 0x04, 0xb2, 0xcd, - 0xc9, 0x3a, 0x39, 0xfe, 0x4f, 0x47, 0x92, 0x0b, - 0x85, 0xfc, 0x92, 0x57, 0xc5, 0x0b, 0x23, 0x1f, - 0x0b, 0x72, 0xb4, 0xde, 0xfe, 0xbe, 0xb7, 0x39, - 0xb3, 0xd7, 0x48, 0x03, 0xed, 0x76, 0xac, 0x63, - 0xf7, 0x2a, 0x58, 0xef, 0xdb, 0x63, 0x5a, 0x56, - 0x68, 0xcc, 0xb2, 0x8b, 0x22, 0xac, 0xdf, 0xc4, - 0xad, 0x6f, 0xad, 0x24, 0xfd, 0x30, 0xfb, 0xed, - 0x6e, 0xde, 0x65, 0x2b, 0xb4, 0x57, 0x35, 0x49, - 0xc1, 0xc9, 0x82, 0xf4, 0x72, 0x69, 0xef, 0x34, - 0xc0, 0x37, 0x8b, 0x8b, 0xd3, 0xd3, 0x25, 0xcc, - 0xe5, 0xf5, 0xf6, 0x9c, 0xa3, 0xe7, 0x88, 0xd7, - 0x55, 0x73, 0x31, 0x4c, 0xb1, 0x7b, 0x64, 0xb3, - 0x38, 0xde, 0x47, 0x9a, 0xfc, 0xf1, 0xfa, 0xf8, - 0x6e, 0xc5, 0x95, 0xb9, 0xaf, 0x6a, 0x7a, 0x94, - 0x80, 0x0d, 0x29, 0x62, 0x99, 0x0a, 0x34, 0xa2, - 0x8f, 0xa1, 0x5e, 0x98, 0x7c, 0x4e, 0x18, 0xcd, - 0x63, 0x68, 0x0e, 0xfa, 0x6f, 0x49, 0x01, 0x02, - 0xcd, 0xf1, 0xc1, 0x09, 0x57, 0xa3, 0x03, 0xec, - 0x94, 0x36, 0xab, 0xc6, 0x1c, 0xc0, 0x98, 0x22, - 0x15, 0x5b, 0x5b, 0x61, 0x3c, 0xc2, 0x5b, 0x6f, - 0x1c, 0x82, 0x41, 0x39, 0x87, 0xde, 0x92, 0xa9, - 0xe4, 0x12, 0x74, 0x3b, 0x31, 0x36, 0xac, 0x92, - 0xb0, 0x23, 0x26, 0xfa, 0xd8, 0xa3, 0xe8, 0x84, - 0xfc, 0x52, 0xc5, 0x7b, 0xd1, 0x4b, 0xe2, 0x1a, - 0x33, 0xdd, 0x3c, 0xdf, 0x27, 0x50, 0x6f, 0x12, - 0xd3, 0x17, 0x66, 0xd7, 0x54, 0x33, 0x30, 0x2b, - 0xe8, 0xd1, 0x1f, 0x2d, 0xf3, 0x37, 0x81, 0xa0, - 0x3c, 0x21, 0x8c, 0xea, 0x95, 0xa5, 0x5b, 0x3a, - 0x24, 0xed, 0xf7, 0x67, 0x7b, 0x72, 0x3a, 0xda, - 0x31, 0xbd, 0xa7, 0x63, 0xa6, 0x6f, 0xf9, 0xdf, - 0x06, 0x36, 0xb4, 0xe2, 0x35, 0x4b, 0xa5, 0x8e, - 0x29, 0x8e, 0x6c, 0x02, 0xc5, 0x06, 0x9b, 0x98, - 0x6e, 0x5e, 0x00, 0x6a, 0x42, 0x09, 0x4b, 0xc3, - 0x09, 0x37, 0x67, 0x19, 0x58, 0x6d, 0x40, 0x50, - 0xb0, 0x62, 0x5b, 0xd6, 0x63, 0x7f, 0xed, 0xb0, - 0x97, 0x80, 0x9e, 0x91, 0x3f, 0x82, 0xfd, 0x83, - 0x36, 0xce, 0x06, 0xc4, 0xdc, 0xa4, 0x1e, 0x70, - 0xd4, 0x94, 0xfc, 0x6e, 0x46, 0xa3, 0xc8, 0xed, - 0x34, 0x0a, 0xb1, 0x9a, 0x66, 0x5d, 0xc0, 0xce, - 0x73, 0xd3, 0x65, 0xcb, 0xfb, 0x79, 0xdd, 0xf6, - 0x19, 0xf6, 0xd8, 0xa9, 0xe6, 0x34, 0x15, 0x86, - 0x7a, 0x30, 0x79, 0xde, 0x2b, 0x06, 0xa4, 0xc0, - 0xc8, 0xa2, 0xc1, 0x41, 0xb3, 0x4c, 0xf6, 0xdb, - 0x16, 0xcd, 0xd2, 0x8b, 0xf1, 0x18, 0x5a, 0xc8, - 0x3e, 0xd9, 0x54, 0x40, 0xd4, 0xce, 0x88, 0xbb, - 0x66, 0xf1, 0x74, 0x20, 0xa2, 0x3c, 0x31, 0x09, - 0xba, 0xac, 0x61, 0x15, 0x9f, 0x73, 0x5f, 0xa7, - 0xe5, 0x0d, 0xb3, 0xab, 0xa2, 0x72, 0x25, 0xc9, - 0x87, 0x9b, 0x18, 0xdb, 0xff, 0xfb, 0x39, 0x84, - 0x8d, 0xf8, 0x97, 0x47, 0xab, 0xc4, 0xfb, 0xc2, - 0xd8, 0xe8, 0xce, 0x6e, 0x65, 0x76, 0x88, 0x4a, - 0x22, 0x2f, 0xdd, 0x43, 0xa7, 0xc4, 0x8d, 0x32, - 0x12, 0x75, 0x0b, 0x72, 0xd6, 0xb7, 0x43, 0x84, - 0xc8, 0x59, 0xa8, 0xb7, 0x8b, 0x84, 0x33, 0x92, - 0x8f, 0x94, 0xe8, 0xd0, 0xaf, 0x11, 0x35, 0xde, - 0xb7, 0x63, 0xb8, 0x91, 0x4c, 0x96, 0x4e, 0x9c, - 0x62, 0x28, 0xa2, 0xbc, 0x0b, 0x90, 0xae, 0x94, - 0x90, 0xe9, 0x32, 0xeb, 0xe3, 0x77, 0x60, 0x5f, - 0x87, 0x48, 0x4b, 0xb0, 0x78, 0x0e, 0xe2, 0x85, - 0x47, 0x06, 0xa4, 0xc9, 0x26, 0xac, 0x8f, 0xe7, - 0xc2, 0xc7, 0xce, 0xf5, 0xd1, 0x20, 0xa8, 0x56, - 0xe1, 0x4f, 0x50, 0x90, 0xb3, 0xc1, 0x03, 0x57, - 0xd3, 0x62, 0x0e, 0x2a, 0xe8, 0x86, 0xf4, 0x94, - 0x0e, 0xa5, 0x8b, 0x4e, 0x73, 0xa2, 0x76, 0xac, - 0x00, 0x29, 0xe5, 0x80, 0x26, 0x02, 0x13, 0xd1, - 0xb2, 0x68, 0x72, 0x23, 0x38, 0x55, 0xfc, 0x4d, - 0x05, 0x60, 0x49, 0x7b, 0xfb, 0xaa, 0x17, 0x8f, - 0x26, 0x0a, 0x08, 0x33, 0x8d, 0x7f, 0x4e, 0xe5, - 0x6e, 0xf8, 0x84, 0x9b, 0x9f, 0xcb, 0xa2, 0x2b, - 0xfb, 0xaf, 0xad, 0x21, 0xe2, 0x4f, 0x6f, 0x55, - 0xc1, 0x78, 0x46, 0xe3, 0xb5, 0x63, 0x06, 0x9b, - 0x93, 0x7d, 0xac, 0xd4, 0xe0, 0x64, 0x01, 0x8d, - 0xac, 0x30, 0x8b, 0x8b, 0x55, 0xb7, 0x8a, 0x16, - 0x3f, 0xc9, 0x82, 0x7f, 0xb5, 0x3b, 0x0d, 0xc0, - 0x46, 0x89, 0x5c, 0x6c, 0x45, 0x21, 0x78, 0xda, - 0x84, 0x1f, 0xc8, 0xcf, 0xf1, 0x1e, 0x79, 0x71, - 0x3b, 0xc8, 0xe2, 0x8b, 0x41, 0xfe, 0xaf, 0x2f, - 0x3b, 0x23, 0x13, 0xc5, 0x46, 0x87, 0xc6, 0x24, - 0x37, 0x21, 0x68, 0x8a, 0x3e, 0x45, 0x61, 0xf4, - 0xad, 0xf5, 0x1c, 0x23, 0x45, 0xa3, 0x42, 0xf2, - 0xa9, 0xac, 0x94, 0x50, 0xc9, 0x3d, 0x5e, 0x70, - 0x33, 0x2b, 0x78, 0xd1, 0x5c, 0x13, 0x35, 0xe6, - 0x13, 0x80, 0x5e, 0x55, 0xa7, 0xcc, 0x67, 0xb0, - 0x6c, 0xfe, 0xa2, 0x24, 0x02, 0x6d, 0xb3, 0xcb, - 0x9e, 0x94, 0xb3, 0xc6, 0x01, 0xf3, 0x01, 0x3a, - 0xe4, 0xa7, 0xa3, 0xdf, 0x56, 0x4c, 0x30, 0xce, - 0xb1, 0xd5, 0x1b, 0x68, 0x9b, 0x75, 0xae, 0xf4, - 0xb9, 0x2a, 0xe5, 0x8b, 0x7b, 0xe5, 0x99, 0x46, - 0x5f, 0x29, 0xf6, 0x82, 0xd0, 0x42, 0xb1, 0x45, - 0x09, 0x16, 0x5b, 0x32, 0x11, 0xca, 0x48, 0xea, - 0x51, 0x12, 0x0a, 0x9f, 0x6e, 0x3f, 0x74, 0xe6, - 0xe0, 0xfe, 0xf8, 0xa5, 0xc0, 0xfd, 0x15, 0x6e, - 0x2b, 0x4a, 0xd5, 0x76, 0xa8, 0x3d, 0xe3, 0x0d, - 0xfe, 0x44, 0x11, 0x5e, 0x7a, 0xde, 0x12, 0x29, - 0x5a, 0x5a, 0x25, 0xc0, 0x8e, 0x98, 0xd1, 0x11, - 0xc8, 0x00, 0x65, 0xb2, 0xf4, 0xd7, 0x56, 0x32, - 0x46, 0x2b, 0x4f, 0x7e, 0xc3, 0x4e, 0xf1, 0x17, - 0xff, 0x03, 0x32, 0xae, 0xe3, 0xbe, 0x0b, 0xab, - 0xfb, 0x43, 0x0f, 0x6d, 0xa5, 0xc6, 0x44, 0xba, - 0xc9, 0xe3, 0x3d, 0x40, 0xe7, 0x6c, 0xe8, 0x21, - 0xb2, 0x46, 0x7b, 0x3b, 0x3d, 0xde, 0x80, 0xc8, - 0xea, 0xf4, 0x6b, 0xf3, 0x53, 0xca, 0x51, 0x84, - 0xcf, 0xad, 0x7e, 0xce, 0xce, 0xc2, 0x65, 0xfc, - 0x03, 0x8c, 0xcb, 0xfa, 0xcb, 0x37, 0x89, 0x82, - 0x59, 0x5e, 0x36, 0x52, 0xe4, 0xbc, 0x8d, 0x47, - 0x7c, 0xb8, 0x3f, 0x63, 0x59, 0xdc, 0xd3, 0x74, - 0x11, 0x33, 0xb4, 0x69, 0x74, 0x40, 0x0d, 0x42, - 0x63, 0x1d, 0xe6, 0x5c, 0x1b, 0xca, 0x41, 0xff, - 0x23, 0x4e, 0xe8, 0x3d, 0x14, 0xa8, 0x17, 0x18, - 0xd0, 0x78, 0x08, 0x87, 0x7d, 0x5e, 0xdc, 0x3a, - 0x07, 0xba, 0x12, 0x8e, 0x8e, 0x56, 0x0a, 0xcb, - 0x37, 0xf6, 0x54, 0xeb, 0x55, 0x16, 0x8f, 0x06, - 0x15, 0x28, 0x6b, 0xfb, 0xed, 0x38, 0x9e, 0x9b, - 0x98, 0x5b, 0xdc, 0x67, 0x33, 0x0e, 0x02, 0x36, - 0x1b, 0x7a, 0x9a, 0x43, 0xcd, 0xf2, 0x65, 0xef, - 0x37, 0x19, 0x24, 0x6f, 0x4b, 0xb9, 0x4d, 0x3e, - 0x0b, 0x47, 0xd1, 0x67, 0x50, 0x6a, 0x7f, 0x07 -#elif !defined(WOLFSSL_NO_ML_DSA_65) - 0x30, 0x82, 0x07, 0xb4, 0x30, 0x0d, 0x06, 0x0b, - 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, - 0x0c, 0x06, 0x05, 0x03, 0x82, 0x07, 0xa1, 0x00, - 0xff, 0x89, 0xee, 0xad, 0x20, 0x8f, 0x61, 0xa4, - 0x07, 0x1c, 0x54, 0x98, 0x8c, 0xf4, 0x2e, 0xd9, - 0xe6, 0x0f, 0xcb, 0x0e, 0xab, 0xa1, 0x37, 0x4d, - 0xc0, 0x48, 0x24, 0x78, 0xd6, 0x2d, 0x9b, 0x6f, - 0x0f, 0x17, 0x08, 0x71, 0xc3, 0xd1, 0xc8, 0x7a, - 0xe7, 0x32, 0xcb, 0xcd, 0xd6, 0xb5, 0x90, 0x08, - 0xe1, 0xda, 0xaa, 0x89, 0x3e, 0x4a, 0x62, 0x98, - 0x3d, 0xc6, 0x71, 0x30, 0xb4, 0x63, 0xa5, 0x3b, - 0xb3, 0x69, 0x75, 0x10, 0xaf, 0x5e, 0x72, 0x78, - 0xa2, 0xef, 0x63, 0x63, 0x21, 0xe7, 0xf4, 0xa7, - 0x9c, 0x50, 0x74, 0x14, 0x3e, 0xdd, 0x73, 0x9e, - 0x97, 0x65, 0xdd, 0xdf, 0x3c, 0x40, 0x4d, 0x03, - 0x49, 0xe4, 0xbf, 0x65, 0xe7, 0x44, 0x8f, 0x59, - 0x00, 0xe2, 0x98, 0xb5, 0x66, 0xa3, 0x3b, 0x11, - 0x9f, 0xc7, 0xc2, 0x16, 0x61, 0xf0, 0x1e, 0x89, - 0xc8, 0x96, 0x8d, 0x18, 0xac, 0x86, 0xa0, 0xe2, - 0xd9, 0x8c, 0xef, 0x53, 0x6d, 0x4e, 0x74, 0xc9, - 0x66, 0x28, 0x16, 0xf3, 0x62, 0xc4, 0x6f, 0x2b, - 0x6e, 0x36, 0x03, 0xad, 0xc5, 0xe4, 0x8f, 0x0b, - 0x90, 0x8c, 0x8f, 0xff, 0x5d, 0xdf, 0x7a, 0xe6, - 0xaf, 0x9a, 0x43, 0xbc, 0xd4, 0x73, 0x22, 0xdc, - 0x5f, 0x08, 0xa1, 0x17, 0x97, 0x89, 0x79, 0xf5, - 0xdc, 0xed, 0x4f, 0x85, 0x8e, 0x0c, 0x23, 0x35, - 0x3c, 0x34, 0x19, 0x65, 0xf5, 0xd6, 0xc9, 0x2d, - 0x7a, 0x2e, 0x67, 0xd5, 0xf1, 0x82, 0x97, 0xaa, - 0x05, 0x26, 0x84, 0x25, 0x47, 0x58, 0x2c, 0xe6, - 0x59, 0xc7, 0x98, 0x7a, 0xdb, 0x40, 0x45, 0x1c, - 0x71, 0x55, 0x2e, 0xea, 0x3f, 0x6e, 0x7c, 0x82, - 0x52, 0x6a, 0x19, 0x3a, 0xd3, 0xa1, 0x3c, 0xce, - 0x00, 0x06, 0xec, 0xed, 0x97, 0xce, 0xd8, 0xdf, - 0xde, 0xa3, 0xed, 0xe7, 0x81, 0x62, 0x02, 0x9c, - 0x1b, 0x51, 0xa1, 0xf4, 0x9d, 0x1b, 0x28, 0x76, - 0x93, 0x96, 0x20, 0x55, 0x60, 0x1f, 0xaf, 0x52, - 0xc3, 0xce, 0xb9, 0x12, 0x66, 0xf5, 0x64, 0x22, - 0x87, 0x86, 0x29, 0x80, 0x8f, 0x18, 0x33, 0xba, - 0x48, 0x71, 0x1d, 0x00, 0xfe, 0xa5, 0xfc, 0xc6, - 0x87, 0xbe, 0x44, 0x3c, 0xc9, 0x49, 0xfb, 0x68, - 0x3c, 0xdf, 0xca, 0xef, 0xa7, 0xdc, 0x67, 0xb8, - 0x28, 0xd6, 0xad, 0x18, 0xaf, 0xad, 0x1f, 0x4c, - 0x85, 0xa3, 0x64, 0xac, 0x3f, 0xa9, 0x39, 0x28, - 0xef, 0x8a, 0x45, 0x7e, 0xb0, 0xf4, 0x89, 0x72, - 0xf7, 0xb1, 0xef, 0x9d, 0x1c, 0x3c, 0x93, 0xcb, - 0xa0, 0xfb, 0x2a, 0x90, 0xe2, 0x1d, 0x49, 0x8e, - 0x36, 0xb8, 0x07, 0xf4, 0xb3, 0x09, 0xf0, 0x6f, - 0x3c, 0xd9, 0x37, 0x19, 0x57, 0xd4, 0x1e, 0x2a, - 0xa2, 0xa7, 0x2e, 0xc1, 0xcd, 0x8d, 0x48, 0x47, - 0xb5, 0x8a, 0x12, 0x93, 0x34, 0xb8, 0xec, 0x32, - 0x07, 0x49, 0xb6, 0x8d, 0x73, 0xd4, 0x2c, 0x6a, - 0xa0, 0x33, 0x29, 0x21, 0x5d, 0x37, 0xa9, 0x39, - 0x40, 0xbe, 0x71, 0x29, 0xbe, 0xd1, 0x4b, 0xbc, - 0x9a, 0x17, 0x93, 0x52, 0xb8, 0x81, 0xee, 0xc5, - 0xff, 0x25, 0x78, 0x2f, 0x52, 0x0a, 0x8f, 0xb2, - 0xef, 0xf3, 0x1d, 0x68, 0x56, 0x31, 0x29, 0x84, - 0x55, 0x47, 0x32, 0x34, 0x0f, 0x60, 0x07, 0xd6, - 0x2b, 0xb9, 0x29, 0xaf, 0x0f, 0xcd, 0x1c, 0xc0, - 0x77, 0x4c, 0xc6, 0x31, 0xdb, 0xf4, 0x17, 0xbe, - 0x3d, 0xf8, 0x8c, 0xf1, 0x02, 0x7c, 0x6b, 0xd4, - 0xaf, 0x03, 0xb2, 0xf4, 0x78, 0x8d, 0xd3, 0x4e, - 0x5c, 0x04, 0xb9, 0x01, 0xe3, 0x73, 0xb4, 0x67, - 0xe9, 0xa8, 0x77, 0x6f, 0x87, 0x2b, 0xe2, 0x00, - 0x98, 0x5f, 0x02, 0x43, 0x85, 0x03, 0x4c, 0x71, - 0xd2, 0xe7, 0x61, 0x03, 0x22, 0x9e, 0xe5, 0xc2, - 0xa7, 0x66, 0x42, 0x7c, 0x9f, 0xf4, 0xb8, 0x6b, - 0x2d, 0xe4, 0xaa, 0x51, 0xda, 0x08, 0x73, 0x75, - 0x26, 0x45, 0xdc, 0xa6, 0x20, 0xd7, 0xcb, 0x00, - 0xfc, 0xe4, 0xdb, 0x28, 0x92, 0xf8, 0xb0, 0xc7, - 0xf0, 0x4b, 0x6d, 0xe8, 0xc1, 0x84, 0x38, 0xed, - 0x1a, 0xd4, 0x66, 0x69, 0xc4, 0x96, 0x40, 0xc4, - 0x7d, 0xfa, 0x58, 0x70, 0x7e, 0x70, 0x40, 0xba, - 0xfc, 0x95, 0xb6, 0x4c, 0x7c, 0x58, 0xbc, 0xb3, - 0x59, 0x08, 0x14, 0x03, 0x35, 0xf3, 0xf1, 0xaa, - 0xd5, 0xa2, 0x57, 0x70, 0xb6, 0x20, 0x75, 0x0a, - 0x58, 0x66, 0x74, 0xf7, 0x1c, 0xfd, 0x99, 0x7c, - 0x20, 0xda, 0xe7, 0x76, 0xcb, 0xf4, 0xa3, 0x9b, - 0xbc, 0x8f, 0x74, 0xef, 0xe2, 0x46, 0x5a, 0x72, - 0x33, 0x06, 0x32, 0x1e, 0xbd, 0x4e, 0x4c, 0xf6, - 0x16, 0x43, 0xa5, 0xa5, 0xa5, 0x6c, 0x76, 0x33, - 0x35, 0x63, 0xdc, 0xe4, 0xec, 0x7f, 0x8a, 0xfa, - 0xc3, 0x53, 0x69, 0x28, 0xf7, 0xd6, 0x97, 0xb9, - 0x3a, 0xf4, 0x15, 0x90, 0x50, 0xd3, 0xdf, 0xf5, - 0xd3, 0xcf, 0x15, 0x76, 0xe3, 0x3d, 0x24, 0x14, - 0xfd, 0xd3, 0x01, 0x25, 0x82, 0xb4, 0xe3, 0xd8, - 0x68, 0x89, 0x86, 0xa8, 0x26, 0x02, 0x5f, 0xc6, - 0xf4, 0x99, 0x3b, 0x97, 0xa8, 0x65, 0xed, 0x18, - 0xbb, 0x3c, 0x43, 0x4a, 0x6e, 0xaa, 0xbc, 0x83, - 0x85, 0x19, 0x9f, 0x9b, 0xb8, 0xa4, 0xa3, 0xb2, - 0xb7, 0x56, 0x07, 0x6c, 0xbf, 0x7d, 0xff, 0x5d, - 0xb5, 0x1e, 0x83, 0xc8, 0x74, 0x70, 0x98, 0x17, - 0x40, 0xe0, 0x2d, 0xad, 0x31, 0x00, 0x8e, 0x42, - 0xd5, 0xb2, 0x25, 0xaa, 0x82, 0xaf, 0x33, 0xd8, - 0x5b, 0xe2, 0x07, 0xed, 0xda, 0x84, 0xe9, 0xa2, - 0xff, 0xbb, 0xa5, 0x47, 0x95, 0x6e, 0xa1, 0x8d, - 0x59, 0x52, 0xeb, 0xf3, 0x3c, 0x18, 0x29, 0x92, - 0x72, 0x27, 0x18, 0xfc, 0x95, 0xb9, 0xde, 0x46, - 0xda, 0xcc, 0x4c, 0x31, 0x1d, 0x78, 0x86, 0xd2, - 0x8c, 0x38, 0x9c, 0x32, 0xab, 0xf7, 0xca, 0x73, - 0x85, 0xa5, 0xf1, 0xe0, 0x25, 0x06, 0xf9, 0x18, - 0x14, 0xab, 0x3b, 0x73, 0x26, 0xee, 0xa0, 0xfd, - 0x15, 0xac, 0xd6, 0x4e, 0x6b, 0xdb, 0x01, 0xa1, - 0xdc, 0xd1, 0x2f, 0xd2, 0xb7, 0x5e, 0x12, 0x4f, - 0x4b, 0x59, 0xd8, 0x03, 0x12, 0x60, 0xc9, 0x81, - 0xb7, 0x06, 0x23, 0x09, 0xc4, 0xd9, 0xa8, 0x93, - 0x6e, 0x96, 0xf4, 0x93, 0x53, 0xf0, 0x3d, 0xde, - 0x10, 0x88, 0xb1, 0xd0, 0xcc, 0xad, 0x2c, 0xbf, - 0x88, 0x98, 0x8f, 0x25, 0x76, 0xd7, 0x65, 0x77, - 0xcc, 0x36, 0x1d, 0x1b, 0x6b, 0x60, 0x58, 0xc4, - 0xfe, 0xe6, 0xca, 0xa8, 0x29, 0x33, 0x69, 0x36, - 0xb8, 0x12, 0x95, 0x38, 0xd9, 0xd4, 0x16, 0xe9, - 0x3e, 0x40, 0x8c, 0xc7, 0xae, 0x04, 0x11, 0xdf, - 0x51, 0xd3, 0xdd, 0xbf, 0xa9, 0x41, 0x43, 0x4c, - 0xff, 0x87, 0x2f, 0xea, 0x0f, 0x13, 0x66, 0x2a, - 0x2b, 0x18, 0xe8, 0xc4, 0xff, 0xa0, 0x1c, 0x78, - 0x79, 0x21, 0xf8, 0xaa, 0x8a, 0xf8, 0x92, 0xdf, - 0x7b, 0x5f, 0x6a, 0x71, 0x60, 0x67, 0x5d, 0x94, - 0xf6, 0xbb, 0x1d, 0x90, 0x7c, 0x51, 0x70, 0x1d, - 0x87, 0xde, 0xf8, 0x91, 0xcb, 0x42, 0x9f, 0xc7, - 0x4b, 0xa0, 0x16, 0xee, 0xb4, 0x73, 0xe8, 0xe0, - 0x0b, 0xa5, 0xd3, 0x26, 0x9e, 0x52, 0xda, 0x4a, - 0x1f, 0xae, 0x76, 0xbf, 0xbb, 0x4d, 0x74, 0x98, - 0xa6, 0xae, 0xc0, 0x60, 0x96, 0xc5, 0xad, 0x9b, - 0x91, 0x31, 0xb9, 0x50, 0x3d, 0x9a, 0x0f, 0xe1, - 0x93, 0xef, 0x08, 0x72, 0xb2, 0x66, 0xe5, 0x5d, - 0xe4, 0x15, 0x53, 0x8e, 0xb0, 0xb3, 0xf8, 0x78, - 0xfc, 0x5d, 0x44, 0xc5, 0xbf, 0xf5, 0x01, 0x54, - 0xc5, 0x45, 0xa9, 0x30, 0xa4, 0xf1, 0x49, 0x79, - 0x4e, 0xab, 0xfc, 0xb2, 0x93, 0xe7, 0x3a, 0xe1, - 0x7f, 0x1f, 0x2f, 0x45, 0x3a, 0x53, 0x2b, 0x68, - 0xb3, 0xa4, 0xac, 0x23, 0x54, 0xb7, 0x5d, 0x25, - 0xa3, 0xe3, 0x90, 0x8a, 0xb0, 0x02, 0xfb, 0x7f, - 0x2d, 0xeb, 0x80, 0xc2, 0x5c, 0x62, 0xe1, 0x36, - 0x5a, 0x82, 0x8f, 0x4e, 0x74, 0xeb, 0x7d, 0x70, - 0xaf, 0x23, 0x92, 0x65, 0x3a, 0x11, 0xc0, 0x29, - 0xdb, 0xf7, 0x9a, 0xdc, 0x81, 0x45, 0x25, 0x0c, - 0x2e, 0x4f, 0x88, 0x41, 0x34, 0x53, 0xc6, 0x08, - 0x21, 0x77, 0xc1, 0xbb, 0x61, 0x48, 0x20, 0x69, - 0x1a, 0xbb, 0x71, 0x1b, 0x56, 0x18, 0x79, 0x75, - 0x16, 0x9a, 0xb3, 0x79, 0x31, 0x11, 0xa2, 0x89, - 0x8d, 0xea, 0x10, 0xb0, 0x04, 0x7f, 0xf8, 0x6e, - 0xdc, 0x08, 0x9b, 0x51, 0xa7, 0x64, 0xbd, 0x8d, - 0xd4, 0xd0, 0x1e, 0x38, 0x50, 0x1a, 0xa8, 0x7e, - 0x20, 0xae, 0xee, 0x8c, 0xa7, 0x72, 0x94, 0xc9, - 0xba, 0xf0, 0x67, 0xbd, 0x25, 0x1a, 0x3a, 0xdf, - 0x75, 0x39, 0xb7, 0xd3, 0x83, 0x3b, 0x89, 0xdf, - 0xb5, 0x2d, 0xd3, 0x12, 0x24, 0x21, 0x7c, 0x9e, - 0x92, 0x1c, 0x19, 0xae, 0x28, 0xcb, 0x2e, 0x2e, - 0x3c, 0xa9, 0x9b, 0xbd, 0xf9, 0x33, 0x30, 0xb2, - 0xbd, 0x8b, 0xbf, 0xc1, 0x8b, 0x32, 0xf1, 0x20, - 0xa1, 0x00, 0xfd, 0x11, 0x7d, 0x9a, 0xa8, 0x14, - 0x2c, 0xce, 0x16, 0x16, 0x4b, 0xdd, 0x56, 0x91, - 0x15, 0x36, 0x83, 0xcb, 0x01, 0x58, 0x35, 0xe1, - 0xdc, 0x22, 0x3d, 0xf8, 0xc2, 0x06, 0x54, 0x68, - 0x77, 0xd1, 0x47, 0x28, 0xdc, 0x09, 0x2a, 0x86, - 0x13, 0x80, 0xa6, 0xe9, 0xd0, 0xb4, 0xa3, 0x41, - 0x47, 0xf4, 0x71, 0x24, 0x10, 0x4c, 0x9f, 0xb7, - 0x57, 0x34, 0x48, 0x1b, 0xb4, 0xed, 0x0e, 0x89, - 0x4c, 0xf1, 0x73, 0x44, 0xff, 0x35, 0xb6, 0xe0, - 0x8f, 0x02, 0xa3, 0xa3, 0x81, 0x55, 0x38, 0xb5, - 0xc1, 0x99, 0xb3, 0x88, 0x84, 0x0d, 0xd9, 0x73, - 0x77, 0x65, 0x0b, 0xd7, 0xf8, 0x03, 0x88, 0xcb, - 0xdf, 0x25, 0xaf, 0xc6, 0xf1, 0xfa, 0x5c, 0x4d, - 0xfa, 0xc3, 0x7b, 0x8f, 0xb8, 0x38, 0x5d, 0x29, - 0xbb, 0x3d, 0x3e, 0x62, 0x1c, 0xdd, 0xe6, 0x97, - 0xe6, 0xe9, 0xbe, 0x6e, 0xd2, 0xb7, 0x7a, 0x9a, - 0x8e, 0xaf, 0xb3, 0xc8, 0x9e, 0x19, 0xee, 0x3d, - 0x5b, 0x1f, 0xec, 0x34, 0x3a, 0x1c, 0x27, 0x90, - 0xbd, 0x1e, 0x49, 0x72, 0x25, 0x2e, 0x38, 0x48, - 0x7d, 0xe1, 0x85, 0x46, 0xa7, 0x1b, 0x4a, 0xd5, - 0x23, 0x75, 0x6d, 0x8b, 0xc3, 0xf1, 0x87, 0xec, - 0x8b, 0x45, 0xf0, 0x9b, 0xb2, 0x14, 0x7a, 0x7c, - 0x8d, 0x78, 0x9c, 0x82, 0x64, 0x14, 0xfe, 0x01, - 0xfa, 0x04, 0x33, 0x96, 0xdd, 0x5f, 0x56, 0xbc, - 0xb2, 0x03, 0xe3, 0x0c, 0xa1, 0x09, 0x66, 0xa0, - 0x5e, 0x44, 0xde, 0x21, 0xae, 0x7d, 0x7a, 0x0e, - 0x81, 0x27, 0xd2, 0xfb, 0x85, 0xed, 0x27, 0x27, - 0xac, 0x11, 0x1c, 0xa1, 0x6d, 0xe9, 0xc1, 0xca, - 0xf6, 0x40, 0x7c, 0x95, 0x01, 0xb7, 0xa8, 0x29, - 0x9a, 0xd2, 0xcc, 0x62, 0x70, 0x1c, 0x7d, 0x0e, - 0xe5, 0x60, 0xcb, 0x79, 0xa3, 0xd7, 0x5d, 0x48, - 0x4b, 0x3c, 0xf8, 0x12, 0xe8, 0x7a, 0x7e, 0x83, - 0xab, 0x24, 0x33, 0x0f, 0x7b, 0x0a, 0x38, 0xae, - 0xb1, 0xfc, 0xc3, 0x50, 0x5c, 0x83, 0x53, 0xfd, - 0x15, 0xd6, 0x49, 0x54, 0xb6, 0x40, 0xe5, 0xe8, - 0x55, 0xba, 0x08, 0x2f, 0x21, 0xd7, 0x0e, 0x71, - 0x8a, 0xb2, 0xe1, 0x6b, 0xc6, 0x7e, 0x0f, 0x1c, - 0x4d, 0x41, 0x9f, 0x38, 0xc2, 0xce, 0x41, 0x41, - 0x48, 0xcd, 0xec, 0x16, 0x1d, 0x23, 0x8e, 0x41, - 0xcd, 0x5e, 0xf9, 0x5f, 0x01, 0x5e, 0x73, 0xa2, - 0xa1, 0xef, 0xe9, 0x57, 0xe0, 0xba, 0xe6, 0xbb, - 0x2b, 0xff, 0x3e, 0xb8, 0xad, 0xd5, 0x12, 0xc1, - 0x54, 0x49, 0xca, 0x93, 0xb0, 0x7d, 0x7b, 0xcf, - 0xf0, 0xc5, 0x94, 0x43, 0x30, 0x94, 0x11, 0x8d, - 0x15, 0x79, 0x2e, 0x57, 0xb8, 0x24, 0xcd, 0x2e, - 0xc2, 0x49, 0x3d, 0x92, 0x44, 0x23, 0x0c, 0x3e, - 0xa0, 0xf9, 0xa5, 0xad, 0x2a, 0x56, 0xec, 0xf4, - 0x6d, 0x0f, 0x5b, 0xb5, 0xd4, 0x2a, 0x3f, 0x2b, - 0x17, 0x9f, 0x5d, 0x33, 0x97, 0x42, 0xd4, 0x1e, - 0x14, 0x49, 0x01, 0xfb, 0xb6, 0x72, 0xbc, 0x14, - 0x5b, 0x79, 0xf4, 0x0a, 0xc5, 0x49, 0xe1, 0x76, - 0x44, 0x78, 0x87, 0xd1, 0x8e, 0x5b, 0xd5, 0x95, - 0xad, 0x19, 0x7c, 0x0d, 0x39, 0x7f, 0x41, 0x2e, - 0xd7, 0x9e, 0xbc, 0xfd, 0x2c, 0xde, 0xfa, 0x01, - 0x7d, 0x2b, 0x04, 0xef, 0x4d, 0xf9, 0xf4, 0x5b, - 0xed, 0x05, 0x9a, 0x50, 0x35, 0xe7, 0xb0, 0xba, - 0x24, 0xea, 0x16, 0x51, 0xe1, 0x6f, 0x32, 0x08, - 0x94, 0xd6, 0x19, 0x9d, 0x0e, 0x4c, 0xc1, 0xbb, - 0x01, 0x87, 0xa5, 0x90, 0x5f, 0x6f, 0xc4, 0xed, - 0xa1, 0x4c, 0x06, 0x4d, 0x2c, 0x47, 0x24, 0xda, - 0xae, 0xd2, 0x41, 0x92, 0x1f, 0x46, 0xce, 0xec, - 0xb1, 0xcc, 0x80, 0x1e, 0xb2, 0xcb, 0x66, 0x48, - 0x22, 0xec, 0x0e, 0x47, 0xfc, 0xad, 0x17, 0xfe, - 0x7b, 0xc5, 0x4d, 0x34, 0x95, 0x40, 0xd0, 0x02, - 0x7e, 0x90, 0xaa, 0x92, 0xaf, 0x48, 0x64, 0xc5, - 0xc1, 0x56, 0xd8, 0x9b, 0x6c, 0x5f, 0x2e, 0xfa, - 0xd7, 0x84, 0xdc, 0x71, 0x65, 0x1b, 0xfb, 0xbc, - 0x21, 0xc7, 0x57, 0xf4, 0x71, 0x2e, 0x6f, 0x34, - 0x85, 0x99, 0xa8, 0x5c, 0x6f, 0x34, 0x22, 0x44, - 0x89, 0x01, 0xf9, 0x48, 0xd2, 0xe2, 0xe4, 0x71, - 0x9d, 0x48, 0x07, 0x97, 0xd4, 0x66, 0xe4, 0x4d, - 0x48, 0xa3, 0x08, 0x7f, 0x6e, 0xaa, 0x7b, 0xe9, - 0x93, 0x81, 0x03, 0x0c, 0xd2, 0x48, 0xcf, 0x3f, - 0x5f, 0xbe, 0x03, 0xfb, 0x0f, 0xad, 0xc3, 0x81, - 0xd9, 0xce, 0x88, 0x0b, 0xfa, 0xed, 0x29, 0x7e, - 0x0b, 0xa1, 0x6f, 0x4c, 0x7d, 0xe4, 0x36, 0xff, - 0xdf, 0x94, 0x1a, 0x24, 0xb3, 0x7b, 0xca, 0x24, - 0x7e, 0x3a, 0x19, 0x53, 0x13, 0x4a, 0x17, 0x58, - 0xe7, 0x16, 0x9b, 0x50, 0xd8, 0xda, 0xcc, 0x6e, - 0x05, 0x25, 0xfe, 0x16, 0xcb, 0x5b, 0xd5, 0x35, - 0x76, 0x40, 0x44, 0x96, 0x23, 0x97, 0xe2, 0x4a, - 0x72, 0x0c, 0x54, 0x43, 0xc0, 0x09, 0x85, 0x8e, - 0x15, 0x85, 0xaf, 0x3c, 0x5e, 0x5f, 0x3c, 0x2d, - 0x21, 0x42, 0x75, 0xb7, 0xe4, 0x50, 0xf9, 0x00, - 0xa3, 0x4f, 0xb1, 0x7c, 0xfe, 0x62, 0xd0, 0xe9, - 0x6d, 0x51, 0xcc, 0x83, 0xc1, 0xdc, 0x37, 0x10, - 0x90, 0x0a, 0x15, 0xd8, 0xd5, 0x02, 0xf7, 0x74, - 0xb8, 0x46, 0x84, 0xc3, 0x61, 0x17, 0x26, 0x0f, - 0xe4, 0xde, 0x1a, 0xcf, 0x42, 0x53, 0x63, 0x2f, - 0x8d, 0xf7, 0x06, 0x07, 0xc3, 0x33, 0x39, 0x59, - 0xe9, 0x17, 0xc8, 0x05, 0xd2, 0xa2, 0xae, 0x53, - 0x2c, 0x7e, 0xd0, 0x9d, 0x5c, 0xb5, 0x42, 0x9f, - 0x84, 0xd7, 0xfe, 0x93, 0x74, 0xfb, 0xbb, 0xd2, - 0x1e, 0x57, 0x4e, 0x7f, 0x79, 0xaf, 0xd2, 0xf9, - 0x5e, 0x41, 0x9e, 0x63, 0x54, 0x61, 0x47, 0x0c, - 0x92, 0x4c, 0xc9, 0xfe, 0x4f, 0xcb, 0xe5, 0x8e, - 0x65, 0xb3, 0x97, 0x1b, 0xd8, 0xd1, 0x62, 0xfd -#else - 0x30, 0x82, 0x0a, 0x34, 0x30, 0x0d, 0x06, 0x0b, - 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, - 0x0c, 0x08, 0x07, 0x03, 0x82, 0x0a, 0x21, 0x00, - 0x7f, 0x5f, 0x63, 0x81, 0x6f, 0x04, 0x4c, 0xec, - 0xa8, 0xaf, 0x7b, 0x99, 0x41, 0xc6, 0xff, 0xdf, - 0x77, 0x66, 0x28, 0xc0, 0xe2, 0x58, 0xea, 0x9c, - 0x60, 0xbb, 0x03, 0x3e, 0xca, 0xa8, 0x38, 0x64, - 0xfb, 0xf7, 0x1b, 0x3f, 0xec, 0xfd, 0x0f, 0xf1, - 0x9c, 0xe4, 0xfd, 0xad, 0x83, 0xf7, 0x03, 0x66, - 0x6e, 0x7f, 0x4d, 0x42, 0xab, 0x6b, 0x73, 0x26, - 0xde, 0x6f, 0x8c, 0xc4, 0xca, 0x21, 0x66, 0x31, - 0x79, 0x57, 0x88, 0xcb, 0x1e, 0xab, 0xda, 0x1d, - 0x56, 0x70, 0xd9, 0x83, 0xa1, 0xb4, 0x83, 0xce, - 0xcc, 0x0f, 0xeb, 0xd6, 0x63, 0xbd, 0xf6, 0x02, - 0x5d, 0x5b, 0x0c, 0x17, 0x3c, 0x3e, 0x15, 0x02, - 0x22, 0xa1, 0x5d, 0xb5, 0xc5, 0x81, 0x28, 0x95, - 0x0b, 0x34, 0x2b, 0x96, 0x0a, 0xae, 0x6a, 0xa8, - 0xb5, 0x1d, 0x56, 0xbb, 0x7d, 0x83, 0x9a, 0x15, - 0xad, 0x63, 0x9e, 0x86, 0x8c, 0x6e, 0x6a, 0xa8, - 0xde, 0x55, 0xd0, 0xce, 0xc0, 0x2e, 0x05, 0xfe, - 0x1f, 0x4d, 0xd7, 0x12, 0xa4, 0x5a, 0xe9, 0x04, - 0x0d, 0x20, 0x84, 0x90, 0xb9, 0xca, 0x64, 0xe4, - 0xad, 0x2e, 0x74, 0x4b, 0x1d, 0x2f, 0xcc, 0xac, - 0xd8, 0x1a, 0x5e, 0xb2, 0x78, 0xbe, 0x61, 0xf7, - 0x36, 0xa3, 0xd1, 0x93, 0x86, 0xb5, 0x15, 0xf1, - 0x74, 0xf8, 0x9f, 0x6d, 0x6a, 0x8f, 0x6d, 0x86, - 0x8b, 0x36, 0x61, 0x10, 0xc9, 0x1a, 0x31, 0x39, - 0x09, 0xe6, 0x15, 0xa0, 0xb1, 0xfa, 0x69, 0xd4, - 0xc2, 0xb2, 0x56, 0x4c, 0x06, 0x33, 0x13, 0xc4, - 0x78, 0x53, 0x16, 0xfc, 0x52, 0x99, 0xe6, 0x27, - 0xc9, 0x3b, 0x24, 0x5c, 0x3e, 0x85, 0x73, 0x76, - 0x61, 0xa3, 0x61, 0xf0, 0x95, 0xd5, 0xb2, 0xf5, - 0x21, 0xe7, 0x09, 0xc3, 0x0c, 0x5c, 0xb0, 0x36, - 0xce, 0x45, 0x68, 0x41, 0x45, 0xcb, 0x1c, 0x36, - 0x2f, 0x3a, 0x00, 0x07, 0x56, 0xbe, 0x61, 0xd2, - 0x77, 0x37, 0x63, 0xa4, 0xdb, 0xfa, 0xa9, 0x6b, - 0x37, 0x90, 0x35, 0xd1, 0x1e, 0x27, 0x5b, 0x3e, - 0xc0, 0x0a, 0x02, 0x64, 0xe4, 0x58, 0x49, 0xab, - 0x2d, 0xc1, 0x38, 0x29, 0x3d, 0x44, 0xf9, 0xac, - 0xb7, 0x65, 0xd1, 0x5f, 0xf8, 0xce, 0x52, 0x76, - 0x22, 0x15, 0x61, 0x02, 0x1f, 0xa7, 0xcd, 0xff, - 0xeb, 0xa6, 0x7f, 0x6b, 0xba, 0x75, 0xe3, 0x09, - 0x01, 0x06, 0x41, 0x20, 0x88, 0x75, 0x64, 0x6b, - 0x97, 0x38, 0x13, 0xab, 0x4c, 0x0a, 0xd4, 0x7e, - 0xd2, 0xfa, 0x78, 0xe8, 0x9f, 0x5d, 0xf9, 0x53, - 0x30, 0x17, 0xf1, 0x10, 0x9e, 0x4a, 0x32, 0x17, - 0x3a, 0x9b, 0xb9, 0x25, 0x8e, 0xeb, 0xd9, 0x41, - 0x01, 0xa2, 0xc6, 0x58, 0x4a, 0x9f, 0xc3, 0x73, - 0xfd, 0xe2, 0xe4, 0x2c, 0x92, 0xb4, 0xa2, 0x3d, - 0x0f, 0x1f, 0x37, 0x64, 0xf1, 0x17, 0x2a, 0x8c, - 0xc6, 0xb5, 0xb0, 0x69, 0x7d, 0xfe, 0x08, 0xe0, - 0x8e, 0xaa, 0xe0, 0x08, 0xd5, 0x28, 0x92, 0x51, - 0x73, 0x8a, 0x2f, 0x7a, 0x4a, 0xbf, 0x52, 0x8d, - 0x3e, 0x9b, 0x36, 0x6a, 0xfb, 0x19, 0xf0, 0xea, - 0xfe, 0x05, 0xbd, 0x2d, 0xa9, 0x58, 0x48, 0x02, - 0xa8, 0x20, 0x9e, 0xdc, 0x04, 0x57, 0xc2, 0x0c, - 0xae, 0xc1, 0x03, 0xe7, 0x17, 0x48, 0x80, 0x00, - 0x8d, 0x1b, 0xd0, 0xc5, 0xdc, 0x2a, 0x02, 0x6e, - 0x8e, 0x54, 0xf3, 0x79, 0x31, 0x02, 0x93, 0xc5, - 0xf2, 0x55, 0xea, 0x61, 0xd0, 0xb2, 0x8e, 0xc9, - 0x74, 0x17, 0x0d, 0x38, 0xf8, 0xab, 0xf4, 0x42, - 0xd4, 0xc2, 0xdc, 0xf7, 0x1b, 0xdb, 0x65, 0x36, - 0x9f, 0x56, 0xe2, 0xeb, 0xf7, 0xe5, 0x2d, 0x45, - 0xae, 0xc0, 0x95, 0xbc, 0xe4, 0x1f, 0x22, 0xdc, - 0x0f, 0x54, 0xed, 0x14, 0xb8, 0xf1, 0x2f, 0x5d, - 0xd1, 0x79, 0xa0, 0x81, 0x17, 0x71, 0xa1, 0xd6, - 0xf0, 0x88, 0x9c, 0x1c, 0xc7, 0x95, 0x07, 0xb0, - 0xea, 0xf7, 0xd3, 0xa2, 0x55, 0xfe, 0x85, 0x65, - 0x42, 0x06, 0xec, 0xd2, 0xbe, 0x03, 0x8f, 0x63, - 0x84, 0x4b, 0xb1, 0x47, 0x48, 0x20, 0x71, 0xd2, - 0xdf, 0xc9, 0x59, 0xb0, 0x24, 0x8a, 0x6e, 0xf9, - 0x4a, 0xa1, 0x7b, 0xed, 0x11, 0xb6, 0xf9, 0x9b, - 0xf7, 0x93, 0x0e, 0xcb, 0x7a, 0x32, 0x22, 0x23, - 0x4e, 0x86, 0xce, 0xad, 0x9d, 0x1b, 0x84, 0x57, - 0xaf, 0xa5, 0x04, 0x03, 0x0a, 0xc9, 0x04, 0x97, - 0xd0, 0xce, 0x8e, 0x2a, 0x9a, 0x00, 0x15, 0xeb, - 0xac, 0x96, 0x57, 0xde, 0xe6, 0xc1, 0x2d, 0xbd, - 0xfc, 0xd6, 0x95, 0x0f, 0x5f, 0x19, 0xac, 0xaf, - 0x6c, 0xd8, 0xa6, 0x1e, 0xd8, 0xdb, 0x14, 0xfd, - 0xba, 0x0f, 0xd0, 0x3f, 0x61, 0xe3, 0x76, 0xfc, - 0x47, 0x61, 0x07, 0x24, 0x49, 0x17, 0xca, 0x24, - 0x31, 0x16, 0x26, 0x4f, 0xdc, 0x2b, 0x39, 0xae, - 0x5f, 0xfa, 0x4f, 0x82, 0xef, 0xe1, 0x41, 0x8c, - 0x3e, 0x8e, 0xa7, 0x6c, 0xf2, 0x51, 0xf7, 0x85, - 0x35, 0x6c, 0xad, 0xea, 0x32, 0x35, 0xf3, 0xc0, - 0x14, 0x17, 0xe2, 0x98, 0x27, 0x36, 0x7e, 0x60, - 0x2f, 0x01, 0x60, 0x3e, 0x18, 0xf4, 0x4e, 0xe0, - 0xf5, 0x14, 0x21, 0x81, 0x05, 0x78, 0x1c, 0x5f, - 0x4e, 0x89, 0xbb, 0x23, 0x60, 0xb1, 0x8f, 0x07, - 0x53, 0x16, 0x6e, 0xfb, 0x86, 0x07, 0x90, 0xff, - 0xa6, 0x27, 0x60, 0xe6, 0x3e, 0x92, 0x2a, 0x3c, - 0xa3, 0x57, 0xec, 0x97, 0x23, 0xaf, 0xd2, 0x44, - 0xac, 0x09, 0x87, 0xb0, 0x54, 0xe9, 0x5b, 0x50, - 0x37, 0xfa, 0x12, 0xa4, 0xcb, 0x6f, 0xed, 0x9f, - 0x29, 0x73, 0xa7, 0x09, 0x29, 0x91, 0x93, 0x5c, - 0x54, 0xf4, 0x44, 0xc2, 0x04, 0x64, 0xfc, 0xd2, - 0xf2, 0x0a, 0x0b, 0x45, 0x1f, 0xc5, 0x18, 0xf0, - 0xff, 0x10, 0x1f, 0x3a, 0x97, 0xf8, 0xb1, 0x83, - 0x0e, 0x08, 0xe2, 0x55, 0x75, 0x6a, 0x45, 0x96, - 0xf8, 0x1b, 0xdc, 0xb6, 0x57, 0x83, 0x8c, 0x28, - 0xc0, 0x4a, 0x57, 0xc6, 0xfb, 0x27, 0x3d, 0xfa, - 0x5a, 0x0d, 0x69, 0x56, 0x23, 0x66, 0x02, 0x78, - 0xca, 0xf1, 0xfa, 0xcb, 0xc1, 0xf6, 0x92, 0x1c, - 0xa0, 0xe3, 0x09, 0x7d, 0x48, 0x5e, 0x86, 0xa0, - 0x82, 0xa8, 0xf1, 0x1e, 0xe1, 0xfe, 0xc6, 0x9d, - 0x4f, 0x2e, 0xf4, 0xfc, 0xc6, 0x48, 0x1d, 0xc1, - 0x2a, 0x6a, 0xb7, 0xea, 0x46, 0x89, 0x04, 0xe9, - 0xbd, 0xf1, 0xed, 0x16, 0x76, 0xd8, 0x4b, 0x42, - 0xd5, 0x43, 0xa4, 0xfb, 0x02, 0x01, 0x54, 0x00, - 0xaf, 0x55, 0x52, 0x27, 0xff, 0x00, 0xe2, 0xbb, - 0x4a, 0xf2, 0x69, 0xb4, 0x4e, 0x6c, 0x6b, 0xa3, - 0x96, 0x4f, 0xf4, 0x65, 0x90, 0x2d, 0xc8, 0x57, - 0x1f, 0xb2, 0xf0, 0x86, 0x7b, 0x93, 0x09, 0x49, - 0x31, 0xc4, 0xf4, 0x8f, 0xc8, 0x2d, 0xac, 0x1d, - 0xfc, 0xba, 0xa4, 0xa5, 0x41, 0x90, 0x76, 0x7d, - 0x9e, 0x47, 0xdc, 0x10, 0xe6, 0x0c, 0xf7, 0x0f, - 0xa4, 0xba, 0x4f, 0xe2, 0x46, 0x38, 0x4c, 0x28, - 0xa0, 0x57, 0xb5, 0x3c, 0xb3, 0x4b, 0x8f, 0x03, - 0x04, 0xff, 0xf6, 0xec, 0x60, 0x90, 0x62, 0xfe, - 0x74, 0x76, 0x48, 0xb3, 0xf4, 0x0a, 0x6a, 0x5a, - 0x5b, 0xad, 0xc8, 0x54, 0x62, 0x11, 0x52, 0xd9, - 0x84, 0x1a, 0x09, 0x4b, 0xca, 0x66, 0xaa, 0x3c, - 0x36, 0x08, 0x9d, 0x58, 0xd0, 0x4a, 0x3a, 0x8b, - 0x24, 0xe0, 0x80, 0x9f, 0xe3, 0x76, 0xb6, 0x07, - 0xb1, 0xbc, 0x00, 0x98, 0xb0, 0xc1, 0xe0, 0xf6, - 0x1f, 0x4d, 0xa8, 0xd1, 0x69, 0x44, 0x9c, 0x33, - 0xb0, 0x0f, 0x9c, 0xc9, 0x0c, 0x8c, 0xbc, 0x03, - 0x58, 0x81, 0x76, 0xab, 0x0d, 0xef, 0x25, 0x5a, - 0xf6, 0xab, 0x3b, 0xf1, 0x1f, 0x97, 0x12, 0x8e, - 0x7f, 0x28, 0x77, 0x26, 0x18, 0xc4, 0xc4, 0xda, - 0x2c, 0x43, 0x57, 0xd2, 0x1f, 0x67, 0x95, 0x40, - 0x2c, 0x94, 0x41, 0x69, 0x22, 0x8a, 0x24, 0xd9, - 0xc7, 0xfc, 0xea, 0x49, 0x83, 0x8f, 0x5d, 0x2e, - 0x9d, 0xac, 0x17, 0xb6, 0xe0, 0xc4, 0xe7, 0xe6, - 0xd5, 0xc2, 0x73, 0xa1, 0x8f, 0x33, 0x14, 0x02, - 0xae, 0x01, 0x9f, 0x6f, 0x40, 0x92, 0x4e, 0x03, - 0xc2, 0xa9, 0xf1, 0x36, 0x78, 0xe4, 0xde, 0x39, - 0x4d, 0x29, 0x2e, 0xc2, 0x00, 0x93, 0x79, 0xe4, - 0xb2, 0x29, 0x4b, 0x81, 0x5c, 0x06, 0x06, 0xbc, - 0xc1, 0x01, 0x1c, 0xa7, 0x08, 0xf7, 0x47, 0x1f, - 0x52, 0x4f, 0xdf, 0x94, 0x1e, 0xe6, 0x89, 0xe6, - 0x26, 0x71, 0x2e, 0xa2, 0xd2, 0xfe, 0x04, 0xf2, - 0x12, 0x4c, 0x06, 0x78, 0x34, 0xc0, 0xb9, 0x76, - 0x62, 0x3b, 0x72, 0x25, 0x8c, 0x0d, 0x73, 0x24, - 0xcf, 0x4b, 0x4c, 0x47, 0x20, 0x9d, 0x04, 0x7f, - 0x86, 0x2c, 0x45, 0xb8, 0xfe, 0xb2, 0xaa, 0x36, - 0xf8, 0xe0, 0x24, 0x25, 0x05, 0x23, 0x12, 0x16, - 0xbf, 0x64, 0x10, 0xdd, 0xe4, 0xc0, 0xb0, 0x85, - 0xa7, 0xd3, 0xd1, 0x18, 0x1b, 0x81, 0x6b, 0x94, - 0xfd, 0x07, 0x43, 0xdd, 0x12, 0x37, 0x78, 0x69, - 0xec, 0x8c, 0xd0, 0x41, 0x2c, 0x42, 0x94, 0x3e, - 0x9f, 0xe3, 0x49, 0xb3, 0xb8, 0x45, 0x0b, 0x1d, - 0xc1, 0x9b, 0x4d, 0x21, 0x85, 0x62, 0xea, 0xd1, - 0xc9, 0x12, 0x30, 0x8c, 0x4b, 0x63, 0xeb, 0x7d, - 0x02, 0x52, 0x15, 0xa1, 0x95, 0x48, 0x9f, 0xc2, - 0xce, 0xf3, 0x4b, 0xff, 0x5a, 0xb6, 0x8f, 0xce, - 0xcd, 0x42, 0x21, 0x40, 0x82, 0xad, 0x08, 0x99, - 0x4d, 0x24, 0x58, 0x25, 0xf3, 0x7e, 0x42, 0x86, - 0x06, 0x33, 0x1f, 0x53, 0xbb, 0x07, 0x33, 0xca, - 0xc0, 0x02, 0x18, 0x30, 0x3c, 0xc5, 0x67, 0x1c, - 0x32, 0x3f, 0x2d, 0x58, 0x4c, 0x24, 0x6e, 0x60, - 0x96, 0x1a, 0xf4, 0xd0, 0x55, 0xb8, 0x84, 0xf0, - 0xb9, 0x83, 0xbf, 0x3d, 0x37, 0xe4, 0xa6, 0x06, - 0x1c, 0xd1, 0xd7, 0x91, 0x24, 0xdc, 0x3f, 0xcc, - 0x71, 0xf3, 0x0c, 0x90, 0x2c, 0x1d, 0x2f, 0x90, - 0xc8, 0x3c, 0x6f, 0x2c, 0x5d, 0xad, 0x8c, 0xdf, - 0xbb, 0x0d, 0x2a, 0x7f, 0x4a, 0x34, 0x5a, 0xd9, - 0x83, 0xfd, 0x61, 0x36, 0xe0, 0x0a, 0xb3, 0xf6, - 0x69, 0xb1, 0xaf, 0x81, 0x22, 0xd6, 0x9e, 0x9a, - 0xf8, 0xa6, 0x24, 0x8e, 0x0c, 0xcb, 0x25, 0xc2, - 0xfc, 0xc5, 0x94, 0xbd, 0x23, 0x9c, 0xa9, 0xbd, - 0x76, 0x28, 0xa4, 0x55, 0x92, 0x7c, 0xe6, 0x76, - 0xf7, 0x30, 0xf8, 0x7d, 0xdc, 0x0a, 0x93, 0x9e, - 0x7c, 0x39, 0x0a, 0x70, 0xa0, 0xb2, 0x77, 0xe0, - 0x7a, 0x89, 0x50, 0xce, 0x75, 0xca, 0x2f, 0xa4, - 0x12, 0x0e, 0xcb, 0x75, 0x1f, 0x0a, 0x83, 0xe8, - 0x14, 0x80, 0xa7, 0xb0, 0xe8, 0x11, 0xca, 0x12, - 0x5e, 0xf7, 0x31, 0x65, 0xbd, 0x20, 0x3d, 0x8c, - 0xa6, 0x89, 0x83, 0x68, 0x66, 0x03, 0x28, 0x49, - 0x17, 0xc4, 0x3f, 0x43, 0x02, 0x9b, 0xf8, 0xed, - 0xae, 0x8e, 0x68, 0xbc, 0x8e, 0x39, 0xe7, 0x15, - 0x32, 0x45, 0x66, 0x2c, 0x1f, 0xce, 0x56, 0xc7, - 0xc0, 0x15, 0x52, 0x19, 0x40, 0xcf, 0x87, 0x20, - 0xcd, 0x3d, 0xec, 0x90, 0x8d, 0x04, 0x01, 0x31, - 0x0b, 0x74, 0x80, 0x6e, 0x61, 0xa7, 0xf3, 0x4c, - 0xb2, 0x16, 0x00, 0xd5, 0xdb, 0xcc, 0xbb, 0x2c, - 0x9f, 0xb6, 0x02, 0x4a, 0xcf, 0x71, 0x06, 0xfd, - 0x60, 0xe0, 0x00, 0xbe, 0x22, 0xba, 0x39, 0x36, - 0xa8, 0x7e, 0xe5, 0xcb, 0xea, 0x87, 0xb1, 0xee, - 0xa2, 0x6c, 0x85, 0x94, 0x18, 0x6c, 0xab, 0x9a, - 0x93, 0xa7, 0xab, 0x4e, 0x3b, 0x85, 0xf3, 0xef, - 0x8f, 0x15, 0x74, 0x21, 0x9f, 0x5d, 0x9c, 0x22, - 0x32, 0x71, 0xb5, 0x4d, 0x7f, 0xaa, 0x85, 0xe0, - 0x05, 0x2a, 0x53, 0xbb, 0x3c, 0xab, 0xc3, 0xd2, - 0x73, 0x6e, 0x97, 0xa3, 0xfd, 0x05, 0x58, 0xaa, - 0x49, 0xc8, 0x69, 0xa9, 0x0b, 0x73, 0xd4, 0xe9, - 0x1d, 0x84, 0x60, 0x34, 0x2a, 0x09, 0xb3, 0x0f, - 0x08, 0x13, 0x67, 0x77, 0xb3, 0x24, 0xdf, 0xad, - 0xbf, 0x51, 0x71, 0x2b, 0xbe, 0x4f, 0x5d, 0xf4, - 0xe7, 0x25, 0x4c, 0x24, 0xa2, 0x4a, 0x22, 0xec, - 0xcc, 0x7c, 0x6c, 0x62, 0xee, 0x47, 0x12, 0x43, - 0x88, 0xe4, 0x71, 0xaa, 0x63, 0xaa, 0x2b, 0xed, - 0x70, 0xbf, 0x26, 0x37, 0xcc, 0xa4, 0xff, 0xe9, - 0xb6, 0x65, 0x31, 0x4d, 0x0d, 0x32, 0xd6, 0x84, - 0xb8, 0xab, 0x98, 0xa7, 0x10, 0x44, 0x77, 0xc7, - 0x2a, 0x60, 0xf0, 0xf5, 0xd5, 0xd4, 0x3a, 0x73, - 0x11, 0xa5, 0x1b, 0x18, 0x3c, 0x13, 0xfb, 0xda, - 0x76, 0x9d, 0xeb, 0x3e, 0xb9, 0x7a, 0xce, 0x02, - 0xa7, 0x5e, 0x25, 0x96, 0xd2, 0xbc, 0x85, 0x1a, - 0xd1, 0xa4, 0xe2, 0x02, 0x15, 0x08, 0x49, 0x16, - 0x7c, 0xaf, 0xc6, 0x38, 0x7b, 0x95, 0xf9, 0x37, - 0xc0, 0x87, 0x73, 0x6f, 0x01, 0xcd, 0x2b, 0xf1, - 0xe7, 0x6e, 0x47, 0x18, 0x30, 0xb8, 0x16, 0x87, - 0x1d, 0x23, 0x62, 0x22, 0x85, 0x92, 0x69, 0x46, - 0x9c, 0x65, 0xd8, 0xf1, 0x27, 0x32, 0xe4, 0x16, - 0x7f, 0x9a, 0xba, 0x46, 0x61, 0x60, 0x34, 0xe5, - 0xc0, 0x14, 0xb5, 0xde, 0x4d, 0xd1, 0x71, 0x39, - 0x26, 0xdc, 0x0c, 0x0a, 0x53, 0x9e, 0x31, 0x10, - 0x45, 0x7a, 0xf9, 0xc8, 0xfa, 0x1d, 0x69, 0x5e, - 0x25, 0xc1, 0xe2, 0x00, 0xbf, 0x94, 0xa3, 0xa2, - 0x97, 0xca, 0xb4, 0x6a, 0x89, 0x68, 0xdd, 0xed, - 0x6b, 0x99, 0x5a, 0x87, 0x9e, 0xe9, 0x68, 0xe4, - 0xf2, 0xc2, 0x7e, 0x37, 0x02, 0xdf, 0x96, 0x1a, - 0x5b, 0xed, 0xa1, 0xe8, 0xdf, 0x3c, 0xf7, 0xd2, - 0x25, 0xac, 0xf7, 0x4a, 0x7f, 0x10, 0x27, 0x2b, - 0x02, 0xc7, 0x95, 0x10, 0x5a, 0xb5, 0xb0, 0xcd, - 0xa9, 0xe1, 0x36, 0xe2, 0x1c, 0x87, 0x99, 0x0e, - 0x0a, 0x44, 0xec, 0x97, 0x75, 0xa7, 0x03, 0x27, - 0x38, 0x3b, 0x16, 0x30, 0x00, 0x98, 0xbe, 0x77, - 0xfe, 0x3a, 0xac, 0x6f, 0x8f, 0x4d, 0xe1, 0xa9, - 0x9c, 0xba, 0x39, 0x52, 0xe8, 0xf7, 0xe4, 0xe6, - 0xf9, 0xe9, 0xb3, 0x57, 0x82, 0xb2, 0x23, 0xd6, - 0xa5, 0x14, 0xc0, 0x78, 0xb4, 0xa0, 0xf9, 0x96, - 0xe4, 0x03, 0xe8, 0x6c, 0x27, 0xd8, 0x37, 0x7c, - 0x8f, 0xf4, 0x80, 0x09, 0x09, 0xc9, 0x32, 0x15, - 0xe0, 0x3f, 0x37, 0xa7, 0x1a, 0x5f, 0x8c, 0xfb, - 0xdd, 0xfe, 0x6b, 0x34, 0x28, 0x53, 0x03, 0x4b, - 0x39, 0x91, 0xf2, 0x48, 0x4c, 0x2a, 0x45, 0xfe, - 0x66, 0xf7, 0x23, 0x74, 0xb8, 0x30, 0x70, 0xb4, - 0x0c, 0x2c, 0x65, 0xb1, 0x4e, 0x32, 0x0f, 0x50, - 0xbb, 0x46, 0x9b, 0x03, 0x34, 0x38, 0xfb, 0xe4, - 0x25, 0x37, 0x8d, 0x0f, 0xa1, 0x41, 0x50, 0x85, - 0x92, 0x07, 0x71, 0xff, 0x3c, 0xe6, 0xd9, 0x1d, - 0x55, 0xb7, 0x10, 0x9c, 0xea, 0x70, 0x5f, 0xa3, - 0xba, 0x84, 0x99, 0x91, 0x30, 0x3d, 0x4c, 0x98, - 0x0b, 0x1f, 0x1f, 0xcc, 0x17, 0x94, 0xdd, 0x78, - 0x7d, 0x50, 0xe5, 0xf5, 0x21, 0x88, 0x5a, 0x52, - 0x76, 0x5a, 0x97, 0xbe, 0xba, 0xa9, 0xfe, 0x82, - 0x8a, 0xb5, 0x46, 0xcf, 0x9c, 0xbe, 0xe8, 0x2f, - 0x01, 0x2f, 0x6a, 0x03, 0x8a, 0xfa, 0x4b, 0x0b, - 0xdc, 0x78, 0x79, 0x9c, 0x49, 0xc4, 0x01, 0x26, - 0x16, 0x58, 0xc6, 0xb8, 0xee, 0x6c, 0xc9, 0xa9, - 0x38, 0x7c, 0xcf, 0xf3, 0xf8, 0xd0, 0x6b, 0x99, - 0x43, 0x13, 0xe0, 0x43, 0x8e, 0xfb, 0xb2, 0xdb, - 0x61, 0x67, 0xf4, 0xfc, 0x01, 0x21, 0xd9, 0xb1, - 0x1e, 0x6c, 0x6f, 0x2a, 0x9a, 0x4b, 0x86, 0x3c, - 0x62, 0x03, 0x53, 0x83, 0x11, 0x18, 0x1a, 0x59, - 0x9e, 0x25, 0xfe, 0xdb, 0x85, 0xd0, 0xee, 0x7c, - 0x97, 0x72, 0xca, 0xf3, 0x0d, 0xd4, 0x19, 0x66, - 0x14, 0xaf, 0x46, 0x68, 0x75, 0xdb, 0x8f, 0x5f, - 0x77, 0x7f, 0xfe, 0xa9, 0xe6, 0xa1, 0x9e, 0x46, - 0x5e, 0x92, 0xda, 0xea, 0xdd, 0x89, 0x01, 0xd9, - 0xab, 0x25, 0x7d, 0xb4, 0x64, 0x50, 0x8f, 0xa3, - 0xbe, 0xe2, 0x03, 0xd5, 0xc6, 0x9c, 0xc2, 0xf8, - 0xac, 0xa4, 0x36, 0xa9, 0x37, 0x10, 0x59, 0x00, - 0x45, 0xbb, 0x55, 0x33, 0xb9, 0x6f, 0xbc, 0xa2, - 0x02, 0x9e, 0xa3, 0x1d, 0xf4, 0x17, 0x78, 0x9b, - 0xbc, 0x42, 0x4e, 0x21, 0xc3, 0xde, 0xb5, 0x70, - 0x4a, 0x23, 0x1e, 0xd4, 0x36, 0x5d, 0x7a, 0x08, - 0x37, 0x55, 0x98, 0x07, 0xa0, 0x16, 0xa3, 0x4e, - 0xa1, 0x2b, 0x96, 0x8b, 0x51, 0x63, 0x48, 0xab, - 0xc9, 0x19, 0x6f, 0x5f, 0x25, 0x9d, 0xe7, 0x25, - 0x63, 0xf0, 0x8e, 0xdb, 0x06, 0x2d, 0x42, 0x31, - 0xfd, 0x14, 0x2b, 0x7a, 0x31, 0x43, 0x04, 0xd5, - 0xe2, 0x89, 0x2e, 0xa8, 0xe4, 0x6e, 0xd5, 0xa5, - 0x21, 0x67, 0x9b, 0x92, 0x61, 0x79, 0xdd, 0xe5, - 0x44, 0x43, 0x45, 0x57, 0x13, 0xec, 0x04, 0xc1, - 0x41, 0xa3, 0x14, 0x70, 0x86, 0xda, 0x76, 0x5d, - 0xe8, 0x61, 0xd2, 0xfb, 0x7b, 0xe4, 0x71, 0x46, - 0xa3, 0x52, 0xbf, 0xf2, 0xa0, 0x3c, 0xc1, 0x90, - 0x0c, 0x2e, 0xeb, 0xb3, 0x38, 0xae, 0x13, 0x27, - 0x84, 0xe9, 0x7a, 0xd6, 0x02, 0x40, 0x84, 0xff, - 0x87, 0x1f, 0x37, 0x44, 0xd8, 0x2e, 0x93, 0xf7, - 0x0a, 0xff, 0x5b, 0x4d, 0x07, 0x82, 0xfd, 0x6e, - 0x44, 0xcc, 0x19, 0xc3, 0x7d, 0x7c, 0x31, 0xf9, - 0x0e, 0xa8, 0x1c, 0x0d, 0xcb, 0x8e, 0xe8, 0x33, - 0xb2, 0xff, 0x9e, 0x1d, 0x99, 0x7c, 0x46, 0x5b, - 0xc7, 0x28, 0xec, 0x01, 0x62, 0x82, 0xfe, 0x2a, - 0x22, 0xa3, 0x86, 0x4e, 0x47, 0xe2, 0x57, 0xf1, - 0xb4, 0x58, 0x94, 0x89, 0xe5, 0xf1, 0xcd, 0x4d, - 0x90, 0xd1, 0xa4, 0x4c, 0x34, 0x5d, 0xde, 0xdc, - 0x39, 0x63, 0x8b, 0x85, 0xfd, 0x02, 0x21, 0xf1, - 0x12, 0xa3, 0x6d, 0x65, 0x0f, 0x8d, 0xe5, 0xcd, - 0x70, 0xd5, 0x1d, 0xf8, 0x65, 0x99, 0xfb, 0xe8, - 0xb5, 0x5a, 0x09, 0x39, 0x9e, 0x09, 0x45, 0x62, - 0x22, 0x1d, 0xa2, 0x46, 0xbf, 0x75, 0x20, 0xd1, - 0xe7, 0xb0, 0x06, 0x68, 0xc3, 0x50, 0x48, 0xfc, - 0xf8, 0x5c, 0x67, 0x69, 0x68, 0x66, 0xb6, 0x81, - 0x95, 0x91, 0x81, 0x3d, 0xf6, 0x34, 0xd9, 0x4b, - 0x06, 0x35, 0x17, 0x59, 0x89, 0x18, 0x74, 0x32, - 0x50, 0xcf, 0x81, 0x16, 0x8e, 0x53, 0x9d, 0x1c, - 0xad, 0x2d, 0x8e, 0x16, 0x41, 0xda, 0xca, 0xab, - 0x78, 0x0d, 0xc9, 0x49, 0x61, 0xaa, 0x18, 0xf4, - 0x56, 0x48, 0x29, 0x8c, 0xe3, 0x9a, 0x7d, 0x58, - 0xf8, 0x99, 0x72, 0xf1, 0x78, 0xa8, 0x5a, 0x97, - 0xe3, 0x2a, 0xc6, 0xa9, 0x59, 0xde, 0xcc, 0x62, - 0xfb, 0xab, 0xc5, 0x9a, 0x0b, 0xc7, 0x16, 0x8f, - 0x18, 0x20, 0x6e, 0x01, 0x7e, 0x04, 0xef, 0x72, - 0x83, 0x61, 0xb8, 0x1a, 0x77, 0x0f, 0xd1, 0xa9, - 0x75, 0xe0, 0x4a, 0x11, 0x69, 0x9d, 0xb6, 0xc9, - 0x2e, 0xd3, 0xbf, 0xe2, 0x5b, 0x24, 0x77, 0x30, - 0x85, 0x91, 0xef, 0xa8, 0x93, 0x4e, 0xad, 0x99, - 0xad, 0xcb, 0x6d, 0x9d, 0x8f, 0xd8, 0x0f, 0xe5, - 0x41, 0xd9, 0x9e, 0x0b, 0xce, 0x33, 0xd9, 0xbb, - 0x87, 0x66, 0x2c, 0xa3, 0x0b, 0x68, 0x1b, 0xb0, - 0x71, 0x30, 0xfa, 0x15, 0x2e, 0xe8, 0xc1, 0x99, - 0x71, 0x01, 0xcc, 0xdb, 0x6f, 0x9f, 0x8a, 0xfd, - 0xb4, 0x0f, 0x35, 0xa1, 0x36, 0xf4, 0x3a, 0xc4, - 0x17, 0x77, 0x43, 0x60, 0x10, 0x18, 0xb4, 0xc2, - 0xe5, 0xc0, 0x64, 0xd8, 0x38, 0x7c, 0x05, 0x9a, - 0xfb, 0x2b, 0xb3, 0x9b, 0x9e, 0x34, 0x6b, 0x4b, - 0xc8, 0x3b, 0x77, 0xe0, 0x6f, 0x08, 0xa1, 0x7b, - 0x66, 0x69, 0x2f, 0xdb, 0x34, 0x9e, 0x98, 0x90, - 0x5b, 0x4d, 0x7b, 0xa2, 0x32, 0x8e, 0x64, 0xe6, - 0x0d, 0x75, 0xc9, 0x96, 0xe3, 0x57, 0xba, 0xad, - 0x3e, 0x3b, 0x23, 0xfb, 0x9e, 0x7f, 0xc0, 0x3c, - 0xd5, 0x41, 0x9c, 0xfb, 0xbc, 0xb3, 0x52, 0x49 -#endif -}; -#endif -#endif - -static int test_wc_dilithium_public_der_decode(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - defined(WOLFSSL_DILITHIUM_PUBLIC_KEY) - dilithium_key* key; - word32 idx = 0; - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - - ExpectIntEQ(wc_dilithium_init(key), 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); -#endif - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(ml_dsa_public_der, &idx, key, - (word32)sizeof(ml_dsa_public_der)), 0); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - idx = 0; -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); -#endif - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(dilithium_public_der, &idx, key, - (word32)sizeof(dilithium_public_der)), 0); -#endif - - wc_dilithium_free(key); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_der(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_ASN1) && \ - !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) -#define DILITHIUM_MAX_DER_SIZE 8192 - dilithium_key* key; - WC_RNG rng; - byte* der = NULL; - int len; - int pubLen; - int pubDerLen; - int privDerLen; - int keyDerLen; - word32 idx = 0; - -#ifndef WOLFSSL_NO_ML_DSA_44 - pubLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE; - pubDerLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE + 22; - privDerLen = DILITHIUM_LEVEL2_KEY_SIZE + 28; - keyDerLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE + DILITHIUM_LEVEL2_KEY_SIZE + 32; -#elif !defined(WOLFSSL_NO_ML_DSA_65) - pubLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE; - pubDerLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE + 22; - privDerLen = DILITHIUM_LEVEL3_KEY_SIZE + 28; - keyDerLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE + DILITHIUM_LEVEL3_KEY_SIZE + 32; -#else - pubLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE; - pubDerLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE + 22; - privDerLen = DILITHIUM_LEVEL5_KEY_SIZE + 28; - keyDerLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE + DILITHIUM_LEVEL5_KEY_SIZE + 32; -#endif - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - der = (byte*)XMALLOC(DILITHIUM_MAX_DER_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(der); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - if (der != NULL) { - XMEMSET(der, 0, sizeof(*der)); - } - XMEMSET(&rng, 0, sizeof(WC_RNG)); - ExpectIntEQ(wc_InitRng(&rng), 0); - ExpectIntEQ(wc_dilithium_init(key), 0); - - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, - 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - /* When security level is not set, we attempt to parse it from DER. Since - * the supplied DER is invalid, this should fail with ASN parsing error */ - idx = 0; -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, pubDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#else - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, pubDerLen), - WC_NO_ERR_TRACE(ASN_PARSE_E)); -#endif - idx = 0; -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, privDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#else - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, privDerLen), - WC_NO_ERR_TRACE(ASN_PARSE_E)); -#endif - -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); -#elif !defined(WOLFSSL_NO_ML_DSA_65) - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); -#else - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); -#endif - - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, - 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); - - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, NULL, 0 , - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, der , 0 , - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, NULL, DILITHIUM_MAX_DER_SIZE, - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, der , DILITHIUM_MAX_DER_SIZE, - 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , der , 0 , - 0), WC_NO_ERR_TRACE(BUFFER_E)); - /* Get length only. */ - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, 0 , - 0), pubLen); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE, - 0), pubLen); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, 0 , - 1), pubDerLen); - ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE, - 1), pubDerLen); - - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, NULL, - 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntGT(wc_Dilithium_PrivateKeyToDer(key , NULL, - 0 ), 0); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, der , - 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, NULL, - DILITHIUM_MAX_DER_SIZE), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, der , - DILITHIUM_MAX_DER_SIZE), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key , der , - 0 ), WC_NO_ERR_TRACE(BUFFER_E)); - /* Get length only. */ - ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key , NULL, - DILITHIUM_MAX_DER_SIZE), privDerLen); - - ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntGT(wc_Dilithium_KeyToDer(key , NULL, 0 ), - 0 ); - ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, der , 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, NULL, DILITHIUM_MAX_DER_SIZE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, der , DILITHIUM_MAX_DER_SIZE), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_KeyToDer(key , der , 0 ), - WC_NO_ERR_TRACE(BUFFER_E)); - /* Get length only. */ - ExpectIntEQ(wc_Dilithium_KeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE), - keyDerLen); - - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , NULL, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, &idx, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, key , 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, NULL, pubDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, &idx, key , pubDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , NULL, key , pubDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , &idx, NULL, pubDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , &idx, key , 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , NULL, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, &idx, NULL, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, key , 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, NULL, privDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, &idx, key , privDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , NULL, key , privDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , &idx, NULL, privDerLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , &idx, key , 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - ExpectIntEQ(len = wc_Dilithium_PublicKeyToDer(key, der, - DILITHIUM_MAX_DER_SIZE, 0), pubLen); - ExpectIntEQ(wc_dilithium_import_public(der, len, key), 0); - - ExpectIntEQ(len = wc_Dilithium_PublicKeyToDer(key, der, - DILITHIUM_MAX_DER_SIZE, 1), pubDerLen); - idx = 0; - ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, len), 0); - - ExpectIntEQ(len = wc_Dilithium_PrivateKeyToDer(key, der, - DILITHIUM_MAX_DER_SIZE), privDerLen); - idx = 0; - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, len), 0); - - ExpectIntEQ(len = wc_Dilithium_KeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), - keyDerLen); - idx = 0; - ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, len), 0); - - - wc_dilithium_free(key); - wc_FreeRng(&rng); - - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_make_key_from_seed(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) - dilithium_key* key; -#ifndef WOLFSSL_NO_ML_DSA_44 - static const byte seed_44[] = { - 0x93, 0xEF, 0x2E, 0x6E, 0xF1, 0xFB, 0x08, 0x99, - 0x9D, 0x14, 0x2A, 0xBE, 0x02, 0x95, 0x48, 0x23, - 0x70, 0xD3, 0xF4, 0x3B, 0xDB, 0x25, 0x4A, 0x78, - 0xE2, 0xB0, 0xD5, 0x16, 0x8E, 0xCA, 0x06, 0x5F - }; - static const byte pk_44[] = { - 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, - 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, - 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, - 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, - 0x23, 0x0A, 0x19, 0xD7, 0x5A, 0xDB, 0xDE, 0xD5, - 0x2D, 0xB8, 0x55, 0xE2, 0x52, 0xA7, 0x19, 0xFC, - 0xBD, 0x14, 0x7B, 0xA6, 0x7B, 0x2F, 0xAD, 0x14, - 0xED, 0x0E, 0x68, 0xFD, 0xFE, 0x8C, 0x65, 0xBA, - 0xDE, 0xAC, 0xB0, 0x91, 0x11, 0x93, 0xAD, 0xFA, - 0x87, 0x94, 0xD7, 0x8F, 0x8E, 0x3D, 0x66, 0x2A, - 0x1C, 0x49, 0xDA, 0x81, 0x9F, 0xD9, 0x59, 0xE7, - 0xF0, 0x78, 0xF2, 0x03, 0xC4, 0x56, 0xF8, 0xB6, - 0xE7, 0xC9, 0x41, 0x58, 0x98, 0xE5, 0x41, 0xC7, - 0x30, 0x32, 0xDB, 0xD6, 0x19, 0xEA, 0xF6, 0x0F, - 0x8D, 0x64, 0xF8, 0x68, 0x3D, 0xA9, 0x9E, 0xCA, - 0x51, 0x22, 0x0B, 0x0A, 0xCA, 0x28, 0x46, 0x40, - 0x99, 0xF5, 0x47, 0xC0, 0x27, 0x77, 0xBD, 0x37, - 0xD8, 0x4A, 0x59, 0xBD, 0x37, 0xED, 0x7A, 0x8A, - 0x92, 0x63, 0x3C, 0x75, 0xD0, 0x7C, 0x79, 0x3F, - 0xE7, 0x25, 0x2B, 0x58, 0x4A, 0xBF, 0x6A, 0x15, - 0xEE, 0x14, 0x50, 0x7E, 0x5E, 0x19, 0x3F, 0x89, - 0x86, 0x4D, 0x09, 0xAC, 0x87, 0x27, 0xA6, 0xD0, - 0x42, 0x1F, 0x0C, 0x19, 0xF0, 0xE2, 0xFB, 0xFC, - 0x21, 0x3D, 0x3F, 0xBD, 0x70, 0xF4, 0xF9, 0x76, - 0x2C, 0xEC, 0xFF, 0x23, 0x1E, 0x9C, 0x8A, 0x76, - 0x28, 0xD3, 0xF8, 0xB0, 0x85, 0x7B, 0x03, 0x2D, - 0x32, 0xDE, 0x62, 0xFF, 0x8E, 0xCB, 0xF4, 0x00, - 0x82, 0x89, 0xBF, 0x34, 0x40, 0x36, 0x65, 0xF8, - 0x1A, 0x08, 0x1A, 0xD5, 0xA8, 0x5A, 0x28, 0x2F, - 0x99, 0xBA, 0xB9, 0xE5, 0x38, 0x5A, 0xFB, 0xCC, - 0xCF, 0x44, 0xB7, 0x4C, 0x01, 0x96, 0xC7, 0x54, - 0x55, 0x27, 0xEC, 0x30, 0x26, 0xDA, 0x12, 0x80, - 0xC4, 0xEB, 0x37, 0xD0, 0x9C, 0xFE, 0x3E, 0xC4, - 0xB4, 0x91, 0x0B, 0x62, 0xEB, 0x98, 0x15, 0xA4, - 0x25, 0xC6, 0x59, 0x0F, 0xC4, 0xAD, 0x3F, 0xBB, - 0x22, 0x57, 0x52, 0xCC, 0x1F, 0xC5, 0x69, 0x3F, - 0x18, 0x7E, 0x7D, 0xEC, 0x4E, 0xEF, 0xBE, 0xB6, - 0xB9, 0x1B, 0xD9, 0x1C, 0x5E, 0x2E, 0xA6, 0xA9, - 0x1D, 0x14, 0xD0, 0x97, 0xBE, 0x20, 0x3F, 0xBA, - 0x0B, 0xF9, 0x37, 0xC9, 0x75, 0x07, 0xDC, 0x00, - 0x7C, 0x4C, 0xAA, 0x9B, 0x07, 0x85, 0x89, 0x29, - 0x66, 0xFF, 0x15, 0x90, 0x09, 0x24, 0xE5, 0x79, - 0xD4, 0xFB, 0xA0, 0x2B, 0xDA, 0x87, 0x55, 0x5F, - 0x07, 0x3D, 0xAE, 0x00, 0x51, 0x3E, 0x70, 0x80, - 0x9A, 0xBB, 0xC7, 0x11, 0xFB, 0xA2, 0xE7, 0x64, - 0x95, 0x77, 0xC4, 0x2A, 0xFD, 0xC2, 0x4B, 0xF7, - 0x41, 0x3E, 0x51, 0x26, 0x8A, 0xD6, 0xDB, 0x61, - 0x13, 0xB7, 0xD9, 0x19, 0x1A, 0xF9, 0xD0, 0x61, - 0xDB, 0xDE, 0xD5, 0xD6, 0x30, 0x87, 0x76, 0x50, - 0xC1, 0x24, 0xF1, 0x1B, 0xC4, 0xBD, 0xC3, 0xFD, - 0xC6, 0xA9, 0x00, 0xF6, 0x31, 0x26, 0xF9, 0x21, - 0xE8, 0x38, 0xAD, 0x0C, 0x22, 0x75, 0xA3, 0x38, - 0x9A, 0x39, 0xBD, 0x99, 0xA1, 0x34, 0x50, 0x45, - 0x50, 0x10, 0x1C, 0xD3, 0xE9, 0x5E, 0x6D, 0x14, - 0x96, 0xBE, 0x7D, 0xE6, 0x62, 0x7D, 0xF4, 0xFD, - 0x6C, 0x28, 0xBB, 0xF4, 0x0B, 0x30, 0xEF, 0xA9, - 0xB5, 0xC3, 0xD5, 0xC8, 0x5A, 0xB1, 0x4A, 0x65, - 0xC0, 0x2D, 0x6D, 0x47, 0x81, 0xFF, 0x13, 0xD3, - 0x28, 0x60, 0x85, 0x54, 0xB6, 0xD1, 0x5E, 0xD9, - 0x12, 0x89, 0xA6, 0xD5, 0x5A, 0xAC, 0x0C, 0x38, - 0xE3, 0x77, 0x06, 0xF7, 0x35, 0x5E, 0x9A, 0x4F, - 0xDA, 0x61, 0x5B, 0x87, 0x59, 0x26, 0xBF, 0xE5, - 0xA5, 0x9D, 0x9E, 0xF2, 0x73, 0xBF, 0x94, 0xA0, - 0x7C, 0xFA, 0x57, 0x31, 0x78, 0xF0, 0xE0, 0x04, - 0xB6, 0xE1, 0xEF, 0x0A, 0x83, 0x49, 0xE9, 0xBC, - 0xC0, 0x19, 0x81, 0xF2, 0x46, 0x0F, 0x0A, 0x27, - 0x43, 0xC2, 0x8D, 0x1E, 0x13, 0x8F, 0xFB, 0x76, - 0x5E, 0x7E, 0x33, 0x97, 0xB7, 0x91, 0x33, 0x35, - 0xD4, 0x02, 0xFE, 0x91, 0x80, 0x6A, 0xA8, 0xFC, - 0x81, 0x92, 0x53, 0xAF, 0x32, 0x69, 0x2F, 0xA6, - 0x51, 0xE8, 0x67, 0xF5, 0x90, 0x7E, 0xF4, 0x6F, - 0x00, 0x62, 0x5A, 0x03, 0x0E, 0xC9, 0x04, 0xED, - 0xAB, 0x21, 0x42, 0x6D, 0x59, 0x11, 0x9D, 0x2C, - 0xAA, 0x43, 0xBD, 0x93, 0x5D, 0xEC, 0x0A, 0x55, - 0x0C, 0x61, 0xEE, 0x4B, 0x27, 0x9C, 0x1C, 0xA3, - 0xA7, 0x9C, 0x79, 0xA6, 0x6E, 0x3F, 0x2D, 0x2F, - 0xAD, 0xB0, 0x0F, 0x59, 0xA3, 0xA4, 0x38, 0xAA, - 0x44, 0x57, 0x01, 0x06, 0x07, 0x30, 0x17, 0xFA, - 0x1C, 0x87, 0x57, 0x50, 0x01, 0x09, 0x72, 0x0D, - 0x12, 0x5B, 0xBA, 0x23, 0x1A, 0x0C, 0x36, 0x35, - 0x0C, 0x78, 0x08, 0x6D, 0xFD, 0xC8, 0xD6, 0x13, - 0xAE, 0xCA, 0x88, 0xC4, 0xCC, 0xAE, 0xB4, 0xA4, - 0x4D, 0x13, 0xAD, 0xB3, 0xC7, 0x17, 0xD6, 0x5C, - 0x82, 0xA3, 0x51, 0xB9, 0xB6, 0xEA, 0xBF, 0x6A, - 0x10, 0xF4, 0xB4, 0xE9, 0x62, 0x3E, 0x3A, 0x95, - 0xB4, 0xD4, 0x0A, 0x12, 0xA8, 0x18, 0xAC, 0x6B, - 0x38, 0x22, 0xDB, 0x82, 0xFB, 0x05, 0xDC, 0x42, - 0x02, 0x64, 0x8B, 0x44, 0x54, 0x68, 0x9A, 0xEB, - 0x69, 0xEA, 0x32, 0x5F, 0x03, 0xE3, 0x5D, 0xEF, - 0xA5, 0x47, 0x08, 0x48, 0x14, 0x20, 0xC6, 0xD6, - 0x97, 0xBB, 0x91, 0x2F, 0xCA, 0x0D, 0x3F, 0x19, - 0x2E, 0xF2, 0x97, 0xDF, 0xE7, 0x7F, 0xF3, 0x6B, - 0x21, 0x03, 0xF1, 0xAD, 0x1A, 0xEE, 0xCE, 0xD1, - 0xC8, 0x14, 0xC2, 0xCD, 0x7E, 0xF1, 0x6B, 0xCE, - 0x47, 0x6A, 0xD0, 0x4F, 0x94, 0x1A, 0xFC, 0x79, - 0xE3, 0x29, 0x54, 0x74, 0xA4, 0x10, 0x62, 0x51, - 0x8C, 0x00, 0x37, 0x86, 0x09, 0x34, 0xF0, 0xE5, - 0xE6, 0x52, 0xF7, 0x27, 0x49, 0xA6, 0x98, 0x63, - 0x2A, 0x09, 0x91, 0xF6, 0x13, 0xF5, 0xCB, 0x96, - 0xCA, 0x11, 0x78, 0xF9, 0x74, 0xF2, 0xC4, 0xAA, - 0x0C, 0xE6, 0x3D, 0xC2, 0x4E, 0x36, 0x4C, 0x92, - 0xA6, 0x43, 0xB9, 0x0A, 0x5F, 0x85, 0xA6, 0x2F, - 0xD4, 0xD8, 0xD2, 0xB1, 0x93, 0xD2, 0x9B, 0x18, - 0xBE, 0xDE, 0x26, 0x53, 0xFC, 0x5D, 0x3F, 0x24, - 0xF5, 0xB2, 0xC0, 0x18, 0xDB, 0xBC, 0xB6, 0xEF, - 0x00, 0xF3, 0x05, 0xBF, 0x93, 0x66, 0x6B, 0xD4, - 0x7F, 0xEA, 0x91, 0x93, 0xBC, 0x23, 0x3D, 0xB3, - 0x91, 0x21, 0x44, 0x2E, 0x93, 0x8D, 0xA5, 0xDD, - 0x07, 0xEE, 0x6E, 0x87, 0x9C, 0x5B, 0x9D, 0xFF, - 0x41, 0xEC, 0xEE, 0x5E, 0x05, 0x89, 0xAE, 0x61, - 0x75, 0xFF, 0x5E, 0xC6, 0xF6, 0xD2, 0x62, 0x9F, - 0x56, 0xB1, 0x8B, 0x4D, 0xE6, 0x6F, 0xCB, 0x13, - 0xDF, 0x04, 0x00, 0xA7, 0x97, 0xC9, 0x22, 0x70, - 0xF6, 0x9B, 0xDE, 0xBD, 0xDC, 0xB8, 0x8C, 0x42, - 0x48, 0x91, 0x9B, 0x56, 0xCD, 0xA7, 0x0B, 0x8A, - 0xC4, 0xF9, 0x42, 0x9C, 0x29, 0x2D, 0xA9, 0x4D, - 0x64, 0x78, 0x28, 0x07, 0x64, 0xFE, 0x23, 0x86, - 0xFC, 0x38, 0xCB, 0x09, 0x31, 0x45, 0x88, 0x39, - 0xEF, 0x4E, 0x7D, 0xE8, 0xF0, 0x68, 0x9D, 0x99, - 0x80, 0x59, 0x88, 0xC7, 0xF9, 0x61, 0x11, 0x85, - 0x2C, 0x89, 0x29, 0xE5, 0xA5, 0x40, 0xD3, 0xB7, - 0x8D, 0x71, 0x2D, 0xEC, 0xC3, 0x96, 0xFE, 0xF3, - 0xEC, 0x34, 0x40, 0x21, 0x84, 0xE4, 0xFD, 0x29, - 0xF3, 0x63, 0xEA, 0x80, 0xF6, 0xFC, 0x50, 0xBA, - 0x9A, 0x11, 0x35, 0x1A, 0xCE, 0xEA, 0x8F, 0xE6, - 0x8D, 0x54, 0x1E, 0x1A, 0xA5, 0x84, 0x8D, 0x9F, - 0x6E, 0x61, 0xDF, 0xB6, 0x2B, 0x2F, 0x23, 0xBC, - 0x50, 0x81, 0xE8, 0x2F, 0x76, 0x22, 0x6E, 0x03, - 0x28, 0x49, 0x82, 0xEC, 0x48, 0x48, 0x12, 0x09, - 0xB1, 0xA7, 0xD4, 0xC8, 0x79, 0x7E, 0x44, 0xBF, - 0xA8, 0x70, 0xB2, 0x20, 0x04, 0xDB, 0x74, 0xBD, - 0x7D, 0x47, 0x8D, 0x5B, 0x36, 0x14, 0xD2, 0xB1, - 0xDA, 0x75, 0x02, 0xB3, 0x98, 0xEB, 0x9D, 0xA8, - 0x0D, 0x06, 0x46, 0x1E, 0x90, 0xE0, 0x30, 0x60, - 0x44, 0x6A, 0xB4, 0xA8, 0x23, 0x84, 0x32, 0xBF, - 0xAF, 0x75, 0x2F, 0x39, 0x17, 0x91, 0x21, 0x4F, - 0x1E, 0x6B, 0x63, 0x59, 0x0D, 0x53, 0x60, 0x60, - 0xD1, 0xC2, 0x45, 0x30, 0x7B, 0xC5, 0xC1, 0xBA, - 0xC4, 0xAA, 0xA0, 0x99, 0xD3, 0x6B, 0xB6, 0xDC, - 0xBC, 0x97, 0x3C, 0xF2, 0xE6, 0x9F, 0x27, 0x34, - 0xD0, 0xF2, 0x9A, 0xEE, 0xC4, 0x56, 0x7B, 0x99, - 0xA1, 0x6B, 0xC1, 0x7C, 0x6C, 0xDD, 0xAC, 0xEF, - 0xE4, 0x99, 0x27, 0xFB, 0x14, 0xE7, 0xD9, 0x8D, - 0xD4, 0x26, 0x35, 0x19, 0x46, 0x9C, 0xCA, 0x3D, - 0xB4, 0x67, 0x9A, 0x68, 0xCE, 0xED, 0xA9, 0x55, - 0x59, 0x22, 0x10, 0xFC, 0x49, 0xAA, 0x5F, 0xBE, - 0x93, 0x4C, 0xC7, 0x3D, 0x84, 0xE4, 0xBA, 0x54, - 0x78, 0x00, 0x2D, 0x68, 0x90, 0x98, 0x90, 0x68, - 0xEF, 0x8F, 0xC9, 0x8C, 0x25, 0x32, 0xB8, 0x3B, - 0xF3, 0xCB, 0x9E, 0xF0, 0x28, 0x93, 0xC2, 0x15, - 0x24, 0x26, 0xB9, 0xD1, 0xA9, 0x47, 0x34, 0xDF, - 0xB4, 0xF9, 0x11, 0x35, 0x14, 0x3C, 0x9E, 0xED, - 0x18, 0xFD, 0x51, 0xAE, 0x87, 0x5D, 0x07, 0xA2, - 0x37, 0x75, 0x60, 0x6A, 0x73, 0x4F, 0xBA, 0x98, - 0xC0, 0x63, 0xB4, 0xA1, 0x62, 0x2E, 0x7F, 0xF2, - 0x1A, 0xA7, 0xE6, 0x52, 0xA3, 0xD6, 0xC1, 0x9F, - 0xE0, 0xDC, 0x67, 0x61, 0xB7, 0xD3, 0x53, 0x02, - 0xBF, 0x21, 0x4D, 0x30, 0x79, 0xF7, 0x60, 0x51, - 0x08, 0x2A, 0x87, 0x59, 0x29, 0x92, 0x0D, 0xC3, - 0xB3, 0xCB, 0x43, 0x21, 0x1A, 0x23, 0xA4, 0x3A, - 0x50, 0x33, 0x2F, 0xAF, 0x1A, 0xC2, 0x19, 0x1E, - 0x71, 0x71, 0x25, 0xF6, 0x3E, 0x25, 0x86, 0xC4, - 0xD8, 0x6D, 0xCA, 0x6B, 0xCD, 0x3D, 0x03, 0x8F, - 0x9D, 0x3A, 0x7B, 0x66, 0xCB, 0xC7, 0xDF, 0x34 - }; - static const byte sk_44[] = { - 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, - 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, - 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, - 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, - 0xBA, 0x2B, 0x57, 0xC4, 0x46, 0x55, 0x6E, 0xE2, - 0xB7, 0x2C, 0x78, 0xB9, 0x6B, 0xB7, 0xA8, 0x50, - 0x3D, 0xE4, 0x0A, 0xFB, 0x54, 0x18, 0x4E, 0x3B, - 0x54, 0x63, 0xC2, 0x1A, 0xF7, 0x48, 0x53, 0x23, - 0xDF, 0x98, 0xF0, 0x16, 0x0A, 0xE5, 0xD1, 0x37, - 0x51, 0x27, 0x25, 0xF8, 0x9D, 0x56, 0x3B, 0xC9, - 0xA1, 0x89, 0xD3, 0x1D, 0x20, 0xB3, 0xB3, 0xC8, - 0xFF, 0xAA, 0xF5, 0xE4, 0x86, 0xE7, 0x90, 0x51, - 0xF6, 0xF3, 0x60, 0x5C, 0xCA, 0x25, 0x69, 0xFD, - 0xB4, 0x6B, 0x33, 0x18, 0xD2, 0x38, 0x42, 0xCE, - 0x40, 0xD6, 0x43, 0x86, 0x13, 0xF6, 0x8B, 0x45, - 0x5B, 0x0D, 0x3B, 0xCA, 0x0E, 0x05, 0x0D, 0x4D, - 0x11, 0x99, 0x88, 0xA2, 0xC4, 0x80, 0x1B, 0x90, - 0x84, 0xE0, 0xB0, 0x48, 0xC9, 0x28, 0x09, 0x22, - 0x30, 0x90, 0x24, 0x06, 0x49, 0x98, 0x40, 0x65, - 0x5A, 0x26, 0x8A, 0xDA, 0x32, 0x90, 0xDA, 0x48, - 0x08, 0x22, 0x81, 0x90, 0xC8, 0x14, 0x61, 0xDC, - 0x16, 0x6A, 0x21, 0x47, 0x8E, 0x08, 0xB2, 0x21, - 0xE3, 0x08, 0x68, 0x1A, 0x02, 0x44, 0x14, 0xC6, - 0x65, 0xE1, 0x98, 0x71, 0x90, 0xC6, 0x69, 0x0C, - 0x15, 0x44, 0xC9, 0xA0, 0x11, 0xCC, 0x34, 0x71, - 0x83, 0x40, 0x45, 0x00, 0x12, 0x4D, 0x91, 0x08, - 0x00, 0x83, 0x36, 0x84, 0x12, 0x85, 0x4C, 0xCC, - 0x00, 0x41, 0x09, 0x90, 0x70, 0x18, 0x95, 0x00, - 0xA2, 0xB2, 0x85, 0x94, 0x26, 0x41, 0x0B, 0x00, - 0x41, 0x0A, 0xB9, 0x80, 0xC0, 0xC6, 0x10, 0x0C, - 0x33, 0x29, 0xA3, 0xA6, 0x28, 0x1C, 0x26, 0x10, - 0x1A, 0x37, 0x49, 0x13, 0x35, 0x8A, 0x0B, 0x29, - 0x2E, 0x82, 0xA2, 0x70, 0x8B, 0x38, 0x49, 0x94, - 0x04, 0x80, 0x9B, 0x26, 0x10, 0xA4, 0x80, 0x30, - 0x04, 0x37, 0x0C, 0x48, 0xB2, 0x60, 0x04, 0x17, - 0x2E, 0x19, 0x49, 0x64, 0xC8, 0xC4, 0x64, 0x1A, - 0x96, 0x60, 0x10, 0x83, 0x6D, 0x20, 0x38, 0x22, - 0x49, 0x06, 0x08, 0x1B, 0xB7, 0x20, 0x01, 0x48, - 0x4D, 0xE1, 0x10, 0x49, 0x08, 0x38, 0x44, 0x4C, - 0x16, 0x8E, 0x04, 0xB2, 0x2C, 0x09, 0x91, 0x50, - 0x83, 0x36, 0x06, 0x5C, 0x02, 0x8C, 0x8A, 0x38, - 0x05, 0x1A, 0xB5, 0x81, 0x82, 0xC0, 0x09, 0x51, - 0x12, 0x72, 0x22, 0x10, 0x0D, 0x04, 0x08, 0x2A, - 0xA4, 0x84, 0x10, 0x58, 0x08, 0x52, 0x08, 0x26, - 0x0A, 0x02, 0xB6, 0x2D, 0x8A, 0x12, 0x0E, 0x14, - 0x22, 0x10, 0x48, 0x44, 0x0A, 0x14, 0x23, 0x91, - 0x50, 0x40, 0x90, 0x0A, 0x27, 0x92, 0xA4, 0xB0, - 0x60, 0x08, 0x84, 0x11, 0xC4, 0x40, 0x22, 0x63, - 0x46, 0x2A, 0xDA, 0xA6, 0x90, 0xC1, 0xB2, 0x30, - 0x50, 0x10, 0x00, 0xA0, 0xB4, 0x6C, 0x53, 0xB4, - 0x50, 0x13, 0x05, 0x8D, 0x02, 0x31, 0x0E, 0x08, - 0x20, 0x10, 0x91, 0xC8, 0x4C, 0x22, 0xA7, 0x50, - 0xC2, 0xA6, 0x70, 0x92, 0x46, 0x41, 0x63, 0x16, - 0x8C, 0x84, 0x00, 0x11, 0x0B, 0x81, 0x90, 0x13, - 0x83, 0x71, 0x21, 0x85, 0x30, 0x1B, 0x18, 0x46, - 0xA3, 0x10, 0x84, 0x14, 0x43, 0x40, 0x80, 0x98, - 0x25, 0x0C, 0x27, 0x2C, 0x94, 0x42, 0x41, 0xA2, - 0x88, 0x45, 0x02, 0x13, 0x05, 0x44, 0xB6, 0x44, - 0x52, 0x22, 0x92, 0xD0, 0x80, 0x50, 0x4B, 0xA6, - 0x04, 0x84, 0x36, 0x70, 0x09, 0xB2, 0x4D, 0x19, - 0xA8, 0x84, 0x24, 0x93, 0x49, 0x94, 0xA2, 0x80, - 0x49, 0xB4, 0x48, 0x91, 0x28, 0x64, 0xA1, 0xC8, - 0x65, 0x4B, 0x82, 0x85, 0x93, 0x30, 0x06, 0x63, - 0x12, 0x66, 0x10, 0x37, 0x01, 0x4A, 0x40, 0x80, - 0x18, 0x18, 0x90, 0x44, 0xC4, 0x0D, 0x4B, 0x28, - 0x81, 0xA2, 0x06, 0x40, 0xD4, 0x30, 0x2C, 0x1B, - 0x96, 0x4C, 0xE1, 0xB2, 0x60, 0x44, 0x28, 0x41, - 0xD8, 0x30, 0x65, 0x24, 0x09, 0x04, 0x64, 0x00, - 0x89, 0x63, 0xC2, 0x24, 0xC0, 0x00, 0x49, 0x92, - 0x16, 0x52, 0x23, 0xC1, 0x29, 0x42, 0x26, 0x91, - 0xD0, 0x38, 0x31, 0x83, 0x28, 0x28, 0x4C, 0x28, - 0x61, 0x1A, 0xB2, 0x88, 0x80, 0x26, 0x2D, 0x0C, - 0x19, 0x52, 0x5B, 0x22, 0x60, 0x8A, 0x92, 0x28, - 0xA2, 0x18, 0x90, 0xD9, 0x42, 0x52, 0xCB, 0x40, - 0x8E, 0x9B, 0x16, 0x06, 0x4B, 0xC8, 0x05, 0xE0, - 0x06, 0x6C, 0x49, 0xC2, 0x25, 0xD4, 0x22, 0x69, - 0x14, 0x11, 0x69, 0x1C, 0x34, 0x90, 0x0C, 0x85, - 0x8D, 0x1C, 0x84, 0x49, 0x63, 0x10, 0x85, 0x08, - 0x34, 0x89, 0x58, 0x16, 0x66, 0xA0, 0x38, 0x68, - 0x0B, 0xA2, 0x50, 0xE0, 0x84, 0x61, 0xC1, 0x26, - 0x6E, 0xC9, 0x14, 0x6A, 0xC0, 0xC0, 0x31, 0x84, - 0x18, 0x2E, 0xDC, 0x16, 0x52, 0x14, 0x18, 0x91, - 0x0A, 0x39, 0x2C, 0x83, 0xA6, 0x8D, 0x12, 0x29, - 0x62, 0x92, 0xA6, 0x60, 0x08, 0xA5, 0x10, 0xD9, - 0xC8, 0x4D, 0x24, 0x48, 0x24, 0x83, 0x98, 0x24, - 0x1A, 0x44, 0x42, 0x08, 0x08, 0x48, 0xC8, 0x96, - 0x2D, 0xA1, 0x10, 0x20, 0x60, 0x24, 0x51, 0x9C, - 0x30, 0x11, 0xDB, 0xC8, 0x04, 0x11, 0x22, 0x51, - 0x18, 0x04, 0x68, 0xE2, 0x24, 0x4E, 0x10, 0xC4, - 0x0D, 0x18, 0x37, 0x29, 0x11, 0xB7, 0x84, 0x43, - 0x84, 0x8D, 0x54, 0x40, 0x70, 0x64, 0x80, 0x70, - 0x21, 0xB0, 0x4D, 0x00, 0x26, 0x62, 0x00, 0x45, - 0x25, 0x1B, 0x83, 0x84, 0x84, 0x80, 0x70, 0x19, - 0xB0, 0x04, 0x0A, 0xC9, 0x28, 0xCA, 0x80, 0x05, - 0x1B, 0x21, 0x4E, 0xD4, 0xB0, 0x49, 0x8C, 0x96, - 0x6C, 0xD0, 0x96, 0x25, 0x48, 0x32, 0x72, 0x54, - 0x12, 0x05, 0x09, 0x98, 0x8C, 0x8A, 0x32, 0x6D, - 0xC0, 0x04, 0x31, 0x63, 0xC8, 0x61, 0xC8, 0xC2, - 0x68, 0x9B, 0xB4, 0x8C, 0x5B, 0xC0, 0x2D, 0xC3, - 0xA8, 0x8D, 0x1B, 0x16, 0x6C, 0xD8, 0x96, 0x41, - 0x98, 0x34, 0x02, 0x44, 0x14, 0x2C, 0xD3, 0x86, - 0x44, 0x0A, 0x18, 0x8A, 0x1A, 0x46, 0x92, 0x1A, - 0xB7, 0x08, 0x4C, 0x34, 0x24, 0x21, 0x91, 0x0D, - 0x9A, 0x96, 0x2D, 0xCB, 0x24, 0x22, 0x92, 0x86, - 0x08, 0x98, 0xA0, 0x50, 0xDA, 0x44, 0x6A, 0x19, - 0xB1, 0x05, 0x8B, 0x20, 0x6E, 0x24, 0xC4, 0x81, - 0xC9, 0x98, 0x40, 0x22, 0x19, 0x32, 0x11, 0x05, - 0x69, 0xD3, 0x94, 0x91, 0x08, 0xA7, 0x71, 0xDB, - 0xC0, 0x70, 0x02, 0xB8, 0x28, 0x83, 0xB4, 0x49, - 0xA0, 0x44, 0x8A, 0x0B, 0xB4, 0x10, 0x61, 0x02, - 0x48, 0x1C, 0xA6, 0x11, 0xE3, 0x20, 0x66, 0x40, - 0xB4, 0x70, 0x03, 0xB6, 0x04, 0x60, 0x48, 0x21, - 0x5B, 0x21, 0x83, 0x39, 0x88, 0xDB, 0x67, 0x4A, - 0x61, 0xE7, 0xC2, 0x08, 0xDE, 0xBE, 0x8D, 0xAE, - 0x41, 0x19, 0xAF, 0xB0, 0x26, 0x61, 0xA6, 0x9A, - 0xBC, 0x8B, 0xDD, 0x24, 0x5B, 0x5D, 0x0F, 0xB1, - 0xA2, 0x67, 0x01, 0xC9, 0xB9, 0xC9, 0xA8, 0xF7, - 0xD9, 0xFC, 0xD4, 0xC2, 0x87, 0xFF, 0x3D, 0x60, - 0x8C, 0xF2, 0x58, 0x28, 0x2A, 0x1E, 0xB2, 0x9F, - 0x93, 0x04, 0xE8, 0x9C, 0x14, 0xF3, 0xE1, 0xCE, - 0x56, 0x12, 0x89, 0x1C, 0x60, 0x29, 0x34, 0x52, - 0x60, 0x06, 0xC9, 0x9B, 0x4A, 0xA2, 0x39, 0x9B, - 0xF4, 0x94, 0xBC, 0xF8, 0xDF, 0x61, 0xD6, 0xDF, - 0x4C, 0x69, 0xBC, 0x93, 0xE0, 0x2D, 0x49, 0x95, - 0xE2, 0xF7, 0x6E, 0x9F, 0xDA, 0x4E, 0xF6, 0x7E, - 0xB7, 0x25, 0x6C, 0xA8, 0x9A, 0x3F, 0x38, 0xFE, - 0xB2, 0xE9, 0xDF, 0x6A, 0x01, 0x0D, 0xC1, 0xC1, - 0x50, 0x02, 0xFB, 0xD4, 0x56, 0xFA, 0xE8, 0x84, - 0x82, 0x1A, 0x34, 0x16, 0x6B, 0x06, 0x58, 0xA2, - 0x41, 0x25, 0x95, 0x71, 0x8E, 0x14, 0x9B, 0xBC, - 0x6E, 0x22, 0x0A, 0xEE, 0x26, 0x8D, 0x4D, 0x82, - 0x18, 0xC2, 0x5F, 0x6A, 0x95, 0x7D, 0xE5, 0xB2, - 0x6C, 0xEA, 0x7B, 0x14, 0xCB, 0x32, 0x0D, 0x89, - 0xE1, 0x69, 0x9A, 0xD9, 0xF2, 0xB3, 0x89, 0xC6, - 0x7E, 0xF9, 0x33, 0x86, 0xA2, 0xC6, 0x5F, 0x2C, - 0x32, 0x23, 0x33, 0x67, 0xD7, 0x6A, 0xE4, 0xAB, - 0x2A, 0xBB, 0xD4, 0x22, 0xE9, 0x8E, 0x49, 0x3D, - 0xCC, 0x3C, 0xC5, 0xDA, 0xF6, 0x89, 0xB6, 0x5C, - 0xC4, 0xBC, 0x3F, 0xA5, 0x1C, 0x9C, 0x59, 0xEE, - 0xAF, 0x07, 0x55, 0x17, 0x0C, 0x24, 0x95, 0x80, - 0x4D, 0x02, 0xA6, 0x07, 0xC5, 0xBF, 0x88, 0x7C, - 0xD8, 0x6A, 0x03, 0x89, 0xF2, 0x8F, 0xC9, 0x72, - 0x5E, 0xF4, 0x60, 0x03, 0xF1, 0x3B, 0x01, 0x87, - 0x68, 0x4B, 0xEA, 0xB1, 0xF2, 0x4A, 0x29, 0xF5, - 0x31, 0x96, 0x01, 0xF3, 0x09, 0xC9, 0x1D, 0x2A, - 0x33, 0x3D, 0x1B, 0x88, 0xDF, 0x20, 0x5A, 0x51, - 0x20, 0xC4, 0xCF, 0xDC, 0x22, 0x38, 0x12, 0x4E, - 0x4E, 0x2B, 0x47, 0xD0, 0xB5, 0xE6, 0x6A, 0x65, - 0x4F, 0xE4, 0xCC, 0xCB, 0x07, 0x8F, 0x07, 0xCB, - 0xD4, 0x55, 0xD1, 0x5D, 0x3E, 0xEC, 0x7D, 0xA2, - 0x74, 0xD2, 0x4A, 0x2E, 0x57, 0x18, 0x84, 0xDE, - 0x41, 0xC3, 0xA9, 0xA4, 0xFD, 0xB3, 0xF6, 0x09, - 0x8A, 0x17, 0x2C, 0x30, 0x96, 0x80, 0x39, 0xBD, - 0x0E, 0x4E, 0xB3, 0xE2, 0xFB, 0x6D, 0x6E, 0xEE, - 0xD3, 0x9E, 0x0B, 0x63, 0x62, 0xD5, 0x4E, 0x7B, - 0x88, 0x95, 0x98, 0x69, 0xDD, 0xD5, 0xD8, 0x73, - 0xD9, 0x65, 0x24, 0x01, 0xA2, 0x9F, 0x27, 0xA2, - 0x8E, 0xA6, 0x6D, 0x32, 0xCC, 0xB0, 0xEF, 0x3B, - 0xF4, 0x60, 0x0F, 0x75, 0x57, 0xEE, 0x8D, 0x54, - 0xBF, 0x1D, 0xAD, 0x18, 0xF4, 0x5D, 0xDC, 0xD4, - 0xC9, 0xED, 0x57, 0xB1, 0x3E, 0x44, 0x5B, 0xF1, - 0x22, 0xA4, 0x3F, 0x53, 0x94, 0x03, 0x89, 0xBF, - 0x87, 0x14, 0xFF, 0xAC, 0x72, 0x1E, 0x59, 0x31, - 0x7E, 0x4B, 0x70, 0x50, 0x0A, 0xD0, 0xD1, 0xB9, - 0xA6, 0x27, 0x05, 0x4D, 0x31, 0x93, 0x20, 0x8C, - 0x77, 0x4E, 0x0B, 0x20, 0xED, 0x04, 0x1A, 0x8C, - 0x05, 0x5E, 0x75, 0xEE, 0xCD, 0x37, 0x38, 0xF0, - 0x07, 0x15, 0x8F, 0xAD, 0xDF, 0xCA, 0x5F, 0x43, - 0x56, 0x2D, 0x63, 0x6A, 0x5A, 0xCF, 0x3A, 0x39, - 0x83, 0xD3, 0xCF, 0xEB, 0xCA, 0x10, 0xB8, 0x13, - 0xF9, 0xF6, 0x52, 0x65, 0x19, 0x19, 0x9A, 0x03, - 0x13, 0xCD, 0x1D, 0xE1, 0x3F, 0x06, 0xAD, 0x53, - 0x86, 0xE1, 0xE1, 0x20, 0x79, 0x5F, 0xD2, 0x67, - 0xB7, 0xF4, 0x20, 0x19, 0xD8, 0x4D, 0xF6, 0xCD, - 0x1B, 0xF9, 0x19, 0x30, 0xFC, 0xA7, 0xAF, 0xD5, - 0x2E, 0x80, 0x70, 0x0F, 0x4C, 0xF5, 0xCD, 0xC3, - 0x8A, 0x5F, 0x7A, 0x57, 0x49, 0x79, 0x1C, 0x2F, - 0xDF, 0xFC, 0x4A, 0x10, 0x75, 0x3C, 0x24, 0xDB, - 0x19, 0xE8, 0xEB, 0x65, 0x1C, 0x5B, 0x36, 0x32, - 0x00, 0xF0, 0xB5, 0xD1, 0x69, 0x94, 0x70, 0x26, - 0xE9, 0xF7, 0x4F, 0x01, 0x2D, 0xC7, 0xC5, 0xB3, - 0x39, 0xDD, 0x49, 0xD2, 0x61, 0xCA, 0x1D, 0x37, - 0xF8, 0xF2, 0x83, 0x46, 0xE6, 0x19, 0x78, 0x05, - 0x4F, 0x45, 0xAE, 0xE4, 0x36, 0xDC, 0xCB, 0xE7, - 0xBF, 0xAF, 0xE0, 0x7C, 0xE9, 0xA8, 0xB8, 0x3C, - 0x90, 0xA2, 0x68, 0x6F, 0xA9, 0x54, 0x02, 0x85, - 0x09, 0x25, 0xC8, 0x58, 0x2B, 0xC9, 0xB7, 0x34, - 0xE4, 0xEC, 0xA1, 0xF7, 0xB2, 0x0B, 0x08, 0x6F, - 0x12, 0x9F, 0x27, 0x7A, 0x5C, 0xBD, 0xAA, 0x96, - 0x3C, 0x92, 0x71, 0x7E, 0xF7, 0x0E, 0xC1, 0x9B, - 0xF3, 0xDB, 0xC6, 0xDA, 0x20, 0x3A, 0xD9, 0x0F, - 0x3B, 0x13, 0xBB, 0xC2, 0x2F, 0xBD, 0x98, 0x0B, - 0xB1, 0xB9, 0xD3, 0xA3, 0x44, 0x52, 0xB3, 0x35, - 0x70, 0x21, 0xCE, 0x36, 0x13, 0x58, 0x4E, 0x09, - 0x36, 0xBF, 0x1D, 0x09, 0x42, 0x09, 0x37, 0x81, - 0x5E, 0x11, 0xCC, 0x5D, 0x5D, 0xDB, 0x4B, 0xF1, - 0xD8, 0x30, 0xC4, 0xF8, 0x3F, 0x30, 0xE5, 0x15, - 0x92, 0x1C, 0x78, 0x4D, 0x87, 0xBB, 0x20, 0xC0, - 0x9E, 0x3C, 0x64, 0xBD, 0xCE, 0x9A, 0xB1, 0xC6, - 0x9F, 0xD3, 0x07, 0xEF, 0xE3, 0x59, 0xC7, 0xF9, - 0x38, 0x56, 0x6C, 0x9F, 0x25, 0x17, 0xB0, 0x63, - 0x38, 0x51, 0x67, 0xE2, 0x47, 0xF3, 0x10, 0x81, - 0x11, 0x9B, 0xAC, 0x6B, 0x55, 0xA0, 0xBD, 0xD7, - 0x14, 0x25, 0x51, 0x0F, 0xFA, 0x2A, 0xBD, 0xFA, - 0x88, 0x83, 0x76, 0xA3, 0x7F, 0x20, 0xC2, 0x48, - 0x01, 0x52, 0xBB, 0x36, 0x16, 0x34, 0x52, 0x00, - 0x07, 0xC5, 0xB3, 0x4B, 0xF2, 0x28, 0x17, 0xCB, - 0x2E, 0x67, 0xAC, 0x1A, 0x82, 0x67, 0x0B, 0x71, - 0xF1, 0x96, 0xC8, 0x9F, 0x23, 0xBA, 0x31, 0x4B, - 0x16, 0xA9, 0x48, 0x49, 0x93, 0x04, 0xEF, 0x5C, - 0x03, 0xDC, 0xF5, 0x8E, 0x52, 0xBE, 0x31, 0x48, - 0x63, 0xE7, 0x23, 0xC5, 0x6D, 0x3A, 0xEB, 0x34, - 0x0B, 0xFF, 0x18, 0xAB, 0xFA, 0x20, 0xDC, 0x03, - 0x44, 0x20, 0x30, 0x23, 0x05, 0x33, 0xD9, 0x12, - 0x9B, 0x83, 0xED, 0x22, 0xC3, 0x51, 0xF2, 0x32, - 0x81, 0x72, 0xE3, 0x63, 0x44, 0x74, 0x44, 0xAE, - 0x5C, 0x69, 0x02, 0xB7, 0x92, 0x79, 0x9F, 0x54, - 0x44, 0x50, 0x78, 0x71, 0x19, 0x61, 0x2E, 0x9B, - 0xB4, 0x13, 0x0A, 0x33, 0xA2, 0xA5, 0x96, 0x2A, - 0xC0, 0x9D, 0x57, 0x7D, 0x6D, 0xDC, 0x88, 0x1F, - 0xE6, 0x61, 0x61, 0x26, 0xD8, 0xA0, 0xA7, 0xDF, - 0x2B, 0x22, 0x53, 0xBC, 0x8E, 0xC4, 0xE3, 0x53, - 0x86, 0xEA, 0x55, 0x11, 0xF0, 0xF1, 0x58, 0x87, - 0x14, 0x5B, 0x6C, 0x23, 0xAB, 0x3D, 0x40, 0x33, - 0x39, 0xE4, 0x04, 0x07, 0x3E, 0xD9, 0xC6, 0xA8, - 0x96, 0xA2, 0xF9, 0xEC, 0x70, 0xC4, 0x4B, 0xD2, - 0xAE, 0xC1, 0x0F, 0xC4, 0x36, 0x0E, 0x87, 0x63, - 0x6B, 0xE1, 0x55, 0xB6, 0xA6, 0x7B, 0x7E, 0xDF, - 0x38, 0xCF, 0x73, 0x00, 0x48, 0x13, 0xC9, 0xE7, - 0xD2, 0xC6, 0x54, 0xC2, 0x53, 0x0A, 0x71, 0xE5, - 0xF8, 0xC1, 0x09, 0x42, 0xFB, 0x6D, 0x88, 0x41, - 0x53, 0x5A, 0xB1, 0xDA, 0x43, 0xE8, 0xCB, 0x0B, - 0xB8, 0x9E, 0x78, 0xEC, 0x91, 0xF8, 0xDE, 0x15, - 0x31, 0xA0, 0x36, 0x65, 0xCC, 0xD5, 0xA7, 0x5B, - 0xDA, 0x0E, 0xD0, 0xE5, 0x98, 0x64, 0xEE, 0xEF, - 0x51, 0xA8, 0x3F, 0xA5, 0x53, 0xAF, 0x66, 0x2A, - 0xEE, 0x00, 0xD1, 0xF8, 0x36, 0x7B, 0x4D, 0x5D, - 0xDD, 0xC3, 0x45, 0x54, 0x4C, 0x6B, 0xD5, 0x14, - 0xF8, 0x88, 0xE6, 0x03, 0x3C, 0x25, 0x5D, 0xB6, - 0x50, 0xDA, 0x73, 0x4A, 0xD3, 0x3A, 0x3C, 0xF8, - 0x4B, 0xD3, 0xF0, 0x6F, 0xA1, 0xA7, 0xCA, 0x02, - 0xE4, 0xB8, 0xE9, 0x93, 0xAE, 0x7A, 0xE6, 0x34, - 0x20, 0xA4, 0x6B, 0xA8, 0xA3, 0x81, 0x3D, 0x1E, - 0x9D, 0x29, 0x66, 0xBB, 0x85, 0x60, 0xD7, 0x1C, - 0x62, 0xA0, 0x44, 0xEA, 0x94, 0x17, 0x9F, 0x4E, - 0xB1, 0xB6, 0xED, 0x60, 0x71, 0x9D, 0x51, 0xE0, - 0xEE, 0xF6, 0xCD, 0x07, 0x91, 0x52, 0xF6, 0xBE, - 0x48, 0x8E, 0xC9, 0x19, 0x11, 0xC6, 0xD3, 0xF1, - 0xD1, 0x17, 0x3C, 0x54, 0x1F, 0x9D, 0x25, 0xBF, - 0x34, 0x2F, 0xCA, 0xA3, 0xFF, 0x46, 0xC1, 0x8F, - 0x2A, 0x04, 0x41, 0xD8, 0x3B, 0xDE, 0x35, 0x46, - 0xA9, 0x82, 0x6C, 0x34, 0x96, 0xE0, 0x6F, 0x2F, - 0x2B, 0x0E, 0xEB, 0x9D, 0x5B, 0xE8, 0x73, 0x9F, - 0x83, 0xA4, 0x2D, 0x3B, 0x30, 0x0E, 0x70, 0xEE, - 0x84, 0xDF, 0xFF, 0xB2, 0x07, 0x64, 0xA0, 0x60, - 0x21, 0x2F, 0x05, 0x8C, 0x8A, 0x5F, 0xFA, 0x9A, - 0x34, 0xE9, 0x28, 0xD6, 0xA7, 0xE0, 0x77, 0x08, - 0xFE, 0x53, 0x93, 0xE3, 0x01, 0x7C, 0xE4, 0x70, - 0xEB, 0x96, 0x58, 0xA7, 0x4E, 0x49, 0x51, 0xE6, - 0xFA, 0x48, 0x54, 0xC9, 0xE9, 0xC2, 0x89, 0x88, - 0x81, 0x2E, 0x44, 0x18, 0xA2, 0xE8, 0x32, 0x58, - 0x0B, 0x4A, 0x27, 0x03, 0x72, 0xBC, 0x69, 0x67, - 0x68, 0x89, 0xD0, 0xCC, 0x43, 0x24, 0x0E, 0xDA, - 0xBC, 0x1D, 0x31, 0x14, 0xD8, 0xF3, 0x5A, 0xB2, - 0xE9, 0xEA, 0x95, 0x30, 0x82, 0xE9, 0x53, 0x62, - 0x79, 0xAC, 0xB3, 0xBE, 0x16, 0xD3, 0xA2, 0x05, - 0xF4, 0x6C, 0xB6, 0x7B, 0x22, 0x14, 0x96, 0x93, - 0x5A, 0xC0, 0x42, 0x92, 0xBB, 0xFB, 0x9A, 0x61, - 0xC0, 0xA0, 0x3E, 0xF4, 0xC9, 0xB6, 0x82, 0x04, - 0x95, 0xF3, 0xD8, 0x0E, 0x4A, 0x6F, 0xB7, 0xE1, - 0xC6, 0x99, 0x03, 0xFA, 0x22, 0x6E, 0x02, 0x3E, - 0x95, 0xBA, 0x41, 0x6D, 0xF2, 0xE5, 0xE4, 0x54, - 0x1E, 0x15, 0xDC, 0xC0, 0x00, 0xB5, 0xE6, 0x5C, - 0x97, 0x20, 0xDA, 0xF6, 0x96, 0x01, 0x2F, 0xA2, - 0xA6, 0xCF, 0x75, 0x8E, 0xD6, 0xD2, 0x25, 0xA3, - 0xE4, 0xFE, 0xE4, 0x5A, 0xC5, 0xFB, 0x48, 0x70, - 0x7F, 0xAE, 0x13, 0x3D, 0x59, 0x2C, 0xFD, 0x2E, - 0x8C, 0x43, 0xC2, 0x12, 0x6F, 0x65, 0x2B, 0xEE, - 0x9B, 0xAB, 0x43, 0xA1, 0xA1, 0x0B, 0xE2, 0x41, - 0x1A, 0x67, 0x94, 0xB2, 0x6C, 0xB5, 0x5C, 0xC2, - 0x17, 0xEB, 0x7B, 0x0B, 0x14, 0x6D, 0x23, 0xF7, - 0x92, 0x2D, 0x32, 0x22, 0xAE, 0x5E, 0xE8, 0xC6, - 0xD3, 0x8E, 0x83, 0x99, 0xBA, 0x51, 0xC6, 0x81, - 0xB8, 0x38, 0x16, 0xFC, 0xF7, 0x44, 0x38, 0x82, - 0x59, 0x20, 0xF9, 0xCE, 0x8A, 0x20, 0x2A, 0x8F, - 0x6D, 0x94, 0x2D, 0xA8, 0x62, 0x38, 0xFB, 0x4C, - 0x9F, 0x21, 0x98, 0xEA, 0x8D, 0xFF, 0x81, 0xC1, - 0x72, 0x86, 0xE0, 0x18, 0xDF, 0x4B, 0x7F, 0xE3, - 0x88, 0x4D, 0x17, 0x59, 0xE4, 0xC5, 0x9B, 0xB5, - 0x26, 0x17, 0xAE, 0xD4, 0xE7, 0x8E, 0x4E, 0x7C, - 0x4E, 0x9A, 0x36, 0xE4, 0xE9, 0x96, 0xD3, 0x23, - 0x91, 0xA3, 0x4A, 0x0D, 0xAA, 0xAB, 0x6B, 0x54, - 0x08, 0x15, 0xA3, 0x4D, 0x20, 0x40, 0x7A, 0xEF, - 0x81, 0x94, 0x9B, 0xE6, 0x7B, 0x90, 0x69, 0x50, - 0xD8, 0x9B, 0xE9, 0xF0, 0x85, 0xE9, 0x9E, 0xB5, - 0x87, 0x26, 0x95, 0x17, 0x3B, 0x3E, 0xFA, 0xCA, - 0xE9, 0x45, 0x5D, 0x2B, 0x2C, 0xD4, 0xF7, 0x10, - 0xB8, 0x72, 0xCF, 0x66, 0x2B, 0x73, 0x62, 0x16, - 0xB1, 0xBB, 0xFB, 0x1F, 0x5F, 0x3D, 0x48, 0x6C, - 0x7B, 0x4B, 0x87, 0x56, 0x12, 0x33, 0x3F, 0x8E, - 0x4B, 0xA9, 0x33, 0xDC, 0x79, 0xF0, 0xED, 0xFD, - 0x7B, 0xAA, 0xDE, 0x2C, 0x16, 0xF2, 0x14, 0x6A, - 0x49, 0x6F, 0x79, 0xC4, 0x2A, 0x4D, 0x6B, 0x52, - 0x39, 0xA3, 0x0D, 0xD3, 0xC4, 0x8B, 0xEB, 0x09, - 0x2C, 0xA0, 0x75, 0x00, 0x10, 0xF6, 0x9E, 0xD4, - 0xB9, 0x23, 0x20, 0x14, 0x7D, 0xBB, 0xE2, 0x08, - 0xF6, 0xE8, 0xEB, 0x1C, 0xF2, 0x47, 0xD2, 0x1A, - 0x3A, 0x3B, 0x01, 0xDF, 0x58, 0xC0, 0xAA, 0x62, - 0x94, 0x4D, 0xA0, 0xEF, 0x04, 0x50, 0xE8, 0xCE, - 0x48, 0xAA, 0x13, 0x7E, 0x7E, 0x15, 0x16, 0xC1, - 0xD5, 0xC8, 0x6E, 0xEA, 0x17, 0xFD, 0xFA, 0xC1, - 0x69, 0x07, 0x46, 0xE7, 0x26, 0x70, 0x45, 0xA3, - 0xE9, 0x05, 0x96, 0xBD, 0xB7, 0x5D, 0x50, 0xB6, - 0xDD, 0x5C, 0x34, 0xE5, 0xC8, 0xD8, 0x9D, 0xC6, - 0xF2, 0xF1, 0xD2, 0x44, 0x40, 0xE5, 0x7B, 0x47, - 0x59, 0xB8, 0x62, 0x5F, 0x72, 0xBC, 0x4A, 0x7B, - 0x10, 0xD5, 0x19, 0xD3, 0x31, 0xF9, 0xC4, 0x00, - 0xAA, 0xE1, 0xE5, 0x0D, 0x48, 0x0C, 0xAA, 0xE5, - 0xA1, 0xC0, 0xFA, 0x99, 0xD7, 0x79, 0x24, 0xCF, - 0x8D, 0xFE, 0x56, 0xCD, 0x70, 0x92, 0xE7, 0xB9 - }; -#endif /* !WOLFSSL_NO_ML_DSA_44 */ -#ifndef WOLFSSL_NO_ML_DSA_65 - static const byte seed_65[] = { - 0x70, 0xCE, 0xFB, 0x9A, 0xED, 0x5B, 0x68, 0xE0, - 0x18, 0xB0, 0x79, 0xDA, 0x82, 0x84, 0xB9, 0xD5, - 0xCA, 0xD5, 0x49, 0x9E, 0xD9, 0xC2, 0x65, 0xFF, - 0x73, 0x58, 0x80, 0x05, 0xD8, 0x5C, 0x22, 0x5C - }; - static const byte pk_65[] = { - 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, - 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, - 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, - 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, - 0xBB, 0x11, 0x19, 0x23, 0xF1, 0x94, 0xA7, 0xCC, - 0x8A, 0x7B, 0xB2, 0xEB, 0xC5, 0xC0, 0xE7, 0x1A, - 0xA6, 0x37, 0xCC, 0x80, 0x0E, 0x61, 0x03, 0xB8, - 0x50, 0xA5, 0x39, 0xB2, 0xA3, 0x9E, 0x1B, 0x6D, - 0x71, 0x3E, 0x5D, 0xB8, 0x31, 0x4C, 0x9A, 0xE1, - 0xF8, 0xBF, 0x8A, 0x38, 0xF0, 0x6A, 0xFB, 0x9D, - 0x73, 0xB1, 0x61, 0xB0, 0xFF, 0xE3, 0xA4, 0x89, - 0x17, 0x06, 0xAE, 0x26, 0xD5, 0x4F, 0xFB, 0x49, - 0x6D, 0xF8, 0xDC, 0x0F, 0x19, 0x83, 0x50, 0x95, - 0x00, 0xC9, 0xAB, 0xBD, 0x28, 0xE5, 0x9B, 0x3F, - 0xCD, 0xAB, 0xBD, 0xAD, 0xAB, 0xD4, 0x5E, 0xC3, - 0x14, 0x99, 0x37, 0x8B, 0xDE, 0x84, 0x9E, 0x7C, - 0x1F, 0x19, 0xB7, 0x04, 0x4D, 0x67, 0xE0, 0x51, - 0x06, 0xD7, 0x13, 0x6D, 0x95, 0x38, 0x0D, 0x56, - 0x05, 0xD4, 0x46, 0x5D, 0x87, 0x75, 0x57, 0x06, - 0x5D, 0xF0, 0xA7, 0x5D, 0x3C, 0x28, 0x54, 0x2F, - 0x40, 0xFE, 0xED, 0x42, 0xEC, 0x7E, 0x28, 0x06, - 0x37, 0xB0, 0x83, 0xD9, 0x88, 0xBC, 0xA5, 0xF6, - 0x39, 0x4E, 0x02, 0x39, 0x6C, 0x46, 0x76, 0x18, - 0x4F, 0xB6, 0x33, 0x18, 0xDA, 0xFA, 0xF5, 0xBB, - 0xDD, 0xE0, 0x0E, 0x30, 0x8F, 0xE8, 0x40, 0x19, - 0xC2, 0x34, 0x0A, 0x3F, 0x3E, 0x1C, 0x08, 0x65, - 0x62, 0x49, 0x70, 0x71, 0x12, 0x83, 0x35, 0x6A, - 0xE1, 0x4B, 0xD6, 0xB9, 0x4D, 0x1C, 0x9A, 0xE1, - 0x88, 0xDE, 0x1A, 0x8A, 0x2C, 0xA8, 0x24, 0xA8, - 0xEA, 0xE2, 0xFE, 0x6A, 0xFB, 0x38, 0xD8, 0x3A, - 0x2D, 0x99, 0x99, 0x6A, 0xB2, 0x1F, 0xE3, 0xE8, - 0x4C, 0x0B, 0xE6, 0xB6, 0xDA, 0x08, 0x87, 0x9B, - 0x67, 0x73, 0x74, 0xFA, 0x7C, 0x69, 0x1B, 0x13, - 0xD4, 0x0F, 0xA9, 0xD4, 0xCC, 0x26, 0xB2, 0x28, - 0x8D, 0x5A, 0x8C, 0x9A, 0x43, 0x72, 0x43, 0x81, - 0x00, 0x4D, 0x61, 0xB0, 0xD5, 0x7F, 0xF4, 0x00, - 0x31, 0x4C, 0x8E, 0x30, 0xEE, 0x79, 0x6A, 0xF1, - 0x0F, 0x7E, 0xE2, 0x1B, 0xF1, 0x3D, 0x08, 0x18, - 0x04, 0x65, 0xAB, 0xC7, 0x2E, 0xDD, 0xB0, 0x80, - 0xC6, 0xA0, 0x71, 0x84, 0xE3, 0xEE, 0xDC, 0x47, - 0xC1, 0x9A, 0xA7, 0xF0, 0x9D, 0x1F, 0x33, 0x09, - 0xE1, 0x83, 0xA2, 0xBD, 0x9B, 0x05, 0x73, 0xDD, - 0xE4, 0x74, 0xA8, 0x1B, 0xA4, 0xF7, 0x8D, 0x0C, - 0x52, 0x3D, 0x0C, 0x04, 0xF9, 0x00, 0x60, 0xFD, - 0x57, 0x1A, 0x35, 0xC0, 0x37, 0xE0, 0x79, 0xC5, - 0xE2, 0x10, 0xD7, 0x39, 0x0D, 0xF5, 0x68, 0xF2, - 0xE2, 0xF0, 0x3C, 0xE4, 0x44, 0x20, 0xC8, 0x2F, - 0x3F, 0xE6, 0x9E, 0xB9, 0xB4, 0x8E, 0xE9, 0x09, - 0x62, 0xD6, 0xB0, 0xF2, 0x44, 0x40, 0x64, 0x8F, - 0x71, 0xED, 0xB2, 0x41, 0xEE, 0x65, 0x66, 0xFC, - 0x1A, 0x64, 0xCA, 0xBF, 0x66, 0xBE, 0x6F, 0xEC, - 0xBC, 0xB1, 0x38, 0x7C, 0x82, 0xA7, 0xBC, 0x20, - 0x2D, 0x9E, 0x36, 0x79, 0x98, 0xE2, 0xA2, 0x91, - 0xAF, 0x0C, 0xD1, 0x57, 0x06, 0x77, 0xFE, 0x8D, - 0x63, 0xA3, 0x28, 0x5A, 0x2E, 0xA6, 0xEB, 0x29, - 0xAF, 0x9D, 0xC1, 0xAE, 0xC1, 0xC3, 0x6C, 0x47, - 0x06, 0xB1, 0x2B, 0xAA, 0x20, 0x83, 0x96, 0x92, - 0xF2, 0x86, 0xA6, 0xE0, 0x32, 0x14, 0x68, 0xF7, - 0x47, 0x93, 0x45, 0xC4, 0xD5, 0x2F, 0xBD, 0xB2, - 0xF0, 0x67, 0x25, 0xB5, 0x54, 0xB8, 0x9E, 0x24, - 0x92, 0x61, 0x26, 0x81, 0xAC, 0xEB, 0xC6, 0xC7, - 0xBA, 0xDA, 0x92, 0x25, 0x81, 0x8D, 0xBC, 0x35, - 0xD6, 0x4C, 0x22, 0xC4, 0x8B, 0xFF, 0x80, 0xA7, - 0x30, 0xD0, 0x71, 0x6D, 0xFA, 0xC9, 0x9D, 0xFD, - 0x5B, 0x89, 0x92, 0x61, 0x1D, 0x0C, 0x93, 0xEE, - 0x90, 0xBD, 0xB2, 0x60, 0x02, 0x2A, 0xFE, 0x25, - 0xD9, 0x13, 0xE0, 0x6E, 0xFF, 0xB5, 0x9C, 0xB1, - 0xF8, 0xA6, 0x0C, 0xBF, 0xA5, 0xAB, 0x2F, 0x45, - 0x9A, 0x16, 0xF4, 0x67, 0xE9, 0x89, 0x52, 0x5E, - 0x0A, 0x37, 0xEB, 0xE5, 0x6E, 0x83, 0x3F, 0xDE, - 0x55, 0xDB, 0x9D, 0x15, 0x30, 0xAD, 0xCF, 0x45, - 0x84, 0x6D, 0xF2, 0x81, 0xE4, 0x7C, 0xAA, 0x1E, - 0x0A, 0x27, 0xEF, 0xDE, 0x21, 0x07, 0xD3, 0x54, - 0xCE, 0xA0, 0xF6, 0xA4, 0x54, 0x69, 0x2F, 0x04, - 0xCD, 0x83, 0x8E, 0xBD, 0xD4, 0x6E, 0x19, 0x1E, - 0x5D, 0x9C, 0x11, 0x83, 0x9A, 0x2C, 0x3F, 0x48, - 0x8A, 0x4F, 0xC7, 0xCD, 0x26, 0x5A, 0x7B, 0x5D, - 0x32, 0xB0, 0x8C, 0xBD, 0xBF, 0xAB, 0x9D, 0x2C, - 0xCD, 0x76, 0x22, 0x2C, 0x8E, 0xE3, 0x7D, 0xDC, - 0xBD, 0x2A, 0xA0, 0x63, 0xED, 0x86, 0x14, 0x73, - 0xA6, 0x45, 0x4C, 0xAE, 0xA3, 0x77, 0x85, 0x0B, - 0x1A, 0x2B, 0x9D, 0xDB, 0xBC, 0xB3, 0x74, 0xFA, - 0xB5, 0xB1, 0x2F, 0x35, 0x1C, 0x8E, 0x58, 0x88, - 0x87, 0x2E, 0x5C, 0xD1, 0xF6, 0x0A, 0x4F, 0xAE, - 0x1F, 0xF8, 0x37, 0xD1, 0x92, 0xC2, 0x2B, 0xEB, - 0x41, 0xEE, 0x6F, 0xA3, 0x92, 0xFC, 0xDF, 0x45, - 0x50, 0xFF, 0x46, 0xB5, 0xCE, 0x90, 0x6D, 0x01, - 0x7E, 0xF3, 0x07, 0x7D, 0xF1, 0x32, 0x30, 0x0D, - 0x8B, 0xBF, 0xA9, 0xBB, 0x03, 0xC7, 0x5E, 0x79, - 0xE2, 0xF0, 0x4C, 0x28, 0x4A, 0xD0, 0x6A, 0x44, - 0x39, 0x96, 0x49, 0xC3, 0xE2, 0xA2, 0xA8, 0xD1, - 0xEF, 0xE9, 0xB7, 0xA4, 0xE0, 0xC2, 0x71, 0x04, - 0x7A, 0xB7, 0x59, 0x08, 0xBF, 0xF7, 0xDF, 0x9E, - 0x30, 0xEC, 0xA5, 0x47, 0x74, 0x5B, 0xAE, 0x23, - 0xA8, 0x6F, 0xF9, 0xA8, 0xB5, 0x8C, 0x25, 0x38, - 0xB8, 0x8B, 0x86, 0x64, 0x01, 0x07, 0x69, 0x02, - 0xDC, 0x5F, 0x0B, 0xD7, 0x61, 0x68, 0x7B, 0x49, - 0xEA, 0xFE, 0x36, 0xD3, 0x50, 0xCB, 0xED, 0xFD, - 0xD3, 0x6C, 0x12, 0x1C, 0xF2, 0x37, 0x86, 0xBF, - 0xCF, 0x7E, 0x47, 0x07, 0x64, 0x96, 0xEA, 0xB6, - 0xBB, 0xDA, 0x77, 0x40, 0x49, 0xC2, 0xEB, 0xAB, - 0xE2, 0xDE, 0x99, 0xC4, 0xC2, 0x4F, 0x2D, 0xB7, - 0x36, 0x84, 0x01, 0x5B, 0x37, 0x39, 0x77, 0x49, - 0x67, 0x60, 0xCF, 0x9A, 0xC2, 0x3D, 0x8B, 0x62, - 0x31, 0x33, 0xDB, 0x2D, 0xE1, 0x0D, 0x73, 0xFA, - 0x6A, 0xD1, 0xC6, 0xDA, 0xC8, 0x43, 0x4F, 0x28, - 0xC6, 0xE2, 0x51, 0xCE, 0x72, 0x93, 0xCF, 0xF3, - 0xF3, 0xB6, 0x1E, 0xFC, 0xB5, 0xA4, 0x35, 0x12, - 0x36, 0x70, 0xF2, 0x98, 0x46, 0xA1, 0x3D, 0xF3, - 0xEE, 0x71, 0x26, 0x04, 0x46, 0x1F, 0x1B, 0xAB, - 0x8F, 0x4E, 0xBC, 0x83, 0x6D, 0xE0, 0x58, 0x97, - 0x8A, 0xE7, 0x34, 0x39, 0x6A, 0x98, 0x08, 0x1B, - 0x35, 0xCC, 0x98, 0x18, 0x8A, 0x86, 0x94, 0x9C, - 0x99, 0x27, 0x0D, 0x47, 0x09, 0x85, 0x4C, 0x5B, - 0x35, 0xB1, 0x7F, 0x48, 0xA3, 0x73, 0x13, 0x4C, - 0x81, 0x4C, 0xC8, 0xA0, 0xF3, 0xE2, 0xFA, 0x80, - 0x7F, 0x2A, 0x91, 0x85, 0x30, 0x90, 0x78, 0x64, - 0x77, 0x82, 0x82, 0xD7, 0x5E, 0x03, 0xA4, 0x1B, - 0x25, 0x04, 0xEE, 0xD8, 0x16, 0xA4, 0x17, 0xA3, - 0xAC, 0x6B, 0xA1, 0x60, 0x80, 0xC3, 0x9B, 0x73, - 0x10, 0x19, 0x20, 0x02, 0xA7, 0x28, 0xF7, 0xF2, - 0x03, 0x95, 0x00, 0x9A, 0x9E, 0x16, 0x76, 0x7C, - 0xE1, 0x97, 0x1F, 0x5D, 0xE7, 0xD2, 0x29, 0xA5, - 0x06, 0x13, 0x36, 0x9E, 0x43, 0x82, 0x04, 0x5A, - 0x8E, 0x81, 0x90, 0x1F, 0x4D, 0xBA, 0x81, 0x02, - 0xF3, 0xD4, 0x13, 0xFE, 0x35, 0xB3, 0x26, 0xA8, - 0x74, 0xF2, 0x33, 0xB7, 0x19, 0xA7, 0x13, 0x76, - 0x00, 0xD3, 0x5D, 0x33, 0xAE, 0xB6, 0xB7, 0x25, - 0x96, 0x24, 0x08, 0x3A, 0xA9, 0x68, 0x73, 0x0C, - 0x8F, 0x78, 0x29, 0x2A, 0xD2, 0x8F, 0x14, 0xEE, - 0xAB, 0xE6, 0x60, 0x83, 0x59, 0x84, 0xFE, 0x69, - 0xEF, 0x23, 0xDE, 0xC8, 0xC3, 0x27, 0xC0, 0xEB, - 0x0B, 0x88, 0x2D, 0x58, 0x7E, 0x1E, 0xC4, 0x33, - 0xDA, 0x85, 0xC9, 0xFD, 0x1E, 0x0A, 0x34, 0x99, - 0x4D, 0xEA, 0x24, 0x0C, 0x85, 0x44, 0x52, 0xD1, - 0x8C, 0x30, 0xF4, 0x96, 0xE4, 0x9E, 0xC9, 0x04, - 0xB6, 0x02, 0xE0, 0xF5, 0x06, 0x2E, 0xDC, 0xDA, - 0x03, 0x28, 0x0A, 0x53, 0xB4, 0x31, 0x35, 0x74, - 0xCC, 0x2C, 0x0D, 0x54, 0x71, 0xBC, 0x96, 0x13, - 0xBD, 0xFD, 0x66, 0x41, 0xF5, 0xBD, 0x12, 0x7B, - 0xAB, 0x5B, 0x5E, 0xB3, 0xD4, 0x99, 0xA3, 0x31, - 0x14, 0x04, 0x82, 0x20, 0xE8, 0x19, 0xF8, 0xEE, - 0x12, 0xCA, 0x92, 0x2C, 0x8F, 0x17, 0xD9, 0xC9, - 0xF5, 0x1A, 0xD5, 0xBD, 0x68, 0x83, 0xB1, 0x0E, - 0x6A, 0xA2, 0x48, 0x3B, 0xA4, 0x9D, 0xC5, 0x47, - 0xDA, 0x76, 0x86, 0x15, 0x13, 0x44, 0xF4, 0xE9, - 0x09, 0x9B, 0x38, 0xE4, 0x30, 0xB5, 0x22, 0x6B, - 0x05, 0x98, 0x32, 0xCF, 0x03, 0xDB, 0x48, 0xFB, - 0x02, 0xDB, 0xA4, 0xE6, 0x15, 0x93, 0xDC, 0x45, - 0x76, 0x36, 0x04, 0x91, 0x89, 0x0E, 0x53, 0xEC, - 0x0E, 0x6A, 0xC7, 0x3C, 0xF3, 0x2B, 0x25, 0xD8, - 0x23, 0xB3, 0x84, 0x56, 0xE2, 0x86, 0x50, 0x5A, - 0x54, 0x1E, 0x5A, 0xEE, 0xE9, 0x6B, 0x19, 0x14, - 0xF5, 0xF7, 0x66, 0x87, 0xCE, 0x2B, 0x01, 0x60, - 0x22, 0x7A, 0xBE, 0xD7, 0x79, 0x93, 0x59, 0x4B, - 0xCD, 0x83, 0x13, 0x66, 0x20, 0x6D, 0x75, 0x71, - 0x40, 0x82, 0xF1, 0xC4, 0x6F, 0x1F, 0x44, 0x39, - 0xAC, 0x81, 0xA5, 0x7A, 0xF3, 0x1C, 0x81, 0xC5, - 0x55, 0x30, 0x7A, 0x07, 0x0F, 0xFA, 0x94, 0xE0, - 0x47, 0x9B, 0x78, 0x4B, 0xBD, 0x88, 0xA6, 0x0C, - 0xD4, 0xC7, 0xCF, 0xD9, 0x4E, 0x6A, 0xFE, 0x02, - 0xF6, 0xB2, 0x1F, 0x72, 0xAF, 0x0D, 0xCD, 0x66, - 0x09, 0xD4, 0x0C, 0x96, 0x5C, 0x14, 0xE5, 0xF2, - 0x38, 0x91, 0x83, 0xE5, 0x3D, 0xE9, 0x30, 0xF7, - 0xDE, 0x1D, 0x44, 0x21, 0x5C, 0xF4, 0x91, 0x44, - 0x84, 0x4E, 0x8B, 0x87, 0xF7, 0x8A, 0x7F, 0x13, - 0x2A, 0xEF, 0xE2, 0x2B, 0xE8, 0x0B, 0x4E, 0x3A, - 0x05, 0xEE, 0x3A, 0x68, 0xCC, 0xF6, 0x09, 0xEF, - 0x44, 0x04, 0x74, 0x02, 0xE4, 0x49, 0x30, 0x46, - 0xE6, 0xF9, 0xC7, 0x67, 0xFF, 0x8A, 0x75, 0xE2, - 0x8B, 0x3C, 0xE0, 0x77, 0xFD, 0xE7, 0xE7, 0xEE, - 0xD3, 0x13, 0xB5, 0xBF, 0x7E, 0x46, 0x01, 0x27, - 0xCA, 0x81, 0x82, 0xE9, 0xBC, 0x79, 0x4C, 0x0D, - 0xFA, 0x73, 0x0F, 0xB9, 0x20, 0x08, 0x05, 0x75, - 0xA7, 0x51, 0xB5, 0xCA, 0xEC, 0x85, 0xA1, 0x09, - 0xB4, 0x42, 0x2B, 0xA2, 0x66, 0x74, 0x3F, 0x0D, - 0x03, 0x2B, 0xDA, 0x8F, 0x1C, 0xA6, 0x24, 0x8C, - 0xDB, 0x91, 0x75, 0x30, 0xDF, 0x13, 0x02, 0xA5, - 0xF8, 0xC1, 0x8D, 0xC6, 0x42, 0xD5, 0x24, 0x78, - 0xC9, 0x8C, 0x12, 0xA3, 0xF1, 0x6E, 0xF2, 0xB6, - 0x2B, 0x4F, 0x59, 0xEA, 0x1B, 0xB5, 0x8D, 0xE7, - 0xB6, 0x5B, 0x3C, 0x71, 0x53, 0xCE, 0x6D, 0xA5, - 0xE4, 0x95, 0x07, 0x46, 0xF8, 0x0E, 0x08, 0x7A, - 0x0E, 0x35, 0x86, 0xD0, 0x97, 0x79, 0x1B, 0xF3, - 0x6D, 0xEF, 0x86, 0x5D, 0x68, 0x59, 0x1D, 0x39, - 0xD0, 0x90, 0x37, 0x73, 0xEE, 0xA9, 0x62, 0x14, - 0x7F, 0x34, 0x70, 0x41, 0x38, 0xB5, 0x4D, 0xF7, - 0x92, 0x4C, 0xDD, 0x8C, 0x33, 0x3D, 0xB5, 0xE1, - 0xA4, 0x09, 0xCC, 0xB2, 0xB3, 0x4E, 0x2C, 0x3C, - 0x8C, 0x7F, 0xDD, 0x3F, 0xD8, 0xD0, 0x12, 0xCB, - 0xF3, 0x82, 0xAA, 0xA8, 0x5E, 0x83, 0xA1, 0x2F, - 0x23, 0x5A, 0x2D, 0x14, 0x7D, 0x03, 0x5B, 0x7B, - 0x28, 0xB3, 0x4B, 0x6F, 0x57, 0x94, 0x9F, 0x32, - 0x24, 0x82, 0xA7, 0xD4, 0xD3, 0xB1, 0x50, 0x45, - 0xC4, 0x20, 0xD5, 0xAD, 0xDC, 0x7F, 0x0E, 0x69, - 0xB4, 0xDC, 0x1C, 0xBA, 0x58, 0xB0, 0x1D, 0x87, - 0x24, 0x80, 0xB0, 0x6A, 0x26, 0x0D, 0x82, 0x7D, - 0x89, 0x1B, 0x13, 0xC4, 0xC5, 0xCA, 0x50, 0xC7, - 0x48, 0xDE, 0x3C, 0x77, 0x1B, 0xE6, 0x1E, 0x9A, - 0xA1, 0x70, 0x16, 0x5C, 0xB0, 0x1F, 0x4B, 0xF5, - 0xDA, 0x27, 0xA7, 0x79, 0x1D, 0x3A, 0xD3, 0xF6, - 0x26, 0x7B, 0x4C, 0xB4, 0xE6, 0x1B, 0x28, 0xFA, - 0x17, 0x08, 0x41, 0x8D, 0x93, 0x2D, 0xFC, 0x41, - 0x61, 0x88, 0x0C, 0x5D, 0x3B, 0x17, 0xA9, 0x66, - 0x3A, 0x90, 0x61, 0xFA, 0x8F, 0x18, 0x04, 0x31, - 0x58, 0x50, 0xFE, 0x4E, 0x73, 0x06, 0xC8, 0x82, - 0xB3, 0x82, 0x27, 0xE8, 0x67, 0xF8, 0x08, 0x72, - 0xCD, 0xC1, 0x94, 0x4D, 0x47, 0x26, 0x15, 0xEA, - 0x49, 0x00, 0xEF, 0x7D, 0x27, 0x0B, 0x88, 0x1D, - 0x41, 0x30, 0xF5, 0x6C, 0x5C, 0xC9, 0x80, 0xD9, - 0x2A, 0x47, 0xAD, 0xA6, 0x65, 0x7E, 0xB6, 0xF3, - 0x7A, 0x38, 0x5D, 0x2D, 0x8C, 0xC9, 0x93, 0xE1, - 0x44, 0x2E, 0xB0, 0x52, 0x81, 0x85, 0x36, 0x36, - 0x99, 0x1E, 0x34, 0xAA, 0xDC, 0x68, 0x95, 0x4D, - 0x04, 0xE7, 0xAD, 0xEF, 0x76, 0xBF, 0x88, 0x0F, - 0x05, 0x9B, 0x0C, 0xBB, 0x55, 0xD9, 0x15, 0xA4, - 0xB1, 0x23, 0xE2, 0xF1, 0x33, 0x9A, 0x07, 0x3C, - 0xBF, 0xBC, 0x40, 0x9B, 0xEF, 0xF6, 0x40, 0x0A, - 0xE0, 0x96, 0xD5, 0xAE, 0x18, 0xEC, 0x42, 0xCF, - 0xFA, 0xD5, 0xB4, 0x98, 0x0F, 0xA3, 0x5B, 0xF0, - 0x34, 0x13, 0xAD, 0xB5, 0xD7, 0xE6, 0x87, 0x6A, - 0xC3, 0x55, 0xD1, 0xC9, 0xED, 0x70, 0xCA, 0x2B, - 0x97, 0x39, 0x54, 0xD1, 0x2B, 0x3C, 0xDD, 0x76, - 0xAC, 0x68, 0x35, 0xDB, 0x96, 0x00, 0x3E, 0xD8, - 0xC4, 0xE2, 0x88, 0xB7, 0x1F, 0xD7, 0x7D, 0xBA, - 0xA7, 0x63, 0x57, 0x20, 0xE1, 0x2A, 0xE0, 0xA3, - 0x17, 0xDE, 0x80, 0x8C, 0x66, 0x4E, 0x31, 0x7F, - 0x55, 0x27, 0x57, 0x91, 0xF3, 0x24, 0x5C, 0xA4, - 0xFE, 0x5D, 0x4D, 0x41, 0x07, 0x7F, 0xC1, 0x50, - 0xA6, 0xE4, 0x03, 0xD5, 0xA2, 0x08, 0xE4, 0x6E, - 0xAD, 0xBE, 0x8F, 0x2C, 0xFB, 0x8A, 0xF4, 0x72, - 0xF4, 0xA0, 0xCE, 0xAC, 0x01, 0x52, 0x19, 0x47, - 0x8E, 0x6B, 0x86, 0xC9, 0x58, 0xCF, 0x86, 0x52, - 0x5B, 0x74, 0x85, 0xC1, 0x73, 0x4C, 0x7E, 0xF0, - 0x0E, 0x90, 0x68, 0x3F, 0xFF, 0x5D, 0xBD, 0x0A, - 0x7D, 0x41, 0x3A, 0x85, 0x50, 0x21, 0x02, 0x6A, - 0x1B, 0x32, 0x01, 0x3A, 0x46, 0x16, 0xCB, 0xCD, - 0x37, 0x00, 0xAC, 0xBC, 0x70, 0x5B, 0xE3, 0xEF, - 0xBA, 0x62, 0x5C, 0x69, 0xA0, 0x25, 0x26, 0x7B, - 0xCE, 0x9D, 0x13, 0x5E, 0x3F, 0x5B, 0x5C, 0xC8, - 0xC4, 0x39, 0x56, 0x40, 0x7E, 0x84, 0xB6, 0x66, - 0x31, 0x03, 0xE2, 0x9C, 0x24, 0x20, 0x35, 0x55, - 0x1A, 0xE7, 0x97, 0xF5, 0x6C, 0x63, 0x74, 0xBE, - 0x0C, 0x79, 0x8C, 0x0C, 0xF3, 0x98, 0xF1, 0xED - }; - static const byte sk_65[] = { - 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, - 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, - 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, - 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, - 0xE3, 0x8D, 0x1C, 0x14, 0xF6, 0x46, 0x7C, 0x35, - 0xA9, 0xF3, 0x80, 0xD2, 0x7D, 0xE6, 0x1F, 0x7C, - 0x75, 0x03, 0x15, 0x69, 0xEA, 0x2E, 0xC8, 0x26, - 0x0E, 0xEE, 0x91, 0x05, 0x26, 0x1B, 0x7F, 0xE1, - 0x60, 0xC9, 0x13, 0x44, 0xB0, 0xC6, 0x76, 0x4C, - 0x20, 0x4E, 0x5B, 0x8D, 0x42, 0x46, 0x50, 0xBE, - 0xC0, 0x6B, 0x9E, 0x2E, 0x62, 0x5A, 0xF0, 0x7E, - 0x23, 0xF4, 0x95, 0x0C, 0xA2, 0x4F, 0xB4, 0xD6, - 0xEC, 0x2C, 0x8B, 0x3A, 0x71, 0x7C, 0x93, 0x11, - 0xEB, 0x87, 0x27, 0x9F, 0xE2, 0x5E, 0x31, 0x1F, - 0x48, 0xB8, 0x25, 0x65, 0x01, 0xF6, 0x46, 0x34, - 0x12, 0xB5, 0x0D, 0xBC, 0x89, 0xA8, 0x69, 0xBA, - 0x22, 0x41, 0x11, 0x26, 0x48, 0x40, 0x07, 0x38, - 0x73, 0x02, 0x12, 0x44, 0x25, 0x44, 0x57, 0x54, - 0x83, 0x72, 0x50, 0x33, 0x35, 0x62, 0x58, 0x42, - 0x32, 0x01, 0x62, 0x11, 0x83, 0x61, 0x02, 0x45, - 0x66, 0x56, 0x48, 0x35, 0x61, 0x20, 0x84, 0x52, - 0x60, 0x68, 0x50, 0x45, 0x65, 0x55, 0x12, 0x72, - 0x47, 0x47, 0x21, 0x21, 0x25, 0x40, 0x22, 0x21, - 0x42, 0x81, 0x17, 0x65, 0x03, 0x06, 0x42, 0x61, - 0x52, 0x13, 0x43, 0x25, 0x24, 0x33, 0x82, 0x12, - 0x11, 0x35, 0x62, 0x33, 0x32, 0x07, 0x47, 0x86, - 0x22, 0x31, 0x50, 0x83, 0x70, 0x84, 0x26, 0x43, - 0x45, 0x64, 0x51, 0x48, 0x31, 0x14, 0x86, 0x24, - 0x66, 0x86, 0x74, 0x33, 0x71, 0x36, 0x67, 0x26, - 0x01, 0x47, 0x07, 0x72, 0x11, 0x61, 0x58, 0x85, - 0x58, 0x38, 0x71, 0x83, 0x80, 0x67, 0x01, 0x65, - 0x78, 0x70, 0x64, 0x77, 0x85, 0x60, 0x02, 0x88, - 0x53, 0x48, 0x46, 0x62, 0x25, 0x83, 0x54, 0x88, - 0x04, 0x74, 0x40, 0x12, 0x57, 0x43, 0x71, 0x07, - 0x75, 0x44, 0x38, 0x71, 0x21, 0x14, 0x22, 0x08, - 0x88, 0x72, 0x23, 0x58, 0x87, 0x46, 0x14, 0x85, - 0x53, 0x71, 0x67, 0x73, 0x82, 0x28, 0x22, 0x74, - 0x14, 0x03, 0x57, 0x73, 0x28, 0x71, 0x83, 0x80, - 0x78, 0x14, 0x34, 0x87, 0x52, 0x07, 0x64, 0x74, - 0x01, 0x60, 0x75, 0x61, 0x06, 0x08, 0x61, 0x32, - 0x21, 0x46, 0x15, 0x65, 0x42, 0x67, 0x08, 0x20, - 0x84, 0x10, 0x73, 0x13, 0x03, 0x61, 0x02, 0x86, - 0x50, 0x45, 0x26, 0x12, 0x16, 0x68, 0x33, 0x55, - 0x25, 0x84, 0x73, 0x53, 0x54, 0x52, 0x65, 0x17, - 0x10, 0x60, 0x00, 0x38, 0x57, 0x77, 0x81, 0x24, - 0x26, 0x80, 0x41, 0x46, 0x43, 0x26, 0x67, 0x41, - 0x06, 0x03, 0x55, 0x41, 0x28, 0x33, 0x37, 0x25, - 0x23, 0x06, 0x77, 0x82, 0x15, 0x16, 0x31, 0x73, - 0x00, 0x08, 0x75, 0x26, 0x58, 0x46, 0x34, 0x63, - 0x88, 0x08, 0x84, 0x64, 0x51, 0x11, 0x24, 0x05, - 0x32, 0x10, 0x11, 0x18, 0x18, 0x64, 0x78, 0x22, - 0x41, 0x00, 0x38, 0x55, 0x75, 0x42, 0x10, 0x46, - 0x83, 0x43, 0x73, 0x38, 0x80, 0x07, 0x83, 0x43, - 0x78, 0x74, 0x13, 0x57, 0x62, 0x32, 0x68, 0x80, - 0x65, 0x86, 0x48, 0x53, 0x48, 0x35, 0x51, 0x58, - 0x50, 0x74, 0x46, 0x05, 0x88, 0x70, 0x07, 0x72, - 0x01, 0x31, 0x00, 0x87, 0x54, 0x88, 0x14, 0x20, - 0x84, 0x16, 0x61, 0x15, 0x60, 0x56, 0x85, 0x11, - 0x58, 0x08, 0x05, 0x88, 0x63, 0x01, 0x82, 0x86, - 0x13, 0x14, 0x17, 0x22, 0x01, 0x68, 0x17, 0x17, - 0x86, 0x58, 0x53, 0x10, 0x62, 0x28, 0x52, 0x82, - 0x26, 0x15, 0x04, 0x31, 0x42, 0x88, 0x54, 0x31, - 0x78, 0x05, 0x80, 0x11, 0x50, 0x45, 0x68, 0x82, - 0x33, 0x66, 0x36, 0x36, 0x40, 0x65, 0x15, 0x24, - 0x47, 0x67, 0x06, 0x45, 0x36, 0x42, 0x26, 0x86, - 0x75, 0x06, 0x35, 0x41, 0x33, 0x47, 0x85, 0x12, - 0x17, 0x80, 0x83, 0x87, 0x65, 0x51, 0x42, 0x31, - 0x38, 0x87, 0x56, 0x62, 0x05, 0x17, 0x40, 0x85, - 0x28, 0x14, 0x17, 0x21, 0x38, 0x12, 0x60, 0x81, - 0x24, 0x41, 0x45, 0x75, 0x01, 0x82, 0x87, 0x10, - 0x10, 0x02, 0x13, 0x25, 0x57, 0x04, 0x21, 0x72, - 0x42, 0x78, 0x61, 0x11, 0x70, 0x05, 0x30, 0x47, - 0x72, 0x13, 0x20, 0x30, 0x21, 0x67, 0x44, 0x31, - 0x57, 0x71, 0x45, 0x57, 0x10, 0x54, 0x16, 0x65, - 0x74, 0x15, 0x24, 0x02, 0x43, 0x71, 0x51, 0x20, - 0x55, 0x11, 0x67, 0x83, 0x67, 0x82, 0x52, 0x53, - 0x35, 0x66, 0x42, 0x46, 0x13, 0x70, 0x22, 0x32, - 0x74, 0x00, 0x07, 0x06, 0x81, 0x87, 0x17, 0x57, - 0x80, 0x28, 0x68, 0x01, 0x72, 0x10, 0x04, 0x27, - 0x55, 0x22, 0x86, 0x42, 0x53, 0x15, 0x81, 0x76, - 0x30, 0x86, 0x40, 0x83, 0x11, 0x43, 0x30, 0x53, - 0x82, 0x73, 0x53, 0x03, 0x72, 0x35, 0x68, 0x70, - 0x45, 0x41, 0x15, 0x73, 0x14, 0x12, 0x31, 0x64, - 0x32, 0x66, 0x63, 0x56, 0x21, 0x51, 0x50, 0x82, - 0x10, 0x30, 0x23, 0x38, 0x17, 0x21, 0x27, 0x10, - 0x23, 0x14, 0x22, 0x75, 0x77, 0x28, 0x37, 0x71, - 0x62, 0x75, 0x06, 0x88, 0x72, 0x14, 0x18, 0x73, - 0x13, 0x03, 0x01, 0x50, 0x71, 0x58, 0x62, 0x86, - 0x62, 0x88, 0x86, 0x86, 0x03, 0x27, 0x01, 0x46, - 0x17, 0x22, 0x71, 0x38, 0x53, 0x81, 0x70, 0x33, - 0x88, 0x68, 0x13, 0x78, 0x81, 0x04, 0x86, 0x57, - 0x30, 0x16, 0x52, 0x31, 0x40, 0x83, 0x07, 0x56, - 0x82, 0x10, 0x32, 0x31, 0x28, 0x50, 0x06, 0x50, - 0x81, 0x63, 0x06, 0x75, 0x76, 0x65, 0x11, 0x60, - 0x14, 0x17, 0x12, 0x12, 0x55, 0x56, 0x48, 0x11, - 0x41, 0x13, 0x28, 0x82, 0x62, 0x07, 0x47, 0x64, - 0x24, 0x48, 0x23, 0x24, 0x77, 0x53, 0x26, 0x08, - 0x17, 0x58, 0x11, 0x56, 0x37, 0x48, 0x35, 0x51, - 0x47, 0x86, 0x85, 0x66, 0x66, 0x81, 0x73, 0x20, - 0x21, 0x36, 0x75, 0x22, 0x74, 0x66, 0x83, 0x44, - 0x57, 0x00, 0x66, 0x64, 0x77, 0x20, 0x47, 0x22, - 0x28, 0x56, 0x87, 0x12, 0x47, 0x02, 0x48, 0x07, - 0x02, 0x54, 0x23, 0x01, 0x25, 0x71, 0x37, 0x36, - 0x75, 0x36, 0x00, 0x52, 0x68, 0x15, 0x33, 0x35, - 0x82, 0x06, 0x13, 0x73, 0x24, 0x08, 0x71, 0x76, - 0x15, 0x22, 0x42, 0x60, 0x18, 0x53, 0x43, 0x11, - 0x64, 0x57, 0x76, 0x17, 0x61, 0x56, 0x68, 0x76, - 0x60, 0x65, 0x54, 0x78, 0x10, 0x33, 0x63, 0x14, - 0x21, 0x83, 0x21, 0x60, 0x15, 0x55, 0x80, 0x42, - 0x38, 0x42, 0x03, 0x13, 0x12, 0x34, 0x36, 0x25, - 0x27, 0x30, 0x82, 0x81, 0x25, 0x47, 0x51, 0x35, - 0x44, 0x12, 0x67, 0x35, 0x00, 0x10, 0x01, 0x83, - 0x85, 0x74, 0x42, 0x40, 0x13, 0x03, 0x61, 0x27, - 0x81, 0x26, 0x26, 0x81, 0x18, 0x87, 0x43, 0x51, - 0x20, 0x62, 0x71, 0x27, 0x51, 0x56, 0x10, 0x22, - 0x22, 0x81, 0x11, 0x81, 0x41, 0x66, 0x66, 0x38, - 0x20, 0x86, 0x75, 0x56, 0x12, 0x40, 0x06, 0x54, - 0x61, 0x12, 0x74, 0x40, 0x34, 0x58, 0x58, 0x78, - 0x10, 0x07, 0x85, 0x25, 0x72, 0x88, 0x57, 0x22, - 0x22, 0x25, 0x50, 0x84, 0x00, 0x41, 0x26, 0x08, - 0x36, 0x46, 0x28, 0x78, 0x46, 0x78, 0x05, 0x02, - 0x28, 0x20, 0x77, 0x13, 0x60, 0x75, 0x14, 0x43, - 0x68, 0x78, 0x64, 0x31, 0x38, 0x77, 0x73, 0x73, - 0x55, 0x41, 0x27, 0x00, 0x54, 0x07, 0x08, 0x28, - 0x68, 0x80, 0x04, 0x53, 0x83, 0x43, 0x22, 0x81, - 0x00, 0x64, 0x35, 0x48, 0x67, 0x66, 0x50, 0x17, - 0x75, 0x76, 0x12, 0x75, 0x43, 0x81, 0x62, 0x40, - 0x33, 0x43, 0x45, 0x38, 0x87, 0x21, 0x66, 0x14, - 0x70, 0x48, 0x41, 0x43, 0x14, 0x66, 0x58, 0x78, - 0x45, 0x82, 0x02, 0x25, 0x45, 0x73, 0x15, 0x21, - 0x32, 0x03, 0x02, 0x48, 0x80, 0x80, 0x13, 0x71, - 0x25, 0x54, 0x32, 0x72, 0x05, 0x68, 0x65, 0x24, - 0x68, 0x04, 0x06, 0x16, 0x83, 0x50, 0x54, 0x53, - 0x37, 0x37, 0x27, 0x22, 0x20, 0x68, 0x08, 0x25, - 0x50, 0x84, 0x72, 0x86, 0x74, 0x22, 0x36, 0x16, - 0x80, 0x07, 0x55, 0x18, 0x12, 0x17, 0x84, 0x44, - 0x81, 0x15, 0x64, 0x50, 0x71, 0x10, 0x58, 0x15, - 0x51, 0x10, 0x10, 0x47, 0x16, 0x21, 0x07, 0x58, - 0x61, 0x18, 0x78, 0x00, 0x52, 0x72, 0x64, 0x52, - 0x17, 0x43, 0x23, 0x40, 0x76, 0x48, 0x67, 0x30, - 0x77, 0x63, 0x64, 0x87, 0x51, 0x31, 0x63, 0x84, - 0x68, 0x74, 0x53, 0x63, 0x84, 0x23, 0x54, 0x66, - 0x10, 0x48, 0x36, 0x33, 0x85, 0x21, 0x48, 0x42, - 0x03, 0x82, 0x51, 0x10, 0x33, 0x57, 0x46, 0x80, - 0x16, 0x43, 0x34, 0x02, 0x07, 0x03, 0x53, 0x22, - 0x12, 0x75, 0x73, 0x34, 0x65, 0x83, 0x33, 0x87, - 0x43, 0x85, 0x17, 0x50, 0x36, 0x60, 0x88, 0x02, - 0x58, 0x75, 0x80, 0x88, 0x31, 0x63, 0x60, 0x18, - 0x21, 0x32, 0x26, 0x15, 0x68, 0x74, 0x11, 0x10, - 0x33, 0x14, 0x13, 0x05, 0x34, 0x16, 0x72, 0x65, - 0x35, 0x50, 0x13, 0x34, 0x80, 0x87, 0x10, 0x26, - 0x48, 0x68, 0x84, 0x52, 0x71, 0x44, 0x23, 0x58, - 0x80, 0x35, 0x57, 0x70, 0x54, 0x84, 0x28, 0x70, - 0x55, 0x88, 0x86, 0x83, 0x86, 0x25, 0x21, 0x82, - 0x72, 0x61, 0x17, 0x78, 0x85, 0x17, 0x67, 0x73, - 0x00, 0x57, 0x71, 0x11, 0x78, 0x51, 0x10, 0x65, - 0x63, 0x57, 0x02, 0x87, 0x40, 0x13, 0x40, 0x01, - 0x26, 0x53, 0x45, 0x12, 0x05, 0x46, 0x75, 0x18, - 0x80, 0x70, 0x33, 0x35, 0x66, 0x22, 0x62, 0x00, - 0x70, 0x23, 0x26, 0x87, 0x72, 0x63, 0x11, 0x13, - 0x33, 0x33, 0x81, 0x41, 0x70, 0x62, 0x28, 0x61, - 0x51, 0x47, 0x31, 0x30, 0x25, 0x46, 0x51, 0x17, - 0x61, 0x58, 0x07, 0x41, 0x61, 0x37, 0x37, 0x06, - 0x14, 0x00, 0x54, 0x88, 0x77, 0x75, 0x67, 0x77, - 0x66, 0x53, 0x16, 0x72, 0x66, 0x66, 0x88, 0x76, - 0x43, 0x58, 0x31, 0x04, 0x87, 0x57, 0x06, 0x76, - 0x47, 0x00, 0x43, 0x63, 0x58, 0x60, 0x52, 0x03, - 0x44, 0x27, 0x36, 0x48, 0x61, 0x23, 0x72, 0x16, - 0x10, 0x62, 0x42, 0x08, 0x60, 0x83, 0x23, 0x54, - 0x03, 0x55, 0x55, 0x73, 0x00, 0x61, 0x03, 0x65, - 0x34, 0x27, 0x14, 0x15, 0x86, 0x62, 0x55, 0x80, - 0x16, 0x53, 0x10, 0x18, 0x26, 0x11, 0x35, 0x46, - 0x82, 0x46, 0x13, 0x25, 0x83, 0x47, 0x70, 0x50, - 0x06, 0x01, 0x56, 0x02, 0x11, 0x68, 0x54, 0x53, - 0x03, 0x68, 0x73, 0x36, 0x41, 0x88, 0x86, 0x33, - 0x42, 0x52, 0x01, 0x58, 0x33, 0x42, 0x32, 0x88, - 0x56, 0x81, 0x77, 0x55, 0x51, 0x48, 0x48, 0x12, - 0x01, 0x58, 0x13, 0x85, 0x04, 0x14, 0x71, 0x83, - 0x57, 0x07, 0x54, 0x55, 0x54, 0x55, 0x28, 0x27, - 0x31, 0x36, 0x02, 0x12, 0x32, 0x68, 0x32, 0x13, - 0x82, 0x58, 0x70, 0x28, 0x58, 0x53, 0x44, 0x86, - 0x72, 0x73, 0x42, 0x84, 0x18, 0x22, 0x08, 0x83, - 0x61, 0x02, 0x14, 0x16, 0x17, 0x12, 0x41, 0x57, - 0x48, 0x85, 0x25, 0x10, 0x26, 0x07, 0x36, 0x76, - 0x12, 0x66, 0x17, 0x21, 0x32, 0x36, 0x03, 0x25, - 0x41, 0x10, 0x11, 0x22, 0x66, 0x60, 0x16, 0x16, - 0x32, 0x64, 0x26, 0x05, 0x18, 0x63, 0x51, 0x58, - 0x51, 0x31, 0x42, 0x53, 0x84, 0x56, 0x66, 0x27, - 0x83, 0x33, 0x54, 0x50, 0x76, 0x46, 0x50, 0x80, - 0x25, 0x43, 0x41, 0x57, 0x35, 0x78, 0x25, 0x43, - 0x02, 0x82, 0x38, 0x47, 0x45, 0x70, 0x15, 0x67, - 0x51, 0x77, 0x47, 0x80, 0x31, 0x52, 0x75, 0x00, - 0x00, 0x94, 0x7B, 0xCA, 0x93, 0xC2, 0x7D, 0x58, - 0x4E, 0x2C, 0x66, 0xEA, 0xC9, 0xC7, 0x64, 0x0C, - 0x1C, 0xA2, 0x17, 0xEE, 0xF6, 0x6D, 0xAB, 0xBC, - 0xB2, 0x60, 0xB4, 0xC3, 0x43, 0x00, 0xFA, 0x05, - 0x13, 0x57, 0x82, 0x0F, 0x57, 0x39, 0x25, 0x44, - 0x98, 0x2F, 0xD1, 0x10, 0x57, 0xDE, 0x23, 0x3E, - 0x6D, 0x2D, 0xD8, 0x49, 0x72, 0xA7, 0xE4, 0x7D, - 0x4D, 0xBA, 0x99, 0xBC, 0x30, 0xCF, 0x8F, 0x2A, - 0xD5, 0xA2, 0xC0, 0x24, 0x31, 0x95, 0xED, 0x27, - 0x30, 0xFF, 0xA9, 0x2D, 0x22, 0x7D, 0x15, 0x30, - 0x95, 0x97, 0x2D, 0x4B, 0x34, 0x47, 0xFF, 0xAC, - 0x45, 0xA2, 0x3E, 0xB4, 0x1C, 0xBC, 0x87, 0xCD, - 0xD1, 0x25, 0x0A, 0x8A, 0x47, 0x8B, 0x0F, 0x7A, - 0x1D, 0x5B, 0x39, 0xAA, 0x22, 0x06, 0xE4, 0x86, - 0x45, 0x58, 0x4F, 0xE7, 0xBF, 0x7A, 0x13, 0x16, - 0x8F, 0x48, 0x27, 0x65, 0xE5, 0x7B, 0xB9, 0x24, - 0xAC, 0x6D, 0x9A, 0x11, 0x36, 0x9F, 0x4A, 0x6A, - 0xFF, 0xCD, 0x16, 0x9B, 0x7D, 0x75, 0x12, 0x9B, - 0x35, 0xD5, 0x13, 0x4A, 0x31, 0x76, 0x1B, 0xB8, - 0x35, 0x5A, 0xEE, 0xED, 0x27, 0xE2, 0x01, 0xA0, - 0x63, 0x13, 0x01, 0x3E, 0x30, 0x7A, 0x01, 0xA7, - 0x3A, 0xEA, 0x79, 0x55, 0xC0, 0x57, 0x8C, 0x8C, - 0x5E, 0x5A, 0x1A, 0x2D, 0x2F, 0xA4, 0x59, 0x3F, - 0xAC, 0xD9, 0x04, 0xC6, 0x20, 0x40, 0xBD, 0xB9, - 0xF3, 0x29, 0x93, 0x35, 0x36, 0xBF, 0x8D, 0x81, - 0xC4, 0x25, 0x6B, 0xAA, 0xE8, 0x72, 0x3F, 0xD4, - 0xDC, 0x66, 0xBB, 0x5E, 0x7F, 0x9C, 0xA4, 0x90, - 0x31, 0xA1, 0x93, 0xEC, 0xEC, 0xBB, 0x5D, 0xC3, - 0x90, 0xEC, 0x6D, 0x55, 0x13, 0xC7, 0x9A, 0x05, - 0x2B, 0x3F, 0xD4, 0x36, 0x12, 0xFB, 0x73, 0x75, - 0x31, 0x5D, 0x80, 0x91, 0xF7, 0x9B, 0xAB, 0x13, - 0x18, 0xF1, 0x78, 0x54, 0x56, 0x1B, 0xC9, 0x3A, - 0xE0, 0xE5, 0xCD, 0x6D, 0x13, 0x1E, 0x56, 0x2C, - 0x81, 0x14, 0x81, 0x0C, 0x93, 0x9A, 0xE5, 0x63, - 0xAA, 0x10, 0xB4, 0x7C, 0xE4, 0x48, 0x43, 0x17, - 0xF3, 0x4A, 0xBD, 0x02, 0xD0, 0xCC, 0xAD, 0x58, - 0xDD, 0x29, 0xBC, 0xF6, 0x57, 0xBB, 0xD9, 0x25, - 0x4B, 0x01, 0xCA, 0x97, 0x26, 0x09, 0x19, 0x38, - 0xED, 0x32, 0x05, 0x4B, 0x37, 0xDD, 0x61, 0x72, - 0x40, 0xF4, 0x43, 0x4C, 0x1A, 0x4A, 0x87, 0x11, - 0xAA, 0x3A, 0x39, 0x9A, 0x8A, 0x53, 0x88, 0x33, - 0x0B, 0x70, 0x59, 0xEC, 0xCB, 0xB6, 0xB1, 0xB9, - 0xCF, 0x71, 0x87, 0xAD, 0xF1, 0x0B, 0x0C, 0x91, - 0x71, 0xD3, 0xC0, 0xF6, 0xE2, 0xD4, 0x60, 0xA4, - 0x19, 0x24, 0x76, 0x72, 0xE3, 0xB9, 0xFE, 0xA2, - 0xC9, 0x59, 0x10, 0xBF, 0x2F, 0xB6, 0xA5, 0xD6, - 0x1F, 0x25, 0x74, 0x53, 0xB0, 0x7A, 0xFB, 0x64, - 0xB0, 0xBA, 0x27, 0x58, 0xBC, 0xD7, 0x35, 0x75, - 0x1F, 0x2D, 0x53, 0x51, 0x5E, 0x23, 0x6F, 0xE8, - 0xA5, 0xB4, 0x39, 0x3B, 0x80, 0xBF, 0x06, 0xDF, - 0x97, 0xBD, 0xC6, 0x38, 0x00, 0x87, 0xE6, 0xAA, - 0x8D, 0xDE, 0x6E, 0x09, 0x81, 0x11, 0xA7, 0x34, - 0x3F, 0xCD, 0xD1, 0xE9, 0x03, 0x70, 0x8E, 0x63, - 0x7E, 0xBF, 0x28, 0x32, 0x3C, 0xDA, 0x6B, 0x94, - 0x05, 0x81, 0x0E, 0xDC, 0xFB, 0x36, 0x91, 0x14, - 0x9E, 0xCF, 0x22, 0x4C, 0x50, 0xF8, 0xDF, 0x92, - 0xA9, 0x4A, 0xA4, 0x77, 0x0A, 0x0E, 0x91, 0x46, - 0x61, 0x94, 0xBB, 0x0E, 0x27, 0xBF, 0x1C, 0xAB, - 0xF1, 0x6A, 0xDF, 0xD3, 0x51, 0x22, 0x00, 0x33, - 0xF7, 0x6F, 0x59, 0x25, 0x55, 0x7B, 0xCF, 0x96, - 0x34, 0xE9, 0x46, 0x13, 0x59, 0x62, 0x1D, 0x80, - 0xB4, 0xBB, 0xAD, 0x7E, 0x2A, 0x6E, 0x43, 0x2D, - 0xC4, 0x3B, 0x12, 0x6C, 0xA4, 0x2A, 0xB8, 0x8A, - 0xA8, 0x8F, 0x0A, 0x84, 0xAF, 0x58, 0x02, 0x9C, - 0x99, 0xA0, 0x24, 0x8F, 0x0C, 0x45, 0x40, 0x71, - 0xF3, 0x5B, 0x83, 0x1F, 0xED, 0x12, 0x54, 0xD6, - 0xF4, 0xE2, 0x72, 0x04, 0x85, 0x78, 0x62, 0x15, - 0xF7, 0xC7, 0xF0, 0xC4, 0xED, 0x15, 0xFA, 0x85, - 0x3C, 0xD3, 0xAA, 0x07, 0x25, 0x9B, 0x39, 0x24, - 0x0A, 0x82, 0x13, 0x5C, 0x29, 0x23, 0xA7, 0x2B, - 0x87, 0x6F, 0xAB, 0xB3, 0xF0, 0xF2, 0xC0, 0x96, - 0x13, 0xDE, 0x39, 0xD4, 0x59, 0xA0, 0x7C, 0x14, - 0xE7, 0xBA, 0x43, 0x7D, 0x80, 0x41, 0x49, 0x1F, - 0xCE, 0xC1, 0x43, 0x34, 0x04, 0xBA, 0xD1, 0xDA, - 0x9E, 0xE9, 0x47, 0x1E, 0x17, 0xCB, 0x69, 0x1B, - 0x2A, 0x35, 0x37, 0x10, 0xC9, 0xFF, 0xA4, 0xE5, - 0x17, 0x81, 0x12, 0x02, 0x77, 0x64, 0xEB, 0x7D, - 0xE8, 0x09, 0xC3, 0xE1, 0xF1, 0xFA, 0x41, 0x78, - 0xA5, 0xD4, 0xDC, 0x9E, 0xE2, 0x78, 0x57, 0xEF, - 0xF2, 0x6B, 0x91, 0x71, 0x1F, 0xC1, 0x44, 0xD5, - 0xA7, 0x75, 0xB8, 0xB5, 0x0D, 0x5D, 0xB9, 0x39, - 0xBA, 0x32, 0x07, 0x68, 0x0C, 0x24, 0x2F, 0xC8, - 0x21, 0x94, 0x7F, 0x93, 0x4C, 0x8D, 0xAE, 0xE2, - 0x03, 0x56, 0x3D, 0x28, 0x60, 0x6B, 0xE6, 0x24, - 0xA3, 0x29, 0x01, 0x93, 0x2D, 0xAE, 0x85, 0x71, - 0x2A, 0xF6, 0xC8, 0x01, 0x60, 0x26, 0x92, 0x7E, - 0x9B, 0x81, 0x29, 0x57, 0x4B, 0xE3, 0xCB, 0x1E, - 0x95, 0x33, 0x2B, 0x05, 0x27, 0x07, 0xAC, 0x8A, - 0xA8, 0xF4, 0x35, 0xE8, 0x8B, 0x7E, 0x56, 0x8D, - 0x49, 0x87, 0xC6, 0xAC, 0x0E, 0x90, 0x2B, 0x06, - 0x09, 0xA0, 0x2D, 0x91, 0xB3, 0xF5, 0xFD, 0x3F, - 0xD9, 0x01, 0xDD, 0xD0, 0xDB, 0x98, 0x73, 0xBD, - 0x7C, 0x71, 0xED, 0x92, 0x1D, 0x45, 0x77, 0xA7, - 0x8C, 0x4F, 0xCC, 0x9B, 0xF0, 0x75, 0x20, 0x3D, - 0x38, 0xF5, 0xE7, 0x6E, 0x74, 0xF2, 0x77, 0x48, - 0x4E, 0x05, 0x7B, 0x61, 0x89, 0x00, 0x41, 0x31, - 0xB0, 0xC9, 0xB1, 0xA1, 0x55, 0x29, 0x4D, 0x1C, - 0xD3, 0xD5, 0x20, 0x8E, 0x26, 0x69, 0x01, 0xD7, - 0xD3, 0x14, 0xFA, 0xCC, 0xE7, 0xE2, 0xAA, 0x58, - 0x45, 0x83, 0xA1, 0x1E, 0x4D, 0x7C, 0x21, 0xB9, - 0x4A, 0x32, 0xE5, 0x08, 0xED, 0xDB, 0xBD, 0x7A, - 0x65, 0xAA, 0x86, 0xB4, 0xFD, 0xFA, 0x6B, 0xC2, - 0x85, 0xD4, 0xCF, 0xF5, 0x39, 0x26, 0xC7, 0x17, - 0x3F, 0xBE, 0x1F, 0x89, 0xCC, 0x30, 0x32, 0x34, - 0xB8, 0x78, 0xC6, 0xB8, 0x10, 0x1F, 0x58, 0xAC, - 0x8D, 0x3E, 0x5E, 0x1B, 0xF5, 0xAB, 0x6B, 0x26, - 0x29, 0x7C, 0xC9, 0x7B, 0x95, 0x95, 0x4A, 0xAB, - 0xDB, 0x25, 0xBE, 0x00, 0x8A, 0x3F, 0x47, 0xE5, - 0x64, 0x87, 0xB0, 0x0D, 0x3D, 0xED, 0xA8, 0x90, - 0xD9, 0x2C, 0x83, 0x95, 0x7F, 0xEA, 0xC6, 0xB8, - 0x29, 0x1A, 0xF6, 0x59, 0x59, 0xE1, 0xD1, 0xFC, - 0xA3, 0xBD, 0x19, 0x6E, 0x9F, 0xC9, 0xE6, 0x7E, - 0x06, 0x07, 0x09, 0x48, 0x22, 0xE5, 0xB4, 0x19, - 0x1D, 0xB9, 0x68, 0x24, 0xB9, 0xF0, 0x3F, 0x2E, - 0xF5, 0x7F, 0x52, 0x38, 0xBA, 0x7E, 0x1E, 0x84, - 0xED, 0x55, 0xB7, 0xDF, 0xF3, 0xD6, 0xC2, 0xC1, - 0x27, 0x36, 0x92, 0xA9, 0xA1, 0x92, 0x72, 0x16, - 0x61, 0x30, 0xDB, 0x89, 0xFC, 0x67, 0xDC, 0x94, - 0xDB, 0x61, 0x4E, 0x3E, 0x82, 0xBA, 0x3A, 0x35, - 0x12, 0xB0, 0x12, 0xD5, 0x1F, 0xB4, 0x86, 0xB5, - 0xA3, 0x15, 0x0B, 0x78, 0xE7, 0x24, 0xE2, 0xA1, - 0x2D, 0xE0, 0x7D, 0x86, 0x71, 0xFB, 0xA2, 0xDA, - 0x7F, 0xD5, 0xD1, 0x47, 0x20, 0x8F, 0xC3, 0xAF, - 0x65, 0x3E, 0x65, 0x20, 0xFC, 0x40, 0x87, 0x1A, - 0xF2, 0x17, 0x7E, 0x65, 0xCB, 0xD0, 0xEA, 0xF3, - 0x04, 0x21, 0x7B, 0x36, 0x7A, 0x66, 0x5F, 0x22, - 0x4C, 0xAE, 0xDF, 0xE9, 0x30, 0x06, 0xAC, 0x1E, - 0x14, 0xBC, 0xD6, 0x7A, 0x88, 0xD1, 0x71, 0xF3, - 0xD8, 0xF3, 0xE3, 0x58, 0xA7, 0x19, 0x26, 0xBA, - 0x3E, 0x5C, 0x23, 0x9A, 0x53, 0x12, 0x63, 0xEC, - 0x94, 0x37, 0xBF, 0x2A, 0x03, 0x3B, 0x8B, 0x55, - 0xB2, 0xC0, 0xCB, 0x6E, 0x7E, 0x97, 0x31, 0x6E, - 0x22, 0xDF, 0x77, 0xCA, 0xD9, 0x10, 0xD2, 0x0E, - 0xEC, 0xE1, 0xC5, 0x09, 0x10, 0xA5, 0xCC, 0x32, - 0xAD, 0xAB, 0x09, 0x37, 0x75, 0x50, 0xF9, 0x2D, - 0x5B, 0xB1, 0xF4, 0xC0, 0x7F, 0x4A, 0x28, 0x22, - 0x33, 0x8E, 0x2C, 0xFF, 0x53, 0x48, 0xDF, 0x77, - 0xCF, 0x8E, 0xF8, 0xE6, 0x65, 0x7D, 0xED, 0x1E, - 0x0C, 0xE0, 0x58, 0xE3, 0xCC, 0xFB, 0xF3, 0x9B, - 0x3F, 0x16, 0x6E, 0x30, 0x3D, 0x33, 0xC3, 0x55, - 0x6C, 0x9A, 0xC8, 0xEC, 0xB3, 0xDF, 0x7C, 0x74, - 0xAB, 0x36, 0xD0, 0xF2, 0x79, 0x44, 0x41, 0xBA, - 0x98, 0x08, 0x82, 0x7B, 0x57, 0x8F, 0xB5, 0xC2, - 0x9E, 0x49, 0x4E, 0x21, 0x53, 0x9A, 0xD3, 0xAB, - 0x2B, 0x41, 0xBF, 0x16, 0x1D, 0x7F, 0x69, 0x58, - 0x9D, 0x45, 0x24, 0xC5, 0x4C, 0x89, 0xB4, 0x86, - 0xF7, 0x5D, 0x25, 0x2F, 0x54, 0x1C, 0xC6, 0x3B, - 0x9E, 0x70, 0x6D, 0x64, 0xA1, 0x28, 0x9A, 0x23, - 0x06, 0xC5, 0x95, 0x36, 0x3C, 0xB6, 0xFB, 0xEF, - 0x0A, 0x1B, 0x5B, 0x17, 0xAB, 0x5B, 0x17, 0x94, - 0xBF, 0x27, 0x03, 0x6F, 0x64, 0xEA, 0xF0, 0xBD, - 0x43, 0x0D, 0xD5, 0x8D, 0x80, 0x01, 0x0C, 0xCD, - 0xAD, 0xA4, 0xA5, 0xA3, 0xA1, 0xE4, 0x1A, 0x6F, - 0xBF, 0x12, 0x9D, 0x73, 0x77, 0x9A, 0x37, 0xAE, - 0x5C, 0x8D, 0x68, 0x41, 0xA9, 0x99, 0x3C, 0x51, - 0xE3, 0x64, 0xE0, 0x4F, 0xAC, 0x8E, 0x25, 0xA4, - 0xE6, 0x87, 0x2F, 0x6C, 0x86, 0x0F, 0xA2, 0x65, - 0xC1, 0xC4, 0x42, 0x6A, 0xD9, 0xC2, 0x1D, 0x26, - 0xDA, 0x8C, 0x27, 0x85, 0x46, 0xAD, 0xCD, 0x83, - 0x1F, 0x2B, 0x8B, 0x26, 0xD4, 0xE1, 0xF6, 0x70, - 0x62, 0x3D, 0x95, 0xC8, 0x36, 0x2D, 0xA6, 0x62, - 0xD1, 0xFF, 0x0A, 0xB6, 0x87, 0x50, 0x3F, 0x32, - 0x8D, 0xE0, 0x95, 0x81, 0x0E, 0xDE, 0x12, 0xB4, - 0x9E, 0xAD, 0x15, 0x33, 0x51, 0x95, 0x58, 0xC1, - 0xE9, 0x40, 0xB4, 0x6E, 0x4E, 0xDB, 0x02, 0x7B, - 0xE9, 0xDA, 0x20, 0x39, 0xB2, 0x5D, 0xCF, 0x73, - 0x57, 0xE1, 0x9E, 0x54, 0x16, 0xAE, 0x26, 0x8C, - 0x14, 0xFB, 0x3A, 0x8B, 0xAB, 0xCB, 0x3D, 0x23, - 0xF7, 0x0C, 0xC9, 0xD5, 0x96, 0x81, 0xC5, 0xD8, - 0x33, 0xAC, 0x22, 0xE6, 0x53, 0xD8, 0x6E, 0x22, - 0xCE, 0x82, 0x25, 0x40, 0x75, 0x5D, 0x8D, 0x24, - 0x3C, 0x15, 0x21, 0x3D, 0x07, 0x6C, 0x6B, 0x26, - 0x43, 0x6D, 0xDC, 0x07, 0xC7, 0xE0, 0x01, 0x34, - 0x7B, 0x0C, 0xB8, 0x78, 0x3D, 0xFE, 0xFE, 0xDF, - 0x27, 0x5F, 0xEC, 0x47, 0x92, 0x68, 0x67, 0x34, - 0x00, 0x7F, 0x0F, 0xF8, 0x54, 0x08, 0x11, 0xC2, - 0xAF, 0xE6, 0xCA, 0x15, 0x14, 0x20, 0x53, 0x2F, - 0xA5, 0x52, 0x6A, 0x10, 0x74, 0xC3, 0xD7, 0x89, - 0xF2, 0x93, 0x2D, 0xE4, 0x2E, 0x3A, 0xCF, 0xBF, - 0x94, 0x76, 0x0F, 0x42, 0x6D, 0x96, 0xCF, 0x03, - 0x3F, 0xA4, 0x9E, 0x2F, 0x45, 0x8F, 0x9A, 0x9C, - 0x2E, 0x71, 0xDA, 0xCF, 0xE0, 0x09, 0xDD, 0x9C, - 0x3F, 0x3C, 0x8A, 0xB3, 0x28, 0x2D, 0x6F, 0x38, - 0x3B, 0x98, 0x1C, 0x82, 0xD6, 0x36, 0x4F, 0x0E, - 0x4B, 0xDB, 0x2A, 0xF6, 0xA9, 0x5B, 0xA6, 0x1F, - 0x47, 0x41, 0x50, 0xCA, 0xD7, 0x23, 0x3F, 0x89, - 0x03, 0xDF, 0x97, 0x2D, 0xBB, 0x03, 0x28, 0xC0, - 0xCB, 0x9D, 0x0C, 0xCB, 0xEF, 0x88, 0x3D, 0x2E, - 0x6A, 0xDD, 0x18, 0x0E, 0xCA, 0x1B, 0x66, 0x2F, - 0xC1, 0xD2, 0xDB, 0xBD, 0xDB, 0x36, 0x34, 0x21, - 0x9E, 0x1E, 0xFF, 0x38, 0xB1, 0xE5, 0x28, 0x75, - 0x35, 0x6C, 0x03, 0xEA, 0xDE, 0x94, 0x20, 0x55, - 0xF4, 0x83, 0x50, 0x4B, 0xBB, 0xCB, 0x43, 0x02, - 0xA4, 0x17, 0xCF, 0x6D, 0x32, 0x8E, 0xD7, 0x93, - 0xB1, 0xA3, 0xC0, 0x96, 0x9B, 0x7B, 0x34, 0x18, - 0xF5, 0x0A, 0xB3, 0x9F, 0x83, 0xC5, 0x66, 0x6C, - 0x90, 0xE3, 0x83, 0x56, 0xF7, 0xF9, 0xD4, 0x94, - 0xA6, 0xDC, 0xB6, 0x3D, 0x67, 0xC3, 0x4E, 0x3D, - 0x14, 0xA4, 0xE1, 0x55, 0x96, 0x49, 0x79, 0x26, - 0xC8, 0x56, 0x8D, 0x8E, 0xC3, 0xDB, 0xD9, 0xC2, - 0xE8, 0x2C, 0x38, 0x5B, 0xCF, 0xB8, 0xD9, 0x67, - 0x48, 0x63, 0xBD, 0x4F, 0xBF, 0x17, 0x57, 0xDB, - 0x44, 0x7B, 0xF8, 0x04, 0xAE, 0x95, 0x01, 0x47, - 0xC9, 0x1F, 0xBF, 0x9A, 0xA1, 0x78, 0x91, 0x04, - 0x4C, 0xCA, 0xA7, 0x3B, 0x45, 0x52, 0x85, 0x97, - 0x46, 0x2C, 0xED, 0x75, 0x1D, 0x01, 0x5E, 0xBB, - 0xA9, 0xE2, 0xB7, 0xCD, 0xCB, 0xE6, 0xDC, 0x05, - 0xAA, 0x9E, 0xAE, 0x0C, 0x86, 0x84, 0x8A, 0x34, - 0x75, 0xBB, 0x1C, 0x57, 0x44, 0xF5, 0x90, 0x3E, - 0xE4, 0xA8, 0x42, 0xA4, 0x69, 0xCC, 0x18, 0x12, - 0x71, 0xF2, 0x45, 0xAD, 0x70, 0xD0, 0x2A, 0x48, - 0x37, 0x86, 0x3B, 0x29, 0x6B, 0x4A, 0xDB, 0x4E, - 0x8D, 0x03, 0xD8, 0x2B, 0x64, 0xAA, 0x11, 0xDD, - 0x31, 0xCD, 0xF2, 0x1E, 0xDF, 0x1D, 0xFE, 0x32, - 0x76, 0xC4, 0xDB, 0xC8, 0x77, 0xE3, 0x5B, 0x15, - 0xFB, 0x28, 0x35, 0xEC, 0x3A, 0x1C, 0x45, 0x31, - 0x68, 0xA3, 0x8C, 0xA8, 0xE5, 0x63, 0xCF, 0x3E, - 0x9A, 0x00, 0x73, 0x6C, 0xD5, 0xCF, 0xBD, 0x28, - 0x41, 0xD1, 0x0F, 0x94, 0xAD, 0x55, 0x79, 0x9C, - 0x29, 0x27, 0xE5, 0x46, 0x1B, 0x28, 0xBA, 0xC5, - 0x17, 0x4D, 0x0C, 0xE3, 0xF8, 0xF7, 0xCD, 0x76, - 0x09, 0xFB, 0xC8, 0xDA, 0x0C, 0x38, 0xCC, 0x21, - 0x69, 0x5C, 0xED, 0xAD, 0x12, 0xF8, 0xD2, 0xE6, - 0x49, 0x51, 0xA8, 0x99, 0x6E, 0x51, 0x0D, 0x6D, - 0x52, 0x79, 0x7C, 0x5B, 0xA0, 0xEB, 0x4A, 0xFA, - 0x6B, 0xF2, 0xCC, 0x43, 0xDA, 0x09, 0xDE, 0x31, - 0x79, 0xE8, 0x99, 0xBD, 0x71, 0x88, 0xB3, 0x2A, - 0x98, 0xA4, 0x99, 0xD3, 0x72, 0xF3, 0x70, 0x7C, - 0xED, 0x47, 0x9B, 0x09, 0x81, 0xCB, 0x50, 0xC0, - 0xC0, 0x53, 0x9C, 0xF7, 0xE3, 0x10, 0x0B, 0x72, - 0x0E, 0x46, 0x66, 0x52, 0xA4, 0xF4, 0x99, 0xC2, - 0xBA, 0x3A, 0x17, 0xF5, 0x23, 0x22, 0x68, 0x73, - 0x0B, 0x96, 0x2B, 0xC5, 0x72, 0xC0, 0xDE, 0x96, - 0xE8, 0xC9, 0xE2, 0x8F, 0x7E, 0x35, 0x32, 0xC2, - 0x22, 0x41, 0x96, 0xAA, 0x9E, 0x27, 0x68, 0x8D, - 0xD0, 0x50, 0xD7, 0xCB, 0x78, 0x54, 0xFB, 0x3C, - 0x35, 0xF9, 0xC6, 0x2E, 0xFB, 0x10, 0xDA, 0x84, - 0x83, 0x3F, 0x29, 0xBB, 0x1B, 0xE5, 0xEF, 0x3B, - 0x53, 0x36, 0x38, 0xEE, 0xF7, 0x43, 0xD8, 0x11, - 0x9D, 0xDC, 0x29, 0x0B, 0xDF, 0x08, 0xB6, 0xF0, - 0xF9, 0xE4, 0xE1, 0xE1, 0x34, 0x46, 0xC5, 0x3E, - 0xD6, 0x98, 0x05, 0xDA, 0x26, 0x90, 0x8A, 0x15, - 0xDF, 0x1C, 0x48, 0xE0, 0x09, 0xEC, 0x12, 0x53, - 0xBD, 0x5A, 0x58, 0x98, 0xEB, 0xB5, 0x12, 0x1C, - 0xC2, 0x49, 0x04, 0xC8, 0xB1, 0x0E, 0x24, 0xE6, - 0x80, 0xE5, 0x65, 0x98, 0x50, 0x76, 0xFD, 0xA1, - 0x1D, 0x13, 0xFF, 0xDF, 0xA4, 0xDB, 0x28, 0xAC, - 0x9F, 0x0A, 0xEA, 0x2F, 0x81, 0xFD, 0x7E, 0xD4, - 0xDC, 0xA8, 0xD3, 0xB2, 0xE3, 0x84, 0x8B, 0x4D, - 0x60, 0x46, 0xF6, 0xE0, 0xDE, 0x3A, 0x4F, 0x68, - 0x3F, 0x25, 0xE0, 0x60, 0x5E, 0x84, 0xB3, 0x6F, - 0x48, 0x3C, 0x40, 0x4E, 0xF8, 0x99, 0xCB, 0x3F, - 0xCC, 0xBE, 0x8C, 0xB2, 0xA6, 0xF0, 0xA7, 0xE1, - 0x0B, 0x19, 0x48, 0xCD, 0x4F, 0x93, 0xF1, 0x81, - 0x55, 0x5F, 0x66, 0x1D, 0x31, 0xD4, 0x26, 0x80, - 0x8B, 0xBF, 0x9F, 0x66, 0xFD, 0x60, 0xD6, 0x49, - 0x26, 0x9C, 0xA3, 0xFE, 0x99, 0x1B, 0x22, 0x42, - 0x8C, 0x37, 0xAD, 0x2A, 0x08, 0x68, 0x0F, 0x74, - 0x7C, 0xC0, 0x36, 0x0C, 0xCD, 0x37, 0x3D, 0xC6, - 0xA9, 0xF4, 0x3A, 0x66, 0x47, 0x0E, 0x01, 0x4E, - 0x72, 0xB3, 0xD8, 0xC3, 0x8E, 0x02, 0x04, 0x42, - 0xD8, 0xAA, 0xB9, 0x74, 0xE6, 0x04, 0x93, 0x74, - 0x14, 0x5B, 0x04, 0xCB, 0x7F, 0x30, 0x44, 0xAA, - 0xC1, 0xEF, 0xDA, 0xB2, 0xA1, 0x8B, 0xB4, 0x64, - 0xD4, 0xF2, 0xF2, 0xD8, 0x14, 0x39, 0x74, 0xC9, - 0x5E, 0xEE, 0x85, 0x6D, 0x59, 0xEC, 0x00, 0x28, - 0x8E, 0xD4, 0x3F, 0xF5, 0xCC, 0x88, 0x03, 0x00, - 0x6C, 0x99, 0x55, 0x14, 0xA2, 0xCC, 0x9C, 0xA6, - 0x22, 0xB6, 0x1B, 0xCD, 0x75, 0xEC, 0x51, 0xC2, - 0x02, 0xA9, 0x17, 0x10, 0x5B, 0x4A, 0x4B, 0xED, - 0x1B, 0x80, 0x14, 0x68, 0x31, 0xDC, 0xED, 0x07, - 0xEF, 0xD2, 0xED, 0x25, 0x73, 0x9F, 0x54, 0x09, - 0x69, 0x11, 0xB1, 0x50, 0xD3, 0x07, 0x7C, 0xCD, - 0x73, 0x1A, 0x03, 0x61, 0x68, 0x27, 0x25, 0xD5, - 0x38, 0x03, 0xF8, 0xFC, 0xEA, 0xA8, 0x39, 0x19, - 0x29, 0x1E, 0xDB, 0x44, 0x93, 0xEC, 0x84, 0xCC, - 0xE1, 0xD0, 0xF8, 0x2A, 0x67, 0x92, 0x36, 0xEA, - 0xD1, 0x00, 0x2A, 0xE8, 0x01, 0x8C, 0xAC, 0x9F, - 0xDB, 0xD2, 0x46, 0xFF, 0x09, 0x3D, 0x80, 0x3C, - 0x0D, 0xE3, 0x32, 0x6A, 0x57, 0x90, 0x7B, 0x0D, - 0xD6, 0xB0, 0x1D, 0x08, 0x14, 0x58, 0xC7, 0x57, - 0x28, 0xC6, 0x00, 0x82, 0x99, 0x28, 0x89, 0x0A, - 0x56, 0xAA, 0xAF, 0xEF, 0xCF, 0x74, 0x23, 0xB7, - 0x0A, 0x6D, 0x86, 0xB4, 0x15, 0xB8, 0x35, 0x8D, - 0xD0, 0x44, 0xAB, 0xEE, 0x00, 0xB9, 0xC9, 0x79, - 0x5F, 0xC8, 0xF6, 0x1A, 0x64, 0x68, 0x6D, 0xF5, - 0xF8, 0x76, 0xA8, 0xF3, 0x30, 0x61, 0x59, 0x9A, - 0xE8, 0x30, 0xF7, 0xEB, 0x4C, 0x4B, 0xFF, 0x87, - 0x5F, 0x4A, 0x93, 0x6C, 0x40, 0x3C, 0x5D, 0x16, - 0x0D, 0xE5, 0xD3, 0x3C, 0xAE, 0xE4, 0x0F, 0xB7, - 0x18, 0xDD, 0xA4, 0x47, 0x8A, 0xC6, 0xF5, 0x1C, - 0x59, 0xC2, 0x15, 0x52, 0x54, 0xBD, 0x77, 0x67, - 0x11, 0x18, 0x41, 0x1E, 0x26, 0x09, 0xD0, 0x00, - 0x30, 0x6F, 0xC9, 0x50, 0x70, 0x04, 0xA3, 0x1E, - 0x89, 0x57, 0xEA, 0x40, 0xC2, 0x56, 0x4B, 0x83, - 0xC3, 0xAB, 0xB7, 0x1A, 0x87, 0xC1, 0x1B, 0xD1, - 0x8D, 0x78, 0x91, 0xC4, 0x49, 0xDB, 0xBE, 0x79, - 0xB4, 0xA4, 0xFB, 0x04, 0x83, 0x07, 0xCE, 0x0E, - 0x81, 0x2B, 0x2C, 0x68, 0xEC, 0xAB, 0x77, 0xFD, - 0x11, 0x11, 0x52, 0x6A, 0xB0, 0x81, 0x73, 0x06, - 0xCE, 0xBC, 0xB0, 0x49, 0x7C, 0x55, 0x24, 0x31, - 0xCE, 0x15, 0xE4, 0xAB, 0x52, 0x28, 0x3F, 0x67, - 0x94, 0x80, 0xD6, 0x9D, 0xDD, 0xE1, 0xF2, 0x57, - 0x9C, 0xFD, 0xBE, 0x0B, 0xCA, 0x95, 0xFC, 0x5B, - 0x2D, 0xB0, 0xC5, 0xCC, 0x76, 0xA3, 0x19, 0x50, - 0xF5, 0x11, 0x6A, 0xAE, 0x5F, 0x02, 0xD4, 0x67, - 0x10, 0xE4, 0x25, 0x7A, 0x75, 0xFD, 0xED, 0xF2, - 0xF4, 0x7C, 0xE3, 0x7C, 0x20, 0x3E, 0x7F, 0x24, - 0xD3, 0xC9, 0x17, 0x97, 0x13, 0xC5, 0xD8, 0x07, - 0xC2, 0x96, 0x14, 0x9A, 0x75, 0xCC, 0xB4, 0x44, - 0xF0, 0xC6, 0xF6, 0xAB, 0xDD, 0x2D, 0xBB, 0x29, - 0x85, 0xFE, 0x26, 0x74, 0x82, 0x85, 0x8A, 0x1E - }; -#endif /* WOLFSSL_NO_ML_DSA_65 */ -#ifndef WOLFSSL_NO_ML_DSA_87 - static const byte seed_87[] = { - 0x38, 0x35, 0x9F, 0xBC, 0xD7, 0x95, 0x82, 0xCF, - 0xFE, 0x60, 0x9E, 0x13, 0x7E, 0xE2, 0xEF, 0xE8, - 0xA8, 0xDB, 0xCB, 0xAD, 0x18, 0xBA, 0x92, 0xBB, - 0x43, 0x3A, 0xB4, 0xF0, 0x9B, 0x49, 0x29, 0x9D - }; - static const byte pk_87[] = { - 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, - 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, - 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, - 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, - 0x83, 0x01, 0xE6, 0x66, 0xF5, 0x9D, 0x3E, 0xC5, - 0x04, 0x4D, 0xE4, 0x56, 0x78, 0x8F, 0xDE, 0x19, - 0xEB, 0x39, 0x67, 0x7B, 0x5F, 0x9F, 0xE1, 0x41, - 0x50, 0xDA, 0x46, 0x3A, 0x70, 0x6F, 0x3B, 0xAF, - 0x71, 0x5B, 0x95, 0x33, 0x6B, 0x2D, 0x68, 0x5A, - 0x7C, 0xD7, 0x88, 0x07, 0x13, 0xE4, 0x58, 0x7B, - 0xF7, 0xD8, 0x57, 0xBF, 0x7E, 0x31, 0x56, 0x96, - 0xB8, 0xD0, 0xD9, 0xD4, 0x9E, 0x14, 0x29, 0x18, - 0xBF, 0x09, 0x74, 0xE7, 0xF4, 0x32, 0x37, 0xD4, - 0xBE, 0x3A, 0xD3, 0x94, 0x59, 0x9E, 0x3D, 0x39, - 0xBB, 0x76, 0x49, 0x93, 0x25, 0x53, 0x44, 0x7E, - 0x5D, 0x5A, 0xCC, 0x34, 0x99, 0x93, 0x01, 0x76, - 0xEC, 0xD3, 0xA8, 0x44, 0xA4, 0x25, 0xF5, 0x0D, - 0x05, 0x11, 0xC9, 0x22, 0x6C, 0x4B, 0x9A, 0x24, - 0xF2, 0xA0, 0x11, 0xCD, 0x88, 0xD3, 0x23, 0x08, - 0xE0, 0x31, 0x2A, 0x0C, 0x87, 0xCC, 0x34, 0xA9, - 0x95, 0x82, 0x3C, 0x65, 0xF4, 0xF0, 0xF9, 0x8E, - 0x50, 0xC3, 0x77, 0x88, 0xCE, 0x38, 0xDC, 0x28, - 0xFB, 0x8B, 0x9B, 0xFA, 0xAF, 0xA9, 0x04, 0xB5, - 0x41, 0xEE, 0x71, 0x2F, 0x6A, 0x04, 0x1E, 0x06, - 0x11, 0x37, 0x4F, 0x6B, 0xF1, 0x7E, 0xAC, 0x0B, - 0xD5, 0x6F, 0x3B, 0x6B, 0xF3, 0x36, 0xDA, 0x92, - 0x42, 0x07, 0x0C, 0x24, 0x69, 0xA2, 0x0C, 0x4D, - 0x16, 0x16, 0x14, 0x9A, 0x61, 0x59, 0x25, 0x20, - 0x11, 0xD2, 0x99, 0xF9, 0x3F, 0x98, 0x6D, 0x87, - 0x5D, 0xD3, 0x0B, 0x38, 0xA2, 0x25, 0x49, 0x17, - 0x45, 0x70, 0x13, 0x8C, 0x2B, 0xB3, 0xAA, 0x9C, - 0xBE, 0xA9, 0x19, 0x74, 0xF3, 0xD8, 0x9B, 0xF5, - 0xAE, 0x32, 0xBE, 0x9E, 0x58, 0xB8, 0x54, 0xA2, - 0xF8, 0xE8, 0x6F, 0xF7, 0x67, 0x80, 0xC0, 0x34, - 0x90, 0xF4, 0x67, 0xDB, 0x06, 0x51, 0xC2, 0x0B, - 0x1D, 0xF6, 0x0E, 0xB9, 0x7A, 0x3C, 0x99, 0xD9, - 0xBD, 0x66, 0x4B, 0xE6, 0xA5, 0xE4, 0xC8, 0xA8, - 0xAD, 0x4C, 0xC3, 0x63, 0x90, 0xD7, 0x00, 0x4E, - 0x4B, 0xB4, 0x21, 0xDA, 0xED, 0x65, 0x4C, 0x35, - 0x7D, 0xA4, 0xD6, 0x84, 0x98, 0x93, 0x3E, 0xC7, - 0x17, 0x77, 0xAD, 0x64, 0xC2, 0xAE, 0x01, 0x3C, - 0x73, 0xEB, 0x45, 0x7C, 0x68, 0xEF, 0x9A, 0x74, - 0x5A, 0xDE, 0xEB, 0x4F, 0xDF, 0xC8, 0x79, 0xE7, - 0x74, 0xD0, 0x3F, 0xAF, 0x6B, 0x14, 0xAA, 0xB1, - 0x07, 0x52, 0xE2, 0x4B, 0x52, 0xD0, 0xF2, 0xD9, - 0x4D, 0x54, 0x0A, 0x1E, 0xBE, 0x10, 0xF5, 0x97, - 0xE5, 0x14, 0x44, 0x2D, 0x6C, 0x13, 0xC2, 0xE2, - 0x49, 0x8E, 0x8A, 0xF3, 0x01, 0x7C, 0x52, 0xDB, - 0x23, 0x3A, 0x90, 0x71, 0x7D, 0xF2, 0x5B, 0x4D, - 0x07, 0x2B, 0x7D, 0x88, 0xEE, 0x87, 0x31, 0xD1, - 0x68, 0x24, 0xC9, 0x5D, 0x1F, 0xB9, 0x83, 0xC4, - 0x49, 0xDE, 0xB4, 0x66, 0x27, 0x60, 0x60, 0xFE, - 0xE4, 0xC7, 0xEE, 0x38, 0x14, 0x51, 0xF2, 0x32, - 0xC2, 0x9C, 0x7C, 0x32, 0x20, 0x85, 0x0C, 0x61, - 0xD1, 0xC3, 0xC0, 0x0D, 0xB1, 0xCD, 0x97, 0x26, - 0xA0, 0x2A, 0x56, 0x60, 0x9F, 0x3A, 0x65, 0xD3, - 0xD1, 0x64, 0x60, 0x45, 0x88, 0xCD, 0x9B, 0x43, - 0x14, 0x12, 0xF1, 0xAD, 0xD9, 0x14, 0xC5, 0xC2, - 0xDA, 0xBB, 0xC9, 0x04, 0x67, 0xC0, 0xC4, 0xEA, - 0x5F, 0x76, 0xE2, 0x4A, 0xA6, 0x18, 0x76, 0x5F, - 0x8B, 0x06, 0x36, 0xD7, 0xB0, 0x65, 0xE1, 0xF4, - 0xE6, 0xF6, 0x22, 0xEA, 0xE1, 0x71, 0x52, 0x45, - 0x8C, 0x76, 0x65, 0x86, 0x77, 0x2D, 0x36, 0x3F, - 0xA9, 0x92, 0x14, 0xF4, 0x72, 0xB0, 0xDB, 0x8A, - 0x1E, 0x49, 0xD8, 0x2D, 0x02, 0x78, 0xF2, 0x95, - 0x8B, 0x0A, 0xAA, 0x15, 0x86, 0xDB, 0x13, 0x4B, - 0xDF, 0xD2, 0x43, 0x87, 0x42, 0x49, 0x50, 0x07, - 0xE2, 0xFE, 0x5B, 0x60, 0xE2, 0x46, 0x39, 0x92, - 0x26, 0x94, 0x7A, 0x12, 0xEA, 0x17, 0x63, 0x1C, - 0xAA, 0x53, 0x46, 0x87, 0xCB, 0x75, 0xC0, 0x60, - 0xB4, 0x79, 0x7E, 0xAB, 0x82, 0x77, 0xCC, 0x4F, - 0x8A, 0x7A, 0x20, 0x38, 0x76, 0x06, 0xEF, 0xE2, - 0xDB, 0xD3, 0xE7, 0x36, 0x24, 0x92, 0x77, 0xD9, - 0x0F, 0xCA, 0xB9, 0x92, 0xA8, 0xC9, 0x9E, 0x85, - 0xAB, 0x03, 0xEB, 0x4C, 0xAC, 0x5D, 0x88, 0x55, - 0x39, 0x58, 0x52, 0x8A, 0xF9, 0x29, 0x74, 0x71, - 0x81, 0x35, 0xF1, 0xD0, 0xC7, 0x93, 0xEB, 0x00, - 0x0E, 0xA0, 0xAE, 0xC3, 0xEC, 0x18, 0x58, 0xFD, - 0xD1, 0x86, 0x88, 0xD1, 0xDA, 0x27, 0x27, 0x8D, - 0xEB, 0xF2, 0xCA, 0x81, 0x10, 0xBA, 0x4A, 0x20, - 0x4F, 0x79, 0x30, 0xE1, 0xC8, 0xCE, 0xEC, 0xAF, - 0xB7, 0x3F, 0x75, 0xDD, 0xB3, 0x4C, 0x5C, 0x55, - 0x96, 0x8A, 0x79, 0x33, 0x05, 0x84, 0x26, 0xB5, - 0x5D, 0x03, 0x9F, 0x72, 0x92, 0xAC, 0x43, 0xF6, - 0x45, 0x84, 0xF6, 0xDF, 0x18, 0x7A, 0x1D, 0x6B, - 0x00, 0x3F, 0x51, 0x4C, 0xC1, 0x3B, 0x26, 0xC2, - 0xF3, 0x48, 0x19, 0x5A, 0xA3, 0x21, 0xDE, 0x6A, - 0x27, 0xEC, 0x11, 0x34, 0x8D, 0xE5, 0x0D, 0x82, - 0x5A, 0x29, 0x64, 0xC6, 0x31, 0x99, 0x2E, 0x4B, - 0x0B, 0x42, 0x5B, 0x1B, 0xEB, 0x4F, 0x96, 0x00, - 0xE3, 0xAD, 0xC4, 0x43, 0x1C, 0xF2, 0xE8, 0x8B, - 0x42, 0x23, 0xD2, 0xDB, 0x66, 0x3C, 0x3C, 0xE7, - 0x0E, 0xF8, 0x5D, 0xDD, 0x56, 0xA9, 0xBA, 0xF1, - 0x38, 0xA9, 0xD7, 0xED, 0xD8, 0x94, 0x13, 0x1C, - 0x3A, 0x8F, 0x41, 0xA0, 0x4E, 0xF9, 0xF8, 0x67, - 0x52, 0xB7, 0x21, 0x81, 0xFA, 0xBB, 0x37, 0xC8, - 0x6B, 0x87, 0x7E, 0x61, 0xD6, 0x0E, 0xED, 0x95, - 0xEE, 0xFF, 0xAB, 0xE6, 0x37, 0x6E, 0x14, 0xAC, - 0xA8, 0x17, 0xC5, 0xF4, 0x19, 0x61, 0xAF, 0x8A, - 0x78, 0x49, 0xBA, 0xC0, 0x94, 0x91, 0x7B, 0x2D, - 0x13, 0x22, 0x76, 0xB6, 0xB3, 0x48, 0x6A, 0xFF, - 0x95, 0x0D, 0x23, 0xD4, 0xAA, 0xDC, 0x24, 0xCE, - 0x98, 0xA5, 0x26, 0x9E, 0x1C, 0x69, 0x91, 0x79, - 0x60, 0xA3, 0x1E, 0xE0, 0x9A, 0x52, 0x7C, 0x35, - 0x81, 0x75, 0xCA, 0xA0, 0xCB, 0x1B, 0x01, 0x8E, - 0x95, 0x26, 0xD9, 0x35, 0x34, 0xEA, 0xDB, 0xAC, - 0xB5, 0x2B, 0x27, 0x3D, 0x73, 0x5E, 0x22, 0xDD, - 0x0D, 0x5C, 0x28, 0xFA, 0x3E, 0x47, 0xCF, 0xE9, - 0x0B, 0x52, 0x15, 0xAE, 0x24, 0xF1, 0x46, 0xC3, - 0x46, 0x4B, 0xFE, 0xAF, 0x01, 0xD2, 0x8D, 0xAA, - 0x55, 0x3C, 0x1E, 0x94, 0x42, 0x8A, 0x10, 0x4A, - 0x9D, 0x78, 0xAE, 0xC7, 0x62, 0x59, 0x1E, 0x88, - 0x79, 0xF7, 0x68, 0x51, 0xCF, 0xB4, 0x64, 0x85, - 0x66, 0x72, 0x1B, 0x0C, 0xAC, 0x1F, 0x14, 0xFE, - 0x16, 0x14, 0x9A, 0x9D, 0x82, 0x10, 0xCC, 0x8F, - 0x2F, 0x50, 0xDE, 0xF7, 0xB4, 0x6C, 0x84, 0x3B, - 0xE9, 0x3B, 0xD8, 0xD5, 0x56, 0x02, 0x49, 0x33, - 0x50, 0xAB, 0x56, 0x0E, 0xA5, 0xBA, 0x17, 0x71, - 0x64, 0x23, 0xBE, 0x0E, 0xB8, 0x36, 0x0A, 0xB1, - 0x09, 0xD8, 0xFB, 0x18, 0xBF, 0xEA, 0x04, 0x08, - 0x47, 0xB7, 0x33, 0x51, 0x45, 0xD4, 0xF2, 0x00, - 0xD1, 0x9C, 0xF6, 0xFE, 0x7B, 0xAC, 0x91, 0x7F, - 0x42, 0x6C, 0x9B, 0x3D, 0x39, 0xA9, 0xCA, 0x43, - 0x29, 0x81, 0x8F, 0x24, 0x0E, 0x7D, 0xA3, 0x82, - 0x76, 0x10, 0x72, 0xF4, 0xA6, 0x50, 0x5E, 0xA8, - 0xE7, 0x6C, 0x1E, 0x44, 0x6F, 0xEB, 0x66, 0x25, - 0xE3, 0x8D, 0xDB, 0xCD, 0x3C, 0xDA, 0x81, 0xE8, - 0x3B, 0xF7, 0x68, 0xF3, 0xE0, 0x1D, 0x9D, 0x26, - 0x3B, 0x36, 0x73, 0x03, 0xAE, 0x15, 0x6C, 0x0B, - 0x71, 0x83, 0x36, 0x4A, 0x1E, 0x79, 0x41, 0xA0, - 0x92, 0x98, 0xA3, 0xAD, 0xF7, 0xBD, 0x23, 0x1E, - 0x61, 0x14, 0xB9, 0xDC, 0xE7, 0x95, 0x2B, 0x11, - 0x3F, 0x78, 0x16, 0x31, 0x38, 0xB9, 0x26, 0x6F, - 0x84, 0x3F, 0x1E, 0xD9, 0x7D, 0x9C, 0x2B, 0x16, - 0x3A, 0x6E, 0x8B, 0xD4, 0xC1, 0xAB, 0x4E, 0x17, - 0x93, 0x67, 0xC5, 0xAC, 0x96, 0xCE, 0xCF, 0x50, - 0x50, 0xFE, 0x82, 0x1F, 0xDF, 0xA4, 0x4E, 0x9E, - 0x68, 0x0B, 0x61, 0xC6, 0x01, 0x89, 0x32, 0xDF, - 0x71, 0x78, 0x11, 0x45, 0x9A, 0xF2, 0x54, 0x2E, - 0x2C, 0xDE, 0x77, 0x17, 0x8C, 0x2E, 0x98, 0x80, - 0xF0, 0x11, 0xE4, 0x05, 0xEA, 0xFA, 0x59, 0xC8, - 0xCB, 0xBE, 0xD7, 0x6E, 0x5A, 0x19, 0x41, 0x10, - 0x4B, 0x1B, 0x9D, 0x3A, 0x60, 0x49, 0x1C, 0x95, - 0x47, 0x55, 0xE0, 0x2E, 0x89, 0x41, 0x03, 0xF1, - 0xF4, 0x97, 0x74, 0x75, 0xE9, 0xEA, 0x36, 0x60, - 0x9F, 0xD6, 0x7C, 0x9D, 0xE3, 0x18, 0xED, 0xA2, - 0x37, 0x0D, 0xCC, 0xDB, 0xB9, 0xCE, 0xF7, 0xAE, - 0x63, 0x60, 0x90, 0x5E, 0xC2, 0x20, 0x83, 0x8C, - 0x97, 0x69, 0x82, 0x34, 0x41, 0xCD, 0xD0, 0xDA, - 0x8E, 0xF0, 0xAB, 0xE5, 0xF2, 0xD1, 0xD7, 0x6E, - 0x2F, 0xE0, 0x8F, 0xEF, 0x53, 0xDE, 0x1D, 0x61, - 0x66, 0xAB, 0x1A, 0x92, 0xB1, 0xAC, 0x09, 0x3E, - 0x5A, 0xBF, 0x76, 0x58, 0xC4, 0xB5, 0x72, 0x87, - 0xF2, 0xD1, 0xFD, 0x7B, 0x82, 0xDE, 0xDA, 0xF8, - 0xD5, 0xA4, 0xFB, 0xAC, 0x4B, 0x35, 0xD5, 0x82, - 0x31, 0x69, 0x4E, 0x16, 0x24, 0x97, 0x57, 0x8A, - 0xBD, 0x7A, 0xA7, 0xC8, 0xFE, 0x7B, 0x35, 0x41, - 0xA7, 0xF1, 0x8E, 0x54, 0xE8, 0xB7, 0xF0, 0x87, - 0x64, 0xC5, 0xE6, 0x84, 0x49, 0xDF, 0x65, 0x59, - 0x01, 0x54, 0x98, 0x32, 0xD6, 0x28, 0xFA, 0x63, - 0xD2, 0xB2, 0xC5, 0xA1, 0x50, 0x93, 0x39, 0x94, - 0xA9, 0x86, 0x33, 0x17, 0xAD, 0x40, 0xD7, 0x78, - 0xD9, 0xD2, 0xC0, 0x5C, 0x78, 0x98, 0x85, 0x0B, - 0x90, 0x17, 0x32, 0x23, 0xC7, 0xA0, 0xAF, 0x89, - 0x0F, 0xD7, 0xE6, 0x62, 0x21, 0xB6, 0xF0, 0x63, - 0x18, 0xB2, 0xED, 0x5E, 0x19, 0x9C, 0xB4, 0x24, - 0x88, 0x5A, 0xB8, 0x41, 0xE7, 0xA4, 0x72, 0x6F, - 0xAB, 0xA2, 0xF9, 0xBB, 0x53, 0xBC, 0x32, 0x36, - 0x43, 0x4C, 0x35, 0xFB, 0xBE, 0x4B, 0x1A, 0x0F, - 0x93, 0xF5, 0x0C, 0x37, 0x89, 0x6C, 0x29, 0xF8, - 0xE3, 0x02, 0xAD, 0x31, 0xED, 0x33, 0x31, 0xD6, - 0x20, 0xE3, 0xB6, 0x29, 0x45, 0x51, 0x01, 0xA1, - 0xF1, 0xCC, 0x7B, 0xA5, 0xE4, 0x6E, 0x68, 0xED, - 0x4A, 0x8C, 0xCC, 0x87, 0xB4, 0xDC, 0x75, 0xBC, - 0x01, 0x62, 0xB6, 0x33, 0x0F, 0x83, 0x3F, 0xBA, - 0x25, 0x75, 0xDF, 0xAF, 0x5B, 0x5F, 0x28, 0xBC, - 0x54, 0xFF, 0x2B, 0xA8, 0x1E, 0x7A, 0x47, 0x31, - 0x3C, 0x15, 0x48, 0x2B, 0x60, 0x5E, 0x66, 0xBB, - 0x38, 0xC6, 0x19, 0x8F, 0x13, 0x92, 0x10, 0x40, - 0x80, 0xFB, 0xE7, 0x8B, 0x86, 0xB1, 0xBC, 0x9A, - 0x6F, 0xB8, 0x81, 0xF5, 0xC7, 0x82, 0x01, 0x47, - 0xE6, 0xBA, 0x14, 0xB8, 0x1A, 0xCC, 0xF2, 0x0C, - 0xAE, 0x96, 0x64, 0x10, 0x94, 0xC2, 0x16, 0x90, - 0x2E, 0xA5, 0xC1, 0x25, 0xF6, 0xC9, 0x35, 0xA1, - 0x50, 0xD7, 0xC9, 0xAC, 0xC5, 0xD9, 0xE2, 0xE5, - 0xD9, 0x0E, 0x38, 0xC0, 0x50, 0x3A, 0xA9, 0x42, - 0x60, 0x17, 0xC7, 0x6A, 0xAF, 0xCD, 0x52, 0x61, - 0xB5, 0x06, 0x27, 0x4E, 0xC1, 0x3A, 0x96, 0x79, - 0xFB, 0x09, 0x79, 0x60, 0x27, 0xA4, 0xBB, 0x75, - 0x9D, 0x92, 0x82, 0x79, 0xB9, 0x4D, 0x84, 0x1A, - 0x09, 0x73, 0x93, 0xBF, 0x7E, 0x5B, 0xD6, 0x9A, - 0x49, 0x6C, 0xC3, 0xDE, 0xCD, 0x2B, 0x0F, 0x07, - 0xF8, 0x33, 0x92, 0xAA, 0xDE, 0x33, 0xDC, 0x51, - 0xB2, 0xA8, 0x4F, 0x6A, 0x07, 0x63, 0x5D, 0xC0, - 0xEF, 0x57, 0xA9, 0xAD, 0x59, 0x59, 0xB6, 0xA5, - 0x0B, 0x7B, 0xA5, 0x09, 0xAD, 0x5B, 0x11, 0xFA, - 0xD2, 0x6B, 0x41, 0x9F, 0x9F, 0x1E, 0x3F, 0x9C, - 0x73, 0x29, 0xB5, 0xA9, 0x53, 0xD7, 0xCC, 0x87, - 0xB2, 0xDE, 0x21, 0x06, 0x11, 0xCF, 0x52, 0xA6, - 0x39, 0xEF, 0x2B, 0x39, 0x08, 0x01, 0x2C, 0xB8, - 0x8E, 0x1D, 0x6F, 0x57, 0x62, 0x50, 0x79, 0xCB, - 0x10, 0x3D, 0x6C, 0x98, 0x10, 0x1A, 0x11, 0xBD, - 0x22, 0x33, 0xB6, 0x56, 0x02, 0xCA, 0x30, 0x49, - 0xBD, 0x32, 0x05, 0x20, 0x41, 0x9F, 0x76, 0xB0, - 0x61, 0xE3, 0x59, 0x8D, 0xE3, 0x81, 0x52, 0xC8, - 0x87, 0x67, 0xD1, 0xA2, 0x4F, 0xBD, 0x02, 0xBB, - 0x10, 0xC3, 0x8E, 0xAC, 0xAE, 0x31, 0x7D, 0xE6, - 0xBB, 0x28, 0x7B, 0x4D, 0x2C, 0xAE, 0x5D, 0xA0, - 0x21, 0x49, 0x65, 0xD8, 0x77, 0x37, 0x78, 0x62, - 0x6E, 0x9B, 0x97, 0x28, 0x59, 0xD8, 0x48, 0x2B, - 0x8D, 0x05, 0x47, 0xE4, 0xF5, 0x6D, 0xFF, 0x87, - 0x68, 0x1D, 0x5B, 0xC5, 0x12, 0x0F, 0x61, 0x3F, - 0xBB, 0xD9, 0x1E, 0x1F, 0x14, 0xE6, 0xDE, 0xFE, - 0x67, 0x2E, 0x2A, 0x7E, 0xAB, 0xCB, 0xBB, 0x9B, - 0x11, 0x08, 0x2C, 0x5E, 0x70, 0x0A, 0xA0, 0xB1, - 0xF7, 0xC1, 0x78, 0x5F, 0xCE, 0xD1, 0x9A, 0x93, - 0xAF, 0xE7, 0xC5, 0x9F, 0xA2, 0x51, 0x9B, 0xCD, - 0xEB, 0x49, 0x4C, 0x3D, 0x13, 0xB2, 0x12, 0x5F, - 0x38, 0x53, 0x23, 0xB8, 0x16, 0xC6, 0x8F, 0x8F, - 0x56, 0x28, 0xC7, 0xC2, 0xAB, 0xFD, 0x02, 0x78, - 0xA3, 0x37, 0x07, 0x3D, 0xA7, 0x4D, 0x16, 0x09, - 0x96, 0x98, 0xC4, 0xB1, 0x14, 0xE8, 0xA8, 0xCE, - 0x34, 0x4E, 0x0A, 0x15, 0xD0, 0xFC, 0x7E, 0xD4, - 0x97, 0xB0, 0x01, 0xD5, 0x3D, 0x4C, 0x96, 0xDC, - 0x39, 0x54, 0xD3, 0xB4, 0xB9, 0x56, 0xCB, 0x9D, - 0x2A, 0x27, 0x2C, 0x51, 0xF1, 0x55, 0x9B, 0x22, - 0x90, 0x4B, 0x40, 0xCC, 0x85, 0x31, 0xE4, 0x0C, - 0xC4, 0x12, 0xC6, 0x8C, 0xB6, 0xEE, 0xA4, 0xA4, - 0x09, 0x0B, 0x38, 0xE2, 0x79, 0x73, 0x29, 0x98, - 0x54, 0x67, 0xE8, 0x18, 0xA5, 0x24, 0xD3, 0x22, - 0x8E, 0xAC, 0xAE, 0x78, 0x25, 0xD3, 0xDA, 0xD2, - 0xEA, 0xA4, 0x22, 0xFD, 0xC7, 0x7A, 0xED, 0x71, - 0xA2, 0x05, 0xDA, 0x78, 0x38, 0xD9, 0x45, 0xE7, - 0xFE, 0xC3, 0x7E, 0x4D, 0xCA, 0x67, 0xE5, 0x04, - 0xCE, 0x35, 0xE5, 0xB0, 0x45, 0xF5, 0x6F, 0x1E, - 0x8D, 0x75, 0x29, 0xEB, 0xD6, 0xF1, 0xAF, 0x7B, - 0x6E, 0x93, 0x9E, 0x2B, 0x7A, 0xB4, 0x02, 0x7D, - 0x37, 0xA5, 0x13, 0x5D, 0x17, 0x2D, 0xA1, 0xAF, - 0x9C, 0xA2, 0xF7, 0x28, 0xA6, 0xF3, 0x7D, 0xE6, - 0x0D, 0xD2, 0x3D, 0x97, 0xD1, 0x1E, 0x75, 0xAB, - 0x1F, 0xD5, 0x1F, 0x8E, 0x9A, 0x13, 0x97, 0xE5, - 0x82, 0x21, 0x59, 0xDB, 0x58, 0x38, 0x02, 0xB3, - 0x2E, 0xEB, 0xB4, 0x56, 0x7E, 0xCE, 0x37, 0x46, - 0xD1, 0xAE, 0x33, 0x31, 0x47, 0x85, 0x64, 0x3D, - 0xD2, 0xA0, 0x74, 0x1E, 0x7F, 0x1B, 0xF2, 0xD2, - 0x61, 0xF2, 0x21, 0x24, 0xE8, 0xDD, 0xD0, 0x8C, - 0x64, 0x0A, 0x48, 0xB5, 0x47, 0x17, 0x51, 0x7C, - 0x21, 0xCD, 0x32, 0x53, 0x28, 0xBC, 0x23, 0x9C, - 0xA0, 0x28, 0xB2, 0x63, 0x0D, 0x06, 0x3C, 0x8C, - 0xC2, 0x0B, 0xE9, 0xBD, 0xB4, 0x85, 0x02, 0xDA, - 0xDD, 0xE7, 0x3F, 0xFE, 0xD5, 0x96, 0x38, 0x16, - 0x53, 0x3E, 0x02, 0x0A, 0xED, 0x12, 0x08, 0x53, - 0x62, 0x55, 0xB1, 0xCC, 0xE9, 0x85, 0x43, 0x31, - 0x27, 0xFF, 0x4F, 0x04, 0xD5, 0xB1, 0xE2, 0xF2, - 0x10, 0x87, 0x04, 0xB8, 0xB9, 0x66, 0x58, 0x8C, - 0x01, 0x56, 0xAF, 0xC2, 0xAE, 0x19, 0x29, 0x86, - 0xFB, 0xEC, 0x44, 0x3B, 0xAE, 0xF6, 0xCB, 0x85, - 0xA6, 0xF2, 0x9C, 0x77, 0x92, 0x40, 0x5A, 0x24, - 0x11, 0x47, 0x10, 0xAE, 0x1C, 0x74, 0x64, 0x44, - 0xFD, 0xF5, 0xFB, 0x65, 0x9E, 0x5E, 0x34, 0x68, - 0x26, 0x20, 0x7B, 0x8C, 0x54, 0x46, 0x3A, 0x06, - 0x17, 0xCE, 0x17, 0xFF, 0x33, 0xE4, 0x0F, 0x93, - 0x1F, 0xE5, 0x76, 0x71, 0x5C, 0x93, 0x2E, 0xF2, - 0x9F, 0xD7, 0x6B, 0x04, 0xA6, 0x9B, 0x58, 0xE0, - 0x30, 0x3D, 0x8E, 0xF2, 0x56, 0x78, 0xC8, 0xB7, - 0x0A, 0xF1, 0x2E, 0x90, 0x45, 0x59, 0x1C, 0x04, - 0xE8, 0xB7, 0x71, 0x06, 0x94, 0x04, 0x15, 0x17, - 0x7E, 0x86, 0x85, 0x93, 0xA0, 0x9C, 0x7E, 0x14, - 0x61, 0x9A, 0x4B, 0x33, 0x2F, 0x9A, 0xDC, 0x3A, - 0x65, 0x8B, 0x86, 0x01, 0x7F, 0x32, 0x65, 0x6C, - 0x54, 0x29, 0xC1, 0x15, 0xE1, 0x10, 0x03, 0x7A, - 0x8C, 0xC7, 0xE5, 0x44, 0x67, 0x7D, 0x2D, 0xD2, - 0x39, 0xA5, 0x9D, 0x54, 0xD0, 0xF3, 0xC7, 0x46, - 0x0E, 0xC1, 0x52, 0x08, 0x34, 0x6B, 0xA5, 0x6D, - 0xF5, 0x08, 0x6C, 0x5D, 0xBC, 0xC4, 0x1E, 0x0C, - 0x95, 0xFC, 0xB6, 0x86, 0x1C, 0x2C, 0x0C, 0x32, - 0xAA, 0xF3, 0x45, 0x4E, 0xFE, 0xE2, 0xFF, 0xBA, - 0x21, 0x4B, 0x43, 0x0E, 0xF2, 0x48, 0xA5, 0x9B, - 0x32, 0x44, 0x4D, 0x8D, 0x0D, 0x3D, 0xB8, 0x7C, - 0x9D, 0x4B, 0x15, 0x36, 0xD1, 0x57, 0x72, 0x8E, - 0xE7, 0x58, 0x5E, 0xF5, 0x32, 0x77, 0x6A, 0x00, - 0x3A, 0x02, 0x3C, 0x0A, 0xB0, 0xE9, 0xFF, 0x55, - 0x71, 0x08, 0xC3, 0x90, 0x68, 0x4D, 0x56, 0x5A, - 0x66, 0x50, 0x63, 0x26, 0x6A, 0xE6, 0x67, 0x0E, - 0xD5, 0x3B, 0x0F, 0xAF, 0x8F, 0xF6, 0x78, 0x29, - 0xBB, 0x73, 0x78, 0x25, 0xB1, 0x53, 0xA9, 0x33, - 0x8C, 0xBE, 0x3D, 0xF1, 0xA4, 0x62, 0x84, 0x9B, - 0x93, 0xA8, 0x1F, 0x84, 0xED, 0x07, 0xBE, 0x6D, - 0x62, 0x40, 0x00, 0x32, 0x74, 0x73, 0x7F, 0x61, - 0x8D, 0xCB, 0x26, 0xE4, 0x82, 0x52, 0xCE, 0x42, - 0x04, 0xDD, 0x31, 0x39, 0xFF, 0x68, 0x76, 0xF4, - 0x3B, 0x30, 0x5D, 0x83, 0x56, 0x20, 0xFE, 0xDF, - 0x79, 0xAA, 0x67, 0x43, 0x3D, 0xC2, 0x52, 0x87, - 0x32, 0x0E, 0x99, 0x17, 0x96, 0x7B, 0x70, 0xB2, - 0xD8, 0x66, 0xD1, 0x7B, 0x69, 0x8B, 0xFF, 0xF2, - 0xB3, 0xAB, 0x95, 0x14, 0x94, 0x9E, 0x58, 0xB5, - 0x7C, 0x68, 0xA4, 0x54, 0x12, 0xC1, 0xFC, 0x42, - 0x1C, 0x76, 0x8B, 0xF5, 0xEE, 0x8A, 0x10, 0xC8, - 0xAE, 0xF5, 0x69, 0x26, 0xF5, 0x1E, 0xC6, 0x2C, - 0x11, 0x56, 0x9F, 0x31, 0xAA, 0x51, 0x78, 0x68, - 0xE5, 0xCA, 0xD8, 0x9E, 0x95, 0x80, 0x66, 0xEB, - 0x9E, 0xDD, 0x72, 0x71, 0xB3, 0x1C, 0xB4, 0xB1, - 0xD6, 0xCE, 0x21, 0x12, 0x25, 0xAE, 0xB5, 0xB5, - 0x7F, 0x74, 0x97, 0x19, 0xDA, 0x07, 0xEC, 0xBE, - 0xFE, 0x03, 0x88, 0x1D, 0xDE, 0x3D, 0x81, 0xE4, - 0x13, 0x5F, 0x2D, 0xC8, 0x1A, 0xF7, 0x79, 0x77, - 0x6C, 0x1B, 0x80, 0x57, 0x16, 0x2A, 0x6C, 0x98, - 0x2F, 0xBB, 0x4D, 0xA6, 0xA9, 0xAD, 0x28, 0x4A, - 0xB1, 0x0C, 0x70, 0x02, 0x20, 0x44, 0xF4, 0x6D, - 0x40, 0x0B, 0xF6, 0xAD, 0x71, 0x82, 0xD1, 0x97, - 0x78, 0x99, 0x83, 0xBE, 0x99, 0x22, 0x79, 0x79, - 0xA1, 0x33, 0x4B, 0xA1, 0x49, 0xD8, 0x69, 0xBA, - 0x1C, 0x40, 0x88, 0x12, 0x34, 0x35, 0xBF, 0x97, - 0x85, 0x41, 0x35, 0x6D, 0xAF, 0x17, 0x1F, 0x33, - 0xAD, 0xB1, 0xC9, 0x79, 0x07, 0xA0, 0xFB, 0x58, - 0x45, 0x07, 0x4A, 0x85, 0xD2, 0x6F, 0x54, 0x61, - 0x35, 0xAE, 0xD0, 0xF9, 0x1B, 0xE4, 0x53, 0x9C, - 0x12, 0xBF, 0x94, 0x11, 0xE4, 0xB5, 0x56, 0xF6, - 0x87, 0xD0, 0x69, 0xDB, 0x6B, 0x21, 0xFE, 0x2B, - 0x7F, 0x32, 0x18, 0x87, 0x44, 0x8C, 0xEA, 0x55, - 0xDB, 0x19, 0xFB, 0xB8, 0xB0, 0x48, 0x2A, 0x55, - 0xAE, 0xC1, 0x67, 0x38, 0xD7, 0x4C, 0xD2, 0x65, - 0x09, 0x38, 0x36, 0xBE, 0x99, 0xD4, 0xFB, 0x53, - 0xE9, 0xB0, 0x14, 0xB0, 0x37, 0xCD, 0xBF, 0xE9 - }; - static const byte sk_87[] = { - 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, - 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, - 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, - 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, - 0x3B, 0x9A, 0xC2, 0xC1, 0x42, 0x2A, 0x1A, 0xE8, - 0x02, 0xDD, 0xD7, 0x46, 0x4D, 0x3F, 0x32, 0x72, - 0x9A, 0x3C, 0x7D, 0xE8, 0x94, 0xD5, 0x06, 0xAC, - 0xAD, 0x25, 0xCE, 0xB3, 0x72, 0xEA, 0x31, 0x49, - 0xC9, 0x87, 0x80, 0xDC, 0xD1, 0x31, 0x4B, 0xAA, - 0x29, 0xB9, 0xB8, 0x07, 0x75, 0x4C, 0x47, 0xDE, - 0x5D, 0xCA, 0x95, 0x40, 0x64, 0xF2, 0x85, 0x28, - 0xB8, 0x15, 0xFE, 0x27, 0xB7, 0x9A, 0xC5, 0x06, - 0xB3, 0xAD, 0x76, 0x29, 0xD2, 0xC9, 0x71, 0xAB, - 0x8F, 0x28, 0x2E, 0x0C, 0x6E, 0x7E, 0x55, 0x48, - 0xEE, 0x0E, 0x11, 0x32, 0x42, 0xB7, 0xA0, 0xE0, - 0x64, 0xA6, 0xDB, 0xCE, 0x30, 0xC5, 0x61, 0x9B, - 0x19, 0x80, 0x08, 0x89, 0xA0, 0x44, 0x04, 0xB5, - 0x00, 0x13, 0xC0, 0x88, 0xC1, 0x30, 0x29, 0x62, - 0x12, 0x4C, 0xD3, 0xB4, 0x91, 0x0A, 0x35, 0x2C, - 0x43, 0x12, 0x31, 0x19, 0x99, 0x65, 0x22, 0x18, - 0x52, 0x02, 0xC3, 0x85, 0x23, 0x44, 0x0D, 0x90, - 0x24, 0x4A, 0x1A, 0x30, 0x22, 0x44, 0x28, 0x61, - 0x81, 0x06, 0x29, 0x18, 0x97, 0x68, 0x0A, 0x20, - 0x09, 0x08, 0x32, 0x6A, 0x44, 0xA4, 0x4C, 0x44, - 0x90, 0x21, 0x8A, 0x16, 0x68, 0x9A, 0xA8, 0x51, - 0x1A, 0xA5, 0x2C, 0x62, 0x46, 0x8D, 0x04, 0xC3, - 0x40, 0xD3, 0x86, 0x28, 0x60, 0xA4, 0x60, 0x13, - 0x18, 0x70, 0x84, 0x94, 0x8C, 0x63, 0xC0, 0x44, - 0x04, 0xA9, 0x28, 0x20, 0x08, 0x20, 0x43, 0x16, - 0x2A, 0x23, 0x29, 0x2D, 0x1A, 0xB1, 0x29, 0x48, - 0xB6, 0x09, 0x21, 0x88, 0x31, 0x00, 0xC5, 0x30, - 0x00, 0xC4, 0x8C, 0xD9, 0x82, 0x68, 0xE1, 0x30, - 0x4C, 0x63, 0x32, 0x45, 0x0C, 0x32, 0x86, 0x18, - 0x08, 0x31, 0x91, 0x98, 0x0D, 0x10, 0xB8, 0x70, - 0x9B, 0x30, 0x22, 0x64, 0x04, 0x08, 0x93, 0xA4, - 0x8C, 0x21, 0xC9, 0x70, 0x0C, 0x35, 0x71, 0x5B, - 0x00, 0x0D, 0x14, 0x31, 0x22, 0xCC, 0x98, 0x10, - 0x21, 0x04, 0x80, 0x9B, 0x28, 0x64, 0x1C, 0x30, - 0x80, 0x21, 0x30, 0x71, 0x18, 0x33, 0x50, 0x24, - 0x25, 0x44, 0x08, 0x17, 0x8C, 0xC0, 0x08, 0x48, - 0x84, 0x44, 0x90, 0x48, 0x98, 0x30, 0xCA, 0x44, - 0x00, 0x09, 0x19, 0x51, 0x19, 0x23, 0x0C, 0x52, - 0x20, 0x0E, 0x49, 0x06, 0x32, 0x1C, 0x15, 0x4E, - 0x19, 0x48, 0x85, 0x13, 0x25, 0x49, 0xA3, 0x00, - 0x04, 0x08, 0x15, 0x6D, 0x20, 0x41, 0x0C, 0xDA, - 0x42, 0x52, 0xC1, 0x34, 0x8C, 0x00, 0x31, 0x69, - 0x43, 0x82, 0x24, 0x64, 0x94, 0x6D, 0x1C, 0x81, - 0x11, 0x01, 0x96, 0x21, 0x4B, 0x02, 0x00, 0xCA, - 0x28, 0x84, 0xCC, 0x46, 0x64, 0x51, 0x18, 0x6A, - 0x18, 0x10, 0x00, 0xA4, 0x98, 0x21, 0x60, 0xB0, - 0x68, 0x03, 0x94, 0x6C, 0x94, 0x48, 0x51, 0x80, - 0x40, 0x46, 0x92, 0x22, 0x2C, 0x23, 0x44, 0x69, - 0x98, 0x26, 0x4D, 0x1C, 0x01, 0x08, 0x52, 0x02, - 0x20, 0x8A, 0xA6, 0x08, 0x0A, 0x31, 0x61, 0x93, - 0x40, 0x0E, 0x9C, 0xC8, 0x11, 0x81, 0x32, 0x2E, - 0x21, 0x15, 0x84, 0x84, 0xC2, 0x41, 0x00, 0x22, - 0x72, 0x54, 0x22, 0x62, 0x58, 0x06, 0x92, 0x48, - 0x48, 0x44, 0x11, 0x27, 0x04, 0x04, 0xC0, 0x11, - 0x92, 0x82, 0x45, 0xA1, 0xC6, 0x8C, 0xE3, 0x32, - 0x66, 0xC1, 0x38, 0x72, 0x5A, 0x86, 0x01, 0x0C, - 0xC9, 0x90, 0x84, 0x34, 0x08, 0x58, 0xA8, 0x60, - 0x80, 0xC0, 0x70, 0xD0, 0x26, 0x62, 0x9B, 0x30, - 0x2A, 0x04, 0x29, 0x69, 0x04, 0x10, 0x8D, 0x0B, - 0xB9, 0x04, 0x50, 0x46, 0x28, 0x50, 0x48, 0x24, - 0xD0, 0x48, 0x05, 0xA2, 0x48, 0x02, 0xC3, 0x20, - 0x8C, 0xA0, 0x14, 0x00, 0x41, 0x38, 0x21, 0x4B, - 0x24, 0x01, 0x04, 0xB5, 0x49, 0x42, 0x00, 0x00, - 0x0C, 0x24, 0x28, 0x12, 0x40, 0x84, 0xA2, 0x20, - 0x44, 0x9B, 0x06, 0x90, 0x63, 0xC0, 0x88, 0x8C, - 0x14, 0x21, 0x49, 0x12, 0x10, 0x54, 0x16, 0x24, - 0x20, 0x87, 0x44, 0x50, 0x10, 0x85, 0x0C, 0xB5, - 0x64, 0xDB, 0x24, 0x41, 0xD0, 0x42, 0x29, 0x9A, - 0x16, 0x8A, 0x21, 0xB4, 0x4C, 0x13, 0xB7, 0x70, - 0x10, 0xC0, 0x85, 0x19, 0x02, 0x69, 0xCC, 0x40, - 0x61, 0x1C, 0x48, 0x46, 0x98, 0x06, 0x25, 0x60, - 0x14, 0x46, 0xE4, 0x22, 0x62, 0x24, 0x27, 0x22, - 0x62, 0x24, 0x29, 0x44, 0xC6, 0x2D, 0x08, 0x31, - 0x84, 0x20, 0x32, 0x21, 0x04, 0xB4, 0x61, 0x0A, - 0x38, 0x12, 0xD9, 0x28, 0x44, 0xA4, 0x08, 0x20, - 0xCC, 0xA8, 0x29, 0x0B, 0x21, 0x31, 0x0A, 0x34, - 0x29, 0x03, 0x21, 0x40, 0xC1, 0xA2, 0x6C, 0x8A, - 0x16, 0x12, 0x52, 0xA6, 0x64, 0xA3, 0xB2, 0x51, - 0x04, 0x29, 0x51, 0xC4, 0x04, 0x91, 0x63, 0xB0, - 0x2D, 0x14, 0x44, 0x30, 0x8C, 0x40, 0x66, 0x0C, - 0x40, 0x0C, 0x01, 0xA5, 0x2C, 0x09, 0x94, 0x2D, - 0x62, 0xC6, 0x11, 0x03, 0x98, 0x50, 0x19, 0x10, - 0x4D, 0x19, 0xA8, 0x28, 0xD3, 0x86, 0x40, 0xC0, - 0x30, 0x65, 0x54, 0xA6, 0x71, 0xE0, 0xB4, 0x85, - 0x9B, 0x86, 0x10, 0x04, 0x36, 0x69, 0xD0, 0x46, - 0x29, 0x18, 0xA3, 0x71, 0x40, 0x22, 0x49, 0x00, - 0x43, 0x85, 0xCB, 0x40, 0x28, 0x89, 0x36, 0x66, - 0x41, 0x22, 0x69, 0xA4, 0x28, 0x51, 0xD9, 0x80, - 0x29, 0x14, 0x07, 0x21, 0xDA, 0x80, 0x91, 0x1B, - 0x26, 0x50, 0x5B, 0xA0, 0x60, 0x99, 0x42, 0x71, - 0x50, 0x88, 0x49, 0x10, 0x23, 0x09, 0x5A, 0x90, - 0x21, 0x22, 0x27, 0x8E, 0x43, 0xB2, 0x70, 0x0C, - 0xC9, 0x4C, 0xA4, 0x02, 0x70, 0x92, 0x40, 0x10, - 0x0A, 0x39, 0x70, 0x02, 0x36, 0x0E, 0x11, 0x30, - 0x41, 0xD8, 0x40, 0x2D, 0x1B, 0x24, 0x6D, 0xC3, - 0x92, 0x61, 0x4C, 0x86, 0x8D, 0x21, 0xB8, 0x00, - 0xD3, 0x24, 0x22, 0x12, 0xC8, 0x21, 0x12, 0x99, - 0x85, 0x09, 0x16, 0x0C, 0x5A, 0xA2, 0x24, 0x09, - 0x34, 0x42, 0x10, 0xA2, 0x24, 0x03, 0x42, 0x8C, - 0xC0, 0xB2, 0x8D, 0x12, 0xB6, 0x69, 0x63, 0x34, - 0x0D, 0xCC, 0xB0, 0x65, 0xA1, 0x12, 0x11, 0x4A, - 0x38, 0x69, 0xCC, 0x14, 0x81, 0x58, 0x44, 0x09, - 0x54, 0xA6, 0x80, 0x0C, 0xA8, 0x05, 0xC4, 0x38, - 0x8A, 0x84, 0x06, 0x01, 0x9B, 0x32, 0x2D, 0x83, - 0x12, 0x90, 0x09, 0x02, 0x60, 0xA1, 0x28, 0x88, - 0x58, 0x10, 0x41, 0x24, 0x40, 0x02, 0x19, 0x34, - 0x48, 0x18, 0xA0, 0x4D, 0x00, 0x10, 0x62, 0x13, - 0x22, 0x50, 0xE3, 0x38, 0x21, 0x9A, 0x96, 0x21, - 0x53, 0x08, 0x80, 0x51, 0x26, 0x01, 0x99, 0xC4, - 0x28, 0x1B, 0xB9, 0x71, 0x04, 0x97, 0x84, 0x04, - 0x05, 0x2C, 0xA0, 0xC2, 0x10, 0xD3, 0x42, 0x81, - 0x81, 0x42, 0x4D, 0x61, 0x84, 0x6C, 0x5A, 0x30, - 0x49, 0x1B, 0xC2, 0x24, 0xC0, 0x20, 0x28, 0xCA, - 0x92, 0x2D, 0x4A, 0x90, 0x10, 0x04, 0x27, 0x86, - 0x4C, 0x96, 0x21, 0x09, 0x19, 0x45, 0x14, 0x82, - 0x2C, 0x11, 0xA6, 0x91, 0x13, 0xB8, 0x04, 0x03, - 0x18, 0x70, 0x01, 0xA2, 0x51, 0x52, 0x14, 0x49, - 0x5A, 0x02, 0x30, 0xCB, 0x30, 0x2C, 0x94, 0x10, - 0x2C, 0x00, 0x49, 0x86, 0x09, 0xA0, 0x25, 0xC2, - 0x12, 0x4C, 0x1B, 0x02, 0x69, 0x40, 0xA4, 0x44, - 0x41, 0x16, 0x62, 0x02, 0x25, 0x28, 0xDC, 0xA2, - 0x2D, 0x00, 0x16, 0x42, 0x58, 0x30, 0x66, 0x5B, - 0x86, 0x24, 0xD4, 0x24, 0x48, 0xDB, 0x26, 0x0C, - 0x4C, 0x08, 0x85, 0x01, 0x90, 0x49, 0x21, 0x24, - 0x41, 0x54, 0x06, 0x84, 0x02, 0x43, 0x4A, 0x24, - 0x42, 0x05, 0x40, 0x14, 0x48, 0xCA, 0x44, 0x84, - 0xC0, 0x42, 0x0C, 0x98, 0x26, 0x04, 0x9C, 0xA2, - 0x05, 0xD1, 0xC2, 0x51, 0x13, 0x01, 0x86, 0x1C, - 0xA1, 0x50, 0xD9, 0x02, 0x50, 0x0C, 0x39, 0x86, - 0x8C, 0x00, 0x31, 0x22, 0x05, 0x48, 0xD3, 0x10, - 0x81, 0x12, 0x48, 0x05, 0xD1, 0x08, 0x69, 0x62, - 0x38, 0x2C, 0x0A, 0x23, 0x70, 0x9B, 0x44, 0x72, - 0xE3, 0x48, 0x6E, 0x22, 0x96, 0x70, 0x14, 0x33, - 0x6C, 0xD8, 0x90, 0x29, 0x03, 0x00, 0x49, 0x63, - 0x20, 0x8A, 0x03, 0x91, 0x25, 0x08, 0x89, 0x21, - 0xC0, 0x82, 0x0C, 0x99, 0x40, 0x32, 0xC2, 0x34, - 0x4E, 0x4B, 0x98, 0x69, 0x09, 0x80, 0x44, 0xE4, - 0x04, 0x69, 0x94, 0x20, 0x09, 0x99, 0x24, 0x6D, - 0x09, 0xA9, 0x60, 0x01, 0x29, 0x2D, 0xC8, 0x42, - 0x28, 0x8A, 0x34, 0x02, 0xE4, 0x08, 0x70, 0x0C, - 0x23, 0x6E, 0x0A, 0x05, 0x49, 0x64, 0x44, 0x2A, - 0x82, 0xC8, 0x00, 0x02, 0x48, 0x31, 0xCB, 0x90, - 0x50, 0x1C, 0x05, 0x68, 0x12, 0x12, 0x2C, 0xD0, - 0x80, 0x0C, 0x59, 0x48, 0x61, 0xCB, 0xA6, 0x09, - 0x9C, 0xC0, 0x81, 0x42, 0xB8, 0x00, 0x24, 0x41, - 0x8A, 0x94, 0x20, 0x40, 0x42, 0x14, 0x4D, 0x19, - 0x46, 0x62, 0x18, 0x05, 0x09, 0x24, 0x33, 0x6A, - 0xD4, 0x00, 0x61, 0x12, 0x48, 0x32, 0x8A, 0x04, - 0x72, 0x93, 0xB4, 0x69, 0x62, 0xC2, 0x71, 0x41, - 0xA6, 0x89, 0x44, 0x96, 0x31, 0x62, 0x30, 0x46, - 0x83, 0x42, 0x6C, 0x00, 0x19, 0x22, 0x09, 0x46, - 0x4D, 0x8B, 0x06, 0x49, 0xE1, 0xB0, 0x70, 0x42, - 0x44, 0x31, 0xC1, 0x80, 0x65, 0x9C, 0x00, 0x24, - 0x11, 0xA8, 0x31, 0x13, 0x21, 0x2C, 0x4B, 0x46, - 0x28, 0x1B, 0x18, 0x0D, 0x88, 0x42, 0x70, 0xD1, - 0xB0, 0x0D, 0x90, 0xC8, 0x45, 0xDA, 0xC2, 0x48, - 0x59, 0x14, 0x26, 0x22, 0x44, 0x00, 0xC2, 0x94, - 0x41, 0x50, 0xC8, 0x04, 0x18, 0x00, 0x00, 0xCB, - 0xA6, 0x24, 0x19, 0x02, 0x10, 0x10, 0x89, 0x0C, - 0x18, 0x22, 0x21, 0x62, 0xA8, 0x81, 0xC8, 0x92, - 0x48, 0xD3, 0x94, 0x20, 0x82, 0x06, 0x72, 0x09, - 0xA8, 0x90, 0x0C, 0x49, 0x8A, 0x41, 0x86, 0x28, - 0x19, 0xC5, 0x80, 0x9A, 0x18, 0x4D, 0x14, 0x10, - 0x2E, 0x22, 0x12, 0x52, 0x00, 0x08, 0x12, 0x0C, - 0x33, 0x45, 0x63, 0xC6, 0x30, 0x10, 0x93, 0x4C, - 0x60, 0xC6, 0x31, 0xDC, 0x40, 0x0E, 0x98, 0x82, - 0x50, 0x60, 0x02, 0x2A, 0xD2, 0x22, 0x40, 0xE4, - 0x06, 0x2D, 0xDB, 0x32, 0x0E, 0xCA, 0x32, 0x4E, - 0xD4, 0x18, 0x24, 0x08, 0xC3, 0x28, 0x4A, 0xC2, - 0x68, 0xE2, 0x80, 0x40, 0xA1, 0xC8, 0x64, 0x51, - 0xC2, 0x65, 0xCB, 0x16, 0x60, 0x23, 0x09, 0x4C, - 0x82, 0x04, 0x68, 0xD9, 0x22, 0x2E, 0x1C, 0x49, - 0x92, 0x42, 0x24, 0x21, 0x00, 0x37, 0x0E, 0xC8, - 0x12, 0x72, 0x64, 0x08, 0x25, 0x0A, 0x20, 0x2A, - 0x58, 0x24, 0x04, 0x59, 0x16, 0x4C, 0x08, 0x17, - 0x30, 0x00, 0x46, 0x05, 0x12, 0x90, 0x40, 0x03, - 0x07, 0x21, 0x52, 0xC0, 0x64, 0x1C, 0x83, 0x6D, - 0x9C, 0x32, 0x2E, 0x11, 0x15, 0x8A, 0x10, 0x35, - 0x88, 0x5A, 0xA0, 0x8D, 0xD9, 0x80, 0x48, 0x03, - 0xB6, 0x4C, 0x01, 0x10, 0x65, 0x10, 0x86, 0x40, - 0x11, 0x01, 0x42, 0x0A, 0xC1, 0x64, 0xDB, 0x22, - 0x4D, 0x64, 0xB2, 0x51, 0x02, 0x36, 0x0D, 0x93, - 0x46, 0x31, 0x14, 0xB6, 0x68, 0x63, 0x84, 0x29, - 0xC8, 0x10, 0x24, 0x94, 0x30, 0x08, 0x19, 0x37, - 0x02, 0x14, 0x82, 0x45, 0x88, 0x28, 0x40, 0x54, - 0xA8, 0x29, 0x90, 0x14, 0x12, 0x61, 0x36, 0x12, - 0x0B, 0x09, 0x8C, 0xA4, 0x98, 0x28, 0xC2, 0x92, - 0x45, 0x4C, 0x00, 0x60, 0x63, 0xC4, 0x81, 0xC0, - 0x36, 0x25, 0xCA, 0x88, 0x2D, 0x24, 0x40, 0x30, - 0xD3, 0xA8, 0x2D, 0xC9, 0xC8, 0x25, 0xD2, 0x84, - 0x48, 0x00, 0x32, 0x92, 0x50, 0xA2, 0x71, 0xD3, - 0x44, 0x0D, 0x22, 0x34, 0x60, 0x12, 0x13, 0x12, - 0x86, 0x8C, 0x5F, 0x86, 0x20, 0x79, 0x4A, 0x05, - 0x0E, 0x20, 0xD0, 0xE1, 0x01, 0x17, 0x86, 0x24, - 0x0E, 0xA6, 0x64, 0xF2, 0xF6, 0x9B, 0xB1, 0xB7, - 0xE3, 0x0E, 0xC6, 0x6B, 0x1A, 0x4A, 0x0B, 0xE5, - 0x9B, 0x79, 0xF2, 0x19, 0x8A, 0xD9, 0x80, 0x44, - 0x83, 0xE4, 0x75, 0xE5, 0x3B, 0x3C, 0x49, 0xCB, - 0x0C, 0xE5, 0xEF, 0x92, 0x91, 0x2A, 0xF4, 0x40, - 0xF2, 0x3B, 0x99, 0x58, 0x13, 0xD1, 0x1B, 0x59, - 0xF7, 0x98, 0xE9, 0x3C, 0x9D, 0x13, 0x53, 0x98, - 0x17, 0xC7, 0xAC, 0x68, 0xCA, 0xD1, 0xAA, 0x1A, - 0xC2, 0x76, 0x56, 0xBD, 0x0C, 0x47, 0x97, 0xE9, - 0xC8, 0xEC, 0x17, 0x78, 0x4C, 0x1A, 0x32, 0x7A, - 0x9D, 0xFE, 0xAF, 0x4D, 0x61, 0x91, 0xEE, 0xCD, - 0xAF, 0xE0, 0x49, 0xB7, 0x33, 0xFE, 0x39, 0xD5, - 0xEB, 0x40, 0x00, 0x93, 0x6F, 0xEE, 0xFC, 0xF8, - 0x29, 0x28, 0xE9, 0xF9, 0x4C, 0xFD, 0x5C, 0xF4, - 0xC1, 0xE3, 0xDE, 0xB1, 0x43, 0x3A, 0x47, 0xF6, - 0xD3, 0x28, 0xB5, 0xE8, 0x3D, 0xD1, 0x56, 0xD0, - 0x18, 0x2D, 0xC6, 0x92, 0x34, 0x75, 0x91, 0xAA, - 0x6F, 0x73, 0x2C, 0xFB, 0xE9, 0x82, 0x93, 0x5F, - 0xD1, 0x84, 0x6C, 0xAC, 0xF4, 0xCB, 0x85, 0x15, - 0xC5, 0x5A, 0xB8, 0x5E, 0xE5, 0xAD, 0x44, 0xCB, - 0x09, 0xD3, 0x26, 0x9E, 0x2E, 0x6D, 0x11, 0x78, - 0x09, 0x61, 0xFD, 0x13, 0x1D, 0x5E, 0x6F, 0xBF, - 0x89, 0x84, 0x9F, 0x47, 0xF2, 0xB7, 0x1D, 0x82, - 0x83, 0xFF, 0x25, 0x38, 0x5E, 0x52, 0xB0, 0x7D, - 0xBB, 0x26, 0x6C, 0x67, 0x4C, 0xEE, 0x3D, 0x0B, - 0x5D, 0xF5, 0xA5, 0x6D, 0x8B, 0xDC, 0xDC, 0xFA, - 0xAE, 0xE6, 0xA2, 0x48, 0xE7, 0x1D, 0xB1, 0x34, - 0x5A, 0xFC, 0x59, 0x7C, 0xA8, 0x30, 0xA1, 0xA3, - 0x5B, 0x43, 0x96, 0xEF, 0x4C, 0x1A, 0xDF, 0x9E, - 0xD0, 0x1B, 0xCE, 0x9B, 0x6E, 0xB6, 0x37, 0xFA, - 0x24, 0xAA, 0x16, 0x0B, 0x90, 0x76, 0xBA, 0xE3, - 0x05, 0x59, 0xF8, 0xB2, 0x9D, 0xED, 0xB3, 0xD2, - 0x5B, 0x79, 0x06, 0x4A, 0xB0, 0xCF, 0x8B, 0x8D, - 0x70, 0xAD, 0xDD, 0xEB, 0x8B, 0x17, 0x42, 0x48, - 0xD5, 0xAE, 0xA4, 0xD1, 0x8D, 0xE4, 0x3B, 0x89, - 0x38, 0xCD, 0xD2, 0xAC, 0xBA, 0x54, 0x77, 0xBD, - 0x4A, 0xAC, 0xC3, 0xCE, 0x59, 0x5E, 0x5D, 0x26, - 0x9F, 0xE6, 0x75, 0x21, 0x0D, 0x23, 0x15, 0x2B, - 0x04, 0x71, 0x0F, 0x36, 0x84, 0x28, 0x79, 0x4A, - 0x75, 0xF4, 0x9B, 0x68, 0x3E, 0xD2, 0x0D, 0xD6, - 0x47, 0x51, 0x57, 0x77, 0x95, 0x5A, 0x8C, 0xB3, - 0x8A, 0x36, 0xAF, 0xCD, 0x2C, 0xE0, 0xAC, 0xEC, - 0x4F, 0x0D, 0xFE, 0x80, 0x77, 0x02, 0xD1, 0xEB, - 0x3B, 0xDE, 0x72, 0xE9, 0xE0, 0x85, 0xAA, 0x4E, - 0x09, 0xEB, 0x1B, 0x09, 0x47, 0x41, 0x38, 0x52, - 0xEC, 0x3C, 0x0A, 0xC5, 0x2F, 0x06, 0xCB, 0x95, - 0x9C, 0x85, 0x39, 0x4E, 0xB3, 0x74, 0x81, 0x19, - 0xED, 0xBE, 0x6C, 0x80, 0xD2, 0xD8, 0xF7, 0x92, - 0xCE, 0x0D, 0x91, 0x5E, 0x4F, 0x4B, 0x15, 0x1E, - 0xFB, 0x13, 0x5E, 0x7F, 0x4D, 0xC9, 0x7D, 0x85, - 0x81, 0x41, 0xC5, 0x7F, 0x70, 0x41, 0x7B, 0x43, - 0xA6, 0xA1, 0x26, 0x95, 0x69, 0x78, 0xD7, 0x8E, - 0xFB, 0x9F, 0x03, 0x72, 0x43, 0xB4, 0xCB, 0x41, - 0xDF, 0x96, 0x8B, 0x7E, 0xE5, 0xB5, 0x20, 0x87, - 0xF0, 0x5A, 0xA9, 0xFE, 0x48, 0x7B, 0xD1, 0x6C, - 0x03, 0x47, 0xCF, 0x13, 0x35, 0x76, 0x0B, 0xD2, - 0x39, 0x8A, 0xD5, 0x4D, 0xDA, 0x00, 0xA5, 0xAA, - 0xC4, 0x46, 0xD8, 0x0B, 0x1C, 0x79, 0x98, 0xC6, - 0x02, 0x19, 0x2A, 0xDA, 0xFC, 0xB8, 0x09, 0xD1, - 0x4E, 0xE3, 0x28, 0x64, 0x1B, 0xA3, 0xAA, 0x00, - 0xF8, 0xD2, 0x9C, 0x3A, 0x84, 0x8A, 0xCB, 0xDC, - 0x19, 0x46, 0xBC, 0x0D, 0x35, 0xE0, 0xBE, 0x0F, - 0x8F, 0x7E, 0x3D, 0xA3, 0xF6, 0x8D, 0x9F, 0xA9, - 0x76, 0x8F, 0x5C, 0xF2, 0x75, 0x53, 0x4A, 0x0E, - 0xCA, 0x9E, 0x60, 0xFC, 0xEA, 0x38, 0xF1, 0xE0, - 0x42, 0xC3, 0x16, 0x14, 0x3A, 0x76, 0x7B, 0x33, - 0xAC, 0xCA, 0xD8, 0xC8, 0xD6, 0x6C, 0x70, 0xC7, - 0x5F, 0xD1, 0xF0, 0xB2, 0x58, 0x6B, 0x65, 0x3A, - 0xD4, 0xAF, 0x54, 0xE5, 0x6E, 0xF0, 0x69, 0x33, - 0xEA, 0xD3, 0x1D, 0xE3, 0x65, 0xD1, 0x10, 0xB9, - 0xC4, 0xA2, 0xA9, 0x8B, 0xCB, 0xA1, 0x65, 0xCA, - 0xFE, 0x38, 0x6F, 0x88, 0x7C, 0x72, 0x15, 0x6E, - 0xB1, 0x4F, 0xF0, 0xDA, 0xD6, 0x65, 0x61, 0x6C, - 0xE3, 0xCE, 0x65, 0xC1, 0x90, 0x4F, 0x2C, 0x17, - 0x47, 0xB2, 0xEC, 0x2B, 0x5C, 0x9D, 0x67, 0x76, - 0xBC, 0xD7, 0x9E, 0x5A, 0xC6, 0x4B, 0x79, 0x33, - 0xBD, 0xDE, 0xDE, 0xDD, 0xBB, 0xC7, 0x25, 0xBF, - 0xDB, 0xCC, 0xDE, 0x2F, 0xB3, 0x75, 0xAE, 0x2B, - 0xE3, 0x53, 0x7B, 0xDF, 0x89, 0xBF, 0x4C, 0x25, - 0xF8, 0x3A, 0x49, 0xD6, 0xA6, 0xA8, 0xD0, 0x76, - 0x1C, 0xF3, 0x9D, 0x62, 0x0C, 0x53, 0xED, 0x83, - 0x7D, 0x19, 0x82, 0x55, 0xCF, 0x5B, 0x91, 0x0A, - 0x6D, 0xB5, 0x78, 0x77, 0xDF, 0x92, 0xD8, 0xBB, - 0x6E, 0x9C, 0x52, 0x6B, 0x8C, 0x4E, 0xC9, 0x31, - 0x00, 0xDE, 0xE0, 0x50, 0x0A, 0x21, 0x0C, 0x98, - 0x45, 0x83, 0xE1, 0x53, 0x81, 0x60, 0xED, 0xAC, - 0x2C, 0x6F, 0x86, 0x6E, 0x7F, 0x5D, 0x99, 0xD7, - 0xB1, 0xB8, 0x15, 0x82, 0xF5, 0xD0, 0xEB, 0xBF, - 0x27, 0x86, 0xE3, 0xF5, 0x56, 0x01, 0x3B, 0xA9, - 0xB6, 0xF6, 0x56, 0xEB, 0x79, 0x88, 0x38, 0xEA, - 0x05, 0x79, 0x20, 0x1A, 0x95, 0xD5, 0x6B, 0xBC, - 0x3B, 0xCD, 0xB9, 0x51, 0x1A, 0xFB, 0xD4, 0xD8, - 0x12, 0x88, 0x89, 0x6F, 0x87, 0x10, 0x8C, 0x07, - 0x7F, 0x1A, 0x81, 0xA3, 0xBD, 0x29, 0x7B, 0xB1, - 0x24, 0xA8, 0x00, 0x86, 0x89, 0x02, 0x42, 0x99, - 0x5E, 0x03, 0xCF, 0x42, 0xA0, 0xC2, 0x1E, 0x27, - 0x2A, 0x9A, 0xFA, 0x1D, 0xC1, 0x03, 0x46, 0x3D, - 0x2A, 0xB4, 0x94, 0xF7, 0xD0, 0x17, 0x68, 0x6D, - 0x31, 0x89, 0x4D, 0xD2, 0xF6, 0xEB, 0xB0, 0xC3, - 0xCB, 0x62, 0x23, 0xEC, 0x79, 0xC6, 0x5D, 0x45, - 0xC1, 0xB0, 0xD4, 0xEF, 0x19, 0x61, 0xF1, 0x6D, - 0x65, 0x3F, 0xCF, 0x25, 0x97, 0x7B, 0x65, 0x1E, - 0xC5, 0x1A, 0x13, 0xAE, 0x8D, 0x4A, 0x34, 0x72, - 0xEE, 0x71, 0x96, 0x9A, 0x7A, 0x93, 0x6F, 0x5D, - 0xBB, 0xB9, 0x39, 0x6A, 0x46, 0xD9, 0x76, 0x42, - 0x35, 0x8C, 0xAF, 0x48, 0x94, 0xC9, 0xA6, 0xDF, - 0x84, 0xA5, 0x9C, 0x59, 0x62, 0xA6, 0x99, 0x0A, - 0x76, 0xF0, 0x61, 0x48, 0x90, 0x16, 0x9F, 0x00, - 0x18, 0x70, 0xD4, 0x9C, 0xF2, 0xE7, 0x50, 0x08, - 0xCC, 0x4A, 0x5D, 0x85, 0xE7, 0x2D, 0xE2, 0xD6, - 0xCF, 0x3F, 0xA7, 0x18, 0x52, 0x25, 0x35, 0x22, - 0xFE, 0x8B, 0x0E, 0x42, 0x3C, 0xB4, 0x17, 0xA3, - 0x8E, 0xB7, 0x8C, 0x87, 0x63, 0xC3, 0x72, 0x0C, - 0x04, 0xE6, 0x7F, 0xF8, 0x89, 0x79, 0xEB, 0xA0, - 0x9E, 0x34, 0x53, 0x8B, 0xB5, 0x23, 0xB9, 0x9B, - 0x8E, 0x34, 0x16, 0x74, 0x12, 0xF7, 0x7A, 0xEA, - 0x89, 0x4D, 0x83, 0xAC, 0xF9, 0x46, 0xFC, 0x05, - 0x4D, 0x0A, 0xF4, 0x72, 0x95, 0xE5, 0x1E, 0xD8, - 0x3F, 0x74, 0x86, 0x94, 0x0A, 0x4D, 0x41, 0xC0, - 0x4A, 0xD7, 0xEB, 0xEE, 0x61, 0x0B, 0xF1, 0xD0, - 0x3F, 0xA5, 0x40, 0x71, 0xD5, 0x1A, 0x15, 0x09, - 0xE4, 0xF4, 0x91, 0x63, 0xA2, 0x50, 0x81, 0xBE, - 0x87, 0x90, 0xD0, 0x87, 0xF5, 0xF4, 0xF0, 0x5C, - 0x88, 0x55, 0x0F, 0xCA, 0x9B, 0xF9, 0x9C, 0x9B, - 0xE5, 0x95, 0x3D, 0x51, 0xDD, 0x08, 0x45, 0xC9, - 0x3E, 0x41, 0xEE, 0xEF, 0x62, 0xE0, 0x79, 0x4B, - 0x29, 0x27, 0xC4, 0xF5, 0xED, 0x9B, 0xD3, 0xE3, - 0x4E, 0xA9, 0x20, 0x0A, 0x79, 0xDD, 0xEB, 0x4B, - 0x2D, 0x8F, 0x30, 0x5F, 0xE0, 0x5F, 0x82, 0x7C, - 0x7E, 0x2E, 0xD1, 0x86, 0x34, 0x1C, 0xB5, 0xD1, - 0x15, 0x2F, 0xC8, 0x01, 0x04, 0xE0, 0xE1, 0x36, - 0x83, 0xD9, 0x41, 0x29, 0x4C, 0x77, 0x84, 0x17, - 0x16, 0x4B, 0x68, 0x4A, 0x97, 0x6E, 0x56, 0xE7, - 0x8D, 0xA4, 0xD1, 0x7C, 0x3C, 0x73, 0x22, 0x93, - 0x14, 0x87, 0x0B, 0x85, 0xC4, 0x55, 0xC2, 0x3B, - 0x83, 0x0B, 0x9A, 0x28, 0xA3, 0xD8, 0xC0, 0xB5, - 0x66, 0x42, 0x6D, 0xC1, 0x69, 0xF3, 0x26, 0xAB, - 0xCE, 0x2E, 0xFF, 0xF3, 0x9E, 0x9B, 0x19, 0x9A, - 0xE5, 0xC1, 0x29, 0x2B, 0x6F, 0x2E, 0xF3, 0x7A, - 0xF1, 0xDE, 0xA9, 0x27, 0x2C, 0x8D, 0x54, 0x23, - 0xDF, 0x8A, 0x56, 0x32, 0xF9, 0x91, 0xE1, 0x4D, - 0xCA, 0x25, 0x14, 0x78, 0x8B, 0x62, 0xBE, 0x16, - 0x48, 0x28, 0xE9, 0xAC, 0xB8, 0x93, 0xDD, 0xA6, - 0x02, 0xA5, 0xE2, 0xFB, 0x9E, 0xFC, 0xBE, 0xFD, - 0x95, 0xAB, 0xFB, 0x82, 0xD2, 0xB0, 0x2D, 0x49, - 0xCC, 0x53, 0x08, 0x4A, 0x49, 0xAB, 0x1B, 0xEC, - 0x23, 0xE5, 0xB4, 0xC8, 0xE7, 0x14, 0xCB, 0x03, - 0x40, 0x5F, 0x1B, 0xCF, 0x7E, 0x11, 0xBB, 0x59, - 0x72, 0x9D, 0xDC, 0x0B, 0x7B, 0xEF, 0xB2, 0x91, - 0x27, 0x6D, 0xCE, 0xDA, 0xCA, 0xAD, 0x39, 0xA2, - 0xF0, 0x1C, 0x7D, 0xC9, 0x8B, 0x9E, 0x06, 0x5E, - 0xAF, 0xED, 0x1C, 0xC8, 0xCE, 0x3E, 0x84, 0x80, - 0x80, 0xA2, 0xFC, 0x5B, 0x98, 0xC9, 0xF6, 0xBF, - 0x50, 0x40, 0x27, 0x33, 0x42, 0xF0, 0x31, 0x2F, - 0x8B, 0x98, 0x44, 0x59, 0x4A, 0x50, 0x3D, 0xD3, - 0xE6, 0xAF, 0x1C, 0x9E, 0x35, 0xC1, 0x03, 0x2A, - 0x4A, 0x8A, 0x5E, 0x7B, 0xF3, 0x3A, 0x82, 0xF3, - 0x5E, 0x16, 0xED, 0xF8, 0xC6, 0x0C, 0x90, 0x02, - 0x1D, 0x8C, 0x0B, 0xA4, 0xC3, 0x86, 0x24, 0x5D, - 0xFE, 0xF0, 0x94, 0x48, 0x43, 0x1D, 0x8C, 0x00, - 0xD1, 0xE2, 0x6E, 0xE4, 0xD8, 0xC7, 0x7D, 0xAA, - 0x1A, 0x70, 0x5E, 0xD4, 0x79, 0x2A, 0xCB, 0x4E, - 0xA2, 0x7C, 0x15, 0x66, 0xFB, 0x56, 0x68, 0x3C, - 0x43, 0xBF, 0x67, 0x84, 0x2E, 0x67, 0x53, 0x4C, - 0xB3, 0xF9, 0x67, 0x7C, 0x8A, 0xB9, 0xD0, 0xEE, - 0xE7, 0x82, 0x7C, 0xDE, 0xFC, 0x22, 0x3A, 0xC9, - 0x48, 0xB8, 0x80, 0xB5, 0xF1, 0xCE, 0x95, 0x37, - 0x27, 0x29, 0x32, 0x00, 0x2C, 0x1A, 0x4D, 0xD2, - 0x18, 0xF5, 0x27, 0x16, 0x6E, 0xBF, 0xB2, 0xB2, - 0xFA, 0x2B, 0xF3, 0x72, 0x46, 0xEC, 0xDF, 0xDF, - 0xA7, 0x2B, 0x6D, 0xA1, 0x1C, 0x30, 0xD1, 0xC7, - 0xD2, 0x48, 0xAD, 0x64, 0x81, 0x8F, 0x69, 0x1D, - 0x59, 0xB7, 0x55, 0xDA, 0xF7, 0x1B, 0xED, 0x9A, - 0xB5, 0xFB, 0x52, 0xE0, 0x36, 0x22, 0xA9, 0x00, - 0xD6, 0x6B, 0x4C, 0x63, 0x84, 0x16, 0x9B, 0xDF, - 0x9E, 0xB6, 0x1C, 0x02, 0xDF, 0x45, 0xFB, 0x76, - 0xB1, 0xA2, 0x6F, 0x34, 0xE9, 0x38, 0xB1, 0x90, - 0x86, 0x17, 0x45, 0xC0, 0x21, 0xFA, 0x87, 0x62, - 0x00, 0xC7, 0xFC, 0x8E, 0x22, 0x2D, 0xDB, 0xFA, - 0xD8, 0xBE, 0x78, 0x1B, 0x18, 0x54, 0x24, 0xAA, - 0xAF, 0xC6, 0x58, 0x62, 0xDB, 0x13, 0x2B, 0xEC, - 0x6D, 0x18, 0x83, 0x7A, 0x1F, 0x58, 0xA8, 0x76, - 0xC9, 0x9E, 0x63, 0xF5, 0x14, 0x20, 0xB8, 0x3F, - 0x45, 0x96, 0x75, 0x61, 0x2F, 0x7A, 0xCF, 0x80, - 0xB4, 0xEB, 0x1D, 0xD0, 0x72, 0x1C, 0xAA, 0x1B, - 0x49, 0x70, 0xDA, 0x60, 0x86, 0x79, 0xC6, 0x38, - 0x3E, 0x81, 0x7F, 0xE1, 0x6B, 0x66, 0xB1, 0x91, - 0x81, 0xED, 0xFC, 0x39, 0x27, 0x0C, 0x7E, 0x91, - 0x7B, 0x1F, 0x10, 0xEB, 0x7A, 0x01, 0x19, 0x97, - 0xE9, 0x67, 0x85, 0x3B, 0x78, 0xE0, 0x0C, 0xFD, - 0x58, 0xD2, 0x24, 0xD9, 0x33, 0xCC, 0x5A, 0x99, - 0x55, 0x32, 0xDC, 0xD4, 0xE5, 0x32, 0xE4, 0x03, - 0x05, 0x15, 0xF4, 0xA0, 0x5B, 0x33, 0x1D, 0x57, - 0x5D, 0xDA, 0xC2, 0x9B, 0xAB, 0x06, 0x9F, 0x09, - 0xAF, 0x0D, 0x17, 0x33, 0x73, 0xDB, 0x1E, 0xC2, - 0xB6, 0x36, 0x6B, 0xB3, 0x71, 0x00, 0x8A, 0x23, - 0x86, 0xFD, 0x88, 0xBE, 0x77, 0xF5, 0xED, 0x5E, - 0x19, 0x8C, 0xBE, 0x88, 0xDF, 0x24, 0xBC, 0x6E, - 0x39, 0x3F, 0xEB, 0xC1, 0x0C, 0x47, 0x0A, 0x72, - 0xD4, 0x7C, 0x0F, 0x83, 0x46, 0x53, 0xC9, 0xAE, - 0x80, 0x0E, 0x89, 0x3C, 0x6B, 0xA6, 0x8E, 0xA2, - 0x8A, 0x83, 0x8F, 0xCB, 0xB6, 0x9C, 0x3E, 0x96, - 0x4A, 0x5F, 0xAF, 0xC2, 0x06, 0x7D, 0xD4, 0x06, - 0xB2, 0x57, 0xC9, 0x8D, 0xD3, 0x97, 0x9E, 0xC7, - 0xC7, 0xEC, 0xBE, 0x96, 0xA3, 0x3D, 0x85, 0x51, - 0x5D, 0xA2, 0xCB, 0x6A, 0xA5, 0xE1, 0xFF, 0xF2, - 0x04, 0xAF, 0x62, 0xDD, 0x41, 0x19, 0xA0, 0xE4, - 0x8C, 0x04, 0xA3, 0xF2, 0xB3, 0x86, 0x60, 0xF5, - 0x29, 0x64, 0xD8, 0xD4, 0xAE, 0xE1, 0x46, 0xA9, - 0xC5, 0x3C, 0x31, 0x90, 0x6D, 0xAD, 0x0F, 0xD9, - 0x0B, 0x5D, 0x83, 0xB3, 0xE3, 0x1B, 0x69, 0x0A, - 0x4C, 0x49, 0x35, 0x24, 0x99, 0x81, 0xBE, 0x1F, - 0x1A, 0x85, 0xEC, 0x6E, 0x0F, 0xEE, 0x4C, 0x88, - 0xF2, 0xD8, 0x9E, 0x29, 0x69, 0xAB, 0x8C, 0xBB, - 0xEB, 0x50, 0x19, 0x16, 0x55, 0x8D, 0x29, 0xEA, - 0x7C, 0x3E, 0xCF, 0x1C, 0x9E, 0xF1, 0xA0, 0x43, - 0x50, 0x63, 0x3B, 0x4C, 0xDA, 0x73, 0x7D, 0xFB, - 0x15, 0x1C, 0xB5, 0xE7, 0x36, 0x11, 0x73, 0xF3, - 0xAE, 0xDD, 0xDF, 0x52, 0x7D, 0x73, 0xF2, 0xF9, - 0xD5, 0xB6, 0x21, 0x3A, 0xA6, 0x8F, 0x88, 0x3E, - 0x9A, 0x26, 0x33, 0x78, 0x5E, 0xC6, 0xBE, 0x64, - 0x2A, 0x9F, 0xD0, 0xF2, 0x1A, 0x42, 0xF6, 0xB9, - 0xDA, 0xAB, 0xDC, 0xD1, 0xE6, 0xAD, 0xBE, 0xF6, - 0x48, 0x41, 0xB5, 0x96, 0x86, 0xEA, 0xE3, 0xEC, - 0x88, 0xEE, 0xF0, 0xA9, 0xCB, 0xC1, 0x2B, 0xC0, - 0x12, 0x62, 0x2D, 0xF2, 0xDD, 0x93, 0xA8, 0x62, - 0x29, 0x04, 0x4A, 0xF2, 0xF2, 0x60, 0xD2, 0x18, - 0x3F, 0x51, 0xE8, 0x33, 0xEE, 0x92, 0xD9, 0x8F, - 0x02, 0x51, 0xE3, 0xF8, 0x5F, 0xAB, 0x74, 0xCE, - 0x36, 0x7B, 0x8B, 0x7A, 0xA6, 0x3D, 0x3C, 0xF8, - 0xC8, 0xBF, 0x4D, 0x78, 0x35, 0x8B, 0xAE, 0x0A, - 0x02, 0x41, 0xE2, 0x10, 0xAC, 0x69, 0x35, 0x30, - 0x87, 0xCC, 0x73, 0x31, 0x35, 0x7E, 0xB4, 0x45, - 0x0F, 0x95, 0x09, 0xCF, 0xE5, 0x95, 0xF5, 0x40, - 0x32, 0xEE, 0x05, 0x77, 0x54, 0xA8, 0xED, 0xD7, - 0x46, 0xCB, 0x92, 0x82, 0xE7, 0x68, 0xDC, 0x6B, - 0x83, 0x0C, 0x5B, 0x4A, 0x21, 0x93, 0x43, 0xAD, - 0x12, 0x4E, 0xDB, 0x3B, 0xBC, 0x42, 0x50, 0x55, - 0x66, 0xA7, 0x03, 0x8C, 0x95, 0x9B, 0xC3, 0x55, - 0x85, 0xB6, 0x05, 0x5F, 0x19, 0x68, 0xDA, 0x24, - 0x3F, 0x77, 0x8F, 0x4E, 0x46, 0xDB, 0x46, 0x2A, - 0xBE, 0xB9, 0x3B, 0x81, 0x24, 0x3C, 0x31, 0xEB, - 0x59, 0x62, 0x2E, 0xDF, 0x81, 0xF0, 0x6C, 0xCC, - 0x61, 0xD2, 0xA6, 0xEA, 0x73, 0xE1, 0x09, 0xC3, - 0x87, 0x91, 0x5F, 0x27, 0x7B, 0xCF, 0x1F, 0xC1, - 0x11, 0x05, 0xBB, 0xA7, 0x02, 0x93, 0xC0, 0xFA, - 0xB5, 0xC0, 0x65, 0xF2, 0x3B, 0xAA, 0x19, 0x29, - 0x0A, 0x30, 0x2F, 0x08, 0x09, 0x11, 0x07, 0xA4, - 0xB1, 0xD5, 0x68, 0x85, 0x26, 0x22, 0x09, 0x83, - 0x83, 0x42, 0x77, 0x60, 0xEF, 0x8F, 0x29, 0x28, - 0x62, 0x5B, 0xDD, 0xA5, 0xF5, 0x14, 0xC5, 0xAD, - 0xE9, 0x59, 0x89, 0x1E, 0xF2, 0x95, 0x9F, 0x24, - 0x8A, 0x35, 0x32, 0xBF, 0x9D, 0x30, 0xE7, 0x14, - 0x05, 0x9E, 0xBD, 0xEC, 0x95, 0x87, 0x08, 0xF8, - 0xA8, 0x3C, 0x26, 0x8B, 0xEF, 0x26, 0x82, 0xD6, - 0x03, 0xCA, 0x88, 0x63, 0x47, 0xE1, 0x98, 0xFD, - 0x68, 0x23, 0x39, 0x99, 0xC7, 0x7D, 0x30, 0xD7, - 0x45, 0x5D, 0xE6, 0xBC, 0xFD, 0x01, 0x44, 0x27, - 0x70, 0x62, 0xB3, 0x04, 0xBE, 0xF0, 0xE3, 0x4C, - 0x5A, 0x9D, 0x8D, 0x78, 0x0D, 0x29, 0xEC, 0x23, - 0x21, 0xE0, 0x73, 0x40, 0x77, 0x1C, 0x46, 0x36, - 0x04, 0x83, 0xAD, 0xCA, 0xF1, 0x2D, 0x5B, 0x79, - 0xFD, 0xBF, 0xE2, 0x85, 0x6A, 0xCE, 0x88, 0x59, - 0xF6, 0xB1, 0x24, 0x14, 0xB3, 0xF7, 0xE8, 0xBB, - 0x58, 0x13, 0x49, 0x89, 0x60, 0xF3, 0x4F, 0xDC, - 0x64, 0xFC, 0x84, 0x85, 0x79, 0xCA, 0xF9, 0xDC, - 0xCF, 0x19, 0xB4, 0xFB, 0x82, 0x5E, 0xD5, 0x71, - 0x6D, 0xCC, 0xCD, 0x68, 0x72, 0xCB, 0xDE, 0x38, - 0x31, 0xD6, 0x73, 0x84, 0x94, 0x2C, 0xD8, 0xA9, - 0xEC, 0x4B, 0xBF, 0xEF, 0x57, 0x06, 0xB8, 0xF9, - 0xF0, 0x5F, 0xE1, 0xE8, 0xFE, 0x69, 0xD3, 0xEA, - 0x6A, 0x86, 0x21, 0xC2, 0x21, 0x44, 0x17, 0x7B, - 0x1C, 0x12, 0x59, 0xE1, 0xA7, 0x9D, 0xFD, 0xF8, - 0x97, 0x28, 0x88, 0x7B, 0xEF, 0x1A, 0x70, 0x48, - 0x25, 0x56, 0x83, 0x1B, 0x67, 0x24, 0x40, 0xE1, - 0x3F, 0xE3, 0xE3, 0xFC, 0x82, 0x04, 0xA0, 0x2E, - 0xA1, 0xEF, 0xF1, 0x9D, 0x95, 0x25, 0x38, 0x87, - 0x28, 0x5B, 0xFB, 0xEA, 0x16, 0xA0, 0xF2, 0x19, - 0xEF, 0xBC, 0xEC, 0x30, 0xA8, 0xAE, 0x86, 0x58, - 0x9A, 0x57, 0x03, 0x10, 0x3A, 0x8A, 0x39, 0x3F, - 0xA6, 0xF6, 0xB6, 0x57, 0x70, 0x4A, 0xC6, 0x77, - 0xC1, 0x4C, 0xD1, 0x0D, 0x3D, 0x62, 0xD1, 0x3F, - 0xBD, 0x37, 0x8C, 0x2D, 0xDA, 0x32, 0x5B, 0x61, - 0xB8, 0x59, 0x52, 0xD5, 0x12, 0x93, 0x87, 0x1E, - 0x1F, 0xCD, 0xC9, 0x48, 0xC7, 0x7B, 0xEA, 0xE9, - 0xA6, 0xF0, 0xE8, 0x7C, 0xE1, 0xA8, 0x05, 0x1C, - 0x8F, 0x80, 0x87, 0x68, 0x5C, 0x12, 0x62, 0x4B, - 0xDF, 0x58, 0x38, 0x0E, 0xD6, 0x6F, 0x55, 0xB4, - 0x3D, 0xDD, 0x6D, 0x36, 0x21, 0x73, 0xA5, 0xBD, - 0x38, 0x98, 0x59, 0xC1, 0x7D, 0x95, 0xEC, 0xE3, - 0xAB, 0x73, 0x26, 0x39, 0xFF, 0xE4, 0x51, 0xCD, - 0x10, 0x3E, 0xE4, 0x85, 0x4D, 0xB2, 0xF3, 0x96, - 0x14, 0xF6, 0x58, 0xBA, 0xA3, 0x84, 0xBC, 0x99, - 0x48, 0xD0, 0x71, 0x4E, 0xB4, 0x8A, 0x88, 0x71, - 0x43, 0xE7, 0xA1, 0xFA, 0x4B, 0x69, 0x0C, 0x22, - 0xB4, 0x92, 0xA7, 0x0C, 0x61, 0x2B, 0x59, 0xFF, - 0xD2, 0xD6, 0xB3, 0xB5, 0xE9, 0x9C, 0x20, 0x03, - 0xE2, 0xC3, 0x59, 0xB1, 0xE6, 0x2D, 0xCB, 0x62, - 0x0C, 0x7A, 0x24, 0x6A, 0x7B, 0x9B, 0x32, 0x46, - 0x13, 0x15, 0x56, 0xF2, 0xF3, 0xD5, 0x13, 0xA2, - 0x3C, 0x6A, 0x9F, 0xD2, 0x28, 0x0E, 0xD6, 0x86, - 0xD7, 0x67, 0xCC, 0xD0, 0x17, 0x54, 0xEB, 0x4C, - 0x99, 0x69, 0x2F, 0x2B, 0x38, 0x0C, 0x36, 0x08, - 0x13, 0x44, 0xC1, 0xD3, 0x5E, 0xE1, 0x94, 0x97, - 0x36, 0xB6, 0x97, 0x6F, 0x48, 0x52, 0xCF, 0xBE, - 0x64, 0xFA, 0xBC, 0xF1, 0x1B, 0x9A, 0xFB, 0x82, - 0x85, 0x76, 0xB4, 0xF9, 0x78, 0x7A, 0xA7, 0xD0, - 0x3E, 0x84, 0x59, 0x8A, 0x71, 0x43, 0xEF, 0x73, - 0x11, 0xFA, 0xF2, 0x97, 0x0E, 0x23, 0xED, 0x4C, - 0x17, 0x3F, 0x98, 0x5D, 0x64, 0x50, 0x16, 0x5A, - 0xE3, 0xE2, 0x41, 0xA1, 0x82, 0x34, 0xE7, 0x4F, - 0xF3, 0xDD, 0xB9, 0x21, 0xA5, 0x30, 0x0B, 0x1C, - 0x4F, 0xB6, 0xE4, 0x32, 0xE6, 0x98, 0xF5, 0x3F, - 0x66, 0xE3, 0x8C, 0x07, 0xBC, 0xD6, 0xE7, 0x76, - 0x05, 0xDF, 0x46, 0x24, 0xD5, 0x79, 0x07, 0x62, - 0x92, 0xDE, 0x1C, 0xE6, 0xFC, 0x6F, 0x00, 0x81, - 0xA3, 0x8B, 0xD9, 0x2D, 0x39, 0xB2, 0x4B, 0x73, - 0xBA, 0xC1, 0xC5, 0x2B, 0xD6, 0x8E, 0x91, 0x81, - 0xD3, 0xDC, 0xD0, 0xAC, 0x75, 0x34, 0xDB, 0x48, - 0x90, 0x1E, 0x59, 0x84, 0xF9, 0x90, 0x25, 0x57, - 0xBF, 0xA2, 0x31, 0xB2, 0xEA, 0x28, 0xC3, 0x18, - 0x32, 0x62, 0xA1, 0xB2, 0x22, 0x1F, 0x74, 0x26, - 0xEA, 0x88, 0xA5, 0x81, 0x60, 0x93, 0xA5, 0xCA, - 0xE2, 0xCD, 0x5D, 0x59, 0xA9, 0x39, 0x0F, 0xC9, - 0x3A, 0x29, 0x56, 0x94, 0x4B, 0x06, 0x4C, 0xF0, - 0x13, 0xBC, 0xDB, 0x67, 0xFB, 0x42, 0x3D, 0x13, - 0x28, 0xD2, 0xC6, 0xD7, 0xBA, 0x32, 0x90, 0x13, - 0xFA, 0x2D, 0x30, 0xEF, 0xD6, 0x9F, 0xDC, 0xA1, - 0xA9, 0x5E, 0xA6, 0xD0, 0x6C, 0x73, 0x63, 0x53, - 0x4B, 0x2F, 0x3F, 0x7D, 0xAA, 0xFA, 0x29, 0x6E, - 0xAA, 0x09, 0xB3, 0x66, 0x8E, 0x9C, 0xF8, 0x2D, - 0x9B, 0xA9, 0x59, 0xB3, 0x2F, 0x3C, 0xAD, 0x3C, - 0x10, 0xC6, 0xEA, 0x48, 0x61, 0x15, 0x54, 0x53, - 0x9C, 0x37, 0xDF, 0x6B, 0xCA, 0x33, 0x85, 0xEA, - 0xD3, 0xFC, 0xFF, 0x96, 0xD3, 0x72, 0xB4, 0x23, - 0x93, 0xB7, 0x3C, 0x8D, 0xAA, 0xAA, 0x31, 0x50, - 0x6E, 0xE0, 0x52, 0x7B, 0x7F, 0xB3, 0xE5, 0x93, - 0xDC, 0xCC, 0xA5, 0x7C, 0x8F, 0xBB, 0xD4, 0xA3, - 0xC7, 0xF8, 0xA5, 0x38, 0x99, 0x86, 0x91, 0x32, - 0xFB, 0xC3, 0xE4, 0x05, 0x06, 0x07, 0xBB, 0xFE, - 0x29, 0xC6, 0x75, 0xE3, 0x94, 0x5E, 0x74, 0xA3, - 0x1C, 0xD5, 0x31, 0xBA, 0x7A, 0xEB, 0x2E, 0x2F, - 0x0C, 0xD9, 0x90, 0xB8, 0xF9, 0x83, 0xA9, 0x0D, - 0xFE, 0xA0, 0x56, 0x8F, 0x06, 0x77, 0xEA, 0x95, - 0x63, 0xF7, 0xC4, 0x79, 0xDE, 0x96, 0x89, 0x40, - 0xCF, 0x24, 0x29, 0x92, 0x69, 0x28, 0x65, 0xCF, - 0xDA, 0x89, 0xFA, 0x07, 0x8B, 0xBE, 0xF4, 0x9C, - 0xE4, 0x57, 0x5B, 0xDF, 0xB3, 0x80, 0x36, 0x60, - 0x11, 0xC8, 0x43, 0x5F, 0x12, 0xB4, 0x2D, 0x9A, - 0xB9, 0x9A, 0xB6, 0xA3, 0x19, 0x12, 0xC4, 0x35, - 0x41, 0x49, 0xD7, 0x23, 0x10, 0x1D, 0x13, 0x65, - 0xA6, 0x5E, 0x7C, 0xC6, 0x8D, 0x82, 0xE3, 0x05, - 0x17, 0x77, 0x39, 0x02, 0xFB, 0x38, 0xDD, 0xA2, - 0xB3, 0x24, 0xE7, 0x20, 0x8E, 0x98, 0x7E, 0xD2, - 0x87, 0xD0, 0x92, 0xE7, 0x66, 0x2A, 0x43, 0x02, - 0x41, 0xBF, 0xCA, 0x55, 0x2D, 0x31, 0x41, 0x27, - 0xE3, 0x8C, 0x85, 0x97, 0xA8, 0x95, 0x19, 0xD4, - 0xF1, 0xE6, 0x2A, 0x79, 0x46, 0x5A, 0xD5, 0xF4, - 0xEA, 0xA3, 0xFA, 0x77, 0xCD, 0x98, 0x32, 0x6D, - 0x2F, 0x92, 0xCE, 0x98, 0x52, 0x05, 0x5C, 0xEC, - 0xCF, 0x62, 0xD6, 0x3C, 0xB9, 0xD7, 0xF1, 0x98, - 0xAE, 0x08, 0x5E, 0x4D, 0x45, 0xC8, 0xE4, 0x8F, - 0xCF, 0xFE, 0x59, 0x3A, 0xD6, 0x52, 0xD9, 0x15, - 0x41, 0x67, 0xBF, 0x3E, 0x61, 0x95, 0x81, 0x0A, - 0x44, 0x5A, 0xE1, 0x58, 0xF1, 0xF9, 0xA6, 0x79, - 0x33, 0x63, 0xAF, 0xC1, 0xF2, 0x2C, 0xA8, 0x82, - 0xFE, 0xED, 0x3A, 0x5F, 0x57, 0x27, 0xCA, 0x76, - 0x47, 0x7C, 0x5F, 0x23, 0xF0, 0xFC, 0x87, 0x00, - 0xCD, 0xC6, 0xA5, 0xBC, 0xB2, 0xB2, 0x0B, 0x4F, - 0x92, 0x66, 0x35, 0x1D, 0x30, 0x4A, 0x96, 0xA8, - 0x2B, 0xF5, 0xF3, 0x14, 0xAF, 0x68, 0x5C, 0x1C, - 0x70, 0x7C, 0x92, 0xE3, 0xE8, 0x47, 0xB7, 0x04, - 0x7D, 0x68, 0x9C, 0x70, 0xB2, 0x5E, 0x55, 0x01, - 0xCA, 0xEC, 0x99, 0x19, 0x62, 0x6F, 0x4A, 0x0F, - 0xC8, 0x15, 0x86, 0xAF, 0x1E, 0xC8, 0x88, 0x89, - 0xB4, 0x23, 0x38, 0x7D, 0x5D, 0x95, 0x48, 0x26, - 0x18, 0xA6, 0x50, 0xE8, 0x0B, 0x53, 0xB0, 0x7C, - 0xAC, 0xE3, 0x22, 0x89, 0x40, 0x60, 0x2E, 0x3D, - 0xB4, 0x74, 0x66, 0xCE, 0x9B, 0xCC, 0xB6, 0xE4, - 0xD8, 0xAA, 0x61, 0xC8, 0x91, 0x25, 0x83, 0xE8, - 0x10, 0xB3, 0xB2, 0xE7, 0xE9, 0xCB, 0x48, 0xBD, - 0x40, 0x3E, 0xCF, 0x08, 0xD2, 0x8C, 0x70, 0xAE, - 0x0B, 0x62, 0x08, 0x59, 0xC1, 0xF0, 0x9B, 0x61, - 0x13, 0x14, 0x04, 0xC3, 0xD5, 0xBF, 0xFC, 0xD8, - 0x60, 0xE0, 0xF4, 0x2A, 0xB2, 0x99, 0x00, 0x62, - 0x30, 0xB2, 0x87, 0x6D, 0x77, 0xDD, 0xA9, 0x1C, - 0x8C, 0x62, 0xBD, 0x93, 0xA8, 0x44, 0xE4, 0xB3, - 0x44, 0xE3, 0x25, 0x5E, 0xEA, 0x53, 0x1C, 0x6C, - 0x45, 0x8D, 0x04, 0xAB, 0xDB, 0x0F, 0xAE, 0xF2, - 0xD1, 0xC0, 0xB4, 0xC5, 0x5F, 0x57, 0x0A, 0x5A, - 0x51, 0x02, 0x3F, 0x4D, 0x4E, 0xFF, 0xF5, 0x9F, - 0x9A, 0xBE, 0x17, 0x92, 0x2F, 0xE7, 0x32, 0xCA, - 0x71, 0xBC, 0xD4, 0x34, 0xAD, 0x77, 0x10, 0xB8, - 0x4C, 0xD4, 0xAC, 0x9F, 0x25, 0x07, 0xA0, 0x68, - 0x26, 0x56, 0x2A, 0xD7, 0xF6, 0x47, 0x82, 0x6F, - 0x9D, 0xBB, 0xE4, 0xED, 0xD2, 0x3F, 0x12, 0x43, - 0x69, 0xDB, 0x85, 0x26, 0xFC, 0x2B, 0x4D, 0x52, - 0xF0, 0x74, 0x14, 0x15, 0xF9, 0x72, 0xBE, 0xF6, - 0xA9, 0x35, 0xBD, 0x81, 0x2A, 0x56, 0xC8, 0x22, - 0x1B, 0x7D, 0xEF, 0x0F, 0x51, 0x06, 0xBC, 0x01, - 0xE9, 0x13, 0xE3, 0xD4, 0x3D, 0xB8, 0x6C, 0x2B, - 0xB4, 0xC7, 0xE0, 0x76, 0x26, 0x63, 0xC6, 0xDE, - 0x78, 0x87, 0x21, 0xC2, 0xAA, 0x07, 0xF8, 0x95, - 0x48, 0x87, 0xE2, 0x14, 0x2F, 0x2E, 0x91, 0x4A, - 0x09, 0x9E, 0xFC, 0x0A, 0xEE, 0x13, 0x39, 0x21, - 0x0D, 0x3E, 0x53, 0xDA, 0x3E, 0xCF, 0x88, 0x62, - 0x4B, 0x11, 0x19, 0xBE, 0x34, 0x01, 0x0B, 0x88, - 0x6C, 0x80, 0xF5, 0x1D, 0x18, 0x50, 0x83, 0x8F, - 0x21, 0x50, 0xE7, 0x2B, 0x04, 0x2A, 0xF3, 0x28, - 0x99, 0xC0, 0xD3, 0xD7, 0xB0, 0x2A, 0x57, 0xF8, - 0xCF, 0x26, 0x3A, 0x36, 0x95, 0x62, 0xE4, 0xE9, - 0x45, 0xA3, 0x12, 0x82, 0xA5, 0x02, 0xA9, 0x5E, - 0xE9, 0xBB, 0x03, 0x16, 0xC6, 0x86, 0x10, 0x06, - 0xDA, 0xC1, 0x7F, 0x93, 0x6F, 0x54, 0xC4, 0xC7 - }; -#endif /* WOLFSSL_NO_ML_DSA_87 */ -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT -#ifndef WOLFSSL_NO_ML_DSA_44 - static const byte seed_44_draft[] = { - 0xBA, 0xC0, 0x59, 0x52, 0x75, 0x5B, 0x26, 0x47, - 0x01, 0xCA, 0x7D, 0x80, 0x6D, 0xFA, 0x08, 0x35, - 0x10, 0x28, 0xF6, 0x7B, 0x0E, 0x83, 0xC4, 0x24, - 0x01, 0x6F, 0x66, 0xCC, 0x83, 0x87, 0xD4, 0x69 - }; - static const byte pk_44_draft[] = { - 0x86, 0xF0, 0x0C, 0x20, 0xE0, 0xDA, 0xEE, 0x5E, - 0x1E, 0xDE, 0x71, 0x39, 0x49, 0x0C, 0xC8, 0xCF, - 0xEF, 0xC9, 0xAB, 0x62, 0x3B, 0x8D, 0xEF, 0x0B, - 0xD8, 0x03, 0x12, 0x5B, 0x4A, 0xB2, 0x83, 0x61, - 0xED, 0x7E, 0xA9, 0xED, 0x2D, 0xED, 0x5A, 0x71, - 0xDD, 0xAE, 0x4A, 0x06, 0xE0, 0x2A, 0x5A, 0xAF, - 0x99, 0x69, 0x89, 0xC6, 0xAF, 0xE3, 0x2A, 0xFE, - 0x3D, 0x6E, 0x0A, 0x46, 0x71, 0x48, 0xD7, 0x17, - 0x99, 0x20, 0x01, 0x78, 0xD5, 0x8B, 0x40, 0xCB, - 0x81, 0xA0, 0x33, 0x38, 0xAE, 0x2B, 0x83, 0x4A, - 0xFD, 0x5F, 0xE0, 0xB7, 0xEE, 0xA0, 0xC4, 0x3D, - 0xB6, 0xA4, 0xD5, 0x59, 0x4B, 0xDD, 0x87, 0x1A, - 0xFC, 0x03, 0x30, 0xA0, 0xB3, 0xAD, 0x75, 0x3C, - 0xD4, 0x47, 0x72, 0x59, 0xCE, 0xB7, 0x80, 0xFD, - 0x34, 0x35, 0x5E, 0x96, 0xC8, 0x42, 0xD9, 0xDD, - 0x6C, 0xF1, 0xAB, 0xEF, 0x48, 0xD1, 0xA8, 0x02, - 0x02, 0x0F, 0x5B, 0x71, 0x4D, 0x36, 0x1E, 0x0D, - 0xC2, 0x09, 0x46, 0x7B, 0xF9, 0xEA, 0x24, 0x8F, - 0x7C, 0xCF, 0xB8, 0x9C, 0xF7, 0x49, 0x15, 0x8E, - 0x16, 0x49, 0x7E, 0xC5, 0x54, 0xF5, 0x03, 0x1D, - 0x16, 0x12, 0x02, 0x72, 0x1B, 0x38, 0x2D, 0x58, - 0x53, 0x15, 0x5E, 0xB6, 0x72, 0xCC, 0xA1, 0x09, - 0xB0, 0x2F, 0x10, 0xFA, 0x21, 0x45, 0x46, 0x37, - 0xD4, 0xFA, 0x7F, 0xFB, 0xB0, 0xD9, 0x20, 0xE2, - 0xCB, 0x56, 0xB3, 0x1E, 0xDF, 0x82, 0x67, 0x25, - 0x09, 0xD1, 0x8F, 0xFF, 0xE0, 0x43, 0xBD, 0x37, - 0x2B, 0x73, 0x0E, 0x13, 0x08, 0xC9, 0x49, 0x88, - 0x69, 0x69, 0xD9, 0x8C, 0x86, 0xE4, 0x7E, 0x63, - 0x35, 0xC5, 0xE1, 0xD0, 0x14, 0x9A, 0x89, 0x27, - 0x28, 0x17, 0xB0, 0x5B, 0x7A, 0x8F, 0xDD, 0x72, - 0x8B, 0x0A, 0x0D, 0x49, 0x58, 0x59, 0x2F, 0x0D, - 0x8F, 0x3D, 0x16, 0xCE, 0x7B, 0x11, 0xC7, 0x06, - 0x5D, 0xD5, 0x6D, 0x7B, 0x96, 0xED, 0x1E, 0x1A, - 0xF4, 0x10, 0x85, 0xDA, 0xDE, 0x84, 0x2F, 0x2B, - 0xBA, 0xFB, 0xA2, 0x5F, 0x33, 0x7D, 0x7C, 0x18, - 0x6B, 0xDF, 0x43, 0x3C, 0xE9, 0xEB, 0xB4, 0xC5, - 0x8E, 0x52, 0xF5, 0x7E, 0x4C, 0x3E, 0x6A, 0x33, - 0x41, 0x4C, 0x14, 0x05, 0x8E, 0x2C, 0x19, 0x0E, - 0x86, 0x91, 0x66, 0xDE, 0xF6, 0x4B, 0x35, 0xC2, - 0xDF, 0x3D, 0x4C, 0x7B, 0xC5, 0x58, 0x5E, 0x86, - 0x89, 0x6A, 0xFC, 0x86, 0x48, 0x75, 0xD1, 0x18, - 0xD1, 0xCB, 0x41, 0xC0, 0xF6, 0xD8, 0x87, 0x79, - 0xD9, 0xA2, 0x56, 0x2E, 0x83, 0x26, 0x11, 0xC1, - 0x4B, 0x53, 0x37, 0x85, 0x62, 0xFF, 0x6A, 0x67, - 0xFD, 0x18, 0x79, 0xD7, 0x55, 0x9B, 0xF7, 0x64, - 0xA9, 0x21, 0xB6, 0x1B, 0xF6, 0x11, 0x85, 0xF8, - 0xC0, 0x68, 0xDE, 0x61, 0x0C, 0x61, 0x7E, 0x8E, - 0xED, 0x9E, 0x58, 0x84, 0x16, 0x1A, 0x28, 0xC5, - 0x41, 0x63, 0xB3, 0xF0, 0x82, 0xAA, 0xE8, 0x36, - 0x81, 0x5C, 0xD3, 0xB7, 0xFB, 0x92, 0xF4, 0x7A, - 0x1E, 0x85, 0xA2, 0xB7, 0x21, 0xD5, 0xFA, 0xC8, - 0xE8, 0x02, 0x43, 0x5B, 0x56, 0x42, 0x03, 0x17, - 0x67, 0xEE, 0x3E, 0x31, 0x23, 0x63, 0xC7, 0x33, - 0x95, 0xDE, 0x07, 0xF6, 0x11, 0x3A, 0x2C, 0x3F, - 0x7B, 0xBB, 0x2D, 0x5C, 0x23, 0xF9, 0x2F, 0x9C, - 0x51, 0x19, 0x9F, 0x35, 0xC3, 0x18, 0x9F, 0x83, - 0x6E, 0xA8, 0x03, 0xF1, 0x79, 0x1F, 0xB0, 0xC8, - 0x2F, 0xF4, 0x2E, 0x9A, 0x26, 0xF3, 0x44, 0x02, - 0x8F, 0x45, 0x8B, 0xB0, 0x25, 0x1D, 0xF2, 0xD4, - 0x55, 0xB7, 0x65, 0xEF, 0xDB, 0x3D, 0x8E, 0x92, - 0xC8, 0xA0, 0x63, 0x4C, 0x38, 0xA3, 0x54, 0xD3, - 0xC2, 0x5A, 0x2A, 0x6A, 0x15, 0x27, 0x2A, 0xE2, - 0xFC, 0x25, 0xB6, 0xC8, 0x68, 0xEB, 0xED, 0x2D, - 0x23, 0xE8, 0x6D, 0x5C, 0xDD, 0x3F, 0x18, 0xB4, - 0x6E, 0x79, 0x36, 0xC9, 0x1C, 0xB4, 0x92, 0x41, - 0xAD, 0x35, 0xD4, 0x15, 0xE4, 0x64, 0x1C, 0x51, - 0xCB, 0x0C, 0x41, 0xB7, 0xFD, 0xC1, 0x09, 0x3E, - 0xD2, 0x4D, 0x38, 0x88, 0x77, 0x1C, 0x71, 0x91, - 0x74, 0xD3, 0x28, 0xE0, 0xCE, 0x9A, 0x11, 0x8D, - 0xBF, 0x4D, 0x8D, 0xF0, 0x44, 0xF6, 0x79, 0xFC, - 0x4C, 0xAD, 0x17, 0x88, 0xC0, 0x8C, 0x0B, 0x7A, - 0x90, 0x01, 0x53, 0x6C, 0x6B, 0x44, 0xF6, 0xE5, - 0x2E, 0xEC, 0x44, 0x4F, 0xB8, 0x9B, 0x10, 0xBE, - 0xCF, 0x55, 0x55, 0x29, 0x83, 0xB8, 0xD0, 0x25, - 0x5B, 0xCE, 0x8F, 0xA5, 0xB7, 0x6C, 0xA7, 0x47, - 0x65, 0xA9, 0xE9, 0x9B, 0xA5, 0xBC, 0x28, 0x1D, - 0x9F, 0x1F, 0x5E, 0x97, 0x42, 0x10, 0x84, 0x92, - 0xFB, 0x38, 0x0B, 0x2E, 0xAC, 0x79, 0x0A, 0x7D, - 0x00, 0x2C, 0x35, 0xD0, 0x54, 0x0D, 0x28, 0xE7, - 0xAB, 0x06, 0x02, 0xDA, 0x89, 0xA3, 0x06, 0x8E, - 0x13, 0x9A, 0xA7, 0xCA, 0x48, 0x09, 0xB0, 0x48, - 0x37, 0x08, 0xA7, 0x7D, 0xDA, 0xEB, 0x58, 0x64, - 0x39, 0xB3, 0xF3, 0xB2, 0x4C, 0x00, 0x4B, 0xCB, - 0x94, 0x36, 0xD4, 0x7C, 0x73, 0x45, 0xC8, 0x93, - 0xE5, 0x2A, 0x11, 0xF0, 0xEF, 0x0C, 0xED, 0x5F, - 0x8B, 0x0C, 0x86, 0xAD, 0x3A, 0x01, 0x07, 0x1A, - 0xC0, 0x34, 0xE8, 0x74, 0x21, 0x27, 0x73, 0x56, - 0x93, 0x76, 0x5D, 0x80, 0x59, 0xB4, 0xA4, 0xDC, - 0x80, 0xE7, 0xCE, 0x70, 0x0E, 0x0F, 0xEC, 0x56, - 0x42, 0x6E, 0x9C, 0x76, 0x3D, 0xF6, 0xB4, 0x41, - 0xE2, 0x3E, 0xAC, 0x25, 0xE7, 0x86, 0xA7, 0xA7, - 0x0A, 0x0D, 0x5D, 0x04, 0x1F, 0x45, 0xD4, 0x5B, - 0x42, 0x38, 0x4C, 0x60, 0xE7, 0xB7, 0x0D, 0xC7, - 0x28, 0x4F, 0xA5, 0x4E, 0x0C, 0x1B, 0xC4, 0xDA, - 0x50, 0x1A, 0xA0, 0x93, 0xAE, 0x10, 0x9A, 0x1A, - 0xC8, 0xC6, 0x56, 0xFC, 0x0A, 0xEA, 0x89, 0x3A, - 0x28, 0x21, 0xE9, 0x52, 0x9D, 0xEB, 0x07, 0x68, - 0xC1, 0x57, 0x32, 0x25, 0x1F, 0x93, 0x5D, 0x35, - 0xB2, 0x4B, 0x58, 0x30, 0xAF, 0x51, 0xC6, 0x7D, - 0x47, 0xD1, 0xA2, 0xAD, 0xDE, 0x75, 0x48, 0x84, - 0x74, 0x19, 0x74, 0x18, 0xA0, 0x2C, 0xD8, 0xB2, - 0xFE, 0x44, 0x78, 0x95, 0x6A, 0xBF, 0x56, 0x4D, - 0x20, 0x79, 0xE7, 0xE2, 0xE3, 0x56, 0x69, 0xB3, - 0xFA, 0xE1, 0xEB, 0xE6, 0x11, 0xAC, 0x18, 0xB3, - 0x98, 0xC1, 0x04, 0x20, 0x96, 0x4B, 0xAD, 0xDE, - 0x5B, 0x18, 0xEB, 0x7B, 0xBC, 0x15, 0x11, 0x57, - 0x29, 0x10, 0xE5, 0x80, 0x78, 0x4A, 0xF0, 0x87, - 0xF6, 0xD1, 0x3C, 0x23, 0xC5, 0xF4, 0x2D, 0xD7, - 0xAB, 0xA4, 0xD7, 0xB8, 0x45, 0x8E, 0x04, 0x1B, - 0x78, 0x59, 0x9F, 0x81, 0xE6, 0x04, 0xDF, 0x70, - 0x2B, 0x14, 0x74, 0x16, 0x49, 0xDA, 0xF0, 0xE1, - 0xC8, 0x29, 0xCC, 0x87, 0x8C, 0x2F, 0xFB, 0x18, - 0x3B, 0x47, 0xFC, 0x79, 0x04, 0x84, 0xCB, 0x0A, - 0xD2, 0x64, 0xBF, 0x86, 0xEA, 0x01, 0xAC, 0xE0, - 0xBD, 0xEC, 0x3B, 0xE1, 0xA7, 0x6C, 0xDE, 0x1D, - 0x58, 0x76, 0xCC, 0x53, 0x9E, 0xF6, 0xC6, 0xD4, - 0x2C, 0x87, 0x92, 0xA2, 0x89, 0x27, 0x31, 0x33, - 0x01, 0xA5, 0xA2, 0xE8, 0x8F, 0x13, 0x19, 0x0F, - 0xFD, 0x73, 0xB9, 0x91, 0xBD, 0xB8, 0x80, 0x9A, - 0xA3, 0xB1, 0x21, 0x6C, 0x91, 0x13, 0x8A, 0xAE, - 0xC7, 0xCB, 0x67, 0x14, 0xD1, 0xC0, 0x28, 0x89, - 0x04, 0x8C, 0x9F, 0xDE, 0xA0, 0x9A, 0x99, 0xA8, - 0x61, 0xE6, 0x8F, 0x8E, 0x39, 0xEF, 0x6B, 0x5E, - 0x84, 0x5F, 0x5D, 0x24, 0x37, 0x73, 0x9D, 0x75, - 0xC4, 0xEF, 0xE2, 0xA1, 0xF2, 0xBC, 0x0D, 0xE1, - 0x0D, 0xEC, 0xFA, 0xEE, 0xC1, 0x63, 0xC8, 0x2E, - 0x7D, 0x85, 0x65, 0xC3, 0xF2, 0x0D, 0x8B, 0x73, - 0xF9, 0x3B, 0x0B, 0x3D, 0x49, 0x8B, 0xFB, 0x16, - 0x5B, 0x75, 0x48, 0x9B, 0x56, 0x0A, 0x83, 0x4C, - 0x0D, 0x13, 0xB2, 0xB4, 0x25, 0xC7, 0x2C, 0xCB, - 0xA7, 0x9E, 0xCA, 0x41, 0x44, 0x14, 0x9A, 0x03, - 0xD3, 0x01, 0x8C, 0xB0, 0xD5, 0xA9, 0x36, 0xA4, - 0x16, 0x21, 0x49, 0x0A, 0x99, 0xA1, 0x89, 0xA5, - 0x91, 0x10, 0xA2, 0x1B, 0x3F, 0x98, 0x1E, 0x1C, - 0x43, 0xAA, 0x9C, 0x16, 0x5A, 0xF0, 0x18, 0x64, - 0x0F, 0x6A, 0xE3, 0x97, 0x83, 0x31, 0x4E, 0x84, - 0xC9, 0xEA, 0xD8, 0x9F, 0xEA, 0x9E, 0xD6, 0xF2, - 0x0E, 0x15, 0xA5, 0x48, 0x15, 0x8B, 0x10, 0x1D, - 0x77, 0x78, 0x1B, 0x54, 0x03, 0xC1, 0x2C, 0xB1, - 0xC8, 0x22, 0x11, 0x9D, 0xB8, 0x82, 0x94, 0x26, - 0xA0, 0xED, 0x6C, 0xAD, 0xA8, 0x03, 0xC2, 0xED, - 0x02, 0x74, 0x3E, 0x54, 0xBD, 0x77, 0xA6, 0x0B, - 0x37, 0xFE, 0x04, 0xCD, 0x25, 0x10, 0x2D, 0x52, - 0xC2, 0xD4, 0x5B, 0x9B, 0xAE, 0xFE, 0x35, 0x73, - 0x16, 0x61, 0x84, 0x25, 0x1D, 0xBE, 0x95, 0x34, - 0xA4, 0xF6, 0xB9, 0xA4, 0xF9, 0xAA, 0x5D, 0x1E, - 0x49, 0xBB, 0x19, 0xD9, 0x64, 0xD7, 0x48, 0x1A, - 0x0A, 0x93, 0xC3, 0x69, 0x13, 0x12, 0x68, 0xBB, - 0x97, 0x97, 0xBD, 0x99, 0x69, 0xCE, 0xE6, 0xF5, - 0x84, 0x7B, 0xCC, 0xE4, 0x7D, 0xD3, 0xCD, 0x8A, - 0x7A, 0x4B, 0x98, 0xF4, 0x09, 0x9D, 0xEA, 0x5D, - 0x4E, 0x1F, 0xE1, 0x1E, 0x6C, 0x48, 0xD3, 0x5E, - 0x67, 0xD9, 0xFF, 0x64, 0x4D, 0xA7, 0x64, 0x7A, - 0x01, 0xB2, 0xE9, 0x63, 0x14, 0x10, 0xB7, 0x08, - 0x0C, 0xF9, 0x4D, 0x66, 0x48, 0x46, 0xE3, 0xC2, - 0x48, 0x6B, 0x47, 0xCE, 0x00, 0x98, 0x92, 0x83, - 0xF7, 0xE0, 0x1F, 0x96, 0xFA, 0x53, 0xD5, 0x49, - 0x1C, 0xC7, 0x89, 0xB4, 0xA5, 0x4B, 0x63, 0xBF, - 0xD2, 0x00, 0x79, 0xDD, 0xC1, 0x60, 0xAA, 0xF2, - 0x0F, 0x47, 0xB9, 0x4F, 0x8A, 0x66, 0x05, 0x3D, - 0x96, 0x36, 0x64, 0x48, 0x5F, 0x7E, 0x56, 0x2B, - 0xB3, 0x47, 0xE2, 0x76, 0x64, 0x21, 0x65, 0x34, - 0xFC, 0xDD, 0x2D, 0x4C, 0xE2, 0x99, 0x33, 0x04, - 0xE4, 0x26, 0x15, 0x37, 0x6C, 0x32, 0xB9, 0x17 - }; - static const byte sk_44_draft[] = { - 0x86, 0xF0, 0x0C, 0x20, 0xE0, 0xDA, 0xEE, 0x5E, - 0x1E, 0xDE, 0x71, 0x39, 0x49, 0x0C, 0xC8, 0xCF, - 0xEF, 0xC9, 0xAB, 0x62, 0x3B, 0x8D, 0xEF, 0x0B, - 0xD8, 0x03, 0x12, 0x5B, 0x4A, 0xB2, 0x83, 0x61, - 0x73, 0x61, 0x49, 0x01, 0x0F, 0x94, 0x08, 0x30, - 0x26, 0x02, 0x12, 0x63, 0x64, 0x15, 0x7A, 0x4D, - 0xBA, 0xF5, 0x25, 0xA7, 0xAA, 0x0B, 0x7C, 0x3D, - 0xCE, 0x05, 0x91, 0x95, 0xEF, 0x17, 0x2F, 0xE2, - 0x5A, 0x03, 0x5E, 0x2E, 0x4D, 0xFA, 0xE7, 0x5F, - 0xCD, 0x61, 0x34, 0xFB, 0x3D, 0x3C, 0x5C, 0x60, - 0x1A, 0x6F, 0x09, 0xB5, 0x9D, 0xDD, 0x90, 0x53, - 0xF6, 0x89, 0x50, 0xC2, 0xE1, 0xED, 0x0A, 0x61, - 0x8F, 0xFA, 0xDC, 0x2D, 0xB2, 0x8B, 0xA1, 0x56, - 0xAC, 0x5E, 0x0E, 0xF1, 0x3B, 0x1E, 0x22, 0x9F, - 0xAA, 0x05, 0x96, 0xA3, 0x5E, 0x44, 0x86, 0xA8, - 0xBA, 0x15, 0xD1, 0x11, 0x7D, 0xAA, 0xD0, 0xAA, - 0x01, 0x27, 0x25, 0x04, 0x82, 0x89, 0xA4, 0x22, - 0x2E, 0xDB, 0x80, 0x45, 0xD2, 0x30, 0x45, 0x59, - 0x16, 0x64, 0xE2, 0x08, 0x86, 0x50, 0x00, 0x8E, - 0xCA, 0x08, 0x51, 0x5A, 0x06, 0x01, 0x54, 0x82, - 0x20, 0xC4, 0x92, 0x30, 0x02, 0x21, 0x4E, 0x0A, - 0x93, 0x89, 0x84, 0xB8, 0x70, 0x24, 0x40, 0x51, - 0x24, 0xB3, 0x44, 0xDB, 0x08, 0x40, 0x1B, 0x37, - 0x44, 0x21, 0x22, 0x8E, 0x8C, 0x16, 0x42, 0x10, - 0x22, 0x0E, 0xA1, 0xB2, 0x8D, 0x18, 0x49, 0x30, - 0xC1, 0x32, 0x69, 0x21, 0x03, 0x8E, 0x49, 0x44, - 0x08, 0xD3, 0x16, 0x89, 0x10, 0xA4, 0x25, 0x5C, - 0x22, 0x8A, 0xC0, 0xC8, 0x08, 0xC1, 0x04, 0x6A, - 0xD2, 0xA0, 0x50, 0x8A, 0x02, 0x52, 0x92, 0x16, - 0x44, 0x54, 0x30, 0x4A, 0x92, 0x32, 0x0C, 0x4C, - 0x44, 0x2D, 0x04, 0x15, 0x2A, 0x99, 0x24, 0x42, - 0x52, 0xA8, 0x30, 0x53, 0x24, 0x85, 0x9A, 0xB8, - 0x01, 0xE2, 0x08, 0x09, 0x23, 0x28, 0x08, 0xC4, - 0x98, 0x85, 0x0B, 0xB9, 0x40, 0x60, 0x26, 0x28, - 0x0A, 0x45, 0x12, 0x0C, 0x43, 0x84, 0x82, 0x16, - 0x89, 0xC4, 0x48, 0x28, 0x58, 0x18, 0x2A, 0x20, - 0x07, 0x02, 0xD3, 0x82, 0x45, 0x50, 0xB0, 0x50, - 0x64, 0x36, 0x91, 0x52, 0x02, 0x45, 0x5A, 0x42, - 0x26, 0x01, 0x28, 0x71, 0xD4, 0x86, 0x10, 0x19, - 0xC4, 0x68, 0xC4, 0x30, 0x66, 0xE0, 0x02, 0x49, - 0x18, 0x34, 0x05, 0x04, 0x02, 0x04, 0x90, 0x94, - 0x4C, 0x01, 0xA7, 0x80, 0x12, 0x97, 0x08, 0x19, - 0xC5, 0x41, 0x24, 0xC1, 0x61, 0x08, 0xB0, 0x0C, - 0x21, 0xC1, 0x49, 0x9B, 0x42, 0x51, 0x62, 0x18, - 0x22, 0x54, 0x06, 0x06, 0x93, 0x26, 0x70, 0x49, - 0x86, 0x91, 0x00, 0x28, 0x6C, 0x02, 0xC9, 0x60, - 0x13, 0xC3, 0x09, 0xCB, 0x14, 0x66, 0x09, 0x17, - 0x25, 0x1C, 0x16, 0x89, 0x01, 0xB6, 0x01, 0x60, - 0x86, 0x71, 0x58, 0x96, 0x04, 0x82, 0x38, 0x61, - 0x43, 0x40, 0x72, 0xCC, 0x46, 0x71, 0x81, 0x20, - 0x2C, 0x18, 0x20, 0x6E, 0x03, 0x91, 0x11, 0x9A, - 0x08, 0x89, 0x43, 0x06, 0x48, 0x64, 0x02, 0x6C, - 0x21, 0x33, 0x8D, 0x48, 0x16, 0x66, 0x9B, 0xA4, - 0x2D, 0x01, 0x10, 0x66, 0xDC, 0xB0, 0x25, 0x40, - 0xA0, 0x24, 0xA2, 0xB4, 0x44, 0xC8, 0x26, 0x61, - 0x0A, 0x10, 0x4E, 0xD0, 0x04, 0x11, 0x4A, 0x82, - 0x51, 0x03, 0x04, 0x6C, 0x18, 0x88, 0x6C, 0xE0, - 0x98, 0x41, 0x11, 0x29, 0x06, 0x62, 0x12, 0x8E, - 0xDA, 0x42, 0x91, 0x09, 0x48, 0x60, 0xD1, 0xB4, - 0x80, 0x10, 0x30, 0x30, 0x80, 0x38, 0x82, 0xD0, - 0x84, 0x0D, 0x08, 0x14, 0x92, 0x24, 0x41, 0x40, - 0x0C, 0x10, 0x89, 0xCC, 0x38, 0x8A, 0x13, 0xB6, - 0x89, 0x1A, 0xA7, 0x24, 0x5C, 0x10, 0x12, 0x1B, - 0x21, 0x50, 0x91, 0xB4, 0x29, 0x99, 0xB6, 0x51, - 0x04, 0xB1, 0x91, 0x59, 0xA6, 0x05, 0x19, 0x08, - 0x4A, 0x4A, 0x84, 0x6C, 0x1C, 0x49, 0x02, 0x44, - 0x20, 0x85, 0x14, 0xB1, 0x89, 0x09, 0x44, 0x2C, - 0x10, 0x02, 0x22, 0xE1, 0xB4, 0x25, 0x01, 0x21, - 0x71, 0x53, 0xC2, 0x85, 0x82, 0x88, 0x28, 0xC0, - 0x02, 0x52, 0x19, 0xC5, 0x51, 0x19, 0xA5, 0x09, - 0xC0, 0x82, 0x91, 0x21, 0x47, 0x0D, 0x1C, 0x30, - 0x69, 0xDC, 0xB8, 0x6C, 0x04, 0x41, 0x6A, 0x91, - 0x16, 0x40, 0xA0, 0xC8, 0x24, 0x1A, 0x10, 0x01, - 0x04, 0x39, 0x25, 0x80, 0x16, 0x02, 0x63, 0x36, - 0x71, 0x90, 0xB0, 0x8D, 0x44, 0x16, 0x8E, 0xDA, - 0x16, 0x2E, 0xCB, 0x44, 0x20, 0x54, 0x38, 0x06, - 0x54, 0xC4, 0x01, 0x51, 0x40, 0x86, 0x52, 0x44, - 0x0E, 0x82, 0x02, 0x32, 0x21, 0x38, 0x89, 0x19, - 0x04, 0x40, 0xD8, 0x12, 0x68, 0x21, 0x98, 0x11, - 0x03, 0x33, 0x8A, 0x18, 0x00, 0x45, 0xCB, 0x22, - 0x32, 0xC3, 0x04, 0x46, 0x09, 0x18, 0x51, 0x22, - 0x44, 0x89, 0x13, 0x16, 0x6E, 0xDA, 0x46, 0x45, - 0x09, 0x19, 0x41, 0x81, 0x10, 0x01, 0xDC, 0x18, - 0x8E, 0xC8, 0x44, 0x4C, 0x00, 0x17, 0x82, 0x9C, - 0xA6, 0x4D, 0xC8, 0x08, 0x10, 0x24, 0x42, 0x6D, - 0x91, 0x38, 0x89, 0x8C, 0x40, 0x6E, 0x00, 0x35, - 0x11, 0xD3, 0x24, 0x09, 0x1A, 0x01, 0x65, 0x88, - 0x48, 0x45, 0x09, 0x01, 0x71, 0x43, 0xB8, 0x80, - 0x11, 0x82, 0x2C, 0x84, 0xB8, 0x49, 0x58, 0x14, - 0x28, 0x92, 0x20, 0x32, 0x09, 0x12, 0x05, 0x20, - 0x81, 0x2D, 0x5B, 0x86, 0x11, 0x04, 0x90, 0x45, - 0x49, 0x80, 0x40, 0xD1, 0xC8, 0x24, 0x98, 0xC2, - 0x2C, 0x99, 0xA2, 0x30, 0x04, 0x98, 0x8C, 0x53, - 0x24, 0x02, 0x8A, 0x04, 0x01, 0x4C, 0x28, 0x71, - 0xC3, 0x86, 0x6C, 0x24, 0x49, 0x81, 0x04, 0x02, - 0x28, 0x62, 0x44, 0x32, 0x61, 0x20, 0x28, 0x01, - 0x04, 0x11, 0x0C, 0x09, 0x08, 0x90, 0x98, 0x84, - 0x63, 0xB2, 0x45, 0x63, 0x38, 0x2E, 0x04, 0xA4, - 0x0C, 0x18, 0x05, 0x4E, 0xCC, 0x86, 0x90, 0x43, - 0x40, 0x91, 0x54, 0x02, 0x21, 0x43, 0x28, 0x42, - 0x23, 0x94, 0x29, 0xC8, 0xA6, 0x91, 0x02, 0x09, - 0x80, 0xE3, 0x82, 0x00, 0xC1, 0x34, 0x08, 0xD1, - 0x34, 0x84, 0x12, 0x45, 0x8C, 0x02, 0xC6, 0x81, - 0x41, 0xC6, 0x6C, 0x1B, 0x12, 0x24, 0x04, 0x08, - 0x0D, 0x02, 0x00, 0x0C, 0x9C, 0xA2, 0x05, 0x49, - 0x34, 0x65, 0x00, 0x06, 0x89, 0x88, 0x34, 0x00, - 0xD8, 0x82, 0x29, 0x92, 0x12, 0x91, 0xE3, 0x36, - 0x86, 0xD1, 0x80, 0x71, 0x98, 0xB0, 0x50, 0x48, - 0xC6, 0x11, 0x14, 0x80, 0x0D, 0xA0, 0x12, 0x4D, - 0x9B, 0xB2, 0x40, 0x21, 0x41, 0x50, 0x4B, 0x36, - 0x05, 0x52, 0x10, 0x26, 0x19, 0xB2, 0x60, 0x92, - 0xA2, 0x24, 0xCB, 0x08, 0x00, 0x14, 0x22, 0x49, - 0x5A, 0xD0, 0x55, 0xBD, 0x2B, 0x45, 0xE4, 0x31, - 0x41, 0xA8, 0xC3, 0xA3, 0xAD, 0xBD, 0xB6, 0x37, - 0x92, 0x06, 0x95, 0x6B, 0x3D, 0xD8, 0xE5, 0x33, - 0x71, 0xB6, 0x62, 0xB7, 0x67, 0x6C, 0x77, 0x84, - 0x63, 0x2F, 0x41, 0x1D, 0xBA, 0x51, 0x27, 0xE1, - 0x24, 0x5D, 0xC2, 0x38, 0x71, 0x65, 0x9E, 0x8E, - 0xE4, 0xEB, 0xBB, 0x1D, 0x89, 0xEB, 0x18, 0xCA, - 0x0C, 0xA6, 0x86, 0xA3, 0x4D, 0x7C, 0x7A, 0x02, - 0xAC, 0xDD, 0x34, 0xCE, 0x05, 0x3B, 0x1B, 0x49, - 0xF4, 0x6D, 0x12, 0x33, 0xBC, 0x52, 0x70, 0x59, - 0xDF, 0xBC, 0x5D, 0x49, 0x42, 0x6A, 0xED, 0xC7, - 0xF1, 0x8C, 0xF5, 0x6D, 0x1F, 0xBC, 0xE4, 0xBD, - 0x45, 0x5D, 0x59, 0xF8, 0xCE, 0x9A, 0x39, 0xB5, - 0x96, 0x32, 0xFD, 0x93, 0x65, 0x8E, 0x92, 0xF1, - 0x8F, 0xB0, 0x99, 0xF3, 0x80, 0x0F, 0x66, 0x14, - 0xFE, 0xEB, 0x23, 0x17, 0x2D, 0x4C, 0x8F, 0x41, - 0x9A, 0x9B, 0xD1, 0x5B, 0x5B, 0xC0, 0x3D, 0xA6, - 0x0E, 0xF3, 0xE0, 0xA1, 0x04, 0xDC, 0x24, 0x18, - 0x9D, 0x90, 0xC6, 0x89, 0x5A, 0x7F, 0x10, 0x1E, - 0x4B, 0x21, 0xEC, 0x91, 0xD8, 0x5D, 0x65, 0xDB, - 0xCF, 0x90, 0x62, 0x85, 0xE9, 0x58, 0xA3, 0x47, - 0x92, 0x1C, 0xD0, 0x0C, 0xA3, 0xF3, 0x3E, 0x36, - 0xDB, 0x24, 0xA6, 0x98, 0xAB, 0xA7, 0x89, 0x2B, - 0x71, 0x6C, 0x4D, 0x00, 0xB0, 0xD5, 0xA0, 0xCA, - 0x1A, 0x76, 0x8E, 0x80, 0xB7, 0xAE, 0x83, 0x89, - 0x50, 0xF8, 0xA7, 0x52, 0x8B, 0x94, 0xD2, 0x2B, - 0x9F, 0x49, 0x92, 0x3D, 0x54, 0x0D, 0xB8, 0xD1, - 0x19, 0x49, 0xAC, 0x91, 0xAF, 0xDB, 0xE9, 0x24, - 0x4D, 0xD8, 0xE1, 0xD5, 0x16, 0x0E, 0xB1, 0x39, - 0x40, 0x7D, 0x5F, 0xF5, 0x92, 0xB4, 0xAF, 0xC3, - 0x76, 0x2B, 0xDB, 0x7D, 0x52, 0x97, 0x62, 0x9F, - 0xCF, 0x32, 0x19, 0x5F, 0xE6, 0x32, 0xFB, 0x8E, - 0x39, 0x24, 0xB4, 0xEB, 0xE9, 0x17, 0x9E, 0x47, - 0x69, 0x4D, 0x92, 0x82, 0x96, 0x88, 0x38, 0x11, - 0xCE, 0xD6, 0xBF, 0x18, 0xE3, 0x51, 0x40, 0x81, - 0x11, 0xA0, 0x74, 0xDA, 0x0D, 0x5E, 0xEC, 0xD8, - 0x5D, 0x33, 0x22, 0x1E, 0xB9, 0x5D, 0xBF, 0x79, - 0xB0, 0xA1, 0xEF, 0xD1, 0x2D, 0xA0, 0x5F, 0xA1, - 0xC7, 0x6E, 0xD5, 0x08, 0xB8, 0xD0, 0xC1, 0x95, - 0x51, 0x9B, 0x07, 0xC3, 0x4A, 0x0A, 0xB5, 0xA1, - 0x28, 0xFE, 0x95, 0x95, 0x0A, 0xCF, 0x83, 0xA8, - 0xEB, 0x8F, 0xFB, 0x18, 0xD5, 0xBD, 0x69, 0x50, - 0xF1, 0xDF, 0x06, 0xFA, 0x9A, 0x65, 0x47, 0xBB, - 0x56, 0xE9, 0xCB, 0x8F, 0x69, 0x5F, 0xE0, 0xAD, - 0x19, 0x3A, 0x70, 0xE5, 0x66, 0x42, 0xD7, 0x1C, - 0x0C, 0xB4, 0x03, 0x89, 0x7D, 0x47, 0x4D, 0x29, - 0x67, 0x8C, 0x41, 0x73, 0xAB, 0x7D, 0xFD, 0x69, - 0x15, 0xAD, 0xE3, 0xB7, 0xF8, 0x98, 0x3B, 0xCA, - 0x8F, 0x27, 0x37, 0x7B, 0x72, 0x2C, 0x5F, 0x23, - 0x73, 0x15, 0xE2, 0xB6, 0xBD, 0xDE, 0x84, 0xF8, - 0x7E, 0x22, 0xB9, 0xFD, 0xD3, 0x4D, 0x62, 0x80, - 0xBA, 0xC5, 0x57, 0x29, 0x30, 0x1B, 0x06, 0x4D, - 0x20, 0xB1, 0x53, 0x86, 0xCB, 0x6A, 0x4A, 0xE3, - 0xC1, 0xA9, 0x88, 0xCF, 0xEB, 0x15, 0x2F, 0xA8, - 0xA8, 0x6F, 0xFC, 0x2A, 0xA8, 0x0E, 0xD9, 0xFA, - 0xEA, 0xD7, 0x3B, 0xCE, 0xF8, 0x5B, 0xD8, 0x92, - 0x22, 0x6A, 0x1A, 0x8E, 0x5E, 0x91, 0x37, 0x2C, - 0x21, 0x05, 0xC4, 0xAC, 0xF7, 0x62, 0x83, 0xBA, - 0x55, 0xD5, 0x2C, 0xCE, 0xA1, 0x19, 0x93, 0x0E, - 0xDE, 0xB6, 0xB8, 0x78, 0x0F, 0xBF, 0x4C, 0xA4, - 0x66, 0xAD, 0x97, 0x2F, 0xEE, 0x34, 0xE9, 0xA2, - 0xB6, 0x1D, 0x3C, 0x60, 0xFB, 0xB8, 0x7F, 0xF8, - 0xFD, 0x34, 0x8C, 0xC5, 0xC7, 0x38, 0x72, 0x74, - 0x19, 0xA9, 0xCF, 0x54, 0x49, 0x5B, 0xBA, 0x70, - 0x12, 0xC1, 0x61, 0xDC, 0x32, 0x61, 0x49, 0x66, - 0xF3, 0x57, 0xAA, 0x0F, 0xE6, 0x44, 0x9E, 0x8A, - 0x19, 0x9C, 0x6B, 0x63, 0x2C, 0x14, 0x1E, 0xDD, - 0x00, 0x27, 0xE3, 0x95, 0xE3, 0xE7, 0xD9, 0xFF, - 0x30, 0x2D, 0x14, 0x19, 0x4F, 0x49, 0x20, 0x0B, - 0x58, 0x2A, 0x23, 0x1C, 0xE2, 0xAD, 0x6B, 0x9C, - 0x7B, 0xB6, 0x20, 0x63, 0x08, 0x24, 0x55, 0x04, - 0x58, 0x1F, 0x0E, 0xBE, 0x2A, 0x6F, 0x79, 0x90, - 0x9E, 0x15, 0x8F, 0x4B, 0xDB, 0xE2, 0xBE, 0xBC, - 0x28, 0xB1, 0xC8, 0xFE, 0x00, 0x6D, 0x71, 0xCC, - 0x91, 0x6A, 0xCC, 0xF8, 0x12, 0x8B, 0xEC, 0xF3, - 0x46, 0x53, 0xB1, 0x7F, 0xB3, 0x79, 0xF0, 0xC7, - 0xD7, 0xA5, 0xCF, 0x2C, 0xC3, 0x09, 0x66, 0x82, - 0x53, 0x43, 0xFD, 0xAC, 0xDE, 0xD5, 0x85, 0xB3, - 0x79, 0x74, 0x55, 0xE8, 0xF6, 0xE5, 0xFB, 0xF0, - 0x63, 0x0C, 0x36, 0x63, 0x65, 0x10, 0x43, 0xC9, - 0x60, 0x99, 0xD6, 0x0C, 0xB9, 0x66, 0x1C, 0xA9, - 0x97, 0x4D, 0xDB, 0xA8, 0x13, 0x9E, 0xAE, 0xCA, - 0x7A, 0x5F, 0xE3, 0x24, 0xA0, 0xEE, 0x8A, 0x9D, - 0x7F, 0x03, 0x53, 0x21, 0x6B, 0xAF, 0x3D, 0xF9, - 0x38, 0xF3, 0x7A, 0x1D, 0xDA, 0xE2, 0xEF, 0xBA, - 0x86, 0x21, 0x85, 0x1F, 0x36, 0x08, 0x0B, 0xDA, - 0x37, 0x5A, 0x0A, 0xD7, 0x55, 0x41, 0xD5, 0x84, - 0x1B, 0x36, 0xA2, 0x50, 0x65, 0xD7, 0xF3, 0xA3, - 0xEB, 0xE1, 0xDE, 0x0F, 0x85, 0xAA, 0xF6, 0x2F, - 0xAB, 0xBB, 0xC8, 0xF1, 0x2A, 0xD1, 0x0A, 0x9B, - 0xE4, 0x7B, 0xBC, 0x4D, 0x42, 0xD8, 0xA3, 0x4C, - 0x07, 0x6A, 0x60, 0x3E, 0xE2, 0xDA, 0xE7, 0x00, - 0xDF, 0x27, 0x94, 0xEF, 0x90, 0x99, 0x88, 0x2C, - 0xCF, 0xAA, 0xE1, 0x71, 0x2D, 0xFD, 0x00, 0x9C, - 0x55, 0xBF, 0xC4, 0x7A, 0x55, 0xE9, 0xE0, 0xB4, - 0x7F, 0x3D, 0xE9, 0xB0, 0x01, 0xA7, 0x27, 0x23, - 0x27, 0x58, 0x31, 0x0E, 0x8E, 0x80, 0xD8, 0xEB, - 0x64, 0xA0, 0xC3, 0xC9, 0xEA, 0x69, 0x9C, 0x74, - 0x5E, 0xAF, 0xD5, 0xEF, 0x5C, 0x4E, 0x40, 0x71, - 0xD6, 0x57, 0x77, 0xE2, 0xAF, 0x0E, 0x1D, 0xB8, - 0x5A, 0x91, 0x20, 0x4C, 0x33, 0x4D, 0xD8, 0x4F, - 0x98, 0xE0, 0x86, 0x1D, 0x02, 0xA0, 0xDA, 0x06, - 0x17, 0xC4, 0x5D, 0x2E, 0x49, 0x31, 0xE6, 0xE4, - 0xDC, 0x18, 0x23, 0x26, 0xF3, 0x61, 0xF5, 0x8D, - 0x26, 0x2C, 0x18, 0x4C, 0xDF, 0x71, 0x90, 0x24, - 0x96, 0xD3, 0xD4, 0x1A, 0x6F, 0x08, 0xAB, 0x29, - 0x7D, 0xFF, 0x4E, 0x27, 0x6D, 0x39, 0x83, 0x17, - 0x90, 0xA4, 0x07, 0x8A, 0xDE, 0x79, 0x53, 0xF6, - 0x99, 0x2E, 0xA6, 0x39, 0x47, 0xC3, 0xBE, 0x12, - 0xC7, 0xA5, 0x7E, 0xA2, 0x19, 0x57, 0x04, 0x45, - 0xBE, 0x44, 0x62, 0x92, 0xCA, 0x56, 0xE1, 0xF0, - 0x45, 0x3B, 0xA4, 0xF8, 0xF5, 0xCD, 0xC7, 0xD2, - 0xB2, 0x46, 0x57, 0x51, 0x0B, 0x06, 0xDA, 0x54, - 0x03, 0x9E, 0x52, 0xA2, 0x78, 0x69, 0x25, 0x2E, - 0x75, 0x83, 0x25, 0x3F, 0xA3, 0x62, 0x27, 0xB9, - 0xA6, 0x59, 0x7A, 0xB1, 0xB6, 0xE9, 0xC1, 0xDD, - 0x2F, 0x22, 0x2D, 0x3B, 0xA3, 0x22, 0xD6, 0x11, - 0x7B, 0x08, 0x27, 0x92, 0x83, 0x7A, 0x5D, 0x0D, - 0x6B, 0x9D, 0x5B, 0xEB, 0xE9, 0xC0, 0x88, 0xDE, - 0x44, 0x55, 0xBA, 0x69, 0xC1, 0x7A, 0x4D, 0xE6, - 0x35, 0x67, 0x6F, 0x99, 0x9B, 0x07, 0xD8, 0x04, - 0xAA, 0xEA, 0x7D, 0xFF, 0x8E, 0xB8, 0xAA, 0x4C, - 0x79, 0xE2, 0x88, 0xA8, 0x1D, 0xE8, 0xA6, 0x77, - 0xCA, 0x06, 0xC0, 0xDF, 0x0E, 0x2B, 0xCB, 0xFF, - 0x9F, 0x64, 0x67, 0x11, 0xF1, 0xB9, 0x38, 0x83, - 0x19, 0x05, 0x30, 0x9B, 0x01, 0x11, 0x55, 0x03, - 0xAD, 0x44, 0x7D, 0x3C, 0x07, 0xEF, 0x88, 0x19, - 0x92, 0xC0, 0xFE, 0xE1, 0xAB, 0xDB, 0x24, 0x18, - 0x17, 0xD0, 0x03, 0x5C, 0x91, 0xD4, 0xA6, 0x2A, - 0xF1, 0xE9, 0x72, 0x62, 0x58, 0x22, 0x7D, 0x55, - 0x15, 0xE2, 0xA1, 0x70, 0x14, 0x5E, 0x34, 0xB9, - 0x5A, 0xB7, 0x5D, 0x3F, 0xB8, 0xB5, 0x45, 0x44, - 0xD2, 0x50, 0xD1, 0xC6, 0x7E, 0xE7, 0x3D, 0xF4, - 0xD3, 0xEC, 0xFB, 0x97, 0x32, 0x11, 0x72, 0x51, - 0xB7, 0x4A, 0xC8, 0x38, 0x96, 0xFC, 0x6F, 0x69, - 0xC2, 0xD5, 0xD3, 0x28, 0xE9, 0x63, 0x14, 0x14, - 0xFE, 0xB1, 0xA4, 0x02, 0x80, 0x65, 0x73, 0xD3, - 0x57, 0x07, 0x95, 0x21, 0x40, 0x00, 0x77, 0xA7, - 0x6D, 0x44, 0x2B, 0x0D, 0x77, 0x07, 0x92, 0x64, - 0xD4, 0x3A, 0xE2, 0x7F, 0xF2, 0x1C, 0x14, 0x08, - 0x60, 0x74, 0x8F, 0xFC, 0x0B, 0xE8, 0xEC, 0xA9, - 0xB7, 0x97, 0xA7, 0x85, 0x8A, 0xEF, 0xD7, 0x7E, - 0xD5, 0x15, 0xF7, 0x45, 0x8D, 0x9C, 0xBF, 0x23, - 0xEB, 0x8C, 0x4D, 0xD2, 0x28, 0x7E, 0x0A, 0x61, - 0x2E, 0xBA, 0xBE, 0x89, 0x1D, 0x64, 0x45, 0x22, - 0x70, 0x9D, 0x48, 0xEB, 0x2F, 0x96, 0xF1, 0xA7, - 0xDE, 0xD3, 0x28, 0x4C, 0xC9, 0xFB, 0xF2, 0x9C, - 0x5B, 0xFC, 0xBE, 0xBE, 0xF4, 0x38, 0xC9, 0x43, - 0xC3, 0x66, 0x53, 0xA9, 0x06, 0xE5, 0x71, 0x16, - 0xA4, 0xBB, 0x3B, 0x50, 0x53, 0xCF, 0xF4, 0x1F, - 0xD6, 0x00, 0x07, 0x46, 0xFB, 0x97, 0x0B, 0xF9, - 0x3D, 0xF4, 0xC6, 0x60, 0xD0, 0x37, 0x70, 0xC0, - 0x2D, 0xD1, 0x9F, 0xA5, 0x78, 0xF3, 0x1F, 0x03, - 0x81, 0xB1, 0x93, 0xBA, 0xE5, 0x82, 0xE6, 0xD1, - 0x66, 0x93, 0x83, 0x5B, 0xB9, 0xAD, 0xD9, 0x01, - 0xA5, 0xB6, 0x5C, 0x69, 0x82, 0xD7, 0x2F, 0x35, - 0x35, 0x98, 0xEE, 0xE9, 0xA0, 0x74, 0xC1, 0x91, - 0x44, 0x0A, 0x04, 0xCD, 0x97, 0xBE, 0x6B, 0x60, - 0x90, 0x9A, 0x48, 0x7B, 0x83, 0xA2, 0x28, 0x97, - 0xB5, 0xBA, 0xB1, 0x4D, 0x35, 0x8B, 0x34, 0x0A, - 0xA1, 0xCB, 0xA5, 0xC2, 0xA4, 0x6A, 0x36, 0xB3, - 0x12, 0x46, 0x59, 0xDB, 0x63, 0xE5, 0xF9, 0xF1, - 0x7F, 0xAD, 0x42, 0xF4, 0x24, 0xF0, 0x02, 0x3D, - 0x1E, 0x6C, 0xD5, 0xB3, 0x06, 0x8F, 0x1F, 0x59, - 0x79, 0xCC, 0xF9, 0x5B, 0x4F, 0x8B, 0xD6, 0x03, - 0xC7, 0x53, 0xE6, 0xCE, 0xBB, 0xD8, 0x52, 0x89, - 0x70, 0x5D, 0x98, 0x86, 0xA5, 0x9E, 0x44, 0xA9, - 0xC8, 0x17, 0xA2, 0x6F, 0x43, 0x2D, 0x8D, 0xA7, - 0xDE, 0x3E, 0xFA, 0xE7, 0x98, 0x7B, 0xB5, 0xBE, - 0x7B, 0x10, 0xB8, 0xB8, 0xA5, 0x3D, 0x3E, 0xCD, - 0x94, 0x19, 0x5E, 0x06, 0x51, 0xB8, 0x58, 0x1E, - 0x0E, 0xCF, 0xFE, 0xE5, 0xED, 0x84, 0xB5, 0xF5, - 0x0F, 0x34, 0x32, 0xAC, 0x0A, 0x7F, 0x03, 0xF0, - 0xF8, 0xFC, 0x69, 0xA0, 0x26, 0x0D, 0x2E, 0xFA, - 0x62, 0x49, 0x5C, 0xC4, 0xE5, 0xF6, 0x8B, 0xC5, - 0x26, 0x21, 0x23, 0x3B, 0xBD, 0x9A, 0x23, 0x95, - 0x69, 0xA7, 0x48, 0x94, 0x30, 0x1E, 0xC3, 0x82, - 0xB6, 0x75, 0x30, 0xA6, 0xF3, 0x1E, 0xBB, 0xBC, - 0xF7, 0x21, 0x27, 0x12, 0x2C, 0x51, 0x50, 0x55, - 0x87, 0x0D, 0xF1, 0xCC, 0x6C, 0xFF, 0xEA, 0x7E, - 0x2C, 0xDA, 0x8B, 0x9B, 0x20, 0xF4, 0x75, 0xFB, - 0xC2, 0x3F, 0xBE, 0x09, 0xA6, 0xC9, 0x26, 0xE7, - 0xB5, 0xC7, 0xE6, 0xB9, 0x35, 0x8C, 0xAF, 0xFA, - 0xC0, 0x8D, 0x43, 0x33, 0x25, 0xBA, 0xAA, 0xDC, - 0xCF, 0xBC, 0xE4, 0xC4, 0xC6, 0x26, 0x4A, 0x0D, - 0x9D, 0xCC, 0x2A, 0xE0, 0x5B, 0x1E, 0xC9, 0x78, - 0xF8, 0xA2, 0xB5, 0x46, 0xE5, 0x49, 0xB8, 0x4C, - 0xC2, 0x22, 0x40, 0xCE, 0x97, 0x9A, 0x95, 0x40, - 0xF7, 0xD6, 0x52, 0x54, 0x3B, 0xBB, 0x42, 0xC5, - 0x6F, 0x00, 0x7F, 0x83, 0xDD, 0x88, 0x71, 0xF7, - 0xD4, 0x1B, 0x3D, 0x81, 0xC4, 0xB1, 0x49, 0x9B, - 0xF3, 0x68, 0x15, 0xC5, 0x15, 0x97, 0x0F, 0xC5, - 0x43, 0xDD, 0x07, 0xBE, 0x98, 0x43, 0x2C, 0xB3, - 0xEF, 0x08, 0xCA, 0xDC, 0x9C, 0x27, 0x58, 0xFE, - 0x49, 0xE9, 0x77, 0xD9, 0x1C, 0x62, 0xA4, 0xA2, - 0xF9, 0x78, 0xCC, 0xB3, 0x21, 0x06, 0x10, 0xDE, - 0x5A, 0x52, 0xA3, 0x67, 0xBD, 0x5E, 0xBC, 0x9B, - 0x4E, 0x40, 0x87, 0x93, 0xCF, 0x0E, 0x27, 0x0E, - 0xE3, 0x11, 0x4B, 0xB3, 0xE0, 0xCE, 0x24, 0xB6, - 0x0A, 0x53, 0x03, 0xF8, 0x01, 0x6A, 0x7E, 0xFE, - 0xC8, 0x66, 0x9F, 0x29, 0xF3, 0x45, 0x94, 0xD6, - 0x0E, 0x30, 0xB5, 0x61, 0xA9, 0xEC, 0x8F, 0x71, - 0xF7, 0x36, 0xD6, 0x43, 0x4B, 0x0C, 0xCD, 0x45, - 0xBB, 0xA4, 0xBD, 0xE9, 0xA9, 0xC3, 0xC1, 0x95, - 0x1E, 0xF9, 0x42, 0x07, 0x18, 0xEA, 0xF5, 0x0B, - 0x27, 0xB6, 0xDE, 0xEF, 0x67, 0x33, 0x83, 0x0D, - 0xD9, 0x5E, 0x3A, 0x93, 0xD2, 0xD0, 0xDB, 0xB9, - 0x98, 0xF0, 0x25, 0x21, 0xF3, 0xDF, 0x0B, 0x1E - }; -#endif /* !WOLFSSL_NO_ML_DSA_44 */ -#ifndef WOLFSSL_NO_ML_DSA_65 - static const byte seed_65_draft[] = { - 0x41, 0xAF, 0x98, 0x7B, 0x02, 0x6E, 0x47, 0x5F, - 0x37, 0x91, 0x7F, 0x2A, 0x6A, 0x9A, 0x87, 0xE7, - 0x51, 0xAD, 0xF9, 0x5B, 0x92, 0x7F, 0x2D, 0xCE, - 0xF0, 0xD4, 0xF3, 0xDA, 0x8F, 0x8C, 0x86, 0x6B - }; - static const byte pk_65_draft[] = { - 0xDC, 0x38, 0xE5, 0x5F, 0xDF, 0x2E, 0x9D, 0xD4, - 0x34, 0x5C, 0xAE, 0x1A, 0x7D, 0xF4, 0x2E, 0x2E, - 0xBC, 0x58, 0x57, 0x80, 0x55, 0x02, 0xE4, 0x3F, - 0xA5, 0x19, 0x41, 0xE4, 0x44, 0x58, 0x66, 0x41, - 0x39, 0x5D, 0xF9, 0x20, 0x6C, 0x36, 0x0D, 0x4F, - 0x83, 0x43, 0xBE, 0x86, 0xEF, 0x6C, 0x43, 0xD0, - 0x3E, 0xD0, 0x63, 0x0A, 0x5B, 0x92, 0x8D, 0x31, - 0x19, 0x1D, 0xA9, 0x51, 0x61, 0x48, 0xE6, 0x26, - 0x50, 0x07, 0x54, 0x9B, 0xB0, 0xB7, 0x62, 0x54, - 0xDB, 0x80, 0x4E, 0x48, 0x7F, 0x48, 0xC5, 0x11, - 0x91, 0xFC, 0xA9, 0x26, 0x25, 0x08, 0xA5, 0x99, - 0xA0, 0x3C, 0xB9, 0x0C, 0xCF, 0x6C, 0xCD, 0x83, - 0x9A, 0x38, 0x6D, 0x22, 0xDE, 0x0A, 0xC3, 0x8F, - 0xF7, 0xD0, 0x57, 0x40, 0x53, 0xE9, 0xE9, 0x4E, - 0x73, 0xFA, 0x58, 0x40, 0x9F, 0x6D, 0x8A, 0xD3, - 0x6F, 0x86, 0x84, 0x4D, 0x18, 0xD7, 0x4C, 0x76, - 0x39, 0x57, 0x9E, 0xC0, 0xC7, 0xE4, 0xEE, 0x54, - 0xF4, 0xAD, 0x10, 0xC5, 0x69, 0x59, 0xE0, 0xBC, - 0x9B, 0xF4, 0x20, 0x8F, 0xBA, 0x0A, 0x94, 0x10, - 0x55, 0x07, 0x7E, 0xD1, 0xF9, 0x20, 0xCC, 0x2F, - 0xA9, 0xAE, 0x9D, 0xF5, 0xE4, 0x29, 0x40, 0x7E, - 0x44, 0xA4, 0xDF, 0xB2, 0xE9, 0x25, 0xE0, 0xBA, - 0x8D, 0x6C, 0x33, 0x88, 0x9C, 0xEE, 0x27, 0xDB, - 0xC7, 0x0A, 0x6E, 0x5A, 0x08, 0x92, 0x9B, 0x53, - 0xF8, 0xFD, 0xF9, 0x5B, 0xEB, 0x03, 0x8E, 0x45, - 0xCB, 0x91, 0x19, 0x4E, 0x6B, 0x1E, 0xA0, 0xA4, - 0xF0, 0x43, 0xC9, 0x8F, 0xDF, 0x93, 0x5E, 0x86, - 0xB0, 0x09, 0xD3, 0x47, 0x38, 0x7C, 0x8E, 0x78, - 0x85, 0x71, 0x3D, 0x07, 0x2E, 0x2E, 0x12, 0x6F, - 0x06, 0x97, 0x0E, 0x54, 0xAD, 0x71, 0x09, 0xEF, - 0xA5, 0x55, 0x0A, 0x39, 0x86, 0xE6, 0x17, 0x17, - 0x70, 0x9A, 0xA7, 0xA7, 0x1B, 0xCE, 0x78, 0x06, - 0x2C, 0x61, 0x1A, 0xB9, 0x48, 0x22, 0x41, 0x45, - 0x15, 0xEB, 0x10, 0x3C, 0x6E, 0x24, 0x37, 0xA4, - 0xB5, 0xE8, 0x82, 0x4D, 0x6D, 0xCC, 0x44, 0xC6, - 0xB0, 0x5D, 0xBE, 0x46, 0xDA, 0x5F, 0x00, 0x36, - 0x5B, 0xBD, 0x87, 0x65, 0x3A, 0x96, 0x21, 0x58, - 0x45, 0x65, 0xDB, 0xD8, 0x77, 0x76, 0x7B, 0x25, - 0xC3, 0x78, 0x6E, 0xD9, 0x14, 0xA7, 0x19, 0x69, - 0x4F, 0xBB, 0x1B, 0xDB, 0x37, 0xCE, 0xAF, 0x8C, - 0x88, 0x2E, 0x9E, 0x30, 0xF6, 0xAE, 0x43, 0xCC, - 0x59, 0x0F, 0x67, 0x8A, 0xCB, 0x4F, 0x08, 0x20, - 0x6D, 0x99, 0xD7, 0xA9, 0xDE, 0xE5, 0xE5, 0xB3, - 0xFF, 0xAA, 0x45, 0x3C, 0xF1, 0xE3, 0x02, 0x7D, - 0x2F, 0xEE, 0x69, 0x04, 0x81, 0x73, 0x01, 0x37, - 0x51, 0x68, 0xC8, 0x0B, 0x51, 0xFD, 0x05, 0xB4, - 0x05, 0xBB, 0xA1, 0xDB, 0x1D, 0xF6, 0x5F, 0x70, - 0xD3, 0x0A, 0x37, 0x4B, 0x9C, 0xC4, 0x45, 0x30, - 0x11, 0x36, 0xE2, 0x48, 0x9F, 0xC4, 0x2E, 0x4E, - 0x0C, 0x0C, 0xA1, 0x04, 0x41, 0x75, 0x95, 0xAA, - 0xED, 0xAC, 0xD4, 0xB2, 0xE7, 0x85, 0x7E, 0xE1, - 0xA6, 0xFE, 0x2A, 0x09, 0x19, 0x09, 0x3D, 0x7C, - 0x20, 0x1E, 0x98, 0x3D, 0x6E, 0x02, 0xC1, 0xCA, - 0xBB, 0x24, 0x82, 0x9F, 0x45, 0x1D, 0x26, 0x99, - 0xAE, 0x02, 0x82, 0xF9, 0x86, 0x3B, 0x67, 0x8C, - 0xBD, 0xFE, 0xF1, 0xD0, 0xB6, 0xB8, 0xAB, 0x00, - 0x0F, 0xEC, 0x30, 0xDC, 0x27, 0x58, 0xE2, 0x29, - 0x18, 0x05, 0x5A, 0x66, 0xA5, 0x88, 0x39, 0x8E, - 0x49, 0x5B, 0xB9, 0x52, 0x43, 0x84, 0xDC, 0xA9, - 0x50, 0x2B, 0x83, 0x3C, 0x84, 0x81, 0x37, 0x52, - 0x30, 0x79, 0xBD, 0x04, 0xB8, 0xDD, 0x47, 0xC1, - 0x02, 0x2E, 0xEC, 0x24, 0xD0, 0x56, 0x23, 0xE1, - 0x92, 0xD0, 0x65, 0x7F, 0xC7, 0xC2, 0xF7, 0x60, - 0x73, 0xB8, 0xAF, 0x0A, 0xF4, 0xEF, 0xFC, 0x1B, - 0xC2, 0xB9, 0x76, 0x87, 0x8A, 0xA6, 0xC2, 0x3F, - 0xD3, 0x9F, 0x1F, 0x2D, 0x94, 0xBC, 0x89, 0x4E, - 0x31, 0x8D, 0x28, 0xD0, 0x90, 0xB5, 0x5B, 0x60, - 0x30, 0xC6, 0x0B, 0x37, 0x63, 0x5D, 0xDC, 0xC6, - 0xE0, 0x1A, 0xBA, 0x6B, 0x23, 0xCD, 0x2E, 0x09, - 0x2D, 0x6A, 0x7E, 0x0C, 0xD9, 0x4F, 0xB1, 0xE2, - 0x89, 0x67, 0xE7, 0xB1, 0x54, 0x08, 0xB2, 0xFA, - 0x83, 0x43, 0x7C, 0x77, 0x06, 0xED, 0xE2, 0x29, - 0x53, 0xB7, 0x09, 0xC4, 0x1B, 0x81, 0x55, 0x12, - 0x41, 0x8E, 0x8B, 0x03, 0x36, 0xEE, 0x45, 0x70, - 0x57, 0xA8, 0x73, 0xEF, 0x70, 0x7B, 0x1F, 0x63, - 0xB0, 0xE8, 0x00, 0xBD, 0x1E, 0xE6, 0xA9, 0x93, - 0x9D, 0x03, 0x19, 0x22, 0xDF, 0xE1, 0x01, 0xF2, - 0xA9, 0x6B, 0x90, 0x5C, 0xD2, 0xC1, 0xAC, 0x9F, - 0xB2, 0x21, 0x1C, 0x2D, 0xC6, 0x80, 0x9A, 0xB5, - 0x1E, 0x46, 0x95, 0x6C, 0xCE, 0x47, 0x3E, 0x67, - 0xCD, 0xD6, 0xC9, 0xB9, 0x81, 0x74, 0x7F, 0x17, - 0xA3, 0xF7, 0x48, 0x99, 0xF3, 0x36, 0x84, 0xF3, - 0x16, 0x41, 0x55, 0x5F, 0xA7, 0xBF, 0x4B, 0x69, - 0x8D, 0xA3, 0x3D, 0x1E, 0xEA, 0xF5, 0x1E, 0xC6, - 0xB8, 0x1C, 0xD6, 0x89, 0x45, 0x68, 0xFA, 0xE7, - 0xCA, 0x86, 0xE4, 0xB1, 0xC9, 0x9C, 0xB2, 0xAB, - 0x89, 0x03, 0xE7, 0x19, 0x7B, 0xA9, 0xF2, 0x6B, - 0x4A, 0x43, 0x1D, 0x90, 0xAF, 0xA4, 0xE3, 0xBC, - 0xEF, 0xD4, 0x37, 0xC5, 0x55, 0x5C, 0x9E, 0x14, - 0xC6, 0x18, 0xDD, 0x45, 0x3F, 0x80, 0x49, 0x1C, - 0x93, 0xFF, 0xBD, 0xDD, 0x75, 0x54, 0x0B, 0xD1, - 0xA9, 0xF6, 0xBC, 0x89, 0x98, 0x7D, 0x6F, 0x03, - 0x7B, 0x06, 0xD5, 0x40, 0x7D, 0x85, 0x48, 0x2E, - 0x11, 0x3E, 0xF0, 0x47, 0x77, 0xD0, 0xBA, 0x03, - 0x33, 0x58, 0xC4, 0x8F, 0x76, 0xF8, 0x72, 0x47, - 0x04, 0x21, 0x5E, 0x85, 0x5A, 0x0F, 0x35, 0x77, - 0xFB, 0x96, 0x29, 0x81, 0x2D, 0x55, 0x6E, 0x53, - 0xC6, 0x13, 0x1E, 0xFA, 0x4D, 0xCE, 0xA9, 0x36, - 0x1D, 0x8F, 0xAB, 0xAC, 0x13, 0x19, 0x94, 0xFC, - 0x4B, 0xCD, 0x36, 0x4C, 0x6E, 0x21, 0xAE, 0xF1, - 0x13, 0xA4, 0xF7, 0x64, 0x8E, 0xE1, 0xAF, 0x50, - 0x6A, 0x63, 0x0E, 0xCA, 0x2F, 0xE9, 0x0C, 0x8A, - 0xE7, 0xF2, 0xE3, 0x68, 0x03, 0xE0, 0x40, 0x1C, - 0x64, 0xAB, 0xC3, 0xEC, 0xC0, 0x92, 0xE9, 0x57, - 0x3E, 0x66, 0x72, 0x36, 0x39, 0x22, 0x4E, 0xCD, - 0x13, 0x08, 0xBA, 0xF8, 0x2B, 0xA1, 0xF2, 0x69, - 0x44, 0x7E, 0x90, 0x5C, 0xC8, 0xEC, 0xB6, 0xBE, - 0x8C, 0x30, 0xE0, 0x69, 0xB7, 0x97, 0xA1, 0x1C, - 0x18, 0xE5, 0x54, 0x62, 0xC3, 0x29, 0x99, 0x21, - 0x16, 0xD9, 0x78, 0x1C, 0x4C, 0x9C, 0x88, 0x4C, - 0xA5, 0xE1, 0x11, 0x66, 0x5B, 0x6E, 0x71, 0xE7, - 0xE2, 0xE7, 0xE4, 0x02, 0xDD, 0x1A, 0x8D, 0x0C, - 0xF5, 0x32, 0xFD, 0x41, 0x28, 0x35, 0x75, 0xD0, - 0x0C, 0x5F, 0x06, 0x6A, 0x5A, 0x61, 0x49, 0x59, - 0xC1, 0x0C, 0xD4, 0x9E, 0xD6, 0x29, 0xE2, 0x37, - 0xDF, 0x2B, 0x3D, 0xE8, 0x98, 0xB9, 0xDF, 0x8E, - 0xA0, 0xC4, 0xE2, 0xFC, 0x45, 0x70, 0xE8, 0x1B, - 0xF4, 0xFA, 0xC5, 0xE6, 0xA7, 0xCF, 0x4F, 0xA2, - 0xDA, 0x3D, 0x90, 0x49, 0x24, 0x8F, 0x61, 0x54, - 0xD5, 0x50, 0x8E, 0xE8, 0x0C, 0x14, 0xAD, 0x6F, - 0x65, 0x88, 0x3A, 0xF6, 0x92, 0xDB, 0x35, 0x5D, - 0xFF, 0x21, 0x20, 0xAC, 0x01, 0x16, 0x0B, 0xEC, - 0x84, 0x15, 0x3B, 0xA9, 0x93, 0x92, 0x75, 0xB3, - 0x73, 0xF1, 0x23, 0x69, 0x94, 0x10, 0xF5, 0xFE, - 0x20, 0xA8, 0xAF, 0x05, 0x87, 0x49, 0x4E, 0x9C, - 0xEB, 0x21, 0x0A, 0xCF, 0x0B, 0xA1, 0x65, 0x38, - 0xA6, 0x18, 0x4D, 0xF7, 0xD8, 0xC1, 0x2C, 0x14, - 0x4C, 0xD9, 0x40, 0xC2, 0xF7, 0xBF, 0xE3, 0x07, - 0x79, 0x55, 0xAE, 0xB9, 0xB6, 0x50, 0x06, 0x92, - 0x94, 0x8C, 0x6A, 0x0E, 0x22, 0x14, 0xE2, 0xCC, - 0x65, 0xBA, 0x0C, 0x4D, 0xB6, 0x5C, 0x4A, 0xE9, - 0x0A, 0x08, 0x0C, 0xF9, 0x26, 0xA2, 0x51, 0x85, - 0x36, 0xE2, 0xC1, 0xF1, 0x0A, 0x66, 0x51, 0x66, - 0x7A, 0x98, 0x9B, 0x2C, 0x30, 0x1A, 0x0D, 0x49, - 0x3C, 0x1E, 0xEC, 0x63, 0x53, 0x5E, 0xD9, 0xDD, - 0x84, 0x69, 0xCD, 0x7E, 0x79, 0x58, 0x3D, 0x6E, - 0xD9, 0x98, 0x58, 0xD8, 0x0A, 0x48, 0xB5, 0x13, - 0x3F, 0x72, 0x4C, 0x11, 0x90, 0x15, 0x12, 0x74, - 0xFF, 0x5C, 0x0D, 0xC6, 0x20, 0x8C, 0xC1, 0x99, - 0xCA, 0x8E, 0xFC, 0xA2, 0xE8, 0xB8, 0xEE, 0xAA, - 0x27, 0xC2, 0x97, 0x8D, 0xFA, 0xBE, 0xE0, 0x43, - 0x99, 0xB6, 0x90, 0x60, 0x00, 0x7C, 0x33, 0xD4, - 0x87, 0x71, 0x7B, 0x56, 0x6C, 0xAA, 0xE0, 0xAC, - 0x9D, 0x7E, 0x7E, 0xA3, 0xCF, 0xBB, 0xB3, 0xA0, - 0x5F, 0xD4, 0xC4, 0x3A, 0xA7, 0xB9, 0x0C, 0xCE, - 0xF3, 0x05, 0x09, 0x91, 0xA7, 0xE9, 0x11, 0x55, - 0x32, 0x45, 0xA6, 0x08, 0x0E, 0x10, 0x37, 0x91, - 0xF3, 0xBF, 0xED, 0x64, 0x26, 0xEB, 0x39, 0xC2, - 0x57, 0xAE, 0x64, 0x79, 0x33, 0x7C, 0x51, 0xB2, - 0xC8, 0x85, 0xE0, 0xF9, 0x6D, 0x10, 0x52, 0x9F, - 0x72, 0xF4, 0xD1, 0x5B, 0x54, 0x5B, 0x93, 0x28, - 0x36, 0xA8, 0xCD, 0xB3, 0x30, 0x5B, 0x7A, 0xB0, - 0xB6, 0xF0, 0xD8, 0xA0, 0xBA, 0x24, 0x59, 0x5F, - 0x43, 0x02, 0x01, 0x57, 0x91, 0x7B, 0x94, 0x07, - 0x63, 0x23, 0x12, 0x94, 0xFB, 0x9F, 0xF2, 0xC1, - 0xD6, 0x80, 0x8F, 0x4E, 0xA7, 0x9E, 0x11, 0xD8, - 0xB3, 0x08, 0xB6, 0x3B, 0x3B, 0xF2, 0xEE, 0x14, - 0xA5, 0xDB, 0xB0, 0xBB, 0x17, 0xA5, 0x96, 0x3C, - 0x2F, 0xB9, 0xE7, 0x4A, 0xD7, 0x52, 0x34, 0x98, - 0xCB, 0x0C, 0xEB, 0x42, 0x5B, 0x2D, 0x2D, 0x2B, - 0x0D, 0x94, 0x66, 0xD3, 0xAD, 0x08, 0x0A, 0x28, - 0xF6, 0x0E, 0xDA, 0xD4, 0x54, 0xFD, 0xC6, 0x48, - 0x08, 0xA1, 0x8D, 0xB0, 0x30, 0xFD, 0x18, 0xB1, - 0x50, 0xB1, 0xFD, 0xE0, 0x6E, 0x33, 0x25, 0x0D, - 0x90, 0xB1, 0xC1, 0xE7, 0x88, 0x74, 0x87, 0x05, - 0xE7, 0xBE, 0xBD, 0xAA, 0x8C, 0x6D, 0xC2, 0x3D, - 0x6F, 0x95, 0x84, 0xFA, 0x03, 0x74, 0x85, 0xE1, - 0xED, 0xE5, 0xF4, 0xE8, 0x26, 0x4A, 0x0B, 0x20, - 0x87, 0xB6, 0xE1, 0x10, 0x75, 0x6D, 0x9F, 0x95, - 0x39, 0x4C, 0x0F, 0x50, 0x1B, 0xA8, 0x69, 0x82, - 0xBB, 0xE2, 0xD6, 0x11, 0xD7, 0xBE, 0xFB, 0x4F, - 0x60, 0xD3, 0x16, 0xC6, 0x04, 0x3A, 0x5A, 0xF5, - 0x78, 0x9B, 0x0B, 0x21, 0xA1, 0x00, 0x96, 0xCD, - 0x63, 0x78, 0x1D, 0x2D, 0x4F, 0x6E, 0x50, 0xEE, - 0x62, 0x2D, 0x88, 0x62, 0x01, 0xF6, 0xB4, 0x17, - 0x4F, 0x8C, 0xAD, 0xCB, 0x4B, 0xF9, 0xF6, 0x9D, - 0xC7, 0xD8, 0xCC, 0xBF, 0x96, 0x1B, 0x1B, 0x79, - 0xF3, 0x25, 0x85, 0x23, 0x10, 0x63, 0x30, 0x8D, - 0xA8, 0x3A, 0x4B, 0x92, 0x1B, 0x88, 0x53, 0x24, - 0x2D, 0x29, 0xA5, 0x2E, 0x7A, 0xD5, 0x58, 0xEB, - 0x1B, 0x1C, 0xE6, 0xB8, 0x94, 0x0C, 0x58, 0x96, - 0x5B, 0xA0, 0x2C, 0xBF, 0xE2, 0x99, 0xA0, 0x1F, - 0x0C, 0xCC, 0xBD, 0x83, 0x72, 0x56, 0xBB, 0x13, - 0x61, 0x5A, 0xC2, 0x04, 0x27, 0x29, 0x1F, 0xD4, - 0xE4, 0x3D, 0x8A, 0x87, 0xE3, 0x81, 0x91, 0x07, - 0xD3, 0x9B, 0xBC, 0xA9, 0xB3, 0xBA, 0xF5, 0x8B, - 0x6A, 0xAD, 0xDE, 0xB0, 0x54, 0x3E, 0xFE, 0xCC, - 0xD3, 0xCB, 0x2C, 0x69, 0xF0, 0x58, 0xD7, 0xEF, - 0xA9, 0xC0, 0x15, 0x9B, 0x5A, 0xDF, 0x71, 0x25, - 0x38, 0x44, 0xEC, 0xA9, 0x18, 0x47, 0x41, 0xCE, - 0x3D, 0x53, 0x10, 0x12, 0xC3, 0x1B, 0x59, 0x9A, - 0x93, 0xA1, 0xEA, 0xBE, 0x3E, 0xBA, 0x74, 0xF6, - 0x2D, 0x40, 0x9D, 0xCB, 0x9E, 0xA1, 0xA5, 0x85, - 0xFF, 0xDC, 0xC5, 0x60, 0x6F, 0x61, 0xE8, 0x17, - 0x6C, 0x36, 0x9F, 0x7A, 0x48, 0x47, 0xDD, 0xF1, - 0xF4, 0x43, 0x21, 0xCB, 0xB3, 0x55, 0x86, 0xD0, - 0xE9, 0x46, 0x7D, 0xB5, 0x3D, 0x90, 0x34, 0x1E, - 0xBB, 0x40, 0xD3, 0x2A, 0xEB, 0xE6, 0x4C, 0x46, - 0x42, 0xA2, 0x8A, 0xBF, 0x90, 0xE7, 0x4B, 0x6D, - 0x5C, 0x94, 0x97, 0xD2, 0xF0, 0x97, 0x74, 0x4C, - 0x76, 0x03, 0xAC, 0x3D, 0xDE, 0x15, 0x96, 0x0C, - 0xEF, 0x18, 0x9D, 0xBD, 0x1A, 0x20, 0x35, 0x7E, - 0x2A, 0x70, 0x9D, 0xEA, 0x2E, 0x11, 0xDF, 0xF3, - 0x2F, 0xFE, 0x23, 0xA9, 0xB6, 0xCF, 0xB7, 0xB9, - 0x3F, 0x4F, 0x30, 0x6B, 0x3B, 0x0D, 0x3B, 0xED, - 0xCD, 0x77, 0xD4, 0xBF, 0xEE, 0xDD, 0xB6, 0x56, - 0x24, 0xD4, 0x29, 0x83, 0xDE, 0xDB, 0xC1, 0xFB, - 0x6A, 0xCE, 0x7F, 0x47, 0xD2, 0xC5, 0xF1, 0x78, - 0x5C, 0x2C, 0x5A, 0x28, 0x3E, 0x05, 0x50, 0x2E, - 0xD9, 0xAE, 0x9B, 0x95, 0x64, 0xC7, 0xD2, 0x7B, - 0xCB, 0xC5, 0x91, 0x80, 0xEB, 0x79, 0xC7, 0xCC, - 0xA8, 0x06, 0xC8, 0xF9, 0xDF, 0x2A, 0x49, 0x4A, - 0xF8, 0xFE, 0xBA, 0xA5, 0x85, 0x67, 0x1B, 0xDA, - 0x51, 0x3B, 0xC2, 0x04, 0xA6, 0xA3, 0xFF, 0x99, - 0x21, 0xE8, 0x17, 0x91, 0x33, 0x9B, 0x83, 0x75, - 0x20, 0x5E, 0x95, 0xBE, 0x49, 0xDF, 0x53, 0xFC, - 0x05, 0xA2, 0x3C, 0xAA, 0x5A, 0x22, 0x15, 0xA5, - 0x56, 0xE0, 0x51, 0x30, 0x4E, 0x32, 0x14, 0xF2, - 0x9F, 0x03, 0x51, 0x8E, 0xDD, 0x8B, 0x39, 0x19, - 0x1E, 0x39, 0xC5, 0xA7, 0x1C, 0xC6, 0xA4, 0xE1, - 0x77, 0xCA, 0x8C, 0x9D, 0x27, 0xBC, 0xCC, 0x16, - 0xD6, 0xFC, 0x59, 0x10, 0x23, 0xFF, 0x64, 0x90, - 0x9C, 0x23, 0x5A, 0xFF, 0x7E, 0x27, 0x1B, 0xC7, - 0x7F, 0x21, 0x3B, 0x41, 0xDB, 0xBC, 0x96, 0x60, - 0x0B, 0x35, 0xA1, 0xF3, 0xF8, 0x51, 0x0A, 0x65, - 0xCF, 0xDF, 0x7A, 0xB8, 0x04, 0x56, 0x49, 0xD7, - 0xD3, 0xC5, 0x0B, 0x4A, 0x1F, 0x60, 0xE1, 0x86, - 0x36, 0x53, 0x8E, 0x6C, 0x3E, 0xAF, 0x5B, 0xC1, - 0xCA, 0xCB, 0x22, 0x1A, 0x07, 0xDA, 0x54, 0xEC, - 0xAA, 0x06, 0x72, 0x17, 0xCF, 0x80, 0xC4, 0x89, - 0x56, 0x24, 0x1B, 0xD4, 0xFF, 0x50, 0x6B, 0x51, - 0x55, 0x4D, 0x6E, 0x79, 0x7E, 0xEC, 0x61, 0xC6, - 0xE4, 0x21, 0xC8, 0x0E, 0x10, 0x3F, 0x8C, 0x85, - 0x3A, 0x27, 0xEA, 0x91, 0x07, 0xCB, 0x37, 0x18, - 0x14, 0xB5, 0x63, 0x6E, 0x00, 0xBC, 0x0F, 0x36, - 0xF9, 0x54, 0x75, 0xE7, 0x0B, 0xDC, 0xE7, 0xA0, - 0x59, 0xF0, 0x64, 0xFB, 0x73, 0x07, 0x0E, 0xFE, - 0x57, 0x7F, 0x0D, 0x12, 0xBC, 0xB0, 0xBF, 0xA2, - 0x3A, 0x18, 0x08, 0x7E, 0xD5, 0x6C, 0xF0, 0x6F, - 0xF8, 0x98, 0xFB, 0xA5, 0x10, 0x7B, 0x10, 0x5F, - 0x6B, 0xC8, 0x6D, 0xDE, 0x2F, 0x1F, 0xE0, 0xC8, - 0x19, 0xEE, 0xC2, 0x03, 0x39, 0x49, 0x70, 0x3E, - 0x36, 0xE3, 0x3C, 0x70, 0xE3, 0xEA, 0xAC, 0x34, - 0x32, 0xB7, 0x0D, 0xBA, 0x7C, 0xAB, 0xE6, 0x18 - }; - static const byte sk_65_draft[] = { - 0xDC, 0x38, 0xE5, 0x5F, 0xDF, 0x2E, 0x9D, 0xD4, - 0x34, 0x5C, 0xAE, 0x1A, 0x7D, 0xF4, 0x2E, 0x2E, - 0xBC, 0x58, 0x57, 0x80, 0x55, 0x02, 0xE4, 0x3F, - 0xA5, 0x19, 0x41, 0xE4, 0x44, 0x58, 0x66, 0x41, - 0x52, 0x8D, 0xA0, 0xC7, 0xD2, 0x80, 0xDD, 0x49, - 0x0D, 0x5E, 0xB7, 0x65, 0xDB, 0x32, 0x33, 0x15, - 0x0F, 0x9E, 0xC8, 0xEB, 0xC9, 0x6E, 0xE8, 0xE8, - 0x5C, 0xBD, 0x18, 0x4F, 0xDC, 0xF8, 0xA8, 0xD9, - 0xC5, 0x33, 0x84, 0x79, 0x5A, 0x5E, 0xB7, 0x3C, - 0x6D, 0x82, 0xCA, 0xB9, 0xBA, 0x94, 0xB6, 0x46, - 0xAE, 0x3A, 0xD9, 0x19, 0x6C, 0xB4, 0xDA, 0xE2, - 0xF1, 0x4B, 0xB6, 0x43, 0xF0, 0x24, 0x08, 0xE5, - 0xF7, 0x9A, 0x41, 0xF1, 0x15, 0x9C, 0xA8, 0x08, - 0x79, 0x9F, 0xB8, 0x26, 0xD4, 0x08, 0x32, 0x47, - 0xC8, 0xF0, 0xD5, 0x31, 0xA1, 0xC1, 0x19, 0x04, - 0x02, 0x06, 0x2B, 0x4D, 0x46, 0xAE, 0x43, 0x6A, - 0x25, 0x82, 0x75, 0x41, 0x70, 0x36, 0x42, 0x48, - 0x78, 0x06, 0x36, 0x50, 0x23, 0x84, 0x68, 0x10, - 0x87, 0x08, 0x62, 0x00, 0x08, 0x34, 0x20, 0x73, - 0x32, 0x13, 0x36, 0x61, 0x87, 0x61, 0x43, 0x50, - 0x30, 0x02, 0x26, 0x07, 0x65, 0x45, 0x32, 0x00, - 0x25, 0x75, 0x01, 0x04, 0x88, 0x81, 0x58, 0x64, - 0x52, 0x40, 0x84, 0x22, 0x88, 0x42, 0x82, 0x56, - 0x47, 0x50, 0x05, 0x21, 0x88, 0x25, 0x32, 0x25, - 0x12, 0x85, 0x14, 0x52, 0x87, 0x77, 0x67, 0x18, - 0x46, 0x54, 0x63, 0x07, 0x88, 0x67, 0x37, 0x26, - 0x72, 0x62, 0x41, 0x02, 0x00, 0x01, 0x17, 0x84, - 0x33, 0x64, 0x32, 0x57, 0x06, 0x20, 0x05, 0x44, - 0x88, 0x57, 0x33, 0x45, 0x70, 0x55, 0x14, 0x43, - 0x12, 0x54, 0x04, 0x38, 0x37, 0x08, 0x42, 0x57, - 0x36, 0x05, 0x30, 0x03, 0x86, 0x53, 0x02, 0x53, - 0x75, 0x22, 0x62, 0x13, 0x38, 0x82, 0x48, 0x30, - 0x83, 0x83, 0x64, 0x83, 0x13, 0x74, 0x57, 0x32, - 0x46, 0x70, 0x06, 0x05, 0x82, 0x52, 0x73, 0x55, - 0x25, 0x77, 0x21, 0x78, 0x57, 0x83, 0x66, 0x20, - 0x38, 0x53, 0x21, 0x41, 0x77, 0x56, 0x77, 0x46, - 0x34, 0x42, 0x58, 0x31, 0x08, 0x06, 0x03, 0x62, - 0x20, 0x35, 0x11, 0x42, 0x35, 0x38, 0x63, 0x86, - 0x64, 0x13, 0x13, 0x75, 0x40, 0x01, 0x53, 0x74, - 0x41, 0x31, 0x56, 0x64, 0x38, 0x17, 0x14, 0x16, - 0x62, 0x33, 0x22, 0x12, 0x64, 0x40, 0x67, 0x11, - 0x62, 0x42, 0x25, 0x60, 0x38, 0x05, 0x83, 0x13, - 0x51, 0x00, 0x28, 0x36, 0x62, 0x56, 0x41, 0x43, - 0x58, 0x37, 0x51, 0x22, 0x70, 0x25, 0x82, 0x82, - 0x35, 0x24, 0x06, 0x83, 0x48, 0x58, 0x81, 0x78, - 0x07, 0x86, 0x23, 0x15, 0x75, 0x32, 0x46, 0x75, - 0x35, 0x40, 0x08, 0x43, 0x10, 0x66, 0x74, 0x05, - 0x13, 0x72, 0x74, 0x08, 0x83, 0x41, 0x81, 0x08, - 0x75, 0x87, 0x83, 0x28, 0x56, 0x66, 0x20, 0x01, - 0x18, 0x83, 0x57, 0x22, 0x14, 0x64, 0x18, 0x05, - 0x27, 0x75, 0x22, 0x84, 0x12, 0x38, 0x87, 0x52, - 0x32, 0x25, 0x28, 0x08, 0x14, 0x41, 0x81, 0x14, - 0x03, 0x24, 0x54, 0x23, 0x04, 0x81, 0x40, 0x36, - 0x38, 0x38, 0x64, 0x42, 0x46, 0x36, 0x68, 0x11, - 0x55, 0x00, 0x11, 0x25, 0x76, 0x16, 0x43, 0x07, - 0x23, 0x03, 0x34, 0x10, 0x46, 0x41, 0x14, 0x02, - 0x26, 0x10, 0x74, 0x38, 0x38, 0x72, 0x07, 0x87, - 0x54, 0x11, 0x12, 0x83, 0x75, 0x05, 0x82, 0x17, - 0x45, 0x20, 0x38, 0x41, 0x37, 0x20, 0x00, 0x08, - 0x32, 0x18, 0x16, 0x25, 0x58, 0x85, 0x16, 0x88, - 0x71, 0x82, 0x45, 0x60, 0x33, 0x11, 0x13, 0x42, - 0x43, 0x37, 0x68, 0x11, 0x16, 0x54, 0x04, 0x08, - 0x52, 0x78, 0x13, 0x56, 0x83, 0x52, 0x15, 0x24, - 0x03, 0x61, 0x78, 0x44, 0x13, 0x70, 0x67, 0x36, - 0x74, 0x86, 0x52, 0x50, 0x15, 0x41, 0x88, 0x74, - 0x53, 0x00, 0x05, 0x18, 0x65, 0x62, 0x14, 0x84, - 0x12, 0x32, 0x01, 0x88, 0x40, 0x42, 0x34, 0x05, - 0x32, 0x80, 0x72, 0x55, 0x20, 0x68, 0x16, 0x43, - 0x14, 0x15, 0x15, 0x38, 0x43, 0x85, 0x27, 0x60, - 0x70, 0x18, 0x27, 0x35, 0x53, 0x01, 0x28, 0x73, - 0x27, 0x84, 0x10, 0x53, 0x67, 0x10, 0x45, 0x40, - 0x81, 0x52, 0x86, 0x06, 0x11, 0x18, 0x04, 0x31, - 0x57, 0x25, 0x22, 0x44, 0x47, 0x81, 0x45, 0x44, - 0x55, 0x04, 0x72, 0x57, 0x06, 0x46, 0x76, 0x23, - 0x38, 0x85, 0x65, 0x30, 0x08, 0x48, 0x20, 0x13, - 0x22, 0x77, 0x44, 0x60, 0x43, 0x14, 0x15, 0x27, - 0x86, 0x22, 0x37, 0x37, 0x27, 0x04, 0x27, 0x50, - 0x74, 0x31, 0x10, 0x82, 0x00, 0x75, 0x80, 0x44, - 0x38, 0x10, 0x58, 0x40, 0x86, 0x60, 0x63, 0x13, - 0x65, 0x18, 0x33, 0x70, 0x57, 0x68, 0x05, 0x10, - 0x81, 0x03, 0x42, 0x05, 0x25, 0x65, 0x33, 0x57, - 0x38, 0x05, 0x65, 0x34, 0x46, 0x53, 0x68, 0x11, - 0x75, 0x10, 0x04, 0x54, 0x18, 0x47, 0x52, 0x24, - 0x63, 0x23, 0x74, 0x45, 0x11, 0x34, 0x68, 0x32, - 0x35, 0x38, 0x52, 0x85, 0x28, 0x08, 0x71, 0x78, - 0x37, 0x38, 0x27, 0x10, 0x80, 0x54, 0x26, 0x33, - 0x31, 0x82, 0x44, 0x88, 0x33, 0x24, 0x62, 0x86, - 0x32, 0x82, 0x73, 0x31, 0x28, 0x14, 0x73, 0x87, - 0x06, 0x35, 0x80, 0x36, 0x67, 0x02, 0x33, 0x75, - 0x27, 0x36, 0x38, 0x16, 0x35, 0x70, 0x52, 0x16, - 0x87, 0x58, 0x85, 0x17, 0x22, 0x13, 0x54, 0x85, - 0x07, 0x53, 0x31, 0x26, 0x78, 0x01, 0x85, 0x18, - 0x08, 0x68, 0x38, 0x52, 0x11, 0x73, 0x32, 0x25, - 0x58, 0x82, 0x70, 0x70, 0x36, 0x30, 0x50, 0x38, - 0x65, 0x12, 0x78, 0x31, 0x77, 0x72, 0x18, 0x41, - 0x05, 0x42, 0x32, 0x26, 0x26, 0x50, 0x52, 0x86, - 0x15, 0x76, 0x28, 0x66, 0x88, 0x03, 0x78, 0x28, - 0x70, 0x33, 0x36, 0x27, 0x16, 0x61, 0x43, 0x56, - 0x62, 0x81, 0x85, 0x75, 0x47, 0x60, 0x63, 0x38, - 0x66, 0x81, 0x51, 0x78, 0x03, 0x42, 0x60, 0x38, - 0x01, 0x24, 0x73, 0x63, 0x81, 0x12, 0x01, 0x27, - 0x63, 0x13, 0x11, 0x78, 0x36, 0x37, 0x15, 0x03, - 0x84, 0x58, 0x17, 0x25, 0x67, 0x87, 0x57, 0x83, - 0x71, 0x85, 0x37, 0x53, 0x86, 0x22, 0x33, 0x28, - 0x77, 0x30, 0x18, 0x15, 0x01, 0x37, 0x85, 0x40, - 0x15, 0x38, 0x51, 0x33, 0x17, 0x42, 0x64, 0x04, - 0x56, 0x27, 0x50, 0x45, 0x11, 0x27, 0x20, 0x17, - 0x76, 0x55, 0x33, 0x37, 0x58, 0x88, 0x88, 0x45, - 0x16, 0x55, 0x08, 0x53, 0x52, 0x48, 0x72, 0x85, - 0x30, 0x15, 0x23, 0x44, 0x22, 0x02, 0x43, 0x45, - 0x41, 0x10, 0x00, 0x52, 0x32, 0x73, 0x05, 0x75, - 0x72, 0x16, 0x08, 0x11, 0x51, 0x36, 0x20, 0x04, - 0x76, 0x48, 0x78, 0x56, 0x60, 0x88, 0x07, 0x47, - 0x70, 0x20, 0x46, 0x40, 0x43, 0x26, 0x04, 0x37, - 0x17, 0x51, 0x58, 0x46, 0x72, 0x44, 0x50, 0x23, - 0x67, 0x63, 0x60, 0x84, 0x30, 0x51, 0x52, 0x53, - 0x21, 0x74, 0x85, 0x45, 0x74, 0x43, 0x11, 0x72, - 0x52, 0x65, 0x76, 0x08, 0x78, 0x63, 0x14, 0x27, - 0x41, 0x34, 0x67, 0x07, 0x45, 0x15, 0x10, 0x83, - 0x24, 0x02, 0x80, 0x53, 0x07, 0x21, 0x58, 0x10, - 0x34, 0x20, 0x54, 0x12, 0x58, 0x44, 0x25, 0x53, - 0x33, 0x46, 0x02, 0x38, 0x60, 0x17, 0x70, 0x64, - 0x18, 0x52, 0x62, 0x26, 0x65, 0x61, 0x42, 0x31, - 0x22, 0x57, 0x34, 0x57, 0x02, 0x34, 0x62, 0x76, - 0x74, 0x38, 0x73, 0x21, 0x68, 0x71, 0x07, 0x21, - 0x61, 0x05, 0x20, 0x20, 0x86, 0x83, 0x30, 0x25, - 0x50, 0x50, 0x83, 0x30, 0x31, 0x56, 0x30, 0x31, - 0x76, 0x04, 0x54, 0x80, 0x75, 0x18, 0x82, 0x23, - 0x61, 0x87, 0x58, 0x25, 0x13, 0x63, 0x21, 0x51, - 0x48, 0x02, 0x67, 0x37, 0x12, 0x88, 0x70, 0x60, - 0x07, 0x36, 0x18, 0x15, 0x87, 0x74, 0x55, 0x60, - 0x00, 0x54, 0x37, 0x11, 0x01, 0x37, 0x14, 0x17, - 0x11, 0x72, 0x14, 0x55, 0x31, 0x75, 0x77, 0x48, - 0x10, 0x23, 0x83, 0x20, 0x00, 0x04, 0x32, 0x64, - 0x66, 0x61, 0x71, 0x31, 0x03, 0x15, 0x44, 0x32, - 0x57, 0x25, 0x64, 0x31, 0x28, 0x15, 0x33, 0x67, - 0x86, 0x87, 0x37, 0x03, 0x12, 0x78, 0x86, 0x13, - 0x47, 0x80, 0x61, 0x42, 0x50, 0x40, 0x23, 0x37, - 0x01, 0x01, 0x66, 0x24, 0x06, 0x57, 0x82, 0x02, - 0x22, 0x42, 0x41, 0x02, 0x26, 0x06, 0x41, 0x35, - 0x64, 0x16, 0x44, 0x42, 0x38, 0x30, 0x86, 0x88, - 0x47, 0x71, 0x62, 0x33, 0x24, 0x02, 0x12, 0x37, - 0x42, 0x33, 0x20, 0x81, 0x80, 0x53, 0x07, 0x65, - 0x71, 0x27, 0x13, 0x53, 0x15, 0x43, 0x76, 0x38, - 0x71, 0x30, 0x07, 0x87, 0x25, 0x63, 0x03, 0x33, - 0x70, 0x56, 0x18, 0x13, 0x83, 0x51, 0x44, 0x40, - 0x04, 0x80, 0x62, 0x24, 0x20, 0x64, 0x54, 0x40, - 0x20, 0x73, 0x61, 0x45, 0x01, 0x24, 0x47, 0x78, - 0x23, 0x34, 0x56, 0x10, 0x25, 0x32, 0x02, 0x70, - 0x08, 0x02, 0x23, 0x24, 0x80, 0x43, 0x04, 0x02, - 0x81, 0x11, 0x23, 0x82, 0x03, 0x61, 0x30, 0x33, - 0x15, 0x36, 0x25, 0x32, 0x14, 0x73, 0x22, 0x46, - 0x81, 0x25, 0x16, 0x13, 0x52, 0x58, 0x71, 0x61, - 0x67, 0x08, 0x38, 0x76, 0x71, 0x15, 0x88, 0x47, - 0x31, 0x25, 0x27, 0x18, 0x31, 0x50, 0x40, 0x71, - 0x06, 0x87, 0x37, 0x30, 0x85, 0x64, 0x62, 0x78, - 0x32, 0x74, 0x18, 0x83, 0x67, 0x40, 0x37, 0x44, - 0x56, 0x02, 0x72, 0x61, 0x27, 0x28, 0x38, 0x38, - 0x67, 0x17, 0x58, 0x04, 0x61, 0x28, 0x67, 0x37, - 0x46, 0x50, 0x38, 0x15, 0x45, 0x12, 0x71, 0x44, - 0x22, 0x02, 0x34, 0x83, 0x40, 0x70, 0x55, 0x75, - 0x54, 0x26, 0x88, 0x07, 0x25, 0x58, 0x73, 0x60, - 0x58, 0x61, 0x45, 0x63, 0x35, 0x05, 0x48, 0x63, - 0x48, 0x57, 0x03, 0x31, 0x28, 0x14, 0x05, 0x01, - 0x57, 0x34, 0x64, 0x50, 0x23, 0x86, 0x75, 0x85, - 0x18, 0x75, 0x56, 0x88, 0x08, 0x26, 0x01, 0x34, - 0x01, 0x57, 0x05, 0x28, 0x35, 0x48, 0x17, 0x57, - 0x71, 0x81, 0x41, 0x33, 0x77, 0x86, 0x07, 0x77, - 0x02, 0x25, 0x71, 0x74, 0x37, 0x31, 0x20, 0x14, - 0x32, 0x54, 0x20, 0x35, 0x54, 0x76, 0x83, 0x15, - 0x80, 0x73, 0x27, 0x23, 0x00, 0x58, 0x22, 0x84, - 0x64, 0x56, 0x14, 0x84, 0x38, 0x34, 0x16, 0x21, - 0x77, 0x07, 0x34, 0x81, 0x66, 0x87, 0x40, 0x11, - 0x62, 0x46, 0x45, 0x01, 0x20, 0x53, 0x21, 0x73, - 0x07, 0x76, 0x44, 0x15, 0x61, 0x50, 0x83, 0x48, - 0x58, 0x58, 0x45, 0x33, 0x25, 0x36, 0x07, 0x42, - 0x70, 0x24, 0x07, 0x41, 0x08, 0x35, 0x00, 0x78, - 0x41, 0x47, 0x02, 0x56, 0x07, 0x14, 0x68, 0x33, - 0x55, 0x77, 0x32, 0x40, 0x55, 0x24, 0x50, 0x26, - 0x47, 0x12, 0x65, 0x58, 0x43, 0x05, 0x52, 0x55, - 0x75, 0x50, 0x18, 0x46, 0x65, 0x48, 0x03, 0x32, - 0x85, 0x31, 0x16, 0x52, 0x71, 0x57, 0x87, 0x46, - 0x76, 0x14, 0x42, 0x81, 0x28, 0x74, 0x60, 0x34, - 0x35, 0x55, 0x52, 0x16, 0x58, 0x48, 0x61, 0x75, - 0x80, 0x88, 0x15, 0x32, 0x72, 0x26, 0x31, 0x03, - 0x05, 0x03, 0x16, 0x04, 0x07, 0x37, 0x37, 0x73, - 0x43, 0x81, 0x57, 0x31, 0x88, 0x04, 0x72, 0x76, - 0x01, 0x61, 0x81, 0x17, 0x37, 0x65, 0x44, 0x38, - 0x61, 0x23, 0x16, 0x26, 0x52, 0x45, 0x00, 0x73, - 0x83, 0x63, 0x64, 0x62, 0x26, 0x74, 0x60, 0x11, - 0x81, 0x08, 0x06, 0x30, 0x36, 0x05, 0x10, 0x48, - 0x47, 0x35, 0x10, 0x85, 0x30, 0x86, 0x71, 0x38, - 0x16, 0x37, 0x6F, 0x3B, 0x1C, 0x18, 0xB1, 0xE3, - 0xE8, 0xEE, 0x83, 0x3E, 0x8D, 0x38, 0x43, 0x9E, - 0x78, 0x1C, 0xA3, 0xB8, 0x94, 0x06, 0x54, 0xEF, - 0x44, 0x6C, 0x9A, 0xAC, 0xC3, 0xF1, 0xD3, 0x0E, - 0xE0, 0x10, 0x5B, 0x8F, 0x63, 0xEB, 0x89, 0x74, - 0x6E, 0xF4, 0xBE, 0xB5, 0x4C, 0xFC, 0xE8, 0x81, - 0x2C, 0xF9, 0x47, 0xCF, 0x54, 0x54, 0xFB, 0x1C, - 0xA5, 0x5F, 0x25, 0xA0, 0xFE, 0x57, 0xF5, 0xFC, - 0xFD, 0x73, 0xB0, 0xDA, 0x04, 0xB0, 0xBF, 0x28, - 0x92, 0x92, 0xAF, 0x39, 0x74, 0x72, 0x56, 0x69, - 0xC3, 0x00, 0x03, 0xE0, 0x50, 0x9F, 0xED, 0xC8, - 0x0F, 0x6C, 0x89, 0x4B, 0xB0, 0x47, 0xC2, 0xE2, - 0xAF, 0x48, 0x5C, 0xAD, 0x68, 0xC2, 0x1D, 0x80, - 0xEF, 0x33, 0xB0, 0xC4, 0xFD, 0xA6, 0x7B, 0x85, - 0x31, 0xA1, 0x58, 0x87, 0x67, 0x54, 0x71, 0x3F, - 0xF8, 0xA8, 0xA6, 0x8D, 0x9A, 0xBD, 0xC4, 0x81, - 0x6B, 0x24, 0xB4, 0xA3, 0x6A, 0x8A, 0x2B, 0xB1, - 0xFD, 0x1C, 0x2C, 0x25, 0xC3, 0x72, 0xC4, 0xB7, - 0x75, 0xF8, 0xCC, 0x17, 0x39, 0xCF, 0x2C, 0xE9, - 0xA4, 0x54, 0x58, 0xE4, 0x1A, 0xAE, 0xC6, 0x4A, - 0xEE, 0xDE, 0x75, 0x7C, 0xE7, 0x38, 0xBC, 0xDF, - 0x4D, 0xA0, 0xEE, 0x2B, 0xDD, 0x5F, 0x80, 0x5C, - 0xCF, 0xF7, 0x2A, 0x5F, 0x73, 0x8B, 0xAC, 0x12, - 0x34, 0x2E, 0xE3, 0xF1, 0x4C, 0xB7, 0x22, 0x68, - 0xC2, 0xD6, 0x36, 0x7D, 0xF1, 0x7F, 0x20, 0x46, - 0xA2, 0x4B, 0x47, 0x4B, 0x32, 0x58, 0xF7, 0xB0, - 0x88, 0x54, 0x6C, 0x99, 0x3B, 0x0D, 0xA1, 0xE2, - 0x92, 0x92, 0xEB, 0x72, 0x1E, 0xE7, 0xE5, 0xA1, - 0xF8, 0x6E, 0x14, 0xA5, 0x39, 0xB0, 0x63, 0x6F, - 0x78, 0x82, 0xA1, 0x9C, 0x8D, 0x79, 0x02, 0x85, - 0xA6, 0xDF, 0x7D, 0xEE, 0xCE, 0x17, 0x4D, 0x63, - 0xCF, 0xF3, 0xB2, 0xFF, 0x85, 0x68, 0x81, 0xCB, - 0x38, 0x6B, 0x1B, 0x38, 0xA2, 0xE0, 0xF2, 0x4C, - 0x31, 0xE0, 0x91, 0x93, 0xDD, 0xF3, 0x71, 0x47, - 0xF2, 0x69, 0xD9, 0x4C, 0xDE, 0xF9, 0x90, 0x61, - 0x34, 0x62, 0x07, 0x71, 0x79, 0xD0, 0xDD, 0x09, - 0x32, 0x64, 0x39, 0x49, 0x93, 0x1A, 0x02, 0xBA, - 0xFA, 0x80, 0x17, 0x6E, 0xDF, 0x97, 0xB6, 0xA2, - 0x31, 0x34, 0x71, 0xF0, 0xB1, 0x9B, 0x3B, 0x59, - 0xF4, 0x3B, 0xD2, 0x2A, 0x05, 0x49, 0x3E, 0xFB, - 0x0C, 0xF8, 0xB5, 0xD7, 0xB6, 0x25, 0x2B, 0x09, - 0x8B, 0x4B, 0xFA, 0x39, 0x5B, 0xF9, 0xA2, 0x09, - 0xE9, 0xBB, 0x46, 0x01, 0x30, 0x00, 0x90, 0x32, - 0x58, 0xA6, 0x9B, 0x67, 0xF5, 0x94, 0x11, 0xC8, - 0x35, 0x95, 0xFA, 0x6E, 0x67, 0x42, 0x8D, 0x96, - 0x6D, 0x20, 0xFC, 0xD3, 0x09, 0x61, 0x11, 0x86, - 0x77, 0xC0, 0x86, 0xA3, 0x54, 0xAE, 0x6D, 0x41, - 0xEE, 0x17, 0xDC, 0xA1, 0xB0, 0xB7, 0x50, 0x43, - 0xD6, 0xCE, 0x23, 0xBD, 0xB0, 0x1E, 0x02, 0xE5, - 0x9E, 0xCF, 0xC6, 0x2E, 0x8C, 0x39, 0x71, 0xB1, - 0x45, 0x02, 0x75, 0xBA, 0x7F, 0x60, 0xB0, 0x8B, - 0x1C, 0x33, 0xBA, 0x0C, 0xFF, 0x54, 0x63, 0xE3, - 0x47, 0x5B, 0x07, 0x77, 0x77, 0xC5, 0x72, 0x24, - 0x60, 0xFA, 0xDB, 0x0B, 0xF6, 0x41, 0x82, 0x69, - 0x3C, 0x68, 0x37, 0xF5, 0xFD, 0x45, 0x4A, 0x66, - 0x6C, 0xD7, 0x01, 0x10, 0x78, 0x4A, 0xED, 0x09, - 0xAE, 0x49, 0x0A, 0x60, 0xC7, 0x78, 0x56, 0x51, - 0x15, 0xE3, 0x4A, 0xB5, 0xAE, 0xAD, 0x09, 0xD1, - 0x71, 0xA8, 0xCA, 0x3C, 0x8A, 0xE6, 0xCA, 0x39, - 0x43, 0x60, 0x56, 0x83, 0x3C, 0x58, 0x04, 0xD4, - 0xB4, 0x62, 0xDD, 0x53, 0x05, 0xC8, 0x51, 0xAF, - 0x59, 0xF6, 0x4F, 0x04, 0xC3, 0x1E, 0x69, 0xFF, - 0x82, 0xBF, 0xD7, 0x89, 0xD2, 0x30, 0x9F, 0xF2, - 0xE6, 0x38, 0x05, 0x9C, 0xD5, 0x08, 0xB8, 0x25, - 0xF3, 0x3B, 0x99, 0x85, 0x4E, 0x40, 0xF8, 0x40, - 0xF2, 0x4B, 0x5C, 0x3A, 0xA8, 0x64, 0x41, 0x92, - 0xEA, 0xCA, 0x9A, 0x7B, 0xCF, 0xBA, 0x1F, 0xDE, - 0xE0, 0x9D, 0xCA, 0xAD, 0xB4, 0x0C, 0x90, 0xFF, - 0xE1, 0x6C, 0xEC, 0xDD, 0x32, 0x38, 0x2A, 0xF7, - 0x19, 0x20, 0x39, 0xCB, 0x29, 0x67, 0x2F, 0x70, - 0x71, 0x12, 0x10, 0xB6, 0xB8, 0x3E, 0x8D, 0xFD, - 0xB5, 0xFB, 0xBD, 0xBF, 0xA8, 0xCA, 0x19, 0xC4, - 0xC6, 0xAC, 0x37, 0x31, 0xFC, 0x33, 0xC2, 0x7F, - 0xA2, 0xA2, 0x6D, 0xEB, 0x15, 0x2E, 0xA1, 0x90, - 0xF8, 0x29, 0xC6, 0x34, 0xD1, 0x39, 0x30, 0x24, - 0x1C, 0xB9, 0x26, 0xAC, 0xDD, 0xE5, 0x24, 0x9C, - 0xDD, 0x35, 0x60, 0x7E, 0x38, 0x0C, 0xC1, 0x2A, - 0x7D, 0x1E, 0xA9, 0xBA, 0xA5, 0x58, 0x4C, 0xDD, - 0x26, 0x86, 0x09, 0xDC, 0xC3, 0xB0, 0x1F, 0xCD, - 0xC9, 0xAD, 0xCB, 0x4A, 0x7E, 0x51, 0x67, 0xE5, - 0xED, 0x5A, 0xD2, 0x21, 0xDB, 0x2E, 0xAB, 0xD9, - 0x0A, 0xEC, 0xAE, 0x71, 0xFA, 0x23, 0x7A, 0xEF, - 0x98, 0xDF, 0x53, 0x89, 0x93, 0xE8, 0x71, 0xD7, - 0x35, 0xDA, 0x6B, 0x88, 0x31, 0xAF, 0x67, 0xF2, - 0x97, 0x29, 0x1C, 0x39, 0x67, 0xEB, 0xAF, 0x60, - 0xD9, 0x53, 0xC4, 0x0F, 0x7A, 0x46, 0x4E, 0xF3, - 0x2F, 0x8E, 0xAE, 0xFA, 0x64, 0x2E, 0x37, 0xDE, - 0xA9, 0x74, 0x73, 0x5D, 0xDD, 0xBB, 0x83, 0x54, - 0x27, 0xB9, 0x7A, 0x63, 0x2B, 0x19, 0x8B, 0x26, - 0x22, 0x28, 0x84, 0xA0, 0x58, 0x00, 0x2D, 0x55, - 0xEA, 0x2A, 0x80, 0x0D, 0x6C, 0x97, 0x0E, 0x8B, - 0xF7, 0x67, 0xB2, 0x8B, 0x2D, 0xDE, 0x8F, 0x58, - 0xFE, 0x97, 0x81, 0xE7, 0xE2, 0x58, 0x8D, 0x7E, - 0x1B, 0xAB, 0xE5, 0x15, 0x9D, 0x54, 0xF4, 0x00, - 0x34, 0x1D, 0x12, 0x1B, 0x03, 0x23, 0x2B, 0x06, - 0x2E, 0x8C, 0xD0, 0x0A, 0xDC, 0x19, 0xA1, 0x69, - 0x1D, 0x72, 0x91, 0xB4, 0xED, 0x0E, 0x81, 0xF7, - 0x05, 0x99, 0x84, 0xFC, 0x74, 0x0F, 0x7D, 0xF8, - 0x9B, 0x3E, 0x7F, 0x63, 0x7C, 0x73, 0xEB, 0xF5, - 0x36, 0xB3, 0x24, 0x22, 0xAA, 0x33, 0x0C, 0x30, - 0x42, 0xC3, 0xE2, 0x04, 0x6B, 0x3F, 0x2A, 0x0D, - 0xAB, 0xE8, 0x5A, 0x9A, 0x09, 0xD7, 0xB6, 0xAA, - 0x9C, 0x3E, 0xD0, 0x9E, 0xB5, 0x9B, 0x52, 0x7B, - 0xAF, 0x2D, 0x6B, 0xE0, 0x40, 0x12, 0x34, 0xBE, - 0x49, 0xAB, 0xD2, 0xC8, 0xB5, 0x89, 0x1B, 0x79, - 0xEC, 0xAE, 0x88, 0x89, 0x3C, 0x05, 0xC7, 0x75, - 0xC5, 0x84, 0xF7, 0x10, 0x49, 0x48, 0x92, 0x69, - 0x9E, 0xD5, 0x56, 0xB2, 0x1E, 0x81, 0x18, 0x78, - 0xCB, 0x93, 0x5D, 0x70, 0x3A, 0xB2, 0x67, 0xD1, - 0xCC, 0x8F, 0x83, 0x03, 0xB9, 0x64, 0x46, 0x22, - 0x78, 0x0D, 0x55, 0x67, 0x22, 0x58, 0x0E, 0x22, - 0x6B, 0xBA, 0x01, 0xD4, 0x77, 0x05, 0xA7, 0xAC, - 0xB7, 0xE5, 0xFC, 0xE6, 0x11, 0xCC, 0x92, 0x5A, - 0x8C, 0xC0, 0x08, 0x24, 0xAF, 0xCC, 0x4D, 0xBD, - 0x79, 0xD3, 0x5C, 0x52, 0x2C, 0xFF, 0x1A, 0x48, - 0xBB, 0x91, 0x59, 0x6A, 0x80, 0x32, 0x8C, 0x75, - 0x7C, 0xD2, 0xC1, 0x94, 0x94, 0xA8, 0x55, 0x4B, - 0xF2, 0x96, 0xF7, 0x86, 0xF7, 0x53, 0x4F, 0x54, - 0x74, 0x05, 0x5C, 0xEF, 0x02, 0xA0, 0x8A, 0xD1, - 0x88, 0x72, 0xEB, 0x1B, 0x82, 0xF9, 0xFB, 0xDA, - 0xBC, 0xB9, 0x90, 0x98, 0xF2, 0x4B, 0x9A, 0xA6, - 0x89, 0xD5, 0xB3, 0xD8, 0x7B, 0x94, 0xE3, 0x1F, - 0x17, 0x4F, 0xEB, 0x24, 0x06, 0x2B, 0xAB, 0x5F, - 0x27, 0x9B, 0xCD, 0xCE, 0x50, 0x06, 0x40, 0xDD, - 0x7A, 0x8C, 0x67, 0xF0, 0x8E, 0x07, 0xB4, 0x1C, - 0x3C, 0x13, 0xB2, 0x07, 0x6A, 0x38, 0x59, 0x94, - 0x2C, 0xB1, 0x72, 0xA8, 0x77, 0x5B, 0x15, 0x8F, - 0x88, 0xC4, 0x5C, 0xDC, 0x92, 0xCA, 0xC0, 0xED, - 0x02, 0xFF, 0x1D, 0x57, 0x25, 0xBE, 0x67, 0x3E, - 0x4C, 0xE8, 0x95, 0x2A, 0x80, 0xB2, 0x5D, 0xBC, - 0xFA, 0x17, 0xA9, 0x35, 0x0A, 0x6B, 0x07, 0xC8, - 0x8F, 0x88, 0x8D, 0xBC, 0x97, 0x84, 0xE2, 0x07, - 0x57, 0x92, 0x99, 0x4B, 0xE8, 0xDD, 0xD7, 0xA4, - 0x58, 0xCB, 0x61, 0xCE, 0x16, 0xFC, 0x22, 0xCD, - 0x4B, 0x1A, 0x08, 0xC9, 0xAD, 0x3D, 0xB1, 0xF2, - 0xA9, 0x1B, 0x8E, 0xD0, 0xC7, 0xBC, 0xCE, 0xF9, - 0x0A, 0x7A, 0x4D, 0xBE, 0x82, 0x0A, 0xBD, 0x6C, - 0x42, 0x99, 0xBF, 0x86, 0x65, 0x53, 0xAA, 0x04, - 0x79, 0xD6, 0x6D, 0x7E, 0x0F, 0x40, 0xFA, 0xEE, - 0xCE, 0x38, 0x3B, 0x1C, 0x2F, 0xA4, 0x45, 0xA3, - 0x78, 0x2B, 0xA0, 0x29, 0xC5, 0xAA, 0xA9, 0x09, - 0x29, 0x51, 0xDC, 0x5B, 0xB5, 0x95, 0xE4, 0xCE, - 0xC8, 0x50, 0x71, 0x2D, 0xE9, 0x32, 0x12, 0xA0, - 0x7C, 0x88, 0x6B, 0xED, 0xE4, 0x38, 0xB7, 0x92, - 0xCA, 0xE4, 0xDC, 0xD4, 0x05, 0x3B, 0x2B, 0x84, - 0x95, 0x07, 0xFF, 0xF4, 0x79, 0xFF, 0x1E, 0x73, - 0x1B, 0x8E, 0xDF, 0xA3, 0x15, 0xBD, 0x56, 0xAC, - 0xDA, 0xAD, 0x73, 0x95, 0xC2, 0xD3, 0x72, 0xA8, - 0xF0, 0x8E, 0x6C, 0xE3, 0x7D, 0xBE, 0x4C, 0x87, - 0xFC, 0x0F, 0xA6, 0x3B, 0xED, 0xA4, 0x0F, 0x4F, - 0xF1, 0x5D, 0xF2, 0x56, 0x54, 0xD1, 0xCE, 0x6C, - 0xCA, 0x1C, 0xCB, 0xC2, 0x45, 0x7F, 0x90, 0x61, - 0x0E, 0x3D, 0xCE, 0xBB, 0x5E, 0x41, 0x38, 0x2B, - 0xD4, 0x41, 0x7C, 0x67, 0x7C, 0x71, 0x95, 0x34, - 0xD7, 0xED, 0x4D, 0xAC, 0x6E, 0xF1, 0x46, 0xEA, - 0x7D, 0xA4, 0x4C, 0x69, 0x0B, 0x9C, 0x2F, 0xAA, - 0xF1, 0x17, 0x90, 0x1B, 0xF4, 0x4C, 0x03, 0xBE, - 0x9D, 0x56, 0xCE, 0x0C, 0xCF, 0xE0, 0x87, 0x44, - 0xBE, 0x2C, 0x52, 0xD3, 0xBC, 0xAE, 0x02, 0x30, - 0xC7, 0x26, 0x06, 0x88, 0xA6, 0xAA, 0x9D, 0x50, - 0xF1, 0x94, 0x58, 0xC7, 0x60, 0xF3, 0xA0, 0x6F, - 0x53, 0x66, 0x53, 0xCD, 0x1D, 0xBE, 0xD1, 0xF2, - 0x39, 0xBA, 0x1F, 0xE8, 0x40, 0x84, 0xCD, 0x1C, - 0x8F, 0x3D, 0xB7, 0xD1, 0x51, 0x00, 0xDE, 0xB8, - 0x11, 0xD9, 0x66, 0xAD, 0xD5, 0xE9, 0x33, 0x09, - 0xE1, 0xA8, 0x00, 0x58, 0x65, 0xF1, 0xC1, 0x67, - 0xB4, 0x3A, 0xA7, 0x98, 0x90, 0x6A, 0xDB, 0x91, - 0xDB, 0x4A, 0x16, 0x35, 0xDC, 0x3D, 0x69, 0xEB, - 0x7B, 0xDE, 0xCC, 0x91, 0x1B, 0x8D, 0xE6, 0x46, - 0x61, 0x8E, 0x3F, 0x4C, 0x88, 0x81, 0x85, 0x4A, - 0x73, 0x08, 0x56, 0x52, 0xAE, 0xE6, 0x4A, 0x60, - 0x4A, 0x2E, 0x0C, 0x9A, 0x93, 0x76, 0x35, 0xC9, - 0x36, 0x28, 0x0C, 0x72, 0x19, 0xAD, 0x33, 0xCF, - 0x2B, 0xFB, 0xCE, 0x1A, 0x7D, 0xAC, 0xAA, 0x75, - 0x15, 0x76, 0x81, 0x52, 0x55, 0xCC, 0xB9, 0x39, - 0x07, 0xA3, 0x39, 0x12, 0x8D, 0x6F, 0x53, 0xAF, - 0xC7, 0x14, 0x7F, 0xC7, 0x96, 0x5A, 0x49, 0x3C, - 0x5C, 0xB0, 0x26, 0x47, 0xF4, 0x9D, 0xCA, 0x23, - 0xA6, 0x7D, 0xA6, 0x61, 0xC4, 0xA3, 0x26, 0x40, - 0x0F, 0xA7, 0x27, 0x09, 0xBC, 0x39, 0xFD, 0xA7, - 0x75, 0x38, 0x74, 0xD0, 0x9D, 0x29, 0x15, 0x97, - 0xDE, 0x25, 0x60, 0x4D, 0x19, 0x36, 0x04, 0xFB, - 0xA5, 0x2C, 0xB0, 0xC8, 0xB5, 0xFE, 0xE5, 0x94, - 0x7C, 0xE2, 0x1F, 0x84, 0xBB, 0xFB, 0x78, 0x9E, - 0xA5, 0x7C, 0x5D, 0x4A, 0xB2, 0x48, 0x6F, 0x6E, - 0x67, 0x95, 0x16, 0x5F, 0x01, 0x2A, 0xF8, 0x70, - 0x95, 0xCB, 0x06, 0x93, 0x26, 0x6E, 0x7A, 0x75, - 0xB5, 0xE5, 0x4E, 0x27, 0x1D, 0x8B, 0x30, 0xA6, - 0x67, 0x67, 0xD6, 0xE2, 0xD6, 0xD1, 0x99, 0xA4, - 0x55, 0x73, 0x19, 0x32, 0xF6, 0x0B, 0x6B, 0x4A, - 0xEE, 0x23, 0x33, 0x38, 0x30, 0x68, 0x6F, 0x8E, - 0x60, 0xA9, 0x60, 0x97, 0x3E, 0xEA, 0x5D, 0xE1, - 0x40, 0x6F, 0x0C, 0x76, 0x84, 0xCF, 0xAF, 0x86, - 0x8D, 0x36, 0xE5, 0x7D, 0xAE, 0x9A, 0x13, 0x70, - 0x22, 0x2A, 0x31, 0xFE, 0xC2, 0xFB, 0xE1, 0x58, - 0xA5, 0x4E, 0xEF, 0x10, 0x5B, 0x5E, 0xD4, 0x39, - 0xFC, 0xF9, 0x15, 0x64, 0x78, 0x43, 0x7D, 0x03, - 0x9F, 0x5B, 0xCB, 0x86, 0xD2, 0xEF, 0x28, 0xBD, - 0x14, 0xCB, 0x8A, 0x04, 0x1D, 0x59, 0x23, 0x53, - 0x4D, 0x13, 0xF9, 0x93, 0xFE, 0x19, 0x9C, 0xC3, - 0x3F, 0xD9, 0xC1, 0x12, 0x94, 0x84, 0x13, 0x95, - 0x8F, 0xD9, 0x10, 0xAB, 0x37, 0x69, 0x08, 0x04, - 0x4A, 0x97, 0x82, 0x28, 0x75, 0xBB, 0xC9, 0xF4, - 0x3F, 0x19, 0x6B, 0x00, 0x4C, 0x56, 0x16, 0x1F, - 0x50, 0x82, 0xD1, 0x45, 0xFF, 0x0C, 0x37, 0x28, - 0x04, 0xBB, 0x6C, 0x00, 0x97, 0x3A, 0x79, 0x2D, - 0x9A, 0xB9, 0xA5, 0x16, 0x52, 0x02, 0xA3, 0x86, - 0x81, 0xAA, 0x3A, 0x31, 0xE5, 0xB5, 0x44, 0x2D, - 0x34, 0xE2, 0x7A, 0xD8, 0xFE, 0xA1, 0x36, 0xC0, - 0x36, 0x65, 0x73, 0x12, 0x9F, 0x61, 0x3F, 0x59, - 0xC9, 0x68, 0xB6, 0x34, 0x41, 0x40, 0x25, 0xD6, - 0xE7, 0xAD, 0x25, 0x7D, 0xCB, 0xF1, 0x2A, 0xD8, - 0x53, 0x48, 0x9D, 0xBF, 0xB5, 0xD5, 0x61, 0x18, - 0x0E, 0x2A, 0x21, 0x3E, 0x61, 0x18, 0x07, 0x8E, - 0x6F, 0x9A, 0x96, 0xA8, 0x61, 0xFE, 0x8D, 0x66, - 0x1A, 0x21, 0x99, 0xD9, 0x60, 0x8B, 0xAC, 0x85, - 0x84, 0x3D, 0x41, 0xF9, 0x93, 0x35, 0x24, 0x32, - 0xFF, 0xC0, 0x8A, 0xFA, 0xBC, 0xA7, 0x85, 0x57, - 0x3C, 0x16, 0x83, 0xAE, 0x90, 0xDE, 0x40, 0x12, - 0xE4, 0x2B, 0xA2, 0x47, 0xA4, 0x92, 0x73, 0x54, - 0x6C, 0xA5, 0xB7, 0xEE, 0x62, 0xEA, 0x62, 0x37, - 0xD9, 0xD7, 0x73, 0x58, 0x43, 0xDB, 0x20, 0x60, - 0x8C, 0x4F, 0x87, 0x58, 0xB2, 0x2B, 0xC3, 0x40, - 0xB0, 0xC1, 0xB6, 0xB6, 0xA9, 0xCD, 0xCC, 0x05, - 0x4F, 0x38, 0x5F, 0x08, 0xB3, 0x3B, 0x08, 0x4D, - 0x78, 0x6B, 0x0D, 0x40, 0x46, 0xB9, 0x20, 0xDE, - 0x29, 0x6F, 0x23, 0x96, 0xDA, 0x02, 0xF5, 0x1C, - 0x1A, 0x1A, 0x36, 0xA3, 0x3A, 0xFA, 0x1D, 0x80, - 0x36, 0x3C, 0xF6, 0xB4, 0xDC, 0x2C, 0x88, 0x54, - 0xF7, 0x86, 0xC6, 0xF2, 0x15, 0xF8, 0x85, 0x33, - 0xFB, 0x21, 0x20, 0x59, 0xCE, 0x60, 0x4B, 0xE8, - 0xF1, 0xB7, 0x54, 0x17, 0x1E, 0x83, 0xCD, 0x82, - 0x39, 0x40, 0x14, 0x31, 0xEC, 0x89, 0xC8, 0xE2, - 0x6A, 0xAE, 0x3F, 0x49, 0x5B, 0x38, 0xE7, 0xCD, - 0xE2, 0xF6, 0xEF, 0x90, 0x51, 0x10, 0x83, 0x79, - 0x27, 0x80, 0x2F, 0x45, 0x78, 0x67, 0xAF, 0xF4, - 0x65, 0x95, 0x2D, 0xFE, 0x00, 0xF3, 0x2A, 0x60, - 0x00, 0xF7, 0x26, 0xFA, 0x3C, 0xAD, 0xA9, 0xAF, - 0xCA, 0xF6, 0x69, 0x48, 0x03, 0xBE, 0x18, 0x73, - 0x54, 0x06, 0x06, 0x3E, 0x4E, 0xAD, 0xFC, 0x8B, - 0xC3, 0x43, 0x24, 0x5D, 0xE9, 0xDE, 0x78, 0xDC, - 0xD0, 0xA7, 0x04, 0x77, 0xF0, 0x0D, 0xA3, 0x37, - 0x8C, 0x5F, 0x8B, 0xDF, 0xBE, 0x90, 0x1F, 0xA6, - 0xB3, 0x17, 0x9D, 0x68, 0x36, 0x45, 0x11, 0x60, - 0xFF, 0xF9, 0xBA, 0xDA, 0x80, 0xAA, 0x37, 0x57, - 0xDD, 0x34, 0x30, 0x42, 0x7A, 0x9C, 0x86, 0xB4, - 0x91, 0x30, 0xB8, 0xC0, 0xC4, 0x29, 0x15, 0x31, - 0xF3, 0x9A, 0xB0, 0xCD, 0xAC, 0x8C, 0x7C, 0x8C, - 0x4A, 0xDC, 0x76, 0xB6, 0x31, 0x30, 0xDE, 0x2D, - 0x81, 0x04, 0xC7, 0x48, 0x73, 0x69, 0x02, 0x40, - 0x30, 0x19, 0x66, 0x94, 0x21, 0x65, 0x13, 0x18, - 0xC2, 0x09, 0x14, 0x5F, 0xC4, 0x2F, 0xC4, 0xD6, - 0xA6, 0x05, 0x37, 0xAF, 0x72, 0x0C, 0x47, 0x02, - 0x29, 0x95, 0x08, 0x9D, 0xC9, 0x07, 0x31, 0x38, - 0xA9, 0xB5, 0xDA, 0x21, 0x76, 0x1D, 0x84, 0xD0, - 0x15, 0xAF, 0x2A, 0xA3, 0x69, 0x0A, 0xE9, 0x4F, - 0x75, 0x8A, 0x50, 0xA5, 0x11, 0xD4, 0x5F, 0xAF, - 0x70, 0x43, 0xCB, 0xD7, 0x03, 0x9E, 0xB0, 0xBD, - 0x19, 0x47, 0x94, 0x58, 0x22, 0x86, 0xC6, 0xE3, - 0x62, 0xD8, 0x63, 0x05, 0xD9, 0xE2, 0xE5, 0x4A, - 0x04, 0x54, 0x5A, 0x55, 0x25, 0xAD, 0x15, 0x5C, - 0x4B, 0x71, 0x25, 0xE1, 0x50, 0xE3, 0x62, 0x1B, - 0xD2, 0x43, 0x28, 0xD2, 0x84, 0xE4, 0xE2, 0x05, - 0xE3, 0x01, 0x4C, 0x8F, 0x38, 0x17, 0x49, 0xFD, - 0x3B, 0x52, 0x1A, 0x55, 0xB3, 0x1D, 0x69, 0x83, - 0xAB, 0x9E, 0xC4, 0x73, 0xEE, 0x64, 0x7A, 0x73, - 0x19, 0xEF, 0xCD, 0x7D, 0xB7, 0xF4, 0x2E, 0xCB, - 0x55, 0x2A, 0x8A, 0xCC, 0x8F, 0xF8, 0x4E, 0xFB, - 0xD2, 0x63, 0x8F, 0xF1, 0x10, 0x89, 0x02, 0x93, - 0x3E, 0xAC, 0xA4, 0xB4, 0x89, 0xC7, 0xF7, 0x8B, - 0x3E, 0xE1, 0xE8, 0x93, 0xB9, 0x8E, 0x36, 0x25, - 0xC1, 0xC0, 0xD9, 0x44, 0x81, 0xC0, 0x99, 0x3C, - 0x2B, 0x89, 0xF7, 0xDF, 0xDB, 0xD8, 0xCC, 0x84, - 0xE6, 0xFF, 0xFE, 0xAC, 0x21, 0x16, 0xF1, 0xE2, - 0xEF, 0x0A, 0x32, 0xA7, 0xDE, 0x87, 0x51, 0xEC, - 0xB1, 0x0C, 0x0B, 0xC7, 0x07, 0xD9, 0x9A, 0xF8, - 0xE8, 0xB0, 0xFE, 0xA5, 0x67, 0xAF, 0x53, 0x9F, - 0xEF, 0x23, 0xEF, 0x7D, 0xFF, 0xA8, 0x8E, 0xDE, - 0x97, 0x93, 0x32, 0xA6, 0x7C, 0xCF, 0x49, 0xBC, - 0x36, 0x0D, 0x88, 0x90, 0x89, 0x39, 0x76, 0xA8, - 0x82, 0x19, 0x02, 0xB6, 0x02, 0x82, 0xFE, 0xED, - 0x9C, 0x28, 0x8D, 0xB0, 0x1E, 0x2B, 0x2A, 0xCF, - 0xF3, 0x94, 0xFF, 0x66, 0x33, 0x93, 0x31, 0xD6, - 0xFC, 0xAF, 0xE7, 0xC5, 0x98, 0x01, 0x46, 0xCD, - 0xCB, 0xC4, 0x41, 0x13, 0x6D, 0x42, 0xF5, 0x13, - 0xDF, 0xF9, 0x97, 0x65, 0xD4, 0x7B, 0x6E, 0x10, - 0x79, 0x5D, 0x5A, 0x82, 0xA2, 0x49, 0x53, 0xA7, - 0x6D, 0x9C, 0xDD, 0x0A, 0x80, 0x98, 0x58, 0x07, - 0x30, 0xBF, 0x0B, 0x30, 0xAC, 0x24, 0x9E, 0xA0, - 0xE8, 0xE4, 0x7A, 0x0D, 0xD0, 0x50, 0x82, 0xAE, - 0xBB, 0xEC, 0x15, 0x30, 0x2A, 0xF2, 0xA7, 0xA6, - 0x6A, 0xC8, 0xAE, 0x1E, 0x14, 0x80, 0x7C, 0x18, - 0xE7, 0x2B, 0x88, 0x65, 0xB7, 0x93, 0x12, 0xB3, - 0xC1, 0x2A, 0x20, 0xAD, 0x3B, 0x2E, 0x84, 0xC4, - 0x0D, 0xA7, 0x62, 0x5C, 0x79, 0x52, 0x5D, 0x59, - 0xA4, 0x69, 0x5C, 0x26, 0xFD, 0x4F, 0x80, 0xCC, - 0xFE, 0x8E, 0x70, 0x72, 0xB1, 0x41, 0xE1, 0x75, - 0x53, 0x51, 0xCF, 0x4C, 0x0B, 0x57, 0xF2, 0xB8, - 0x59, 0x76, 0xE6, 0xEF, 0x6D, 0x74, 0xA6, 0x73, - 0x69, 0x7F, 0x7C, 0xB2, 0x35, 0xFE, 0x8A, 0x02, - 0x2F, 0xBE, 0x7C, 0x4D, 0x02, 0xBE, 0x8F, 0xFB, - 0x7A, 0x58, 0x45, 0xEC, 0xBA, 0x1B, 0xC6, 0xB9, - 0x8D, 0xF5, 0xB0, 0x82, 0xD1, 0xB4, 0x97, 0x86, - 0x9B, 0x33, 0x54, 0x49, 0x5B, 0x88, 0xD9, 0xB5, - 0xD0, 0x93, 0x8A, 0x00, 0x5D, 0x0F, 0x37, 0x88, - 0x57, 0xE3, 0xFA, 0x7E, 0x7B, 0xFA, 0x43, 0x74, - 0x8D, 0x64, 0x07, 0xD7, 0x07, 0x85, 0x4D, 0x49, - 0xBC, 0x83, 0xF5, 0xD4, 0x95, 0x3E, 0x3E, 0x09, - 0x65, 0xF3, 0xFC, 0x88, 0xA7, 0xF0, 0x46, 0x61, - 0x44, 0x7D, 0x76, 0xED, 0xC9, 0x8D, 0x0F, 0x8D, - 0xDA, 0x0D, 0x01, 0xC8, 0xB1, 0xA8, 0x9B, 0x4A, - 0xF0, 0xA3, 0x88, 0x54, 0xC1, 0xD6, 0x52, 0x97 - }; -#endif /* WOLFSSL_NO_ML_DSA_65 */ -#ifndef WOLFSSL_NO_ML_DSA_87 - static const byte seed_87_draft[] = { - 0x22, 0x5F, 0x77, 0x07, 0x5E, 0x66, 0xCE, 0x1C, - 0x99, 0xBA, 0x95, 0xB4, 0xFC, 0xDF, 0x25, 0x8B, - 0xBB, 0x6F, 0xA5, 0xFE, 0x9C, 0x34, 0x9F, 0x0F, - 0xDE, 0x3F, 0x71, 0xD5, 0x33, 0x9F, 0x6F, 0xD8 - }; - static const byte pk_87_draft[] = { - 0x8C, 0x52, 0x4B, 0xD9, 0xAC, 0x48, 0x5C, 0xC6, - 0x9A, 0xA0, 0x75, 0x64, 0xE1, 0x4F, 0x0F, 0x60, - 0x13, 0x0E, 0xDE, 0x34, 0x08, 0xA5, 0xD4, 0x81, - 0xFD, 0x76, 0xC2, 0x51, 0x74, 0x75, 0xA8, 0xFB, - 0x24, 0xBF, 0x9E, 0x97, 0x9C, 0xD2, 0x3E, 0xDA, - 0x8A, 0x1B, 0xB6, 0x76, 0xDA, 0x7D, 0x7F, 0x44, - 0xAD, 0x6B, 0xB9, 0xB0, 0x70, 0xD3, 0xD6, 0x44, - 0x7F, 0xBE, 0x6C, 0x0C, 0x71, 0x37, 0xC6, 0xFB, - 0x7B, 0x39, 0x83, 0x63, 0x9C, 0x41, 0x5C, 0xF2, - 0xC9, 0x15, 0xFF, 0xD4, 0x18, 0xEA, 0xA1, 0x4D, - 0xA9, 0xD1, 0xAD, 0x3C, 0x09, 0x8E, 0xA9, 0x05, - 0x34, 0x6C, 0xAA, 0x75, 0x78, 0xF8, 0x6B, 0x6E, - 0x52, 0xE6, 0x57, 0x55, 0x16, 0xF4, 0x92, 0x3E, - 0x74, 0x3F, 0x96, 0xA3, 0x2A, 0xD0, 0x0E, 0xEE, - 0xA1, 0xCE, 0x8A, 0x33, 0xF4, 0x87, 0xB9, 0xF3, - 0x22, 0x5D, 0x2D, 0x84, 0xCD, 0x27, 0x57, 0xCC, - 0xCF, 0xE6, 0xA3, 0x66, 0x24, 0x53, 0x0E, 0x52, - 0x8A, 0x2F, 0x64, 0xFC, 0xE7, 0x04, 0xE7, 0xA7, - 0x6C, 0x2E, 0x6A, 0xDC, 0x00, 0xEF, 0x9B, 0xEC, - 0x91, 0x07, 0xB9, 0x69, 0x8F, 0x11, 0x59, 0xFC, - 0x52, 0xEF, 0x4C, 0x36, 0x5A, 0xFD, 0xB1, 0x50, - 0xED, 0xC3, 0x43, 0x5E, 0x03, 0xBB, 0x70, 0x26, - 0x00, 0x6E, 0x5A, 0x55, 0x13, 0x51, 0xA4, 0xB1, - 0x5F, 0xB8, 0x9F, 0xD2, 0xE9, 0x98, 0x38, 0xE8, - 0xCF, 0x41, 0x73, 0xFD, 0x0D, 0xF1, 0xF6, 0x80, - 0x89, 0xE1, 0x51, 0x8D, 0xD4, 0xB5, 0x79, 0x27, - 0x76, 0xBD, 0xD9, 0x2F, 0xC7, 0xC7, 0x9B, 0xC7, - 0x99, 0x7F, 0x78, 0x84, 0xD2, 0xB8, 0x80, 0xC5, - 0xD2, 0xB7, 0xEE, 0xC8, 0x0A, 0xFE, 0x35, 0x59, - 0x84, 0x5D, 0x39, 0x08, 0x39, 0xBE, 0x5E, 0xBF, - 0x95, 0x93, 0xA7, 0x3E, 0xD0, 0x1E, 0xF6, 0x7D, - 0x50, 0x3F, 0xFB, 0x74, 0x47, 0x04, 0xA2, 0xDC, - 0x49, 0x48, 0x76, 0x2B, 0xC8, 0x43, 0x45, 0x75, - 0x72, 0x84, 0x4D, 0x15, 0x74, 0xE3, 0xEB, 0x37, - 0x83, 0x0A, 0x3B, 0x7C, 0xD4, 0x02, 0xC7, 0x6E, - 0xD5, 0xB4, 0xFC, 0x15, 0xF0, 0x5E, 0x76, 0x03, - 0x4C, 0xBB, 0x6A, 0x29, 0xDE, 0xBC, 0x7E, 0x2B, - 0x34, 0xB2, 0x14, 0x2A, 0x57, 0xCF, 0x1B, 0x39, - 0x73, 0xE5, 0x8B, 0xFF, 0x47, 0x50, 0x42, 0xDC, - 0x22, 0x6C, 0x7E, 0x13, 0x71, 0xF3, 0x37, 0x51, - 0x40, 0xF2, 0x90, 0x57, 0xAC, 0xB4, 0x64, 0x7C, - 0x5F, 0x92, 0x6D, 0x3F, 0xDC, 0xCC, 0xC8, 0xD2, - 0xE1, 0x6B, 0x81, 0xA9, 0xED, 0xCD, 0x0C, 0x8B, - 0x5B, 0x2E, 0x11, 0x89, 0x87, 0x42, 0x4B, 0xEC, - 0xAD, 0x40, 0xA5, 0xE5, 0xB4, 0x6D, 0x1C, 0xB4, - 0x01, 0x0A, 0x8E, 0x9F, 0x6F, 0x25, 0x92, 0x5D, - 0xFE, 0x6B, 0x6F, 0x24, 0x64, 0x5F, 0x9C, 0x88, - 0x86, 0x96, 0xE8, 0x79, 0x64, 0x5B, 0x6A, 0x3A, - 0x76, 0x21, 0x90, 0xCC, 0xB7, 0xD6, 0x26, 0x9D, - 0x35, 0x54, 0x79, 0xDF, 0x71, 0x90, 0x55, 0x2A, - 0x38, 0x52, 0xD1, 0xE9, 0x56, 0x73, 0xE7, 0x19, - 0x44, 0x6A, 0xD3, 0x10, 0x24, 0xB9, 0x4B, 0xF8, - 0xBB, 0xC9, 0x7B, 0x04, 0x66, 0x39, 0xCE, 0x12, - 0x3F, 0xDE, 0xC3, 0x75, 0xAF, 0x9F, 0x8D, 0x4C, - 0xF7, 0x16, 0x9B, 0xEB, 0x5F, 0xE5, 0x1B, 0xBF, - 0x82, 0x2C, 0x53, 0xBA, 0x2D, 0x98, 0xA4, 0xA0, - 0x14, 0xA2, 0xDE, 0x69, 0x7F, 0x03, 0x3C, 0x9E, - 0x4A, 0x57, 0xC6, 0xED, 0xF6, 0x10, 0x6A, 0x76, - 0x2A, 0x81, 0x92, 0x9F, 0x3E, 0xF0, 0xFD, 0xE9, - 0xB7, 0xB3, 0x8A, 0xF6, 0x1A, 0x19, 0x9A, 0x16, - 0x0F, 0x09, 0x45, 0xBD, 0xBB, 0x96, 0x7C, 0x72, - 0x40, 0xFE, 0x94, 0xBD, 0xE1, 0x60, 0x50, 0x53, - 0x13, 0xC9, 0x2B, 0xFA, 0x52, 0x40, 0xA2, 0xA7, - 0xF0, 0x8C, 0x85, 0x78, 0xDB, 0xD6, 0x7F, 0x21, - 0x39, 0xB5, 0x06, 0x72, 0xEE, 0x99, 0xA1, 0xBD, - 0x78, 0x1F, 0xA4, 0xE9, 0x54, 0xF4, 0xFA, 0xDF, - 0xA7, 0x9E, 0xDD, 0x8E, 0xB1, 0xCF, 0xA8, 0x48, - 0x84, 0x5D, 0x70, 0xCB, 0x2D, 0xA9, 0x66, 0x09, - 0x0B, 0x75, 0x75, 0xA2, 0x32, 0xFE, 0xDF, 0x96, - 0x33, 0x84, 0xA7, 0x84, 0x48, 0x1A, 0xFA, 0x82, - 0x79, 0x0A, 0x87, 0xE1, 0x1F, 0x11, 0x74, 0xD4, - 0x3C, 0xC0, 0x8D, 0x4F, 0xD2, 0x5D, 0xBB, 0x40, - 0x10, 0xB2, 0x6F, 0x23, 0xD2, 0xD6, 0xF4, 0xA5, - 0x87, 0xEF, 0x7D, 0xE8, 0xC6, 0xF7, 0xC6, 0x0F, - 0xF9, 0x6F, 0xF8, 0x4C, 0x39, 0xE4, 0x82, 0x1E, - 0x1E, 0x6A, 0x80, 0x2F, 0xEC, 0x22, 0xD6, 0xA0, - 0xAA, 0xB6, 0x2C, 0xCB, 0x16, 0x43, 0x68, 0xC2, - 0x27, 0xF6, 0xA2, 0x31, 0x62, 0x66, 0xEC, 0x2F, - 0xFF, 0x8D, 0xB4, 0x19, 0x51, 0x19, 0xA0, 0x8C, - 0x67, 0xE2, 0x04, 0x04, 0xB9, 0x1F, 0x08, 0x70, - 0x9E, 0xAA, 0xC2, 0xDE, 0xCB, 0x96, 0x19, 0x8F, - 0x02, 0x74, 0x10, 0xCC, 0x1B, 0x82, 0x5D, 0x9C, - 0x07, 0x00, 0xE5, 0xD7, 0x04, 0x51, 0xBA, 0x7F, - 0x67, 0xF9, 0x64, 0x0C, 0xA3, 0x6B, 0xF3, 0x12, - 0x21, 0x80, 0x68, 0xD6, 0xA2, 0xCA, 0xFF, 0x59, - 0x33, 0x43, 0x7D, 0x67, 0xBF, 0xD4, 0x88, 0x4A, - 0x6E, 0x92, 0xBA, 0x41, 0xE1, 0x28, 0xDA, 0xEB, - 0xE1, 0xEA, 0x25, 0x60, 0xE1, 0x2F, 0xED, 0x2C, - 0xD4, 0x4B, 0xC9, 0x4E, 0x9E, 0x9D, 0xFA, 0xBB, - 0xF9, 0x61, 0x41, 0x4C, 0x24, 0x24, 0xFC, 0x9B, - 0x62, 0xFE, 0x73, 0x74, 0xF6, 0xB8, 0x9B, 0xA9, - 0x02, 0x96, 0xF4, 0x90, 0x18, 0xA7, 0xF5, 0x49, - 0xC1, 0xA3, 0x94, 0xB8, 0xED, 0xBD, 0x0B, 0xF3, - 0xDB, 0xF3, 0xBC, 0x10, 0x6A, 0x6B, 0x3F, 0x79, - 0x07, 0xF2, 0x11, 0x09, 0xD5, 0x42, 0x8F, 0xA9, - 0x09, 0x94, 0xBE, 0xF2, 0x0D, 0x3A, 0x91, 0x33, - 0x01, 0x31, 0x34, 0xBF, 0x0A, 0xCA, 0xF1, 0x3E, - 0x66, 0x18, 0xA6, 0x69, 0xEC, 0xEA, 0xC5, 0xE9, - 0x8B, 0x80, 0xFE, 0x4D, 0x93, 0x7B, 0xD4, 0xE5, - 0x74, 0x90, 0xFA, 0xFD, 0xCE, 0x45, 0xE8, 0xD7, - 0xD8, 0x8F, 0x08, 0x8B, 0x3A, 0xA8, 0x01, 0xA2, - 0xB4, 0xE5, 0xF2, 0x29, 0x41, 0x02, 0xBD, 0xCB, - 0xF9, 0x4A, 0x62, 0x54, 0x99, 0x94, 0x61, 0xB7, - 0x8F, 0xA5, 0x8A, 0x7F, 0xDC, 0xAD, 0xD2, 0xF2, - 0x28, 0x1E, 0xF3, 0x18, 0xAE, 0x21, 0x81, 0xF7, - 0xE9, 0xE5, 0xBF, 0x2B, 0xC2, 0x98, 0x24, 0xB1, - 0x45, 0x56, 0x57, 0x31, 0xA1, 0x48, 0xAB, 0x39, - 0xC2, 0x04, 0x29, 0x1B, 0x5B, 0xD3, 0x23, 0x35, - 0xCC, 0x5A, 0x58, 0x10, 0x11, 0x5B, 0xD5, 0x88, - 0xC2, 0x60, 0x37, 0x3D, 0x1C, 0x1C, 0x7B, 0x09, - 0x95, 0xB5, 0x05, 0x12, 0xD8, 0x52, 0x8D, 0xF5, - 0xBD, 0x4A, 0xA5, 0x45, 0x6F, 0x3D, 0x55, 0x9D, - 0x90, 0xAD, 0xD7, 0xA9, 0xD0, 0x25, 0x0B, 0xD7, - 0x55, 0x11, 0x5C, 0x60, 0xBF, 0xBD, 0xFB, 0x9D, - 0x2A, 0xCE, 0x4F, 0xE6, 0xB8, 0x36, 0x3A, 0x4D, - 0xE7, 0xB6, 0xFF, 0x6B, 0xD8, 0xBA, 0xD4, 0xEE, - 0x95, 0x9A, 0x0A, 0x47, 0xD4, 0x76, 0xE0, 0xF7, - 0xAC, 0x02, 0xB6, 0xA8, 0x10, 0x1E, 0xA5, 0x98, - 0xC0, 0xF4, 0x68, 0x5E, 0x55, 0xC1, 0x67, 0xCD, - 0x16, 0x31, 0xBD, 0xA2, 0x86, 0xF3, 0xF8, 0xC0, - 0xED, 0x4A, 0xFF, 0xE8, 0xF5, 0x2C, 0xFA, 0xD2, - 0x06, 0x78, 0x6D, 0x34, 0xBE, 0xF9, 0x15, 0x84, - 0x6D, 0xE5, 0x5F, 0xA4, 0xAC, 0x84, 0x3B, 0x3A, - 0xA6, 0x2D, 0xC2, 0x01, 0xE0, 0x63, 0x92, 0xC7, - 0x77, 0xB5, 0x4E, 0x2C, 0x40, 0x90, 0x48, 0xAF, - 0x8B, 0xE9, 0x6C, 0x1E, 0xEE, 0x16, 0x8F, 0x4E, - 0x4F, 0xFF, 0x35, 0x15, 0xE5, 0x51, 0xF4, 0xB2, - 0x23, 0x1C, 0x6A, 0xCE, 0x05, 0xDC, 0xDC, 0xAD, - 0x7F, 0x9D, 0xDA, 0xB3, 0x0C, 0xAD, 0x9C, 0x62, - 0x68, 0xD6, 0x84, 0x00, 0x76, 0xFF, 0xD3, 0x01, - 0x18, 0xB0, 0xC4, 0xE5, 0xE5, 0x0D, 0x87, 0x8E, - 0xAF, 0x77, 0xEE, 0xCB, 0x56, 0x88, 0x7F, 0xED, - 0xC5, 0x7C, 0x54, 0xD6, 0x28, 0x46, 0xE0, 0x8C, - 0xE6, 0x87, 0xF2, 0x4D, 0x0D, 0x2F, 0x12, 0x62, - 0x06, 0xDF, 0xB2, 0x4E, 0x03, 0x04, 0x78, 0x0B, - 0x03, 0x4C, 0xCE, 0x86, 0xD1, 0xCD, 0x53, 0x00, - 0xED, 0xC6, 0xF8, 0x9A, 0xCB, 0x59, 0x14, 0xA6, - 0x0C, 0x87, 0x35, 0x92, 0x66, 0x0D, 0x02, 0xA9, - 0xEF, 0x0D, 0x7D, 0xC6, 0x45, 0xF3, 0x11, 0xEF, - 0x1F, 0x55, 0x72, 0x1F, 0x1B, 0x45, 0xD2, 0xE4, - 0x8F, 0x3F, 0x9F, 0xEB, 0x27, 0x02, 0xD8, 0x2C, - 0xEF, 0xAD, 0x7E, 0x7E, 0x10, 0xDD, 0x91, 0x5E, - 0x39, 0x06, 0x7C, 0x39, 0xEA, 0x61, 0xB9, 0xCC, - 0xF1, 0x45, 0x56, 0x81, 0x53, 0x55, 0x42, 0xD4, - 0x37, 0x0F, 0x53, 0xF0, 0x7F, 0xA0, 0xC6, 0x50, - 0x9B, 0x1D, 0xC6, 0x7E, 0x9F, 0x1D, 0x89, 0x3B, - 0xEB, 0x85, 0x59, 0x6D, 0x9C, 0x12, 0xEE, 0xAC, - 0xFC, 0xAE, 0xC0, 0xAE, 0x5F, 0xD4, 0x9C, 0x62, - 0xE7, 0x09, 0x8C, 0xFA, 0x80, 0x1A, 0x19, 0x09, - 0x0F, 0x8D, 0x68, 0x9E, 0x45, 0x33, 0xE2, 0x58, - 0x7B, 0xEF, 0xC7, 0x6A, 0xDC, 0x38, 0x33, 0x3E, - 0x5C, 0x53, 0xB5, 0x99, 0xDB, 0x04, 0xA7, 0xEA, - 0xFB, 0x07, 0x9B, 0x25, 0x47, 0xED, 0xAC, 0x5A, - 0xAA, 0x1E, 0xE5, 0x23, 0xDE, 0x64, 0xE5, 0x87, - 0x46, 0x8C, 0x41, 0x52, 0xC9, 0x4F, 0x90, 0x48, - 0x1C, 0xAA, 0xA6, 0xB0, 0x3A, 0x1E, 0xC9, 0x08, - 0xF7, 0x82, 0x71, 0x13, 0x76, 0x6B, 0x9E, 0x52, - 0x22, 0x32, 0xE0, 0xC6, 0xF7, 0xD7, 0x4C, 0xBD, - 0xC3, 0x1C, 0x18, 0xAF, 0xA0, 0x12, 0xD3, 0x22, - 0x6A, 0xFC, 0x71, 0x8A, 0x64, 0x24, 0xAC, 0x19, - 0x4E, 0x85, 0x3C, 0x51, 0xE6, 0xA3, 0xAD, 0xA9, - 0x59, 0x94, 0xD2, 0x7F, 0xC4, 0x9D, 0x93, 0x5B, - 0x51, 0xD7, 0xF3, 0x03, 0xE7, 0x7D, 0x5B, 0x13, - 0x0E, 0xCD, 0x7D, 0x0F, 0x77, 0x3E, 0x84, 0xD7, - 0x4E, 0x69, 0x57, 0x1B, 0x73, 0x99, 0xC9, 0x4D, - 0xC0, 0x19, 0x6B, 0x9D, 0x5F, 0xBA, 0x69, 0xEE, - 0x11, 0xBD, 0x7C, 0x45, 0xD9, 0xA9, 0x65, 0x88, - 0xA7, 0x0E, 0x16, 0xBF, 0xB3, 0x82, 0x5E, 0x5E, - 0x56, 0x13, 0x02, 0x7D, 0xB1, 0xDC, 0xF5, 0x4A, - 0x82, 0x73, 0x72, 0x35, 0x9B, 0x91, 0xAC, 0x04, - 0x69, 0xE9, 0xEA, 0x19, 0xC9, 0xD8, 0x59, 0xEB, - 0x8F, 0x22, 0x5F, 0x43, 0x11, 0x0C, 0xCF, 0xB4, - 0x16, 0x6C, 0x7D, 0x60, 0xCE, 0x14, 0x24, 0xAD, - 0xD7, 0x07, 0xC2, 0x4E, 0x98, 0xA0, 0xDE, 0x9E, - 0xE6, 0x31, 0xED, 0xF8, 0x5B, 0x9C, 0xAF, 0xF7, - 0x57, 0x59, 0x10, 0xA9, 0x92, 0xDC, 0x4F, 0x0C, - 0x2B, 0x88, 0x75, 0x19, 0x1D, 0xB3, 0xBF, 0x70, - 0x23, 0x17, 0xD5, 0x1A, 0x50, 0x30, 0x18, 0x14, - 0x1A, 0x14, 0xE6, 0x1D, 0x4F, 0x8A, 0x96, 0x3E, - 0xD8, 0x6E, 0xD9, 0xBF, 0x94, 0x4E, 0xDE, 0xB8, - 0xFF, 0xE1, 0x6F, 0xFD, 0x31, 0xE8, 0xFE, 0x43, - 0xC2, 0x40, 0x82, 0x45, 0x50, 0xFE, 0x1B, 0xBC, - 0x77, 0x4B, 0xB4, 0x30, 0xA7, 0xD4, 0x46, 0x32, - 0x6A, 0xF7, 0xC5, 0x92, 0xDA, 0x70, 0xB1, 0xB7, - 0xA1, 0x5A, 0x5D, 0x17, 0x3B, 0xDB, 0x2F, 0x28, - 0x8A, 0x6E, 0xEC, 0xDA, 0xC4, 0xF7, 0x2E, 0xCB, - 0xEB, 0x96, 0x60, 0x92, 0x1B, 0xDD, 0xD6, 0x13, - 0x7C, 0x85, 0x9F, 0x8A, 0x9A, 0xE9, 0x5F, 0xC4, - 0x24, 0xFD, 0x33, 0xDF, 0xB3, 0x98, 0x66, 0xF7, - 0xA1, 0x5A, 0xDC, 0x01, 0xC9, 0xFA, 0x37, 0xF1, - 0x7B, 0xD0, 0xF6, 0x66, 0x8A, 0x26, 0x7C, 0xC2, - 0x1B, 0xFF, 0x62, 0xBC, 0xFD, 0xCD, 0x47, 0xDA, - 0xEE, 0x75, 0xF2, 0xAC, 0x60, 0x69, 0x87, 0x26, - 0xCC, 0x92, 0x10, 0x1C, 0x92, 0xC1, 0x43, 0x09, - 0xE9, 0xCE, 0x7D, 0x05, 0x5C, 0x64, 0x55, 0xCB, - 0xBB, 0x7A, 0xAE, 0x05, 0xDB, 0x38, 0xD3, 0xD5, - 0xBB, 0xD9, 0x9F, 0xCB, 0xCF, 0xB7, 0x9C, 0xEF, - 0x7E, 0x7B, 0x2A, 0x6F, 0x84, 0x4E, 0x6A, 0x7F, - 0xD3, 0x5F, 0xF3, 0xB3, 0xC1, 0xF0, 0x02, 0x9C, - 0xA2, 0x4C, 0x86, 0x0E, 0x6B, 0xE2, 0x2B, 0x1D, - 0x1D, 0xB4, 0x55, 0x7F, 0x85, 0x54, 0x2D, 0x85, - 0x64, 0x89, 0x92, 0x19, 0x65, 0x44, 0xD7, 0x95, - 0x48, 0x2C, 0x46, 0x8D, 0x0E, 0xBA, 0xFB, 0x13, - 0x63, 0x52, 0x2E, 0x22, 0x19, 0x3F, 0x7F, 0xFB, - 0x54, 0x4D, 0x73, 0xA1, 0x3C, 0x22, 0xD6, 0x5D, - 0x2B, 0x4A, 0xBD, 0xD7, 0xBB, 0x72, 0x55, 0x80, - 0xD4, 0x57, 0x4E, 0xDC, 0xF2, 0x8B, 0xB3, 0x09, - 0x6A, 0xF9, 0x1A, 0xD3, 0x41, 0x0E, 0x72, 0x95, - 0x49, 0xE7, 0xD1, 0xDC, 0x05, 0x22, 0xC3, 0x3E, - 0x26, 0x95, 0x00, 0x01, 0x8C, 0xE1, 0x54, 0x47, - 0x84, 0x10, 0xA7, 0x67, 0x45, 0xBB, 0xB9, 0x7B, - 0x0B, 0xB4, 0x74, 0x82, 0xED, 0x6C, 0x26, 0x6E, - 0xF2, 0x56, 0xCA, 0x1A, 0xD1, 0x10, 0x68, 0x40, - 0x28, 0x23, 0xD5, 0x98, 0xB3, 0x6B, 0x75, 0x16, - 0x13, 0x87, 0xE1, 0xF2, 0x3F, 0xAB, 0xC0, 0x2A, - 0xF0, 0x16, 0x59, 0x85, 0x1A, 0x5B, 0x41, 0xB7, - 0x52, 0xB1, 0x79, 0x46, 0x20, 0xDF, 0x59, 0xFB, - 0x33, 0xB3, 0x05, 0xF1, 0x12, 0x8B, 0xDB, 0x7C, - 0x51, 0x90, 0xC9, 0x8A, 0xC9, 0x48, 0x10, 0x54, - 0xF4, 0x0F, 0x88, 0x1D, 0xDB, 0x40, 0x1B, 0x3A, - 0xD7, 0x62, 0xD1, 0x75, 0x73, 0xD6, 0xCA, 0x23, - 0x26, 0xB2, 0xBF, 0x4C, 0xCA, 0x22, 0xDD, 0xF6, - 0xAF, 0x22, 0xB8, 0x4F, 0xC2, 0xC3, 0xB3, 0xD3, - 0xED, 0xFA, 0xBA, 0x2E, 0x38, 0x28, 0x6A, 0xAE, - 0x60, 0xE9, 0x2D, 0x11, 0x33, 0xED, 0x7E, 0xE9, - 0x29, 0x8E, 0x01, 0xB0, 0x0F, 0x13, 0x83, 0x44, - 0x17, 0xFA, 0xB6, 0x54, 0x7C, 0xAC, 0x1F, 0xED, - 0xC9, 0x22, 0xF2, 0x4F, 0x69, 0x24, 0x04, 0xFE, - 0xC2, 0x6A, 0xEB, 0xB0, 0xE4, 0xF5, 0x03, 0xCB, - 0xB3, 0x99, 0x50, 0x66, 0x1F, 0x6B, 0xF3, 0xFE, - 0xB7, 0xBF, 0x8D, 0xBA, 0x59, 0x75, 0x75, 0x51, - 0xB0, 0xA5, 0xB9, 0x66, 0xC8, 0xDD, 0x35, 0xAE, - 0x20, 0x66, 0x21, 0x9B, 0x04, 0x3F, 0xC6, 0x90, - 0x6F, 0x2B, 0x5C, 0x78, 0x49, 0x3C, 0x40, 0xE6, - 0xF9, 0x6B, 0x1A, 0xEF, 0xCE, 0x5A, 0xC1, 0x68, - 0xD3, 0x34, 0x05, 0xD0, 0x21, 0x6C, 0xF8, 0xA8, - 0x55, 0xE4, 0x6E, 0x80, 0x9B, 0xAD, 0xA5, 0xC3, - 0x55, 0x0B, 0x28, 0xBB, 0x54, 0x02, 0xD4, 0xF6, - 0x82, 0x73, 0xAB, 0x56, 0x0B, 0xB1, 0x5F, 0x94, - 0xC3, 0xDA, 0x24, 0x1E, 0x7F, 0x62, 0x6B, 0x98, - 0x6B, 0x2A, 0xF3, 0x92, 0x37, 0x3A, 0xB9, 0xE6, - 0x27, 0xC4, 0xBB, 0xAB, 0xE4, 0x9A, 0x60, 0xD2, - 0xAE, 0xCE, 0xFD, 0x44, 0xEB, 0x1C, 0xCF, 0x74, - 0x54, 0xFC, 0xEC, 0x4F, 0xC2, 0xBA, 0xF4, 0x3B, - 0xAC, 0x03, 0xC7, 0x2E, 0xE6, 0x62, 0x44, 0x61, - 0x42, 0xC8, 0xAE, 0xF1, 0xB2, 0xA9, 0xAC, 0xE0, - 0xCE, 0x23, 0xAF, 0xCC, 0x86, 0x61, 0xFE, 0xC5, - 0xCB, 0xAC, 0x4A, 0x1B, 0x5C, 0xC7, 0x2B, 0xFF, - 0x8A, 0x20, 0x62, 0x0E, 0xB9, 0x1D, 0xDD, 0x93, - 0x19, 0x29, 0xE4, 0xD9, 0x13, 0x1D, 0x28, 0x32, - 0x03, 0x5A, 0xA6, 0x8E, 0x20, 0xC7, 0xD6, 0xC6, - 0x4D, 0x19, 0x17, 0xCC, 0x65, 0xB8, 0x84, 0x0C, - 0x38, 0xB4, 0xA9, 0x45, 0x2B, 0x91, 0x61, 0x79, - 0x87, 0x08, 0xA6, 0xBD, 0x28, 0x9A, 0x58, 0x48, - 0xD5, 0x58, 0xC6, 0xCE, 0xC2, 0xC5, 0x72, 0x16, - 0xD9, 0xF4, 0xED, 0x66, 0xAC, 0xFA, 0x93, 0xE8, - 0x26, 0x10, 0x3B, 0x3D, 0x8F, 0xEA, 0x51, 0xCC, - 0x82, 0xC0, 0xDB, 0xDF, 0xA7, 0x13, 0xFB, 0x1B, - 0x77, 0x7E, 0x6F, 0x9E, 0x3C, 0xC5, 0x86, 0x35, - 0x92, 0x5B, 0x6F, 0x76, 0xA1, 0x71, 0x0D, 0x8C, - 0xDC, 0x95, 0x9F, 0xAC, 0x2C, 0x8E, 0x21, 0x01, - 0x37, 0x06, 0x28, 0x64, 0x4C, 0x23, 0xE2, 0x75, - 0x0B, 0xA7, 0xA4, 0xF5, 0x90, 0x87, 0xD2, 0x43, - 0x71, 0x59, 0x7C, 0x8C, 0xCA, 0x77, 0x3B, 0xC5, - 0x36, 0x46, 0xF7, 0x2F, 0xD3, 0x47, 0x18, 0xD7, - 0xC9, 0x4E, 0x56, 0x2D, 0x49, 0x82, 0xAC, 0x7D, - 0xD7, 0x3D, 0xF1, 0xDD, 0x73, 0x8B, 0xE4, 0xA1, - 0x10, 0x85, 0xB6, 0x94, 0xBE, 0x6A, 0x5E, 0xEE, - 0xBD, 0x60, 0xEB, 0x95, 0x76, 0xA8, 0x52, 0xE1, - 0x47, 0x57, 0xA1, 0x9C, 0xEC, 0x44, 0xE5, 0x6F, - 0x68, 0x34, 0x7E, 0x19, 0xBE, 0xCE, 0x56, 0xC9, - 0xBE, 0xCE, 0xFC, 0xB8, 0x32, 0x6D, 0xCB, 0x84, - 0x59, 0xBF, 0x4D, 0xF6, 0xE1, 0x53, 0x41, 0x61, - 0x5C, 0xFB, 0xD2, 0x48, 0xA6, 0x7F, 0x05, 0xB2, - 0xFC, 0xE8, 0xB2, 0x8A, 0x55, 0x7D, 0x19, 0xC0, - 0x69, 0x3B, 0x91, 0x5D, 0x71, 0xE7, 0xBB, 0x72, - 0x7D, 0xB9, 0x64, 0x6E, 0x8B, 0x5B, 0x70, 0x51, - 0xB5, 0x69, 0x8C, 0xC0, 0xFC, 0x95, 0xB2, 0x43, - 0x08, 0xF8, 0x70, 0xE4, 0x6F, 0x87, 0xA7, 0xDF, - 0x23, 0x84, 0xEE, 0xCF, 0x73, 0x38, 0xDE, 0x99, - 0x4C, 0xF8, 0xF1, 0x2D, 0xA2, 0x68, 0x99, 0xE3, - 0x9B, 0xB8, 0xF6, 0xC1, 0x5C, 0x83, 0x07, 0xE9, - 0xB9, 0xE2, 0x51, 0x62, 0xC8, 0x53, 0xF1, 0xC2, - 0xF7, 0x57, 0x8A, 0xA0, 0x42, 0x3C, 0x18, 0x36, - 0xF3, 0x99, 0xFD, 0x34, 0xB2, 0xF0, 0x1D, 0xBA, - 0x43, 0xEA, 0x72, 0x1C, 0x0B, 0x37, 0x47, 0xBC, - 0xAF, 0xDA, 0x22, 0x1F, 0x1C, 0x08, 0x16, 0x13, - 0xBD, 0xAA, 0x07, 0xFD, 0x7E, 0xCA, 0x70, 0x57, - 0x74, 0xDF, 0x68, 0x6B, 0x9F, 0x2D, 0x56, 0xBD, - 0x21, 0x89, 0xFA, 0x09, 0x04, 0xCA, 0x09, 0xBD, - 0x4F, 0xE6, 0x15, 0xF5, 0x89, 0xAB, 0xAC, 0xB2, - 0xC9, 0xBF, 0xC8, 0xBB, 0x87, 0x83, 0xB4, 0xD3, - 0xDC, 0xB1, 0x25, 0x9B, 0xAE, 0xC5, 0x75, 0x0C, - 0x9E, 0x6A, 0x83, 0x41, 0x85, 0x9D, 0x4B, 0xBF, - 0x62, 0x0C, 0x7D, 0x77, 0xC9, 0x89, 0xA6, 0xE1, - 0x28, 0xBD, 0x13, 0x5D, 0x41, 0x26, 0x80, 0x75, - 0x23, 0x57, 0xE7, 0x4F, 0x4D, 0x02, 0x8E, 0x0F, - 0x43, 0x67, 0xF6, 0xA6, 0xE6, 0xB6, 0x84, 0x8D, - 0xF5, 0x7B, 0x6A, 0x95, 0x73, 0x27, 0x86, 0x02, - 0x72, 0xCB, 0xDF, 0x77, 0x1C, 0x6C, 0x5E, 0xD3, - 0xF0, 0x1C, 0x82, 0x7A, 0x0D, 0xBB, 0x70, 0xA3, - 0x98, 0x8B, 0x7B, 0x4A, 0xFE, 0x2D, 0xB1, 0x5C, - 0x61, 0x89, 0x34, 0x4C, 0x81, 0x4B, 0x52, 0x17, - 0x03, 0x81, 0x54, 0x4F, 0x9E, 0x9E, 0x07, 0x16, - 0xF3, 0xD9, 0x18, 0x01, 0x11, 0xFD, 0x67, 0x18, - 0xA2, 0x64, 0x35, 0x42, 0x81, 0x80, 0x4A, 0xBA, - 0xCB, 0xD5, 0xF5, 0x4A, 0x10, 0x7F, 0xE2, 0xCF, - 0xA5, 0x1E, 0xCB, 0x0C, 0xAB, 0x3E, 0x03, 0x98, - 0x73, 0x89, 0xA4, 0x10, 0x75, 0xD5, 0xAC, 0x3D, - 0xCF, 0x56, 0x75, 0xD8, 0x86, 0xC2, 0x21, 0x42, - 0x99, 0x8D, 0x1B, 0x49, 0x09, 0xFE, 0x86, 0x41, - 0xC9, 0xDC, 0x87, 0x8D, 0x5A, 0xF0, 0xF5, 0xBE, - 0xF5, 0x49, 0x64, 0x5A, 0x7A, 0xC3, 0x5D, 0xE4, - 0xD6, 0xB7, 0x30, 0x92, 0x2A, 0x15, 0x86, 0x02, - 0xBE, 0xBA, 0x6E, 0xF6, 0x3D, 0x2D, 0x70, 0x89, - 0xFB, 0xB5, 0x1E, 0xBA, 0xDA, 0x20, 0x12, 0x49, - 0x22, 0xA0, 0xD8, 0x33, 0x9E, 0x4C, 0xC0, 0x27, - 0x0F, 0x9C, 0x1F, 0xD2, 0xA9, 0xF4, 0xD2, 0xA9, - 0x6D, 0xC5, 0x32, 0x16, 0x35, 0x9F, 0x19, 0x88, - 0xC1, 0xAA, 0xA4, 0x66, 0x33, 0xE6, 0x2C, 0x6A, - 0x6E, 0xA2, 0x1B, 0x33, 0xCB, 0xC3, 0x7E, 0xC5, - 0x31, 0x4D, 0x5C, 0x17, 0x4C, 0x33, 0x7F, 0x09, - 0x01, 0x33, 0x82, 0x84, 0x37, 0x03, 0xEB, 0x0E, - 0xB1, 0x5F, 0x1B, 0x60, 0x8A, 0x2C, 0x9F, 0x39 - }; - static const byte sk_87_draft[] = { - 0x8C, 0x52, 0x4B, 0xD9, 0xAC, 0x48, 0x5C, 0xC6, - 0x9A, 0xA0, 0x75, 0x64, 0xE1, 0x4F, 0x0F, 0x60, - 0x13, 0x0E, 0xDE, 0x34, 0x08, 0xA5, 0xD4, 0x81, - 0xFD, 0x76, 0xC2, 0x51, 0x74, 0x75, 0xA8, 0xFB, - 0x9A, 0xFE, 0xF5, 0x92, 0x58, 0xBB, 0x3C, 0xEB, - 0x4C, 0x5E, 0x83, 0xF9, 0xFF, 0xBC, 0x3B, 0x49, - 0xAE, 0xE1, 0xFC, 0x4B, 0x94, 0x4B, 0x8C, 0x75, - 0xD4, 0x67, 0x75, 0x66, 0x7D, 0x6B, 0xA4, 0xF2, - 0xDA, 0xC2, 0xB7, 0xC4, 0xD8, 0x50, 0x25, 0xCB, - 0x5A, 0xDB, 0xA4, 0xAD, 0xBB, 0x44, 0x20, 0x24, - 0x90, 0xEA, 0xA5, 0x2C, 0xAE, 0x80, 0x22, 0xC9, - 0x59, 0x02, 0xB7, 0x10, 0xB0, 0x5E, 0x1E, 0x5F, - 0x52, 0x7D, 0x88, 0xDA, 0xE2, 0x04, 0xBF, 0x45, - 0xA7, 0xA8, 0x49, 0x97, 0x7D, 0xAD, 0x7C, 0x7C, - 0x9E, 0x9C, 0x4A, 0xCC, 0x36, 0x33, 0x0F, 0x30, - 0xFA, 0xDE, 0x52, 0xE9, 0xAE, 0x23, 0x29, 0x13, - 0x10, 0x17, 0x8A, 0xD0, 0x08, 0x8E, 0xE1, 0x10, - 0x30, 0xD0, 0x84, 0x65, 0x92, 0x12, 0x2A, 0x81, - 0x26, 0x2E, 0x11, 0x14, 0x30, 0x61, 0x38, 0x61, - 0x64, 0x42, 0x05, 0x08, 0x91, 0x90, 0x4C, 0x06, - 0x82, 0xCC, 0x90, 0x45, 0x10, 0x39, 0x90, 0x22, - 0x40, 0x2A, 0x9B, 0x16, 0x26, 0x9A, 0xA8, 0x50, - 0x91, 0x12, 0x70, 0x91, 0x20, 0x4D, 0xC0, 0x34, - 0x90, 0x18, 0x28, 0x31, 0x10, 0x02, 0x11, 0x22, - 0xB3, 0x6C, 0x8B, 0xB8, 0x2C, 0x22, 0xB0, 0x69, - 0x53, 0x36, 0x31, 0x61, 0x42, 0x6C, 0xD9, 0x06, - 0x6A, 0xD9, 0x04, 0x45, 0xDB, 0x18, 0x05, 0x12, - 0x37, 0x4A, 0xD4, 0x06, 0x64, 0xD3, 0xA2, 0x85, - 0xA0, 0x38, 0x8A, 0x14, 0xA5, 0x85, 0x50, 0x20, - 0x85, 0xE4, 0xA8, 0x24, 0xC3, 0xC6, 0x31, 0xC9, - 0x34, 0x4E, 0xD2, 0x14, 0x68, 0x82, 0x90, 0x85, - 0xC4, 0x02, 0x61, 0x24, 0x38, 0x05, 0x01, 0xA3, - 0x50, 0x48, 0x08, 0x62, 0x20, 0xB0, 0x25, 0x5B, - 0xA6, 0x4D, 0x98, 0x92, 0x11, 0xC2, 0x06, 0x00, - 0xD1, 0xB0, 0x4D, 0x21, 0xA4, 0x8C, 0x01, 0x16, - 0x72, 0x11, 0xA6, 0x20, 0xD0, 0x16, 0x45, 0x10, - 0x31, 0x8E, 0xCB, 0xC2, 0x69, 0x02, 0x08, 0x91, - 0xD4, 0x30, 0x89, 0x03, 0x41, 0x05, 0x93, 0x16, - 0x8E, 0x5A, 0x18, 0x04, 0x41, 0x10, 0x6D, 0x18, - 0x42, 0x70, 0x53, 0x16, 0x31, 0x52, 0x30, 0x8E, - 0x0C, 0x49, 0x66, 0x0C, 0x90, 0x0C, 0xA4, 0x08, - 0x2E, 0x41, 0x92, 0x05, 0x24, 0x07, 0x30, 0x12, - 0x46, 0x72, 0x13, 0x99, 0x20, 0xE0, 0xA2, 0x4C, - 0x1B, 0x14, 0x52, 0x5A, 0x90, 0x05, 0x08, 0x82, - 0x31, 0x53, 0xC2, 0x90, 0xCC, 0x42, 0x68, 0x18, - 0xB0, 0x2C, 0x00, 0x80, 0x65, 0x58, 0x12, 0x84, - 0x19, 0x90, 0x08, 0x44, 0x26, 0x4A, 0x10, 0xA9, - 0x0C, 0x12, 0x25, 0x0C, 0x9C, 0x10, 0x25, 0x0C, - 0x28, 0x25, 0xD8, 0x46, 0x84, 0x1A, 0x22, 0x71, - 0x5B, 0x28, 0x6E, 0x98, 0x02, 0x51, 0x61, 0xB4, - 0x51, 0x01, 0xA1, 0x21, 0x24, 0x39, 0x12, 0xC8, - 0x08, 0x85, 0xD1, 0x34, 0x64, 0xA4, 0xA8, 0x04, - 0xA2, 0xC0, 0x09, 0x44, 0x48, 0x48, 0x03, 0x37, - 0x00, 0x20, 0x05, 0x4D, 0x20, 0xA4, 0x05, 0x11, - 0x18, 0x82, 0x42, 0x94, 0x4D, 0x24, 0x16, 0x01, - 0x02, 0x93, 0x4C, 0x00, 0x16, 0x06, 0xC1, 0xC0, - 0x0C, 0x8B, 0xC0, 0x41, 0x41, 0x06, 0x42, 0xA3, - 0xC6, 0x64, 0x1A, 0x85, 0x91, 0x41, 0x06, 0x49, - 0x04, 0xA7, 0x44, 0x82, 0x22, 0x6A, 0x50, 0x08, - 0x0E, 0x14, 0x18, 0x20, 0x4B, 0x88, 0x91, 0x01, - 0xA0, 0x49, 0x1A, 0x85, 0x4D, 0x94, 0x18, 0x10, - 0x0A, 0x05, 0x44, 0x94, 0x38, 0x05, 0x93, 0x40, - 0x68, 0x23, 0x07, 0x85, 0xE2, 0x12, 0x22, 0x9B, - 0xB8, 0x08, 0xD2, 0x10, 0x2A, 0x08, 0xA8, 0x10, - 0x92, 0x40, 0x2D, 0xD8, 0x44, 0x4C, 0xCC, 0x94, - 0x05, 0x24, 0x43, 0x4C, 0xD3, 0xC2, 0x48, 0x10, - 0x21, 0x2D, 0xC9, 0xB6, 0x08, 0xC9, 0x06, 0x4D, - 0xE1, 0x90, 0x20, 0x14, 0x24, 0x70, 0x5C, 0x84, - 0x28, 0xC0, 0xC2, 0x81, 0x22, 0x13, 0x50, 0x44, - 0x84, 0x91, 0xCA, 0xA2, 0x48, 0x12, 0x91, 0x05, - 0x5B, 0x92, 0x8D, 0x92, 0x92, 0x24, 0x82, 0x42, - 0x48, 0x03, 0x37, 0x46, 0xD8, 0x44, 0x86, 0x44, - 0x20, 0x89, 0xE4, 0xC2, 0x84, 0xC2, 0x04, 0x65, - 0x49, 0xA8, 0x4D, 0xA4, 0x38, 0x28, 0xDB, 0xA4, - 0x64, 0x24, 0x00, 0x51, 0xC8, 0x12, 0x6D, 0x19, - 0x82, 0x24, 0xCB, 0x00, 0x44, 0x4B, 0x20, 0x20, - 0x9B, 0x82, 0x4C, 0x5C, 0xA8, 0x08, 0xD2, 0xB6, - 0x8C, 0x08, 0x35, 0x20, 0xC0, 0x92, 0x45, 0xE3, - 0xB4, 0x2C, 0x50, 0x32, 0x0E, 0xD1, 0x82, 0x11, - 0x4A, 0x96, 0x08, 0x1C, 0x86, 0x29, 0x02, 0x19, - 0x71, 0x12, 0x03, 0x6E, 0x94, 0x08, 0x50, 0x12, - 0x27, 0x20, 0x0B, 0x10, 0x12, 0xA1, 0x18, 0x06, - 0x5A, 0x36, 0x4C, 0x93, 0xB4, 0x68, 0x21, 0xA7, - 0x28, 0x09, 0x34, 0x91, 0x18, 0x93, 0x49, 0x4A, - 0x32, 0x60, 0x00, 0x29, 0x2D, 0x94, 0x48, 0x44, - 0x09, 0x94, 0x2C, 0x21, 0x07, 0x6C, 0x41, 0x38, - 0x60, 0x8C, 0x10, 0x46, 0x11, 0x19, 0x65, 0x01, - 0x46, 0x60, 0x1A, 0x29, 0x42, 0x23, 0x30, 0x29, - 0x40, 0x96, 0x85, 0x81, 0xC6, 0x6C, 0x09, 0xA2, - 0x31, 0x23, 0xC9, 0x84, 0x18, 0x27, 0x61, 0x02, - 0xA6, 0x05, 0x1B, 0x11, 0x32, 0xD1, 0x80, 0x24, - 0x59, 0x22, 0x52, 0x21, 0x34, 0x64, 0x0A, 0x21, - 0x52, 0x10, 0xC2, 0x80, 0x5C, 0x98, 0x0D, 0x81, - 0xA0, 0x84, 0x14, 0x97, 0x04, 0xCC, 0xC2, 0x04, - 0x1A, 0x81, 0x45, 0x23, 0x44, 0x6C, 0x13, 0xC0, - 0x44, 0x59, 0xC2, 0x68, 0x64, 0x08, 0x52, 0x51, - 0x30, 0x71, 0x12, 0x49, 0x70, 0x12, 0x94, 0x84, - 0x80, 0x12, 0x12, 0x1B, 0x00, 0x50, 0x84, 0x10, - 0x45, 0x4A, 0x30, 0x10, 0x22, 0x95, 0x49, 0xC9, - 0x82, 0x24, 0x03, 0x35, 0x21, 0x18, 0x16, 0x72, - 0x09, 0x89, 0x65, 0x88, 0xB2, 0x89, 0x41, 0xB4, - 0x90, 0x92, 0x38, 0x8C, 0x08, 0x23, 0x26, 0x0B, - 0x80, 0x61, 0x84, 0x28, 0x6A, 0x4C, 0x98, 0x44, - 0x10, 0xB9, 0x30, 0x93, 0x02, 0x49, 0x22, 0x13, - 0x80, 0x1C, 0xC3, 0x48, 0x50, 0xA8, 0x20, 0x1C, - 0x05, 0x00, 0x5B, 0x02, 0x41, 0xD2, 0x84, 0x61, - 0x4B, 0x40, 0x46, 0x20, 0x21, 0x44, 0xD9, 0xC4, - 0x21, 0xD3, 0xA4, 0x4D, 0xC0, 0xC0, 0x09, 0x5B, - 0x28, 0x91, 0x18, 0x15, 0x41, 0x18, 0xC5, 0x4C, - 0x14, 0xB7, 0x61, 0xDB, 0x34, 0x25, 0x02, 0x06, - 0x41, 0x14, 0xA9, 0x65, 0x0B, 0x10, 0x04, 0x23, - 0xC7, 0x49, 0x13, 0x47, 0x0A, 0xD0, 0x30, 0x80, - 0x99, 0x32, 0x68, 0x50, 0x18, 0x06, 0xA2, 0x28, - 0x65, 0x13, 0x35, 0x82, 0xD3, 0x06, 0x81, 0x22, - 0x49, 0x4D, 0x48, 0x44, 0x30, 0xCA, 0x96, 0x2C, - 0x12, 0xC8, 0x08, 0xA1, 0x24, 0x2C, 0x52, 0xA8, - 0x28, 0x23, 0x14, 0x0A, 0xD4, 0x20, 0x4D, 0x18, - 0x12, 0x72, 0xD4, 0x80, 0x44, 0xDC, 0x26, 0x2C, - 0x88, 0x10, 0x0A, 0x04, 0x14, 0x51, 0xC1, 0x96, - 0x00, 0xA3, 0x40, 0x30, 0x99, 0x48, 0x92, 0x9B, - 0x08, 0x86, 0x81, 0x04, 0x20, 0x4C, 0xB2, 0x29, - 0x18, 0x31, 0x08, 0x09, 0x23, 0x8C, 0x4C, 0x02, - 0x6A, 0xCA, 0x00, 0x62, 0x09, 0x22, 0x2D, 0x21, - 0x00, 0x02, 0x0A, 0x39, 0x41, 0x04, 0xA3, 0x50, - 0x90, 0x80, 0x2D, 0x59, 0xB4, 0x71, 0x13, 0x16, - 0x31, 0x11, 0x90, 0x4C, 0xC3, 0x14, 0x20, 0x60, - 0xB2, 0x30, 0x0A, 0xB6, 0x24, 0x21, 0xA9, 0x10, - 0x89, 0x80, 0x88, 0x44, 0x06, 0x8A, 0x91, 0x22, - 0x8E, 0xD9, 0x36, 0x86, 0x10, 0x46, 0x0A, 0xE1, - 0x16, 0x85, 0x42, 0x40, 0x6C, 0x09, 0x49, 0x11, - 0xE0, 0x88, 0x68, 0x12, 0x08, 0x68, 0x5C, 0x26, - 0x24, 0x04, 0xA8, 0x70, 0xC8, 0x08, 0x05, 0x13, - 0x87, 0x41, 0x23, 0x29, 0x72, 0xC9, 0xB8, 0x88, - 0x1B, 0x22, 0x66, 0x11, 0xA5, 0x2D, 0x11, 0x29, - 0x12, 0x50, 0x12, 0x70, 0x03, 0x09, 0x6A, 0x4B, - 0x88, 0x4C, 0xD2, 0xC8, 0x31, 0x40, 0x26, 0x40, - 0x4C, 0x04, 0x50, 0x58, 0x16, 0x71, 0x90, 0xC2, - 0x00, 0x0A, 0x30, 0x8A, 0xDC, 0x24, 0x85, 0x19, - 0xB0, 0x65, 0x1A, 0xA3, 0x64, 0x13, 0xA3, 0x45, - 0xC8, 0x48, 0x91, 0x91, 0x12, 0x20, 0xDC, 0x42, - 0x40, 0x24, 0xC0, 0x4D, 0xA3, 0x98, 0x10, 0x40, - 0x26, 0x25, 0xDC, 0xB4, 0x68, 0x4B, 0xC2, 0x45, - 0x13, 0x06, 0x91, 0xC8, 0x92, 0x24, 0x82, 0xA8, - 0x20, 0x4C, 0x30, 0x48, 0x52, 0x06, 0x01, 0x0B, - 0x24, 0x51, 0x41, 0x36, 0x40, 0x93, 0xC4, 0x70, - 0x44, 0x40, 0x2C, 0x24, 0x28, 0x22, 0x81, 0xA4, - 0x4C, 0x43, 0x84, 0x60, 0x20, 0x23, 0x90, 0x01, - 0x94, 0x6C, 0xDB, 0x28, 0x21, 0x93, 0x30, 0x80, - 0x93, 0xC0, 0x25, 0xC8, 0xA6, 0x50, 0xCA, 0x24, - 0x26, 0xD1, 0x40, 0x31, 0x04, 0xC4, 0x8D, 0xE2, - 0xC0, 0x04, 0x08, 0x33, 0x8C, 0x18, 0x87, 0x91, - 0xC8, 0xC8, 0x71, 0x40, 0x46, 0x06, 0x00, 0x44, - 0x20, 0x22, 0x49, 0x70, 0x11, 0x45, 0x90, 0x02, - 0xC3, 0x61, 0x60, 0xB4, 0x25, 0x80, 0x16, 0x21, - 0x11, 0x09, 0x04, 0x88, 0x04, 0x05, 0xCC, 0x36, - 0x20, 0x01, 0xB1, 0x2C, 0x64, 0xB6, 0x50, 0x54, - 0x32, 0x42, 0x0B, 0x08, 0x8D, 0x12, 0x39, 0x0D, - 0x10, 0x29, 0x52, 0x88, 0xB0, 0x04, 0x11, 0x38, - 0x44, 0xD2, 0xA6, 0x71, 0x0B, 0x45, 0x48, 0x9C, - 0x34, 0x72, 0xA0, 0x28, 0x49, 0x82, 0x16, 0x86, - 0x12, 0x18, 0x61, 0x04, 0x41, 0x0D, 0x8A, 0xA6, - 0x41, 0x80, 0xA8, 0x61, 0xDA, 0x30, 0x65, 0x82, - 0x84, 0x30, 0x08, 0xA3, 0x29, 0x04, 0x33, 0x8E, - 0x02, 0x24, 0x0D, 0x9C, 0x44, 0x10, 0xC9, 0x02, - 0x81, 0x53, 0x06, 0x66, 0x8B, 0x06, 0x90, 0x03, - 0x87, 0x69, 0x21, 0xC9, 0x69, 0x83, 0x46, 0x4E, - 0x14, 0x24, 0x89, 0x8C, 0xA0, 0x6C, 0x99, 0xA2, - 0x2C, 0x11, 0x37, 0x66, 0x0C, 0xA6, 0x4D, 0xD3, - 0xC8, 0x70, 0x03, 0x02, 0x61, 0xC3, 0xB6, 0x65, - 0x23, 0xC1, 0x6C, 0x10, 0x34, 0x8D, 0x1A, 0xC1, - 0x31, 0x43, 0x40, 0x44, 0xD4, 0x08, 0x02, 0x0A, - 0x36, 0x20, 0xE3, 0x26, 0x42, 0x0A, 0x48, 0x26, - 0x1A, 0x13, 0x44, 0x0C, 0x18, 0x61, 0x91, 0x96, - 0x84, 0x02, 0x17, 0x46, 0x9C, 0x20, 0x40, 0x41, - 0xC6, 0x2D, 0x1B, 0x16, 0x0C, 0x98, 0xB2, 0x90, - 0x1A, 0x20, 0x84, 0xE2, 0x34, 0x2D, 0xCB, 0x14, - 0x44, 0x93, 0xC6, 0x8D, 0x58, 0xB2, 0x69, 0x22, - 0xB2, 0x88, 0xC0, 0xB8, 0x2D, 0xA2, 0xC2, 0x31, - 0x20, 0xA3, 0x24, 0x11, 0x46, 0x48, 0x4A, 0xA6, - 0x50, 0x24, 0x09, 0x21, 0x1A, 0x01, 0x0D, 0x20, - 0x36, 0x01, 0xC4, 0x34, 0x70, 0xDA, 0x16, 0x68, - 0x84, 0x22, 0x4C, 0x11, 0x14, 0x09, 0x13, 0xC4, - 0x68, 0x11, 0x41, 0x2D, 0x1C, 0x10, 0x31, 0xDC, - 0xB2, 0x64, 0x42, 0x36, 0x08, 0x5C, 0x10, 0x88, - 0x04, 0x91, 0x25, 0xE1, 0xA0, 0x20, 0x14, 0x18, - 0x12, 0x14, 0x94, 0x91, 0x4C, 0xC2, 0x24, 0xD4, - 0x06, 0x71, 0x21, 0x02, 0x8D, 0xD4, 0x88, 0x30, - 0xC9, 0x36, 0x0E, 0xE4, 0x82, 0x81, 0xC0, 0x04, - 0x6D, 0x24, 0x23, 0x09, 0x21, 0x45, 0x45, 0x20, - 0x06, 0x65, 0xC2, 0x30, 0x2A, 0x18, 0x30, 0x8E, - 0x24, 0x83, 0x89, 0x93, 0x32, 0x66, 0xC1, 0x48, - 0x45, 0x62, 0x48, 0x0A, 0x52, 0xB8, 0x80, 0x11, - 0x86, 0x21, 0x04, 0x34, 0x11, 0x24, 0xB5, 0x6C, - 0x50, 0x36, 0x0A, 0x19, 0xA7, 0x8C, 0x14, 0x90, - 0x0D, 0x1A, 0xA5, 0x68, 0x0B, 0xB1, 0x11, 0x50, - 0x40, 0x08, 0x48, 0xB6, 0x31, 0x14, 0x28, 0x8D, - 0xE3, 0x47, 0xB4, 0xA1, 0x44, 0x94, 0xCC, 0x9F, - 0x0B, 0x94, 0x9F, 0x25, 0x49, 0xD9, 0xB3, 0x8F, - 0x71, 0xF4, 0x17, 0xA4, 0xA6, 0xAC, 0x24, 0x58, - 0x14, 0x25, 0x03, 0xC8, 0x63, 0x3E, 0x10, 0xA8, - 0xD4, 0x10, 0xD7, 0x90, 0x4A, 0x28, 0x37, 0x90, - 0x70, 0x27, 0xE3, 0x56, 0x5F, 0x04, 0x67, 0x76, - 0xC3, 0x67, 0x3F, 0xF5, 0xA5, 0x11, 0xA2, 0x2C, - 0x11, 0x01, 0x5D, 0x63, 0x71, 0x1A, 0xE6, 0x70, - 0x86, 0x46, 0xAB, 0xCE, 0x03, 0xB6, 0x82, 0xAF, - 0x51, 0xBA, 0x81, 0x94, 0x9C, 0x82, 0x36, 0xA9, - 0x49, 0xA5, 0xA3, 0x11, 0x08, 0x8C, 0x4B, 0x13, - 0x41, 0xF0, 0x08, 0xFD, 0xB2, 0x99, 0xED, 0xA8, - 0x07, 0x61, 0x3C, 0x2E, 0xBC, 0x49, 0x7B, 0x1C, - 0xBC, 0x87, 0xBC, 0xAE, 0x5F, 0x5E, 0x8F, 0x5D, - 0xE7, 0xB9, 0x0C, 0x70, 0x36, 0x25, 0x61, 0xFD, - 0x95, 0x9F, 0xAE, 0x0F, 0x8D, 0xF3, 0xA2, 0x45, - 0x24, 0xA7, 0xDE, 0x60, 0xD1, 0x4E, 0x6D, 0xAC, - 0xC7, 0x6A, 0x32, 0x42, 0xC0, 0x73, 0xEB, 0x78, - 0x50, 0xF4, 0x49, 0x52, 0x5E, 0x6F, 0x81, 0x42, - 0x54, 0xF8, 0x82, 0x05, 0xC9, 0x64, 0x74, 0x6A, - 0x60, 0x5E, 0x36, 0x59, 0x40, 0x50, 0xA3, 0xFE, - 0xDA, 0xE2, 0x6D, 0x8D, 0x6E, 0xE4, 0x5A, 0x27, - 0x73, 0x89, 0xDB, 0x0C, 0x5B, 0x14, 0xD9, 0xED, - 0xB2, 0xC7, 0x1D, 0x71, 0x93, 0x91, 0x0A, 0x72, - 0x32, 0xBE, 0xA3, 0xD8, 0x95, 0x8C, 0x94, 0x7E, - 0x63, 0xEB, 0xCE, 0x8B, 0xFC, 0xB0, 0x3F, 0x77, - 0x5C, 0x43, 0x48, 0x18, 0x83, 0xFE, 0xC8, 0xDA, - 0x89, 0xF2, 0x3B, 0x54, 0x82, 0x44, 0xC6, 0x9C, - 0xCC, 0x77, 0x0A, 0xC1, 0x6F, 0xB9, 0x98, 0x10, - 0xD5, 0xF2, 0x60, 0xFF, 0x38, 0xD2, 0x0D, 0xD6, - 0x8C, 0x38, 0x54, 0x5B, 0xD8, 0x38, 0x84, 0x50, - 0x36, 0xF4, 0x02, 0xC1, 0x06, 0x0F, 0x15, 0x1B, - 0xC8, 0x90, 0x9B, 0x6E, 0x36, 0xC8, 0x3F, 0xE9, - 0x8B, 0x62, 0x15, 0x6F, 0xF0, 0xC2, 0x86, 0x7F, - 0xD1, 0xB5, 0x97, 0x53, 0xAE, 0x41, 0xAE, 0x21, - 0x84, 0xAC, 0x57, 0xA5, 0x1F, 0xA7, 0xC7, 0x24, - 0xDF, 0xDE, 0x2F, 0x3C, 0xCD, 0xA2, 0x7E, 0x1D, - 0x97, 0xE1, 0x96, 0xC5, 0xB4, 0x7D, 0xF9, 0x5F, - 0x7E, 0xEF, 0x09, 0xC4, 0xF3, 0x57, 0xF0, 0x51, - 0x73, 0xAB, 0x0E, 0x6A, 0xCA, 0x64, 0xE4, 0x99, - 0x0F, 0xD2, 0x20, 0xAC, 0x72, 0xF1, 0xA8, 0x23, - 0x8F, 0x94, 0x63, 0xDC, 0xB3, 0xBB, 0x62, 0x2C, - 0xEA, 0xA6, 0x27, 0x5A, 0x93, 0xC6, 0xCD, 0xCE, - 0x1E, 0x09, 0xAF, 0x89, 0xEC, 0x22, 0xE4, 0x30, - 0x2D, 0xB9, 0xCD, 0x08, 0x2E, 0x12, 0x76, 0x79, - 0x99, 0xBC, 0xA0, 0x34, 0x0B, 0xDA, 0x89, 0x08, - 0x14, 0x60, 0x7B, 0x98, 0xE6, 0xAF, 0xD2, 0xE1, - 0x87, 0xC8, 0xDA, 0x50, 0xF7, 0x10, 0x2C, 0x72, - 0x74, 0x50, 0xD0, 0x3C, 0x98, 0x06, 0xFE, 0xEB, - 0xC6, 0xC5, 0x69, 0x31, 0x06, 0xE2, 0x2E, 0x7E, - 0x7D, 0x3D, 0x2B, 0x1F, 0x48, 0x43, 0xC5, 0x95, - 0xDA, 0x84, 0x08, 0x1E, 0x2B, 0x50, 0x6D, 0x91, - 0xA6, 0x2B, 0xCD, 0x08, 0x43, 0x7B, 0xA2, 0xD8, - 0x60, 0x6E, 0xF7, 0x80, 0x08, 0xC3, 0x3F, 0x35, - 0xF3, 0x70, 0xA5, 0xC7, 0x56, 0xFC, 0xBD, 0x34, - 0x46, 0x7B, 0xBF, 0x63, 0x19, 0xAC, 0xB6, 0xC3, - 0x1B, 0x81, 0x84, 0x9F, 0xBB, 0x54, 0x05, 0x99, - 0xAE, 0x43, 0xE2, 0xA5, 0x20, 0xFD, 0x5C, 0xC7, - 0x25, 0x47, 0xB1, 0xFD, 0x80, 0xB5, 0x78, 0xC2, - 0x00, 0x98, 0x02, 0xB9, 0x61, 0x2A, 0xBA, 0x39, - 0xC7, 0x20, 0xB8, 0x7D, 0x7A, 0x03, 0x68, 0xE5, - 0x37, 0x71, 0x1F, 0x72, 0xAA, 0x41, 0x61, 0xB4, - 0xC0, 0xC2, 0xD3, 0x7A, 0xCD, 0xD2, 0xED, 0xC2, - 0xC5, 0x99, 0x8C, 0x62, 0xA3, 0x7D, 0xC8, 0x9C, - 0xD2, 0x50, 0x02, 0x0D, 0xCB, 0x68, 0x15, 0xB0, - 0xD6, 0x19, 0x03, 0xC8, 0x01, 0x12, 0x72, 0xA1, - 0x3A, 0xC2, 0xA6, 0x63, 0x51, 0x26, 0x03, 0x5D, - 0x3F, 0x1D, 0x3B, 0x0E, 0x30, 0x6B, 0xB7, 0xEC, - 0xB6, 0x8E, 0x2D, 0x76, 0xC8, 0xD7, 0xAE, 0x59, - 0x81, 0xFC, 0x5F, 0x57, 0x5E, 0xAD, 0xA0, 0x20, - 0xC8, 0xB4, 0x91, 0x2D, 0xEC, 0x03, 0xC4, 0xC6, - 0x55, 0x05, 0x87, 0xA4, 0xA2, 0x21, 0x09, 0x25, - 0x97, 0x21, 0xA4, 0x46, 0x45, 0x46, 0x40, 0x3B, - 0xDC, 0x6F, 0xCD, 0xFB, 0xFB, 0xD9, 0xF4, 0x2C, - 0xEC, 0xF1, 0xC4, 0x73, 0x41, 0x30, 0x60, 0x63, - 0x9A, 0xF2, 0xA5, 0x26, 0x78, 0x9A, 0x5E, 0x70, - 0x98, 0xDE, 0x35, 0x10, 0xA0, 0x5D, 0x45, 0xD5, - 0x95, 0xF7, 0x11, 0xBC, 0x99, 0xD3, 0x00, 0x67, - 0x9A, 0x30, 0x85, 0x36, 0x50, 0xDB, 0x18, 0xEA, - 0x6D, 0xB2, 0xF3, 0x14, 0xDA, 0x23, 0xE2, 0x8A, - 0x44, 0x21, 0x25, 0xD4, 0xA3, 0x28, 0x43, 0xA0, - 0xC6, 0x5C, 0x99, 0xB0, 0x72, 0x6B, 0xC2, 0x1A, - 0x30, 0xBE, 0x6B, 0x7B, 0xE0, 0x31, 0x54, 0x8C, - 0x29, 0xE5, 0xC6, 0x69, 0x53, 0xDE, 0x05, 0x1E, - 0x43, 0xCC, 0x7E, 0x9A, 0x82, 0x4A, 0xC4, 0x0A, - 0x50, 0x65, 0xDC, 0xD8, 0xF9, 0x01, 0x32, 0x65, - 0x1E, 0xF9, 0xA4, 0xCC, 0x07, 0xB9, 0x55, 0x97, - 0x45, 0xA9, 0x61, 0xF8, 0xBE, 0x99, 0x00, 0x12, - 0xD8, 0x17, 0x62, 0xFB, 0x89, 0xE7, 0x05, 0x5E, - 0x1B, 0xCD, 0x2B, 0x09, 0x6C, 0x5A, 0x5C, 0xA3, - 0x66, 0x4D, 0x02, 0x78, 0x0C, 0xC3, 0x63, 0x30, - 0xD0, 0xFA, 0x7B, 0x11, 0x00, 0x40, 0xDD, 0xF0, - 0x8C, 0x7C, 0xBA, 0x4C, 0x63, 0x78, 0xDA, 0xBB, - 0xDF, 0xF9, 0xC9, 0xA4, 0x40, 0x25, 0x86, 0xD1, - 0xBA, 0x22, 0xD7, 0x69, 0x98, 0x4E, 0x9D, 0x15, - 0x21, 0xA8, 0x56, 0xC0, 0xFF, 0x52, 0xE4, 0xB4, - 0x0F, 0xB2, 0x53, 0xE7, 0xA1, 0x34, 0x18, 0xEA, - 0x5B, 0x25, 0x42, 0x13, 0xE3, 0x13, 0xE7, 0xDF, - 0x54, 0x2B, 0x8D, 0x70, 0x51, 0xC7, 0x60, 0xB1, - 0x1E, 0x4D, 0x3A, 0x46, 0x04, 0xA1, 0x11, 0x43, - 0xAD, 0x24, 0x29, 0x90, 0xC9, 0x04, 0x15, 0xC5, - 0x07, 0xE5, 0x46, 0xB8, 0x50, 0x16, 0x6B, 0x66, - 0xFE, 0x1C, 0x8B, 0xFC, 0x20, 0x9C, 0xC4, 0x88, - 0x10, 0x36, 0x5E, 0x56, 0xE8, 0x45, 0x75, 0x89, - 0xFB, 0xD6, 0xD0, 0x8D, 0x9D, 0x53, 0xAE, 0x89, - 0x19, 0x54, 0xCF, 0xE1, 0xFF, 0x12, 0x13, 0xF2, - 0xC7, 0xBE, 0x4C, 0x1E, 0xB0, 0x70, 0x6E, 0xDC, - 0x0A, 0x64, 0x3B, 0x60, 0x3A, 0xEA, 0x0D, 0x41, - 0xDD, 0x8E, 0x09, 0xB9, 0x96, 0x8F, 0x6A, 0x49, - 0x50, 0xEF, 0xDF, 0xD7, 0x73, 0x8D, 0x16, 0x32, - 0xA8, 0x5C, 0x0A, 0x90, 0x18, 0xA1, 0xEB, 0x19, - 0xCC, 0x50, 0xD5, 0x59, 0xD7, 0x35, 0x3F, 0xBA, - 0x38, 0x1B, 0x5F, 0x71, 0x56, 0x70, 0xB3, 0x20, - 0x4D, 0x9E, 0x16, 0xA8, 0xF7, 0x35, 0x19, 0xD2, - 0x09, 0x0A, 0x22, 0x28, 0x81, 0x61, 0x26, 0x5B, - 0x9C, 0xEC, 0x9D, 0x4A, 0x61, 0xCF, 0x0D, 0x3C, - 0x88, 0xEA, 0x0B, 0x7A, 0xA7, 0xC6, 0xAE, 0x31, - 0xBE, 0xC2, 0xBA, 0x48, 0xBB, 0x9D, 0x06, 0xE1, - 0x32, 0x6D, 0x80, 0xCE, 0x27, 0x5C, 0x6F, 0x13, - 0x79, 0x35, 0x9F, 0x9C, 0x11, 0xEA, 0xDB, 0xF5, - 0x49, 0x15, 0xB6, 0x51, 0x86, 0xFC, 0x62, 0x34, - 0x3D, 0x58, 0x6B, 0x0E, 0xF8, 0x3B, 0xBB, 0x42, - 0xF6, 0x2D, 0x5C, 0xE2, 0xF3, 0xAA, 0x9F, 0x03, - 0x43, 0xE9, 0x9E, 0x90, 0xB9, 0xFF, 0x55, 0x93, - 0x60, 0xF8, 0x10, 0x2F, 0xFC, 0xBD, 0x40, 0x23, - 0xB8, 0x4F, 0x4C, 0x7A, 0x74, 0x9F, 0xDC, 0x55, - 0xDF, 0x5E, 0xCD, 0x23, 0xEB, 0xAC, 0x47, 0x4E, - 0x0D, 0x0F, 0xBE, 0xDE, 0x02, 0x64, 0x61, 0x7E, - 0x73, 0x78, 0x8E, 0x25, 0xE9, 0x7D, 0x66, 0xE5, - 0x82, 0xBF, 0x98, 0x5B, 0x36, 0xCE, 0x17, 0x72, - 0x56, 0x9C, 0xDA, 0x63, 0x77, 0x55, 0x8B, 0xA9, - 0x75, 0xF5, 0x28, 0xC3, 0x78, 0x6D, 0x8F, 0xC2, - 0x75, 0x5F, 0x28, 0x9E, 0x3F, 0xFB, 0xF1, 0xFD, - 0xB7, 0xDE, 0x05, 0x3C, 0xD3, 0xE8, 0xD7, 0x7A, - 0x7D, 0xC9, 0xF7, 0x9D, 0x58, 0xB4, 0xA6, 0x21, - 0x25, 0xFC, 0x52, 0x84, 0x21, 0xF6, 0x0B, 0x6D, - 0xA6, 0x62, 0x51, 0x97, 0xCD, 0xA9, 0xA1, 0x0C, - 0x88, 0x21, 0x67, 0xA5, 0xFB, 0x8C, 0x8A, 0x50, - 0xC5, 0x21, 0x91, 0x3A, 0xAB, 0x95, 0x96, 0xF3, - 0x30, 0x6D, 0x08, 0x42, 0x07, 0x4B, 0x78, 0x1F, - 0xC1, 0xD3, 0x41, 0x15, 0x68, 0xED, 0x93, 0x09, - 0xC7, 0x8B, 0xF9, 0x77, 0x25, 0xD3, 0xCE, 0x2B, - 0xA2, 0x0D, 0xB4, 0xC6, 0x84, 0x7F, 0x8E, 0xE5, - 0x24, 0x46, 0x59, 0x8D, 0x6F, 0x0F, 0x0C, 0xA8, - 0xFC, 0x04, 0x9B, 0x4D, 0x2B, 0xA7, 0x70, 0x1F, - 0x46, 0x7E, 0x76, 0x03, 0xC6, 0x7E, 0xA5, 0x3D, - 0x79, 0xE2, 0xF1, 0xAC, 0xBC, 0xDD, 0xF6, 0x91, - 0x69, 0x4C, 0x44, 0x1F, 0xC3, 0xBF, 0x9F, 0xFC, - 0x4E, 0xB0, 0x79, 0x30, 0x68, 0x89, 0xAC, 0xF2, - 0xD7, 0xC6, 0xE1, 0x6C, 0x37, 0xFB, 0xB3, 0x38, - 0x44, 0x2C, 0x97, 0xAB, 0xDA, 0x2C, 0x88, 0xC7, - 0xF2, 0x80, 0x08, 0x00, 0x4E, 0x44, 0xED, 0xBE, - 0xA4, 0x28, 0x3D, 0xC1, 0xCF, 0x9E, 0x83, 0xE7, - 0x2E, 0x7F, 0xF5, 0x08, 0x47, 0x26, 0xE0, 0xBD, - 0x1A, 0x17, 0xDB, 0x2F, 0xED, 0x19, 0x2E, 0x65, - 0x1B, 0x62, 0x5F, 0x08, 0x82, 0x10, 0x61, 0xCB, - 0xAA, 0xA7, 0xF8, 0x59, 0x4B, 0x46, 0xCB, 0xA2, - 0xCB, 0x41, 0x34, 0x30, 0x51, 0x58, 0x2A, 0xEE, - 0xE1, 0x5E, 0xAC, 0xCA, 0xBF, 0x37, 0x45, 0x98, - 0xBD, 0x93, 0x1B, 0x5A, 0x5E, 0x92, 0x14, 0x05, - 0x75, 0x2D, 0xFB, 0x8F, 0xBD, 0x24, 0x9B, 0x81, - 0xCD, 0xDD, 0xF5, 0xBE, 0x05, 0x0D, 0xBD, 0x4B, - 0x2B, 0x8C, 0x0A, 0xF0, 0x3A, 0x85, 0xD6, 0x74, - 0x65, 0x7F, 0x98, 0xF8, 0x57, 0xA2, 0x36, 0xA2, - 0xFE, 0xE4, 0xB4, 0xA4, 0x0D, 0xEA, 0x9A, 0xBE, - 0x41, 0x79, 0x68, 0x63, 0x70, 0x3F, 0x3E, 0x38, - 0x60, 0xC3, 0x40, 0x81, 0x72, 0xDD, 0x25, 0x34, - 0xB4, 0xFE, 0xAC, 0x41, 0x6E, 0x4A, 0xE7, 0xBF, - 0xE3, 0x87, 0xFA, 0x20, 0x8B, 0xBD, 0x68, 0x9E, - 0x06, 0xA9, 0x15, 0x23, 0x07, 0x04, 0x4B, 0xFA, - 0x45, 0x45, 0xB7, 0x75, 0xD3, 0x3E, 0x16, 0x70, - 0xF6, 0x26, 0xF2, 0x3A, 0x9D, 0xFB, 0xEA, 0xEB, - 0x47, 0xCE, 0x99, 0x6B, 0x0E, 0xB2, 0xE8, 0x2B, - 0x18, 0x15, 0x14, 0x2E, 0xF2, 0x14, 0x0D, 0x44, - 0x47, 0x1E, 0x63, 0x84, 0x5B, 0x3F, 0xA8, 0xEF, - 0x5F, 0xEB, 0xA0, 0x41, 0x77, 0xC1, 0xF4, 0x4F, - 0x8E, 0x2E, 0x29, 0xCD, 0xDB, 0xF2, 0x75, 0x24, - 0x24, 0x46, 0x73, 0xC3, 0x46, 0xB5, 0xCA, 0x13, - 0x35, 0x12, 0x0A, 0x8D, 0x88, 0x89, 0x17, 0x99, - 0x13, 0xCA, 0x66, 0x07, 0x67, 0x6B, 0x7B, 0x3B, - 0x20, 0xD3, 0x5F, 0x78, 0x1C, 0xC0, 0x99, 0x59, - 0x0A, 0xBA, 0x8F, 0xA0, 0xDB, 0xDF, 0xCC, 0x03, - 0xC4, 0xA6, 0xC7, 0x08, 0xB9, 0xFD, 0x95, 0xC2, - 0x45, 0xF9, 0xF3, 0x11, 0x62, 0xF7, 0x14, 0xB9, - 0xEB, 0x09, 0xB3, 0x7C, 0xF8, 0xF6, 0x67, 0xCC, - 0x03, 0xB3, 0x06, 0x6F, 0x60, 0xAC, 0x72, 0xF2, - 0xD3, 0x71, 0x6C, 0x4D, 0xAD, 0x3A, 0x99, 0x75, - 0x5C, 0x52, 0x2D, 0x87, 0x69, 0x3E, 0xD6, 0x7E, - 0x12, 0x96, 0xD3, 0x88, 0x8D, 0x11, 0x85, 0xAA, - 0x0A, 0xA5, 0x32, 0x90, 0x51, 0xC5, 0x65, 0x64, - 0xE0, 0xA9, 0x73, 0xA4, 0xF3, 0x8A, 0x32, 0x83, - 0xE5, 0x08, 0x09, 0x39, 0x6A, 0x90, 0x2C, 0xC3, - 0xFC, 0x92, 0x29, 0x7A, 0x45, 0xBE, 0x02, 0x79, - 0x15, 0x1B, 0xBB, 0x60, 0xBB, 0xD9, 0x42, 0xF1, - 0xE5, 0x14, 0xB4, 0xA5, 0xFF, 0x12, 0x42, 0x30, - 0xB0, 0xCB, 0xD0, 0x1D, 0xB4, 0x62, 0x49, 0xC5, - 0xB7, 0xDA, 0x37, 0x47, 0x2C, 0x8B, 0x16, 0xCA, - 0xD2, 0x2C, 0xA1, 0x24, 0xE6, 0x57, 0xFA, 0xEB, - 0x2C, 0x62, 0x2E, 0x12, 0x74, 0x37, 0x2B, 0x3F, - 0x56, 0x23, 0x9C, 0xED, 0x90, 0xDE, 0x0D, 0x6E, - 0x9E, 0x11, 0x78, 0xA4, 0x9C, 0xB3, 0xA1, 0x37, - 0xF7, 0x4B, 0x09, 0x61, 0xD8, 0x33, 0x1D, 0x80, - 0x68, 0x5C, 0xDD, 0xBD, 0x3E, 0xAE, 0x9D, 0xB8, - 0xBA, 0x42, 0x41, 0xDC, 0xC9, 0x93, 0xF1, 0x92, - 0x2F, 0x7A, 0xF9, 0xFE, 0x67, 0x13, 0x87, 0xBD, - 0x7D, 0x04, 0x17, 0x91, 0xB6, 0x03, 0x5E, 0xA0, - 0x5B, 0x23, 0xEA, 0x0C, 0xFA, 0x45, 0xCB, 0x1A, - 0xC5, 0x7F, 0x63, 0xD6, 0x3D, 0x3C, 0x66, 0x4A, - 0x83, 0x4E, 0x4E, 0x90, 0xA6, 0x63, 0xB0, 0x8A, - 0xD7, 0x0D, 0xB4, 0xB7, 0xA9, 0x0F, 0xC6, 0xC7, - 0x3B, 0xAD, 0x07, 0xA6, 0x94, 0x47, 0xDB, 0x63, - 0x26, 0x00, 0x18, 0x5E, 0x27, 0xB5, 0xE2, 0xE3, - 0xED, 0x8D, 0x97, 0x95, 0x38, 0x20, 0x24, 0x9F, - 0x40, 0x84, 0x44, 0x7E, 0x8C, 0x05, 0xAB, 0xB1, - 0x89, 0x26, 0x7D, 0x46, 0x2C, 0x9F, 0xE5, 0xC1, - 0x27, 0xCE, 0x1D, 0x5A, 0x9F, 0xF1, 0xF8, 0x57, - 0x8F, 0xCF, 0xB7, 0x4E, 0x07, 0xF3, 0xBA, 0x56, - 0xCF, 0xE9, 0x87, 0x21, 0x61, 0xD6, 0x97, 0x7B, - 0x26, 0x97, 0x07, 0xB4, 0x87, 0xFE, 0x25, 0x9C, - 0xA9, 0x8E, 0x06, 0x90, 0x17, 0x2C, 0x98, 0x26, - 0x23, 0xEE, 0xBB, 0x91, 0x8A, 0x15, 0x38, 0xA1, - 0x38, 0xCB, 0x8B, 0xA0, 0xF3, 0x4A, 0xF2, 0x12, - 0xA7, 0xB7, 0x05, 0xB6, 0x09, 0xD0, 0xEC, 0xDD, - 0x21, 0xB6, 0xFA, 0x29, 0x95, 0xB4, 0x08, 0xD5, - 0x95, 0xB7, 0xB8, 0x2E, 0x23, 0xAA, 0x89, 0x81, - 0xE2, 0xD0, 0xFD, 0x9C, 0x8D, 0xF0, 0xCA, 0x61, - 0xE3, 0x1E, 0x73, 0x9E, 0xD1, 0x72, 0x5C, 0x63, - 0xB8, 0x74, 0x0E, 0x2C, 0x27, 0x3A, 0x71, 0xF9, - 0xFE, 0x66, 0x33, 0xE9, 0x41, 0x27, 0x61, 0xA3, - 0xFA, 0xD8, 0x66, 0x2A, 0x52, 0x6D, 0xAB, 0xBF, - 0x32, 0xC2, 0x8E, 0x8F, 0xB0, 0x60, 0x52, 0xE1, - 0x96, 0xC8, 0x1E, 0x9A, 0x3E, 0x07, 0xFA, 0x34, - 0xFA, 0x9C, 0x4C, 0x0D, 0x29, 0x0F, 0x68, 0xA6, - 0x59, 0x28, 0x22, 0xB1, 0x99, 0x56, 0x2C, 0x01, - 0x04, 0x2F, 0x34, 0x65, 0xFD, 0xD4, 0xD0, 0xD5, - 0x17, 0x7C, 0x14, 0x92, 0x73, 0x6C, 0x31, 0xCE, - 0xD4, 0xB3, 0x59, 0x83, 0x6B, 0x34, 0x7C, 0x76, - 0x8C, 0xED, 0xD5, 0xE2, 0x4F, 0x39, 0x44, 0xBF, - 0x90, 0x53, 0x9A, 0xC7, 0xD4, 0x6A, 0x86, 0xA3, - 0xE2, 0x15, 0x59, 0xD0, 0x0F, 0x32, 0x92, 0xC2, - 0x9B, 0x9E, 0xE3, 0xF6, 0x94, 0x96, 0xFD, 0x0B, - 0xB6, 0x06, 0x8F, 0x0D, 0x1F, 0x38, 0xFC, 0x6F, - 0xA2, 0x78, 0xAC, 0xC5, 0xB5, 0x6A, 0x6B, 0xEC, - 0x78, 0x8A, 0x6F, 0xD8, 0x21, 0xB7, 0xCF, 0x66, - 0x73, 0x03, 0xCA, 0x2E, 0x3C, 0x7F, 0x2F, 0x29, - 0x41, 0xC9, 0x88, 0xFD, 0x0E, 0xA0, 0x43, 0xD6, - 0x9E, 0xB1, 0xE7, 0x13, 0x9C, 0xF0, 0x9C, 0xCF, - 0x33, 0x22, 0x57, 0xEF, 0xE5, 0xCE, 0xD9, 0xAC, - 0x7D, 0x34, 0x75, 0xBD, 0xAE, 0x84, 0xEE, 0xE8, - 0x5D, 0x8C, 0x55, 0x86, 0xBA, 0x19, 0xE5, 0x9D, - 0x35, 0x6D, 0xD8, 0x70, 0xC5, 0xE0, 0xEA, 0x77, - 0x3A, 0xE5, 0xB5, 0x2C, 0xD2, 0x28, 0xB5, 0xE8, - 0xAF, 0xB1, 0xD2, 0xC4, 0xE5, 0x59, 0x06, 0xB8, - 0x2E, 0xA6, 0x8F, 0xC4, 0x9B, 0x30, 0xF9, 0x37, - 0xDB, 0x29, 0xA1, 0x44, 0x0B, 0xB7, 0xB5, 0xB4, - 0x12, 0xD3, 0x4E, 0xB3, 0xB7, 0xD8, 0x2F, 0x19, - 0xDE, 0x3B, 0xC3, 0x53, 0xCE, 0x1C, 0x34, 0x4C, - 0xA4, 0x6A, 0xE2, 0xD0, 0x04, 0xDF, 0x3C, 0x53, - 0x8B, 0x06, 0x8F, 0x36, 0xE5, 0x77, 0xB2, 0x7A, - 0x1A, 0xC0, 0x0C, 0xBD, 0xA3, 0xA0, 0xEE, 0xB6, - 0x40, 0xAD, 0x5C, 0x04, 0xAE, 0xCF, 0x64, 0x2B, - 0x8A, 0x18, 0x58, 0x86, 0xDE, 0xC9, 0x3D, 0x7D, - 0x15, 0xBC, 0xEE, 0x4C, 0x22, 0xF4, 0x98, 0xD9, - 0x37, 0xEE, 0xE2, 0x40, 0x43, 0xFF, 0xB2, 0x6F, - 0x05, 0xC0, 0x0E, 0x30, 0xDE, 0xD8, 0x0C, 0x0B, - 0xAD, 0xED, 0xCC, 0xBC, 0x29, 0x95, 0x07, 0x40, - 0x10, 0x99, 0xA0, 0xD1, 0x08, 0xF7, 0xD5, 0xF1, - 0xAD, 0xC9, 0xDD, 0xC8, 0x6A, 0x1E, 0x9E, 0x06, - 0xDF, 0x12, 0xFF, 0x66, 0x33, 0x5E, 0x21, 0x47, - 0xC3, 0xDE, 0x36, 0x98, 0x5B, 0xBF, 0x42, 0x9E, - 0x30, 0xA0, 0x81, 0x5C, 0x28, 0x34, 0x1B, 0x3A, - 0x32, 0xBC, 0xDE, 0x52, 0x53, 0x25, 0x1E, 0xF6, - 0xE2, 0x99, 0x12, 0x92, 0x07, 0x1D, 0xEB, 0x08, - 0x36, 0xA7, 0xD5, 0x18, 0x1F, 0xDB, 0x44, 0xA7, - 0xE1, 0x13, 0x06, 0xB0, 0xDF, 0x63, 0x82, 0x68, - 0xEF, 0xF5, 0x2B, 0x04, 0x0B, 0x93, 0xE8, 0xB0, - 0x92, 0x7B, 0xDE, 0x1F, 0xC9, 0x39, 0x8F, 0x42, - 0x9D, 0x06, 0x22, 0x13, 0xC9, 0x97, 0x2F, 0x43, - 0x8A, 0xBA, 0xAF, 0xF9, 0x71, 0xE3, 0x55, 0x5D, - 0x06, 0x77, 0x38, 0x39, 0xA3, 0xED, 0x41, 0x63, - 0xFE, 0x2A, 0xB3, 0x23, 0x43, 0x0C, 0xF3, 0x17, - 0x3B, 0x69, 0xED, 0x32, 0x0A, 0x54, 0xF3, 0x8D, - 0x76, 0xC6, 0x09, 0xDD, 0x88, 0x5B, 0x23, 0x57, - 0x72, 0xC4, 0x87, 0xB8, 0x9D, 0xF7, 0xCA, 0xFB, - 0x7C, 0x61, 0x67, 0x5C, 0x65, 0xF8, 0xD6, 0xD7, - 0x1E, 0x95, 0xB9, 0x73, 0x4D, 0x2E, 0x1F, 0x43, - 0x3E, 0x2B, 0x58, 0x92, 0x15, 0x2E, 0xAA, 0x51, - 0xF0, 0xD4, 0xF2, 0xA6, 0xCD, 0x12, 0x21, 0xD6, - 0xCA, 0x46, 0x2A, 0xFF, 0xCB, 0x1B, 0x6B, 0xB4, - 0x09, 0x17, 0x3B, 0xA2, 0x94, 0xDF, 0x1D, 0x68, - 0x8B, 0x75, 0xEA, 0x11, 0xD6, 0x99, 0x04, 0xD1, - 0x00, 0xDB, 0x61, 0xBC, 0xF2, 0x3B, 0x88, 0x4B, - 0x33, 0xDF, 0x0F, 0xD4, 0xFB, 0x14, 0x0C, 0x6A, - 0x53, 0x61, 0x1F, 0xBD, 0x28, 0xB2, 0x11, 0x19, - 0x38, 0x71, 0x17, 0x76, 0x4D, 0xEE, 0x01, 0xC4, - 0x77, 0x53, 0x2A, 0xAF, 0xD3, 0x78, 0xFF, 0x45, - 0x7F, 0x97, 0x9D, 0x26, 0x92, 0x0E, 0xD9, 0x4E, - 0x34, 0x1D, 0xE8, 0xDD, 0xBF, 0x5F, 0x87, 0xE6, - 0x35, 0x9A, 0x39, 0x71, 0x59, 0x20, 0x01, 0xFB, - 0x53, 0x2C, 0x61, 0x38, 0x0C, 0x8C, 0x02, 0xD3, - 0xA0, 0x53, 0x95, 0x02, 0xED, 0x5C, 0xFE, 0x9B, - 0xD3, 0x6A, 0xF3, 0x3F, 0x92, 0x6F, 0x33, 0x37, - 0x19, 0x97, 0x81, 0x3A, 0x50, 0xE1, 0xD9, 0x27, - 0x7E, 0x64, 0xF8, 0x01, 0x52, 0x26, 0x51, 0xD1, - 0x06, 0xAF, 0x20, 0xA0, 0x28, 0x0F, 0x3F, 0xCB, - 0x21, 0xB7, 0x55, 0x1A, 0x76, 0xB8, 0x9B, 0x4D, - 0xED, 0x2A, 0x05, 0x0E, 0x6E, 0xAF, 0xCC, 0xA1, - 0x08, 0x9C, 0xBE, 0x3F, 0x98, 0xE6, 0xB4, 0xB9, - 0x83, 0xC9, 0x08, 0x41, 0x96, 0xDD, 0xD9, 0x0D, - 0x52, 0x66, 0x94, 0xA4, 0xEA, 0xFC, 0xE5, 0x48, - 0x04, 0x73, 0x64, 0x79, 0x68, 0xC9, 0x4A, 0x81, - 0xA8, 0x07, 0xF8, 0xD9, 0x4E, 0x07, 0x1E, 0xC1, - 0x8F, 0x62, 0xAB, 0xA6, 0xD7, 0x68, 0xFC, 0x57, - 0x5E, 0x75, 0x1B, 0xBF, 0x3D, 0xA6, 0x91, 0xC5, - 0x08, 0x14, 0x5E, 0xF2, 0x4C, 0x22, 0x8B, 0x4E, - 0x29, 0x2D, 0xC0, 0x46, 0x3A, 0x9C, 0x9D, 0x86, - 0xCF, 0x51, 0x85, 0x9D, 0x93, 0x23, 0xA1, 0xA1, - 0xF3, 0x76, 0xB1, 0x56, 0xB0, 0xF4, 0x1F, 0x39, - 0xDA, 0xDB, 0x13, 0x70, 0x29, 0x89, 0x95, 0xD2, - 0xC5, 0xF3, 0x76, 0xFE, 0xEE, 0x99, 0xCF, 0xA0, - 0x84, 0xEC, 0x70, 0xF0, 0xD3, 0xFA, 0x42, 0xDB, - 0xFD, 0x99, 0x65, 0x2F, 0x84, 0x11, 0x99, 0xCD, - 0x38, 0xB3, 0x1B, 0xAB, 0x8C, 0x2D, 0x33, 0x04, - 0xCA, 0xE1, 0xB3, 0x05, 0x9A, 0x20, 0x80, 0xDB, - 0xED, 0x59, 0x42, 0x30, 0x48, 0x37, 0xB3, 0x85, - 0x5C, 0xEE, 0x54, 0x06, 0x92, 0x97, 0x4E, 0xFC, - 0xFA, 0xF7, 0x25, 0xE0, 0x4E, 0x57, 0xC4, 0x72, - 0x38, 0x59, 0xCA, 0x3C, 0x4A, 0x3F, 0x09, 0xD6, - 0x09, 0x15, 0x83, 0xEF, 0x24, 0x21, 0xDD, 0xFD, - 0x66, 0x9E, 0xBF, 0xEE, 0xCC, 0xBF, 0x86, 0x20, - 0x29, 0x40, 0x5E, 0x42, 0xD2, 0xC0, 0x24, 0x2D, - 0x76, 0xE6, 0x64, 0xF9, 0x5D, 0xC2, 0x85, 0xB6, - 0x09, 0x41, 0x04, 0x62, 0x17, 0xDC, 0xF8, 0xFA, - 0x2A, 0x4C, 0xD1, 0x82, 0x31, 0x57, 0xB7, 0x2B, - 0x49, 0xE8, 0x40, 0x13, 0x2A, 0xA1, 0x86, 0xD2, - 0x9A, 0xB8, 0xA9, 0xBE, 0x39, 0xBE, 0xE9, 0xA5, - 0x35, 0x12, 0x08, 0xF1, 0xA9, 0x9E, 0x57, 0x46, - 0x3A, 0x55, 0x16, 0xA7, 0x41, 0xD9, 0x25, 0xB8, - 0x2F, 0xAF, 0xA8, 0x81, 0x5F, 0x5F, 0x46, 0xA4, - 0x3B, 0xB3, 0xE9, 0x1B, 0x74, 0xEF, 0x5D, 0x57, - 0x48, 0x4A, 0x72, 0x08, 0xDA, 0xFE, 0x1D, 0x55, - 0x6B, 0xAB, 0x8B, 0x13, 0x18, 0xBF, 0xDD, 0xF4, - 0x4E, 0x01, 0x5F, 0x4B, 0xF6, 0x80, 0xD4, 0x16, - 0x4B, 0x2F, 0x03, 0x4B, 0xF8, 0x93, 0x20, 0x21, - 0x55, 0x52, 0x49, 0x4A, 0x6C, 0x1F, 0x7D, 0xAD, - 0x04, 0xEF, 0xB3, 0x74, 0xEE, 0xC5, 0xB6, 0xBC, - 0x33, 0x7A, 0xCF, 0x64, 0xB9, 0xF9, 0x41, 0x70, - 0xAF, 0xE9, 0xC7, 0xD6, 0x25, 0x18, 0x17, 0xAB, - 0xBA, 0xC9, 0x05, 0xEF, 0x40, 0x89, 0xD5, 0x69, - 0x76, 0xAA, 0xA0, 0x3E, 0x4D, 0x1C, 0xE7, 0x9D, - 0x9E, 0x74, 0xF4, 0xF2, 0x7B, 0x40, 0xF6, 0x57, - 0x78, 0x66, 0xFC, 0xDA, 0xE3, 0x6B, 0xD2, 0x6E, - 0xC7, 0x9D, 0x65, 0x84, 0xAF, 0x7A, 0x1F, 0xE4, - 0x34, 0xD4, 0x1A, 0x17, 0xA2, 0x72, 0xB0, 0xEE, - 0x5A, 0x0C, 0xF4, 0x02, 0xAC, 0x1D, 0x6F, 0x4A, - 0xD0, 0xB2, 0x02, 0x3A, 0x7D, 0x2C, 0xF1, 0x43, - 0x0E, 0x1E, 0x96, 0xEB, 0x42, 0xF8, 0x3A, 0xF5, - 0x0B, 0x5D, 0xA9, 0x23, 0x02, 0x28, 0xE5, 0x26, - 0x5E, 0x69, 0x38, 0x2F, 0x85, 0x34, 0x32, 0x5E, - 0x5E, 0x29, 0x33, 0x94, 0x05, 0xBD, 0x58, 0xF8, - 0xE8, 0x9C, 0xBF, 0xB1, 0x5A, 0x05, 0xC6, 0x23, - 0x9B, 0xBB, 0x57, 0x69, 0x8C, 0xE6, 0x41, 0x97, - 0x48, 0x01, 0x95, 0xAF, 0xE9, 0x62, 0x8C, 0x6F, - 0x09, 0x43, 0xF3, 0x64, 0x50, 0x90, 0x2F, 0x14, - 0xF7, 0x30, 0x07, 0xE0, 0x4B, 0xA8, 0x39, 0xAC, - 0x21, 0xC4, 0x07, 0x45, 0x5F, 0xD9, 0x87, 0xB1, - 0x57, 0x47, 0x07, 0x66, 0xFF, 0xC7, 0xAB, 0xEE, - 0x1F, 0x55, 0x71, 0x50, 0x63, 0xCF, 0x58, 0x3B, - 0xC8, 0x1B, 0xEA, 0xA5, 0xE2, 0xF1, 0x57, 0xB3, - 0x77, 0x65, 0xA9, 0xBD, 0x23, 0xC8, 0x30, 0x86, - 0xC3, 0x5F, 0xBF, 0x16, 0x3F, 0x42, 0x28, 0x0A, - 0xC6, 0x5A, 0x57, 0x15, 0x2F, 0xA1, 0x96, 0xA9, - 0x25, 0xC5, 0x8E, 0x32, 0x11, 0x62, 0xB3, 0x54, - 0x18, 0x00, 0xA4, 0xA6, 0xD4, 0x0F, 0x68, 0x27, - 0x8F, 0x21, 0x78, 0x02, 0x37, 0x98, 0xBD, 0xCE, - 0x3F, 0xBC, 0xF2, 0x9C, 0x66, 0x8E, 0x79, 0xA1, - 0x54, 0x12, 0x55, 0x2E, 0xC0, 0x59, 0xC7, 0x18, - 0x18, 0x22, 0x4D, 0x27, 0x8B, 0x8D, 0xF3, 0x08, - 0x99, 0xE6, 0x35, 0x14, 0xB1, 0xE3, 0xB8, 0x7A, - 0x40, 0x7B, 0x68, 0x7B, 0xFF, 0xDC, 0x54, 0x41, - 0x06, 0xCA, 0x91, 0xFE, 0xDB, 0x2B, 0xDA, 0x9E, - 0xC5, 0x20, 0xD8, 0xBF, 0x42, 0xBC, 0xE6, 0x39, - 0xC4, 0x26, 0x9E, 0xF3, 0x82, 0xD9, 0xF1, 0xA0, - 0x04, 0xAF, 0xFB, 0x77, 0x13, 0x36, 0xAF, 0xD7, - 0x91, 0x9B, 0x3A, 0x57, 0x98, 0xFE, 0xAD, 0xCD, - 0x46, 0xF8, 0xF8, 0xF1, 0x87, 0x53, 0xBD, 0x57, - 0x3F, 0x99, 0xBC, 0xA6, 0xBD, 0x9B, 0x6E, 0xF4, - 0x17, 0x7A, 0x78, 0x30, 0x70, 0xA3, 0x43, 0xFF, - 0x92, 0xCD, 0x99, 0x73, 0xAE, 0x65, 0x6A, 0x10, - 0xFF, 0x70, 0x47, 0x0F, 0x16, 0x4C, 0x4A, 0x90, - 0xF4, 0x52, 0x05, 0x79, 0x33, 0x63, 0xDE, 0x14, - 0x65, 0xAF, 0x8A, 0x5E, 0x67, 0x20, 0x03, 0x9F, - 0xE6, 0x70, 0x13, 0x6B, 0xE0, 0xF3, 0x6A, 0x4C, - 0x6B, 0x5B, 0xCB, 0xE1, 0x7C, 0x5D, 0x7D, 0xE3, - 0x23, 0xFD, 0xB8, 0x6A, 0xDA, 0x56, 0x1E, 0xA8, - 0x36, 0xC4, 0x29, 0x2D, 0x70, 0x41, 0x03, 0x18, - 0x31, 0x40, 0x79, 0x2E, 0xC8, 0x22, 0x98, 0x5E, - 0x11, 0xED, 0xA6, 0xDD, 0xB9, 0xAF, 0x8C, 0x27, - 0x5C, 0x1B, 0x2E, 0xEA, 0xB8, 0xC6, 0x2F, 0xA0, - 0x40, 0xB2, 0x64, 0x61, 0xFC, 0x0A, 0x3A, 0x10, - 0x88, 0xC2, 0x58, 0xEC, 0xA5, 0x8D, 0x14, 0xE9, - 0x9D, 0x21, 0xAF, 0x64, 0xD6, 0xC2, 0x5D, 0xAA, - 0x0B, 0x8A, 0x57, 0x0F, 0x84, 0x3E, 0x60, 0x8D, - 0xED, 0x05, 0x1D, 0x98, 0xED, 0xAE, 0x11, 0xD9, - 0x27, 0x03, 0x55, 0xED, 0xF5, 0x34, 0x92, 0x52, - 0xF2, 0x6F, 0x30, 0x3E, 0x69, 0xA5, 0x54, 0xA7, - 0x2E, 0x1B, 0x85, 0xAB, 0xA2, 0x3B, 0xEC, 0xC8, - 0x9D, 0xA9, 0xA3, 0xE4, 0xEF, 0x58, 0xB5, 0x33, - 0x88, 0x55, 0x16, 0x5E, 0x7D, 0x7E, 0x69, 0xFC, - 0xCA, 0xBD, 0x9C, 0x65, 0xFA, 0x0B, 0xBD, 0x7B, - 0x16, 0xC4, 0xE2, 0x9C, 0xB4, 0xF1, 0x6A, 0x25, - 0x70, 0x30, 0x32, 0xED, 0xEA, 0xD3, 0x1D, 0xDB, - 0x6F, 0x29, 0x2E, 0x42, 0x14, 0xBE, 0x03, 0x29, - 0x0A, 0x8A, 0x98, 0x9A, 0xD7, 0xB7, 0x0C, 0xF8, - 0xB9, 0xCF, 0x37, 0xC6, 0xAC, 0xAC, 0x6D, 0xCC, - 0x03, 0x23, 0x9F, 0x66, 0x85, 0x4B, 0x70, 0x45 - }; -#endif /* WOLFSSL_NO_ML_DSA_87 */ -#endif - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - - ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_44), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_44, sizeof(pk_44)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_44, sizeof(sk_44)), 0); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_44_draft), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_44_draft, sizeof(pk_44_draft)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_44_draft, sizeof(sk_44_draft)), 0); -#endif -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_65), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_65, sizeof(pk_65)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_65, sizeof(sk_65)), 0); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_65_draft), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_65_draft, sizeof(pk_65_draft)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_65_draft, sizeof(sk_65_draft)), 0); -#endif -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_87), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_87, sizeof(pk_87)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_87, sizeof(sk_87)), 0); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); - ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_87_draft), 0); - ExpectIntEQ(XMEMCMP(key->p, pk_87_draft, sizeof(pk_87_draft)), 0); - ExpectIntEQ(XMEMCMP(key->k, sk_87_draft, sizeof(sk_87_draft)), 0); -#endif -#endif - - wc_dilithium_free(key); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_sig_kats(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_SIGN) - dilithium_key* key; -#ifndef WOLFSSL_NO_ML_DSA_44 - static const byte sk_44[] = { - 0x5D, 0xFB, 0x07, 0xA2, 0x04, 0x4B, 0x93, 0x16, - 0x75, 0xC7, 0x89, 0x43, 0xEA, 0xC3, 0xC4, 0xC5, - 0x7B, 0x07, 0x77, 0x8A, 0xD9, 0xAF, 0x2E, 0x87, - 0xC4, 0x70, 0xB9, 0xCC, 0x2C, 0x8D, 0xA1, 0xE3, - 0x75, 0xBC, 0xB3, 0xBC, 0xD1, 0x9E, 0x7B, 0xB9, - 0x83, 0xC9, 0x63, 0x66, 0xCC, 0xEA, 0x14, 0x1E, - 0xAE, 0x22, 0x07, 0x75, 0x52, 0x24, 0xC8, 0xC6, - 0xC6, 0x1F, 0x90, 0x89, 0x89, 0xCF, 0xF2, 0xF6, - 0x27, 0x98, 0xA6, 0x86, 0x45, 0x77, 0x95, 0x15, - 0xD4, 0x74, 0xDD, 0xA6, 0x1F, 0x33, 0x41, 0x42, - 0x4E, 0xDA, 0x24, 0x79, 0x60, 0x27, 0x34, 0x4E, - 0x36, 0x94, 0x14, 0x74, 0x81, 0x9A, 0x58, 0x44, - 0x2B, 0x74, 0xBF, 0x50, 0x60, 0xB8, 0x40, 0x94, - 0x4A, 0xEF, 0xDE, 0xA7, 0xA4, 0xCF, 0xFC, 0xB3, - 0x9D, 0xE2, 0x07, 0xFD, 0x9E, 0x6A, 0xC6, 0x2E, - 0x6D, 0x0D, 0xB2, 0xB4, 0x51, 0x2E, 0x20, 0x26, - 0x00, 0xB5, 0x30, 0x01, 0xA9, 0x2D, 0xE2, 0x42, - 0x02, 0x42, 0x12, 0x71, 0x24, 0xB7, 0x28, 0x94, - 0x30, 0x86, 0xDA, 0x22, 0x30, 0x00, 0x87, 0x65, - 0xCC, 0x22, 0x91, 0x1B, 0x05, 0x82, 0x03, 0x46, - 0x8A, 0xA0, 0x32, 0x26, 0x40, 0xB4, 0x84, 0xC3, - 0x14, 0x2D, 0x88, 0x14, 0x8C, 0x94, 0x92, 0x49, - 0x23, 0x15, 0x0E, 0xCA, 0x88, 0x09, 0x18, 0x94, - 0x68, 0x82, 0x38, 0x00, 0x21, 0x41, 0x28, 0x8C, - 0xB8, 0x80, 0x02, 0x09, 0x49, 0x5A, 0xB4, 0x11, - 0x9B, 0x28, 0x05, 0xE4, 0x42, 0x30, 0xCA, 0x24, - 0x80, 0xA4, 0x06, 0x2A, 0xD3, 0x92, 0x05, 0x1C, - 0x03, 0x6A, 0x22, 0x36, 0x4A, 0x92, 0x44, 0x52, - 0xE2, 0x48, 0x28, 0x19, 0x83, 0x68, 0x88, 0xC6, - 0x31, 0x41, 0x90, 0x50, 0x00, 0x43, 0x8E, 0x23, - 0x87, 0x60, 0x19, 0x43, 0x81, 0x50, 0x32, 0x69, - 0x81, 0xC0, 0x51, 0x12, 0x06, 0x08, 0x02, 0x08, - 0x82, 0xC4, 0xA6, 0x81, 0x03, 0xA5, 0x90, 0x8C, - 0xB6, 0x00, 0x90, 0x14, 0x66, 0x01, 0xB1, 0x08, - 0x12, 0x25, 0x48, 0x1A, 0x88, 0x11, 0x43, 0x38, - 0x60, 0x23, 0x26, 0x2E, 0x14, 0x45, 0x0D, 0x9C, - 0x92, 0x8C, 0xA2, 0x46, 0x12, 0x94, 0xA6, 0x05, - 0x88, 0xB0, 0x11, 0x0A, 0xB0, 0x28, 0xA4, 0x42, - 0x09, 0x9C, 0x82, 0x80, 0x1A, 0x80, 0x61, 0x59, - 0xB0, 0x8D, 0x40, 0xA6, 0x6D, 0x12, 0xC9, 0x0C, - 0xD9, 0x18, 0x68, 0xA3, 0x84, 0x2C, 0x02, 0xB6, - 0x25, 0x01, 0x40, 0x2C, 0xD8, 0x20, 0x4D, 0x1B, - 0x35, 0x30, 0x11, 0x10, 0x49, 0x63, 0x44, 0x31, - 0x8A, 0xB2, 0x70, 0x4B, 0x24, 0x28, 0xA0, 0x46, - 0x08, 0xC9, 0x06, 0x81, 0x08, 0xC5, 0x04, 0x4A, - 0xB2, 0x30, 0x08, 0x15, 0x04, 0x24, 0xA2, 0x65, - 0x9B, 0x88, 0x41, 0x19, 0x36, 0x2E, 0xE2, 0xB8, - 0x29, 0xD9, 0x12, 0x64, 0x41, 0xA6, 0x30, 0x22, - 0xB7, 0x8C, 0x93, 0x38, 0x69, 0x93, 0x30, 0x0A, - 0xC8, 0xB6, 0x85, 0x23, 0xB1, 0x8D, 0x01, 0x38, - 0x0A, 0x59, 0xA0, 0x09, 0x64, 0x12, 0x6E, 0x88, - 0x08, 0x22, 0xDB, 0x00, 0x08, 0x0C, 0x08, 0x12, - 0x99, 0x42, 0x44, 0x1B, 0x00, 0x68, 0x08, 0x13, - 0x26, 0x53, 0xA2, 0x40, 0x5A, 0x34, 0x25, 0x98, - 0x90, 0x8C, 0x00, 0x34, 0x2D, 0x93, 0x94, 0x48, - 0xC8, 0x22, 0x4C, 0xE2, 0x44, 0x29, 0xE2, 0x00, - 0x28, 0x14, 0x22, 0x40, 0x48, 0x28, 0x24, 0x22, - 0x49, 0x06, 0xCA, 0xC8, 0x0C, 0x4C, 0x12, 0x80, - 0x1B, 0xA5, 0x41, 0x11, 0x06, 0x48, 0x1B, 0x27, - 0x72, 0x20, 0x07, 0x31, 0x24, 0x10, 0x8E, 0x9C, - 0x94, 0x91, 0x1B, 0x37, 0x82, 0x51, 0x28, 0x2E, - 0x11, 0x06, 0x42, 0x01, 0x34, 0x6E, 0x8C, 0x22, - 0x25, 0x24, 0x34, 0x6A, 0x19, 0x47, 0x21, 0x23, - 0xB6, 0x09, 0x51, 0xB2, 0x31, 0x18, 0x34, 0x45, - 0x8C, 0xB8, 0x20, 0x1C, 0x19, 0x0A, 0x19, 0xB7, - 0x6D, 0x18, 0x97, 0x48, 0x09, 0x82, 0x04, 0x9C, - 0x12, 0x8A, 0x41, 0x08, 0x46, 0x24, 0x13, 0x31, - 0xD0, 0x42, 0x46, 0xC3, 0x16, 0x80, 0x51, 0x10, - 0x2E, 0x51, 0x48, 0x04, 0x5C, 0xC2, 0x64, 0x1A, - 0x10, 0x8E, 0xD9, 0x86, 0x64, 0x90, 0x24, 0x68, - 0x93, 0xB4, 0x45, 0x94, 0x30, 0x4A, 0xE3, 0x12, - 0x0C, 0x54, 0x04, 0x90, 0x03, 0x31, 0x40, 0x62, - 0x92, 0x4D, 0x5C, 0xC8, 0x10, 0x8A, 0xB8, 0x61, - 0x5C, 0x04, 0x6A, 0xC8, 0xB0, 0x85, 0x93, 0x00, - 0x05, 0xC3, 0x06, 0x69, 0x1B, 0x34, 0x8E, 0x03, - 0x84, 0x0C, 0x50, 0x00, 0x2C, 0x8C, 0x96, 0x90, - 0x08, 0x32, 0x68, 0x0B, 0x90, 0x8C, 0x02, 0x86, - 0x2D, 0x18, 0x38, 0x09, 0x1C, 0xB2, 0x21, 0x1B, - 0x48, 0x04, 0x5C, 0x10, 0x86, 0xD8, 0x34, 0x51, - 0x43, 0x84, 0x88, 0x43, 0xB2, 0x65, 0x12, 0xB6, - 0x8D, 0x03, 0x01, 0x45, 0x19, 0xB8, 0x8D, 0x92, - 0x26, 0x4E, 0x12, 0x12, 0x88, 0x52, 0xB2, 0x64, - 0x21, 0x09, 0x26, 0x49, 0x38, 0x05, 0x24, 0x11, - 0x0A, 0x22, 0x38, 0x32, 0x23, 0x31, 0x20, 0x4A, - 0x24, 0x42, 0xC4, 0xA2, 0x44, 0x20, 0x10, 0x0D, - 0xA1, 0xA8, 0x51, 0x23, 0x86, 0x84, 0x81, 0x38, - 0x8E, 0x02, 0x00, 0x4A, 0x1C, 0xB7, 0x24, 0x4C, - 0x06, 0x0A, 0x1C, 0x26, 0x4E, 0xCC, 0x22, 0x48, - 0x4C, 0x92, 0x2D, 0xC0, 0x20, 0x2D, 0xA1, 0x16, - 0x89, 0xC3, 0x44, 0x82, 0x19, 0xA7, 0x6D, 0xC4, - 0x90, 0x10, 0x01, 0x82, 0x89, 0xD8, 0x44, 0x22, - 0xD9, 0x98, 0x20, 0xC0, 0x88, 0x45, 0x88, 0x22, - 0x0C, 0x90, 0x36, 0x90, 0x90, 0xA4, 0x05, 0xD3, - 0x82, 0x21, 0xD0, 0xA6, 0x28, 0x00, 0x33, 0x25, - 0xA2, 0xC2, 0x6C, 0xD8, 0x10, 0x71, 0xD1, 0x96, - 0x50, 0xC3, 0x34, 0x08, 0x8B, 0x94, 0x2D, 0x61, - 0x88, 0x04, 0x1B, 0xC8, 0x2D, 0xE2, 0x30, 0x64, - 0x20, 0x28, 0x24, 0x1A, 0x34, 0x50, 0x10, 0x25, - 0x6A, 0x64, 0x36, 0x81, 0x09, 0xC1, 0x45, 0xE3, - 0x30, 0x80, 0xC3, 0xA6, 0x8C, 0xE0, 0xB6, 0x10, - 0xC3, 0x34, 0x8D, 0xD1, 0x06, 0x11, 0x88, 0x20, - 0x0A, 0x0A, 0xC8, 0x21, 0x20, 0x81, 0x30, 0x9C, - 0x14, 0x61, 0x9B, 0xC2, 0x50, 0x22, 0x15, 0x8D, - 0x80, 0xA0, 0x41, 0x89, 0x24, 0x41, 0x20, 0x93, - 0x40, 0x01, 0xA6, 0x09, 0x08, 0x25, 0x2E, 0xC1, - 0xC6, 0x85, 0x00, 0x17, 0x62, 0x41, 0x30, 0x32, - 0xDC, 0x06, 0x6D, 0x48, 0x88, 0x08, 0x84, 0xC8, - 0x30, 0x5B, 0x96, 0x8D, 0x42, 0xB4, 0x4C, 0xD0, - 0x34, 0x88, 0xD0, 0x04, 0x02, 0x18, 0x15, 0x52, - 0x52, 0x26, 0x30, 0x8C, 0x46, 0x28, 0x20, 0x94, - 0x4C, 0x21, 0x18, 0x00, 0xD0, 0xB2, 0x48, 0x1B, - 0x17, 0x0A, 0x09, 0x30, 0x4C, 0x44, 0xC2, 0x04, - 0x47, 0x5E, 0xF2, 0x33, 0x31, 0xFF, 0x66, 0x73, - 0xE2, 0x6E, 0x6A, 0x32, 0xF2, 0x94, 0xBE, 0xFB, - 0xD5, 0x96, 0x4F, 0xED, 0x98, 0x7A, 0x42, 0xA2, - 0x35, 0xFC, 0x5B, 0x16, 0x08, 0x61, 0x45, 0xC0, - 0xB8, 0xA8, 0x23, 0xFB, 0xC1, 0x4F, 0x1C, 0x8C, - 0xD0, 0x3F, 0xD6, 0xEE, 0xC4, 0x95, 0x28, 0x3E, - 0x03, 0x5C, 0x0D, 0xCA, 0xE5, 0x2E, 0x68, 0xF3, - 0x29, 0xDE, 0x7A, 0xDF, 0xD6, 0x4F, 0xEE, 0x0B, - 0x11, 0x6D, 0x4A, 0x14, 0xE1, 0x53, 0x94, 0xB3, - 0x1D, 0xF8, 0x8B, 0xCA, 0x10, 0xD1, 0xC9, 0x06, - 0xAA, 0x82, 0x28, 0x7C, 0x11, 0x74, 0x99, 0xE9, - 0xD8, 0xC7, 0x7D, 0x17, 0xA9, 0x5C, 0xCC, 0x14, - 0xAF, 0xF9, 0xC2, 0x05, 0xD2, 0x64, 0x80, 0xA5, - 0x70, 0xB5, 0x77, 0x0B, 0x04, 0x81, 0x99, 0xCF, - 0x3F, 0x0E, 0x1B, 0x91, 0xAB, 0x39, 0x4B, 0x1F, - 0x65, 0xD4, 0x7F, 0x92, 0x98, 0xD0, 0x96, 0xCA, - 0x25, 0xC0, 0x99, 0xBC, 0x67, 0xF4, 0x33, 0x42, - 0x63, 0xE3, 0x6B, 0xD9, 0xE6, 0x6B, 0x99, 0x8A, - 0x07, 0xDC, 0x1E, 0x18, 0x1E, 0x05, 0x38, 0x6E, - 0x96, 0x8F, 0x1C, 0xB0, 0xAB, 0x1E, 0x9A, 0x67, - 0xD5, 0xD3, 0x30, 0x11, 0x20, 0x37, 0x82, 0x24, - 0x88, 0x1F, 0x65, 0x17, 0x59, 0xEC, 0x7D, 0xBF, - 0x45, 0x78, 0x1E, 0xF8, 0xA8, 0x4D, 0xAD, 0xAF, - 0xE6, 0x13, 0xD6, 0x01, 0x69, 0x66, 0xBD, 0x88, - 0x44, 0xB6, 0xA6, 0x17, 0xAC, 0xA1, 0xEE, 0xF6, - 0x73, 0xB7, 0x74, 0xCC, 0x80, 0x7B, 0x36, 0xDD, - 0x02, 0xDD, 0x45, 0x21, 0x66, 0x86, 0x03, 0x7F, - 0x9A, 0xC0, 0xB1, 0x2F, 0x57, 0x26, 0xF2, 0x51, - 0xC5, 0x72, 0x43, 0xE2, 0xC1, 0x88, 0xF5, 0xEC, - 0xC0, 0x97, 0xE0, 0xB9, 0x89, 0xB5, 0x8A, 0x5D, - 0x80, 0x4A, 0xBF, 0xD7, 0x20, 0x25, 0x55, 0x77, - 0x66, 0x8E, 0xE3, 0x04, 0xD0, 0x1C, 0x50, 0xFE, - 0x8B, 0x6D, 0x90, 0x68, 0x53, 0xCF, 0x7A, 0x49, - 0x4F, 0xB4, 0x79, 0x91, 0xF1, 0x81, 0xB7, 0x42, - 0x0E, 0x74, 0x19, 0x9C, 0x82, 0xE7, 0x1A, 0x82, - 0x4B, 0xF8, 0xC6, 0x13, 0x1D, 0xF4, 0xD1, 0x85, - 0x6F, 0x11, 0xE7, 0x04, 0x07, 0x70, 0x72, 0x4D, - 0xE7, 0x2C, 0x81, 0x5A, 0xC0, 0x44, 0x3F, 0x2E, - 0x77, 0xEC, 0x22, 0xA1, 0x28, 0xDB, 0x18, 0xE1, - 0x18, 0x3E, 0xE7, 0x96, 0x82, 0xC4, 0x30, 0x24, - 0xC9, 0x07, 0x46, 0x6C, 0x35, 0x4B, 0x1C, 0x7B, - 0x0E, 0x0E, 0xF0, 0x9F, 0x16, 0x48, 0x7B, 0xD8, - 0xA9, 0x9C, 0x3A, 0x0A, 0x9E, 0xDB, 0xF0, 0x0F, - 0x15, 0xA5, 0xEB, 0x1C, 0x50, 0xD4, 0x27, 0x36, - 0xDB, 0x07, 0x63, 0xBD, 0x56, 0xBD, 0xFA, 0x81, - 0x09, 0x9A, 0xDE, 0xCE, 0xE8, 0x4A, 0xEA, 0x06, - 0x9C, 0x06, 0x5B, 0x67, 0x03, 0x14, 0xB9, 0xE4, - 0x8C, 0x66, 0x75, 0xA3, 0xCC, 0x69, 0x39, 0x57, - 0xDA, 0x1D, 0x21, 0xBA, 0xCE, 0xD8, 0x70, 0x02, - 0xFF, 0xF5, 0x6F, 0x25, 0x3A, 0x3D, 0xFC, 0x79, - 0xA3, 0xF0, 0x3A, 0x3F, 0x2B, 0x10, 0x51, 0x9A, - 0xCB, 0xC9, 0x1A, 0xF5, 0xF1, 0x98, 0x5B, 0x5C, - 0x87, 0x96, 0x4E, 0xC8, 0x00, 0x8A, 0x3A, 0x6E, - 0x85, 0x02, 0xA5, 0xF1, 0x69, 0x32, 0x6E, 0xC1, - 0x95, 0x68, 0xCF, 0xA8, 0xE8, 0x85, 0x55, 0x4D, - 0x6A, 0x68, 0x1F, 0x00, 0xDD, 0x26, 0xB3, 0x24, - 0xF4, 0x9D, 0xD2, 0x4D, 0x81, 0x06, 0xDA, 0xE6, - 0x4D, 0x11, 0x73, 0xDF, 0xFE, 0x4F, 0xA6, 0x22, - 0x5E, 0x6C, 0x6D, 0x5E, 0xE3, 0x59, 0xCF, 0xF4, - 0x35, 0xA0, 0x80, 0x86, 0x89, 0x49, 0xB2, 0xED, - 0x0C, 0xC7, 0x3B, 0x42, 0x06, 0x68, 0x8D, 0x90, - 0x04, 0x1A, 0xBD, 0x51, 0xF6, 0xB9, 0x29, 0x2E, - 0xB6, 0xF0, 0x79, 0x40, 0x1E, 0x6E, 0x59, 0x94, - 0xFB, 0xF5, 0x6B, 0x72, 0x82, 0x4C, 0xB6, 0xC7, - 0x2B, 0x12, 0x71, 0x77, 0xDD, 0x89, 0xCC, 0x2F, - 0x98, 0xB0, 0x93, 0x1C, 0x98, 0xCE, 0x5E, 0x89, - 0x0D, 0x95, 0x7B, 0x98, 0xE1, 0xEA, 0xDC, 0xB7, - 0xFF, 0x22, 0xC5, 0x31, 0x40, 0x9E, 0x1C, 0x80, - 0x59, 0x47, 0x01, 0x49, 0xEC, 0x81, 0xEF, 0x16, - 0x32, 0x6B, 0xB0, 0x4E, 0xE2, 0x3B, 0xA3, 0xC1, - 0x03, 0x12, 0x0D, 0xA6, 0x65, 0xDE, 0x8D, 0xB0, - 0xA0, 0xBB, 0x75, 0xEF, 0x5C, 0xDA, 0xF4, 0xEE, - 0x47, 0x6E, 0x55, 0x02, 0x38, 0xCD, 0xC1, 0xAC, - 0xDD, 0x71, 0xA6, 0x34, 0xAB, 0xCE, 0xA5, 0x5C, - 0x90, 0xFF, 0xF8, 0xE0, 0xA7, 0x87, 0xBD, 0x21, - 0x36, 0x91, 0x4F, 0x23, 0xD8, 0x75, 0x58, 0xC5, - 0xF6, 0xBA, 0xAC, 0x54, 0x6C, 0x24, 0xB1, 0x41, - 0x02, 0x02, 0xB9, 0x44, 0x31, 0x0E, 0xC4, 0xC9, - 0xC6, 0x87, 0x85, 0x36, 0x05, 0xC8, 0xAE, 0xC9, - 0xF1, 0xEF, 0x6B, 0x67, 0x52, 0xD3, 0x9A, 0x15, - 0xBF, 0xA2, 0x47, 0xEF, 0x89, 0xFC, 0x06, 0x99, - 0xA1, 0x1A, 0xE4, 0x5A, 0x75, 0xE5, 0x09, 0xD4, - 0x54, 0xE9, 0x89, 0xF2, 0x60, 0x6E, 0xAB, 0x10, - 0xF8, 0x42, 0xE4, 0xAD, 0x57, 0xC6, 0xE3, 0x65, - 0x48, 0x94, 0x14, 0x05, 0x4F, 0x62, 0x20, 0x0F, - 0x3A, 0x1E, 0xC7, 0x62, 0xDC, 0x5C, 0x8E, 0xFA, - 0x19, 0x88, 0x47, 0x5D, 0xE8, 0xC3, 0xD5, 0x8C, - 0x2B, 0x71, 0xBA, 0x11, 0x98, 0x7C, 0x0A, 0xC6, - 0x42, 0x08, 0x3B, 0xAC, 0x76, 0xFB, 0x50, 0x78, - 0x8C, 0x26, 0x8F, 0xEE, 0x7B, 0xE2, 0x59, 0x9B, - 0x34, 0x58, 0x09, 0x2A, 0x8B, 0xCB, 0x1F, 0x31, - 0x94, 0x8F, 0xE4, 0x82, 0xDF, 0x9A, 0x54, 0x5B, - 0x63, 0x85, 0x94, 0xD6, 0x7A, 0x44, 0x06, 0x91, - 0x5C, 0xCD, 0xC7, 0x55, 0x57, 0x47, 0xC0, 0x4E, - 0x72, 0xA5, 0x48, 0xAB, 0x8F, 0xEE, 0x87, 0x6B, - 0x25, 0x82, 0x61, 0x3C, 0xCA, 0xBD, 0xA9, 0x6C, - 0xF1, 0x4A, 0xAA, 0xF6, 0x71, 0x6B, 0x79, 0x0B, - 0xFE, 0x4D, 0x92, 0x32, 0xD9, 0x03, 0x70, 0xD6, - 0x0B, 0xBC, 0x18, 0x4B, 0xA3, 0x3B, 0xCF, 0x77, - 0x83, 0x16, 0xE3, 0x4B, 0x11, 0x83, 0x8D, 0x8F, - 0x71, 0xFE, 0xEA, 0xC0, 0x42, 0xF0, 0x35, 0xB0, - 0x76, 0xEA, 0xC1, 0xC2, 0x62, 0xFA, 0x9C, 0x32, - 0xBC, 0x8D, 0x69, 0xB1, 0x38, 0xB3, 0x51, 0x31, - 0x8E, 0xD1, 0xF3, 0x44, 0x95, 0x95, 0x11, 0x52, - 0x36, 0xF4, 0xCA, 0x7C, 0xBA, 0x2B, 0xA9, 0xE1, - 0x03, 0xF0, 0xF5, 0x09, 0xAB, 0x91, 0x6E, 0x48, - 0xB8, 0xAF, 0x03, 0x9B, 0xDC, 0xD5, 0x1C, 0xAB, - 0xFA, 0xCA, 0xDC, 0xEE, 0x8E, 0x49, 0x84, 0xF5, - 0x61, 0xF9, 0x7D, 0x17, 0xCB, 0xF1, 0xDE, 0x9A, - 0x7A, 0x7B, 0xDA, 0xF3, 0x26, 0xE6, 0xD8, 0xAD, - 0x90, 0xE9, 0x5B, 0xAF, 0x15, 0x45, 0xD3, 0xE2, - 0x46, 0x69, 0xD1, 0xC5, 0xF4, 0x28, 0xE0, 0x7E, - 0x2C, 0x71, 0x10, 0xFF, 0x43, 0x59, 0x80, 0x93, - 0xE6, 0xF9, 0x28, 0xA0, 0x34, 0xC6, 0x86, 0xBA, - 0xE7, 0x5A, 0x56, 0x7A, 0xE4, 0xF5, 0x20, 0xB4, - 0x4D, 0xAC, 0xB4, 0x95, 0xE5, 0xB2, 0xC6, 0x43, - 0x9E, 0x2E, 0x67, 0x8E, 0x7C, 0x05, 0x4F, 0xF7, - 0x60, 0x14, 0x88, 0xC6, 0xAE, 0x4A, 0x05, 0x36, - 0x99, 0x73, 0x55, 0x10, 0xF9, 0xDB, 0xC3, 0x4C, - 0xD7, 0x6A, 0x19, 0x94, 0xC0, 0xFE, 0x74, 0x12, - 0xC0, 0xCE, 0x95, 0x15, 0xBF, 0x60, 0x3A, 0x8E, - 0xB5, 0xFC, 0x8A, 0xBC, 0xAC, 0x9F, 0x15, 0x10, - 0x44, 0x73, 0x58, 0x60, 0x5D, 0xA1, 0x33, 0xFD, - 0xDE, 0xBD, 0xF2, 0x22, 0x69, 0xEE, 0x1D, 0x46, - 0x8E, 0x2E, 0xE8, 0x21, 0x62, 0x1D, 0x27, 0x84, - 0xC4, 0x6D, 0xA8, 0x30, 0x02, 0xA6, 0x26, 0x94, - 0xFA, 0xB1, 0xEF, 0xEC, 0x3B, 0x8D, 0x6F, 0x1B, - 0x2C, 0xCE, 0x2A, 0x4E, 0xC4, 0x28, 0x35, 0x4E, - 0x39, 0xA4, 0xF4, 0x5C, 0x96, 0x65, 0xC1, 0xB8, - 0x55, 0xA5, 0x09, 0x15, 0xBC, 0x4D, 0x3B, 0xD0, - 0x1F, 0x7F, 0xBA, 0x90, 0x20, 0xCD, 0xBD, 0xC2, - 0xC8, 0xE5, 0xC6, 0xB0, 0x6F, 0x14, 0x4E, 0x6B, - 0xEA, 0x8A, 0x24, 0x44, 0xE1, 0x0A, 0xCD, 0xB2, - 0x05, 0xF3, 0x15, 0x71, 0x7C, 0x86, 0xFC, 0xF1, - 0xFD, 0x6B, 0xA6, 0xE3, 0xFC, 0x86, 0xE3, 0xBA, - 0x56, 0x6B, 0x8F, 0xBE, 0x02, 0x9A, 0x03, 0x0C, - 0x8C, 0x69, 0xE5, 0x7C, 0x15, 0xAE, 0x13, 0x12, - 0x25, 0x2B, 0x36, 0xFB, 0x51, 0xA1, 0x61, 0x5E, - 0x37, 0x46, 0x92, 0x0C, 0x0B, 0x71, 0x5C, 0x1D, - 0xA4, 0xDB, 0x04, 0xC1, 0x08, 0xED, 0x5C, 0x44, - 0x80, 0x70, 0xC1, 0x0E, 0x63, 0x6D, 0x92, 0xC2, - 0x1E, 0x18, 0x8E, 0x71, 0x0E, 0x7C, 0x10, 0x21, - 0x1E, 0xC2, 0xCF, 0xD6, 0x38, 0x7A, 0x9B, 0x5C, - 0x9E, 0xE8, 0x82, 0x3D, 0xDD, 0x40, 0x0C, 0x96, - 0x17, 0xEF, 0xB1, 0x25, 0xBA, 0x84, 0x45, 0x4F, - 0x64, 0xA6, 0x8E, 0x2B, 0xBA, 0xF1, 0xED, 0xB3, - 0x4F, 0x92, 0x5F, 0x1A, 0x73, 0x2A, 0x2A, 0x22, - 0x68, 0x19, 0x4C, 0x8A, 0x87, 0x51, 0x75, 0x78, - 0xCF, 0x3C, 0xC5, 0x97, 0xFD, 0x77, 0x43, 0xCB, - 0xAE, 0x3D, 0x9C, 0xB6, 0x45, 0x54, 0x45, 0xF4, - 0x1B, 0x92, 0xEE, 0xF4, 0x9D, 0xC4, 0x32, 0x10, - 0x6A, 0x48, 0xAB, 0xE9, 0x47, 0xBF, 0x2B, 0x92, - 0x49, 0x84, 0x23, 0x52, 0x05, 0xA1, 0x92, 0x3B, - 0xD7, 0x78, 0x2D, 0x9A, 0x15, 0xB4, 0xD9, 0xD3, - 0x45, 0xD0, 0x69, 0xF1, 0x38, 0x4D, 0x39, 0xEA, - 0x49, 0x7E, 0xC0, 0xE7, 0x7A, 0x07, 0x88, 0x1D, - 0x1F, 0xA3, 0xAC, 0xE9, 0xC3, 0xFD, 0x6B, 0x5D, - 0xF6, 0xB2, 0xB9, 0xAA, 0x9A, 0xBE, 0xF4, 0x06, - 0xD9, 0x5E, 0x81, 0xE5, 0x68, 0xDF, 0xEA, 0x20, - 0x4C, 0xEE, 0xED, 0x42, 0xA4, 0xD3, 0x7B, 0xA8, - 0x82, 0x98, 0x0D, 0xB4, 0xC8, 0xC3, 0x43, 0x28, - 0x13, 0xE9, 0x6B, 0x11, 0x0E, 0x54, 0xE6, 0xCD, - 0x11, 0x0A, 0x01, 0x36, 0x41, 0x78, 0xC5, 0x7D, - 0x00, 0xC6, 0x8D, 0xE7, 0x7B, 0x4C, 0xE6, 0x35, - 0x57, 0x8F, 0x56, 0xA9, 0x73, 0x5A, 0xEF, 0x93, - 0xF0, 0xD8, 0x16, 0xE3, 0x44, 0x8A, 0xA0, 0xA9, - 0xF1, 0x9C, 0x2E, 0x02, 0xD1, 0x3C, 0x66, 0xDD, - 0xE5, 0x35, 0xFE, 0x81, 0x77, 0x8D, 0xC2, 0x46, - 0x64, 0x03, 0x23, 0xCC, 0x37, 0x22, 0x60, 0x68, - 0xCC, 0x7F, 0x79, 0xE8, 0x6B, 0xD0, 0xEE, 0x1C, - 0x6A, 0xC3, 0x3C, 0xEB, 0x51, 0x95, 0xFA, 0xE4, - 0x28, 0x17, 0x94, 0x49, 0x22, 0x69, 0x64, 0x98, - 0x82, 0x8B, 0x68, 0x9F, 0x69, 0x35, 0xF9, 0xBF, - 0x33, 0x22, 0xA4, 0x32, 0x0F, 0x4C, 0x26, 0xE4, - 0x8D, 0xDF, 0xAE, 0xBD, 0xF4, 0x4D, 0x01, 0xAF, - 0xA1, 0xFA, 0x3E, 0xCE, 0xD3, 0xB0, 0x5D, 0x02, - 0xDB, 0x3B, 0xB4, 0x23, 0xB8, 0x55, 0x97, 0xB5, - 0x1F, 0x25, 0x64, 0xA7, 0x5D, 0x4A, 0x8C, 0x90, - 0xD4, 0xB6, 0x85, 0x20, 0x32, 0x09, 0x37, 0x26, - 0x00, 0xD5, 0x4D, 0x98, 0x5A, 0xCF, 0x29, 0x3B, - 0x0E, 0xAF, 0x69, 0x88, 0x78, 0x18, 0xAD, 0xD1, - 0xE1, 0xB7, 0xC5, 0xD7, 0xB7, 0x5F, 0xFE, 0xB5, - 0x64, 0xE0, 0x68, 0x0B, 0x4F, 0x46, 0x7B, 0xDE, - 0x0B, 0x11, 0x7A, 0x42, 0x10, 0x86, 0x09, 0x60, - 0xB5, 0xE0, 0x22, 0x17, 0x28, 0x68, 0x7A, 0xE9, - 0xEB, 0xBC, 0x6B, 0xD5, 0x95, 0x4C, 0xE0, 0xAE, - 0x57, 0xB1, 0x45, 0xFF, 0xC2, 0x7E, 0xB6, 0xA0, - 0xD3, 0x8E, 0x46, 0x16, 0xCE, 0xBE, 0x76, 0xCE, - 0x59, 0x5B, 0xA4, 0x96, 0x1E, 0x9F, 0x80, 0xF0, - 0x06, 0x7E, 0xCD, 0x6E, 0x27, 0xB8, 0x7D, 0x26, - 0xB6, 0x60, 0xA3, 0xAB, 0x52, 0xC1, 0x37, 0x9A, - 0xDD, 0x46, 0xF5, 0xB9, 0x39, 0x75, 0xAA, 0x19, - 0xF3, 0xE4, 0xA8, 0x95, 0x4B, 0x25, 0x3F, 0x0B, - 0x44, 0x13, 0xF5, 0x82, 0x10, 0x68, 0x03, 0xD5, - 0x0F, 0x99, 0xB5, 0xB2, 0x8B, 0x85, 0x77, 0x2E, - 0x78, 0x3E, 0xEE, 0x21, 0x6E, 0xAD, 0x2D, 0xCF, - 0x95, 0x62, 0x94, 0x1C, 0x50, 0xAB, 0xC5, 0xFA, - 0x8E, 0x24, 0xB6, 0x14, 0x86, 0x46, 0x8A, 0xAA, - 0x20, 0xDF, 0x15, 0xD1, 0x72, 0xF6, 0xAC, 0x03, - 0xAF, 0xDF, 0xCD, 0x53, 0x81, 0xBA, 0xDB, 0x07, - 0x8B, 0x8E, 0xBB, 0x70, 0x91, 0x57, 0x04, 0xB9, - 0x88, 0xE5, 0x8F, 0x45, 0xD3, 0xD6, 0x31, 0x12, - 0xA5, 0xC1, 0x28, 0xC6, 0x49, 0x90, 0x0F, 0x1D, - 0x69, 0x66, 0xE3, 0x98, 0x56, 0x7D, 0xE3, 0x48, - 0xAC, 0xC0, 0xDE, 0xE4, 0x2B, 0x88, 0x01, 0x19, - 0x4E, 0x99, 0xBB, 0x1A, 0xAF, 0x02, 0x5A, 0x91, - 0xE3, 0x2C, 0xE6, 0x56, 0x4D, 0x05, 0x10, 0xB9, - 0x10, 0xF2, 0x2A, 0x27, 0xDE, 0xCF, 0x9D, 0x2E - }; - static const byte msg_44[] = { - 0xB1, 0x34, 0x49, 0x15, 0xCC, 0xD6, 0x93, 0x41, - 0x6B, 0x37, 0xFE, 0xBD, 0x8D, 0xC7, 0xC7, 0xDB, - 0x9F, 0x25, 0x3E, 0x9D, 0xF5, 0x3C, 0xEC, 0x51, - 0x49, 0x23, 0xAA, 0xA2, 0x67, 0x6F, 0xBF, 0xA4, - 0xCC, 0x04, 0xFC, 0x68, 0xF9, 0xE3, 0x2F, 0x9E, - 0x86, 0x4C, 0x68, 0x95, 0xDB, 0x37, 0xE9, 0xFF, - 0xEB, 0x80, 0xF0, 0xF6, 0xB8, 0x6C, 0xB6, 0xAD, - 0x9C, 0x42, 0xF8, 0xFC, 0x75, 0x19, 0x8D, 0xD3, - 0xCC, 0xDA, 0xF5, 0x77, 0xC7, 0xB3, 0x5B, 0x8F, - 0x1B, 0xF6, 0x0A, 0xAB, 0xEA, 0x89, 0x94, 0x42, - 0x20, 0x1F, 0xBB, 0xF4, 0x42, 0x8C, 0x7E, 0xC1, - 0x7B, 0xC3, 0x1B, 0x54, 0x72, 0x4B, 0x95, 0x90, - 0xF7, 0x53, 0x1E, 0x6F, 0x79, 0x0A, 0x1F, 0xA7, - 0x74, 0x32, 0x83, 0x37, 0x2D, 0x31, 0x71, 0xB8, - 0x96, 0x6B, 0x47, 0x0A, 0xAA, 0x85, 0x26, 0xEB, - 0x4A, 0x6E, 0x81, 0xE6, 0x5A, 0xD0, 0xC2, 0x9F, - 0x2D, 0x37, 0xDD, 0x5B, 0x41, 0x2B, 0xAE, 0x68, - 0x2A, 0x66, 0x79, 0x68, 0x77, 0xC8, 0x2F, 0xFD, - 0xA9, 0x76, 0x24, 0x34, 0xEA, 0xC2, 0xC7, 0xD4, - 0xAF, 0x60, 0x9B, 0x27, 0x72, 0x49, 0x0D, 0xEE, - 0x9B, 0xFB, 0x00, 0x5D, 0x2F, 0x1A, 0x2E, 0xBB, - 0xA0, 0x32, 0xCD, 0x71, 0x59, 0xD5, 0x4B, 0xE5, - 0x96, 0xF3, 0x30, 0x68, 0xBE, 0x5D, 0x9A, 0x2D, - 0x94, 0x0C, 0x76, 0x70, 0xE6, 0x4E, 0x9A, 0xF7, - 0xD7, 0xD3, 0x3E, 0xC3, 0xAE, 0xC6, 0xF1, 0xD9, - 0xDE, 0xE3, 0x92, 0x84, 0xF0, 0x5C, 0xE0, 0x25, - 0xD1, 0x81, 0x76, 0x0D, 0x40, 0xE5, 0xC2, 0xD9, - 0xBE, 0xAE, 0x24, 0x20, 0xF4, 0x0D, 0x9F, 0x32, - 0xB7, 0xBD, 0xCD, 0x3A, 0xFB, 0x1C, 0x66, 0x0D, - 0x01, 0x71, 0x4D, 0x81, 0x37, 0x58, 0xDB, 0xB8, - 0x2C, 0x6B, 0x7E, 0x85, 0x80, 0x52, 0xB5, 0xA5, - 0x0E, 0x39, 0xE0, 0x15, 0xD3, 0xF2, 0x4A, 0x2C, - 0x64, 0xC9, 0xDD, 0xCC, 0x15, 0x0D, 0x90, 0x4F, - 0x07, 0xF6, 0x5F, 0xF6, 0x8A, 0xD0, 0x12, 0x9E, - 0xC3, 0xF8, 0x12, 0x3F, 0x3A, 0x03, 0xFC, 0x95, - 0x8A, 0xE2, 0x47, 0x8C, 0x6C, 0x6E, 0x03, 0x61, - 0x67, 0xD8, 0x51, 0x49, 0xF7, 0x9F, 0xB0, 0x3F, - 0xAA, 0xB9, 0x89, 0x7C, 0xE7, 0x3F, 0x88, 0x55, - 0xC5, 0x4C, 0x83, 0xD7, 0x53, 0xB1, 0x04, 0xB5, - 0x13, 0xD5, 0x6B, 0xC6, 0x4C, 0x3B, 0x08, 0x91, - 0x73, 0x47, 0x35, 0x13, 0x26, 0xD8, 0xEB, 0x47, - 0xCF, 0x66, 0xF1, 0x3F, 0xB9, 0x0F, 0x6A, 0xF5, - 0xA8, 0x94, 0xC7, 0x75, 0x00, 0x77, 0xA8, 0x9C, - 0xEB, 0x77, 0x22, 0xE2, 0xE6, 0x80, 0xA5, 0x9B, - 0xF8, 0x43, 0x8C, 0x52, 0x35, 0x31, 0xEA, 0x8C, - 0xC2, 0x83, 0x4F, 0xFC, 0x4E, 0xF0, 0x2D, 0x35, - 0xB8, 0x51, 0x46, 0xF2, 0xD6, 0x01, 0xD5, 0x00, - 0x99, 0x6A, 0x44, 0x10, 0x64, 0xAD, 0xCA, 0x1F, - 0x62, 0x3F, 0x2F, 0xE7, 0x45, 0x22, 0x47, 0xEF, - 0x86, 0x9D, 0x76, 0xD5, 0x78, 0x42, 0x07, 0x30, - 0x88, 0x86, 0x90, 0xB1, 0xA0, 0x08, 0xDA, 0x28, - 0x2A, 0xD1, 0x75, 0x7D, 0x21, 0x71, 0x29, 0x38, - 0x59, 0xC7, 0x3F, 0x55, 0x20, 0xB5, 0xBB, 0x48, - 0x03, 0xE7, 0xFA, 0xB0, 0x29, 0x00, 0xD2, 0x0F, - 0xE7, 0x65, 0x81, 0x8E, 0xE6, 0x24, 0xE7, 0xA1, - 0x94, 0x50, 0x9D, 0x01, 0x6B, 0x4B, 0xD7, 0x81, - 0x4E, 0xA0, 0xD5, 0x4A, 0x51, 0xEE, 0x95, 0x0A, - 0x14, 0x76, 0xD5, 0x87, 0xAA, 0x6F, 0x78, 0xC8, - 0xD2, 0xE0, 0xC8, 0xF8, 0xF2, 0x78, 0xD8, 0x2E, - 0x11, 0x90, 0x44, 0xB6, 0xBF, 0xD0, 0xBE, 0xD8, - 0x6F, 0xA4, 0x20, 0xA2, 0xC8, 0xA4, 0xEF, 0xB0, - 0x5D, 0x73, 0x06, 0xBE, 0x52, 0xF9, 0x32, 0xD8, - 0x06, 0x5D, 0xD1, 0x29, 0x23, 0x46, 0x25, 0x6E, - 0x42, 0x9D, 0xEE, 0x41, 0x9E, 0xF3, 0x7D, 0x1B, - 0x35, 0x28, 0x81, 0xDC, 0x47, 0x7F, 0x25, 0xA4, - 0x0A, 0xEB, 0x3E, 0x17, 0xE6, 0x1B, 0xCC, 0x00, - 0xD2, 0xE2, 0xA9, 0x3D, 0xEC, 0xF3, 0x00, 0xF0, - 0x81, 0x68, 0x21, 0xED, 0x49, 0xF9, 0x9B, 0x9B, - 0x8B, 0xED, 0xD9, 0x1E, 0xFA, 0x04, 0xBB, 0xB0, - 0x9A, 0xBD, 0x1D, 0x24, 0x36, 0xA7, 0xD6, 0x64, - 0x8A, 0x38, 0x3A, 0x3A, 0x8F, 0x09, 0x08, 0x0E, - 0x46, 0x7B, 0xE1, 0x03, 0x30, 0xBF, 0x62, 0x27, - 0x10, 0x74, 0xBE, 0xBD, 0x7F, 0x56, 0x39, 0x0D, - 0x1D, 0x39, 0x47, 0xF4, 0x02, 0x47, 0x6B, 0x62, - 0x6B, 0x52, 0xAC, 0xAB, 0x21, 0xAC, 0x10, 0x4A, - 0xAB, 0x59, 0x75, 0x33, 0x11, 0xD9, 0xE9, 0xE2, - 0xB2, 0x20, 0x6B, 0xA1, 0x09, 0x42, 0xB6, 0x37, - 0xE4, 0x5C, 0xE6, 0x9F, 0x54, 0xB4, 0x67, 0xBC, - 0xAE, 0xF3, 0xDC, 0x1A, 0xA2, 0x15, 0x47, 0x7B, - 0x15, 0xC8, 0x00, 0x35, 0x8E, 0x1D, 0x69, 0x04, - 0xD8, 0x9C, 0xA9, 0x6A, 0x03, 0x1A, 0x55, 0x48, - 0x6C, 0x4F, 0xC1, 0x68, 0x27, 0x26, 0x13, 0xAB, - 0x8E, 0x03, 0x50, 0x7B, 0xDD, 0xC2, 0x7E, 0x5C, - 0x8A, 0x6F, 0xBB, 0x5F, 0x8B, 0x22, 0x86, 0xA5, - 0xC5, 0x0E, 0xC5, 0x68, 0x60, 0xF6, 0xBF, 0xFF, - 0x6E, 0xBA, 0xDC, 0x21, 0x71, 0xD2, 0xEB, 0xD1, - 0x27, 0x8C, 0x58, 0x14, 0xC3, 0x2E, 0x13, 0x9E, - 0x04, 0x09, 0x61, 0xC3, 0x19, 0xC3, 0x03, 0x48, - 0x70, 0x33, 0x3B, 0x12, 0xF7, 0x3B, 0x38, 0xE7, - 0x18, 0x14, 0xA9, 0xF1, 0x60, 0x83, 0x65, 0xEB, - 0x32, 0xD5, 0x23, 0x8F, 0x6B, 0xF7, 0xD8, 0x00, - 0x21, 0xBD, 0xA3, 0x98, 0xDE, 0xD7, 0x13, 0x17, - 0xAB, 0x3C, 0xA4, 0xD7, 0xBE, 0x1D, 0xA7, 0x4A, - 0x1B, 0xC4, 0x0C, 0x9B, 0x2E, 0x34, 0x5B, 0xA7, - 0xA2, 0x3F, 0x9B, 0x2D, 0xDB, 0xAF, 0x85, 0x14, - 0x0A, 0xF9, 0x30, 0x9E, 0x86, 0x53, 0xAC, 0x24, - 0xAF, 0xD8, 0x25, 0xBC, 0x2A, 0x07, 0x2B, 0xCD, - 0x02, 0xFE, 0x3E, 0xF0, 0x0B, 0xE3, 0xF9, 0x51, - 0x5C, 0x29, 0xEB, 0x8A, 0xFB, 0xC3, 0xEF, 0xD1, - 0xF9, 0xCF, 0xDF, 0xE9, 0xEB, 0xA9, 0x49, 0x59, - 0xB5, 0x17, 0x7E, 0x28, 0x86, 0xB8, 0xD1, 0x8D, - 0xCA, 0x97, 0xF0, 0xCB, 0x80, 0x7E, 0xE3, 0xEA, - 0xE3, 0x1B, 0x48, 0xCF, 0xAC, 0x61, 0x3C, 0x2E, - 0x00, 0xAB, 0x74, 0xFB, 0x95, 0xF6, 0x64, 0xF3, - 0xCA, 0xBF, 0x6E, 0xEF, 0xCD, 0xDD, 0x6D, 0xA5, - 0xF8, 0x98, 0xEC, 0x38, 0xF2, 0xF0, 0x7D, 0x6D, - 0xCB, 0x75, 0xE0, 0x50, 0x9D, 0x13, 0x19, 0x24, - 0x07, 0x4C, 0x05, 0xF4, 0x5D, 0xCA, 0x25, 0xB7, - 0xCF, 0xE2, 0xBC, 0xFE, 0xEC, 0xAF, 0x5F, 0xC3, - 0x6C, 0xE6, 0xE3, 0xC5, 0x85, 0x43, 0x7B, 0x06, - 0x9F, 0xD2, 0xC6, 0xBB, 0xAD, 0x33, 0xD6, 0x86, - 0xBD, 0x5B, 0x9E, 0x2C, 0xA0, 0xD9, 0x8B, 0xDC, - 0x5E, 0x71, 0x7B, 0x6D, 0xF7, 0x1D, 0x40, 0x91, - 0x30, 0x8E, 0x84, 0x73, 0x9A, 0xD6, 0x7F, 0xA6, - 0x79, 0xA6, 0xCE, 0xE9, 0xA6, 0x83, 0x28, 0x4B, - 0x4F, 0xB3, 0x1B, 0x2C, 0x40, 0x8F, 0x52, 0xF0, - 0x59, 0x7D, 0x9C, 0x04, 0xEA, 0xF4, 0xAC, 0x6D, - 0xBB, 0x6C, 0x3F, 0xD6, 0x7F, 0x25, 0x39, 0xD8, - 0x87, 0xDF, 0xBC, 0xF3, 0xCA, 0xE4, 0x59, 0xFA, - 0x76, 0x66, 0x61, 0xA4, 0x8B, 0xFC, 0xFD, 0x6F, - 0x64, 0x03, 0x99, 0xD3, 0xAF, 0x07, 0x86, 0x35, - 0x99, 0x98, 0xCE, 0xFF, 0x7E, 0x9E, 0xB1, 0xB0, - 0x57, 0xA6, 0x29, 0x3D, 0xFF, 0xB7, 0xF3, 0xF2, - 0x51, 0x4B, 0x0B, 0x70, 0x29, 0x46, 0x06, 0x8A, - 0x6B, 0xBD, 0x75, 0x30, 0xD6, 0x91, 0x7F, 0xB1, - 0x1D, 0xBB, 0xAA, 0xBE, 0xD7, 0xAA, 0x46, 0x81, - 0xD7, 0x8A, 0xEA, 0x91, 0x86, 0x69, 0x2D, 0xDA, - 0x34, 0x70, 0x65, 0x2E, 0xB8, 0xA3, 0xF1, 0x44, - 0x56, 0xA5, 0xAA, 0xC4, 0x20, 0x88, 0x3B, 0x42, - 0x37, 0xB0, 0xA7, 0x2D, 0x91, 0x27, 0x63, 0xB6, - 0x7A, 0xC4, 0x13, 0x1A, 0x8A, 0x5D, 0x2F, 0x16, - 0x82, 0x96, 0xB9, 0x12, 0xD3, 0xB6, 0x61, 0xC4, - 0xE8, 0x3C, 0xE6, 0x3A, 0x61, 0xC0, 0x45, 0xEB, - 0xA5, 0x75, 0xEE, 0xB6, 0x7F, 0xB0, 0x70, 0xED, - 0x82, 0x39, 0xE5, 0x1A, 0x67, 0xD9, 0x80, 0x3C, - 0xE0, 0x0B, 0x85, 0x66, 0x74, 0xE0, 0xB7, 0x26, - 0x66, 0x26, 0xDD, 0x02, 0x15, 0xE5, 0xEF, 0x5F, - 0xDE, 0x7B, 0xF4, 0x0B, 0x99, 0x10, 0x21, 0x08, - 0xFC, 0x2D, 0xF2, 0x8B, 0xDC, 0xC8, 0xEA, 0xC6, - 0x3E, 0xFB, 0x20, 0x50, 0x1F, 0x24, 0x66, 0x99, - 0x80, 0x88, 0xC7, 0xA0, 0xB9, 0x6D, 0x1B, 0x75, - 0xC4, 0xC2, 0xE2, 0x52, 0xA0, 0xBF, 0x38, 0x01, - 0x5C, 0xA5, 0x8A, 0xDA, 0x79, 0x38, 0xAE, 0x2E, - 0xC7, 0x96, 0x6F, 0x30, 0x5B, 0xB4, 0x21, 0xC0, - 0xCD, 0x95, 0xCA, 0xD2, 0x12, 0x7D, 0xAD, 0x87, - 0x08, 0x6C, 0xC3, 0x8B, 0xF6, 0xB1, 0x5D, 0xAD, - 0x2C, 0x7C, 0x04, 0x41, 0xE5, 0x34, 0x2E, 0x4B, - 0x5A, 0xD9, 0x1E, 0x66, 0xF4, 0x23, 0xE2, 0x88, - 0x4D, 0xD9, 0x03, 0xFE, 0x6C, 0x64, 0x7D, 0x61, - 0xE6, 0x70, 0x0E, 0xA8, 0x83, 0x08, 0x07, 0xE6, - 0xFD, 0x64, 0x54, 0x3E, 0x3C, 0x6E, 0x9A, 0xD1, - 0x93, 0x37, 0x36, 0x90, 0xDE, 0x94, 0xF7, 0x16, - 0x15, 0x47, 0x94, 0xFE, 0x97, 0x5B, 0x11, 0x80, - 0xBA, 0x40, 0xAF, 0x7F, 0x05, 0xC1, 0x82, 0x91, - 0x69, 0xFD, 0xFB, 0xEC, 0x3A, 0xF7, 0xCF, 0xE1, - 0xD7, 0x9B, 0x59, 0x7E, 0xE4, 0x38, 0xA2, 0x96, - 0xEF, 0x14, 0x6A, 0x05, 0x99, 0x71, 0xE3, 0xF9, - 0x50, 0x8E, 0x35, 0x0B, 0x50, 0x71, 0x6D, 0xEC, - 0xB5, 0x1B, 0xC8, 0x80, 0x2A, 0xE6, 0x2A, 0x7F, - 0x4C, 0x2E, 0x6F, 0x7B, 0x54, 0x62, 0x0E, 0xF0, - 0x4C, 0x00, 0xF0, 0x72, 0xAE, 0x37, 0xAC, 0x32, - 0x7E, 0x26, 0xD3, 0x65, 0x76, 0x1C, 0x10, 0x46, - 0x17, 0xAE, 0xE0, 0xF3, 0x28, 0xEE, 0x97, 0xE0, - 0x86, 0x18, 0x3D, 0x46, 0xA3, 0x62, 0x1F, 0x23, - 0xF3, 0xAC, 0x27, 0x60, 0xB8, 0x85, 0x9A, 0x96, - 0x0E, 0xF1, 0x6F, 0xC1, 0xC6, 0xB1, 0x97, 0x8A, - 0x74, 0x12, 0xDD, 0x73, 0x85, 0x02, 0x9C, 0x73, - 0x61, 0xA8, 0xF7, 0x49, 0xCE, 0xBA, 0x23, 0xED, - 0xE7, 0x9A, 0x17, 0x0E, 0xA6, 0x84, 0x59, 0xF5, - 0x21, 0x66, 0xF5, 0xC5, 0x61, 0xF8, 0x88, 0x7E, - 0x62, 0x0C, 0x00, 0xC6, 0x4F, 0x06, 0xBD, 0x0A, - 0xBB, 0xCD, 0xE5, 0x11, 0x7A, 0xBC, 0xFD, 0x03, - 0xB6, 0xD1, 0xBA, 0x4F, 0x30, 0xFA, 0x96, 0x75, - 0xD8, 0x2D, 0x7A, 0x43, 0x0D, 0x58, 0x41, 0x46, - 0xBA, 0x72, 0x06, 0xCB, 0xBD, 0xD9, 0xBE, 0xA1, - 0xEA, 0x47, 0x08, 0x3D, 0xF9, 0x32, 0x23, 0x9C, - 0xAA, 0x02, 0x1D, 0xA3, 0x3E, 0x43, 0xF1, 0x68, - 0xD8, 0xBE, 0x9F, 0x0E, 0xA8, 0xA8, 0x52, 0xC4, - 0x0A, 0xDE, 0x43, 0x9D, 0x58, 0xA8, 0x05, 0xD4, - 0x74, 0xF8, 0x93, 0x21, 0x62, 0x6E, 0x33, 0x78, - 0x3C, 0x23, 0xEB, 0x60, 0x1C, 0x4C, 0x25, 0xFE, - 0x0F, 0x5E, 0x73, 0xC3, 0xAD, 0x33, 0x9A, 0x7D, - 0x69, 0x6B, 0xAB, 0x2C, 0xAA, 0x5F, 0xBF, 0x96, - 0x62, 0x3A, 0xF0, 0x63, 0x41, 0x00, 0xC7, 0x4C, - 0x81, 0x4D, 0x42, 0x43, 0x25, 0xBC, 0x30, 0xB6, - 0x0B, 0xEE, 0xFC, 0x18, 0x3E, 0x68, 0x0E, 0x64, - 0x5C, 0xD4, 0x22, 0x2A, 0xBA, 0xB5, 0xC6, 0x7E, - 0x67, 0x11, 0x1C, 0x4C, 0x03, 0x30, 0xEC, 0x0C, - 0x77, 0xB2, 0x2B, 0xBC, 0x98, 0xF7, 0x52, 0x8C, - 0x95, 0x66, 0xE1, 0x71, 0xDD, 0x26, 0xA7, 0x7F, - 0x87, 0xF3, 0x94, 0x2E, 0x0D, 0x3E, 0xFE, 0xAD, - 0x0A, 0xDA, 0x3B, 0x77, 0x49, 0xC5, 0x1D, 0xED, - 0x5F, 0xDA, 0x3F, 0xE6, 0xE7, 0x96, 0x58, 0xF1, - 0x02, 0x30, 0x68, 0xB9, 0x62, 0xD0, 0x58, 0xA2, - 0x89, 0x65, 0x12, 0x20, 0x1E, 0x4C, 0xE7, 0xB6, - 0x98, 0x12, 0x52, 0xF0, 0xE8, 0x55, 0xBC, 0xFE, - 0x1F, 0x44, 0x42, 0x36, 0xC9, 0x30, 0xE4, 0x9A, - 0x13, 0xB3, 0x7A, 0xF4, 0xF5, 0x97, 0xC0, 0x5D, - 0xCA, 0x23, 0xCC, 0x05, 0xC4, 0x3C, 0x32, 0xA2, - 0x11, 0x08, 0x17, 0xCB, 0x30, 0x6B, 0xA4, 0x7D, - 0x24, 0x5E, 0x50, 0x22, 0x2E, 0x23, 0xC6, 0x55, - 0x6B, 0xD7, 0x5D, 0x50, 0xEE, 0xF8, 0xBE, 0xB0, - 0xDE, 0x83, 0x5C, 0x8D, 0xD2, 0xE1, 0x5C, 0x70, - 0x66, 0x70, 0x59, 0x8F, 0x86, 0x50, 0x71, 0x71, - 0x04, 0x69, 0xEC, 0xB3, 0x47, 0x9E, 0xE0, 0x26, - 0xB1, 0x9F, 0xE6, 0x21, 0xAC, 0x99, 0x12, 0x6B, - 0x97, 0x9E, 0x1B, 0xA1, 0xDD, 0xA8, 0xE6, 0x11, - 0x12, 0x97, 0xC1, 0x0E, 0x4A, 0x77, 0xF5, 0x52, - 0xF8, 0x09, 0xE9, 0x01, 0x63, 0x56, 0x4E, 0xFA, - 0x24, 0x39, 0x36, 0xB9, 0xF2, 0x6E, 0x07, 0x28, - 0x7F, 0xA4, 0x07, 0x7C, 0xA2, 0x69, 0x7B, 0xED, - 0x6A, 0x4F, 0x0A, 0x95, 0x99, 0x05, 0x60, 0xE7, - 0x58, 0xD9, 0x90, 0xB4, 0xC1, 0x92, 0x0F, 0x9E, - 0x1A, 0xBE, 0x0B, 0x58, 0x96, 0x50, 0x61, 0x1C, - 0x2D, 0x5A, 0x13, 0xAA, 0x5F, 0x4E, 0x2B, 0x88, - 0xBE, 0xAB, 0x93, 0x72, 0xF4, 0x68, 0xB8, 0x30, - 0x91, 0xCD, 0x0A, 0x53, 0x8A, 0x35, 0x82, 0x93, - 0x4F, 0x66, 0xCA, 0xCD, 0xF2, 0x39, 0x98, 0xFE, - 0xC2, 0xFE, 0xFE, 0x51, 0x35, 0xF1, 0xB5, 0x62, - 0x2D, 0x1A, 0xE9, 0x43, 0x25, 0x5E, 0x05, 0xE4, - 0x8B, 0xFE, 0x91, 0x2F, 0x4F, 0x24, 0x1B, 0x2B, - 0xAC, 0x49, 0x9C, 0x14, 0xB0, 0x58, 0xA3, 0xA8, - 0xEE, 0xB9, 0xD1, 0xFA, 0x4D, 0x44, 0x2E, 0x23, - 0xFC, 0x59, 0x77, 0xA5, 0x60, 0x2E, 0xDC, 0xEB, - 0x7B, 0x7B, 0x26, 0x95, 0xE1, 0x87, 0xB7, 0x94, - 0xF8, 0x4B, 0x96, 0x63, 0x15, 0xB1, 0xBB, 0xA5, - 0xC0, 0x4A, 0x72, 0x02, 0x4A, 0x80, 0x5F, 0xB1, - 0x94, 0x73, 0xB7, 0x06, 0xB8, 0x13, 0x76, 0x42, - 0xAD, 0xB1, 0xC6, 0x6C, 0xFD, 0x64, 0xF2, 0x60, - 0xBB, 0x1B, 0x7A, 0xAD, 0xF6, 0xC2, 0x96, 0xB3, - 0x5F, 0x30, 0xB9, 0xD7, 0x70, 0x8A, 0x9D, 0x41, - 0xE7, 0x23, 0xFA, 0xD4, 0xE8, 0x72, 0xAF, 0x73, - 0xF8, 0x8C, 0x26, 0xAB, 0x65, 0x1B, 0xD5, 0x7A, - 0x21, 0xE2, 0x8C, 0xE8, 0xC2, 0x47, 0xD5, 0x8E, - 0x47, 0x9F, 0x79, 0x68, 0x87, 0x6F, 0xCE, 0xD3, - 0x5D, 0x2B, 0x87, 0xD2, 0xDF, 0x14, 0x43, 0x47, - 0x03, 0x3D, 0xF4, 0xCB, 0x50, 0xDE, 0x52, 0xD8, - 0x98, 0x41, 0x46, 0x3F, 0x5D, 0xFB, 0x6D, 0x6F, - 0xF6, 0xD9, 0xE8, 0x2B, 0xBA, 0xB3, 0xB1, 0xEC, - 0x58, 0x77, 0x8A, 0xB8, 0xF3, 0x6D, 0xBC, 0x68, - 0x22, 0xEA, 0xE3, 0x2F, 0xB6, 0xCB, 0x67, 0x30, - 0xCB, 0x33, 0x1C, 0x39, 0x5C, 0x27, 0x4A, 0xE7, - 0xE3, 0x7B, 0x40, 0x9B, 0x7C, 0x66, 0x32, 0xE7, - 0x6D, 0xAA, 0x97, 0xB8, 0x0F, 0x1E, 0x0C, 0xB4, - 0x7A, 0xA3, 0x66, 0xA8, 0xE3, 0x50, 0xEA, 0x36, - 0x74, 0x65, 0x92, 0xEC, 0x9B, 0x1E, 0x97, 0xF0, - 0x2F, 0x99, 0xD6, 0x00, 0x21, 0x37, 0x0B, 0x89, - 0x93, 0xC6, 0x80, 0xA1, 0x02, 0xDC, 0x96, 0x5D, - 0x20, 0xB7, 0x57, 0xF4, 0x17, 0x7A, 0x81, 0xBA, - 0x7B, 0x61, 0xD2, 0x88, 0xEF, 0xC5, 0xAD, 0xED, - 0x4C, 0x9A, 0x94, 0xA5, 0x7B, 0x2C, 0x6B, 0xD2, - 0x97, 0x7E, 0x23, 0x64, 0x0A, 0x66, 0x98, 0x47, - 0xEE, 0x81, 0xB1, 0x49, 0x0B, 0xE3, 0x8A, 0xC4, - 0x3E, 0x52, 0x2C, 0x8D, 0x09, 0xA2, 0x07, 0xB6, - 0x2A, 0x8B, 0x07, 0x9A, 0x24, 0x84, 0xDE, 0xD1, - 0x00, 0x63, 0xD7, 0xA1, 0x3F, 0xBF, 0x0C, 0xA8, - 0xEE, 0xDC, 0x2B, 0xF6, 0x7B, 0xD8, 0x78, 0x53, - 0x35, 0xB8, 0x29, 0x5A, 0xFE, 0x6B, 0x35, 0x6E, - 0x20, 0x62, 0x24, 0x17, 0x0E, 0x87, 0x23, 0x1A, - 0x77, 0x2D, 0x21, 0x84, 0x37, 0xBF, 0x7D, 0x68, - 0xAC, 0x2A, 0xF9, 0x3F, 0x11, 0x27, 0x18, 0x4F, - 0xA2, 0x15, 0x21, 0x47, 0x9E, 0x56, 0xFF, 0x22, - 0xE8, 0x0F, 0x61, 0xBC, 0x28, 0xB8, 0xD2, 0xE7, - 0x1B, 0x3D, 0x1D, 0x94, 0x28, 0x1B, 0x69, 0x56, - 0x00, 0xC8, 0xB0, 0xFD, 0x8E, 0x1D, 0x7E, 0x81, - 0x1F, 0x4C, 0xCF, 0xE1, 0x6E, 0x3F, 0x57, 0x95, - 0xC2, 0x4A, 0xA0, 0xA0, 0x16, 0x7E, 0x30, 0x5C, - 0x28, 0x87, 0x5C, 0x8F, 0xA9, 0x38, 0x9B, 0x72, - 0xF7, 0x90, 0x86, 0xF6, 0xEC, 0xC1, 0x6C, 0x88, - 0xB0, 0x78, 0x3A, 0x58, 0x15, 0xFB, 0x6F, 0x77, - 0xCD, 0xC7, 0xCC, 0xC3, 0x8D, 0x60, 0xE7, 0x87, - 0xBE, 0x9C, 0xBF, 0xFA, 0xA6, 0x2E, 0xF9, 0x59, - 0xA5, 0xE5, 0xDC, 0xDE, 0xB6, 0x25, 0x5C, 0x8E, - 0x0D, 0x2E, 0x01, 0xFE, 0x05, 0xEF, 0xF9, 0xE7, - 0x81, 0x02, 0xBE, 0xA2, 0x91, 0x40, 0x57, 0xD3, - 0x6E, 0x3D, 0x1B, 0x48, 0x50, 0x7A, 0xB6, 0xB1, - 0x76, 0x40, 0x47, 0x0F, 0xE3, 0xF1, 0x7A, 0x8B, - 0x6A, 0x5E, 0x04, 0xE5, 0x34, 0x56, 0xC5, 0xD9, - 0xE5, 0x0F, 0x74, 0x5D, 0xE0, 0x6F, 0x9A, 0xED, - 0xF4, 0xBF, 0xCF, 0x31, 0xB0, 0xC6, 0xED, 0x12, - 0x13, 0x36, 0x54, 0xCB, 0xC8, 0xDE, 0xF7, 0xF6, - 0x60, 0x9E, 0x12, 0x2C, 0x2E, 0x4C, 0x93, 0x3E, - 0x6F, 0xCB, 0x0F, 0x3D, 0x8C, 0xCA, 0xE8, 0xCA, - 0x0B, 0x10, 0xED, 0xDA, 0xE8, 0xDB, 0x29, 0x7C, - 0x8B, 0x32, 0x31, 0xC8, 0x94, 0x34, 0xA5, 0xF5, - 0x4D, 0x01, 0x28, 0xC8, 0x3A, 0xA6, 0xFD, 0xE2, - 0x9A, 0xB7, 0x0C, 0xDA, 0x43, 0x78, 0x45, 0x45, - 0xFE, 0xE9, 0xFF, 0x6E, 0xD4, 0x44, 0xF8, 0x88, - 0x66, 0x4D, 0xD2, 0x2B, 0x2E, 0x2D, 0xF5, 0x7C, - 0xA6, 0x53, 0xB6, 0xD2, 0x10, 0xE6, 0xB4, 0x0B, - 0x7F, 0xC2, 0x1F, 0xE0, 0x63, 0x90, 0xCA, 0x5D, - 0x5E, 0x60, 0xF5, 0x8A, 0xB1, 0x4C, 0x49, 0x03, - 0xD4, 0x38, 0xAE, 0xEF, 0xB1, 0x7C, 0xA4, 0xB9, - 0x98, 0x70, 0x6A, 0x0E, 0xD6, 0xA4, 0xA6, 0xF4, - 0x74, 0xB1, 0xBA, 0x1D, 0x48, 0xCC, 0xC1, 0x14, - 0x3C, 0x84, 0xA8, 0xD2, 0xE7, 0x8D, 0xEC, 0x11, - 0x61, 0x8C, 0x76, 0xB6, 0xDA, 0x28, 0xBC, 0x39, - 0xDF, 0x68, 0xAD, 0x24, 0xA4, 0x07, 0xE1, 0x07, - 0x33, 0xDD, 0x18, 0x9D, 0x5D, 0xAA, 0x90, 0x4B, - 0xEF, 0x88, 0x18, 0x6E, 0xB6, 0x83, 0x21, 0x45, - 0x94, 0x0F, 0x15, 0xB8, 0xAC, 0xD9, 0xD1, 0x8D, - 0x4F, 0x17, 0xC8, 0xD9, 0x17, 0xB0, 0x9D, 0x54, - 0xF2, 0x5F, 0x56, 0x09, 0xD3, 0x80, 0x20, 0x77, - 0x44, 0x23, 0x90, 0xAB, 0xB6, 0x0B, 0x51, 0xA7, - 0x41, 0xC5, 0xD4, 0x42, 0x5B, 0xD4, 0x67, 0x89, - 0xE6, 0xEC, 0x1E, 0x7D, 0x22, 0xD5, 0x6E, 0x7F, - 0x34, 0xCE, 0x7A, 0x07, 0x2B, 0x63, 0x0A, 0x69, - 0x51, 0x71, 0x8C, 0x13, 0x63, 0xB8, 0x79, 0x6D, - 0x94, 0xEA, 0xAF, 0x86, 0x30, 0xD2, 0x22, 0x6C, - 0x67, 0x82, 0x6C, 0xDE, 0xEA, 0x71, 0xE8, 0xD1, - 0x36, 0xF3, 0x64, 0x2F, 0x79, 0xE6, 0x92, 0xF0, - 0x4B, 0x05, 0x14, 0x7E, 0x40, 0xCE, 0x0C, 0x53, - 0xCA, 0x08, 0xEF, 0x0A, 0xA6, 0xA5, 0x73, 0x99, - 0xFD, 0xF3, 0xED, 0xBD, 0x54, 0x56, 0x6E, 0x66, - 0xEF, 0xCC, 0xE1, 0x6F, 0x0C, 0x44, 0x76, 0x84, - 0xF5, 0x55, 0x2B, 0xA3, 0x6B, 0x20, 0x60, 0x54, - 0x3F, 0xC1, 0x35, 0x58, 0xD8, 0xD8, 0x9E, 0x18, - 0x63, 0x70, 0x73, 0xEF, 0x6A, 0x87, 0x46, 0x77, - 0xA9, 0x7F, 0x9F, 0xA0, 0x23, 0x4B, 0x14, 0x00, - 0x61, 0xC7, 0xE3, 0x44, 0xBE, 0xD6, 0x09, 0x71, - 0xE3, 0x58, 0x44, 0x9A, 0xCD, 0x17, 0xE5, 0x8E, - 0x6D, 0x05, 0xBB, 0x21, 0x44, 0xD7, 0x4B, 0xD8, - 0x9A, 0xE9, 0x7A, 0x75, 0x91, 0x43, 0xAD, 0x84, - 0x5B, 0x02, 0x70, 0xBE, 0x67, 0x0B, 0x1E, 0x1E, - 0x92, 0xB8, 0xC7, 0xB6, 0x5F, 0xE1, 0x60, 0x23, - 0xF5, 0x30, 0xE4, 0xD0, 0xCF, 0x70, 0x03, 0xD1, - 0x85, 0x4A, 0x50, 0xDC, 0xF4, 0x9C, 0x29, 0xAB, - 0x0E, 0xA4, 0x7B, 0x2E, 0x3B, 0xDB, 0xBF, 0x52, - 0xD5, 0x8A, 0x91, 0x47, 0xA9, 0xD1, 0x23, 0xEB, - 0xC5, 0x6F, 0x11, 0xBB, 0xEE, 0xBB, 0x29, 0xD7, - 0x31, 0xAB, 0x99, 0x27, 0x5E, 0xF3, 0xA9, 0x23, - 0xFF, 0x70, 0x87, 0x83, 0xCC, 0x26, 0x92, 0x06, - 0xEC, 0xD3, 0x8C, 0xF9, 0x47, 0x34, 0x7D, 0x1E, - 0x71, 0xAF, 0xCF, 0x9D, 0xBF, 0x29, 0x1B, 0x95, - 0x27, 0x48, 0x55, 0xCE, 0xE2, 0xAC, 0x25, 0x61, - 0x83, 0xD9, 0x7B, 0x26, 0xEF, 0x94, 0x9A, 0x95, - 0x0C, 0xD1, 0xE4, 0x0A, 0x51, 0x50, 0x1F, 0x86, - 0x7A, 0x7B, 0xD3, 0x83, 0x55, 0x2D, 0xFC, 0x7B, - 0x97, 0x77, 0x17, 0x67, 0xBB, 0x9F, 0xD7, 0xD1, - 0xDD, 0xDD, 0x49, 0x67, 0xBB, 0xF7, 0x9A, 0x45, - 0x33, 0x24, 0xCA, 0xBC, 0xA5, 0xB2, 0x0D, 0x3F, - 0xB0, 0x10, 0x6D, 0xB9, 0x7D, 0x03, 0x3F, 0xCD, - 0x40, 0x37, 0x1E, 0x8A, 0xDA, 0xCD, 0xBA, 0xD7, - 0x8D, 0x89, 0xBD, 0x5E, 0x90, 0xCF, 0x97, 0xE8, - 0x35, 0x51, 0x87, 0x94, 0xFA, 0x3D, 0xB2, 0xB5, - 0x01, 0xF2, 0x35, 0x75, 0x77, 0x65, 0x5B, 0x9A, - 0x3C, 0xDA, 0x36, 0x52, 0xDF, 0xCF, 0x96, 0xBA, - 0xB9, 0xC5, 0xF9, 0x57, 0x67, 0x0E, 0x32, 0xE5, - 0x86, 0xE5, 0x1F, 0xD8, 0x9D, 0x7B, 0xA8, 0x76, - 0x89, 0xFD, 0x59, 0x70, 0x88, 0x73, 0x9D, 0x87, - 0xE1, 0x24, 0x6D, 0xC2, 0xB5, 0x1E, 0xCD, 0x54, - 0x29, 0x25, 0x10, 0xA3, 0xB4, 0x3C, 0xB2, 0x5A, - 0x62, 0xBD, 0xE9, 0x14, 0xEC, 0x3C, 0xBF, 0xA9, - 0x9D, 0xEC, 0x70, 0xAC, 0x23, 0xC0, 0xDF, 0xC9, - 0x69, 0xAD, 0x94, 0x1A, 0x69, 0x94, 0xA3, 0x70, - 0xF9, 0x0B, 0x15, 0x5D, 0x25, 0x45, 0x63, 0xFA, - 0xAA, 0x7D, 0x30, 0x67, 0x3C, 0x06, 0x34, 0x75, - 0x3F, 0xD6, 0x57, 0x58, 0x8E, 0xC6, 0x60, 0x3F, - 0x82, 0x35, 0xE9, 0x17, 0x36, 0x5D, 0xD8, 0x93, - 0x25, 0x25, 0x1B, 0x21, 0xB2, 0xFF, 0x80, 0xF5, - 0x44, 0xFE, 0x73, 0x84, 0xFF, 0x62, 0xFE, 0x52, - 0xC4, 0xCA, 0x77, 0x41, 0x28, 0xC8, 0x95, 0x15, - 0x2C, 0xC7, 0x5C, 0xA6, 0x3B, 0xA8, 0xF8, 0x1E, - 0x01, 0x30, 0xC9, 0x3B, 0x59, 0xF9, 0x40, 0xB7, - 0x18, 0x80, 0x21, 0x24, 0xDB, 0x8D, 0x07, 0xDF, - 0xDC, 0x24, 0xBF, 0x2F, 0x7B, 0xD9, 0xC4, 0xEF, - 0x61, 0x74, 0x1A, 0xF2, 0xB6, 0x98, 0x75, 0x66, - 0x22, 0x4F, 0x11, 0x06, 0x41, 0xDB, 0x77, 0x83, - 0xFA, 0xF3, 0x1B, 0xEC, 0xB8, 0xF7, 0x89, 0x47, - 0xBA, 0x12, 0x3F, 0xB0, 0x0E, 0x1B, 0x6D, 0x13, - 0x36, 0x0B, 0x16, 0xD0, 0x7C, 0x3A, 0xAA, 0x33, - 0x6D, 0xDA, 0x1B, 0x65, 0xD4, 0xC2, 0xF2, 0x1B, - 0xD5, 0xCD, 0x4B, 0xE9, 0xED, 0xFA, 0xFA, 0x78, - 0x45, 0x97, 0x2D, 0x60, 0xCC, 0xE3, 0x40, 0x3E, - 0xB5, 0xE5, 0xC8, 0x33, 0xF6, 0x4C, 0x51, 0x45, - 0xDC, 0x08, 0xE7, 0xB3, 0x6F, 0xCF, 0xDE, 0xE8, - 0x73, 0x0B, 0x94, 0x4F, 0x5A, 0x23, 0xF9, 0xFF, - 0x3F, 0x0D, 0x1D, 0xCE, 0x80, 0x86, 0x3B, 0x55, - 0x8D, 0x8A, 0x35, 0xB2, 0xAA, 0x65, 0x27, 0x69, - 0x1D, 0xA5, 0x0C, 0xE6, 0xFA, 0x39, 0x85, 0x62, - 0x65, 0xAD, 0xE6, 0x08, 0x38, 0xCE, 0xC9, 0xEA, - 0x98, 0x73, 0x99, 0x1D, 0xB5, 0x6F, 0xEA, 0xE8, - 0xEE, 0xE2, 0xEC, 0xF4, 0x32, 0x44, 0x96, 0x5A, - 0x13, 0xCC, 0x1D, 0x23, 0x0E, 0x91, 0x72, 0xD8, - 0x2A, 0xD2, 0x3D, 0x6A, 0x6E, 0x2A, 0x37, 0x7A, - 0x7F, 0x67, 0xF6, 0x40, 0xBF, 0x3A, 0x36, 0x3B, - 0xC8, 0x1A, 0x78, 0x6D, 0x12, 0xB0, 0x35, 0xA3, - 0x18, 0x55, 0x33, 0x70, 0x48, 0x48, 0x52, 0x8F, - 0xB4, 0x59, 0x58, 0xEB, 0xAA, 0xB3, 0x03, 0x67, - 0x4F, 0xFF, 0xA5, 0x68, 0xE7, 0xAE, 0xAF, 0x46, - 0x3D, 0x66, 0x6B, 0x60, 0x21, 0x26, 0x31, 0x83, - 0xBE, 0xE8, 0x1E, 0x72, 0x92, 0x87, 0x79, 0x24, - 0xCF, 0xDE, 0xEF, 0x6F, 0x81, 0x73, 0xA1, 0x34, - 0x7B, 0x99, 0x94, 0x43, 0x33, 0xF4, 0x8B, 0x36, - 0xC8, 0xC5, 0xF8, 0xC1, 0x6D, 0x22, 0x6D, 0xA3, - 0xC9, 0xDA, 0x5F, 0x4C, 0xE7, 0x7F, 0x00, 0xE4, - 0x42, 0xD8, 0x5C, 0x73, 0xE5, 0x78, 0x0C, 0x36, - 0x28, 0xD9, 0x83, 0x8F, 0xCA, 0xFA, 0x5D, 0x1D, - 0x34, 0x05, 0xF1, 0x93, 0x6C, 0xBC, 0xFD, 0x2C, - 0x52, 0xD4, 0xE8, 0x8D, 0xA9, 0xC9, 0x0D, 0xFF, - 0x28, 0x5E, 0x3E, 0x91, 0x12, 0xC0, 0x3C, 0xBA, - 0x58, 0x64, 0x7E, 0x6B, 0x4E, 0xC0, 0x77, 0xB1, - 0x67, 0x08, 0x16, 0xF5, 0x7E, 0x29, 0x42, 0x81, - 0x6A, 0x6F, 0x34, 0x21, 0x32, 0x64, 0x9A, 0xA6, - 0x44, 0xD1, 0x4F, 0x41, 0xAB, 0xC5, 0x26, 0x4A, - 0xFA, 0x70, 0xBC, 0xAE, 0x3D, 0x67, 0x9B, 0x86, - 0xF5, 0x1A, 0xF2, 0x44, 0x70, 0x52, 0xD0, 0x78, - 0xA0, 0xEA, 0x56, 0x39, 0x0B, 0x37, 0x2A, 0x15, - 0x13, 0xBC, 0xD2, 0xEA, 0x46, 0x6D, 0xCB, 0x5A, - 0x4D, 0x86, 0x47, 0x4F, 0xA1, 0xE2, 0x6B, 0xC0, - 0xA8, 0x3F, 0x58, 0x5C, 0x79, 0xAD, 0x62, 0x17, - 0xBC, 0x96, 0xAF, 0x77, 0x1F, 0x74, 0xD1, 0x42, - 0xBF, 0x5E, 0x91, 0xA9, 0x28, 0x44, 0xC5, 0x4E, - 0x76, 0x6B, 0xF2, 0xD3, 0x69, 0x8C, 0x0E, 0x4F, - 0x61, 0x76, 0xAD, 0xDC, 0x79, 0xE9, 0x74, 0xA4, - 0x66, 0xFB, 0x2E, 0x0C, 0xBB, 0x42, 0xC5, 0x3F, - 0x59, 0xB0, 0xDC, 0xB0, 0x32, 0xCD, 0x37, 0x56, - 0x1B, 0xD2, 0x46, 0xED, 0x52, 0xC8, 0x12, 0xEA, - 0xA3, 0x6B, 0xB9, 0xE5, 0xB3, 0x2A, 0xF3, 0x9B, - 0x0F, 0xC3, 0x77, 0x5F, 0x9A, 0xE1, 0x20, 0xBC, - 0x59, 0x44, 0x9B, 0x7B, 0x77, 0xB1, 0xBA, 0x1A, - 0x5B, 0x60, 0x06, 0x6C, 0x85, 0x83, 0x68, 0xDD, - 0x5A, 0xC8, 0xEE, 0xDC, 0xFE, 0x1F, 0x83, 0xF5, - 0x2C, 0x53, 0x62, 0xED, 0xE8, 0x93, 0xB7, 0x22, - 0x3E, 0xCB, 0x70, 0xBA, 0xA6, 0x6D, 0xB2, 0x91, - 0x47, 0xB8, 0x04, 0x37, 0x20, 0x1F, 0xEF, 0x71, - 0xB0, 0x5F, 0xF2, 0x51, 0x03, 0x5F, 0x88, 0xCA, - 0xFF, 0x42, 0xE8, 0x2A, 0x43, 0x02, 0xD3, 0x60, - 0x98, 0x26, 0x8B, 0x74, 0xF4, 0x18, 0x3D, 0x4D, - 0x19, 0xF1, 0x3B, 0x87, 0xE9, 0x83, 0x37, 0x15, - 0x7D, 0xA5, 0xEF, 0xBB, 0xF3, 0x4F, 0x48, 0xCA, - 0x40, 0x65, 0xD3, 0xE3, 0xBA, 0xCC, 0x83, 0x83, - 0x3F, 0xEE, 0xBA, 0x57, 0x34, 0x6D, 0x16, 0x9F, - 0x1B, 0xE6, 0xA0, 0x4C, 0x29, 0xC8, 0x2F, 0xD2, - 0x25, 0xA3, 0xF7, 0xC6, 0x85, 0x12, 0x4F, 0x53, - 0x7E, 0xC0, 0xE1, 0x0A, 0xB8, 0x58, 0x34, 0xBA, - 0x3E, 0x65, 0x4F, 0x19, 0x55, 0x5C, 0xB9, 0x74, - 0x6B, 0x74, 0xCE, 0x43, 0xA2, 0xC7, 0x8B, 0x21, - 0x70, 0x8C, 0x3B, 0xEF, 0x87, 0xC1, 0xE8, 0x8F, - 0x08, 0x10, 0xB4, 0xED, 0xE1, 0x81, 0x14, 0xE9, - 0x2A, 0x43, 0x13, 0xB4, 0xEA, 0xA0, 0x5F, 0x60, - 0x93, 0x7E, 0x87, 0x6D, 0xA2, 0x57, 0x63, 0x32, - 0xAE, 0xC3, 0x8C, 0xCD, 0x42, 0x5E, 0xFD, 0x51, - 0x1A, 0x39, 0xB9, 0xB4, 0xBD, 0x4C, 0xF3, 0xF2, - 0xE2, 0x70, 0x9A, 0x05, 0xF9, 0x39, 0xE5, 0xFC, - 0x59, 0x7D, 0x4E, 0x85, 0x12, 0x02, 0xC9, 0xC2, - 0xC5, 0x71, 0x3A, 0xD5, 0x73, 0xF7, 0x5A, 0xC5, - 0x49, 0x0D, 0xEE, 0xCF, 0x9D, 0xB8, 0xDE, 0xE2, - 0x03, 0x99, 0x70, 0x6B, 0x19, 0x29, 0xA4, 0xE8, - 0x99, 0x00, 0xC4, 0x9C, 0x24, 0x46, 0x5E, 0x08, - 0x09, 0x56, 0x6D, 0x9C, 0x2E, 0xF7, 0x8C, 0x52, - 0xDB, 0xB4, 0x2F, 0x9E, 0x22, 0x7E, 0xFD, 0x1E, - 0x1A, 0x72, 0xCB, 0x71, 0x0B, 0xD2, 0x19, 0x33, - 0x0E, 0x69, 0xCC, 0x00, 0x49, 0x36, 0x79, 0x78, - 0xAB, 0x11, 0x4D, 0x9A, 0xD7, 0xF9, 0x55, 0xCF, - 0x0B, 0x7B, 0x3D, 0x32, 0x5C, 0xB3, 0x51, 0x65, - 0x00, 0x0E, 0xD2, 0x9D, 0xBE, 0x0A, 0x19, 0x56, - 0xF1, 0x45, 0x95, 0x83, 0xC6, 0x97, 0xCD, 0x19, - 0xE7, 0x8B, 0x51, 0x74, 0xE4, 0xFD, 0x2C, 0xEC, - 0x10, 0x8A, 0x7C, 0x24, 0x28, 0x0A, 0x78, 0xA3, - 0xEC, 0x93, 0x97, 0x16, 0x4F, 0x60, 0x03, 0xFD, - 0x85, 0x31, 0x98, 0x04, 0xE5, 0x65, 0x5A, 0x87, - 0x9F, 0x66, 0x3D, 0xD4, 0x56, 0x3E, 0xF9, 0x98, - 0x25, 0x21, 0xFE, 0xC2, 0x07, 0x9E, 0x88, 0x89, - 0x49, 0x7B, 0xE9, 0x20, 0x1F, 0x6D, 0x7F, 0x24, - 0x60, 0xA8, 0xB2, 0xDD, 0x96, 0x51, 0x0E, 0x0E, - 0x4C, 0x83, 0xC3, 0xB1, 0x93, 0xC1, 0x1F, 0xD6, - 0xB4, 0xB6, 0x84, 0xCE, 0x85, 0x63, 0xA5, 0x38, - 0x0F, 0x2E, 0x55, 0xF4, 0x74, 0xA6, 0x0B, 0x63, - 0x17, 0xD0, 0x96, 0x76, 0x15, 0xAD, 0x4F, 0xA9, - 0xF0, 0x83, 0x25, 0xAD, 0xD7, 0x97, 0xB7, 0x9E, - 0x6F, 0x5D, 0xC7, 0x2A, 0xD1, 0x97, 0xF5, 0xF6, - 0x1E, 0xC8, 0x8B, 0xE5, 0xFB, 0xFF, 0x92, 0x72, - 0x31, 0x9A, 0x49, 0x4B, 0x60, 0x8F, 0x34, 0x7C, - 0xE1, 0x55, 0x66, 0x7A, 0x59, 0xC3, 0x00, 0x9A, - 0x14, 0x50, 0xF3, 0x06, 0x19, 0x3C, 0xFE, 0x61, - 0x1C, 0xF7, 0x05, 0x49, 0x2A, 0x30, 0xFF, 0x56, - 0xFE, 0x7F, 0x71, 0xD7, 0x32, 0xCC, 0xEF, 0x63, - 0x64, 0xE1, 0x66, 0xCF, 0xF8, 0x12, 0xED, 0x23, - 0x11, 0xB5, 0x16, 0xFA, 0x56, 0x90, 0xF2, 0xA2, - 0x72, 0x7B, 0x18, 0x50, 0xF2, 0x98, 0x5D, 0x48, - 0x25, 0x5E, 0x8C, 0x47, 0xE7, 0x11, 0x50, 0x2A, - 0x4B, 0x4A, 0x97, 0x0B, 0xDF, 0x70, 0xDC, 0x34, - 0x47, 0xF8, 0xE2, 0x88, 0x78, 0x24, 0xB5, 0x8A, - 0xC7, 0x58, 0xE8, 0x83, 0xF7, 0x3B, 0xAD, 0xFC, - 0xED, 0x46, 0x40, 0xD5, 0x46, 0x35, 0x1B, 0xF3, - 0x3E, 0x8F, 0x1E, 0x0B, 0x1B, 0xB9, 0xFB, 0x5A, - 0xFF, 0x0F, 0x8B, 0xA0, 0x95, 0x4A, 0x8E, 0x65, - 0x33, 0xD3, 0x7C, 0x03, 0x04, 0x8E, 0xBA, 0x6A, - 0x55, 0xB3, 0xC5, 0xDA, 0xCB, 0xDC, 0x44, 0xD3, - 0x98, 0x77, 0xD3, 0x07, 0x8A, 0xE9, 0x5E, 0x44, - 0x5B, 0xED, 0x12, 0xB1, 0xA5, 0x03, 0xAF, 0xB2, - 0x20, 0x0C, 0xB1, 0x8B, 0x08, 0xB4, 0x6A, 0x11, - 0x96, 0xA9, 0xF5, 0x7A, 0xFD, 0x56, 0x48, 0x11, - 0xC0, 0x30, 0xA4, 0x45, 0xFC, 0xAE, 0x72, 0xE5, - 0x5E, 0x85, 0xB7, 0x6F, 0xA0, 0x50, 0x13, 0x4B, - 0x2E, 0xC2, 0x31, 0x13, 0xED, 0x04, 0x04, 0x3D, - 0xBC, 0xD0, 0xB6, 0xFC, 0xCE, 0xBD, 0xC9, 0x13, - 0x5C, 0xB2, 0x02, 0xB8, 0x4F, 0xDD, 0x74, 0x51, - 0x1F, 0x9E, 0x8F, 0x0C, 0xF2, 0x26, 0xE1, 0x4C, - 0xA5, 0xC4, 0x38, 0xC7, 0x6A, 0xA5, 0xC3, 0xC2, - 0xE9, 0xF3, 0x22, 0x71, 0x00, 0x91, 0x83, 0xEE, - 0x92, 0xA9, 0x95, 0x81, 0x9D, 0xB9, 0x0F, 0x66, - 0x89, 0x9B, 0xB9, 0xB0, 0xC7, 0xED, 0x31, 0xDF, - 0x41, 0xB6, 0x8E, 0x52, 0xAC, 0x5B, 0xBD, 0xF2, - 0x33, 0x9F, 0x71, 0x5E, 0x43, 0xFE, 0xED, 0xD9, - 0x4F, 0x57, 0xF9, 0x23, 0x05, 0x23, 0x03, 0x34, - 0x17, 0xE4, 0x22, 0x27, 0x97, 0xF7, 0x62, 0x5B, - 0x52, 0x66, 0x70, 0xEE, 0x6B, 0xD3, 0x46, 0x8C, - 0xCD, 0x9B, 0xA4, 0xA1, 0xED, 0x26, 0x4A, 0xAC, - 0xC2, 0x50, 0xA8, 0x2A, 0x48, 0x83, 0x46, 0xB2, - 0xA5, 0xF9, 0x26, 0xF2, 0xE7, 0x8A, 0x8E, 0xD8, - 0x40, 0x5F, 0x85, 0x8E, 0xAB, 0xB0, 0x29, 0xF7, - 0x81, 0x42, 0xA7, 0x4B, 0xD5, 0xA8, 0x2D, 0x3D, - 0xD7, 0x0A, 0xB1, 0x26, 0xCF, 0xA3, 0xBA, 0xD7, - 0xF5, 0x1B, 0x9E, 0x95, 0xCB, 0xC8, 0xCE, 0x75, - 0xE7, 0x7A, 0x4A, 0x1B, 0x63, 0x21, 0xB7, 0x74, - 0x77, 0x78, 0xCD, 0x03, 0x5B, 0x3B, 0xCD, 0x44, - 0x8E, 0xF1, 0xBB, 0xB6, 0xFF, 0x75, 0x52, 0x8A, - 0x7A, 0xE9, 0xAF, 0x62, 0x24, 0xA1, 0x6F, 0x4F, - 0x45, 0x03, 0x87, 0xA3, 0xED, 0xBC, 0x2E, 0x92, - 0xC0, 0xB1, 0x9C, 0x22, 0x2E, 0x35, 0xC1, 0xA5, - 0x7E, 0xC3, 0x36, 0x3B, 0x18, 0x14, 0x78, 0x6E, - 0x1D, 0x37, 0xD7, 0x92, 0xB3, 0x78, 0x26, 0x13, - 0x9A, 0xFB, 0x38, 0x1D, 0xE0, 0x4C, 0x07, 0xC4, - 0x2C, 0xD3, 0xCA, 0x78, 0xE4, 0x70, 0xC2, 0x52, - 0x7C, 0x63, 0xDB, 0x4B, 0xB4, 0x0A, 0x4B, 0x7D, - 0x20, 0x67, 0xF0, 0xF4, 0x80, 0x5B, 0x65, 0x8B, - 0x29, 0x80, 0x92, 0xF0, 0x87, 0x3D, 0x09, 0x5A, - 0x0E, 0xEA, 0x45, 0x63, 0x92, 0x99, 0xD6, 0x0D, - 0x2B, 0x58, 0xEE, 0x19, 0x03, 0x4F, 0x94, 0x2D, - 0xEC, 0xBF, 0x5A, 0xE9, 0xA6, 0x16, 0xAF, 0x72, - 0x37, 0x5C, 0x12, 0xBB, 0x7D, 0xED, 0xAA, 0x6A, - 0x7D, 0xDF, 0x9A, 0x48, 0x37, 0x37, 0x3D, 0x7B, - 0x51, 0x96, 0x0B, 0x30, 0xCE, 0x9C, 0xE7, 0x3B, - 0x3C, 0x10, 0xDE, 0x32, 0xA7, 0x86, 0x39, 0xA9, - 0x33, 0x7D, 0x9B, 0xCF, 0x15, 0x27, 0xA4, 0x36, - 0x88, 0xBD, 0xB6, 0xEB, 0x8B, 0xD0, 0x3D, 0xCA, - 0xF1, 0x02, 0x70, 0xDF, 0xC0, 0xE2, 0xF0, 0xD2, - 0x2C, 0x27, 0xE3, 0x22, 0x24, 0x33, 0x27, 0x34, - 0xCA, 0x26, 0x19, 0x74, 0x02, 0x2F, 0x7E, 0xC1, - 0x76, 0xCB, 0x12, 0xBE, 0x6F, 0x13, 0x62, 0x1F, - 0x32, 0x03, 0x65, 0xCF, 0xBB, 0x03, 0xD0, 0x4C, - 0xF2, 0x9E, 0xFE, 0x93, 0xE9, 0x1B, 0x02, 0x9B, - 0x7B, 0x26, 0xFF, 0xEE, 0xF0, 0x6F, 0xCE, 0x57, - 0xD1, 0x2B, 0xE3, 0x90, 0x2E, 0xE2, 0x71, 0x2A, - 0xBA, 0xCC, 0x3D, 0x27, 0xCE, 0xA3, 0x5A, 0xCA, - 0x15, 0x09, 0xE4, 0xD0, 0x86, 0x4F, 0xEC, 0x5A, - 0x5B, 0x41, 0xA0, 0xE0, 0x3E, 0x1D, 0xEC, 0x6F, - 0x2A, 0x33, 0x72, 0x15, 0xCD, 0xE5, 0x55, 0xD6, - 0x6F, 0x84, 0xE3, 0xD6, 0x75, 0x5D, 0xDC, 0x1C, - 0x07, 0x3D, 0x0C, 0xDC, 0xDE, 0xF8, 0x8A, 0x44, - 0x40, 0xB1, 0x76, 0x84, 0xB8, 0xE0, 0xAF, 0x9D, - 0xA2, 0xB2, 0x84, 0xAA, 0xBF, 0x61, 0x08, 0x21, - 0xE5, 0xC2, 0xC9, 0x11, 0x94, 0x2D, 0x0B, 0xD1, - 0xC6, 0x59, 0xC1, 0xEE, 0xBA, 0x8E, 0x21, 0xAF, - 0xDE, 0x32, 0x77, 0xD5, 0x07, 0x3B, 0x98, 0x39, - 0x95, 0x77, 0x03, 0x80, 0x2F, 0xA2, 0x76, 0xC8, - 0x2C, 0xC6, 0x6A, 0x00, 0xA8, 0x69, 0x77, 0xB8, - 0x87, 0x7D, 0xC0, 0x51, 0x19, 0x45, 0x14, 0xA6, - 0x33, 0xB3, 0x4D, 0x36, 0x29, 0x34, 0xE8, 0x50, - 0xC2, 0x71, 0x7A, 0x0B, 0xE5, 0x92, 0x4E, 0x86, - 0xAA, 0xDA, 0x33, 0xCF, 0x34, 0x54, 0x63, 0x2C, - 0x68, 0xA1, 0x0A, 0xEF, 0x8B, 0x5B, 0xAA, 0x10, - 0x83, 0xE9, 0x13, 0x7D, 0x29, 0x20, 0xA2, 0x5F, - 0x96, 0x9F, 0x54, 0x0B, 0x95, 0xDF, 0x59, 0x91, - 0x6C, 0x4C, 0xAC, 0xC4, 0x55, 0x98, 0x8F, 0x46, - 0x31, 0x77, 0x56, 0xCC, 0x93, 0x7E, 0xF0, 0x17, - 0x7C, 0x0F, 0xEB, 0x3F, 0x23, 0xBB, 0xD3, 0x56, - 0x9E, 0x89, 0x67, 0xC4, 0x9B, 0x95, 0xA3, 0xBF, - 0x6D, 0x9D, 0x6D, 0x7C, 0x72, 0x27, 0x20, 0x6E, - 0x28, 0x37, 0x39, 0xFC, 0x77, 0x41, 0xE9, 0xFE, - 0x64, 0xEF, 0xA0, 0x38, 0x9F, 0xC7, 0x2F, 0xDA, - 0xC8, 0x1F, 0xEB, 0x75, 0x07, 0xB8, 0x7E, 0x6B, - 0x73, 0xCE, 0x0E, 0x7C, 0x7C, 0x54, 0x06, 0x1D, - 0x48, 0x8A, 0x06, 0x53, 0x95, 0x9B, 0x75, 0x8A, - 0xFF, 0x6F, 0x7D, 0x19, 0x00, 0x17, 0x8D, 0x7C, - 0x1A, 0xEA, 0xD0, 0x79, 0x45, 0x68, 0xF9, 0x2F, - 0x8A, 0xCE, 0x98, 0xED, 0xCC, 0xE8, 0x6D, 0xE1, - 0x08, 0xA0, 0x50, 0x2C, 0x43, 0x49, 0xC4, 0x99, - 0x98, 0x31, 0xDE, 0x00, 0xE8, 0x08, 0x39, 0x0B, - 0xBB, 0xDB, 0x65, 0xEA, 0x36, 0x0F, 0xBE, 0x98, - 0xB7, 0x4A, 0x9C, 0x59, 0x34, 0x0E, 0xBB, 0xDD, - 0x6F, 0x65, 0x21, 0x39, 0x23, 0x48, 0x57, 0x7F, - 0xD4, 0x07, 0x89, 0x03, 0x01, 0xB0, 0x79, 0x27, - 0x28, 0xCC, 0xFB, 0x88, 0xC5, 0xDD, 0x47, 0x2A, - 0xDA, 0x73, 0x75, 0x9B, 0xC9, 0x99, 0xA0, 0x21, - 0x34, 0xDF, 0xB1, 0x62, 0x2F, 0x61, 0xD8, 0xB7, - 0x63, 0x2A, 0xC7, 0x7E, 0x3A, 0x98, 0x0B, 0x2C, - 0xE5, 0x66, 0xF3, 0xD5, 0x30, 0xF0, 0xBC, 0x21, - 0xC7, 0x51, 0x9B, 0xFB, 0x00, 0xBB, 0xAA, 0x9C, - 0x85, 0xC3, 0x9B, 0x0C, 0xDC, 0x5F, 0x8D, 0x1B, - 0xA1, 0x2B, 0x78, 0x82, 0xFE, 0x0F, 0x7C, 0x75, - 0x6E, 0x75, 0x56, 0x74, 0x35, 0x25, 0xE5, 0xD0, - 0xEC, 0x8E, 0xC1, 0xBD, 0x7D, 0x7A, 0xE3, 0xDC, - 0xAD, 0xC6, 0x8D, 0xB6, 0x0D, 0x7A, 0xA1, 0x3C, - 0xDB, 0x29, 0xFA, 0x15, 0xC0, 0xA9, 0xAF, 0x89, - 0x0F, 0x18, 0x75, 0xE3, 0x97, 0x58, 0x62, 0x12, - 0x79, 0xA9, 0x87, 0x7D, 0x9C, 0x69, 0x44, 0x9C, - 0x41, 0x39, 0x2C, 0xAD, 0x98, 0x8B, 0x8D, 0xE4, - 0x58, 0xEE, 0xCD, 0x98, 0x38, 0x5F, 0x79, 0x73, - 0x0B, 0x5E, 0x26, 0xC1, 0x16, 0x24, 0x15, 0xD9, - 0x73, 0x26, 0x41, 0x9B, 0x5F, 0xF9, 0x2A, 0xA8, - 0xC1, 0x33, 0x74, 0x39, 0x1D, 0xBB, 0xE7, 0x36, - 0xD9, 0x8C, 0x07, 0xAD, 0x32, 0xD6, 0x38, 0xBB, - 0x44, 0xE6, 0x77, 0xC7, 0x11, 0x05, 0xCF, 0xB5, - 0x72, 0x49, 0x68, 0x80, 0xC1, 0x67, 0x71, 0x5F, - 0x9B, 0xFF, 0x6E, 0x71, 0x1A, 0xBE, 0x5A, 0x83, - 0x25, 0x38, 0xC7, 0xE6, 0xDA, 0x88, 0x22, 0xDC, - 0xA6, 0x03, 0x02, 0xD1, 0x59, 0xC6, 0xA8, 0x2F, - 0xA4, 0x8F, 0xF8, 0x77, 0x3E, 0x0C, 0x6F, 0xA1, - 0x73, 0xE1, 0x35, 0x55, 0xB2, 0xDF, 0xBF, 0x47, - 0xB7, 0xD0, 0x8D, 0xBA, 0x35, 0x74, 0x44, 0x6B, - 0xC0, 0xA7, 0x8D, 0x30, 0x08, 0xE4, 0x41, 0xD1, - 0x55, 0x21, 0x50, 0xD9, 0x06, 0x12, 0x54, 0xB2, - 0xF3, 0xFC, 0x5A, 0x1E, 0xF3, 0xE3, 0x84, 0x33, - 0x34, 0x0B, 0xB5, 0x9A, 0x97, 0xFD, 0x51, 0xF4, - 0x68, 0xFE, 0x8A, 0x92, 0xBF, 0x62, 0x9D, 0xCD, - 0x00, 0x29, 0x39, 0x37, 0x12, 0xF3, 0x53, 0x6D, - 0x6B, 0x24, 0xB8, 0x86, 0x68, 0xAD, 0x6A, 0x4B, - 0x3A, 0x4C, 0x93, 0xA6, 0xB1, 0x41, 0xFA, 0x8E, - 0x58, 0x63, 0xCD, 0x59, 0x80, 0xBF, 0xD7, 0xAB, - 0x83, 0xC3, 0xCC, 0x5D, 0x2F, 0xBE, 0x80, 0xC7, - 0xB1, 0x67, 0xDC, 0x92, 0x8C, 0xA9, 0x57, 0x36, - 0x58, 0x0A, 0x52, 0x96, 0x0E, 0x20, 0x90, 0xCD, - 0x87, 0x68, 0xF5, 0x93, 0xBB, 0x04, 0xD4, 0x48, - 0xB6, 0x45, 0x30, 0xC0, 0xE3, 0xC2, 0x56, 0x8C, - 0xE3, 0xA2, 0xC6, 0x42, 0x0F, 0x81, 0xF7, 0x4D, - 0xF6, 0x88, 0x5D, 0x55, 0x07, 0x8E, 0xF1, 0xB3, - 0x83, 0xB0, 0x20, 0x85, 0x4A, 0x63, 0x6A, 0x78, - 0xA9, 0xEC, 0x13, 0x84, 0xF7, 0x4E, 0xBE, 0xB6, - 0x5F, 0x5A, 0x25, 0xFF, 0xD4, 0x14, 0x7D, 0xA7, - 0xEE, 0x40, 0xF6, 0x25, 0x7C, 0x7E, 0x34, 0xCA, - 0xC9, 0x27, 0x0E, 0xA2, 0x78, 0xB6, 0xE6, 0x08, - 0xA1, 0x9B, 0x56, 0x8D, 0x29, 0xE5, 0x8D, 0xEC, - 0xAD, 0xDA, 0xD3, 0x3C, 0x59, 0xBA, 0xDB, 0x92, - 0x52, 0x99, 0x3B, 0x31, 0x6B, 0x0B, 0x13, 0x00, - 0x79, 0x3D, 0x69, 0x85, 0x3A, 0x6B, 0x90, 0x33, - 0x96 - }; - static const byte rnd_44[] = { - 0x08, 0x34, 0x57, 0xD4, 0x0E, 0x25, 0x04, 0x88, - 0xA6, 0x0E, 0x76, 0x34, 0xA0, 0x1D, 0x43, 0x0A, - 0x60, 0xE8, 0x57, 0x2B, 0xA8, 0x8A, 0xED, 0xC5, - 0x54, 0x49, 0x18, 0x81, 0x37, 0x13, 0xA0, 0xB1 - }; - static const byte sig_44[] = { - 0x63, 0xA8, 0x23, 0x20, 0xD4, 0xCE, 0x09, 0xC4, - 0x7A, 0xD1, 0x27, 0xC5, 0xBB, 0x7F, 0x6C, 0x2D, - 0xFF, 0x15, 0x29, 0xCD, 0xAF, 0x9F, 0x74, 0x56, - 0xFF, 0xC2, 0xC6, 0xED, 0x90, 0x51, 0x17, 0xDC, - 0xAD, 0x8C, 0x08, 0x7A, 0xC0, 0xD8, 0x9E, 0x0C, - 0xE9, 0x61, 0xC0, 0x94, 0xFA, 0x9C, 0x2E, 0xDE, - 0x27, 0x9C, 0x65, 0xE6, 0x99, 0xD1, 0xD1, 0x7E, - 0xA6, 0x95, 0x98, 0x8F, 0xA1, 0xC4, 0x98, 0x3F, - 0x7E, 0x1F, 0x18, 0x86, 0x2A, 0xFE, 0xB2, 0xEC, - 0x9D, 0x0F, 0x5B, 0x0C, 0x11, 0xB2, 0xAA, 0x0B, - 0xDE, 0x95, 0x7C, 0x40, 0xA1, 0x5B, 0xFF, 0x97, - 0xD7, 0xCB, 0xCF, 0x4E, 0x59, 0xDA, 0xE9, 0xD5, - 0xA3, 0xC9, 0xF8, 0x7D, 0xDD, 0xA5, 0xB9, 0x06, - 0x9D, 0x82, 0xCC, 0x18, 0x10, 0x20, 0x80, 0x92, - 0xBC, 0xBA, 0x1C, 0x43, 0x73, 0xF2, 0xA8, 0x3E, - 0x19, 0x15, 0x80, 0x9E, 0x81, 0xD8, 0xD2, 0x06, - 0xEA, 0x78, 0x10, 0x3F, 0x68, 0x66, 0x3D, 0xBE, - 0xB1, 0x79, 0xB0, 0x28, 0x83, 0xCD, 0xD3, 0x33, - 0xEE, 0xFE, 0x6D, 0x02, 0x39, 0x17, 0xC6, 0xF2, - 0xA4, 0x6E, 0x5A, 0x5C, 0x45, 0x14, 0xF5, 0x7D, - 0xCA, 0x7B, 0x62, 0x4A, 0xF4, 0xE7, 0x71, 0x7B, - 0xD7, 0x1B, 0x51, 0x26, 0xE6, 0xDE, 0x2D, 0xC9, - 0x65, 0x24, 0x30, 0x2C, 0x08, 0x04, 0xD7, 0xBE, - 0x3A, 0xDA, 0x64, 0xAF, 0x11, 0x6F, 0xC6, 0xE7, - 0x38, 0xEF, 0xA6, 0xE6, 0x5E, 0x87, 0x90, 0xB4, - 0x0E, 0xB1, 0xB4, 0x83, 0x64, 0xD2, 0x15, 0xEF, - 0xD6, 0x1F, 0x7A, 0x44, 0x75, 0x3A, 0x95, 0x50, - 0x6E, 0x52, 0xC9, 0x9C, 0xE9, 0xB4, 0x56, 0xDC, - 0x93, 0x85, 0x92, 0xF1, 0x35, 0xEC, 0x50, 0x1B, - 0x3B, 0xCF, 0x82, 0xDA, 0x69, 0xA1, 0xDD, 0x44, - 0xE8, 0xB3, 0xC1, 0xCB, 0x8D, 0xD5, 0x13, 0xD0, - 0xF3, 0x14, 0x2C, 0x80, 0x82, 0x2C, 0x31, 0xBF, - 0x75, 0x20, 0x14, 0x39, 0x9F, 0x81, 0x79, 0x76, - 0x0F, 0xB6, 0x7D, 0xB6, 0x58, 0x1C, 0xF3, 0xE6, - 0x93, 0x5A, 0x9B, 0xE1, 0x8B, 0x92, 0xC2, 0xDB, - 0xF1, 0x89, 0xAA, 0x46, 0x67, 0xFA, 0x80, 0x45, - 0x72, 0xAA, 0xB4, 0xE2, 0x5E, 0xE9, 0xD1, 0xA7, - 0xA0, 0xD7, 0x05, 0x5C, 0xC6, 0xC7, 0x6D, 0x1D, - 0x66, 0x3D, 0x35, 0x0C, 0xB7, 0x1A, 0xFA, 0xB1, - 0xDB, 0xD0, 0xCB, 0x3A, 0x8B, 0xB7, 0x1B, 0x03, - 0x60, 0xA0, 0xA4, 0xDA, 0xD0, 0xE2, 0x3A, 0x1E, - 0xB5, 0xE4, 0x59, 0x68, 0x6A, 0x02, 0x94, 0x66, - 0x05, 0x60, 0x08, 0x64, 0xB4, 0xEE, 0x0F, 0x3A, - 0xCE, 0xFD, 0x40, 0x7B, 0x6F, 0xF5, 0x8D, 0x1E, - 0xFF, 0x0C, 0x75, 0xAF, 0xC1, 0x41, 0xC6, 0x24, - 0x1D, 0xF3, 0x76, 0x02, 0x48, 0x6B, 0xBA, 0x58, - 0xBC, 0xBB, 0xFE, 0xD3, 0x51, 0xC2, 0x68, 0x21, - 0x4B, 0x20, 0x4E, 0xAF, 0x8A, 0x0C, 0x74, 0x7F, - 0x5F, 0xB7, 0xAA, 0x43, 0xFC, 0x5A, 0x77, 0xA1, - 0x81, 0xCD, 0xBA, 0xE1, 0x31, 0x87, 0x1F, 0xA8, - 0x1F, 0x76, 0x30, 0x6C, 0xE0, 0x84, 0xCD, 0x14, - 0x4A, 0xDB, 0x67, 0xFD, 0x65, 0x8C, 0x35, 0xC0, - 0x91, 0x6C, 0x2B, 0xCF, 0x5B, 0x89, 0x29, 0x58, - 0x42, 0x9B, 0x65, 0xDB, 0x34, 0x7D, 0xD8, 0x31, - 0xC9, 0xB8, 0x0D, 0x07, 0xD1, 0x94, 0x60, 0x63, - 0x65, 0xDC, 0xB3, 0x70, 0x48, 0x46, 0x37, 0x18, - 0x4D, 0x5D, 0xE0, 0xAC, 0x77, 0xD0, 0x9E, 0xE1, - 0xD9, 0xB2, 0x2D, 0x09, 0xD6, 0xF8, 0x94, 0x96, - 0x7B, 0x43, 0xD9, 0x76, 0x36, 0xE6, 0x24, 0xA4, - 0x4A, 0xFF, 0x12, 0xFE, 0x30, 0x95, 0xD7, 0xCB, - 0xA9, 0xA0, 0x3A, 0xCA, 0xFC, 0x52, 0x57, 0xB8, - 0x20, 0x80, 0xF2, 0xD8, 0xAE, 0x3E, 0x18, 0xFC, - 0x0D, 0xE0, 0x9D, 0x01, 0x7B, 0x03, 0xAD, 0x6B, - 0xEE, 0xA4, 0xEC, 0x38, 0x40, 0xAC, 0x85, 0x42, - 0xF8, 0xCF, 0x93, 0x10, 0x8F, 0x8C, 0xFE, 0xF8, - 0x22, 0x64, 0xFC, 0xDD, 0x2C, 0xDD, 0x86, 0x97, - 0x5B, 0x3F, 0x8F, 0xDF, 0x1F, 0x58, 0x22, 0x08, - 0x26, 0x8A, 0x76, 0xE6, 0xC9, 0xFE, 0xDF, 0x42, - 0x90, 0x8D, 0x52, 0x78, 0xA2, 0xBF, 0xBD, 0x3F, - 0xD5, 0xD5, 0xDB, 0xAF, 0xDD, 0x5E, 0x2C, 0x2B, - 0x9F, 0x2E, 0xDC, 0xC1, 0xC4, 0x52, 0x96, 0x38, - 0x49, 0xCB, 0x34, 0xEC, 0x51, 0x00, 0x8D, 0x1B, - 0xF6, 0xDA, 0x50, 0xA0, 0xD1, 0x9D, 0x82, 0x34, - 0x5B, 0x78, 0x8C, 0x05, 0x40, 0xE1, 0x7B, 0x25, - 0xFF, 0xDC, 0xE8, 0xD4, 0x45, 0x3B, 0xBE, 0x75, - 0x1E, 0xDA, 0x96, 0xA4, 0x4C, 0x75, 0xFD, 0xD9, - 0x00, 0x81, 0x85, 0x7D, 0xC0, 0xF8, 0x26, 0x2A, - 0x30, 0x7B, 0x34, 0xCB, 0xEC, 0xD1, 0x56, 0x58, - 0x69, 0xA3, 0x14, 0xD6, 0x4C, 0x09, 0xDC, 0x9D, - 0x4A, 0x80, 0x26, 0x52, 0x2F, 0xDF, 0xE4, 0xCB, - 0x5B, 0x8B, 0x11, 0x05, 0xDA, 0xE0, 0xDB, 0x66, - 0xC8, 0x5B, 0xB4, 0x32, 0x1D, 0xBE, 0x76, 0x84, - 0xEB, 0x6B, 0x6F, 0x85, 0x87, 0xD8, 0x32, 0x0C, - 0x6D, 0xB3, 0x8D, 0xED, 0xD6, 0x18, 0x96, 0xED, - 0x51, 0xAB, 0x0C, 0x7F, 0x42, 0x8F, 0x19, 0xD2, - 0x55, 0xC6, 0xB0, 0xFD, 0xF5, 0x89, 0x51, 0xE5, - 0xCD, 0xB1, 0x96, 0x9C, 0xD9, 0xA7, 0x93, 0x4E, - 0xFD, 0xB9, 0xC8, 0x2E, 0x1E, 0x8D, 0x2A, 0x59, - 0xC9, 0xF7, 0x9D, 0xF1, 0xAA, 0x93, 0xE5, 0x07, - 0x1E, 0x3F, 0xAC, 0x73, 0x19, 0xFF, 0x68, 0x87, - 0x8C, 0xF2, 0x49, 0xDC, 0xBD, 0xCD, 0x10, 0x46, - 0x16, 0xCC, 0xC1, 0xC1, 0xFB, 0xD7, 0x85, 0x56, - 0x9F, 0x55, 0x87, 0x10, 0x44, 0x1B, 0x31, 0xCA, - 0xE3, 0x16, 0x7A, 0x4C, 0xD7, 0xDD, 0xD1, 0x86, - 0x26, 0xC5, 0x43, 0x62, 0x96, 0x20, 0x32, 0xE6, - 0xB7, 0xA2, 0x76, 0x05, 0x61, 0x96, 0xFC, 0x22, - 0x96, 0x7E, 0x90, 0x7C, 0x32, 0x0A, 0x7A, 0xF5, - 0x8C, 0xE3, 0xF5, 0x01, 0xC4, 0xCD, 0x31, 0x8A, - 0x70, 0x75, 0x04, 0xF1, 0xC2, 0x59, 0xE5, 0x07, - 0xA0, 0xD4, 0x7D, 0x25, 0x8E, 0x2F, 0x38, 0xE2, - 0x6A, 0x53, 0x41, 0x34, 0x7A, 0x06, 0xB5, 0x8B, - 0xB0, 0xBF, 0x21, 0xDE, 0xE6, 0x5F, 0x55, 0x6A, - 0xD4, 0x88, 0xA7, 0x36, 0xD4, 0xC6, 0x5C, 0x82, - 0xC6, 0x73, 0xC0, 0x60, 0xD7, 0xA6, 0xA0, 0x77, - 0x5C, 0xF8, 0xC3, 0x9A, 0xA1, 0x31, 0xFD, 0x64, - 0xDB, 0xB1, 0x7B, 0x72, 0x70, 0x4B, 0x7D, 0x1D, - 0x24, 0xBC, 0x5F, 0x84, 0x08, 0x3B, 0xF8, 0xA6, - 0x47, 0xEB, 0xED, 0xCF, 0xDD, 0xA0, 0x91, 0x14, - 0x26, 0x7D, 0x77, 0xCF, 0xBF, 0x39, 0x9B, 0xD9, - 0x2F, 0x3B, 0x2A, 0xA7, 0x2B, 0xBC, 0xF7, 0xDE, - 0x9D, 0x69, 0xBF, 0x90, 0xA4, 0xDE, 0x2C, 0xF8, - 0x24, 0x92, 0x7D, 0xE2, 0xB8, 0xBD, 0xF4, 0x6B, - 0x10, 0x9E, 0xD6, 0x08, 0x51, 0xC5, 0x9C, 0x44, - 0x8E, 0xCB, 0x44, 0x3F, 0x00, 0x26, 0x3C, 0x9C, - 0x25, 0xF4, 0x62, 0x74, 0xD1, 0x7C, 0x29, 0x4C, - 0xEB, 0xF2, 0x53, 0x7D, 0x8F, 0xEA, 0xBD, 0x78, - 0xEE, 0xBC, 0xBA, 0x72, 0x64, 0xA5, 0xB9, 0x45, - 0x08, 0xE0, 0xBF, 0x62, 0xEF, 0xC2, 0x1E, 0x06, - 0xE1, 0xE2, 0xFB, 0x14, 0x44, 0xC5, 0xAB, 0x6F, - 0x84, 0x7F, 0x52, 0x2F, 0x8A, 0xBE, 0xED, 0x04, - 0x6D, 0x6D, 0xDC, 0xFF, 0xBC, 0xB8, 0xC8, 0x1F, - 0xD0, 0x5D, 0x4D, 0x7F, 0x2E, 0x1B, 0xC9, 0x9B, - 0xEA, 0xF8, 0xC1, 0xAF, 0xE3, 0xE0, 0x5B, 0x36, - 0x90, 0xFE, 0xE4, 0xAA, 0x37, 0x5A, 0x3D, 0xCB, - 0x77, 0x57, 0x7C, 0xCC, 0x6E, 0x3E, 0xBE, 0x8A, - 0x98, 0x7C, 0x6D, 0x7E, 0x89, 0x60, 0x73, 0xC0, - 0xCC, 0x0C, 0x48, 0x25, 0x46, 0xB5, 0x39, 0xB4, - 0xFD, 0xF0, 0x4E, 0xED, 0x8E, 0x87, 0xF8, 0x5B, - 0x00, 0xBE, 0x43, 0xA6, 0x0B, 0x21, 0x7E, 0x96, - 0x88, 0x3B, 0x91, 0xD7, 0x88, 0x1A, 0xA0, 0xDD, - 0x3E, 0xBF, 0x5B, 0x0D, 0x08, 0xD0, 0x85, 0x4E, - 0xD4, 0x27, 0x8F, 0xC9, 0x02, 0xE0, 0x60, 0xEA, - 0x16, 0xFB, 0xC2, 0x54, 0xA5, 0x08, 0xC8, 0x6F, - 0x7A, 0xE7, 0x54, 0x93, 0xB8, 0xDD, 0xA0, 0x86, - 0xE9, 0xC1, 0xB2, 0x17, 0xF5, 0xC9, 0x11, 0x97, - 0x83, 0x66, 0x88, 0xCD, 0x2D, 0x0B, 0xB8, 0xE5, - 0x52, 0xD1, 0x13, 0x7A, 0xA7, 0xEB, 0xD5, 0xD5, - 0x60, 0x53, 0x8E, 0x9B, 0xB6, 0xB4, 0x1D, 0x06, - 0x90, 0xB0, 0x6C, 0x66, 0xD1, 0x57, 0x5B, 0x86, - 0x1C, 0x8A, 0x7D, 0x3A, 0x88, 0x4C, 0xC9, 0x88, - 0x1A, 0xC3, 0x00, 0x1F, 0x30, 0x0D, 0xF3, 0x47, - 0x62, 0x79, 0x85, 0x89, 0xF9, 0xEE, 0x5C, 0x92, - 0x43, 0x61, 0x53, 0xD8, 0xC7, 0x32, 0x55, 0x9B, - 0x33, 0x3D, 0x69, 0x8F, 0x3E, 0xC5, 0x82, 0x0E, - 0x8A, 0xA5, 0xF2, 0xE5, 0xA7, 0x69, 0xC2, 0xB4, - 0x7A, 0xFA, 0x27, 0x5F, 0xE4, 0x74, 0xAF, 0x81, - 0x37, 0xC7, 0x01, 0x9A, 0xF2, 0xE6, 0x0C, 0xA7, - 0x5E, 0xDB, 0xE4, 0x8F, 0x81, 0xA6, 0x51, 0xCE, - 0x6B, 0xAB, 0xD3, 0x37, 0x4C, 0x07, 0x72, 0xA8, - 0xAC, 0x36, 0x77, 0xB1, 0x0F, 0x54, 0x77, 0x17, - 0xC9, 0x67, 0x50, 0xDA, 0x44, 0x8B, 0xD9, 0xC7, - 0x93, 0x8C, 0x66, 0xCD, 0x6F, 0xB7, 0x5D, 0x73, - 0x2D, 0xAC, 0x83, 0x1A, 0xDC, 0xE9, 0x17, 0x6D, - 0x94, 0x85, 0x6E, 0x1B, 0xF6, 0x08, 0x38, 0xD0, - 0x9E, 0x63, 0x23, 0xA2, 0x7B, 0x16, 0x09, 0xF9, - 0xC1, 0x21, 0xF4, 0x98, 0xD2, 0xBB, 0x68, 0x58, - 0x18, 0xA0, 0x0D, 0xE7, 0xBA, 0x6B, 0x28, 0x47, - 0xC5, 0x16, 0x14, 0x9F, 0x35, 0x6E, 0xCE, 0xF0, - 0x4F, 0x34, 0xEA, 0x48, 0x35, 0x46, 0xFE, 0xEB, - 0x12, 0xEA, 0x40, 0x77, 0x62, 0x04, 0x30, 0xC3, - 0x9D, 0xBF, 0x47, 0xC0, 0x5E, 0xED, 0x5E, 0xD5, - 0x87, 0xFF, 0xF5, 0x92, 0x21, 0x7C, 0xA9, 0x5A, - 0x2C, 0x3D, 0x1E, 0x6F, 0x6F, 0xF9, 0xFF, 0x20, - 0x9F, 0x8B, 0x30, 0xA9, 0x9D, 0x56, 0xA3, 0x97, - 0x7A, 0x33, 0x17, 0x49, 0x0B, 0x2B, 0x00, 0x1F, - 0x43, 0xCD, 0x8D, 0xDD, 0x1D, 0x8F, 0xC1, 0x6A, - 0x3F, 0xA9, 0xB4, 0x31, 0x54, 0x62, 0x84, 0x5B, - 0x99, 0x5D, 0x2A, 0xB7, 0x6E, 0xA5, 0x39, 0xC7, - 0xF0, 0x4C, 0x31, 0x6C, 0x71, 0xD6, 0x00, 0xE1, - 0xAC, 0x4F, 0xD5, 0xC8, 0xC6, 0x34, 0x3B, 0xC8, - 0x05, 0x5F, 0x17, 0x00, 0xB4, 0x0E, 0xA2, 0xF1, - 0xAB, 0xE9, 0x4B, 0xE0, 0x06, 0x01, 0x3A, 0xA2, - 0x61, 0xF0, 0x72, 0x0A, 0xB7, 0x99, 0xD0, 0xFC, - 0x6D, 0xB5, 0xE9, 0xA4, 0xC3, 0xC5, 0xA7, 0xF8, - 0x2D, 0x70, 0xD2, 0x8E, 0x41, 0x0D, 0xD1, 0x64, - 0xE3, 0xE4, 0x61, 0xA4, 0x6E, 0x81, 0xFB, 0xDC, - 0xB8, 0x10, 0x84, 0x8B, 0xCE, 0xE0, 0x6F, 0x88, - 0x33, 0x25, 0x64, 0x6E, 0x1E, 0x2A, 0x69, 0x3F, - 0xA5, 0xDA, 0x7C, 0x25, 0xEB, 0x21, 0xC4, 0xEA, - 0xB8, 0x7D, 0xC7, 0x87, 0xA2, 0x67, 0x7C, 0xEB, - 0x6A, 0x26, 0xE1, 0x06, 0xFE, 0x78, 0xE1, 0x18, - 0xFF, 0x54, 0x71, 0x3E, 0x00, 0x59, 0x7B, 0xFA, - 0x52, 0x8C, 0x2A, 0xED, 0x06, 0x9A, 0x12, 0x6D, - 0xE3, 0x74, 0x6F, 0x06, 0x65, 0xE1, 0x75, 0x80, - 0x63, 0x0F, 0x70, 0x2F, 0xAB, 0xC0, 0xF1, 0xCD, - 0x7F, 0x57, 0xAA, 0x71, 0xF6, 0x38, 0xD8, 0xAF, - 0x37, 0xD3, 0xD9, 0xE0, 0xA7, 0xE9, 0x05, 0x5D, - 0xA3, 0xDF, 0x86, 0x48, 0x3F, 0x25, 0xDE, 0xBA, - 0x18, 0xCE, 0xF6, 0x99, 0xEB, 0x87, 0x70, 0xC7, - 0x85, 0x84, 0x79, 0x8A, 0xD8, 0x02, 0x8B, 0xAD, - 0xC5, 0x9D, 0x2A, 0xF9, 0xAE, 0xAE, 0x37, 0xEC, - 0x93, 0x91, 0x16, 0x10, 0x5F, 0x9F, 0x64, 0xEF, - 0x82, 0x78, 0xC6, 0x4D, 0xED, 0x3F, 0xD4, 0x33, - 0xA7, 0xB8, 0x82, 0x09, 0x16, 0xBE, 0xDC, 0x6B, - 0x7A, 0x75, 0x69, 0x8A, 0xDE, 0xD3, 0xFD, 0xE8, - 0x86, 0x75, 0x42, 0x83, 0x03, 0x57, 0x30, 0x70, - 0xA5, 0xA3, 0x85, 0x1F, 0x9F, 0x21, 0xEA, 0xC7, - 0x80, 0xFA, 0x8A, 0xA4, 0x02, 0x3E, 0x39, 0x11, - 0x48, 0x7D, 0x85, 0x2A, 0x53, 0x77, 0x43, 0x5A, - 0x5F, 0xFF, 0x9C, 0x60, 0x4B, 0x5D, 0x95, 0xB0, - 0x96, 0x8A, 0xE0, 0xEC, 0xF4, 0x43, 0x1B, 0x10, - 0x3F, 0xA6, 0xBA, 0x71, 0xC4, 0xDC, 0x81, 0x73, - 0xA2, 0xDE, 0x1F, 0x79, 0xDD, 0xB6, 0x0D, 0x2D, - 0x0C, 0x8E, 0x56, 0x55, 0xD0, 0x94, 0x44, 0x29, - 0x16, 0x92, 0x99, 0x2D, 0x99, 0xFC, 0x48, 0xF2, - 0x16, 0x0E, 0xC0, 0xAC, 0xE4, 0xC4, 0x92, 0x07, - 0xBB, 0xB7, 0x6D, 0x7F, 0x2A, 0x85, 0xE1, 0x81, - 0x02, 0xB9, 0x5A, 0x51, 0x45, 0x88, 0xF5, 0x9F, - 0x16, 0x2D, 0x33, 0xCE, 0xD6, 0x18, 0x07, 0x03, - 0xED, 0xC3, 0x6C, 0x8B, 0x33, 0x94, 0x88, 0x81, - 0x0D, 0x2E, 0xAE, 0x96, 0x25, 0xCE, 0xE3, 0x83, - 0x27, 0x1C, 0x71, 0x72, 0xEE, 0xD6, 0xB5, 0x48, - 0x69, 0x60, 0xE8, 0x99, 0x18, 0x74, 0xB0, 0x13, - 0x53, 0x59, 0x3D, 0x70, 0x70, 0xBD, 0xEB, 0x7A, - 0x9F, 0x92, 0x29, 0xAB, 0x77, 0x0E, 0xEB, 0x46, - 0x37, 0x8D, 0x57, 0xD9, 0x56, 0xDF, 0x7A, 0x86, - 0x40, 0x04, 0x02, 0x98, 0xF7, 0x00, 0xF4, 0x41, - 0x5B, 0xDD, 0x3A, 0x96, 0x15, 0xA4, 0x65, 0xDB, - 0x01, 0x28, 0x22, 0x12, 0xCF, 0x1A, 0xEC, 0x4B, - 0x0B, 0x8C, 0xB3, 0xB1, 0x7E, 0x5E, 0xFA, 0x28, - 0x6C, 0x6C, 0x04, 0x5B, 0x43, 0x9C, 0x74, 0x9F, - 0xE1, 0xD4, 0x50, 0x75, 0xD8, 0xE7, 0xA0, 0x0F, - 0xBE, 0x84, 0x48, 0xFC, 0xAC, 0xAA, 0x15, 0x3D, - 0x69, 0x70, 0x9D, 0x9F, 0xF2, 0xB9, 0x7C, 0xDB, - 0x26, 0xC0, 0xC3, 0x79, 0x28, 0x7C, 0xE6, 0x48, - 0x61, 0xAD, 0xD7, 0x89, 0xD0, 0xC8, 0x93, 0x9A, - 0x14, 0x21, 0xB0, 0x85, 0xD6, 0x23, 0x4C, 0xE1, - 0xA7, 0x49, 0xDE, 0x3D, 0xCB, 0xE8, 0xE0, 0x61, - 0x5C, 0xB3, 0xBC, 0xDC, 0x6A, 0x81, 0xA5, 0xC4, - 0x9D, 0x92, 0x85, 0x74, 0x5F, 0x1C, 0xA8, 0xA0, - 0x64, 0x1E, 0x32, 0x68, 0x83, 0x41, 0x93, 0x34, - 0x82, 0x18, 0x3E, 0x24, 0x5C, 0x1F, 0x9C, 0xD2, - 0x80, 0x28, 0xC3, 0x8A, 0x23, 0x18, 0x1A, 0x44, - 0x5A, 0xA6, 0xEA, 0xCC, 0xE2, 0x06, 0x06, 0xE6, - 0xF7, 0xF1, 0xDF, 0x70, 0x68, 0x83, 0xCD, 0xA5, - 0x2F, 0x3F, 0x2B, 0x68, 0xDE, 0x26, 0xDD, 0x37, - 0x71, 0xE9, 0x50, 0x03, 0x2C, 0xC7, 0x20, 0x0C, - 0x20, 0x23, 0xC8, 0x24, 0x96, 0x50, 0x82, 0x82, - 0xCD, 0x3B, 0xC4, 0x7F, 0xEC, 0xE5, 0xD9, 0x7C, - 0xA1, 0xCE, 0x35, 0x74, 0x4D, 0x03, 0xD7, 0xA4, - 0x28, 0xB7, 0xAF, 0x12, 0xB0, 0xCB, 0x8E, 0x65, - 0x7C, 0x01, 0x30, 0xF8, 0xA3, 0xA2, 0x54, 0x97, - 0x6E, 0xC8, 0xF7, 0xDC, 0xCF, 0x3A, 0xBF, 0x31, - 0xF4, 0xB0, 0xB3, 0xF7, 0x12, 0x6F, 0xFC, 0x48, - 0x77, 0xF3, 0xD1, 0xA0, 0x66, 0xD2, 0x6A, 0x23, - 0x2F, 0xA9, 0x99, 0x21, 0x61, 0x22, 0x54, 0x11, - 0xED, 0x7D, 0xDB, 0x93, 0xC3, 0x5C, 0x6A, 0x37, - 0x7F, 0x30, 0xCF, 0x22, 0xAA, 0x39, 0x2D, 0x5C, - 0x4F, 0xEE, 0x4F, 0x73, 0xC9, 0xEF, 0x6E, 0xD3, - 0xA0, 0x27, 0x97, 0x14, 0x52, 0x3B, 0x19, 0x18, - 0x65, 0x1E, 0x9B, 0x0F, 0xFA, 0x55, 0x0F, 0x16, - 0x10, 0x53, 0xEE, 0x78, 0x01, 0x39, 0x7B, 0x4C, - 0x18, 0x49, 0x98, 0x7C, 0x17, 0x9E, 0x76, 0x3E, - 0xCC, 0x60, 0xA4, 0xE4, 0xC5, 0x36, 0xB7, 0xE2, - 0x66, 0x3E, 0x4C, 0x72, 0x67, 0x14, 0xB0, 0x2E, - 0xC3, 0x16, 0x9E, 0x84, 0x07, 0xBA, 0x59, 0x2B, - 0x0E, 0xB8, 0x46, 0xF3, 0x69, 0x2D, 0xD4, 0x46, - 0x51, 0xEE, 0x08, 0x47, 0x21, 0xCA, 0xC0, 0xFE, - 0x1C, 0xCC, 0x30, 0x27, 0x07, 0xEF, 0xE2, 0x46, - 0x64, 0xE0, 0x5B, 0xDC, 0x69, 0xC8, 0x39, 0x04, - 0xAC, 0xB8, 0xCF, 0x97, 0x12, 0x1C, 0x7E, 0x5C, - 0x6D, 0xB2, 0x7E, 0xA2, 0x8E, 0x77, 0xBC, 0xDA, - 0x55, 0xD2, 0xBC, 0xC1, 0xC5, 0xFC, 0xC5, 0x52, - 0xAB, 0x83, 0xBC, 0xE4, 0x23, 0x8C, 0xA1, 0x80, - 0x62, 0xC2, 0xD2, 0x3A, 0x8B, 0x80, 0x0C, 0x82, - 0x09, 0xC3, 0xA4, 0xCD, 0xDA, 0xF1, 0x16, 0x16, - 0x57, 0x8A, 0x84, 0x55, 0x66, 0xFC, 0x28, 0x9A, - 0x8E, 0x3C, 0x88, 0xF5, 0x54, 0xC4, 0x92, 0x60, - 0x71, 0xDA, 0x89, 0x32, 0x6B, 0xEB, 0x25, 0x9A, - 0x0E, 0x1F, 0x6D, 0x84, 0x4E, 0xBF, 0x7B, 0x28, - 0x1F, 0x9F, 0xC3, 0x74, 0x3A, 0x65, 0x49, 0x9E, - 0x73, 0x94, 0x63, 0x48, 0x18, 0xE1, 0x33, 0xFA, - 0xC6, 0x64, 0xFA, 0x0C, 0x88, 0xF1, 0x01, 0xCE, - 0xC3, 0xFE, 0xD8, 0x79, 0x29, 0x50, 0xBF, 0x6E, - 0x49, 0x74, 0x84, 0x9E, 0x1E, 0xBD, 0x27, 0x69, - 0x1B, 0xF5, 0x51, 0x9B, 0x70, 0x2E, 0x1A, 0xA4, - 0xB3, 0xDB, 0xAD, 0xAB, 0x5D, 0xFA, 0x34, 0xFB, - 0x0E, 0xD9, 0xD4, 0xA9, 0xDF, 0x4B, 0x6B, 0x63, - 0xCA, 0x71, 0x65, 0xE2, 0xA9, 0x08, 0x27, 0x40, - 0x8C, 0x48, 0x2D, 0x9D, 0xBC, 0x97, 0x24, 0x68, - 0x58, 0x4F, 0x42, 0x37, 0x60, 0x04, 0xE7, 0x8B, - 0xE0, 0x67, 0x00, 0x9E, 0x43, 0x30, 0x4B, 0xED, - 0xC1, 0x07, 0xA4, 0xE2, 0xA8, 0x9C, 0xAF, 0x18, - 0x5C, 0x9B, 0xB7, 0xE9, 0xFD, 0x2C, 0xB9, 0x2A, - 0xEF, 0x36, 0x3B, 0xD7, 0x96, 0xF3, 0x60, 0x4E, - 0xDC, 0x08, 0xA7, 0xC5, 0x45, 0xB8, 0x37, 0x02, - 0xD3, 0xCF, 0x80, 0x88, 0x52, 0x10, 0x3E, 0x01, - 0x3B, 0xFE, 0xA1, 0x61, 0xAF, 0x25, 0x0B, 0xCC, - 0x72, 0x77, 0x1D, 0x0C, 0x48, 0x4D, 0xD5, 0x55, - 0x41, 0x72, 0x3A, 0x21, 0x0D, 0x68, 0x3B, 0x99, - 0x8C, 0xDB, 0xAF, 0x3D, 0x9A, 0x5E, 0x71, 0x78, - 0x6F, 0x1C, 0xF4, 0x7B, 0x86, 0x22, 0x51, 0xB5, - 0x16, 0x33, 0x60, 0x87, 0x9A, 0xC0, 0x20, 0x2D, - 0x33, 0x49, 0x51, 0x54, 0x5C, 0x5F, 0x71, 0x76, - 0x7C, 0x8F, 0x96, 0xA9, 0xD6, 0xE4, 0xF2, 0x1F, - 0x28, 0x43, 0x4D, 0x7E, 0x96, 0xBB, 0xC5, 0xE3, - 0xEF, 0xF3, 0xFD, 0x02, 0x0C, 0x17, 0x23, 0x3E, - 0x7F, 0x99, 0xB0, 0xE3, 0xE8, 0xF5, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x17, 0x23, 0x2E - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - static const byte sk_65[] = { - 0xF2, 0x6B, 0xFE, 0x12, 0x68, 0x86, 0xF4, 0x82, - 0x22, 0x94, 0x4D, 0x02, 0x18, 0xFA, 0xC1, 0x7C, - 0xD8, 0xA9, 0xCC, 0x6D, 0x67, 0xA0, 0x23, 0xFD, - 0xC0, 0x7A, 0xFF, 0xC2, 0xD0, 0x25, 0xF7, 0x70, - 0x63, 0x85, 0x0D, 0x88, 0x0E, 0x98, 0xFE, 0xE5, - 0x02, 0xE0, 0x17, 0x32, 0x70, 0x00, 0xCC, 0xAF, - 0x61, 0x45, 0x73, 0xB3, 0x5A, 0xDE, 0xFE, 0xBC, - 0xAC, 0xEE, 0xA4, 0xB2, 0xC4, 0xD0, 0x45, 0xE5, - 0xBB, 0xFD, 0x3E, 0x5A, 0x72, 0xE3, 0x71, 0xAD, - 0x83, 0xB9, 0x94, 0x98, 0x77, 0xD8, 0xE6, 0x56, - 0xD4, 0x6B, 0x47, 0x75, 0x0F, 0x73, 0x0F, 0x96, - 0xDB, 0x43, 0x0B, 0x18, 0x60, 0x88, 0x67, 0x5D, - 0x9A, 0x9B, 0xD7, 0x8E, 0x47, 0xB8, 0x9D, 0x04, - 0xA8, 0x51, 0x7E, 0xD2, 0x22, 0x06, 0x95, 0x33, - 0x9F, 0x99, 0xA9, 0x7F, 0x35, 0x3C, 0xE4, 0x20, - 0x47, 0x77, 0x20, 0x9F, 0x5F, 0x3C, 0x9E, 0x9A, - 0x36, 0x14, 0x54, 0x01, 0x57, 0x48, 0x60, 0x50, - 0x75, 0x28, 0x64, 0x61, 0x72, 0x60, 0x54, 0x20, - 0x75, 0x48, 0x60, 0x32, 0x73, 0x85, 0x34, 0x24, - 0x68, 0x63, 0x71, 0x73, 0x81, 0x26, 0x71, 0x68, - 0x32, 0x61, 0x24, 0x71, 0x14, 0x18, 0x26, 0x15, - 0x05, 0x77, 0x36, 0x27, 0x50, 0x35, 0x21, 0x82, - 0x50, 0x15, 0x31, 0x47, 0x48, 0x24, 0x43, 0x76, - 0x18, 0x85, 0x66, 0x18, 0x05, 0x64, 0x27, 0x01, - 0x06, 0x06, 0x01, 0x45, 0x42, 0x60, 0x80, 0x68, - 0x25, 0x08, 0x08, 0x36, 0x13, 0x05, 0x04, 0x32, - 0x34, 0x87, 0x00, 0x70, 0x71, 0x70, 0x02, 0x51, - 0x37, 0x15, 0x08, 0x28, 0x25, 0x72, 0x61, 0x67, - 0x08, 0x52, 0x63, 0x44, 0x07, 0x88, 0x60, 0x42, - 0x03, 0x17, 0x24, 0x64, 0x80, 0x08, 0x70, 0x23, - 0x56, 0x41, 0x46, 0x17, 0x46, 0x01, 0x57, 0x74, - 0x02, 0x76, 0x31, 0x64, 0x73, 0x83, 0x50, 0x62, - 0x72, 0x61, 0x62, 0x75, 0x45, 0x73, 0x46, 0x33, - 0x65, 0x14, 0x36, 0x46, 0x12, 0x26, 0x04, 0x34, - 0x02, 0x81, 0x20, 0x34, 0x41, 0x88, 0x26, 0x77, - 0x33, 0x40, 0x18, 0x58, 0x03, 0x41, 0x16, 0x58, - 0x88, 0x04, 0x88, 0x32, 0x71, 0x05, 0x85, 0x83, - 0x42, 0x55, 0x34, 0x20, 0x18, 0x46, 0x12, 0x54, - 0x28, 0x03, 0x67, 0x10, 0x84, 0x31, 0x76, 0x00, - 0x40, 0x85, 0x46, 0x71, 0x71, 0x56, 0x00, 0x50, - 0x15, 0x33, 0x43, 0x13, 0x37, 0x57, 0x13, 0x86, - 0x43, 0x77, 0x85, 0x57, 0x54, 0x81, 0x75, 0x60, - 0x37, 0x31, 0x28, 0x52, 0x20, 0x78, 0x65, 0x53, - 0x76, 0x10, 0x84, 0x87, 0x57, 0x13, 0x66, 0x03, - 0x56, 0x81, 0x36, 0x66, 0x68, 0x41, 0x55, 0x64, - 0x63, 0x70, 0x26, 0x21, 0x02, 0x30, 0x28, 0x35, - 0x02, 0x45, 0x88, 0x80, 0x02, 0x06, 0x44, 0x58, - 0x24, 0x13, 0x88, 0x83, 0x22, 0x34, 0x22, 0x50, - 0x47, 0x11, 0x01, 0x86, 0x45, 0x60, 0x67, 0x36, - 0x82, 0x22, 0x18, 0x74, 0x11, 0x60, 0x58, 0x60, - 0x87, 0x26, 0x31, 0x85, 0x12, 0x70, 0x84, 0x83, - 0x88, 0x68, 0x88, 0x51, 0x00, 0x55, 0x02, 0x57, - 0x77, 0x42, 0x13, 0x23, 0x14, 0x04, 0x76, 0x80, - 0x72, 0x25, 0x51, 0x56, 0x10, 0x63, 0x12, 0x21, - 0x03, 0x86, 0x27, 0x30, 0x28, 0x12, 0x01, 0x37, - 0x48, 0x32, 0x53, 0x86, 0x15, 0x46, 0x50, 0x05, - 0x34, 0x87, 0x61, 0x04, 0x88, 0x18, 0x35, 0x85, - 0x44, 0x46, 0x24, 0x67, 0x43, 0x83, 0x02, 0x26, - 0x56, 0x41, 0x41, 0x77, 0x86, 0x56, 0x41, 0x75, - 0x25, 0x61, 0x36, 0x05, 0x47, 0x65, 0x00, 0x14, - 0x32, 0x38, 0x16, 0x81, 0x06, 0x30, 0x61, 0x25, - 0x16, 0x30, 0x50, 0x44, 0x13, 0x08, 0x75, 0x00, - 0x50, 0x20, 0x68, 0x21, 0x55, 0x74, 0x61, 0x18, - 0x62, 0x05, 0x15, 0x51, 0x08, 0x24, 0x01, 0x13, - 0x81, 0x33, 0x64, 0x83, 0x23, 0x00, 0x55, 0x73, - 0x62, 0x40, 0x61, 0x75, 0x15, 0x78, 0x21, 0x14, - 0x13, 0x64, 0x21, 0x47, 0x07, 0x76, 0x80, 0x76, - 0x76, 0x17, 0x75, 0x50, 0x61, 0x14, 0x40, 0x82, - 0x87, 0x83, 0x50, 0x87, 0x30, 0x86, 0x35, 0x30, - 0x28, 0x20, 0x10, 0x01, 0x48, 0x18, 0x34, 0x65, - 0x23, 0x10, 0x25, 0x42, 0x40, 0x22, 0x54, 0x34, - 0x35, 0x33, 0x71, 0x70, 0x20, 0x61, 0x55, 0x74, - 0x33, 0x01, 0x02, 0x60, 0x58, 0x24, 0x80, 0x12, - 0x46, 0x41, 0x38, 0x10, 0x76, 0x67, 0x34, 0x63, - 0x48, 0x85, 0x06, 0x48, 0x04, 0x23, 0x22, 0x66, - 0x57, 0x71, 0x68, 0x18, 0x04, 0x32, 0x01, 0x31, - 0x01, 0x55, 0x22, 0x27, 0x55, 0x72, 0x10, 0x00, - 0x43, 0x88, 0x76, 0x62, 0x84, 0x77, 0x07, 0x77, - 0x14, 0x07, 0x20, 0x53, 0x74, 0x17, 0x51, 0x17, - 0x66, 0x84, 0x47, 0x83, 0x61, 0x03, 0x52, 0x10, - 0x05, 0x40, 0x46, 0x55, 0x61, 0x47, 0x26, 0x70, - 0x40, 0x22, 0x10, 0x34, 0x41, 0x01, 0x03, 0x48, - 0x33, 0x05, 0x72, 0x32, 0x75, 0x82, 0x45, 0x85, - 0x20, 0x70, 0x80, 0x82, 0x20, 0x23, 0x62, 0x81, - 0x15, 0x47, 0x80, 0x23, 0x67, 0x23, 0x73, 0x34, - 0x44, 0x33, 0x85, 0x10, 0x05, 0x50, 0x30, 0x03, - 0x48, 0x13, 0x01, 0x36, 0x45, 0x11, 0x06, 0x33, - 0x82, 0x22, 0x78, 0x75, 0x42, 0x02, 0x40, 0x45, - 0x04, 0x47, 0x43, 0x05, 0x30, 0x44, 0x42, 0x02, - 0x28, 0x26, 0x64, 0x24, 0x74, 0x75, 0x86, 0x11, - 0x85, 0x43, 0x25, 0x46, 0x10, 0x62, 0x82, 0x71, - 0x08, 0x27, 0x45, 0x13, 0x73, 0x18, 0x84, 0x73, - 0x51, 0x51, 0x67, 0x14, 0x70, 0x11, 0x07, 0x08, - 0x62, 0x16, 0x25, 0x27, 0x36, 0x68, 0x44, 0x01, - 0x18, 0x63, 0x74, 0x50, 0x31, 0x13, 0x43, 0x65, - 0x80, 0x11, 0x16, 0x52, 0x86, 0x42, 0x51, 0x81, - 0x51, 0x17, 0x05, 0x68, 0x05, 0x73, 0x60, 0x37, - 0x63, 0x85, 0x86, 0x11, 0x23, 0x23, 0x38, 0x13, - 0x87, 0x48, 0x82, 0x74, 0x71, 0x81, 0x87, 0x65, - 0x58, 0x26, 0x60, 0x34, 0x76, 0x16, 0x15, 0x24, - 0x06, 0x78, 0x16, 0x40, 0x03, 0x45, 0x72, 0x31, - 0x63, 0x73, 0x31, 0x85, 0x02, 0x66, 0x44, 0x36, - 0x24, 0x82, 0x56, 0x38, 0x86, 0x10, 0x40, 0x54, - 0x72, 0x70, 0x24, 0x22, 0x72, 0x78, 0x47, 0x07, - 0x86, 0x30, 0x48, 0x72, 0x84, 0x57, 0x06, 0x34, - 0x78, 0x37, 0x63, 0x25, 0x56, 0x64, 0x81, 0x30, - 0x62, 0x77, 0x22, 0x84, 0x20, 0x10, 0x74, 0x25, - 0x04, 0x21, 0x76, 0x47, 0x72, 0x35, 0x05, 0x06, - 0x22, 0x50, 0x34, 0x11, 0x26, 0x67, 0x03, 0x05, - 0x42, 0x04, 0x16, 0x01, 0x27, 0x17, 0x86, 0x67, - 0x70, 0x51, 0x53, 0x13, 0x12, 0x62, 0x03, 0x25, - 0x05, 0x38, 0x37, 0x44, 0x02, 0x66, 0x84, 0x74, - 0x14, 0x40, 0x35, 0x20, 0x40, 0x30, 0x44, 0x64, - 0x27, 0x50, 0x77, 0x47, 0x06, 0x15, 0x84, 0x48, - 0x13, 0x14, 0x32, 0x48, 0x11, 0x74, 0x80, 0x68, - 0x85, 0x81, 0x17, 0x67, 0x38, 0x22, 0x76, 0x16, - 0x18, 0x44, 0x55, 0x47, 0x85, 0x36, 0x44, 0x11, - 0x52, 0x01, 0x81, 0x50, 0x41, 0x00, 0x00, 0x25, - 0x83, 0x41, 0x62, 0x22, 0x12, 0x54, 0x88, 0x77, - 0x70, 0x48, 0x84, 0x25, 0x77, 0x75, 0x40, 0x16, - 0x46, 0x24, 0x88, 0x81, 0x65, 0x70, 0x02, 0x66, - 0x28, 0x64, 0x12, 0x40, 0x30, 0x60, 0x53, 0x06, - 0x44, 0x02, 0x48, 0x78, 0x75, 0x68, 0x21, 0x23, - 0x30, 0x05, 0x81, 0x17, 0x72, 0x66, 0x88, 0x71, - 0x50, 0x25, 0x03, 0x51, 0x42, 0x27, 0x20, 0x81, - 0x03, 0x52, 0x73, 0x53, 0x63, 0x57, 0x13, 0x60, - 0x41, 0x20, 0x47, 0x12, 0x55, 0x57, 0x58, 0x16, - 0x38, 0x63, 0x21, 0x34, 0x51, 0x76, 0x33, 0x26, - 0x70, 0x41, 0x18, 0x11, 0x07, 0x37, 0x16, 0x12, - 0x01, 0x14, 0x28, 0x56, 0x78, 0x10, 0x86, 0x24, - 0x24, 0x32, 0x01, 0x13, 0x57, 0x53, 0x46, 0x46, - 0x24, 0x05, 0x20, 0x16, 0x56, 0x83, 0x30, 0x30, - 0x61, 0x20, 0x75, 0x07, 0x05, 0x74, 0x14, 0x17, - 0x43, 0x72, 0x23, 0x04, 0x18, 0x61, 0x50, 0x13, - 0x67, 0x31, 0x75, 0x36, 0x71, 0x02, 0x38, 0x74, - 0x21, 0x80, 0x20, 0x48, 0x66, 0x23, 0x52, 0x54, - 0x77, 0x27, 0x45, 0x73, 0x23, 0x88, 0x60, 0x50, - 0x88, 0x82, 0x70, 0x23, 0x72, 0x08, 0x44, 0x66, - 0x44, 0x36, 0x12, 0x57, 0x66, 0x14, 0x25, 0x12, - 0x17, 0x34, 0x64, 0x82, 0x01, 0x54, 0x61, 0x57, - 0x50, 0x31, 0x65, 0x64, 0x75, 0x44, 0x76, 0x48, - 0x16, 0x44, 0x46, 0x55, 0x80, 0x64, 0x26, 0x53, - 0x27, 0x22, 0x10, 0x87, 0x84, 0x03, 0x15, 0x35, - 0x15, 0x20, 0x86, 0x14, 0x04, 0x03, 0x26, 0x43, - 0x31, 0x43, 0x31, 0x45, 0x46, 0x34, 0x36, 0x87, - 0x44, 0x41, 0x21, 0x77, 0x61, 0x20, 0x85, 0x06, - 0x28, 0x51, 0x15, 0x62, 0x77, 0x20, 0x38, 0x58, - 0x78, 0x27, 0x12, 0x22, 0x46, 0x71, 0x51, 0x38, - 0x11, 0x15, 0x40, 0x03, 0x78, 0x36, 0x15, 0x57, - 0x34, 0x28, 0x53, 0x21, 0x37, 0x35, 0x04, 0x76, - 0x00, 0x56, 0x72, 0x48, 0x46, 0x01, 0x56, 0x67, - 0x62, 0x36, 0x14, 0x51, 0x23, 0x54, 0x32, 0x35, - 0x82, 0x83, 0x21, 0x60, 0x38, 0x62, 0x21, 0x03, - 0x62, 0x76, 0x40, 0x34, 0x66, 0x88, 0x50, 0x73, - 0x00, 0x53, 0x87, 0x31, 0x37, 0x50, 0x11, 0x32, - 0x86, 0x52, 0x18, 0x64, 0x16, 0x63, 0x48, 0x71, - 0x70, 0x47, 0x24, 0x85, 0x31, 0x86, 0x60, 0x86, - 0x33, 0x52, 0x85, 0x82, 0x68, 0x17, 0x70, 0x88, - 0x84, 0x56, 0x52, 0x77, 0x04, 0x48, 0x22, 0x22, - 0x54, 0x57, 0x20, 0x31, 0x76, 0x47, 0x26, 0x25, - 0x04, 0x35, 0x38, 0x44, 0x55, 0x21, 0x14, 0x02, - 0x13, 0x64, 0x74, 0x87, 0x68, 0x68, 0x73, 0x05, - 0x22, 0x45, 0x54, 0x45, 0x83, 0x46, 0x64, 0x54, - 0x80, 0x07, 0x32, 0x87, 0x52, 0x43, 0x54, 0x54, - 0x14, 0x73, 0x24, 0x87, 0x36, 0x41, 0x74, 0x84, - 0x06, 0x35, 0x13, 0x40, 0x61, 0x54, 0x21, 0x31, - 0x48, 0x63, 0x05, 0x74, 0x24, 0x84, 0x74, 0x76, - 0x11, 0x10, 0x16, 0x63, 0x77, 0x12, 0x26, 0x61, - 0x31, 0x28, 0x70, 0x34, 0x25, 0x01, 0x30, 0x76, - 0x76, 0x06, 0x21, 0x58, 0x42, 0x87, 0x31, 0x72, - 0x76, 0x03, 0x76, 0x26, 0x78, 0x05, 0x88, 0x25, - 0x25, 0x86, 0x17, 0x02, 0x85, 0x88, 0x76, 0x20, - 0x36, 0x57, 0x30, 0x81, 0x83, 0x61, 0x05, 0x80, - 0x21, 0x45, 0x74, 0x01, 0x12, 0x74, 0x51, 0x28, - 0x77, 0x26, 0x30, 0x14, 0x54, 0x84, 0x13, 0x78, - 0x06, 0x00, 0x12, 0x64, 0x00, 0x37, 0x44, 0x68, - 0x40, 0x57, 0x05, 0x27, 0x07, 0x41, 0x56, 0x22, - 0x31, 0x40, 0x23, 0x26, 0x55, 0x42, 0x55, 0x16, - 0x02, 0x65, 0x32, 0x16, 0x33, 0x44, 0x46, 0x48, - 0x04, 0x52, 0x06, 0x53, 0x44, 0x40, 0x11, 0x28, - 0x46, 0x67, 0x56, 0x81, 0x72, 0x75, 0x51, 0x38, - 0x21, 0x86, 0x46, 0x03, 0x22, 0x87, 0x21, 0x70, - 0x68, 0x50, 0x75, 0x13, 0x11, 0x44, 0x35, 0x12, - 0x60, 0x02, 0x13, 0x47, 0x18, 0x38, 0x78, 0x86, - 0x38, 0x58, 0x45, 0x57, 0x23, 0x03, 0x88, 0x66, - 0x56, 0x82, 0x18, 0x31, 0x20, 0x08, 0x61, 0x47, - 0x78, 0x08, 0x68, 0x37, 0x21, 0x04, 0x65, 0x47, - 0x58, 0x70, 0x34, 0x58, 0x73, 0x24, 0x22, 0x30, - 0x66, 0x05, 0x01, 0x28, 0x87, 0x85, 0x77, 0x74, - 0x23, 0x86, 0x65, 0x84, 0x85, 0x57, 0x85, 0x63, - 0x06, 0x55, 0x61, 0x75, 0x46, 0x22, 0x87, 0x00, - 0x18, 0x53, 0x08, 0x03, 0x07, 0x50, 0x42, 0x70, - 0xFC, 0xB8, 0x7B, 0x22, 0x3D, 0x24, 0xAE, 0x5D, - 0xB1, 0x89, 0x04, 0x21, 0xC3, 0xFF, 0x1D, 0x59, - 0xB8, 0x4B, 0x19, 0xE2, 0x4D, 0x14, 0x36, 0x99, - 0x19, 0x1C, 0x7E, 0x9A, 0x46, 0x48, 0x42, 0x20, - 0x6B, 0xBA, 0x24, 0x7E, 0x8C, 0x6B, 0x27, 0xBA, - 0x26, 0xE6, 0x8A, 0xD5, 0xA7, 0x1D, 0x03, 0x61, - 0xCD, 0x5C, 0x74, 0xCE, 0x50, 0xC2, 0xCE, 0xF1, - 0x91, 0x31, 0xEF, 0x54, 0x66, 0x23, 0x7F, 0xFE, - 0xF7, 0xFE, 0x6B, 0x5F, 0xD1, 0x98, 0x23, 0x8E, - 0x1C, 0xA0, 0xB1, 0x01, 0x30, 0xC6, 0x29, 0xCC, - 0x91, 0x91, 0xF5, 0x78, 0x6F, 0x5C, 0xD6, 0x28, - 0xA4, 0x22, 0x56, 0xCB, 0x6F, 0xC7, 0xD7, 0x09, - 0x56, 0x88, 0xAF, 0x1B, 0xC8, 0x43, 0x51, 0xA4, - 0x7B, 0x4B, 0x38, 0x2E, 0xF6, 0x1F, 0xD6, 0x5C, - 0x9E, 0xC2, 0x26, 0xF4, 0x2B, 0x0A, 0x19, 0x7C, - 0x6A, 0xD8, 0xF0, 0xB0, 0x15, 0xD0, 0xB1, 0xC7, - 0xE0, 0x14, 0x28, 0x95, 0x6A, 0x9B, 0xB2, 0xDE, - 0x9A, 0x97, 0xE5, 0x75, 0x66, 0xF8, 0xF5, 0x66, - 0x86, 0xA1, 0xF4, 0x68, 0x0C, 0xEC, 0xEA, 0x87, - 0x3B, 0x69, 0x1C, 0xF8, 0xBD, 0x63, 0xAB, 0x73, - 0x73, 0xBA, 0xE8, 0x09, 0x5B, 0xA7, 0x76, 0x3E, - 0x50, 0xD6, 0x83, 0x9D, 0x00, 0x35, 0xBB, 0xFB, - 0x91, 0xBA, 0x60, 0x72, 0x17, 0x98, 0xFB, 0x2C, - 0x80, 0x2C, 0x60, 0x3A, 0x08, 0xA1, 0x24, 0x05, - 0xE0, 0xB5, 0x20, 0xEA, 0x41, 0x43, 0x8F, 0xEA, - 0xEF, 0xA5, 0x62, 0xDC, 0x78, 0x92, 0xF4, 0x58, - 0x9F, 0x8D, 0x2B, 0x96, 0x5E, 0xE5, 0x49, 0x73, - 0xA7, 0x2C, 0x8D, 0x33, 0x5C, 0x62, 0x61, 0x98, - 0x80, 0x64, 0x13, 0x31, 0x03, 0x10, 0xE3, 0x2E, - 0xFE, 0x6B, 0x39, 0xB5, 0xCF, 0xB1, 0xD1, 0x33, - 0xAD, 0xE0, 0x1B, 0xCE, 0x94, 0x21, 0x6C, 0xF4, - 0xCD, 0x8F, 0x86, 0x43, 0x03, 0x1D, 0xB8, 0xC2, - 0x47, 0xB5, 0x73, 0x21, 0xCA, 0x1E, 0xFB, 0xB8, - 0x53, 0x63, 0x7D, 0x0C, 0x57, 0x52, 0x14, 0xFC, - 0x77, 0xA5, 0xA6, 0x84, 0xD5, 0x0A, 0xBF, 0xE4, - 0xE9, 0x71, 0x99, 0x8E, 0x06, 0x6E, 0x50, 0x24, - 0xDA, 0x02, 0x76, 0x8A, 0xED, 0xE1, 0x3E, 0x83, - 0xF0, 0x51, 0x54, 0xA9, 0x99, 0x29, 0x48, 0x42, - 0x7A, 0xA9, 0x8C, 0x87, 0x42, 0x51, 0xAF, 0x56, - 0x94, 0x23, 0x53, 0x89, 0x44, 0xFA, 0xD8, 0x93, - 0xFC, 0x65, 0x6E, 0x9C, 0xED, 0x80, 0x6A, 0x85, - 0xD9, 0xC3, 0x36, 0x71, 0x02, 0x25, 0x29, 0x36, - 0x8E, 0x7E, 0xC7, 0x0C, 0x9E, 0xE9, 0x74, 0x30, - 0x1C, 0x08, 0xCB, 0xE6, 0xAC, 0x5E, 0x88, 0xE6, - 0x37, 0x79, 0x5C, 0xB2, 0xA2, 0x15, 0xFF, 0xAA, - 0x08, 0xED, 0xDE, 0x40, 0xAC, 0xFA, 0xEE, 0x2A, - 0x40, 0xD5, 0x05, 0xCF, 0x58, 0xA6, 0x69, 0x66, - 0x31, 0x5A, 0x68, 0x98, 0x24, 0x03, 0xD8, 0x1B, - 0xFA, 0x89, 0xE3, 0x7C, 0x9E, 0x42, 0x1D, 0xA5, - 0x88, 0xBA, 0x7E, 0x42, 0x2A, 0xC7, 0x44, 0x6A, - 0x1E, 0x61, 0xC8, 0x22, 0x29, 0x9D, 0xFC, 0x34, - 0xEC, 0xFA, 0xBE, 0x5C, 0xB6, 0x26, 0xB9, 0x6C, - 0x8E, 0xA6, 0xC9, 0x3B, 0xDB, 0xD2, 0xD5, 0xBD, - 0x70, 0xC5, 0xF8, 0x26, 0x7A, 0x84, 0xE0, 0x07, - 0xA7, 0x11, 0x5E, 0x5B, 0xE5, 0xF1, 0x20, 0x32, - 0xA3, 0x7C, 0xAB, 0x05, 0xD5, 0x41, 0xE3, 0xDE, - 0xA5, 0x1A, 0x83, 0x2E, 0xDE, 0x8D, 0x34, 0x9A, - 0xFD, 0xD5, 0xE6, 0xFC, 0xFC, 0x83, 0x46, 0xE3, - 0xD4, 0x7C, 0xF1, 0x7F, 0xEA, 0x87, 0x5E, 0x38, - 0x5D, 0xB9, 0x8A, 0xC2, 0xDB, 0xE8, 0xB4, 0xF8, - 0x05, 0x37, 0x31, 0x0D, 0xD9, 0x4C, 0xD0, 0xB6, - 0x25, 0xE9, 0x97, 0x85, 0xDB, 0x04, 0x9A, 0x01, - 0xF5, 0x4B, 0xA1, 0xF4, 0x2A, 0xDF, 0xEC, 0xAE, - 0x24, 0x11, 0xD3, 0x2B, 0x2F, 0x84, 0x6C, 0x88, - 0xA3, 0x0C, 0x76, 0xEA, 0x0A, 0x38, 0xB2, 0x71, - 0xB6, 0xAC, 0xA8, 0x23, 0x6E, 0x61, 0xEB, 0xB8, - 0x4A, 0x9D, 0xC4, 0x9E, 0x5C, 0x5B, 0xEE, 0x7E, - 0x7D, 0x8D, 0xA2, 0xC1, 0xA1, 0xA0, 0xA3, 0x14, - 0x50, 0xE0, 0x8F, 0xAB, 0xBB, 0x1B, 0x1F, 0x05, - 0xAA, 0xE3, 0x00, 0xD8, 0xCD, 0xE7, 0x35, 0xB4, - 0x7B, 0xBD, 0xB0, 0x5C, 0xCC, 0x0C, 0x05, 0x33, - 0x6B, 0xE4, 0x51, 0x73, 0x1B, 0x6B, 0x77, 0x7B, - 0xE5, 0xCB, 0xAF, 0x98, 0x53, 0x5F, 0x7E, 0x08, - 0xFF, 0xCD, 0x8A, 0x44, 0x9E, 0x1D, 0x43, 0x6A, - 0x4F, 0x05, 0x99, 0x01, 0xF5, 0x6F, 0x01, 0x30, - 0xBD, 0x15, 0xD7, 0x51, 0x16, 0x45, 0x40, 0x6B, - 0xF3, 0x13, 0xCA, 0x1F, 0x22, 0x02, 0xA4, 0xA8, - 0x6A, 0x1D, 0x04, 0x7F, 0xD5, 0x8A, 0x3E, 0x87, - 0x7F, 0x1D, 0x5A, 0x79, 0x75, 0xD1, 0x6D, 0x67, - 0xB3, 0x23, 0xC6, 0x28, 0x7B, 0x9C, 0xCE, 0xEE, - 0x98, 0x9E, 0xE8, 0x44, 0xA9, 0x3E, 0x7E, 0xFD, - 0x3B, 0xD9, 0xD8, 0x31, 0x6D, 0xA3, 0x77, 0xDF, - 0x0B, 0xB9, 0xE2, 0x61, 0xA2, 0x71, 0xD5, 0x0C, - 0xB7, 0x01, 0x67, 0xC3, 0x0D, 0x19, 0x2D, 0xAA, - 0xDE, 0x96, 0x0E, 0xEA, 0x33, 0x5E, 0xEC, 0x52, - 0xE5, 0x2D, 0x95, 0x39, 0xE1, 0xF9, 0x5D, 0x9E, - 0xB6, 0x5E, 0x54, 0x8F, 0x16, 0x60, 0x99, 0xED, - 0x88, 0x2C, 0x30, 0x72, 0x53, 0x6A, 0x6C, 0xAA, - 0x05, 0x21, 0xA5, 0xAA, 0x7C, 0x64, 0x72, 0xA0, - 0xC0, 0x4F, 0x80, 0xDA, 0x20, 0x5D, 0x52, 0x18, - 0x77, 0x07, 0xDF, 0x5C, 0x2F, 0x2E, 0xA2, 0x5F, - 0xEF, 0x00, 0xCA, 0x7B, 0xF0, 0xD3, 0xB7, 0xF8, - 0x1E, 0x31, 0x9E, 0x61, 0xCA, 0x2C, 0xC5, 0xA5, - 0x25, 0xA2, 0x7B, 0x56, 0xAA, 0xBA, 0xE4, 0xD5, - 0x35, 0xE5, 0xEC, 0x24, 0x2D, 0x81, 0x1A, 0x24, - 0xD7, 0x45, 0x76, 0xBF, 0x4B, 0x8A, 0x72, 0xFA, - 0x5F, 0xAE, 0xC1, 0xA2, 0x83, 0xB6, 0x1D, 0x60, - 0x28, 0x7E, 0x1E, 0x2E, 0xC8, 0xC6, 0xAB, 0x04, - 0x56, 0x5F, 0xD5, 0xCD, 0x64, 0x26, 0x34, 0x94, - 0xE8, 0x03, 0x41, 0x63, 0x35, 0x5B, 0x45, 0x84, - 0xCE, 0xFA, 0x0B, 0x66, 0x40, 0x85, 0x1A, 0xE1, - 0x23, 0xE9, 0x8F, 0xBD, 0xA9, 0x23, 0xFC, 0xA3, - 0x8E, 0x38, 0xB3, 0x84, 0xE2, 0xB9, 0x54, 0x41, - 0x4B, 0x36, 0x4F, 0xB8, 0xB0, 0x87, 0x56, 0x04, - 0x8B, 0x75, 0xC7, 0x85, 0x31, 0xD4, 0xA5, 0x12, - 0x99, 0xC4, 0x9D, 0xEA, 0x4B, 0x36, 0x8C, 0x19, - 0x82, 0xFE, 0xAD, 0x4A, 0xB1, 0xAA, 0x52, 0x35, - 0xA4, 0xA1, 0x7F, 0xB0, 0x64, 0x6F, 0x04, 0x04, - 0x7B, 0xF0, 0x80, 0x48, 0xA1, 0x1C, 0xF8, 0x95, - 0x8B, 0x68, 0x34, 0xB7, 0xFD, 0x00, 0x31, 0x30, - 0x6A, 0x39, 0xC8, 0xAE, 0x68, 0xC3, 0x53, 0x65, - 0x19, 0x7C, 0x1E, 0x57, 0x97, 0xFC, 0x47, 0x3E, - 0xB1, 0x94, 0x54, 0x48, 0x6F, 0xEB, 0xAA, 0xEC, - 0x5C, 0x2E, 0xE9, 0x2C, 0xCC, 0x3A, 0xF3, 0xC7, - 0x43, 0x08, 0x7D, 0x2D, 0x56, 0x4B, 0x7D, 0xE9, - 0xE5, 0x96, 0xF3, 0x12, 0x4B, 0xE9, 0x08, 0xF3, - 0x04, 0x5A, 0x75, 0x1A, 0x7D, 0x7E, 0x37, 0xE6, - 0xC8, 0xC1, 0xFE, 0xF3, 0x32, 0x63, 0x2D, 0x0B, - 0xBE, 0x05, 0x13, 0x6A, 0x44, 0x58, 0x7F, 0x54, - 0x5F, 0x5F, 0xF5, 0x2F, 0xB8, 0x0B, 0xF2, 0xBF, - 0x0B, 0xF4, 0x30, 0x2F, 0xCF, 0xEC, 0xFE, 0x08, - 0xEC, 0x51, 0xF2, 0x29, 0xD7, 0xAC, 0x28, 0xE1, - 0x75, 0x42, 0x61, 0xBC, 0xE7, 0xB1, 0x53, 0x4F, - 0x7D, 0x3B, 0xB0, 0x8D, 0x01, 0x15, 0x1E, 0xBE, - 0xEC, 0xD9, 0x54, 0xC2, 0x4E, 0x70, 0x3E, 0xEA, - 0x39, 0x14, 0x26, 0xB7, 0x01, 0x79, 0x5D, 0x06, - 0x93, 0x85, 0x99, 0xAA, 0x7D, 0xDC, 0xF9, 0x2E, - 0x44, 0x56, 0x9B, 0xFA, 0x9D, 0x91, 0x2A, 0x8E, - 0x89, 0x48, 0x51, 0xE3, 0xD0, 0x53, 0xB3, 0xAD, - 0x43, 0x29, 0xB7, 0x6A, 0x50, 0xC0, 0x78, 0x4D, - 0x42, 0xF3, 0x7C, 0x5F, 0x90, 0x06, 0xAC, 0x2A, - 0x9D, 0x5D, 0xE5, 0x18, 0x3F, 0xA3, 0xC6, 0x5E, - 0xCD, 0xB6, 0xCF, 0x31, 0x67, 0xA4, 0x7A, 0x8F, - 0x5C, 0x59, 0xBD, 0xD7, 0x9B, 0x7C, 0x24, 0x06, - 0x97, 0xE1, 0x59, 0x72, 0x85, 0x02, 0x74, 0xFE, - 0x41, 0xAD, 0x84, 0xD9, 0x0D, 0xCB, 0x34, 0x16, - 0x11, 0xE7, 0x66, 0xD2, 0x12, 0xDC, 0x76, 0x3C, - 0xF9, 0x4C, 0x8C, 0x41, 0x94, 0xCC, 0xA9, 0x1B, - 0x21, 0x03, 0x28, 0xE4, 0xA3, 0x37, 0x4E, 0x29, - 0xD2, 0x48, 0x11, 0x2B, 0xB6, 0x68, 0xA3, 0x92, - 0xC2, 0x0D, 0x87, 0x91, 0x03, 0x76, 0xB5, 0x00, - 0x1F, 0x3F, 0xFB, 0xBE, 0xC3, 0xE0, 0x08, 0xBF, - 0x2F, 0x46, 0xF7, 0x40, 0x73, 0x83, 0xA8, 0x0D, - 0xDA, 0x08, 0x2B, 0xDB, 0x8F, 0xE9, 0x25, 0xE4, - 0xF1, 0x2B, 0x37, 0x92, 0x27, 0x0E, 0x5A, 0x46, - 0xB8, 0xC5, 0x7B, 0x6E, 0x5A, 0x4B, 0x95, 0x58, - 0x4E, 0xF3, 0x80, 0xED, 0x49, 0x93, 0xEC, 0x52, - 0x9F, 0xF2, 0xAA, 0x39, 0xDD, 0x6D, 0xFE, 0x88, - 0xFD, 0xEB, 0x6E, 0xDA, 0x0E, 0x8D, 0xA7, 0x95, - 0x66, 0xB0, 0x7D, 0x37, 0xAE, 0xCC, 0x64, 0x37, - 0x25, 0x95, 0x18, 0xF9, 0x7E, 0x6C, 0x86, 0x12, - 0xB3, 0xC3, 0x57, 0x03, 0xBF, 0xF9, 0x92, 0x15, - 0x3E, 0x66, 0x0E, 0x2E, 0x20, 0x77, 0xA0, 0x5F, - 0x26, 0x5F, 0xB5, 0x12, 0x1D, 0xD7, 0x9F, 0x0A, - 0x33, 0xBC, 0x38, 0xEC, 0x83, 0x08, 0xE2, 0xA9, - 0x84, 0xCD, 0x3D, 0x8A, 0xC6, 0x09, 0x30, 0x6F, - 0x77, 0x93, 0xD7, 0xDE, 0x08, 0xD8, 0x45, 0xA4, - 0x21, 0x28, 0x26, 0x4E, 0x5C, 0x17, 0x77, 0x74, - 0xE3, 0x5D, 0x58, 0x7C, 0x96, 0xB2, 0x47, 0x05, - 0x42, 0x21, 0x78, 0x5D, 0xB3, 0x8D, 0xDC, 0x6F, - 0xDB, 0xF7, 0xBF, 0x6F, 0x66, 0x4B, 0xD6, 0x30, - 0x14, 0xC0, 0xBF, 0x94, 0x2A, 0x83, 0x91, 0x6C, - 0xBF, 0x2C, 0x42, 0x85, 0x41, 0xED, 0xA2, 0xBB, - 0xCB, 0xFC, 0xF9, 0x35, 0xDE, 0xFC, 0xB3, 0x63, - 0xE1, 0x64, 0xAA, 0x51, 0x2D, 0xD5, 0xFA, 0x79, - 0x53, 0x31, 0x40, 0x0B, 0x9B, 0xD0, 0x3C, 0xE3, - 0xD7, 0x2D, 0x91, 0x05, 0x62, 0xC3, 0x81, 0xFE, - 0x93, 0x1E, 0x8C, 0x37, 0x9E, 0x30, 0x23, 0x73, - 0x3A, 0xB9, 0x18, 0x6E, 0x5D, 0xEF, 0x31, 0xE9, - 0xF6, 0x25, 0x7F, 0xB8, 0x47, 0x74, 0xCE, 0x28, - 0x23, 0xD4, 0x4F, 0xC1, 0x42, 0xCB, 0xEB, 0x59, - 0x8A, 0x68, 0xFD, 0x39, 0x48, 0x37, 0x1A, 0x5D, - 0x0C, 0x09, 0x64, 0xC6, 0xE1, 0x21, 0x5D, 0x89, - 0xF6, 0x58, 0xE5, 0x50, 0x4A, 0xD0, 0x93, 0xBC, - 0x86, 0x02, 0xBA, 0xD2, 0x36, 0x24, 0x9D, 0x7E, - 0xAF, 0xB6, 0xA1, 0xA0, 0x7C, 0xA7, 0xC7, 0x4D, - 0xAC, 0x30, 0x7A, 0x70, 0x0F, 0x2F, 0x81, 0x40, - 0xC1, 0x08, 0x6B, 0x21, 0xF2, 0xE1, 0x51, 0x9C, - 0x1D, 0x46, 0x94, 0x93, 0x2A, 0x1C, 0x18, 0xCB, - 0xED, 0x0D, 0x0E, 0x29, 0xDE, 0xFC, 0x52, 0x52, - 0x97, 0x93, 0x70, 0x85, 0xE2, 0x63, 0x0D, 0xC6, - 0x2C, 0x0C, 0x05, 0x0C, 0x4F, 0xF2, 0x70, 0x87, - 0x2B, 0xE7, 0xBB, 0x52, 0x2D, 0xD6, 0x99, 0x1B, - 0x59, 0x6F, 0xC2, 0x92, 0x11, 0x72, 0x5D, 0x99, - 0x60, 0xB1, 0x6A, 0x52, 0xEA, 0x91, 0x78, 0x19, - 0x23, 0xC0, 0x3B, 0x71, 0x9D, 0x09, 0xD6, 0xE7, - 0x10, 0x6D, 0xC5, 0x70, 0x55, 0xC1, 0x9E, 0xF8, - 0x76, 0xE5, 0xEC, 0x23, 0x17, 0xE7, 0xE4, 0x23, - 0xC9, 0x71, 0x45, 0x40, 0x72, 0x01, 0x9E, 0x28, - 0xE6, 0x5C, 0x81, 0xED, 0x52, 0x7A, 0xF1, 0x89, - 0xBD, 0xFC, 0xF5, 0x21, 0xC9, 0x23, 0x40, 0x75, - 0x54, 0xAC, 0xBF, 0x69, 0x45, 0xD1, 0x85, 0x44, - 0x3D, 0xAC, 0x1A, 0x1A, 0x08, 0x8A, 0x68, 0xB5, - 0x17, 0xD5, 0xD9, 0x90, 0xE1, 0x10, 0x30, 0xDE, - 0x4F, 0x75, 0x09, 0xE8, 0x7A, 0x77, 0xB3, 0x7C, - 0xF2, 0x0A, 0x78, 0xE2, 0xCD, 0x48, 0x94, 0x17, - 0x3C, 0x32, 0xA3, 0x27, 0x35, 0x51, 0x16, 0xB7, - 0x18, 0x51, 0x44, 0x42, 0x65, 0x60, 0x6A, 0x0A, - 0x9A, 0x6D, 0x94, 0x61, 0xCC, 0x5D, 0xD8, 0x3B, - 0x52, 0x7E, 0x4D, 0xBD, 0x6A, 0xEE, 0x03, 0x3D, - 0x66, 0x1C, 0x3D, 0xE8, 0xC1, 0x82, 0x97, 0xE5, - 0xD1, 0x31, 0xDB, 0xC8, 0xF6, 0x96, 0xE9, 0x47, - 0xC9, 0x5C, 0x71, 0x77, 0x2B, 0x62, 0x44, 0x74, - 0x4D, 0x06, 0x1E, 0x14, 0x45, 0x3B, 0x9F, 0xB1, - 0x17, 0x34, 0x80, 0x2D, 0xBA, 0x6F, 0x81, 0x79, - 0xB8, 0x0D, 0xAC, 0xFE, 0xB6, 0xBA, 0xDF, 0xD1, - 0x4E, 0x05, 0x76, 0x73, 0x6F, 0x80, 0x10, 0xC5, - 0x32, 0x87, 0xA3, 0xD3, 0x93, 0x18, 0x79, 0xEF, - 0x27, 0x3B, 0xBF, 0xCD, 0xB5, 0xDE, 0x5B, 0x88, - 0xAF, 0x51, 0xFD, 0x8A, 0x8C, 0x8F, 0x0A, 0x58, - 0x94, 0xE2, 0x25, 0xDF, 0xE8, 0x73, 0xFC, 0xC0, - 0x3C, 0xB1, 0xC9, 0xB5, 0x78, 0x25, 0xF1, 0x11, - 0x75, 0xC8, 0x7D, 0x08, 0x78, 0xB9, 0xE6, 0x15, - 0x6B, 0x40, 0x1B, 0x2F, 0xBE, 0x30, 0x03, 0x6B, - 0xFC, 0x7D, 0xB1, 0x00, 0x02, 0x71, 0xB7, 0xFF, - 0x5D, 0x63, 0xA8, 0x09, 0x50, 0x75, 0xEF, 0xBD, - 0x34, 0xEE, 0x73, 0xDE, 0x60, 0x14, 0x95, 0x2D, - 0x15, 0xBC, 0x30, 0x23, 0x07, 0x02, 0xD8, 0x7C, - 0x9A, 0x96, 0xD5, 0xE9, 0xF1, 0xF0, 0xF9, 0x26, - 0x25, 0x96, 0xAA, 0x58, 0xB7, 0xE4, 0x1A, 0xD9, - 0xA0, 0x9E, 0xAD, 0xB9, 0x44, 0xB6, 0x3F, 0xD9, - 0x8B, 0x34, 0x7D, 0x11, 0xBD, 0x52, 0x97, 0xC3, - 0xBE, 0x28, 0x23, 0x85, 0x9F, 0x2F, 0x35, 0xA4, - 0xE5, 0x4E, 0x13, 0x68, 0x89, 0x09, 0xC3, 0x1A, - 0x83, 0xE7, 0xDE, 0xCE, 0x4B, 0xDF, 0x31, 0x03, - 0x9C, 0x72, 0xBA, 0x54, 0xA1, 0x20, 0x2D, 0x17, - 0x2A, 0x6B, 0x8A, 0x2C, 0xE9, 0x6D, 0xED, 0xCA, - 0x5B, 0x24, 0xF7, 0xB9, 0x42, 0xC1, 0x4E, 0x13, - 0x3D, 0xAA, 0x8A, 0xB8, 0xCB, 0xD2, 0x4C, 0x1F, - 0x0B, 0xBE, 0xB1, 0x27, 0x97, 0x67, 0x26, 0x72, - 0xE2, 0x2C, 0xE6, 0xC2, 0x12, 0x37, 0xB2, 0x79, - 0x7D, 0x8E, 0x54, 0xCC, 0x8F, 0xC7, 0x6C, 0x43, - 0xB4, 0x75, 0x29, 0x66, 0xA3, 0xA4, 0x09, 0x44, - 0xE7, 0x2D, 0x37, 0x3F, 0x0D, 0x3E, 0x84, 0xF9, - 0xA3, 0x30, 0x1E, 0xAE, 0x9E, 0xDA, 0x35, 0x44, - 0x4B, 0x1E, 0x49, 0xE6, 0x61, 0x18, 0x20, 0x6A, - 0x56, 0xEB, 0x46, 0xD4, 0x8D, 0x20, 0x95, 0x4A, - 0x77, 0x9A, 0x1E, 0x74, 0xE3, 0xE3, 0xB2, 0xBD, - 0x40, 0x3D, 0x46, 0xB3, 0x35, 0x10, 0x11, 0xCB, - 0x6F, 0x8A, 0x86, 0x72, 0xB2, 0xF3, 0xD9, 0x90, - 0x31, 0x47, 0x55, 0x77, 0x6C, 0xE3, 0x23, 0x7F, - 0x0A, 0x50, 0xE7, 0x71, 0x20, 0x53, 0x09, 0xC0, - 0x5D, 0x9A, 0x78, 0xD3, 0x68, 0x88, 0xA8, 0x3B, - 0xAD, 0x78, 0xE8, 0x6E, 0xDF, 0x36, 0xA8, 0x8D, - 0xC7, 0x1C, 0x5F, 0x11, 0x56, 0x83, 0x90, 0xD0, - 0xB5, 0x92, 0x02, 0xE2, 0x9E, 0xE1, 0x1E, 0xCB, - 0x9F, 0x56, 0x89, 0x63, 0xE8, 0x17, 0x70, 0x83, - 0x9F, 0xF2, 0x39, 0xAD, 0x03, 0x15, 0x6C, 0xC0, - 0x71, 0xE8, 0xB7, 0x40, 0x15, 0x95, 0xEC, 0xEE, - 0x62, 0x34, 0xAC, 0x34, 0xB7, 0x11, 0x70, 0x3D, - 0x68, 0xC6, 0x7A, 0x28, 0x83, 0xBE, 0x9C, 0x18, - 0xAB, 0x7F, 0x1A, 0x1B, 0x2E, 0x5C, 0x90, 0xA2, - 0x32, 0x3C, 0xDF, 0x1E, 0xD4, 0x98, 0x50, 0xB8, - 0x39, 0x38, 0x19, 0x2F, 0x62, 0x8C, 0x9E, 0xF6, - 0x5B, 0x77, 0x93, 0x95, 0xEE, 0x37, 0x34, 0xC7, - 0xA9, 0x01, 0xF7, 0x47, 0x38, 0x86, 0xD7, 0x12, - 0xD2, 0x15, 0x41, 0x68, 0x16, 0xC3, 0x01, 0x6C, - 0xC2, 0x83, 0x83, 0xD4, 0x78, 0x7B, 0x46, 0xF6, - 0x89, 0xDC, 0xE1, 0x11, 0xDA, 0x4D, 0xB8, 0xAC, - 0x10, 0xE8, 0x4F, 0x66, 0xA5, 0xC2, 0xBD, 0xA1, - 0xB3, 0xFC, 0x97, 0x7F, 0x6A, 0x0F, 0x73, 0x2E, - 0xDA, 0x4F, 0x69, 0xB9, 0x75, 0x51, 0xA4, 0xB8, - 0xB2, 0x61, 0xD6, 0x88, 0x71, 0x94, 0xD3, 0xAF, - 0xE7, 0xF4, 0xB8, 0x7F, 0xB3, 0xD4, 0x1A, 0xC6, - 0xDC, 0xDB, 0x8F, 0xD3, 0x9B, 0xE5, 0x0F, 0x2F, - 0x38, 0x2B, 0xAA, 0x4D, 0x19, 0xC7, 0x45, 0x0A, - 0xB3, 0xA1, 0xAC, 0x4C, 0x63, 0xCF, 0x93, 0x0A, - 0xAA, 0x51, 0x7A, 0x15, 0xD5, 0xC0, 0xD5, 0x49, - 0xFE, 0x03, 0x22, 0x00, 0x71, 0xD3, 0x69, 0x22, - 0x3E, 0x51, 0x29, 0x6E, 0xCB, 0xF8, 0x0D, 0xCD, - 0x79, 0xFB, 0xDF, 0xB8, 0xDF, 0x62, 0x90, 0x4D, - 0x5A, 0x36, 0x20, 0x0F, 0x29, 0xCC, 0x47, 0xE8, - 0x0C, 0x86, 0x15, 0xEF, 0x1B, 0x78, 0xDB, 0xB2, - 0x6A, 0x1A, 0xA7, 0xA6, 0x6E, 0x4D, 0x9A, 0x51, - 0xC9, 0x72, 0xAC, 0x9C, 0x94, 0xEA, 0xB9, 0x95, - 0x14, 0xB5, 0xAD, 0xAE, 0x62, 0x51, 0xE8, 0xAA, - 0x30, 0xA5, 0xE5, 0x87, 0x42, 0x4E, 0x3B, 0x7B, - 0xCC, 0x42, 0xEB, 0xE7, 0x33, 0x3D, 0x92, 0x10, - 0x97, 0x26, 0x53, 0xF8, 0x11, 0x8B, 0x83, 0xAB, - 0xE1, 0xBF, 0x7E, 0x9E, 0xE9, 0xCD, 0xAC, 0x28, - 0x99, 0x7D, 0x14, 0x4C, 0x34, 0xDE, 0xA6, 0x5B, - 0x59, 0x51, 0x2C, 0x73, 0x29, 0x27, 0xDB, 0xA8, - 0x20, 0x7D, 0x56, 0x91, 0x98, 0x47, 0x21, 0xB7, - 0x27, 0x9A, 0xFC, 0xDD, 0xE0, 0x6A, 0x6B, 0xD2, - 0x68, 0x0E, 0xBB, 0x9B, 0x2E, 0x3C, 0xFE, 0xE9, - 0xA6, 0x6D, 0x73, 0xD0, 0xC0, 0xDE, 0xD6, 0x53, - 0x70, 0x8B, 0x09, 0x0B, 0x82, 0x30, 0x65, 0xF9, - 0x70, 0x78, 0x49, 0xE3, 0xB3, 0x7D, 0x41, 0x25, - 0xCA, 0x69, 0x3E, 0x74, 0x2E, 0x02, 0x3F, 0x05, - 0x8A, 0xDC, 0x95, 0x07, 0x9B, 0xB0, 0x0C, 0x56, - 0xBE, 0x0D, 0x2F, 0x07, 0x81, 0x82, 0xEF, 0xAB, - 0x30, 0x72, 0xB0, 0xFD, 0x09, 0x76, 0x7B, 0x8A, - 0x13, 0xC2, 0x80, 0x5A, 0x75, 0x91, 0xB5, 0xB2, - 0xE1, 0x24, 0x75, 0xB5, 0xC8, 0x24, 0xDB, 0xEB, - 0x15, 0x79, 0x30, 0xAB, 0x38, 0x9F, 0x91, 0x5F, - 0xCC, 0xEC, 0x8F, 0x48, 0x64, 0x7E, 0xE4, 0xB6, - 0x6A, 0xB6, 0xB5, 0x36, 0xC2, 0x2D, 0xE3, 0xE5, - 0xEE, 0x4A, 0xBB, 0x42, 0xF8, 0xE0, 0x00, 0x9A, - 0xF0, 0x45, 0x54, 0xF1, 0x28, 0xAC, 0xA3, 0xCC, - 0xE4, 0x03, 0xBB, 0x01, 0xFD, 0xB7, 0xB5, 0xE2, - 0xA7, 0x2B, 0x82, 0x91, 0x1C, 0x1F, 0xD0, 0x65, - 0x23, 0xFF, 0x90, 0x19, 0x21, 0x41, 0xC6, 0x89, - 0xEC, 0xCB, 0x0B, 0xE6, 0x1B, 0x4C, 0x6D, 0x77, - 0x06, 0x29, 0x59, 0x02, 0x18, 0xA4, 0x01, 0x1A, - 0x68, 0xB8, 0x6F, 0xF5, 0x0D, 0x23, 0x03, 0x9C, - 0x9B, 0xCD, 0x43, 0x61, 0xF6, 0x98, 0x0A, 0x60, - 0xEF, 0x88, 0xD1, 0x44, 0x0D, 0x30, 0x4C, 0x5B, - 0x4B, 0x52, 0xD6, 0xED, 0xC2, 0x91, 0x12, 0xDC, - 0x3A, 0x8A, 0xF2, 0x85, 0x89, 0xE8, 0xF6, 0x29, - 0x48, 0xED, 0xB6, 0xBE, 0x76, 0x64, 0x6D, 0x59, - 0x66, 0x06, 0xB9, 0xE7, 0x05, 0xFE, 0xE3, 0xF1, - 0x44, 0xA0, 0x7B, 0xC9, 0xED, 0x1D, 0x40, 0x0C - }; - static const byte msg_65[] = { - 0x88, 0x5A, 0x0B, 0xDD, 0x8D, 0xE7, 0x4B, 0xC7, - 0x11, 0x69, 0x0A, 0xA6, 0x14, 0xDD, 0xA5, 0x32, - 0xF4, 0xD8, 0xC7, 0xEA, 0x2C, 0x27, 0x85, 0x5A, - 0x57, 0x8E, 0x63, 0x61, 0xCA, 0xAE, 0x2C, 0x0B, - 0xF7, 0xE7, 0x73, 0xB4, 0x90, 0x0A, 0x32, 0x93, - 0x12, 0x1A, 0x6E, 0x0D, 0xD6, 0x10, 0x10, 0x7A, - 0x7A, 0x65, 0xBD, 0x6E, 0x11, 0xF6, 0x19, 0xFC, - 0x0E, 0x9C, 0xE7, 0xBF, 0x7B, 0x5D, 0xE1, 0x80, - 0x76, 0xE1, 0xB7, 0x25, 0x57, 0x20, 0x97, 0xB2, - 0x47, 0xD8, 0xE0, 0x46, 0x24, 0x94, 0xF6, 0x3F, - 0x4E, 0xDF, 0xBE, 0xAC, 0x2F, 0xA2, 0xEC, 0xAE, - 0x0C, 0xCA, 0xD4, 0x28, 0xBD, 0x79, 0x6C, 0xF2, - 0x60, 0x92, 0xA1, 0xCD, 0x50, 0x5F, 0x59, 0x39, - 0x11, 0xED, 0x10, 0xFD, 0xA4, 0x26, 0xC7, 0xE3, - 0xC5, 0xA4, 0x39, 0xE8, 0x50, 0x42, 0x13, 0x18, - 0xAE, 0x07, 0x85, 0xB0, 0x5A, 0xA9, 0x9F, 0x58, - 0xD6, 0x85, 0x6D, 0xEB, 0x78, 0xBB, 0xE4, 0x88, - 0xC7, 0x0E, 0xEE, 0x42, 0xBB, 0x9A, 0xB5, 0x92, - 0x7B, 0x2E, 0xD2, 0x5C, 0xD1, 0x43, 0x77, 0xCD, - 0x7E, 0x1A, 0x88, 0x34, 0xE8, 0x21, 0x48, 0x00, - 0x2F, 0xCB, 0x98, 0x5A, 0xB9, 0x43, 0x12, 0x97, - 0x01, 0x0B, 0x2B, 0xC7, 0x0F, 0x91, 0x32, 0x37, - 0x3C, 0x6D, 0xD2, 0xA2, 0xA9, 0xCF, 0x24, 0x6F, - 0xE0, 0x26, 0x2E, 0x8B, 0x53, 0xE6, 0x93, 0xF3, - 0xD6, 0xFE, 0xD3, 0xED, 0xD1, 0xF2, 0x00, 0x4E, - 0xD1, 0x7C, 0x2C, 0xF5, 0xB2, 0x57, 0xF4, 0xAD, - 0xA5, 0xDC, 0x1A, 0x7C, 0x15, 0x1F, 0xFE, 0x03, - 0xB9, 0x6A, 0x4D, 0xB9, 0x91, 0xE4, 0x13, 0x2D, - 0x01, 0xDE, 0x1F, 0x03, 0x3E, 0xD8, 0x13, 0x57, - 0xEA, 0xE7, 0xC1, 0xA8, 0xD2, 0xDD, 0xD9, 0x2D, - 0xDF, 0xC0, 0x6F, 0x67, 0x13, 0x94, 0xD2, 0xF6, - 0x02, 0x12, 0xC6, 0xE4, 0x49, 0xEA, 0x35, 0x93, - 0x24, 0xFE, 0xD3, 0x8C, 0x84, 0xD3, 0x6D, 0x15, - 0x43, 0x2E, 0x11, 0xE7, 0x15, 0x00, 0x15, 0x80, - 0x4F, 0x97, 0xA3, 0xC6, 0x77, 0x38, 0x2C, 0xD4, - 0x6A, 0xA4, 0xD7, 0xAC, 0xEE, 0x56, 0x86, 0xFB, - 0xCE, 0xD7, 0xA9, 0xE8, 0x5D, 0x29, 0xC4, 0x83, - 0x86, 0xE6, 0x9F, 0x40, 0x69, 0x3D, 0x9A, 0xDA, - 0xBE, 0xB4, 0x3B, 0xD0, 0xE5, 0x03, 0x6A, 0xCD, - 0xE6, 0x31, 0xB5, 0x49, 0x57, 0xF4, 0xFC, 0xE2, - 0x6F, 0x7A, 0x24, 0xB0, 0xDA, 0xD4, 0x34, 0x8A, - 0x67, 0x89, 0xCA, 0xE1, 0x06, 0x13, 0x06, 0x20, - 0xED, 0x2F, 0xA0, 0xEA, 0x38, 0xF5, 0x75, 0xF2, - 0x87, 0x83, 0xBC, 0x92, 0xB3, 0x2B, 0x0C, 0x51, - 0xC8, 0xA6, 0x54, 0x6F, 0x5D, 0x88, 0x09, 0x5F, - 0x9F, 0x73, 0xC6, 0x5B, 0xF6, 0xF2, 0x51, 0xA2, - 0xC4, 0x69, 0x74, 0x64, 0x45, 0xC5, 0x88, 0xC3, - 0xEA, 0x81, 0x39, 0xE4, 0x33, 0xD4, 0xFE, 0x2D, - 0xE4, 0xC0, 0xD3, 0x58, 0xB6, 0xCA, 0x8A, 0x62, - 0x94, 0xE6, 0xAF, 0xC1, 0xB9, 0x60, 0x74, 0xC0, - 0x68, 0xEF, 0x67, 0xB1, 0x58, 0xF1, 0x12, 0x9C, - 0xFE, 0x0A, 0x3A, 0xE7, 0xEB, 0x9D, 0x45, 0x4F, - 0x35, 0x7F, 0xBB, 0x6A, 0xB3, 0xB9, 0x92, 0x2B, - 0x1B, 0xCD, 0x55, 0x58, 0x61, 0x87, 0xCD, 0x24, - 0x69, 0x24, 0x82, 0x78, 0x23, 0x34, 0xAC, 0x9F, - 0x2B, 0x86, 0x12, 0x48, 0xF6, 0xA5, 0x30, 0xE9, - 0x3E, 0x11, 0x48, 0x87, 0x84, 0xDD, 0xE5, 0xEA, - 0x67, 0x8A, 0xE5, 0x05, 0x90, 0x3E, 0x23, 0x10, - 0x53, 0x30, 0x8C, 0x1B, 0x87, 0x84, 0x60, 0x7E, - 0x06, 0x3F, 0x48, 0x98, 0xA4, 0xFA, 0xB6, 0x01, - 0xD3, 0xE6, 0x96, 0x85, 0x97, 0x21, 0x55, 0xF6, - 0x3F, 0x09, 0xFD, 0x84, 0xB2, 0xB3, 0xDF, 0x74, - 0x1F, 0xB6, 0x42, 0xAC, 0xA6, 0x03, 0xD0, 0xD5, - 0x96, 0xE0, 0xA8, 0xDA, 0xD4, 0x24, 0xF4, 0x64, - 0x0F, 0x98, 0xB9, 0x6F, 0xB2, 0x42, 0xC6, 0x95, - 0xDC, 0x33, 0x1F, 0x57, 0x59, 0xF7, 0x5E, 0xAF, - 0x19, 0x1C, 0xBD, 0x98, 0x5E, 0xC5, 0x99, 0x8D, - 0x56, 0x48, 0xC8, 0x5E, 0xB6, 0x31, 0x29, 0x5F, - 0x61, 0x56, 0x7C, 0x11, 0x63, 0xF9, 0x90, 0xDC, - 0x4F, 0xA1, 0x71, 0x40, 0x91, 0x26, 0x1E, 0x5F, - 0x3E, 0x5F, 0x0B, 0xFE, 0x84, 0x55, 0xBB, 0x8B, - 0xAA, 0x1D, 0x69, 0x42, 0x1F, 0x15, 0x37, 0x4E, - 0x73, 0xB0, 0x7E, 0x78, 0x57, 0x9D, 0x0E, 0x25, - 0x1A, 0x41, 0xEE, 0x1A, 0x50, 0x43, 0xAA, 0xBF, - 0x8B, 0xE7, 0x73, 0xEE, 0x7F, 0x9D, 0x0F, 0xDF, - 0xCF, 0xD3, 0xAE, 0x71, 0x1F, 0xAB, 0x1D, 0x3D, - 0xBC, 0xC2, 0x84, 0x3B, 0xE5, 0xA9, 0x46, 0xB2, - 0x4D, 0x8B, 0x9B, 0x94, 0x35, 0x8B, 0x5F, 0x59, - 0x8E, 0x88, 0xED, 0x3D, 0x53, 0xF3, 0x10, 0xF8, - 0xEC, 0x63, 0x22, 0x9D, 0x4F, 0x5B, 0xB1, 0xB6, - 0xD5, 0x24, 0xA5, 0xAF, 0x9C, 0x39, 0x47, 0x79, - 0x25, 0xC7, 0xE2, 0x90, 0x95, 0xFC, 0x43, 0xF1, - 0x71, 0xFE, 0xCD, 0xD0, 0x61, 0xF3, 0x62, 0x62, - 0x71, 0x21, 0x75, 0x2C, 0x23, 0x6B, 0x79, 0x2F, - 0x1B, 0x31, 0x90, 0x79, 0x7C, 0xD0, 0x57, 0x5C, - 0x58, 0x4F, 0x30, 0xB5, 0x56, 0x81, 0x19, 0x61, - 0x90, 0x45, 0x09, 0xC9, 0x8B, 0xCD, 0xE8, 0x65, - 0x9D, 0x22, 0x80, 0xF4, 0x95, 0xA0, 0xC9, 0x55, - 0x7D, 0x38, 0x11, 0xAF, 0x5E, 0xD4, 0x37, 0x7B, - 0xC7, 0x59, 0x9E, 0x49, 0x59, 0xFF, 0x85, 0xF2, - 0x15, 0x0A, 0xCD, 0xEC, 0xC1, 0xF7, 0x67, 0x2D, - 0xE1, 0xEE, 0x4D, 0xB4, 0x4C, 0x1F, 0xB5, 0xF7, - 0x99, 0x8A, 0xB5, 0xDB, 0x74, 0x2F, 0x6C, 0x5D, - 0x32, 0xCB, 0xC0, 0xF2, 0xFB, 0xC9, 0x54, 0xEA, - 0xD6, 0xCC, 0x13, 0x4B, 0x97, 0x62, 0xDF, 0x33, - 0x13, 0x86, 0xDE, 0xCA, 0x31, 0x69, 0x47, 0x88, - 0x4B, 0x9A, 0x13, 0xAD, 0xEA, 0x5C, 0xBE, 0x29, - 0x56, 0x64, 0x4F, 0xA1, 0x2A, 0x7B, 0xB3, 0xBF, - 0xB9, 0x7E, 0x1D, 0x93, 0xA7, 0x01, 0x91, 0xAC, - 0x38, 0xA0, 0x37, 0x32, 0x58, 0xC2, 0xC2, 0x81, - 0x6D, 0xEA, 0x6E, 0xAF, 0x88, 0x0D, 0x69, 0xF4, - 0x5F, 0xBA, 0x4C, 0x29, 0x0F, 0x18, 0xD3, 0x4B, - 0xB8, 0x36, 0x8C, 0xF4, 0xEB, 0xB4, 0x72, 0xBA, - 0x49, 0x9C, 0xBB, 0x54, 0x50, 0x1E, 0xE3, 0xA2, - 0x8E, 0x5F, 0xB9, 0xFD, 0xC6, 0x6C, 0xF6, 0x45, - 0x72, 0x09, 0x47, 0x19, 0xBB, 0xDB, 0x48, 0xF3, - 0xF4, 0x88, 0x51, 0x3B, 0x65, 0x50, 0xE1, 0x27, - 0xE8, 0x34, 0x1C, 0x7E, 0x53, 0xDC, 0xFD, 0xA7, - 0xD4, 0x08, 0x05, 0x58, 0x0B, 0xC7, 0xD3, 0x0A, - 0x72, 0xF2, 0x44, 0xCC, 0xDB, 0x5A, 0xEF, 0x66, - 0x1B, 0x0F, 0x30, 0x4E, 0xC5, 0xB7, 0xAB, 0x93, - 0xB8, 0xC5, 0xC4, 0x9A, 0x77, 0x68, 0x38, 0xB7, - 0xD5, 0x23, 0x74, 0xAA, 0x41, 0x63, 0x02, 0x24, - 0xD6, 0x16, 0xF3, 0x10, 0xE4, 0x99, 0xEC, 0xAD, - 0xCE, 0x93, 0xE7, 0x8B, 0x94, 0xD3, 0xCA, 0x48, - 0xB3, 0x47, 0xBC, 0x0E, 0xEC, 0xAA, 0x20, 0x66, - 0x02, 0x29, 0x65, 0xC8, 0x07, 0xBE, 0xF9, 0x02, - 0x9B, 0xC5, 0x22, 0x8F, 0x00, 0x5E, 0xDB, 0x74, - 0xD4, 0xB1, 0x44, 0x98, 0xCE, 0x3A, 0xE1, 0x3B, - 0xEB, 0x7C, 0x69, 0x3B, 0x66, 0x9E, 0xE9, 0xF9, - 0xA6, 0xF4, 0x6F, 0xC0, 0x0E, 0xC0, 0x5E, 0x13, - 0x2B, 0xB6, 0xC6, 0x76, 0x0F, 0xB5, 0xC5, 0x1C, - 0x83, 0x23, 0xAC, 0xD6, 0xA3, 0xC7, 0x5A, 0x72, - 0xE9, 0x73, 0x89, 0x66, 0xD1, 0x25, 0xB9, 0x61, - 0x3B, 0x31, 0x45, 0xC6, 0x7B, 0x5E, 0x98, 0x81, - 0x87, 0xE8, 0x5F, 0x29, 0xAD, 0xCB, 0xAF, 0x74, - 0xE3, 0x3A, 0x61, 0x1F, 0xFF, 0x25, 0x2A, 0xEB, - 0xBA, 0xEB, 0x1E, 0xA6, 0x41, 0xE6, 0xFC, 0x8B, - 0xDF, 0x73, 0x41, 0xBE, 0x2A, 0xA8, 0x57, 0xE4, - 0x43, 0xAC, 0xFB, 0xCE, 0xB2, 0x15, 0x5D, 0x08, - 0x1A, 0xCB, 0x4C, 0xCD, 0xB0, 0x98, 0xD5, 0x7C, - 0xEF, 0x6F, 0x6F, 0xD3, 0x42, 0xDB, 0x2D, 0x83, - 0xB6, 0x12, 0x3E, 0x0A, 0xD3, 0xC9, 0x3F, 0x30, - 0x08, 0x11, 0xB8, 0xD5, 0xA1, 0x1A, 0x5A, 0x29, - 0xBE, 0x60, 0x81, 0x6F, 0x69, 0xB2, 0x9D, 0x1D, - 0x7E, 0x15, 0x88, 0x69, 0xD8, 0x60, 0xF6, 0xFB, - 0x82, 0x9D, 0xE8, 0x0D, 0x3E, 0x1B, 0x69, 0x9C, - 0x3A, 0xB6, 0x80, 0x4E, 0xB6, 0x54, 0x91, 0x78, - 0xD9, 0x47, 0x33, 0x38, 0xD6, 0xAF, 0x20, 0x9E, - 0x1F, 0x7D, 0x26, 0x3C, 0x66, 0x7A, 0xE6, 0x89, - 0x5F, 0x6E, 0x29, 0x33, 0x92, 0x34, 0x71, 0xF1, - 0x99, 0x58, 0x1F, 0x8A, 0x51, 0xBD, 0x9A, 0xA4, - 0x52, 0xEE, 0xE4, 0xBF, 0xE9, 0x56, 0x69, 0xAC, - 0xD0, 0x7B, 0x41, 0xB0, 0x0C, 0x03, 0xF5, 0x5A, - 0x40, 0xD1, 0x0B, 0x50, 0xF8, 0xE4, 0x67, 0xBD, - 0x07, 0x1C, 0x8F, 0x40, 0x5C, 0xF1, 0x19, 0x61, - 0x2D, 0x32, 0x40, 0x5B, 0xD5, 0x27, 0x5A, 0x6B, - 0xBF, 0x22, 0x17, 0xF9, 0xF1, 0x79, 0x0D, 0x29, - 0x99, 0x7B, 0x7B, 0x6B, 0x1E, 0xC8, 0xD7, 0x92, - 0x4A, 0xB9, 0xE6, 0x44, 0xC1, 0x29, 0xCE, 0xE8, - 0x74, 0x33, 0x29, 0x1A, 0x2C, 0x8E, 0xD6, 0xBC, - 0x3C, 0x2A, 0x19, 0xD0, 0x76, 0xB1, 0x77, 0xEE, - 0x60, 0x50, 0x69, 0x2A, 0xDA, 0x8E, 0x95, 0x57, - 0x4D, 0x6C, 0xE9, 0xAB, 0xE4, 0x97, 0x95, 0xD8, - 0xF2, 0x8E, 0xAB, 0x69, 0x67, 0x6E, 0x79, 0x03, - 0xA6, 0x56, 0xFA, 0xB3, 0x20, 0x25, 0xFE, 0x34, - 0x65, 0xCB, 0xDB, 0x57, 0x01, 0xC1, 0x77, 0x20, - 0x9D, 0x91, 0x89, 0xA5, 0x91, 0x7C, 0x13, 0x37, - 0xDE, 0x39, 0xF5, 0x75, 0xE5, 0xDD, 0xB9, 0x3C, - 0xA7, 0x6B, 0xEB, 0x52, 0xAF, 0x32, 0xE8, 0xD7, - 0x12, 0x7B, 0x28, 0xF7, 0xCE, 0x73, 0x12, 0xE8, - 0x03, 0x90, 0x47, 0x21, 0xAB, 0x21, 0x6E, 0x92, - 0xA8, 0xA9, 0xE6, 0x09, 0xFC, 0x10, 0xAF, 0x8D, - 0xC2, 0xAA, 0xCA, 0x14, 0xA9, 0x7B, 0xB0, 0xE4, - 0xB2, 0x34, 0xC7, 0x00, 0x0E, 0xBB, 0xE0, 0xC4, - 0x42, 0xF1, 0x85, 0x94, 0x6B, 0x7C, 0xE7, 0x72, - 0x80, 0x95, 0xCD, 0x60, 0x16, 0x9B, 0x0B, 0xD9, - 0x7B, 0x36, 0xB3, 0xAE, 0x38, 0x55, 0xD9, 0x89, - 0x25, 0xB2, 0x9D, 0x92, 0x94, 0xEF, 0x27, 0x75, - 0x09, 0xFC, 0xA4, 0x07, 0xEA, 0x2B, 0xC4, 0x76, - 0x59, 0x02, 0x6A, 0x82, 0x04, 0xD6, 0x96, 0x4F, - 0xC6, 0x5B, 0xEF, 0x35, 0x31, 0xE9, 0xC1, 0xE6, - 0xF9, 0x70, 0xBF, 0x2F, 0xF2, 0x40, 0x75, 0xEA, - 0x17, 0xD1, 0x36, 0xAD, 0xEA, 0xD2, 0x35, 0x6B, - 0x6C, 0xE4, 0x98, 0xF9, 0x3C, 0xD2, 0xF9, 0xE5, - 0xE1, 0x90, 0xD2, 0x09, 0xD9, 0x3E, 0x47, 0x3F, - 0xAA, 0x8E, 0xD9, 0x20, 0x96, 0x31, 0x5B, 0xF1, - 0xFC, 0xA6, 0x55, 0xFE, 0xBC, 0x78, 0xE0, 0x99, - 0x65, 0xC9, 0x74, 0x78, 0x29, 0x6B, 0x75, 0xD3, - 0x90, 0x56, 0x60, 0x4D, 0x32, 0x71, 0x91, 0x6D, - 0xCF, 0xF2, 0x25, 0xCB, 0x6B, 0x9A, 0x34, 0xE1, - 0x5D, 0xC1, 0x64, 0xB2, 0xA6, 0x8A, 0x3B, 0x42, - 0xDE, 0x05, 0x7A, 0x6B, 0xAC, 0x17, 0x32, 0xCF, - 0x59, 0x45, 0xBB, 0xCA, 0x12, 0xB8, 0xB3, 0x61, - 0x59, 0xFB, 0x89, 0xF7, 0xBB, 0xBE, 0x9F, 0xE0, - 0x34, 0x21, 0x8F, 0x5B, 0x3B, 0xCF, 0x18, 0x4C, - 0x20, 0x73, 0x06, 0xE6, 0xD2, 0xEA, 0x69, 0x59, - 0xEA, 0xE0, 0x89, 0x0A, 0x7B, 0x68, 0x02, 0xEC, - 0x1D, 0xA0, 0x82, 0xBE, 0xD6, 0x5B, 0xB6, 0xE4, - 0xEB, 0x4D, 0x56, 0x15, 0x70, 0x1C, 0xB0, 0xE3, - 0x50, 0x36, 0x33, 0x14, 0xA4, 0xD1, 0x01, 0xDB, - 0xBA, 0x60, 0x53, 0x71, 0xA3, 0x8B, 0x2D, 0x8A, - 0x37, 0xFF, 0x78, 0xEB, 0xB3, 0x69, 0x82, 0x53, - 0x88, 0xAA, 0xB7, 0xD3, 0xC6, 0x23, 0xB9, 0x3E, - 0x51, 0x2D, 0x96, 0xA9, 0xF3, 0x39, 0xEC, 0x96, - 0x8B, 0x35, 0x27, 0x59, 0xAF, 0x3E, 0x8F, 0xA3, - 0x21, 0x1C, 0x39, 0x29, 0x5B, 0x01, 0x10, 0xE6, - 0xDF, 0x26, 0x4E, 0x90, 0x67, 0x8C, 0x11, 0xE2, - 0xB9, 0x03, 0xAF, 0x32, 0x2E, 0x4F, 0xA7, 0x70, - 0x28, 0xD3, 0xEC, 0xC4, 0x4F, 0x62, 0x79, 0xD6, - 0x3B, 0x1E, 0x60, 0xD8, 0x06, 0x72, 0x41, 0x01, - 0x5F, 0xC4, 0xF8, 0x9B, 0xAA, 0x15, 0x6A, 0x78, - 0xFA, 0x77, 0xBB, 0x29, 0x14, 0xCA, 0xC2, 0x81, - 0xF4, 0x40, 0x9C, 0x9C, 0x03, 0x70, 0xAB, 0xD7, - 0xC1, 0xF8, 0xA5, 0xD1, 0x04, 0x0B, 0x59, 0x75, - 0x2C, 0xC4, 0xFD, 0xF0, 0xD1, 0x9C, 0xB0, 0xC5, - 0x6F, 0xEF, 0x34, 0xFA, 0x3A, 0x3B, 0xCE, 0xE1, - 0xF0, 0x64, 0xE3, 0x60, 0xE8, 0x6D, 0xC5, 0x5D, - 0xB5, 0xC9, 0x37, 0x5B, 0xDA, 0xDA, 0x67, 0x2E, - 0x72, 0xF6, 0x64, 0xE3, 0xAC, 0xB2, 0xE6, 0xD8, - 0xA0, 0x84, 0x09, 0xC8, 0xCD, 0x60, 0xA1, 0xF9, - 0x53, 0x80, 0xAB, 0x6C, 0x3A, 0xCB, 0x6B, 0x91, - 0xA8, 0xA9, 0xA3, 0xB7, 0x75, 0x50, 0x49, 0x79, - 0xB8, 0x02, 0x5A, 0xDB, 0x34, 0x22, 0x61, 0x9B, - 0xD1, 0x1E, 0x2B, 0x54, 0xFE, 0x6D, 0x07, 0x58, - 0x81, 0xAC, 0xAC, 0x24, 0x53, 0x20, 0x31, 0xCC, - 0xD2, 0x99, 0x06, 0x0E, 0x4E, 0xB7, 0xF7, 0xCB, - 0xD8, 0x08, 0x36, 0xD4, 0xB8, 0x23, 0xA5, 0xFF, - 0xA4, 0xFE, 0x8C, 0x6B, 0x98, 0x3D, 0x2A, 0xAE, - 0xB8, 0xF1, 0x6F, 0x6C, 0x1C, 0x22, 0x81, 0xEF, - 0xD7, 0x13, 0xFF, 0xDA, 0x22, 0x06, 0x9A, 0x5D, - 0x8A, 0xC4, 0x91, 0x29, 0x1C, 0xBF, 0x49, 0xF1, - 0x18, 0xC9, 0x46, 0xD5, 0x0F, 0x08, 0xE0, 0xD1, - 0x73, 0x28, 0x14, 0xE8, 0x15, 0x81, 0x90, 0x6A, - 0x31, 0x53, 0x94, 0x01, 0x14, 0xBE, 0xC8, 0xEB, - 0xD4, 0x9C, 0x73, 0x79, 0x0F, 0x9E, 0xD7, 0xCC, - 0xD9, 0x85, 0xED, 0xAD, 0x8D, 0xB3, 0x42, 0x6B, - 0x15, 0x13, 0x98, 0xEB, 0xF1, 0x6E, 0xFA, 0xFE, - 0x3D, 0xA0, 0xC7, 0xF3, 0x8B, 0x22, 0x76, 0x05, - 0x76, 0xD4, 0x88, 0x52, 0x73, 0xF5, 0xE4, 0x0B, - 0x14, 0x05, 0x57, 0x10, 0x7F, 0xCE, 0x0B, 0xF8, - 0x46, 0x1F, 0x24, 0x8B, 0xC4, 0x3F, 0xBF, 0x5C, - 0xEE, 0xE7, 0x6E, 0xF3, 0xA9, 0xEB, 0xD2, 0x30, - 0x95, 0x6C, 0x7B, 0x98, 0xAC, 0x89, 0x8A, 0x39, - 0x9E, 0x5C, 0x2A, 0xB0, 0xCB, 0xE9, 0xE5, 0xAB, - 0x94, 0x71, 0xDF, 0x5E, 0x53, 0x0C, 0x72, 0xF2, - 0x6C, 0x34, 0xDB, 0xFE, 0x2F, 0x83, 0x68, 0x3E, - 0xB6, 0x22, 0xF9, 0x64, 0x7A, 0xA0, 0x6A, 0x26, - 0x7D, 0x78, 0x97, 0x36, 0x31, 0x2C, 0x90, 0xC9, - 0xE5, 0x9D, 0x77, 0x12, 0x2A, 0x88, 0x53, 0x8F, - 0xD0, 0xF5, 0x39, 0x16, 0xAF, 0x08, 0xB2, 0x36, - 0x93, 0x5C, 0xDC, 0x5B, 0xB3, 0xCB, 0x49, 0x0C, - 0x83, 0x09, 0xE6, 0xA7, 0x9B, 0x43, 0xE7, 0xA5, - 0x4A, 0x8A, 0x07, 0xE1, 0xBA, 0xFB, 0x9B, 0x93, - 0x7E, 0xAC, 0x2F, 0xC3, 0xAC, 0xED, 0x30, 0x64, - 0x1F, 0x33, 0x79, 0x19, 0xD2, 0xDB, 0x54, 0xEC, - 0x7F, 0x32, 0x0E, 0xC5, 0x1C, 0xD1, 0x3C, 0x00, - 0xB9, 0xE6, 0x03, 0xDF, 0x6D, 0xD2, 0x69, 0x0C, - 0x75, 0xAF, 0x37, 0x07, 0xB7, 0xC9, 0x3E, 0x91, - 0xCF, 0x02, 0x78, 0xD7, 0x43, 0xA1, 0x8B, 0x4E, - 0x69, 0x74, 0xB4, 0x24, 0x08, 0x10, 0x42, 0xB5, - 0xB4, 0xE7, 0x8C, 0xEB, 0x7F, 0xFF, 0x67, 0x98, - 0x0B, 0xBC, 0xBA, 0x5E, 0x29, 0xBE, 0x61, 0x33, - 0x56, 0x16, 0xD6, 0x5E, 0x86, 0xF0, 0xE7, 0x46, - 0xD1, 0x83, 0xDF, 0xD4, 0x6B, 0x75, 0xC9, 0x30, - 0x0D, 0x60, 0xC5, 0x19, 0xFD, 0x95, 0xA8, 0xA6, - 0x61, 0xFF, 0xC8, 0x2A, 0xE7, 0x5D, 0xD1, 0x49, - 0x49, 0x1F, 0x99, 0xD1, 0x41, 0x4F, 0x15, 0x79, - 0x00, 0x8A, 0x80, 0x27, 0xA6, 0xC9, 0x98, 0xD3, - 0xE7, 0xA2, 0xBB, 0xFA, 0x07, 0xAB, 0x53, 0xEF, - 0xE8, 0x17, 0xAE, 0x9C, 0x6A, 0xE8, 0xD0, 0x52, - 0xAA, 0x85, 0x9D, 0x03, 0x48, 0xB0, 0xD2, 0xC8, - 0x5B, 0xCC, 0xC4, 0x50, 0x84, 0x90, 0xBE, 0x0F, - 0x9B, 0x32, 0x13, 0xB8, 0xAF, 0x7C, 0xCE, 0xE7, - 0x22, 0xE2, 0x82, 0x13, 0x18, 0x71, 0x46, 0xC5, - 0xDA, 0x05, 0xB7, 0x65, 0xD8, 0x33, 0x06, 0xFA, - 0x5A, 0x6B, 0x76, 0xD6, 0x92, 0x76, 0xD1, 0x6A, - 0x2B, 0xC6, 0x0D, 0xB1, 0xAD, 0xAB, 0x57, 0x62, - 0xEA, 0x76, 0x37, 0x4E, 0xAB, 0x2D, 0x34, 0xD2, - 0xA3, 0x57, 0xC7, 0x56, 0xFB, 0xEA, 0xD6, 0xA9, - 0xE3, 0xC1, 0x63, 0x07, 0xDE, 0xB9, 0x5E, 0x5A, - 0x30, 0x2E, 0x41, 0x4D, 0x43, 0xE9, 0x1C, 0xA1, - 0x5B, 0xB2, 0x4F, 0xAF, 0xDC, 0xE9, 0xBB, 0xBE, - 0x73, 0x55, 0x90, 0xF0, 0xD0, 0x02, 0x98, 0x6D, - 0x13, 0x50, 0x9A, 0xCA, 0x4C, 0xB3, 0x15, 0x3A, - 0x26, 0x14, 0x38, 0x67, 0xEB, 0xA7, 0x27, 0x33, - 0x48, 0x97, 0x58, 0x94, 0x57, 0xEA, 0xF9, 0x7E, - 0x8B, 0xB0, 0xBB, 0xF3, 0xF4, 0x84, 0x6E, 0x69, - 0x95, 0x2C, 0xF4, 0x6B, 0x1C, 0x65, 0x39, 0xB4, - 0x46, 0xA7, 0x99, 0xD6, 0x68, 0x47, 0x6E, 0x2E, - 0x49, 0x84, 0x75, 0x3E, 0x6C, 0x2E, 0x9A, 0x08, - 0xBC, 0xB7, 0x2F, 0x86, 0x68, 0x5C, 0xE1, 0xBF, - 0xEA, 0xA1, 0xAF, 0x59, 0xD6, 0x71, 0xB7, 0xBD, - 0xD6, 0xC5, 0xC2, 0xF2, 0xF3, 0xB5, 0x36, 0xBB, - 0x36, 0x23, 0x4F, 0xD6, 0x44, 0x59, 0x0A, 0x44, - 0x86, 0xCA, 0xDC, 0xD4, 0x22, 0x0F, 0x79, 0x09, - 0x99, 0x8C, 0x8C, 0x9E, 0x03, 0xA4, 0x51, 0x99, - 0x5A, 0xB9, 0x97, 0x76, 0x73, 0x20, 0xD3, 0x98, - 0x8C, 0x52, 0x96, 0xE1, 0x65, 0x7B, 0x4C, 0x77, - 0x40, 0xB2, 0xFE, 0x27, 0x0A, 0x11, 0x76, 0x6E, - 0x3B, 0x35, 0x12, 0xC6, 0x4E, 0xC2, 0x0E, 0xCC, - 0x04, 0xB5, 0x51, 0x91, 0xD0, 0x4A, 0xF7, 0x84, - 0xF2, 0xE7, 0xE5, 0x99, 0x7E, 0xB5, 0x3E, 0xAC, - 0x53, 0xDB, 0x61, 0x11, 0x71, 0x56, 0x4E, 0xAB, - 0x4A, 0x68, 0xC1, 0x6A, 0xA5, 0xC5, 0x7F, 0x72, - 0xEB, 0x14, 0x97, 0xA4, 0x27, 0xA0, 0x53, 0xA1, - 0xC4, 0x70, 0x7D, 0x58, 0xBD, 0xC1, 0xD7, 0xFD, - 0x9F, 0xB8, 0x8C, 0xCE, 0x34, 0xF9, 0xE1, 0x9C, - 0x59, 0x79, 0x31, 0x24, 0xEC, 0xBB, 0xF5, 0x6F, - 0x3F, 0xA3, 0x5A, 0x55, 0xB3, 0xDE, 0x64, 0xDF, - 0xA9, 0x95, 0x0B, 0x53, 0xF2, 0xA7, 0x25, 0x7B, - 0x8C, 0xAD, 0x25, 0x9A, 0x35, 0xBF, 0x15, 0x46, - 0x69, 0x4A, 0x83, 0x8C, 0x80, 0xFC, 0x37, 0xD0, - 0xC3, 0x6F, 0x00, 0xE2, 0x3C, 0x63, 0xAB, 0xC5, - 0x53, 0xC1, 0x8D, 0x4A, 0x40, 0x4B, 0xE6, 0xDC, - 0x05, 0xB1, 0x20, 0x23, 0x8B, 0xB8, 0xDF, 0x40, - 0x86, 0x97, 0xB9, 0x5E, 0xA4, 0xB7, 0xA1, 0x37, - 0xE0, 0x4B, 0x9E, 0xD9, 0x84, 0x2B, 0x2D, 0xAD, - 0xD1, 0xB1, 0x52, 0x15, 0x00, 0x9B, 0xDD, 0x23, - 0xA9, 0x27, 0x44, 0x21, 0x33, 0x17, 0x1C, 0x61, - 0x49, 0x84, 0x0D, 0x6A, 0x11, 0x7C, 0x77, 0xA5, - 0xD6, 0x8E, 0xE6, 0x1D, 0x6E, 0x90, 0x04, 0x4A, - 0xD3, 0x54, 0x3A, 0xA7, 0x1A, 0x28, 0xC5, 0x94, - 0x01, 0xCA, 0xDB, 0x1B, 0x5D, 0x78, 0xC5, 0xC6, - 0x69, 0x0D, 0x69, 0x88, 0x75, 0x00, 0x02, 0x0B, - 0x59, 0x6C, 0x3E, 0xC5, 0x30, 0xDF, 0xEE, 0x85, - 0x43, 0xA2, 0x9A, 0xF9, 0xDD, 0x85, 0x6E, 0xB3, - 0x0D, 0x83, 0x6A, 0x13, 0x88, 0xD0, 0x12, 0x15, - 0x53, 0x16, 0xFC, 0x5C, 0x15, 0x47, 0xEC, 0x6D, - 0x4D, 0x18, 0x2D, 0x88, 0xDB, 0xD2, 0x17, 0x6C, - 0xDE, 0x64, 0xEC, 0x70, 0x8D, 0x19, 0xDC, 0x66, - 0x69, 0x7F, 0xCF, 0x61, 0x6E, 0x4F, 0x23, 0x86, - 0xF5, 0x1A, 0x98, 0x47, 0x4B, 0xCC, 0xE9, 0x2F, - 0x12, 0x28, 0x12, 0xB9, 0xEB, 0xD8, 0x32, 0xDC, - 0xE4, 0xD8, 0x63, 0xAC, 0x56, 0x08, 0x2F, 0xEC, - 0x5E, 0x47, 0x29, 0xFF, 0x76, 0xFE, 0x95, 0x60, - 0xD2, 0x19, 0x61, 0x0E, 0xAF, 0xFC, 0x44, 0x42, - 0x11, 0x42, 0x79, 0xBC, 0x06, 0x3A, 0xAD, 0x93, - 0x7E, 0x46, 0x60, 0x03, 0xB0, 0xF5, 0x9F, 0x57, - 0x28, 0x48, 0x44, 0x8F, 0x0E, 0xFA, 0x72, 0x8C, - 0xE4, 0x18, 0xF4, 0x99, 0x6B, 0xB1, 0x23, 0x45, - 0xDC, 0x13, 0xA2, 0xF6, 0x5F, 0x57, 0x35, 0xA2, - 0xD7, 0x38, 0xF9, 0xE9, 0x8A, 0x7A, 0x79, 0xC6, - 0xB2, 0xCD, 0xBF, 0xD3, 0x41, 0x21, 0x56, 0xB3, - 0x39, 0xD9, 0x14, 0x3B, 0xDD, 0x85, 0xCB, 0x78, - 0x2F, 0xEB, 0x7E, 0x29, 0xBC, 0x52, 0x24, 0xE7, - 0x1B, 0x85, 0xB1, 0x65, 0xAE, 0xAB, 0x65, 0xF9, - 0x54, 0xD2, 0x1F, 0x37, 0x29, 0x52, 0x30, 0x5B, - 0x3D, 0x5F, 0x48, 0x84, 0x3F, 0x51, 0x27, 0x88, - 0x9D, 0xA7, 0x94, 0xF0, 0x73, 0xCD, 0x98, 0xD2, - 0x05, 0xE8, 0x25, 0x71, 0x7C, 0x93, 0x13, 0x82, - 0x5D, 0x53, 0x8D, 0x05, 0x0E, 0x69, 0x20, 0xC4, - 0xDB, 0xF2, 0xF6, 0x55, 0x24, 0x29, 0xD0, 0x41, - 0xF6, 0x2D, 0xF8, 0xC1, 0x2E, 0xC2, 0x4D, 0xE1, - 0xD7, 0x2D, 0xA0, 0x49, 0x16, 0x0B, 0x4D, 0x34, - 0xB5, 0x6D, 0xAE, 0x10, 0x93, 0x1E, 0xB6, 0x95, - 0x69, 0xC2, 0xB3, 0xC0, 0xAF, 0x6F, 0xFF, 0xA5, - 0x32, 0x3C, 0x7D, 0xC9, 0xC7, 0xC8, 0xEF, 0x0C, - 0x64, 0x20, 0x23, 0xC4, 0xFE, 0x89, 0x87, 0x8E, - 0xB3, 0xA6, 0xC5, 0x24, 0xCF, 0x03, 0x7E, 0x74, - 0xF7, 0xBF, 0x89, 0x1E, 0xCF, 0xB1, 0x02, 0xFA, - 0xF2, 0x9F, 0xD3, 0x9D, 0x99, 0x00, 0xDA, 0x7A, - 0x92, 0x7D, 0x13, 0x11, 0x92, 0xAD, 0x55, 0xF2, - 0xE1, 0x82, 0x72, 0xB1, 0x6A, 0xF1, 0x45, 0x05, - 0xDA, 0x17, 0xC9, 0xA1, 0x42, 0x82, 0x89, 0x77, - 0x31, 0xB6, 0x72, 0x54, 0x7C, 0x68, 0x10, 0x25, - 0x57, 0x30, 0x16, 0x15, 0x08, 0x58, 0x8B, 0xC1, - 0x61, 0xCB, 0xA0, 0x58, 0x29, 0x33, 0xB1, 0x64, - 0xF4, 0x4F, 0x06, 0xAA, 0x25, 0x31, 0xAA, 0xA8, - 0x92, 0x1C, 0x69, 0x1E, 0x6E, 0xB6, 0xBE, 0x81, - 0xDA, 0x9B, 0xE5, 0x1C, 0x56, 0x39, 0x55, 0xE0, - 0xC1, 0xEF, 0xD3, 0xED, 0x2A, 0x1C, 0x94, 0x9B, - 0xD4, 0xE0, 0x0B, 0x3A, 0xE9, 0xEB, 0xC1, 0x3C, - 0x4C, 0x6C, 0x4E, 0x5E, 0x39, 0x4C, 0xB0, 0x34, - 0xB9, 0xCB, 0x75, 0xBE, 0xCE, 0x86, 0x44, 0xFF, - 0x89, 0xEF, 0x95, 0xE7, 0x6E, 0xF7, 0x15, 0xE1, - 0x7A, 0xA2, 0x6B, 0x1F, 0xEB, 0x77, 0x4C, 0x50, - 0x59, 0xB3, 0xA3, 0x9A, 0x38, 0xDF, 0xD0, 0x57, - 0xD6, 0x41, 0xE4, 0x3F, 0xFE, 0x0F, 0x3E, 0x40, - 0xFF, 0xF6, 0xB2, 0x36, 0x3C, 0x1B, 0xF0, 0xEF, - 0x07, 0x87, 0x3D, 0x09, 0xA4, 0x87, 0x76, 0x9D, - 0x0A, 0x73, 0xCD, 0x0C, 0xC6, 0x44, 0xF5, 0x3C, - 0x25, 0xD2, 0x02, 0x5E, 0xE7, 0x1C, 0x69, 0xB7, - 0xAC, 0x0F, 0xA6, 0x61, 0x15, 0x57, 0xC4, 0x27, - 0xC0, 0x69, 0xDF, 0x2E, 0x1B, 0xF6, 0x29, 0xD9, - 0xA0, 0xCB, 0x5C, 0x67, 0xC7, 0xEA, 0x4F, 0xA6, - 0x58, 0xC7, 0x8D, 0x00, 0x42, 0xB0, 0x59, 0xE6, - 0xB6, 0x58, 0xFF, 0xCE, 0x60, 0x16, 0x69, 0x67, - 0xDB, 0x94, 0xF7, 0x16, 0xEB, 0x4D, 0x04, 0xB3, - 0xD2, 0x45, 0x0F, 0x40, 0x03, 0x1F, 0x10, 0xAC, - 0xDD, 0x07, 0x77, 0x7F, 0xBE, 0x9F, 0xBB, 0xB7, - 0x7F, 0xCB, 0x7C, 0x1F, 0xA9, 0xFC, 0x1E, 0xAF, - 0x0C, 0x5F, 0x86, 0xD7, 0x96, 0x2D, 0xAE, 0xD0, - 0x47, 0x4B, 0xA0, 0xFE, 0x68, 0xD9, 0xB2, 0x32, - 0x77, 0xA9, 0xCA, 0x7F, 0xC6, 0x76, 0xC6, 0x61, - 0x6B, 0x8E, 0x43, 0x9A, 0x1D, 0x4B, 0xFF, 0x72, - 0x43, 0x78, 0x19, 0xB5, 0x51, 0x87, 0x56, 0xA7, - 0x87, 0x3E, 0xF5, 0x84, 0x01, 0x26, 0x46, 0xC3, - 0x65, 0x9A, 0x6B, 0xA8, 0x6E, 0x62, 0x27, 0x26, - 0x14, 0xD8, 0x5E, 0xEC, 0xD5, 0x35, 0x0E, 0x3C, - 0xD0, 0xA1, 0x25, 0xAE, 0x9C, 0x17, 0xCC, 0xE2, - 0x52, 0x39, 0xE1, 0xEE, 0x9C, 0xDB, 0x39, 0xCA, - 0x7B, 0x18, 0xCF, 0x2C, 0x88, 0xCF, 0x14, 0x68, - 0x26, 0xB6, 0xCC, 0x1E, 0x6A, 0xA8, 0xE1, 0x69, - 0x2C, 0x91, 0x5F, 0x3B, 0xF1, 0xC1, 0xDB, 0x34, - 0xC6, 0xF3, 0x78, 0x83, 0xCB, 0x4E, 0xDC, 0xE0, - 0xF7, 0xC9, 0x95, 0xB6, 0x9E, 0x3A, 0xCE, 0x30, - 0xDC, 0x16, 0x6F, 0x78, 0x4C, 0x93, 0xD6, 0xCB, - 0xBC, 0xAC, 0x3C, 0x79, 0xBC, 0x31, 0x93, 0x10, - 0xCE, 0x6E, 0x66, 0x57, 0x00, 0xF1, 0x7F, 0x96, - 0x2F, 0x18, 0xB2, 0x40, 0x73, 0x9D, 0x15, 0x69, - 0x0B, 0x1B, 0x6C, 0x85, 0xD1, 0xAA, 0xA3, 0x2D, - 0x4A, 0x79, 0x74, 0x4A, 0xE5, 0x0C, 0xF9, 0xA9, - 0x0A, 0x09, 0x54, 0xB4, 0xA4, 0xD9, 0x4C, 0x49, - 0x9B, 0x41, 0x23, 0xEF, 0xC0, 0x20, 0x44, 0x31, - 0xF7, 0x22, 0x85, 0xB5, 0xDA, 0x9E, 0x19, 0x22, - 0x23, 0x0A, 0x30, 0x4D, 0x3A, 0x1B, 0xD8, 0x52, - 0x08, 0x72, 0x61, 0xB7, 0xCF, 0x0D, 0x8B, 0x90, - 0xD1, 0x46, 0x23, 0xEB, 0xCD, 0xC6, 0x38, 0x7B, - 0xC6, 0xAF, 0x65, 0xBE, 0x5F, 0x01, 0x1B, 0x6B, - 0xC1, 0x23, 0xC1, 0x30, 0x6A, 0x1E, 0x8F, 0xBF, - 0x2D, 0xF0, 0xB6, 0xF8, 0x9B, 0x0A, 0xE0, 0x5D, - 0xE0, 0xE4, 0xB7, 0xF5, 0x0A, 0xDA, 0x46, 0xE5, - 0x3A, 0x9B, 0x6B, 0xCA, 0xDA, 0x06, 0x43, 0xBE, - 0x6B, 0xFD, 0xC2, 0xB0, 0x6A, 0x6C, 0x75, 0x88, - 0x3C, 0x2D, 0xC6, 0x13, 0xAC, 0x72, 0x16, 0x31, - 0x7A, 0x40, 0xC4, 0xA2, 0xC0, 0x86, 0x69, 0x83, - 0xD3, 0x2C, 0x9C, 0xE0, 0xA6, 0xCC, 0xED, 0xF4, - 0x03, 0x62, 0x6B, 0xB2, 0x3B, 0x5B, 0x9D, 0xA5, - 0x86, 0x77, 0x7C, 0x73, 0x5E, 0x19, 0x11, 0xD7, - 0x7B, 0x11, 0x96, 0xC8, 0xFA, 0x47, 0x21, 0xD6, - 0xB0, 0xFE, 0x0B, 0x08, 0x11, 0xFC, 0x00, 0xB9, - 0xA1, 0x24, 0x2C, 0xBD, 0x4A, 0x92, 0x43, 0x10, - 0x08, 0xBE, 0xE9, 0xE1, 0x5D, 0x19, 0x82, 0xDE, - 0x34, 0xAE, 0xDC, 0xA6, 0x85, 0x8F, 0x19, 0x30, - 0x20, 0xB6, 0x44, 0x7F, 0x6B, 0xA6, 0x63, 0x70, - 0x59, 0xDA, 0x8D, 0xE0, 0xF8, 0x46, 0x86, 0x57, - 0xB8, 0x1C, 0x57, 0x13, 0x78, 0x41, 0x8C, 0xF5, - 0x7D, 0x77, 0xAE, 0x75, 0x6C, 0x59, 0x93, 0x2E, - 0x05, 0x25, 0x03, 0xD1, 0xEA, 0xFB, 0x2D, 0x60, - 0xD2, 0x61, 0x23, 0xEA, 0x0E, 0xFF, 0x55, 0xE3, - 0x24, 0x49, 0x00, 0x19, 0xBD, 0x1E, 0x56, 0x24, - 0x87, 0x2F, 0x7B, 0x98, 0x07, 0x36, 0xD2, 0x7C, - 0xC5, 0x9B, 0xE0, 0x4E, 0x29, 0xAB, 0xA1, 0xB8, - 0x35, 0x15, 0x31, 0xCE, 0x65, 0x14, 0x24, 0xF8, - 0x10, 0xB5, 0xAB, 0x3E, 0xD5, 0x58, 0xCA, 0xE5, - 0x73, 0x2D, 0x7C, 0x8B, 0xB4, 0x62, 0x75, 0x03, - 0x30, 0x89, 0xFE, 0x32, 0xF8, 0x65, 0x99, 0xD0, - 0x88, 0xD5, 0x72, 0x88, 0x03, 0xC9, 0x51, 0x03, - 0xBA, 0x2F, 0xFB, 0x7C, 0x39, 0x02, 0x05, 0xC4, - 0xCE, 0xD8, 0xB3, 0xC2, 0x7B, 0x29, 0x8E, 0xA7, - 0x9D, 0x35, 0x97, 0xB7, 0x17, 0xDE, 0x28, 0x0B, - 0x32, 0xE5, 0x41, 0xDA, 0x1D, 0x98, 0xBD, 0x27, - 0xEF, 0xF7, 0xB4, 0x43, 0x09, 0x13, 0x39, 0xC7, - 0x40, 0x16, 0x11, 0x20, 0x71, 0xCB, 0xB6, 0xC9, - 0xB0, 0x8F, 0x20, 0xC1, 0xF0, 0x40, 0xFB, 0x6E, - 0x73, 0x04, 0x8F, 0x73, 0xCA, 0x45, 0xDB, 0xE0, - 0xF9, 0x25, 0x8D, 0x32, 0xF2, 0x3E, 0x36, 0xBE, - 0xF7, 0x88, 0xF8, 0x13, 0x4D, 0x9B, 0x10, 0xC2, - 0x58, 0x0B, 0x20, 0xF8, 0x78, 0xB6, 0x4C, 0x7D, - 0x2A, 0xA6, 0x81, 0x40, 0xD1, 0x30, 0x50, 0x38, - 0x2A, 0x5F, 0xBC, 0x81, 0x8E, 0x0F, 0xD4, 0xD0, - 0x87, 0x99, 0x78, 0x3D, 0xBE, 0x25, 0x15, 0xF4, - 0x45, 0x61, 0xA3, 0x1A, 0x7D, 0x05, 0x3F, 0xB5, - 0xA6, 0x1C, 0x41, 0xC6, 0x0E, 0xBE, 0x57, 0x6F, - 0xC5, 0xB6, 0x38, 0x63, 0x90, 0x55, 0x23, 0xFC, - 0x26, 0x9E, 0xFD, 0xB8, 0x6C, 0xF2, 0x99, 0x6B, - 0x6D, 0x90, 0xFE, 0x28, 0xA0, 0x16, 0xEE, 0x63, - 0xC2, 0x4C, 0xD6, 0xB2, 0x0C, 0xFA, 0x6E, 0x85, - 0x51, 0xE4, 0x2F, 0x57, 0x91, 0x82, 0x84, 0x43, - 0x8A, 0x44, 0x31, 0x6C, 0x68, 0x02, 0x01, 0x7C, - 0xCE, 0x4D, 0xC0, 0x7C, 0x43, 0xA9, 0x54, 0xF5, - 0x0E, 0xCA, 0xE6, 0x15, 0x98, 0xAE, 0x41, 0x57, - 0x0A, 0x66, 0xBA, 0x6D, 0x6E, 0x68, 0xB9, 0x2E, - 0x0D, 0x42, 0xD2, 0xF5, 0x0B, 0xFC, 0x2D, 0xA8, - 0x61, 0x6E, 0x60, 0x4E, 0x51, 0x78, 0xEB, 0x0C, - 0x52, 0x9E, 0xC0, 0x4A, 0xB0, 0x92, 0x85, 0x5C, - 0x3A, 0x3D, 0x69, 0x95, 0xAB, 0x62, 0xEB, 0x2F, - 0x9B, 0x12, 0xF5, 0x2E, 0xB5, 0xA6, 0x93, 0xCE, - 0x14, 0x97, 0xA7, 0x1E, 0x0A, 0x7B, 0x94, 0x74, - 0xFB, 0x65, 0xD0, 0x5A, 0x97, 0x55, 0x40, 0x02, - 0x71, 0x87, 0x9C, 0x9F, 0xCB, 0x41, 0x3F, 0x08, - 0x8D, 0x6A, 0xCA, 0xE6, 0xEC, 0xE6, 0x71, 0x22, - 0xF8, 0x58, 0x9F, 0xF1, 0x94, 0xF6, 0xE4, 0xD6, - 0xDC, 0x35, 0xD7, 0xEB, 0x6B, 0x78, 0x99, 0x66, - 0xF9, 0xE2, 0x15, 0x27, 0xC9, 0x8C, 0x27, 0xB4, - 0x89, 0x3C, 0x15, 0xEE, 0x52, 0x71, 0xA9, 0xD2, - 0x50, 0x3C, 0xD2, 0x31, 0xBB, 0x3A, 0xE5, 0x87, - 0xAF, 0x65, 0x2B, 0xF2, 0xF5, 0xC9, 0x44, 0xA2, - 0x59, 0x1C, 0x57, 0x96, 0xB9, 0xC2, 0x5E, 0xCB, - 0x8A, 0x5B, 0x2B, 0x7A, 0x7E, 0x93, 0x3C, 0x08, - 0x27, 0xCD, 0xB4, 0xB0, 0x1B, 0xF3, 0x82, 0x50, - 0x78, 0xCF, 0xEA, 0x28, 0x57, 0xB1, 0x0F, 0xB4, - 0xB6, 0x93, 0x82, 0x8E, 0x7A, 0xD1, 0x9F, 0x04, - 0xEC, 0xEE, 0x24, 0x3D, 0x8A, 0x5E, 0x56, 0x99, - 0x8D, 0x83, 0xA4, 0x05, 0x7D, 0xFB, 0x36, 0xDB, - 0xAB, 0xD1, 0x67, 0x59, 0xC7, 0x4A, 0xB9, 0xAF, - 0x99, 0xB6, 0xD8, 0xD4, 0x2C, 0xCA, 0x8C, 0xCC, - 0xD2, 0x32, 0xAB, 0x51, 0xCE, 0x2D, 0x22, 0xE0, - 0x29, 0xB1, 0x73, 0x10, 0x60, 0xA8, 0x6B, 0x8F, - 0x68, 0xAF, 0x58, 0x06, 0x9D, 0x72, 0x36, 0x98, - 0x3F, 0xF3, 0x6B, 0xAD, 0x3E, 0x7F, 0x4A, 0x00, - 0x94, 0x04, 0xAE, 0xE9, 0x8A, 0x9E, 0x8A, 0x03, - 0xD8, 0x04, 0xCC, 0xFE, 0xE3, 0xF8, 0xA2, 0x04, - 0x64, 0x17, 0x54, 0x77, 0xCA, 0x20, 0xD0, 0x80, - 0x1B, 0x36, 0xEF, 0x59, 0x31, 0xFA, 0xE4, 0xF5, - 0xAF, 0x56, 0x09, 0x02, 0xAD, 0xCF, 0xA6, 0xBC, - 0x26, 0x23, 0x27, 0x6D, 0xF3, 0x52, 0xCE, 0x2F, - 0x4C, 0x9C, 0xA8, 0x23, 0x75, 0xFA, 0x56, 0x9E, - 0x07, 0x5B, 0xB9, 0x30, 0x5A, 0xB1, 0x27, 0xFF, - 0x72, 0xBF, 0x50, 0xB1, 0x27, 0xEF, 0xA1, 0x0C, - 0x3A, 0xC9, 0x72, 0x21, 0xBE, 0xD8, 0xDC, 0xD5, - 0x66, 0x4A, 0x0A, 0x58, 0xFA, 0x57, 0xB4, 0x00, - 0x07, 0x31, 0xF2, 0x4E, 0xDC, 0xE0, 0x86, 0x99, - 0x45, 0xE5, 0x45, 0xCF, 0x27, 0x35, 0x79, 0x57, - 0xF5, 0xA2, 0x7A, 0x29, 0xFA, 0x5E, 0xCF, 0xF9, - 0xA9, 0x96, 0x11, 0xE1, 0x4A, 0x6C, 0xE5, 0xB8, - 0x8E, 0x78, 0xE6, 0xA1, 0x46, 0x97, 0xAE, 0xB4, - 0xF3, 0x6D, 0x7F, 0x8E, 0xD1, 0x86, 0x6B, 0x78, - 0x2B, 0x55, 0xC5, 0xDF, 0x0F, 0x43, 0x78, 0xED, - 0xD2, 0x38, 0xE5, 0x8B, 0x94, 0x7A, 0x06, 0xC5, - 0x73, 0x17, 0x55, 0x93, 0xAD, 0xA5, 0xAC, 0xBA, - 0x81, 0x8A, 0x6D, 0x73, 0x4B, 0xA1, 0x32, 0x8F, - 0x21, 0xA6, 0x5B, 0x51, 0x31, 0x58, 0xD0, 0xE4, - 0x0B, 0x93, 0x46, 0xF2, 0x51, 0x30, 0x3E, 0x60, - 0xE1, 0xCB, 0x30, 0x04, 0x15, 0x8D, 0x1E, 0x87, - 0xA6, 0xF6, 0x38, 0xE0, 0x27, 0x84, 0x81, 0x18, - 0x2B, 0x37, 0xBB, 0xD3, 0xDB, 0xE7, 0x91, 0xA3, - 0x1B, 0x6B, 0x20, 0xCB, 0x2C, 0x52, 0xB1, 0xB9, - 0x6A, 0x94, 0xF8, 0xCD, 0xBA, 0x5D, 0xC7, 0xDD, - 0x79, 0x36, 0x38, 0xC2, 0xFC, 0xEC, 0x4F, 0x2B, - 0x5F, 0x73, 0x44, 0x03, 0xE9, 0xA9, 0xF5, 0xD9, - 0x99, 0xEA, 0x61, 0xDC, 0x6A, 0x98, 0xBE, 0xDE, - 0xB9, 0x34, 0xCC, 0x76, 0xB0, 0xE1, 0x8C, 0x70, - 0x3A, 0xA5, 0x7C, 0xD1, 0xC0, 0x2A, 0x8E, 0x7D, - 0x47, 0x8A, 0x63, 0xEA, 0x30, 0x6B, 0xEE, 0x36, - 0x0B, 0xA8, 0xAE, 0x46, 0xCD, 0x01, 0x83, 0xF6, - 0x07, 0xF9, 0xED, 0x8B, 0x69, 0x97, 0xB6, 0xC3, - 0x5D, 0x75, 0x6E, 0xD8, 0xDF, 0x01, 0x82, 0x48, - 0x31, 0x2F, 0xDE, 0xED, 0x8E, 0xC5, 0xD8, 0xA6, - 0xC0, 0x36, 0x0E, 0x66, 0xA4, 0xE9, 0xE5, 0xA9, - 0x7D, 0x5C, 0xD2, 0x43, 0x72, 0xC0, 0xAD, 0x26, - 0x78, 0xF2, 0xB0, 0x08, 0x12, 0xAE, 0x6C, 0x1A, - 0x0F, 0x53, 0x30, 0xB3, 0xAB, 0x01, 0x53, 0xDA, - 0x3C, 0x5F, 0x4C, 0x17, 0xBD, 0x2F, 0xB6, 0x0E, - 0x7E, 0x80, 0x87, 0x4C, 0x1B, 0x92, 0x9B, 0x62, - 0xE3, 0x89, 0xEE, 0xE2, 0xA0, 0x14, 0x06, 0x0D, - 0x4D, 0xCC, 0x96, 0x5A, 0xF8, 0x64, 0x2A, 0x05, - 0xA9, 0xEE, 0xD5, 0x0D, 0x23, 0x90, 0xB0, 0x67, - 0xD5, 0x51, 0x1D, 0x18, 0xBC, 0xBA, 0xE6, 0xA5, - 0xAD, 0x29, 0x18, 0xD5, 0x06, 0xFC, 0xC9, 0x12, - 0x6D, 0x70, 0xA8, 0x6E, 0x96, 0x8B, 0x5F, 0x9C, - 0x99, 0x43, 0x07, 0x02, 0x37, 0x48, 0x8C, 0xFB, - 0x5F, 0xF5, 0xDE, 0x69, 0x26, 0x73, 0x7D, 0xF6, - 0x3A, 0x2C, 0xE5, 0x58, 0x01, 0xC3, 0x48, 0xB0, - 0xF0, 0x0D, 0x56, 0xAF, 0x8C, 0x0F, 0x5C, 0xB3, - 0xBA, 0x44, 0x8C, 0x39, 0xB0, 0x20, 0xD2, 0x93, - 0x81, 0x19, 0x99, 0x4E, 0xAC, 0xB9, 0x1F, 0xC3, - 0x1F, 0x34, 0x7D, 0xF3, 0x3E, 0x1A, 0xE1, 0x26, - 0x7C, 0xB7, 0x22, 0x0A, 0xDC, 0x0D, 0x14, 0xF8, - 0x43, 0x8A, 0x23, 0x46, 0x37, 0x9C, 0x2A, 0xB8, - 0x1F, 0x24, 0x72, 0xE2, 0xEA, 0xC4, 0x67, 0x13, - 0x17, 0x33, 0xBD, 0xA0, 0x07, 0xA0, 0x3E, 0xDE, - 0x8B, 0xC4, 0xD6, 0xDB, 0xD9, 0xF1, 0xB8, 0xF4, - 0xFB, 0x83, 0x13, 0x14, 0xCD, 0x36, 0xF6, 0xDC, - 0xD5, 0x85, 0x93, 0x7C, 0xF9, 0x6C, 0xEA, 0x52, - 0x92, 0xFB, 0xFC, 0x95, 0x02, 0x10, 0x7B, 0x57, - 0x9F, 0xF0, 0x7C, 0x2E, 0x79, 0x00, 0x3D, 0xB2, - 0xA1, 0x6C, 0x4E, 0xD4, 0x17, 0xFA, 0x0F, 0x13, - 0xC8, 0xBF, 0xB1, 0x82, 0xF7, 0xDD, 0xCF, 0x08, - 0xF2, 0x50, 0xDB, 0x16, 0xA4, 0x5A, 0x60, 0x4A, - 0x57, 0x2B, 0x0E, 0xDC, 0x4A, 0xBF, 0x9C, 0x86, - 0x08, 0x8A, 0x5A, 0xC8, 0x74, 0xDD, 0xA2, 0x6E, - 0x12, 0xA0, 0xEF, 0x63, 0x5A, 0xD2, 0x82, 0xAD, - 0xCD, 0xC7, 0xED, 0x16, 0x86, 0x45, 0x3D, 0xFB, - 0x35, 0xC3, 0xB1, 0xBA, 0x68, 0x21, 0xB4, 0xB7, - 0x22, 0x0B, 0x55, 0x79, 0x8B, 0x9C, 0xCF, 0xE0, - 0x66, 0x61, 0x5C, 0xE2, 0x55, 0x96, 0x0D, 0x09, - 0xE6, 0x77, 0xFE, 0xFE, 0x76, 0xBE, 0x91, 0x5E, - 0x04, 0xE5, 0x65, 0x44, 0xBD, 0x09, 0xD0, 0x6F, - 0x83, 0x44, 0xF9, 0x68, 0xDC, 0x68, 0x25, 0xCB, - 0xC6, 0x64, 0xD5, 0x18, 0xA4, 0x41, 0xE1, 0x9B, - 0x07, 0x6F, 0xC3, 0x38, 0x91, 0x37, 0xFC, 0x1B, - 0x73, 0x32, 0xE2, 0xB0, 0x68, 0x95, 0x44, 0x3B, - 0x7A, 0x00, 0x23, 0x36, 0x31, 0x15, 0x79, 0xA9, - 0xB0, 0x8F, 0x36, 0x73, 0xDA, 0x05, 0x90, 0xE6, - 0x96, 0xCE, 0xD9, 0x01, 0x44, 0x4A, 0x70, 0xA6, - 0x7B, 0x2A, 0x7D, 0x55, 0x12, 0xD6, 0x5B, 0xFC, - 0xD7, 0xAF, 0x1E, 0x34, 0x27, 0x77, 0x69, 0xE1, - 0x71, 0x08, 0x83, 0x01, 0xDE, 0x78, 0x46, 0xF0, - 0x88, 0xF4, 0x87, 0xC4, 0x92, 0x1B, 0xEB, 0x98, - 0x35, 0x4B, 0xAE, 0x9A, 0xF6, 0xEA, 0xB2, 0x34, - 0x91, 0x14, 0xEB, 0x21, 0xF6, 0x18, 0xDB, 0x1D, - 0x92, 0x6C, 0x1D, 0x2F, 0xE3, 0xA5, 0xF2, 0x29, - 0xC5, 0x73, 0x40, 0xC4, 0x0A, 0xEC, 0x11, 0xC2, - 0xD0, 0x14, 0x4D, 0x03, 0x94, 0xFC, 0x4D, 0x8E, - 0x38, 0x66, 0xA7, 0xD0, 0xA1, 0x0B, 0x64, 0xC8, - 0xB9, 0x92, 0xB0, 0xA4, 0xDD, 0xBC, 0xAD, 0x82, - 0x4E, 0x43, 0x97, 0x43, 0x78, 0xEA, 0x9A, 0x38, - 0xE5, 0x8C, 0x2C, 0x5A, 0xE1, 0x94, 0xAF, 0x43, - 0x10, 0xFB, 0xEC, 0x90, 0x28, 0x41, 0x6C, 0x5C, - 0xB7, 0xB8, 0xAF, 0xA5, 0x24, 0xF7, 0x4F, 0xFD, - 0x6F, 0x2E, 0x98, 0x44, 0x3F, 0x5E, 0x89, 0x24, - 0xF6, 0xCF, 0x11, 0x0E, 0x67, 0x1B, 0x81, 0x68, - 0x37, 0xD5, 0x9B, 0x2D, 0xB9, 0x1C, 0xB1, 0xE6, - 0x87, 0xD6, 0xA2, 0x02, 0x0F, 0x91, 0x08, 0xF6, - 0x9B, 0x94, 0x76, 0x62, 0xFD, 0xE7, 0x18, 0xAC, - 0x28, 0xA6, 0xAC, 0xDA, 0x27, 0xF4, 0x33, 0x59, - 0xBB, 0xBE, 0x36, 0x2C, 0xEE, 0xEA, 0x91, 0xE6, - 0x91, 0x95, 0x2C, 0x58, 0x0A, 0xB2, 0xCA, 0xA3, - 0xAA, 0x39, 0x03, 0x9A, 0x75, 0x3C, 0x27, 0x6E, - 0x02, 0x89, 0x17, 0x4B, 0x02, 0x42, 0x7C, 0xB4, - 0x2E, 0xAD, 0xB4, 0xD9, 0x35, 0xB2, 0x30, 0x9E, - 0x2F, 0xEC, 0x9F, 0x25, 0x56, 0x1A, 0x35, 0x40, - 0xF1, 0xAF, 0x1D, 0xA4, 0xA8, 0x62, 0x07, 0x70, - 0x98, 0x6C, 0xDE, 0x1E, 0x89, 0xC1, 0xD3, 0x30, - 0xBB, 0x82, 0x72, 0x40, 0xF2, 0xBC, 0x53, 0xC7, - 0xDE, 0xAB, 0xFC, 0x7D, 0xAD, 0xBF, 0xDA, 0xE0, - 0xA7, 0xA1, 0x0C, 0xD6, 0x73, 0x37, 0x36, 0xA1, - 0xEE, 0xA6, 0x96, 0x88, 0x79, 0x0E, 0x4A, 0x2C, - 0x69, 0x4C, 0xE5, 0x30, 0xFB, 0xDD, 0xE1, 0xFE, - 0x86, 0x90, 0xDC, 0xDF, 0x03, 0xF5, 0x17, 0x2F, - 0xF4, 0x58, 0x2D, 0xD3, 0xED, 0x3D, 0x7D, 0xA0, - 0xB3, 0x6E, 0x1E, 0xD3, 0xBB, 0xD9, 0x57, 0xBA, - 0x8B, 0x00, 0x72, 0xC4, 0xEE, 0xCF, 0x39, 0xD5, - 0x74, 0xFA, 0x13, 0xF0, 0xD7, 0xE9, 0x10, 0x0C, - 0x7A, 0x52, 0x62, 0xD0, 0xC9, 0xD5, 0x2D, 0xDC, - 0x11, 0xD4, 0xFF, 0x34, 0xB2, 0x55, 0xF9, 0x99, - 0x81, 0xB4, 0xC9, 0x14, 0x02, 0x91, 0x81, 0x56, - 0x29, 0xF6, 0xA9, 0x1A, 0x19, 0x8E, 0x74, 0xB3, - 0xA3, 0xD1, 0x28, 0xB5, 0x72, 0xD8, 0x6F, 0x54, - 0x15, 0x74, 0x55, 0x70, 0x26, 0x62, 0xCB, 0x1D, - 0x15, 0x2C, 0x7F, 0x4C, 0x9C, 0xB4, 0xDE, 0xA2, - 0x07, 0xD5, 0xA9, 0x38, 0x29, 0x42, 0x51, 0x67, - 0x44, 0x26, 0x97, 0x7E, 0x73, 0x0E, 0xC6, 0x01, - 0x00, 0x65, 0xC8, 0xE0, 0x34, 0x88, 0x2B, 0xD3, - 0x2F, 0xD3, 0x5C, 0x6A, 0xF6, 0xB8, 0xD9, 0x3A, - 0x50, 0x9C, 0xC3, 0x39, 0xD9, 0x6F, 0xB9, 0xDD, - 0x55, 0x8A, 0xF9, 0x52, 0x35, 0xFB, 0xF1, 0x71, - 0x97, 0x76, 0x04, 0x75, 0xEE, 0x2E, 0x3F, 0xCA, - 0x0E, 0x83, 0xA8, 0xE3, 0x1F, 0xA7, 0xF1, 0x3D, - 0x78, 0xCC, 0x79, 0x64, 0x80, 0x5E, 0x77, 0x05, - 0xDB, 0xB7, 0x0F, 0x73, 0x53, 0x3A, 0x56, 0xD8, - 0xB7, 0x7C, 0x12, 0xE8, 0xF6, 0x51, 0x07, 0xC9, - 0x01, 0x43, 0x97, 0x51, 0x75, 0x95, 0x94, 0x65, - 0xFD, 0x4D, 0x8C, 0x8C, 0xD3, 0xA8, 0xEE, 0xA9, - 0x5E, 0xFB, 0xC7, 0xF6, 0xF8, 0x40, 0x0E, 0xA5, - 0xD5, 0x1E, 0x79, 0xB4, 0x0C, 0xEF, 0x8B, 0x04, - 0x59, 0x4D, 0x0C, 0x6F, 0x08, 0xD5, 0x00, 0xA2, - 0xAD, 0x08, 0xB4, 0x62, 0xE0, 0x2C, 0xF6, 0x30, - 0x31, 0x1E, 0xD7, 0x81, 0x56, 0x61, 0x17, 0x0D, - 0xB3, 0x9F, 0x27, 0x75, 0x38, 0x42, 0x6E, 0xB2, - 0xB0, 0x6C, 0xB8, 0xC9, 0xD8, 0x20, 0xC8, 0x36, - 0x7D, 0x1D, 0x57, 0x10, 0x4E, 0xC1, 0x45, 0xFC, - 0x93, 0xB1, 0xF7, 0x7B, 0xA1, 0x3B, 0x71, 0x12, - 0x16, 0xE5, 0x8F, 0xD0, 0x0C, 0x7D, 0xC0, 0x05, - 0x18, 0x02, 0x24, 0x25, 0x28, 0x8A, 0xE1, 0x29, - 0x9A, 0x79, 0xBD, 0xC7, 0x73, 0x2D, 0xF3, 0x42, - 0x70, 0x33, 0xF3, 0xF8, 0x48, 0x87, 0xB4, 0xD4, - 0x91, 0xE1, 0x53, 0xBA, 0x4A, 0x63, 0xAF, 0x3A, - 0xE5, 0xCB, 0x3D, 0x41, 0x04, 0xB5, 0x30, 0x87, - 0xAA, 0x40, 0x03, 0x56, 0x10, 0x02, 0xF3, 0x6A, - 0x9F, 0xDA, 0x33, 0xBC, 0xB8, 0xA5, 0xD0, 0x56, - 0x43, 0x29, 0xDA, 0x58, 0x12, 0x8B, 0x6A, 0x9D, - 0xCF, 0xCD, 0xCA, 0x66, 0x98, 0x92, 0x1D, 0xA4, - 0xEF, 0xAC, 0x9E, 0x19, 0xDE, 0xF7, 0xFE, 0x6C, - 0x3A, 0x66, 0x46, 0xB4, 0x00, 0x7F, 0x08, 0xAF, - 0x31, 0xD6, 0xD3, 0x22, 0x59, 0x1F, 0x34, 0x48, - 0x5A, 0xE1, 0x4E, 0x0F, 0x6F, 0x2D, 0xD0, 0xE5, - 0x8E, 0x34, 0x3B, 0xC0, 0x55, 0x02, 0x2D, 0x17, - 0x4B, 0x34, 0x78, 0x46, 0xD4, 0xC4, 0x7F, 0x1D, - 0xDC, 0x39, 0x94, 0x69, 0x78, 0xAB, 0xD8, 0x2B, - 0x6D, 0xF3, 0x1C, 0x0B, 0x0F, 0x4A, 0xA0, 0xB2, - 0xAC, 0x1A, 0x79, 0x7F, 0x9D, 0xE5, 0xE8, 0xC6, - 0x40, 0x4B, 0xCE, 0x32, 0x4B, 0xA1, 0x3C, 0x77, - 0xED, 0x5D, 0x59, 0x0F, 0xE0, 0x7D, 0x00, 0x07, - 0xB4, 0xD8, 0xA6, 0x3E, 0xC9, 0x6D, 0x62, 0x19, - 0x66, 0xC3, 0xE7, 0x10, 0x3B, 0x6C, 0x7A, 0x36, - 0x49, 0x75, 0xE6, 0x78, 0xB3, 0x8D, 0x04, 0x13, - 0x31, 0xE6, 0x79, 0x72, 0x64, 0x07, 0x76, 0x94, - 0x2B, 0xB4, 0xEC, 0x18, 0x1C, 0x32, 0x3C, 0x26, - 0xC4, 0x81, 0xBF, 0x4F, 0xB5, 0x6E, 0x5D, 0x67, - 0xCF, 0xBE, 0x17, 0x57, 0x11, 0x2B, 0xBC, 0xA0, - 0xF0, 0xC2, 0x70, 0x06, 0x94, 0x26, 0x9B, 0x26, - 0x12, 0x9C, 0x7F, 0x99, 0xD4, 0x4A, 0xF5, 0x60, - 0xCD, 0xF7, 0xA4, 0x70, 0x2E, 0xF5, 0xD6, 0xA2, - 0xEC, 0x0E, 0x99, 0x00, 0x2E, 0x89, 0x30, 0xAA, - 0x4E, 0xC0, 0x62, 0x11, 0x93, 0x0A, 0x1E, 0x68, - 0xF2, 0xED, 0x44, 0x8B, 0x10, 0x4A, 0x75, 0x68, - 0xBF, 0x46, 0xE1, 0x41, 0xD6, 0x0B, 0x61, 0x53, - 0xD4, 0x03, 0x10, 0xB3, 0x8F, 0x8E, 0x14, 0x57, - 0x27, 0x8F, 0xE3, 0x49, 0xB2, 0xB4, 0xA7, 0xAE, - 0x39, 0x7A, 0x7B, 0x8F, 0x48, 0xAA, 0xA5, 0xFD, - 0xC1, 0x28, 0x8E, 0x43, 0xE0, 0x58, 0x39, 0x32, - 0x0A, 0x14, 0xC6, 0x3A, 0xB8, 0x58, 0xE2, 0x6E, - 0x7D, 0x8C, 0x35, 0xB6, 0x47, 0x37, 0x90, 0x4D, - 0x89, 0xC1, 0x9A, 0x10, 0x3D, 0x6B, 0x68, 0x9A, - 0x3D, 0xC9, 0x0C, 0x72, 0xFC, 0x92, 0xE3, 0x5D, - 0x45, 0x2B, 0x81, 0x43, 0x02, 0x30, 0x70, 0xD4, - 0x8B, 0xB9, 0xFB, 0xB0, 0x45, 0xE3, 0xC6, 0xCE, - 0x9A, 0x8B, 0xD5, 0xC4, 0xB6, 0x7F, 0x5D, 0x8B, - 0x58, 0xC9, 0x6A, 0x28, 0x2D, 0x6E, 0x27, 0x78, - 0x3D, 0x7B, 0x99, 0x0E, 0x05, 0x2B, 0xD9, 0x5E, - 0x86, 0x50, 0x8F, 0x9B, 0xF7, 0xC0, 0x64, 0xA8, - 0xF2, 0x39, 0xE0, 0x24, 0x0A, 0x20, 0xD8, 0xDF, - 0x3A, 0x87, 0x6E, 0xDC, 0x8F, 0xF6, 0x24, 0x1B, - 0x54, 0xF2, 0x70, 0xA9, 0x8C, 0xB8, 0x07, 0x7A, - 0xAF, 0xE0, 0xE5, 0x8E, 0x5E, 0x98, 0x13, 0xC6, - 0xA5, 0xF9, 0x1F, 0x52, 0x89, 0x7B, 0x6A, 0xAD, - 0x24, 0x26, 0xC6, 0x0D, 0xA5, 0x88, 0x3E, 0x6B, - 0xDF, 0xEE, 0x33, 0x0A, 0x86, 0x09, 0xA2, 0x11, - 0x8B, 0x69, 0x9F, 0x75, 0xCE, 0xFD, 0x05, 0x01, - 0x95, 0x14, 0x64, 0xCD, 0x62, 0x04, 0x09, 0x87, - 0xFC, 0xF6, 0xB2, 0x2E, 0xCA, 0x92, 0xE4, 0x4F, - 0x55, 0xB3, 0x8C, 0x64, 0x99, 0xA8, 0xDA, 0x0A, - 0xC7, 0x82, 0x56, 0x93, 0x03, 0x67, 0xA4, 0xD7, - 0x54, 0x91, 0xA0, 0x89, 0xD8, 0x94, 0x1F, 0x6C, - 0x53, 0xCC, 0xB2, 0x60, 0x13, 0x6A, 0x93, 0xE1, - 0xFC, 0xA3, 0xDD, 0x72, 0xD5, 0x5A, 0x92, 0x35, - 0x9E, 0x3D, 0x62, 0x82, 0x70, 0x5D, 0x54, 0xAF, - 0x57, 0xC6, 0x98, 0x5E, 0x74, 0xE0, 0xF2, 0x33, - 0x26, 0x61, 0xBF, 0x2B, 0xDD, 0x78, 0x47, 0x29, - 0x04, 0xC7, 0xF0, 0x58, 0x17, 0xFC, 0x9D, 0xED, - 0xEF, 0x15, 0x6A, 0xCA, 0xC7, 0x46, 0xCE, 0x12, - 0xF8, 0x90, 0xD8, 0x5A, 0x93, 0x98, 0xA9, 0xED, - 0xFB, 0xF4, 0x6E, 0x73, 0x48, 0x81, 0x4A, 0x08, - 0x07, 0x29, 0xC8, 0x3E, 0x70, 0x4C, 0x40, 0x30, - 0x20, 0x2C, 0xF6, 0x1E, 0xCD, 0xEE, 0x27, 0x95, - 0xD5, 0x07, 0xAC, 0x28, 0x81, 0x4F, 0x53, 0xCD, - 0x06, 0x60, 0xA5, 0x57, 0x2C, 0xBE, 0x1A, 0xE5, - 0x33, 0x38, 0xB8, 0xEF, 0xDC, 0xA3, 0x1A, 0xA5, - 0xB9, 0x5A, 0xA9, 0xE7, 0x65, 0xAF, 0x4D, 0xA0, - 0x4C, 0x9B, 0x31, 0x62, 0x67, 0x7E, 0x41, 0xC0, - 0x18, 0xA5, 0xE1, 0x8A, 0xF2, 0xF9, 0x8A, 0xCA, - 0x14, 0x5C, 0xCD, 0x1B, 0x8F, 0x74, 0x31, 0x07, - 0x6A, 0x14, 0xA7, 0xC2, 0x0F, 0x6C, 0x72, 0xE8, - 0xEB, 0x97, 0x51, 0xB7, 0x89, 0x2E, 0x41, 0x01, - 0x54, 0x47, 0x63, 0x0E, 0xAA, 0x84, 0xB9, 0x60, - 0x1C, 0xB9, 0x54, 0xD8, 0x97, 0x39, 0x38, 0x9D, - 0x52, 0xBB, 0x91, 0xA9, 0x7F, 0x96, 0x08, 0x7C, - 0xB3, 0x8B, 0x0E, 0xAB, 0x59, 0xA7, 0x84, 0x68, - 0x34, 0x65, 0x55, 0xC7, 0x12, 0x84, 0xC2, 0xFB, - 0xBD, 0x27, 0x58, 0x18, 0xE9, 0x26, 0x73, 0xFA, - 0x42, 0xAB, 0x5E, 0x0D, 0x97, 0x76, 0x67, 0xA9, - 0x0F, 0x75, 0x92, 0x6C, 0x80, 0x76, 0x87, 0x75, - 0xD2, 0x3D, 0xFE, 0x0B, 0x33, 0x7B, 0x48, 0xB0, - 0xC8, 0x28, 0x1F, 0xE6, 0x3F, 0x18, 0xF2, 0x45, - 0xF8, 0x8F, 0x21, 0xE1, 0x1C, 0x56, 0xA5, 0x33, - 0x71, 0x88, 0x42, 0x5A, 0x34, 0x8B, 0x24, 0xDD, - 0x0E, 0x98, 0x30, 0xDB, 0x6B, 0x6C, 0x89, 0x64, - 0x8C, 0x7A, 0x63, 0x3C, 0xA9, 0xD8, 0x32, 0x51, - 0xD0, 0xC6, 0xF7, 0xA4, 0x53, 0x95, 0x0D, 0x02, - 0x19, 0x6A, 0x77, 0xBC, 0xDF, 0xD5, 0x2B, 0x2C, - 0x65, 0xC9, 0xBF, 0x72, 0x69, 0xC3, 0x0C, 0xEF, - 0x34, 0x75, 0x76, 0x29, 0x59, 0xBE, 0x9D, 0xE9, - 0x44, 0x21, 0x2F, 0x5F, 0xB7, 0x89, 0xA6, 0xCD, - 0x0A, 0x9A, 0x9E, 0x77, 0x5B, 0xBD, 0xDA, 0x03, - 0xA4, 0xBC, 0xFB, 0x47, 0xC1, 0x77, 0x73, 0x00, - 0x26, 0xAE, 0x2E, 0xFA, 0x62, 0x18, 0x9D, 0xB8, - 0xE2, 0xD3, 0x7A, 0xB9, 0xD8, 0xCF, 0xE9, 0x61, - 0x11, 0x80, 0xE9, 0xDC, 0xC3, 0x32, 0x9E, 0x63, - 0x6F, 0xD9, 0x42, 0xF6, 0x76, 0x7F, 0xBC, 0xBF, - 0xDB, 0x08, 0x2F, 0xA0, 0xEB, 0xB8, 0x4D, 0xF3, - 0x76, 0x62, 0xAA, 0xFA, 0x20, 0x4A, 0xDD, 0xE6, - 0xB3, 0x72, 0xC7, 0x7D, 0x36, 0x4F, 0x08, 0x56, - 0x4F, 0x19, 0xB2, 0xB0, 0x0C, 0x13, 0x1A, 0x8C, - 0xCE, 0x9A, 0x04, 0xB5, 0xB6, 0x9C, 0xD3, 0xD8, - 0xFE, 0x1F, 0x2C, 0xCC, 0x89, 0xEE, 0x7D, 0x22, - 0x8A, 0x4E, 0x0A, 0x91, 0x0C, 0x8B, 0x5A, 0xE0, - 0xBD, 0xE5, 0x3D, 0xBE, 0x90, 0x4B, 0x13, 0xA3, - 0x2F, 0x33, 0xE9, 0x9D, 0x6C, 0x67, 0x35, 0xBD, - 0x03, 0xD4, 0x09, 0x90, 0x2F, 0xC6, 0x3C, 0x8D, - 0xD8, 0x43, 0xFC, 0x1F, 0xB7, 0x49, 0xC0, 0xB7, - 0x38, 0x70, 0x1D, 0xEB, 0x5A, 0xD7, 0xAC, 0x07, - 0xAF, 0x5B, 0x93, 0xC5, 0x7B, 0x55, 0x65, 0x86, - 0x6E, 0xC1, 0xDB, 0xCD, 0x42, 0x92, 0x50, 0xDB, - 0xD1, 0x97, 0x95, 0x3D, 0x53, 0xC3, 0xFE, 0xC2, - 0xF9, 0x65, 0xF3, 0xD2, 0xEE, 0xA4, 0x7E, 0xDE, - 0xA1, 0x4B, 0x23, 0x7F, 0xA1, 0x0D, 0x25, 0x6E, - 0x80, 0x4F, 0xE3, 0xB5, 0x0C, 0xBA, 0x1C, 0x2B, - 0x42, 0x0B, 0x8F, 0xD9, 0xB6, 0x4E, 0x52, 0xD2, - 0xDB, 0x35, 0xD2, 0xA1, 0xC4, 0xE6, 0xD6, 0x51, - 0x76, 0xE7, 0x87, 0x5E, 0xBE, 0x93, 0xE6, 0x61, - 0x71, 0x4C, 0x8B, 0xA6, 0x96, 0xDA, 0xF7, 0xCB, - 0x06, 0xB7, 0xB8, 0xC4, 0xF6, 0xF5, 0xC6, 0x29, - 0xAA, 0xE1, 0x13, 0x87, 0x6F, 0x96, 0xBA, 0x0C, - 0xF6, 0x79, 0x8F, 0x03, 0x86, 0x22, 0xE3, 0xFB, - 0xCF, 0x86, 0xCF, 0x7C, 0x77, 0xFD, 0xB4, 0xEE, - 0xBD, 0x42, 0x38, 0x7F, 0xF2, 0xCC, 0xCB, 0x06, - 0xEA, 0x0D, 0x81, 0xA1, 0x8E, 0xB5, 0xE7, 0x40, - 0xC8, 0x03, 0xA3, 0x4B, 0xC8, 0xB4, 0x0E, 0x3E, - 0x36, 0xAB, 0x90, 0xC1, 0xFC, 0xB0, 0x37, 0x2B, - 0x83, 0xA1, 0x3D, 0x56, 0xD6, 0x83, 0x0F, 0x99, - 0xC4, 0x58, 0xB8, 0x94, 0x61, 0x19, 0xA6, 0x60, - 0x47, 0xCB, 0x2D, 0xAF, 0x29, 0x38, 0x90, 0xFA, - 0x99, 0x0F, 0x02, 0x02, 0x65, 0x90, 0x5F, 0xA2, - 0xA2, 0xE3, 0xBB, 0x34, 0x15, 0x2F, 0x0B, 0xF5, - 0xB2, 0xCC, 0x83, 0x59, 0xAF, 0xA7, 0x4D, 0x38, - 0xAD, 0xF6, 0x52, 0x5C, 0x53, 0xD9, 0x0E, 0x3F, - 0xD6, 0x53, 0x86, 0xE2, 0x79, 0xC2, 0x65, 0x48, - 0xB2, 0x67, 0x3B, 0xAF, 0x52, 0x53, 0x57, 0x9A, - 0x27, 0x80, 0x88, 0x37, 0x77, 0x67, 0x4E, 0x1F, - 0xF1, 0x7B, 0xC5, 0xCB, 0xD8, 0x11, 0x0A, 0xDD, - 0x92, 0x0E, 0x88, 0x6C, 0xCA, 0x33, 0x76, 0x3B, - 0x04, 0xFA, 0xC0, 0xFD, 0xC6, 0x3F, 0xB4, 0x72, - 0xC2, 0x2B, 0x6D, 0x5E, 0xB6, 0xA1, 0x4E, 0x5F, - 0xC0, 0x50, 0x16, 0xEF, 0xFE, 0x6A, 0x42, 0x72, - 0x65, 0x02, 0xEE, 0x07, 0xC6, 0x19, 0xC6, 0x95, - 0xDE, 0x3F, 0xD9, 0xC5, 0xC6, 0x0E, 0x70, 0x07, - 0x6A, 0xC3, 0x36, 0x1B, 0x84, 0x6F, 0xDF, 0x80, - 0x16, 0x4E, 0x86, 0x90, 0xC8, 0x55, 0x7B, 0xDD, - 0xC0, 0x86, 0x0C, 0x37, 0x47, 0x1F, 0x35, 0xF8, - 0x47, 0xF2, 0xCD, 0x96, 0x21, 0x64, 0xAD, 0x46, - 0xE1, 0xDF, 0x44, 0x79, 0x48, 0x02, 0xF9, 0x71, - 0x39, 0x35, 0x26, 0xFC, 0x12, 0x0D, 0x88, 0xAC, - 0xD6, 0xFA, 0x29, 0x74, 0x55, 0x51, 0xE7, 0xAF, - 0x3D, 0x7E, 0x1E, 0x7E, 0xE0, 0x18, 0xB6, 0x3C, - 0x4B, 0x99, 0x9D, 0x51, 0x02, 0x51, 0xD8, 0xE9, - 0xFA, 0x61, 0x88, 0x2E, 0xCF, 0x73, 0x77, 0x65, - 0x71, 0xAE, 0xAE, 0xD7, 0xA1, 0xF9, 0xE0, 0x7F, - 0x30, 0x46, 0xCB, 0x20, 0xEC, 0xF4, 0xD2, 0xC1, - 0x63, 0xF5, 0x6F, 0x8A, 0x72, 0xF9, 0x5B, 0x85, - 0xD2, 0xCA, 0x6D, 0x35, 0xD1, 0x17, 0xF6, 0x08, - 0x9E, 0x0A, 0x73, 0xB3, 0xDA, 0x1A, 0x32, 0xBA, - 0x23, 0x10, 0x4A, 0x5D, 0xD7, 0xAA, 0xB4, 0x68, - 0x97, 0x59, 0x45, 0xC5, 0x7C, 0x16, 0x6F, 0xE4, - 0x62, 0x89, 0xF1, 0xD3, 0xB4, 0x03, 0x90, 0x7B, - 0xA4, 0xA2, 0xCA, 0xA0, 0x5D, 0x69, 0x1B, 0xA9, - 0xBB, 0xEB, 0xA0, 0xE2, 0xDE, 0xBE, 0x0E, 0xC4, - 0x9E, 0x21, 0x38, 0x61, 0x92, 0x9B, 0xAB, 0x69, - 0xAA, 0xD0, 0x1D, 0xF6, 0xC3, 0xEE, 0xA6, 0xC3, - 0xF3, 0x29, 0x1B, 0xE5, 0x6E, 0x52, 0x89, 0xD0, - 0xBA, 0xD8, 0x60, 0x27, 0x80, 0x1A, 0xB5, 0x7F, - 0x7F, 0xB5, 0xC2, 0x5A, 0xC6, 0x83, 0xA4, 0xC0, - 0x88, 0x39, 0xF3, 0xE7, 0x39, 0xD6, 0x81, 0x1C, - 0x13, 0x20, 0xFD, 0x93, 0x3D, 0x8E, 0x79, 0x60, - 0x7C, 0xFF, 0xE4, 0x37, 0x5B, 0x33, 0xA3, 0x9D, - 0xB7, 0x57, 0xCD, 0x45, 0x0A, 0xB9, 0xE4, 0xF1, - 0xBC, 0x59, 0x74, 0xE8, 0xB3, 0x06, 0xD0, 0x9F, - 0x0F, 0xBC, 0x5B, 0x23, 0xB8, 0x6C, 0xD6, 0x4D, - 0xFA, 0xCC, 0x14, 0xAB, 0x74, 0x61, 0x1A, 0xFC, - 0x22, 0xA6, 0xED, 0x09, 0x76, 0x91, 0xD8, 0x6E, - 0x44, 0xB6, 0x00, 0x14, 0xDC, 0x74, 0x2D, 0x90, - 0xAA, 0x59, 0x98, 0x76, 0x30, 0xC5, 0x44, 0xA4, - 0x61, 0x43, 0xD6, 0xE2, 0x28, 0x28, 0xA7, 0xBD, - 0x6E, 0x50, 0x5C, 0xE1, 0x96, 0x7A, 0xF8, 0xA8, - 0x32, 0x8C, 0xE9, 0xFD, 0x11, 0x37, 0x91, 0xD1, - 0xAF, 0x3C, 0xD3, 0x1C, 0x1E, 0x88, 0x4D, 0x7E, - 0x87, 0x84, 0x84, 0x6F, 0x39, 0x0B, 0xFB, 0x2D, - 0xB3, 0x12, 0x4C, 0x6D, 0x45, 0xDD, 0xCD, 0x7D, - 0x75, 0xB7, 0xFE, 0x7E, 0x44, 0xCC, 0x29, 0xE5, - 0xB3, 0x10, 0xEE, 0x23, 0x55, 0x5B, 0xCF, 0xBA, - 0xBD, 0xA1, 0xBE, 0x64, 0xF8, 0x6E, 0x60, 0x31, - 0x0A, 0x2D, 0xC9, 0x3B, 0x1D, 0x44, 0xE1, 0x9D, - 0x60, 0x28, 0x77, 0xEE - }; - static const byte rnd_65[] = { - 0x4E, 0x7A, 0x01, 0x7C, 0x15, 0x03, 0x9D, 0xC2, - 0x00, 0x51, 0xD2, 0x96, 0x0E, 0x5E, 0x15, 0x59, - 0xCC, 0x27, 0xED, 0x46, 0x87, 0x7C, 0xB9, 0x81, - 0x16, 0x19, 0x9A, 0x0F, 0x41, 0x05, 0xFE, 0x32 - }; - static const byte sig_65[] = { - 0xB8, 0x65, 0xB0, 0x0B, 0x21, 0x18, 0xDB, 0xB0, - 0x0B, 0x70, 0x1C, 0x66, 0x45, 0x65, 0x5E, 0x8A, - 0xCF, 0xA8, 0x4E, 0xA7, 0x92, 0xB4, 0x48, 0x64, - 0x2E, 0x18, 0x32, 0xC3, 0x70, 0x7C, 0x87, 0xCF, - 0x09, 0xFB, 0xE7, 0x72, 0xF1, 0xD4, 0x38, 0x5B, - 0xFB, 0xE5, 0xE6, 0xCF, 0xBB, 0xE2, 0x6C, 0x10, - 0xED, 0x6E, 0xB8, 0x65, 0xC8, 0x87, 0xF8, 0x69, - 0x39, 0x43, 0x9A, 0x9B, 0xF7, 0x68, 0xBF, 0x03, - 0x9D, 0x73, 0xE3, 0xEA, 0x83, 0xBD, 0xF1, 0x85, - 0x03, 0xB5, 0xD1, 0xB3, 0x91, 0x79, 0xA8, 0x27, - 0xB0, 0xD7, 0x80, 0x5F, 0x98, 0x42, 0x8B, 0xD8, - 0x7C, 0xEA, 0x6B, 0x06, 0x96, 0x0C, 0x78, 0xB4, - 0xB5, 0x86, 0xFB, 0x0D, 0x5E, 0xDA, 0x9F, 0xAA, - 0xC0, 0x25, 0x6E, 0x38, 0x82, 0x35, 0x62, 0xA3, - 0x07, 0x96, 0x61, 0x17, 0x00, 0x5A, 0xA4, 0x2F, - 0x1B, 0x65, 0x54, 0xA0, 0x48, 0x75, 0xF8, 0x5C, - 0x2E, 0x3F, 0xAF, 0xA6, 0x52, 0x47, 0x1D, 0x4E, - 0x98, 0x06, 0x54, 0x82, 0xFC, 0x7D, 0xF4, 0x9B, - 0x2C, 0x40, 0xD0, 0xE7, 0xB9, 0x82, 0x38, 0xDF, - 0xBE, 0x85, 0x3D, 0x16, 0xBF, 0x99, 0x92, 0xBB, - 0x08, 0xC1, 0x92, 0x59, 0xF9, 0xB5, 0x75, 0xEA, - 0x7A, 0x4A, 0x80, 0x09, 0x3A, 0x64, 0xA9, 0x26, - 0x71, 0x85, 0x7A, 0x50, 0x89, 0x20, 0xD6, 0x0F, - 0xF6, 0xFB, 0xF3, 0x83, 0x41, 0xC5, 0x59, 0x01, - 0x05, 0x63, 0x3A, 0x42, 0x6D, 0x60, 0x2D, 0xAC, - 0x06, 0x4D, 0xD7, 0xA7, 0xF1, 0x1A, 0x60, 0x21, - 0x5C, 0x35, 0xB7, 0xB9, 0xC0, 0x0E, 0x9D, 0x84, - 0x63, 0x98, 0x8C, 0xF4, 0x72, 0xCD, 0x6A, 0xCF, - 0xB7, 0xF7, 0x22, 0xB8, 0xC4, 0xC6, 0x27, 0x02, - 0x60, 0x7A, 0x67, 0x48, 0x80, 0xAC, 0xB3, 0xD6, - 0xC6, 0x25, 0x3E, 0x71, 0x17, 0x5A, 0x05, 0xB3, - 0x92, 0xCA, 0xB4, 0xBB, 0x14, 0xCE, 0x86, 0xA5, - 0x98, 0xAB, 0xC7, 0x88, 0xD0, 0xFF, 0x4D, 0x82, - 0x77, 0x5E, 0x4E, 0xA0, 0xFC, 0x36, 0x36, 0x3C, - 0xD0, 0xE9, 0x7B, 0x78, 0xA6, 0xAE, 0x4D, 0xA8, - 0xE9, 0x8C, 0xA6, 0x12, 0x77, 0x2D, 0x56, 0xB5, - 0x82, 0xF8, 0x2C, 0x07, 0x09, 0xBE, 0xAE, 0x46, - 0x67, 0x3B, 0xDD, 0x80, 0x42, 0x86, 0x5C, 0xFA, - 0x95, 0xBF, 0x53, 0x38, 0xCF, 0xEA, 0x60, 0x6A, - 0x6E, 0xF3, 0x16, 0x38, 0x46, 0xAE, 0x83, 0xB2, - 0x5E, 0x5F, 0x5B, 0xD3, 0x1C, 0x83, 0xF1, 0x36, - 0x72, 0x9A, 0x8E, 0xA6, 0x27, 0x4F, 0x99, 0x4F, - 0xA9, 0x04, 0x5F, 0xA8, 0xA9, 0x0F, 0xF8, 0x54, - 0xB8, 0x71, 0xCF, 0x82, 0xE2, 0xB7, 0x01, 0xE8, - 0xF4, 0xAC, 0x04, 0xFE, 0x9E, 0x28, 0x49, 0x1B, - 0x9A, 0x25, 0xFF, 0x26, 0x3E, 0x2C, 0xF7, 0x54, - 0x99, 0xE0, 0x09, 0xFD, 0x02, 0x29, 0xFB, 0xF7, - 0xE5, 0xE4, 0x60, 0x44, 0x34, 0x4B, 0x07, 0xD7, - 0x22, 0x14, 0xA9, 0xAC, 0xB4, 0xFF, 0x61, 0x02, - 0xAB, 0xC1, 0x26, 0x2B, 0xC2, 0xE1, 0xCD, 0x24, - 0x91, 0x60, 0x7A, 0xE7, 0xAA, 0xEC, 0xF4, 0xC3, - 0x51, 0x75, 0xCF, 0xA4, 0x38, 0x3A, 0xA8, 0x6A, - 0xF1, 0xE6, 0x2E, 0xD0, 0x63, 0x87, 0xCC, 0x59, - 0x48, 0x36, 0x46, 0x7F, 0x41, 0xDF, 0xCA, 0x8F, - 0xA0, 0xCA, 0x71, 0x28, 0x0B, 0xFB, 0x1C, 0x25, - 0x60, 0xC8, 0x99, 0x55, 0x36, 0xF8, 0x42, 0x74, - 0x70, 0x45, 0x59, 0x14, 0x53, 0x74, 0x5F, 0x26, - 0x03, 0x82, 0xE3, 0xDA, 0x50, 0x79, 0x3F, 0xD7, - 0xCA, 0x76, 0x27, 0x18, 0x5D, 0xBD, 0xCE, 0xDD, - 0xF6, 0x9B, 0x2D, 0x3E, 0x15, 0x1C, 0x7F, 0x97, - 0x28, 0x8A, 0x38, 0x2A, 0x92, 0xB0, 0x50, 0xF7, - 0x91, 0xF9, 0x58, 0x7D, 0x77, 0xC6, 0x4D, 0x8B, - 0x5D, 0x40, 0xAA, 0x19, 0x9D, 0x49, 0x66, 0xBE, - 0x2D, 0x52, 0x4F, 0x96, 0x10, 0xF2, 0xFA, 0x02, - 0xED, 0x23, 0x17, 0x63, 0x69, 0xDB, 0x93, 0x93, - 0x50, 0xDA, 0x60, 0x1E, 0xA6, 0x67, 0x70, 0x95, - 0x2E, 0x0F, 0x23, 0xED, 0xA6, 0x8A, 0x73, 0x75, - 0x6E, 0xFF, 0x61, 0x0E, 0x8D, 0x6A, 0x9F, 0x49, - 0x34, 0x56, 0x58, 0x54, 0x42, 0x82, 0x45, 0x3B, - 0x5E, 0x73, 0xA3, 0x22, 0xA0, 0x32, 0x67, 0xC9, - 0x69, 0xB5, 0x07, 0x34, 0xF2, 0xEC, 0xD4, 0xEC, - 0x90, 0x55, 0x76, 0x0D, 0x92, 0x86, 0x10, 0xE9, - 0x4E, 0x0B, 0x16, 0x28, 0xD6, 0xAF, 0x1B, 0x27, - 0xAB, 0x13, 0x82, 0x9F, 0x7F, 0x8E, 0xF5, 0x0D, - 0x9E, 0x29, 0x96, 0xFC, 0x64, 0xB0, 0x6A, 0xC8, - 0x94, 0x61, 0x14, 0x76, 0x6D, 0xAD, 0x8D, 0xFF, - 0xE6, 0x34, 0xF4, 0x7E, 0x9D, 0x85, 0x69, 0x96, - 0x6C, 0x6F, 0x69, 0x68, 0x21, 0x8C, 0x5B, 0x86, - 0x33, 0x61, 0x1B, 0xF4, 0x2B, 0x4F, 0xC0, 0xE7, - 0x8D, 0x0C, 0x02, 0x9E, 0xAB, 0x85, 0xF2, 0x2F, - 0x16, 0x17, 0x19, 0x80, 0xCC, 0x65, 0xF2, 0x84, - 0x45, 0xA1, 0x1A, 0x08, 0x3A, 0xA0, 0x29, 0x77, - 0xC2, 0xE8, 0x88, 0x6E, 0xD2, 0x70, 0x67, 0x2E, - 0x51, 0x2A, 0xE8, 0x9C, 0x6A, 0x26, 0xFC, 0xAD, - 0x1E, 0xC7, 0x2B, 0x9E, 0xCF, 0xA5, 0xA5, 0xEF, - 0xC7, 0x0F, 0xF0, 0xBA, 0xB2, 0x8F, 0x11, 0x4F, - 0x4D, 0xA8, 0x17, 0x0F, 0xE8, 0xB6, 0x3C, 0x2E, - 0x11, 0xBE, 0x7A, 0x35, 0x46, 0x6E, 0x97, 0x9A, - 0x12, 0x7E, 0xC0, 0xD2, 0x03, 0x23, 0xD5, 0x02, - 0x73, 0x0A, 0xBC, 0xE6, 0x40, 0xA2, 0x44, 0x1C, - 0xDD, 0xAB, 0xA3, 0x26, 0xD6, 0x78, 0x3D, 0x01, - 0x92, 0xDB, 0xA9, 0xE9, 0x3F, 0xE5, 0x07, 0xC6, - 0xA7, 0x37, 0x67, 0xBE, 0x56, 0xE2, 0x77, 0x65, - 0x76, 0xEF, 0xEF, 0xF1, 0xCA, 0x17, 0x9D, 0x83, - 0x34, 0x3E, 0x38, 0xC6, 0xA9, 0xC2, 0xFE, 0x72, - 0x5D, 0xDE, 0x80, 0x7D, 0x21, 0x72, 0x5E, 0x73, - 0x08, 0x72, 0xE2, 0xAB, 0x3D, 0x90, 0x11, 0x61, - 0xF4, 0x55, 0xBC, 0xAD, 0x23, 0xA8, 0x43, 0x3A, - 0x41, 0x31, 0x51, 0xFD, 0x22, 0x17, 0x14, 0x31, - 0x0E, 0x4D, 0x0B, 0x6A, 0x1E, 0x1B, 0x2C, 0xAC, - 0xA4, 0x99, 0xEE, 0xE8, 0x05, 0xA1, 0x64, 0xF2, - 0x91, 0xD5, 0x07, 0x5E, 0x6B, 0x65, 0xA7, 0x9C, - 0x2B, 0xCA, 0xD9, 0x17, 0xB1, 0x22, 0xFE, 0x1A, - 0xC4, 0xFB, 0xB4, 0x10, 0x21, 0x1B, 0xA0, 0xA1, - 0x99, 0x7A, 0x31, 0x30, 0x7C, 0x01, 0xF0, 0xFE, - 0xD3, 0xB3, 0x14, 0x3D, 0x28, 0x34, 0x0F, 0xAC, - 0xF0, 0x93, 0x37, 0xC4, 0xEF, 0x04, 0x74, 0x80, - 0xA2, 0x90, 0xAE, 0x02, 0xB2, 0xF7, 0xD8, 0x7B, - 0x8C, 0x29, 0xA0, 0xAE, 0xAE, 0x2E, 0x92, 0xC9, - 0xC5, 0x44, 0x7D, 0x66, 0xC5, 0x5C, 0x1D, 0x1E, - 0x25, 0x88, 0x5D, 0x10, 0x37, 0xFB, 0x5F, 0xCC, - 0x80, 0x15, 0x4F, 0x1D, 0x23, 0xB4, 0xF2, 0x7B, - 0x5B, 0xAC, 0x89, 0xBE, 0x1C, 0x36, 0x3C, 0xFF, - 0x8E, 0xA7, 0x58, 0x73, 0xAC, 0x3F, 0x63, 0x33, - 0xE8, 0x6C, 0x53, 0xEC, 0xA5, 0x5D, 0xBE, 0xD5, - 0xE1, 0xF1, 0x12, 0x6B, 0x12, 0x78, 0xC7, 0x29, - 0xC9, 0xA8, 0x4C, 0x4A, 0x1B, 0x7F, 0x15, 0x11, - 0x93, 0x01, 0xC8, 0x0B, 0xE2, 0x2F, 0xE9, 0xBE, - 0xBA, 0x17, 0x59, 0x45, 0xB2, 0x61, 0x2B, 0x66, - 0xDD, 0xCE, 0xDF, 0x9A, 0x2A, 0x4D, 0x5F, 0x24, - 0xF9, 0x02, 0xBB, 0xA6, 0x8D, 0xA7, 0x5D, 0x95, - 0x97, 0x2E, 0x28, 0xD6, 0xCB, 0x70, 0x17, 0xCA, - 0x51, 0xED, 0x58, 0x73, 0xAB, 0x03, 0xDD, 0x2E, - 0x92, 0x6C, 0x15, 0x64, 0x2C, 0x9D, 0x6E, 0x64, - 0x27, 0xFC, 0xE8, 0x0F, 0xC3, 0x8B, 0x34, 0xFE, - 0xB3, 0xC1, 0x55, 0x13, 0xA6, 0x87, 0xC3, 0x5B, - 0x94, 0xEB, 0x83, 0xE4, 0xAB, 0x3E, 0x18, 0x76, - 0x67, 0x92, 0x70, 0xF5, 0xA9, 0x8F, 0x18, 0xA6, - 0x5F, 0x57, 0x41, 0x76, 0x55, 0xFD, 0xA9, 0x99, - 0x4E, 0x8F, 0xCC, 0x61, 0x6C, 0x6C, 0x60, 0x06, - 0x10, 0x40, 0x26, 0xD6, 0xCD, 0x7A, 0xA0, 0x56, - 0x3D, 0x51, 0x07, 0x25, 0x76, 0x00, 0x05, 0xF5, - 0xFD, 0x39, 0xE7, 0x59, 0x24, 0x90, 0x29, 0xF0, - 0x3D, 0x9F, 0x00, 0x67, 0x10, 0x3F, 0xA0, 0x45, - 0x21, 0x14, 0xDF, 0x24, 0x40, 0xE8, 0xC6, 0xDB, - 0x65, 0xE2, 0x39, 0x56, 0xEB, 0x1B, 0xEE, 0xB2, - 0xC3, 0x4E, 0x5B, 0x20, 0xAC, 0x31, 0x6A, 0x03, - 0xA9, 0x54, 0x36, 0x66, 0x62, 0x68, 0xC3, 0xD8, - 0x22, 0x8F, 0x62, 0xEB, 0x56, 0x67, 0xB3, 0xB6, - 0xBB, 0x85, 0x7D, 0xD0, 0x73, 0x7B, 0x69, 0x05, - 0x1E, 0x9F, 0x26, 0xEE, 0x02, 0x36, 0x71, 0xCE, - 0xAD, 0xFA, 0xCA, 0xF9, 0x49, 0x7F, 0x1A, 0xDE, - 0x58, 0x7A, 0x69, 0x3E, 0xEF, 0xFB, 0xFC, 0xD5, - 0x50, 0xEC, 0x20, 0x8C, 0x23, 0x56, 0x91, 0xE8, - 0xE3, 0x66, 0xD9, 0x65, 0xB6, 0x2B, 0xEC, 0x16, - 0xA6, 0x61, 0xCD, 0x5D, 0xE2, 0x87, 0x93, 0x22, - 0x0D, 0x66, 0xF2, 0x64, 0x55, 0x05, 0xB8, 0x52, - 0x41, 0x2F, 0xAE, 0x7B, 0x9D, 0x98, 0x29, 0xBF, - 0x61, 0x5F, 0x7C, 0xBD, 0x59, 0xA7, 0xBC, 0x1D, - 0x03, 0x4E, 0x6A, 0x25, 0x52, 0x9C, 0xFB, 0x48, - 0x6A, 0xF2, 0x01, 0xDE, 0xB7, 0xEA, 0x95, 0xBA, - 0x70, 0x8A, 0x31, 0x59, 0x17, 0x16, 0x74, 0x34, - 0x53, 0x09, 0xDB, 0x81, 0x50, 0xE6, 0x7E, 0xBB, - 0x30, 0xA7, 0xFF, 0x80, 0xCA, 0xC9, 0xAB, 0x13, - 0x92, 0x50, 0x0A, 0x83, 0xE6, 0x3B, 0xBF, 0x7C, - 0x42, 0xEB, 0x94, 0x53, 0xC2, 0xC9, 0xAC, 0xDA, - 0x02, 0xBE, 0x53, 0x82, 0x34, 0xAA, 0xA7, 0xDB, - 0x5A, 0x7F, 0x58, 0x8F, 0xC9, 0x1B, 0x90, 0xEE, - 0x24, 0x77, 0xF2, 0xB6, 0x1C, 0xD1, 0x06, 0x2A, - 0x7E, 0xF1, 0xE6, 0xE4, 0xDC, 0x54, 0xB3, 0x6D, - 0x0E, 0x19, 0x93, 0x3E, 0x98, 0x1C, 0xB7, 0x63, - 0xA9, 0xE1, 0x07, 0xE0, 0x1D, 0xA9, 0x42, 0x0F, - 0x82, 0xCA, 0x79, 0x35, 0x92, 0xA4, 0x7C, 0x4B, - 0x97, 0x7F, 0xF2, 0xC8, 0x84, 0x98, 0xDA, 0x95, - 0xC4, 0x3D, 0x23, 0x2F, 0x42, 0xAF, 0x99, 0x48, - 0x0B, 0xF0, 0xA4, 0xF8, 0xB7, 0xC4, 0x94, 0x9D, - 0x1A, 0xE1, 0xD4, 0xFA, 0x8E, 0x1D, 0x1A, 0x8C, - 0xD0, 0xF9, 0xED, 0x00, 0xDA, 0x59, 0x5E, 0xFD, - 0x2B, 0x76, 0x6F, 0x0B, 0x79, 0xD4, 0x49, 0x0D, - 0xB9, 0x28, 0xEC, 0x44, 0xB5, 0x03, 0x0A, 0x74, - 0xCA, 0x42, 0x81, 0x1A, 0x5B, 0x5A, 0xE5, 0x22, - 0xC7, 0x76, 0x4D, 0xDF, 0xD9, 0xFD, 0x92, 0xF0, - 0x06, 0xE9, 0x4B, 0x35, 0xA7, 0xEF, 0x01, 0x42, - 0xDA, 0x71, 0x78, 0xC2, 0xF5, 0x30, 0x74, 0xD0, - 0x74, 0x51, 0xB1, 0x55, 0x65, 0xA9, 0xE0, 0xC5, - 0x7E, 0xA1, 0xB9, 0x4C, 0x88, 0xEA, 0xE7, 0x41, - 0xB1, 0xF5, 0x01, 0xC4, 0xD3, 0x70, 0x72, 0x7D, - 0xAD, 0x27, 0x65, 0xF7, 0x95, 0xAD, 0x41, 0x46, - 0x35, 0x80, 0x0E, 0xC1, 0x94, 0x9D, 0x03, 0x71, - 0x39, 0xDE, 0x26, 0xAF, 0xCF, 0x93, 0x3D, 0x9A, - 0x09, 0xC1, 0x27, 0xFC, 0x6B, 0x36, 0xE5, 0x18, - 0xC6, 0xDE, 0x94, 0x92, 0xBA, 0x70, 0x82, 0x7B, - 0x68, 0x1C, 0x2D, 0x18, 0xA4, 0x01, 0x23, 0xB6, - 0xC5, 0xF6, 0x17, 0x37, 0xCB, 0x9D, 0xC6, 0xAA, - 0x9C, 0xE1, 0x7D, 0x16, 0x8E, 0xBB, 0xDD, 0xD6, - 0x3C, 0x07, 0x60, 0x19, 0x3C, 0x97, 0x49, 0x33, - 0xDB, 0x47, 0x4A, 0xA8, 0x9A, 0xF3, 0x0E, 0x16, - 0x29, 0x38, 0xF6, 0xDB, 0x78, 0x65, 0xDE, 0x23, - 0x1F, 0x86, 0x16, 0x9C, 0x9E, 0x2A, 0x30, 0x2F, - 0xC4, 0x1F, 0x1B, 0xE5, 0xF3, 0x6C, 0x55, 0x83, - 0xFC, 0xD9, 0x1E, 0x21, 0xCB, 0x8A, 0x67, 0x57, - 0xD3, 0x0A, 0x4B, 0xAC, 0xDB, 0x67, 0xE7, 0xA6, - 0x1B, 0x0C, 0x8E, 0x21, 0x7E, 0x0C, 0xCB, 0xF5, - 0x0E, 0xA6, 0x42, 0xCD, 0xE3, 0xFC, 0x74, 0xC7, - 0xF9, 0xFF, 0xBD, 0xA9, 0xA1, 0xE6, 0x84, 0xBB, - 0xC9, 0xA8, 0xF7, 0xCD, 0x3F, 0x1B, 0xD0, 0xDB, - 0x63, 0xDD, 0xDF, 0x4E, 0xA4, 0x79, 0xC2, 0x35, - 0x65, 0x2C, 0x5D, 0xCB, 0xCA, 0x7B, 0xDD, 0x4E, - 0x2F, 0x33, 0xE8, 0x71, 0x72, 0xC1, 0x8B, 0x5F, - 0xF3, 0x90, 0x99, 0x40, 0x8D, 0x27, 0x2F, 0xD0, - 0xFB, 0x0D, 0x6A, 0x23, 0xB1, 0x43, 0x00, 0xDF, - 0xC6, 0x4C, 0x02, 0x74, 0x3E, 0x52, 0x36, 0x08, - 0xE9, 0x73, 0x61, 0x3D, 0xCA, 0xAC, 0x9D, 0x1D, - 0x14, 0xB3, 0xA6, 0x24, 0x0E, 0xC2, 0xF2, 0x29, - 0x39, 0x91, 0xF6, 0x90, 0x6A, 0xE3, 0x6C, 0x04, - 0x69, 0xF3, 0x09, 0x11, 0x34, 0x8E, 0xC1, 0x2D, - 0xDB, 0xA6, 0xC3, 0xCA, 0x19, 0xBC, 0x69, 0x5F, - 0xCD, 0x16, 0xE5, 0xAE, 0xF2, 0xAD, 0x7C, 0x73, - 0x25, 0x15, 0x70, 0xB5, 0xD0, 0x49, 0xA6, 0xC3, - 0xA5, 0x2F, 0xA3, 0xFC, 0x9E, 0xD5, 0x4E, 0x54, - 0x97, 0x3A, 0xE7, 0x89, 0xB0, 0xBF, 0xD6, 0xF8, - 0xCC, 0x26, 0x44, 0xA9, 0xF8, 0x5A, 0xCE, 0x06, - 0x78, 0xD8, 0x9E, 0xFC, 0x12, 0xB6, 0x11, 0xC3, - 0xDF, 0xAE, 0x3F, 0x94, 0x50, 0x34, 0xB8, 0x99, - 0xBE, 0x99, 0xA7, 0x32, 0x88, 0x9F, 0x17, 0xD2, - 0x08, 0xDC, 0xD7, 0xEE, 0x95, 0x9D, 0x1A, 0xC7, - 0x61, 0xDB, 0xA4, 0x86, 0x4C, 0x14, 0xB0, 0xA3, - 0x5E, 0x4C, 0x7B, 0xBD, 0xA0, 0x96, 0xFB, 0x8A, - 0xB3, 0x22, 0x69, 0x26, 0xC8, 0x9E, 0x7C, 0xDA, - 0x92, 0x9E, 0xF1, 0x30, 0xC6, 0x92, 0xC9, 0x26, - 0x59, 0xE6, 0xF4, 0x65, 0x2B, 0xF2, 0x15, 0x63, - 0x61, 0xC7, 0x7D, 0xBE, 0xEF, 0x5A, 0x06, 0x23, - 0xA0, 0x67, 0x04, 0x99, 0x0E, 0x19, 0x8A, 0x13, - 0x67, 0x30, 0x54, 0x32, 0x4B, 0xBB, 0xAA, 0x64, - 0x36, 0x92, 0xF2, 0x43, 0xD6, 0x7C, 0x1B, 0x4F, - 0x95, 0xB9, 0x28, 0xAC, 0xF1, 0x68, 0x6F, 0x60, - 0xC1, 0x44, 0x87, 0xD6, 0xDD, 0x7F, 0x88, 0x01, - 0xEF, 0x20, 0x93, 0x9E, 0x03, 0xA1, 0xCA, 0x7D, - 0x74, 0x32, 0xDC, 0xF5, 0x95, 0xF1, 0xE9, 0xED, - 0xF2, 0xB2, 0x93, 0x57, 0xA1, 0xD4, 0xC7, 0xDA, - 0x33, 0x51, 0x2C, 0x45, 0x1A, 0x7C, 0x66, 0x04, - 0x38, 0x2D, 0x90, 0xC3, 0x30, 0x79, 0xD9, 0x57, - 0x38, 0xE4, 0x71, 0x89, 0xD8, 0x54, 0x9E, 0x43, - 0xD2, 0x94, 0xE7, 0x3D, 0x1C, 0xA7, 0x48, 0x7B, - 0x50, 0xD0, 0xED, 0x7C, 0xC6, 0xF9, 0x6B, 0xEE, - 0xA7, 0x6C, 0xCE, 0xB9, 0x6D, 0x37, 0x92, 0x00, - 0x4E, 0xB3, 0xE5, 0x49, 0x16, 0x35, 0xA6, 0x7F, - 0x6F, 0xFA, 0x1F, 0x1D, 0xF6, 0xA1, 0xF2, 0xFD, - 0xEE, 0x77, 0x84, 0x17, 0x80, 0xAE, 0x08, 0x09, - 0xD2, 0x92, 0xED, 0x7B, 0x00, 0xF4, 0x2D, 0x80, - 0x91, 0x19, 0x09, 0xB5, 0x1C, 0x9A, 0x3A, 0xE5, - 0x4B, 0x7A, 0x6D, 0x7D, 0x29, 0xD2, 0x00, 0x05, - 0x22, 0xD4, 0xF8, 0x76, 0xE2, 0x5C, 0x0D, 0x6A, - 0x15, 0x77, 0x22, 0x18, 0x85, 0xFD, 0x30, 0x74, - 0xF3, 0x3B, 0xDC, 0xD9, 0x6C, 0xDE, 0x80, 0x40, - 0x4A, 0x37, 0xE1, 0x60, 0x9F, 0x26, 0xCF, 0xBE, - 0x24, 0xA1, 0xFB, 0xF9, 0x76, 0x2A, 0x1A, 0x23, - 0x32, 0xE7, 0xA2, 0xD8, 0x2D, 0xF9, 0xD2, 0x0F, - 0x08, 0x3A, 0xDB, 0x35, 0x35, 0x33, 0x59, 0x0B, - 0xB1, 0xF9, 0x54, 0x33, 0x49, 0x36, 0x9E, 0x21, - 0xEC, 0xF5, 0x94, 0xE2, 0x78, 0x07, 0xA5, 0x63, - 0x50, 0xD6, 0x23, 0x84, 0xDE, 0xAD, 0xA7, 0x89, - 0xBE, 0x92, 0xF0, 0x12, 0xC1, 0xF8, 0xA7, 0x2D, - 0x8B, 0xE0, 0x79, 0xF8, 0xD7, 0xBD, 0x04, 0x0B, - 0xC5, 0xF2, 0x23, 0x36, 0x11, 0x6D, 0x6F, 0x37, - 0xDB, 0xFB, 0xD2, 0xC7, 0x44, 0xC3, 0xAE, 0x78, - 0xEC, 0xB4, 0xE0, 0x5A, 0x55, 0xB3, 0xFC, 0xC3, - 0x1B, 0x8C, 0xA6, 0xDB, 0xE8, 0x95, 0x72, 0x44, - 0x90, 0x8F, 0x4E, 0xD1, 0xD3, 0x46, 0x6C, 0x9E, - 0x00, 0xC6, 0xCC, 0xAE, 0xFC, 0x95, 0x4D, 0x85, - 0x7C, 0x65, 0x5F, 0x74, 0x71, 0xE3, 0x80, 0x88, - 0xCF, 0x1E, 0xB8, 0xBE, 0xED, 0x8D, 0xC4, 0xFB, - 0x3E, 0x36, 0xF3, 0xB8, 0x42, 0x1F, 0x37, 0x31, - 0x8D, 0xA2, 0x35, 0x36, 0x9E, 0x92, 0x3D, 0xD8, - 0xEA, 0xA7, 0xA2, 0x29, 0x0E, 0x14, 0xBF, 0x59, - 0x1E, 0x1D, 0x98, 0x27, 0x30, 0x3B, 0xF3, 0x57, - 0x69, 0x75, 0xCC, 0x3A, 0xB3, 0x49, 0x99, 0x70, - 0x19, 0x50, 0xAB, 0xF6, 0x7F, 0xF6, 0x55, 0x1A, - 0xCA, 0x2D, 0xA0, 0x73, 0x50, 0xE0, 0x9C, 0xEE, - 0x07, 0xEC, 0x37, 0x26, 0x6B, 0xAA, 0xA5, 0x34, - 0xFD, 0x7B, 0x1A, 0x92, 0x4E, 0xE7, 0x36, 0x1A, - 0xEB, 0x35, 0xCC, 0x5A, 0x5C, 0x06, 0x7F, 0x77, - 0xCE, 0x52, 0x33, 0x57, 0x73, 0x9D, 0xEC, 0x2D, - 0x28, 0x0C, 0xC9, 0xBF, 0x06, 0x9E, 0xA7, 0x7C, - 0x36, 0xF9, 0x0B, 0xC6, 0x7F, 0x0F, 0x66, 0x24, - 0x65, 0x2D, 0x30, 0x2B, 0xD7, 0x7F, 0x07, 0xD3, - 0x57, 0xC8, 0x4B, 0xC3, 0x0C, 0xA3, 0x5B, 0xAA, - 0xAF, 0xEA, 0xF3, 0xA3, 0x9E, 0x9E, 0xD4, 0x63, - 0xCD, 0x82, 0x8B, 0xBC, 0x5D, 0xEF, 0xE6, 0x2A, - 0x4D, 0x5B, 0x95, 0x13, 0x17, 0x98, 0xD3, 0x67, - 0x66, 0x04, 0x9E, 0x71, 0x71, 0xE6, 0xBD, 0x44, - 0x15, 0x6B, 0x29, 0x76, 0xE4, 0x62, 0x01, 0x99, - 0xEB, 0xF4, 0x2E, 0x14, 0x29, 0x0D, 0xBF, 0x8A, - 0x02, 0x30, 0x4A, 0xE7, 0x0D, 0x25, 0x42, 0x9E, - 0xD7, 0x0C, 0xAD, 0x30, 0xC6, 0xA3, 0x49, 0xF9, - 0x90, 0x0C, 0x46, 0x5B, 0x77, 0x67, 0x5F, 0x0B, - 0xE9, 0xA9, 0xFE, 0xFA, 0xC8, 0x5F, 0x19, 0xF7, - 0x35, 0x09, 0xF7, 0xB5, 0x6D, 0x51, 0x32, 0x17, - 0xBE, 0xE6, 0xC3, 0xBE, 0x4A, 0x9A, 0x33, 0xDA, - 0xC6, 0x90, 0xB7, 0xA7, 0x6F, 0x97, 0x9E, 0xD5, - 0x80, 0xE5, 0x02, 0x9E, 0x58, 0xD6, 0x45, 0x34, - 0x4D, 0x61, 0x71, 0x19, 0x07, 0x69, 0x1F, 0xAF, - 0xFF, 0x9F, 0xDE, 0x97, 0x13, 0xA1, 0xDF, 0x47, - 0x0E, 0x8B, 0xD6, 0xD0, 0x75, 0x40, 0x08, 0x59, - 0x7D, 0xFB, 0x74, 0x74, 0xF2, 0x48, 0xF4, 0x23, - 0x1B, 0x5E, 0x18, 0x4E, 0x2D, 0x2D, 0xC5, 0x40, - 0xD0, 0x90, 0x4F, 0x95, 0x69, 0xC4, 0xDA, 0xFB, - 0x39, 0x4B, 0x12, 0x7D, 0x22, 0x1E, 0x9A, 0x68, - 0x5B, 0x68, 0x2E, 0x47, 0x23, 0xB9, 0x6A, 0xBF, - 0xF7, 0xE2, 0x56, 0x79, 0xDD, 0x7A, 0x72, 0xF9, - 0x5F, 0x20, 0x6B, 0x29, 0x56, 0xEE, 0x04, 0x11, - 0x4C, 0x16, 0x34, 0x04, 0x14, 0x54, 0xB5, 0x21, - 0xAA, 0x6A, 0x46, 0x40, 0xE4, 0xF1, 0x78, 0x7C, - 0x50, 0xF3, 0x4D, 0xBC, 0x57, 0x34, 0x7C, 0x6A, - 0xBD, 0x9B, 0xEF, 0x03, 0x80, 0x7D, 0xAB, 0x20, - 0x0F, 0x77, 0x87, 0x6F, 0x93, 0xFB, 0x24, 0x20, - 0x82, 0xC7, 0x7E, 0xFB, 0x43, 0x2D, 0xC6, 0xD4, - 0xE9, 0x27, 0x8C, 0x66, 0xA8, 0x5A, 0x58, 0xC8, - 0xD8, 0x9A, 0xA8, 0x50, 0x5F, 0x3A, 0x3D, 0x0B, - 0xC3, 0x4F, 0xCE, 0x94, 0xE0, 0x0D, 0x16, 0xCB, - 0x20, 0xE0, 0xF5, 0x1A, 0x13, 0x6E, 0x28, 0xA6, - 0x42, 0xB2, 0xB1, 0x30, 0x1D, 0x56, 0x28, 0xCD, - 0xF3, 0x4E, 0xA7, 0x3E, 0x74, 0x04, 0x7D, 0xA5, - 0x86, 0xD9, 0x1A, 0xDF, 0x07, 0xBC, 0x2C, 0x59, - 0xB1, 0x91, 0x6D, 0x9B, 0xA2, 0xD0, 0x72, 0xE7, - 0xA5, 0x56, 0x4A, 0x27, 0x56, 0x1F, 0x65, 0xCD, - 0x90, 0x7B, 0xB7, 0x5A, 0x51, 0x25, 0x75, 0x1B, - 0xD9, 0xD4, 0xC7, 0x19, 0x8A, 0xB0, 0x3D, 0x38, - 0x22, 0x61, 0xCF, 0xD9, 0x66, 0xED, 0xF5, 0xB8, - 0xF5, 0x86, 0xFF, 0x98, 0x1A, 0xB7, 0xFB, 0x67, - 0xED, 0x25, 0x52, 0xD9, 0x2F, 0x84, 0xDC, 0x96, - 0x89, 0x2C, 0x52, 0xCF, 0x5F, 0xA0, 0xEA, 0xD0, - 0xB3, 0x38, 0x98, 0xFC, 0xD7, 0x50, 0x84, 0xCF, - 0xA5, 0xE9, 0x53, 0x8B, 0x44, 0x38, 0xB5, 0x7D, - 0xD8, 0xAD, 0x0A, 0xE5, 0x35, 0x78, 0x29, 0xBF, - 0x9F, 0x6B, 0x2C, 0xBB, 0x97, 0x9D, 0xD3, 0x64, - 0x23, 0x2B, 0xA8, 0xA4, 0x71, 0xE3, 0xF1, 0x2F, - 0x61, 0xC9, 0x68, 0xD2, 0x06, 0xD0, 0x4E, 0x87, - 0x03, 0x99, 0xCC, 0xB1, 0x83, 0xB6, 0x94, 0x61, - 0x3C, 0xE9, 0xE0, 0x7D, 0x13, 0xAF, 0xCF, 0xE4, - 0xA6, 0x42, 0x7F, 0x62, 0x8F, 0xFC, 0x10, 0xF1, - 0x08, 0x4D, 0x1D, 0xFC, 0x0F, 0x37, 0x11, 0xBE, - 0xD7, 0xF1, 0x80, 0x46, 0xAF, 0xFA, 0x13, 0x65, - 0x99, 0xAE, 0xF9, 0xD0, 0x13, 0xA7, 0xC7, 0x3A, - 0xD2, 0xC1, 0x9B, 0x5A, 0xB8, 0xC3, 0x08, 0x13, - 0x49, 0x40, 0x33, 0x0D, 0x1F, 0x93, 0x5D, 0x10, - 0x49, 0x3E, 0x4F, 0x90, 0x34, 0xC5, 0xEA, 0xF7, - 0x24, 0xFF, 0xF3, 0xC5, 0x95, 0xF7, 0x1F, 0x13, - 0x9A, 0xE0, 0x0C, 0xCD, 0x61, 0x93, 0x39, 0xE6, - 0xAF, 0xD5, 0x3E, 0xA9, 0xD8, 0xC4, 0x8F, 0x64, - 0x05, 0x09, 0x45, 0x2A, 0xEB, 0x12, 0xC5, 0x51, - 0x58, 0x1C, 0x55, 0x20, 0xE9, 0x29, 0x74, 0xC7, - 0x10, 0x01, 0xF3, 0xA4, 0x56, 0xB4, 0x14, 0xFE, - 0x9C, 0x10, 0x2F, 0xF8, 0xBF, 0xB5, 0x9C, 0x6E, - 0xBB, 0xE6, 0x52, 0xE7, 0xAC, 0xA7, 0xCE, 0x41, - 0x6E, 0x00, 0x66, 0x0A, 0x2F, 0x46, 0x71, 0xB8, - 0x8F, 0x45, 0x89, 0x26, 0x68, 0xCD, 0x49, 0xDF, - 0xCB, 0xCD, 0xD6, 0x66, 0xC6, 0xA7, 0x8E, 0xB3, - 0xE4, 0x72, 0xEF, 0xBA, 0xA6, 0x6D, 0x7A, 0xB7, - 0xE9, 0xD9, 0xB2, 0x60, 0xB5, 0x82, 0x77, 0x20, - 0x2A, 0xFA, 0xE3, 0xCB, 0xF5, 0x30, 0x50, 0x30, - 0xC6, 0x19, 0x67, 0xA8, 0xB8, 0xFA, 0xFE, 0xB6, - 0xDA, 0xB6, 0xB6, 0xBF, 0x07, 0x90, 0x40, 0xD8, - 0x5B, 0x15, 0x48, 0x39, 0xCD, 0x99, 0x0F, 0x3A, - 0x28, 0xD2, 0x2E, 0xBA, 0xAC, 0x6D, 0xA3, 0xF8, - 0x53, 0x88, 0xF0, 0x86, 0x87, 0x70, 0xF5, 0x07, - 0xD2, 0x99, 0xC4, 0xCA, 0xDD, 0xD8, 0x8C, 0xEB, - 0x00, 0x96, 0xB4, 0x62, 0xA3, 0x7B, 0x79, 0x31, - 0xB2, 0x85, 0xB0, 0x61, 0x39, 0xF2, 0xBC, 0x1D, - 0x31, 0xC3, 0x0C, 0x7F, 0x70, 0x9A, 0x63, 0x74, - 0xC6, 0xCB, 0xD3, 0x93, 0x0D, 0x43, 0x7F, 0x80, - 0x85, 0x87, 0x72, 0x98, 0xE1, 0x6E, 0x9A, 0x59, - 0x2E, 0x6C, 0xA8, 0x9E, 0xC2, 0xC0, 0x72, 0xFE, - 0x26, 0xE8, 0xAF, 0x89, 0x61, 0xCA, 0x0D, 0x15, - 0xCC, 0xB0, 0xBA, 0x10, 0xB8, 0x9D, 0x77, 0x2C, - 0x6C, 0x28, 0xCC, 0x70, 0x5B, 0x1F, 0x5D, 0x68, - 0xD4, 0xC8, 0x1F, 0x0F, 0x67, 0xF5, 0x3E, 0x5C, - 0x70, 0x50, 0x4B, 0x32, 0x12, 0xE6, 0x1A, 0xCE, - 0xB8, 0x32, 0x5F, 0x1D, 0xC5, 0xFB, 0x07, 0x77, - 0xAD, 0x85, 0x45, 0x95, 0x04, 0x0D, 0x94, 0x7A, - 0x1F, 0xDD, 0x05, 0x74, 0x14, 0xA5, 0x9A, 0x66, - 0xF4, 0x93, 0xBE, 0xF2, 0xA9, 0x5B, 0xCD, 0xAB, - 0xC7, 0x82, 0xF7, 0xE7, 0x4A, 0x1C, 0x90, 0x6B, - 0x9A, 0xBD, 0x93, 0xDD, 0x41, 0x56, 0xDA, 0xA5, - 0x0F, 0x5D, 0x57, 0x2C, 0xBA, 0x07, 0x07, 0x4B, - 0x91, 0x33, 0xE6, 0x1B, 0x0E, 0x25, 0x9E, 0x36, - 0xBF, 0xCA, 0x21, 0xCE, 0xC6, 0x82, 0x33, 0x4D, - 0x42, 0x4F, 0x2E, 0x71, 0xC2, 0xE7, 0x6F, 0x16, - 0xF6, 0xB7, 0x30, 0x1C, 0xA1, 0xA8, 0xE3, 0xE7, - 0xB1, 0x71, 0xDD, 0x9F, 0x90, 0x1F, 0x01, 0x1D, - 0x0A, 0xBD, 0x2C, 0x4A, 0x22, 0x84, 0x5C, 0xBF, - 0x61, 0x07, 0x24, 0xC4, 0x0D, 0x23, 0xDB, 0xC6, - 0x28, 0xB1, 0x27, 0xCB, 0x7E, 0x06, 0xF8, 0x3C, - 0x42, 0xF9, 0x51, 0x2F, 0x21, 0xC5, 0x80, 0x98, - 0x08, 0x2F, 0x56, 0x58, 0xD7, 0xE0, 0xDA, 0xC4, - 0x24, 0x0C, 0xE8, 0xFA, 0x94, 0x23, 0x57, 0xA6, - 0xD8, 0xE2, 0xC5, 0xCC, 0x16, 0x70, 0x55, 0x57, - 0xC4, 0x52, 0x2D, 0x94, 0xCE, 0x5B, 0x22, 0x8E, - 0x6C, 0x3D, 0x8E, 0x74, 0x9D, 0xFD, 0x47, 0xC7, - 0x42, 0x11, 0x41, 0x9F, 0x6A, 0x0A, 0xF6, 0x16, - 0x97, 0xB1, 0x24, 0xC4, 0x6C, 0x98, 0xF8, 0x62, - 0x51, 0xE9, 0x67, 0x6D, 0x39, 0x2B, 0x76, 0x19, - 0x5F, 0x41, 0xF4, 0x82, 0x51, 0x87, 0xFF, 0xAA, - 0x87, 0xE3, 0x46, 0x87, 0xC0, 0xC9, 0xBB, 0xB5, - 0xAC, 0xA0, 0xD1, 0x56, 0x54, 0xC2, 0x2C, 0x59, - 0x9E, 0x78, 0xF9, 0xA6, 0xBA, 0xCB, 0xE2, 0x45, - 0x8A, 0xC1, 0xE5, 0xDF, 0xC3, 0x81, 0x91, 0xDB, - 0xDB, 0x9E, 0xE2, 0x9C, 0xB9, 0x44, 0x5F, 0x5D, - 0x6D, 0x83, 0x8D, 0x2D, 0x3E, 0x72, 0x2F, 0x98, - 0xFC, 0xFA, 0x5F, 0xC0, 0xF0, 0x03, 0x4A, 0x42, - 0x19, 0x67, 0x48, 0x24, 0x70, 0x35, 0xAE, 0x37, - 0x34, 0x27, 0xAB, 0xD6, 0x92, 0xB8, 0xB4, 0x52, - 0xC9, 0xD1, 0xF0, 0x5C, 0xAC, 0xFA, 0xB9, 0x2D, - 0xCE, 0xF2, 0x24, 0xE3, 0x53, 0xF4, 0x2D, 0x65, - 0x8D, 0xBF, 0x27, 0x3F, 0xAF, 0x62, 0xE0, 0x27, - 0xBE, 0x12, 0xCB, 0x40, 0xA4, 0x99, 0xAF, 0x47, - 0x19, 0x5F, 0x68, 0x69, 0x7F, 0x8C, 0xD2, 0x1E, - 0x4A, 0xA1, 0xA4, 0x3D, 0x5A, 0x62, 0x6F, 0x78, - 0x87, 0x8E, 0xA0, 0xC0, 0xF3, 0x2C, 0x60, 0xC3, - 0xCE, 0xDD, 0xED, 0x7C, 0xAF, 0xE0, 0x0B, 0x72, - 0x9D, 0xBA, 0xC6, 0xEE, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x0B, 0x15, 0x1B, 0x1E, 0x24 - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - static const byte sk_87[] = { - 0xF1, 0x79, 0x16, 0xD9, 0x5C, 0x51, 0x2F, 0xEC, - 0x0C, 0xEF, 0xA6, 0xA1, 0x5C, 0x9F, 0xB3, 0xBF, - 0x84, 0xFF, 0x8D, 0x7F, 0xA3, 0x55, 0x22, 0xEB, - 0x1C, 0x91, 0x5C, 0x4D, 0x25, 0x4E, 0x89, 0x35, - 0x24, 0x8E, 0x3C, 0x08, 0x58, 0x2B, 0x74, 0x5E, - 0xB2, 0xFD, 0x13, 0x15, 0x2B, 0x5D, 0xAE, 0xEA, - 0xB0, 0x72, 0x80, 0x42, 0xB0, 0x08, 0x85, 0xBB, - 0x92, 0xF8, 0x44, 0xA8, 0x6B, 0x42, 0x62, 0x03, - 0x5C, 0x9F, 0x44, 0x8A, 0x2B, 0x78, 0xEF, 0x5D, - 0xB3, 0x47, 0xE0, 0x25, 0x04, 0x15, 0xE1, 0x01, - 0x5F, 0xBB, 0x34, 0x31, 0x91, 0x24, 0x07, 0xC8, - 0x5A, 0x2F, 0x36, 0x2A, 0x85, 0xA9, 0xAE, 0x42, - 0x77, 0x23, 0xBF, 0x62, 0x69, 0x7B, 0x77, 0x99, - 0x1B, 0x3E, 0x93, 0xA3, 0x81, 0x13, 0x3F, 0x95, - 0x0D, 0x40, 0xE7, 0xC1, 0xAC, 0xBC, 0x17, 0xE4, - 0xF1, 0xD1, 0x0C, 0xD1, 0x27, 0x4C, 0x8D, 0x3C, - 0x84, 0x02, 0x02, 0x0A, 0xC5, 0x10, 0x1C, 0xC3, - 0x4D, 0xD0, 0x94, 0x70, 0x24, 0xC0, 0x89, 0x94, - 0x08, 0x4D, 0xC2, 0x30, 0x20, 0x63, 0xC0, 0x24, - 0xE1, 0x80, 0x40, 0xD0, 0x26, 0x68, 0x10, 0x97, - 0x01, 0x83, 0xC2, 0x91, 0x5A, 0x90, 0x2D, 0x44, - 0x94, 0x6D, 0x10, 0x09, 0x50, 0x11, 0xA7, 0x0D, - 0xE4, 0x04, 0x89, 0x9B, 0x80, 0x8D, 0x40, 0xB8, - 0x45, 0x4B, 0x86, 0x0D, 0xC8, 0xB6, 0x05, 0xC0, - 0xC0, 0x71, 0x02, 0x09, 0x06, 0xA2, 0x00, 0x2D, - 0x0B, 0x24, 0x86, 0xA0, 0x90, 0x11, 0x20, 0x16, - 0x82, 0x1B, 0x24, 0x42, 0xCB, 0xB6, 0x70, 0x43, - 0x36, 0x05, 0xDA, 0x16, 0x25, 0x9A, 0x34, 0x6C, - 0xCB, 0xB4, 0x08, 0xC4, 0x16, 0x90, 0x24, 0x29, - 0x6C, 0x42, 0x90, 0x04, 0x24, 0x06, 0x46, 0x84, - 0x12, 0x6D, 0xC2, 0x26, 0x00, 0x88, 0x40, 0x02, - 0x51, 0xC8, 0x40, 0x9C, 0x16, 0x24, 0x82, 0x18, - 0x26, 0x21, 0x06, 0x0C, 0x12, 0xC2, 0x71, 0x50, - 0x98, 0x91, 0x4A, 0x40, 0x28, 0x48, 0x48, 0x21, - 0x5A, 0x18, 0x49, 0x1B, 0xB7, 0x01, 0x5A, 0xC6, - 0x48, 0xA1, 0x90, 0x2C, 0x14, 0x18, 0x2D, 0xD2, - 0x20, 0x62, 0xDC, 0xB6, 0x49, 0x00, 0x09, 0x6D, - 0x40, 0xA8, 0x4D, 0x24, 0xC8, 0x24, 0x4C, 0x06, - 0x08, 0x80, 0x40, 0x4E, 0xD3, 0x18, 0x88, 0x12, - 0x09, 0x91, 0x8B, 0x12, 0x31, 0xC9, 0x16, 0x04, - 0x64, 0x10, 0x72, 0xDA, 0x84, 0x91, 0x92, 0xC6, - 0x65, 0x22, 0x10, 0x48, 0x18, 0xC9, 0x00, 0x14, - 0x44, 0x62, 0x24, 0xC1, 0x60, 0x40, 0xC6, 0x10, - 0x4A, 0x48, 0x28, 0x9B, 0x44, 0x66, 0x91, 0x10, - 0x52, 0xD3, 0x26, 0x52, 0xD8, 0xA6, 0x0C, 0x0A, - 0xA8, 0x44, 0xD8, 0x26, 0x0C, 0x64, 0x86, 0x45, - 0x44, 0x20, 0x00, 0xD2, 0x48, 0x85, 0xDC, 0x46, - 0x32, 0xC8, 0x22, 0x45, 0x5B, 0x00, 0x8D, 0x20, - 0xA5, 0x45, 0x01, 0xC1, 0x91, 0xA2, 0x12, 0x84, - 0x20, 0x47, 0x0E, 0x98, 0xA8, 0x25, 0xD9, 0xA0, - 0x4D, 0xA4, 0x06, 0x2D, 0x5B, 0xB0, 0x08, 0x21, - 0xB0, 0x80, 0x4C, 0x10, 0x2C, 0xC4, 0x98, 0x71, - 0x99, 0x24, 0x24, 0xA4, 0x36, 0x71, 0x4B, 0xB6, - 0x49, 0xE1, 0x92, 0x00, 0x09, 0x92, 0x4C, 0x89, - 0x12, 0x49, 0x1A, 0x39, 0x2A, 0xE0, 0x22, 0x69, - 0x61, 0xB2, 0x50, 0x40, 0x26, 0x8E, 0xC9, 0xA2, - 0x08, 0x0A, 0x90, 0x24, 0x13, 0x35, 0x06, 0x21, - 0x24, 0x62, 0x60, 0xB0, 0x01, 0xE3, 0xC6, 0x29, - 0x5B, 0x28, 0x89, 0x20, 0x90, 0x70, 0xC4, 0xA4, - 0x31, 0x08, 0x42, 0x11, 0x10, 0xC0, 0x71, 0x98, - 0x98, 0x20, 0xC4, 0xA8, 0x29, 0x1A, 0x15, 0x32, - 0xC4, 0x86, 0x6C, 0x18, 0x14, 0x6A, 0x02, 0x46, - 0x46, 0xDC, 0xC2, 0x4C, 0x81, 0x02, 0x6D, 0x49, - 0x16, 0x48, 0x10, 0x94, 0x6C, 0x0A, 0x85, 0x90, - 0x9C, 0x34, 0x84, 0x54, 0x24, 0x25, 0x49, 0xA8, - 0x21, 0x04, 0xA6, 0x2C, 0x61, 0x00, 0x01, 0x61, - 0x46, 0x92, 0xE0, 0xA6, 0x44, 0xE2, 0x00, 0x90, - 0xC8, 0x06, 0x06, 0x90, 0xB8, 0x2D, 0x0B, 0x85, - 0x85, 0x20, 0x23, 0x0D, 0x83, 0x94, 0x04, 0x54, - 0x26, 0x50, 0x41, 0x92, 0x29, 0x09, 0x16, 0x20, - 0x54, 0xC6, 0x2D, 0x81, 0xC8, 0x8C, 0x09, 0x44, - 0x44, 0xE2, 0x06, 0x30, 0x13, 0x92, 0x49, 0x0B, - 0x17, 0x48, 0x93, 0x28, 0x86, 0xD8, 0xA4, 0x50, - 0xD1, 0x32, 0x91, 0x08, 0xB8, 0x05, 0xA4, 0x02, - 0x62, 0x01, 0x15, 0x82, 0xE3, 0x18, 0x42, 0x83, - 0xC6, 0x44, 0x43, 0x02, 0x81, 0x53, 0x88, 0x04, - 0x04, 0x98, 0x31, 0x19, 0x18, 0x46, 0xDB, 0x02, - 0x89, 0x10, 0x23, 0x81, 0x03, 0x90, 0x71, 0x83, - 0x26, 0x89, 0x1A, 0x01, 0x05, 0xCA, 0xB0, 0x01, - 0x4C, 0x84, 0x09, 0x10, 0x11, 0x84, 0x13, 0xB1, - 0x20, 0x61, 0xB8, 0x41, 0x1B, 0x02, 0x8C, 0x09, - 0x98, 0x61, 0x83, 0x18, 0x61, 0x08, 0xC1, 0x6D, - 0x44, 0x86, 0x09, 0xCB, 0x88, 0x8D, 0x93, 0xB4, - 0x41, 0x58, 0x90, 0x81, 0x04, 0x31, 0x08, 0xD1, - 0xC4, 0x04, 0x19, 0xB4, 0x4C, 0x1C, 0x88, 0x20, - 0xCA, 0x30, 0x72, 0x1C, 0xB5, 0x85, 0x13, 0x27, - 0x32, 0x84, 0xB4, 0x44, 0x04, 0x42, 0x20, 0x61, - 0x18, 0x52, 0x50, 0x96, 0x44, 0x03, 0x38, 0x86, - 0xE3, 0x48, 0x31, 0x02, 0x82, 0x68, 0x98, 0x06, - 0x90, 0x23, 0x28, 0x04, 0x10, 0x18, 0x0D, 0x10, - 0x28, 0x45, 0x4C, 0x84, 0x6C, 0x09, 0x36, 0x71, - 0x82, 0x26, 0x64, 0x18, 0xC6, 0x21, 0x90, 0x18, - 0x22, 0x0A, 0x37, 0x08, 0xC4, 0x94, 0x28, 0xE2, - 0x30, 0x2C, 0x92, 0xB4, 0x24, 0x63, 0x46, 0x70, - 0x52, 0x96, 0x0C, 0x8B, 0xA4, 0x05, 0xD3, 0x02, - 0x85, 0x09, 0x32, 0x92, 0x49, 0x12, 0x21, 0x18, - 0x43, 0x28, 0x01, 0x32, 0x45, 0x0B, 0xA5, 0x50, - 0x14, 0x16, 0x65, 0x91, 0x80, 0x65, 0x0A, 0x44, - 0x66, 0x13, 0xB6, 0x4C, 0x01, 0x38, 0x71, 0x11, - 0x49, 0x28, 0x22, 0x43, 0x02, 0x0B, 0x34, 0x04, - 0x01, 0x16, 0x91, 0x80, 0x14, 0x0E, 0x12, 0x93, - 0x01, 0x00, 0x11, 0x80, 0xDC, 0x28, 0x51, 0x11, - 0x87, 0x85, 0xC1, 0x34, 0x28, 0x02, 0xA2, 0x11, - 0x02, 0x38, 0x44, 0x52, 0x14, 0x64, 0xC2, 0xA0, - 0x01, 0x1B, 0x42, 0x8C, 0xC2, 0xB2, 0x71, 0xCB, - 0x16, 0x00, 0xCC, 0x10, 0x21, 0x04, 0x12, 0x52, - 0x84, 0x24, 0x2A, 0xD3, 0x48, 0x12, 0x08, 0x44, - 0x08, 0x81, 0x88, 0x44, 0x01, 0x23, 0x50, 0xC0, - 0xA2, 0x09, 0x81, 0x94, 0x50, 0x02, 0x89, 0x61, - 0x01, 0x31, 0x88, 0x1B, 0xA2, 0x61, 0x90, 0x94, - 0x84, 0x91, 0x24, 0x09, 0x03, 0x18, 0x22, 0xA3, - 0x46, 0x60, 0x10, 0x16, 0x4D, 0x48, 0x84, 0x89, - 0x11, 0x00, 0x2E, 0xCC, 0xC0, 0x40, 0x8C, 0xC0, - 0x51, 0xE4, 0x42, 0x62, 0xDA, 0x24, 0x11, 0x13, - 0x19, 0x46, 0x93, 0x34, 0x4C, 0x42, 0x42, 0x24, - 0xC4, 0x48, 0x90, 0x00, 0x35, 0x80, 0x1B, 0x98, - 0x51, 0x0B, 0x41, 0x60, 0x0C, 0x25, 0x46, 0x9A, - 0xA8, 0x89, 0x12, 0x86, 0x4C, 0xE3, 0x16, 0x09, - 0x14, 0x27, 0x24, 0x51, 0x26, 0x4D, 0x1B, 0x02, - 0x10, 0x00, 0x17, 0x28, 0xD4, 0xA8, 0x45, 0x48, - 0x88, 0x48, 0x01, 0xC7, 0x0D, 0x93, 0xC8, 0x40, - 0x5B, 0x02, 0x49, 0x51, 0x02, 0x4A, 0x01, 0x42, - 0x10, 0xE1, 0x08, 0x90, 0x03, 0x85, 0x48, 0x11, - 0xA8, 0x68, 0x8B, 0x90, 0x08, 0x5A, 0x02, 0x0C, - 0x5A, 0x18, 0x50, 0x11, 0x87, 0x51, 0x9C, 0x38, - 0x92, 0xD0, 0x44, 0x82, 0x10, 0x33, 0x21, 0x88, - 0x44, 0x2D, 0x24, 0x28, 0x0D, 0x22, 0xA3, 0x30, - 0x49, 0x88, 0x25, 0xA1, 0xB2, 0x01, 0x5C, 0x40, - 0x20, 0x1C, 0x03, 0x72, 0xCC, 0x96, 0x8C, 0x51, - 0xA6, 0x88, 0xE3, 0x92, 0x08, 0x13, 0xB0, 0x08, - 0x5C, 0x38, 0x44, 0x03, 0x47, 0x8E, 0x93, 0x12, - 0x4A, 0x88, 0x20, 0x48, 0xE0, 0x42, 0x20, 0x81, - 0x90, 0x09, 0x4B, 0x06, 0x6D, 0xD2, 0x90, 0x10, - 0x01, 0x82, 0x49, 0x19, 0x28, 0x91, 0xDA, 0x20, - 0x2A, 0x20, 0x85, 0x40, 0x0A, 0x16, 0x8A, 0x1C, - 0x83, 0x60, 0xCA, 0x48, 0x4A, 0xA2, 0xC8, 0x50, - 0xE4, 0x02, 0x31, 0x88, 0x86, 0x88, 0x53, 0x00, - 0x89, 0x60, 0x08, 0x8A, 0xA2, 0x02, 0x0A, 0x0A, - 0x34, 0x45, 0x03, 0x04, 0x42, 0x1B, 0x40, 0x09, - 0x89, 0xA0, 0x69, 0x42, 0x18, 0x49, 0x4A, 0xA8, - 0x8C, 0x99, 0x90, 0x30, 0xCA, 0x38, 0x91, 0x09, - 0x31, 0x72, 0x8B, 0x44, 0x29, 0x52, 0xA2, 0x8D, - 0x08, 0x14, 0x6E, 0xA1, 0x84, 0x50, 0x1C, 0x31, - 0x46, 0x19, 0xB7, 0x01, 0xCC, 0x06, 0x29, 0x11, - 0x09, 0x20, 0x4B, 0x40, 0x66, 0x40, 0xC4, 0x49, - 0x00, 0x13, 0x24, 0xD0, 0xA2, 0x84, 0xCA, 0x16, - 0x29, 0xD0, 0xC0, 0x84, 0xC8, 0x88, 0x44, 0xE1, - 0x20, 0x29, 0x1A, 0x97, 0x05, 0x90, 0x42, 0x90, - 0x04, 0x40, 0x71, 0x9C, 0x32, 0x4E, 0x64, 0x26, - 0x22, 0x93, 0x36, 0x66, 0xD3, 0x06, 0x49, 0xA3, - 0x26, 0x51, 0x4C, 0xA6, 0x89, 0x84, 0x36, 0x84, - 0x93, 0x46, 0x6D, 0x14, 0x07, 0x8D, 0x18, 0x29, - 0x42, 0x52, 0x34, 0x72, 0x44, 0x10, 0x90, 0x12, - 0x37, 0x81, 0xD4, 0x10, 0x64, 0x04, 0xA5, 0x08, - 0x84, 0x24, 0x09, 0x1C, 0x08, 0x8D, 0x02, 0x99, - 0x6C, 0x1B, 0x30, 0x50, 0x09, 0x89, 0x81, 0x19, - 0x30, 0x48, 0x5B, 0x14, 0x4D, 0xD9, 0x20, 0x20, - 0x0C, 0x01, 0x2A, 0x00, 0x90, 0x4D, 0xA1, 0x02, - 0x64, 0x1C, 0x03, 0x01, 0xC2, 0x26, 0x8C, 0x14, - 0x08, 0x45, 0xE3, 0x12, 0x48, 0x09, 0x20, 0x09, - 0x41, 0x40, 0x61, 0x90, 0x44, 0x21, 0x49, 0x06, - 0x91, 0x4B, 0xC0, 0x84, 0x22, 0x95, 0x51, 0x23, - 0x38, 0x0E, 0x5C, 0x28, 0x70, 0xC2, 0x40, 0x2C, - 0x94, 0x18, 0x62, 0x9A, 0x30, 0x4A, 0xE2, 0x86, - 0x4C, 0x5C, 0x10, 0x8D, 0xC2, 0x12, 0x21, 0x9C, - 0xC4, 0x4D, 0xD9, 0x96, 0x88, 0x0C, 0x29, 0x45, - 0x1B, 0x45, 0x6A, 0x1A, 0x00, 0x60, 0x91, 0x30, - 0x0C, 0x12, 0x00, 0x69, 0xA2, 0xA0, 0x04, 0x81, - 0x00, 0x65, 0x5C, 0x38, 0x8A, 0x18, 0x05, 0x89, - 0x48, 0x32, 0x24, 0x81, 0xC6, 0x4D, 0x60, 0x90, - 0x31, 0x83, 0x22, 0x12, 0xE1, 0xC2, 0x6C, 0x89, - 0x00, 0x90, 0x14, 0xB4, 0x40, 0xD3, 0xB8, 0x45, - 0x89, 0x24, 0x70, 0x09, 0x26, 0x6C, 0xD9, 0x32, - 0x8A, 0x83, 0x44, 0x0E, 0x21, 0x44, 0x61, 0x99, - 0xA4, 0x20, 0x44, 0x16, 0x2E, 0x1A, 0xC2, 0x08, - 0x09, 0x98, 0x6C, 0x8C, 0x18, 0x8C, 0x0C, 0x30, - 0x62, 0x8B, 0x46, 0x45, 0x80, 0x10, 0x21, 0x20, - 0x33, 0x32, 0x5A, 0x38, 0x4C, 0x98, 0x06, 0x45, - 0x1A, 0x33, 0x09, 0x82, 0x34, 0x44, 0x02, 0x20, - 0x09, 0x59, 0x00, 0x41, 0x08, 0x13, 0x08, 0xDC, - 0x18, 0x68, 0x12, 0x47, 0x86, 0x43, 0xB8, 0x21, - 0x62, 0x02, 0x8D, 0x5C, 0x10, 0x0D, 0x60, 0x96, - 0x65, 0xA2, 0x22, 0x4C, 0x83, 0x18, 0x09, 0x41, - 0x08, 0x41, 0x63, 0xC2, 0x80, 0x13, 0x81, 0x65, - 0x22, 0x03, 0x92, 0x04, 0xA9, 0x4D, 0x1C, 0xB0, - 0x44, 0x80, 0xC6, 0x24, 0x00, 0x01, 0x44, 0x22, - 0x11, 0x80, 0x21, 0x95, 0x64, 0x09, 0x99, 0x8C, - 0xD3, 0x14, 0x4A, 0xD1, 0x98, 0x2D, 0x19, 0x31, - 0x4C, 0x0A, 0x92, 0x40, 0x13, 0x98, 0x48, 0x14, - 0x89, 0x20, 0x23, 0xB3, 0x0D, 0x14, 0x98, 0x6D, - 0x12, 0x98, 0x05, 0x9B, 0x14, 0x06, 0x5B, 0x26, - 0x91, 0x0A, 0x38, 0x09, 0x08, 0x98, 0x2C, 0x19, - 0xA0, 0x45, 0x44, 0x26, 0x00, 0x0A, 0x05, 0x21, - 0xDB, 0xA0, 0x69, 0x51, 0x42, 0x92, 0x0B, 0x43, - 0x00, 0xD1, 0x42, 0x0D, 0x81, 0x30, 0x28, 0x13, - 0xC2, 0x20, 0x03, 0x27, 0x60, 0x10, 0x83, 0x91, - 0x0A, 0x53, 0x7E, 0xA1, 0x4F, 0x11, 0x54, 0x5E, - 0x25, 0x4F, 0xCF, 0x28, 0x03, 0x95, 0x2A, 0x58, - 0x0A, 0x4B, 0x6C, 0x9B, 0x29, 0x10, 0x3D, 0x97, - 0x43, 0x6C, 0x00, 0x3E, 0x2E, 0xCE, 0xAE, 0x20, - 0x28, 0x01, 0x7F, 0xF1, 0xD5, 0x18, 0xB0, 0xB5, - 0xD5, 0xE6, 0x24, 0x26, 0x64, 0xED, 0x33, 0x7C, - 0xCA, 0x45, 0x26, 0xED, 0x5D, 0xB5, 0xEA, 0xD8, - 0xBB, 0x31, 0x16, 0x94, 0x1C, 0xD0, 0xC8, 0xF0, - 0xA7, 0xED, 0x5A, 0x1A, 0x5A, 0x00, 0xB9, 0x8C, - 0x33, 0x6A, 0x9B, 0xC8, 0xEB, 0x6B, 0x3A, 0x30, - 0x83, 0x16, 0xF1, 0x17, 0xEA, 0xA8, 0x0D, 0x4B, - 0x77, 0x56, 0xDD, 0x4A, 0x91, 0xDA, 0xA5, 0x8E, - 0x80, 0xD7, 0xB5, 0x77, 0x55, 0x83, 0x97, 0xAF, - 0x90, 0x5B, 0x67, 0xC5, 0x9F, 0x14, 0xE1, 0x2C, - 0x15, 0x8D, 0x29, 0x2C, 0xA6, 0xB6, 0x41, 0xED, - 0x0C, 0x75, 0xE3, 0x9A, 0x91, 0x4F, 0xFA, 0x1A, - 0x9F, 0x24, 0xCA, 0x28, 0xF2, 0x00, 0xC7, 0x48, - 0xDE, 0x70, 0x9D, 0x15, 0xD7, 0x22, 0xE7, 0xED, - 0x2C, 0x91, 0x8D, 0xEF, 0x08, 0xCF, 0xAF, 0x9B, - 0x7E, 0x24, 0xDE, 0xF2, 0xD5, 0x1A, 0x4D, 0x42, - 0x0E, 0x7E, 0x89, 0x06, 0xFA, 0xCD, 0x9A, 0x5A, - 0x98, 0xB0, 0xD1, 0xD5, 0x34, 0x5C, 0x8B, 0x9A, - 0xC0, 0xBB, 0xF4, 0xB1, 0x5E, 0xF0, 0xB4, 0x6A, - 0x8E, 0x3B, 0x6B, 0xAE, 0x0C, 0x6E, 0x9F, 0x09, - 0x2E, 0xB3, 0xEF, 0x1D, 0x49, 0x62, 0x0B, 0x65, - 0xE7, 0xDE, 0xDB, 0xEF, 0x68, 0x7E, 0xBD, 0x0E, - 0xA0, 0x95, 0x97, 0x2A, 0x56, 0xA0, 0xEA, 0xFB, - 0x2D, 0x75, 0xF4, 0x32, 0x1B, 0x80, 0xAC, 0xBC, - 0xA3, 0x2B, 0x1B, 0x11, 0xAA, 0x57, 0x6F, 0xE4, - 0xE0, 0xCC, 0xCC, 0x20, 0x52, 0x12, 0x65, 0x42, - 0x96, 0xF0, 0x60, 0x8F, 0xF3, 0x83, 0x69, 0xAF, - 0x19, 0x80, 0x75, 0x68, 0xDB, 0xE1, 0x71, 0xDB, - 0x79, 0xEB, 0x8C, 0x1C, 0xB7, 0x6A, 0x8E, 0xB9, - 0x5B, 0x28, 0x8C, 0x9D, 0xCC, 0x62, 0x0B, 0xEF, - 0xCE, 0x96, 0x06, 0x0F, 0x45, 0xA6, 0xA2, 0xDA, - 0xC2, 0x2F, 0x55, 0xE4, 0x7D, 0xC7, 0xBA, 0xB4, - 0xA7, 0x93, 0xD9, 0x65, 0x8F, 0xE2, 0x7C, 0x66, - 0x2C, 0xA6, 0x37, 0x00, 0x81, 0x30, 0xF1, 0x00, - 0xD9, 0x65, 0xB4, 0x78, 0x17, 0x7A, 0xC6, 0xDC, - 0x35, 0x93, 0x1A, 0x5E, 0xCC, 0x5F, 0x93, 0x31, - 0x22, 0x40, 0x2C, 0x17, 0x0E, 0xB8, 0xE0, 0xA4, - 0x1C, 0xB6, 0x3F, 0xE5, 0x60, 0x2F, 0x7B, 0x18, - 0xE1, 0xDB, 0xB6, 0xDB, 0x30, 0xA7, 0x61, 0x55, - 0xC6, 0xCF, 0x03, 0x0F, 0x73, 0x8D, 0xC0, 0x91, - 0x6D, 0xB1, 0x80, 0xF8, 0x3F, 0x02, 0x90, 0x93, - 0x11, 0xCB, 0x6B, 0x3B, 0x9E, 0x55, 0x3F, 0xAC, - 0xA0, 0x52, 0x23, 0xB3, 0x3C, 0x69, 0x60, 0x2D, - 0x0F, 0x05, 0xA0, 0x8B, 0xEB, 0x84, 0x80, 0x96, - 0x51, 0x99, 0x9A, 0x55, 0x26, 0xE7, 0x76, 0xF3, - 0xDE, 0x39, 0x30, 0x4A, 0x5F, 0xEF, 0x00, 0x95, - 0x0A, 0x9A, 0x81, 0x0D, 0x12, 0xE0, 0x1D, 0x15, - 0xD8, 0x86, 0xDB, 0x26, 0x75, 0xF6, 0x54, 0xCA, - 0x17, 0xFA, 0xAE, 0xEB, 0xD1, 0xF5, 0x61, 0xF9, - 0xD1, 0xA9, 0x5E, 0x0B, 0xAD, 0xF7, 0xC3, 0x31, - 0x5A, 0xFA, 0xBA, 0x8D, 0x4B, 0xEC, 0x1F, 0x05, - 0x42, 0xA8, 0xF1, 0x0A, 0xC6, 0x66, 0xFD, 0x8D, - 0x0C, 0x5A, 0xF1, 0xD6, 0x86, 0x7A, 0x9D, 0x82, - 0x6B, 0xFB, 0x6B, 0x03, 0x0B, 0x58, 0xEC, 0xEF, - 0x67, 0x78, 0xD2, 0xC5, 0x2B, 0xF6, 0x2C, 0xB3, - 0x4B, 0x81, 0xFF, 0x93, 0x6D, 0xA3, 0x3E, 0xDA, - 0xB3, 0x1D, 0xB3, 0x9A, 0xB7, 0x63, 0x66, 0xD0, - 0x94, 0x36, 0x2F, 0x04, 0x6D, 0x50, 0x78, 0xB4, - 0x22, 0x35, 0x04, 0xA1, 0x2B, 0xA0, 0xC7, 0xB8, - 0xE8, 0x83, 0x72, 0x77, 0x18, 0x50, 0x9B, 0xD4, - 0x7A, 0x69, 0x6E, 0xE9, 0x88, 0x0C, 0xAF, 0xF6, - 0x63, 0x61, 0x2B, 0x95, 0x86, 0x30, 0x3D, 0x6D, - 0xE0, 0xD2, 0x1F, 0x9A, 0x21, 0x96, 0x22, 0x78, - 0xEB, 0xCE, 0x60, 0xA6, 0xD4, 0x68, 0x44, 0x09, - 0x5C, 0x5F, 0x89, 0x2D, 0xAC, 0xA4, 0x8D, 0x78, - 0x28, 0x22, 0x45, 0x38, 0x34, 0xB4, 0xE4, 0x2C, - 0xD3, 0xA1, 0xFE, 0x39, 0x87, 0x35, 0x6E, 0xAB, - 0x11, 0xEF, 0xB8, 0xEE, 0xCD, 0x8E, 0x9C, 0xC8, - 0xF3, 0x9A, 0x0F, 0xF1, 0xFF, 0xB8, 0x06, 0x9A, - 0x44, 0x1F, 0x85, 0x1E, 0xB4, 0x38, 0xE9, 0xC0, - 0xB5, 0x7E, 0x88, 0x18, 0xA3, 0x22, 0x65, 0x1E, - 0x60, 0xF4, 0xB6, 0x78, 0x90, 0xE5, 0xED, 0x7A, - 0x0F, 0xBF, 0x75, 0x36, 0xC3, 0xFD, 0x50, 0xD0, - 0xB0, 0x65, 0x8D, 0x7C, 0xCF, 0x27, 0x5E, 0x8A, - 0x9E, 0x9F, 0xBB, 0x99, 0xBE, 0x2E, 0x5F, 0x5E, - 0x16, 0x7B, 0xE2, 0x90, 0xB7, 0xE9, 0x67, 0x32, - 0xF8, 0x9E, 0x40, 0xD7, 0x85, 0xAF, 0x25, 0xC1, - 0xBA, 0x61, 0xA7, 0x78, 0x6D, 0x3E, 0xF2, 0xD0, - 0xC1, 0x14, 0xD1, 0x04, 0x8E, 0x76, 0x46, 0xDF, - 0xA3, 0x03, 0x2B, 0xFB, 0x7A, 0x51, 0xA6, 0x36, - 0x05, 0xDC, 0xE3, 0xE1, 0xD8, 0x98, 0x95, 0x00, - 0xD6, 0xE5, 0x8E, 0x96, 0x05, 0x19, 0x93, 0x1D, - 0xAC, 0x9F, 0x14, 0xDD, 0xA4, 0x28, 0xF5, 0xA2, - 0xC9, 0xC7, 0x4D, 0x91, 0x6D, 0x90, 0x77, 0x07, - 0xB5, 0x3E, 0xB5, 0x2C, 0x44, 0xAD, 0x71, 0xD7, - 0x27, 0x82, 0x6E, 0xB2, 0xCA, 0x68, 0x07, 0x0A, - 0x6F, 0x0E, 0x47, 0xFA, 0x16, 0xE5, 0x2E, 0x96, - 0x29, 0xB7, 0xAA, 0x82, 0x41, 0xDA, 0xAB, 0xB1, - 0x94, 0x97, 0xA5, 0x82, 0x4E, 0x58, 0xD7, 0x26, - 0x75, 0xC3, 0xA6, 0x7E, 0x10, 0xA1, 0x19, 0xB2, - 0x74, 0xB8, 0x4D, 0x9B, 0xEE, 0x28, 0x71, 0x72, - 0x8E, 0xD2, 0xF9, 0x4F, 0x85, 0x59, 0xB9, 0x7F, - 0x97, 0x9A, 0xE8, 0x82, 0xEA, 0x54, 0x99, 0x28, - 0xD6, 0xB1, 0xA9, 0xA4, 0xE4, 0xA2, 0x29, 0xF6, - 0xEB, 0x3F, 0xB1, 0xA4, 0x34, 0xA0, 0xFA, 0xED, - 0xAD, 0x62, 0xB7, 0x03, 0x30, 0xCF, 0xCB, 0x24, - 0xCB, 0x34, 0x98, 0x80, 0x2A, 0x67, 0x9F, 0x8F, - 0x54, 0xBF, 0x83, 0xEF, 0x34, 0x47, 0x22, 0x96, - 0x91, 0x98, 0x31, 0xCA, 0xAD, 0x59, 0xEB, 0xE8, - 0x30, 0x82, 0xEA, 0xB6, 0x7D, 0x4A, 0xBD, 0x90, - 0x22, 0x9A, 0x5E, 0x93, 0xA0, 0xB5, 0x80, 0x97, - 0x7F, 0x08, 0x13, 0xCC, 0xB1, 0x5E, 0xCD, 0x74, - 0xFF, 0x71, 0x5F, 0xE8, 0xDB, 0x5B, 0x05, 0xCE, - 0xF3, 0x7D, 0x34, 0x93, 0xBE, 0xDA, 0x27, 0x05, - 0x84, 0x94, 0x4C, 0x02, 0x09, 0x86, 0x34, 0x51, - 0x4D, 0xAA, 0xCE, 0x70, 0x47, 0xE4, 0x74, 0x32, - 0xF9, 0x2A, 0xDC, 0xA4, 0x91, 0xA3, 0xE0, 0x96, - 0x1A, 0x5D, 0x9F, 0x01, 0x44, 0x85, 0x2E, 0x46, - 0x32, 0x63, 0x35, 0xE2, 0x15, 0x24, 0x3D, 0xAA, - 0xE8, 0x37, 0x92, 0x7F, 0xBF, 0xDC, 0xE6, 0x91, - 0xF4, 0x98, 0x59, 0x26, 0x6E, 0x90, 0x08, 0x16, - 0x8C, 0x6A, 0x5E, 0x2F, 0x60, 0x9C, 0x80, 0xC6, - 0x8E, 0x08, 0x20, 0xE7, 0x27, 0x19, 0xE9, 0xB5, - 0x87, 0x3F, 0xA1, 0x99, 0xE1, 0x97, 0xF9, 0xC4, - 0x94, 0xAA, 0x8A, 0x3A, 0x65, 0x26, 0x9E, 0x95, - 0xB7, 0x61, 0xB6, 0x7B, 0xEC, 0x61, 0x13, 0xC1, - 0x44, 0xA5, 0x69, 0x89, 0xC5, 0x75, 0x0D, 0x45, - 0x05, 0x42, 0xCC, 0xF8, 0x1B, 0x24, 0x62, 0x09, - 0x2F, 0x70, 0x71, 0x5D, 0x49, 0x14, 0xEB, 0x2C, - 0xAA, 0x31, 0x74, 0xBC, 0x9E, 0xEB, 0x20, 0xAA, - 0xB6, 0xC6, 0x40, 0xF8, 0xB5, 0xD9, 0xC6, 0xA0, - 0xDC, 0xC6, 0xF0, 0xAE, 0xC9, 0x7B, 0x3A, 0xF6, - 0x47, 0xEB, 0xF8, 0x00, 0x34, 0xA4, 0x3B, 0xF3, - 0x19, 0xBF, 0x40, 0xAD, 0xF7, 0x9A, 0xFE, 0xAB, - 0x58, 0x90, 0xD2, 0x02, 0x3B, 0xAE, 0x02, 0xC9, - 0xFD, 0x02, 0xC5, 0xBB, 0x65, 0x87, 0x9C, 0x1B, - 0x5E, 0xA4, 0x06, 0x02, 0x9A, 0xE7, 0x78, 0x45, - 0xCB, 0x99, 0x4D, 0xB8, 0xC3, 0x52, 0x11, 0xCA, - 0x1D, 0xC8, 0x81, 0xF7, 0xF2, 0x0A, 0x47, 0x06, - 0x50, 0x5F, 0x29, 0xD9, 0xCD, 0x19, 0x89, 0xAD, - 0x42, 0xB0, 0x7E, 0xF5, 0x2D, 0x96, 0x54, 0xE2, - 0x8E, 0x3D, 0xCB, 0x83, 0x00, 0x08, 0xA1, 0xBE, - 0x31, 0x99, 0x38, 0x7E, 0x06, 0x6B, 0x28, 0xB3, - 0x15, 0xCA, 0x19, 0x02, 0xF4, 0xBB, 0x0E, 0xE6, - 0x3F, 0xDC, 0x4C, 0x93, 0xE1, 0xAB, 0x88, 0x6F, - 0xD7, 0x42, 0x52, 0x61, 0xC3, 0x7A, 0xC5, 0x87, - 0x62, 0xD0, 0x3D, 0xB6, 0x07, 0x06, 0x88, 0x7E, - 0x72, 0xCF, 0x74, 0x5A, 0x44, 0x6D, 0xF6, 0xC6, - 0x66, 0x2F, 0x53, 0xDD, 0x61, 0x24, 0x71, 0xA4, - 0x34, 0xAC, 0x56, 0xC4, 0xBE, 0xDB, 0x3C, 0x9F, - 0x36, 0x47, 0xE6, 0x03, 0x2B, 0x3C, 0xC0, 0x99, - 0x0A, 0x3A, 0x2E, 0x87, 0x05, 0x2B, 0x36, 0xD4, - 0xA1, 0x62, 0x42, 0x4E, 0x2D, 0x39, 0x9E, 0x1B, - 0xC2, 0x37, 0x92, 0x8D, 0x0B, 0xD7, 0x71, 0x58, - 0x07, 0x9C, 0xCB, 0x20, 0x8B, 0x71, 0x95, 0x07, - 0x96, 0x55, 0xBD, 0xB7, 0x6C, 0xBA, 0xFF, 0x44, - 0x7C, 0x34, 0xC5, 0x82, 0x9F, 0xAC, 0x19, 0x9B, - 0xB0, 0x27, 0xA0, 0x80, 0x06, 0x50, 0x8D, 0x56, - 0xC8, 0x1D, 0x18, 0x70, 0x90, 0xE7, 0x10, 0x24, - 0xDB, 0x7F, 0xBF, 0x3A, 0x7D, 0x64, 0xD8, 0xFA, - 0x48, 0x74, 0xA8, 0xF4, 0x70, 0x37, 0x7B, 0x15, - 0x38, 0x00, 0x96, 0x82, 0x2F, 0xFE, 0x46, 0x55, - 0x71, 0xB5, 0x0C, 0x54, 0x05, 0x58, 0xBA, 0x50, - 0xE9, 0x0E, 0xB8, 0x14, 0x52, 0xF4, 0x12, 0x75, - 0xC2, 0x51, 0x5B, 0xAE, 0x05, 0x92, 0xD5, 0x3F, - 0x6A, 0x6A, 0x34, 0xD2, 0xA3, 0x4D, 0x8E, 0xAC, - 0x6E, 0x7A, 0x03, 0xFB, 0xDB, 0x52, 0x49, 0x4F, - 0x4B, 0x98, 0x1B, 0x56, 0xC0, 0x96, 0x26, 0x08, - 0x48, 0x50, 0xC7, 0xCF, 0x96, 0x2F, 0x93, 0x10, - 0x72, 0x25, 0x15, 0xA6, 0x2A, 0xC0, 0x85, 0xA6, - 0x18, 0x9A, 0xDD, 0xEA, 0x38, 0x12, 0x91, 0x13, - 0x57, 0x31, 0xB2, 0xEE, 0x83, 0xA4, 0xF1, 0xEB, - 0xFA, 0x09, 0xAF, 0x80, 0xA9, 0x12, 0x68, 0xA8, - 0x76, 0x23, 0xCB, 0x55, 0x7C, 0x9F, 0x66, 0xDE, - 0xB4, 0x54, 0xFB, 0x2F, 0x4F, 0xC2, 0x64, 0x8F, - 0x44, 0x41, 0x5A, 0x7B, 0xEF, 0x29, 0x96, 0x2D, - 0x5F, 0x7C, 0x16, 0xE7, 0x85, 0x79, 0xF5, 0x26, - 0xDD, 0x20, 0xE9, 0x20, 0x9B, 0x6C, 0xA6, 0xDF, - 0xD1, 0x30, 0xF9, 0x2E, 0xF7, 0x24, 0x64, 0x5B, - 0x5B, 0x84, 0xD8, 0x72, 0x4F, 0x3C, 0xF6, 0xF3, - 0xA3, 0xB2, 0xA9, 0xCF, 0x61, 0x24, 0x7A, 0x54, - 0xBA, 0x92, 0x8F, 0x53, 0xEA, 0xCB, 0xA7, 0xE6, - 0xD6, 0xB8, 0x12, 0xC4, 0xCE, 0x21, 0xA1, 0x8B, - 0xA8, 0xD1, 0x14, 0x50, 0xE7, 0x04, 0x89, 0xBA, - 0x57, 0x2E, 0x5E, 0xB9, 0xA7, 0x72, 0x2D, 0x9D, - 0xC6, 0xAA, 0xE4, 0xF9, 0x57, 0x93, 0x60, 0x09, - 0xE2, 0x6E, 0xB3, 0xE7, 0x4D, 0x9F, 0x99, 0x33, - 0xF3, 0xDB, 0x4D, 0xA0, 0xA1, 0xF5, 0x44, 0x93, - 0x99, 0xB5, 0xE1, 0x01, 0x03, 0x11, 0xF8, 0x7D, - 0x92, 0xC1, 0x87, 0xAD, 0x2E, 0xFA, 0xBB, 0x0A, - 0x2C, 0x86, 0xB7, 0xD7, 0xF9, 0xA0, 0x72, 0xAB, - 0xC0, 0xC6, 0x60, 0x6D, 0xBC, 0xD9, 0x20, 0x17, - 0x7A, 0x22, 0x57, 0x20, 0xA7, 0x05, 0x76, 0xB8, - 0xE8, 0x2D, 0x7D, 0x53, 0xC1, 0xDF, 0xA4, 0x8E, - 0xA7, 0x31, 0x81, 0xAF, 0x0A, 0xF0, 0x86, 0xB6, - 0xAA, 0xF8, 0x0A, 0xB2, 0x49, 0x81, 0xF2, 0x75, - 0xD6, 0x6D, 0x4F, 0xBD, 0xE2, 0xC5, 0x1A, 0xE8, - 0xE8, 0xD4, 0x58, 0x33, 0x72, 0x9F, 0x45, 0x03, - 0x01, 0x30, 0xBC, 0x85, 0xB2, 0xBD, 0x9A, 0x14, - 0xC8, 0x13, 0xA3, 0x7F, 0x1F, 0xA1, 0x47, 0xF8, - 0x15, 0x48, 0x8D, 0x7A, 0x17, 0xC0, 0xC0, 0x39, - 0xEA, 0xF8, 0x66, 0xCE, 0xA7, 0x5F, 0x5B, 0x2E, - 0xBE, 0x05, 0xEF, 0x31, 0x09, 0x47, 0x2B, 0xA5, - 0xF7, 0xCF, 0xCE, 0x4C, 0x35, 0x8B, 0x60, 0x80, - 0x40, 0x0C, 0x5C, 0xC0, 0x85, 0x15, 0x14, 0x92, - 0xD1, 0x3A, 0x5B, 0x00, 0x96, 0xA0, 0x63, 0x1F, - 0xAA, 0x30, 0xCB, 0x48, 0xF2, 0xDA, 0x87, 0x3B, - 0x85, 0x7D, 0xFD, 0xB3, 0x86, 0xD9, 0x33, 0x98, - 0x18, 0x07, 0x34, 0x92, 0x55, 0x9A, 0x0E, 0xC2, - 0xDA, 0xF3, 0x73, 0x8E, 0x15, 0x88, 0xB0, 0x98, - 0x75, 0x1F, 0xF0, 0xFA, 0x1C, 0x87, 0x1B, 0x22, - 0x23, 0x7E, 0x5C, 0xD1, 0x5B, 0x0E, 0x17, 0x28, - 0xEA, 0x26, 0x71, 0x66, 0xC3, 0x8A, 0x71, 0x97, - 0xB6, 0xCC, 0x7D, 0xAD, 0x39, 0x11, 0x6B, 0xE6, - 0x1D, 0xF4, 0x33, 0x3C, 0xD7, 0xC2, 0xA4, 0x13, - 0xDB, 0x30, 0x63, 0xD7, 0xF0, 0x22, 0x8C, 0x61, - 0xFA, 0xDA, 0xC3, 0xF8, 0xC3, 0x31, 0xF4, 0x45, - 0x09, 0xB4, 0xD6, 0x08, 0x53, 0x1F, 0x99, 0x5D, - 0x15, 0xFA, 0xB1, 0x19, 0xD8, 0x47, 0xE6, 0xD8, - 0x54, 0x95, 0x75, 0xB7, 0xD8, 0x50, 0xB2, 0x60, - 0x0E, 0x4D, 0x13, 0x64, 0x6C, 0xF9, 0x6B, 0x6B, - 0x9D, 0xA6, 0xC6, 0x2F, 0x2A, 0x80, 0xAE, 0x02, - 0x58, 0xA8, 0xCD, 0x6E, 0xF4, 0xC5, 0x5E, 0xEA, - 0x7E, 0x78, 0xD2, 0x0A, 0x46, 0x4A, 0x19, 0x4C, - 0xEC, 0xBB, 0x01, 0xE7, 0x3F, 0x32, 0x76, 0xD6, - 0x6E, 0x12, 0xAD, 0x37, 0x74, 0x51, 0xBB, 0xB9, - 0x4E, 0x5C, 0x94, 0x88, 0x32, 0x59, 0x5F, 0x6B, - 0x6E, 0x38, 0x2A, 0xD1, 0x42, 0xD9, 0xF1, 0xB8, - 0x68, 0x97, 0x95, 0xE9, 0xEB, 0xC3, 0x2A, 0x5A, - 0x10, 0x1E, 0x69, 0x6C, 0xA3, 0x4A, 0xBA, 0x00, - 0x5B, 0x4C, 0xED, 0xA2, 0x7D, 0x12, 0x00, 0xFE, - 0x48, 0xFD, 0x82, 0xC1, 0x72, 0x17, 0xE5, 0x08, - 0xA8, 0x48, 0x4F, 0x03, 0x88, 0x34, 0x5C, 0x9D, - 0xED, 0xE2, 0xA1, 0x39, 0x28, 0xFA, 0xC3, 0x29, - 0x21, 0x84, 0x2F, 0x6E, 0x6A, 0xA5, 0xCF, 0xBF, - 0x57, 0xFA, 0xA2, 0x8F, 0x43, 0xE0, 0x5E, 0x9A, - 0x45, 0x23, 0x12, 0x50, 0x29, 0x11, 0xEF, 0x9C, - 0x33, 0xC8, 0x11, 0xEB, 0xE7, 0xCA, 0xD7, 0x30, - 0x62, 0x3D, 0xB7, 0x04, 0x8E, 0xC2, 0x18, 0xC7, - 0xEA, 0x9D, 0xFC, 0x6E, 0x19, 0x65, 0xA9, 0x85, - 0x7E, 0x92, 0x94, 0xC4, 0xE4, 0x7F, 0x4D, 0x96, - 0x23, 0xCB, 0x74, 0xB6, 0x5F, 0x7B, 0xB5, 0x86, - 0x22, 0x83, 0x8D, 0xC4, 0x4E, 0x16, 0xD9, 0x15, - 0xD9, 0x59, 0x65, 0x55, 0xCA, 0x3D, 0x26, 0x1C, - 0x9C, 0x2A, 0xFC, 0xCB, 0xAF, 0x5A, 0xC0, 0x3D, - 0xE0, 0x91, 0xF0, 0xDB, 0xEA, 0xE1, 0xB4, 0xA7, - 0xE3, 0xDE, 0xC4, 0x39, 0x09, 0x89, 0x67, 0x65, - 0x77, 0xA0, 0x53, 0x68, 0x4F, 0x57, 0x86, 0x8D, - 0x91, 0xFE, 0x6A, 0x5B, 0x7D, 0x3D, 0x7C, 0x79, - 0x50, 0x78, 0x9E, 0x89, 0xD8, 0x38, 0x83, 0xBC, - 0x3D, 0xAE, 0x55, 0xCA, 0x30, 0x78, 0xB0, 0x8D, - 0x99, 0x18, 0x31, 0xBA, 0x91, 0x50, 0x2A, 0x5A, - 0x33, 0x54, 0xB8, 0x8E, 0x15, 0x9B, 0x0A, 0xFF, - 0xD2, 0x5B, 0x0D, 0xBB, 0x72, 0xBC, 0xD6, 0xF4, - 0x04, 0x65, 0xDD, 0xFC, 0x00, 0xFF, 0x8B, 0x63, - 0x39, 0xC0, 0x67, 0x09, 0x5D, 0x6C, 0x7C, 0xB0, - 0x6F, 0x3B, 0xE7, 0x59, 0xC5, 0x27, 0x40, 0x39, - 0x5D, 0xD1, 0x08, 0x29, 0x6F, 0x2B, 0xBC, 0x2E, - 0x7A, 0x5D, 0xDD, 0xE3, 0xD1, 0xC3, 0x5D, 0x18, - 0xBF, 0xBE, 0x39, 0x68, 0xEC, 0x59, 0xAB, 0xF8, - 0x5C, 0x1B, 0xD2, 0x92, 0x8A, 0xB2, 0xAA, 0x67, - 0x8A, 0x78, 0x91, 0x74, 0x6E, 0x88, 0xF4, 0x39, - 0xF8, 0xB4, 0x38, 0x40, 0x31, 0xC3, 0xED, 0xB7, - 0x31, 0x97, 0xE5, 0x2A, 0x4E, 0x77, 0x3D, 0x2D, - 0x8B, 0x7B, 0xAD, 0xDC, 0x5D, 0xD0, 0xA7, 0xE4, - 0x4C, 0x80, 0x8D, 0x73, 0xB8, 0x18, 0x1D, 0x19, - 0x1C, 0x3C, 0x89, 0xFE, 0x15, 0xEA, 0x90, 0xD7, - 0x56, 0x7E, 0x89, 0x16, 0xA3, 0x37, 0x83, 0x03, - 0x05, 0x04, 0x1B, 0x1E, 0x94, 0xB3, 0xB4, 0x06, - 0xDA, 0x4C, 0x36, 0xBE, 0xF0, 0x5D, 0x91, 0x00, - 0xAB, 0x99, 0x2A, 0x4D, 0x56, 0x25, 0x33, 0x73, - 0x0E, 0x0D, 0x8C, 0x05, 0x2B, 0x3A, 0x62, 0xD3, - 0xF6, 0x9A, 0x83, 0xA0, 0xC9, 0xB2, 0x12, 0x4F, - 0x12, 0xAE, 0x7D, 0xAC, 0xC9, 0x78, 0xC4, 0xA0, - 0xAD, 0xCC, 0x2E, 0xBA, 0x2D, 0x80, 0xF4, 0x94, - 0xAA, 0x16, 0xEC, 0x1E, 0x8E, 0x71, 0xC7, 0x9B, - 0x02, 0xF3, 0x26, 0x1B, 0x6F, 0x98, 0x68, 0xB8, - 0xD5, 0x7E, 0x9D, 0x16, 0xF4, 0x2B, 0x7C, 0xC6, - 0x64, 0x06, 0x54, 0x9A, 0x27, 0x6D, 0x37, 0x14, - 0x37, 0xDE, 0x88, 0xB7, 0xF3, 0x9E, 0x74, 0x08, - 0x7C, 0xBB, 0xC5, 0x61, 0x16, 0x80, 0x31, 0x2D, - 0xE8, 0xF0, 0xC3, 0x68, 0x14, 0xE1, 0x74, 0xF9, - 0x1E, 0xB6, 0x00, 0xCC, 0x96, 0xE3, 0xCF, 0x51, - 0xBB, 0x20, 0x25, 0x88, 0x77, 0xA2, 0xAA, 0xEB, - 0x82, 0x7F, 0x7F, 0x5A, 0xDA, 0x80, 0x78, 0x6B, - 0x50, 0x84, 0xC8, 0x02, 0xE6, 0x06, 0xDE, 0xF3, - 0x88, 0xA3, 0x9C, 0xE4, 0xF0, 0xD5, 0xBC, 0x19, - 0x39, 0x4C, 0xE8, 0x41, 0xE2, 0xD2, 0xAA, 0x74, - 0x25, 0x23, 0x05, 0x80, 0xFA, 0x66, 0x75, 0xC5, - 0x17, 0x41, 0xD1, 0x75, 0x87, 0x9B, 0x4D, 0x03, - 0xC3, 0x90, 0xF6, 0x52, 0xA5, 0x03, 0xA7, 0x51, - 0x6A, 0x1F, 0x07, 0x5E, 0x30, 0x82, 0xD5, 0x2C, - 0x60, 0xB8, 0x64, 0x2A, 0x82, 0x40, 0xEE, 0x94, - 0x4D, 0x5F, 0xB4, 0x27, 0x37, 0x6B, 0x40, 0xB0, - 0xB2, 0x82, 0xE1, 0x9A, 0xB9, 0x08, 0xCC, 0xF2, - 0x0C, 0xA9, 0x26, 0x11, 0x64, 0x90, 0xAF, 0xED, - 0x57, 0xEA, 0xD0, 0xDC, 0x0C, 0x8E, 0x29, 0x6C, - 0x79, 0xA4, 0x8D, 0x08, 0x8E, 0x83, 0x7A, 0xF0, - 0x67, 0xDC, 0x02, 0x9E, 0xC6, 0x31, 0xF9, 0x93, - 0x3E, 0xE4, 0xD2, 0x07, 0x46, 0xE6, 0x4E, 0x5F, - 0x21, 0x67, 0x55, 0xA1, 0x38, 0x97, 0x4D, 0x30, - 0x82, 0x93, 0x73, 0x6D, 0xC1, 0x86, 0x04, 0x27, - 0x6C, 0xC4, 0x18, 0xBA, 0x69, 0xF8, 0x72, 0xB5, - 0x8E, 0x7F, 0x6E, 0x3A, 0x8B, 0x84, 0x6E, 0xBA, - 0xAE, 0xB3, 0x83, 0xE7, 0xF8, 0x90, 0xF5, 0x4E, - 0x77, 0xF5, 0xD7, 0xF5, 0xD4, 0xA5, 0x8D, 0xB7, - 0x83, 0xEC, 0xA0, 0x49, 0xF1, 0x86, 0x17, 0x12, - 0x82, 0xBA, 0xC2, 0x60, 0x7D, 0x51, 0xB2, 0x98, - 0xB1, 0x49, 0x38, 0xEF, 0xB1, 0x92, 0x8F, 0xC8, - 0xD0, 0x78, 0x06, 0xE8, 0xC3, 0xE7, 0x3B, 0x46, - 0x46, 0xBC, 0xF1, 0x68, 0x90, 0xCC, 0x13, 0x80, - 0xE7, 0xB6, 0x33, 0x50, 0x2B, 0x3E, 0xAD, 0xA4, - 0x47, 0x75, 0x02, 0xE2, 0x46, 0x7C, 0xFD, 0xB9, - 0xAC, 0xBD, 0x1C, 0x72, 0xBC, 0x6A, 0xEB, 0x4F, - 0x41, 0xE1, 0xC2, 0x3C, 0x63, 0x68, 0x39, 0xE3, - 0x57, 0x13, 0x5F, 0x76, 0xBC, 0x39, 0xC4, 0xF9, - 0xAC, 0x1C, 0xE8, 0xF1, 0xBE, 0xEF, 0xEB, 0xFF, - 0x87, 0x59, 0xE8, 0xF7, 0x19, 0x65, 0xD4, 0x85, - 0x4B, 0xEA, 0xAD, 0x0A, 0xFE, 0xDC, 0xA9, 0xD4, - 0xD6, 0xBD, 0x1E, 0x63, 0xD3, 0x48, 0xA4, 0x2C, - 0xEE, 0xFF, 0xC1, 0x70, 0xD0, 0xEE, 0x9F, 0x13, - 0x6F, 0x5B, 0xE9, 0x90, 0x14, 0x66, 0x92, 0x61, - 0x22, 0xF9, 0x48, 0xBD, 0xDE, 0x2A, 0x91, 0x07, - 0xD2, 0xA9, 0x8B, 0xA2, 0xDE, 0xA6, 0xD6, 0xF2, - 0xDA, 0x17, 0x72, 0x47, 0x02, 0xEC, 0x51, 0x8C, - 0x03, 0x75, 0x3D, 0x51, 0xEA, 0x83, 0x1E, 0x95, - 0xCB, 0x87, 0x08, 0xD5, 0xDE, 0xC8, 0x22, 0xDB, - 0x73, 0x7E, 0x44, 0x14, 0x3C, 0x86, 0xF4, 0x71, - 0x77, 0xD8, 0x5C, 0xD0, 0x98, 0xC2, 0x1B, 0x9B, - 0xC8, 0x00, 0xDF, 0xA9, 0xDC, 0x26, 0xFD, 0xC2, - 0x61, 0xE9, 0x21, 0xDE, 0x00, 0x2D, 0x81, 0xC1, - 0x59, 0xF8, 0xEB, 0x1F, 0xEE, 0x67, 0x67, 0x9D, - 0x62, 0x1E, 0xCE, 0x6B, 0x36, 0xD0, 0x1C, 0x77, - 0x5A, 0x16, 0x45, 0xD5, 0x22, 0x92, 0xB4, 0xB2, - 0xB8, 0x22, 0x73, 0x18, 0x77, 0x2A, 0x80, 0x91, - 0xE9, 0xEC, 0x01, 0x70, 0x13, 0xB1, 0x95, 0xEB, - 0xF4, 0xEF, 0x20, 0x1F, 0x4E, 0x88, 0x1C, 0x49, - 0x36, 0x33, 0xC0, 0x7F, 0x27, 0xC9, 0x79, 0x0D, - 0xD8, 0xAE, 0xCC, 0x94, 0x49, 0xCF, 0x63, 0xBC, - 0xB1, 0x19, 0x46, 0x16, 0x9A, 0xCF, 0xF3, 0x95, - 0x42, 0x26, 0x6B, 0x0C, 0x66, 0x85, 0xBB, 0xB0, - 0x80, 0xB5, 0x9F, 0x11, 0x7E, 0xEB, 0x2A, 0x73, - 0x38, 0x2B, 0x3D, 0x18, 0x7C, 0x06, 0x80, 0xC5, - 0xAE, 0x70, 0x90, 0x70, 0xDF, 0x03, 0xA0, 0x08, - 0xA7, 0xAD, 0x13, 0x22, 0x6F, 0x3C, 0x37, 0x15, - 0x39, 0x20, 0x52, 0xF2, 0x44, 0x1B, 0x4A, 0x17, - 0x8D, 0x7C, 0xF7, 0x05, 0x18, 0x33, 0x9C, 0xFF, - 0xBB, 0x54, 0xA6, 0xD9, 0xB9, 0xCD, 0xE3, 0xB0, - 0xB5, 0x7D, 0xBC, 0x79, 0xF4, 0xE4, 0x7A, 0xD6, - 0x27, 0x4C, 0xE2, 0x18, 0x0C, 0x92, 0xAC, 0x64, - 0x10, 0xE5, 0x0D, 0x05, 0xF6, 0x66, 0x5A, 0x57, - 0xD4, 0xD4, 0x47, 0x6C, 0x2C, 0x0E, 0x6E, 0xE0, - 0x75, 0x7A, 0x3A, 0xFE, 0xA2, 0xB1, 0xBF, 0x86, - 0xA5, 0x51, 0xEF, 0x98, 0xAA, 0x1D, 0xFC, 0xBA, - 0x96, 0x31, 0x59, 0x59, 0x45, 0x2B, 0x2B, 0x3A, - 0x2F, 0xCB, 0xBB, 0x95, 0x5C, 0xB3, 0xFA, 0x1E, - 0xEB, 0xBB, 0x83, 0xBD, 0x17, 0x87, 0x67, 0xC0, - 0x2E, 0xFB, 0xBE, 0xFF, 0x6C, 0x7E, 0xEF, 0x94, - 0xB5, 0x5D, 0xF8, 0x83, 0x1D, 0xDF, 0xB7, 0xB2, - 0x02, 0xCE, 0x7D, 0xE0, 0x55, 0xEA, 0xF9, 0x92, - 0x8A, 0xDA, 0xF6, 0xED, 0x0E, 0x31, 0x59, 0xCA, - 0x56, 0xC4, 0x83, 0xFA, 0x3B, 0xA3, 0xD2, 0x47, - 0x8C, 0xA3, 0x94, 0x82, 0x4C, 0xEE, 0x6A, 0xBD, - 0x59, 0x67, 0x09, 0x53, 0xEE, 0x80, 0xD3, 0x83, - 0xAA, 0xA6, 0x08, 0xE1, 0x58, 0x51, 0x13, 0x5C, - 0x1C, 0xDE, 0xEE, 0xB5, 0xF6, 0xA8, 0x89, 0x7C, - 0x3C, 0x9E, 0x06, 0x6A, 0xB4, 0x73, 0x4F, 0xDD, - 0xFA, 0xBC, 0x3B, 0xC3, 0xBA, 0x12, 0x06, 0xBA, - 0x54, 0x34, 0xDC, 0xDE, 0xDB, 0x9D, 0x8B, 0x3A, - 0x81, 0xA2, 0xE6, 0x38, 0x14, 0x6D, 0x83, 0xF1, - 0x4F, 0x06, 0xE5, 0x60, 0x99, 0xC0, 0xC8, 0xA0, - 0xFC, 0xCD, 0xB9, 0xEC, 0xF0, 0xF3, 0xD8, 0x8D, - 0xE3, 0x79, 0x2F, 0x2D, 0x0B, 0x65, 0x1B, 0x61, - 0x9C, 0x57, 0x1B, 0x69, 0xF4, 0xBF, 0x8E, 0x7C, - 0xD1, 0x91, 0x0F, 0x26, 0x6A, 0x4D, 0xAD, 0xF8, - 0xC2, 0xAB, 0xB4, 0xAC, 0x05, 0xBD, 0x1F, 0xBA, - 0x05, 0x8C, 0x03, 0x94, 0xC0, 0x16, 0xDE, 0xE6, - 0x0C, 0x66, 0x40, 0x1A, 0x17, 0xD1, 0x34, 0x59, - 0x54, 0x79, 0x33, 0x38, 0x9A, 0x35, 0x65, 0x69, - 0xAD, 0xA5, 0x32, 0xC9, 0xF4, 0x87, 0x69, 0x88, - 0x55, 0xA4, 0xD7, 0xBC, 0xCD, 0x0E, 0xF6, 0x95, - 0x31, 0x09, 0x4D, 0xA4, 0x08, 0x6F, 0x52, 0xBF, - 0x98, 0xCD, 0xC9, 0xA4, 0xB0, 0xBC, 0x88, 0x8D, - 0xC3, 0x89, 0x1A, 0x76, 0x09, 0x6C, 0x7C, 0x48, - 0x34, 0x90, 0xE9, 0x52, 0x32, 0x6A, 0xE4, 0x02, - 0xD8, 0xDF, 0xD2, 0xF3, 0xDC, 0xCF, 0x1A, 0xA5, - 0xD7, 0xBD, 0x69, 0x8E, 0x2A, 0xA8, 0x8D, 0x29, - 0x48, 0x13, 0xA8, 0x8F, 0xD3, 0x18, 0x66, 0xBC, - 0xA1, 0x1B, 0x3B, 0x91, 0xC0, 0x09, 0xEE, 0xB6, - 0x67, 0x60, 0x1C, 0xEE, 0xAF, 0xAF, 0xE9, 0x7C, - 0x56, 0xFA, 0x33, 0xF9, 0x38, 0x1F, 0x3E, 0x43, - 0x29, 0x90, 0x1A, 0xC3, 0xB7, 0xEA, 0x70, 0x32, - 0xC0, 0x19, 0xE5, 0xC8, 0xA8, 0xEF, 0xD7, 0x04, - 0x4C, 0x97, 0x36, 0x44, 0xAF, 0x2B, 0xE4, 0x20, - 0xA0, 0x33, 0xC6, 0xC2, 0xC7, 0xCE, 0x0C, 0xEA, - 0x39, 0x34, 0xDC, 0x18, 0xB4, 0x2A, 0xDF, 0xD7, - 0xA8, 0x46, 0xF4, 0x2D, 0xD4, 0x06, 0x86, 0x6A, - 0x39, 0x09, 0x29, 0x02, 0x6A, 0xDE, 0x5C, 0x79, - 0x1B, 0x5F, 0x61, 0xF9, 0x42, 0xB1, 0x55, 0x07, - 0x7D, 0x82, 0xF2, 0xAF, 0xCC, 0xFF, 0xF8, 0x5B, - 0x04, 0x06, 0x64, 0x7A, 0x96, 0x27, 0xE3, 0x69, - 0x5D, 0x4B, 0xEA, 0x3D, 0x58, 0xA6, 0x3E, 0x17, - 0x18, 0xD1, 0x84, 0xE4, 0x6B, 0x5F, 0x4B, 0xC8, - 0x41, 0x03, 0x34, 0xA4, 0x09, 0x5D, 0x0F, 0xAF, - 0x30, 0x6F, 0xB9, 0xDC, 0x10, 0x94, 0x25, 0xC3, - 0x16, 0x52, 0xD0, 0x6F, 0xF0, 0x51, 0xA1, 0x62, - 0xEE, 0x2B, 0x7B, 0x1C, 0x54, 0xD6, 0xC7, 0xDE, - 0xD6, 0xE3, 0x95, 0xAA, 0xD1, 0xA8, 0x6D, 0x03, - 0xB1, 0xB6, 0xC8, 0x00, 0x76, 0x7E, 0xC1, 0x44, - 0x12, 0xEE, 0xCE, 0x13, 0x46, 0x20, 0xA6, 0x1D, - 0x36, 0x9A, 0xF4, 0x9E, 0x21, 0xB0, 0xD1, 0x4B, - 0xC4, 0x23, 0x06, 0x49, 0xCD, 0xD3, 0xE9, 0xFD, - 0x84, 0x7A, 0xE5, 0x0B, 0xE9, 0x62, 0xEF, 0xC8, - 0xCB, 0x0F, 0x33, 0x9F, 0x9E, 0x6D, 0x32, 0x47, - 0x53, 0x3B, 0xDE, 0xD8, 0x71, 0x1D, 0x46, 0x1D, - 0x4A, 0xF2, 0xAE, 0x3F, 0xDD, 0x1D, 0x7D, 0x2A, - 0x28, 0x9C, 0x78, 0xCB, 0x19, 0xF3, 0xCD, 0xC2, - 0x14, 0x2B, 0xF5, 0x2B, 0x23, 0xE6, 0xA2, 0x7B, - 0x39, 0xD6, 0x99, 0x54, 0x3C, 0x3D, 0x63, 0x9B, - 0x9C, 0x72, 0xCA, 0x80, 0xB3, 0x7E, 0xA2, 0x77, - 0x5B, 0x5E, 0x26, 0x81, 0xF0, 0xDD, 0x01, 0xDF, - 0xF0, 0xC0, 0x55, 0x13, 0x36, 0x90, 0x62, 0xFE - }; - static const byte msg_87[] = { - 0x9E, 0xFF, 0x34, 0x15, 0x06, 0xD1, 0x8B, 0xCB, - 0x27, 0xA7, 0xFC, 0x4E, 0xAA, 0xBF, 0x5A, 0x7C, - 0x4A, 0x59, 0x37, 0x77, 0x19, 0x6F, 0x66, 0x4B, - 0xCE, 0x31, 0x6C, 0x95, 0x5B, 0x83, 0x5A, 0xD4, - 0xC9, 0xF5, 0xDE, 0x9A, 0x2B, 0xF8, 0x96, 0x15, - 0xDA, 0xCB, 0x9C, 0x1E, 0x61, 0x8C, 0x78, 0xE7, - 0x11, 0x44, 0xCD, 0x4B, 0x70, 0x46, 0xF4, 0x7D, - 0x9A, 0x60, 0x0E, 0x9C, 0xE6, 0x65, 0x96, 0xC4, - 0xC5, 0x5E, 0xDA, 0x23, 0xA6, 0x6C, 0xC1, 0x18, - 0xA4, 0xA7, 0xBD, 0x0D, 0xED, 0x00, 0xAB, 0xDD, - 0xCE, 0x53, 0xFB, 0xF2, 0x48, 0x20, 0x33, 0xA4, - 0x18, 0x85, 0x06, 0xEC, 0x11, 0x3B, 0xBD, 0x98, - 0xD9, 0x89, 0x1F, 0x0D, 0x69, 0x46, 0x3A, 0x0D, - 0x36, 0x15, 0x6B, 0xA3, 0xEA, 0x0D, 0x02, 0xA1, - 0x4C, 0x1F, 0xD7, 0xA3, 0xFE, 0x70, 0x4E, 0xE5, - 0x6B, 0x44, 0x6A, 0xE1, 0x79, 0xF7, 0x2E, 0x10, - 0x4A, 0xA8, 0x1A, 0xF0, 0xA2, 0xF8, 0xFC, 0xA6, - 0xF6, 0xF9, 0x62, 0x96, 0x05, 0x9E, 0xE8, 0x82, - 0x66, 0x80, 0xE4, 0x3F, 0x4B, 0x07, 0x40, 0xF4, - 0x7A, 0xC1, 0x05, 0x66, 0xED, 0x31, 0x07, 0x99, - 0xAC, 0x71, 0x41, 0xD3, 0x8F, 0x69, 0x21, 0x31, - 0x5F, 0x23, 0xAB, 0x3E, 0x64, 0xC8, 0xA7, 0x70, - 0xAA, 0x57, 0x12, 0x80, 0x90, 0xDB, 0x82, 0x8C, - 0x7B, 0xAA, 0x59, 0xC3, 0x29, 0x5C, 0xCA, 0xA2, - 0x38, 0xC7, 0x5F, 0xAC, 0x0F, 0x93, 0xDA, 0x79, - 0x00, 0x74, 0x1B, 0xCD, 0x94, 0xBB, 0x9F, 0xD3, - 0x85, 0x2E, 0xC2, 0xB7, 0xD3, 0x3F, 0x60, 0x0B, - 0x1D, 0x51, 0x66, 0x6A, 0xE2, 0x22, 0xA5, 0x7A, - 0xF1, 0x40, 0xFA, 0x04, 0x9C, 0x2C, 0x9F, 0x6D, - 0x0F, 0xE6, 0xC0, 0xF1, 0xE7, 0xA0, 0xDD, 0xE1, - 0x14, 0x3B, 0xE5, 0xCE, 0xD7, 0xBB, 0xE2, 0x32, - 0xCB, 0xFB, 0xD8, 0xAE, 0x00, 0xEA, 0x5F, 0xC1, - 0x65, 0x02, 0x6D, 0x72, 0x9D, 0xB3, 0x0F, 0x6A, - 0xFD, 0x99, 0x73, 0xB6, 0x72, 0x2C, 0x07, 0xF6, - 0x00, 0x66, 0x54, 0x41, 0xE3, 0x0B, 0x7C, 0x5F, - 0xB2, 0x97, 0xB8, 0xAB, 0x96, 0x9C, 0x06, 0x83, - 0x9D, 0x33, 0x1D, 0xEE, 0x96, 0xDE, 0x48, 0x68, - 0x7D, 0xC9, 0xDA, 0x53, 0x1A, 0x95, 0xCA, 0x83, - 0xA7, 0x6F, 0x4B, 0x07, 0x6D, 0xFC, 0xF4, 0x83, - 0xF0, 0x04, 0x50, 0xE5, 0x1C, 0x8D, 0x34, 0xD8, - 0xED, 0x8E, 0x4B, 0x3D, 0xAF, 0xAE, 0x66, 0x4B, - 0x6D, 0xC1, 0x3E, 0xD8, 0x8E, 0x6D, 0x63, 0x02, - 0x7D, 0xD4, 0x38, 0xCB, 0x74, 0xF4, 0x12, 0xE8, - 0x70, 0xCC, 0x9D, 0xFD, 0x29, 0xB5, 0x2A, 0xBC, - 0xA1, 0x69, 0xC1, 0x7E, 0x97, 0x47, 0x58, 0xE0, - 0x3A, 0xC0, 0xFB, 0x7F, 0xE5, 0x64, 0x50, 0x8E, - 0x01, 0x7A, 0x9B, 0x47, 0x49, 0xD6, 0x41, 0xAF, - 0x0D, 0xE3, 0x84, 0x08, 0x8F, 0xA0, 0x0C, 0x69, - 0x40, 0x23, 0x3D, 0xDE, 0xFB, 0x65, 0x7C, 0x18, - 0x1C, 0x82, 0xA1, 0xB6, 0xA3, 0x1F, 0xCC, 0xF4, - 0xD5, 0x2C, 0x9D, 0x35, 0x1E, 0x6B, 0xDF, 0xDF, - 0x48, 0xBC, 0xE4, 0x14, 0x60, 0x74, 0x62, 0xDB, - 0x76, 0x9F, 0x9E, 0xB1, 0x59, 0x25, 0xBA, 0x9F, - 0xAF, 0xBA, 0xB2, 0x29, 0xB5, 0x89, 0x6B, 0xF1, - 0xF8, 0xE4, 0x7D, 0xF1, 0x7C, 0x82, 0x08, 0xDF, - 0xD5, 0x96, 0x04, 0xB6, 0x05, 0x2C, 0xD2, 0xCE, - 0xAB, 0x56, 0x40, 0x0F, 0x11, 0xC4, 0xD9, 0x52, - 0x1E, 0x1A, 0xB8, 0x27, 0x4A, 0xB5, 0x76, 0x4C, - 0x73, 0xE9, 0x41, 0x32, 0x42, 0x0E, 0x32, 0xB6, - 0xAE, 0xB0, 0x76, 0x33, 0x78, 0xD9, 0xBA, 0x68, - 0xE1, 0xFC, 0xDE, 0x2B, 0xD6, 0xDE, 0xDA, 0x39, - 0x17, 0xC0, 0x00, 0xAF, 0x39, 0xB7, 0x8F, 0x4C, - 0xCA, 0x7C, 0x8F, 0xBF, 0x94, 0xB4, 0xCB, 0x8A, - 0x81, 0x16, 0xEE, 0xEC, 0xFE, 0xF0, 0x13, 0x1E, - 0xC9, 0xF2, 0xDE, 0xDA, 0x01, 0x40, 0xC9, 0x02, - 0xA8, 0xD6, 0xE6, 0x0E, 0x98, 0xB3, 0xCD, 0x9D, - 0x9C, 0x75, 0x24, 0x8B, 0xF8, 0x84, 0x5A, 0xC0, - 0xD7, 0xE0, 0x6B, 0xA0, 0xE1, 0x83, 0x10, 0xFE, - 0xCE, 0x98, 0x62, 0x07, 0x54, 0x2C, 0xC1, 0xEE, - 0x08, 0x88, 0x43, 0xEF, 0x74, 0xA2, 0x6A, 0xEC, - 0xB6, 0xD0, 0x6F, 0x0F, 0xEF, 0xE1, 0xB7, 0x2C, - 0xF9, 0x33, 0x06, 0xC3, 0x2E, 0xD2, 0x8A, 0xEC, - 0xC5, 0x5B, 0xB1, 0x03, 0xA0, 0x84, 0x6D, 0x0C, - 0x84, 0x13, 0x6D, 0xB0, 0xB0, 0x54, 0xF3, 0xDE, - 0xA3, 0x9A, 0x72, 0x6C, 0x6F, 0xD6, 0x59, 0x7F, - 0x9B, 0x03, 0x8C, 0xC2, 0x38, 0x46, 0x01, 0x76, - 0x38, 0xF4, 0x43, 0x68, 0x81, 0x0D, 0x86, 0x29, - 0x3D, 0xDF, 0xE5, 0x48, 0x61, 0x53, 0x2F, 0x85, - 0xF5, 0x3F, 0x09, 0x30, 0x48, 0xC3, 0xE0, 0x09, - 0xC4, 0x32, 0x11, 0x27, 0xAD, 0xAA, 0xEC, 0x6A, - 0x5C, 0xCE, 0x03, 0xE0, 0xD9, 0xE9, 0x1D, 0xAC, - 0xCA, 0xBB, 0x2F, 0x50, 0xE0, 0x1E, 0xB2, 0xAC, - 0x2B, 0x39, 0x6D, 0x24, 0xB0, 0x5D, 0x45, 0x3B, - 0xD5, 0x1D, 0x52, 0x9F, 0xBA, 0x51, 0xE4, 0x6D, - 0x30, 0xC5, 0x66, 0x13, 0x00, 0x5A, 0xBF, 0x62, - 0x63, 0xB9, 0x8D, 0x8D, 0xFE, 0xB5, 0x26, 0x16, - 0xD1, 0xCB, 0x78, 0x92, 0x18, 0x1C, 0x2F, 0xC2, - 0xE2, 0x04, 0x3B, 0x99, 0x4C, 0x81, 0x66, 0x58, - 0x48, 0x2E, 0x06, 0x06, 0x34, 0x83, 0x78, 0xA3, - 0xCC, 0x85, 0x40, 0xE0, 0x20, 0x27, 0x3F, 0x10, - 0xB6, 0x9E, 0x20, 0x21, 0xA9, 0x2D, 0x9C, 0x36, - 0xCC, 0x9B, 0x97, 0x79, 0xFE, 0x8C, 0xE7, 0xA4, - 0x99, 0xAE, 0xB5, 0x3E, 0xC6, 0xDD, 0xB4, 0xF2, - 0xEC, 0x22, 0xBF, 0xB4, 0x52, 0xFC, 0x5E, 0x79, - 0x7D, 0x3A, 0x25, 0x33, 0x26, 0x00, 0x06, 0xFE, - 0x6D, 0xCC, 0xE4, 0xE9, 0x76, 0x65, 0xC6, 0x8C, - 0x39, 0x93, 0xDC, 0x7E, 0xA0, 0xBD, 0x4B, 0xDC, - 0xD2, 0x47, 0x21, 0xB0, 0x2B, 0x09, 0x02, 0xB1, - 0x84, 0x0D, 0xDE, 0xC5, 0x18, 0x20, 0x38, 0x76, - 0x2D, 0x55, 0xFC, 0x11, 0xB9, 0x87, 0x3A, 0x0D, - 0xD2, 0xEB, 0xBD, 0x55, 0xAD, 0xE3, 0x86, 0x5C, - 0xFF, 0x3D, 0x54, 0x5F, 0x76, 0x33, 0x53, 0x69, - 0xDD, 0x9E, 0x70, 0xB0, 0x73, 0x99, 0x77, 0xF6, - 0xE9, 0x8A, 0x61, 0x27, 0x19, 0x4A, 0x19, 0x26, - 0xA6, 0x97, 0xE4, 0x7F, 0x73, 0xE0, 0x4F, 0xF5, - 0xBD, 0x52, 0x5E, 0x8F, 0x17, 0x22, 0x00, 0x8F, - 0x7C, 0x15, 0x5C, 0xD3, 0xAD, 0xE0, 0xA5, 0xB6, - 0x6A, 0x31, 0x36, 0xFD, 0xD8, 0x44, 0xAE, 0x5E, - 0xCD, 0x6C, 0x82, 0x77, 0xC3, 0xD0, 0x7F, 0x39, - 0x72, 0x1E, 0x91, 0x19, 0x50, 0xE1, 0x28, 0x20, - 0x88, 0x3A, 0x6B, 0xC8, 0xA9, 0xE7, 0x93, 0x28, - 0x0F, 0xA7, 0x4F, 0xF2, 0x1A, 0xC2, 0x13, 0x4E, - 0x6B, 0xAE, 0x71, 0x3F, 0x43, 0x89, 0xC9, 0xE7, - 0xDD, 0x05, 0xBB, 0x41, 0x09, 0xB5, 0x5E, 0xB9, - 0x23, 0x51, 0xC0, 0xEB, 0x92, 0x1A, 0x0C, 0x3F, - 0xAC, 0xC5, 0x00, 0x8C, 0xB8, 0x5C, 0x3F, 0x2D, - 0x5F, 0x9A, 0xCE, 0xAE, 0x9B, 0x4B, 0x71, 0x48, - 0x25, 0xFD, 0xE2, 0xB6, 0x26, 0x3F, 0xEE, 0x10, - 0x33, 0x07, 0x4F, 0x59, 0xF0, 0x73, 0xE9, 0x39, - 0x5C, 0x0D, 0x8B, 0xB5, 0xD1, 0xEF, 0xE5, 0xBF, - 0xBB, 0xE1, 0x80, 0xF7, 0xC5, 0x91, 0xC1, 0x72, - 0xAA, 0xB0, 0x5E, 0x7C, 0x53, 0x69, 0x4C, 0x37, - 0x7A, 0xD2, 0x7B, 0x9D, 0x1C, 0xFA, 0x0F, 0xE0, - 0x92, 0x93, 0x40, 0x5D, 0xBE, 0x1C, 0xF8, 0x84, - 0x7A, 0x35, 0x1F, 0x72, 0x77, 0x68, 0xE2, 0xAF, - 0xA5, 0x6B, 0x54, 0xFF, 0x53, 0x7C, 0xCD, 0x9D, - 0x6A, 0x49, 0xD1, 0xCA, 0x74, 0x5F, 0xF5, 0xDB, - 0x54, 0xF8, 0x60, 0xA7, 0x41, 0x66, 0xDE, 0xFF, - 0xB0, 0xB2, 0xF9, 0x21, 0x06, 0xB7, 0x81, 0x4C, - 0x9C, 0xEF, 0xFD, 0x11, 0xD5, 0x63, 0xD8, 0xF3, - 0x3A, 0x81, 0xC4, 0x9D, 0x1B, 0xA8, 0x37, 0x73, - 0x57, 0x26, 0x29, 0xF8, 0xB4, 0x7F, 0x9F, 0xA2, - 0x7D, 0x2A, 0x63, 0x2C, 0x70, 0x08, 0x1E, 0x2E, - 0xE7, 0xED, 0x73, 0xAB, 0xD2, 0x4C, 0x02, 0x7E, - 0xF1, 0x15, 0x26, 0xE1, 0x09, 0x5C, 0x29, 0x13, - 0xDF, 0x69, 0x29, 0x25, 0xE5, 0x68, 0x39, 0x10, - 0x9B, 0xD0, 0x5E, 0xD8, 0xE2, 0xC9, 0x08, 0x61, - 0x63, 0xCD, 0xF9, 0x45, 0xBC, 0x16, 0xDC, 0x80, - 0x4C, 0x0F, 0x61, 0xEE, 0x8F, 0x3B, 0x72, 0xDB, - 0x02, 0x45, 0xF6, 0x78, 0x69, 0x81, 0xFC, 0xE0, - 0x32, 0x2F, 0xC2, 0xAF, 0xCD, 0x4E, 0x8E, 0x52, - 0x03, 0xB5, 0x1C, 0x7C, 0x37, 0x2C, 0x58, 0xD5, - 0xE2, 0x92, 0xA7, 0xE2, 0x49, 0x6C, 0x3F, 0x5D, - 0x7F, 0x2B, 0x26, 0x70, 0x1C, 0x0C, 0x16, 0x7F, - 0x49, 0x30, 0x71, 0x14, 0xEB, 0xBE, 0x13, 0xF4, - 0xF1, 0xAA, 0x5A, 0xCF, 0x98, 0xF2, 0x07, 0x29, - 0xB5, 0x12, 0x84, 0x80, 0x01, 0x46, 0x11, 0xA4, - 0x44, 0xAE, 0x6D, 0xE0, 0x43, 0x7F, 0xFD, 0x5D, - 0x84, 0xB5, 0x6E, 0x3E, 0x55, 0x0D, 0xE8, 0x66, - 0x13, 0xA9, 0x28, 0x5A, 0x10, 0x84, 0x0B, 0xED, - 0x0B, 0x69, 0xF0, 0x19, 0x69, 0x9B, 0x34, 0xB8, - 0x6F, 0xC6, 0x22, 0xD3, 0x25, 0x26, 0x9D, 0x1A, - 0x04, 0x6B, 0x53, 0xA4, 0xDF, 0x12, 0x93, 0xA5, - 0x2C, 0xEE, 0x1C, 0x35, 0xFE, 0x81, 0x6B, 0x67, - 0x81, 0x92, 0x07, 0xE0, 0x9A, 0x02, 0xC9, 0xD8, - 0x59, 0x4D, 0x51, 0xE8, 0xB3, 0x14, 0x55, 0x2F, - 0xDE, 0x26, 0xDB, 0x7C, 0xEB, 0x8D, 0x80, 0x12, - 0x4A, 0x8A, 0x1C, 0x33, 0x74, 0x8E, 0x05, 0xC1, - 0xAF, 0xD6, 0xE8, 0x7B, 0x56, 0x7C, 0x41, 0xE0, - 0xE7, 0x3F, 0x32, 0x5F, 0x25, 0xDD, 0x2F, 0x48, - 0x21, 0x90, 0xC4, 0x04, 0x42, 0x1A, 0x3D, 0x6A, - 0x0E, 0x5D, 0x5C, 0xDB, 0xE2, 0xB0, 0x18, 0x8B, - 0xAC, 0x77, 0xC6, 0xE3, 0x5D, 0x77, 0xC0, 0xA3, - 0x2B, 0x1D, 0x96, 0x29, 0xF8, 0x8E, 0x70, 0xA7, - 0x65, 0xFE, 0xE3, 0x8C, 0x1A, 0xB2, 0x39, 0x75, - 0xB9, 0x45, 0xF2, 0x16, 0x1F, 0x6C, 0xFE, 0x7E, - 0x68, 0x2A, 0xED, 0x96, 0x84, 0x95, 0x47, 0x05, - 0x1D, 0xDE, 0xB7, 0x7B, 0x90, 0xF6, 0xAF, 0x00, - 0x74, 0x7C, 0x47, 0xE0, 0x2E, 0x80, 0xB6, 0x9A, - 0x0D, 0x4B, 0x78, 0xA4, 0x7D, 0xDD, 0x81, 0xE2, - 0x99, 0x27, 0x1F, 0xA7, 0x8F, 0xE4, 0x23, 0xAD, - 0xDF, 0x12, 0x0D, 0xD0, 0x4D, 0x46, 0xC1, 0x32, - 0xE9, 0x70, 0xF4, 0xA0, 0x4E, 0x97, 0xA5, 0x88, - 0xD2, 0x7C, 0x7B, 0xA8, 0x43, 0x26, 0x18, 0x2A, - 0xAE, 0x04, 0xC2, 0x51, 0x28, 0x99, 0x71, 0x69, - 0x1D, 0x96, 0x78, 0xD4, 0x09, 0x88, 0x16, 0x88, - 0xF3, 0xBC, 0xCB, 0x95, 0x08, 0x30, 0xE6, 0x5B, - 0x78, 0x48, 0x41, 0x00, 0x4E, 0x40, 0x44, 0x58, - 0xE6, 0x16, 0x59, 0x63, 0xCF, 0xB4, 0xEE, 0xB5, - 0x05, 0xFD, 0xD1, 0x35, 0xF3, 0x1E, 0xD0, 0x14, - 0x7C, 0xC9, 0xE9, 0x87, 0x7F, 0xFF, 0x41, 0x07, - 0x68, 0x91, 0x06, 0x17, 0x4E, 0x76, 0x66, 0xEE, - 0xCB, 0x6C, 0xF2, 0xDA, 0x9C, 0x93, 0x51, 0xDC, - 0x43, 0x4A, 0x94, 0x49, 0x38, 0x4E, 0xED, 0x7F, - 0x5F, 0x90, 0x77, 0xB4, 0x2F, 0x0F, 0xC5, 0xD9, - 0xF0, 0xF5, 0xF7, 0x21, 0x91, 0x32, 0xFF, 0x9A, - 0x47, 0x09, 0x83, 0xE1, 0x9D, 0x30, 0xA4, 0xF3, - 0x7D, 0x18, 0x97, 0x44, 0xD8, 0x32, 0xFD, 0x5F, - 0xB3, 0x97, 0x49, 0x4E, 0x11, 0xAD, 0xF7, 0x4F, - 0x4E, 0x90, 0x0A, 0x41, 0x87, 0xCF, 0xF5, 0xDA, - 0x8F, 0x6D, 0x7B, 0x35, 0xAE, 0xA0, 0x16, 0xA8, - 0xDE, 0x88, 0x62, 0x26, 0x5F, 0x13, 0x69, 0xFB, - 0x36, 0x7E, 0xF1, 0x86, 0x0C, 0x8E, 0x07, 0xC3, - 0x3F, 0x32, 0x82, 0xB4, 0xD9, 0x83, 0x7C, 0xDF, - 0x3E, 0xF6, 0x58, 0x42, 0x2D, 0x34, 0xDE, 0xA4, - 0x1E, 0x56, 0xDD, 0x18, 0x70, 0x36, 0x81, 0xD0, - 0x44, 0xE3, 0xC4, 0x03, 0xAF, 0x33, 0xD1, 0xE7, - 0xAF, 0xA9, 0x6A, 0x8C, 0x44, 0x35, 0xFE, 0xBB, - 0xA0, 0xD2, 0x5D, 0xE0, 0xE4, 0xAE, 0xDF, 0xFB, - 0x82, 0xA0, 0xBA, 0xDE, 0x76, 0xB6, 0x6C, 0xA9, - 0xBE, 0xC7, 0xE9, 0xD7, 0x3F, 0x1C, 0xB2, 0x9C, - 0xD7, 0x3C, 0xF0, 0x0C, 0x2F, 0x60, 0x44, 0xD8, - 0x34, 0x53, 0xCE, 0xDD, 0xE0, 0x3F, 0x97, 0x2E, - 0xBB, 0x03, 0x20, 0x62, 0xD0, 0xA8, 0x23, 0x9F, - 0xB6, 0x99, 0xEC, 0x89, 0x0D, 0x32, 0x0F, 0x6F, - 0xAF, 0x3D, 0x20, 0x7B, 0xDC, 0x9A, 0xFE, 0xA2, - 0x02, 0x8B, 0x86, 0x99, 0x56, 0x23, 0x43, 0xAA, - 0x50, 0xF7, 0x0A, 0x4E, 0x8C, 0x62, 0xDA, 0xF8, - 0xB8, 0xCC, 0xA7, 0x2D, 0x02, 0x47, 0x63, 0xBA, - 0xEC, 0x25, 0x00, 0x23, 0xEA, 0xE8, 0x25, 0xC6, - 0x51, 0xAC, 0xC4, 0xAA, 0xA0, 0xDB, 0x6C, 0x5E, - 0xC7, 0xEF, 0xD0, 0x71, 0xED, 0xFB, 0x95, 0xAF, - 0x61, 0x0B, 0x64, 0x01, 0x61, 0x4F, 0x4F, 0xC6, - 0x36, 0x27, 0x75, 0xC3, 0x81, 0x0A, 0x9A, 0x21, - 0x69, 0xF8, 0x4A, 0x21, 0x12, 0x3B, 0x03, 0x1C, - 0xCE, 0x08, 0x7D, 0x52, 0x0E, 0x99, 0xE2, 0x62, - 0xE8, 0x81, 0x2E, 0x84, 0x09, 0x8E, 0xBE, 0x9B, - 0xCE, 0xD6, 0xE6, 0xA4, 0xF7, 0x3B, 0x67, 0x45, - 0x41, 0xDE, 0x0B, 0xCF, 0x5E, 0x7E, 0x31, 0x8F, - 0x90, 0x6D, 0x90, 0x1F, 0xEB, 0x1D, 0x9D, 0x1C, - 0xCB, 0x6C, 0xFF, 0xE8, 0x50, 0xDB, 0xFF, 0x75, - 0xC8, 0xA8, 0x9F, 0x43, 0xCB, 0x94, 0x89, 0x5F, - 0x28, 0x69, 0x6F, 0xAB, 0xB6, 0xAD, 0xCE, 0xE7, - 0x69, 0x7E, 0x60, 0x09, 0x03, 0x87, 0x43, 0x6E, - 0x19, 0xB1, 0x38, 0x81, 0x9B, 0x90, 0xAE, 0xB1, - 0x8A, 0xC2, 0x7D, 0x2C, 0x65, 0x9B, 0x0D, 0xF1, - 0x77, 0x94, 0xA7, 0x2F, 0x8B, 0xB7, 0xCE, 0x03, - 0xEE, 0x9A, 0x78, 0xFE, 0x8C, 0x8A, 0x37, 0x45, - 0xD5, 0x05, 0xDE, 0xD8, 0x85, 0x00, 0xF4, 0xCF, - 0x98, 0xFB, 0x62, 0x85, 0xB0, 0xBD, 0x82, 0xE2, - 0x7D, 0xED, 0x93, 0x3B, 0xCC, 0x18, 0x73, 0xF8, - 0x8A, 0xBD, 0x82, 0x8F, 0x60, 0x47, 0xAC, 0xEC, - 0x47, 0x2D, 0xEA, 0xE8, 0x7D, 0x8A, 0xDE, 0x0A, - 0xD0, 0x73, 0x48, 0xFF, 0xAF, 0x59, 0xC1, 0x70, - 0x29, 0xD8, 0x45, 0x38, 0x77, 0x7F, 0x73, 0xBF, - 0xED, 0x5C, 0x63, 0x63, 0x0B, 0xC4, 0x43, 0xE0, - 0xFA, 0x12, 0xDE, 0x72, 0x2D, 0xAB, 0xBB, 0xC2, - 0x25, 0x0A, 0xBA, 0x3F, 0xD8, 0x61, 0x54, 0xEE, - 0x20, 0x8D, 0x53, 0xA3, 0x27, 0xA7, 0xFF, 0x26, - 0xA0, 0x17, 0x93, 0x39, 0x4D, 0x04, 0x15, 0x8B, - 0xB3, 0x20, 0x60, 0x04, 0x47, 0xE2, 0xFD, 0x7D, - 0x7C, 0x6D, 0xE0, 0x76, 0xA5, 0x13, 0xD6, 0x81, - 0x95, 0xB0, 0x67, 0x20, 0x4F, 0xF6, 0x00, 0x5B, - 0x16, 0x25, 0x54, 0x2B, 0x28, 0x37, 0x2F, 0x06, - 0x80, 0x60, 0x53, 0xAE, 0xE2, 0xEA, 0x9F, 0x88, - 0xAE, 0xA2, 0x9A, 0x27, 0x02, 0x15, 0x4B, 0xF4, - 0x43, 0xBC, 0x70, 0x7D, 0x0A, 0x96, 0xEB, 0x06, - 0xCE, 0x43, 0xEF, 0xE6, 0x6A, 0xAC, 0x1F, 0x16, - 0x95, 0xE2, 0x8C, 0xF1, 0x07, 0x19, 0x3D, 0x06, - 0x2E, 0x71, 0xB6, 0x3A, 0xFD, 0xCF, 0x9E, 0x05, - 0x0B, 0xBE, 0xD7, 0x48, 0x4E, 0xC5, 0xE8, 0x0C, - 0x51, 0x5A, 0xC8, 0x20, 0xF0, 0xCD, 0xF9, 0x65, - 0xDD, 0x97, 0xF7, 0xA1, 0x1B, 0x57, 0xB2, 0x1A, - 0x04, 0xBF, 0x42, 0xF2, 0xA3, 0x3D, 0x61, 0x97, - 0x64, 0xDF, 0xB3, 0x63, 0x11, 0xFD, 0xAD, 0x8C, - 0x83, 0xA7, 0x48, 0xBA, 0x34, 0x42, 0xC5, 0x70, - 0x64, 0x5A, 0x78, 0x5E, 0x67, 0x03, 0xE5, 0xBF, - 0x22, 0xE8, 0x46, 0xFC, 0x51, 0x6C, 0xB4, 0x99, - 0x15, 0xFD, 0x63, 0xB6, 0x3E, 0x5D, 0xBF, 0x56, - 0xF5, 0x5E, 0xA4, 0x01, 0x16, 0xD5, 0x03, 0x4B, - 0xBB, 0x94, 0x5F, 0x58, 0xD6, 0x76, 0x95, 0xC7, - 0x96, 0xF1, 0xC1, 0xD0, 0x53, 0xA3, 0xEB, 0x28, - 0xA9, 0x5E, 0x8F, 0x38, 0x8E, 0x80, 0x04, 0xC3, - 0xB2, 0x4F, 0xD5, 0xFC, 0xCA, 0x7B, 0xB1, 0xE3, - 0xB9, 0x9A, 0x9F, 0x3C, 0x94, 0x5E, 0xF8, 0xA5, - 0x35, 0xF1, 0x37, 0x43, 0x20, 0x71, 0xA5, 0xCA, - 0x5B, 0x6F, 0x7D, 0xC7, 0xB8, 0xBC, 0xE5, 0x5A, - 0xD0, 0xF3, 0xB6, 0xCF, 0x1B, 0xCB, 0xB9, 0xCD, - 0x35, 0xE2, 0x41, 0xF8, 0x6E, 0x46, 0x97, 0x27, - 0x26, 0x48, 0xF4, 0x73, 0xDB, 0xD5, 0xB7, 0x68, - 0x1E, 0xF0, 0xC7, 0x84, 0x49, 0xE6, 0xC5, 0xFA, - 0x93, 0x0D, 0x83, 0x2C, 0x85, 0x1E, 0xED, 0x2A, - 0x65, 0x12, 0x19, 0xD7, 0xD9, 0xC3, 0xBB, 0x23, - 0xF3, 0xC6, 0xAD, 0x7E, 0xB7, 0x78, 0x68, 0x54, - 0x1F, 0x3C, 0xEE, 0x09, 0xF5, 0x1E, 0xE0, 0x4E, - 0xBA, 0x1B, 0xBC, 0x29, 0x69, 0x8A, 0xED, 0xD3, - 0xC7, 0xAC, 0xEC, 0x44, 0x29, 0xD7, 0xA4, 0x0C, - 0xFA, 0xBD, 0xA2, 0x29, 0x34, 0x80, 0x16, 0x4F, - 0x37, 0xEC, 0xB6, 0x73, 0xF2, 0xB5, 0xD7, 0x51, - 0x57, 0x43, 0xAF, 0x7E, 0xD0, 0xB6, 0xE0, 0x96, - 0xF0, 0xE2, 0xFE, 0xCE, 0xC8, 0x9F, 0x40, 0xD6, - 0xAF, 0xE0, 0xBF, 0xCD, 0x70, 0x37, 0x91, 0x69, - 0x99, 0x8C, 0xDF, 0x4A, 0x20, 0xDE, 0xB6, 0xC6, - 0x7A, 0xB4, 0xE3, 0x6A, 0xAD, 0x53, 0xED, 0xB9, - 0x8A, 0x13, 0x61, 0xC5, 0xE9, 0xB0, 0xDC, 0x16, - 0x36, 0xD7, 0x51, 0xA8, 0x7B, 0x52, 0x05, 0x3B, - 0xAD, 0x5C, 0xD2, 0xBD, 0x6F, 0x6B, 0xA9, 0x51, - 0xA7, 0xE8, 0x7E, 0xA4, 0xB6, 0x77, 0xAE, 0x00, - 0x89, 0x3A, 0x1F, 0x76, 0x72, 0x3F, 0xC5, 0x6C, - 0x49, 0x4F, 0xB5, 0xCA, 0x2F, 0x5D, 0xAE, 0xF8, - 0x58, 0x9A, 0xE2, 0x5B, 0x54, 0x76, 0xF4, 0xAA, - 0x89, 0xD4, 0x04, 0xAF, 0x1C, 0x26, 0x65, 0xEC, - 0xA1, 0x81, 0x06, 0x2A, 0x4B, 0x5E, 0xD5, 0x90, - 0xB8, 0x26, 0x33, 0x64, 0x15, 0x33, 0x25, 0xAC, - 0x97, 0x9A, 0xCA, 0x1B, 0x64, 0x50, 0x82, 0x8F, - 0x65, 0x6A, 0xD4, 0x47, 0xCF, 0x7E, 0x93, 0x7D, - 0xB3, 0xCB, 0xFE, 0x55, 0x0A, 0x46, 0x93, 0x22, - 0xB5, 0x46, 0xAB, 0xD6, 0x05, 0x59, 0x14, 0x5E, - 0x1B, 0xD4, 0x2D, 0xAF, 0xA3, 0x18, 0xB7, 0xA0, - 0xD7, 0x11, 0x70, 0xDE, 0x81, 0x8B, 0xD6, 0x64, - 0xFD, 0x38, 0xBD, 0x29, 0x92, 0x41, 0x80, 0xC4, - 0x4A, 0x6D, 0x34, 0x1B, 0xF0, 0x59, 0xA0, 0xD6, - 0x48, 0x55, 0xD2, 0xA5, 0xE2, 0x91, 0xB6, 0x71, - 0xF4, 0x90, 0x97, 0x8B, 0x0A, 0xDD, 0x90, 0xEA, - 0x61, 0x9B, 0x30, 0xA6, 0x2F, 0x5D, 0xB4, 0xEE, - 0x7A, 0x10, 0x40, 0x59, 0x89, 0xAC, 0x30, 0x6E, - 0x9C, 0x7B, 0xBC, 0x11, 0x75, 0x38, 0x00, 0x2E, - 0xDF, 0xED, 0x87, 0x47, 0x30, 0xFB, 0xD4, 0x8A, - 0xC6, 0xBE, 0xC7, 0x20, 0xC8, 0x3D, 0x51, 0x05, - 0x67, 0x48, 0xDE, 0xE2, 0xBF, 0x95, 0x5E, 0x7B, - 0xD7, 0xC7, 0x86, 0xDF, 0x68, 0x57, 0xA9, 0x29, - 0xBC, 0xF8, 0xE3, 0x81, 0x62, 0x1B, 0x37, 0x58, - 0xF2, 0xFF, 0xEE, 0xE8, 0x28, 0x08, 0x36, 0x23, - 0x5B, 0x24, 0x68, 0x1E, 0x62, 0xBD, 0x27, 0xC2, - 0x6F, 0xE9, 0x63, 0x67, 0x53, 0xC7, 0x8A, 0xB5, - 0xA7, 0xEF, 0x29, 0xFE, 0x60, 0xAC, 0x29, 0xCF, - 0x67, 0x40, 0x9F, 0xE6, 0x57, 0xCE, 0x65, 0x3A, - 0x2F, 0xDA, 0xA7, 0xF2, 0x0C, 0x50, 0x19, 0xE6, - 0xF7, 0x43, 0x2E, 0x8C, 0xEB, 0x9E, 0x99, 0x92, - 0xE6, 0x46, 0xB7, 0x8D, 0x43, 0x65, 0xFD, 0x02, - 0x17, 0x74, 0x6F, 0x7B, 0xA3, 0x1E, 0x06, 0x9D, - 0x75, 0x4E, 0x05, 0xED, 0x5A, 0x71, 0xFC, 0x5E, - 0x7D, 0x6D, 0x64, 0x5E, 0xAF, 0x41, 0x44, 0xD6, - 0xBC, 0x43, 0x05, 0x5E, 0x6C, 0xDB, 0x89, 0x34, - 0xC7, 0x02, 0x64, 0x08, 0xAE, 0x96, 0x53, 0x5B, - 0xA2, 0xDE, 0xCD, 0x2F, 0x74, 0x56, 0xD6, 0xEC, - 0xA4, 0x23, 0x68, 0xCD, 0x9A, 0xC5, 0x05, 0x7B, - 0x7D, 0x1E, 0x12, 0xF7, 0x7A, 0xA8, 0x7C, 0x43, - 0x7E, 0x7A, 0x43, 0x31, 0x5D, 0xA0, 0x81, 0xE5, - 0x3A, 0xFE, 0x23, 0xB5, 0xBC, 0xC2, 0xF4, 0xCE, - 0x3A, 0x80, 0x06, 0xE8, 0x1E, 0x08, 0xAF, 0x0A, - 0x33, 0xC1, 0xA9, 0x30, 0x7C, 0x8D, 0x5A, 0xC5, - 0x93, 0x89, 0xF2, 0x69, 0x24, 0x11, 0x6C, 0xAB, - 0x0B, 0x87, 0xD5, 0x49, 0xD0, 0x38, 0x3C, 0x27, - 0x4E, 0x8E, 0x85, 0xD4, 0x6E, 0x0F, 0xCD, 0x70, - 0xE3, 0x68, 0x42, 0xCA, 0x4C, 0x8D, 0x6D, 0x0F, - 0x48, 0xF3, 0xED, 0xF9, 0xE9, 0x43, 0x5D, 0xBF, - 0x55, 0x75, 0xF8, 0xEB, 0x78, 0x93, 0x72, 0x75, - 0x8B, 0xF5, 0xBD, 0xE9, 0x9D, 0xA2, 0xB9, 0x81, - 0x83, 0xDB, 0xAC, 0x82, 0xD1, 0xC1, 0x20, 0x03, - 0x72, 0x4D, 0xDC, 0x42, 0xAE, 0xC8, 0x1C, 0x0C, - 0x78, 0x22, 0x77, 0x27, 0x91, 0x50, 0x4C, 0x90, - 0xEA, 0x13, 0x8B, 0x6C, 0x91, 0xDF, 0x5D, 0x25, - 0x36, 0x9C, 0xC2, 0x06, 0x4F, 0xD5, 0xE2, 0xCC, - 0x9D, 0x89, 0x3B, 0xC4, 0x23, 0x5D, 0x88, 0x17, - 0x62, 0x4E, 0xC9, 0xFA, 0xC8, 0xEF, 0x1D, 0x45, - 0xE1, 0xFB, 0x58, 0xB3, 0x8E, 0xBD, 0x8D, 0xAE, - 0x12, 0xFF, 0xA0, 0x37, 0xE0, 0x7F, 0x5B, 0x41, - 0x1D, 0x40, 0x17, 0xAF, 0x95, 0x2D, 0x8C, 0x42, - 0xC6, 0x1A, 0x2A, 0x1E, 0x8E, 0x70, 0x25, 0xD6, - 0xD3, 0xA2, 0x85, 0xAA, 0x17, 0xFF, 0x0D, 0xB4, - 0x39, 0xD0, 0xF2, 0xAF, 0xA0, 0x4F, 0x31, 0x8D, - 0x6D, 0x57, 0x6A, 0xED, 0xC6, 0xF1, 0xE7, 0x67, - 0xA6, 0x6F, 0xB3, 0x9B, 0x72, 0xC6, 0x7F, 0x05, - 0xAF, 0x40, 0x87, 0x12, 0x0D, 0xC8, 0x98, 0x88, - 0x2D, 0xDE, 0xA1, 0x7C, 0x95, 0x32, 0xB2, 0x7A, - 0xB5, 0x9D, 0xE4, 0x0D, 0x75, 0xD4, 0x17, 0x5B, - 0xB4, 0x92, 0x73, 0xAF, 0x87, 0x3A, 0x92, 0xDA, - 0x4D, 0x87, 0xE2, 0x53, 0xCA, 0xE7, 0x2A, 0x52, - 0x64, 0xE0, 0xC1, 0xDE, 0x4C, 0x9C, 0xF9, 0x1A, - 0x1F, 0x3A, 0xD6, 0x05, 0xA0, 0xCC, 0x8D, 0x91, - 0x93, 0x51, 0xF9, 0x37, 0x1A, 0xFC, 0x68, 0xEF, - 0xBC, 0xED, 0x19, 0x8E, 0x4C, 0xD1, 0xB5, 0x8C, - 0xA2, 0x85, 0xDA, 0x02, 0x65, 0xAB, 0xAC, 0xAE, - 0xCA, 0x8E, 0xAC, 0xF0, 0x2A, 0x4F, 0xC7, 0x67, - 0x16, 0x2E, 0x24, 0x7F, 0x73, 0xCD, 0xD7, 0x3E, - 0xE3, 0x27, 0x8A, 0xF9, 0x4A, 0xC4, 0xA8, 0xCB, - 0x2B, 0x01, 0x55, 0x68, 0x34, 0xA3, 0xC0, 0xB8, - 0xD0, 0x6D, 0x05, 0xF2, 0x3B, 0x4C, 0x17, 0x47, - 0xE7, 0x64, 0x53, 0xF4, 0x9D, 0xE0, 0x8D, 0xF8, - 0xEE, 0x0E, 0xA6, 0x25, 0x64, 0x7D, 0x1B, 0xD0, - 0x80, 0xE7, 0x3C, 0x41, 0x97, 0xAE, 0xCB, 0x6A, - 0x23, 0xC2, 0x5F, 0x00, 0xC6, 0xC5, 0x4C, 0x8A, - 0x4C, 0xEF, 0x76, 0x65, 0x95, 0x28, 0xB3, 0x67, - 0x42, 0xEC, 0x17, 0xFF, 0x0E, 0xE3, 0x7B, 0x30, - 0x6D, 0xCC, 0xB8, 0x87, 0xD6, 0x63, 0x36, 0x5D, - 0xC9, 0xE8, 0x1D, 0x51, 0x47, 0xCF, 0xE5, 0x05, - 0x0D, 0xB4, 0x09, 0xDF, 0xAD, 0x88, 0x9C, 0x38, - 0x6F, 0x12, 0xA5, 0xCD, 0x0C, 0x95, 0x53, 0x41, - 0x13, 0xA6, 0xD0, 0xAB, 0xCB, 0x5A, 0x3F, 0x56, - 0xCE, 0x23, 0xEE, 0x32, 0x61, 0x22, 0x79, 0xE8, - 0xBA, 0x23, 0x94, 0x61, 0x25, 0x8E, 0xD6, 0x3E, - 0x78, 0x83, 0xE1, 0x15, 0xBA, 0x05, 0x81, 0xB8, - 0x1A, 0x7F, 0x73, 0xC1, 0xB7, 0x9F, 0x29, 0xA1, - 0x16, 0x2E, 0x6E, 0x84, 0xC7, 0x15, 0xBC, 0x50, - 0x28, 0x5F, 0xD3, 0x8D, 0x4D, 0x6D, 0xC0, 0x87, - 0x68, 0x88, 0x4B, 0xF4, 0xFB, 0x55, 0x85, 0x3D, - 0xA7, 0xB5, 0x47, 0x1E, 0x73, 0xA1, 0x47, 0x8D, - 0xB1, 0xE1, 0xCF, 0xE6, 0x15, 0x3E, 0xC6, 0xC3, - 0x78, 0xDD, 0x6A, 0x3F, 0x42, 0x29, 0x6E, 0x61, - 0x9D, 0xE7, 0x63, 0xFF, 0x2D, 0xDB, 0x83, 0xE5, - 0x15, 0x84, 0xC2, 0x8D, 0xD8, 0x34, 0x2E, 0x92, - 0x9E, 0x15, 0xB7, 0xBB, 0xCF, 0x5D, 0x6E, 0xCB, - 0x87, 0x79, 0xCF, 0x7F, 0x3A, 0x9A, 0xC1, 0x6A, - 0x43, 0x1F, 0x52, 0xA2, 0x34, 0xE6, 0xA3, 0x69, - 0x9D, 0x9E, 0x44, 0x84, 0x0A, 0x4D, 0x3D, 0x48, - 0x5D, 0xA5, 0xD9, 0x03, 0x94, 0xB1, 0x81, 0xEF, - 0x89, 0x98, 0xE6, 0xD1, 0x44, 0x21, 0x83, 0x59, - 0x09, 0xCD, 0xDB, 0x16, 0x7C, 0x8C, 0x38, 0x78, - 0x19, 0x4B, 0x6D, 0x51, 0x4D, 0xF8, 0x63, 0x6D, - 0x4A, 0x14, 0xA1, 0xBE, 0xF3, 0xCA, 0x38, 0x1E, - 0x36, 0xCF, 0x2E, 0x6D, 0x5F, 0xBC, 0xB4, 0x0A, - 0xF0, 0x91, 0x7D, 0x6D, 0xBB, 0x87, 0x5C, 0xFF, - 0x64, 0xCD, 0xCE, 0xCC, 0xCF, 0xB8, 0xBF, 0xB8, - 0x05, 0x45, 0x8D, 0xF8, 0x2C, 0x74, 0xEB, 0x86, - 0x3A, 0x96, 0x9E, 0xD9, 0x8B, 0x9C, 0x46, 0xE7, - 0x17, 0x3C, 0x09, 0x0D, 0xB0, 0x68, 0xB2, 0xD8, - 0x0C, 0xCE, 0x32, 0xDE, 0x51, 0x72, 0xB5, 0xD4, - 0xA8, 0xB9, 0x09, 0xA5, 0xA4, 0xCC, 0x47, 0xFA, - 0x9F, 0x2E, 0xD6, 0x6E, 0x60, 0x69, 0xCD, 0x96, - 0xAB, 0x1F, 0x3E, 0x84, 0x8C, 0x68, 0x72, 0x0F, - 0xEA, 0x32, 0xC5, 0x73, 0x6E, 0x8A, 0xB5, 0x10, - 0x05, 0xFE, 0x42, 0x58, 0x33, 0xF2, 0x07, 0x56, - 0xC1, 0x96, 0x76, 0x23, 0x77, 0x9D, 0x0A, 0xD2, - 0x42, 0xA1, 0x69, 0x06, 0x83, 0xBA, 0xD2, 0xEB, - 0x12, 0x3D, 0x97, 0xAB, 0x23, 0x08, 0x90, 0x15, - 0x51, 0x4D, 0x0C, 0x6A, 0x3B, 0x0F, 0x37, 0x15, - 0x25, 0xC2, 0x3E, 0x5F, 0x53, 0x84, 0x4C, 0x81, - 0xDD, 0xE8, 0x7C, 0xFE, 0x9F, 0x06, 0x5E, 0x11, - 0x68, 0x7D, 0x68, 0x6B, 0x07, 0x2C, 0x19, 0x00, - 0xF5, 0xC9, 0xA7, 0xC3, 0x1F, 0xE8, 0xBA, 0xBE, - 0x9F, 0x09, 0x0C, 0xE2, 0xCB, 0x3B, 0x68, 0x7B, - 0xA8, 0x9E, 0xD8, 0x3C, 0x08, 0x85, 0xDF, 0xF9, - 0x11, 0x2B, 0x52, 0xF6, 0xCE, 0xD7, 0x1E, 0x32, - 0xA4, 0x0A, 0x9A, 0xBC, 0xFF, 0xF4, 0x20, 0xB6, - 0x24, 0x85, 0x84, 0x7F, 0xFF, 0x70, 0x3C, 0xBB, - 0x74, 0x36, 0x42, 0x25, 0x5F, 0xBD, 0x0A, 0x90, - 0x86, 0xA7, 0xB8, 0x3F, 0x9E, 0xDF, 0x43, 0x24, - 0x88, 0x0C, 0x52, 0x08, 0xF7, 0xDC, 0xB1, 0xEA, - 0xC3, 0x38, 0xF9, 0x13, 0x16, 0x65, 0xA0, 0xCA, - 0x6B, 0xF0, 0xD6, 0x12, 0xFB, 0xA6, 0x3F, 0xF7, - 0x13, 0x91, 0x99, 0xB1, 0xDE, 0xE4, 0xEE, 0x1E, - 0x98, 0x9B, 0xE4, 0xA0, 0x3A, 0xA8, 0xAC, 0x4A, - 0x48, 0x3E, 0xCB, 0x9E, 0xB4, 0x1D, 0x22, 0x1F, - 0x59, 0x97, 0x24, 0x8C, 0xFE, 0xDC, 0xBF, 0x6C, - 0xAD, 0x8D, 0xB0, 0xA3, 0x27, 0xFA, 0x28, 0x8F, - 0xD6, 0xAE, 0x31, 0x39, 0x84, 0xFA, 0x61, 0x8F, - 0x7D, 0xD4, 0xEE, 0xBB, 0x13, 0xED, 0x85, 0xC4, - 0x35, 0xC0, 0xAB, 0x07, 0x73, 0xC5, 0xCD, 0xCA, - 0xD4, 0x69, 0x9B, 0x9C, 0x38, 0x2A, 0x1F, 0x37, - 0xF9, 0xDF, 0x8C, 0x3A, 0xE1, 0x57, 0xDF, 0x05, - 0x9F, 0x97, 0x51, 0xCC, 0xA6, 0x93, 0xD5, 0x49, - 0x2A, 0xE9, 0xCD, 0x46, 0x31, 0x22, 0x6E, 0x62, - 0xE8, 0x13, 0x90, 0x64, 0xFF, 0x00, 0x27, 0xCF, - 0xA1, 0x95, 0x4E, 0xE9, 0x36, 0xAF, 0xAD, 0x02, - 0x06, 0xDD, 0x2A, 0xE2, 0x28, 0xB6, 0xDD, 0x65, - 0xCD, 0x9A, 0x9D, 0x5F, 0xF9, 0xC0, 0xCC, 0x48, - 0xC8, 0xC2, 0xE9, 0x8F, 0x5A, 0xE6, 0xE2, 0xC9, - 0x79, 0x7A, 0x83, 0x84, 0xF8, 0xA3, 0xE3, 0xC7, - 0x48, 0xC7, 0x06, 0xFE, 0x6A, 0x36, 0x25, 0xD2, - 0xA2, 0xEB, 0x4A, 0xE2, 0xCA, 0xA0, 0x49, 0x24, - 0x1A, 0x47, 0x8C, 0x1A, 0x77, 0xF5, 0xC9, 0x0D, - 0xDC, 0x94, 0x18, 0x4D, 0x89, 0x80, 0x50, 0x18, - 0x7D, 0x67, 0x00, 0x43, 0xE4, 0xE7, 0x8F, 0x54, - 0xDC, 0x60, 0x84, 0x24, 0xF3, 0xBF, 0x5E, 0x92, - 0xC7, 0x0C, 0x05, 0x49, 0xBB, 0x61, 0x2F, 0x48, - 0x0A, 0xEB, 0xE5, 0xFA, 0x8B, 0x01, 0x33, 0x27, - 0x10, 0x3E, 0xA1, 0x28, 0x33, 0x11, 0x30, 0x1F, - 0x91, 0x47, 0x7B, 0xA6, 0x3E, 0xD4, 0xF9, 0xC2, - 0x8F, 0xA3, 0x4E, 0xBC, 0xA7, 0x61, 0x56, 0x1F, - 0x90, 0x33, 0x54, 0x15, 0x06, 0x21, 0x9C, 0x57, - 0x07, 0xC2, 0xF8, 0xED, 0x81, 0xED, 0x36, 0x15, - 0xC8, 0xAC, 0xAB, 0x12, 0x80, 0xBF, 0x7C, 0x5E, - 0x00, 0xEC, 0x1B, 0x27, 0x58, 0x3A, 0xE9, 0x09, - 0x2B, 0x23, 0x16, 0x69, 0x26, 0xF9, 0xCC, 0x3C, - 0x5A, 0xFB, 0x66, 0xBA, 0x32, 0xF9, 0xAF, 0xAB, - 0xCB, 0xA7, 0xF7, 0x91, 0x6A, 0x82, 0x42, 0xA7, - 0x9D, 0x7B, 0x0E, 0xD3, 0x5D, 0xF6, 0x52, 0x6D, - 0x7D, 0x2B, 0xE6, 0x30, 0x99, 0x01, 0xBD, 0xC0, - 0x3D, 0x15, 0x95, 0xC2, 0x67, 0x19, 0xD9, 0x0F, - 0xC0, 0x79, 0x1E, 0xAB, 0xA7, 0x67, 0x35, 0x12, - 0x53, 0xB0, 0x6A, 0xE4, 0xB9, 0x0A, 0x52, 0xEF, - 0xBD, 0xCD, 0xD4, 0x0C, 0x09, 0x6F, 0x24, 0xE9, - 0x52, 0x9F, 0xF8, 0x9F, 0x95, 0x95, 0x57, 0x07, - 0x5F, 0xC8, 0xDD, 0xAF, 0xE6, 0x10, 0x3A, 0x51, - 0x38, 0xF0, 0x9F, 0xBD, 0xEB, 0x0F, 0x5F, 0x36, - 0xB5, 0x2A, 0x57, 0xBE, 0x21, 0x39, 0xD8, 0x9D, - 0x29, 0x04, 0xBC, 0xE2, 0xB8, 0x6D, 0x03, 0xF2, - 0x6D, 0x56, 0xF4, 0x18, 0x40, 0x07, 0x1A, 0x15, - 0x8B, 0xF5, 0x46, 0xE1, 0x0C, 0x4D, 0xED, 0x0E, - 0x81, 0xB0, 0x0D, 0x98, 0x88, 0xC5, 0x5D, 0x53, - 0xE1, 0x1D, 0xB7, 0x00, 0x26, 0xC6, 0x46, 0x7E, - 0xD2, 0xAB, 0x0B, 0xD9, 0x1E, 0xE0, 0xE7, 0xC3, - 0xC3, 0xE0, 0x83, 0x7F, 0x8C, 0xB9, 0xBA, 0xE0, - 0x04, 0xE2, 0xA8, 0xFF, 0xEC, 0xD5, 0x9E, 0x79, - 0x2F, 0x13, 0xF9, 0x27, 0xCA, 0xDD, 0xF5, 0x0F, - 0x74, 0xD2, 0x9B, 0xC6, 0x2E, 0xF2, 0xF0, 0x2A, - 0xB0, 0xF9, 0x6E, 0x27, 0x3E, 0x8D, 0x66, 0xDB, - 0x44, 0x82, 0xDD, 0x1B, 0xD5, 0xBB, 0x51, 0x6E, - 0x72, 0x3A, 0xCB, 0x0F, 0x0B, 0x97, 0xBC, 0x32, - 0x07, 0xC1, 0x0C, 0xF3, 0x94, 0xFF, 0x62, 0xE2, - 0xFD, 0x7D, 0xBB, 0x3D, 0x43, 0x11, 0xB3, 0xFA, - 0x22, 0x05, 0xBF, 0x87, 0x0F, 0xFD, 0xD1, 0x81, - 0xC6, 0x30, 0xC6, 0x91, 0xD4, 0xEE, 0xA8, 0x6B, - 0x37, 0xB2, 0x38, 0xF1, 0x87, 0x89, 0xE0, 0x04, - 0x09, 0xED, 0x18, 0xA6, 0x3C, 0x18, 0x9E, 0x38, - 0xCB, 0x9F, 0xFE, 0xB3, 0x03, 0xF4, 0xE4, 0x3F, - 0xB3, 0x94, 0x7C, 0x74, 0x03, 0x6C, 0xCF, 0x16, - 0x24, 0xF8, 0x56, 0xE2, 0x4A, 0x7E, 0x9A, 0x21, - 0xB8, 0xC2, 0x7C, 0xF4, 0x3D, 0x85, 0x15, 0x43, - 0xA5, 0xCA, 0xFD, 0xA3, 0x05, 0xCC, 0x63, 0x8D, - 0x94, 0x82, 0x70 - }; - static const byte rnd_87[] = { - 0x16, 0xB8, 0x2B, 0x9B, 0x0A, 0x90, 0x5B, 0xB3, - 0xD8, 0x7B, 0x4A, 0x1E, 0x40, 0xAE, 0xAD, 0x3C, - 0xDE, 0x63, 0xB2, 0x2C, 0xB7, 0x16, 0xBD, 0x46, - 0x7A, 0x7B, 0xE8, 0x4A, 0xF1, 0x9B, 0x7C, 0xFE - }; - static const byte sig_87[] = { - 0xE5, 0x5D, 0x62, 0x56, 0x92, 0x73, 0x72, 0x13, - 0xDD, 0x3D, 0x7F, 0x51, 0x42, 0xF3, 0xAA, 0x33, - 0x87, 0x12, 0x2F, 0x20, 0xC9, 0x50, 0x93, 0x0A, - 0x7E, 0x7C, 0xCC, 0x0C, 0x6D, 0x21, 0xB9, 0x5D, - 0x62, 0x47, 0xD5, 0xFB, 0x3A, 0xCC, 0xBC, 0xB8, - 0xA1, 0x5A, 0xDF, 0x97, 0x58, 0xBA, 0x7E, 0x40, - 0x9A, 0x76, 0xD0, 0x1C, 0xBF, 0x0F, 0x14, 0xC3, - 0x23, 0x3B, 0x21, 0xB0, 0x5D, 0x11, 0x3B, 0x1F, - 0x70, 0xCB, 0x21, 0x78, 0x51, 0x68, 0xE2, 0x3A, - 0x29, 0x4A, 0x0D, 0xD0, 0x32, 0x50, 0xDC, 0xBB, - 0xD1, 0xCF, 0x80, 0x19, 0x7A, 0xC7, 0xFC, 0x37, - 0x2D, 0x5A, 0x5A, 0xDF, 0x3E, 0x7E, 0x89, 0x2D, - 0xC6, 0x0E, 0x75, 0x9A, 0xBB, 0xDF, 0x69, 0x82, - 0x28, 0xB6, 0xD0, 0xF3, 0xF4, 0xCB, 0x4F, 0xD5, - 0xDC, 0x5D, 0xFE, 0x8D, 0x01, 0xB4, 0x93, 0x9F, - 0x89, 0x53, 0x18, 0x74, 0x29, 0x20, 0x36, 0xBF, - 0x34, 0xCA, 0x71, 0x2B, 0x01, 0x14, 0xFB, 0x66, - 0x94, 0x28, 0x81, 0xF1, 0xF1, 0x7E, 0x80, 0xB6, - 0x4E, 0x0E, 0x9E, 0x9E, 0x60, 0xD7, 0x6A, 0xFB, - 0x59, 0xC7, 0x96, 0x9F, 0xB4, 0x9C, 0x98, 0x72, - 0x06, 0xC1, 0x6C, 0xAA, 0x8E, 0xC7, 0x48, 0xE6, - 0xC3, 0xAD, 0x8B, 0x4E, 0xF7, 0x81, 0x92, 0x74, - 0xC0, 0x5A, 0x2B, 0x54, 0x8D, 0x47, 0x15, 0xAC, - 0xED, 0x45, 0x69, 0xD0, 0x7C, 0x28, 0x80, 0x18, - 0xA3, 0x9F, 0xB7, 0x14, 0xC6, 0x51, 0xF9, 0x02, - 0x70, 0x98, 0xD9, 0xC1, 0x09, 0xC0, 0xD7, 0xCE, - 0x8B, 0x81, 0x7B, 0x30, 0x99, 0x4C, 0x85, 0x1C, - 0xFA, 0xAE, 0xBF, 0x05, 0x95, 0xBB, 0x6E, 0x01, - 0xE4, 0xFC, 0xE7, 0x11, 0x16, 0x90, 0x28, 0xC3, - 0xC4, 0x36, 0x9F, 0x11, 0xCD, 0xEB, 0xEB, 0x71, - 0x15, 0x08, 0x1D, 0x43, 0x2B, 0x12, 0xA6, 0x4E, - 0xB6, 0xF9, 0x35, 0xE4, 0x37, 0x0D, 0xF7, 0x49, - 0xDF, 0x73, 0x4D, 0xE3, 0x57, 0x33, 0x96, 0x7B, - 0x72, 0x45, 0x2F, 0x92, 0x70, 0xBB, 0x6F, 0xCD, - 0x90, 0x82, 0x67, 0xBB, 0x31, 0x9D, 0x9E, 0x38, - 0x75, 0xCD, 0x5B, 0x55, 0x10, 0x6B, 0xFC, 0x00, - 0x15, 0xC8, 0xCB, 0xFC, 0xE1, 0x18, 0x41, 0xE8, - 0x6E, 0x92, 0xEC, 0x1A, 0x26, 0x88, 0x6C, 0xF6, - 0x2A, 0x5C, 0x05, 0x94, 0xD7, 0xB8, 0xD0, 0x78, - 0x52, 0x68, 0x8D, 0xC5, 0xBD, 0xD6, 0x29, 0xF8, - 0x21, 0xDF, 0xB3, 0x28, 0x43, 0x74, 0xC7, 0x0E, - 0x99, 0xD3, 0x0C, 0xDE, 0xE9, 0x06, 0x44, 0xCD, - 0x77, 0x13, 0x34, 0x82, 0xBA, 0x36, 0x20, 0x71, - 0x02, 0xB1, 0x6E, 0xBA, 0xCF, 0x9F, 0x15, 0x36, - 0xC8, 0xF1, 0x4E, 0x36, 0x30, 0x34, 0x2D, 0x23, - 0x6C, 0x77, 0xEC, 0xCA, 0xBA, 0x7C, 0x17, 0x4F, - 0x3F, 0x22, 0x4A, 0x34, 0xA1, 0x5C, 0xB3, 0x8F, - 0xD8, 0x48, 0xD5, 0x8A, 0x2C, 0x8B, 0x1B, 0xFB, - 0x87, 0xDA, 0xBC, 0xB6, 0xD9, 0x59, 0xD6, 0x9B, - 0xF0, 0x6E, 0x8D, 0xB1, 0x52, 0xE1, 0x8A, 0x36, - 0x31, 0xA7, 0x83, 0xCE, 0xDF, 0x36, 0xEB, 0xBE, - 0xEA, 0xC3, 0xC6, 0xA6, 0x52, 0x2D, 0x89, 0x0B, - 0xF9, 0x5B, 0x1D, 0x14, 0xA9, 0xBF, 0x37, 0x31, - 0xE0, 0x1C, 0xF5, 0x29, 0x95, 0xF0, 0xC0, 0x08, - 0xE8, 0x97, 0xEE, 0x53, 0x27, 0x85, 0x81, 0x7D, - 0x47, 0xE5, 0xAC, 0xC5, 0x1B, 0x48, 0xA5, 0x36, - 0x1E, 0x8A, 0xD7, 0xF5, 0xC9, 0x93, 0x74, 0xCE, - 0x06, 0xEA, 0xC3, 0x26, 0x45, 0xFF, 0xED, 0x39, - 0xC1, 0x0B, 0x7A, 0x59, 0x3C, 0x0F, 0xEE, 0x89, - 0xEF, 0xA4, 0xEC, 0xD0, 0x72, 0x34, 0x95, 0xC9, - 0xC4, 0x78, 0x47, 0xB6, 0xB7, 0xCE, 0xA4, 0xD9, - 0xA1, 0xB6, 0x37, 0xC1, 0xF1, 0xFB, 0x4E, 0x4C, - 0x38, 0xB0, 0x4A, 0xE5, 0x13, 0x63, 0xDC, 0x44, - 0xC4, 0x7E, 0x86, 0x9C, 0xAD, 0x69, 0x29, 0xFD, - 0xA1, 0xFE, 0xAD, 0x3B, 0x59, 0x24, 0x2F, 0x70, - 0xAE, 0x5F, 0x2C, 0x00, 0xFE, 0x01, 0x09, 0xA3, - 0x10, 0x87, 0xF0, 0xAD, 0xFA, 0x9B, 0x83, 0x8F, - 0x48, 0x96, 0x8B, 0x9A, 0x35, 0xE7, 0x4D, 0xAA, - 0xEC, 0xA4, 0xCD, 0x26, 0x7C, 0x3E, 0xAC, 0x93, - 0x26, 0x9D, 0x6B, 0x83, 0x34, 0xC4, 0x71, 0xE1, - 0xC8, 0x93, 0x88, 0x09, 0xAF, 0x00, 0xB5, 0x7F, - 0xD9, 0x5A, 0x8E, 0x36, 0xC1, 0x2E, 0x7E, 0xF1, - 0x0C, 0xC5, 0x2A, 0xB3, 0xE4, 0x48, 0xDF, 0xFB, - 0xFF, 0x99, 0xC9, 0x66, 0xD2, 0x28, 0x46, 0x7C, - 0x43, 0x39, 0x96, 0x69, 0x95, 0x42, 0xAC, 0xE0, - 0xC2, 0x0C, 0x65, 0x99, 0xC8, 0xB0, 0xAE, 0x76, - 0xE8, 0x18, 0x3E, 0xA9, 0x1D, 0x44, 0x81, 0x14, - 0x65, 0xF7, 0xDF, 0xD1, 0xD1, 0x7B, 0x7C, 0x28, - 0xE0, 0x77, 0x9D, 0x79, 0x9C, 0xE4, 0x1A, 0xF1, - 0xD0, 0xFF, 0x8E, 0xEA, 0x58, 0x84, 0xB3, 0x47, - 0xBC, 0xA1, 0x47, 0x48, 0xB7, 0xC3, 0xD5, 0xD1, - 0xF3, 0xDD, 0xA6, 0x3B, 0x15, 0x4C, 0xB3, 0xB5, - 0xFD, 0x52, 0x9D, 0x7E, 0xF0, 0xC7, 0x40, 0x2C, - 0x34, 0xBC, 0xCF, 0x1C, 0x67, 0x30, 0xC0, 0x4D, - 0xA1, 0xC7, 0x5E, 0xAD, 0xAF, 0xCD, 0xFA, 0x21, - 0xE4, 0xB5, 0x33, 0x8B, 0x37, 0x2D, 0xCF, 0x4D, - 0x07, 0x48, 0x61, 0xB0, 0xB6, 0x8B, 0x27, 0x05, - 0xA0, 0x8C, 0x71, 0x95, 0x84, 0x02, 0xB2, 0x1E, - 0x59, 0xBC, 0xB6, 0xE2, 0x2C, 0x3C, 0x20, 0x4C, - 0xDE, 0x1E, 0x35, 0x24, 0xC1, 0x5B, 0x3C, 0xB4, - 0x2A, 0x8C, 0xA7, 0x2D, 0xE3, 0xDC, 0x45, 0x26, - 0x6E, 0x29, 0x52, 0x5D, 0x24, 0x8A, 0xC2, 0x16, - 0x73, 0xDB, 0x80, 0xF2, 0x91, 0xEC, 0x05, 0x3E, - 0x2E, 0x9E, 0x39, 0x12, 0x5E, 0x11, 0x80, 0x24, - 0xF5, 0xFC, 0x86, 0x4C, 0xD9, 0xF9, 0x70, 0x59, - 0xC8, 0xC8, 0x57, 0x5D, 0x0F, 0x68, 0x75, 0x3C, - 0x7A, 0x3D, 0x1B, 0xF7, 0xD0, 0xDF, 0xE2, 0xF9, - 0xBD, 0x44, 0xFD, 0x21, 0x75, 0x86, 0x77, 0x25, - 0xAF, 0xD3, 0x28, 0x55, 0x2A, 0x60, 0x7D, 0x79, - 0x9C, 0x72, 0x2F, 0x6E, 0xAB, 0x2F, 0x26, 0x44, - 0x0C, 0xFF, 0x52, 0xBD, 0xA1, 0xA9, 0x07, 0xBD, - 0x9D, 0x2A, 0x64, 0x2E, 0x0B, 0xA1, 0xB8, 0x78, - 0xD3, 0xC4, 0x84, 0x9A, 0xE1, 0xDB, 0xB4, 0x4A, - 0x4C, 0x45, 0x7A, 0x8E, 0xD5, 0xA3, 0x6B, 0x09, - 0x8D, 0x72, 0x8E, 0x6D, 0x17, 0x34, 0xFF, 0xD6, - 0xED, 0x24, 0x19, 0x7D, 0xC6, 0x2D, 0x5B, 0x82, - 0x68, 0xAE, 0x25, 0x33, 0xBB, 0xCB, 0x7D, 0xFD, - 0x00, 0x15, 0x83, 0xEA, 0xBB, 0xE7, 0x40, 0x3D, - 0x80, 0xD5, 0x9E, 0x6C, 0xE0, 0x3C, 0x7E, 0x3E, - 0x12, 0xC7, 0x36, 0x7E, 0x41, 0x84, 0xE8, 0xB4, - 0x16, 0xCA, 0x4A, 0xB7, 0xEB, 0x16, 0xEC, 0xAB, - 0x5A, 0x69, 0x24, 0x7F, 0x5E, 0x81, 0x86, 0x7D, - 0x30, 0x61, 0x4E, 0x0F, 0x75, 0x39, 0xEE, 0xF2, - 0xF4, 0xDC, 0x5E, 0x23, 0x40, 0xE8, 0x3C, 0xC0, - 0x10, 0xAD, 0x5E, 0xE6, 0x06, 0x8E, 0x5F, 0x55, - 0xC5, 0x69, 0x65, 0x5F, 0xA3, 0x6E, 0x73, 0x86, - 0x82, 0x32, 0x5F, 0x36, 0xA7, 0x6B, 0x2C, 0x26, - 0xCD, 0x64, 0xC8, 0x57, 0x1F, 0x06, 0x7A, 0xAB, - 0x8B, 0xA7, 0xDB, 0x53, 0x48, 0x1A, 0x06, 0x8D, - 0x36, 0xF1, 0x77, 0x74, 0xE6, 0xF5, 0x18, 0x62, - 0x8E, 0x8A, 0xBF, 0xB7, 0x7F, 0x72, 0x44, 0xAC, - 0xC8, 0x9A, 0x0E, 0x60, 0x4B, 0xAB, 0xB2, 0x9E, - 0x95, 0xDF, 0x95, 0x28, 0x98, 0x78, 0xBB, 0xA9, - 0x5D, 0x8E, 0xEE, 0xB4, 0x84, 0xF5, 0x81, 0x7E, - 0xA1, 0x53, 0x3E, 0xBB, 0x43, 0xF6, 0xD4, 0xB7, - 0x60, 0xFD, 0xF4, 0xF8, 0x68, 0xB6, 0x1D, 0x9A, - 0xF7, 0xDA, 0x77, 0xFA, 0xBB, 0x74, 0x44, 0xDE, - 0x7C, 0x32, 0x2D, 0x5C, 0x24, 0xD8, 0x4D, 0xBF, - 0xE0, 0x5C, 0x70, 0x12, 0x3C, 0x43, 0xCC, 0x5F, - 0x00, 0xD5, 0x1F, 0xEA, 0x5D, 0xC9, 0x3A, 0x5C, - 0x32, 0xED, 0xE0, 0xF1, 0x59, 0xA0, 0xB7, 0x71, - 0xDC, 0x65, 0xD2, 0x88, 0x20, 0x20, 0xD8, 0x59, - 0x53, 0x2D, 0x30, 0x2D, 0xFC, 0xA9, 0xEA, 0x45, - 0xB0, 0xF3, 0x1E, 0x66, 0x9F, 0xF6, 0xF1, 0x5E, - 0x9B, 0x67, 0x1D, 0xBF, 0x5E, 0x19, 0xB3, 0x2A, - 0xE8, 0xCE, 0xE5, 0x90, 0xFE, 0x82, 0x5C, 0x19, - 0x7B, 0x84, 0x3E, 0x45, 0xFF, 0x5D, 0xC2, 0x2E, - 0x49, 0x6A, 0xB1, 0x2D, 0x50, 0x2D, 0x21, 0xF7, - 0x2A, 0xA2, 0x39, 0x47, 0x8D, 0xB5, 0x17, 0x64, - 0x3E, 0x96, 0x13, 0x90, 0x53, 0xEA, 0x57, 0x4C, - 0xDB, 0x3D, 0x43, 0xC3, 0xE7, 0xD6, 0x5C, 0x54, - 0x89, 0xDF, 0x6E, 0xF9, 0xE4, 0xC6, 0x64, 0xF0, - 0x88, 0x1C, 0xD0, 0xF6, 0x9D, 0x9E, 0xD7, 0xCD, - 0x2C, 0xFB, 0xCC, 0x54, 0x0E, 0x96, 0xD7, 0x4E, - 0x05, 0xD2, 0xB3, 0x88, 0x85, 0xD8, 0x60, 0xA4, - 0xF2, 0xE4, 0xD7, 0xFF, 0xAF, 0x12, 0x2E, 0xBA, - 0xC4, 0x5A, 0x3A, 0x3E, 0xC5, 0xD7, 0xF3, 0x60, - 0x4F, 0x27, 0xEF, 0xE0, 0x35, 0xAC, 0x4A, 0x8B, - 0x14, 0x7D, 0xC4, 0xEF, 0x61, 0x9A, 0x69, 0x2E, - 0x49, 0x80, 0x04, 0x0C, 0x18, 0xB9, 0x42, 0xC6, - 0x8C, 0x8A, 0x99, 0x43, 0xA6, 0x5A, 0xCD, 0x72, - 0x20, 0xAD, 0xFD, 0x9C, 0xC4, 0xAA, 0xDF, 0x6C, - 0x6C, 0x03, 0xEF, 0x48, 0x3E, 0xFB, 0x4A, 0xBC, - 0xAA, 0x44, 0xEE, 0xC4, 0x25, 0x8F, 0xF9, 0x8A, - 0xC2, 0x24, 0x73, 0x15, 0xFA, 0x0E, 0xCB, 0x00, - 0xEE, 0x9B, 0x39, 0x3F, 0x60, 0x1F, 0x00, 0x95, - 0xCA, 0xFE, 0xC2, 0x2C, 0x35, 0x5F, 0xD9, 0xD1, - 0x29, 0xB5, 0x4D, 0xC1, 0x66, 0x51, 0x8F, 0x17, - 0x3B, 0xF4, 0xF1, 0x49, 0x42, 0x36, 0x0C, 0x5B, - 0x58, 0xF2, 0x9B, 0x59, 0x01, 0xFB, 0x15, 0x7F, - 0x21, 0x90, 0x1F, 0x56, 0x69, 0x8B, 0xE2, 0xA5, - 0x44, 0xCB, 0x84, 0x98, 0x4B, 0x75, 0xA8, 0xCB, - 0x83, 0x0D, 0xE8, 0x1C, 0x91, 0x7F, 0xE4, 0x57, - 0x81, 0x16, 0x34, 0x2F, 0xCE, 0x01, 0xAA, 0x62, - 0x54, 0x44, 0xB7, 0xD6, 0xC7, 0xF1, 0x68, 0x9A, - 0x00, 0x3B, 0x71, 0x16, 0xF9, 0x96, 0x6A, 0x90, - 0x6C, 0x2C, 0x4E, 0x58, 0xBC, 0xDD, 0xE9, 0x3B, - 0x60, 0xB7, 0xA0, 0x97, 0xEE, 0xD6, 0x34, 0xDD, - 0x49, 0x4A, 0xD9, 0x85, 0xD1, 0xB7, 0x95, 0x14, - 0xEC, 0x6A, 0x40, 0xE8, 0x31, 0x80, 0xF1, 0xD8, - 0x5F, 0x75, 0xF6, 0x92, 0x3A, 0x4F, 0xCD, 0x0A, - 0x6E, 0xBF, 0xA1, 0x27, 0x48, 0x79, 0x27, 0x04, - 0x76, 0x2C, 0xAB, 0x25, 0x06, 0xEB, 0x43, 0xDD, - 0x1B, 0x4B, 0x24, 0xFC, 0x93, 0x51, 0x1C, 0x45, - 0xF6, 0xAE, 0x77, 0xCF, 0xC9, 0xE6, 0x20, 0xE4, - 0xA5, 0x2B, 0x3D, 0x7D, 0xF0, 0xEB, 0x51, 0x7C, - 0xCA, 0xFE, 0x58, 0xBA, 0xC4, 0x07, 0x95, 0x75, - 0x62, 0x0C, 0x50, 0x68, 0x88, 0x1A, 0x8A, 0x0D, - 0x1B, 0x5C, 0x53, 0x1A, 0x9C, 0xA8, 0x4E, 0xFE, - 0x63, 0x9B, 0xDB, 0x05, 0x70, 0x01, 0x75, 0xA1, - 0x3A, 0x08, 0xFA, 0x51, 0xD5, 0xF6, 0x81, 0xDE, - 0x69, 0xE5, 0x40, 0xB3, 0xF8, 0x7C, 0x46, 0x97, - 0xA6, 0x4E, 0xA8, 0x51, 0x47, 0x9C, 0xB9, 0x25, - 0xCD, 0x4E, 0xED, 0xFC, 0xEE, 0x03, 0x6A, 0xCD, - 0x93, 0x65, 0xB3, 0x68, 0x09, 0x6F, 0xE8, 0x00, - 0x6A, 0x3F, 0xBF, 0xE8, 0x6F, 0x09, 0xE9, 0xF2, - 0x6F, 0x44, 0x2E, 0xB1, 0x81, 0x76, 0x04, 0xDD, - 0x6E, 0xF4, 0x93, 0x61, 0xE5, 0x78, 0xD4, 0xDA, - 0xBF, 0x05, 0xA1, 0xF4, 0x9D, 0xFD, 0x57, 0x06, - 0x9C, 0x13, 0x45, 0x97, 0xF2, 0x48, 0xE6, 0x1A, - 0xB5, 0xAD, 0x09, 0x11, 0x04, 0xBB, 0xA0, 0xA8, - 0xA3, 0xA3, 0x33, 0xCD, 0x42, 0x2C, 0x66, 0xC2, - 0x94, 0x80, 0x15, 0x9D, 0x56, 0x74, 0x02, 0xEE, - 0xA7, 0xE4, 0x90, 0xDD, 0xFB, 0x0B, 0x3B, 0xF0, - 0x7A, 0x02, 0x44, 0xE8, 0x11, 0xC4, 0x3A, 0xFE, - 0x73, 0x2A, 0x4C, 0x92, 0x3C, 0x23, 0x37, 0x8B, - 0x4F, 0x28, 0x8E, 0x1C, 0x4E, 0x7D, 0x0D, 0x6B, - 0xFD, 0x20, 0xB5, 0x93, 0xB3, 0x75, 0x30, 0x28, - 0xC7, 0x7E, 0x67, 0xC4, 0xDE, 0xDA, 0x27, 0xA9, - 0xE3, 0xF2, 0xF5, 0x25, 0x98, 0x5F, 0x6B, 0xBE, - 0x11, 0x80, 0x23, 0x49, 0x30, 0xC8, 0x8A, 0x63, - 0xF9, 0xC4, 0x14, 0x77, 0x2A, 0xE2, 0x21, 0x42, - 0x28, 0x1C, 0xEB, 0x9F, 0x7B, 0x70, 0xA8, 0x2B, - 0xFB, 0x25, 0x36, 0xA6, 0xAC, 0xFE, 0x8E, 0xFF, - 0xB6, 0x86, 0x09, 0x15, 0x7E, 0xD9, 0x26, 0x8F, - 0xDB, 0xF2, 0x2D, 0xC2, 0xFA, 0xAE, 0xDA, 0x50, - 0xF6, 0x24, 0x53, 0xDB, 0xBF, 0x92, 0x9D, 0x7E, - 0x48, 0xCC, 0x75, 0xAC, 0xD0, 0xD3, 0x45, 0x09, - 0x2F, 0x01, 0x60, 0xBB, 0xAE, 0xCB, 0xE6, 0xB3, - 0x30, 0xDA, 0xD9, 0xB6, 0x12, 0xCD, 0xF5, 0x11, - 0xCF, 0x2B, 0x2A, 0xC6, 0x61, 0x9A, 0x05, 0x59, - 0x08, 0x58, 0x64, 0xEC, 0xDB, 0x77, 0xCF, 0x64, - 0xE2, 0x4B, 0x6E, 0xF4, 0x07, 0x68, 0x5E, 0xE9, - 0x31, 0xB1, 0x38, 0x67, 0xF9, 0x29, 0x2E, 0x7A, - 0xD2, 0x03, 0xA6, 0x29, 0x3F, 0x22, 0x58, 0x66, - 0x6A, 0x07, 0xD8, 0xFD, 0xC5, 0x03, 0xEE, 0x66, - 0xD4, 0x66, 0x70, 0x6D, 0xA4, 0xC4, 0xA1, 0xEE, - 0xCD, 0x4D, 0xFA, 0x3C, 0x34, 0x36, 0xC2, 0xC5, - 0x1E, 0x86, 0xB8, 0x7B, 0x7C, 0xBC, 0x67, 0x16, - 0xF3, 0x6E, 0xF2, 0xB7, 0xEA, 0x96, 0x1B, 0x0D, - 0xA2, 0xC8, 0x42, 0xBF, 0x30, 0x09, 0x2A, 0x6D, - 0x9D, 0x35, 0xB3, 0x92, 0xBA, 0x3E, 0xE2, 0xE9, - 0xE2, 0xAA, 0x90, 0x70, 0xCE, 0x0F, 0x07, 0xFA, - 0x7C, 0x3B, 0xF7, 0x66, 0x7F, 0x5C, 0xFE, 0xD9, - 0x72, 0x1C, 0x4E, 0xFE, 0x7E, 0x86, 0x8E, 0x7F, - 0x62, 0x8D, 0x41, 0x46, 0x7B, 0x43, 0x17, 0xB9, - 0x44, 0xED, 0x39, 0x1B, 0x3E, 0xF9, 0x2D, 0xC7, - 0x5C, 0x9D, 0xAC, 0x05, 0x00, 0xC6, 0x85, 0x4E, - 0xB8, 0xBC, 0x29, 0xDF, 0x6D, 0x6A, 0xCC, 0xEB, - 0xD6, 0x44, 0x86, 0xAA, 0xC9, 0x55, 0x49, 0xA1, - 0x3F, 0x59, 0x5E, 0xAF, 0xD5, 0xC9, 0x96, 0x19, - 0x84, 0xC0, 0x4D, 0x1B, 0xE5, 0x2C, 0x42, 0x8D, - 0x2C, 0xC8, 0x83, 0x00, 0x26, 0xBF, 0x46, 0x9F, - 0x20, 0x97, 0xEC, 0x2C, 0xA9, 0x2C, 0xF0, 0xA7, - 0x11, 0xED, 0xE2, 0xA2, 0x57, 0x83, 0x40, 0x92, - 0xF3, 0x58, 0xB7, 0x4E, 0xD6, 0x3A, 0x9D, 0xF0, - 0xDD, 0xD4, 0x5F, 0x82, 0x58, 0xD3, 0x72, 0x05, - 0x69, 0xFF, 0x1E, 0xBC, 0x74, 0x90, 0x87, 0xB5, - 0x7A, 0xEE, 0xF8, 0xCE, 0x3F, 0x59, 0xE1, 0xC0, - 0x46, 0x24, 0xF8, 0x9D, 0x93, 0x51, 0x4A, 0x44, - 0xFB, 0xEA, 0x58, 0xA6, 0xAC, 0x9A, 0x7C, 0xA3, - 0x11, 0xA3, 0x47, 0x44, 0x24, 0x11, 0xF5, 0x56, - 0x1A, 0x3B, 0xCF, 0xEC, 0xD9, 0x2B, 0x6C, 0xBA, - 0xA6, 0xA2, 0x67, 0xB9, 0xE0, 0xCB, 0x3F, 0x8D, - 0xA8, 0xC4, 0x8A, 0x45, 0xAB, 0xE2, 0x10, 0x19, - 0x10, 0xC9, 0xDB, 0x01, 0x64, 0xC0, 0x0B, 0x6F, - 0x3B, 0xA1, 0xE9, 0xEB, 0x74, 0x9A, 0x63, 0x93, - 0xE5, 0x74, 0x3F, 0xD3, 0x7B, 0xEA, 0x8C, 0xD6, - 0x7D, 0x66, 0xDD, 0x90, 0x6C, 0x69, 0x67, 0x05, - 0xAD, 0x70, 0xF1, 0xFA, 0x52, 0xBB, 0xD5, 0x3D, - 0x0E, 0x7E, 0x87, 0xE0, 0x98, 0xAF, 0xA6, 0xE6, - 0x0E, 0x25, 0x91, 0x70, 0xCA, 0x36, 0xE4, 0xF8, - 0xF7, 0x95, 0x1C, 0x48, 0xF6, 0x62, 0x9A, 0x4D, - 0xE4, 0xE7, 0x3A, 0x92, 0xC6, 0x2E, 0xAB, 0x8A, - 0x75, 0x7C, 0x45, 0xDA, 0x54, 0xB1, 0x6D, 0x2E, - 0xCC, 0x13, 0x46, 0x67, 0x8F, 0xFF, 0xDA, 0x18, - 0xE1, 0x4C, 0xE4, 0x6A, 0xB6, 0xAC, 0x65, 0x32, - 0x0C, 0x63, 0xD5, 0x43, 0xB5, 0x8B, 0xB1, 0x52, - 0xEE, 0x0C, 0xBB, 0x62, 0x34, 0x30, 0xDB, 0xF7, - 0x08, 0xC6, 0xE8, 0x5B, 0x07, 0x66, 0x6D, 0x4B, - 0x39, 0xC6, 0x94, 0x2B, 0x22, 0x9E, 0x3E, 0x45, - 0x62, 0x3D, 0x05, 0x03, 0x2B, 0x16, 0x71, 0xBB, - 0x85, 0x1B, 0x6E, 0x84, 0xD3, 0x48, 0x4D, 0x63, - 0x26, 0x60, 0x97, 0x45, 0xB8, 0xEA, 0x43, 0x96, - 0x00, 0xFE, 0x0B, 0x85, 0xBD, 0x22, 0x40, 0xA4, - 0xA7, 0x2F, 0xC1, 0xEB, 0xFD, 0xB5, 0x22, 0xD5, - 0x1F, 0xB3, 0xEA, 0x7C, 0x6D, 0x20, 0xFB, 0x98, - 0xA5, 0xF2, 0x84, 0x70, 0xF7, 0xB9, 0x2A, 0x12, - 0x63, 0x0C, 0x2D, 0x97, 0x6C, 0xC2, 0x76, 0xAC, - 0x32, 0xE2, 0xB1, 0x3A, 0xB3, 0xAB, 0x9E, 0xBB, - 0x61, 0xB4, 0x6A, 0x5F, 0x2D, 0x4D, 0xCE, 0x0D, - 0xFB, 0x97, 0x80, 0x89, 0x4A, 0x81, 0xFB, 0xB2, - 0x72, 0x37, 0x66, 0xB9, 0x08, 0xBF, 0xCD, 0x9F, - 0x63, 0xB2, 0xBA, 0x54, 0xF1, 0x9E, 0xEC, 0x11, - 0x67, 0x26, 0xC7, 0x98, 0xDD, 0xA3, 0xC5, 0x50, - 0x86, 0x17, 0xD5, 0xCF, 0x51, 0x97, 0x22, 0x65, - 0x2B, 0x71, 0xF7, 0x34, 0x84, 0x55, 0xC9, 0xD1, - 0xFE, 0x75, 0x42, 0x0A, 0x5A, 0x31, 0x59, 0xE8, - 0x8A, 0x0D, 0xE5, 0x77, 0x1C, 0xF5, 0xFD, 0x27, - 0x05, 0x05, 0xF7, 0x28, 0xDA, 0x54, 0xAB, 0xBD, - 0xDC, 0x50, 0xB8, 0xDB, 0x2E, 0xB4, 0x28, 0x41, - 0x30, 0x04, 0x40, 0xD5, 0xF0, 0x12, 0xD7, 0x16, - 0x3D, 0x8F, 0x41, 0xE7, 0x70, 0x76, 0x82, 0xB9, - 0xC4, 0xB2, 0x1F, 0x57, 0x10, 0xB6, 0xC4, 0x84, - 0x0D, 0xB1, 0xB8, 0x21, 0xB2, 0x77, 0x09, 0xF6, - 0xD5, 0x9C, 0xE4, 0xA2, 0xFA, 0x83, 0x13, 0x56, - 0x94, 0x3F, 0x37, 0x6D, 0x0D, 0x7C, 0x7E, 0xA0, - 0xE5, 0xC8, 0xD9, 0x42, 0x0F, 0x35, 0xB1, 0xDC, - 0xB9, 0x49, 0xD5, 0xED, 0xA8, 0x90, 0x09, 0x14, - 0xAE, 0x63, 0xB5, 0xEA, 0x62, 0x0D, 0x9E, 0x6D, - 0x93, 0xBD, 0x3A, 0xEA, 0x24, 0xB5, 0xAC, 0xC9, - 0xD1, 0x7B, 0xBC, 0xC6, 0xC4, 0xBA, 0x68, 0xB1, - 0x65, 0xFE, 0xAB, 0x30, 0xD4, 0x92, 0xD9, 0xC1, - 0x94, 0x84, 0xE1, 0x20, 0x4E, 0x28, 0x7C, 0x3A, - 0x3E, 0x8B, 0x44, 0x79, 0xC7, 0xB5, 0xA5, 0x95, - 0xC2, 0xC9, 0xA8, 0x3F, 0x92, 0x67, 0x06, 0x9A, - 0x12, 0xD3, 0xAE, 0x78, 0x87, 0x0E, 0x31, 0x54, - 0x26, 0xDF, 0x97, 0xEB, 0x6C, 0xF3, 0xC9, 0x53, - 0x39, 0xED, 0x50, 0x5A, 0xF9, 0x6A, 0x03, 0x27, - 0x8E, 0xC6, 0x79, 0x5B, 0xD4, 0xD3, 0x57, 0x97, - 0xFD, 0xF5, 0xCB, 0x14, 0xDB, 0xBE, 0x39, 0xB9, - 0x64, 0x8A, 0x75, 0xAA, 0xE3, 0x4A, 0x19, 0x59, - 0x69, 0x7D, 0xF8, 0x7D, 0x8C, 0xB8, 0x2F, 0x32, - 0x57, 0xBF, 0x84, 0x9E, 0x45, 0x4E, 0xC4, 0xA0, - 0x65, 0xA4, 0x0B, 0x73, 0x36, 0xC5, 0xD1, 0x07, - 0xF8, 0x1C, 0x91, 0x07, 0xB8, 0x0B, 0x4B, 0xE5, - 0x4F, 0xE6, 0xA1, 0xDF, 0x29, 0x03, 0xE7, 0x68, - 0xA4, 0x32, 0x8E, 0x21, 0x8F, 0x15, 0x51, 0x57, - 0x65, 0x16, 0xF0, 0x55, 0x71, 0x8C, 0x28, 0xD8, - 0x82, 0xDC, 0x8A, 0xC1, 0xE7, 0x5C, 0xF2, 0xD5, - 0xB8, 0x18, 0x16, 0x9F, 0x63, 0x89, 0x21, 0xF1, - 0xA6, 0xED, 0x21, 0xDA, 0xC8, 0x0A, 0x10, 0x21, - 0x18, 0x98, 0xD0, 0xF2, 0x9E, 0xDE, 0x5A, 0xA1, - 0x51, 0xC9, 0x18, 0x3B, 0x68, 0x79, 0x75, 0xE7, - 0xF4, 0xF9, 0xBF, 0x5F, 0xBE, 0x61, 0x35, 0xA9, - 0x02, 0x56, 0x2D, 0x99, 0xD8, 0x95, 0xFA, 0x78, - 0x8A, 0x67, 0x24, 0x1D, 0xDF, 0x13, 0x14, 0xD0, - 0xB4, 0xB6, 0x21, 0x11, 0xB7, 0xA4, 0x06, 0x8D, - 0x1D, 0xF6, 0xD5, 0x50, 0x2A, 0x0A, 0x42, 0x3C, - 0x7C, 0xF1, 0x1F, 0x15, 0x1C, 0x81, 0x69, 0xDA, - 0xCC, 0xAC, 0x8F, 0xB9, 0x08, 0x4E, 0xF8, 0x4E, - 0x3E, 0x77, 0x26, 0x4A, 0x1F, 0x72, 0x89, 0xCA, - 0x91, 0x77, 0x99, 0xBF, 0x28, 0xD2, 0x31, 0x65, - 0x30, 0x37, 0x84, 0x66, 0x8A, 0x1C, 0xC6, 0x59, - 0x7D, 0x48, 0x9B, 0x4D, 0xDC, 0x87, 0x4F, 0xD2, - 0x04, 0xA0, 0x8B, 0x8B, 0x37, 0x3B, 0x1A, 0xDB, - 0xCF, 0x63, 0x39, 0x07, 0xF3, 0x37, 0xCF, 0x0E, - 0x2F, 0xEB, 0xE6, 0x2A, 0xA1, 0x4C, 0xE0, 0x75, - 0x3F, 0xAB, 0xF7, 0xDE, 0x48, 0x83, 0x79, 0x89, - 0x30, 0xA7, 0x1B, 0xE8, 0x73, 0x8E, 0x9D, 0x1D, - 0xF6, 0x5C, 0x91, 0x4F, 0x44, 0x7C, 0x04, 0xA7, - 0x07, 0xC8, 0xCC, 0x4A, 0x5C, 0x81, 0xAD, 0x48, - 0x7C, 0xE5, 0x19, 0x5A, 0xC4, 0x29, 0x80, 0x14, - 0xFA, 0xC2, 0x26, 0x1C, 0x50, 0x28, 0xB9, 0xF6, - 0x7F, 0x8D, 0x51, 0x9A, 0xDA, 0xBB, 0x8E, 0x90, - 0xBA, 0x3B, 0xD9, 0x4D, 0x61, 0xBE, 0xFD, 0x33, - 0xC0, 0xCA, 0x7B, 0x09, 0xFF, 0x36, 0x84, 0x70, - 0x11, 0xB4, 0xBE, 0x81, 0xFE, 0x71, 0xEE, 0x81, - 0xD7, 0x61, 0xBB, 0x83, 0xA6, 0xA0, 0xDC, 0x20, - 0x04, 0x02, 0x4C, 0x1B, 0x4D, 0xED, 0x8A, 0xC1, - 0x38, 0x70, 0xC3, 0x69, 0xC9, 0x50, 0xC2, 0x17, - 0x64, 0xAD, 0x9D, 0x44, 0x63, 0x44, 0xE5, 0x32, - 0x7B, 0x90, 0xE3, 0xEF, 0x45, 0x28, 0xA6, 0x23, - 0x92, 0xCB, 0xA1, 0xFC, 0xA8, 0xB4, 0x39, 0xF1, - 0xB1, 0x00, 0x1F, 0x06, 0xD4, 0x91, 0x5D, 0xDB, - 0xAC, 0x7D, 0x87, 0xD4, 0xEE, 0xCD, 0x4A, 0x06, - 0x3E, 0xB4, 0x84, 0x65, 0xAA, 0x47, 0x05, 0x41, - 0x7C, 0x95, 0x47, 0x3A, 0x49, 0x80, 0xC5, 0xAC, - 0x32, 0x41, 0x6A, 0x3A, 0x2B, 0xB9, 0xD9, 0x21, - 0x80, 0xC7, 0xC1, 0xD0, 0xC9, 0x95, 0x4B, 0xC3, - 0xEA, 0x0D, 0x3F, 0x0E, 0xE4, 0x5A, 0xD8, 0xBD, - 0x11, 0xD0, 0x76, 0x6D, 0x3C, 0xA7, 0x64, 0xD8, - 0xCA, 0x4C, 0x8F, 0x58, 0x2C, 0xDD, 0x95, 0x1F, - 0xBB, 0x76, 0x8D, 0x10, 0xFD, 0xAD, 0x45, 0xCE, - 0x71, 0x6E, 0x27, 0x92, 0xC4, 0xA6, 0x17, 0x46, - 0x95, 0xDB, 0xD8, 0xEA, 0x9A, 0x5F, 0x0E, 0xE0, - 0x0A, 0xA2, 0xF5, 0x79, 0xC3, 0x74, 0xA7, 0x70, - 0x99, 0x3B, 0x23, 0xD7, 0x3E, 0xA4, 0x96, 0xB5, - 0x54, 0x77, 0x71, 0x8D, 0x78, 0x2E, 0xCC, 0x0A, - 0x4E, 0xF8, 0xA9, 0x96, 0xEE, 0xB4, 0x4B, 0x5B, - 0xDC, 0x52, 0x6D, 0xE1, 0x61, 0x36, 0xE1, 0x32, - 0xD6, 0xA2, 0x7B, 0x2E, 0xCC, 0x78, 0x92, 0xA1, - 0x81, 0x59, 0xB8, 0xC7, 0x04, 0x11, 0x3D, 0xF0, - 0xF9, 0xF9, 0x3E, 0x47, 0x3C, 0xEA, 0xD5, 0x30, - 0x2D, 0xAE, 0xC0, 0x47, 0xC8, 0x61, 0xCC, 0x9C, - 0x2E, 0xC0, 0x40, 0x16, 0x11, 0x73, 0x13, 0xF3, - 0x19, 0xAE, 0x72, 0x44, 0x72, 0xC5, 0x59, 0x51, - 0x2E, 0x9F, 0xE3, 0x07, 0xB0, 0xCA, 0x6B, 0xB0, - 0x15, 0x20, 0xB4, 0x25, 0x00, 0xED, 0xFD, 0xAC, - 0xD6, 0x34, 0x8B, 0xCA, 0xE8, 0xC6, 0x3B, 0xFD, - 0x02, 0x22, 0xE6, 0x91, 0x2B, 0x4B, 0x61, 0xDF, - 0x63, 0x5C, 0x2B, 0x5F, 0x82, 0x07, 0x23, 0x59, - 0x82, 0x5E, 0x0E, 0x21, 0xF7, 0x9C, 0x37, 0x1C, - 0x7E, 0x6F, 0xD4, 0xFA, 0x91, 0x40, 0x8B, 0x98, - 0x68, 0xBD, 0x60, 0x2F, 0x0A, 0xC8, 0xC8, 0x99, - 0xA1, 0xC6, 0x10, 0xF1, 0x27, 0x53, 0xD3, 0xFB, - 0x23, 0x02, 0xE7, 0x8E, 0x95, 0xB1, 0xF0, 0x21, - 0xCB, 0x90, 0xEE, 0x8D, 0xE0, 0x27, 0x57, 0xDE, - 0x40, 0xA3, 0xE7, 0x8F, 0x61, 0xC1, 0x8F, 0xC5, - 0x0C, 0x0F, 0xBA, 0x05, 0xA0, 0x58, 0x8E, 0x86, - 0x8A, 0xF5, 0x72, 0xE1, 0x34, 0xB4, 0xF6, 0x8E, - 0x6E, 0xA4, 0x21, 0x75, 0x43, 0x73, 0xE7, 0x32, - 0x72, 0x80, 0x9B, 0xE7, 0x1D, 0x78, 0x8F, 0x0D, - 0x06, 0x47, 0x9E, 0x4D, 0xB4, 0xAC, 0x3E, 0x0D, - 0xB8, 0x11, 0x23, 0xFF, 0xAD, 0xB9, 0x23, 0xE0, - 0xA4, 0x37, 0xA6, 0x3D, 0xC2, 0x15, 0xF4, 0x64, - 0x03, 0x1F, 0x0A, 0x68, 0xED, 0x37, 0x37, 0xE8, - 0x3E, 0x5B, 0x49, 0x78, 0xFC, 0xFC, 0x12, 0x06, - 0xE8, 0xC7, 0xCD, 0x3A, 0xAF, 0xD4, 0x54, 0xA7, - 0x04, 0x7B, 0xFC, 0x66, 0xA6, 0xA8, 0x1C, 0x38, - 0x0C, 0x26, 0x08, 0xE6, 0xEE, 0x47, 0x25, 0x80, - 0x59, 0xA5, 0x39, 0x81, 0x20, 0xEE, 0x5F, 0x49, - 0x9A, 0x01, 0x37, 0xE9, 0x96, 0x18, 0xD0, 0x05, - 0x2D, 0xE3, 0x73, 0xD5, 0x08, 0x3B, 0x18, 0x46, - 0xFE, 0x9E, 0x67, 0x5B, 0x9E, 0xF8, 0x53, 0x05, - 0x2F, 0x96, 0x18, 0x9C, 0x09, 0x0D, 0xA6, 0x05, - 0xB3, 0x9E, 0x2F, 0x0B, 0x5A, 0xF3, 0x93, 0xFF, - 0x29, 0xF3, 0x4F, 0x62, 0xD5, 0x9A, 0xCE, 0x74, - 0x64, 0xD0, 0xBC, 0xB3, 0x08, 0xF1, 0xD3, 0x22, - 0xA5, 0xBE, 0x64, 0x0A, 0xEB, 0xA5, 0xF5, 0x1B, - 0x7E, 0x0A, 0x44, 0x3B, 0x1D, 0xA9, 0x48, 0x9A, - 0x2F, 0xED, 0x05, 0x0F, 0x44, 0xB3, 0x6D, 0xAD, - 0x39, 0x2C, 0xBA, 0x8E, 0x2B, 0xDE, 0x17, 0x38, - 0xD1, 0x69, 0xEA, 0xAE, 0x4E, 0x97, 0xCD, 0x61, - 0xBA, 0x75, 0x39, 0xF2, 0x81, 0xBB, 0xA9, 0x0F, - 0x6F, 0x82, 0xD4, 0xCB, 0xE4, 0x93, 0x82, 0x11, - 0x72, 0x9A, 0xE9, 0x87, 0xEC, 0xCC, 0x6D, 0xA1, - 0x7D, 0x47, 0x60, 0x20, 0xB6, 0xEE, 0xC6, 0xAA, - 0xC0, 0x3C, 0x95, 0x08, 0xA0, 0x8B, 0xFA, 0x04, - 0xF6, 0x6F, 0x65, 0x48, 0xCA, 0xA7, 0xA3, 0xA8, - 0xBB, 0x3B, 0x80, 0x91, 0xB6, 0x6D, 0x2F, 0x9D, - 0x97, 0xBB, 0x52, 0xE6, 0xC4, 0x24, 0x99, 0x97, - 0x63, 0xAD, 0xD2, 0xFD, 0xB3, 0x94, 0x6D, 0xC1, - 0xFB, 0xFA, 0x89, 0x45, 0x78, 0x80, 0x3C, 0xAA, - 0x3F, 0xC0, 0x7E, 0x8D, 0x37, 0x00, 0xA7, 0x70, - 0xD6, 0x57, 0x2A, 0xD3, 0x17, 0xB1, 0x9E, 0xDF, - 0x96, 0x98, 0x40, 0xB8, 0x1C, 0xCC, 0xC6, 0xCD, - 0xCD, 0xB0, 0xF3, 0x23, 0x53, 0xB6, 0x45, 0x78, - 0xA6, 0xA0, 0x88, 0x61, 0x06, 0x04, 0x8E, 0x1B, - 0xCD, 0x12, 0x29, 0x50, 0x0F, 0xD2, 0x8C, 0x89, - 0x51, 0xD1, 0x74, 0x0B, 0xE3, 0xA7, 0x75, 0x8A, - 0x60, 0x95, 0xEF, 0x6A, 0x98, 0xC7, 0x35, 0xA5, - 0xC0, 0xFB, 0x4C, 0x88, 0xA1, 0xDA, 0xCE, 0x79, - 0x3D, 0x4E, 0x4F, 0x91, 0x75, 0x88, 0xE0, 0x5F, - 0x17, 0xF5, 0xEF, 0xF8, 0x49, 0xFE, 0xB1, 0xDB, - 0x0D, 0xE8, 0xB2, 0xF7, 0xD4, 0x90, 0xBD, 0xB0, - 0x6B, 0x3A, 0x1B, 0xB5, 0xC6, 0xFB, 0x93, 0xEF, - 0xF3, 0xDD, 0x60, 0xEA, 0x67, 0x11, 0xFE, 0x6A, - 0xCC, 0x2C, 0x64, 0x2A, 0x85, 0x2E, 0x24, 0x39, - 0x34, 0x6B, 0xBC, 0xF8, 0x89, 0xB3, 0x49, 0x82, - 0x9C, 0xC0, 0x04, 0x29, 0x6D, 0x25, 0xCB, 0x19, - 0xE1, 0x53, 0xC6, 0x10, 0x7D, 0x62, 0x07, 0xD2, - 0x83, 0x8B, 0x89, 0x04, 0x70, 0x06, 0x60, 0x4F, - 0xB6, 0x10, 0x2B, 0xA0, 0x92, 0xF4, 0x1A, 0x7A, - 0xD6, 0x4F, 0xDC, 0x6C, 0x6C, 0x27, 0xE5, 0xEC, - 0x68, 0x1B, 0x95, 0x7C, 0x1C, 0x95, 0x2C, 0xB7, - 0x0A, 0x8D, 0xC7, 0x57, 0x92, 0x00, 0x4D, 0xC0, - 0x5F, 0xD4, 0xF4, 0x88, 0x3F, 0x8D, 0x43, 0x12, - 0x05, 0xE2, 0x14, 0x0E, 0xDD, 0x2C, 0xEC, 0xD5, - 0x2F, 0x1A, 0xE6, 0x97, 0xDC, 0xFE, 0x96, 0x80, - 0x67, 0x3B, 0xD4, 0x63, 0x73, 0xFA, 0xC8, 0x4F, - 0x4C, 0x4F, 0x2D, 0x68, 0x76, 0x44, 0x8E, 0xC2, - 0x19, 0x99, 0x44, 0xEA, 0xF2, 0x33, 0x23, 0x83, - 0xC8, 0xB1, 0x7C, 0x27, 0x43, 0x9B, 0x67, 0xF9, - 0xDE, 0xE1, 0xAE, 0x03, 0xA5, 0xA5, 0x2B, 0x96, - 0xB2, 0xEC, 0x4A, 0x43, 0xA7, 0x6D, 0xF4, 0xDB, - 0x32, 0x5B, 0x54, 0xD6, 0x63, 0xEA, 0x65, 0xC2, - 0xA8, 0x4B, 0x80, 0xCC, 0x65, 0x2D, 0xCE, 0x6F, - 0x61, 0x2F, 0x58, 0xD1, 0xE5, 0x64, 0x8A, 0x42, - 0x8D, 0xBA, 0xFA, 0x35, 0x5C, 0x9E, 0xD5, 0x80, - 0x2D, 0x5C, 0xC3, 0x47, 0xFB, 0x0D, 0x43, 0x20, - 0x7A, 0xA4, 0x37, 0xB2, 0x2F, 0x0B, 0x43, 0xB9, - 0x94, 0xD3, 0xD9, 0xC2, 0xD7, 0x02, 0x5D, 0x6A, - 0x12, 0x99, 0xE7, 0x32, 0x6C, 0xF0, 0x0C, 0x73, - 0x51, 0x33, 0x84, 0xA9, 0x0C, 0x66, 0xC9, 0x19, - 0x88, 0x9A, 0xF1, 0xB6, 0xF8, 0x41, 0xB1, 0xDC, - 0x60, 0xA4, 0x80, 0x73, 0x0B, 0x21, 0xF9, 0xB8, - 0x01, 0x7E, 0x66, 0x0D, 0xB4, 0x2B, 0x53, 0x8D, - 0x7D, 0x0B, 0xE1, 0xA3, 0x0C, 0x27, 0xF6, 0x2F, - 0x27, 0x34, 0x53, 0x75, 0x54, 0xF7, 0x5E, 0x05, - 0x1C, 0x5A, 0x94, 0x08, 0x14, 0xDE, 0xAA, 0x98, - 0xD9, 0xA5, 0xA0, 0xBE, 0x80, 0xC1, 0xEB, 0x3C, - 0xCF, 0x78, 0x88, 0xA4, 0xA2, 0x03, 0xF8, 0x79, - 0x1F, 0x84, 0x84, 0xA7, 0x0E, 0x95, 0x1A, 0x85, - 0xEF, 0x4C, 0xBE, 0xA2, 0x99, 0xAB, 0x10, 0xDD, - 0x85, 0x3F, 0x10, 0x6A, 0x9C, 0xD5, 0xDD, 0x7A, - 0xFB, 0xF5, 0xD9, 0xD9, 0xAA, 0xDF, 0x03, 0x78, - 0xAF, 0x1D, 0xEC, 0x18, 0xEB, 0x00, 0xB6, 0x64, - 0xB5, 0x75, 0xA5, 0x00, 0xDC, 0x36, 0x45, 0xBD, - 0x0C, 0x66, 0xCE, 0xA9, 0xBB, 0xD1, 0xF7, 0xE4, - 0x6A, 0xDA, 0x0E, 0x81, 0x0F, 0x6A, 0x71, 0x60, - 0x5C, 0x41, 0xD2, 0x12, 0x45, 0x14, 0xEF, 0x6F, - 0xEC, 0x22, 0x73, 0x4C, 0xA7, 0x94, 0xDD, 0x1A, - 0x42, 0x22, 0x58, 0x14, 0x0C, 0x4E, 0x6D, 0x77, - 0x7F, 0xF5, 0xC9, 0x69, 0x81, 0xA3, 0xB8, 0x6D, - 0x1C, 0x39, 0x47, 0xA5, 0xC4, 0x61, 0x1C, 0x91, - 0x2F, 0x67, 0xC3, 0x5E, 0x87, 0x1A, 0x85, 0x81, - 0x7D, 0x76, 0xF2, 0xE0, 0xB9, 0xD0, 0x43, 0x33, - 0xF1, 0xC1, 0xBA, 0x48, 0x6F, 0x48, 0xD5, 0xAE, - 0xB6, 0xDC, 0xAA, 0xCA, 0xEB, 0x0B, 0x6B, 0xFE, - 0xF4, 0xF1, 0x6E, 0x5D, 0xE4, 0x90, 0x53, 0xCF, - 0x9E, 0x13, 0x80, 0xCE, 0xE5, 0xDD, 0xA4, 0x01, - 0xBC, 0x16, 0x50, 0xD0, 0x78, 0x96, 0x3F, 0x2B, - 0x7A, 0x71, 0x8E, 0x86, 0xFD, 0x14, 0x21, 0xDF, - 0x4D, 0xD7, 0xDD, 0x42, 0x59, 0xB3, 0xED, 0x81, - 0xE3, 0xAF, 0x71, 0x57, 0xE7, 0x04, 0xD2, 0x26, - 0xA8, 0x83, 0xFC, 0x03, 0x90, 0x8C, 0x88, 0xC4, - 0xBF, 0x74, 0x54, 0x59, 0xD8, 0x66, 0x9F, 0xE2, - 0x7A, 0xCE, 0x5B, 0x9C, 0xC4, 0x37, 0xFA, 0xDB, - 0x40, 0x9A, 0xDD, 0x73, 0x9C, 0x06, 0x5A, 0x21, - 0x43, 0xFB, 0xFA, 0x1B, 0x41, 0x31, 0x9F, 0xF4, - 0x24, 0x09, 0x05, 0xFE, 0x56, 0x17, 0x52, 0x9C, - 0xC7, 0xE2, 0xCA, 0xC9, 0x1F, 0xBE, 0xE2, 0xEB, - 0x92, 0xEE, 0xD4, 0x76, 0x44, 0x9A, 0xFA, 0xFB, - 0x07, 0x62, 0x98, 0xEC, 0xA0, 0xCF, 0xBF, 0xFA, - 0x5E, 0x1B, 0x8B, 0xCD, 0x33, 0xFB, 0x1A, 0x97, - 0xFE, 0x50, 0x65, 0x22, 0x08, 0x9E, 0xC3, 0x87, - 0x88, 0xCA, 0xDD, 0x11, 0x5E, 0xA7, 0xCF, 0xF3, - 0x07, 0x0A, 0x34, 0x0E, 0x30, 0x1B, 0xC5, 0xCE, - 0xF7, 0xA6, 0xA4, 0x31, 0xB5, 0x40, 0xB8, 0x81, - 0xAC, 0xAA, 0x07, 0xE0, 0x7D, 0x5E, 0x6A, 0x25, - 0x85, 0x8D, 0x1D, 0x82, 0x45, 0x82, 0x76, 0xB2, - 0x65, 0x69, 0x3E, 0x88, 0xFE, 0x21, 0xFE, 0x6A, - 0x6B, 0x97, 0xD6, 0x70, 0x70, 0x00, 0x83, 0x18, - 0x39, 0xA6, 0x91, 0x3F, 0xB1, 0xB7, 0xED, 0x11, - 0xD3, 0xF9, 0x74, 0x31, 0xEC, 0x21, 0xA2, 0xEE, - 0x69, 0x04, 0xC0, 0xEA, 0x4A, 0x17, 0x1A, 0xF8, - 0xDA, 0xF1, 0x52, 0xB2, 0x78, 0x69, 0x4F, 0xDF, - 0xE6, 0xB9, 0xF3, 0xE7, 0x48, 0x8B, 0x09, 0x5F, - 0x4A, 0x7A, 0x05, 0x8E, 0xA8, 0xF6, 0x69, 0x3D, - 0x91, 0x7A, 0x6F, 0x6C, 0xAD, 0x03, 0x16, 0xEA, - 0xE0, 0x04, 0xFE, 0x54, 0x71, 0x50, 0x6D, 0x31, - 0xE4, 0x37, 0x76, 0xD6, 0x1B, 0xA9, 0xEE, 0x56, - 0x7A, 0x39, 0x34, 0x24, 0x00, 0x58, 0xE3, 0x2F, - 0xD4, 0x97, 0x57, 0x6F, 0xD8, 0x0E, 0x8B, 0xD3, - 0x88, 0x7F, 0xE8, 0x74, 0x72, 0xF7, 0xBA, 0x26, - 0x25, 0xE4, 0xD5, 0x86, 0xCD, 0xA8, 0x1E, 0x8D, - 0x49, 0xCF, 0x04, 0x92, 0x5B, 0x50, 0xD0, 0x73, - 0x3C, 0xC9, 0x17, 0xC3, 0x0E, 0x67, 0x02, 0xC5, - 0xDE, 0x48, 0x88, 0x0D, 0x2C, 0x0D, 0x68, 0x04, - 0xD5, 0x51, 0xDF, 0x4F, 0x23, 0x89, 0x7A, 0x29, - 0x41, 0xB2, 0x7A, 0xCA, 0x86, 0xA5, 0xCC, 0xC4, - 0xF5, 0xD3, 0xE1, 0xEF, 0xB8, 0xCD, 0x84, 0xB5, - 0x6D, 0xB6, 0x51, 0x1B, 0x81, 0x26, 0x97, 0xAC, - 0x00, 0xFC, 0x76, 0x8D, 0x99, 0xD9, 0x35, 0x8E, - 0x4D, 0x3E, 0xC0, 0xC1, 0x0E, 0x8D, 0x9B, 0xE5, - 0x79, 0xF3, 0xC7, 0xA0, 0xA4, 0xA6, 0xA2, 0xE9, - 0x8B, 0xCD, 0x36, 0x79, 0x76, 0xF1, 0x6A, 0xEE, - 0xCF, 0x91, 0x8D, 0x91, 0xB1, 0xAF, 0xF2, 0xF5, - 0x43, 0xF6, 0xB2, 0x3A, 0x39, 0x9F, 0xBF, 0xDE, - 0x16, 0x03, 0x52, 0x18, 0x62, 0x93, 0xB5, 0x09, - 0xC4, 0xEE, 0x27, 0x9C, 0x56, 0x6F, 0x0C, 0x1C, - 0x12, 0x42, 0xF0, 0x34, 0xBD, 0x44, 0x52, 0x4C, - 0x32, 0x7E, 0x64, 0xDF, 0x78, 0x16, 0xD9, 0x9E, - 0xD7, 0x8A, 0x11, 0x33, 0x65, 0x42, 0xEC, 0x36, - 0x07, 0xEE, 0x3F, 0x19, 0x97, 0x9B, 0x92, 0x9D, - 0x3A, 0xE4, 0x98, 0x83, 0xDB, 0x0C, 0x85, 0x39, - 0xFA, 0x8D, 0x73, 0xF5, 0xBF, 0xE0, 0x75, 0x40, - 0x50, 0x9B, 0xF2, 0xE6, 0xB6, 0xA5, 0x33, 0xD0, - 0xC4, 0xD6, 0xAB, 0xFF, 0x16, 0xDE, 0x30, 0x9C, - 0x68, 0x90, 0xE0, 0x5E, 0xD3, 0xD5, 0xA9, 0xB0, - 0xD9, 0x6B, 0x0A, 0x43, 0x45, 0x9A, 0x3D, 0xE8, - 0xB6, 0x66, 0xE4, 0x57, 0x05, 0x8E, 0x5B, 0x72, - 0xFE, 0x50, 0x44, 0x8C, 0xE4, 0x68, 0x43, 0x51, - 0x0D, 0x9A, 0xD3, 0x36, 0xA9, 0xC7, 0xF6, 0xCF, - 0x6D, 0x2C, 0x95, 0x46, 0x98, 0x6D, 0x9E, 0x78, - 0x90, 0x87, 0x19, 0x64, 0xD5, 0xDE, 0x1D, 0x9B, - 0x37, 0x4E, 0x52, 0xF5, 0x14, 0xAA, 0xEE, 0x31, - 0x83, 0x55, 0x7C, 0x38, 0x0F, 0xB3, 0xF6, 0xF2, - 0x1C, 0x60, 0x71, 0x68, 0x1F, 0x06, 0xBD, 0x99, - 0xFD, 0x42, 0x12, 0x54, 0x3E, 0xBA, 0x4B, 0x60, - 0xFB, 0xFB, 0x51, 0x4D, 0x02, 0xCE, 0xE5, 0x9E, - 0x59, 0xB2, 0xE6, 0x98, 0x67, 0xBB, 0xAB, 0xC8, - 0x08, 0xE4, 0x08, 0x0D, 0xF5, 0x3B, 0x47, 0x78, - 0x39, 0x24, 0x56, 0x80, 0xF0, 0x6A, 0x1D, 0x33, - 0x05, 0x5F, 0xF2, 0xA2, 0x38, 0xAD, 0xDF, 0x5C, - 0xC5, 0xEA, 0x9C, 0xC7, 0x0A, 0x1B, 0x5B, 0x43, - 0xE9, 0x59, 0x3D, 0x68, 0x00, 0x23, 0x32, 0x5D, - 0x25, 0xFD, 0xA7, 0xCA, 0xDA, 0xA1, 0xFD, 0x22, - 0x4E, 0x34, 0x96, 0xE7, 0x0D, 0xFF, 0x89, 0x3B, - 0xA6, 0x56, 0x0D, 0x11, 0x13, 0xA6, 0x9D, 0x3B, - 0xBC, 0x12, 0x97, 0x9A, 0x2B, 0xAA, 0xE9, 0xE2, - 0xCF, 0xD2, 0xD3, 0xEF, 0x95, 0xFC, 0x40, 0x80, - 0x94, 0x48, 0x80, 0x5A, 0x3F, 0x4A, 0xD2, 0xB5, - 0x7D, 0x61, 0xA2, 0x26, 0x7B, 0xDC, 0x32, 0xCB, - 0x84, 0x2E, 0x9B, 0x29, 0x63, 0x45, 0x74, 0x0D, - 0x85, 0x54, 0xB2, 0x16, 0x77, 0x9B, 0x47, 0x51, - 0x63, 0x33, 0xE9, 0x1A, 0x52, 0x9D, 0xEB, 0x26, - 0x06, 0x7F, 0x97, 0xA0, 0xA1, 0xAA, 0x07, 0x0F, - 0x1E, 0x23, 0xAB, 0xCC, 0xD5, 0x0F, 0x3E, 0x88, - 0xAA, 0xC3, 0xED, 0x06, 0x25, 0x3A, 0x4A, 0x62, - 0x85, 0x9F, 0xA7, 0xD3, 0xF5, 0x1C, 0x9A, 0xCC, - 0x52, 0x87, 0x9F, 0xB8, 0xC7, 0xDD, 0xF1, 0x50, - 0x66, 0x70, 0xAC, 0xC6, 0x2C, 0x2E, 0x8C, 0xC9, - 0xD9, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x0D, 0x13, 0x1D, 0x20, - 0x27, 0x2C, 0x32 - }; -#endif - byte sig[DILITHIUM_MAX_SIG_SIZE]; - word32 sigLen; - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - - ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); - ExpectIntEQ(wc_dilithium_import_private(sk_44, (word32)sizeof(sk_44), key), - 0); - sigLen = PARAMS_ML_DSA_44_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_44, (word32)sizeof(msg_44), - sig, &sigLen, key, rnd_44), 0); - ExpectIntEQ(sigLen, PARAMS_ML_DSA_44_SIG_SIZE); - ExpectIntEQ(XMEMCMP(sig, sig_44, sizeof(sig_44)), 0); -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); - ExpectIntEQ(wc_dilithium_import_private(sk_65, (word32)sizeof(sk_65), key), - 0); - sigLen = PARAMS_ML_DSA_65_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_65, (word32)sizeof(msg_65), - sig, &sigLen, key, rnd_65), 0); - ExpectIntEQ(sigLen, PARAMS_ML_DSA_65_SIG_SIZE); - ExpectIntEQ(XMEMCMP(sig, sig_65, sizeof(sig_65)), 0); -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); - ExpectIntEQ(wc_dilithium_import_private(sk_87, (word32)sizeof(sk_87), key), - 0); - sigLen = PARAMS_ML_DSA_87_SIG_SIZE; - ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_87, (word32)sizeof(msg_87), - sig, &sigLen, key, rnd_87), 0); - ExpectIntEQ(sigLen, PARAMS_ML_DSA_87_SIG_SIZE); - ExpectIntEQ(XMEMCMP(sig, sig_87, sizeof(sig_87)), 0); -#endif - - wc_dilithium_free(key); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} - -static int test_wc_dilithium_verify_kats(void) -{ - EXPECT_DECLS; -#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ - !defined(WOLFSSL_DILITHIUM_NO_VERIFY) - dilithium_key* key; - int res; -#ifndef WOLFSSL_NO_ML_DSA_44 - static const byte pk_44[] = { - 0x09, 0xB4, 0x88, 0x7D, 0x97, 0xBC, 0xF6, 0x37, - 0x9C, 0xC5, 0x9B, 0x61, 0x62, 0xC1, 0xE8, 0xBF, - 0x05, 0x60, 0xBF, 0x44, 0xD6, 0x18, 0x09, 0x17, - 0x0E, 0x6E, 0x28, 0xF7, 0x06, 0x69, 0xA3, 0xE9, - 0x49, 0x64, 0x38, 0xE8, 0x91, 0x57, 0x35, 0xAD, - 0xAE, 0xB4, 0x45, 0xCF, 0xDB, 0x7D, 0x89, 0xB3, - 0x8C, 0x04, 0x8F, 0x4C, 0x3E, 0x00, 0x58, 0x15, - 0x14, 0xC5, 0xFD, 0x19, 0x8B, 0x2D, 0x17, 0x39, - 0xE8, 0x83, 0xB8, 0x78, 0xD5, 0x6B, 0xB4, 0x12, - 0x64, 0xBE, 0x41, 0xD3, 0xD5, 0x15, 0x65, 0xE2, - 0xE9, 0xCA, 0xE3, 0x31, 0x84, 0xA8, 0x99, 0xF6, - 0x2D, 0xD5, 0x7D, 0x07, 0x40, 0x0E, 0x98, 0xE5, - 0x86, 0x87, 0xA9, 0xB2, 0x2F, 0xA3, 0x17, 0xEE, - 0xD1, 0x34, 0xCA, 0x72, 0x14, 0xBF, 0xF0, 0x21, - 0xDD, 0x21, 0x62, 0xB1, 0x83, 0x09, 0x1D, 0x15, - 0xF2, 0x63, 0xB7, 0x29, 0x82, 0x14, 0x42, 0x3C, - 0x6B, 0xB6, 0x96, 0xD7, 0x5C, 0x20, 0xD9, 0xEA, - 0xCD, 0x0A, 0x03, 0xE4, 0x26, 0x2C, 0x4B, 0x08, - 0xBE, 0x39, 0xFA, 0x21, 0x54, 0xBD, 0x6E, 0x50, - 0x25, 0xFF, 0x79, 0x1E, 0x88, 0x5F, 0x22, 0x26, - 0xE3, 0xCF, 0x48, 0xF7, 0xB5, 0xEB, 0x04, 0xFB, - 0xE9, 0xEC, 0xF7, 0x5B, 0x19, 0xE1, 0xD1, 0x5C, - 0x30, 0x5E, 0x92, 0x26, 0x0A, 0xB0, 0xD6, 0xAE, - 0x7D, 0xBA, 0x7B, 0xBE, 0x73, 0xB6, 0xBC, 0x18, - 0x1C, 0xF9, 0x33, 0x84, 0x0C, 0xC1, 0x0A, 0x00, - 0x05, 0x02, 0x28, 0xFA, 0x46, 0xA2, 0x63, 0x6D, - 0xD9, 0xA9, 0x09, 0x47, 0xE9, 0xF1, 0x3A, 0x93, - 0xEF, 0x4C, 0x62, 0xBE, 0x37, 0x4D, 0x76, 0xD1, - 0xFD, 0xBB, 0xC5, 0xD8, 0xB5, 0x5E, 0x72, 0x9F, - 0xA5, 0x86, 0x65, 0xAA, 0x07, 0xB9, 0x0C, 0x8C, - 0xDD, 0xD6, 0x1C, 0x56, 0x6B, 0x0D, 0x7E, 0xD6, - 0x57, 0x70, 0x49, 0x2E, 0xA0, 0x71, 0x3E, 0x1E, - 0xD4, 0x6A, 0xC7, 0xAD, 0x15, 0x03, 0xC5, 0x6D, - 0x90, 0x52, 0xD2, 0xC9, 0x4D, 0x49, 0xE4, 0x41, - 0x6A, 0xC9, 0x2B, 0x70, 0x39, 0x6F, 0x76, 0xF6, - 0xFB, 0x48, 0x10, 0x45, 0x68, 0x17, 0x25, 0xA6, - 0x8C, 0xB3, 0x56, 0x37, 0x7F, 0xB2, 0x31, 0xAB, - 0x8F, 0x3E, 0xB9, 0xA4, 0x98, 0x2F, 0xFF, 0x18, - 0x36, 0x47, 0x3B, 0xCB, 0xDA, 0xB6, 0x87, 0x2D, - 0x22, 0x94, 0x67, 0xEF, 0xB9, 0x36, 0x62, 0x61, - 0xFE, 0xB1, 0x48, 0xBA, 0x9B, 0x7D, 0xB9, 0xC4, - 0xFE, 0x0B, 0xB8, 0x86, 0x12, 0xAB, 0xB8, 0xFD, - 0x61, 0x09, 0x6F, 0x18, 0x19, 0x60, 0x4D, 0x55, - 0xDF, 0x60, 0x20, 0x46, 0x4D, 0x3F, 0x09, 0x2C, - 0xFC, 0xA5, 0x98, 0x12, 0x08, 0x22, 0x18, 0x56, - 0x68, 0x99, 0xA5, 0x6A, 0x3C, 0x63, 0x3C, 0xC8, - 0x1F, 0x88, 0xAD, 0xB2, 0xE1, 0x41, 0x4E, 0xF3, - 0x85, 0x0D, 0x10, 0xBF, 0x5A, 0x77, 0xAC, 0xE7, - 0x24, 0xD6, 0xC1, 0xF3, 0x88, 0x92, 0x87, 0x44, - 0xB3, 0xE5, 0x42, 0xAE, 0x49, 0x1C, 0xD5, 0x6A, - 0x64, 0x21, 0x3F, 0x1D, 0x3C, 0xC9, 0x0B, 0x29, - 0x10, 0x5F, 0x43, 0xD2, 0x37, 0xC8, 0x3D, 0x5F, - 0xB8, 0x29, 0x32, 0x5C, 0x83, 0xE6, 0x54, 0x57, - 0x77, 0x76, 0x39, 0x2F, 0x85, 0x36, 0xAA, 0x9D, - 0xAE, 0x87, 0x24, 0x07, 0xAB, 0xAA, 0xA9, 0xAC, - 0xC2, 0x2A, 0x68, 0x12, 0xCE, 0xA7, 0x4C, 0x0B, - 0xA6, 0x7E, 0xAF, 0x4A, 0x41, 0x01, 0x52, 0x97, - 0x5E, 0x9A, 0x83, 0xEE, 0x44, 0x69, 0x29, 0x53, - 0x17, 0xBE, 0xD1, 0x05, 0x51, 0xBA, 0x32, 0xE6, - 0x5A, 0xFC, 0x8C, 0x8E, 0x68, 0xDD, 0x55, 0x42, - 0x0C, 0x50, 0x2D, 0x93, 0x7D, 0xAD, 0xD2, 0xEF, - 0xA2, 0xCB, 0xFD, 0x1F, 0x73, 0x9F, 0xC0, 0xAB, - 0x2B, 0x26, 0x54, 0xFA, 0xE0, 0x8C, 0x0C, 0x7F, - 0x8E, 0xDD, 0x43, 0xCF, 0x9F, 0xF0, 0xB0, 0x1D, - 0x98, 0x4D, 0x49, 0x18, 0x52, 0xA3, 0x72, 0xE9, - 0xFE, 0xFD, 0xCC, 0x1B, 0xC1, 0x6C, 0xDB, 0x52, - 0x39, 0xAE, 0x10, 0x01, 0x15, 0x5F, 0x89, 0x56, - 0x30, 0x51, 0xCE, 0x47, 0x99, 0x6C, 0x5A, 0xEE, - 0xB2, 0x19, 0x0E, 0xA1, 0x8F, 0x7F, 0x73, 0x40, - 0x42, 0xDE, 0x68, 0xE9, 0x88, 0x36, 0x7D, 0x89, - 0x35, 0x5D, 0x9D, 0x83, 0x77, 0xBA, 0xF9, 0x64, - 0x79, 0x78, 0xEB, 0x2E, 0x49, 0x2A, 0xD0, 0x21, - 0xC5, 0x69, 0xAE, 0x8B, 0xA6, 0x9B, 0x15, 0xF1, - 0xFC, 0xF7, 0x03, 0x9A, 0x7E, 0x64, 0xAF, 0x10, - 0xAB, 0xF3, 0xEA, 0x45, 0xB7, 0x22, 0x2F, 0x96, - 0x59, 0xE3, 0x33, 0x73, 0x37, 0x2E, 0x1D, 0xB1, - 0x86, 0xD2, 0xC2, 0xA0, 0xD7, 0x54, 0x51, 0xC4, - 0x78, 0xAE, 0xF3, 0x3E, 0x59, 0x49, 0xF2, 0x40, - 0x04, 0x0C, 0x2A, 0xFC, 0x44, 0xB1, 0xD3, 0xA0, - 0x2A, 0x6D, 0x2F, 0x87, 0x90, 0x2A, 0x28, 0x0E, - 0x27, 0xA2, 0x0D, 0x4E, 0x57, 0xF8, 0x89, 0x66, - 0x27, 0x00, 0xDB, 0x8A, 0x9D, 0x24, 0x99, 0x57, - 0xA7, 0xDB, 0x43, 0x7C, 0xD4, 0x80, 0xDD, 0xC0, - 0x58, 0x84, 0xFB, 0x23, 0xF8, 0x68, 0x26, 0x8E, - 0xAC, 0xE3, 0x4E, 0xED, 0x27, 0x4A, 0x92, 0x7D, - 0x9D, 0x84, 0xF1, 0xEA, 0x57, 0xEA, 0xB1, 0xA8, - 0x13, 0xB5, 0xE6, 0xAA, 0xBE, 0x9E, 0xD2, 0x61, - 0x0B, 0xC6, 0xF7, 0x2E, 0x32, 0x0C, 0xDE, 0xC4, - 0xF9, 0x95, 0x23, 0xF9, 0x3F, 0xA4, 0x48, 0xDC, - 0x1F, 0xBB, 0xDD, 0x25, 0x9B, 0x10, 0x2F, 0x5D, - 0xC9, 0x95, 0x5A, 0xFA, 0x0C, 0x41, 0x60, 0x4D, - 0x83, 0xDD, 0x1C, 0x2D, 0x22, 0x95, 0xEF, 0x44, - 0x61, 0x45, 0x6B, 0xAE, 0x86, 0x90, 0x5C, 0x4C, - 0x30, 0xD8, 0xA9, 0xFA, 0x48, 0xC9, 0x0F, 0x37, - 0xA1, 0x9C, 0x41, 0xA2, 0xD5, 0x98, 0x8F, 0x13, - 0xD5, 0x13, 0x44, 0xEC, 0x30, 0xA4, 0xA4, 0x62, - 0x19, 0xFE, 0x84, 0x11, 0x37, 0xD5, 0xAA, 0x1F, - 0x51, 0xE6, 0xC4, 0x44, 0x16, 0x8A, 0xF3, 0x98, - 0x90, 0xB6, 0xFA, 0x40, 0x0D, 0x67, 0xF4, 0x80, - 0x6F, 0x5B, 0xBD, 0x44, 0x47, 0x03, 0x07, 0x4A, - 0x7A, 0x11, 0x39, 0xC7, 0x17, 0x46, 0xD7, 0xC4, - 0xCE, 0xB3, 0xC9, 0x11, 0xF5, 0x25, 0x7E, 0x3E, - 0x53, 0xEB, 0xFA, 0x5A, 0xA8, 0xF2, 0x27, 0x80, - 0x9D, 0x44, 0xEE, 0x7D, 0xE1, 0x3C, 0x02, 0x79, - 0x24, 0xDD, 0x60, 0x15, 0x3B, 0x30, 0xAA, 0x76, - 0xDD, 0x96, 0xA7, 0xC5, 0xAC, 0xC5, 0x9B, 0x62, - 0x79, 0x19, 0x50, 0x7B, 0xF1, 0x42, 0x57, 0xAE, - 0x7A, 0x26, 0x24, 0x3C, 0x16, 0x83, 0xB2, 0x8D, - 0x1B, 0x14, 0xB5, 0x01, 0xAD, 0x05, 0x9B, 0x4D, - 0x52, 0x2A, 0x57, 0x99, 0x1E, 0x55, 0x39, 0xCE, - 0xF1, 0x8C, 0xEB, 0x5C, 0x26, 0xD6, 0x60, 0xB8, - 0x82, 0x24, 0x54, 0xC9, 0xC4, 0x2A, 0x95, 0xE6, - 0xF7, 0x2B, 0x84, 0xF7, 0x8A, 0xB9, 0x9F, 0x51, - 0xEC, 0x49, 0x78, 0x9F, 0x9D, 0xB4, 0xC1, 0x28, - 0xB0, 0x31, 0x8F, 0xFF, 0xC8, 0x2D, 0x95, 0xCA, - 0xD2, 0x77, 0xF1, 0x1E, 0x14, 0xF1, 0xEF, 0x87, - 0x14, 0x14, 0x88, 0x11, 0x22, 0xA9, 0xB1, 0x1B, - 0xDF, 0xAE, 0x4A, 0x7A, 0xBC, 0x8E, 0x75, 0x75, - 0x5A, 0xB1, 0x37, 0x41, 0xDF, 0xAC, 0xD6, 0x64, - 0x29, 0x3D, 0x1A, 0x32, 0x6B, 0xF5, 0xED, 0x5A, - 0xBB, 0xB1, 0x53, 0xEB, 0xE6, 0x99, 0x6D, 0xD6, - 0x22, 0xF0, 0xA8, 0xCB, 0x47, 0x39, 0x69, 0xA5, - 0x03, 0x66, 0xBD, 0x0B, 0x01, 0xC5, 0xC7, 0x3A, - 0x89, 0x2B, 0x8E, 0x26, 0xCE, 0x08, 0xF7, 0x5F, - 0xF8, 0x01, 0xB6, 0xDE, 0xF0, 0x41, 0xE1, 0x71, - 0x3B, 0xE6, 0xDF, 0x0E, 0xFB, 0x51, 0x58, 0x7B, - 0xE5, 0xFB, 0xEA, 0x72, 0x7E, 0x00, 0xD7, 0x17, - 0x64, 0x7D, 0xD5, 0x39, 0x07, 0x9D, 0xE1, 0x8A, - 0xE7, 0xBE, 0xD1, 0x2B, 0x91, 0xAF, 0x8D, 0xBB, - 0x1B, 0x8B, 0x32, 0xD2, 0x86, 0x0B, 0xAF, 0x40, - 0xAF, 0x8A, 0x0B, 0xBF, 0xE0, 0x28, 0x87, 0xEB, - 0x5D, 0xBE, 0x7A, 0xB1, 0xAF, 0xC4, 0x1D, 0xA7, - 0x9B, 0x01, 0x6A, 0xA1, 0x6E, 0xDA, 0x28, 0x13, - 0x21, 0xCA, 0xA5, 0xDA, 0x64, 0x4F, 0xD8, 0x65, - 0x8A, 0x7B, 0x70, 0x21, 0x81, 0x00, 0x14, 0x31, - 0x56, 0x0D, 0xD6, 0x3C, 0xB2, 0x1E, 0x5F, 0xF7, - 0x5C, 0x3F, 0x72, 0x50, 0x45, 0x6B, 0xE0, 0x8C, - 0x0D, 0x5E, 0x34, 0xC3, 0xBD, 0xE2, 0xF6, 0x06, - 0xA2, 0xBF, 0x34, 0x17, 0x76, 0x8D, 0x24, 0xB2, - 0x37, 0x39, 0xEA, 0x86, 0xCB, 0xEF, 0xDD, 0xA3, - 0x43, 0x88, 0xBC, 0x1F, 0x91, 0x8F, 0x95, 0x1E, - 0x15, 0xE4, 0x3B, 0x13, 0x85, 0xA7, 0xBC, 0xC5, - 0x59, 0xF9, 0x49, 0x2C, 0x72, 0x13, 0xA1, 0x42, - 0x27, 0xE0, 0x93, 0xE9, 0x29, 0xF3, 0x2D, 0x1E, - 0xFB, 0xE7, 0xF1, 0xEE, 0x57, 0xC4, 0x9C, 0x90, - 0x55, 0x62, 0x3E, 0xA4, 0x2E, 0xC6, 0xC7, 0x9D, - 0x7F, 0xCE, 0x71, 0xFA, 0x74, 0x76, 0x07, 0x56, - 0x6D, 0xDA, 0x69, 0xF6, 0x9D, 0xAF, 0x68, 0x11, - 0x59, 0x19, 0xC6, 0x32, 0x2E, 0xBB, 0x42, 0xC8, - 0xC0, 0x89, 0x33, 0x8C, 0x9E, 0x0C, 0x53, 0x56, - 0x5B, 0xCB, 0xE7, 0x2F, 0xBE, 0x47, 0x26, 0x68, - 0x7B, 0x07, 0x87, 0x07, 0x18, 0x06, 0xC5, 0xA6, - 0xC1, 0x49, 0xC8, 0x2B, 0x66, 0x8A, 0xA6, 0x4A, - 0x7B, 0xA0, 0xCC, 0xC1, 0xCC, 0x49, 0xA1, 0xEE, - 0xE9, 0x45, 0x3D, 0x04, 0x33, 0x6E, 0x5D, 0xC8, - 0x11, 0xE0, 0x38, 0x92, 0xF7, 0xF4, 0x66, 0x88, - 0xEC, 0xEF, 0xD0, 0x4F, 0x18, 0x76, 0xF7, 0x11, - 0x17, 0x12, 0xB5, 0x95, 0xED, 0x62, 0xDA, 0x00, - 0x67, 0x8F, 0x9E, 0x37, 0x86, 0xB5, 0xC1, 0xA5, - 0x09, 0x5B, 0xE8, 0x71, 0x0D, 0xCF, 0xA4, 0x16, - 0x52, 0x56, 0x50, 0x9E, 0x00, 0x14, 0x3A, 0x6F, - 0x11, 0x72, 0xFA, 0xBE, 0x8B, 0xF2, 0x1E, 0x5F, - 0xCE, 0x7C, 0x79, 0xC1, 0xA4, 0x4B, 0x4B, 0x15, - 0x25, 0xA0, 0x76, 0xFF, 0xB8, 0xDD, 0x90, 0x66 - }; - static const byte msg_44[] = { - 0x3A, 0xFD, 0x7F, 0xF8, 0xCA, 0xD3, 0xAC, 0xBD, - 0xF9, 0x77, 0x31, 0x26, 0x1C, 0x7A, 0x1C, 0x96, - 0x9D, 0x50, 0x16, 0xF1, 0x7D, 0x3E, 0x7F, 0x83, - 0xD2, 0x44, 0x1A, 0xF9, 0x01, 0x4B, 0x63, 0x47, - 0x7B, 0x14, 0xA6, 0x41, 0x31, 0x50, 0xFA, 0xD7, - 0xC8, 0x44, 0x39, 0xBC, 0x88, 0x66, 0x2C, 0x5E, - 0x93, 0x1F, 0x06, 0xB9, 0x51, 0x41, 0x90, 0xE1, - 0x3F, 0xB0, 0x49, 0xC4, 0xAB, 0x74, 0x01, 0x32, - 0x33, 0xB9, 0x8D, 0x48, 0xD9, 0xAF, 0xB6, 0xA3, - 0x0A, 0x67, 0x33, 0x0E, 0x1F, 0xBE, 0x33, 0x1B, - 0x09, 0xC5, 0x6D, 0x03, 0x7E, 0x97, 0x01, 0x08, - 0x5D, 0x80, 0xF1, 0xE7, 0xF4, 0x04, 0x3E, 0xFB, - 0x53, 0x58, 0x7A, 0xBB, 0x82, 0x36, 0x24, 0x01, - 0x23, 0x84, 0x51, 0x52, 0x49, 0xEE, 0x61, 0x30, - 0x97, 0x3D, 0xC9, 0xEA, 0x6F, 0x55, 0x8B, 0xAE, - 0x75, 0x10, 0x7E, 0xFD, 0xB1, 0xD9, 0x28, 0x5B - }; - static const byte sig_44[] = { - 0x4A, 0x2B, 0x16, 0xCD, 0xB5, 0x52, 0xF9, 0x29, - 0x7F, 0x8E, 0x39, 0x1A, 0xD8, 0xF5, 0xAD, 0xC8, - 0xCC, 0x5D, 0x2C, 0x56, 0xC4, 0x6B, 0x80, 0x0F, - 0x9B, 0x3E, 0xE4, 0xBB, 0xD2, 0xF2, 0xE8, 0xA8, - 0x9D, 0x59, 0x9D, 0x7B, 0x5C, 0xC2, 0xD8, 0x8C, - 0x80, 0xF2, 0x71, 0x85, 0x9B, 0xBC, 0x83, 0x04, - 0x3E, 0xC4, 0xE5, 0x48, 0x12, 0xF5, 0x93, 0x6B, - 0x44, 0x6C, 0x95, 0x13, 0xC8, 0x55, 0x28, 0x9C, - 0x94, 0xB1, 0x15, 0x51, 0xA0, 0xC7, 0x65, 0x3E, - 0x7B, 0xA7, 0x4F, 0xFB, 0x6F, 0x72, 0xD4, 0x65, - 0x2C, 0x91, 0xD3, 0x8D, 0xD1, 0xF9, 0x0D, 0xFE, - 0x44, 0x39, 0xBC, 0x21, 0xCA, 0x53, 0xE0, 0xCC, - 0x7A, 0x7A, 0xA5, 0xB8, 0x75, 0xA5, 0xB9, 0xBA, - 0x42, 0x36, 0x6E, 0xB8, 0xEC, 0xBA, 0x24, 0x36, - 0xDA, 0xF0, 0x8A, 0x91, 0x97, 0x8D, 0xD0, 0x93, - 0xF2, 0x0F, 0x1E, 0xFB, 0x6B, 0x0B, 0xCB, 0x90, - 0xDA, 0x99, 0xCC, 0xA0, 0x5E, 0x8F, 0x6F, 0x82, - 0xB8, 0x6D, 0x3C, 0x6E, 0xE2, 0x4B, 0xA5, 0xD5, - 0x0A, 0xEA, 0x10, 0xB2, 0x30, 0x7F, 0x57, 0xF8, - 0x9E, 0xD7, 0x8D, 0xB4, 0xA7, 0x4F, 0xBB, 0xF6, - 0xEB, 0x33, 0x2A, 0xFB, 0x08, 0xD0, 0x74, 0xAC, - 0xF0, 0xDE, 0x5C, 0xD7, 0xFE, 0xC1, 0x2F, 0x76, - 0xF3, 0xAB, 0x61, 0x9C, 0x81, 0x5B, 0x9E, 0xDD, - 0x28, 0x7E, 0xAD, 0x67, 0xF0, 0x4F, 0x14, 0x79, - 0x7F, 0x8D, 0xCF, 0x2C, 0xDE, 0x9A, 0x87, 0x53, - 0xB5, 0xAD, 0x0A, 0xFA, 0x12, 0x87, 0x41, 0x97, - 0xD1, 0x74, 0x40, 0x92, 0x87, 0x25, 0x21, 0xE8, - 0x68, 0xAF, 0x9E, 0x64, 0x45, 0x23, 0x73, 0xFE, - 0xB6, 0xFE, 0x25, 0xD5, 0x27, 0x3D, 0x63, 0xC0, - 0xEB, 0xD6, 0xD3, 0xB1, 0x02, 0x8C, 0x1C, 0xD0, - 0x6A, 0xF3, 0x2C, 0xEC, 0xA2, 0x62, 0x13, 0x10, - 0x83, 0x7C, 0x72, 0x78, 0x8C, 0x8A, 0xDA, 0xB5, - 0xA0, 0xF0, 0x38, 0x17, 0x12, 0x8E, 0xB7, 0xB7, - 0x66, 0xFA, 0x81, 0x2C, 0x69, 0x6C, 0xF8, 0x86, - 0xF0, 0x0A, 0x10, 0x44, 0xCD, 0xD0, 0x6B, 0xB2, - 0x8C, 0xB2, 0xE5, 0x78, 0x0C, 0x8D, 0x8C, 0xC7, - 0xE6, 0x0A, 0xB6, 0x99, 0xDD, 0x78, 0x66, 0x8B, - 0xE4, 0xFF, 0x9F, 0x46, 0x90, 0xC6, 0xFC, 0x98, - 0xAA, 0xC9, 0xC0, 0x2B, 0x66, 0xB9, 0xB9, 0x82, - 0x6A, 0x30, 0x61, 0xFD, 0x32, 0x22, 0xDA, 0x84, - 0x82, 0x66, 0x79, 0x60, 0xA3, 0x16, 0x52, 0xEE, - 0x88, 0xEB, 0x32, 0xB0, 0x46, 0x9A, 0xB7, 0x1C, - 0xAA, 0x25, 0x19, 0xF2, 0x3D, 0x1A, 0x24, 0x42, - 0xD5, 0xB1, 0x31, 0x62, 0x62, 0x13, 0x1D, 0xCE, - 0xC5, 0xF2, 0x87, 0xE3, 0x2F, 0xD3, 0x43, 0xFE, - 0xB4, 0x42, 0x9E, 0x54, 0x25, 0x8D, 0x69, 0x0D, - 0x9D, 0x20, 0xA1, 0x0A, 0xBD, 0x75, 0xA5, 0x36, - 0xDF, 0xF8, 0xCF, 0x1D, 0x6D, 0xDF, 0x19, 0x29, - 0x1E, 0x27, 0x49, 0xA7, 0xD1, 0x6E, 0xB9, 0x0A, - 0xB5, 0x09, 0x3B, 0xAD, 0x38, 0xE1, 0x16, 0xA8, - 0x6B, 0x73, 0x0E, 0x65, 0x57, 0x4C, 0x06, 0x8C, - 0x38, 0xBA, 0x94, 0x57, 0xC9, 0xD6, 0xD9, 0x13, - 0xEA, 0xFF, 0x57, 0xFE, 0x23, 0xBF, 0x3D, 0xD2, - 0x4D, 0x8C, 0xA5, 0x11, 0xEF, 0xA3, 0x76, 0xA5, - 0xDF, 0x08, 0x46, 0x70, 0x25, 0xFF, 0x51, 0xBE, - 0xAD, 0x3E, 0xDE, 0x0A, 0x84, 0xED, 0xC5, 0x32, - 0x16, 0x20, 0x99, 0x80, 0x61, 0xE8, 0xA1, 0xA7, - 0x3D, 0x67, 0xB7, 0x02, 0x1B, 0x81, 0x0C, 0x78, - 0x67, 0xFF, 0x39, 0x18, 0x7B, 0x59, 0xD4, 0x03, - 0xBF, 0x7C, 0x75, 0x06, 0x30, 0x0C, 0x73, 0x45, - 0xB1, 0xFE, 0x07, 0xC1, 0x12, 0x78, 0xB0, 0xAB, - 0xA6, 0x1D, 0xBB, 0x4F, 0x2B, 0x8C, 0x43, 0xE7, - 0x4F, 0xEF, 0xA5, 0x5E, 0xD5, 0x2C, 0x10, 0xA8, - 0xC4, 0x90, 0x88, 0x2B, 0xBF, 0xE3, 0xE3, 0xB3, - 0xCE, 0x57, 0x9E, 0x81, 0x16, 0xA9, 0xB6, 0x68, - 0x6C, 0x1A, 0x10, 0x0A, 0xA1, 0xF6, 0x59, 0x1F, - 0x19, 0x1F, 0x77, 0x2B, 0x5A, 0x5A, 0x50, 0xDD, - 0x6C, 0xC1, 0x55, 0xCB, 0x5A, 0x1B, 0xE5, 0xBA, - 0x12, 0x2E, 0x91, 0xF0, 0x44, 0x42, 0x01, 0x56, - 0xCD, 0x63, 0x08, 0x0F, 0x0A, 0x45, 0xD6, 0x62, - 0xE7, 0x6D, 0xD5, 0x7B, 0xD0, 0xF6, 0x89, 0xD0, - 0xB2, 0x99, 0x04, 0x2B, 0xFF, 0x48, 0x5E, 0x8A, - 0x38, 0x2D, 0x86, 0x5C, 0x26, 0xCD, 0x46, 0xB4, - 0xA5, 0x47, 0x28, 0xBD, 0x48, 0x45, 0x83, 0x62, - 0xD7, 0x9A, 0xC3, 0xEB, 0x75, 0x6F, 0xC6, 0xC5, - 0x18, 0xC9, 0xE2, 0xF0, 0xE7, 0xD5, 0xA3, 0x03, - 0xAF, 0x11, 0x59, 0xEE, 0x6D, 0xBE, 0x7D, 0xD5, - 0x6B, 0xA0, 0x71, 0x28, 0x57, 0xA6, 0x88, 0x36, - 0xC3, 0xC7, 0x8C, 0x6C, 0x9F, 0x74, 0x88, 0x57, - 0x28, 0x13, 0xC0, 0xF6, 0xA8, 0x14, 0x70, 0x9D, - 0x2B, 0xC1, 0x42, 0xFE, 0xF0, 0x25, 0x27, 0xCA, - 0xE7, 0x71, 0x23, 0x58, 0x37, 0x1C, 0x54, 0x26, - 0x52, 0x2C, 0xCC, 0x64, 0x30, 0x0C, 0x2C, 0xD9, - 0xFB, 0xE2, 0x0C, 0x65, 0x62, 0xE3, 0x48, 0x35, - 0x20, 0x5F, 0xCD, 0xD5, 0xA8, 0x98, 0x2C, 0x92, - 0x0B, 0xB4, 0x77, 0xFB, 0x88, 0x17, 0x02, 0x82, - 0x7B, 0x49, 0x11, 0x87, 0x13, 0x94, 0xC0, 0x6B, - 0x5F, 0xEC, 0xD0, 0xC7, 0x40, 0xAF, 0x7B, 0x27, - 0x63, 0x7B, 0xAC, 0x1A, 0x0C, 0xBC, 0xA5, 0x37, - 0xE4, 0x43, 0x3E, 0xA8, 0x47, 0x45, 0x4C, 0x69, - 0x38, 0x97, 0xA3, 0x2E, 0x4D, 0x18, 0x44, 0x19, - 0x54, 0x26, 0xA0, 0xC6, 0xAE, 0xD6, 0x74, 0x72, - 0xBD, 0x2C, 0x4E, 0xEE, 0x17, 0x9F, 0x3F, 0x60, - 0x84, 0xA3, 0x6A, 0x76, 0x89, 0xF4, 0xCB, 0x1F, - 0x8E, 0x5D, 0xB2, 0xDD, 0xE5, 0x4A, 0xCC, 0x06, - 0x66, 0xBA, 0x98, 0x41, 0x54, 0x31, 0xA4, 0xB2, - 0x02, 0xF4, 0x02, 0xFB, 0x1F, 0x1B, 0xCC, 0xDC, - 0x23, 0xBF, 0xF1, 0x31, 0x48, 0xC7, 0xB8, 0xF6, - 0x1F, 0xBF, 0x62, 0x43, 0xB2, 0x96, 0xA7, 0x8E, - 0xB6, 0x98, 0x18, 0x9D, 0xA9, 0x5B, 0xDA, 0x85, - 0xDB, 0xC1, 0x1D, 0x15, 0xFF, 0xDC, 0x6B, 0xF4, - 0x6C, 0x53, 0xF6, 0xE4, 0x72, 0xA8, 0x71, 0x40, - 0x1E, 0x9A, 0x9A, 0xB7, 0xF9, 0xFB, 0x46, 0x7E, - 0xB4, 0xEC, 0xB1, 0xF0, 0xDA, 0x7E, 0x63, 0xEE, - 0x86, 0x19, 0xCB, 0xC4, 0x86, 0xEB, 0xB0, 0xF2, - 0x12, 0x0A, 0x78, 0x11, 0xBF, 0xB0, 0x55, 0x7D, - 0x13, 0x93, 0x05, 0x74, 0x29, 0x7C, 0x94, 0x64, - 0xFC, 0x59, 0x5B, 0x27, 0x56, 0x9A, 0xDF, 0x5F, - 0x4A, 0x8D, 0xF6, 0x69, 0xC9, 0xEE, 0xA0, 0xA2, - 0x50, 0xF4, 0xD2, 0x2C, 0x2E, 0x8C, 0x64, 0x1B, - 0xA3, 0x90, 0x2B, 0xA8, 0x08, 0x00, 0x48, 0x99, - 0x65, 0xF1, 0x1A, 0xF1, 0xE1, 0xA8, 0x57, 0x17, - 0xC6, 0x24, 0xE7, 0x42, 0xF1, 0x61, 0x55, 0x08, - 0x19, 0xD1, 0xF0, 0x37, 0x2C, 0x5C, 0xAE, 0x8B, - 0xC6, 0x2B, 0x54, 0x9E, 0xFE, 0x87, 0x44, 0x61, - 0x08, 0x0D, 0x06, 0x34, 0x6E, 0x1F, 0xA6, 0xF0, - 0x15, 0x14, 0xFB, 0xEC, 0xCB, 0x06, 0xE3, 0x4E, - 0xE2, 0x71, 0xA0, 0xF0, 0x03, 0x17, 0x90, 0xBD, - 0xAB, 0xE0, 0xF0, 0x2B, 0xBA, 0x4A, 0xEA, 0x4B, - 0x73, 0x97, 0xFE, 0x33, 0x33, 0xEB, 0x81, 0x21, - 0x82, 0x07, 0x57, 0x28, 0x1F, 0x96, 0xA5, 0x83, - 0x1F, 0x9E, 0x49, 0x03, 0x66, 0x54, 0x9D, 0x16, - 0x76, 0x3F, 0xF1, 0x9F, 0xF7, 0x73, 0x58, 0x0E, - 0xD5, 0xE3, 0xE1, 0xE2, 0xAA, 0x3E, 0x38, 0xF8, - 0x84, 0x74, 0xDE, 0x6D, 0x9B, 0xA6, 0x99, 0x4F, - 0x8E, 0x62, 0x91, 0x60, 0x48, 0x8C, 0xB4, 0xCD, - 0x5B, 0x87, 0x8C, 0xDA, 0x37, 0xAA, 0xEC, 0x9B, - 0x56, 0x36, 0x9A, 0x7E, 0x73, 0xF7, 0x3B, 0x42, - 0x86, 0x39, 0xA0, 0x5C, 0x13, 0x78, 0x44, 0x8A, - 0xDB, 0x7F, 0x07, 0x4D, 0xC8, 0x15, 0x4D, 0x92, - 0xE1, 0x3C, 0x63, 0x56, 0xB5, 0xF4, 0x66, 0xD6, - 0x64, 0x77, 0x15, 0x9B, 0x2A, 0x94, 0x37, 0x99, - 0xAD, 0x61, 0x9A, 0x02, 0x9F, 0x30, 0x10, 0xD0, - 0x37, 0x67, 0x2D, 0xBB, 0x68, 0x20, 0xE5, 0x13, - 0x23, 0xAD, 0xA9, 0x88, 0x81, 0xC6, 0xDE, 0x85, - 0x9D, 0xF8, 0x75, 0xAB, 0xAF, 0x11, 0xDA, 0x5D, - 0xDC, 0xA5, 0xA7, 0x77, 0x62, 0x2B, 0xDA, 0xE8, - 0xFA, 0xCE, 0x2E, 0x0C, 0xED, 0x3B, 0x6A, 0x77, - 0xB8, 0x8A, 0x87, 0x29, 0xFB, 0x7C, 0x50, 0x93, - 0x3D, 0xA6, 0xC5, 0x2E, 0x3F, 0x4D, 0x94, 0x8F, - 0x9D, 0xC1, 0x53, 0xB5, 0xB1, 0x29, 0x9C, 0xD8, - 0x62, 0x1D, 0xDF, 0xBA, 0x48, 0xAF, 0x44, 0xE4, - 0xB6, 0xF6, 0x10, 0x6E, 0xE7, 0x77, 0x95, 0x01, - 0xDD, 0x5F, 0xB3, 0xC5, 0x78, 0xEA, 0x4D, 0x32, - 0xC5, 0xC2, 0xF0, 0x36, 0xA7, 0x35, 0x27, 0x03, - 0xAD, 0xD1, 0x35, 0xAB, 0x84, 0x46, 0x01, 0x62, - 0x41, 0x7E, 0x50, 0xBF, 0x91, 0xE6, 0x07, 0x97, - 0xD5, 0x9B, 0x9E, 0x18, 0xD3, 0x24, 0xDA, 0x97, - 0x1F, 0x4F, 0xF4, 0x28, 0xAE, 0xAF, 0x23, 0xAC, - 0x0B, 0xA4, 0xE2, 0xE2, 0xFC, 0x7A, 0xBA, 0xA6, - 0xC8, 0x98, 0x4F, 0xE9, 0xE2, 0xD8, 0x5B, 0x8A, - 0xDA, 0x40, 0x86, 0xB3, 0xC1, 0x3A, 0xBD, 0x43, - 0xCF, 0xD1, 0xC7, 0x11, 0xD8, 0x32, 0x6B, 0x18, - 0xAD, 0xC3, 0x4C, 0xC1, 0x4C, 0xF8, 0x95, 0x7E, - 0xC3, 0x95, 0x94, 0x98, 0xFC, 0x2A, 0x7B, 0xE0, - 0x6B, 0xD1, 0x84, 0x0D, 0xE1, 0x70, 0x36, 0x65, - 0x66, 0xE5, 0x07, 0x41, 0x95, 0x77, 0x63, 0xC2, - 0xDD, 0x27, 0xAC, 0xF8, 0xC3, 0xF1, 0x02, 0x6F, - 0xAE, 0xE1, 0xD2, 0x56, 0x2F, 0xA1, 0x05, 0x2E, - 0x69, 0xAF, 0xDD, 0x42, 0xF4, 0x46, 0xF0, 0x59, - 0x88, 0x66, 0xD5, 0xD3, 0x06, 0xBF, 0x1B, 0x77, - 0x50, 0x42, 0xB0, 0x35, 0x92, 0x73, 0x72, 0x82, - 0x7F, 0x43, 0x86, 0x31, 0x65, 0x34, 0xFA, 0x1B, - 0x7E, 0xE6, 0x33, 0xBA, 0x95, 0x8C, 0xED, 0x8F, - 0x0D, 0x24, 0x1D, 0x46, 0x88, 0xE3, 0xC7, 0x91, - 0x8E, 0x2A, 0x75, 0x62, 0x63, 0x77, 0xC3, 0x42, - 0xA5, 0x90, 0x69, 0x2B, 0xBF, 0xB8, 0x27, 0xBF, - 0x90, 0x51, 0x41, 0x82, 0xD4, 0x09, 0x0D, 0xF8, - 0xD7, 0x32, 0x35, 0x19, 0xA1, 0xAB, 0x6C, 0xD0, - 0x22, 0x73, 0x67, 0x41, 0x0D, 0xD1, 0x4D, 0x37, - 0x86, 0xA2, 0x6D, 0xDF, 0x91, 0x72, 0x4F, 0xC8, - 0x2D, 0x06, 0xA2, 0x5D, 0x5F, 0x56, 0x68, 0x39, - 0x53, 0xE8, 0xE0, 0xF2, 0x0E, 0x3C, 0x17, 0x71, - 0xDA, 0xF4, 0x2E, 0x52, 0x02, 0x4C, 0x11, 0x6E, - 0xD8, 0xA4, 0xC0, 0xA6, 0x11, 0x68, 0x0F, 0x5F, - 0xE0, 0x0E, 0xD9, 0xB1, 0x48, 0xD1, 0x5F, 0x12, - 0xAA, 0x95, 0xB9, 0xBD, 0x5A, 0x9F, 0xD8, 0x10, - 0x16, 0x42, 0xB3, 0x69, 0x11, 0xF3, 0x10, 0xB0, - 0xDE, 0x18, 0x17, 0x1D, 0x62, 0x37, 0xD9, 0xBE, - 0x17, 0x25, 0xDC, 0x29, 0x9A, 0x1A, 0x3A, 0xAA, - 0xE9, 0x85, 0x40, 0xCE, 0xED, 0x26, 0x95, 0x3D, - 0x10, 0xCE, 0x85, 0x47, 0xF1, 0xC3, 0xE4, 0x6A, - 0x86, 0x2B, 0xED, 0x42, 0x8D, 0x1E, 0x10, 0x60, - 0x1B, 0xF3, 0x28, 0xC7, 0x27, 0xFD, 0x95, 0x34, - 0x3E, 0x2D, 0xB4, 0xD9, 0xAC, 0xD5, 0xD1, 0xCB, - 0x47, 0x15, 0xF6, 0x00, 0x40, 0x96, 0xED, 0xA0, - 0x93, 0xD1, 0xB0, 0xA3, 0x3B, 0x1E, 0x56, 0xF1, - 0x6D, 0x73, 0xAD, 0xB8, 0x73, 0x2C, 0xB4, 0xA3, - 0x11, 0x60, 0xA4, 0x49, 0x1F, 0xAA, 0x0C, 0x86, - 0xE6, 0x80, 0xE3, 0xD7, 0xC0, 0x2C, 0xCE, 0xA8, - 0xFE, 0x92, 0xF1, 0xE0, 0x01, 0x01, 0x6D, 0x22, - 0x02, 0x21, 0xDD, 0x10, 0xED, 0x62, 0x60, 0x17, - 0x96, 0x6C, 0x34, 0x50, 0xAD, 0x12, 0x13, 0x65, - 0x91, 0x8C, 0x93, 0x09, 0x1F, 0x14, 0x71, 0x2B, - 0xA4, 0x77, 0xCF, 0x2E, 0x26, 0x32, 0x96, 0xC7, - 0x78, 0xA2, 0xBA, 0xEE, 0xF5, 0x84, 0x94, 0x55, - 0xFA, 0x35, 0xCB, 0x61, 0x72, 0x51, 0xE0, 0x2A, - 0x22, 0xDA, 0xF5, 0xC3, 0x3E, 0x5A, 0xAA, 0x9F, - 0x00, 0xE8, 0xAC, 0xDC, 0x50, 0xEC, 0xF4, 0x7C, - 0x52, 0x15, 0x03, 0xC5, 0x2F, 0x27, 0xD6, 0xB5, - 0x7C, 0x8F, 0x2B, 0x3D, 0x8F, 0x12, 0x22, 0x41, - 0x3E, 0x7F, 0xA4, 0xEC, 0x59, 0x29, 0x63, 0x38, - 0x09, 0x8C, 0x9A, 0xB5, 0xA1, 0xD8, 0xA5, 0x78, - 0x84, 0xBD, 0x86, 0x00, 0x41, 0x40, 0x6D, 0x96, - 0x55, 0xD1, 0x73, 0x82, 0x94, 0x9A, 0x03, 0xD5, - 0x0F, 0x11, 0x08, 0xD0, 0x5B, 0xDB, 0x31, 0xCA, - 0x08, 0xE6, 0x6F, 0x2D, 0x8D, 0xE4, 0x80, 0xC6, - 0x79, 0x35, 0x18, 0xD4, 0x9A, 0x60, 0xD4, 0x76, - 0x2A, 0x9E, 0xDD, 0xC0, 0x24, 0x9B, 0x42, 0x2E, - 0x84, 0x02, 0x0E, 0xD5, 0x39, 0xA1, 0x4E, 0x24, - 0x78, 0xF6, 0x8B, 0xAB, 0x1F, 0x2B, 0x00, 0xE2, - 0x2A, 0x5C, 0xBB, 0x62, 0x97, 0x9A, 0xC7, 0x44, - 0xE0, 0x8B, 0x57, 0xD5, 0xB5, 0x78, 0xC4, 0x01, - 0xA8, 0xD2, 0x6D, 0x9A, 0xDD, 0x15, 0x05, 0x23, - 0x60, 0x82, 0x86, 0x36, 0x72, 0xD9, 0x11, 0xCF, - 0x3A, 0x09, 0x66, 0xD3, 0x03, 0xF8, 0x91, 0x70, - 0x93, 0xBF, 0x97, 0xAF, 0x90, 0xA7, 0xE1, 0xF9, - 0xD5, 0x9B, 0x09, 0x20, 0x6B, 0x9C, 0xAC, 0x35, - 0x11, 0x0F, 0xA3, 0x8D, 0x58, 0x90, 0xED, 0x21, - 0x16, 0x83, 0x5C, 0xE3, 0x73, 0x84, 0xF5, 0x63, - 0x0F, 0x1C, 0x42, 0x8E, 0x21, 0x36, 0x05, 0x87, - 0x2E, 0xCF, 0x91, 0x1B, 0x01, 0x4B, 0x91, 0xC2, - 0xC6, 0x00, 0xE8, 0xA4, 0x07, 0x29, 0xD0, 0x7B, - 0xF9, 0x18, 0x79, 0x07, 0x42, 0xC9, 0x27, 0x9F, - 0x31, 0x14, 0xF6, 0x8C, 0xDF, 0x65, 0x94, 0xCD, - 0xA3, 0xCA, 0x66, 0x94, 0x22, 0x3A, 0x82, 0xF6, - 0x6C, 0x2B, 0x4B, 0xDF, 0x3E, 0x51, 0xC6, 0xFF, - 0xDC, 0x55, 0xE0, 0xFF, 0x51, 0xEF, 0xD6, 0xC9, - 0x34, 0x36, 0x2B, 0xE7, 0xD6, 0xFA, 0xBC, 0x11, - 0xB8, 0xB0, 0xDA, 0xDD, 0xD5, 0x21, 0x08, 0xFA, - 0x5F, 0xB5, 0xCA, 0x75, 0x8A, 0x64, 0x37, 0x7D, - 0x38, 0x6D, 0x45, 0xCE, 0x70, 0x60, 0x5B, 0x46, - 0x0E, 0x81, 0x57, 0x03, 0x7B, 0x5B, 0x1B, 0x2E, - 0x0A, 0xED, 0xD1, 0x2A, 0x63, 0x31, 0x15, 0xD6, - 0xC4, 0x3B, 0xC6, 0xC7, 0xC8, 0x36, 0xFF, 0xF3, - 0x3E, 0x7D, 0x03, 0x3F, 0x2E, 0x58, 0x00, 0x52, - 0x71, 0x64, 0xC0, 0xC4, 0x78, 0x1C, 0x37, 0xDF, - 0x50, 0xB6, 0x6B, 0xBA, 0x5C, 0x81, 0x94, 0x73, - 0xA1, 0xC5, 0x30, 0x20, 0x83, 0xA1, 0x6F, 0x01, - 0x43, 0x72, 0x79, 0xD2, 0xF2, 0xDF, 0x14, 0xC8, - 0x78, 0x26, 0x9A, 0x2F, 0x3F, 0xA4, 0x0C, 0x1C, - 0x76, 0x1E, 0xD6, 0x15, 0x01, 0xAC, 0x9E, 0xF1, - 0x41, 0x02, 0x90, 0x38, 0xC8, 0x19, 0x95, 0x40, - 0x89, 0xB7, 0x38, 0x09, 0x87, 0x08, 0x17, 0x43, - 0x93, 0xFE, 0xAE, 0xA7, 0xB0, 0x2A, 0xE5, 0xCE, - 0xF6, 0x7B, 0x3C, 0x8C, 0xE6, 0xA9, 0x70, 0x67, - 0x5C, 0xA1, 0xB8, 0xC8, 0x56, 0xDC, 0xF5, 0x97, - 0x25, 0x08, 0xC7, 0xC6, 0xB2, 0x5E, 0xE4, 0xD1, - 0x2D, 0x82, 0x12, 0xB9, 0x89, 0x40, 0xB4, 0x88, - 0xEC, 0x40, 0x2A, 0xC7, 0xAE, 0x3C, 0x70, 0xDF, - 0x93, 0x8D, 0x12, 0x88, 0xCD, 0xA7, 0xA3, 0x19, - 0xE0, 0x85, 0xBC, 0x73, 0xA4, 0x69, 0xB2, 0xD2, - 0xA3, 0x30, 0x3B, 0x11, 0xA6, 0x83, 0x10, 0x0A, - 0xF6, 0xDB, 0x86, 0x93, 0x7B, 0xA1, 0x18, 0x29, - 0x03, 0x61, 0x6E, 0x3F, 0x03, 0x47, 0xBD, 0x68, - 0x59, 0x1B, 0x47, 0xBA, 0x65, 0x15, 0x6B, 0x93, - 0xF2, 0x60, 0xDE, 0x59, 0xB3, 0xAE, 0xB2, 0x89, - 0xE2, 0xA7, 0x3A, 0x3B, 0xFF, 0x38, 0xC2, 0xF3, - 0xAD, 0xED, 0xA2, 0x9C, 0x7E, 0x90, 0x28, 0x3A, - 0xC7, 0xB8, 0x6D, 0x03, 0x6B, 0x47, 0xD5, 0xBA, - 0x1A, 0x03, 0xEC, 0x78, 0x3D, 0x25, 0x0B, 0xAC, - 0xAE, 0x58, 0x47, 0xE4, 0x1F, 0x82, 0x9C, 0xB3, - 0x3D, 0xE0, 0x8D, 0xF8, 0xF7, 0xD6, 0x9C, 0x9A, - 0xA4, 0xED, 0xE8, 0xD7, 0xAB, 0x96, 0x84, 0x07, - 0xEE, 0xD3, 0x1A, 0x05, 0x6B, 0xA0, 0xEF, 0x88, - 0x16, 0xE1, 0x27, 0xAA, 0x90, 0x06, 0x5A, 0x67, - 0x9E, 0x1C, 0xA9, 0x55, 0x0D, 0xEE, 0xF2, 0x5A, - 0xC5, 0xB7, 0xA3, 0x4F, 0x70, 0xDC, 0xF2, 0xB1, - 0x16, 0xCF, 0x35, 0x1F, 0x3B, 0xAD, 0xA9, 0x9F, - 0x83, 0x6C, 0x73, 0x0D, 0xCC, 0x1A, 0xE0, 0x3F, - 0x49, 0x6C, 0xF3, 0xF0, 0x38, 0x7A, 0x0C, 0x2C, - 0x70, 0x2E, 0x2C, 0x13, 0xBD, 0xD9, 0xCF, 0x45, - 0xA1, 0xCD, 0x53, 0xAB, 0x58, 0x73, 0x11, 0x88, - 0xB1, 0x8E, 0xA8, 0xBE, 0x48, 0xD5, 0x10, 0xC5, - 0x81, 0x2E, 0x90, 0xBC, 0xEC, 0xBC, 0x6E, 0x19, - 0x8E, 0x70, 0x8B, 0x1C, 0x08, 0xC8, 0xF8, 0x64, - 0xB1, 0x24, 0xBB, 0x4C, 0xC0, 0xBD, 0xBB, 0xDF, - 0x2C, 0x2F, 0x4E, 0x38, 0x8F, 0xC1, 0x96, 0x60, - 0xD6, 0x9C, 0xC2, 0xC0, 0xEB, 0xF9, 0x10, 0x08, - 0xC8, 0x24, 0x3D, 0xB4, 0x2D, 0xDA, 0xF5, 0x7C, - 0x02, 0x42, 0x51, 0xC4, 0x23, 0x1D, 0xF5, 0x37, - 0x90, 0xCE, 0x57, 0x56, 0x13, 0xEE, 0x8E, 0x1C, - 0x7A, 0x33, 0xC1, 0x56, 0x1F, 0x35, 0x04, 0xDE, - 0xAA, 0xED, 0x1E, 0x84, 0x08, 0x50, 0x06, 0x23, - 0xEC, 0xA5, 0xAE, 0x5A, 0x28, 0x45, 0x41, 0x17, - 0x49, 0x93, 0x0D, 0x8E, 0x42, 0x07, 0x8C, 0x03, - 0x23, 0x49, 0x95, 0x7F, 0xC3, 0x9A, 0x1D, 0xA0, - 0xEA, 0xF9, 0xE8, 0x7C, 0x31, 0xFF, 0xBF, 0x6A, - 0xC0, 0xC1, 0x81, 0x1E, 0xB2, 0x8A, 0x41, 0xB1, - 0xD8, 0x6B, 0xD7, 0xD4, 0x9A, 0xD1, 0xC4, 0x68, - 0xA4, 0x95, 0x94, 0x95, 0x65, 0x25, 0xA2, 0x0A, - 0x31, 0x70, 0x0F, 0x12, 0x2F, 0x4C, 0x4B, 0xB2, - 0x25, 0x2A, 0x2F, 0x3D, 0x5C, 0x5D, 0x68, 0x73, - 0x83, 0x8C, 0x90, 0x95, 0x97, 0xBB, 0xCA, 0xD8, - 0xE1, 0x33, 0x3D, 0x5D, 0x61, 0x7C, 0x87, 0xC8, - 0xEE, 0x0F, 0x1B, 0x22, 0x38, 0x3B, 0x42, 0x4B, - 0x4C, 0x5C, 0x62, 0x72, 0x98, 0xA3, 0xBE, 0xCC, - 0x1B, 0x32, 0x47, 0x5C, 0x9D, 0xB6, 0xB9, 0xBD, - 0xC6, 0xD6, 0xDC, 0xF5, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x19, 0x28, 0x34 - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - static const byte pk_65[] = { - 0x6C, 0x9E, 0x7A, 0x1E, 0xE3, 0x66, 0x25, 0x76, - 0x0E, 0x5D, 0x2F, 0x33, 0xDF, 0x29, 0x29, 0xDA, - 0x56, 0x20, 0x32, 0x34, 0x06, 0x91, 0x60, 0xE5, - 0xF2, 0xBF, 0x03, 0x9C, 0x11, 0x06, 0x22, 0x73, - 0x07, 0x3C, 0x23, 0x75, 0x66, 0xCE, 0x05, 0x5D, - 0x87, 0x1F, 0x38, 0xAC, 0xD1, 0xA9, 0x85, 0x9A, - 0x82, 0x44, 0x67, 0xF1, 0x9B, 0xE6, 0x8E, 0x4F, - 0x00, 0x64, 0x5D, 0x22, 0x5C, 0x42, 0xC8, 0x5A, - 0x55, 0x7D, 0x2C, 0x5E, 0xCB, 0x44, 0x2B, 0x0F, - 0x02, 0x8A, 0x65, 0x28, 0x89, 0x8E, 0xE2, 0xB6, - 0x73, 0xD8, 0x63, 0xF3, 0x2E, 0xB9, 0xEC, 0x81, - 0x64, 0x12, 0x75, 0x41, 0xF3, 0x25, 0x19, 0xBB, - 0x88, 0xE0, 0x34, 0xA0, 0x3F, 0x46, 0xF7, 0xD1, - 0x93, 0xCD, 0x3D, 0xFB, 0xAD, 0xF6, 0x35, 0x57, - 0x92, 0x6C, 0x5C, 0x8F, 0x5B, 0x76, 0x6A, 0x7F, - 0xC5, 0xEC, 0x8B, 0x3F, 0x94, 0x8B, 0xF7, 0xA8, - 0x21, 0xB5, 0x4C, 0x94, 0x41, 0xAB, 0x0B, 0xD8, - 0x33, 0xFD, 0x63, 0x54, 0xCE, 0xC7, 0x06, 0xFA, - 0xA5, 0x00, 0xAB, 0xB5, 0x28, 0x9B, 0x90, 0xB1, - 0xBF, 0x91, 0x76, 0x77, 0xA2, 0x9D, 0x11, 0x5F, - 0x00, 0x94, 0xBD, 0xB4, 0x8D, 0xC7, 0x2E, 0x26, - 0x1D, 0xBA, 0x12, 0x0B, 0xA6, 0xFF, 0x5E, 0x52, - 0xA0, 0x1B, 0x17, 0x89, 0x81, 0xDD, 0x82, 0x96, - 0x44, 0x46, 0x56, 0xD9, 0x44, 0x2D, 0xF9, 0xCB, - 0xB6, 0xBF, 0xDA, 0xE5, 0x6A, 0x23, 0x0F, 0x6F, - 0x29, 0xF9, 0x4C, 0xDC, 0xC2, 0x65, 0x57, 0x6A, - 0xA8, 0x75, 0x2A, 0xCE, 0xD0, 0x7E, 0x99, 0x89, - 0x5C, 0xAE, 0xF0, 0x16, 0x8B, 0xF8, 0x3D, 0x23, - 0xFD, 0xAD, 0xFB, 0xB9, 0x28, 0xCB, 0xCD, 0xAB, - 0xA2, 0x5F, 0xE2, 0xCD, 0x26, 0xAD, 0xDF, 0xB0, - 0xDA, 0xCD, 0x74, 0x94, 0x0F, 0x35, 0x14, 0x26, - 0x94, 0x2F, 0x17, 0x6F, 0xFB, 0xC5, 0xF3, 0x45, - 0x6D, 0xB7, 0xC9, 0x12, 0xAA, 0x16, 0xB8, 0x6D, - 0x07, 0x45, 0xF8, 0x7C, 0x9F, 0x45, 0x37, 0x0A, - 0x84, 0x56, 0xA1, 0xAD, 0xB5, 0x1D, 0xB4, 0x05, - 0x2B, 0x5C, 0x9E, 0xAF, 0x60, 0xAD, 0x7B, 0x80, - 0xA4, 0x2E, 0xA4, 0xBF, 0x92, 0xC8, 0x41, 0x27, - 0x3A, 0xD7, 0x61, 0xDE, 0xDB, 0x0D, 0x34, 0xBF, - 0x57, 0x96, 0x00, 0xB1, 0x49, 0xFC, 0xCD, 0x42, - 0xAB, 0x15, 0x49, 0xBA, 0x0A, 0xBE, 0xDA, 0x57, - 0xEF, 0x71, 0xD1, 0xFC, 0xA5, 0x70, 0x2A, 0xAD, - 0x08, 0x32, 0x99, 0xBB, 0x98, 0x30, 0x01, 0x89, - 0xC2, 0x5F, 0x3B, 0x27, 0x0A, 0x87, 0x65, 0x8D, - 0x0B, 0x2E, 0xA5, 0x65, 0x24, 0x14, 0x7F, 0x73, - 0x9E, 0xB6, 0xC6, 0x76, 0xD7, 0xBE, 0x73, 0xDD, - 0x3B, 0x95, 0xB1, 0x0C, 0x55, 0xAB, 0x46, 0xFD, - 0x01, 0x54, 0x9C, 0x51, 0x68, 0xBF, 0x7D, 0xA1, - 0x3A, 0x49, 0x97, 0x85, 0xF3, 0x5A, 0x1E, 0x3B, - 0x56, 0xF4, 0xC5, 0x67, 0xF5, 0x4E, 0xA9, 0xAA, - 0x28, 0x17, 0xA3, 0x36, 0x38, 0x36, 0x43, 0xFA, - 0x2E, 0xA3, 0x1F, 0xB1, 0xB7, 0x3E, 0x10, 0x24, - 0x8D, 0xFC, 0xA0, 0x5C, 0x04, 0x13, 0x12, 0x66, - 0x49, 0x8E, 0x1C, 0x94, 0x91, 0x13, 0x5A, 0x50, - 0xE6, 0x3D, 0x02, 0xFA, 0xDF, 0x41, 0x65, 0xFC, - 0x9E, 0x15, 0xE3, 0xE1, 0xB3, 0x2F, 0xAB, 0x83, - 0x37, 0x68, 0x4C, 0x49, 0x19, 0x3E, 0x1B, 0xC4, - 0xED, 0xEA, 0xE3, 0x73, 0xA2, 0x67, 0xA7, 0x14, - 0xAC, 0x1F, 0x90, 0x9C, 0xC6, 0x57, 0xCD, 0x80, - 0x66, 0x64, 0x63, 0x27, 0xE0, 0xEE, 0xA0, 0x41, - 0xAC, 0x9F, 0x2A, 0xEF, 0xFC, 0x80, 0x69, 0x1B, - 0xF6, 0x0D, 0x3C, 0x94, 0xC6, 0x42, 0x55, 0x7E, - 0x42, 0x99, 0xD3, 0x95, 0x92, 0x22, 0x16, 0xC6, - 0x5E, 0x75, 0xB7, 0xE1, 0xA5, 0x02, 0x89, 0x60, - 0x38, 0x4B, 0xF8, 0x16, 0xC9, 0xF7, 0x05, 0x48, - 0x29, 0xE7, 0x98, 0x5B, 0x58, 0x41, 0xA7, 0x33, - 0xF3, 0x3F, 0xCE, 0x24, 0x55, 0xEF, 0xC8, 0x9B, - 0xAE, 0x84, 0xB4, 0x79, 0x90, 0xE8, 0xD0, 0xAF, - 0xC6, 0x19, 0x3E, 0x4A, 0xF9, 0xBC, 0x68, 0x0A, - 0xE2, 0x4F, 0xE5, 0x91, 0xE8, 0x8B, 0xA6, 0xA2, - 0xAE, 0x12, 0xDA, 0x38, 0x58, 0xD2, 0x1F, 0x49, - 0x2D, 0x24, 0xAB, 0xC4, 0xFE, 0x4F, 0xD5, 0x2D, - 0x5A, 0xBF, 0x24, 0xBD, 0x25, 0x46, 0x87, 0xB9, - 0x18, 0x79, 0x2F, 0x0A, 0x00, 0x3A, 0x52, 0x22, - 0xDF, 0x45, 0x03, 0x86, 0x85, 0xC7, 0x25, 0xCE, - 0x75, 0x79, 0xE0, 0x2C, 0xB1, 0x68, 0xBB, 0xC6, - 0x66, 0xAB, 0xF6, 0x69, 0x85, 0x6E, 0x10, 0x53, - 0x7C, 0x92, 0x91, 0x69, 0x2C, 0x0C, 0xB0, 0xCF, - 0xA9, 0x06, 0x27, 0x0A, 0xC2, 0xC7, 0xB7, 0xDC, - 0x31, 0xD4, 0xF9, 0x28, 0x3C, 0xB2, 0xDB, 0x8A, - 0x46, 0x2A, 0xEC, 0x0B, 0x98, 0x07, 0xBB, 0xF4, - 0xAB, 0x45, 0x76, 0xFE, 0xC6, 0x22, 0x6B, 0x41, - 0x79, 0x32, 0x2B, 0x67, 0xAE, 0xA5, 0x3B, 0xDD, - 0xF9, 0xC9, 0xBE, 0x5E, 0x0D, 0xBC, 0x43, 0xF7, - 0x87, 0x43, 0x06, 0x8A, 0xB5, 0xBE, 0x49, 0xF0, - 0xE6, 0x2F, 0x8E, 0x2E, 0xB1, 0xB6, 0xC6, 0x73, - 0x6C, 0x05, 0xC9, 0x41, 0x3D, 0x06, 0x5C, 0xE0, - 0xCC, 0xB7, 0x90, 0x54, 0x80, 0x41, 0xD7, 0xE8, - 0x32, 0x88, 0x1A, 0x83, 0x9B, 0x57, 0x29, 0xAF, - 0x94, 0xAB, 0x79, 0xFD, 0x8A, 0x16, 0xDF, 0xFF, - 0x78, 0xCA, 0xAA, 0x14, 0x1D, 0x97, 0xCC, 0x06, - 0x50, 0xF8, 0x62, 0x62, 0xF2, 0x61, 0x59, 0xBE, - 0x8B, 0x36, 0x1A, 0x4A, 0x04, 0x1E, 0x9A, 0x0B, - 0x65, 0x11, 0xBB, 0xE3, 0x35, 0x5A, 0x4B, 0xF5, - 0x7A, 0xC0, 0x98, 0x48, 0x84, 0x7E, 0xE0, 0x24, - 0x3C, 0x3B, 0xA7, 0x74, 0x77, 0x6F, 0x7E, 0x9A, - 0x22, 0x72, 0x75, 0xD7, 0x4E, 0x6E, 0x31, 0x01, - 0xD3, 0x82, 0x81, 0x87, 0x63, 0xED, 0x1E, 0x13, - 0x53, 0xAB, 0x9E, 0xEC, 0xCD, 0x92, 0x0C, 0xD2, - 0x89, 0x22, 0xD5, 0x59, 0xA4, 0x04, 0x8F, 0x40, - 0xF0, 0x62, 0x16, 0x4C, 0xB6, 0x61, 0xC4, 0xF4, - 0xAF, 0xA8, 0x1A, 0x3D, 0x55, 0x93, 0x3C, 0x47, - 0x91, 0xED, 0xDA, 0xA3, 0x93, 0x9E, 0x5A, 0xC3, - 0x42, 0xB0, 0xAD, 0x1F, 0x43, 0x8A, 0x53, 0x2C, - 0x6C, 0xE7, 0x86, 0x68, 0x1A, 0x87, 0x0D, 0x94, - 0xEC, 0x88, 0xA3, 0x34, 0xCC, 0xEF, 0xC6, 0xAC, - 0xE7, 0xD9, 0x88, 0xA1, 0xA8, 0x2B, 0xC0, 0xAC, - 0xCE, 0x78, 0x5F, 0x12, 0x3B, 0xE2, 0x3A, 0x7C, - 0x92, 0xAF, 0x10, 0x8E, 0x5E, 0xD4, 0xF0, 0x86, - 0x9E, 0x22, 0xDA, 0xE2, 0x73, 0x55, 0x6D, 0x1D, - 0xE3, 0x86, 0x62, 0x3A, 0x6C, 0x3F, 0x11, 0x5B, - 0xBD, 0x11, 0x92, 0x71, 0xD3, 0xFB, 0xA7, 0x96, - 0xF6, 0x18, 0xB5, 0x39, 0x59, 0xFB, 0x98, 0x01, - 0x2E, 0x7D, 0x5B, 0x9A, 0xC6, 0x88, 0x94, 0x0B, - 0x87, 0xE2, 0xC9, 0xC0, 0x65, 0x52, 0x4A, 0x00, - 0xD3, 0xA4, 0xF4, 0xDB, 0xF5, 0x2F, 0x4B, 0x1A, - 0x63, 0xEF, 0x5C, 0x46, 0x19, 0x3B, 0xAD, 0xF7, - 0xAD, 0x7F, 0x98, 0x8D, 0x44, 0x64, 0x34, 0x5B, - 0x2C, 0x3E, 0x54, 0x96, 0x84, 0xF2, 0xF9, 0x05, - 0xF6, 0xF8, 0x9D, 0xD6, 0x41, 0x47, 0x3E, 0xC0, - 0x51, 0x08, 0xA5, 0x2D, 0x8D, 0xBB, 0x91, 0x76, - 0x8C, 0x54, 0x1D, 0xE5, 0x20, 0xB1, 0x76, 0x66, - 0x97, 0x0A, 0xAE, 0xB5, 0x06, 0xE7, 0x5D, 0x8E, - 0xE9, 0xF4, 0xB4, 0x45, 0x5B, 0x71, 0xE0, 0x08, - 0x8A, 0xB2, 0x56, 0x55, 0x21, 0x3B, 0x75, 0x85, - 0x9D, 0x25, 0xF5, 0x59, 0xD3, 0xC3, 0x24, 0xD2, - 0x83, 0xD3, 0x97, 0xAB, 0xE6, 0xF0, 0xAA, 0xA3, - 0x86, 0x81, 0x57, 0x68, 0xD0, 0x33, 0x57, 0xD7, - 0x75, 0x96, 0x49, 0x02, 0x41, 0x31, 0x53, 0xE3, - 0x56, 0x0C, 0xCE, 0xF1, 0xFD, 0x44, 0xB6, 0x5F, - 0xF1, 0xB2, 0x87, 0xA9, 0x2A, 0x96, 0x93, 0xF0, - 0x34, 0xB7, 0xEE, 0x66, 0x89, 0x34, 0x70, 0x2D, - 0x75, 0x01, 0xCA, 0xF6, 0xDA, 0x4E, 0xE9, 0x8A, - 0xF4, 0xE8, 0xE6, 0x4B, 0x03, 0x40, 0xE0, 0xBB, - 0x8B, 0xDC, 0x53, 0x3B, 0x0E, 0xFE, 0xE1, 0x91, - 0x5A, 0x4B, 0x68, 0xB9, 0x3C, 0x5E, 0x95, 0x32, - 0x1E, 0xED, 0xC2, 0x34, 0xAE, 0xFE, 0x71, 0xAE, - 0x2E, 0x5D, 0xAC, 0xEC, 0x2F, 0x52, 0xF8, 0x37, - 0x23, 0xA2, 0x39, 0x2A, 0x7F, 0x8E, 0x13, 0xBC, - 0x03, 0x01, 0xCD, 0x10, 0x4D, 0x85, 0x2E, 0x62, - 0xA7, 0xF8, 0x28, 0xAD, 0x32, 0x9B, 0x3D, 0x95, - 0x96, 0xC5, 0x8E, 0x13, 0xFC, 0xC0, 0xED, 0x96, - 0xC1, 0xC4, 0x8D, 0x82, 0xA2, 0xC0, 0xF4, 0xD9, - 0xD2, 0x4D, 0xD8, 0x42, 0x1F, 0xDC, 0xCE, 0xFD, - 0x49, 0x7A, 0x9B, 0x05, 0xFF, 0xC5, 0x09, 0x04, - 0x77, 0x04, 0x01, 0x37, 0x3F, 0xEE, 0x7D, 0xC7, - 0x37, 0x73, 0x41, 0x8A, 0xEB, 0x4A, 0x1F, 0x59, - 0x9A, 0x4B, 0xB3, 0x8E, 0xDE, 0x8D, 0x10, 0xA3, - 0xCC, 0x83, 0xA1, 0xC7, 0x2D, 0xE9, 0x21, 0x96, - 0x9E, 0x3C, 0xE3, 0xE8, 0xEF, 0x2F, 0x7D, 0xA8, - 0x9D, 0x34, 0x4C, 0x80, 0xD6, 0x1C, 0xF9, 0xC5, - 0xA4, 0x23, 0xB1, 0xA4, 0xF3, 0x56, 0x7D, 0x96, - 0xDB, 0x2D, 0xA3, 0xDB, 0x9B, 0x5B, 0x5F, 0xA6, - 0x81, 0x56, 0xBE, 0x74, 0x52, 0xC8, 0xA0, 0x18, - 0x1B, 0xB9, 0xF0, 0xDC, 0x75, 0xCD, 0x97, 0x50, - 0x88, 0x3D, 0x0D, 0xDA, 0xE5, 0x3F, 0xC1, 0x56, - 0xD6, 0x7A, 0x74, 0x20, 0x08, 0x69, 0x04, 0x6B, - 0x41, 0xDF, 0x4B, 0xC4, 0x39, 0x69, 0x93, 0xC0, - 0x8A, 0xA4, 0x89, 0x7A, 0x0B, 0xDD, 0xEF, 0xB5, - 0x5F, 0x69, 0xCC, 0x1C, 0x4D, 0x7B, 0x5F, 0xB1, - 0x50, 0x40, 0x84, 0x27, 0xB4, 0x16, 0xF7, 0x31, - 0x83, 0xF2, 0xB3, 0xCC, 0x16, 0xE3, 0xB7, 0xDA, - 0x63, 0xCE, 0xE1, 0x14, 0x3A, 0xDA, 0x1A, 0x05, - 0x66, 0x26, 0xA0, 0x77, 0xB6, 0xD2, 0x1C, 0x3D, - 0xD9, 0x74, 0xED, 0x90, 0x7C, 0x5A, 0x09, 0x40, - 0x19, 0x22, 0x57, 0x37, 0xEF, 0xB9, 0x33, 0x19, - 0xAD, 0x3B, 0x40, 0xA4, 0xF4, 0x34, 0xAE, 0x49, - 0xD2, 0x83, 0x91, 0xC1, 0x7A, 0x99, 0x9C, 0x74, - 0x4A, 0x68, 0xC5, 0x5A, 0x91, 0xB8, 0x62, 0x72, - 0x95, 0x83, 0xD3, 0xDA, 0x46, 0xEE, 0x70, 0xC5, - 0xCC, 0x46, 0x16, 0x94, 0x16, 0x7D, 0x32, 0xD2, - 0x1D, 0xE7, 0x53, 0x27, 0x73, 0x2C, 0x63, 0xBB, - 0xFB, 0xD7, 0xB3, 0x0D, 0xBF, 0x20, 0x57, 0xA0, - 0xD6, 0x81, 0x51, 0x9F, 0x6E, 0x4A, 0xF6, 0x08, - 0xD4, 0xBC, 0xD0, 0xB4, 0x75, 0x07, 0x26, 0x77, - 0x0E, 0x15, 0x6A, 0xED, 0xE8, 0x54, 0x17, 0xBD, - 0x75, 0x9D, 0x5F, 0xFE, 0x40, 0x1C, 0xB2, 0x99, - 0x6F, 0x34, 0x43, 0x4D, 0xB4, 0x28, 0xD9, 0xA4, - 0x17, 0x03, 0x72, 0x01, 0xFC, 0xD2, 0x60, 0xFA, - 0xA9, 0x80, 0x84, 0x50, 0x2E, 0xED, 0x5C, 0x27, - 0xA8, 0x91, 0x6E, 0x44, 0xF5, 0x92, 0x98, 0x19, - 0xD2, 0x1A, 0x69, 0xCE, 0x16, 0xBC, 0xDC, 0x3C, - 0xC8, 0x14, 0x1E, 0x28, 0x5E, 0xF8, 0x97, 0xB1, - 0x40, 0x2C, 0x15, 0xC9, 0x52, 0x59, 0x01, 0x19, - 0x05, 0x1E, 0x36, 0x9A, 0x1B, 0x7B, 0xE4, 0x43, - 0xFE, 0xAE, 0x6E, 0x32, 0xBC, 0x8F, 0x3D, 0x64, - 0x7F, 0xC5, 0x31, 0x5A, 0x52, 0x00, 0xCD, 0x52, - 0x38, 0xDC, 0x66, 0x77, 0x46, 0x6E, 0xA8, 0x6E, - 0xF8, 0xD1, 0x8E, 0x5A, 0x79, 0xF2, 0x62, 0x48, - 0x3E, 0x89, 0x6B, 0x82, 0x77, 0xC7, 0x41, 0xF5, - 0x16, 0xFC, 0x04, 0x0C, 0x10, 0x90, 0xF2, 0x49, - 0x5B, 0xF1, 0x65, 0x0B, 0x02, 0xAF, 0x30, 0x45, - 0x67, 0x33, 0xA0, 0x71, 0xAF, 0x47, 0xD7, 0xA1, - 0x5B, 0xD8, 0xE3, 0x2A, 0x49, 0x80, 0x64, 0x55, - 0xD3, 0xBE, 0xA7, 0x4A, 0xEF, 0x5D, 0x00, 0x90, - 0x6A, 0xD2, 0xF0, 0xC0, 0x45, 0x35, 0x4E, 0xFD, - 0xE7, 0xC9, 0xA2, 0x76, 0xE7, 0x3D, 0x9E, 0xDD, - 0x11, 0xD1, 0xCA, 0x5C, 0x29, 0x7B, 0x9A, 0x68, - 0x51, 0xE7, 0xF6, 0x7E, 0x21, 0xEB, 0x06, 0x1B, - 0xB5, 0x5D, 0x9E, 0x67, 0x3C, 0x4A, 0x75, 0xFE, - 0xB8, 0x4D, 0x52, 0x62, 0x9E, 0xEC, 0xC5, 0x3C, - 0x24, 0xBE, 0xA9, 0x51, 0x53, 0x05, 0x1A, 0xC2, - 0x06, 0xC8, 0x7D, 0xF5, 0x54, 0x10, 0xCA, 0x1F, - 0xE6, 0xCF, 0xC3, 0xF4, 0x03, 0xA6, 0xD9, 0xD4, - 0x3E, 0xA8, 0x4C, 0x60, 0xC9, 0x45, 0xE6, 0x42, - 0xB2, 0x83, 0x63, 0x38, 0xB5, 0xAF, 0x9F, 0x69, - 0xE5, 0x27, 0x08, 0xB2, 0xE2, 0x25, 0x93, 0x3D, - 0xB3, 0x20, 0xBB, 0x3F, 0x79, 0x0D, 0x39, 0x7F, - 0x22, 0xD7, 0xB6, 0xF8, 0xA4, 0x33, 0xCD, 0xAC, - 0xE9, 0x81, 0x0A, 0xA0, 0xE2, 0x7C, 0x69, 0x95, - 0x55, 0x53, 0x0C, 0x56, 0x2D, 0xBF, 0x75, 0x17, - 0xA4, 0x16, 0x26, 0x28, 0xBF, 0x10, 0xD1, 0xB6, - 0xDB, 0xAC, 0xEF, 0x5C, 0x9E, 0xD5, 0x1E, 0x55, - 0xD9, 0xA8, 0x9D, 0x60, 0xE0, 0xFC, 0x37, 0x8C, - 0x47, 0xA2, 0x1D, 0x5E, 0x0F, 0x2D, 0xC3, 0xBC, - 0xEF, 0x5E, 0x05, 0xC6, 0xE0, 0x26, 0x15, 0x30, - 0xFB, 0x02, 0x7E, 0x50, 0x32, 0x55, 0x8C, 0xA2, - 0xB4, 0x70, 0x05, 0xBD, 0xDE, 0x99, 0x90, 0x99, - 0x30, 0x39, 0x1E, 0xAD, 0x7F, 0x3F, 0x0A, 0x96, - 0xB3, 0xDE, 0xDA, 0x54, 0xA1, 0x11, 0x45, 0xF5, - 0x30, 0xE5, 0x1D, 0xEF, 0x89, 0x2E, 0x5A, 0xB0, - 0x20, 0x4D, 0x61, 0x4E, 0x6E, 0x38, 0xAF, 0xE7, - 0x9C, 0xA9, 0x2C, 0x28, 0x15, 0x8D, 0x57, 0x01, - 0x20, 0x35, 0x3B, 0x7A, 0x4D, 0xE0, 0x88, 0x98, - 0x46, 0xD8, 0x35, 0x29, 0x49, 0x39, 0x55, 0x7E, - 0xD0, 0xAE, 0xDA, 0x27, 0x0D, 0x4D, 0x73, 0xED, - 0x84, 0xD3, 0xD4, 0x9F, 0x9F, 0x03, 0x2D, 0x43, - 0x45, 0x7B, 0xF5, 0x9B, 0xB7, 0xD6, 0x63, 0x59, - 0xDC, 0x53, 0xF9, 0xB4, 0x69, 0x63, 0xB2, 0x17, - 0x84, 0xB0, 0x6C, 0xBC, 0xF0, 0x4B, 0xEC, 0x1E, - 0x33, 0xA3, 0x33, 0x71, 0x53, 0x27, 0x16, 0xC9, - 0xED, 0xB3, 0xFB, 0xED, 0xB8, 0x19, 0x99, 0xB4, - 0x37, 0x2D, 0x09, 0x45, 0xC1, 0x0A, 0xE8, 0x26, - 0xC6, 0x0F, 0xFE, 0x93, 0x17, 0x0B, 0x6D, 0x29, - 0x4B, 0x38, 0x91, 0xB0, 0xD2, 0xA7, 0xB3, 0x5B, - 0x28, 0xA8, 0x97, 0x18, 0x45, 0xDC, 0x2F, 0xEC, - 0xE2, 0x37, 0xB8, 0x0F, 0x20, 0xB3, 0x79, 0xCC, - 0x4D, 0x13, 0x6D, 0xAB, 0x3F, 0xBB, 0x37, 0x92, - 0xC6, 0x3E, 0xC6, 0x1F, 0x5C, 0x75, 0x5B, 0xC9, - 0xDB, 0x35, 0x08, 0x6F, 0xBF, 0x46, 0xD2, 0xB7, - 0x97, 0x0D, 0xCA, 0x2A, 0x85, 0x23, 0xFD, 0xB4, - 0xC7, 0xA0, 0xB8, 0xE4, 0x2F, 0x8A, 0xF9, 0xAC, - 0xAD, 0x2A, 0x0E, 0xFC, 0x11, 0x36, 0x02, 0xA4, - 0xEA, 0x62, 0xE4, 0xEB, 0xB7, 0xD2, 0x69, 0xC3, - 0xA4, 0x0B, 0xA2, 0xC4, 0x4E, 0xDD, 0x29, 0x56 - }; - static const byte msg_65[] = { - 0xC4, 0xF5, 0x9F, 0xA2, 0xDE, 0x30, 0xC8, 0x42, - 0x0A, 0x7E, 0x7F, 0x09, 0x6B, 0xAF, 0x6A, 0xD6, - 0x9B, 0x1C, 0x15, 0xA5, 0xC6, 0xE6, 0x1C, 0x9D, - 0x82, 0xAF, 0xCF, 0xDB, 0x6E, 0xB8, 0xF2, 0x75, - 0xBF, 0x57, 0x87, 0x18, 0x6A, 0xAE, 0x78, 0x1F, - 0x48, 0x7F, 0x9F, 0x88, 0x75, 0x8C, 0x9C, 0x61, - 0xF3, 0x5D, 0x50, 0x83, 0xEE, 0x70, 0x42, 0x4B, - 0x0D, 0x0A, 0x51, 0x57, 0x50, 0x10, 0xC2, 0xA9, - 0x07, 0xF4, 0x96, 0x08, 0x11, 0x5D, 0x33, 0xEB, - 0xA0, 0x03, 0x15, 0x09, 0x32, 0x2A, 0xA7, 0xD3, - 0x06, 0x1F, 0xEC, 0x31, 0x62, 0xF9, 0x6A, 0x56, - 0x5F, 0x98, 0x76, 0x9E, 0x9A, 0x19, 0x23, 0x5D, - 0x89, 0xD1, 0xB2, 0x1D, 0x60, 0xA3, 0x81, 0xDF, - 0x8E, 0xB3, 0x7D, 0x58, 0xC6, 0xA2, 0xE4, 0x83, - 0xA8, 0xEB, 0x70, 0x73, 0x6E, 0x4B, 0x7B, 0xB9, - 0x11, 0xF7, 0xAB, 0x92, 0x3D, 0xC2, 0x9F, 0x1E - }; - static const byte sig_65[] = { - 0xE8, 0x95, 0xDB, 0x64, 0xC5, 0x7B, 0xC3, 0xC2, - 0xA9, 0x7F, 0x0E, 0xC9, 0x33, 0x41, 0x0E, 0x98, - 0xF6, 0x21, 0x61, 0x03, 0xE3, 0x42, 0x3C, 0xAF, - 0x06, 0xA6, 0x71, 0x96, 0x4C, 0x51, 0x4A, 0x69, - 0x4E, 0xB6, 0xF6, 0x5C, 0xBD, 0x11, 0x37, 0xCC, - 0xCF, 0x88, 0x81, 0xFA, 0x40, 0x3C, 0x5F, 0xA0, - 0xE0, 0xB2, 0xF3, 0x6B, 0x9F, 0x40, 0x09, 0xC3, - 0x78, 0x21, 0x0D, 0x29, 0xE5, 0x4A, 0x7A, 0x5A, - 0x9B, 0x79, 0x31, 0x97, 0xCD, 0x6D, 0x2F, 0x38, - 0xD7, 0xE1, 0xF3, 0xAC, 0xA6, 0x9D, 0x48, 0x88, - 0x13, 0x89, 0x38, 0x1C, 0x89, 0xFA, 0x67, 0x6D, - 0xE4, 0x26, 0xD6, 0x34, 0xF9, 0xA1, 0x57, 0x05, - 0x5F, 0x17, 0x28, 0x3E, 0xCE, 0x82, 0x48, 0xCA, - 0xF1, 0x4D, 0xCF, 0x11, 0xE2, 0xD5, 0x63, 0x55, - 0xB0, 0x47, 0xDF, 0x63, 0x2A, 0x18, 0x48, 0x2E, - 0x79, 0xCB, 0x2D, 0x5A, 0x74, 0x39, 0x66, 0xBA, - 0xA8, 0xA7, 0x61, 0x21, 0xBB, 0x69, 0xC2, 0xE6, - 0x81, 0x55, 0xAC, 0xCB, 0x0A, 0x31, 0xDA, 0x6E, - 0xDC, 0x73, 0xCB, 0x09, 0xA9, 0xE6, 0x60, 0xFE, - 0xB2, 0x0F, 0x66, 0xC7, 0xBD, 0x96, 0x7A, 0xDE, - 0x32, 0x14, 0x9C, 0x55, 0x52, 0xEA, 0xEB, 0x2E, - 0xA1, 0x75, 0xB5, 0x62, 0x33, 0xF3, 0xB3, 0x70, - 0xED, 0xD8, 0x67, 0x92, 0x69, 0xCE, 0x0D, 0x2B, - 0x43, 0xF6, 0xB2, 0xF6, 0x5F, 0xE9, 0x57, 0xE7, - 0xAB, 0x37, 0xB9, 0x82, 0x04, 0x37, 0x54, 0xEA, - 0xC8, 0xA3, 0x0B, 0x36, 0xC1, 0x00, 0x04, 0xEF, - 0x13, 0xC6, 0x92, 0xE2, 0x19, 0xAA, 0x7A, 0xF0, - 0xA4, 0xC5, 0x28, 0x69, 0x10, 0xC7, 0x10, 0x0D, - 0xA4, 0x1E, 0x17, 0xBB, 0xEF, 0x2D, 0xA2, 0xAB, - 0x03, 0xAD, 0xF3, 0x07, 0x4B, 0xA1, 0xDA, 0x15, - 0xBC, 0xC8, 0x48, 0x05, 0xB8, 0x9B, 0x9D, 0xA8, - 0x8E, 0x9B, 0x40, 0x0A, 0xFB, 0x7E, 0x3B, 0xC8, - 0x33, 0x8D, 0x35, 0x4D, 0xA9, 0x53, 0xAC, 0x0B, - 0xAD, 0x82, 0x27, 0x56, 0xCA, 0x92, 0xE5, 0xDD, - 0x95, 0x07, 0xF4, 0x2B, 0xFE, 0xFC, 0xCB, 0x32, - 0xB4, 0xB9, 0x1A, 0x2B, 0xE5, 0xEF, 0x34, 0xC2, - 0xCF, 0x11, 0x77, 0xEA, 0xAF, 0xB2, 0x50, 0xAC, - 0x9A, 0xDE, 0xC4, 0xBE, 0x71, 0x80, 0x75, 0x89, - 0xF1, 0x00, 0x32, 0x27, 0xF9, 0xB7, 0x6B, 0x74, - 0xE0, 0x7B, 0xA6, 0x7A, 0xC6, 0x08, 0x19, 0xB2, - 0xAF, 0x76, 0x6A, 0x47, 0xFF, 0xFC, 0x7B, 0x76, - 0xD3, 0xA7, 0xC0, 0x77, 0xF5, 0xEC, 0x69, 0xAE, - 0xEA, 0x3E, 0x96, 0x38, 0x59, 0xB8, 0x2C, 0x2A, - 0xDE, 0x58, 0xBE, 0xC2, 0x15, 0x2E, 0xC8, 0x20, - 0x51, 0x10, 0x97, 0x5D, 0x37, 0xC6, 0x50, 0x5E, - 0x0D, 0xC7, 0x76, 0xFD, 0xE0, 0x71, 0x09, 0x7E, - 0x93, 0x01, 0x3D, 0x10, 0x04, 0xF4, 0xE1, 0xA2, - 0xFD, 0x79, 0xB8, 0x77, 0xED, 0x50, 0x25, 0xF5, - 0x27, 0xF3, 0xBF, 0xF1, 0x37, 0xF0, 0x41, 0xBB, - 0x9B, 0xD0, 0x01, 0xE9, 0x49, 0xF0, 0x8B, 0x4C, - 0xF8, 0x8D, 0xFD, 0x32, 0xFC, 0x7C, 0xDB, 0xCE, - 0xCC, 0xFD, 0xB0, 0xFA, 0x2D, 0xE7, 0x82, 0x3E, - 0x11, 0x0B, 0xCF, 0xF5, 0x8A, 0x41, 0x2C, 0xEA, - 0x27, 0x95, 0x75, 0x3E, 0x9C, 0x89, 0x67, 0x8C, - 0x3A, 0xE2, 0x42, 0x68, 0xF7, 0x48, 0x9F, 0x72, - 0x97, 0x4B, 0x69, 0x55, 0xED, 0xD0, 0x4E, 0x19, - 0x0D, 0x99, 0xBB, 0x0D, 0x7A, 0x25, 0x2F, 0xAD, - 0x5B, 0xBA, 0x60, 0x6C, 0x1A, 0x1F, 0x3A, 0xCA, - 0x73, 0x3B, 0xFA, 0xE3, 0x30, 0x9E, 0xA0, 0xA6, - 0xEB, 0x7D, 0x07, 0xE3, 0x6D, 0x8C, 0xA3, 0x36, - 0xD2, 0x64, 0x4F, 0xCE, 0x1A, 0x41, 0x89, 0x5D, - 0x01, 0x4D, 0x1A, 0x60, 0xCB, 0x10, 0x6F, 0x3F, - 0x80, 0x75, 0xF9, 0x37, 0x84, 0x61, 0x73, 0x8D, - 0x63, 0xD1, 0x15, 0xD0, 0x0B, 0x02, 0x4C, 0x67, - 0x78, 0x01, 0x05, 0x0A, 0x1B, 0x0B, 0x50, 0xDE, - 0x05, 0x7F, 0x85, 0xDB, 0x6A, 0xEB, 0x2C, 0x9D, - 0x6B, 0xB7, 0x40, 0x2A, 0x66, 0xE3, 0xAB, 0x4D, - 0xB0, 0x5C, 0x58, 0xBB, 0xDA, 0x12, 0xF6, 0x95, - 0x95, 0x8B, 0x8A, 0xC7, 0xB4, 0xE4, 0x5E, 0xC6, - 0xC9, 0x52, 0xF6, 0x79, 0xC1, 0xEE, 0xBD, 0xF8, - 0x60, 0xE3, 0x48, 0x98, 0x27, 0x79, 0xAA, 0x69, - 0x88, 0xEF, 0xC2, 0xAD, 0x1D, 0xC1, 0xEA, 0xE2, - 0x2A, 0x27, 0xA5, 0xB2, 0xC6, 0x1C, 0x97, 0xB3, - 0xB2, 0x49, 0x3C, 0xB6, 0xC1, 0x3C, 0x5F, 0x6E, - 0x20, 0xA6, 0x7B, 0x88, 0xD3, 0xC3, 0xAC, 0xCF, - 0xAF, 0x0A, 0x42, 0x57, 0x42, 0xDF, 0x24, 0x06, - 0x34, 0xD1, 0xEE, 0x59, 0x38, 0x28, 0xFE, 0x62, - 0x97, 0x44, 0x6C, 0x07, 0x6F, 0x97, 0x90, 0x55, - 0x98, 0x8A, 0xB8, 0x34, 0xB2, 0xBD, 0x82, 0xE1, - 0x4D, 0xC0, 0x86, 0x40, 0x0E, 0x1C, 0x95, 0x6C, - 0xC0, 0xC3, 0x0C, 0xE7, 0xBF, 0xD9, 0x62, 0x22, - 0x3D, 0x23, 0xFE, 0x94, 0x94, 0x96, 0x4A, 0x81, - 0x1B, 0x93, 0xE8, 0xD7, 0xB8, 0xF3, 0x4C, 0x89, - 0xAA, 0xD4, 0x5D, 0xD4, 0x11, 0x3F, 0x2A, 0xE7, - 0xBD, 0x94, 0xB5, 0x3F, 0xC8, 0x6E, 0x8B, 0x2A, - 0xE8, 0x2E, 0x51, 0xEC, 0x6F, 0x3E, 0xA4, 0xC3, - 0x0D, 0x60, 0xB8, 0x60, 0x72, 0x74, 0x86, 0x12, - 0xD1, 0x60, 0x70, 0x56, 0xB5, 0xFF, 0x6A, 0x45, - 0x00, 0xEE, 0xE7, 0x8A, 0x5A, 0x63, 0x9C, 0x7B, - 0x74, 0x16, 0x97, 0x77, 0x62, 0x68, 0x64, 0xDD, - 0x9E, 0xAE, 0xF0, 0xE3, 0xAD, 0x84, 0x93, 0xD8, - 0x31, 0xF7, 0x1D, 0xEA, 0x95, 0xBB, 0xFC, 0xF8, - 0x14, 0x23, 0xA2, 0x66, 0xDE, 0x56, 0xF3, 0xA8, - 0xFE, 0x8E, 0x6C, 0x3C, 0x0D, 0x61, 0x2F, 0xB6, - 0x2B, 0xD6, 0x42, 0x18, 0x8C, 0xA7, 0x1C, 0xB8, - 0x98, 0x34, 0xF3, 0x0B, 0xCC, 0x28, 0xBD, 0x17, - 0x88, 0x45, 0xF1, 0xF6, 0xF4, 0x6C, 0x03, 0xD3, - 0x06, 0xF7, 0xED, 0x4E, 0x68, 0x75, 0x94, 0x27, - 0xAE, 0xC2, 0x70, 0x11, 0x98, 0xC3, 0xC0, 0x5D, - 0x38, 0x5D, 0xFA, 0xFD, 0x52, 0x8C, 0xCE, 0x84, - 0x25, 0xBC, 0x55, 0x14, 0x69, 0xA0, 0xED, 0x68, - 0x1B, 0xEE, 0x4D, 0x12, 0xA8, 0x43, 0xE3, 0x33, - 0xB5, 0xA8, 0xE0, 0x51, 0x7F, 0xC6, 0x19, 0x06, - 0xF9, 0xC4, 0xE7, 0x80, 0x9B, 0xAE, 0xD4, 0xD3, - 0xD1, 0x6E, 0xB2, 0x2F, 0x1F, 0xA9, 0xAB, 0x40, - 0x2D, 0x98, 0x8E, 0xD5, 0x9F, 0x9F, 0xED, 0x04, - 0x55, 0xE9, 0x26, 0x0F, 0xD6, 0x27, 0xA2, 0x4A, - 0x17, 0xFE, 0x7C, 0xB6, 0x3E, 0x53, 0x0B, 0x48, - 0xF5, 0xFB, 0x66, 0x87, 0xA2, 0xE8, 0xC4, 0x9D, - 0xA7, 0x9F, 0xBD, 0x69, 0xA3, 0x40, 0x00, 0x56, - 0x66, 0x5D, 0xD1, 0x1D, 0x19, 0xA2, 0xBC, 0x4D, - 0xB1, 0xD3, 0x74, 0xAB, 0x6A, 0x6E, 0x42, 0x47, - 0x2A, 0x27, 0xAC, 0x6B, 0x98, 0xF6, 0x76, 0xE8, - 0xED, 0xAA, 0xDD, 0x51, 0x4F, 0x6D, 0x44, 0xDE, - 0xEC, 0xDA, 0xB5, 0xA6, 0xDF, 0xA0, 0xF8, 0x4F, - 0x13, 0x9A, 0x80, 0x3A, 0x25, 0x24, 0xBF, 0x33, - 0x5D, 0xC5, 0x2E, 0xA5, 0x8F, 0xA5, 0x0D, 0x98, - 0xFB, 0x5C, 0xD5, 0x5D, 0x5D, 0x50, 0xA6, 0x63, - 0xCF, 0x64, 0x7E, 0xEE, 0x56, 0xFE, 0x8E, 0x66, - 0x4B, 0x3B, 0xCA, 0xF9, 0xE3, 0x33, 0x97, 0x8A, - 0x79, 0x46, 0x97, 0x3F, 0xD1, 0x13, 0xE4, 0xFD, - 0x39, 0x24, 0xE6, 0xC0, 0x9E, 0x60, 0x38, 0x64, - 0x44, 0x21, 0x4D, 0xFA, 0x7A, 0x4D, 0x67, 0x1F, - 0xC2, 0x38, 0x90, 0x63, 0x7E, 0xB8, 0x59, 0x13, - 0x4D, 0x79, 0xE2, 0x65, 0xC5, 0x9C, 0xA3, 0xEC, - 0xCD, 0xDF, 0xA0, 0x18, 0x22, 0x3C, 0x9B, 0xAE, - 0x1C, 0xCA, 0x10, 0x39, 0x62, 0x07, 0x8B, 0xC5, - 0xF0, 0xDD, 0x02, 0x24, 0x6F, 0xA2, 0x83, 0x24, - 0xF7, 0xCB, 0x2F, 0xCF, 0xAD, 0x07, 0xC2, 0x5B, - 0x4B, 0xC2, 0xD8, 0x88, 0x06, 0x9B, 0x0C, 0xF5, - 0xF2, 0x3C, 0x76, 0x1C, 0x0E, 0x47, 0x10, 0x98, - 0x81, 0xCD, 0x31, 0x45, 0x6A, 0x64, 0xB9, 0x40, - 0xB4, 0xBB, 0x9B, 0x4C, 0x2C, 0x3B, 0x8E, 0x6B, - 0xA8, 0x34, 0xAA, 0xAE, 0x69, 0xFD, 0xFC, 0x47, - 0xD4, 0x4B, 0x3C, 0x96, 0x88, 0x7A, 0xBE, 0xD3, - 0x60, 0x15, 0xE7, 0xB6, 0x4E, 0x85, 0x42, 0x92, - 0x8F, 0x27, 0x7C, 0xBD, 0x2D, 0x3C, 0x51, 0x2C, - 0x24, 0xDE, 0xEF, 0xE5, 0x90, 0xE8, 0x1C, 0x68, - 0x4E, 0x06, 0x3E, 0x7A, 0xAD, 0xCF, 0x11, 0x7B, - 0x48, 0x94, 0x3D, 0xB7, 0x71, 0xFC, 0x22, 0x07, - 0xF5, 0x7A, 0x74, 0x53, 0x57, 0x55, 0x5D, 0x41, - 0x9C, 0x9C, 0xDC, 0xA3, 0x5C, 0xC1, 0xA7, 0x10, - 0x0A, 0x69, 0x13, 0xA3, 0xB6, 0xAA, 0xCF, 0x79, - 0x6F, 0xE3, 0xF9, 0x4D, 0xD2, 0xF8, 0x18, 0x98, - 0x27, 0x16, 0xCE, 0x03, 0x16, 0x54, 0x2A, 0x1B, - 0x95, 0x7E, 0x12, 0xDA, 0x43, 0xE2, 0x31, 0x54, - 0x2C, 0xC1, 0x4F, 0xCC, 0x66, 0xD7, 0x28, 0xA6, - 0x83, 0x26, 0xB2, 0xBC, 0x31, 0x12, 0x48, 0x33, - 0x0F, 0x3E, 0x98, 0xF8, 0x1E, 0xA3, 0x8C, 0xA9, - 0x24, 0xA8, 0xE4, 0xDA, 0x97, 0xCF, 0x67, 0x38, - 0x42, 0xC7, 0x59, 0xF9, 0x35, 0xBE, 0x88, 0x16, - 0x3C, 0xE9, 0x7F, 0xE4, 0xD9, 0x45, 0x71, 0x76, - 0xF5, 0xB8, 0x90, 0x8A, 0xF9, 0x48, 0xF7, 0x4D, - 0x5D, 0x1D, 0xDB, 0xC5, 0x21, 0x82, 0x5D, 0x93, - 0x1C, 0x63, 0xCA, 0x8A, 0x8E, 0x12, 0x24, 0x26, - 0x26, 0x30, 0x5A, 0xB6, 0xA2, 0xE0, 0x62, 0x45, - 0x64, 0xEE, 0x04, 0x19, 0x83, 0xC1, 0x8C, 0x29, - 0x52, 0xEC, 0x3D, 0x9D, 0x15, 0x9B, 0xDE, 0x39, - 0x85, 0xCF, 0x77, 0x89, 0x7E, 0xE2, 0xDC, 0x88, - 0x81, 0x12, 0x72, 0x1D, 0x48, 0x54, 0xE9, 0x14, - 0xA5, 0x39, 0x7E, 0x08, 0xB5, 0x4F, 0x4A, 0x54, - 0x32, 0x3F, 0xF8, 0x20, 0x82, 0x1B, 0xE0, 0x26, - 0xEA, 0x09, 0x1E, 0xCA, 0x6B, 0x7D, 0x80, 0xD9, - 0x1E, 0x3D, 0xCA, 0x2E, 0xF7, 0x84, 0x8B, 0x86, - 0xFC, 0xA6, 0xBB, 0x40, 0xCE, 0x48, 0x27, 0x1E, - 0x10, 0x08, 0x36, 0x8E, 0x3E, 0xBB, 0x5E, 0x39, - 0x5E, 0x1C, 0xCD, 0x0D, 0x17, 0x8F, 0x1A, 0x62, - 0x57, 0xD2, 0x6B, 0x6B, 0xA4, 0xB7, 0xCE, 0x53, - 0x2C, 0xAA, 0x1E, 0x76, 0xCE, 0x28, 0xFA, 0x4C, - 0xF9, 0xE0, 0x29, 0xE2, 0x48, 0x2B, 0x94, 0xD3, - 0xAC, 0xF9, 0x7A, 0x32, 0x6D, 0x23, 0x5D, 0x1B, - 0xDC, 0x89, 0xF7, 0x00, 0x02, 0x19, 0x84, 0x51, - 0xD9, 0xF1, 0xF1, 0x2C, 0xCD, 0x5B, 0xCA, 0xEC, - 0xDD, 0xE9, 0xE1, 0x4A, 0xC8, 0x07, 0x42, 0xEB, - 0x31, 0xE6, 0x46, 0x4C, 0x83, 0x21, 0x0A, 0x39, - 0xF3, 0x50, 0x98, 0xBE, 0x03, 0x78, 0xD0, 0x74, - 0xCE, 0x1C, 0xCD, 0x1E, 0xBC, 0x1C, 0x77, 0x70, - 0xF7, 0x78, 0xD6, 0x05, 0xF2, 0xBE, 0x59, 0xDB, - 0x7E, 0xA0, 0x7D, 0x80, 0xCC, 0xDF, 0x55, 0xF1, - 0x6E, 0x98, 0x5B, 0x14, 0x2F, 0xB7, 0xBD, 0xA0, - 0x7A, 0xA7, 0xDC, 0xA5, 0xB2, 0x01, 0xE1, 0x95, - 0x0C, 0xF9, 0xA7, 0x28, 0xF2, 0x1E, 0x9A, 0x9D, - 0x8A, 0xC4, 0xD1, 0x32, 0x7E, 0x3B, 0xC0, 0xFF, - 0x33, 0x9A, 0x25, 0x05, 0x22, 0xF6, 0x31, 0xDF, - 0x2E, 0x75, 0x95, 0x51, 0x54, 0x89, 0x3E, 0x4A, - 0x1A, 0xAF, 0x98, 0x66, 0xFE, 0xE1, 0x63, 0x7E, - 0xE1, 0xAA, 0x51, 0x06, 0xD2, 0x44, 0xE9, 0x9E, - 0x6F, 0x31, 0xFC, 0x56, 0x01, 0xBB, 0x7B, 0x79, - 0xBA, 0xD8, 0x28, 0x60, 0xB1, 0xD6, 0x05, 0x9D, - 0x9B, 0x13, 0x2E, 0x02, 0x64, 0x18, 0x02, 0x0D, - 0xB0, 0x6E, 0xB8, 0x39, 0x1F, 0xA1, 0x5B, 0x7A, - 0x0F, 0x29, 0xE3, 0x6D, 0x96, 0x6A, 0xBD, 0x3D, - 0x2A, 0x2F, 0xF3, 0xF2, 0xAA, 0xC3, 0x4C, 0x8B, - 0x45, 0xC7, 0xD2, 0x35, 0x5E, 0xDB, 0xB8, 0x0B, - 0x22, 0x4B, 0xC1, 0x06, 0xEB, 0xC6, 0x75, 0x0E, - 0x55, 0x07, 0x0F, 0x85, 0xA7, 0xCB, 0x60, 0x03, - 0x39, 0x4E, 0x51, 0x61, 0xAE, 0x26, 0xF5, 0xAB, - 0xF8, 0x3F, 0x0D, 0xCC, 0xCF, 0x69, 0xB8, 0x61, - 0x39, 0xAF, 0x86, 0x94, 0xFE, 0x1D, 0xC0, 0x07, - 0x81, 0xEA, 0xE0, 0x9C, 0xDB, 0x42, 0x18, 0x14, - 0x87, 0x80, 0x43, 0xDC, 0x9B, 0x05, 0x30, 0xE5, - 0x54, 0x5A, 0x16, 0x5E, 0x39, 0xA9, 0xB7, 0xDE, - 0x88, 0xB4, 0xAD, 0x2A, 0xEB, 0x90, 0xD3, 0xC3, - 0x29, 0x41, 0x2E, 0xD2, 0xFE, 0x1D, 0x97, 0xB7, - 0x32, 0xC8, 0x43, 0x9D, 0xF4, 0xF8, 0x3D, 0x22, - 0x88, 0x35, 0xB5, 0x38, 0xDC, 0x27, 0x8F, 0xF0, - 0xA2, 0xDC, 0x42, 0xF4, 0x1B, 0x00, 0xCE, 0x3A, - 0xCA, 0x06, 0xB0, 0x5C, 0x48, 0x39, 0xB8, 0x96, - 0x93, 0x15, 0x15, 0xD7, 0x8E, 0xA3, 0x67, 0x3A, - 0x37, 0x82, 0x79, 0xF4, 0xE8, 0x9C, 0xE0, 0x8E, - 0x34, 0x53, 0xFF, 0x2F, 0xB4, 0x53, 0xBE, 0x03, - 0x1C, 0x63, 0x18, 0x62, 0x8A, 0x73, 0x1D, 0x02, - 0x9F, 0xC7, 0xBE, 0xA2, 0xBA, 0x5E, 0xAC, 0x49, - 0x16, 0x27, 0x8B, 0x93, 0x8A, 0x6A, 0x6A, 0xCE, - 0xF5, 0xBF, 0xE2, 0x15, 0x8F, 0x2A, 0xF4, 0x3D, - 0x8E, 0x56, 0xA0, 0x64, 0x9D, 0xF2, 0x8A, 0x25, - 0x0D, 0x2F, 0x25, 0x36, 0xAB, 0xDE, 0x1E, 0x00, - 0x8E, 0xB6, 0x31, 0xF4, 0xBD, 0x0E, 0xB5, 0x55, - 0x73, 0xA4, 0x05, 0x39, 0xA6, 0x00, 0x41, 0x81, - 0xA9, 0xD2, 0xBF, 0x7A, 0x1E, 0x53, 0x50, 0x4F, - 0x11, 0xE0, 0x14, 0x84, 0x07, 0x33, 0x84, 0x41, - 0x31, 0xAC, 0x66, 0x89, 0x46, 0xE5, 0xB8, 0x27, - 0x28, 0x9A, 0xB6, 0xB2, 0x13, 0x66, 0xC5, 0xD0, - 0xE2, 0x64, 0x92, 0x19, 0xB9, 0x2C, 0x47, 0x60, - 0xDF, 0xB7, 0x05, 0xF7, 0xF6, 0x1A, 0x96, 0x56, - 0x4C, 0x9E, 0x84, 0x0D, 0x14, 0xB0, 0xBB, 0x0D, - 0xA8, 0x2D, 0xA5, 0x0F, 0x8B, 0x8E, 0x75, 0x2B, - 0xBF, 0xEA, 0x3B, 0x0A, 0x33, 0x7B, 0xE1, 0x24, - 0xF7, 0x2D, 0x8F, 0x82, 0x49, 0x19, 0x5B, 0xC1, - 0x9C, 0x3E, 0x0B, 0x62, 0xEA, 0xE4, 0x96, 0xD3, - 0x8C, 0xF7, 0x50, 0x0B, 0x4F, 0x10, 0x66, 0x5F, - 0xC2, 0xD2, 0x8B, 0x9E, 0xA9, 0x35, 0xF7, 0xE3, - 0x16, 0x47, 0x2F, 0x4F, 0xF4, 0x01, 0x26, 0x75, - 0x41, 0xBD, 0xB6, 0x23, 0x01, 0x55, 0x4B, 0x20, - 0x09, 0x92, 0x8C, 0x64, 0x45, 0xBB, 0xD0, 0xEF, - 0x21, 0xD0, 0x99, 0x72, 0xF3, 0x50, 0x81, 0xAB, - 0xA9, 0x09, 0x1A, 0x6C, 0x23, 0xFE, 0xD2, 0x9F, - 0x5C, 0xF9, 0xE0, 0x77, 0x9F, 0x7E, 0xFB, 0xAD, - 0x88, 0xE6, 0x2A, 0x45, 0x44, 0x42, 0xB3, 0x00, - 0x79, 0xBE, 0x0A, 0xC9, 0xC6, 0x48, 0x26, 0xB9, - 0x8C, 0x1E, 0x10, 0x01, 0xCB, 0x0F, 0xB0, 0xF0, - 0xA9, 0x5F, 0x79, 0x65, 0xFE, 0x93, 0x12, 0xBF, - 0xDA, 0xEC, 0x33, 0xF9, 0x50, 0x65, 0xC8, 0xE5, - 0x9D, 0x39, 0x50, 0xF8, 0x0A, 0xDC, 0x7F, 0xB3, - 0x34, 0xF2, 0x02, 0xD3, 0xE5, 0xF8, 0xDA, 0x48, - 0x1C, 0x9B, 0x54, 0xA7, 0x59, 0x83, 0x93, 0x0F, - 0xD1, 0xE5, 0xAC, 0xD1, 0x62, 0x84, 0xF0, 0x71, - 0x93, 0xFB, 0xCB, 0x50, 0xD0, 0xDC, 0x00, 0xEF, - 0xF8, 0x20, 0x31, 0x44, 0xC1, 0x1E, 0xC6, 0x14, - 0x20, 0xFC, 0x32, 0xD7, 0x98, 0x2C, 0xE8, 0x96, - 0x40, 0x6B, 0xE7, 0x69, 0xA7, 0x5D, 0xD8, 0xD3, - 0xCA, 0xC7, 0x53, 0xAB, 0xE5, 0xA2, 0x78, 0x65, - 0x5B, 0xF5, 0x4B, 0xE3, 0x3A, 0x1B, 0x83, 0x74, - 0xEB, 0xEE, 0xFF, 0x21, 0x2C, 0x39, 0xCE, 0x51, - 0x46, 0x68, 0xF1, 0xC4, 0x56, 0xEA, 0xA2, 0x53, - 0x28, 0x28, 0xC8, 0x42, 0x93, 0xF1, 0xA5, 0xBC, - 0x9E, 0xB5, 0xDE, 0xDF, 0x55, 0x8A, 0x9B, 0x4C, - 0x12, 0x39, 0xF7, 0x72, 0x72, 0xC6, 0x7E, 0x1A, - 0xB2, 0x8E, 0x1E, 0xFE, 0xC5, 0x89, 0x3E, 0x09, - 0xC1, 0x06, 0x62, 0xB5, 0x3C, 0x8B, 0x82, 0x55, - 0xB1, 0xC8, 0xDC, 0x8F, 0x8E, 0x51, 0x20, 0xA2, - 0x5C, 0x75, 0xEE, 0xFE, 0x79, 0xC4, 0x3F, 0x7A, - 0x8B, 0x37, 0xDF, 0x9D, 0x1E, 0x4F, 0x32, 0x48, - 0x69, 0x33, 0xDA, 0x1C, 0xB0, 0x66, 0x4C, 0x5D, - 0xB3, 0x9E, 0x21, 0xBC, 0x22, 0x7B, 0x0C, 0xDF, - 0xE7, 0xA5, 0x50, 0x7F, 0x07, 0xF2, 0x18, 0xA7, - 0xA4, 0x7D, 0xEB, 0xCD, 0x9D, 0xAD, 0x72, 0x47, - 0xB4, 0xD0, 0x45, 0xA1, 0x3A, 0xD4, 0xF7, 0x5E, - 0xAD, 0x2D, 0x45, 0xC3, 0x39, 0xD0, 0xDF, 0x04, - 0x57, 0x7F, 0x2E, 0x0F, 0xDC, 0x78, 0x03, 0x92, - 0x55, 0x30, 0x33, 0xC7, 0x38, 0x85, 0x2B, 0x1B, - 0xE4, 0xE6, 0x3E, 0xA3, 0x89, 0x7D, 0x6C, 0x9C, - 0x4B, 0x11, 0xAD, 0x6B, 0x58, 0xD3, 0xE2, 0xD3, - 0x42, 0xD3, 0x28, 0x40, 0xF6, 0x49, 0xDD, 0x83, - 0xE7, 0x59, 0x86, 0x6B, 0x73, 0x81, 0xA8, 0x4C, - 0x8A, 0xDD, 0xDF, 0x41, 0x3F, 0xAE, 0x18, 0xE6, - 0x43, 0x1B, 0x1E, 0xEA, 0x73, 0xA5, 0x6C, 0xD8, - 0x89, 0xB7, 0x6B, 0xC9, 0x78, 0x6B, 0xED, 0xED, - 0xCA, 0x25, 0x41, 0xE4, 0xC9, 0xB2, 0x4E, 0x28, - 0xF5, 0x8A, 0xD3, 0x74, 0xC1, 0xD9, 0x3D, 0xF2, - 0xD3, 0xF2, 0xC3, 0x7E, 0xC5, 0x94, 0xA0, 0x49, - 0x8C, 0x57, 0x45, 0x79, 0xA7, 0x33, 0x2F, 0x72, - 0xC0, 0xF9, 0x75, 0x08, 0x77, 0xFA, 0xD5, 0xB9, - 0x0B, 0x96, 0x8D, 0x88, 0xF1, 0x16, 0x82, 0xC4, - 0x07, 0x1E, 0x4E, 0xA3, 0x8B, 0x81, 0x6A, 0xEA, - 0xD6, 0xBE, 0x54, 0xD2, 0xF3, 0x71, 0x32, 0x4F, - 0x24, 0x75, 0xB8, 0x62, 0xC7, 0x54, 0x24, 0xEC, - 0xF9, 0x85, 0x8A, 0xA4, 0xE2, 0x00, 0xCF, 0xBA, - 0x41, 0x2D, 0x7E, 0x3E, 0x6C, 0x30, 0x8D, 0x8D, - 0xE1, 0x1D, 0xD1, 0x85, 0x33, 0x1A, 0xF9, 0xD4, - 0x1A, 0xFE, 0x88, 0x79, 0x96, 0x5D, 0x67, 0x46, - 0xEF, 0x21, 0xFD, 0x98, 0xD3, 0xED, 0x38, 0x06, - 0xFB, 0x5C, 0x46, 0x19, 0xC9, 0x8E, 0x34, 0x7D, - 0x76, 0xB8, 0xB8, 0x98, 0x49, 0x39, 0x55, 0x61, - 0xEE, 0x28, 0x6D, 0xFD, 0xFC, 0x6A, 0x04, 0xE1, - 0xD4, 0x7E, 0x9F, 0x5B, 0x5B, 0x49, 0x25, 0x77, - 0x84, 0xC3, 0x93, 0x64, 0xDF, 0xA8, 0x8A, 0xD6, - 0x30, 0xDF, 0xA5, 0x9C, 0xCA, 0x32, 0x37, 0xF4, - 0xA2, 0xB1, 0x41, 0xA8, 0x13, 0xD2, 0x2C, 0x6F, - 0xFE, 0x73, 0xC2, 0xD9, 0x9A, 0xDC, 0x82, 0x4D, - 0x93, 0xE0, 0x6A, 0x54, 0xB6, 0xDE, 0x62, 0xC3, - 0x12, 0x5D, 0x94, 0xB4, 0x9E, 0x95, 0x0D, 0xEC, - 0x36, 0x1F, 0x96, 0x1F, 0x56, 0xD3, 0x67, 0x1C, - 0x99, 0x25, 0x37, 0x7F, 0x6E, 0x67, 0x06, 0x65, - 0x32, 0x2B, 0x84, 0x89, 0xE8, 0x33, 0xD3, 0x83, - 0x0E, 0xCC, 0xDD, 0x0F, 0x53, 0xF4, 0xA4, 0xF9, - 0xD6, 0x8F, 0x14, 0x45, 0xF3, 0xAE, 0xD5, 0xC9, - 0xD7, 0x66, 0x40, 0x9B, 0x59, 0xBA, 0xE7, 0xA7, - 0x29, 0x12, 0xE9, 0x8B, 0x3B, 0xB5, 0x73, 0x42, - 0xD2, 0x9B, 0x6A, 0xCF, 0xD1, 0x43, 0x36, 0xB7, - 0xB8, 0xB6, 0xB7, 0x54, 0x9A, 0xF8, 0xCC, 0x88, - 0x45, 0xE1, 0x0C, 0x28, 0x11, 0x28, 0x72, 0x81, - 0x98, 0x5D, 0x5D, 0x47, 0x68, 0x5F, 0xC5, 0x89, - 0xF2, 0x67, 0x8E, 0xD8, 0x93, 0xF5, 0x7B, 0x85, - 0xAC, 0xED, 0x75, 0x63, 0x2E, 0x50, 0xDE, 0x5E, - 0x07, 0x4E, 0x6C, 0xED, 0xCF, 0x1A, 0xD4, 0x99, - 0xBC, 0xE6, 0x7A, 0x7F, 0x49, 0x85, 0x64, 0xDE, - 0xEC, 0x67, 0x7C, 0x70, 0x83, 0x88, 0xDE, 0x8F, - 0xD7, 0xB0, 0x99, 0xCF, 0xC1, 0x16, 0x09, 0x6C, - 0x45, 0xFE, 0x28, 0x89, 0x0B, 0x5E, 0xAF, 0x06, - 0x16, 0x99, 0x39, 0xFD, 0xA3, 0x5E, 0x12, 0x15, - 0xF2, 0x38, 0xE8, 0xCD, 0xED, 0xFE, 0x67, 0x00, - 0x65, 0xF5, 0xDE, 0x32, 0x72, 0xA2, 0x32, 0xFD, - 0x53, 0xC2, 0x50, 0xF5, 0xD7, 0x79, 0xB3, 0x16, - 0x94, 0xFB, 0xA9, 0x1B, 0x55, 0x48, 0x03, 0x67, - 0x6E, 0x4D, 0xEA, 0x28, 0x84, 0x63, 0xFE, 0x10, - 0x63, 0x00, 0x9E, 0x9C, 0xB7, 0x6C, 0x31, 0x7D, - 0xB4, 0x00, 0xAC, 0xF4, 0xD2, 0xD2, 0xB6, 0xD1, - 0x6E, 0xDE, 0xBA, 0x41, 0x08, 0x91, 0x3F, 0x60, - 0xAE, 0xB2, 0x52, 0xCD, 0xE4, 0x13, 0x69, 0x0C, - 0xEE, 0xFD, 0xCF, 0xA6, 0x38, 0x96, 0x3D, 0xBD, - 0x04, 0xF4, 0xCF, 0x21, 0xAD, 0x74, 0xDD, 0xE6, - 0x5F, 0x0F, 0x1E, 0x7C, 0xE7, 0x0A, 0xF1, 0x01, - 0xA6, 0xDE, 0x9A, 0x59, 0xDB, 0x21, 0xD3, 0x80, - 0x27, 0xDB, 0xBF, 0x76, 0x16, 0x78, 0x27, 0x95, - 0x0B, 0x69, 0x41, 0x82, 0x66, 0xAF, 0xA4, 0x44, - 0xC7, 0x28, 0xDE, 0x36, 0x24, 0xA1, 0xC8, 0x1E, - 0x5B, 0x16, 0x41, 0xDB, 0xE8, 0x79, 0xCD, 0x82, - 0x2F, 0xB2, 0x30, 0x3C, 0xC3, 0xA9, 0xFC, 0xEE, - 0xFE, 0x3D, 0xDF, 0x7D, 0xBD, 0x0B, 0x70, 0x57, - 0x24, 0x8A, 0x28, 0xD6, 0x06, 0x2D, 0x76, 0xEB, - 0x13, 0xB9, 0x2C, 0x9C, 0x9D, 0x00, 0x3B, 0x69, - 0xE1, 0x84, 0x2A, 0x54, 0xC0, 0x9C, 0xF6, 0xB4, - 0x84, 0x52, 0x08, 0x15, 0xE2, 0xBB, 0x23, 0x72, - 0x88, 0xC6, 0x4F, 0xC6, 0x96, 0xFD, 0x3B, 0xC4, - 0x5D, 0xB3, 0x0C, 0xB8, 0x64, 0x65, 0xDF, 0x11, - 0x88, 0xBF, 0x47, 0x95, 0x6E, 0x5B, 0x91, 0x6A, - 0x80, 0x09, 0x71, 0x5C, 0xC9, 0xA9, 0xA6, 0xDC, - 0xE4, 0x4C, 0x54, 0xF9, 0x28, 0x81, 0x6B, 0x41, - 0xD0, 0x18, 0xC5, 0xFE, 0x65, 0x2F, 0xFE, 0x4E, - 0x33, 0xF3, 0x52, 0xD3, 0x83, 0xA9, 0xC1, 0x36, - 0x5F, 0x02, 0xAB, 0xFD, 0x64, 0x7B, 0xD6, 0xB4, - 0x2A, 0xD1, 0x63, 0x73, 0x0F, 0x8B, 0xFD, 0xA1, - 0xE2, 0xBE, 0x5F, 0x61, 0x4D, 0x79, 0x59, 0x78, - 0x25, 0xBA, 0x09, 0xF4, 0x57, 0xD3, 0xCB, 0xE7, - 0x56, 0x1E, 0x7E, 0x89, 0xEA, 0xF0, 0x59, 0xE9, - 0x77, 0xD1, 0xEE, 0x88, 0x84, 0x8B, 0x78, 0x1F, - 0x21, 0xF7, 0x23, 0x89, 0x0F, 0xF1, 0xF9, 0x87, - 0x39, 0x28, 0x41, 0x2C, 0x8F, 0x11, 0xEE, 0xDD, - 0x2C, 0x0C, 0x39, 0xC9, 0x51, 0x27, 0x90, 0x98, - 0x6A, 0x19, 0xE1, 0x7B, 0x2B, 0x70, 0xA4, 0xD7, - 0xCF, 0x49, 0xD9, 0xD1, 0x8C, 0xAA, 0x0C, 0x20, - 0x23, 0x13, 0x4C, 0xAC, 0xD1, 0x69, 0x20, 0x0D, - 0x88, 0x17, 0xFA, 0x32, 0x1F, 0x04, 0xAC, 0xC9, - 0x10, 0x61, 0x3D, 0xFF, 0x25, 0x0E, 0xB3, 0x25, - 0xDB, 0xEF, 0x29, 0xEB, 0x56, 0x11, 0xB2, 0xAD, - 0x2A, 0x23, 0xED, 0xD5, 0x38, 0x04, 0x9B, 0x3F, - 0x43, 0xEF, 0xEB, 0x4D, 0x60, 0x98, 0x37, 0x92, - 0xB4, 0xBF, 0x05, 0x56, 0x79, 0x44, 0xAA, 0xDB, - 0x7A, 0xC4, 0xD3, 0xA5, 0xD8, 0x0A, 0x1B, 0x9D, - 0x84, 0x48, 0xB4, 0xC0, 0xC1, 0x15, 0xC3, 0xB5, - 0xAD, 0x38, 0x85, 0x35, 0x3F, 0x47, 0xD5, 0xFC, - 0xB9, 0xB7, 0xD6, 0x44, 0x6F, 0x1A, 0x72, 0x10, - 0xBB, 0xC6, 0x67, 0xFC, 0x41, 0x14, 0x15, 0xF2, - 0x3C, 0xD4, 0x0A, 0x2A, 0x3D, 0x64, 0x06, 0x1D, - 0x71, 0xC6, 0x71, 0x91, 0x57, 0x1A, 0x97, 0xD0, - 0x10, 0x88, 0xA2, 0x4B, 0x67, 0x11, 0x56, 0x7F, - 0xC8, 0x91, 0x06, 0x73, 0x2D, 0x88, 0x92, 0xFF, - 0x98, 0x5B, 0x8E, 0x6C, 0xF7, 0x01, 0x63, 0x82, - 0x9C, 0xC0, 0x85, 0xBE, 0x4E, 0x40, 0x83, 0x15, - 0x36, 0x1B, 0xB1, 0xB2, 0x00, 0x3D, 0x64, 0x13, - 0x22, 0x0B, 0x13, 0x45, 0x06, 0xD3, 0xC3, 0x04, - 0xC0, 0xBB, 0xBA, 0x9C, 0x9C, 0x45, 0xD3, 0x65, - 0x1E, 0x05, 0x71, 0xB6, 0xB1, 0x15, 0x17, 0x72, - 0x13, 0xD8, 0x59, 0x5E, 0x14, 0x3D, 0xB9, 0x0B, - 0xD7, 0x2F, 0x7E, 0xB9, 0x74, 0xD8, 0xD0, 0xA0, - 0x31, 0x74, 0x09, 0xD6, 0x4D, 0x58, 0x37, 0xEA, - 0xEC, 0x9B, 0x8D, 0x44, 0xDD, 0x7E, 0xCF, 0xF6, - 0xCD, 0xA9, 0xF7, 0x29, 0x38, 0x2A, 0x43, 0xB3, - 0x79, 0xCB, 0xDD, 0x43, 0xFF, 0xB1, 0x8A, 0xEA, - 0x35, 0xC1, 0xA9, 0x96, 0xCE, 0xF1, 0x48, 0x8D, - 0x3B, 0x7A, 0x81, 0xEE, 0x7C, 0xFC, 0x0B, 0x96, - 0x23, 0x41, 0x8A, 0xB3, 0x91, 0x9A, 0x6E, 0xDD, - 0xB9, 0x9F, 0x22, 0x2F, 0x0D, 0xDD, 0xB2, 0xF3, - 0x2A, 0x20, 0xC8, 0xF8, 0x4F, 0xBF, 0x4C, 0x49, - 0xB4, 0xCB, 0x3E, 0xB5, 0x0D, 0x9C, 0x4C, 0xD2, - 0x5A, 0x6F, 0x71, 0x75, 0x46, 0x70, 0x66, 0xD2, - 0x5E, 0x64, 0x37, 0xB6, 0x7F, 0x2D, 0xBC, 0x70, - 0xC2, 0xE6, 0xEB, 0x0B, 0xDE, 0x23, 0x86, 0xD0, - 0x30, 0x14, 0xA7, 0x89, 0xFB, 0x6D, 0xC0, 0x8E, - 0xE3, 0x3C, 0x0C, 0x67, 0x95, 0x1D, 0xA9, 0xD7, - 0x4B, 0x9C, 0x94, 0x84, 0x5D, 0x2A, 0x99, 0x03, - 0x7E, 0x09, 0x5F, 0xEF, 0x79, 0x19, 0x92, 0x0F, - 0xE5, 0x26, 0xEB, 0x5D, 0xD0, 0xBA, 0x1F, 0x97, - 0xDF, 0xBD, 0x2D, 0xDC, 0x31, 0x60, 0x9C, 0x1B, - 0x7B, 0x45, 0xEC, 0x3A, 0xDB, 0x58, 0x6F, 0xE3, - 0x03, 0x0A, 0x0C, 0x7A, 0x9D, 0xD0, 0x34, 0xA3, - 0xC2, 0xE6, 0xF9, 0x84, 0x90, 0x93, 0xCE, 0xE1, - 0x0A, 0x18, 0x19, 0x53, 0x54, 0x7F, 0x8B, 0xE3, - 0x28, 0x72, 0x0A, 0x4A, 0x5A, 0x82, 0x90, 0xB5, - 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x0B, 0x10, 0x18, 0x1A, 0x21 - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - static const byte pk_87[] = { - 0x59, 0xB2, 0x37, 0x1F, 0xE7, 0xBA, 0xCC, 0x20, - 0x7F, 0xE1, 0xFE, 0xE8, 0x8A, 0x8B, 0x38, 0x05, - 0xA7, 0x05, 0x28, 0x65, 0x69, 0x17, 0x89, 0xBB, - 0x90, 0x54, 0x2F, 0xA4, 0x7F, 0x7E, 0xF2, 0xB7, - 0x5F, 0xCA, 0x13, 0xDB, 0xA5, 0x88, 0x8B, 0xEC, - 0x32, 0x05, 0x14, 0xDC, 0xB0, 0x5F, 0xD2, 0x6E, - 0xB5, 0x54, 0x1F, 0x6E, 0x57, 0x2E, 0xCE, 0xA6, - 0xC4, 0xF1, 0xD3, 0x8A, 0xA7, 0x02, 0x59, 0x09, - 0x4A, 0xA9, 0x45, 0xF1, 0x9F, 0xED, 0x0D, 0x98, - 0x0E, 0x65, 0xDB, 0xF6, 0x5D, 0xB8, 0x0F, 0x56, - 0x4F, 0xE2, 0x9D, 0x83, 0x6C, 0x54, 0x79, 0x28, - 0x8B, 0x55, 0xCF, 0x07, 0xF4, 0xE0, 0x01, 0x59, - 0xB6, 0x95, 0x5D, 0xAB, 0xDE, 0xCC, 0x8C, 0x4D, - 0x66, 0xAE, 0x68, 0x87, 0x28, 0xBA, 0x6D, 0x5C, - 0x04, 0x42, 0xF3, 0xC1, 0x23, 0x2C, 0x78, 0x2C, - 0x46, 0x5B, 0x9B, 0x7C, 0x50, 0x14, 0xB1, 0x46, - 0x40, 0x65, 0xCC, 0xD8, 0xA5, 0x6D, 0x6B, 0x1C, - 0x16, 0x51, 0x08, 0x69, 0xE0, 0x14, 0xE6, 0x93, - 0x39, 0x98, 0xEF, 0x72, 0x55, 0x20, 0xB4, 0x00, - 0x91, 0x3D, 0x93, 0xB0, 0xEC, 0x75, 0xE2, 0xFB, - 0x72, 0x5D, 0xC1, 0xAE, 0xC0, 0xC0, 0xCC, 0x73, - 0x43, 0xB9, 0xE5, 0x44, 0xBA, 0xA4, 0xD6, 0x79, - 0x86, 0x0E, 0x34, 0x7B, 0x2E, 0x94, 0x7D, 0x8D, - 0x24, 0x36, 0xF0, 0x92, 0x98, 0xA7, 0xBB, 0x83, - 0x36, 0xB9, 0xDE, 0x9C, 0xFD, 0x5C, 0xDB, 0xCD, - 0x91, 0xC7, 0x24, 0x92, 0x68, 0xCA, 0x03, 0xEF, - 0xAC, 0x27, 0x3A, 0xF5, 0x29, 0x68, 0xD5, 0x01, - 0x40, 0x6C, 0xD9, 0xC9, 0x61, 0x59, 0xD7, 0xC1, - 0x5A, 0xA2, 0x90, 0x03, 0x30, 0xC1, 0x18, 0x9C, - 0xFC, 0x2C, 0xD8, 0xB9, 0x12, 0xC4, 0x80, 0xE4, - 0x58, 0x29, 0x7E, 0xF1, 0x4D, 0xB6, 0x94, 0xA3, - 0xF1, 0xE7, 0x2C, 0x1D, 0xFA, 0x3A, 0x3D, 0x2A, - 0x8A, 0x69, 0xE0, 0x11, 0x60, 0x2B, 0x93, 0x02, - 0x0B, 0xAC, 0xD1, 0xC2, 0xF3, 0xAD, 0x06, 0xC9, - 0x5A, 0x7F, 0x36, 0xEB, 0xF5, 0x26, 0x1F, 0x6E, - 0xC1, 0x06, 0x81, 0x6B, 0xB3, 0x30, 0x3C, 0xC0, - 0x0B, 0xF4, 0xE8, 0x68, 0x8D, 0x2E, 0x85, 0x48, - 0xF1, 0x04, 0x90, 0xD9, 0xEB, 0x23, 0xC5, 0x67, - 0x93, 0xB3, 0x4B, 0x84, 0x06, 0xCB, 0xE4, 0x43, - 0xD8, 0x35, 0x6B, 0xCD, 0x0F, 0x4F, 0x61, 0xD0, - 0xD0, 0x17, 0xD5, 0x48, 0x31, 0xB9, 0xBA, 0x32, - 0x9F, 0x89, 0x48, 0xF2, 0x5C, 0x31, 0x22, 0xF9, - 0xDE, 0xDE, 0x8C, 0xEC, 0xBA, 0x51, 0x56, 0x9E, - 0xDF, 0xFF, 0x89, 0x5F, 0xA0, 0x20, 0x86, 0x2C, - 0x5D, 0xF7, 0x9F, 0x86, 0x40, 0x78, 0x48, 0x6B, - 0x5F, 0xB2, 0x28, 0xFD, 0x78, 0x9C, 0x35, 0xFD, - 0xE1, 0xC5, 0x4B, 0xFF, 0xBF, 0x4A, 0x02, 0x5A, - 0x7F, 0xE7, 0xD8, 0xC3, 0x49, 0x0A, 0x5D, 0x4E, - 0x62, 0xD0, 0x4F, 0x79, 0xF4, 0x18, 0x3C, 0xA6, - 0x83, 0x79, 0xF4, 0x64, 0x8B, 0xD5, 0xB2, 0x41, - 0x6D, 0xBE, 0x5B, 0x84, 0x5C, 0x9F, 0x4B, 0x7A, - 0x7E, 0x23, 0x39, 0xC0, 0x50, 0x6D, 0x58, 0x53, - 0x9E, 0xAE, 0xA9, 0x45, 0x1C, 0x9B, 0x2F, 0xE2, - 0xA1, 0x8C, 0x84, 0x9D, 0xCA, 0x7E, 0xED, 0x9D, - 0xAC, 0xC0, 0x58, 0xD0, 0x05, 0xFB, 0x73, 0x75, - 0xC4, 0xEF, 0x45, 0xB0, 0x01, 0x54, 0x3F, 0xC6, - 0x8E, 0x47, 0xDD, 0xB6, 0xD1, 0x4F, 0xF9, 0x37, - 0xD1, 0xAA, 0x0D, 0x4D, 0x74, 0x89, 0xDF, 0xFA, - 0x62, 0x10, 0x67, 0x9C, 0xCC, 0xEC, 0xF9, 0xB8, - 0x55, 0x1D, 0xCF, 0x68, 0x2D, 0x2A, 0xF1, 0xE5, - 0xBD, 0x86, 0x9F, 0x3E, 0x8D, 0x40, 0x0D, 0x5C, - 0x86, 0x1A, 0xE5, 0x1F, 0xE7, 0xEB, 0xBB, 0x54, - 0x57, 0xF2, 0xEA, 0xAF, 0xD0, 0x93, 0xA9, 0x59, - 0x8E, 0xC7, 0x21, 0xC6, 0x93, 0x27, 0xC5, 0x19, - 0x30, 0xF4, 0xB9, 0xFF, 0xB2, 0xAA, 0x7F, 0x1A, - 0x28, 0x43, 0x6B, 0x6D, 0x80, 0x8D, 0x75, 0x39, - 0x2B, 0xC4, 0x3C, 0x1B, 0x5B, 0x85, 0x9C, 0x66, - 0xC5, 0x4F, 0xA5, 0x15, 0xC7, 0xA6, 0x15, 0xA6, - 0x9E, 0x60, 0x92, 0x14, 0x34, 0xAA, 0x9C, 0xF9, - 0xF9, 0xE0, 0x3C, 0x3C, 0xA3, 0x5B, 0x5E, 0xBC, - 0x6A, 0x40, 0x9E, 0x82, 0x2F, 0xE7, 0x6E, 0x09, - 0x24, 0xC6, 0xC0, 0x62, 0xF1, 0x72, 0x4C, 0x38, - 0x2F, 0xF3, 0xC8, 0xAC, 0xB5, 0xC1, 0x66, 0x6C, - 0x2E, 0xC2, 0x6B, 0x76, 0x28, 0xE3, 0xD7, 0xC1, - 0x3D, 0xA8, 0xD7, 0x58, 0x89, 0x0E, 0x6C, 0xC0, - 0x17, 0xB7, 0x89, 0x25, 0x82, 0xE9, 0x5E, 0xDD, - 0x04, 0xBA, 0x93, 0x45, 0xDF, 0x70, 0xFA, 0xD5, - 0x6E, 0xA6, 0x8B, 0xF8, 0x87, 0x5B, 0x93, 0x2C, - 0x28, 0xB3, 0x28, 0x07, 0xC8, 0x63, 0x71, 0xE1, - 0x7D, 0xCC, 0x04, 0x72, 0x5C, 0xB5, 0x97, 0xB5, - 0x24, 0x46, 0x79, 0x63, 0xE1, 0xD4, 0xA6, 0x1B, - 0x5F, 0xBF, 0x9E, 0xC5, 0x04, 0xD5, 0xDD, 0xB6, - 0x17, 0x93, 0xDD, 0x4E, 0x34, 0xAE, 0x08, 0x2A, - 0x59, 0x90, 0xEF, 0xCE, 0x80, 0x1E, 0x93, 0x8C, - 0xCA, 0xE7, 0x38, 0xE0, 0x2E, 0x90, 0x59, 0x9D, - 0x97, 0x1C, 0x2D, 0x7C, 0x64, 0xE5, 0xB6, 0xF8, - 0x63, 0x9F, 0x75, 0x8E, 0xD6, 0x21, 0xC1, 0xF2, - 0x10, 0x73, 0xC0, 0x3E, 0xDB, 0x78, 0x2C, 0x7A, - 0x0F, 0x5D, 0x7C, 0x66, 0xF5, 0xCE, 0x16, 0x1D, - 0xED, 0x55, 0xB3, 0xE9, 0x2D, 0xC2, 0x71, 0x83, - 0xAB, 0x08, 0x3D, 0xBC, 0x1F, 0x39, 0x30, 0xAE, - 0x56, 0xED, 0xB8, 0xC5, 0x3E, 0x9A, 0x7E, 0x02, - 0x0F, 0xFF, 0x0C, 0x40, 0x42, 0xF5, 0x18, 0xB2, - 0x6F, 0x39, 0x0C, 0x96, 0xC8, 0x18, 0x3B, 0x79, - 0xB5, 0x3C, 0x7C, 0x7B, 0xC5, 0x15, 0x18, 0x7B, - 0x3D, 0xE8, 0xCA, 0xB0, 0x87, 0x69, 0xC5, 0xDD, - 0x6F, 0xF5, 0x49, 0x21, 0x12, 0xE8, 0xB0, 0xF2, - 0x8D, 0x09, 0xF4, 0x06, 0x7A, 0xDB, 0x04, 0x19, - 0x4F, 0x60, 0x25, 0x0E, 0x75, 0xAD, 0xE3, 0x31, - 0xA5, 0xC2, 0x55, 0x93, 0xBC, 0xD9, 0x2A, 0x6D, - 0x13, 0x50, 0x43, 0x95, 0x85, 0x86, 0x0B, 0xB6, - 0xFE, 0xED, 0xBD, 0x2F, 0x83, 0x9F, 0x31, 0x7A, - 0x01, 0x35, 0x88, 0x76, 0xC8, 0x8E, 0x89, 0x8A, - 0xC0, 0xC8, 0x53, 0x78, 0xF5, 0x72, 0xF2, 0x3C, - 0xDE, 0x93, 0x1D, 0x47, 0xDE, 0x71, 0xD3, 0x35, - 0x3D, 0xAB, 0x1F, 0x81, 0x0A, 0x61, 0xB1, 0x8D, - 0x24, 0xCD, 0x83, 0xDD, 0xAB, 0x8D, 0x53, 0xBA, - 0x9C, 0x7B, 0x82, 0x74, 0xB0, 0xFE, 0x82, 0xAF, - 0xF3, 0x0C, 0x57, 0x07, 0x2F, 0x64, 0x37, 0x87, - 0xCA, 0x1D, 0xF0, 0x3B, 0x99, 0xEB, 0x57, 0xDB, - 0xDA, 0x8C, 0x8E, 0xE8, 0xEB, 0x20, 0x1F, 0x28, - 0x47, 0xCB, 0xC9, 0xD3, 0x4F, 0xD8, 0x0C, 0xE6, - 0xBC, 0x5E, 0x1E, 0x32, 0x8E, 0xB6, 0xEF, 0xC8, - 0x3C, 0x4B, 0xD9, 0xD5, 0x2F, 0x32, 0x4E, 0x30, - 0xEE, 0x4B, 0x5E, 0x86, 0x35, 0x1E, 0x5C, 0x8C, - 0x4C, 0x54, 0x56, 0x83, 0x6D, 0x5A, 0x45, 0x22, - 0x03, 0xB3, 0xC3, 0x72, 0xC7, 0x87, 0xAE, 0x33, - 0x32, 0xC8, 0xA5, 0xE9, 0xDC, 0x21, 0x97, 0xD9, - 0xC3, 0x41, 0xB9, 0x75, 0x6B, 0xB1, 0xE6, 0x3C, - 0x75, 0xBB, 0xD5, 0xCF, 0x3E, 0x5C, 0xD4, 0xBF, - 0x47, 0xBD, 0x1F, 0xEB, 0xC3, 0xE3, 0x71, 0x09, - 0x12, 0xD6, 0x30, 0x32, 0xF6, 0xB9, 0x7D, 0xC1, - 0x9C, 0x4D, 0xE1, 0x96, 0xAC, 0xD9, 0x15, 0x77, - 0x15, 0xE2, 0xC1, 0x4E, 0x05, 0x4A, 0x93, 0x17, - 0xBF, 0x96, 0xA6, 0x84, 0xBB, 0x96, 0xCE, 0xFB, - 0x7D, 0x8F, 0xDC, 0xA8, 0xAA, 0x47, 0x7A, 0x2A, - 0xF6, 0xF7, 0x26, 0xD2, 0xCA, 0xC1, 0xA6, 0x03, - 0xCF, 0x13, 0x60, 0xEC, 0x11, 0xCA, 0x89, 0x7E, - 0x5B, 0xC7, 0x35, 0xAB, 0x69, 0xB8, 0x64, 0x7F, - 0x30, 0xCE, 0xD4, 0x94, 0x7B, 0xA9, 0xF6, 0x35, - 0xD9, 0xCB, 0x2D, 0x82, 0xA6, 0x62, 0xFF, 0x17, - 0xA0, 0xE1, 0x2D, 0x4D, 0x06, 0xD6, 0x41, 0xEE, - 0x76, 0xEB, 0x8B, 0x45, 0xC7, 0x1E, 0xDE, 0x38, - 0xC9, 0x05, 0xC5, 0x2B, 0xE7, 0x6C, 0x61, 0x09, - 0xF2, 0x61, 0x2F, 0xEE, 0x6C, 0x31, 0x94, 0x46, - 0x5C, 0x19, 0xBA, 0x5D, 0x3E, 0xBC, 0xF1, 0xF0, - 0xB5, 0xE5, 0x34, 0xE0, 0xF0, 0xF1, 0xD3, 0x1C, - 0xB1, 0xE7, 0xA3, 0x6C, 0x43, 0x03, 0xF2, 0x83, - 0xDB, 0xA8, 0x59, 0x1C, 0xC6, 0x09, 0x31, 0x1A, - 0x80, 0x9E, 0x44, 0x4E, 0x33, 0xA8, 0x93, 0x88, - 0x0C, 0xDB, 0xAE, 0x29, 0x11, 0x91, 0x46, 0xA3, - 0x68, 0xE4, 0xD2, 0xED, 0xD9, 0x1F, 0xE4, 0x71, - 0x64, 0x7F, 0xFE, 0x82, 0x1A, 0xA6, 0xD3, 0x1C, - 0x9F, 0xA4, 0x96, 0x95, 0xEB, 0x99, 0x41, 0xB0, - 0x8F, 0x7B, 0xE3, 0xF0, 0x6C, 0xDD, 0xF2, 0x73, - 0x9B, 0x8C, 0xAD, 0x2A, 0xB0, 0xDA, 0x4F, 0x5A, - 0x3C, 0x0A, 0x26, 0xDF, 0x6A, 0x17, 0xB1, 0x37, - 0xCA, 0xAB, 0x3B, 0x91, 0x9A, 0xB6, 0x36, 0xD6, - 0xC8, 0x9B, 0xED, 0xA3, 0x05, 0x88, 0x98, 0x62, - 0x87, 0x21, 0xF2, 0x77, 0x03, 0x15, 0xFE, 0xEE, - 0x88, 0x15, 0x95, 0xE2, 0x4C, 0xF4, 0x8B, 0x44, - 0x16, 0x60, 0xD0, 0xB2, 0xE9, 0xD5, 0xB9, 0x09, - 0x28, 0xC3, 0x81, 0xF2, 0xB0, 0xFA, 0x26, 0x34, - 0x2E, 0x4C, 0x9B, 0x88, 0xC0, 0x88, 0x7A, 0x46, - 0x87, 0x12, 0x4C, 0x01, 0x2D, 0x96, 0x9E, 0x1A, - 0xFD, 0x85, 0x32, 0x75, 0x4B, 0xA1, 0x21, 0x25, - 0xE9, 0x43, 0x3D, 0xCF, 0x6D, 0x7B, 0xC1, 0xA3, - 0x6A, 0x83, 0xE6, 0xA1, 0x0B, 0xA1, 0xCB, 0x76, - 0x52, 0xA8, 0x13, 0x50, 0x89, 0x9C, 0x2D, 0xFC, - 0x6E, 0x4F, 0xED, 0x38, 0xD0, 0x09, 0xE6, 0xD0, - 0xF1, 0xD4, 0x4C, 0xCC, 0xB9, 0x5E, 0x55, 0x1B, - 0x3A, 0xD5, 0x4B, 0x3A, 0xC8, 0x1E, 0x8B, 0xA4, - 0x66, 0x5E, 0xA4, 0x28, 0xB3, 0xC8, 0x61, 0xE8, - 0x67, 0x78, 0x90, 0xCF, 0x5F, 0x62, 0x5C, 0x19, - 0xA7, 0xC5, 0x94, 0x3A, 0x94, 0x01, 0xCB, 0x78, - 0xE7, 0x02, 0x6B, 0xAE, 0x92, 0xB6, 0x0A, 0x8B, - 0x68, 0x07, 0xC1, 0x77, 0x45, 0x41, 0x5C, 0xD8, - 0xE0, 0x30, 0xC6, 0x4C, 0x56, 0xE8, 0x22, 0x13, - 0x9A, 0x35, 0xDA, 0x42, 0x3F, 0x26, 0x43, 0x36, - 0xE0, 0xAF, 0xDF, 0x16, 0x74, 0x30, 0xDD, 0x36, - 0xE0, 0x06, 0x4B, 0x2F, 0x6E, 0x8D, 0x8B, 0xB6, - 0xBE, 0x99, 0xC5, 0xA9, 0xFB, 0x55, 0x1C, 0xC6, - 0x3E, 0x50, 0x8D, 0xB6, 0x36, 0x66, 0x7D, 0xDA, - 0x53, 0xF6, 0x11, 0xF0, 0x2F, 0xCD, 0x1F, 0x99, - 0x41, 0x0F, 0x1A, 0x7A, 0x82, 0x88, 0x2F, 0x96, - 0x23, 0xAD, 0xDC, 0x50, 0xEB, 0x01, 0xE1, 0xF3, - 0x99, 0x78, 0xBF, 0x68, 0x50, 0x6C, 0x71, 0xDB, - 0xBE, 0xE4, 0x2E, 0x4A, 0x80, 0x06, 0x9B, 0x0E, - 0x4C, 0x7F, 0xC4, 0xCC, 0x14, 0x71, 0xF4, 0xF1, - 0x02, 0x8D, 0xB2, 0x5C, 0x46, 0x87, 0xB6, 0x0D, - 0xF4, 0x25, 0x5D, 0xEC, 0x91, 0x48, 0x19, 0x7A, - 0x74, 0x79, 0x6E, 0xC7, 0x60, 0xA6, 0x6A, 0xFC, - 0x78, 0x84, 0x03, 0x86, 0x51, 0x92, 0x09, 0x73, - 0xA6, 0x9C, 0x20, 0x35, 0x16, 0x22, 0x26, 0x32, - 0xEC, 0x58, 0x75, 0xEA, 0x6D, 0x83, 0x80, 0x96, - 0xE7, 0xFE, 0x9B, 0x5B, 0x4F, 0xB6, 0x9C, 0x5E, - 0x94, 0x07, 0xE7, 0x0D, 0x27, 0xFA, 0x34, 0xB0, - 0xCD, 0xBD, 0x6E, 0x11, 0x9D, 0x87, 0xCE, 0x38, - 0x58, 0x1D, 0xF1, 0xD3, 0xE0, 0xDF, 0x3A, 0xE0, - 0x29, 0x04, 0x2A, 0x3B, 0x20, 0xE9, 0x23, 0xEB, - 0xCE, 0x19, 0xA4, 0x95, 0x87, 0x55, 0xEE, 0x2F, - 0x98, 0xFD, 0x23, 0x4C, 0x44, 0x13, 0xE2, 0xDB, - 0xC9, 0x35, 0x59, 0xA4, 0x28, 0xDC, 0x37, 0xF2, - 0xD1, 0x23, 0x5B, 0xD4, 0x41, 0x9B, 0x09, 0x9E, - 0x0F, 0x0D, 0xE5, 0x42, 0xC4, 0x69, 0x35, 0x99, - 0x1B, 0xE0, 0x69, 0x2A, 0x6D, 0x80, 0xB8, 0xFD, - 0x98, 0x86, 0xE0, 0xFA, 0x17, 0x69, 0xB4, 0x9E, - 0x8A, 0xE6, 0x30, 0x7C, 0xB0, 0xBC, 0x1B, 0x49, - 0x73, 0x2D, 0x26, 0xE2, 0x5C, 0xA1, 0xCD, 0x9D, - 0x40, 0x7E, 0x0D, 0x88, 0x64, 0x04, 0x09, 0x41, - 0x61, 0x1F, 0x93, 0x33, 0xB6, 0x36, 0x7E, 0x83, - 0x00, 0xFD, 0x64, 0x6A, 0xC5, 0xA7, 0x1A, 0xD9, - 0x13, 0xEE, 0xFD, 0x80, 0x8D, 0x5C, 0xAF, 0xBF, - 0x15, 0x21, 0xA3, 0x06, 0x2E, 0xC1, 0x84, 0xE5, - 0x21, 0x65, 0x50, 0x1E, 0x00, 0x55, 0x56, 0xDE, - 0x4D, 0xEE, 0x46, 0xF9, 0xE5, 0x3D, 0x7D, 0xEF, - 0x99, 0x09, 0xF3, 0xD5, 0xD9, 0x8C, 0xA8, 0x0D, - 0x87, 0x70, 0x7F, 0x7B, 0xC0, 0xFF, 0x8D, 0x87, - 0x9D, 0x65, 0xD4, 0xD7, 0x83, 0xD1, 0x96, 0xF2, - 0x46, 0x06, 0x93, 0x81, 0x1C, 0xDF, 0x33, 0x35, - 0x8E, 0x08, 0x2D, 0x81, 0xF4, 0xDB, 0x8F, 0x6C, - 0x20, 0x48, 0x61, 0x83, 0xA3, 0x6D, 0x4F, 0xBC, - 0xC8, 0xA1, 0xC6, 0xDA, 0x21, 0xAA, 0x4D, 0xD1, - 0x36, 0xE1, 0x9F, 0xEF, 0x2E, 0xA9, 0x93, 0x97, - 0x2B, 0xB9, 0x98, 0x9A, 0xC1, 0xC3, 0x8A, 0x79, - 0xF3, 0x18, 0x52, 0x17, 0x80, 0x04, 0x12, 0x3C, - 0x46, 0x27, 0x7D, 0x38, 0xA8, 0x8F, 0xC1, 0x58, - 0x9F, 0x25, 0x73, 0x32, 0x28, 0x4C, 0xD8, 0xA8, - 0x73, 0xC2, 0x5A, 0x1A, 0x6D, 0x40, 0x26, 0x5B, - 0x28, 0x5D, 0xF0, 0x93, 0x70, 0xE8, 0x8F, 0x72, - 0xFF, 0x70, 0xE4, 0x34, 0xE8, 0xF6, 0x60, 0x84, - 0xCC, 0xFE, 0xBD, 0xBB, 0xC4, 0xB9, 0x9E, 0xDF, - 0xBC, 0x75, 0x0C, 0xC5, 0xDE, 0xA6, 0x36, 0x17, - 0xF6, 0x47, 0xF5, 0xF0, 0x21, 0xD5, 0x7D, 0x64, - 0xD5, 0xEF, 0xF0, 0x48, 0x63, 0x4D, 0xB2, 0x20, - 0x9D, 0x7C, 0x8B, 0x82, 0xFB, 0x63, 0xB8, 0x82, - 0x3E, 0x4C, 0xA0, 0x57, 0x16, 0x8B, 0xAE, 0x88, - 0xD9, 0x71, 0x52, 0x91, 0x24, 0x0B, 0x37, 0x58, - 0xD7, 0x68, 0x45, 0x01, 0xF8, 0x61, 0x86, 0x7B, - 0x7A, 0x24, 0x1C, 0x06, 0x3B, 0x05, 0xD5, 0xE8, - 0xCA, 0x6B, 0x4C, 0x79, 0xCB, 0x24, 0x35, 0xD7, - 0xF9, 0x94, 0xCB, 0x76, 0x91, 0x5B, 0x4A, 0x54, - 0x87, 0x08, 0xB1, 0x1B, 0x29, 0x44, 0x96, 0x85, - 0x94, 0x1D, 0x43, 0xE6, 0x0A, 0x89, 0x76, 0xF9, - 0xA9, 0x60, 0x72, 0xF9, 0x10, 0x41, 0xF4, 0xC3, - 0xDF, 0x7C, 0x73, 0x96, 0x90, 0x12, 0xAE, 0x1B, - 0x30, 0xE4, 0xB9, 0xC4, 0xE1, 0x33, 0x55, 0x8D, - 0xAB, 0xC4, 0x6C, 0x10, 0x3C, 0x0C, 0xB1, 0xDF, - 0xB9, 0x9B, 0x58, 0x53, 0x74, 0xA5, 0x4F, 0x9B, - 0xA5, 0x6B, 0x72, 0x48, 0xB8, 0xC3, 0xF6, 0x6F, - 0x1D, 0x55, 0x76, 0x0D, 0x6A, 0xBB, 0x43, 0x03, - 0x75, 0x77, 0x4D, 0xFB, 0xA2, 0x05, 0x9C, 0x5D, - 0xDD, 0xB6, 0x59, 0xFD, 0x2E, 0x1D, 0xA9, 0xC3, - 0xF0, 0xB8, 0x08, 0x68, 0xC9, 0x2B, 0xCA, 0xC1, - 0x04, 0x03, 0xDC, 0xD1, 0x40, 0xD6, 0xA3, 0xD3, - 0xF3, 0x5F, 0x8E, 0xF1, 0xA2, 0xDD, 0x98, 0xDE, - 0x1A, 0x43, 0x34, 0x23, 0x85, 0x99, 0xED, 0xAD, - 0x92, 0x0D, 0xC0, 0xAA, 0x69, 0x8E, 0x9F, 0xE6, - 0x10, 0x6A, 0x07, 0x80, 0xC9, 0xC2, 0x45, 0xF2, - 0xC6, 0x5A, 0x0C, 0x3E, 0x5C, 0xD5, 0x36, 0x61, - 0x10, 0xB1, 0x76, 0x0F, 0xCD, 0x41, 0x4D, 0x45, - 0x0D, 0xB9, 0xD7, 0x6A, 0x22, 0xA9, 0xEA, 0xEA, - 0x0C, 0x9F, 0xB7, 0x2E, 0xD5, 0x43, 0xCE, 0x9F, - 0xA3, 0x31, 0x4B, 0xAB, 0x17, 0x68, 0x7E, 0x9D, - 0xE5, 0xAD, 0xAD, 0x75, 0x61, 0xF1, 0xA5, 0xBE, - 0xC1, 0x63, 0x39, 0x26, 0x9A, 0x87, 0xE0, 0x9A, - 0xCB, 0x29, 0xE4, 0xC4, 0x39, 0x60, 0x5E, 0x95, - 0x72, 0xAA, 0x9B, 0x7D, 0x0E, 0x83, 0x71, 0xA3, - 0x0E, 0x41, 0xA0, 0xA7, 0xBD, 0xC0, 0x2D, 0xA3, - 0xA6, 0x12, 0x1B, 0xF2, 0x61, 0xEA, 0xA0, 0x16, - 0xA2, 0x07, 0x4E, 0x44, 0x32, 0xCF, 0x63, 0xAF, - 0x96, 0xBE, 0x81, 0xCE, 0xB6, 0xE0, 0xC2, 0x67, - 0x6A, 0x85, 0x45, 0xC6, 0x6D, 0x2F, 0x30, 0xC9, - 0x8B, 0x54, 0x24, 0xF0, 0xFE, 0xF0, 0x4B, 0x3C, - 0x6C, 0x70, 0x64, 0xE2, 0xD2, 0xE1, 0x1C, 0xBE, - 0x60, 0xF8, 0x57, 0x23, 0xFF, 0xC0, 0xB7, 0x70, - 0xD6, 0x86, 0x6F, 0xFA, 0x58, 0x9E, 0x3F, 0x9B, - 0x2A, 0xBF, 0x75, 0x10, 0x40, 0x19, 0xAA, 0x69, - 0xCB, 0x58, 0x89, 0x5B, 0x47, 0x4A, 0x0A, 0xDE, - 0x2B, 0x60, 0xA4, 0xAB, 0x07, 0x7C, 0x3A, 0x6D, - 0xF6, 0x15, 0x33, 0x4E, 0xBB, 0xE7, 0x32, 0xE9, - 0x52, 0x20, 0x21, 0x39, 0x94, 0xD3, 0xBD, 0xC4, - 0x43, 0xC8, 0xEF, 0x94, 0xAD, 0x51, 0x5F, 0x45, - 0x41, 0x83, 0x55, 0x18, 0x33, 0x14, 0x48, 0x58, - 0x57, 0xAC, 0x12, 0xBA, 0x1D, 0x62, 0xCF, 0x4F, - 0xD4, 0xF4, 0xDE, 0x2A, 0x7F, 0xFF, 0x1E, 0xCF, - 0x0D, 0x29, 0x0C, 0x4C, 0xDF, 0xFA, 0x88, 0xD8, - 0xF4, 0x8C, 0x5B, 0x83, 0x7D, 0x3A, 0x94, 0xCD, - 0x17, 0xB3, 0xD1, 0x69, 0x96, 0x6E, 0xB0, 0x38, - 0xFE, 0x5A, 0x6E, 0x85, 0xDF, 0xC6, 0x0A, 0x00, - 0x23, 0x3F, 0x10, 0x73, 0x19, 0x73, 0xDC, 0x47, - 0x5D, 0x53, 0xBC, 0x7B, 0x9E, 0x60, 0x32, 0x0B, - 0xA7, 0x90, 0x5D, 0x88, 0x51, 0x9F, 0xA3, 0x25, - 0xDF, 0x5A, 0xB0, 0x2B, 0x40, 0xF2, 0xAB, 0xBD, - 0xB3, 0x7D, 0x22, 0x61, 0xCB, 0x81, 0x48, 0x27, - 0x7B, 0x87, 0xAE, 0x32, 0x97, 0x97, 0x6C, 0x80, - 0xC3, 0x51, 0x34, 0xE5, 0xF7, 0x86, 0x90, 0x45, - 0x64, 0xC1, 0x46, 0x99, 0x47, 0xF6, 0x20, 0xFE, - 0x09, 0xFD, 0xF3, 0x86, 0x2C, 0x40, 0x57, 0xA3, - 0xBC, 0xEF, 0x70, 0x75, 0x0C, 0xB7, 0x27, 0xF0, - 0x31, 0x28, 0x3A, 0x18, 0x26, 0xF1, 0x38, 0x1B, - 0x33, 0x48, 0xE3, 0xEA, 0x46, 0x88, 0x60, 0x9E, - 0xCB, 0x19, 0x3A, 0xFA, 0xAE, 0xE1, 0xCD, 0x97, - 0xE4, 0xDD, 0xAA, 0x02, 0xC0, 0xC3, 0x0E, 0x49, - 0xF1, 0x37, 0xD0, 0x82, 0x85, 0x94, 0x15, 0x28, - 0x10, 0x17, 0x59, 0xA7, 0x42, 0x2A, 0xA4, 0x99, - 0xC9, 0x00, 0xA3, 0x79, 0xDD, 0x73, 0xB3, 0x07, - 0x28, 0x4C, 0xCD, 0xDA, 0xF1, 0xFA, 0x1B, 0x0C, - 0x4B, 0x28, 0x0E, 0x3F, 0x9F, 0x1D, 0xB6, 0xD3, - 0x8E, 0xCF, 0x8A, 0x84, 0x1F, 0x9D, 0x4E, 0x40, - 0xEC, 0xA8, 0x62, 0x47, 0xD6, 0xCD, 0x9B, 0x31, - 0xEA, 0xCD, 0x6A, 0x46, 0xF0, 0xE3, 0x33, 0xB9, - 0xE8, 0x3D, 0x69, 0x0D, 0x7E, 0x13, 0x46, 0x76, - 0x19, 0xB4, 0x6A, 0xF9, 0xAF, 0xCF, 0xDC, 0x4A, - 0xA9, 0xA0, 0x49, 0xB1, 0x80, 0x26, 0x0D, 0x70, - 0xD9, 0xEE, 0xDB, 0x8A, 0x53, 0x30, 0x51, 0xAB, - 0x83, 0x51, 0x7A, 0xAD, 0xC2, 0xCD, 0x90, 0x0B, - 0x3E, 0xA5, 0x12, 0x60, 0xF4, 0x64, 0xAF, 0xC5, - 0xD2, 0xDC, 0x41, 0x10, 0x29, 0x77, 0x9B, 0x21, - 0xCE, 0x2C, 0xBD, 0x16, 0x02, 0x18, 0xDF, 0x41, - 0xF6, 0x61, 0xDA, 0x1A, 0xD9, 0x5A, 0xD4, 0x0B, - 0x8C, 0x35, 0x3C, 0x7F, 0x10, 0xFC, 0x23, 0xF8, - 0x30, 0xD1, 0x17, 0xBC, 0xAE, 0xF8, 0xCE, 0xCE, - 0xBC, 0xBF, 0xA4, 0x9D, 0x79, 0xD8, 0xD9, 0x39, - 0x1E, 0x8D, 0x08, 0x28, 0x1F, 0x00, 0x0A, 0x55, - 0xE9, 0x2D, 0xB3, 0x31, 0xBD, 0xEC, 0xD7, 0x31, - 0x83, 0xE0, 0x58, 0xFF, 0x3F, 0xE5, 0x83, 0x9A, - 0xF5, 0x0D, 0x8C, 0x55, 0xF2, 0x2F, 0x6A, 0xFF, - 0x5A, 0x33, 0xDA, 0x77, 0x4B, 0xA1, 0xB3, 0xE6, - 0x43, 0xF5, 0x87, 0x7C, 0xF5, 0x49, 0xC4, 0xF9, - 0x08, 0xEA, 0x64, 0xA3, 0x7D, 0xF3, 0xBF, 0xA4, - 0xCD, 0x5F, 0x70, 0xF8, 0xCD, 0x15, 0x44, 0x76, - 0xD3, 0x4B, 0xC8, 0x53, 0xC9, 0xE8, 0xF7, 0x97, - 0x9E, 0x5F, 0x4E, 0xBB, 0x88, 0x8A, 0xF7, 0x61 - }; - static const byte msg_87[] = { - 0x4A, 0xC4, 0x67, 0x5C, 0x96, 0xD9, 0x11, 0x7D, - 0x1E, 0xDE, 0xB8, 0x0D, 0x7C, 0xD2, 0x84, 0xA3, - 0xE1, 0xE1, 0xFE, 0x03, 0x8E, 0x30, 0x12, 0x05, - 0xB4, 0xC4, 0x08, 0xEB, 0x96, 0x52, 0x35, 0xAD, - 0x1C, 0x85, 0xF8, 0xBE, 0x3F, 0x77, 0xCA, 0x48, - 0x6F, 0xD2, 0x07, 0xF7, 0xC7, 0x5F, 0x41, 0x21, - 0xCD, 0x3C, 0xA2, 0xB2, 0x3D, 0x6B, 0xCE, 0x43, - 0x82, 0xA6, 0xD3, 0x61, 0x21, 0x81, 0x50, 0x25, - 0xD5, 0x80, 0x6C, 0xBE, 0xF4, 0x52, 0xE0, 0x83, - 0x93, 0x3C, 0x6E, 0x5C, 0x73, 0x94, 0xAC, 0x88, - 0x26, 0x2A, 0x6D, 0xE7, 0x77, 0x0B, 0x2D, 0x88, - 0x43, 0xEC, 0x10, 0x1F, 0xFB, 0x5E, 0x84, 0xDE, - 0x2F, 0x7A, 0x8B, 0x74, 0xE7, 0x67, 0x4B, 0x3B, - 0x23, 0x19, 0xBD, 0x6B, 0xF4, 0x11, 0x2F, 0x92, - 0xC5, 0xCF, 0xC0, 0xA5, 0x5F, 0x7F, 0xA0, 0x61, - 0xF4, 0x53, 0x25, 0x40, 0x8D, 0x03, 0x9D, 0x51 - }; - static const byte sig_87[] = { - 0x4B, 0x3F, 0x52, 0xF0, 0x81, 0xB3, 0xD9, 0x14, - 0xBC, 0x7C, 0x6C, 0x07, 0x3B, 0x18, 0x2B, 0x26, - 0x8A, 0xDF, 0x51, 0x89, 0xE2, 0x98, 0xA8, 0x69, - 0xBF, 0xB9, 0x91, 0xB1, 0x99, 0x99, 0x3C, 0x10, - 0x42, 0xDE, 0xF5, 0xB5, 0x92, 0x70, 0xB6, 0xCD, - 0x3F, 0xF8, 0xF9, 0x07, 0xA1, 0xCB, 0x0D, 0x3B, - 0x6F, 0xED, 0xCA, 0x14, 0x38, 0x38, 0xF8, 0xF8, - 0x1E, 0x0C, 0x37, 0x0F, 0xFE, 0xEE, 0x6B, 0x25, - 0xCD, 0x07, 0x03, 0x56, 0x41, 0xA0, 0x51, 0x94, - 0x4E, 0xAB, 0x51, 0x6C, 0xFB, 0xB8, 0x01, 0x53, - 0x6B, 0x4F, 0x26, 0x2B, 0x16, 0x19, 0x8E, 0x7D, - 0xDB, 0x1D, 0x61, 0xC3, 0x5A, 0x64, 0xD9, 0x0D, - 0x39, 0x48, 0xCE, 0xAA, 0xC8, 0xEE, 0x58, 0x0D, - 0xCE, 0xF5, 0x40, 0xED, 0x99, 0xD9, 0x12, 0xBB, - 0xA2, 0xBC, 0x4F, 0x51, 0x45, 0xBB, 0x94, 0x9C, - 0x73, 0xCC, 0xBD, 0x58, 0x26, 0x13, 0xB1, 0x0E, - 0xAA, 0xE8, 0x63, 0xAC, 0xA3, 0x46, 0x83, 0xEB, - 0x92, 0x2B, 0x3D, 0xAD, 0xFC, 0x74, 0xF7, 0x6F, - 0x47, 0xE4, 0x97, 0x86, 0x02, 0x59, 0x24, 0x02, - 0xD9, 0x15, 0x43, 0x94, 0xEB, 0x09, 0xFB, 0xC2, - 0xEB, 0xCC, 0xC5, 0x94, 0x73, 0x2F, 0x2D, 0x8B, - 0xC3, 0x83, 0x50, 0xE5, 0x53, 0x5A, 0x44, 0x12, - 0xA7, 0x7A, 0xDD, 0x79, 0x16, 0x60, 0x45, 0x76, - 0xFD, 0x6A, 0x36, 0x31, 0xE5, 0x15, 0xBA, 0xF2, - 0x6A, 0x6F, 0x9C, 0xA4, 0x06, 0x1E, 0xBB, 0xDD, - 0x3B, 0xEC, 0x71, 0x79, 0xAD, 0x58, 0x55, 0x2A, - 0x5B, 0x50, 0x8F, 0x31, 0x34, 0x8A, 0x56, 0xAD, - 0x1A, 0xDA, 0x7A, 0x05, 0x35, 0x2C, 0x72, 0xC0, - 0x04, 0xB9, 0x4C, 0x47, 0xE7, 0x04, 0x9A, 0x10, - 0xB3, 0xA5, 0x9B, 0xF2, 0x38, 0xA8, 0xDF, 0xC6, - 0xC7, 0x01, 0x9A, 0x17, 0xF0, 0x5D, 0x5B, 0xFC, - 0xB9, 0xD9, 0x3D, 0x9D, 0x1C, 0xCB, 0xCB, 0x47, - 0xF8, 0xC4, 0x38, 0x09, 0x8F, 0xDB, 0xDF, 0xE2, - 0x3F, 0x9F, 0x78, 0xBC, 0x28, 0x06, 0x99, 0x08, - 0xC6, 0xB9, 0x89, 0x8B, 0x43, 0x4C, 0xBF, 0x37, - 0x78, 0x7E, 0x1A, 0xF6, 0xA6, 0xB8, 0x27, 0xE8, - 0x30, 0xE9, 0xF7, 0x62, 0x9C, 0xD8, 0xF5, 0x10, - 0x70, 0xC4, 0xC8, 0xA8, 0xDE, 0xB2, 0x60, 0xD0, - 0x7C, 0x3E, 0x41, 0xD8, 0x49, 0x04, 0x84, 0x87, - 0x74, 0x91, 0xB3, 0x9A, 0xA6, 0xD9, 0xE1, 0x0D, - 0x91, 0x74, 0x8B, 0x64, 0xE3, 0x31, 0x60, 0x62, - 0x9D, 0x8A, 0xE4, 0x3E, 0xFD, 0x5F, 0x85, 0x78, - 0x1E, 0x69, 0xF7, 0x6B, 0x68, 0x95, 0xC1, 0x41, - 0xEB, 0xCD, 0xDF, 0xEE, 0xB4, 0x85, 0xA0, 0x0B, - 0xDB, 0xA4, 0xF7, 0xC9, 0x91, 0xF5, 0x3F, 0x2F, - 0x84, 0x93, 0x39, 0x26, 0xAF, 0x39, 0xE6, 0x96, - 0x4A, 0xBF, 0x2D, 0xFE, 0xBB, 0xC1, 0x9A, 0x7E, - 0x31, 0xC5, 0x07, 0x97, 0xB8, 0xDA, 0x29, 0x31, - 0xE1, 0x0F, 0x3D, 0xAC, 0x49, 0x3F, 0x19, 0x8D, - 0xFD, 0x78, 0x5D, 0x21, 0xAD, 0xB2, 0xC0, 0x62, - 0xB0, 0x97, 0xE8, 0x89, 0xA2, 0x07, 0x37, 0xF1, - 0x86, 0x00, 0x8F, 0x29, 0x28, 0xF6, 0xB8, 0x4D, - 0x6E, 0x09, 0xE9, 0x75, 0xA8, 0xF2, 0xAA, 0xAD, - 0xC7, 0x85, 0x23, 0x42, 0x34, 0xFD, 0xA0, 0x37, - 0x03, 0xA7, 0xC2, 0x1F, 0x81, 0x2D, 0x65, 0x0B, - 0xD2, 0x51, 0x0B, 0x30, 0xF0, 0x55, 0x00, 0x81, - 0x04, 0x7A, 0x15, 0x5C, 0x84, 0x85, 0x86, 0xA9, - 0x6F, 0x10, 0x0D, 0x77, 0x4F, 0x3E, 0x39, 0xE0, - 0x29, 0xB0, 0x77, 0x7C, 0xD3, 0x3E, 0x68, 0x31, - 0x8A, 0x11, 0xC1, 0x98, 0x02, 0x93, 0xFA, 0xD3, - 0xE7, 0x87, 0xD2, 0x0D, 0xFE, 0x7E, 0xEE, 0x70, - 0x53, 0xC0, 0x5E, 0xEB, 0x6A, 0x15, 0x9B, 0xAA, - 0xD4, 0x02, 0x0B, 0x9E, 0xC3, 0xF5, 0x37, 0xDA, - 0x4D, 0xAD, 0xAF, 0xB3, 0xB1, 0xBB, 0x1D, 0xBE, - 0xB2, 0xD5, 0xB8, 0xF9, 0xD0, 0x5A, 0x01, 0x97, - 0x98, 0xEA, 0xE0, 0xED, 0x09, 0x9D, 0xB0, 0x66, - 0xD7, 0x3E, 0xE8, 0xE9, 0xA5, 0x6D, 0xE3, 0x68, - 0xE8, 0x78, 0xA7, 0xFF, 0x39, 0x14, 0x0D, 0x80, - 0x21, 0xD5, 0x00, 0x85, 0xE6, 0x25, 0x29, 0x41, - 0xAB, 0x31, 0x53, 0x09, 0xCB, 0x53, 0xAA, 0xA4, - 0x9E, 0x86, 0x34, 0x7F, 0xBA, 0xD5, 0x4A, 0x1F, - 0x87, 0x3E, 0x0C, 0xB4, 0xB8, 0x6A, 0x8D, 0x5B, - 0x1B, 0x2A, 0x95, 0xD4, 0x85, 0xF3, 0x7A, 0x9F, - 0xB6, 0x10, 0x5D, 0xF8, 0x44, 0x0F, 0xDB, 0x85, - 0x78, 0xF2, 0x62, 0x4C, 0x07, 0x93, 0x29, 0x56, - 0x9A, 0x75, 0xF3, 0x6F, 0x2C, 0x55, 0xD8, 0xD0, - 0x30, 0xFB, 0xFE, 0xAA, 0x88, 0x89, 0xAD, 0x74, - 0x6C, 0x32, 0x3B, 0x1A, 0xC4, 0xEC, 0x8C, 0x40, - 0x3E, 0x77, 0x5A, 0x6F, 0xBE, 0x59, 0x6E, 0x7E, - 0x6A, 0x5A, 0x28, 0x63, 0x57, 0x66, 0x25, 0x14, - 0x99, 0x40, 0x97, 0x6F, 0x7C, 0xC9, 0x36, 0x17, - 0xB4, 0x3F, 0xB1, 0x34, 0x89, 0x07, 0x4E, 0xCA, - 0xC5, 0xBE, 0xB1, 0xA4, 0xDF, 0xE5, 0x8B, 0x9A, - 0xD2, 0xE0, 0xC6, 0xA1, 0x5B, 0x76, 0xA7, 0xC2, - 0xD2, 0x08, 0x72, 0x5A, 0x31, 0x23, 0xCA, 0x4E, - 0x6F, 0x2C, 0x58, 0x47, 0xEE, 0x5F, 0xA8, 0x38, - 0x49, 0x19, 0xEF, 0x89, 0x01, 0x1D, 0x21, 0x9B, - 0x25, 0x7B, 0x3E, 0x4D, 0xC4, 0xF2, 0x09, 0x51, - 0x60, 0x84, 0x4C, 0xAE, 0xEA, 0xFC, 0xF8, 0x57, - 0x26, 0x0F, 0x1C, 0x63, 0xD3, 0xB0, 0x5A, 0x67, - 0xD3, 0xD0, 0xF2, 0xB0, 0xEC, 0x9D, 0xCC, 0x27, - 0x23, 0xF1, 0x37, 0x55, 0x75, 0x0B, 0xAE, 0x62, - 0xFC, 0xC3, 0x61, 0xCF, 0xB5, 0x84, 0xF7, 0x74, - 0xC0, 0x9A, 0xDF, 0x9A, 0x04, 0x31, 0xB2, 0x3E, - 0x48, 0x8C, 0x35, 0x9C, 0x0A, 0xEF, 0x5B, 0x1C, - 0x97, 0x87, 0xBD, 0x8F, 0x52, 0xB0, 0x83, 0xBC, - 0x9D, 0xBC, 0xC9, 0xB3, 0x03, 0x9F, 0x77, 0x7C, - 0x7E, 0x8E, 0xAB, 0xC8, 0x00, 0x78, 0x05, 0x0C, - 0xE6, 0xD4, 0x9C, 0x3B, 0xB7, 0x01, 0x68, 0xFA, - 0x21, 0x77, 0x29, 0x8F, 0xB0, 0xA8, 0xF7, 0x2C, - 0x1C, 0xD2, 0x8D, 0x66, 0x2A, 0x07, 0xDA, 0xE6, - 0xC7, 0xAC, 0xB7, 0xFB, 0x8E, 0x7F, 0xDD, 0x01, - 0xDF, 0xB2, 0x7C, 0x62, 0xEE, 0x68, 0x3F, 0x4E, - 0x5F, 0x88, 0xC7, 0xC1, 0xDD, 0xDD, 0x5E, 0xEC, - 0xC1, 0xC3, 0xAF, 0x85, 0x3F, 0x1F, 0xF6, 0xB1, - 0xD9, 0xDE, 0x67, 0x2F, 0x1B, 0xF6, 0x47, 0x3A, - 0xF0, 0x02, 0x1D, 0x8A, 0x3D, 0x4D, 0xD0, 0x4A, - 0x2F, 0xCA, 0x23, 0x25, 0xC7, 0x21, 0xCF, 0x1C, - 0x82, 0x16, 0x76, 0xD0, 0xA0, 0xD5, 0x74, 0x18, - 0x66, 0x25, 0xDE, 0x83, 0x1C, 0x84, 0x11, 0xF6, - 0x41, 0x79, 0xF9, 0x16, 0x7F, 0x78, 0xBC, 0xB2, - 0x2F, 0xB4, 0x1C, 0x2C, 0xDB, 0x63, 0xC4, 0xDB, - 0x5E, 0x13, 0x87, 0x66, 0xD3, 0x80, 0x35, 0x89, - 0x59, 0x8F, 0x11, 0x4F, 0x41, 0xBA, 0x42, 0xCD, - 0xB1, 0x34, 0x10, 0x20, 0x44, 0x9B, 0xA9, 0x96, - 0x56, 0x11, 0x39, 0x90, 0xB4, 0xE0, 0x22, 0xD8, - 0xDA, 0x20, 0xD7, 0x44, 0x49, 0x1C, 0x6E, 0xEA, - 0xB6, 0x7B, 0x91, 0x8E, 0x80, 0xFF, 0xF3, 0x43, - 0xCC, 0x5B, 0x4C, 0x8E, 0x58, 0xC3, 0x48, 0x4B, - 0x01, 0x25, 0xA6, 0x0C, 0x36, 0xAE, 0xF7, 0x63, - 0x89, 0x4D, 0x35, 0x14, 0x8B, 0x57, 0x8F, 0x41, - 0x7C, 0x3A, 0x98, 0xA1, 0x43, 0xED, 0xFE, 0x9F, - 0x8C, 0x95, 0xBC, 0xC3, 0x46, 0xC6, 0xF5, 0xEA, - 0xF9, 0x7A, 0xAD, 0x11, 0xDA, 0xE0, 0x1C, 0x47, - 0x7C, 0x22, 0x7A, 0x88, 0xD1, 0x0E, 0xCF, 0xDC, - 0xF4, 0x50, 0xB3, 0x7F, 0x88, 0x19, 0x68, 0x02, - 0x78, 0x49, 0xD9, 0xB4, 0x3E, 0x2B, 0xFF, 0x90, - 0xC6, 0xA3, 0x4A, 0xE4, 0x1B, 0x8B, 0xBD, 0x74, - 0x30, 0x83, 0xD3, 0xC5, 0x87, 0x86, 0xB0, 0x36, - 0x67, 0x1C, 0xD6, 0xEE, 0xD9, 0x4D, 0xAE, 0x51, - 0xF7, 0x61, 0x32, 0x47, 0xEF, 0x86, 0x07, 0xAC, - 0xF7, 0x4A, 0x3C, 0xCE, 0x93, 0x2F, 0x1C, 0x38, - 0x69, 0xBD, 0xB3, 0x5C, 0xA1, 0x7F, 0xC6, 0xBA, - 0x9F, 0x9C, 0x95, 0x6F, 0xF1, 0xD4, 0xD8, 0x80, - 0x94, 0x32, 0x5C, 0xAB, 0xCE, 0x41, 0x23, 0x3F, - 0xB1, 0xD8, 0x08, 0xEF, 0x41, 0x01, 0x03, 0x96, - 0xDE, 0xB0, 0xEC, 0xF5, 0x07, 0x34, 0xD8, 0x18, - 0xDD, 0xAB, 0x70, 0x01, 0x5A, 0x0A, 0xBD, 0xD1, - 0x92, 0x6D, 0xFA, 0x49, 0x1F, 0x71, 0x1A, 0xA8, - 0x5D, 0xA2, 0xA8, 0xEC, 0x60, 0xE3, 0x25, 0x5C, - 0xCF, 0x97, 0x5C, 0x23, 0xCC, 0x4E, 0x8D, 0xAF, - 0xDD, 0xED, 0x9F, 0xEC, 0x60, 0xA6, 0x46, 0x7C, - 0x45, 0xB0, 0x3C, 0xA4, 0x76, 0x49, 0x9A, 0xA3, - 0x31, 0xB0, 0xE3, 0x99, 0x95, 0x76, 0xCE, 0xC3, - 0x19, 0x1A, 0x9A, 0x62, 0xBC, 0x1B, 0xEA, 0xC1, - 0xEA, 0xF2, 0x0E, 0x18, 0xCF, 0xC3, 0x21, 0x61, - 0x27, 0xDE, 0x4A, 0xAE, 0x2E, 0x75, 0x20, 0x1F, - 0x9E, 0x42, 0x7E, 0x39, 0xBF, 0x92, 0x11, 0x50, - 0xEA, 0xB9, 0x49, 0x55, 0x9C, 0x02, 0x2D, 0x87, - 0x6F, 0xA2, 0x42, 0xC2, 0xA8, 0x45, 0xBC, 0xA7, - 0x23, 0x5F, 0x72, 0x1B, 0x00, 0x56, 0x78, 0x8A, - 0x44, 0xEC, 0xC3, 0xEB, 0x98, 0xF0, 0xF5, 0x02, - 0xB8, 0x9F, 0x8E, 0x74, 0x10, 0xEA, 0x56, 0x79, - 0xAE, 0x7C, 0x04, 0x34, 0xF1, 0x3A, 0xD8, 0x16, - 0x42, 0x1D, 0x2F, 0xEE, 0x30, 0xCB, 0xCB, 0x2D, - 0xAA, 0x6B, 0x85, 0x1C, 0xD1, 0xB6, 0xE9, 0x96, - 0xDA, 0x7A, 0x75, 0x7E, 0x4C, 0x4D, 0x85, 0x72, - 0xC8, 0xB6, 0x00, 0xDE, 0x85, 0xDD, 0xB6, 0x53, - 0x20, 0xD1, 0xCB, 0x71, 0xD9, 0x37, 0x83, 0x49, - 0xC0, 0xC4, 0x01, 0xAD, 0x4F, 0x9E, 0x91, 0x27, - 0x21, 0x39, 0x22, 0x8A, 0x8D, 0xA2, 0xF4, 0xFD, - 0x2F, 0x48, 0x89, 0x1A, 0x4D, 0xCB, 0x06, 0x6D, - 0x50, 0x1D, 0x44, 0x74, 0x83, 0xB6, 0x11, 0xBB, - 0x3C, 0x80, 0x55, 0x0A, 0x90, 0xEA, 0x0B, 0x73, - 0x2D, 0x63, 0x9D, 0x8B, 0x39, 0x26, 0xB6, 0xE7, - 0xC3, 0x54, 0x53, 0xED, 0x3C, 0xC1, 0x10, 0xBA, - 0xF5, 0x56, 0xCF, 0x46, 0xD8, 0xFC, 0x21, 0x77, - 0xE7, 0x6F, 0xB2, 0x66, 0x3B, 0x8B, 0xDD, 0x17, - 0x1E, 0x94, 0xC0, 0xAC, 0xAF, 0x25, 0xB9, 0x15, - 0x3B, 0x22, 0xBC, 0xA7, 0x49, 0x91, 0x67, 0x56, - 0xFB, 0x3E, 0xD3, 0x01, 0x8E, 0x09, 0x44, 0xB6, - 0xC3, 0xB9, 0xB6, 0xBF, 0xA1, 0x5B, 0x9B, 0xE8, - 0x03, 0xAC, 0x79, 0x33, 0x3C, 0xD2, 0xC3, 0xA2, - 0x7A, 0x26, 0xBC, 0x17, 0xCD, 0xA2, 0x57, 0x79, - 0x8A, 0xE1, 0x6B, 0x28, 0xB4, 0x63, 0xB6, 0xDF, - 0x3F, 0xA8, 0x7C, 0x2D, 0x74, 0x2D, 0x0F, 0x68, - 0x85, 0xBE, 0xE0, 0xBE, 0xC6, 0xE2, 0x0D, 0x01, - 0xE5, 0xDA, 0xDC, 0x86, 0x82, 0x3E, 0x92, 0xD6, - 0x0F, 0xEC, 0x79, 0xB0, 0xD2, 0x40, 0x24, 0x87, - 0x53, 0xE4, 0x20, 0x48, 0x38, 0x4C, 0x80, 0x42, - 0x89, 0x60, 0x48, 0x21, 0xA5, 0x7F, 0x4F, 0x9F, - 0x50, 0xAE, 0x0C, 0x38, 0x52, 0x7F, 0xE5, 0xA3, - 0x49, 0x38, 0xDD, 0xBC, 0xDC, 0xD9, 0xA1, 0xD0, - 0x20, 0x83, 0x9B, 0xEB, 0xB6, 0x2F, 0x9F, 0x41, - 0xFB, 0xA0, 0x80, 0x52, 0xAB, 0xB8, 0x2F, 0xAD, - 0xA8, 0x84, 0xCB, 0xE5, 0x63, 0x79, 0x11, 0x03, - 0xAA, 0x58, 0x55, 0x46, 0xEB, 0xFE, 0xB1, 0x12, - 0x72, 0xCC, 0x2E, 0x87, 0xA3, 0xB7, 0x5B, 0x3C, - 0x6B, 0xB1, 0x85, 0x3A, 0xE7, 0xF9, 0xCF, 0x55, - 0x85, 0xB2, 0x65, 0x3C, 0xF5, 0xEE, 0xA2, 0x44, - 0xD2, 0x04, 0xEB, 0x26, 0x9C, 0x56, 0xA2, 0x09, - 0x85, 0x16, 0x06, 0x59, 0xCB, 0x07, 0x25, 0xEE, - 0x13, 0xCE, 0x35, 0xD5, 0x5E, 0xB0, 0x95, 0xA5, - 0x34, 0x14, 0xF2, 0x32, 0xDF, 0x81, 0x08, 0xB1, - 0x80, 0x24, 0xEB, 0x0D, 0xBF, 0x34, 0x5E, 0xB5, - 0xCD, 0xAD, 0x0B, 0xCE, 0x72, 0x63, 0x50, 0x9A, - 0x34, 0x1D, 0x54, 0xA7, 0xD5, 0x34, 0xE5, 0x53, - 0xEA, 0xEF, 0xFE, 0x4E, 0x24, 0x2E, 0xA2, 0x3B, - 0xCF, 0xE5, 0x9A, 0x58, 0xA6, 0x04, 0x25, 0x88, - 0x2C, 0xB7, 0xE3, 0xB0, 0xC9, 0xE4, 0xAF, 0xE8, - 0x69, 0x8E, 0x3D, 0xF5, 0x6A, 0xFD, 0x6D, 0x61, - 0x1E, 0x91, 0x68, 0x74, 0x7D, 0x87, 0x35, 0xCF, - 0x92, 0x46, 0xD9, 0x4F, 0x21, 0x26, 0xBE, 0x72, - 0x7F, 0xB4, 0x2B, 0x22, 0x41, 0xA8, 0x3B, 0x34, - 0xF0, 0xB9, 0xEB, 0x47, 0x93, 0x8D, 0x72, 0x65, - 0x02, 0xC5, 0x4E, 0x45, 0x72, 0x76, 0x63, 0x31, - 0x62, 0x8F, 0xA5, 0xCD, 0xA8, 0x93, 0xC3, 0x53, - 0x76, 0xAB, 0x45, 0x38, 0xFF, 0x87, 0x17, 0xC2, - 0x79, 0x5B, 0x0F, 0x51, 0xF0, 0x8E, 0x11, 0x37, - 0x61, 0x2B, 0x89, 0xB0, 0xC1, 0xE2, 0xCD, 0x1F, - 0x09, 0x9E, 0x88, 0x55, 0x69, 0x23, 0xAE, 0x57, - 0xA1, 0xDA, 0xD2, 0xAF, 0xB1, 0x23, 0x0B, 0x50, - 0x94, 0xA1, 0xB2, 0x1B, 0xAD, 0x7D, 0xBB, 0xC3, - 0x33, 0xA9, 0x7F, 0x17, 0x93, 0x04, 0x71, 0x8F, - 0x32, 0x89, 0xB6, 0xDE, 0x31, 0x31, 0x5B, 0x74, - 0xC1, 0xA7, 0x3A, 0xC7, 0x75, 0x6F, 0xAA, 0x4D, - 0x7E, 0xB5, 0x68, 0xBB, 0xC6, 0xF7, 0xE7, 0x88, - 0xCD, 0x08, 0x9B, 0x39, 0x55, 0x64, 0xD2, 0x17, - 0x6B, 0x00, 0x56, 0xDF, 0xFE, 0x95, 0x2C, 0x77, - 0x48, 0xB0, 0x48, 0x30, 0x67, 0x20, 0xF6, 0x02, - 0xB6, 0x7E, 0x8F, 0x6A, 0xDC, 0xC9, 0x1F, 0x8E, - 0x3A, 0xA4, 0xB8, 0xC4, 0xD7, 0xFA, 0xC2, 0x33, - 0xAA, 0xF9, 0x36, 0x53, 0xAD, 0x22, 0x09, 0xE2, - 0xFF, 0x92, 0xDA, 0x30, 0xC2, 0xD5, 0x3F, 0xDE, - 0xF6, 0xF4, 0xC9, 0x0E, 0xAA, 0x0D, 0xE6, 0x0D, - 0x59, 0x4A, 0xDA, 0x39, 0x15, 0xDB, 0x24, 0x27, - 0x9D, 0x86, 0x74, 0x76, 0xEA, 0xD7, 0x57, 0xB4, - 0xC0, 0x26, 0x4A, 0x1D, 0xB8, 0xA1, 0xF5, 0x7A, - 0x1B, 0x5D, 0x71, 0x73, 0xBB, 0x1A, 0x96, 0x0C, - 0xE0, 0x2F, 0xDE, 0xFE, 0xF1, 0x60, 0xD5, 0x12, - 0x66, 0x7D, 0x65, 0x52, 0x68, 0xFC, 0xC3, 0xA1, - 0x53, 0xA4, 0x31, 0x47, 0x82, 0xA0, 0xEB, 0xFF, - 0x84, 0xF6, 0x5F, 0x14, 0xA0, 0xE3, 0xE1, 0x2A, - 0x13, 0x25, 0x0C, 0x07, 0xD0, 0x8C, 0x22, 0x5B, - 0x11, 0xA6, 0x83, 0x1B, 0xC2, 0x5C, 0x40, 0x46, - 0x7B, 0x76, 0x80, 0x04, 0xDD, 0xE0, 0xE8, 0x74, - 0xA5, 0x11, 0x44, 0xC1, 0x89, 0x20, 0xBD, 0xF2, - 0x86, 0x09, 0x0B, 0x59, 0xF5, 0x15, 0x64, 0xEA, - 0x40, 0x70, 0xFB, 0xBF, 0x61, 0xE3, 0x69, 0x64, - 0x35, 0xF2, 0x8F, 0x63, 0x33, 0x2B, 0x64, 0x49, - 0x6D, 0xF3, 0xEC, 0x8B, 0x65, 0xD5, 0x4E, 0x1C, - 0xF4, 0x78, 0x9D, 0xDA, 0xB1, 0x22, 0xDA, 0x6B, - 0x26, 0x4D, 0x31, 0x2A, 0x71, 0x1C, 0x12, 0x9E, - 0x3B, 0x07, 0xF4, 0xC6, 0xDA, 0x25, 0xA5, 0x61, - 0x73, 0xAF, 0x58, 0xB9, 0x0A, 0x71, 0xB7, 0xAC, - 0xFA, 0x31, 0x61, 0xA8, 0x1F, 0x59, 0xD1, 0x79, - 0x14, 0xC9, 0x9B, 0xBA, 0xC4, 0xF9, 0xA3, 0x14, - 0x97, 0x7A, 0x89, 0xCE, 0xF7, 0x69, 0x69, 0x43, - 0x60, 0x9B, 0xB4, 0x82, 0x79, 0x64, 0xFB, 0x29, - 0x76, 0x40, 0x3B, 0xD4, 0x99, 0x6F, 0x1E, 0x84, - 0x2B, 0xF5, 0xAA, 0xAE, 0x1E, 0xCC, 0xA1, 0x12, - 0x55, 0xB9, 0xE6, 0x00, 0x1C, 0x20, 0xF7, 0x2F, - 0x1F, 0xD5, 0xE3, 0x2C, 0xDA, 0x32, 0xD8, 0xA7, - 0xAC, 0x5F, 0x62, 0xB0, 0x9A, 0x0E, 0x61, 0x58, - 0x47, 0xCA, 0x74, 0x6F, 0x48, 0x95, 0x15, 0xCF, - 0x8F, 0x18, 0x31, 0x62, 0x85, 0x9F, 0x53, 0xB9, - 0x7E, 0x9E, 0x5C, 0xA8, 0x00, 0xEE, 0x62, 0x4F, - 0x72, 0x98, 0x43, 0xA0, 0x00, 0x91, 0x64, 0xA4, - 0xA9, 0xFF, 0x76, 0xEB, 0x34, 0xE4, 0x70, 0x41, - 0x84, 0x84, 0x8A, 0x13, 0x9A, 0xD9, 0x7D, 0x90, - 0x9F, 0x7A, 0x7E, 0xD1, 0x14, 0xF0, 0x87, 0xA4, - 0xB2, 0xE1, 0xB4, 0xA3, 0x03, 0x23, 0x91, 0x16, - 0x0B, 0x6F, 0x3A, 0x36, 0x49, 0xFF, 0x15, 0xAE, - 0xA2, 0xB7, 0x10, 0x7A, 0xF8, 0xA3, 0xB5, 0xFC, - 0xAD, 0x61, 0xD4, 0x3D, 0x60, 0x2E, 0x62, 0x86, - 0xA9, 0x00, 0x87, 0x0C, 0xC8, 0xCE, 0x24, 0xE3, - 0x9E, 0x78, 0xF0, 0x39, 0x7A, 0x0D, 0x7E, 0x27, - 0xE8, 0xE2, 0xD4, 0x77, 0x6A, 0x44, 0xCB, 0xA2, - 0x18, 0xEB, 0xCD, 0x88, 0xB3, 0xC2, 0x8C, 0x18, - 0x2A, 0x7C, 0x9F, 0x4D, 0xBB, 0x2D, 0xBB, 0x5E, - 0x98, 0x15, 0x63, 0xD6, 0x6C, 0xEE, 0xB7, 0x7E, - 0x7F, 0x90, 0x34, 0xBD, 0x42, 0x9D, 0x27, 0x63, - 0x7C, 0xF7, 0x97, 0xDE, 0x82, 0xE0, 0x1F, 0xEB, - 0xBC, 0xE2, 0x17, 0x1E, 0xFD, 0x01, 0x6E, 0x40, - 0x2A, 0x42, 0xD7, 0x8E, 0xA1, 0xAC, 0xE2, 0xCB, - 0x37, 0x0E, 0x75, 0xC9, 0x0A, 0xDF, 0xA1, 0xA7, - 0x93, 0xB2, 0x16, 0x9C, 0xC2, 0x65, 0x22, 0xDB, - 0x2F, 0x54, 0x6A, 0xC1, 0xDE, 0x34, 0xC9, 0x08, - 0x71, 0x20, 0xC4, 0x2A, 0x9F, 0x10, 0xC0, 0x0D, - 0x49, 0x3C, 0x25, 0x73, 0x01, 0x66, 0xF9, 0xD2, - 0x19, 0xFB, 0xDA, 0xD2, 0x22, 0xC8, 0xB2, 0x81, - 0x15, 0x54, 0x33, 0x13, 0x21, 0x08, 0x48, 0xFB, - 0x2F, 0x04, 0xBF, 0xDC, 0xE1, 0x5D, 0x32, 0x0C, - 0x36, 0x34, 0xA8, 0xE4, 0xD6, 0x37, 0x55, 0x51, - 0x59, 0x00, 0xC7, 0x5B, 0xFD, 0x09, 0x0A, 0xD7, - 0x8D, 0xD5, 0x88, 0x65, 0x9F, 0xBF, 0x97, 0xC9, - 0x6E, 0x0D, 0x0A, 0xCC, 0x8E, 0x81, 0x5E, 0x60, - 0x8F, 0x9E, 0x86, 0x1D, 0x79, 0xAF, 0x30, 0x51, - 0xB9, 0x42, 0xB5, 0x25, 0x70, 0xB6, 0x29, 0x2B, - 0xF4, 0x8C, 0x2B, 0xFA, 0xA9, 0x07, 0x7D, 0xC7, - 0x6F, 0xE9, 0x02, 0x68, 0x32, 0x17, 0xB8, 0xBF, - 0x80, 0x9E, 0xD7, 0xA0, 0x05, 0x0A, 0xDD, 0xBB, - 0x65, 0xFD, 0xDF, 0xBD, 0x24, 0x01, 0x9C, 0x91, - 0x81, 0xB5, 0xAC, 0x81, 0x56, 0x61, 0x13, 0xD6, - 0x69, 0x4E, 0xA6, 0x29, 0x1D, 0x7F, 0x4A, 0x7F, - 0x56, 0xA4, 0x1E, 0xB9, 0x1F, 0x76, 0x36, 0x8D, - 0xF8, 0x2B, 0x16, 0x4B, 0x48, 0x59, 0x25, 0x9D, - 0x71, 0x89, 0x24, 0x0F, 0x1D, 0x88, 0x03, 0xF8, - 0x10, 0x72, 0x96, 0xD3, 0x78, 0xBA, 0xB4, 0xD2, - 0x4F, 0xE6, 0xD1, 0x0E, 0xF7, 0x88, 0x36, 0x7B, - 0xCE, 0x16, 0xC5, 0xAB, 0x77, 0xFB, 0xC1, 0x68, - 0xB8, 0x57, 0xF7, 0xBA, 0x5C, 0xDC, 0xBE, 0x50, - 0x67, 0xC8, 0x64, 0xF8, 0x79, 0x80, 0x9F, 0xE5, - 0x21, 0x7D, 0xEF, 0x02, 0x94, 0xBF, 0xAF, 0xDF, - 0x80, 0x9A, 0xBC, 0xE9, 0x53, 0x2D, 0xD9, 0xDA, - 0xB3, 0x44, 0x8F, 0x4D, 0xA6, 0x8E, 0xCA, 0x51, - 0x60, 0x94, 0x76, 0x27, 0x8E, 0xB8, 0xC4, 0xF6, - 0x9E, 0xA2, 0x96, 0x73, 0xF6, 0x94, 0x18, 0x04, - 0x1D, 0x26, 0x85, 0x7E, 0xBC, 0x24, 0xA4, 0x87, - 0xBB, 0x4B, 0x0B, 0xA6, 0x3A, 0xF8, 0x48, 0x54, - 0x5E, 0xE9, 0xBE, 0x89, 0xF1, 0x39, 0xD5, 0x02, - 0x09, 0x9B, 0x9D, 0x35, 0xDB, 0x38, 0x07, 0xB9, - 0x25, 0xCB, 0xA5, 0x76, 0xE2, 0x71, 0x70, 0xEA, - 0xEC, 0x48, 0xCC, 0x2C, 0xC1, 0x5B, 0x04, 0x36, - 0x77, 0x82, 0x5D, 0x0E, 0xE8, 0x1E, 0xB2, 0xCE, - 0xE3, 0xA8, 0xED, 0x14, 0xA7, 0x98, 0xB8, 0x79, - 0x53, 0x02, 0x20, 0xE5, 0x0C, 0xE8, 0xC0, 0x03, - 0xA3, 0x05, 0x38, 0x2A, 0x24, 0xD2, 0x3C, 0x27, - 0x7B, 0x99, 0xD1, 0xF4, 0xC5, 0x4F, 0x9A, 0x8D, - 0x33, 0xFA, 0x3D, 0x1E, 0x33, 0x7E, 0x18, 0xD7, - 0xCB, 0xBA, 0x5E, 0x5A, 0x47, 0xF2, 0xD5, 0xE0, - 0x96, 0xCF, 0x45, 0x51, 0xB2, 0x3B, 0x1B, 0x86, - 0x43, 0x6E, 0x81, 0xB4, 0xA0, 0x9D, 0x1E, 0x3D, - 0x38, 0x49, 0x2E, 0xC8, 0xB2, 0xA0, 0x09, 0x67, - 0x01, 0x6A, 0xB7, 0x6B, 0x9A, 0x9B, 0x18, 0x64, - 0x67, 0x14, 0x21, 0xDA, 0x56, 0xF5, 0x7D, 0x00, - 0x8D, 0x5C, 0xE1, 0xB8, 0x92, 0xA7, 0xE9, 0xC1, - 0xF6, 0x9F, 0x6C, 0x72, 0x2C, 0xF1, 0x09, 0xDB, - 0x50, 0x0E, 0x53, 0xF6, 0xBC, 0x07, 0x83, 0x7A, - 0xD1, 0xCD, 0x4C, 0xF4, 0xA6, 0x4D, 0xA7, 0x63, - 0xB4, 0xA9, 0xC4, 0x92, 0x9B, 0x0D, 0xCD, 0xDF, - 0x7C, 0x7E, 0x11, 0x86, 0xBE, 0x3F, 0xF0, 0xC3, - 0x21, 0x15, 0x84, 0x37, 0x82, 0x0C, 0x81, 0xE7, - 0x4F, 0xF3, 0x16, 0xAE, 0x32, 0x54, 0xE9, 0x72, - 0xFC, 0x19, 0x7A, 0x7F, 0x0E, 0x62, 0x02, 0x42, - 0xAC, 0x05, 0xA4, 0xE4, 0x3E, 0x98, 0x7C, 0x2A, - 0x83, 0x55, 0xB0, 0x35, 0x77, 0x45, 0xCA, 0x79, - 0xE6, 0xAE, 0x48, 0xAB, 0x29, 0xED, 0x4F, 0xA6, - 0x3D, 0x3A, 0x1F, 0x19, 0xB9, 0x99, 0xDE, 0x25, - 0x1F, 0xDE, 0x06, 0x40, 0xDD, 0x87, 0x87, 0x6D, - 0x55, 0x76, 0x28, 0x78, 0xAD, 0x1D, 0xB1, 0x2D, - 0x65, 0xBA, 0xFD, 0x14, 0xB6, 0xA9, 0xA7, 0x08, - 0x1B, 0xF2, 0x3F, 0x9F, 0x06, 0xD9, 0x0C, 0xE2, - 0x73, 0xC5, 0xA2, 0x6E, 0x01, 0x2C, 0xA9, 0x4D, - 0xD4, 0x81, 0xD3, 0x2E, 0x10, 0x93, 0x8C, 0x16, - 0x51, 0x63, 0xE8, 0x9B, 0xE8, 0xA9, 0x3A, 0x63, - 0x03, 0x4D, 0x34, 0x5B, 0x74, 0xE2, 0xA9, 0x4E, - 0xF6, 0x43, 0xD0, 0x6A, 0xF9, 0xE1, 0xF5, 0xC9, - 0xF1, 0x04, 0x93, 0x0D, 0xA0, 0x0E, 0x61, 0xE0, - 0x61, 0xEE, 0x8C, 0x3B, 0xB1, 0x7C, 0x11, 0xE0, - 0x5D, 0x45, 0xC1, 0x68, 0x2E, 0x4D, 0x59, 0x3C, - 0x91, 0x98, 0x23, 0x8D, 0x2B, 0xA2, 0x89, 0x77, - 0x9E, 0x7D, 0x0F, 0x22, 0x7B, 0xCB, 0x0B, 0x09, - 0x97, 0x2B, 0x19, 0x77, 0x0F, 0xF0, 0x11, 0xBF, - 0x6C, 0x60, 0xD9, 0xD1, 0x93, 0xCF, 0xAB, 0x32, - 0x74, 0x7A, 0x00, 0x95, 0xE1, 0xA4, 0xAD, 0x32, - 0x51, 0x4C, 0x78, 0x2E, 0xF3, 0xDE, 0x7A, 0x26, - 0xEA, 0x77, 0x1F, 0x55, 0x30, 0xD9, 0xDE, 0x97, - 0x36, 0xD0, 0xF6, 0xAE, 0x1A, 0xFB, 0x78, 0xEC, - 0x7C, 0xE4, 0x88, 0x4A, 0x1B, 0xB4, 0x36, 0xCF, - 0xCE, 0x45, 0x9C, 0xD9, 0x93, 0x58, 0x26, 0x09, - 0x06, 0xAA, 0xC9, 0x97, 0x16, 0xA5, 0x36, 0xCC, - 0x76, 0x87, 0xA0, 0x37, 0x5F, 0xDA, 0x11, 0x00, - 0x76, 0x18, 0xE5, 0x53, 0x53, 0x4E, 0x54, 0xD5, - 0xB2, 0x14, 0xF7, 0xAA, 0x6F, 0xC7, 0xDB, 0xE3, - 0x7C, 0x2B, 0xD2, 0xB6, 0x48, 0x50, 0xAE, 0x46, - 0x9A, 0x98, 0x58, 0x98, 0x7F, 0x3F, 0xA4, 0xB1, - 0xFD, 0x26, 0xD9, 0x54, 0xBF, 0xEC, 0x36, 0x5D, - 0xBE, 0x06, 0xDD, 0xCD, 0x61, 0x5E, 0x1F, 0xED, - 0x58, 0xA8, 0x86, 0x76, 0x40, 0x2D, 0x1D, 0x6B, - 0x58, 0x14, 0x85, 0x49, 0x8B, 0x5A, 0xDF, 0xFF, - 0xC4, 0x2D, 0x47, 0xD6, 0x1D, 0xF9, 0x93, 0x84, - 0xE2, 0x2C, 0x51, 0x57, 0xF0, 0x17, 0x8A, 0x6F, - 0xDA, 0xF8, 0xF4, 0xA9, 0x49, 0x1D, 0xAF, 0x29, - 0x8B, 0x2C, 0x3E, 0xC8, 0x80, 0x85, 0x02, 0x2C, - 0x0A, 0x7C, 0xF2, 0x45, 0xED, 0x0F, 0xB5, 0xA3, - 0x8C, 0xD1, 0x6F, 0x30, 0xD3, 0x7D, 0xA5, 0xC4, - 0x95, 0x9A, 0x55, 0x50, 0x1D, 0xAD, 0x50, 0xF1, - 0xB4, 0x8B, 0xBB, 0xDD, 0x86, 0xAB, 0x8B, 0xB5, - 0x22, 0xA9, 0x36, 0xDD, 0xF0, 0x00, 0x3B, 0x81, - 0xBE, 0x16, 0x23, 0x1A, 0x04, 0xE7, 0xA5, 0x89, - 0xC5, 0x6F, 0xFF, 0xB5, 0x1B, 0x07, 0x92, 0x7B, - 0x4A, 0xFA, 0x1D, 0xB7, 0xD4, 0x8B, 0xC6, 0xFB, - 0xC3, 0xF3, 0x67, 0x56, 0x37, 0x18, 0x4B, 0x7A, - 0xDB, 0x9B, 0xAD, 0xF4, 0xDE, 0x7C, 0x08, 0x5B, - 0xCA, 0x1D, 0x42, 0x8D, 0xC9, 0xFC, 0x82, 0x77, - 0xCB, 0xD8, 0x58, 0x84, 0xA5, 0x92, 0x1B, 0x52, - 0xBB, 0x05, 0xB7, 0x10, 0x61, 0x55, 0x08, 0x26, - 0x1B, 0xB4, 0x54, 0x6B, 0xD6, 0xE1, 0xFC, 0x73, - 0x0D, 0x16, 0xB0, 0x49, 0xEA, 0x12, 0x79, 0x8C, - 0xE2, 0xE6, 0xDF, 0x43, 0xF5, 0xB8, 0xF3, 0xEF, - 0x9A, 0xC8, 0xFB, 0xAE, 0x31, 0xB0, 0x11, 0xE1, - 0x0C, 0x4F, 0xC6, 0x2F, 0xFD, 0x7F, 0x39, 0xD1, - 0x6E, 0xC3, 0x2C, 0xA8, 0x21, 0x0E, 0xD1, 0x6E, - 0x04, 0x1D, 0xA4, 0x3D, 0x92, 0x74, 0x22, 0x95, - 0x14, 0x05, 0x4A, 0x0F, 0x82, 0xD4, 0x62, 0xFE, - 0x08, 0x0C, 0x6F, 0xFD, 0x7B, 0xBD, 0xBF, 0xBF, - 0x0B, 0xFF, 0xC6, 0xD5, 0xEC, 0xC4, 0x32, 0xA3, - 0x25, 0x6C, 0x0B, 0xE0, 0xDD, 0xFD, 0x5D, 0x90, - 0x80, 0xC6, 0x76, 0xC7, 0x95, 0x5D, 0x66, 0xE4, - 0x4D, 0x1C, 0xE5, 0x1F, 0xCC, 0x23, 0x82, 0xF8, - 0x68, 0xD7, 0x32, 0xE8, 0x58, 0x51, 0x72, 0x1B, - 0x48, 0xA0, 0x1D, 0x08, 0xC6, 0x39, 0x62, 0x6E, - 0xE0, 0x50, 0x9C, 0xB5, 0x81, 0xEF, 0xF5, 0x62, - 0x8F, 0xA6, 0xCC, 0xD1, 0x08, 0x9A, 0xC0, 0xE1, - 0x2D, 0xEB, 0xE0, 0x85, 0x17, 0x82, 0xE6, 0x4C, - 0x50, 0x49, 0xCB, 0xD6, 0x50, 0x10, 0x13, 0x96, - 0x5C, 0xC0, 0xCA, 0x25, 0xAC, 0xAB, 0x17, 0x6E, - 0xF7, 0xCA, 0xB9, 0x29, 0x40, 0x98, 0x5D, 0xDB, - 0x49, 0x02, 0x1D, 0xF6, 0xC6, 0x0D, 0x6C, 0x4A, - 0x48, 0x91, 0x16, 0x31, 0x1E, 0x86, 0xBA, 0x19, - 0xED, 0xF0, 0x0D, 0x74, 0x79, 0x73, 0x58, 0x20, - 0x7C, 0xDE, 0x50, 0x50, 0x6D, 0x00, 0x7F, 0xE0, - 0x3C, 0x88, 0x04, 0xC6, 0x64, 0x51, 0xF0, 0x2A, - 0x01, 0x82, 0xD3, 0x87, 0xB7, 0x59, 0x89, 0x40, - 0x96, 0xF6, 0x52, 0x32, 0x95, 0x2D, 0x18, 0x3D, - 0xBA, 0xAA, 0xBB, 0x6B, 0xC0, 0xE1, 0x91, 0xDC, - 0x2C, 0x3F, 0x75, 0xFC, 0x72, 0xBD, 0x61, 0xBA, - 0xB2, 0xEF, 0x19, 0xB6, 0x53, 0x2B, 0x23, 0x1C, - 0x4A, 0xFB, 0x1A, 0x9C, 0x2C, 0xB2, 0xF3, 0xD6, - 0xC4, 0x51, 0xE8, 0x44, 0x0D, 0x6A, 0x92, 0x3C, - 0xF7, 0x2A, 0x63, 0xE2, 0xED, 0x85, 0x54, 0x77, - 0x38, 0x87, 0x91, 0x0C, 0xA5, 0xC6, 0x71, 0xAD, - 0x4F, 0xD5, 0x92, 0x3C, 0xB9, 0x5E, 0xC7, 0x3F, - 0xFD, 0xFB, 0xDA, 0x4B, 0x66, 0x55, 0xF5, 0x5D, - 0xBF, 0xD1, 0x31, 0x7D, 0x02, 0x44, 0x22, 0x30, - 0x1E, 0xD6, 0x6A, 0x6E, 0x4C, 0x67, 0x20, 0x85, - 0xCE, 0xD1, 0xF4, 0xC7, 0xB0, 0x50, 0x30, 0xA1, - 0x00, 0xC4, 0x78, 0x8F, 0xEF, 0x4C, 0xD3, 0xE4, - 0x94, 0xA8, 0x53, 0xBD, 0xE6, 0x3E, 0x9D, 0x44, - 0x9A, 0xE3, 0xBB, 0x6B, 0xA1, 0x08, 0x32, 0x38, - 0xDA, 0x3F, 0x40, 0x90, 0x51, 0x5D, 0x14, 0x3C, - 0x67, 0xDB, 0xE5, 0x3D, 0x8D, 0x50, 0x7A, 0x52, - 0x29, 0xFF, 0xEB, 0x20, 0x72, 0xD0, 0xBD, 0x09, - 0x2F, 0xC9, 0xAE, 0x52, 0xDE, 0xAA, 0xAC, 0xD1, - 0xF0, 0xF1, 0x4B, 0x5A, 0xC8, 0x47, 0x52, 0xBF, - 0xD0, 0x02, 0x5E, 0x5F, 0x55, 0xB8, 0x69, 0x35, - 0x0F, 0x4B, 0x27, 0x19, 0xC5, 0xC0, 0x5A, 0xC1, - 0x66, 0x9B, 0xB0, 0xFD, 0x3C, 0x61, 0x4A, 0xCE, - 0x02, 0xA2, 0x70, 0x61, 0x3F, 0xD3, 0x30, 0x97, - 0x06, 0xDD, 0xCD, 0x5B, 0x1A, 0x6A, 0xD2, 0x6F, - 0x35, 0x9A, 0xDA, 0x80, 0xB3, 0x0E, 0x50, 0xA7, - 0xE5, 0x0B, 0xBD, 0x3A, 0xA4, 0x5D, 0x06, 0x54, - 0xDD, 0x7D, 0x05, 0x8B, 0x0B, 0xBF, 0x4D, 0x0D, - 0x92, 0x13, 0x51, 0x42, 0x21, 0x4E, 0xE7, 0x05, - 0x11, 0xF3, 0x67, 0x6A, 0xE6, 0x43, 0xB5, 0xF2, - 0x45, 0x06, 0x3B, 0x94, 0x19, 0xCF, 0x6B, 0x49, - 0xFD, 0x64, 0x7F, 0x27, 0xD7, 0xC4, 0x1C, 0x86, - 0x6E, 0x6C, 0xAD, 0x9D, 0x5E, 0x2E, 0x3E, 0x33, - 0x1B, 0xF6, 0xB9, 0xF7, 0x2A, 0xCA, 0x32, 0x9B, - 0xB6, 0x42, 0x59, 0xC3, 0xE7, 0x97, 0x83, 0xA2, - 0x66, 0x74, 0xB7, 0xD3, 0x8E, 0xBD, 0xE8, 0x31, - 0x84, 0x11, 0xF4, 0x76, 0x4E, 0xBD, 0xC4, 0xC7, - 0xE4, 0x1A, 0xCF, 0xF8, 0x5B, 0xBB, 0x30, 0x31, - 0x8D, 0x59, 0xC4, 0x2C, 0x92, 0x03, 0xAB, 0xD6, - 0x63, 0x6B, 0xA3, 0xF7, 0x72, 0xB6, 0x72, 0x51, - 0x21, 0xC0, 0x52, 0xDE, 0x99, 0x91, 0x0D, 0x55, - 0x15, 0x8C, 0x6F, 0x3E, 0xF8, 0xBB, 0x7F, 0xED, - 0xE2, 0xF8, 0x1E, 0x58, 0xA7, 0xAE, 0xB2, 0x5E, - 0x2E, 0x46, 0xFD, 0x72, 0x32, 0x30, 0x2F, 0xAF, - 0xA8, 0xFC, 0x37, 0xFC, 0x8B, 0x55, 0xD5, 0x94, - 0xB7, 0x6E, 0xC4, 0xA5, 0x3E, 0xB1, 0x1E, 0xB3, - 0xFD, 0x63, 0x44, 0x28, 0xAA, 0xA5, 0xD8, 0x6F, - 0x83, 0x9D, 0x08, 0x9A, 0xBE, 0x2F, 0xEF, 0xE2, - 0xAE, 0x52, 0x62, 0xFE, 0xFC, 0x73, 0x48, 0xD8, - 0x36, 0x69, 0x2E, 0xDB, 0x21, 0x5D, 0x6F, 0x8F, - 0x54, 0x8B, 0x88, 0x52, 0x90, 0xC2, 0x40, 0x3C, - 0x51, 0xC3, 0xE2, 0x69, 0xD4, 0x93, 0xFB, 0xD3, - 0x39, 0xB5, 0xDF, 0xB0, 0xA3, 0x8E, 0xED, 0xA7, - 0x75, 0x4D, 0xAF, 0xFA, 0x16, 0xE5, 0xBC, 0xA5, - 0xA9, 0xBB, 0xDE, 0x04, 0xB0, 0x14, 0xB7, 0xAE, - 0xA8, 0x98, 0x8F, 0x37, 0x49, 0xD5, 0x2D, 0x2F, - 0xC1, 0xC9, 0xF7, 0xC7, 0xB2, 0xC2, 0xD6, 0x92, - 0xE7, 0x89, 0x6E, 0x4C, 0x34, 0xF5, 0x7C, 0x55, - 0x8C, 0xFE, 0x83, 0x17, 0xA8, 0x37, 0x44, 0x09, - 0xD5, 0x66, 0x87, 0x9A, 0x08, 0x62, 0x8F, 0x64, - 0x4F, 0xB4, 0x5B, 0x81, 0x84, 0x55, 0xBC, 0xA6, - 0x04, 0x2B, 0x4E, 0x61, 0x87, 0xC1, 0xDD, 0x17, - 0x7E, 0x9E, 0x51, 0x46, 0x31, 0x99, 0x04, 0xB1, - 0x50, 0x5F, 0x3E, 0xE0, 0x0C, 0xD7, 0xFE, 0xAF, - 0x0E, 0x83, 0xC3, 0x02, 0x49, 0x56, 0xF7, 0x76, - 0x59, 0xAC, 0xC5, 0x6D, 0x8D, 0x91, 0x7A, 0x37, - 0xE8, 0xFF, 0x7E, 0xB8, 0x87, 0x13, 0xCC, 0xA3, - 0x34, 0xEA, 0x04, 0xB8, 0xE2, 0x58, 0xC9, 0x34, - 0x5D, 0xA9, 0xDE, 0x26, 0xA0, 0xA3, 0x66, 0x51, - 0x94, 0x51, 0xE1, 0x01, 0x2D, 0xE6, 0xAA, 0xBF, - 0x46, 0x97, 0xC9, 0xDE, 0x82, 0x1D, 0x70, 0x02, - 0x1C, 0x32, 0x50, 0xA1, 0x06, 0xCF, 0x4C, 0x23, - 0xA1, 0xB1, 0x78, 0x5F, 0x54, 0x9D, 0x3C, 0x8C, - 0xD7, 0x1B, 0x05, 0xFE, 0xA7, 0x53, 0xE0, 0x04, - 0x6A, 0x3A, 0xE0, 0xA9, 0xB1, 0xF4, 0x02, 0x77, - 0xCF, 0x45, 0x3A, 0x2B, 0xA1, 0x4C, 0xBA, 0x92, - 0x3C, 0xC6, 0x26, 0x97, 0x06, 0xDF, 0xFF, 0xD5, - 0x17, 0xC1, 0xE5, 0x93, 0x00, 0x79, 0x91, 0x2E, - 0x05, 0xA5, 0x57, 0x18, 0x97, 0xA0, 0x68, 0x65, - 0x51, 0x6C, 0x86, 0x69, 0x9F, 0x70, 0x7E, 0x00, - 0xCB, 0x38, 0xCE, 0x19, 0x34, 0x90, 0xAE, 0xE3, - 0x0B, 0xA4, 0x7D, 0xDD, 0xF3, 0xA5, 0xB4, 0xFB, - 0xCE, 0xBA, 0x73, 0xDC, 0x13, 0xD0, 0xA1, 0x60, - 0xEA, 0x64, 0x2D, 0x30, 0xD6, 0x3A, 0x02, 0x96, - 0x4E, 0xDF, 0xDB, 0x2F, 0x29, 0xDC, 0xD3, 0x2C, - 0xA9, 0x97, 0x4F, 0x89, 0xC3, 0x2D, 0x1F, 0xA9, - 0xA8, 0x3C, 0x94, 0xA2, 0x77, 0x0F, 0xCF, 0xCF, - 0x86, 0xE6, 0x46, 0x46, 0x88, 0x2B, 0xD5, 0x50, - 0xDD, 0xD6, 0x5B, 0x4E, 0x2D, 0x28, 0x7A, 0xF6, - 0xC1, 0x96, 0xF4, 0x2D, 0xBD, 0x39, 0xB0, 0x20, - 0xD7, 0xCD, 0xFB, 0xB6, 0xE6, 0xE7, 0x5F, 0xFA, - 0xAB, 0x26, 0x09, 0x9E, 0xC1, 0xD2, 0x5E, 0x32, - 0x34, 0xF7, 0x0D, 0xD9, 0x72, 0x28, 0x6A, 0xEA, - 0x0C, 0x34, 0x36, 0x59, 0x5F, 0xE4, 0x9F, 0xCA, - 0x89, 0x8B, 0xFA, 0x42, 0x16, 0x04, 0xC8, 0x2D, - 0x3E, 0x94, 0x85, 0x6D, 0x18, 0x69, 0x05, 0x07, - 0x6D, 0x18, 0x6C, 0x68, 0x41, 0x74, 0xBF, 0x42, - 0x90, 0xDF, 0x31, 0x76, 0x9E, 0xDC, 0x97, 0xA1, - 0xDF, 0x2D, 0xFE, 0xD0, 0x3C, 0xF4, 0x5C, 0xE6, - 0x78, 0xC8, 0xA1, 0x42, 0x9E, 0xB9, 0x78, 0xD0, - 0x2A, 0x79, 0xD4, 0xF8, 0xCF, 0x01, 0x68, 0xDA, - 0xAB, 0x48, 0x2C, 0x6C, 0x61, 0x2F, 0x04, 0xB1, - 0xC9, 0x36, 0x37, 0xFE, 0x77, 0xB3, 0x02, 0xCE, - 0xFA, 0x78, 0x8C, 0x11, 0x35, 0x6C, 0x52, 0xC5, - 0x4F, 0x37, 0xA9, 0xDC, 0xFD, 0xA5, 0x59, 0x27, - 0xA8, 0xEF, 0x0A, 0x0C, 0xEA, 0x7C, 0xC4, 0xAD, - 0xCE, 0xE4, 0x59, 0xEB, 0x64, 0xDF, 0x08, 0xED, - 0x0F, 0xC2, 0x9F, 0xDC, 0x3C, 0x7B, 0x76, 0x2B, - 0x39, 0x93, 0x32, 0x06, 0x33, 0x40, 0xD4, 0x73, - 0x96, 0x62, 0x19, 0xBF, 0xC8, 0x7B, 0x4A, 0x3C, - 0x91, 0xC8, 0x0F, 0x0E, 0x4B, 0xA8, 0x6A, 0xA1, - 0x87, 0x9C, 0x76, 0x62, 0x5C, 0x86, 0x80, 0xA2, - 0x27, 0xAB, 0x22, 0x78, 0x06, 0x59, 0xD4, 0xB5, - 0xD3, 0x0E, 0x0E, 0x9A, 0x0D, 0xCE, 0x09, 0x4D, - 0xAF, 0x53, 0x76, 0x79, 0x27, 0x3A, 0x9B, 0x27, - 0x7E, 0xD2, 0xA2, 0xE2, 0x50, 0xEE, 0xA0, 0x93, - 0x82, 0x04, 0xC9, 0xE9, 0x63, 0xD3, 0x38, 0x52, - 0x2A, 0x3D, 0x1A, 0x44, 0x40, 0xE2, 0xA1, 0x23, - 0x97, 0xA5, 0xB9, 0x7D, 0x35, 0x65, 0x73, 0x07, - 0xBE, 0xC9, 0x4C, 0xC0, 0xC7, 0x2C, 0x5C, 0x6B, - 0x09, 0xDA, 0xF2, 0xBA, 0xF0, 0x02, 0x0B, 0x7D, - 0x8C, 0xA5, 0x60, 0xBF, 0x65, 0x96, 0x92, 0x9A, - 0xC8, 0xD4, 0xE5, 0x46, 0x0F, 0x78, 0x37, 0xB4, - 0x1B, 0x4A, 0xE6, 0xFF, 0x12, 0x33, 0x9D, 0xB8, - 0xEB, 0xD7, 0x02, 0x8A, 0xAC, 0xFE, 0x0B, 0x42, - 0xE0, 0x2C, 0xDE, 0x90, 0x67, 0x83, 0xAB, 0xFF, - 0x69, 0x4E, 0x7C, 0xBE, 0x08, 0x97, 0xED, 0x6E, - 0xD4, 0x38, 0xAC, 0xDB, 0x00, 0xA4, 0x70, 0x9C, - 0xFE, 0xF7, 0x15, 0x0E, 0xBE, 0xB0, 0x8C, 0x8F, - 0xF6, 0xC1, 0x54, 0x38, 0x15, 0xF4, 0xB8, 0x95, - 0x1C, 0x3C, 0xAC, 0xE4, 0x99, 0x58, 0x64, 0x58, - 0xA7, 0x3C, 0x85, 0x72, 0x38, 0x9A, 0xFC, 0x97, - 0x03, 0xA7, 0xFE, 0xAF, 0x67, 0x34, 0x45, 0xFB, - 0x4B, 0x0C, 0xCA, 0xA5, 0x11, 0xD4, 0xA2, 0xCF, - 0x46, 0x3F, 0x57, 0xE3, 0xA6, 0xD7, 0x2D, 0xA0, - 0x4B, 0x25, 0x66, 0x99, 0xA3, 0x02, 0x12, 0xE7, - 0xC5, 0x76, 0x8E, 0xFC, 0x15, 0x1B, 0x71, 0x74, - 0x41, 0x56, 0x57, 0x5A, 0x2E, 0x94, 0x43, 0x31, - 0x92, 0x32, 0xD1, 0x59, 0xC6, 0xCC, 0x00, 0x6F, - 0xDB, 0x57, 0xC5, 0x81, 0x73, 0xAD, 0x8D, 0x2C, - 0x86, 0x6C, 0x88, 0x87, 0x43, 0x7C, 0x22, 0x38, - 0x88, 0xE2, 0x1E, 0xF6, 0x7E, 0x1A, 0x33, 0x2C, - 0x1F, 0xDF, 0xCC, 0x15, 0xEF, 0x17, 0x47, 0x6F, - 0xE0, 0xFB, 0x57, 0xD4, 0x22, 0x98, 0x94, 0x72, - 0x5E, 0x14, 0x74, 0xC1, 0xBA, 0x12, 0x16, 0x56, - 0x28, 0x17, 0xF1, 0x6C, 0x53, 0xEC, 0xE0, 0x1C, - 0x7F, 0x9E, 0x36, 0x64, 0xEE, 0xDB, 0xBA, 0x94, - 0x95, 0x29, 0x87, 0x43, 0x1A, 0xA2, 0xA5, 0x7D, - 0x33, 0x0E, 0xB1, 0x1B, 0x28, 0xE6, 0xBF, 0x77, - 0x0E, 0x34, 0x9E, 0xCE, 0x35, 0x0C, 0x83, 0xE9, - 0x0D, 0xA6, 0xFE, 0x0D, 0x0A, 0x4A, 0xB9, 0x71, - 0x5D, 0xB2, 0x8B, 0xDD, 0x39, 0x7F, 0xAF, 0xA1, - 0x42, 0x83, 0x02, 0x15, 0x1E, 0x1F, 0x22, 0x2B, - 0x44, 0x69, 0x87, 0x9E, 0xB5, 0xD0, 0xF0, 0x18, - 0x60, 0x6A, 0x75, 0x94, 0xBF, 0xC8, 0x2C, 0x39, - 0x4E, 0x91, 0xB9, 0x26, 0x44, 0x95, 0xC9, 0x06, - 0x3D, 0x50, 0x52, 0x62, 0x79, 0x9B, 0x9F, 0xCB, - 0xE6, 0x31, 0x6B, 0xBC, 0xC8, 0xD8, 0x09, 0x30, - 0x53, 0x63, 0x6A, 0x74, 0xD4, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x0F, 0x16, 0x1B, 0x1F, - 0x29, 0x2E, 0x36 - }; -#endif -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT -#ifndef WOLFSSL_NO_ML_DSA_44 - static const byte pk_44_draft[] = { - 0x35, 0x07, 0x31, 0x3A, 0xE3, 0x7A, 0xF6, 0x96, - 0x6C, 0x11, 0xA9, 0xE4, 0x0B, 0xEB, 0xEC, 0xE9, - 0x2B, 0x67, 0x3F, 0xD2, 0x67, 0x3C, 0x1C, 0x4C, - 0x08, 0xF0, 0x45, 0xA9, 0xDD, 0x5A, 0xB8, 0x8C, - 0x0A, 0x51, 0xA9, 0xBA, 0x89, 0x0F, 0x4C, 0xCB, - 0x9D, 0x0A, 0x41, 0x3F, 0x9C, 0xF4, 0x13, 0x36, - 0x79, 0x49, 0x00, 0x90, 0xBB, 0x57, 0x3B, 0xBD, - 0x2E, 0x18, 0xB3, 0xD0, 0xA5, 0x0E, 0x6B, 0x67, - 0xFF, 0x98, 0x8C, 0xDD, 0x07, 0xE8, 0xA7, 0xA1, - 0x3F, 0xAE, 0xFB, 0xD6, 0xC0, 0xF8, 0xF3, 0x34, - 0xA5, 0x17, 0xC2, 0x34, 0x88, 0x92, 0x65, 0xA6, - 0xE8, 0x66, 0x57, 0xFE, 0x86, 0x08, 0xF7, 0xDF, - 0xA0, 0x5B, 0x70, 0x3E, 0x91, 0x6C, 0x63, 0xA0, - 0xA3, 0x75, 0x55, 0xF8, 0xB6, 0xAA, 0xD4, 0x1B, - 0x78, 0x5E, 0x42, 0x9F, 0x96, 0xE4, 0xA0, 0x50, - 0xB6, 0x94, 0x2D, 0xC3, 0xE3, 0x36, 0x2B, 0x9D, - 0x6B, 0x7A, 0xEF, 0xF5, 0x68, 0xF2, 0x11, 0xDF, - 0x87, 0xA0, 0x9A, 0xC4, 0x61, 0xFB, 0xA4, 0x1C, - 0x98, 0x3F, 0xC9, 0x52, 0x59, 0x3B, 0x47, 0x4D, - 0xF5, 0x24, 0xA3, 0xD8, 0x63, 0xE1, 0xED, 0xDC, - 0xFD, 0xEB, 0x96, 0xFB, 0xF3, 0xE7, 0x50, 0x9C, - 0x72, 0x61, 0xC7, 0x3C, 0xCE, 0xF2, 0xEB, 0x22, - 0x55, 0x6B, 0x9F, 0x25, 0xE4, 0x45, 0xE1, 0xFB, - 0x3E, 0x2E, 0x4E, 0x92, 0x4F, 0x8A, 0x85, 0xEB, - 0x63, 0x2C, 0x05, 0x0F, 0x9A, 0xEC, 0x0E, 0x9D, - 0x05, 0x81, 0x46, 0x82, 0xEA, 0x74, 0x91, 0xD5, - 0x2A, 0xBC, 0xCC, 0xBB, 0xD6, 0x7F, 0x5F, 0x9A, - 0xD3, 0xBD, 0xEB, 0x14, 0xBA, 0x84, 0x27, 0x13, - 0x32, 0xB5, 0xF3, 0x71, 0xAC, 0x47, 0x19, 0x6B, - 0x5E, 0x43, 0x50, 0xC2, 0xA8, 0x82, 0xF5, 0x97, - 0x9B, 0x27, 0x62, 0xFB, 0xB7, 0xFF, 0x6B, 0xC8, - 0x52, 0x1E, 0xFB, 0x97, 0x39, 0x1E, 0x7F, 0x01, - 0xF8, 0x34, 0x47, 0xAA, 0xB2, 0x64, 0xB5, 0x9E, - 0x28, 0x18, 0xCB, 0x4A, 0x94, 0xBE, 0x6A, 0x43, - 0x5B, 0xAE, 0x21, 0xA4, 0x63, 0x64, 0x46, 0x0C, - 0x6B, 0x36, 0x1C, 0x2A, 0x3B, 0x64, 0xFA, 0xA0, - 0xAB, 0xE3, 0x3B, 0x7D, 0xB0, 0x23, 0x99, 0x21, - 0x55, 0x59, 0xBF, 0xD6, 0xDB, 0xB8, 0xDB, 0x09, - 0x5E, 0xBC, 0x32, 0x3C, 0xAC, 0xAB, 0x1A, 0x63, - 0x32, 0x21, 0x10, 0xD5, 0x8D, 0x7A, 0x5F, 0xCE, - 0x72, 0x8D, 0x2A, 0xED, 0x1D, 0x30, 0x38, 0x5D, - 0x3E, 0x62, 0xC2, 0x8E, 0xC9, 0x9F, 0x8C, 0x50, - 0x3F, 0xC6, 0xCE, 0x86, 0x4D, 0x67, 0x3D, 0x09, - 0xB6, 0x27, 0x14, 0x57, 0x14, 0xED, 0xC9, 0x8F, - 0xAC, 0x9E, 0xAC, 0x6F, 0xB5, 0xB2, 0xE6, 0x8D, - 0x9D, 0x5E, 0xE6, 0x78, 0x77, 0x09, 0x94, 0x35, - 0x5E, 0x3B, 0x64, 0x04, 0x38, 0xD4, 0x5B, 0x04, - 0xB8, 0x6C, 0x33, 0x97, 0xE1, 0x58, 0x54, 0x32, - 0xB3, 0x0F, 0x37, 0x69, 0x39, 0xCE, 0x57, 0x31, - 0x5C, 0x75, 0xA8, 0x94, 0xD0, 0x39, 0x2D, 0xB4, - 0x73, 0xA7, 0xA4, 0x7C, 0xBE, 0x34, 0x03, 0x2D, - 0x99, 0x1D, 0xDF, 0x32, 0x26, 0xB7, 0x45, 0x1B, - 0x03, 0xCD, 0xEE, 0x9D, 0x58, 0xA8, 0xA7, 0x76, - 0x1B, 0x17, 0x42, 0xD9, 0x69, 0x0F, 0x26, 0x3A, - 0x9D, 0x70, 0x9B, 0x4E, 0x81, 0xEB, 0x96, 0x02, - 0xB5, 0xB3, 0x92, 0x31, 0xFE, 0xBC, 0x38, 0x11, - 0x5A, 0x47, 0xED, 0x0A, 0x2A, 0xE2, 0xB8, 0x47, - 0x13, 0x5E, 0x43, 0x97, 0xD5, 0xFA, 0x31, 0x02, - 0x58, 0xE9, 0x9E, 0xB5, 0x3F, 0x85, 0x92, 0x0E, - 0xB9, 0xDB, 0xE0, 0xEE, 0x56, 0x76, 0x64, 0x8F, - 0xF2, 0xE2, 0x47, 0x81, 0xD4, 0xA4, 0x82, 0x43, - 0x69, 0xAE, 0x8E, 0x48, 0x50, 0x84, 0x93, 0x3B, - 0x9C, 0x65, 0xD3, 0x6F, 0xCD, 0x90, 0xA0, 0xD8, - 0xA0, 0xE1, 0x79, 0xCC, 0xD5, 0x1F, 0x71, 0x73, - 0x93, 0xE7, 0xB2, 0xB0, 0x78, 0x17, 0xD7, 0x79, - 0xDE, 0xCC, 0x83, 0x7D, 0x5A, 0xF2, 0x0E, 0xA6, - 0xB1, 0x76, 0x61, 0x15, 0x88, 0x8E, 0xD7, 0xA6, - 0x51, 0xBF, 0x9C, 0xD1, 0x0A, 0xFC, 0xDA, 0x65, - 0xA5, 0x65, 0xFE, 0xB2, 0xED, 0x07, 0x74, 0x42, - 0x4C, 0xF5, 0x42, 0x3D, 0xAF, 0x5F, 0x4D, 0x72, - 0x51, 0xE6, 0x3F, 0x68, 0xCC, 0xC5, 0x2D, 0x89, - 0x01, 0xD8, 0x80, 0xB4, 0xFC, 0xEB, 0x3B, 0xBE, - 0x7C, 0xFA, 0x24, 0x27, 0xE1, 0x05, 0x94, 0x67, - 0xAD, 0xB3, 0x47, 0x7D, 0x28, 0x18, 0xC1, 0xC9, - 0xB8, 0xA1, 0x2A, 0x95, 0xBB, 0x5D, 0xC9, 0x42, - 0x4F, 0x64, 0x94, 0x07, 0x5F, 0x65, 0xD3, 0xA5, - 0x65, 0xEE, 0x67, 0x2C, 0x10, 0x65, 0x81, 0x4D, - 0x7F, 0xAF, 0x2E, 0x97, 0x9E, 0x11, 0xA3, 0xF5, - 0x3E, 0xDE, 0xB1, 0x1D, 0x44, 0x72, 0x90, 0x74, - 0xFD, 0x47, 0x82, 0xA6, 0x04, 0x3E, 0x28, 0x3C, - 0x15, 0xDF, 0xC4, 0x7A, 0x7C, 0xF5, 0x5A, 0xC6, - 0xFB, 0xE4, 0xC2, 0xE0, 0x6E, 0x4C, 0x09, 0x2E, - 0xE3, 0xE6, 0x3A, 0xEF, 0xF6, 0x54, 0xDC, 0x92, - 0xBE, 0x8F, 0x24, 0x8E, 0x70, 0x53, 0x90, 0x3D, - 0x06, 0xA5, 0x0A, 0x72, 0xA0, 0x7B, 0x22, 0x14, - 0x80, 0x43, 0xAD, 0xDC, 0x11, 0xFC, 0xFF, 0xCF, - 0x5E, 0xA4, 0x69, 0x1C, 0x09, 0x09, 0xC3, 0x3D, - 0xF5, 0xE7, 0x05, 0x6F, 0x16, 0x33, 0x75, 0xB4, - 0x9B, 0x7B, 0x26, 0xDB, 0xE7, 0x27, 0x56, 0xD3, - 0x91, 0x82, 0x9D, 0xEB, 0x96, 0x3E, 0xE8, 0x40, - 0xAB, 0x5D, 0x6C, 0xB7, 0xA6, 0x36, 0x07, 0xD4, - 0xE7, 0x7C, 0xD4, 0x5C, 0x36, 0xE4, 0xFC, 0x7C, - 0x8A, 0x36, 0x8D, 0x53, 0x43, 0xD4, 0xAC, 0x0B, - 0x1B, 0xBA, 0x32, 0x88, 0xFA, 0xCE, 0xC1, 0xB9, - 0x34, 0x3C, 0xAC, 0xA0, 0xF4, 0xF2, 0x83, 0xA8, - 0xBB, 0x6F, 0x12, 0xC6, 0xB5, 0x3C, 0xDE, 0xA8, - 0x49, 0x66, 0x97, 0xD7, 0x7E, 0x37, 0xF7, 0xCE, - 0x7C, 0xF8, 0xC8, 0xBB, 0x8C, 0xB5, 0x3B, 0x3F, - 0xB9, 0x51, 0x68, 0x00, 0xD7, 0x2E, 0x1C, 0x10, - 0xAF, 0x9F, 0x3C, 0xD2, 0xAC, 0xE5, 0xBE, 0x94, - 0xB9, 0x60, 0xF5, 0xB2, 0x70, 0x24, 0xE8, 0x8A, - 0x2C, 0xD8, 0x95, 0xAF, 0xAA, 0xA9, 0xA5, 0x2B, - 0xCA, 0xE0, 0x58, 0x44, 0x02, 0x3F, 0xF8, 0x21, - 0x0C, 0x29, 0xB7, 0xD5, 0x08, 0x9E, 0x69, 0x81, - 0xD4, 0x6C, 0xC5, 0x0B, 0xF6, 0xEF, 0xAB, 0x01, - 0xEA, 0xDF, 0x36, 0x2C, 0x5C, 0xFB, 0xEB, 0xC8, - 0x4F, 0x71, 0x80, 0xD7, 0x00, 0xC9, 0x32, 0x5D, - 0x02, 0x4F, 0x96, 0x94, 0x71, 0xCD, 0x98, 0xC4, - 0x25, 0x7A, 0x92, 0xF1, 0x9B, 0xA0, 0x34, 0x30, - 0x6C, 0x41, 0x59, 0xD5, 0x01, 0x5D, 0xD6, 0x56, - 0xEA, 0x05, 0xF2, 0xFC, 0xF8, 0x58, 0xFA, 0x12, - 0x9C, 0x5A, 0x5C, 0xD5, 0x3D, 0xC7, 0x5D, 0x1B, - 0x99, 0x2A, 0x6A, 0x4C, 0xF9, 0xEA, 0x9D, 0x70, - 0x53, 0xBC, 0xBE, 0xAD, 0x61, 0xC7, 0x2D, 0x77, - 0xEF, 0x61, 0xC7, 0xBE, 0x9C, 0x73, 0xC1, 0xD5, - 0xD4, 0x5C, 0x5F, 0x21, 0x6A, 0x5C, 0xEE, 0x78, - 0xAA, 0xC6, 0x6C, 0x56, 0xDB, 0x38, 0x5A, 0x94, - 0x12, 0xB8, 0x73, 0x7C, 0xDF, 0x9A, 0x27, 0xCD, - 0xC5, 0xD1, 0xD3, 0xCA, 0x0E, 0x37, 0x0A, 0xC1, - 0x6F, 0xAD, 0xE3, 0x32, 0x94, 0x6C, 0x20, 0xB5, - 0xED, 0xE6, 0x2D, 0x34, 0x39, 0x58, 0xD2, 0x1E, - 0x63, 0x8D, 0xFA, 0xFF, 0xB5, 0xE8, 0x40, 0xC8, - 0x42, 0x38, 0x7A, 0x01, 0x80, 0xFF, 0x52, 0x3F, - 0xE9, 0x89, 0x63, 0xAD, 0x91, 0x5F, 0xCE, 0x0A, - 0x47, 0x87, 0xF9, 0x6D, 0xD7, 0x79, 0xEF, 0xCE, - 0x10, 0x7B, 0x73, 0x43, 0xBE, 0x51, 0xA0, 0xDF, - 0xE5, 0xEC, 0xA9, 0x63, 0xF6, 0x5E, 0x72, 0x36, - 0x22, 0x86, 0xEE, 0x4E, 0x4A, 0x76, 0xFD, 0x86, - 0xBA, 0xE6, 0xD6, 0xC4, 0xD2, 0xE6, 0xFF, 0xB2, - 0x5B, 0x39, 0xF9, 0xC3, 0x29, 0xA8, 0x61, 0x3A, - 0x33, 0x34, 0x89, 0xC9, 0x83, 0xF9, 0xB2, 0x70, - 0x21, 0x54, 0x44, 0x94, 0x70, 0xAD, 0x70, 0x18, - 0x84, 0x38, 0x91, 0xFB, 0xDE, 0x5E, 0x3D, 0xE3, - 0xB2, 0xA7, 0x3C, 0x1D, 0x49, 0xA6, 0x66, 0x7C, - 0x4B, 0xEB, 0xB0, 0xA7, 0x7C, 0xC5, 0xAE, 0x45, - 0x1F, 0xBE, 0x0E, 0x2F, 0x11, 0xDC, 0x92, 0x08, - 0xAA, 0x18, 0x38, 0xFE, 0x61, 0xBE, 0x9D, 0xC3, - 0x3A, 0x1F, 0x2F, 0xB6, 0x6E, 0xB6, 0x54, 0x97, - 0x74, 0x06, 0xBC, 0x12, 0x2D, 0x64, 0x18, 0x14, - 0x25, 0x5A, 0xCB, 0x7B, 0xD7, 0x9D, 0xC3, 0x2C, - 0xC2, 0x0B, 0x19, 0x10, 0xD2, 0x57, 0xF0, 0xDF, - 0xA4, 0x95, 0xA4, 0x5A, 0xA0, 0x2D, 0x0F, 0xA0, - 0xBC, 0xF7, 0x60, 0x7F, 0x38, 0xE1, 0x17, 0x0D, - 0x36, 0x08, 0xF5, 0xF9, 0x75, 0x28, 0x75, 0xAC, - 0xA9, 0x2B, 0x75, 0xC4, 0x41, 0xE0, 0x0D, 0x5C, - 0xBC, 0x5F, 0x49, 0x16, 0x25, 0x38, 0x16, 0xE1, - 0x0C, 0x2C, 0x9C, 0x63, 0xA8, 0x5F, 0x70, 0xF4, - 0x64, 0xC7, 0x10, 0x19, 0x52, 0x19, 0x6E, 0x9B, - 0x5C, 0x09, 0x4F, 0xEE, 0xB6, 0x7C, 0x85, 0xC9, - 0x6E, 0xCB, 0x33, 0x32, 0x42, 0x9D, 0x57, 0x18, - 0xE6, 0x55, 0x94, 0x74, 0x02, 0xEE, 0xEB, 0xAA, - 0xF7, 0xD3, 0x45, 0x7A, 0x49, 0x6F, 0x83, 0x89, - 0x00, 0xE4, 0xAA, 0x20, 0x87, 0x10, 0xAD, 0xC0, - 0x0E, 0xF5, 0x93, 0x57, 0xE5, 0x45, 0x7A, 0xBD, - 0x82, 0x87, 0x50, 0x0F, 0xE1, 0x2C, 0x0C, 0x6D, - 0xEE, 0xC8, 0x94, 0xB8, 0x39, 0xF3, 0x3C, 0xFE, - 0x7E, 0xC1, 0x0F, 0xB4, 0x67, 0xA2, 0xDF, 0xC6, - 0x9D, 0xB5, 0x9D, 0xB8, 0x72, 0x50, 0xBD, 0xB3, - 0xDB, 0xF6, 0x87, 0x5E, 0x26, 0x93, 0xF0, 0xD4, - 0x0D, 0x68, 0xA4, 0x8B, 0xBD, 0x2C, 0x6E, 0xD8, - 0x4F, 0x81, 0x5D, 0x0D, 0xAC, 0x72, 0x65, 0xEC, - 0x4E, 0xF2, 0x4E, 0x5F, 0x67, 0x04, 0xF3, 0x08, - 0x29, 0x4D, 0xB2, 0xE2, 0xD5, 0x9F, 0xD4, 0xB9, - 0x13, 0xB4, 0x33, 0x80, 0x27, 0x84, 0x7E, 0xF4 - }; - static const byte msg_44_draft[] = { - 0x5C, 0x70, 0x7F, 0xBF, 0xF4, 0xFF, 0xE5, 0x9B, - 0x09, 0xAA, 0xF8, 0xDB, 0x21, 0xAD, 0xBE, 0xBA, - 0xC6, 0xB2, 0x65, 0x37, 0x9A, 0x9A, 0x43, 0x3A, - 0xA8, 0x23, 0x2B, 0x13, 0x9B, 0xBD, 0x46, 0x37, - 0x30, 0x60, 0xA7, 0x5B, 0xC4, 0x48, 0x63, 0x5F, - 0x41, 0x35, 0x38, 0x69, 0xF9, 0x6F, 0xB5, 0x65, - 0x26, 0xDB, 0xAE, 0xB7, 0x5C, 0xFE, 0x2C, 0x03, - 0xCB, 0x43, 0x08, 0x58, 0x5E, 0x27, 0xD1, 0x42, - 0x14, 0xF2, 0x4B, 0xD7, 0x13, 0xE4, 0x96, 0x74, - 0x6A, 0xC1, 0x36, 0xC7, 0x9D, 0x0F, 0x7D, 0xB0, - 0x7B, 0x8A, 0x3A, 0x6D, 0x00, 0x5B, 0x29, 0x7B, - 0x37, 0xBA, 0x3F, 0x5B, 0xBD, 0xCE, 0x21, 0x77, - 0xFD, 0xD6, 0x78, 0x77, 0x20, 0x31, 0xF0, 0x60, - 0x49, 0xAE, 0x12, 0x86, 0x7A, 0x64, 0xBD, 0x0B, - 0x9E, 0xC6, 0x26, 0x80, 0x9E, 0xCE, 0x19, 0x8D, - 0x6A, 0x6B, 0x09, 0x03, 0x45, 0xDF, 0x22, 0x7D - }; - static const byte sig_44_draft[] = { - 0x08, 0xF0, 0x10, 0xFA, 0x63, 0x3F, 0x2B, 0xA1, - 0x46, 0x81, 0x34, 0xC4, 0xBC, 0xAB, 0x62, 0x17, - 0x0B, 0x64, 0xEA, 0x00, 0x2D, 0xD6, 0x8A, 0xE5, - 0xC2, 0x45, 0x29, 0xB9, 0xEC, 0x6F, 0x3B, 0xF2, - 0xDC, 0x2F, 0xC7, 0x34, 0x5A, 0x1E, 0xFE, 0x0C, - 0xCA, 0xB9, 0x6A, 0xD8, 0xDA, 0xBA, 0xAA, 0x80, - 0x90, 0xDC, 0x8C, 0x6C, 0x22, 0xFF, 0xC4, 0x90, - 0x9E, 0xE9, 0xA5, 0x45, 0xFC, 0xE8, 0x64, 0x53, - 0x9E, 0xC4, 0x17, 0xE1, 0xB2, 0x1A, 0x31, 0x40, - 0x26, 0x9D, 0x5E, 0x03, 0x6A, 0xC6, 0x09, 0x19, - 0xDD, 0xB3, 0x63, 0xE0, 0x35, 0xCD, 0xB4, 0x2E, - 0x25, 0x38, 0x6E, 0x6C, 0x76, 0xA9, 0x19, 0x75, - 0x68, 0x6E, 0xB7, 0xAB, 0xAD, 0x8F, 0x63, 0x64, - 0x97, 0x4E, 0x56, 0x82, 0x30, 0x45, 0x86, 0x22, - 0x64, 0xDA, 0xD2, 0xAE, 0x54, 0x70, 0x5C, 0xF1, - 0xEB, 0xD1, 0x84, 0x8D, 0xFF, 0x86, 0x15, 0xE6, - 0x20, 0xCE, 0x14, 0x89, 0xEF, 0xFA, 0x2E, 0xF8, - 0x60, 0xCA, 0x53, 0x52, 0xE4, 0xD5, 0xC8, 0x2E, - 0x50, 0xD5, 0x9D, 0x90, 0xA6, 0x12, 0xC7, 0xF1, - 0x70, 0x0D, 0xE2, 0x89, 0x5B, 0x31, 0x6A, 0x21, - 0x79, 0x9C, 0xBE, 0x77, 0x6E, 0xA6, 0xBF, 0x51, - 0x05, 0x2A, 0x83, 0x50, 0x7E, 0x86, 0x14, 0xD1, - 0x50, 0x53, 0x1F, 0x1C, 0x5E, 0x50, 0x24, 0x69, - 0x6C, 0x91, 0x55, 0x35, 0x19, 0x6F, 0xE0, 0xDC, - 0xB5, 0xD6, 0x48, 0x7E, 0x78, 0x61, 0x59, 0x2C, - 0xD0, 0x1B, 0x42, 0x58, 0xAF, 0x7A, 0x39, 0xCA, - 0x02, 0x1C, 0x50, 0xEF, 0xE9, 0xE1, 0xDE, 0x31, - 0x8D, 0x09, 0x51, 0xC9, 0xDB, 0x16, 0xF9, 0xB9, - 0x45, 0x54, 0x81, 0x16, 0xD7, 0x14, 0xD8, 0xBE, - 0x9C, 0xCA, 0x53, 0xFE, 0x8F, 0x24, 0x99, 0x0D, - 0xBA, 0x7F, 0x99, 0x42, 0x11, 0x9B, 0x32, 0xDD, - 0x93, 0x5C, 0xBA, 0x2D, 0xD3, 0xB3, 0xF2, 0x48, - 0x13, 0x9C, 0x80, 0xBB, 0x8D, 0xF4, 0xC7, 0xAA, - 0xEB, 0xC6, 0xFD, 0xB8, 0x35, 0x95, 0x87, 0x2B, - 0x9E, 0xCF, 0x48, 0xF3, 0x2D, 0xFF, 0x70, 0xF4, - 0xCE, 0x35, 0x68, 0x7E, 0x9D, 0xDF, 0xD5, 0x0C, - 0xCD, 0xE3, 0x51, 0xB0, 0x90, 0x86, 0xE5, 0xD1, - 0xF1, 0x3B, 0x72, 0x42, 0x73, 0x07, 0x03, 0xE2, - 0xFB, 0x40, 0x3F, 0xD4, 0xC8, 0x30, 0xB6, 0x86, - 0x49, 0x8A, 0x17, 0xDB, 0x8F, 0x46, 0x6C, 0x3A, - 0xC3, 0x49, 0xCD, 0x59, 0x68, 0x81, 0x66, 0x03, - 0xD7, 0x24, 0xAF, 0x1F, 0x77, 0xC7, 0xFB, 0xF7, - 0x83, 0xCD, 0xA2, 0x6D, 0x35, 0x0C, 0x8B, 0xBC, - 0x29, 0x3A, 0x7F, 0xAC, 0xB9, 0xF9, 0x78, 0x50, - 0x6A, 0x67, 0xFC, 0xDC, 0x6F, 0x01, 0x65, 0x06, - 0x82, 0x81, 0xB0, 0x7D, 0x25, 0x5D, 0x74, 0x0B, - 0x68, 0x5F, 0x51, 0x2C, 0x82, 0xF3, 0x1D, 0x92, - 0xF6, 0xA9, 0xA9, 0x6A, 0x77, 0x57, 0x58, 0xAA, - 0x7C, 0xBE, 0x35, 0xF4, 0x56, 0xDE, 0x42, 0x01, - 0x2D, 0xB8, 0x28, 0x83, 0x7B, 0xA0, 0xA9, 0x7D, - 0xC3, 0x30, 0x13, 0x52, 0xD0, 0xA1, 0xC8, 0xA1, - 0x2C, 0x51, 0x49, 0xAE, 0xA8, 0x04, 0xCB, 0xA8, - 0x66, 0x01, 0x26, 0xDF, 0x2D, 0x1C, 0x21, 0xA2, - 0x4E, 0xBD, 0xA5, 0x48, 0x2A, 0x2D, 0x56, 0x60, - 0x20, 0x98, 0x4D, 0x15, 0x7D, 0x02, 0xB6, 0x3A, - 0xE4, 0x11, 0xAE, 0xF7, 0x3E, 0x5D, 0x56, 0x4F, - 0x6A, 0xA3, 0x0A, 0xEA, 0xCC, 0x35, 0x8A, 0xB7, - 0xC4, 0x8F, 0x25, 0x3E, 0x42, 0x41, 0x2B, 0xA5, - 0x1F, 0xA7, 0x3B, 0x87, 0x22, 0x86, 0x79, 0xD5, - 0xE5, 0x2A, 0xA2, 0xCD, 0x68, 0xCE, 0xB8, 0x18, - 0x6D, 0xEF, 0x1C, 0x36, 0x7F, 0x75, 0x50, 0x36, - 0x1B, 0x58, 0xEB, 0x32, 0xA1, 0xC8, 0xAF, 0x47, - 0xE1, 0x26, 0x73, 0x1F, 0x5D, 0x73, 0x30, 0x13, - 0x2F, 0xC7, 0x8B, 0xA3, 0x03, 0xB4, 0xA8, 0x86, - 0x25, 0x29, 0xD1, 0x75, 0x10, 0xEE, 0x7F, 0x56, - 0xBC, 0x0D, 0x59, 0xB4, 0xAE, 0xC9, 0x44, 0x0A, - 0xF7, 0x0D, 0xBF, 0x17, 0x6A, 0x22, 0x9C, 0x75, - 0x2B, 0x3E, 0x22, 0xB8, 0x2F, 0x4B, 0x68, 0xF1, - 0x07, 0xE3, 0x47, 0x47, 0x21, 0x9C, 0xA3, 0x5B, - 0x31, 0x0A, 0x14, 0xD9, 0x7C, 0xA8, 0xC0, 0xC6, - 0x5C, 0xAD, 0x05, 0xD6, 0x15, 0xD3, 0xEC, 0xEC, - 0x32, 0xC2, 0xFF, 0xF4, 0x96, 0x9C, 0xC8, 0x65, - 0xA0, 0xB2, 0xD6, 0xF4, 0x98, 0xBB, 0xB1, 0x4E, - 0xA5, 0x11, 0x3B, 0x4E, 0xA8, 0xEB, 0x90, 0xAB, - 0xD8, 0x25, 0x10, 0xE3, 0x66, 0xB5, 0xA5, 0x11, - 0x60, 0xA0, 0xCB, 0xDF, 0x77, 0x8A, 0x80, 0x4C, - 0x07, 0x9B, 0x1B, 0x45, 0x95, 0x29, 0x1D, 0x88, - 0x85, 0xAC, 0x32, 0x94, 0x26, 0x87, 0x12, 0x0A, - 0x2F, 0x9E, 0xAE, 0x69, 0x79, 0x25, 0x5A, 0x50, - 0xF4, 0xDB, 0x15, 0x20, 0x9F, 0x7A, 0x7A, 0xF2, - 0xE5, 0x8A, 0x63, 0x6A, 0xDD, 0xBD, 0x06, 0xCB, - 0x42, 0xF0, 0x20, 0xA9, 0x3B, 0x52, 0xD8, 0x68, - 0x37, 0x71, 0x07, 0xB8, 0x5B, 0xFE, 0xA0, 0xEC, - 0xBD, 0x75, 0xFF, 0x9C, 0x89, 0xDF, 0x01, 0xE7, - 0x17, 0x7D, 0xA7, 0xE8, 0x27, 0x9E, 0xA2, 0x41, - 0x66, 0xE6, 0xDB, 0x8B, 0x5A, 0x3F, 0x6C, 0xC9, - 0xE3, 0x4F, 0x0D, 0xD0, 0x92, 0x1E, 0x27, 0x41, - 0xF2, 0xB3, 0x08, 0x32, 0x03, 0x6D, 0x2C, 0x4F, - 0x78, 0xEC, 0x99, 0xB3, 0x94, 0x6C, 0xC1, 0x89, - 0xD9, 0x34, 0x0F, 0xEF, 0x10, 0xF0, 0xDA, 0xCE, - 0x09, 0x69, 0x7A, 0x93, 0xC6, 0xFF, 0x19, 0x4F, - 0xBD, 0xDE, 0xA6, 0x54, 0x8A, 0xE5, 0x81, 0x3F, - 0x96, 0xD3, 0xA0, 0x77, 0x7C, 0xF2, 0x4B, 0xF1, - 0x68, 0xA2, 0x23, 0x3D, 0xD4, 0x16, 0xC1, 0x66, - 0xDA, 0x13, 0x53, 0xE1, 0x9F, 0x9A, 0x36, 0x09, - 0x4D, 0x72, 0x08, 0x09, 0xEB, 0x87, 0x74, 0x9A, - 0xB2, 0x8C, 0x60, 0x7F, 0xFB, 0x70, 0x17, 0x51, - 0xB1, 0xAC, 0x18, 0xDF, 0xCB, 0x43, 0x2A, 0xD3, - 0x89, 0xDA, 0x78, 0xAE, 0xDC, 0xEA, 0xB2, 0x22, - 0xCA, 0x2F, 0xF1, 0xE4, 0xA7, 0xCC, 0xAF, 0xB1, - 0x63, 0x1B, 0x5D, 0xDD, 0xD1, 0x49, 0xB8, 0x90, - 0x2E, 0xC9, 0xC0, 0x83, 0x0D, 0xAB, 0x88, 0x88, - 0x4C, 0x74, 0x72, 0x00, 0x7D, 0xFE, 0xF2, 0x46, - 0x73, 0xFD, 0x99, 0xEC, 0x89, 0x8B, 0x3B, 0x0F, - 0xCE, 0x35, 0x5A, 0xEA, 0x13, 0x4F, 0x67, 0x67, - 0xFD, 0x0D, 0x87, 0xFC, 0xB1, 0x36, 0x48, 0x07, - 0x33, 0x0B, 0xCA, 0xD4, 0xD7, 0xD0, 0xCC, 0xA1, - 0x8F, 0xF0, 0x3F, 0x01, 0x8B, 0x6B, 0x74, 0x44, - 0x2F, 0x1B, 0xE0, 0x65, 0x31, 0x1B, 0x4E, 0xDB, - 0x67, 0x65, 0xA9, 0x34, 0xE8, 0x4D, 0x0C, 0xF3, - 0x29, 0xED, 0x53, 0xAB, 0x8A, 0x98, 0x07, 0x2B, - 0xE0, 0xCD, 0xC0, 0x08, 0x82, 0x4A, 0x72, 0x28, - 0x72, 0xA2, 0xAC, 0xFE, 0xF7, 0xBF, 0x6E, 0x8E, - 0xF8, 0x3E, 0x04, 0x58, 0xA4, 0x36, 0x46, 0x33, - 0xAB, 0xDD, 0x0E, 0xBF, 0x01, 0xD2, 0xEF, 0x19, - 0x5B, 0x78, 0x2B, 0x30, 0x51, 0x25, 0x50, 0xD0, - 0xB5, 0x82, 0xC7, 0x20, 0x0D, 0xA1, 0x2C, 0x38, - 0xAF, 0x44, 0xFC, 0xBD, 0x49, 0xB8, 0x7F, 0x89, - 0xEF, 0xBE, 0x37, 0x5C, 0xCB, 0xA2, 0x11, 0x75, - 0x7D, 0xDA, 0xA8, 0x7B, 0x3A, 0x3C, 0x10, 0x11, - 0x4D, 0x9F, 0x99, 0xAB, 0x4B, 0xA2, 0x20, 0x7A, - 0x5F, 0x96, 0xEF, 0x1C, 0x00, 0xD7, 0x27, 0x17, - 0x77, 0x7C, 0x51, 0x58, 0x4B, 0x13, 0x97, 0x53, - 0x2A, 0xC6, 0x86, 0x4D, 0x3B, 0x8E, 0xBB, 0x4F, - 0xB8, 0xA0, 0x84, 0x87, 0xF6, 0xEF, 0x55, 0x12, - 0x2B, 0xCF, 0x9E, 0x5C, 0xD0, 0x0E, 0xBC, 0x1E, - 0x79, 0x53, 0xE7, 0x8C, 0x4D, 0x8B, 0xCB, 0x20, - 0xF6, 0xEA, 0x72, 0x0A, 0x63, 0x2F, 0x0C, 0xCF, - 0x57, 0x27, 0x26, 0xF4, 0x3A, 0x95, 0xCA, 0xBE, - 0xB5, 0x7C, 0x47, 0x60, 0x10, 0xCD, 0x28, 0x9E, - 0x02, 0x64, 0xC9, 0x8D, 0x82, 0x49, 0xD0, 0xD6, - 0x60, 0xF8, 0xDC, 0xC8, 0x4B, 0x7D, 0xB5, 0xEF, - 0x11, 0x17, 0xC7, 0x94, 0x5F, 0x0D, 0x99, 0xBE, - 0x75, 0x48, 0x49, 0xC6, 0x58, 0x43, 0x64, 0x99, - 0x1A, 0x5A, 0x41, 0xBA, 0xC2, 0x31, 0xB3, 0xE0, - 0x45, 0x1B, 0x81, 0xD2, 0x12, 0xBE, 0x90, 0xDB, - 0xFF, 0xBC, 0xCB, 0x99, 0xA3, 0xF0, 0x74, 0xE8, - 0x2C, 0x48, 0x58, 0xB3, 0x17, 0xA4, 0x9A, 0xD2, - 0x22, 0x46, 0xFB, 0xF5, 0x85, 0x8D, 0x07, 0xDF, - 0xDB, 0x78, 0x07, 0xF4, 0x99, 0xA8, 0x6C, 0xEE, - 0x6E, 0x96, 0x20, 0xB8, 0xC2, 0xA9, 0xFA, 0x8B, - 0x6E, 0xA6, 0x79, 0x6D, 0xF9, 0xC3, 0x0C, 0x77, - 0x74, 0xAE, 0xB0, 0x40, 0xA9, 0xE5, 0xA7, 0x0B, - 0x30, 0x40, 0x4B, 0x4F, 0xB1, 0x0A, 0x0B, 0x7B, - 0xEE, 0x1F, 0x69, 0xFA, 0xD0, 0xF0, 0x2D, 0x5D, - 0x00, 0xB5, 0x4D, 0xEB, 0x32, 0x84, 0xB2, 0xB7, - 0x60, 0xAA, 0x6C, 0xF9, 0x98, 0x18, 0xB3, 0xD9, - 0xC1, 0x54, 0x8D, 0xAC, 0x12, 0xB0, 0x3A, 0x26, - 0xB2, 0x23, 0x2D, 0x9B, 0xF8, 0x20, 0xEE, 0x90, - 0xE0, 0x6D, 0x31, 0xDE, 0xF5, 0xCA, 0xBA, 0x6A, - 0x53, 0x40, 0x29, 0x6C, 0x18, 0x62, 0xA5, 0x8A, - 0xB8, 0x17, 0xA0, 0xAB, 0xCB, 0xDC, 0xE1, 0x3B, - 0xD6, 0xC6, 0x29, 0xA3, 0x1C, 0x5F, 0x8D, 0x6E, - 0x73, 0xF6, 0x98, 0x10, 0x0F, 0x9F, 0x7E, 0xCA, - 0x4C, 0xD8, 0xEB, 0xE4, 0xB8, 0xDF, 0x72, 0x78, - 0x65, 0xAF, 0x4A, 0x20, 0xFE, 0x7C, 0xB4, 0xCA, - 0x07, 0x81, 0xFD, 0xC5, 0xC5, 0xFD, 0x33, 0x4D, - 0xB8, 0x37, 0x37, 0xC4, 0x21, 0x81, 0x66, 0x45, - 0xAE, 0x81, 0x34, 0x13, 0xA6, 0x40, 0x81, 0x39, - 0x55, 0x90, 0xE6, 0xF1, 0x42, 0x56, 0x74, 0xFF, - 0x06, 0x9B, 0x50, 0x1F, 0x0F, 0xDA, 0x6B, 0x31, - 0xC6, 0x4B, 0xC5, 0xC2, 0x14, 0xE7, 0x01, 0x5E, - 0xA9, 0xDA, 0x12, 0x2D, 0x6C, 0xE0, 0x8C, 0xEB, - 0x2D, 0xF6, 0x2C, 0x45, 0xBC, 0x01, 0x73, 0x34, - 0x6D, 0xAB, 0xBC, 0x15, 0x4C, 0x16, 0x03, 0x35, - 0x9D, 0xD4, 0xF0, 0xAC, 0x49, 0x84, 0x4A, 0xEE, - 0x46, 0x47, 0x64, 0x93, 0xF2, 0x49, 0x59, 0x86, - 0x26, 0xFB, 0x24, 0x6B, 0x99, 0xB3, 0x9A, 0xCB, - 0xB4, 0x2B, 0x28, 0x4E, 0x0C, 0x2D, 0x3F, 0x9E, - 0xCE, 0x32, 0x71, 0xC4, 0xD5, 0xE0, 0x6C, 0x48, - 0x25, 0xEA, 0x1A, 0x8F, 0x08, 0x57, 0x23, 0x85, - 0x89, 0xCD, 0xC5, 0x48, 0x37, 0x19, 0x8E, 0xD4, - 0x23, 0x4D, 0xD0, 0x31, 0x73, 0xA8, 0x8E, 0x43, - 0xEE, 0x95, 0x67, 0xF5, 0x7A, 0x93, 0x27, 0xD3, - 0x90, 0x36, 0x30, 0x4C, 0xA1, 0xCD, 0xB5, 0xF8, - 0x65, 0xC5, 0x89, 0x54, 0x57, 0x2C, 0xAE, 0xF8, - 0x75, 0xF1, 0x2E, 0x14, 0x14, 0x14, 0x0D, 0x97, - 0x5B, 0x24, 0x52, 0x46, 0x7A, 0x57, 0x6D, 0x9C, - 0x4C, 0x79, 0xDB, 0x0A, 0xE0, 0x23, 0x69, 0x52, - 0x9B, 0xF8, 0x1B, 0x54, 0x40, 0x18, 0xDF, 0xE0, - 0x1E, 0xF0, 0x61, 0xE4, 0x79, 0x81, 0xF9, 0x98, - 0x9A, 0x8C, 0x48, 0xFF, 0x86, 0x93, 0x0B, 0x68, - 0x96, 0x78, 0x2F, 0xF1, 0x2D, 0xDC, 0x60, 0x1F, - 0x8B, 0x1C, 0x04, 0x43, 0x4E, 0x60, 0x96, 0x5B, - 0x8A, 0xF6, 0x89, 0xCC, 0xC8, 0xB2, 0x9B, 0xBF, - 0x87, 0x16, 0x2E, 0xA8, 0x6F, 0x9B, 0x4B, 0xFD, - 0x74, 0x4E, 0x8F, 0x36, 0x33, 0x23, 0xDE, 0x94, - 0xD2, 0xA1, 0x72, 0x4F, 0xB2, 0xE6, 0x75, 0x3D, - 0x6E, 0x47, 0x9B, 0xDB, 0x58, 0xE5, 0x4A, 0x0C, - 0x09, 0x8F, 0x9C, 0x83, 0x63, 0x98, 0x8B, 0xA4, - 0xF7, 0x3D, 0x01, 0xA6, 0x8B, 0x93, 0x97, 0x48, - 0x84, 0x75, 0x32, 0xC7, 0xD7, 0x03, 0xDF, 0x7E, - 0x94, 0x8C, 0x8A, 0xA6, 0x78, 0x1A, 0xAE, 0xDE, - 0x36, 0x8A, 0xAD, 0x13, 0x7E, 0xF0, 0x16, 0xC2, - 0x3B, 0xAF, 0xF9, 0xD8, 0x66, 0x12, 0x30, 0x72, - 0x76, 0x6D, 0x21, 0x4C, 0xF3, 0xEF, 0x0D, 0x8C, - 0x11, 0xA4, 0x12, 0xBE, 0xF5, 0x7E, 0x8E, 0x6A, - 0x11, 0x13, 0x48, 0x8D, 0xC2, 0x62, 0xCF, 0x45, - 0x7C, 0xE3, 0x91, 0x88, 0x59, 0xFF, 0xB0, 0xF1, - 0xC3, 0xBC, 0x1D, 0x2A, 0x3E, 0x9B, 0x78, 0xF3, - 0xB1, 0x2E, 0xB0, 0x27, 0xD8, 0x16, 0xF8, 0x9B, - 0x2A, 0xAF, 0xF1, 0xAB, 0xB0, 0xF1, 0x8C, 0x7F, - 0x94, 0x31, 0x97, 0x85, 0xDA, 0xF0, 0xF4, 0x27, - 0x51, 0x3E, 0x5A, 0xE1, 0xDD, 0x6D, 0x9E, 0x98, - 0x39, 0xBB, 0xDF, 0xA2, 0xBA, 0x2C, 0x08, 0xAD, - 0x1D, 0x3F, 0x86, 0xF6, 0xC2, 0x1A, 0x8C, 0xAD, - 0xE0, 0xDC, 0xDD, 0x02, 0x47, 0x4C, 0x7E, 0x2D, - 0xDA, 0x1D, 0x70, 0x92, 0x39, 0xAA, 0x4E, 0xBA, - 0x14, 0xC7, 0xEC, 0x26, 0xBD, 0x9D, 0x1F, 0x6D, - 0x91, 0x58, 0x3C, 0xB5, 0xEF, 0x37, 0xB9, 0x66, - 0x4E, 0x04, 0x7C, 0x29, 0xCF, 0xD7, 0x8E, 0x47, - 0x84, 0xF3, 0xD2, 0x21, 0x84, 0xC5, 0xF8, 0xDC, - 0xC9, 0xF2, 0x52, 0xD5, 0x6A, 0xBF, 0xF1, 0xF1, - 0xDE, 0x9E, 0x7A, 0xF1, 0xD5, 0x5A, 0xF6, 0xEF, - 0x94, 0x66, 0xF9, 0x25, 0x44, 0x7F, 0x8D, 0x92, - 0xA2, 0x25, 0x1C, 0x72, 0x92, 0x30, 0x2A, 0xB7, - 0xEF, 0x18, 0xF3, 0x8C, 0xEF, 0x69, 0xA5, 0x5C, - 0x19, 0x3E, 0xC5, 0xBD, 0xEE, 0x2C, 0x2D, 0x71, - 0xDB, 0x89, 0xD4, 0x11, 0xA6, 0x27, 0x80, 0x8F, - 0x5A, 0x39, 0x9A, 0x04, 0x28, 0x4F, 0x9F, 0x00, - 0xBE, 0xF9, 0xF7, 0x9B, 0x46, 0x69, 0xD6, 0xAC, - 0x12, 0xE9, 0xA7, 0xC2, 0xD1, 0xC8, 0xAD, 0x5D, - 0xF7, 0xCB, 0x0C, 0x98, 0x78, 0x2D, 0x04, 0x4D, - 0x2D, 0x41, 0xAB, 0xC6, 0x3F, 0x81, 0x1D, 0xB9, - 0x2C, 0x1F, 0x3F, 0x59, 0x11, 0xF4, 0x80, 0x4F, - 0x0B, 0xCA, 0x9F, 0x81, 0x6E, 0x9C, 0xD1, 0xB4, - 0x74, 0x06, 0x48, 0x0A, 0x87, 0x2C, 0xFD, 0x4D, - 0x85, 0xD4, 0x21, 0x65, 0x7C, 0x96, 0x69, 0x53, - 0x51, 0xC0, 0xC4, 0xB0, 0xEB, 0x20, 0xDB, 0xE0, - 0x41, 0x09, 0xA7, 0x62, 0xB2, 0xF3, 0xC7, 0x6A, - 0x1D, 0x53, 0xA0, 0x39, 0xBA, 0xCF, 0x78, 0x9E, - 0xBF, 0x1D, 0xA5, 0x98, 0x09, 0x8E, 0xA7, 0x1A, - 0xE7, 0x95, 0xFF, 0x10, 0x38, 0xCC, 0x8F, 0x44, - 0xCB, 0xE7, 0xF6, 0xD6, 0x2C, 0xFF, 0xA8, 0x1C, - 0xFF, 0xA3, 0x65, 0xE8, 0x4E, 0xAE, 0xC7, 0xEF, - 0x61, 0xE1, 0x16, 0x4B, 0x8C, 0xA8, 0xC8, 0xFB, - 0xA5, 0x2C, 0xD1, 0x0A, 0x39, 0xAB, 0x4A, 0xF9, - 0xEE, 0x0B, 0x9B, 0xB4, 0x33, 0x5E, 0x25, 0x15, - 0xD0, 0xAA, 0x93, 0xC4, 0x53, 0x42, 0x91, 0xC5, - 0x98, 0x15, 0x34, 0x9A, 0x22, 0x1D, 0x9A, 0xE7, - 0x0E, 0x81, 0xF6, 0x99, 0x55, 0xB3, 0xD6, 0x49, - 0x1B, 0xB8, 0xA8, 0xBE, 0xDF, 0x54, 0xF0, 0x78, - 0xF7, 0x02, 0x97, 0x74, 0x84, 0x67, 0x6B, 0xAE, - 0x2F, 0xEC, 0x6E, 0x59, 0x20, 0x68, 0xD8, 0xE3, - 0x5A, 0x07, 0x48, 0xE1, 0x99, 0x90, 0xEE, 0xCD, - 0x17, 0x2B, 0xB6, 0xD6, 0xAA, 0x1A, 0xF8, 0x97, - 0x4E, 0xE0, 0x67, 0x9E, 0x4C, 0x35, 0xFE, 0x68, - 0x71, 0x54, 0x43, 0x5D, 0x43, 0x59, 0x19, 0xEB, - 0x58, 0x8E, 0x9A, 0xF6, 0xBD, 0x88, 0x71, 0xEE, - 0x89, 0xC6, 0xF2, 0x10, 0x04, 0x33, 0x13, 0x88, - 0xCD, 0x08, 0xB5, 0xE3, 0x5D, 0xA8, 0xBC, 0x43, - 0xB3, 0x84, 0x5F, 0x70, 0x94, 0xD9, 0xAC, 0xAE, - 0x74, 0x70, 0x13, 0x1E, 0x21, 0xFB, 0xD5, 0x7F, - 0xEC, 0x66, 0x2F, 0xA0, 0xB1, 0x1D, 0xE3, 0xF8, - 0xB9, 0x36, 0x48, 0x25, 0x3D, 0xBA, 0x7D, 0x44, - 0x08, 0xC5, 0x71, 0x74, 0xDA, 0xD3, 0x4F, 0x97, - 0x86, 0xF1, 0x16, 0x38, 0xD8, 0xC9, 0xE3, 0x3A, - 0xA7, 0x2E, 0x06, 0x4D, 0x9D, 0xE8, 0xFC, 0x38, - 0x58, 0x2A, 0x8D, 0x2D, 0x07, 0x99, 0xEA, 0xDF, - 0xF3, 0x00, 0x3B, 0xBC, 0x5F, 0x67, 0x1E, 0x4B, - 0x6C, 0xF1, 0x4A, 0x47, 0xB0, 0x71, 0x90, 0x5A, - 0x3B, 0x75, 0x93, 0x75, 0x56, 0x50, 0x4C, 0x70, - 0xF3, 0xC7, 0x95, 0xD5, 0xEA, 0xCB, 0x4C, 0x92, - 0x4F, 0x22, 0x4F, 0xD9, 0x34, 0x46, 0x76, 0xFB, - 0x79, 0xD6, 0xBD, 0x4E, 0x84, 0xEE, 0xE7, 0x78, - 0x7C, 0xB8, 0x92, 0x9F, 0xAD, 0xF2, 0x17, 0x5D, - 0x38, 0xB1, 0x88, 0x2E, 0xE9, 0x65, 0xAC, 0x4C, - 0x24, 0x27, 0x1D, 0x7B, 0xA3, 0x69, 0x96, 0x55, - 0x5C, 0x26, 0x40, 0xAF, 0x04, 0xB1, 0xCE, 0xA8, - 0x5D, 0x1E, 0x1F, 0xE5, 0x5A, 0xC3, 0xAE, 0xF9, - 0x14, 0x03, 0x58, 0x10, 0x1C, 0x8B, 0x1F, 0xDB, - 0x6C, 0x71, 0x68, 0x60, 0x13, 0x32, 0xF1, 0xA9, - 0x69, 0x45, 0x28, 0x69, 0x7C, 0xE3, 0xC9, 0x56, - 0xAF, 0xF3, 0xBD, 0x4B, 0x9E, 0x0A, 0x06, 0x6A, - 0x62, 0x20, 0x40, 0x65, 0xBD, 0xBC, 0xBF, 0xC7, - 0x0A, 0x2A, 0xCF, 0x56, 0x7C, 0x0E, 0x64, 0xBB, - 0x64, 0x71, 0x2D, 0x90, 0xBB, 0x32, 0x00, 0x0A, - 0x4A, 0x45, 0x44, 0x08, 0x75, 0x2C, 0x86, 0x13, - 0x86, 0x52, 0x8D, 0x3D, 0xFC, 0xF3, 0x5E, 0x5B, - 0x3F, 0x7A, 0xAA, 0x98, 0x84, 0xCF, 0x92, 0xF9, - 0x0B, 0x40, 0x8F, 0xC0, 0xA3, 0x71, 0x84, 0xAD, - 0xEE, 0xDF, 0xC4, 0x91, 0x7E, 0x87, 0x7D, 0x06, - 0xCA, 0x65, 0x8C, 0xE4, 0x8E, 0x03, 0xF0, 0x59, - 0x3E, 0xB4, 0x90, 0x4C, 0xEE, 0x88, 0x29, 0xE4, - 0x26, 0x7D, 0xA6, 0x54, 0x82, 0x49, 0xC1, 0x9D, - 0x80, 0xAB, 0x6B, 0xD7, 0xBE, 0x7D, 0x09, 0x80, - 0x5E, 0xB6, 0xD1, 0x1E, 0xD1, 0x1B, 0xE9, 0x8D, - 0xFC, 0x6E, 0x9C, 0x14, 0x0C, 0x15, 0x02, 0x87, - 0xF3, 0x9D, 0x21, 0xF8, 0xCB, 0xC8, 0xB9, 0xBD, - 0xE1, 0x70, 0xEA, 0xE4, 0x86, 0x4C, 0x97, 0xC1, - 0xEE, 0x4C, 0x18, 0x95, 0xEC, 0xD2, 0x4D, 0x35, - 0x9F, 0xC6, 0x56, 0x10, 0x3E, 0xC0, 0xB9, 0x7B, - 0x13, 0x1A, 0x37, 0x3D, 0x40, 0x4C, 0x88, 0x8B, - 0x9A, 0xA5, 0xB2, 0xB8, 0xB9, 0xC3, 0xEC, 0xF1, - 0x14, 0x33, 0x63, 0x67, 0x84, 0x98, 0xC8, 0xF4, - 0x06, 0x0C, 0x0E, 0x0F, 0x10, 0x12, 0x15, 0x16, - 0x45, 0x4E, 0x55, 0x5A, 0x5F, 0x8A, 0x94, 0x97, - 0xA8, 0xAF, 0xB2, 0xCC, 0xD4, 0xDC, 0xE7, 0xF1, - 0xFE, 0xFF, 0x11, 0x24, 0x53, 0x62, 0x94, 0xB7, - 0xB9, 0xD3, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x18, 0x32, 0x3B - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - static const byte pk_65_draft[] = { - 0x6C, 0x84, 0x14, 0x38, 0x08, 0x56, 0xCB, 0x52, - 0xD7, 0x9C, 0x4B, 0x29, 0x13, 0x9F, 0xB1, 0x83, - 0x9B, 0x86, 0x06, 0xF5, 0x94, 0x8B, 0x9D, 0x72, - 0xA9, 0x56, 0xDC, 0xF1, 0x01, 0x16, 0xDA, 0x9E, - 0x2D, 0x79, 0x77, 0x01, 0x86, 0xFC, 0x74, 0xD9, - 0x42, 0xC0, 0xF4, 0xA3, 0xB5, 0x95, 0xFF, 0x6C, - 0x19, 0x80, 0x4B, 0x49, 0x90, 0x1C, 0x6A, 0xD5, - 0xFA, 0xF7, 0x16, 0x01, 0xC2, 0xB6, 0x00, 0x31, - 0x5E, 0x1F, 0x40, 0xC2, 0x05, 0x47, 0x67, 0xB0, - 0x09, 0x25, 0xDF, 0x3A, 0xA4, 0x90, 0xE8, 0xC7, - 0x6F, 0x05, 0xFB, 0xFB, 0x74, 0x91, 0x10, 0x75, - 0xE6, 0x51, 0x8C, 0x5F, 0x1D, 0x91, 0xB8, 0xA0, - 0xE5, 0xB5, 0x98, 0x30, 0xD3, 0xDF, 0x39, 0x94, - 0x76, 0x04, 0x11, 0xEB, 0xB9, 0x11, 0xED, 0x4C, - 0xC2, 0xC1, 0x60, 0xE3, 0x84, 0x9A, 0x93, 0x76, - 0x2D, 0xFC, 0xA7, 0xB9, 0x81, 0x2B, 0xC7, 0xAE, - 0xB2, 0xDD, 0xB2, 0x76, 0x7B, 0xEF, 0x36, 0x50, - 0x56, 0x05, 0xAE, 0x06, 0x92, 0x60, 0xBC, 0xC8, - 0xDC, 0x47, 0x87, 0xC4, 0x28, 0xCB, 0x3C, 0x07, - 0x6E, 0xF2, 0xA6, 0xB9, 0x35, 0x61, 0xD8, 0x94, - 0x3F, 0x45, 0xCA, 0xBE, 0x8F, 0x05, 0x53, 0xFF, - 0x2E, 0xA1, 0xAC, 0x95, 0xC1, 0xCE, 0x21, 0x59, - 0x3A, 0x17, 0x54, 0x59, 0xD7, 0xDF, 0x12, 0xC4, - 0x07, 0x0A, 0xDB, 0x0E, 0xEE, 0x55, 0xB4, 0xAB, - 0xAE, 0x59, 0xBE, 0x69, 0xC3, 0xFF, 0x0D, 0xE5, - 0xA9, 0xB0, 0x27, 0xFC, 0x7D, 0x8E, 0x6E, 0x05, - 0x7B, 0x71, 0x52, 0xEE, 0x6A, 0xB4, 0x80, 0xD1, - 0x05, 0xD3, 0x0B, 0x0F, 0x50, 0x51, 0xB6, 0x0C, - 0x79, 0x01, 0xC5, 0x25, 0xC4, 0x63, 0x5F, 0xE6, - 0x68, 0xCC, 0x00, 0xE9, 0xD3, 0x09, 0x7D, 0xB9, - 0x9D, 0x66, 0x32, 0x37, 0x15, 0xCE, 0x4F, 0x0B, - 0x79, 0xB4, 0x26, 0xB4, 0x54, 0x5E, 0x09, 0xF4, - 0xDE, 0x39, 0x32, 0x3D, 0xD1, 0x4C, 0xCB, 0x0D, - 0x17, 0x10, 0x8C, 0xD4, 0x6D, 0xEC, 0x61, 0x38, - 0xCD, 0xFA, 0x28, 0x72, 0xC1, 0xC4, 0xC8, 0xAE, - 0xAD, 0x5C, 0x8C, 0xE0, 0x41, 0x57, 0xE5, 0x53, - 0xA3, 0x75, 0x58, 0xC2, 0x34, 0x6A, 0x06, 0x19, - 0x4C, 0xB5, 0x0B, 0x49, 0x81, 0xBF, 0x4D, 0x09, - 0x0C, 0xE4, 0xE8, 0x60, 0x12, 0x6A, 0x82, 0x54, - 0xA4, 0xD4, 0xC0, 0x84, 0xC3, 0xE2, 0x02, 0x0B, - 0xC0, 0x75, 0x35, 0x21, 0x04, 0x9B, 0x0F, 0xD8, - 0x89, 0x97, 0xE0, 0x27, 0xAC, 0x51, 0xE7, 0x5C, - 0xF1, 0x35, 0x0C, 0x3F, 0x30, 0x3A, 0x0E, 0xCE, - 0x42, 0x64, 0x87, 0x15, 0x3D, 0xAF, 0x1F, 0xAA, - 0xD6, 0x80, 0x8B, 0x9D, 0x99, 0x07, 0xDA, 0x9F, - 0x35, 0x18, 0x5B, 0xD3, 0xBE, 0x8D, 0x9C, 0xEB, - 0xE9, 0x16, 0xCE, 0xD1, 0xFA, 0x29, 0x28, 0xD8, - 0x85, 0xA9, 0xCB, 0xA8, 0x81, 0x49, 0x70, 0x3F, - 0x5E, 0x47, 0x72, 0xE4, 0x85, 0x23, 0x12, 0x5D, - 0xDD, 0x02, 0x6E, 0x71, 0x4C, 0x49, 0xF4, 0xFB, - 0x4E, 0x54, 0x4B, 0xBF, 0x61, 0x7A, 0x40, 0xB0, - 0x0B, 0x68, 0xDF, 0x8F, 0x15, 0x5F, 0x58, 0x80, - 0xD4, 0x11, 0x87, 0x7E, 0x25, 0xB4, 0x2B, 0x24, - 0x48, 0xB3, 0x6B, 0xEC, 0x2F, 0x1F, 0x8F, 0x9A, - 0x77, 0x0C, 0x54, 0x51, 0x50, 0xA0, 0x27, 0x8E, - 0x9B, 0x72, 0x45, 0x00, 0xAE, 0xAA, 0xEA, 0x47, - 0x1C, 0x11, 0xCF, 0xF0, 0x4E, 0x30, 0xEA, 0xB2, - 0xF4, 0x73, 0xBC, 0x04, 0x8E, 0x32, 0xCD, 0x31, - 0xAE, 0xF2, 0x15, 0x79, 0xB6, 0x99, 0x22, 0x5B, - 0xF9, 0xE1, 0xB6, 0x70, 0x0C, 0x57, 0xE5, 0x09, - 0xFC, 0xA1, 0xF2, 0x36, 0x29, 0x4A, 0x59, 0x74, - 0xDA, 0xA1, 0x5F, 0xBC, 0xAD, 0x62, 0xD4, 0xBD, - 0xDC, 0x45, 0x32, 0xB2, 0x61, 0x41, 0x44, 0xDB, - 0xE2, 0x88, 0x07, 0x36, 0x8C, 0x28, 0x1A, 0x77, - 0x0E, 0xA2, 0x2B, 0x1E, 0x5A, 0x3F, 0xA5, 0xBA, - 0x14, 0x92, 0x6D, 0xC5, 0x5A, 0x54, 0xF8, 0x4A, - 0x2A, 0x77, 0xC5, 0xA7, 0x08, 0x41, 0xF0, 0x7B, - 0xC1, 0xDE, 0xEF, 0x74, 0x03, 0xB2, 0x47, 0xAB, - 0x42, 0xB8, 0x4A, 0xDF, 0x14, 0x1E, 0x03, 0x0C, - 0x98, 0x46, 0x84, 0x24, 0xDA, 0xAE, 0xB9, 0x9D, - 0x25, 0x77, 0xF9, 0x50, 0xC2, 0x37, 0x3C, 0xCA, - 0x1E, 0x2D, 0xC2, 0x76, 0x1B, 0x8E, 0xDD, 0x6D, - 0x08, 0xFF, 0x79, 0xE5, 0x28, 0x88, 0x0F, 0xFB, - 0x51, 0xC3, 0x6E, 0xD4, 0x20, 0xAC, 0x5D, 0x50, - 0xF2, 0x58, 0x2A, 0xA6, 0x64, 0xE5, 0x4E, 0xA5, - 0xF4, 0x18, 0x9E, 0xA0, 0x17, 0x6D, 0xAA, 0x61, - 0x22, 0xF6, 0x23, 0x5A, 0x70, 0xB1, 0x5C, 0xEB, - 0x4D, 0xDD, 0x65, 0xD3, 0xBE, 0x6E, 0xBF, 0x3D, - 0xC4, 0x31, 0x89, 0xEE, 0x0A, 0x2E, 0x31, 0x05, - 0x63, 0x8F, 0x23, 0x87, 0x36, 0x95, 0x28, 0x0F, - 0x1B, 0x74, 0x27, 0x43, 0x52, 0xD6, 0x0A, 0x48, - 0xE5, 0xD3, 0xDD, 0x02, 0xFB, 0x7A, 0x5E, 0xD8, - 0x3F, 0xE2, 0x7A, 0x69, 0x82, 0x51, 0x42, 0x1C, - 0x8E, 0x9C, 0x98, 0x80, 0x61, 0x02, 0x39, 0x6E, - 0x53, 0x73, 0x90, 0xAC, 0xFD, 0x8C, 0x1D, 0x0B, - 0x4F, 0x99, 0xB7, 0x02, 0xA9, 0xEA, 0x65, 0x98, - 0x78, 0x58, 0x3D, 0x92, 0x75, 0x89, 0x41, 0xB3, - 0x0E, 0xCE, 0x50, 0x7C, 0x10, 0x4B, 0x2C, 0xE4, - 0x87, 0x67, 0x9E, 0xCF, 0x68, 0xB4, 0xD8, 0xB9, - 0x80, 0x69, 0x8A, 0xCF, 0x6A, 0xA6, 0xA5, 0x7E, - 0x8E, 0xD6, 0xAF, 0x3F, 0xF1, 0x8D, 0x26, 0x68, - 0x95, 0x04, 0x28, 0xB5, 0x7D, 0x18, 0x2F, 0x73, - 0xBB, 0x49, 0xB9, 0xB0, 0x38, 0xCC, 0xC8, 0x2D, - 0x56, 0x12, 0x78, 0xA3, 0x86, 0xD5, 0x66, 0x45, - 0xEC, 0x3F, 0xAF, 0xFB, 0x41, 0x25, 0xE0, 0xE7, - 0xF3, 0x6B, 0x48, 0xB1, 0x4B, 0x45, 0x25, 0x47, - 0xA0, 0xB4, 0x81, 0xAA, 0x6B, 0x33, 0x42, 0x29, - 0x24, 0x91, 0x53, 0xE4, 0x2E, 0xDF, 0x7E, 0x49, - 0xDD, 0x6E, 0x76, 0x36, 0xBF, 0xC6, 0x15, 0xA2, - 0x3A, 0x40, 0x1E, 0xFD, 0x40, 0x34, 0xC8, 0x1B, - 0x4D, 0xCE, 0xF0, 0x27, 0xD3, 0x44, 0xDD, 0xCC, - 0xE0, 0xA7, 0x16, 0x18, 0xEB, 0x59, 0x10, 0xCE, - 0xC6, 0x22, 0x28, 0x81, 0x93, 0x85, 0x03, 0x3E, - 0x8D, 0x0A, 0xBD, 0x49, 0x3D, 0x98, 0x3E, 0x4F, - 0xC0, 0x87, 0xD7, 0x2B, 0x45, 0x5E, 0x4D, 0xB6, - 0x3A, 0x2F, 0x82, 0xCE, 0xFF, 0x65, 0xC1, 0xE6, - 0x28, 0xEA, 0xE6, 0x30, 0x59, 0x6D, 0xEC, 0x27, - 0xFB, 0x98, 0xB8, 0x4D, 0xBF, 0xDC, 0xDF, 0xAB, - 0x40, 0xE4, 0x72, 0x24, 0x49, 0x14, 0xAF, 0xF1, - 0x79, 0x32, 0x6D, 0x54, 0x2D, 0x40, 0x1A, 0x3C, - 0xBB, 0x86, 0xE5, 0xFF, 0x83, 0x51, 0xEF, 0xE5, - 0x3A, 0x73, 0xC5, 0x1A, 0xBB, 0x63, 0xFF, 0x55, - 0x3E, 0x7D, 0x79, 0x57, 0xEF, 0x89, 0x13, 0x5E, - 0x0F, 0x5B, 0xB1, 0xBD, 0x0C, 0x24, 0xF9, 0xE4, - 0x5E, 0x32, 0x36, 0x41, 0x3C, 0x60, 0xE1, 0x39, - 0x6A, 0x47, 0x56, 0x7C, 0x94, 0x39, 0x51, 0x0F, - 0x00, 0xD4, 0xA4, 0x3C, 0x14, 0x9A, 0x5C, 0xCC, - 0x04, 0xF3, 0xD4, 0x7E, 0x67, 0xA8, 0xE2, 0x94, - 0xA4, 0x61, 0xA5, 0xF6, 0x93, 0xDB, 0x0C, 0xAE, - 0x22, 0xCF, 0xAC, 0x61, 0xE8, 0x53, 0x47, 0x7D, - 0x33, 0x9A, 0x4E, 0x45, 0xF7, 0xB1, 0x7C, 0x3C, - 0x11, 0x6D, 0x56, 0xF3, 0xA0, 0x68, 0xFC, 0x5A, - 0xDF, 0xEF, 0x38, 0xFF, 0x85, 0x33, 0x2B, 0xD5, - 0x15, 0x3C, 0x4D, 0x8F, 0xB8, 0xF1, 0x48, 0xF1, - 0x17, 0x65, 0x9C, 0x2E, 0xA9, 0x4D, 0xB4, 0x2A, - 0xA0, 0xB0, 0xBE, 0xBB, 0x47, 0x5A, 0x11, 0x04, - 0x12, 0xF3, 0xCD, 0x33, 0x49, 0xFC, 0x1A, 0xD0, - 0x41, 0xB7, 0xD5, 0x30, 0x4A, 0x85, 0x93, 0x14, - 0x4E, 0xFA, 0x3A, 0x36, 0x1D, 0x1B, 0x0C, 0x76, - 0x13, 0xB8, 0x2C, 0x08, 0x6E, 0xA7, 0x12, 0x6E, - 0x43, 0xC6, 0x16, 0xCE, 0xE8, 0xF1, 0x44, 0x4E, - 0x99, 0x56, 0xE8, 0x7F, 0x5C, 0xAB, 0x95, 0xC7, - 0xC7, 0xFB, 0x17, 0x58, 0xEC, 0x7D, 0x97, 0x01, - 0x9E, 0x5B, 0xA9, 0x35, 0x43, 0xEF, 0x3B, 0xAC, - 0x1A, 0x17, 0x42, 0x99, 0xCA, 0x48, 0xBF, 0x78, - 0x59, 0xDB, 0xFB, 0xDF, 0xF2, 0x43, 0xB1, 0x14, - 0xF6, 0xBF, 0x42, 0x3C, 0xE9, 0x8B, 0x4D, 0x4D, - 0x09, 0x1D, 0xA4, 0x4F, 0x32, 0x74, 0xD5, 0x73, - 0xFD, 0xC9, 0x04, 0xBD, 0x88, 0x5E, 0x35, 0xC9, - 0x15, 0x2A, 0x65, 0x35, 0x48, 0x88, 0xF1, 0x1E, - 0xD4, 0xF3, 0xD6, 0x3F, 0x26, 0xA7, 0xBE, 0x2F, - 0x57, 0x26, 0xEA, 0xDA, 0xF4, 0x85, 0x86, 0x59, - 0x2B, 0xBD, 0xF6, 0xCE, 0xE2, 0x46, 0x76, 0x9E, - 0x0E, 0xDA, 0x2A, 0x80, 0x77, 0x1F, 0xED, 0x34, - 0x7D, 0x67, 0xAF, 0xEE, 0xC6, 0x8B, 0x89, 0x46, - 0x3F, 0xA0, 0x49, 0x6D, 0xBC, 0x15, 0xC8, 0x9E, - 0x8D, 0x56, 0x99, 0x83, 0xD1, 0xD6, 0x74, 0x73, - 0x3F, 0x2B, 0xF9, 0xDF, 0x4A, 0x98, 0x0E, 0xA8, - 0xC5, 0xE3, 0xAF, 0x15, 0x56, 0x0A, 0x0E, 0x28, - 0xD6, 0x72, 0xB5, 0x80, 0xAB, 0x65, 0x52, 0xED, - 0x76, 0xAA, 0xCB, 0x5F, 0x80, 0x26, 0x0B, 0x97, - 0x03, 0x76, 0x9D, 0x33, 0xF4, 0x13, 0x8A, 0xBC, - 0x10, 0xBF, 0x5B, 0x05, 0x82, 0xDC, 0xC6, 0x2D, - 0xBE, 0x58, 0xC8, 0x90, 0xF5, 0x1B, 0x41, 0x00, - 0x12, 0x77, 0x34, 0xFB, 0x7D, 0xB7, 0x44, 0x7A, - 0x72, 0x0A, 0xAE, 0x00, 0x9D, 0x00, 0xBE, 0x8C, - 0x61, 0x07, 0x92, 0xC6, 0x4F, 0x13, 0x1F, 0x2D, - 0x72, 0x11, 0x5C, 0x7E, 0x05, 0x8E, 0x48, 0xB9, - 0xDE, 0x64, 0xF5, 0x5B, 0x4D, 0x61, 0x0C, 0x36, - 0xD1, 0x12, 0x71, 0x6A, 0x31, 0xA3, 0xDF, 0xE2, - 0x66, 0x99, 0xE9, 0xC2, 0xAB, 0xA0, 0x56, 0x58, - 0xCE, 0xF1, 0xB2, 0xB0, 0x86, 0x7C, 0xF8, 0xD5, - 0x23, 0x3D, 0xB7, 0x4F, 0xA8, 0xDC, 0x3A, 0xD1, - 0x45, 0xF5, 0xD2, 0x85, 0x74, 0x36, 0x0A, 0x85, - 0xE3, 0xB0, 0xB1, 0x0A, 0xC0, 0xA6, 0x46, 0x7A, - 0x7B, 0x05, 0x98, 0x46, 0x28, 0xEC, 0xA1, 0x04, - 0x63, 0xF3, 0x48, 0xA3, 0x11, 0x1E, 0x00, 0x57, - 0x8D, 0x3C, 0xE5, 0x48, 0x0F, 0x53, 0x75, 0xA1, - 0xEE, 0x23, 0xEE, 0x82, 0x08, 0x7B, 0xAC, 0x41, - 0x23, 0x3A, 0x14, 0xAA, 0xA7, 0x24, 0x73, 0x4B, - 0x18, 0x74, 0xA4, 0xAC, 0xE1, 0x13, 0x37, 0x06, - 0x25, 0x8F, 0x5F, 0xEA, 0x3A, 0x0C, 0x16, 0x09, - 0xE3, 0x0C, 0x7F, 0xD2, 0x10, 0xDA, 0x0C, 0x4F, - 0xDE, 0x91, 0x62, 0xDF, 0x66, 0xFB, 0xAF, 0x79, - 0x2F, 0xA2, 0xAE, 0xAA, 0x51, 0x2F, 0x0F, 0xF7, - 0x83, 0x7B, 0x9C, 0xC0, 0x2E, 0xE9, 0xBD, 0x95, - 0x53, 0x9F, 0x00, 0x1B, 0xBD, 0x60, 0xDD, 0x8B, - 0x42, 0xD6, 0x16, 0xB2, 0xCA, 0x95, 0xF3, 0x83, - 0x5F, 0x5E, 0x47, 0xD4, 0x3B, 0x14, 0x34, 0xC4, - 0x56, 0x3F, 0xD8, 0x1C, 0x15, 0xBE, 0xFA, 0x20, - 0x2C, 0xF3, 0xD9, 0x54, 0x08, 0x73, 0xF6, 0x84, - 0xAF, 0xE1, 0x9A, 0xB5, 0xC0, 0x1F, 0xA9, 0x2E, - 0x95, 0xA8, 0xCD, 0x6F, 0x36, 0x07, 0x30, 0x85, - 0x6E, 0x59, 0xC9, 0xC6, 0xAB, 0x77, 0x0D, 0x65, - 0x75, 0x96, 0x2A, 0xF7, 0x58, 0x78, 0x57, 0x2A, - 0x2A, 0x26, 0x41, 0x3D, 0x01, 0xAB, 0x31, 0x8C, - 0x10, 0x0D, 0xFC, 0x34, 0xDC, 0x1D, 0xEF, 0xA5, - 0x92, 0x7C, 0x4B, 0x45, 0x99, 0x25, 0xD7, 0x3E, - 0x1E, 0xB9, 0x14, 0x70, 0xE3, 0x7A, 0x58, 0x45, - 0x5C, 0x22, 0xA9, 0x61, 0xFD, 0x53, 0xF7, 0xD9, - 0x90, 0x26, 0xFF, 0x88, 0x4B, 0xF4, 0xA2, 0x57, - 0x9F, 0x70, 0x63, 0x35, 0xEF, 0xB6, 0xFB, 0x22, - 0x50, 0xD5, 0x2A, 0xE5, 0x61, 0x89, 0x8B, 0xA1, - 0x60, 0x6E, 0x51, 0xE9, 0x6D, 0x37, 0xC9, 0xED, - 0x3E, 0xC6, 0xCF, 0xCB, 0x33, 0xBF, 0xBE, 0x9C, - 0x31, 0x43, 0xFD, 0x3B, 0x6B, 0x33, 0x4D, 0x5F, - 0x61, 0x92, 0x2B, 0x36, 0x9A, 0xFB, 0xB3, 0x1C, - 0x3E, 0x6E, 0x9B, 0x5F, 0x3A, 0xEB, 0xF9, 0x5C, - 0xB7, 0x08, 0x34, 0x6F, 0xEC, 0xF7, 0x15, 0x9C, - 0xAD, 0x94, 0xA9, 0x3D, 0x8C, 0xD4, 0xB8, 0xC4, - 0x89, 0x41, 0x92, 0xDF, 0xE5, 0x3E, 0xA4, 0x36, - 0xFB, 0xF3, 0xAF, 0x4E, 0x86, 0x4E, 0x8C, 0x39, - 0x91, 0xEA, 0x02, 0x0A, 0x81, 0x1F, 0x0A, 0xF5, - 0x0B, 0x42, 0x57, 0x43, 0x6A, 0x3F, 0xF5, 0x22, - 0xBE, 0x73, 0x67, 0x39, 0x1D, 0x0F, 0x95, 0x0B, - 0xA6, 0x45, 0x2F, 0xBF, 0xD8, 0xFD, 0x87, 0x28, - 0xF4, 0x0B, 0xD2, 0xFC, 0xB8, 0x94, 0x52, 0x99, - 0x85, 0xB4, 0x32, 0xDF, 0xEF, 0x62, 0x30, 0xEB, - 0x4D, 0xEE, 0x73, 0x7A, 0x8D, 0x10, 0xA3, 0xBC, - 0xDF, 0xB7, 0x63, 0xE0, 0x86, 0x9B, 0x22, 0x5C, - 0x1A, 0x8D, 0x0E, 0x1F, 0xBF, 0x2D, 0x16, 0x1C, - 0x2C, 0x65, 0xD6, 0xDF, 0xB9, 0x58, 0xE9, 0x82, - 0xD1, 0x17, 0x77, 0xAC, 0xBE, 0xAD, 0x8D, 0xFB, - 0x6B, 0x1F, 0x5E, 0xB2, 0x1E, 0xA9, 0x42, 0xF7, - 0xC4, 0x0D, 0xC2, 0x0D, 0x2E, 0x4E, 0xB3, 0xE7, - 0x29, 0xB4, 0xE2, 0x9F, 0x75, 0x01, 0xDA, 0x34, - 0x23, 0x45, 0x61, 0xF6, 0x28, 0x88, 0x12, 0xD6, - 0x12, 0xD4, 0x1D, 0xFA, 0x83, 0xC5, 0xB8, 0xD9, - 0x0F, 0xF3, 0x8B, 0xA5, 0x48, 0x20, 0x1B, 0x57, - 0x5B, 0x52, 0x93, 0xAD, 0x78, 0x12, 0x0D, 0x91, - 0xCE, 0xC0, 0x59, 0xCA, 0xE2, 0xE7, 0x6A, 0x9A, - 0xB4, 0x3E, 0xF1, 0x28, 0x1E, 0x2B, 0xEF, 0x3E, - 0x34, 0x8D, 0x28, 0xF2, 0x19, 0x47, 0xC8, 0x88, - 0x48, 0x96, 0x04, 0x59, 0x48, 0x97, 0x75, 0x17, - 0x6F, 0x8E, 0x40, 0xEE, 0x06, 0x42, 0x79, 0x53, - 0x68, 0x7F, 0xB6, 0x3E, 0x47, 0x0F, 0x7D, 0x59, - 0xFB, 0x60, 0xDF, 0x56, 0x9F, 0x8A, 0x11, 0xE2, - 0x8E, 0x09, 0x37, 0x16, 0x2C, 0x46, 0xAF, 0xC7, - 0xD2, 0x21, 0x0A, 0x88, 0x5F, 0xFA, 0x21, 0xB3, - 0xDB, 0xF5, 0x35, 0x4B, 0x29, 0x41, 0xF4, 0xED, - 0x5D, 0x50, 0x79, 0x08, 0x90, 0x84, 0x0C, 0xC3, - 0xB9, 0x73, 0xD2, 0xC3, 0xD0, 0x26, 0x02, 0xB2, - 0x9B, 0xAC, 0xCB, 0x6C, 0xE1, 0x7C, 0xED, 0xB9, - 0x7B, 0x08, 0x5A, 0x2A, 0xB3, 0x10, 0x57, 0x2B, - 0xA7, 0x37, 0x1D, 0x1F, 0x81, 0x20, 0xFF, 0xE3, - 0x7D, 0x0B, 0x0F, 0xCA, 0x35, 0xAF, 0xC5, 0xB5, - 0x62, 0xAA, 0x84, 0x99, 0x71, 0x5A, 0x29, 0x9C, - 0xE0, 0x59, 0xCC, 0xE3, 0xB0, 0xD1, 0x1C, 0xEF, - 0x0D, 0x92, 0x38, 0x96, 0x1A, 0xD4, 0xBE, 0x11, - 0xE9, 0xA6, 0xD1, 0xA4, 0x69, 0x21, 0x77, 0xC8, - 0xB0, 0xC5, 0x3F, 0x11, 0xA8, 0xED, 0x26, 0x50, - 0x21, 0x2E, 0x7A, 0x2F, 0x80, 0xEB, 0xFF, 0x6D, - 0xCF, 0xE4, 0x67, 0x21, 0x03, 0x65, 0x84, 0x34, - 0xD0, 0x32, 0x7A, 0xDD, 0xCD, 0x66, 0xBC, 0xB6 - }; - static const byte msg_65_draft[] = { - 0xDB, 0x84, 0x94, 0xBA, 0x19, 0xC4, 0x11, 0x8F, - 0xB1, 0x5D, 0x0A, 0xCF, 0x42, 0x54, 0xFD, 0x37, - 0x48, 0x3F, 0xCF, 0x47, 0x48, 0xFD, 0x18, 0x44, - 0xF7, 0x17, 0xCE, 0x6F, 0x69, 0x58, 0x9E, 0x61, - 0x77, 0x2C, 0xFE, 0xFA, 0x7F, 0x97, 0x58, 0x65, - 0x34, 0x09, 0xD4, 0xEE, 0x5A, 0x26, 0x4B, 0x83, - 0x4E, 0x60, 0xD6, 0xBB, 0x96, 0x49, 0x9E, 0xBE, - 0xB2, 0xB0, 0x6B, 0x0B, 0xA8, 0x74, 0xBF, 0x31, - 0xE6, 0x41, 0x39, 0x4C, 0xFA, 0xA6, 0xA2, 0xD3, - 0x0D, 0xDB, 0x8F, 0x04, 0x58, 0x76, 0x20, 0x8D, - 0x2F, 0x51, 0xDE, 0x15, 0xE2, 0x05, 0xE8, 0xC9, - 0x1B, 0x87, 0xEC, 0xEB, 0x05, 0xFF, 0x31, 0x83, - 0x27, 0x1B, 0x26, 0x49, 0x66, 0x5D, 0xD3, 0xCC, - 0x49, 0xBF, 0xDB, 0x99, 0x8D, 0x53, 0x9D, 0xA8, - 0x09, 0x30, 0x55, 0x16, 0xBB, 0xBE, 0x9C, 0x90, - 0x60, 0x21, 0x19, 0x1C, 0x52, 0x23, 0xE5, 0x25, - 0xA8, 0xFC, 0x36, 0x16, 0xA1, 0x76, 0x5E, 0xC3, - 0xF9, 0xC5, 0xDB, 0x53, 0xCC, 0x33, 0x7E, 0x03, - 0x9F, 0x18, 0x6A, 0xCF, 0xEA, 0x91, 0x14, 0x8E, - 0xE2, 0xA7, 0x9C, 0xCA, 0x36, 0x89, 0xED, 0xB6, - 0x2A, 0xAF, 0x28, 0xB5, 0xD7, 0x52, 0xFD, 0xE2, - 0x65, 0xEE, 0x52, 0x80, 0xB5, 0x19, 0x72, 0x6C, - 0x1C, 0xA9, 0x80, 0x32, 0x95, 0xC6, 0x74, 0xB7, - 0xEF, 0xAF, 0xA4, 0xD6, 0x1B, 0x30, 0x6A, 0x79, - 0xE3, 0xF6, 0xE7, 0xA8, 0x87, 0xC2, 0xFB, 0x53, - 0x5B, 0x3B, 0x0F, 0xB3, 0xD9, 0xEB, 0xC8, 0x76, - 0x03, 0xEA, 0xFE, 0xF1, 0x70, 0xC1, 0xF1, 0xD2, - 0x8E, 0x99, 0xBB - }; - static const byte sig_65_draft[] = { - 0xF7, 0x78, 0x9A, 0x45, 0xA3, 0x58, 0x73, 0x30, - 0xE7, 0xFC, 0xF7, 0x06, 0x95, 0xF7, 0xF6, 0x96, - 0x88, 0xA2, 0xB8, 0xD0, 0xCE, 0x54, 0xF0, 0x90, - 0x21, 0x4F, 0x10, 0x9F, 0x56, 0x48, 0x4F, 0x98, - 0xC3, 0xAD, 0x1A, 0x53, 0xA5, 0x44, 0x1C, 0x2C, - 0xA7, 0x2A, 0x3B, 0x31, 0x91, 0xBC, 0x04, 0x6F, - 0x46, 0x37, 0x30, 0x45, 0xB9, 0xE5, 0x40, 0xC7, - 0x3D, 0xFE, 0x91, 0xB6, 0x1F, 0x05, 0x88, 0xD6, - 0x13, 0x59, 0x3F, 0xCE, 0x1B, 0x00, 0xEE, 0xF1, - 0xB2, 0x27, 0x03, 0x4C, 0x6F, 0xD3, 0xB1, 0x8B, - 0x3F, 0x22, 0x11, 0x10, 0xFB, 0x34, 0x5A, 0xA7, - 0x86, 0x31, 0xB8, 0xB5, 0x9F, 0xBD, 0xFD, 0xCC, - 0xDA, 0xE6, 0xA2, 0x4D, 0x25, 0x9D, 0x34, 0xAA, - 0xBA, 0xD2, 0x18, 0xB3, 0xAE, 0x4E, 0x77, 0x18, - 0x66, 0x53, 0xB8, 0x56, 0x3A, 0xA6, 0x12, 0x0A, - 0x0A, 0x53, 0x1A, 0x4E, 0x91, 0x37, 0x30, 0xDC, - 0x91, 0x4F, 0xE5, 0xE0, 0x08, 0xBE, 0xCE, 0x68, - 0x69, 0xB0, 0x2B, 0x07, 0xFD, 0xC1, 0x62, 0x14, - 0x54, 0x0D, 0x31, 0x6C, 0x43, 0xFA, 0x0C, 0x21, - 0x1B, 0x41, 0xAC, 0x7E, 0x52, 0x65, 0x67, 0x29, - 0xC7, 0x73, 0xE4, 0xC4, 0xB8, 0x8E, 0xD3, 0x11, - 0x88, 0x6D, 0xD4, 0xD2, 0x75, 0x41, 0x7D, 0x70, - 0x19, 0x66, 0x44, 0xEE, 0xD1, 0x5F, 0xA3, 0x15, - 0x06, 0x60, 0x03, 0xE3, 0x09, 0xF8, 0x32, 0xAF, - 0x91, 0x26, 0x2C, 0x94, 0x90, 0x11, 0xFC, 0xB0, - 0xAD, 0x2C, 0xCE, 0x65, 0xDD, 0x9E, 0xFF, 0x56, - 0x7E, 0xE2, 0x9C, 0xC4, 0x0A, 0x6F, 0xE0, 0x66, - 0x4E, 0x7D, 0x9F, 0x23, 0x65, 0x68, 0xFC, 0x94, - 0x29, 0x5D, 0xBB, 0x34, 0x28, 0x82, 0x33, 0xE8, - 0xC5, 0x11, 0xD2, 0x88, 0x15, 0xEC, 0x72, 0x10, - 0x32, 0x29, 0x6E, 0x1E, 0xDE, 0xCA, 0x7F, 0x72, - 0x6A, 0x6E, 0xB0, 0xF7, 0x6C, 0xC5, 0x82, 0x80, - 0x11, 0xC0, 0xE4, 0x01, 0x3C, 0xC7, 0xEE, 0x43, - 0x29, 0xB8, 0x1E, 0xCC, 0x0D, 0x52, 0xED, 0x1E, - 0x49, 0x1D, 0xD6, 0xD5, 0x5C, 0x52, 0x65, 0x66, - 0x5E, 0xD8, 0xAD, 0x21, 0x9B, 0x89, 0x4F, 0x31, - 0xC6, 0x8C, 0x61, 0x9A, 0xFC, 0xDB, 0x73, 0x58, - 0xE5, 0x55, 0x4C, 0x49, 0x5B, 0x8B, 0x6E, 0x33, - 0x25, 0x68, 0x8F, 0xB8, 0xC1, 0xA2, 0x53, 0x31, - 0xD5, 0x7B, 0xD3, 0x48, 0xA2, 0x7D, 0x39, 0x09, - 0x29, 0xBC, 0x46, 0xA1, 0x49, 0x6A, 0xB3, 0x5B, - 0x46, 0xBA, 0x61, 0xB6, 0xB9, 0xD2, 0x3C, 0xD0, - 0x63, 0x15, 0xFB, 0x72, 0xC2, 0x47, 0x76, 0x01, - 0x61, 0x30, 0xAD, 0xB1, 0xCF, 0x2D, 0xC7, 0x29, - 0x59, 0xEA, 0x9C, 0xAD, 0x96, 0xAF, 0x5D, 0xA9, - 0x96, 0x12, 0x6C, 0xDD, 0x85, 0xB1, 0x34, 0xCC, - 0x92, 0x7A, 0x51, 0xFD, 0x23, 0xF8, 0x47, 0x91, - 0xA3, 0xFC, 0xDA, 0x07, 0x7E, 0x15, 0x99, 0x17, - 0x48, 0xA0, 0x39, 0x4F, 0x33, 0x4E, 0xB8, 0xBC, - 0x48, 0xA9, 0x9A, 0xB9, 0xDF, 0xBB, 0x0F, 0x2A, - 0xAD, 0x6F, 0xBE, 0x48, 0x49, 0x61, 0xD3, 0xA4, - 0xE8, 0xF8, 0xB2, 0x1A, 0x6A, 0xC0, 0x92, 0xB2, - 0x26, 0xD6, 0xE1, 0x19, 0xFA, 0xD4, 0x4D, 0x8E, - 0x57, 0x6F, 0xE9, 0x6C, 0x6C, 0xDB, 0x68, 0x40, - 0xEA, 0x61, 0x4B, 0xAF, 0xC7, 0x07, 0x86, 0xC5, - 0x19, 0xE1, 0xD5, 0xDC, 0x0F, 0x98, 0x44, 0x43, - 0xC8, 0xB1, 0xE5, 0x4F, 0x8E, 0xE1, 0x76, 0xD9, - 0x8B, 0x2C, 0x70, 0x27, 0xF5, 0x7D, 0x7E, 0x3D, - 0xE9, 0xB2, 0xA0, 0xA3, 0x69, 0x11, 0xB8, 0xE4, - 0x71, 0x21, 0xDE, 0x0C, 0x07, 0xEB, 0xBA, 0x5D, - 0x7B, 0x59, 0x4E, 0xF2, 0x44, 0xC6, 0x83, 0x27, - 0xEC, 0x6C, 0x6D, 0x1D, 0xD5, 0x01, 0xF4, 0x83, - 0xFE, 0x9B, 0x95, 0x70, 0x59, 0x7E, 0x70, 0xDF, - 0x41, 0x3E, 0x7A, 0xF0, 0x38, 0x47, 0xF4, 0x09, - 0xED, 0x61, 0xE2, 0x84, 0x6E, 0x6C, 0x64, 0x1E, - 0x6A, 0x7F, 0xFA, 0x79, 0xDE, 0x6B, 0xFA, 0x37, - 0x3A, 0x06, 0x44, 0xB0, 0x0B, 0xF4, 0x1A, 0x03, - 0x49, 0x92, 0xA7, 0x94, 0xDA, 0x17, 0xC8, 0x88, - 0x85, 0x23, 0x90, 0x32, 0xC8, 0x51, 0x76, 0x4E, - 0x3E, 0x4D, 0xBD, 0xE7, 0xF1, 0x2A, 0x16, 0xC5, - 0xA2, 0x63, 0xE9, 0x64, 0xC1, 0xE7, 0xFD, 0xD3, - 0xCC, 0xE5, 0x76, 0xDD, 0x6D, 0x56, 0xB1, 0x81, - 0x82, 0x84, 0x8B, 0x75, 0x63, 0x64, 0x5D, 0x4E, - 0x42, 0xFF, 0x22, 0x74, 0x2A, 0x99, 0x67, 0x85, - 0x16, 0x9D, 0x7F, 0x50, 0x3B, 0x48, 0xA7, 0x15, - 0x8B, 0x3C, 0xBD, 0x29, 0x93, 0x5E, 0xD3, 0x20, - 0x49, 0xBE, 0xA1, 0xAD, 0x95, 0x3E, 0xF7, 0x07, - 0x32, 0x7B, 0x77, 0x8B, 0xFD, 0xDD, 0xFC, 0x60, - 0x51, 0x1D, 0xA1, 0x13, 0xA3, 0x4F, 0x65, 0x57, - 0x12, 0xE4, 0xE5, 0x9D, 0x6C, 0xCE, 0x40, 0x4E, - 0x94, 0xAB, 0xA6, 0x1E, 0x81, 0x35, 0x38, 0x8F, - 0xC2, 0x1C, 0x8E, 0x41, 0x34, 0x4F, 0x32, 0x4B, - 0x01, 0xAC, 0x8C, 0x06, 0x9F, 0x92, 0x57, 0x5D, - 0x34, 0xF8, 0x8B, 0xCA, 0x22, 0xCB, 0x30, 0x7E, - 0x37, 0x07, 0x00, 0x63, 0x32, 0x02, 0x56, 0xB8, - 0xBA, 0xD6, 0xEB, 0x7A, 0x81, 0xAF, 0xE9, 0xA2, - 0x54, 0x01, 0x6E, 0x1C, 0x8A, 0x12, 0x50, 0x89, - 0xAA, 0xA3, 0xED, 0xE8, 0x4E, 0x5B, 0x6C, 0x2E, - 0xCF, 0xAE, 0xFA, 0xA5, 0x2B, 0x9F, 0x57, 0x09, - 0x60, 0x2C, 0x06, 0xAE, 0xA4, 0xA0, 0x38, 0x4E, - 0x9B, 0x09, 0xE5, 0xB8, 0x81, 0x64, 0xB2, 0x74, - 0xEA, 0x32, 0x65, 0xFB, 0x51, 0x52, 0x39, 0x7D, - 0xFF, 0x5A, 0x3A, 0x08, 0x61, 0xE2, 0xBC, 0x12, - 0xD2, 0x10, 0x92, 0x89, 0x72, 0x97, 0x47, 0xE8, - 0x3F, 0xDF, 0x24, 0x3A, 0x1D, 0x17, 0xB9, 0x83, - 0x48, 0x37, 0x98, 0x45, 0xA9, 0xE9, 0x55, 0xE2, - 0xD6, 0xF9, 0x38, 0xDA, 0xA5, 0x91, 0x8E, 0x2A, - 0x14, 0xF9, 0x7B, 0xA2, 0xBE, 0x50, 0x1C, 0xCC, - 0xAF, 0xD6, 0x81, 0x91, 0x0F, 0x4A, 0x4F, 0x06, - 0x71, 0x5C, 0xE8, 0x40, 0x96, 0xF3, 0x7A, 0x91, - 0xDC, 0xCA, 0x2A, 0x8A, 0x4B, 0xE8, 0xDA, 0x79, - 0x21, 0xDB, 0xF8, 0xD3, 0xF4, 0xEF, 0xB9, 0x8C, - 0x6B, 0x4F, 0x94, 0x0E, 0xCE, 0xF8, 0x32, 0xB5, - 0x49, 0xD0, 0x68, 0x94, 0x7C, 0x3D, 0xFB, 0x58, - 0x09, 0xCB, 0x7B, 0x06, 0x0A, 0x3A, 0x0E, 0xF3, - 0xB2, 0x1C, 0x01, 0x64, 0x50, 0x1D, 0xDE, 0xA7, - 0xC9, 0xE5, 0xE7, 0x89, 0x7C, 0x6B, 0x1C, 0x46, - 0x34, 0x8B, 0x2C, 0x3E, 0x80, 0x5F, 0x6F, 0x22, - 0x87, 0xBA, 0x15, 0x8C, 0xF9, 0x25, 0xA7, 0xBA, - 0x7F, 0x08, 0x25, 0x49, 0x89, 0xC8, 0x7D, 0x24, - 0x97, 0x9A, 0xD9, 0x86, 0xAA, 0x97, 0xC5, 0x1B, - 0x01, 0xF4, 0x5D, 0x4A, 0x1F, 0x24, 0x75, 0x29, - 0x91, 0xF0, 0x42, 0x05, 0xEB, 0x55, 0x1F, 0xD0, - 0x2D, 0x41, 0x5F, 0x2D, 0xD1, 0xEF, 0xF1, 0x42, - 0xB0, 0xD7, 0x04, 0x16, 0xC6, 0xD8, 0x15, 0xEB, - 0x91, 0x73, 0x2B, 0x26, 0x8F, 0xB2, 0x0D, 0x08, - 0x67, 0x44, 0x2D, 0x71, 0xDE, 0xC0, 0x57, 0xB2, - 0x86, 0xCD, 0x93, 0x81, 0x1F, 0xF3, 0xF6, 0x46, - 0xEB, 0xD5, 0x65, 0xD5, 0x1D, 0x09, 0xA4, 0x2D, - 0x3A, 0xBA, 0xAC, 0x0F, 0x34, 0xCC, 0x81, 0x7B, - 0x18, 0x93, 0x8E, 0xCC, 0xBB, 0x1F, 0xEF, 0x05, - 0xBD, 0x3C, 0x2B, 0x49, 0x4F, 0xA5, 0x29, 0xED, - 0x4C, 0x63, 0x4C, 0x93, 0x25, 0xA4, 0x81, 0x73, - 0xF2, 0x0F, 0xFA, 0xC3, 0x2D, 0xC1, 0x01, 0xE6, - 0xEE, 0x03, 0xB2, 0xFC, 0xBE, 0xC2, 0x46, 0x8D, - 0xBC, 0x8F, 0x76, 0x75, 0x8C, 0x32, 0x15, 0x47, - 0x4F, 0x7E, 0xF2, 0x40, 0x65, 0xF7, 0x90, 0x60, - 0xAC, 0xA3, 0xC8, 0xD5, 0xD7, 0x4A, 0xF7, 0x0F, - 0x48, 0x30, 0x1D, 0xDB, 0x30, 0xC0, 0x5D, 0xB3, - 0xEF, 0xA7, 0x26, 0xCF, 0x88, 0x55, 0x59, 0x01, - 0x84, 0x12, 0x82, 0xAA, 0x08, 0xF6, 0x66, 0xA6, - 0x53, 0x51, 0xA6, 0xA2, 0x4E, 0xED, 0x6B, 0xE2, - 0x11, 0x77, 0x31, 0x07, 0xE1, 0x85, 0xE1, 0xB4, - 0x88, 0xA2, 0xE4, 0x91, 0xB6, 0xC1, 0x41, 0x52, - 0x84, 0x62, 0xA8, 0x64, 0x94, 0xB5, 0x4F, 0xDC, - 0xCE, 0xCC, 0xB6, 0xAA, 0x21, 0x25, 0x36, 0x86, - 0x69, 0x3A, 0xE7, 0x98, 0xC9, 0xCE, 0x9E, 0x0B, - 0xDD, 0xC6, 0xAE, 0x53, 0xD9, 0xB7, 0x06, 0xDC, - 0x4F, 0x4D, 0x81, 0xB9, 0xC7, 0x3C, 0x46, 0x1E, - 0xCD, 0x70, 0x35, 0xC5, 0x17, 0x2E, 0xFA, 0xE5, - 0x60, 0x2C, 0xAF, 0x88, 0xC6, 0x4E, 0x79, 0xE5, - 0x32, 0x40, 0x30, 0x55, 0x5D, 0xE2, 0x11, 0xF8, - 0x9F, 0xD4, 0x24, 0xC3, 0x38, 0xC3, 0x88, 0x3C, - 0x83, 0xCA, 0x94, 0x05, 0xC2, 0xB5, 0xD1, 0x44, - 0x5F, 0x7C, 0x98, 0xC4, 0x3E, 0xD3, 0xD2, 0xBE, - 0xCB, 0xE2, 0x5F, 0x5F, 0x3F, 0x54, 0x4C, 0xCC, - 0x5B, 0x5A, 0xEA, 0xE4, 0x7D, 0xDF, 0x3F, 0xB5, - 0x64, 0x9F, 0xF5, 0xD6, 0x1E, 0xAA, 0x02, 0xED, - 0xEB, 0xC7, 0x5C, 0xE4, 0x78, 0xBA, 0x00, 0x42, - 0x6C, 0xAF, 0x47, 0x4F, 0xA7, 0x9E, 0x5B, 0x08, - 0x9E, 0xB1, 0xA8, 0x82, 0xF1, 0x53, 0x54, 0x59, - 0x26, 0x95, 0x95, 0x2B, 0xA0, 0xA8, 0xEE, 0x91, - 0xE6, 0x49, 0xE3, 0xF2, 0xC3, 0x82, 0x26, 0x4D, - 0xAA, 0x30, 0xF6, 0xA6, 0xD2, 0x17, 0xF6, 0x12, - 0x9C, 0x19, 0x39, 0xB6, 0xDC, 0xAC, 0xCD, 0xA5, - 0xB6, 0x37, 0x32, 0x6E, 0x8A, 0x83, 0x61, 0xC3, - 0xB5, 0x6F, 0xCF, 0xFC, 0x48, 0x50, 0x36, 0x86, - 0x58, 0x22, 0xB9, 0xBB, 0x87, 0xB4, 0x35, 0x10, - 0xBC, 0xDD, 0x55, 0xBC, 0x35, 0x0D, 0xE7, 0xB2, - 0xAE, 0x90, 0xA2, 0x1E, 0x9E, 0x19, 0x97, 0x8E, - 0xDA, 0x10, 0xDF, 0x66, 0x76, 0x14, 0xA4, 0x4F, - 0xE2, 0xA8, 0x4D, 0x16, 0xBE, 0x04, 0x3E, 0xA8, - 0x77, 0x36, 0x33, 0xEA, 0x6B, 0xAD, 0xF6, 0x57, - 0x10, 0x05, 0x2F, 0x34, 0x1F, 0x65, 0xCB, 0xE9, - 0x28, 0xD3, 0x96, 0x2A, 0x5A, 0x2F, 0xE6, 0x4E, - 0x46, 0xD6, 0xBF, 0xB8, 0xFD, 0x0D, 0x99, 0x78, - 0xF0, 0x42, 0x3C, 0xBD, 0x19, 0x5F, 0x72, 0xF3, - 0xCB, 0x19, 0xD7, 0xEF, 0xD9, 0xEB, 0xE3, 0x3C, - 0xD2, 0xF5, 0x70, 0x9A, 0x57, 0x80, 0x7D, 0xF9, - 0x44, 0xEC, 0xE5, 0x68, 0xAA, 0xCA, 0x43, 0x36, - 0x42, 0x20, 0x83, 0xB0, 0x69, 0x7B, 0x6A, 0xA0, - 0x05, 0x86, 0xE4, 0xBF, 0x7D, 0xD6, 0x73, 0xA3, - 0xD5, 0x96, 0xB8, 0x61, 0x8A, 0xC3, 0xB4, 0x06, - 0x17, 0x50, 0xC6, 0xBE, 0x97, 0xCB, 0x53, 0x75, - 0x3D, 0x02, 0x39, 0x55, 0x56, 0x07, 0x5A, 0x26, - 0xF1, 0x40, 0xB9, 0x3F, 0x57, 0x7D, 0xAD, 0x50, - 0x5E, 0x1C, 0xF2, 0xB5, 0x51, 0xA0, 0x4C, 0x98, - 0xC7, 0xF0, 0x90, 0x18, 0x31, 0xB3, 0xCA, 0x61, - 0xD7, 0x5D, 0xA7, 0x93, 0xAC, 0x72, 0xA4, 0x4C, - 0x7A, 0x07, 0xF7, 0xDB, 0xBA, 0xD6, 0x0A, 0x55, - 0xF4, 0x9C, 0xBD, 0x79, 0xDE, 0xE4, 0x73, 0x9F, - 0xFD, 0x36, 0x77, 0x8E, 0xBD, 0x08, 0xEB, 0xDB, - 0x79, 0xEC, 0x07, 0xA1, 0x62, 0x39, 0xC5, 0xB9, - 0x21, 0x59, 0x9F, 0xEB, 0xFE, 0xA4, 0x6D, 0xDF, - 0x96, 0x6A, 0xA4, 0xA0, 0x15, 0x12, 0xE6, 0x10, - 0x94, 0x3F, 0x5D, 0xC5, 0x4B, 0x4C, 0x76, 0xB7, - 0x64, 0xB3, 0x80, 0xBF, 0x2F, 0x84, 0xED, 0xE3, - 0x21, 0x24, 0x91, 0x2F, 0x54, 0xF7, 0xB6, 0xE2, - 0x07, 0xB7, 0x38, 0x1F, 0x67, 0x0F, 0x7A, 0xA0, - 0xF3, 0xC3, 0xED, 0x10, 0x15, 0x74, 0x03, 0x84, - 0xDD, 0x61, 0xA9, 0x76, 0x5E, 0xE4, 0x69, 0x6E, - 0xAC, 0xF8, 0x2E, 0xA4, 0x10, 0x69, 0x18, 0x05, - 0xCB, 0x68, 0x89, 0x03, 0x53, 0x5D, 0x70, 0x46, - 0x10, 0x0D, 0xCC, 0x2B, 0xA7, 0xD8, 0x30, 0x2A, - 0xCB, 0x04, 0x30, 0xD5, 0x06, 0xCC, 0xC1, 0xC0, - 0xDD, 0xEA, 0x71, 0x11, 0xA7, 0x6F, 0x45, 0xB4, - 0x54, 0xE2, 0x5C, 0xDD, 0xFB, 0x63, 0x9B, 0x3D, - 0x66, 0x4C, 0x36, 0xD8, 0x84, 0x35, 0x13, 0xA3, - 0xFC, 0xAF, 0x9E, 0x60, 0x57, 0xE9, 0xBC, 0x06, - 0x82, 0x37, 0xFE, 0x24, 0x19, 0xA2, 0xD2, 0xD9, - 0x0B, 0x4A, 0x1F, 0xC2, 0xA7, 0x1A, 0x14, 0x6D, - 0x2B, 0xD0, 0x43, 0x64, 0xC7, 0x9B, 0x8E, 0xBA, - 0x8E, 0x3E, 0x88, 0xCE, 0x11, 0xE9, 0x16, 0xE4, - 0xA7, 0x52, 0x84, 0x21, 0x32, 0x8C, 0xF5, 0x4F, - 0xAA, 0xB2, 0xB1, 0x9F, 0x44, 0x46, 0x87, 0x81, - 0xF8, 0xAB, 0x84, 0xB7, 0xDD, 0x97, 0x2F, 0xF5, - 0x61, 0x50, 0x71, 0x43, 0x0A, 0x43, 0x74, 0xDA, - 0xFC, 0xAE, 0x1E, 0x60, 0x44, 0xAA, 0x98, 0xE9, - 0x85, 0x94, 0x1B, 0xA6, 0xB9, 0xDB, 0x8C, 0x02, - 0xF5, 0x89, 0x60, 0x3E, 0xEB, 0x8B, 0xE9, 0x0A, - 0x70, 0xEF, 0xC0, 0x88, 0xD7, 0x95, 0xE6, 0xDA, - 0x1F, 0x1F, 0x2E, 0x6E, 0xCE, 0xDD, 0x03, 0x1D, - 0x81, 0x99, 0xE6, 0x59, 0x12, 0xD4, 0x34, 0xD0, - 0x9B, 0xFB, 0xE5, 0x94, 0x40, 0x6D, 0xC1, 0x15, - 0x0E, 0x99, 0x35, 0x8C, 0xEA, 0x7F, 0xAD, 0x2E, - 0x7C, 0x44, 0xC3, 0x8B, 0x6E, 0x0C, 0xEE, 0xAB, - 0x9B, 0xDE, 0x0D, 0xB9, 0x7B, 0xCF, 0x5A, 0xC9, - 0x94, 0x10, 0xC9, 0x47, 0x0E, 0x26, 0x6B, 0x8B, - 0xE4, 0x5F, 0x66, 0x90, 0x83, 0x1F, 0x41, 0x45, - 0xE2, 0x63, 0x79, 0xDB, 0x80, 0x7C, 0x26, 0xDD, - 0xF9, 0x1E, 0x30, 0x9D, 0x4F, 0x4A, 0x3E, 0x7E, - 0xCA, 0xB7, 0x36, 0x2F, 0x15, 0xD2, 0x0E, 0xA4, - 0x33, 0xB7, 0xE7, 0x0A, 0x7D, 0xDE, 0x74, 0x16, - 0xCE, 0xA8, 0x71, 0x49, 0x8B, 0x2C, 0xE3, 0xF5, - 0x8D, 0x29, 0xD8, 0x62, 0x8C, 0x53, 0x18, 0x40, - 0xF0, 0x22, 0xDD, 0x3B, 0xD2, 0xF3, 0x80, 0x9B, - 0x11, 0x68, 0xD3, 0x8E, 0x63, 0xC7, 0xF6, 0x93, - 0x08, 0xA3, 0x1A, 0x2D, 0x4D, 0x5E, 0xEB, 0x97, - 0x42, 0x39, 0xB3, 0x4A, 0x62, 0xBC, 0x85, 0xE4, - 0xEC, 0xF9, 0x0C, 0x33, 0x6A, 0x0C, 0x37, 0xBD, - 0x9E, 0x0E, 0xF4, 0x26, 0x6B, 0x83, 0x5A, 0xC8, - 0x90, 0x6A, 0x83, 0xCF, 0x0B, 0x35, 0x13, 0x8A, - 0x65, 0xE5, 0xD9, 0xA6, 0x1F, 0xCC, 0x9B, 0x2D, - 0x5A, 0x33, 0x7B, 0x8A, 0xBE, 0xF8, 0x8A, 0x7F, - 0xB3, 0xC0, 0x94, 0x5D, 0x7C, 0xAF, 0x35, 0x61, - 0x1A, 0xE0, 0xE4, 0x46, 0x93, 0xA5, 0xBC, 0xE0, - 0xA6, 0xE2, 0xFE, 0xCA, 0xE9, 0xBD, 0xF4, 0xE3, - 0x56, 0xD6, 0x53, 0x6B, 0x58, 0x1A, 0x18, 0xF0, - 0x3A, 0x59, 0x16, 0x4E, 0xD5, 0x44, 0x7C, 0x7E, - 0xC8, 0xBD, 0x99, 0x7B, 0xE9, 0x53, 0xDE, 0xD9, - 0x32, 0x53, 0x5B, 0x5F, 0x43, 0x8A, 0x04, 0x31, - 0x9F, 0x5E, 0x0D, 0x8B, 0x0F, 0xEB, 0xC8, 0xDE, - 0x81, 0x46, 0x65, 0x8E, 0x52, 0xB9, 0x75, 0x9C, - 0x73, 0x93, 0x5B, 0x12, 0x0D, 0xC9, 0xB8, 0x54, - 0xF3, 0xC8, 0xF9, 0x4E, 0xC9, 0x33, 0x90, 0x57, - 0xD7, 0xD7, 0xCD, 0x91, 0xF7, 0xE0, 0xB9, 0x8D, - 0x84, 0xEC, 0x7B, 0x2F, 0x92, 0x32, 0x8D, 0x73, - 0x60, 0x18, 0xB0, 0x31, 0x65, 0xA8, 0x74, 0x5F, - 0x8E, 0x77, 0xEB, 0x80, 0x29, 0xF9, 0x78, 0x26, - 0x70, 0xCB, 0xD8, 0x6B, 0x43, 0x16, 0xC7, 0xBE, - 0x4A, 0x88, 0x03, 0x38, 0xBA, 0xCF, 0xB0, 0x15, - 0x69, 0x9B, 0xF3, 0x0D, 0x3A, 0x4B, 0x05, 0x32, - 0x54, 0x35, 0xBA, 0x5F, 0xA3, 0xB9, 0xD2, 0xB2, - 0xFE, 0x0B, 0x51, 0x9C, 0x2C, 0xB2, 0x46, 0xE5, - 0x3D, 0x1A, 0x34, 0x3D, 0x66, 0x1A, 0x66, 0x14, - 0x3C, 0x6F, 0x46, 0x8C, 0x55, 0x38, 0x64, 0x5C, - 0xC2, 0x6D, 0x4E, 0x2A, 0x87, 0x03, 0xEC, 0x9B, - 0x10, 0xFC, 0x89, 0xBE, 0x6F, 0x85, 0x99, 0x97, - 0x70, 0x8F, 0x31, 0x19, 0x4F, 0x0D, 0xFE, 0xE9, - 0x29, 0x98, 0xB2, 0x5E, 0x93, 0xB9, 0x70, 0x70, - 0xDE, 0x14, 0x40, 0x9D, 0x5B, 0xA4, 0x3D, 0xF8, - 0x8D, 0x15, 0xC2, 0xFB, 0xA9, 0x7B, 0xDD, 0xE6, - 0x18, 0xCC, 0x3F, 0xC0, 0x42, 0xF7, 0x74, 0x81, - 0x84, 0xBA, 0x9E, 0xC9, 0xCB, 0xA1, 0xB2, 0x00, - 0x68, 0x81, 0xD0, 0x51, 0x42, 0x64, 0x19, 0x8F, - 0xB6, 0x91, 0xC5, 0xC0, 0x38, 0xE0, 0x49, 0x50, - 0xCF, 0x69, 0x09, 0x93, 0x77, 0xFE, 0x66, 0xBA, - 0x64, 0xE2, 0x19, 0x52, 0xA4, 0x45, 0x81, 0x71, - 0x96, 0x64, 0xF5, 0xD9, 0x23, 0x97, 0xD2, 0x2A, - 0xA7, 0x03, 0x2B, 0xF5, 0x89, 0xAF, 0x8A, 0xCA, - 0x48, 0xDF, 0x6D, 0x14, 0xEB, 0x43, 0xCE, 0xF0, - 0xA9, 0xC8, 0xA8, 0xF9, 0xAD, 0x32, 0x95, 0x25, - 0xEF, 0x0A, 0xAA, 0x4F, 0x9E, 0x09, 0xC3, 0x51, - 0x3C, 0xF0, 0x29, 0xF3, 0xDE, 0xFC, 0xBB, 0x41, - 0x14, 0xFA, 0x0F, 0x66, 0x8D, 0xB4, 0x72, 0x2F, - 0xCC, 0xD9, 0xC2, 0x07, 0xB6, 0x6F, 0x10, 0x9E, - 0xD9, 0x5B, 0x45, 0x4B, 0xB6, 0x19, 0x5D, 0x59, - 0xC4, 0xA6, 0x78, 0xBA, 0x6F, 0x5A, 0x9B, 0x23, - 0x41, 0x21, 0xAD, 0x05, 0x16, 0xA1, 0xD4, 0x12, - 0x3D, 0x38, 0x26, 0xD9, 0x2A, 0x61, 0xB3, 0x5D, - 0xEB, 0x29, 0x5B, 0xAA, 0x2F, 0xE1, 0xB5, 0xEE, - 0x25, 0x02, 0x1D, 0xAE, 0xF8, 0x57, 0xB5, 0xDF, - 0x19, 0x2E, 0x17, 0x5E, 0x3A, 0x2A, 0x0D, 0x3F, - 0x08, 0x2F, 0x21, 0x1C, 0xB5, 0xBD, 0xC2, 0x36, - 0x27, 0x4F, 0x86, 0xC5, 0xDC, 0x74, 0xC3, 0x9B, - 0xE9, 0x7C, 0xCF, 0x5F, 0x57, 0x94, 0xEB, 0x64, - 0xEC, 0x64, 0x55, 0x45, 0x21, 0x0F, 0xC6, 0x67, - 0xD1, 0xE0, 0x74, 0x0E, 0x66, 0xCB, 0xED, 0xC2, - 0x06, 0x48, 0xCA, 0x1F, 0xA7, 0x34, 0x14, 0x59, - 0x6B, 0xA0, 0x89, 0x17, 0xA1, 0x9A, 0x46, 0x3A, - 0xD3, 0x02, 0x7C, 0x81, 0x83, 0x6B, 0x8F, 0x4F, - 0x02, 0xB9, 0x9F, 0xC5, 0x08, 0x3F, 0x06, 0xF3, - 0x4B, 0xD2, 0x30, 0x9C, 0x23, 0x42, 0xAD, 0x88, - 0xA8, 0x4F, 0xA9, 0x6E, 0x20, 0x7C, 0x01, 0x08, - 0xF6, 0x82, 0x54, 0x14, 0x94, 0x4F, 0x26, 0x4E, - 0xD6, 0xC4, 0x66, 0x7C, 0x78, 0x8D, 0x61, 0xA6, - 0xBC, 0x2C, 0x45, 0x6A, 0xF6, 0x6C, 0x2F, 0x76, - 0x9E, 0x16, 0x90, 0x17, 0x06, 0x91, 0x2C, 0xC9, - 0x0D, 0x4B, 0x6C, 0x90, 0xDC, 0xA1, 0x6C, 0xAC, - 0x8F, 0xFE, 0xD8, 0x39, 0x70, 0x20, 0xE2, 0x97, - 0x5E, 0x24, 0xFF, 0x4C, 0x80, 0x7C, 0x8A, 0xB7, - 0x31, 0xC8, 0x1D, 0x36, 0xCA, 0x84, 0xC9, 0x12, - 0x1A, 0x85, 0x13, 0xE0, 0xC9, 0xD0, 0xF4, 0x1B, - 0xC6, 0x8F, 0x88, 0xEA, 0xCA, 0xA3, 0x55, 0x99, - 0xFA, 0xE3, 0xBB, 0xA6, 0xFC, 0xC6, 0x52, 0x8D, - 0x47, 0xE4, 0x0C, 0x07, 0x64, 0xCF, 0x9C, 0x83, - 0x83, 0xB3, 0xA4, 0x45, 0x15, 0xE6, 0x1D, 0x92, - 0xCD, 0xAE, 0xC9, 0xCB, 0x90, 0x82, 0xB5, 0xA0, - 0xC0, 0x37, 0x94, 0x60, 0xD9, 0x17, 0x9A, 0x7D, - 0x9D, 0xF2, 0x9E, 0x0B, 0x4B, 0x6A, 0x41, 0x18, - 0x28, 0x52, 0x15, 0xE8, 0x7B, 0x6F, 0x11, 0x8E, - 0x97, 0x31, 0xE4, 0x66, 0xFB, 0x3F, 0xEB, 0xD1, - 0x95, 0xE1, 0x44, 0xFD, 0x20, 0x37, 0xD1, 0x16, - 0x62, 0x75, 0x79, 0xAC, 0x55, 0xFE, 0xD5, 0xE3, - 0x25, 0x85, 0xEC, 0x66, 0x38, 0xA0, 0xDF, 0xBE, - 0x6E, 0xD6, 0xC5, 0x87, 0x6C, 0xF8, 0x11, 0x4C, - 0x90, 0x2A, 0xEF, 0xA3, 0x63, 0xF4, 0xC9, 0xB7, - 0x2E, 0x7D, 0x5C, 0x85, 0x2D, 0xCC, 0x1A, 0xF2, - 0xB8, 0x85, 0x2A, 0x9D, 0x0F, 0x99, 0x59, 0x38, - 0x86, 0x50, 0x84, 0xCE, 0x52, 0x13, 0xB3, 0x08, - 0xA9, 0xCB, 0x37, 0xF6, 0x81, 0x96, 0x0D, 0x84, - 0xEF, 0xE1, 0xDF, 0x51, 0x34, 0xA5, 0x91, 0x5A, - 0xE5, 0x87, 0x8B, 0x10, 0xDA, 0x0F, 0xD4, 0xD9, - 0xAC, 0x2A, 0xEF, 0x0C, 0x7E, 0x01, 0xC2, 0xE9, - 0xE7, 0xC0, 0x17, 0xE7, 0xBA, 0x74, 0x0C, 0xEE, - 0x1A, 0x89, 0x94, 0x59, 0xBB, 0x75, 0x03, 0x3E, - 0xEA, 0xF3, 0x19, 0x0D, 0x67, 0x79, 0xED, 0x9E, - 0xDD, 0x84, 0x6A, 0x74, 0xE3, 0x21, 0x52, 0x8C, - 0x03, 0x08, 0x4A, 0x5D, 0x30, 0x87, 0x48, 0x39, - 0x71, 0x8A, 0x53, 0x54, 0x9B, 0x2E, 0xC6, 0xB2, - 0xB7, 0x30, 0xAA, 0x93, 0x5C, 0xA6, 0xE1, 0xC4, - 0xFD, 0x8B, 0xE0, 0x35, 0x7D, 0x93, 0xF6, 0x21, - 0x74, 0xEE, 0xED, 0xF8, 0xDA, 0xB7, 0x75, 0x5B, - 0x46, 0x65, 0x7E, 0x59, 0xD7, 0xAA, 0x00, 0xB9, - 0xF2, 0xF8, 0x5E, 0x4C, 0x0F, 0x77, 0xFA, 0x11, - 0xA5, 0xD6, 0x9A, 0x23, 0xB1, 0xEF, 0x3A, 0x09, - 0xF2, 0x19, 0xD8, 0x3B, 0x1F, 0x39, 0x1F, 0x84, - 0x13, 0x18, 0xEE, 0xF3, 0x5A, 0x32, 0x63, 0x67, - 0xBF, 0xA2, 0xB1, 0x5F, 0xD7, 0x14, 0x03, 0x20, - 0x92, 0xB9, 0xD0, 0x2B, 0xF6, 0x13, 0xAF, 0xF7, - 0x69, 0x6F, 0xAD, 0xF1, 0xDE, 0x2C, 0x81, 0x70, - 0x77, 0xCB, 0x7C, 0x99, 0x67, 0x76, 0xD6, 0x9E, - 0xC2, 0x41, 0xA2, 0x42, 0x54, 0xDA, 0x2D, 0x13, - 0x98, 0x76, 0x91, 0xEA, 0xC7, 0xEB, 0xA8, 0xCD, - 0x8D, 0xCF, 0xB3, 0x94, 0x7B, 0x1D, 0x99, 0xED, - 0xF9, 0x62, 0xD2, 0x15, 0xB3, 0x18, 0xBB, 0x5F, - 0x9A, 0xA0, 0x4D, 0x1C, 0x82, 0x62, 0x6A, 0x41, - 0x73, 0xD0, 0x2D, 0x41, 0x0C, 0x58, 0x6B, 0xCA, - 0x4E, 0x51, 0xCA, 0x4F, 0x3E, 0x15, 0x1B, 0x54, - 0xF1, 0x7A, 0x6B, 0xC9, 0x67, 0x76, 0x09, 0xBB, - 0xAF, 0x6C, 0x30, 0x38, 0xA6, 0x7C, 0xAD, 0xA6, - 0x6B, 0x4F, 0xDF, 0xB5, 0x10, 0x29, 0xE0, 0x78, - 0x07, 0xD7, 0x05, 0x96, 0x9D, 0x96, 0xC9, 0xAB, - 0xFB, 0x71, 0x62, 0xE4, 0x58, 0x10, 0xA1, 0xDC, - 0x4B, 0x56, 0xDA, 0x14, 0x77, 0xED, 0x90, 0x0A, - 0x89, 0xCC, 0xAC, 0x29, 0x8E, 0x17, 0x88, 0x42, - 0x69, 0xC3, 0x9E, 0x8D, 0x7A, 0xB9, 0x66, 0xF3, - 0x3D, 0xDA, 0xDB, 0xE5, 0x6A, 0x38, 0x4C, 0xA2, - 0x0A, 0x7B, 0x18, 0x99, 0xEC, 0x18, 0xE2, 0xAE, - 0x54, 0x70, 0x00, 0xB9, 0x04, 0xE3, 0x4E, 0x46, - 0x80, 0x1D, 0x85, 0x74, 0xDB, 0x00, 0x84, 0x17, - 0xBC, 0xFD, 0xD1, 0xA7, 0x4D, 0xC0, 0x18, 0xE5, - 0x07, 0xB7, 0x6B, 0x0F, 0xA0, 0x86, 0x26, 0x23, - 0x5B, 0x1C, 0xE2, 0x4B, 0xCF, 0xC3, 0x20, 0xFA, - 0xE3, 0x55, 0x1C, 0x1C, 0x92, 0x9B, 0x94, 0xC7, - 0xC4, 0x96, 0x53, 0x41, 0x82, 0x9D, 0x8A, 0x13, - 0x47, 0xD6, 0xA7, 0x38, 0x58, 0x03, 0xB0, 0x8B, - 0xCD, 0xA8, 0x4A, 0x27, 0xEA, 0x5E, 0x49, 0xCA, - 0x1E, 0x60, 0x06, 0xEA, 0x23, 0x2A, 0x53, 0xEE, - 0x41, 0x7E, 0xC8, 0x81, 0xD3, 0x32, 0x8A, 0x15, - 0x63, 0x82, 0xA6, 0xB2, 0x93, 0x89, 0x4D, 0xDF, - 0x9B, 0x36, 0x9C, 0xDE, 0x6B, 0x2F, 0xF5, 0x9C, - 0xB6, 0xA5, 0x64, 0xE2, 0x1C, 0x92, 0x79, 0xEC, - 0xA0, 0x31, 0x1F, 0x5D, 0x80, 0xCE, 0x39, 0xB9, - 0x8B, 0xF9, 0x0D, 0xB3, 0x27, 0xF7, 0x4D, 0x3F, - 0x76, 0x2D, 0x11, 0x7D, 0xF5, 0xF9, 0x13, 0x20, - 0x84, 0xFF, 0xB5, 0x55, 0xA5, 0xD1, 0x47, 0x22, - 0x1A, 0xF8, 0x63, 0xAB, 0xF7, 0x87, 0x15, 0xB7, - 0x21, 0x94, 0x52, 0x9A, 0x0E, 0x33, 0x4D, 0x4A, - 0x19, 0x1D, 0x42, 0xA9, 0x9B, 0xEA, 0x52, 0xAD, - 0xA2, 0xC7, 0xCC, 0x4A, 0x97, 0x74, 0xD5, 0xCB, - 0x28, 0xD4, 0xED, 0x82, 0xB6, 0x1F, 0x94, 0xE8, - 0x9F, 0x60, 0xF0, 0xC8, 0xEA, 0x52, 0xDC, 0x07, - 0x9D, 0x46, 0x58, 0xBF, 0x8C, 0x85, 0x6D, 0x61, - 0x52, 0xD9, 0x22, 0x51, 0x94, 0x8B, 0x3B, 0xA0, - 0x14, 0xD8, 0xBA, 0xF3, 0xDC, 0xD3, 0x6B, 0xC7, - 0x1F, 0x8E, 0x5B, 0x2C, 0xE6, 0xF5, 0x35, 0xB7, - 0xB9, 0xAE, 0x13, 0xDA, 0x4A, 0x1E, 0xAF, 0xFC, - 0x25, 0x3B, 0xE4, 0x3A, 0x9F, 0x60, 0x8E, 0xAC, - 0xE7, 0x33, 0xCF, 0xCE, 0x52, 0xEA, 0x5C, 0xDA, - 0x83, 0x59, 0xDB, 0x53, 0xFF, 0x3A, 0xF2, 0xCE, - 0xFE, 0x87, 0x79, 0xBC, 0xC5, 0x3C, 0x24, 0xA4, - 0xB1, 0x8D, 0x5E, 0x0D, 0x78, 0x1B, 0xEC, 0xF7, - 0x5B, 0x54, 0x77, 0x47, 0x3A, 0x20, 0x24, 0xAD, - 0x56, 0xC5, 0x4A, 0x7F, 0x99, 0x0E, 0xF6, 0xB1, - 0xDF, 0xAC, 0x50, 0x10, 0x88, 0x50, 0x9D, 0x3A, - 0x37, 0xF1, 0xC8, 0xD5, 0xC2, 0x64, 0x87, 0xE4, - 0x20, 0xB7, 0xF4, 0x35, 0x8E, 0x92, 0x69, 0x76, - 0x1F, 0xF1, 0xFA, 0x3A, 0xFC, 0xBE, 0xCA, 0xEB, - 0x68, 0xF5, 0xDD, 0xDE, 0x3A, 0xA8, 0xFD, 0x07, - 0x8C, 0xC4, 0x22, 0x4C, 0xEA, 0x67, 0x13, 0x2D, - 0x7E, 0xBF, 0x5D, 0x23, 0x2E, 0x43, 0xBA, 0xDD, - 0x21, 0x8C, 0x0B, 0x4D, 0xBE, 0x1E, 0x16, 0x52, - 0x98, 0x66, 0xB9, 0xAB, 0x93, 0x58, 0x85, 0xAC, - 0xB4, 0x15, 0xFB, 0xB1, 0xEE, 0xE6, 0x94, 0x08, - 0xA5, 0x21, 0xB4, 0x62, 0xEC, 0x59, 0xCD, 0x0D, - 0x3C, 0x54, 0x96, 0xD9, 0x85, 0xAE, 0xB0, 0xCE, - 0x37, 0x4F, 0x67, 0x72, 0xA4, 0xE6, 0x39, 0x3A, - 0x4E, 0xF0, 0x07, 0x43, 0x80, 0x90, 0xA8, 0xA9, - 0xE5, 0x2D, 0x2F, 0x55, 0x66, 0x6D, 0x70, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x08, 0x0E, 0x12, 0x19, 0x20 - }; -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - static const byte pk_87_draft[] = { - 0x2D, 0x1E, 0x6B, 0xED, 0x84, 0x52, 0xEB, 0xF1, - 0x26, 0xED, 0xE7, 0x0C, 0xA0, 0xA2, 0xB5, 0x0D, - 0x03, 0x34, 0x2D, 0x5B, 0x13, 0xB2, 0xAE, 0x21, - 0x0F, 0x45, 0x62, 0xA3, 0xBF, 0x67, 0x0C, 0xB1, - 0x5C, 0xE9, 0x25, 0xFD, 0x22, 0xF2, 0x62, 0x42, - 0xBA, 0xE3, 0x10, 0xB3, 0xAA, 0x41, 0x3B, 0x6E, - 0x78, 0xD4, 0x42, 0xD9, 0x35, 0xD1, 0x72, 0x8A, - 0x32, 0x48, 0xCC, 0x20, 0x5C, 0xCD, 0x8D, 0x3F, - 0xD8, 0x34, 0x95, 0x55, 0x20, 0xCD, 0xFB, 0x2C, - 0x73, 0xE9, 0x0E, 0x60, 0x8B, 0x2C, 0x3F, 0xA8, - 0xB7, 0xD1, 0x79, 0xFD, 0xDC, 0xC8, 0x81, 0x11, - 0xC9, 0xE8, 0x41, 0x71, 0xE9, 0x70, 0x9B, 0x53, - 0x59, 0x33, 0xE4, 0x92, 0xB6, 0x81, 0x9C, 0x6A, - 0x92, 0xED, 0xA2, 0x5A, 0xC4, 0x07, 0x77, 0x1A, - 0x8F, 0xED, 0xB4, 0xE7, 0x11, 0xFB, 0x89, 0xEB, - 0x7B, 0xDF, 0xCC, 0xEA, 0xC5, 0x3B, 0x4E, 0xF4, - 0x6B, 0x6F, 0xBE, 0xE1, 0x32, 0xA9, 0xD7, 0xAD, - 0xB4, 0x36, 0xE7, 0x4A, 0x6D, 0x67, 0x11, 0x83, - 0xAF, 0x31, 0x1A, 0x7A, 0x31, 0x42, 0x9B, 0x01, - 0x21, 0x17, 0x52, 0x75, 0x85, 0xF7, 0x92, 0x0F, - 0x34, 0x8A, 0x69, 0x11, 0x88, 0x5A, 0x02, 0x08, - 0xB6, 0x6D, 0xE3, 0x07, 0x93, 0xB1, 0x3F, 0xE1, - 0xD5, 0x7B, 0xD9, 0x51, 0xF7, 0xAA, 0xC0, 0x34, - 0x9A, 0x78, 0x5D, 0x26, 0xDB, 0xF1, 0xF0, 0xA9, - 0x1E, 0x5C, 0x9F, 0x4F, 0xA7, 0x43, 0x5C, 0x44, - 0xA9, 0x43, 0xF1, 0x38, 0x11, 0x45, 0xED, 0xEB, - 0x1C, 0x8A, 0x05, 0xEE, 0xFF, 0xAB, 0x20, 0x2C, - 0xF6, 0x2C, 0xEE, 0x77, 0x42, 0x36, 0x3E, 0xE6, - 0x9D, 0x8E, 0x45, 0x0F, 0xF6, 0x7C, 0x39, 0x62, - 0xD6, 0xFF, 0x97, 0xBC, 0x3D, 0x02, 0xD6, 0xDF, - 0x4A, 0x35, 0xDA, 0x3F, 0x89, 0xA4, 0x88, 0x33, - 0xCD, 0xF2, 0x90, 0xF0, 0xE9, 0x37, 0x2F, 0x65, - 0xA5, 0x88, 0x65, 0xFD, 0x40, 0x44, 0xAD, 0x09, - 0x09, 0x92, 0xAA, 0x15, 0x9E, 0xEE, 0xF7, 0x2B, - 0x0D, 0xA7, 0xCB, 0x3A, 0x5E, 0x0A, 0xED, 0xD6, - 0x7D, 0x82, 0x8B, 0xBA, 0xCF, 0xE5, 0x9E, 0xE4, - 0x62, 0xAB, 0x69, 0x6B, 0xBA, 0xD0, 0xE5, 0xA9, - 0xBB, 0x1F, 0x5A, 0x51, 0xE0, 0xFA, 0x5D, 0xD4, - 0x4D, 0x8E, 0xC0, 0xDC, 0x43, 0x06, 0xDF, 0x23, - 0x67, 0xB2, 0x4A, 0xA2, 0xFB, 0x75, 0x2F, 0x82, - 0xD8, 0x44, 0xE4, 0xC0, 0xCE, 0x15, 0x9E, 0x3F, - 0xD6, 0xB4, 0x70, 0x5F, 0x3B, 0xD0, 0x56, 0x3E, - 0x0A, 0x7A, 0x4B, 0x94, 0xBF, 0xBA, 0x01, 0x2B, - 0x9C, 0x8B, 0x91, 0x35, 0xF2, 0xDB, 0x4C, 0x8C, - 0x8D, 0xD6, 0xEE, 0xC8, 0x65, 0x8D, 0xF3, 0x05, - 0x59, 0xBE, 0x3A, 0x17, 0xA7, 0x72, 0x10, 0x56, - 0x14, 0xEF, 0xB8, 0xC1, 0xBE, 0x18, 0x11, 0x0B, - 0xE6, 0x70, 0xF8, 0x39, 0xA5, 0x72, 0x7D, 0xF9, - 0x47, 0xFB, 0xAC, 0xFD, 0x1F, 0xC3, 0x71, 0x33, - 0x58, 0x44, 0x15, 0xD3, 0x7C, 0x93, 0x2E, 0x70, - 0x92, 0xFA, 0xBB, 0xF2, 0xD0, 0x9D, 0x25, 0xC4, - 0xCF, 0x4A, 0xB8, 0xEC, 0xBE, 0x5D, 0x8B, 0x7F, - 0xA4, 0x7C, 0xAB, 0xAD, 0xE7, 0x1E, 0x93, 0x83, - 0x92, 0x86, 0x1E, 0x8D, 0x15, 0xA4, 0x1C, 0x5B, - 0x42, 0x25, 0xDA, 0x3D, 0x16, 0xD3, 0x93, 0xF2, - 0x85, 0x50, 0x86, 0x0A, 0x86, 0x35, 0x6B, 0x14, - 0xAB, 0x5F, 0x22, 0xD0, 0xCF, 0x03, 0x7C, 0xEB, - 0xB4, 0x0E, 0xAC, 0x87, 0xA2, 0x41, 0x42, 0xA0, - 0x21, 0x93, 0x00, 0xB6, 0x47, 0x6F, 0x96, 0xD0, - 0x41, 0xD1, 0xC3, 0x0E, 0x3C, 0x52, 0xD2, 0x45, - 0xAB, 0x6A, 0xE7, 0xA1, 0xE5, 0xFD, 0x73, 0xC5, - 0x82, 0x9D, 0x60, 0x62, 0x8B, 0x6D, 0x87, 0xFC, - 0x88, 0x9C, 0x3E, 0xEF, 0xAE, 0xAA, 0xB6, 0x1C, - 0x18, 0xEE, 0xD7, 0x51, 0x1A, 0x96, 0xC4, 0x93, - 0x25, 0x05, 0xD3, 0x83, 0x3D, 0xD8, 0x33, 0x16, - 0x14, 0x44, 0x88, 0xE2, 0xAF, 0xC4, 0xEC, 0x59, - 0x18, 0x12, 0xB9, 0x99, 0xC1, 0xC9, 0x5F, 0x31, - 0x79, 0x00, 0x03, 0xF6, 0xC9, 0x55, 0x14, 0xAA, - 0x29, 0x08, 0x78, 0x24, 0xAF, 0x1D, 0x99, 0x12, - 0x36, 0xD9, 0x4A, 0xD9, 0x50, 0xEF, 0x66, 0xFC, - 0x7F, 0xF4, 0xBC, 0x3B, 0xA0, 0xF6, 0xFD, 0xF2, - 0x62, 0xCA, 0xA5, 0x9D, 0x2B, 0x55, 0xB8, 0x33, - 0xBC, 0xA6, 0x7A, 0xA5, 0x1E, 0xE1, 0x14, 0x5F, - 0x94, 0xE2, 0xDC, 0xF0, 0x5B, 0xBD, 0x43, 0x07, - 0xD8, 0xB1, 0xE0, 0x81, 0x3F, 0x84, 0x54, 0x90, - 0xBF, 0x23, 0x59, 0x92, 0x3C, 0xA5, 0x98, 0xAB, - 0x7D, 0x99, 0xD2, 0xF0, 0xED, 0x8E, 0x0B, 0xC9, - 0x9F, 0xAF, 0xB0, 0x13, 0xED, 0xC7, 0xDD, 0xB8, - 0x61, 0x72, 0x07, 0x3D, 0xCC, 0x35, 0x73, 0xA0, - 0xCF, 0x0C, 0xD9, 0x7E, 0x93, 0xDC, 0x63, 0xB8, - 0x82, 0xEC, 0xF4, 0x30, 0xCE, 0x43, 0x92, 0xEA, - 0x5E, 0xD8, 0xC8, 0xA1, 0xEC, 0x79, 0xDC, 0xAE, - 0x64, 0xD4, 0x33, 0xEB, 0x53, 0x8C, 0xFC, 0x49, - 0x79, 0xBF, 0x7A, 0x28, 0x65, 0x1E, 0x8C, 0xD5, - 0x21, 0xB0, 0x8E, 0xCA, 0xAD, 0xF8, 0x96, 0x9A, - 0x98, 0x10, 0x00, 0x35, 0x6D, 0x58, 0x9A, 0xEF, - 0x84, 0x84, 0x86, 0x72, 0xBA, 0xCD, 0x38, 0x66, - 0x96, 0x9B, 0xC2, 0x83, 0xB0, 0x65, 0xC1, 0xAB, - 0xCF, 0x63, 0x8C, 0x2D, 0xC3, 0x42, 0xB2, 0x7D, - 0xF6, 0xB8, 0xF0, 0x3D, 0x26, 0x21, 0x8F, 0xAE, - 0x4E, 0x96, 0xF2, 0x55, 0x66, 0xBC, 0x6F, 0xED, - 0xE7, 0x19, 0xD3, 0x8D, 0xC0, 0xCD, 0x55, 0x20, - 0x5F, 0x10, 0xCA, 0xDA, 0x09, 0xED, 0x91, 0x4A, - 0x43, 0x33, 0xD3, 0x82, 0x11, 0x5C, 0x2F, 0x5D, - 0xEC, 0xCD, 0x54, 0xF9, 0x6C, 0xE4, 0xE5, 0xF2, - 0x68, 0xBC, 0xE9, 0x27, 0xB2, 0x1D, 0xCA, 0xB5, - 0xCD, 0x04, 0x01, 0x1E, 0x92, 0xF5, 0xF6, 0x01, - 0x86, 0x2B, 0x20, 0x20, 0x9B, 0xB0, 0xF9, 0x56, - 0xD9, 0x33, 0xD5, 0x0A, 0xEC, 0x1B, 0xF4, 0xCE, - 0xD2, 0xB2, 0xC2, 0xD4, 0x3F, 0x9A, 0x25, 0x76, - 0x8E, 0x29, 0x87, 0x52, 0x64, 0x86, 0x4A, 0xA5, - 0x7B, 0x5A, 0x91, 0x72, 0x6E, 0xBE, 0x6D, 0x73, - 0x0A, 0x8D, 0x89, 0x53, 0x82, 0x33, 0x70, 0x44, - 0x20, 0xBE, 0xE0, 0xB0, 0x1B, 0x76, 0x30, 0x43, - 0xA5, 0x5B, 0x8F, 0xAB, 0x7E, 0xB8, 0x61, 0x5F, - 0x43, 0x70, 0x1B, 0x1A, 0x71, 0x61, 0x56, 0xF9, - 0x13, 0x31, 0x2A, 0x64, 0x33, 0x14, 0x00, 0x98, - 0x72, 0xEC, 0x32, 0x88, 0x09, 0xFB, 0x64, 0x46, - 0x3D, 0x56, 0x02, 0xD9, 0x76, 0xD3, 0xAA, 0x90, - 0x0F, 0xBD, 0xF0, 0xF9, 0x96, 0x43, 0x7B, 0x62, - 0x19, 0x26, 0x22, 0x6A, 0x93, 0x91, 0xEC, 0x07, - 0x34, 0xF5, 0x22, 0x32, 0xB3, 0x65, 0x66, 0xE0, - 0x6B, 0x11, 0x7F, 0x97, 0x9F, 0x1A, 0x89, 0x46, - 0xCE, 0x8F, 0xBD, 0xFD, 0x2F, 0xCC, 0x3D, 0xBF, - 0xF2, 0x83, 0xA4, 0x30, 0xE1, 0x02, 0x72, 0xF8, - 0x74, 0xE6, 0x21, 0x96, 0x77, 0xE1, 0x57, 0x8A, - 0xF7, 0x9E, 0xB3, 0x31, 0xAF, 0xD8, 0xC5, 0xD7, - 0x20, 0xDC, 0xFD, 0xCF, 0x79, 0x06, 0x0F, 0x1F, - 0xE5, 0x84, 0x3D, 0x0B, 0x9C, 0xB3, 0xC7, 0xAB, - 0xB8, 0xF1, 0xC0, 0xD0, 0xB5, 0xC7, 0x01, 0xE2, - 0x0E, 0x3B, 0xAF, 0x7E, 0xAC, 0x44, 0x5A, 0x75, - 0x50, 0x0A, 0x76, 0x1C, 0x13, 0xDB, 0x25, 0xD4, - 0x0D, 0x19, 0x75, 0x4C, 0x02, 0xD9, 0xF3, 0xDF, - 0x6D, 0xBB, 0xCF, 0x47, 0xA6, 0xAE, 0xF6, 0xD1, - 0xFB, 0xF4, 0xB4, 0x55, 0xD3, 0xA5, 0x87, 0xA1, - 0x55, 0xFB, 0xBF, 0xCD, 0xF6, 0xA1, 0x64, 0x57, - 0x12, 0x75, 0x9A, 0x11, 0xA3, 0xCE, 0x42, 0x70, - 0x84, 0x54, 0x93, 0x12, 0xE1, 0x3A, 0x0F, 0xFA, - 0xCA, 0xF2, 0x25, 0x91, 0xF1, 0x4D, 0x8F, 0x84, - 0xB1, 0xB5, 0x35, 0xAC, 0xE9, 0x81, 0x77, 0x34, - 0x4D, 0x6F, 0x5D, 0x14, 0x9D, 0xB9, 0xE1, 0xF0, - 0x3F, 0x3C, 0xE7, 0xAD, 0x48, 0xE6, 0x8C, 0x51, - 0x86, 0xF4, 0x4A, 0xB4, 0xD0, 0x98, 0xEC, 0x3A, - 0x4E, 0xAB, 0x58, 0x2F, 0x08, 0x9E, 0x5A, 0x9D, - 0x45, 0x30, 0xB0, 0x85, 0xDF, 0x4A, 0xE7, 0x92, - 0xC6, 0xC8, 0x18, 0x93, 0x08, 0xCE, 0x9A, 0x8C, - 0xE2, 0x91, 0x8D, 0x91, 0x57, 0x7B, 0x37, 0xC8, - 0x80, 0xA2, 0x31, 0x10, 0x0D, 0x4E, 0xEF, 0x51, - 0x07, 0x94, 0x8E, 0xF8, 0x3C, 0x3C, 0x2E, 0xD5, - 0x03, 0x26, 0xB8, 0x72, 0x7F, 0xB9, 0xBC, 0xD7, - 0x95, 0xC4, 0x31, 0x08, 0xEC, 0x6F, 0xEE, 0x11, - 0xAF, 0xC0, 0xA2, 0xEC, 0xD7, 0xC8, 0x0B, 0xBE, - 0x15, 0xAE, 0xC9, 0x17, 0xBE, 0x37, 0xE2, 0x40, - 0x83, 0x65, 0xDE, 0xB3, 0x4E, 0xB4, 0x15, 0xB3, - 0x5C, 0x14, 0xF6, 0x5F, 0xA9, 0x1F, 0x70, 0xB5, - 0x23, 0x93, 0x78, 0xB9, 0x47, 0xF9, 0x1D, 0x2B, - 0x1E, 0x8D, 0xB1, 0x25, 0x7E, 0xE5, 0x85, 0x3C, - 0x16, 0x9F, 0xD0, 0xC2, 0x67, 0x8B, 0x0D, 0xD2, - 0x72, 0x4E, 0x74, 0x30, 0xE1, 0xAF, 0xB8, 0x66, - 0xCB, 0x53, 0xDF, 0xC4, 0xFB, 0xA5, 0x6D, 0x03, - 0xF2, 0xAE, 0xEE, 0x90, 0xFE, 0xD7, 0x30, 0xAF, - 0x33, 0x98, 0x09, 0xEB, 0x75, 0xC7, 0x3E, 0xC8, - 0x2F, 0xE7, 0x22, 0x5F, 0x2F, 0x0A, 0xBD, 0xA4, - 0x22, 0x88, 0x28, 0x19, 0x35, 0x83, 0x12, 0x86, - 0xEE, 0x72, 0xB4, 0x26, 0x89, 0x2F, 0xC7, 0x11, - 0x6E, 0xDD, 0x14, 0x98, 0x22, 0xE7, 0x73, 0x3E, - 0xFA, 0x46, 0x75, 0xF9, 0x40, 0xC1, 0x84, 0x22, - 0xBC, 0x75, 0x36, 0xC7, 0x82, 0xD3, 0xAE, 0x6E, - 0x0D, 0xBF, 0x6F, 0xC3, 0x4B, 0x67, 0x49, 0x19, - 0xF3, 0x4B, 0x12, 0xF2, 0x83, 0xFD, 0x39, 0x56, - 0x44, 0x05, 0x3A, 0x24, 0x6A, 0x35, 0x69, 0x12, - 0xCF, 0xE4, 0x93, 0xFE, 0x26, 0xCC, 0xD6, 0x01, - 0xA0, 0x4A, 0x84, 0xA8, 0x1D, 0x85, 0xE6, 0x83, - 0x0F, 0x3C, 0xE6, 0x6D, 0xD2, 0xCB, 0xB1, 0x14, - 0x8C, 0xEC, 0x10, 0xB3, 0x63, 0x4B, 0x9C, 0xF5, - 0x11, 0xE0, 0xF9, 0x86, 0x6F, 0xA7, 0xC0, 0x3B, - 0x9D, 0x25, 0xD7, 0x54, 0xCA, 0x40, 0x4D, 0x26, - 0xBA, 0x71, 0x8E, 0x25, 0xF5, 0xA7, 0xE3, 0x9B, - 0x25, 0x20, 0x7F, 0x29, 0x05, 0xB6, 0x27, 0x14, - 0x17, 0x67, 0x26, 0x10, 0xAD, 0xA3, 0x06, 0x03, - 0xFE, 0x82, 0x85, 0x5D, 0x01, 0x04, 0x4D, 0xE0, - 0x64, 0x38, 0x38, 0x5E, 0x83, 0x1E, 0x21, 0x9A, - 0x39, 0x02, 0xF8, 0xF9, 0x69, 0x85, 0x52, 0xE5, - 0xEC, 0x6A, 0xAC, 0x96, 0x86, 0xA7, 0x88, 0x69, - 0xB5, 0xB5, 0x7E, 0x03, 0x1D, 0xA9, 0x68, 0xCA, - 0x45, 0x0F, 0xF9, 0x14, 0xD6, 0x7B, 0xCF, 0x9C, - 0x03, 0x6F, 0xD1, 0xD9, 0x6F, 0x01, 0x3D, 0xF8, - 0xF3, 0x11, 0xF3, 0x29, 0x17, 0x90, 0xE8, 0x9B, - 0xED, 0x58, 0x9B, 0xF0, 0xBC, 0xC7, 0xBA, 0xF4, - 0x60, 0xC8, 0xAA, 0x30, 0xB4, 0x2F, 0x22, 0x8F, - 0xD3, 0xAC, 0x18, 0xC2, 0xB7, 0xC4, 0x7B, 0x31, - 0x9E, 0x0F, 0x7E, 0x9D, 0xBF, 0xD4, 0x63, 0xC2, - 0x8B, 0x1B, 0x58, 0x50, 0x33, 0x53, 0x6D, 0x79, - 0xBB, 0xF8, 0x0D, 0x91, 0x33, 0xD9, 0x07, 0xE7, - 0xB0, 0x81, 0xD4, 0xB4, 0x47, 0x61, 0x93, 0xF0, - 0xFB, 0x68, 0xBC, 0x1B, 0x41, 0xC2, 0xF5, 0x43, - 0x30, 0x7E, 0x76, 0xF9, 0xB1, 0xA3, 0xD6, 0xD4, - 0x26, 0xEA, 0x77, 0x75, 0x12, 0x7A, 0xC8, 0x30, - 0x9B, 0xCF, 0x45, 0xBE, 0x74, 0x7D, 0x8A, 0x8B, - 0xEC, 0xED, 0x11, 0xE6, 0xA1, 0xD1, 0xB8, 0xF1, - 0x90, 0xAD, 0x6D, 0x6A, 0xC6, 0x54, 0xE9, 0xDB, - 0xAD, 0x4C, 0x97, 0x39, 0xC8, 0xD8, 0x44, 0xA9, - 0x1A, 0x37, 0x16, 0x7E, 0x68, 0x45, 0x0C, 0xBB, - 0x10, 0xF4, 0xAE, 0x8E, 0x2B, 0x69, 0xFA, 0x95, - 0x3E, 0xA5, 0xC9, 0x91, 0xD3, 0xF1, 0xA3, 0x89, - 0x3F, 0x90, 0x86, 0x93, 0x1B, 0xF1, 0xA0, 0x89, - 0xC7, 0xF2, 0x23, 0x57, 0xD4, 0x8E, 0x2F, 0xD5, - 0x71, 0xCD, 0x36, 0xF1, 0x90, 0xB3, 0x98, 0x3E, - 0x19, 0xEA, 0xC8, 0x0F, 0x12, 0x9D, 0xBF, 0x58, - 0xED, 0xDC, 0x6B, 0x9A, 0x79, 0x84, 0xFC, 0xF0, - 0x4C, 0xC3, 0xB4, 0x0D, 0xB8, 0x7A, 0x8D, 0xAD, - 0x75, 0x40, 0xD5, 0xD5, 0xDE, 0xC8, 0xCA, 0x39, - 0x3E, 0x45, 0xE4, 0xBC, 0xF4, 0x33, 0xEA, 0x64, - 0xE1, 0x5E, 0x94, 0x42, 0x91, 0xAB, 0xBC, 0x42, - 0x2A, 0xB3, 0xD0, 0x60, 0x23, 0xCE, 0x57, 0x8E, - 0xFF, 0xAD, 0xA2, 0x2B, 0x64, 0xD9, 0x94, 0xA0, - 0x80, 0x0F, 0x8E, 0x50, 0x17, 0x08, 0x1D, 0x16, - 0xCF, 0x51, 0xD0, 0xB9, 0x28, 0xB6, 0x59, 0xEF, - 0x78, 0xCC, 0xC9, 0x96, 0xF9, 0xCA, 0x87, 0x7A, - 0xEE, 0xD9, 0x15, 0x5E, 0xDF, 0x5D, 0xBC, 0xC2, - 0x58, 0xE6, 0x04, 0xEE, 0x17, 0xDC, 0xB3, 0xF9, - 0x90, 0xF9, 0x88, 0x32, 0x9E, 0xA1, 0xDB, 0x1C, - 0x38, 0x56, 0x53, 0x90, 0x30, 0x69, 0x2E, 0x52, - 0x00, 0x2C, 0xF3, 0x0F, 0xD5, 0x80, 0x2E, 0x02, - 0x5B, 0x99, 0xBF, 0xCD, 0x11, 0x12, 0x64, 0x5B, - 0x56, 0xC6, 0x0A, 0xE6, 0x38, 0xE7, 0x4D, 0x21, - 0xE5, 0x98, 0x78, 0x9D, 0xE6, 0xCB, 0x60, 0xB4, - 0x2E, 0xE4, 0x98, 0x56, 0xCB, 0xAD, 0xE6, 0xDD, - 0x53, 0xF4, 0xC5, 0x67, 0xA2, 0x9F, 0xA0, 0x5C, - 0x7C, 0xFB, 0x24, 0x5A, 0xA7, 0x72, 0xD0, 0xE7, - 0x63, 0xF2, 0x5D, 0xBF, 0xD8, 0xE9, 0xF1, 0x6B, - 0xB4, 0x29, 0xA6, 0x28, 0xE6, 0x93, 0xD3, 0x87, - 0xB6, 0xD9, 0x3C, 0x39, 0x8D, 0xEA, 0x28, 0xC0, - 0x96, 0x3D, 0xF5, 0xC2, 0x3C, 0x29, 0xF2, 0x80, - 0x21, 0x8A, 0x03, 0x9D, 0x64, 0xF8, 0xBA, 0x81, - 0xC1, 0xDD, 0xA2, 0x88, 0x2A, 0x84, 0x2E, 0x3C, - 0xB5, 0x03, 0x95, 0xED, 0xAA, 0x6E, 0xE2, 0x6F, - 0x5E, 0x99, 0x3C, 0x63, 0xEE, 0xB8, 0x4F, 0x66, - 0x32, 0x77, 0x42, 0x23, 0x36, 0x29, 0x89, 0xB0, - 0xED, 0x5F, 0xF2, 0x5A, 0x65, 0x66, 0x3F, 0xD2, - 0x8B, 0x48, 0x68, 0x65, 0xDC, 0xE0, 0xB0, 0xC2, - 0x72, 0x73, 0xF1, 0xA4, 0xC6, 0x56, 0x2C, 0x5D, - 0xD8, 0xC6, 0x5C, 0x41, 0xCE, 0x30, 0x89, 0x59, - 0xA9, 0xD6, 0x45, 0x96, 0xD0, 0x8E, 0x7B, 0x25, - 0xE0, 0x13, 0xFB, 0xFE, 0x7C, 0xEA, 0xF3, 0x67, - 0x0D, 0xB2, 0x9A, 0x21, 0x3C, 0xCE, 0x99, 0x75, - 0xA9, 0x13, 0xCE, 0xF4, 0x23, 0x6E, 0x64, 0x00, - 0x30, 0x87, 0x70, 0x9C, 0xAD, 0x61, 0x81, 0x71, - 0x0E, 0x95, 0x19, 0x26, 0xCA, 0x55, 0x29, 0x71, - 0x99, 0xA6, 0x08, 0xAE, 0x54, 0x58, 0x75, 0xCD, - 0xC3, 0x8F, 0xE3, 0x83, 0xC1, 0x45, 0x62, 0xB4, - 0x8D, 0xCA, 0x66, 0x02, 0xEA, 0x34, 0x05, 0x5D, - 0x98, 0x3F, 0x38, 0xE6, 0x1C, 0xCE, 0x53, 0x1A, - 0xD9, 0x3F, 0x58, 0xEC, 0x16, 0x28, 0x45, 0xF5, - 0x38, 0xCE, 0x48, 0x43, 0x87, 0x1D, 0x3C, 0x4A, - 0xDF, 0x05, 0xF3, 0x5E, 0x29, 0x7E, 0xA6, 0x2E, - 0xFC, 0xDD, 0x5E, 0xF9, 0x40, 0x1B, 0xA0, 0x42, - 0xA2, 0x35, 0x15, 0x0A, 0x09, 0xD9, 0x47, 0x4A, - 0x3F, 0xB0, 0x3A, 0xAA, 0x19, 0xE7, 0xE3, 0x7A, - 0x22, 0x8D, 0x5F, 0x5B, 0x07, 0x41, 0x4C, 0x3D, - 0xA2, 0xAD, 0x2E, 0x5C, 0x75, 0xEC, 0xF0, 0x4C, - 0x11, 0x2B, 0x90, 0x76, 0x9E, 0x19, 0x96, 0x0E, - 0x97, 0x5E, 0x8D, 0x19, 0x17, 0xB3, 0xBF, 0xDA, - 0x84, 0xFD, 0xC6, 0xD2, 0x32, 0x6F, 0xB8, 0xA3, - 0xB0, 0x0F, 0x95, 0xD9, 0xC5, 0x26, 0x50, 0x11, - 0x15, 0x72, 0xBE, 0xC2, 0x1B, 0x12, 0x12, 0x7C, - 0xA5, 0x70, 0xD8, 0xA9, 0x8A, 0xB9, 0x77, 0xEB, - 0xD8, 0xD7, 0x9A, 0x59, 0x37, 0x5E, 0xE1, 0x4F, - 0x64, 0xB5, 0xB0, 0x4F, 0xD9, 0x69, 0xFE, 0xB0, - 0x3D, 0x0A, 0xF7, 0x34, 0x89, 0xE3, 0xBA, 0xEF, - 0xE7, 0xC7, 0xBC, 0x8D, 0xC7, 0xE8, 0x54, 0x83, - 0xEE, 0x62, 0xF0, 0x23, 0x98, 0x58, 0x0F, 0x83, - 0xB9, 0x6D, 0xD8, 0x44, 0x77, 0xB9, 0xC4, 0x8F, - 0x0B, 0xB3, 0x9F, 0x54, 0x06, 0xA3, 0x70, 0x36, - 0xD6, 0xF3, 0x6E, 0x2B, 0x1B, 0x6B, 0x53, 0xFE, - 0x6F, 0xF6, 0x1C, 0x32, 0x7B, 0x29, 0xD4, 0xE0, - 0x5D, 0xD2, 0xB8, 0x11, 0x74, 0xC6, 0x0B, 0x59, - 0xC7, 0x9C, 0xB1, 0x97, 0x6B, 0xC0, 0x6E, 0x7A, - 0xC3, 0x4D, 0xF3, 0xE3, 0x8F, 0x7D, 0x2C, 0x1C, - 0x0E, 0x31, 0x51, 0xB7, 0x14, 0x7A, 0xB8, 0x31, - 0x77, 0x47, 0x70, 0x14, 0x3B, 0x92, 0x7B, 0x5F, - 0xEC, 0x5D, 0xF7, 0x76, 0xC1, 0xD7, 0x2D, 0xB6, - 0xBC, 0x99, 0x81, 0xD6, 0x58, 0x67, 0x71, 0x3C, - 0xF2, 0x97, 0xC8, 0xB0, 0xF1, 0xE9, 0x8D, 0x0E, - 0x16, 0xF0, 0xCC, 0x22, 0x7A, 0x39, 0xE4, 0x7E, - 0x50, 0xBA, 0x01, 0x16, 0x15, 0x6D, 0x5B, 0x54, - 0x67, 0x53, 0x66, 0x04, 0xBE, 0x05, 0xCC, 0x2E, - 0xF4, 0x0A, 0xBC, 0xE8, 0x52, 0xF1, 0x5D, 0xFA, - 0x2C, 0xAC, 0xF8, 0x6A, 0x78, 0x9E, 0x5B, 0x7B, - 0x0E, 0x5B, 0xB4, 0xB7, 0x77, 0xCD, 0x7C, 0xC9, - 0xF6, 0x54, 0x77, 0x9B, 0x10, 0x2F, 0x78, 0xB5, - 0xAA, 0x4B, 0x94, 0xC3, 0xB4, 0xFD, 0xE5, 0x5F, - 0xA7, 0xF7, 0xBF, 0x54, 0xAC, 0x22, 0x5E, 0x1F, - 0x26, 0x16, 0x5B, 0x65, 0xF1, 0x6D, 0x03, 0x21, - 0x66, 0x9F, 0xD9, 0xF6, 0xE4, 0x7F, 0xCA, 0x1D, - 0xD3, 0x47, 0x09, 0x6D, 0xF5, 0xDD, 0xA8, 0x64, - 0x66, 0xA5, 0x7C, 0x5B, 0x06, 0x8D, 0x9C, 0x67, - 0xB7, 0x32, 0x03, 0x66, 0xEA, 0x19, 0xC8, 0x99, - 0x3F, 0xF9, 0x0B, 0xD8, 0xFB, 0x06, 0x93, 0xFB, - 0xA3, 0x70, 0xE6, 0x6D, 0x2B, 0x20, 0x3B, 0x99, - 0x70, 0x11, 0xB0, 0xD1, 0x5B, 0x94, 0xE2, 0x8B, - 0xAA, 0x2E, 0xBF, 0x01, 0x77, 0x4F, 0x7A, 0xE7, - 0x8F, 0x84, 0xED, 0xBD, 0xAD, 0x9F, 0x65, 0xA4, - 0x50, 0x42, 0x7A, 0x47, 0x74, 0xC6, 0x0C, 0xC8, - 0x9A, 0x02, 0x0B, 0x37, 0xDA, 0x21, 0xC7, 0x91, - 0xDA, 0xC8, 0xF7, 0xA7, 0x45, 0x7E, 0x30, 0xD0, - 0x8B, 0x01, 0x37, 0x51, 0x60, 0x03, 0x9C, 0x30, - 0x1B, 0x60, 0x51, 0xA9, 0x65, 0xE8, 0xA7, 0xCC, - 0xA2, 0xAE, 0xF9, 0x3B, 0xD5, 0x2F, 0x82, 0xC0, - 0x20, 0xBE, 0xCE, 0x90, 0xA1, 0x29, 0x02, 0x4E, - 0xFE, 0xA4, 0xB2, 0xFA, 0x21, 0x27, 0x0F, 0x8E, - 0xB5, 0xED, 0x6A, 0xAA, 0xE5, 0x59, 0x29, 0xAA, - 0xC5, 0x99, 0xA5, 0x77, 0x97, 0x29, 0x57, 0x66, - 0x0C, 0xC4, 0x7A, 0xC4, 0xE3, 0xCE, 0x77, 0x2B, - 0xBF, 0x10, 0x05, 0x2D, 0xE7, 0xED, 0xB1, 0xB8, - 0xA4, 0x49, 0x41, 0xF8, 0x84, 0xC9, 0xF8, 0xBE, - 0x13, 0x17, 0x46, 0x69, 0x94, 0x56, 0x29, 0xF4, - 0x6D, 0xE2, 0x46, 0x74, 0x44, 0xF3, 0x10, 0x6A, - 0x73, 0xFA, 0x27, 0x9C, 0xF0, 0x2A, 0x80, 0x0A, - 0x04, 0x7E, 0x20, 0xBD, 0x4D, 0x82, 0x0B, 0x38, - 0x9C, 0x3B, 0xB6, 0xA8, 0x68, 0xA5, 0x38, 0x4C, - 0xF5, 0x72, 0x4C, 0x20, 0x4C, 0xEF, 0xB1, 0xA6, - 0xA1, 0xBE, 0xB9, 0x72, 0x3E, 0x36, 0xDD, 0xDD, - 0xD9, 0xC7, 0x07, 0xC8, 0xF6, 0x3E, 0x8B, 0xC2, - 0x66, 0x83, 0xCC, 0x8B, 0x43, 0xC7, 0xDF, 0xDA, - 0xA4, 0x08, 0xAC, 0x4D, 0xD2, 0xBA, 0x9A, 0xEC, - 0xBC, 0x3B, 0x6D, 0xDA, 0xED, 0xCE, 0x09, 0x4A, - 0xAB, 0x58, 0xFF, 0x73, 0x2B, 0x19, 0x66, 0x38, - 0xD8, 0xB8, 0xEF, 0xC4, 0x28, 0xBB, 0xA9, 0x61, - 0x57, 0x93, 0xC4, 0xDD, 0x9F, 0x00, 0xF9, 0x0D, - 0x62, 0xC6, 0x76, 0xD1, 0x27, 0xA0, 0xE1, 0x8C, - 0x14, 0xC6, 0xEE, 0x9C, 0x99, 0x05, 0x10, 0xB0, - 0x54, 0xAD, 0xB4, 0xB4, 0x17, 0x0A, 0xC7, 0x12, - 0x7F, 0x93, 0x17, 0x5C, 0x1E, 0xB2, 0x25, 0x12 - }; - static const byte msg_87_draft[] = { - 0x14, 0x42, 0x63, 0x34, 0x94, 0x09, 0x60, 0x77, - 0x3B, 0xFF, 0x65, 0xF0, 0x8D, 0x1D, 0xE4, 0x89, - 0xC4, 0xC3, 0xED, 0x36 - }; - static const byte sig_87_draft[] = { - 0x13, 0xE8, 0x99, 0xEE, 0xDC, 0xCC, 0x0F, 0xBA, - 0x62, 0x91, 0x44, 0xE4, 0xAC, 0x06, 0x79, 0x06, - 0xB5, 0x32, 0x6B, 0x8F, 0x9A, 0x6C, 0xCB, 0xAB, - 0xE1, 0x44, 0x4A, 0xDD, 0x46, 0x45, 0x16, 0x0D, - 0x22, 0x57, 0x82, 0x87, 0x10, 0xD1, 0xEE, 0x10, - 0x60, 0x21, 0xB5, 0x64, 0x1E, 0x78, 0x81, 0x55, - 0x75, 0xD4, 0xF0, 0x95, 0xD0, 0x15, 0xD8, 0x46, - 0x5C, 0x92, 0xD2, 0xDD, 0xF4, 0xAB, 0xDF, 0xBE, - 0xB1, 0x1E, 0xE5, 0xE0, 0x70, 0xE6, 0xDA, 0x52, - 0xE5, 0x48, 0xDC, 0x04, 0xFD, 0xEF, 0x54, 0x72, - 0xE7, 0xE5, 0xF1, 0x82, 0x10, 0xAA, 0xCB, 0xA0, - 0x4F, 0x4F, 0x18, 0xAE, 0x66, 0x86, 0xB9, 0xAF, - 0x96, 0x57, 0xE3, 0x8E, 0x3B, 0x9B, 0xDD, 0xB4, - 0xAA, 0x84, 0xE6, 0x7B, 0x4D, 0x81, 0x92, 0xD0, - 0x03, 0x87, 0x3D, 0xD3, 0xEE, 0xE7, 0x47, 0x00, - 0xFB, 0xD8, 0x1E, 0x38, 0x1C, 0x21, 0x98, 0xB7, - 0xCC, 0xC1, 0x37, 0xC1, 0x71, 0xB2, 0x2F, 0x93, - 0x53, 0x41, 0x9C, 0x48, 0xC1, 0x4B, 0x8D, 0x63, - 0x0F, 0x99, 0x63, 0x40, 0x27, 0x5F, 0x6E, 0x60, - 0x4B, 0x95, 0xC4, 0x35, 0x20, 0x8A, 0xED, 0x2B, - 0xCA, 0x1B, 0x41, 0x9F, 0x83, 0x63, 0xF0, 0x95, - 0x0E, 0x24, 0x0D, 0x6F, 0x9E, 0xAB, 0x11, 0x8E, - 0x4B, 0xD3, 0xDA, 0x0E, 0xC3, 0xA2, 0xBE, 0x26, - 0xA8, 0xA0, 0x98, 0x57, 0x71, 0x3C, 0x36, 0xDD, - 0x69, 0xC3, 0x4E, 0xDD, 0x2C, 0x61, 0x9E, 0x88, - 0x26, 0x70, 0x71, 0xCF, 0x9E, 0xE5, 0xA6, 0x0C, - 0xA3, 0x14, 0x2D, 0xF1, 0x63, 0xF0, 0x1D, 0x8D, - 0x79, 0x6A, 0xC8, 0x50, 0xCF, 0xF3, 0x66, 0x60, - 0x78, 0xB3, 0x18, 0xFB, 0x5B, 0xD1, 0x73, 0x60, - 0xC8, 0x76, 0xC9, 0xC9, 0x0D, 0x8A, 0x7F, 0x41, - 0x2C, 0x8A, 0x31, 0x61, 0x6B, 0xE7, 0xA3, 0x74, - 0x58, 0x71, 0x54, 0x84, 0x86, 0x71, 0x5C, 0x94, - 0x26, 0x3A, 0x17, 0xB3, 0x6C, 0xA4, 0x99, 0x25, - 0x45, 0x0C, 0x57, 0x8A, 0xD9, 0xD4, 0xB1, 0xC2, - 0x00, 0x43, 0xF4, 0x5E, 0x84, 0x31, 0x99, 0x4F, - 0xA6, 0xD2, 0x6A, 0x14, 0x1B, 0xAD, 0x9E, 0x49, - 0x6E, 0x00, 0x9E, 0x91, 0x46, 0x16, 0xCA, 0x57, - 0x0C, 0x09, 0xF6, 0x38, 0xD0, 0x62, 0xBE, 0xC6, - 0x87, 0x33, 0x3A, 0xC7, 0x28, 0x38, 0x34, 0x53, - 0x7E, 0xFB, 0x60, 0x42, 0xF3, 0x7D, 0x83, 0xF7, - 0x29, 0x5D, 0xEA, 0x30, 0xD5, 0x00, 0x90, 0xB6, - 0x38, 0x4C, 0x17, 0x29, 0xEF, 0x17, 0xA0, 0xD5, - 0x87, 0x50, 0xC0, 0x03, 0x75, 0x14, 0xE5, 0xE1, - 0x22, 0x78, 0x53, 0xBC, 0x5A, 0xA3, 0x1E, 0x95, - 0xBE, 0xEC, 0x37, 0xB1, 0x51, 0x82, 0x69, 0x26, - 0x2E, 0xA3, 0x5A, 0xDA, 0x4F, 0xDA, 0x77, 0x62, - 0x7E, 0xED, 0xDA, 0xAF, 0x57, 0x97, 0x1B, 0xA3, - 0x6D, 0x46, 0x7B, 0x19, 0xA9, 0x0B, 0x99, 0x1C, - 0xD2, 0x55, 0xDB, 0x79, 0xB0, 0x15, 0x48, 0x86, - 0x52, 0x30, 0x31, 0xD6, 0xC5, 0xB1, 0xAE, 0x8F, - 0xCF, 0x9A, 0x43, 0x10, 0xBB, 0xC8, 0x19, 0x74, - 0x84, 0xB2, 0x92, 0x3B, 0xFE, 0x0B, 0x12, 0x15, - 0xA1, 0xC4, 0xD8, 0xC6, 0x83, 0x90, 0x89, 0x8A, - 0xD5, 0x3E, 0x33, 0x69, 0xB7, 0x05, 0x3F, 0xB1, - 0x8B, 0x0D, 0x87, 0x40, 0x70, 0x90, 0x2A, 0x5D, - 0x3B, 0x3D, 0x91, 0xD8, 0x1D, 0x4D, 0xF1, 0x08, - 0x7E, 0xF7, 0xDC, 0x05, 0x84, 0xEB, 0xDC, 0x63, - 0xD7, 0xBA, 0x3C, 0x0D, 0x31, 0xF8, 0x6D, 0xA6, - 0xC0, 0xFD, 0x08, 0x11, 0x5C, 0x53, 0xF6, 0xAE, - 0xFE, 0xC0, 0x82, 0x9A, 0x68, 0xD2, 0xA3, 0x44, - 0x2E, 0xEE, 0x47, 0x36, 0x70, 0x2D, 0x66, 0x81, - 0x0D, 0x62, 0x30, 0x8A, 0x8C, 0xC8, 0x2A, 0xA6, - 0x21, 0x82, 0xF5, 0x98, 0xF4, 0x4E, 0x25, 0x37, - 0x11, 0xB5, 0xD6, 0x07, 0x88, 0xBD, 0x0D, 0x69, - 0x0E, 0xF9, 0x8F, 0x9A, 0xD5, 0x93, 0xE0, 0x3C, - 0xEF, 0x38, 0xB9, 0xC9, 0x77, 0x98, 0x3F, 0x69, - 0x11, 0xBA, 0x1A, 0xB9, 0xF7, 0x35, 0xE9, 0x28, - 0xCD, 0xA3, 0x8C, 0x03, 0xE6, 0xAD, 0x83, 0x62, - 0xF4, 0x60, 0xAE, 0x4C, 0xD0, 0xF4, 0x6E, 0x00, - 0xEE, 0xEC, 0x74, 0xB6, 0x12, 0x34, 0x98, 0xAB, - 0x31, 0xE7, 0xA7, 0x9D, 0x33, 0x4D, 0x72, 0xA7, - 0xA7, 0xEE, 0xF3, 0xB5, 0x51, 0xE7, 0x8D, 0x31, - 0xBC, 0x2C, 0xAF, 0xFB, 0x13, 0x9C, 0xAC, 0xA4, - 0xD7, 0x9C, 0x8B, 0xBD, 0x52, 0xBD, 0x78, 0xF4, - 0x90, 0x65, 0x09, 0xBE, 0x42, 0xE7, 0x76, 0x3A, - 0xE6, 0xAC, 0xB8, 0x98, 0x28, 0x5E, 0xC9, 0x32, - 0x3E, 0x68, 0x67, 0x6A, 0x8C, 0xC7, 0x4A, 0x58, - 0xC8, 0xDA, 0x8B, 0xE9, 0x11, 0xED, 0x6F, 0x51, - 0x3B, 0x66, 0x08, 0x70, 0x73, 0x10, 0xFB, 0x45, - 0xCB, 0xD9, 0x7D, 0x5F, 0xF0, 0xD2, 0xAB, 0xA3, - 0x6F, 0xCE, 0xF7, 0x3D, 0x46, 0xCB, 0x7F, 0x01, - 0xC2, 0xCF, 0xE3, 0x8E, 0x68, 0xE8, 0x4F, 0x4A, - 0x30, 0x19, 0x16, 0xD2, 0xF5, 0x10, 0xD8, 0x2B, - 0x49, 0x69, 0xBE, 0x7A, 0x0E, 0x9C, 0xC6, 0x0E, - 0xFF, 0x5C, 0x0A, 0x87, 0x17, 0xB8, 0x22, 0x83, - 0x8C, 0x77, 0xAF, 0x42, 0x06, 0xB1, 0x25, 0x45, - 0x08, 0x9B, 0xB2, 0xDD, 0x6A, 0x3F, 0xF0, 0x12, - 0xC8, 0x64, 0x15, 0xBB, 0xA0, 0x4F, 0xD7, 0xD4, - 0xEC, 0x70, 0x7A, 0xF3, 0xB1, 0x7F, 0x25, 0x57, - 0x47, 0x66, 0xF1, 0xE9, 0x27, 0x38, 0xE0, 0x62, - 0x10, 0xF4, 0x8A, 0x5E, 0xF2, 0x55, 0x0E, 0xBD, - 0xF8, 0x5A, 0x5C, 0xA3, 0x44, 0x97, 0xCF, 0x1D, - 0x4D, 0x3A, 0x75, 0x86, 0x48, 0xEC, 0x41, 0x17, - 0x24, 0x43, 0x83, 0x5E, 0x50, 0x91, 0xBE, 0x8F, - 0x04, 0x78, 0x23, 0xD9, 0x62, 0x0C, 0x2A, 0xD5, - 0x1C, 0x96, 0x11, 0xAA, 0xEE, 0x39, 0xB2, 0x1E, - 0x6D, 0x6A, 0xEC, 0x87, 0x0C, 0x89, 0x15, 0xE2, - 0x66, 0x47, 0x6A, 0x50, 0xEE, 0xCA, 0x59, 0x96, - 0x22, 0xF7, 0x09, 0x1A, 0x34, 0xC2, 0x3F, 0x14, - 0xB4, 0x04, 0x29, 0xD9, 0x5E, 0x3E, 0xF9, 0x8F, - 0xED, 0x3E, 0x74, 0x94, 0x37, 0xF0, 0x4B, 0xB4, - 0xA3, 0x37, 0x52, 0x2E, 0x68, 0x09, 0xFC, 0x10, - 0x45, 0x03, 0xE2, 0x53, 0xB4, 0x1C, 0x4F, 0x03, - 0x01, 0xAF, 0x46, 0x7F, 0x74, 0xD3, 0x31, 0x25, - 0xFA, 0x83, 0xEF, 0x71, 0x24, 0x45, 0xA1, 0x71, - 0xFA, 0x40, 0xEB, 0xF4, 0xE6, 0x55, 0x3E, 0x45, - 0x4A, 0xFE, 0x25, 0x68, 0x02, 0x1D, 0x2B, 0x2A, - 0x19, 0x8D, 0xEC, 0x9B, 0xF7, 0x20, 0xF9, 0xD7, - 0x2F, 0x81, 0x52, 0x0B, 0xE8, 0x74, 0x66, 0xAF, - 0x70, 0xD0, 0x0E, 0x0E, 0x86, 0x0F, 0xF9, 0xAB, - 0xD0, 0x39, 0x78, 0xC3, 0xE4, 0x29, 0xB5, 0xAA, - 0x17, 0xB9, 0x7F, 0x9A, 0xE9, 0x34, 0x48, 0x85, - 0x3D, 0x6E, 0xFD, 0x16, 0x8A, 0x30, 0xC6, 0xCB, - 0xE8, 0xDE, 0x2D, 0x28, 0x8D, 0x9A, 0x24, 0xEA, - 0x5D, 0x2A, 0x58, 0x23, 0x33, 0x2B, 0x84, 0xFD, - 0x2C, 0xE7, 0x93, 0xA2, 0x2B, 0xEC, 0x43, 0x98, - 0x48, 0xD4, 0xE6, 0x0F, 0x3B, 0xB9, 0xC7, 0x5D, - 0x7E, 0xB0, 0x87, 0x1E, 0x80, 0x3D, 0x61, 0xB0, - 0x7E, 0x74, 0x9E, 0xD7, 0x60, 0x72, 0xB2, 0x7C, - 0x87, 0xB6, 0x9D, 0x6C, 0x01, 0x42, 0x61, 0xF6, - 0x47, 0xAF, 0xA8, 0x8C, 0x4F, 0x1E, 0xC5, 0x5A, - 0x75, 0xA5, 0x0F, 0xB4, 0xC7, 0x9D, 0x2C, 0x94, - 0xC0, 0x50, 0x3D, 0xB2, 0x0D, 0xFD, 0xF7, 0x1F, - 0x62, 0x88, 0x74, 0x18, 0x8C, 0xDD, 0x73, 0x85, - 0xC0, 0x33, 0x81, 0xDA, 0xBB, 0x85, 0x4D, 0x4A, - 0xA9, 0xF4, 0x7B, 0x66, 0x43, 0x8C, 0x43, 0xFF, - 0x53, 0xEF, 0x5E, 0x78, 0xAB, 0x45, 0x0B, 0x45, - 0x01, 0x91, 0x27, 0x8A, 0xF6, 0xE2, 0x6A, 0x7B, - 0x5E, 0x64, 0x61, 0xF5, 0x77, 0xF9, 0x85, 0x2F, - 0x81, 0xC9, 0x02, 0x03, 0xC7, 0x13, 0xF5, 0xB1, - 0xF6, 0xC3, 0xEF, 0x55, 0x8C, 0x90, 0x32, 0x51, - 0x6D, 0x8D, 0x62, 0xFD, 0x5E, 0x24, 0xE4, 0xF0, - 0xF5, 0x07, 0x18, 0xF5, 0x6B, 0x5A, 0x59, 0xA0, - 0x09, 0xD5, 0x93, 0x8D, 0xAD, 0x55, 0x91, 0xF6, - 0x1F, 0x4C, 0x65, 0x9A, 0x76, 0x05, 0x26, 0xEF, - 0x41, 0x20, 0x2F, 0xA7, 0xE5, 0xF6, 0xC7, 0xD5, - 0xE0, 0xB0, 0xC0, 0xC4, 0x3B, 0x52, 0x4B, 0x66, - 0x71, 0x2C, 0x5A, 0x7C, 0x53, 0xC8, 0x4C, 0x50, - 0xB8, 0x3E, 0xB9, 0xC9, 0x8D, 0x2F, 0xD0, 0x84, - 0xC9, 0xC5, 0xF2, 0x1F, 0xEE, 0x77, 0x42, 0xE6, - 0xEF, 0xC8, 0xCB, 0xBE, 0x57, 0x18, 0xB7, 0x0C, - 0x06, 0x2D, 0x82, 0xE2, 0xF9, 0x86, 0xF3, 0x8D, - 0xF1, 0xE7, 0x15, 0x89, 0xDC, 0x79, 0x87, 0x24, - 0x35, 0x62, 0xA2, 0x31, 0x9D, 0x7C, 0x00, 0xB2, - 0x6E, 0x53, 0x1E, 0x93, 0xC3, 0x84, 0x44, 0x61, - 0x8C, 0xE7, 0x58, 0x73, 0x4F, 0xDE, 0xCF, 0xD0, - 0xC6, 0x85, 0x37, 0x28, 0xC6, 0x10, 0x00, 0x78, - 0x4E, 0xDF, 0xFE, 0xD7, 0xB3, 0x30, 0x86, 0xE1, - 0x68, 0xD6, 0xCB, 0x63, 0xE3, 0xDA, 0xCA, 0xF3, - 0x55, 0x2F, 0x88, 0x5B, 0x47, 0x82, 0x62, 0xDE, - 0x5E, 0x1E, 0x63, 0xCE, 0x7A, 0x4C, 0x66, 0x95, - 0xD1, 0x19, 0x38, 0x35, 0xE4, 0x5A, 0x67, 0x91, - 0x8C, 0x42, 0xD3, 0x9B, 0xF8, 0x80, 0x38, 0x53, - 0x30, 0x31, 0x0F, 0x2C, 0x7B, 0xF9, 0x1E, 0x6C, - 0x3E, 0x29, 0xB7, 0x81, 0xD0, 0x98, 0x70, 0xC2, - 0x6D, 0x76, 0xBD, 0x8A, 0xE2, 0x09, 0xC4, 0x2B, - 0xC7, 0x43, 0x2D, 0xBB, 0x4C, 0x16, 0x52, 0x63, - 0x57, 0xA5, 0x63, 0x4E, 0xEC, 0xDE, 0x93, 0xC5, - 0x1D, 0xD4, 0xD6, 0xF0, 0x06, 0x5B, 0x2E, 0xC5, - 0x7A, 0xD3, 0xB5, 0x82, 0x66, 0x53, 0x95, 0x97, - 0xC8, 0xF4, 0x2B, 0x55, 0x27, 0x1D, 0x6F, 0x90, - 0xE9, 0x86, 0xF6, 0x82, 0x8D, 0x95, 0x9E, 0xE8, - 0x00, 0xDB, 0xEB, 0xCF, 0x48, 0x23, 0x6B, 0xA3, - 0xDE, 0x25, 0x27, 0xE0, 0xEC, 0xA4, 0xA3, 0xC2, - 0xA3, 0x4B, 0xBC, 0xDD, 0x6C, 0xBB, 0x3A, 0x9C, - 0x96, 0xDC, 0x3B, 0xE1, 0x10, 0xD3, 0x49, 0x94, - 0x66, 0xE2, 0x85, 0x7F, 0xBA, 0x98, 0x12, 0x3A, - 0x6D, 0xBA, 0x90, 0x14, 0x87, 0x7E, 0x24, 0xEA, - 0xDC, 0xCA, 0x40, 0xF8, 0xAE, 0x94, 0xB2, 0xFE, - 0xD2, 0x36, 0xCB, 0xE5, 0xBC, 0xA9, 0xDF, 0xE0, - 0xCB, 0xA9, 0xA0, 0xF8, 0x62, 0x41, 0x33, 0x18, - 0x59, 0xF9, 0xD6, 0xC0, 0x87, 0xB2, 0x76, 0xDE, - 0xC9, 0x35, 0x6F, 0x1F, 0xEF, 0x69, 0xB3, 0x59, - 0xF9, 0xFB, 0x38, 0x4A, 0x84, 0x02, 0x2D, 0xEC, - 0xB7, 0x01, 0x08, 0xDA, 0xC8, 0xE9, 0x3B, 0xB6, - 0xC3, 0x00, 0xC0, 0x34, 0x5F, 0xC6, 0x40, 0xC0, - 0x06, 0xEA, 0xEB, 0xC1, 0x51, 0x13, 0x81, 0x2F, - 0xB3, 0x7D, 0xD9, 0x6E, 0x2A, 0x06, 0xA4, 0x63, - 0xAF, 0xCE, 0x66, 0xC5, 0x9F, 0x8D, 0x71, 0x4A, - 0xA1, 0xFF, 0x49, 0x4F, 0x08, 0x6F, 0xB9, 0xEA, - 0xDA, 0x18, 0x45, 0x63, 0xCA, 0x9D, 0x88, 0x08, - 0xB1, 0x6C, 0x19, 0xA8, 0x24, 0xAD, 0x85, 0x7D, - 0xDE, 0x51, 0xE5, 0x08, 0xB7, 0x04, 0x12, 0x35, - 0xF3, 0x00, 0xED, 0x2C, 0x79, 0x9C, 0x18, 0x23, - 0x05, 0x38, 0x95, 0x76, 0xCF, 0x39, 0x3C, 0xAE, - 0xB0, 0xD3, 0xBA, 0x3E, 0x4E, 0xE4, 0xB5, 0x77, - 0xA3, 0xE3, 0x7B, 0x27, 0x5F, 0xD8, 0x05, 0x19, - 0x42, 0xAE, 0x91, 0x54, 0xE5, 0xBD, 0x7C, 0x35, - 0xE0, 0xF8, 0x95, 0x52, 0x3A, 0x29, 0xB0, 0xE6, - 0xB7, 0xAE, 0x20, 0xBE, 0x21, 0xDF, 0xF5, 0x67, - 0xEC, 0x82, 0x52, 0xFF, 0x5B, 0xD0, 0xAA, 0x14, - 0x50, 0x15, 0xE1, 0x1C, 0x6A, 0x1B, 0x94, 0x1B, - 0xCC, 0x76, 0x01, 0xBF, 0x03, 0x94, 0x42, 0xF2, - 0x00, 0x61, 0x96, 0x58, 0xD9, 0xD0, 0x40, 0x21, - 0xFA, 0xCE, 0x6B, 0xAB, 0x5D, 0x49, 0xD8, 0xD7, - 0xBC, 0x9A, 0x66, 0xC2, 0xBA, 0x3F, 0xDC, 0x49, - 0x0D, 0xA5, 0x5C, 0xB4, 0x67, 0x08, 0x38, 0xEB, - 0x2D, 0x07, 0x24, 0x5B, 0xB1, 0x22, 0x7B, 0x02, - 0x4A, 0x8A, 0x53, 0x38, 0xE9, 0x42, 0x8E, 0xA5, - 0x57, 0x41, 0xD6, 0x71, 0xA7, 0x9D, 0x6A, 0x14, - 0xD2, 0x7D, 0x13, 0xFB, 0x59, 0xD0, 0xDA, 0xE5, - 0x23, 0x9E, 0x1B, 0xC4, 0x21, 0x87, 0xBB, 0x78, - 0xE0, 0x38, 0x01, 0x1D, 0xA0, 0xD1, 0x36, 0x3F, - 0xD0, 0xA7, 0x8F, 0x86, 0x26, 0x1E, 0xB0, 0x26, - 0xDE, 0x7E, 0x17, 0x3A, 0x90, 0xFC, 0xC0, 0x17, - 0xDD, 0x78, 0xF5, 0xA3, 0x2D, 0x3E, 0x29, 0xCE, - 0x38, 0x45, 0x76, 0xA9, 0x55, 0x11, 0xB6, 0xB4, - 0xE5, 0x6E, 0xDD, 0x01, 0x4B, 0x16, 0x07, 0x99, - 0xBD, 0x19, 0x77, 0xF5, 0xD7, 0x9E, 0x39, 0x9E, - 0xAA, 0x8E, 0x2B, 0x75, 0xC5, 0xEB, 0x33, 0x56, - 0x6C, 0xD8, 0xB6, 0x3F, 0x3F, 0x4E, 0x81, 0x7E, - 0x29, 0x0A, 0x68, 0xED, 0x1E, 0x9F, 0xDC, 0x6B, - 0xFA, 0x18, 0xE3, 0xE5, 0x7D, 0x05, 0x7F, 0x22, - 0xFA, 0xA2, 0xF6, 0x0F, 0xB6, 0x34, 0x56, 0x72, - 0x55, 0x16, 0x5E, 0xF4, 0x18, 0xD1, 0x82, 0xFA, - 0xDD, 0xF7, 0xB8, 0x9F, 0x7D, 0x30, 0x10, 0x69, - 0xC4, 0x85, 0xD8, 0xE8, 0x34, 0x89, 0xD4, 0x93, - 0xBE, 0x56, 0xEE, 0xDC, 0x43, 0xD4, 0x82, 0x00, - 0xFD, 0x1E, 0x2B, 0x06, 0x69, 0x07, 0x1B, 0xBF, - 0x33, 0x61, 0x39, 0x28, 0xCA, 0x31, 0x91, 0x0B, - 0xF2, 0xEA, 0x32, 0x8E, 0xA8, 0x64, 0x13, 0x9A, - 0xEF, 0x79, 0x1A, 0x9A, 0xBE, 0x52, 0x13, 0x32, - 0x49, 0x93, 0x7D, 0xA8, 0x8C, 0x48, 0xD4, 0xC0, - 0x1D, 0x10, 0x8A, 0x46, 0x85, 0xAD, 0x29, 0xDF, - 0x2E, 0xCD, 0x41, 0x83, 0x82, 0x01, 0x28, 0x44, - 0x0E, 0xE5, 0x37, 0x8D, 0x6B, 0xCA, 0x61, 0x98, - 0xDE, 0x89, 0xA9, 0x7B, 0xBB, 0x44, 0x48, 0xA2, - 0x8D, 0x82, 0x3A, 0x57, 0x40, 0x60, 0x7C, 0x6E, - 0x69, 0x98, 0x98, 0x93, 0xFA, 0x7E, 0x29, 0x9A, - 0x74, 0x53, 0xD8, 0xDC, 0xB3, 0x4B, 0xDB, 0x7E, - 0xFE, 0x95, 0xB0, 0xC7, 0x23, 0x14, 0xEF, 0xCB, - 0x49, 0x3C, 0x09, 0xD7, 0x7B, 0xD0, 0x11, 0x9B, - 0xAC, 0xF2, 0xC2, 0x2E, 0x7C, 0xCB, 0xCD, 0x59, - 0x7F, 0x6A, 0x09, 0xFE, 0xFE, 0xDF, 0xA0, 0xA7, - 0xAC, 0x3C, 0x90, 0xBA, 0x75, 0x19, 0xF4, 0x01, - 0x60, 0x56, 0xD5, 0xFB, 0x41, 0x2B, 0xA0, 0x2D, - 0x0D, 0x45, 0xCF, 0xF3, 0xA6, 0x3D, 0x36, 0xEE, - 0xE1, 0xE4, 0x68, 0xE6, 0xEA, 0x2F, 0x67, 0x3A, - 0x7A, 0x02, 0x92, 0x6B, 0xB3, 0x18, 0xBA, 0x73, - 0xEE, 0x1B, 0x2C, 0x13, 0x7D, 0xEF, 0x4A, 0x39, - 0xE8, 0x03, 0xFF, 0x57, 0x35, 0x53, 0xE9, 0xA5, - 0xC6, 0xAA, 0x1A, 0x17, 0x21, 0xCA, 0x54, 0x38, - 0x7C, 0xB1, 0xDF, 0xB8, 0xFA, 0x7D, 0xA7, 0x26, - 0xB2, 0xAE, 0x7A, 0x05, 0x45, 0x3B, 0x40, 0x0A, - 0x19, 0xE5, 0x32, 0x52, 0x78, 0x9D, 0xC3, 0x20, - 0x63, 0x24, 0xB2, 0x58, 0x4B, 0x86, 0x1F, 0x00, - 0xA2, 0x50, 0xF9, 0x9F, 0xD9, 0xDC, 0x7D, 0x51, - 0x3D, 0xD7, 0xA6, 0x5A, 0x04, 0x03, 0x4E, 0xB3, - 0x3D, 0x2D, 0x56, 0xA4, 0x96, 0xB3, 0x6A, 0xBA, - 0x0A, 0x30, 0x08, 0xE3, 0x0F, 0xC1, 0x38, 0x24, - 0x88, 0x5D, 0x9E, 0x6F, 0x68, 0x1A, 0x7D, 0xB6, - 0x2D, 0xDD, 0xE3, 0x50, 0x1B, 0xD4, 0x07, 0x75, - 0xE2, 0xE2, 0xCC, 0x09, 0xCC, 0x8E, 0x4E, 0x67, - 0x02, 0x72, 0x02, 0xA8, 0x11, 0x70, 0xA5, 0x7F, - 0x4A, 0xC1, 0x98, 0xC1, 0x7F, 0xBF, 0x95, 0xBB, - 0xCE, 0xD3, 0x6D, 0x49, 0x30, 0xB9, 0x50, 0x8C, - 0xFA, 0x3E, 0x8B, 0xF6, 0xE5, 0x54, 0xE9, 0x1B, - 0xD7, 0xD6, 0xE5, 0x32, 0x33, 0xBB, 0x91, 0xAD, - 0xC8, 0x15, 0x76, 0x1A, 0x04, 0x35, 0xDE, 0xCC, - 0xE1, 0x67, 0x26, 0x4C, 0x2F, 0x4E, 0x34, 0x34, - 0x3D, 0x1E, 0x5A, 0xF7, 0xBC, 0xE6, 0x0C, 0x9B, - 0x7B, 0x7E, 0xE5, 0xDF, 0x72, 0x9A, 0x0D, 0xDD, - 0x4B, 0xE6, 0x6F, 0x82, 0xFB, 0x5E, 0x2C, 0xC0, - 0x7B, 0x03, 0x85, 0x76, 0x11, 0x0E, 0xFD, 0xC7, - 0xD5, 0x50, 0x26, 0xBE, 0x75, 0x5E, 0xC1, 0xF0, - 0x2E, 0x47, 0x62, 0xD6, 0xF1, 0xDA, 0xDF, 0xF4, - 0x1C, 0xEE, 0x63, 0x52, 0xC4, 0x45, 0x37, 0xE6, - 0x85, 0xA5, 0x0A, 0x07, 0x54, 0x63, 0x21, 0x7B, - 0x92, 0xF7, 0x33, 0x0C, 0xD9, 0x29, 0xCF, 0xE3, - 0xAB, 0xB5, 0xFC, 0xAA, 0x26, 0x20, 0x93, 0x55, - 0x8A, 0x07, 0x33, 0xB2, 0x7D, 0x95, 0x02, 0x7A, - 0x76, 0x9E, 0x7D, 0xBB, 0xC1, 0xF3, 0x6E, 0x84, - 0x10, 0x30, 0x4B, 0x5D, 0x59, 0x73, 0x68, 0xEC, - 0x2A, 0x63, 0x2D, 0x46, 0xE8, 0xC2, 0xF8, 0xEA, - 0x2B, 0xC4, 0x4F, 0xA7, 0x6E, 0xF4, 0x74, 0xEB, - 0x96, 0xA3, 0x64, 0x40, 0x9B, 0x23, 0x63, 0x42, - 0x4B, 0x8F, 0x85, 0x00, 0x43, 0x04, 0xAD, 0x61, - 0x76, 0x93, 0xBD, 0xC3, 0x88, 0xC3, 0xFC, 0x29, - 0x61, 0xBD, 0xB1, 0x5A, 0x1F, 0x5B, 0x20, 0xEF, - 0x95, 0xED, 0x99, 0x84, 0x96, 0xB2, 0x93, 0x81, - 0x82, 0xFF, 0xE3, 0xB9, 0x27, 0xEA, 0x9A, 0x23, - 0xF6, 0x42, 0x8D, 0xD3, 0x5C, 0x86, 0x11, 0xC8, - 0x39, 0xE3, 0x16, 0xE9, 0xA5, 0x32, 0x7C, 0xC9, - 0xEA, 0x82, 0x50, 0x9B, 0x21, 0x5C, 0xC9, 0x66, - 0xBE, 0x1C, 0x78, 0x48, 0xEF, 0x39, 0x2D, 0xA1, - 0xC6, 0xF3, 0x69, 0xA3, 0x36, 0x25, 0x3A, 0xA1, - 0x15, 0x2B, 0x6D, 0xCF, 0xDA, 0xA7, 0xCA, 0xDD, - 0x4D, 0x9A, 0x1D, 0x58, 0x9F, 0x73, 0xD3, 0xEF, - 0x0F, 0xBF, 0x03, 0x88, 0x2F, 0xDE, 0xB9, 0x44, - 0xB5, 0xB6, 0xCF, 0xE2, 0x6F, 0x6A, 0xB5, 0x12, - 0x38, 0x29, 0x55, 0x8C, 0x4C, 0x73, 0x6F, 0x0B, - 0x68, 0x7A, 0xC7, 0x06, 0x83, 0x80, 0xFE, 0x7F, - 0x61, 0xBE, 0x6B, 0x40, 0xE3, 0xF0, 0x4D, 0x7B, - 0x36, 0x82, 0x0F, 0xD8, 0x63, 0x29, 0xB3, 0x10, - 0x9D, 0x02, 0xEC, 0x63, 0x90, 0xEA, 0xFC, 0x8C, - 0xA7, 0x30, 0x56, 0x2B, 0x68, 0x08, 0x24, 0x24, - 0xFD, 0xA9, 0x8D, 0x0B, 0x64, 0xBC, 0x97, 0x34, - 0xB4, 0x0B, 0x63, 0xF7, 0xE3, 0x7A, 0xF6, 0x89, - 0x0A, 0xF7, 0xC2, 0xD9, 0x2F, 0x79, 0xEE, 0xA3, - 0xCC, 0xEA, 0xC6, 0x0A, 0x6F, 0x38, 0x06, 0x92, - 0xF8, 0x02, 0xB1, 0x55, 0x6A, 0x78, 0xFE, 0x55, - 0x83, 0xFF, 0x20, 0xA9, 0xC6, 0xA7, 0xBF, 0xCC, - 0x86, 0x3A, 0x9E, 0x7B, 0x62, 0x01, 0x4D, 0x16, - 0x05, 0xDE, 0x89, 0x4F, 0xB5, 0x85, 0xE2, 0xD4, - 0xF9, 0x41, 0x15, 0xE0, 0x29, 0xE5, 0x85, 0x7E, - 0x6A, 0x0A, 0x73, 0x89, 0x27, 0x5F, 0x53, 0x0D, - 0x3D, 0x80, 0xCF, 0xAB, 0x1F, 0x22, 0x5D, 0x38, - 0x33, 0x5D, 0x24, 0x67, 0x91, 0x97, 0xD4, 0x8A, - 0x01, 0x8A, 0x34, 0x18, 0x7D, 0xE3, 0xBC, 0xCE, - 0xDE, 0x94, 0xFF, 0x8E, 0xC5, 0x34, 0xC0, 0x2D, - 0xA7, 0x24, 0xD4, 0x59, 0x8D, 0x66, 0x9E, 0x85, - 0xA9, 0xC6, 0x0E, 0x45, 0x21, 0x4F, 0xAA, 0x65, - 0x44, 0xD6, 0xA4, 0x7D, 0x1C, 0x4E, 0xD7, 0x40, - 0x9D, 0x55, 0xB1, 0xA7, 0xF1, 0x15, 0xAE, 0x15, - 0x44, 0x3A, 0x1C, 0x31, 0x06, 0x40, 0xD1, 0x16, - 0x23, 0x84, 0x93, 0xEF, 0x3E, 0xE2, 0x87, 0x9B, - 0xB8, 0x46, 0x1F, 0x7D, 0x68, 0x73, 0x64, 0x70, - 0xD4, 0xB5, 0x73, 0xAE, 0x45, 0x49, 0x93, 0xF5, - 0x32, 0x30, 0x1E, 0x35, 0xCB, 0x9E, 0xEE, 0xDF, - 0xFE, 0xA8, 0x2F, 0xAC, 0x49, 0x77, 0x53, 0xF7, - 0x50, 0x19, 0xF2, 0xB3, 0xB0, 0x2C, 0x70, 0xB6, - 0x4A, 0x57, 0x95, 0x31, 0xC3, 0x26, 0x07, 0x2A, - 0xCF, 0x1B, 0xD0, 0xAA, 0xA0, 0x9F, 0x0A, 0x97, - 0x8B, 0x78, 0xAB, 0x22, 0xBD, 0x61, 0x19, 0xF8, - 0x8D, 0xD2, 0xD5, 0x72, 0xF8, 0x91, 0x9D, 0x47, - 0x4F, 0x59, 0x1D, 0xAE, 0x9F, 0xCE, 0x47, 0x53, - 0xC9, 0x85, 0xFB, 0x25, 0x04, 0x25, 0xF2, 0x65, - 0x61, 0xFF, 0xA9, 0x44, 0x3F, 0x23, 0x76, 0x68, - 0x9F, 0xEB, 0x48, 0xC4, 0xCE, 0x51, 0x46, 0x04, - 0x52, 0x6A, 0x10, 0x0A, 0xF3, 0x3F, 0x0D, 0x43, - 0x37, 0xD1, 0x60, 0x42, 0x22, 0xC4, 0xD9, 0xF9, - 0x3A, 0x8E, 0x69, 0xE4, 0xCC, 0xD3, 0x66, 0x69, - 0x09, 0x0C, 0x5D, 0xFB, 0x0E, 0x95, 0x49, 0x42, - 0x29, 0xFF, 0x9B, 0x20, 0xCC, 0xB1, 0xAC, 0x81, - 0xB8, 0x1A, 0x36, 0xD6, 0x3A, 0x85, 0x0D, 0xDB, - 0x33, 0x33, 0x4D, 0xAA, 0x51, 0x46, 0xBF, 0x36, - 0xFE, 0x18, 0x80, 0x1E, 0x3B, 0xEB, 0xD0, 0xE9, - 0x1B, 0x5E, 0x1C, 0xFE, 0x7A, 0x98, 0x26, 0x85, - 0x0A, 0xF4, 0x39, 0x7D, 0x1B, 0x07, 0xD3, 0xB7, - 0x19, 0xE5, 0x7B, 0xB8, 0x32, 0xAF, 0x42, 0x34, - 0xC0, 0xCD, 0x9F, 0xD4, 0x0B, 0x88, 0x2F, 0xCE, - 0xDA, 0x93, 0x7E, 0xF9, 0xA2, 0xDA, 0x24, 0x59, - 0x2B, 0xCB, 0x5D, 0x1B, 0xE8, 0x3E, 0xC5, 0xF0, - 0x3D, 0xBD, 0xFB, 0xCB, 0x33, 0x5D, 0x90, 0xD5, - 0xC8, 0xA0, 0x2E, 0xE5, 0x3D, 0x50, 0x8E, 0xB5, - 0xDE, 0x4A, 0x96, 0x1B, 0x95, 0x8F, 0x75, 0x1E, - 0x5F, 0x89, 0xA1, 0xD2, 0x88, 0x95, 0xA3, 0xDB, - 0x7B, 0x62, 0xEF, 0x4A, 0xE1, 0x6D, 0x28, 0xFB, - 0x78, 0x9B, 0x32, 0x03, 0xAD, 0x24, 0x63, 0xD6, - 0xEA, 0xB8, 0x3A, 0x6D, 0x20, 0xCE, 0xA1, 0x31, - 0x4A, 0xE0, 0x2A, 0x3F, 0xF6, 0xF6, 0x53, 0x15, - 0x4A, 0xE1, 0x44, 0x23, 0x81, 0x86, 0x21, 0x47, - 0x41, 0xC2, 0x36, 0x14, 0x81, 0x83, 0xBC, 0x39, - 0xAE, 0xDF, 0x44, 0xDA, 0x97, 0xF7, 0x31, 0xCE, - 0x3D, 0xCB, 0x61, 0xA4, 0xCF, 0xE1, 0x4F, 0x9E, - 0x84, 0xAA, 0x05, 0xAB, 0x1C, 0x1B, 0x95, 0x1D, - 0x20, 0x15, 0x52, 0x33, 0xFA, 0xFA, 0xF1, 0x6C, - 0xF1, 0xBD, 0x0B, 0xAF, 0xE1, 0x99, 0xE6, 0x5D, - 0x56, 0x34, 0x53, 0xBF, 0xE5, 0x5D, 0x5F, 0x47, - 0x4A, 0xB1, 0x05, 0x94, 0xD7, 0x38, 0xA8, 0xC1, - 0x06, 0x28, 0x8D, 0x69, 0xD0, 0x7A, 0x16, 0x88, - 0x60, 0x14, 0x63, 0xF3, 0xBD, 0x21, 0x46, 0x81, - 0x9C, 0x83, 0x72, 0x6D, 0x14, 0xC6, 0xA8, 0x08, - 0x39, 0xB8, 0x79, 0x0B, 0x57, 0x16, 0xE7, 0x72, - 0xF6, 0xC2, 0x4C, 0x2B, 0xEB, 0x7E, 0x2C, 0xF3, - 0x7B, 0x3F, 0x42, 0xAC, 0xDD, 0x47, 0x3E, 0x8C, - 0xCD, 0xBE, 0x48, 0x4D, 0x6E, 0x07, 0xB0, 0x73, - 0xDE, 0xCB, 0x17, 0x4A, 0xC3, 0xB8, 0xBB, 0x2E, - 0xF5, 0x4E, 0x6D, 0xF9, 0xE0, 0x20, 0x71, 0xFA, - 0x60, 0x0A, 0xE5, 0x59, 0x67, 0xEB, 0x6F, 0x70, - 0x2F, 0x71, 0x91, 0x59, 0xF0, 0xEB, 0x06, 0x5C, - 0xC4, 0x60, 0x48, 0xE8, 0x75, 0xE7, 0xCF, 0x42, - 0x71, 0xAD, 0x2E, 0xDA, 0xF9, 0x10, 0x82, 0x9A, - 0xF6, 0x13, 0xBA, 0x89, 0xFC, 0x61, 0x2A, 0x00, - 0xFD, 0xAE, 0x53, 0x7B, 0x09, 0x3A, 0xE8, 0xCB, - 0xE6, 0xB7, 0x0D, 0x03, 0x01, 0xFA, 0x2E, 0x13, - 0xA9, 0x16, 0x38, 0x1C, 0x92, 0xEC, 0xB4, 0x51, - 0xA3, 0x6E, 0x3F, 0xA8, 0xB7, 0x37, 0x36, 0x20, - 0xC0, 0x71, 0xA3, 0x05, 0x34, 0xED, 0xCB, 0x4A, - 0x3F, 0x11, 0x31, 0x17, 0xA5, 0x02, 0xD6, 0xA7, - 0x2D, 0xE6, 0xC7, 0x7B, 0xBB, 0xF6, 0xAE, 0x99, - 0x85, 0x9A, 0xAC, 0xE6, 0x4A, 0x92, 0x8C, 0x37, - 0x4B, 0xD2, 0xC4, 0x65, 0x2A, 0xC9, 0x7E, 0xB7, - 0x44, 0xD2, 0x9A, 0x70, 0xCE, 0xA9, 0xA1, 0x9D, - 0x70, 0x13, 0x49, 0x7B, 0xCA, 0xB6, 0x96, 0x31, - 0x43, 0x3F, 0x9E, 0xD1, 0xFE, 0x20, 0xF8, 0x0B, - 0x59, 0x83, 0xE1, 0x28, 0x8B, 0xB6, 0xA2, 0xBE, - 0x91, 0x54, 0x3E, 0xD4, 0x79, 0x28, 0xBB, 0x5E, - 0x46, 0x2D, 0x01, 0xE9, 0xC0, 0xB7, 0xFF, 0xFA, - 0xC0, 0x6C, 0x10, 0xF1, 0x52, 0xF4, 0x3C, 0x32, - 0x9E, 0x89, 0xDF, 0x8A, 0x79, 0x99, 0x6A, 0x09, - 0x79, 0x8A, 0x36, 0x76, 0x40, 0xBE, 0x9F, 0xB5, - 0x3D, 0xCE, 0x27, 0xBD, 0x0B, 0xAA, 0x9B, 0xF0, - 0x21, 0xBF, 0x10, 0xD2, 0xFC, 0xFE, 0x5B, 0x13, - 0xFD, 0x7D, 0x84, 0xD1, 0xC1, 0xEB, 0xC0, 0xBC, - 0xEC, 0x26, 0xD0, 0x87, 0x80, 0xD1, 0x3B, 0x99, - 0x47, 0x67, 0x26, 0x61, 0xE0, 0xFA, 0x5F, 0xAE, - 0x6F, 0x31, 0x5B, 0x6D, 0xE4, 0x01, 0x68, 0xC2, - 0x35, 0x1D, 0xE3, 0x1F, 0x41, 0xFF, 0x6C, 0x53, - 0x32, 0x26, 0xE1, 0xBC, 0xE3, 0xF8, 0xE2, 0x16, - 0xAF, 0x3B, 0xE6, 0x4C, 0x69, 0x33, 0x72, 0xA0, - 0x66, 0xB1, 0x75, 0xF7, 0x26, 0xCF, 0xCD, 0x64, - 0x2B, 0xAE, 0x98, 0x02, 0x92, 0xC1, 0xCB, 0x65, - 0xE0, 0x1F, 0x07, 0x29, 0x64, 0x0A, 0xB0, 0x09, - 0xCB, 0x98, 0x89, 0x2D, 0x6C, 0xFE, 0x40, 0x03, - 0x34, 0x55, 0xDE, 0xE7, 0x30, 0x33, 0xB6, 0xD5, - 0xE1, 0x9C, 0x59, 0x9F, 0x8A, 0x40, 0x0E, 0xB1, - 0x41, 0x52, 0x7D, 0xF2, 0xBB, 0xDD, 0xEF, 0x50, - 0xBB, 0xD5, 0xFB, 0x55, 0xAA, 0x5E, 0xFD, 0xB3, - 0x5D, 0x08, 0x56, 0x9B, 0x02, 0x97, 0xE2, 0x48, - 0x14, 0x69, 0xF1, 0x7B, 0x87, 0xB5, 0x08, 0x93, - 0x6A, 0x9C, 0x5C, 0x11, 0x08, 0x9A, 0xE9, 0xE4, - 0xB0, 0xCA, 0xC5, 0x74, 0x93, 0x93, 0xC8, 0x03, - 0xE4, 0x70, 0x39, 0xF5, 0x1B, 0x5C, 0xBD, 0x42, - 0xA6, 0xC9, 0xE1, 0x9E, 0xC3, 0xF6, 0x3C, 0x23, - 0x32, 0xE8, 0x77, 0x68, 0xA9, 0x60, 0xFA, 0x02, - 0x18, 0x6B, 0x7A, 0x2B, 0x02, 0x92, 0x65, 0x09, - 0x11, 0x46, 0x73, 0x04, 0x63, 0xDF, 0x8B, 0x37, - 0x5F, 0x24, 0xAA, 0x83, 0xBD, 0xD4, 0x1D, 0x13, - 0x04, 0xFC, 0x2F, 0xB5, 0x2D, 0xA1, 0x0F, 0x1F, - 0xED, 0x65, 0x29, 0x08, 0xCF, 0x8C, 0x52, 0x8F, - 0xB2, 0x62, 0x5F, 0x39, 0x3F, 0xC8, 0xC7, 0xB3, - 0x3F, 0xAD, 0x45, 0xBA, 0xD4, 0x7D, 0x38, 0x3D, - 0x2C, 0x04, 0xCF, 0x32, 0xE8, 0x07, 0x42, 0x5F, - 0x93, 0xD2, 0x35, 0x07, 0x21, 0xB7, 0xB2, 0xF5, - 0x96, 0x64, 0x8E, 0xB5, 0xE1, 0x38, 0x6B, 0x43, - 0xD1, 0x2E, 0xFD, 0xDB, 0x8F, 0xE2, 0x43, 0x6A, - 0xEC, 0x27, 0x8E, 0xE7, 0x68, 0x75, 0xB5, 0x23, - 0xC5, 0x43, 0x1D, 0x99, 0x48, 0x57, 0x73, 0xD9, - 0xAD, 0xBC, 0xD0, 0x14, 0xDD, 0x87, 0xBC, 0x68, - 0xFB, 0x82, 0xEE, 0x47, 0x4B, 0x22, 0xA5, 0x43, - 0x3A, 0xF9, 0xF9, 0x91, 0xFC, 0x34, 0xB2, 0x58, - 0x34, 0xDF, 0x13, 0x09, 0x9A, 0x46, 0xF5, 0x68, - 0xAF, 0xD1, 0x15, 0x5F, 0x32, 0x1B, 0x9D, 0xA9, - 0xE9, 0xC0, 0x63, 0x47, 0xAB, 0x3C, 0x1F, 0x59, - 0xF7, 0xEA, 0x0E, 0xD6, 0xCF, 0x47, 0xB3, 0xE9, - 0xAF, 0x65, 0x7A, 0xA7, 0xAE, 0x9B, 0xF8, 0x26, - 0x0B, 0x96, 0x9D, 0xE4, 0xAD, 0x24, 0xD3, 0xA8, - 0xCE, 0x95, 0xE5, 0x77, 0xD0, 0x44, 0x13, 0x05, - 0x06, 0x4E, 0x07, 0xB9, 0xA2, 0xC7, 0x5C, 0x3C, - 0x43, 0x80, 0x1F, 0xCE, 0xB7, 0x36, 0xFE, 0x3D, - 0x27, 0x1B, 0xE1, 0xF3, 0x6B, 0xFF, 0xC8, 0xE4, - 0x3D, 0xB1, 0x4A, 0x16, 0x24, 0x76, 0xBA, 0xEA, - 0x9D, 0x34, 0x6B, 0x52, 0x11, 0xAB, 0xD0, 0x06, - 0x08, 0xB1, 0x5A, 0xF3, 0xB5, 0xE6, 0x3A, 0x00, - 0xFF, 0x92, 0x8D, 0x1E, 0xA1, 0xA1, 0x8D, 0x75, - 0xFA, 0x7C, 0x6C, 0x1B, 0x0F, 0xB6, 0x27, 0x2E, - 0x55, 0xC3, 0xFE, 0x7E, 0x4D, 0x42, 0x05, 0xE5, - 0xCF, 0x0A, 0x1F, 0x87, 0x18, 0x30, 0x4E, 0x14, - 0xF2, 0xB4, 0xCC, 0x54, 0x3D, 0x04, 0x37, 0x34, - 0x1A, 0x4A, 0x31, 0x16, 0x01, 0xA9, 0x2E, 0x92, - 0x56, 0x6B, 0x7D, 0xFB, 0x42, 0x64, 0xE8, 0x70, - 0xE1, 0xB3, 0xA8, 0x75, 0xED, 0xBC, 0x00, 0x3A, - 0x56, 0x19, 0x70, 0xCF, 0x8A, 0x66, 0x9F, 0x3D, - 0x1B, 0x69, 0x28, 0x8C, 0xC6, 0xE3, 0x59, 0xCE, - 0x28, 0xCA, 0x65, 0xF9, 0xDA, 0xE8, 0xCE, 0xCA, - 0x74, 0x3C, 0x1C, 0x8D, 0x9F, 0xFB, 0x55, 0x08, - 0x82, 0x4A, 0x83, 0x61, 0xE3, 0x3B, 0x43, 0x1A, - 0x2E, 0x9E, 0x9A, 0x99, 0x78, 0x47, 0xD2, 0xE6, - 0xE4, 0x3C, 0x83, 0xF0, 0x22, 0x62, 0xE2, 0x94, - 0x6D, 0xF7, 0x72, 0x6D, 0x54, 0xE3, 0xE6, 0xC9, - 0xCC, 0xDB, 0x6D, 0x3F, 0x13, 0x63, 0x46, 0xC1, - 0x1E, 0x59, 0x42, 0xE7, 0xA1, 0xBF, 0x85, 0x0C, - 0x2E, 0x99, 0xB4, 0xFA, 0xCE, 0x75, 0xFD, 0x40, - 0x88, 0x69, 0x33, 0x90, 0x7C, 0xCD, 0xFC, 0x0D, - 0xE1, 0x17, 0x70, 0x20, 0x31, 0x94, 0x1D, 0x00, - 0x1E, 0x2A, 0x68, 0x3C, 0x55, 0x78, 0xFD, 0x33, - 0x54, 0x21, 0x2C, 0xEA, 0xD9, 0x69, 0xBF, 0x1C, - 0x81, 0x23, 0x9E, 0xEC, 0xC7, 0x74, 0xFD, 0x0B, - 0x88, 0x3D, 0x0E, 0xEE, 0x82, 0x4B, 0x10, 0xB8, - 0x79, 0xCF, 0x70, 0x7C, 0xB2, 0x68, 0x47, 0x45, - 0x22, 0x06, 0x1E, 0x92, 0x7B, 0x12, 0x43, 0x24, - 0x41, 0x15, 0xC6, 0x69, 0xE9, 0xEB, 0x27, 0x2B, - 0x60, 0xA6, 0x44, 0xF5, 0x19, 0xEF, 0xEC, 0x06, - 0x34, 0x08, 0xB6, 0x58, 0x47, 0x2E, 0x91, 0x61, - 0xA1, 0xF7, 0x44, 0xFD, 0x66, 0x16, 0x9F, 0x0C, - 0xAE, 0x36, 0xB4, 0x2E, 0x23, 0x79, 0xCB, 0xE8, - 0x1E, 0x6E, 0x51, 0xA0, 0xF5, 0x34, 0x15, 0x18, - 0x4E, 0xA0, 0x06, 0xB2, 0x27, 0x0B, 0x33, 0xE2, - 0xCA, 0x36, 0x4C, 0xDB, 0x33, 0xAA, 0xAE, 0x77, - 0xFF, 0xD9, 0x53, 0xDB, 0x39, 0x70, 0x4D, 0x49, - 0x0C, 0xE9, 0xAC, 0x6F, 0x2D, 0xD1, 0xC7, 0xA1, - 0x8E, 0x61, 0x74, 0x19, 0xA9, 0xAA, 0xFB, 0x37, - 0xE7, 0x23, 0x9B, 0x23, 0x6A, 0x4B, 0x74, 0xCE, - 0x63, 0xE4, 0xA0, 0xAD, 0xFF, 0x85, 0x5D, 0xCD, - 0x78, 0xF6, 0x45, 0x8E, 0x76, 0x0B, 0xFD, 0x1D, - 0x2A, 0xB9, 0x5E, 0x83, 0xC0, 0x3B, 0x6F, 0xAE, - 0x0C, 0xD3, 0xC5, 0xCE, 0xEE, 0xEE, 0x1C, 0x69, - 0x51, 0x59, 0x65, 0xA3, 0x35, 0xFC, 0xF7, 0x8E, - 0x80, 0xAA, 0x73, 0x93, 0x39, 0x54, 0x21, 0x27, - 0x17, 0x0B, 0x2C, 0x3E, 0xE1, 0x0B, 0x0E, 0xAA, - 0x09, 0x9A, 0xC7, 0xAD, 0x4C, 0xD7, 0x6E, 0x7F, - 0xE4, 0xC1, 0x16, 0x4E, 0x62, 0xF4, 0xE5, 0x80, - 0x7D, 0xC0, 0x06, 0x1F, 0x77, 0xE4, 0xA8, 0xA5, - 0x28, 0xD7, 0x10, 0x37, 0x59, 0x30, 0xCB, 0x75, - 0x5B, 0x28, 0xBF, 0xFD, 0x92, 0x8C, 0xB0, 0x7B, - 0xB4, 0xA1, 0x07, 0xCD, 0xCA, 0xBB, 0x30, 0x8A, - 0x48, 0x65, 0x0D, 0xA4, 0xE5, 0x74, 0xD9, 0xBF, - 0x56, 0x07, 0xF5, 0x83, 0xDA, 0xC3, 0x40, 0xD7, - 0x20, 0x93, 0xEF, 0xB1, 0x2B, 0xBF, 0x93, 0x41, - 0x0F, 0x1E, 0xF5, 0xC9, 0x51, 0x6C, 0x74, 0x4D, - 0x23, 0x15, 0xEC, 0x9E, 0x00, 0x0A, 0x8D, 0xC5, - 0xD1, 0x7A, 0x7B, 0x6F, 0x0D, 0x07, 0x9D, 0x78, - 0x4B, 0x6D, 0x90, 0x19, 0x3F, 0x6E, 0x3E, 0xE7, - 0xEA, 0x0E, 0xAB, 0xFC, 0x6F, 0x68, 0xC5, 0x2B, - 0x37, 0xCB, 0xCE, 0x82, 0x18, 0xAF, 0xA3, 0x67, - 0x0A, 0x80, 0xBC, 0x17, 0xB9, 0x5D, 0x7B, 0x40, - 0x53, 0x62, 0x26, 0x35, 0x8F, 0x04, 0xAC, 0xD9, - 0x2A, 0x1B, 0xE1, 0x5B, 0x26, 0xA4, 0xE5, 0x81, - 0x7E, 0x62, 0x8B, 0xA6, 0x79, 0xB3, 0x52, 0x72, - 0x03, 0xCD, 0x36, 0x32, 0x62, 0x8E, 0xC8, 0x3A, - 0xA4, 0xF2, 0x18, 0x6D, 0x2F, 0x00, 0x5D, 0x5D, - 0xFE, 0x6F, 0x7F, 0xDB, 0x4F, 0xED, 0xAC, 0x9E, - 0x89, 0xD6, 0x66, 0xE3, 0x03, 0xBB, 0x56, 0x83, - 0x06, 0x15, 0x6C, 0x56, 0xF0, 0x95, 0x34, 0xE2, - 0x5C, 0x61, 0x9A, 0xB3, 0xB9, 0x50, 0x18, 0xF4, - 0x89, 0x6B, 0xAC, 0xAA, 0x48, 0x34, 0xF6, 0xD2, - 0xD8, 0xFE, 0x14, 0xA9, 0x38, 0xAA, 0x10, 0xE5, - 0x30, 0x54, 0xF0, 0x00, 0x84, 0x44, 0xAC, 0x2E, - 0xEA, 0x25, 0x38, 0xC1, 0x23, 0x0E, 0x6A, 0x18, - 0xC9, 0x2B, 0x01, 0xD9, 0x14, 0x7F, 0xDC, 0xEF, - 0xC9, 0xC8, 0xDA, 0xC1, 0xD4, 0xEC, 0xC8, 0xCF, - 0x1F, 0x96, 0x2E, 0xFA, 0x1B, 0x8C, 0xD3, 0xC9, - 0x69, 0x00, 0x0B, 0x7E, 0xBA, 0xC5, 0x98, 0xDC, - 0xA4, 0x5E, 0xB4, 0x0B, 0xCF, 0xB1, 0x98, 0x51, - 0x48, 0x38, 0x51, 0xCF, 0x34, 0x0F, 0x3E, 0x8C, - 0x23, 0x7A, 0x9E, 0xFF, 0x1C, 0x9F, 0x21, 0xE4, - 0x97, 0x55, 0x41, 0xC6, 0x1A, 0x8F, 0xEF, 0x2A, - 0xC6, 0x05, 0x7F, 0x59, 0xDC, 0xB2, 0x3A, 0x80, - 0xE8, 0x06, 0x10, 0xCD, 0x85, 0xDB, 0x20, 0x3C, - 0x35, 0xD2, 0x4B, 0xC8, 0x2B, 0x9C, 0xD7, 0x82, - 0x46, 0xF5, 0x9F, 0xEB, 0xB2, 0x48, 0x32, 0xD7, - 0xCD, 0x66, 0x4C, 0x99, 0x51, 0x88, 0xE0, 0x28, - 0x1C, 0xD7, 0x86, 0x79, 0x00, 0xDC, 0x0D, 0xF4, - 0x4D, 0x40, 0x90, 0x80, 0x26, 0x8B, 0x79, 0xE9, - 0x56, 0x82, 0x88, 0x5F, 0x22, 0x87, 0x70, 0x73, - 0x4F, 0xA5, 0x35, 0x18, 0xEC, 0x80, 0xCE, 0x23, - 0x06, 0xCE, 0x14, 0x48, 0x52, 0x4E, 0xF0, 0x18, - 0x43, 0x03, 0xD4, 0x50, 0xC7, 0x6E, 0xA6, 0x3B, - 0x73, 0x3E, 0xB0, 0xC8, 0xDC, 0x48, 0xBF, 0x12, - 0x42, 0x3A, 0xD2, 0x38, 0x89, 0xCF, 0xCD, 0xD8, - 0x91, 0xE5, 0x95, 0x00, 0x47, 0x24, 0x0D, 0xC0, - 0xC3, 0x8A, 0xB2, 0xDB, 0xC1, 0x65, 0xB8, 0x1E, - 0x63, 0x10, 0x02, 0xEA, 0x6F, 0x74, 0x11, 0x9E, - 0x27, 0xF9, 0xF8, 0x60, 0x73, 0xBF, 0x2D, 0xF7, - 0x10, 0x81, 0x86, 0x76, 0x98, 0x0C, 0x4C, 0xB6, - 0xBD, 0x53, 0xF9, 0xA5, 0x72, 0x17, 0x78, 0xB8, - 0x9F, 0x59, 0xC6, 0x8C, 0x89, 0x35, 0xF5, 0x03, - 0x1C, 0x8A, 0x93, 0x36, 0x7D, 0x71, 0x70, 0x57, - 0xFD, 0x4D, 0x5E, 0xFA, 0xBE, 0xDE, 0x70, 0x2C, - 0xC6, 0x45, 0xEF, 0xB6, 0xD7, 0xF4, 0x4C, 0x86, - 0x0F, 0xFF, 0x76, 0x37, 0xAA, 0xD9, 0x72, 0x24, - 0x8C, 0x84, 0x4D, 0x15, 0x13, 0x39, 0x20, 0x07, - 0x38, 0x91, 0xC3, 0x13, 0x5D, 0x29, 0x78, 0x68, - 0xB7, 0xDA, 0x86, 0xF0, 0x97, 0xD8, 0xFB, 0x39, - 0xC1, 0x3B, 0xA1, 0x4C, 0x4F, 0x24, 0x75, 0x16, - 0xAB, 0xA4, 0xC5, 0xF8, 0xCE, 0x38, 0x18, 0x48, - 0x2C, 0x8F, 0xF6, 0x0C, 0xCA, 0x51, 0xFD, 0xB2, - 0xCE, 0xE9, 0x6B, 0xC1, 0x13, 0x8D, 0xC0, 0x4A, - 0x86, 0xF8, 0x57, 0x72, 0x75, 0x91, 0xAA, 0xE6, - 0xF8, 0x7C, 0x30, 0x05, 0x9B, 0x3E, 0x81, 0xB6, - 0x80, 0x55, 0xB2, 0x4E, 0xA2, 0xFA, 0x98, 0x36, - 0x86, 0x49, 0x8B, 0xFC, 0x9D, 0x9E, 0x7D, 0x59, - 0x50, 0x79, 0xEB, 0x64, 0x6E, 0x85, 0xB2, 0x12, - 0xCE, 0xDD, 0x21, 0xD0, 0x08, 0x7E, 0x0F, 0x2A, - 0xF6, 0x63, 0xEB, 0x77, 0x2A, 0x98, 0x47, 0xB1, - 0xDF, 0x21, 0x97, 0xAF, 0x13, 0x62, 0x6B, 0x89, - 0x7C, 0x24, 0x63, 0x7A, 0xF5, 0xBF, 0xE8, 0x18, - 0x16, 0xA8, 0xC9, 0x0D, 0x30, 0x48, 0x37, 0x5B, - 0x69, 0x94, 0x97, 0x14, 0x3E, 0x57, 0x71, 0x85, - 0xA7, 0x0E, 0x11, 0x50, 0x58, 0xA3, 0xA9, 0x11, - 0x2B, 0x2C, 0x43, 0x51, 0xB6, 0xCA, 0xD0, 0x09, - 0x28, 0x2B, 0x4F, 0x7C, 0xB8, 0xBD, 0xFC, 0x28, - 0x57, 0x77, 0xD7, 0xDF, 0xE8, 0xF5, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x06, 0x0B, 0x11, 0x17, - 0x1F, 0x27, 0x2E - }; -#endif -#endif - - key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); - ExpectNotNull(key); - - if (key != NULL) { - XMEMSET(key, 0, sizeof(*key)); - } - - ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); -#ifndef WOLFSSL_NO_ML_DSA_44 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_44, (word32)sizeof(pk_44), key), - 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_44, (word32)sizeof(sig_44), msg_44, - (word32)sizeof(msg_44), &res, key), 0); - ExpectIntEQ(res, 1); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_44_draft, - (word32)sizeof(pk_44_draft), key), 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_44_draft, - (word32)sizeof(sig_44_draft), msg_44_draft, - (word32)sizeof(msg_44_draft), &res, key), 0); - ExpectIntEQ(res, 1); -#endif -#endif -#ifndef WOLFSSL_NO_ML_DSA_65 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_65, (word32)sizeof(pk_65), key), - 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_65, (word32)sizeof(sig_65), msg_65, - (word32)sizeof(msg_65), &res, key), 0); - ExpectIntEQ(res, 1); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_65_draft, - (word32)sizeof(pk_65_draft), key), 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_65_draft, - (word32)sizeof(sig_65_draft), msg_65_draft, - (word32)sizeof(msg_65_draft), &res, key), 0); - ExpectIntEQ(res, 1); -#endif -#endif -#ifndef WOLFSSL_NO_ML_DSA_87 - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_87, (word32)sizeof(pk_87), key), - 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_87, (word32)sizeof(sig_87), msg_87, - (word32)sizeof(msg_87), &res, key), 0); - ExpectIntEQ(res, 1); -#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT - ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); - ExpectIntEQ(wc_dilithium_import_public(pk_87_draft, - (word32)sizeof(pk_87_draft), key), 0); - ExpectIntEQ(wc_dilithium_verify_msg(sig_87_draft, - (word32)sizeof(sig_87_draft), msg_87_draft, - (word32)sizeof(msg_87_draft), &res, key), 0); - ExpectIntEQ(res, 1); -#endif -#endif - - wc_dilithium_free(key); - XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); -#endif - return EXPECT_RESULT(); -} /* * Testing wc_SetSubjectBuffer @@ -40878,113 +18427,6 @@ static int test_wc_i2d_PKCS12(void) } -/* Testing wc_SignatureGetSize() for signature type ECC */ -static int test_wc_SignatureGetSize_ecc(void) -{ - EXPECT_DECLS; -#if !defined(NO_SIG_WRAPPER) && defined(HAVE_ECC) && !defined(NO_ECC256) - enum wc_SignatureType sig_type; - word32 key_len; - ecc_key ecc; - const char* qx = - "fa2737fb93488d19caef11ae7faf6b7f4bcd67b286e3fc54e8a65c2b74aeccb0"; - const char* qy = - "d4ccd6dae698208aa8c3a6f39e45510d03be09b2f124bfc067856c324f9b4d09"; - const char* d = - "be34baa8d040a3b991f9075b56ba292f755b90e4b6dc10dad36715c33cfdac25"; - - XMEMSET(&ecc, 0, sizeof(ecc_key)); - - ExpectIntEQ(wc_ecc_init(&ecc), 0); - ExpectIntEQ(wc_ecc_import_raw(&ecc, qx, qy, d, "SECP256R1"), 0); - /* Input for signature type ECC */ - sig_type = WC_SIGNATURE_TYPE_ECC; - key_len = sizeof(ecc_key); - ExpectIntGT(wc_SignatureGetSize(sig_type, &ecc, key_len), 0); - - /* Test bad args */ - /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ - sig_type = (enum wc_SignatureType) 100; - /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ - ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - sig_type = WC_SIGNATURE_TYPE_ECC; - ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), 0); - key_len = (word32)0; - ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_ecc_free(&ecc), 0); -#endif /* !NO_SIG_WRAPPER && HAVE_ECC && !NO_ECC256 */ - return EXPECT_RESULT(); -} /* END test_wc_SignatureGetSize_ecc() */ - -/* Testing wc_SignatureGetSize() for signature type rsa */ -static int test_wc_SignatureGetSize_rsa(void) -{ - EXPECT_DECLS; -#if !defined(NO_SIG_WRAPPER) && !defined(NO_RSA) - enum wc_SignatureType sig_type; - word32 key_len; - word32 idx = 0; - RsaKey rsa_key; - byte* tmp = NULL; - size_t bytes; - - XMEMSET(&rsa_key, 0, sizeof(RsaKey)); - - #ifdef USE_CERT_BUFFERS_1024 - bytes = (size_t)sizeof_client_key_der_1024; - if (bytes < (size_t)sizeof_client_key_der_1024) - bytes = (size_t)sizeof_client_cert_der_1024; - #elif defined(USE_CERT_BUFFERS_2048) - bytes = (size_t)sizeof_client_key_der_2048; - if (bytes < (size_t)sizeof_client_cert_der_2048) - bytes = (size_t)sizeof_client_cert_der_2048; - #else - bytes = FOURK_BUF; - #endif - - ExpectNotNull(tmp = (byte*)XMALLOC(bytes, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); - if (tmp != NULL) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_key_der_1024, (size_t)sizeof_client_key_der_1024); - #elif defined(USE_CERT_BUFFERS_2048) - XMEMCPY(tmp, client_key_der_2048, (size_t)sizeof_client_key_der_2048); - #elif !defined(NO_FILESYSTEM) - XFILE file = XBADFILE; - ExpectTrue((file = XFOPEN(clientKey, "rb")) != XBADFILE); - ExpectIntGT(bytes = (size_t)XFREAD(tmp, 1, FOURK_BUF, file), 0); - if (file != XBADFILE) - XFCLOSE(file); - } - #else - ExpectFail(); - #endif - } - - ExpectIntEQ(wc_InitRsaKey_ex(&rsa_key, HEAP_HINT, testDevId), 0); - ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &rsa_key, (word32)bytes), 0); - /* Input for signature type RSA */ - sig_type = WC_SIGNATURE_TYPE_RSA; - key_len = sizeof(RsaKey); - ExpectIntGT(wc_SignatureGetSize(sig_type, &rsa_key, key_len), 0); - - /* Test bad args */ - /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ - sig_type = (enum wc_SignatureType)100; - /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ - ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - sig_type = WC_SIGNATURE_TYPE_RSA; - ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - key_len = (word32)0; - ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRsaKey(&rsa_key), 0); - XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); -#endif /* !NO_SIG_WRAPPER && !NO_RSA */ - return EXPECT_RESULT(); -} /* END test_wc_SignatureGetSize_rsa(void) */ - /*----------------------------------------------------------------------------* | ASN.1 Tests *----------------------------------------------------------------------------*/ @@ -67683,171 +45125,6 @@ static int test_MakeCertWithCaFalse(void) return EXPECT_RESULT(); } -/*----------------------------------------------------------------------------* - | wolfCrypt ECC - *----------------------------------------------------------------------------*/ - -static int test_wc_ecc_get_curve_size_from_name(void) -{ - EXPECT_DECLS; -#ifdef HAVE_ECC - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ExpectIntEQ(wc_ecc_get_curve_size_from_name("SECP256R1"), 32); - #endif - /* invalid case */ - ExpectIntEQ(wc_ecc_get_curve_size_from_name("BADCURVE"), -1); - /* NULL input */ - ExpectIntEQ(wc_ecc_get_curve_size_from_name(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif /* HAVE_ECC */ - return EXPECT_RESULT(); -} - -static int test_wc_ecc_get_curve_id_from_name(void) -{ - EXPECT_DECLS; -#ifdef HAVE_ECC - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), - ECC_SECP256R1); - #endif - /* invalid case */ - ExpectIntEQ(wc_ecc_get_curve_id_from_name("BADCURVE"), -1); - /* NULL input */ - ExpectIntEQ(wc_ecc_get_curve_id_from_name(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif /* HAVE_ECC */ - return EXPECT_RESULT(); -} - -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ - !defined(HAVE_SELFTEST) && \ - !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) -static int test_wc_ecc_get_curve_id_from_dp_params(void) -{ - EXPECT_DECLS; -#if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ecc_key* key; - const ecc_set_type* params = NULL; - int ret; -#endif - WOLFSSL_EC_KEY *ecKey = NULL; - - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), ECC_SECP256R1); - ExpectNotNull(ecKey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1)); - - if (EXPECT_SUCCESS()) { - ret = EC_KEY_generate_key(ecKey); - } else - ret = 0; - - if (ret == 1) { - /* normal test */ - key = (ecc_key*)ecKey->internal; - if (key != NULL) { - params = key->dp; - } - - ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(params), - ECC_SECP256R1); - } - #endif - /* invalid case, NULL input*/ - ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wolfSSL_EC_KEY_free(ecKey); - - return EXPECT_RESULT(); -} -#endif /* defined(OPENSSL_EXTRA) && defined(HAVE_ECC) */ - -static int test_wc_ecc_get_curve_id_from_params(void) -{ - EXPECT_DECLS; -#ifdef HAVE_ECC - const byte prime[] = - { - 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF - }; - - const byte primeInvalid[] = - { - 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x01 - }; - - const byte Af[] = - { - 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC - }; - - const byte Bf[] = - { - 0x5A,0xC6,0x35,0xD8,0xAA,0x3A,0x93,0xE7, - 0xB3,0xEB,0xBD,0x55,0x76,0x98,0x86,0xBC, - 0x65,0x1D,0x06,0xB0,0xCC,0x53,0xB0,0xF6, - 0x3B,0xCE,0x3C,0x3E,0x27,0xD2,0x60,0x4B - }; - - const byte order[] = - { - 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xBC,0xE6,0xFA,0xAD,0xA7,0x17,0x9E,0x84, - 0xF3,0xB9,0xCA,0xC2,0xFC,0x63,0x25,0x51 - }; - - const byte Gx[] = - { - 0x6B,0x17,0xD1,0xF2,0xE1,0x2C,0x42,0x47, - 0xF8,0xBC,0xE6,0xE5,0x63,0xA4,0x40,0xF2, - 0x77,0x03,0x7D,0x81,0x2D,0xEB,0x33,0xA0, - 0xF4,0xA1,0x39,0x45,0xD8,0x98,0xC2,0x96 - }; - - const byte Gy[] = - { - 0x4F,0xE3,0x42,0xE2,0xFE,0x1A,0x7F,0x9B, - 0x8E,0xE7,0xEB,0x4A,0x7C,0x0F,0x9E,0x16, - 0x2B,0xCE,0x33,0x57,0x6B,0x31,0x5E,0xCE, - 0xCB,0xB6,0x40,0x68,0x37,0xBF,0x51,0xF5 - }; - - int cofactor = 1; - int fieldSize = 256; - - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, - prime, sizeof(prime), Af, sizeof(Af), Bf, sizeof(Bf), - order, sizeof(order), Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), - ECC_SECP256R1); - #endif - - /* invalid case, fieldSize = 0 */ - ExpectIntEQ(wc_ecc_get_curve_id_from_params(0, prime, sizeof(prime), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); - - /* invalid case, NULL prime */ - ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, NULL, sizeof(prime), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - /* invalid case, invalid prime */ - ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, - primeInvalid, sizeof(primeInvalid), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); -#endif - return EXPECT_RESULT(); -} static int test_wolfSSL_EVP_PKEY_encrypt(void) { EXPECT_DECLS; @@ -71120,248 +48397,6 @@ static int test_DhCallbacks(void) } #endif /* HAVE_PK_CALLBACKS */ -#ifdef HAVE_HASHDRBG - -#ifdef TEST_RESEED_INTERVAL -static int test_wc_RNG_GenerateBlock_Reseed(void) -{ - EXPECT_DECLS; - int i; - WC_RNG rng; - byte key[32]; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - for (i = 0; i < WC_RESEED_INTERVAL + 10; i++) { - ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key, sizeof(key)), 0); - } - DoExpectIntEQ(wc_FreeRng(&rng), 0); - - return EXPECT_RESULT(); -} -#endif /* TEST_RESEED_INTERVAL */ - -static int test_wc_RNG_GenerateBlock(void) -{ - EXPECT_DECLS; - int i; - WC_RNG rng; - byte key[32]; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - for (i = 0; i < 10; i++) { - ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key, sizeof(key)), 0); - } - DoExpectIntEQ(wc_FreeRng(&rng), 0); - - return EXPECT_RESULT(); -} - -#endif /* HAVE_HASHDRBG */ - -/* - * Testing get_rand_digit - */ -static int test_get_rand_digit(void) -{ - EXPECT_DECLS; -#if !defined(WC_NO_RNG) && defined(WOLFSSL_PUBLIC_MP) - WC_RNG rng; - mp_digit d; - - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(get_rand_digit(&rng, &d), 0); - ExpectIntEQ(get_rand_digit(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(get_rand_digit(NULL, &d), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(get_rand_digit(&rng, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* End test_get_rand_digit*/ - -/* - * Testing get_digit_count - */ -static int test_get_digit_count(void) -{ - EXPECT_DECLS; -#if !defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_PUBLIC_MP) - mp_int a; - - XMEMSET(&a, 0, sizeof(mp_int)); - - ExpectIntEQ(mp_init(&a), 0); - - ExpectIntEQ(get_digit_count(NULL), 0); - ExpectIntEQ(get_digit_count(&a), 0); - - mp_clear(&a); -#endif - return EXPECT_RESULT(); -} /* End test_get_digit_count*/ - -/* - * Testing mp_cond_copy - */ -static int test_mp_cond_copy(void) -{ - EXPECT_DECLS; -#if (defined(HAVE_ECC) || defined(WOLFSSL_MP_COND_COPY)) && \ - defined(WOLFSSL_PUBLIC_MP) - mp_int a; - mp_int b; - int copy = 0; - - XMEMSET(&a, 0, sizeof(mp_int)); - XMEMSET(&b, 0, sizeof(mp_int)); - - ExpectIntEQ(mp_init(&a), MP_OKAY); - ExpectIntEQ(mp_init(&b), MP_OKAY); - - ExpectIntEQ(mp_cond_copy(NULL, copy, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(mp_cond_copy(NULL, copy, &b), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(mp_cond_copy(&a, copy, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(mp_cond_copy(&a, copy, &b), 0); - - mp_clear(&a); - mp_clear(&b); -#endif - return EXPECT_RESULT(); -} /* End test_mp_cond_copy*/ - -/* - * Testing mp_rand - */ -static int test_mp_rand(void) -{ - EXPECT_DECLS; -#if defined(WC_RSA_BLINDING) && defined(WOLFSSL_PUBLIC_MP) - mp_int a; - WC_RNG rng; - int digits = 1; - - XMEMSET(&a, 0, sizeof(mp_int)); - XMEMSET(&rng, 0, sizeof(WC_RNG)); - - ExpectIntEQ(mp_init(&a), MP_OKAY); - ExpectIntEQ(wc_InitRng(&rng), 0); - - ExpectIntEQ(mp_rand(&a, digits, NULL), WC_NO_ERR_TRACE(MISSING_RNG_E)); - ExpectIntEQ(mp_rand(NULL, digits, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(mp_rand(&a, 0, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(mp_rand(&a, digits, &rng), 0); - - mp_clear(&a); - DoExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* End test_mp_rand*/ - -/* - * Testing get_digit - */ -static int test_get_digit(void) -{ - EXPECT_DECLS; -#if defined(WOLFSSL_PUBLIC_MP) - mp_int a; - int n = 0; - - XMEMSET(&a, 0, sizeof(mp_int)); - - ExpectIntEQ(mp_init(&a), MP_OKAY); - ExpectIntEQ(get_digit(NULL, n), 0); - ExpectIntEQ(get_digit(&a, n), 0); - - mp_clear(&a); -#endif - return EXPECT_RESULT(); -} /* End test_get_digit*/ - -/* - * Testing wc_export_int - */ -static int test_wc_export_int(void) -{ - EXPECT_DECLS; -#if (defined(HAVE_ECC) || defined(WOLFSSL_EXPORT_INT)) && \ - defined(WOLFSSL_PUBLIC_MP) - mp_int mp; - byte buf[32]; - word32 keySz = (word32)sizeof(buf); - word32 len = (word32)sizeof(buf); - - XMEMSET(&mp, 0, sizeof(mp_int)); - - ExpectIntEQ(mp_init(&mp), MP_OKAY); - ExpectIntEQ(mp_set(&mp, 1234), 0); - - ExpectIntEQ(wc_export_int(NULL, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - len = sizeof(buf)-1; - ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), - WC_NO_ERR_TRACE(BUFFER_E)); - len = sizeof(buf); - ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), 0); - len = 4; /* test input too small */ - ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), WC_NO_ERR_TRACE(BUFFER_E)); - len = sizeof(buf); - ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), 0); - /* hex version of 1234 is 04D2 and should be 4 digits + 1 null */ - ExpectIntEQ(len, 5); - - mp_clear(&mp); -#endif - return EXPECT_RESULT(); - -} /* End test_wc_export_int*/ - -static int test_wc_InitRngNonce(void) -{ - EXPECT_DECLS; -#if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ - HAVE_FIPS_VERSION >= 2)) - WC_RNG rng; - byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" - "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; - word32 nonceSz = sizeof(nonce); - - ExpectIntEQ(wc_InitRngNonce(&rng, nonce, nonceSz), 0); - ExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* End test_wc_InitRngNonce*/ - -/* - * Testing wc_InitRngNonce_ex - */ -static int test_wc_InitRngNonce_ex(void) -{ - EXPECT_DECLS; -#if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ - HAVE_FIPS_VERSION >= 2)) - WC_RNG rng; - byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" - "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; - word32 nonceSz = sizeof(nonce); - - ExpectIntEQ(wc_InitRngNonce_ex(&rng, nonce, nonceSz, HEAP_HINT, testDevId), - 0); - ExpectIntEQ(wc_FreeRng(&rng), 0); -#endif - return EXPECT_RESULT(); -} /* End test_wc_InitRngNonce_ex */ - - static int test_wolfSSL_X509_CRL(void) { @@ -89089,17 +66124,8 @@ static int test_wolfSSL_inject(void) | Main *----------------------------------------------------------------------------*/ -typedef int (*TEST_FUNC)(void); -typedef struct { - const char *name; - TEST_FUNC func; - byte run:1; - byte fail:1; -} TEST_CASE; - -#define TEST_DECL(func) { #func, func, 0, 0 } - int testAll = 1; +int stopOnFail = 0; TEST_CASE testCases[] = { TEST_DECL(test_fileAccess), @@ -89121,446 +66147,100 @@ TEST_CASE testCases[] = { /* Digests */ /* test_md2.c */ - TEST_DECL(test_wc_InitMd2), - TEST_DECL(test_wc_Md2Update), - TEST_DECL(test_wc_Md2Final), - TEST_DECL(test_wc_Md2_KATs), - TEST_DECL(test_wc_Md2_other), - TEST_DECL(test_wc_Md2Hash), - + TEST_MD2_DECLS, /* test_md4.c */ - TEST_DECL(test_wc_InitMd4), - TEST_DECL(test_wc_Md4Update), - TEST_DECL(test_wc_Md4Final), - TEST_DECL(test_wc_Md4_KATs), - TEST_DECL(test_wc_Md4_other), - + TEST_MD4_DECLS, /* test_md5.c */ - TEST_DECL(test_wc_InitMd5), - TEST_DECL(test_wc_Md5Update), - TEST_DECL(test_wc_Md5Final), - TEST_DECL(test_wc_Md5_KATs), - TEST_DECL(test_wc_Md5_other), - TEST_DECL(test_wc_Md5Copy), - TEST_DECL(test_wc_Md5GetHash), - TEST_DECL(test_wc_Md5Transform), - TEST_DECL(test_wc_Md5_Flags), - + TEST_MD5_DECLS, /* test_sha.c */ - TEST_DECL(test_wc_InitSha), - TEST_DECL(test_wc_ShaUpdate), - TEST_DECL(test_wc_ShaFinal), - TEST_DECL(test_wc_ShaFinalRaw), - TEST_DECL(test_wc_Sha_KATs), - TEST_DECL(test_wc_Sha_other), - TEST_DECL(test_wc_ShaCopy), - TEST_DECL(test_wc_ShaGetHash), - TEST_DECL(test_wc_ShaTransform), - TEST_DECL(test_wc_Sha_Flags), - + TEST_SHA_DECLS, /* test_sha256.c */ - TEST_DECL(test_wc_InitSha256), - TEST_DECL(test_wc_Sha256Update), - TEST_DECL(test_wc_Sha256Final), - TEST_DECL(test_wc_Sha256FinalRaw), - TEST_DECL(test_wc_Sha256_KATs), - TEST_DECL(test_wc_Sha256_other), - TEST_DECL(test_wc_Sha256Copy), - TEST_DECL(test_wc_Sha256GetHash), - TEST_DECL(test_wc_Sha256Transform), - TEST_DECL(test_wc_Sha256_Flags), - - TEST_DECL(test_wc_InitSha224), - TEST_DECL(test_wc_Sha224Update), - TEST_DECL(test_wc_Sha224Final), - TEST_DECL(test_wc_Sha224_KATs), - TEST_DECL(test_wc_Sha224_other), - TEST_DECL(test_wc_Sha224Copy), - TEST_DECL(test_wc_Sha224GetHash), - TEST_DECL(test_wc_Sha224_Flags), - + TEST_SHA256_DECLS, + TEST_SHA224_DECLS, /* test_sha512.c */ - TEST_DECL(test_wc_InitSha512), - TEST_DECL(test_wc_Sha512Update), - TEST_DECL(test_wc_Sha512Final), - TEST_DECL(test_wc_Sha512FinalRaw), - TEST_DECL(test_wc_Sha512_KATs), - TEST_DECL(test_wc_Sha512_other), - TEST_DECL(test_wc_Sha512Copy), - TEST_DECL(test_wc_Sha512GetHash), - TEST_DECL(test_wc_Sha512Transform), - TEST_DECL(test_wc_Sha512_Flags), - - TEST_DECL(test_wc_InitSha512_224), - TEST_DECL(test_wc_Sha512_224Update), - TEST_DECL(test_wc_Sha512_224Final), - TEST_DECL(test_wc_Sha512_224FinalRaw), - TEST_DECL(test_wc_Sha512_224_KATs), - TEST_DECL(test_wc_Sha512_224_other), - TEST_DECL(test_wc_Sha512_224Copy), - TEST_DECL(test_wc_Sha512_224GetHash), - TEST_DECL(test_wc_Sha512_224Transform), - TEST_DECL(test_wc_Sha512_224_Flags), - - TEST_DECL(test_wc_InitSha512_256), - TEST_DECL(test_wc_Sha512_256Update), - TEST_DECL(test_wc_Sha512_256Final), - TEST_DECL(test_wc_Sha512_256FinalRaw), - TEST_DECL(test_wc_Sha512_256_KATs), - TEST_DECL(test_wc_Sha512_256_other), - TEST_DECL(test_wc_Sha512_256Copy), - TEST_DECL(test_wc_Sha512_256GetHash), - TEST_DECL(test_wc_Sha512_256Transform), - TEST_DECL(test_wc_Sha512_256_Flags), - - TEST_DECL(test_wc_InitSha384), - TEST_DECL(test_wc_Sha384Update), - TEST_DECL(test_wc_Sha384Final), - TEST_DECL(test_wc_Sha384FinalRaw), - TEST_DECL(test_wc_Sha384_KATs), - TEST_DECL(test_wc_Sha384_other), - TEST_DECL(test_wc_Sha384Copy), - TEST_DECL(test_wc_Sha384GetHash), - TEST_DECL(test_wc_Sha384_Flags), - + TEST_SHA512_DECLS, + TEST_SHA512_224_DECLS, + TEST_SHA512_256_DECLS, + TEST_SHA384_DECLS, /* test_sha3.c */ - TEST_DECL(test_wc_InitSha3), - TEST_DECL(test_wc_Sha3_Update), - TEST_DECL(test_wc_Sha3_Final), - TEST_DECL(test_wc_Sha3_224_KATs), - TEST_DECL(test_wc_Sha3_256_KATs), - TEST_DECL(test_wc_Sha3_384_KATs), - TEST_DECL(test_wc_Sha3_512_KATs), - TEST_DECL(test_wc_Sha3_other), - TEST_DECL(test_wc_Sha3_Copy), - TEST_DECL(test_wc_Sha3_GetHash), - TEST_DECL(test_wc_Sha3_Flags), - - TEST_DECL(test_wc_InitShake128), - TEST_DECL(test_wc_Shake128_Update), - TEST_DECL(test_wc_Shake128_Final), - TEST_DECL(test_wc_Shake128_KATs), - TEST_DECL(test_wc_Shake128_other), - TEST_DECL(test_wc_Shake128_Copy), - TEST_DECL(test_wc_Shake128Hash), - TEST_DECL(test_wc_Shake128_Absorb), - TEST_DECL(test_wc_Shake128_SqueezeBlocks), - TEST_DECL(test_wc_Shake128_XOF), - - TEST_DECL(test_wc_InitShake256), - TEST_DECL(test_wc_Shake256_Update), - TEST_DECL(test_wc_Shake256_Final), - TEST_DECL(test_wc_Shake256_KATs), - TEST_DECL(test_wc_Shake256_other), - TEST_DECL(test_wc_Shake256_Copy), - TEST_DECL(test_wc_Shake256Hash), - TEST_DECL(test_wc_Shake256_Absorb), - TEST_DECL(test_wc_Shake256_SqueezeBlocks), - TEST_DECL(test_wc_Shake256_XOF), - + TEST_SHA3_DECLS, + TEST_SHAKE128_DECLS, + TEST_SHAKE256_DECLS, /* test_blake.c */ - TEST_DECL(test_wc_InitBlake2b), - TEST_DECL(test_wc_InitBlake2b_WithKey), - TEST_DECL(test_wc_Blake2bUpdate), - TEST_DECL(test_wc_Blake2bFinal), - TEST_DECL(test_wc_Blake2b_KATs), - TEST_DECL(test_wc_Blake2b_other), - - TEST_DECL(test_wc_InitBlake2s), - TEST_DECL(test_wc_InitBlake2s_WithKey), - TEST_DECL(test_wc_Blake2sUpdate), - TEST_DECL(test_wc_Blake2sFinal), - TEST_DECL(test_wc_Blake2s_KATs), - TEST_DECL(test_wc_Blake2s_other), - + TEST_BLAKE2B_DECLS, + TEST_BLAKE2S_DECLS, /* test_sm3.c: SM3 Digest */ - TEST_DECL(test_wc_InitSm3), - TEST_DECL(test_wc_Sm3Update), - TEST_DECL(test_wc_Sm3Final), - TEST_DECL(test_wc_Sm3FinalRaw), - TEST_DECL(test_wc_Sm3_KATs), - TEST_DECL(test_wc_Sm3_other), - TEST_DECL(test_wc_Sm3Copy), - TEST_DECL(test_wc_Sm3GetHash), - TEST_DECL(test_wc_Sm3_Flags), - + TEST_SM3_DECLS, /* test_ripemd.c */ - TEST_DECL(test_wc_InitRipeMd), - TEST_DECL(test_wc_RipeMdUpdate), - TEST_DECL(test_wc_RipeMdFinal), - TEST_DECL(test_wc_RipeMd_KATs), - TEST_DECL(test_wc_RipeMd_other), - + TEST_RIPEMD_DECLS, /* test_hash.c */ - TEST_DECL(test_wc_HashInit), - TEST_DECL(test_wc_HashUpdate), - TEST_DECL(test_wc_HashFinal), - TEST_DECL(test_wc_HashNewDelete), - TEST_DECL(test_wc_HashGetDigestSize), - TEST_DECL(test_wc_HashGetBlockSize), - TEST_DECL(test_wc_Hash), - TEST_DECL(test_wc_HashSetFlags), - TEST_DECL(test_wc_HashGetFlags), - TEST_DECL(test_wc_Hash_Algs), - TEST_DECL(test_wc_HashGetOID), - TEST_DECL(test_wc_OidGetHash), + TEST_HASH_DECLS, /* HMAC */ - TEST_DECL(test_wc_Md5HmacSetKey), - TEST_DECL(test_wc_Md5HmacUpdate), - TEST_DECL(test_wc_Md5HmacFinal), - TEST_DECL(test_wc_ShaHmacSetKey), - TEST_DECL(test_wc_ShaHmacUpdate), - TEST_DECL(test_wc_ShaHmacFinal), - TEST_DECL(test_wc_Sha224HmacSetKey), - TEST_DECL(test_wc_Sha224HmacUpdate), - TEST_DECL(test_wc_Sha224HmacFinal), - TEST_DECL(test_wc_Sha256HmacSetKey), - TEST_DECL(test_wc_Sha256HmacUpdate), - TEST_DECL(test_wc_Sha256HmacFinal), - TEST_DECL(test_wc_Sha384HmacSetKey), - TEST_DECL(test_wc_Sha384HmacUpdate), - TEST_DECL(test_wc_Sha384HmacFinal), - + TEST_HMAC_DECLS, /* CMAC */ - TEST_DECL(test_wc_InitCmac), - TEST_DECL(test_wc_CmacUpdate), - TEST_DECL(test_wc_CmacFinal), - TEST_DECL(test_wc_AesCmacGenerate), + TEST_CMAC_DECLS, /* Cipher */ - TEST_DECL(test_wc_Des3_SetIV), - TEST_DECL(test_wc_Des3_SetKey), - TEST_DECL(test_wc_Des3_CbcEncryptDecrypt), - TEST_DECL(test_wc_Des3_EcbEncrypt), - /* wc_encrypt API */ - TEST_DECL(test_wc_Des3_CbcEncryptDecryptWithKey), - - TEST_DECL(test_wc_Chacha_SetKey), - TEST_DECL(test_wc_Chacha_Process), - TEST_DECL(test_wc_Poly1305SetKey), - TEST_DECL(test_wc_ChaCha20Poly1305_aead), - - TEST_DECL(test_wc_CamelliaSetKey), - TEST_DECL(test_wc_CamelliaSetIV), - TEST_DECL(test_wc_CamelliaEncryptDecryptDirect), - TEST_DECL(test_wc_CamelliaCbcEncryptDecrypt), - - TEST_DECL(test_wc_Arc4SetKey), - TEST_DECL(test_wc_Arc4Process), - - TEST_DECL(test_wc_Rc2SetKey), - TEST_DECL(test_wc_Rc2SetIV), - TEST_DECL(test_wc_Rc2EcbEncryptDecrypt), - TEST_DECL(test_wc_Rc2CbcEncryptDecrypt), + /* Triple-DES */ + TEST_DES3_DECLS, + /* Chacha20 */ + TEST_CHACHA_DECLS, + /* Poly1305 */ + TEST_POLY1305_DECLS, + /* Chacha20-Poly1305 */ + TEST_CHACHA20_POLY1305_DECLS, + /* Camellia */ + TEST_CAMELLIA_DECLS, + /* ARC4 */ + TEST_ARC4_DECLS, + /* RC2 */ + TEST_RC2_DECLS, /* AES cipher and GMAC. */ - TEST_DECL(test_wc_AesSetKey), - TEST_DECL(test_wc_AesSetIV), - TEST_DECL(test_wc_AesCbcEncryptDecrypt), - TEST_DECL(test_wc_AesCtrEncryptDecrypt), - TEST_DECL(test_wc_AesGcmSetKey), - TEST_DECL(test_wc_AesGcmEncryptDecrypt), - TEST_DECL(test_wc_AesGcmMixedEncDecLongIV), - TEST_DECL(test_wc_AesGcmStream), - TEST_DECL(test_wc_GmacSetKey), - TEST_DECL(test_wc_GmacUpdate), - TEST_DECL(test_wc_AesCcmSetKey), - TEST_DECL(test_wc_AesCcmEncryptDecrypt), + TEST_AES_DECLS, #if defined(WOLFSSL_AES_EAX) && \ (!defined(HAVE_FIPS) || FIPS_VERSION_GE(5, 3)) && !defined(HAVE_SELFTEST) - TEST_DECL(test_wc_AesEaxVectors), - TEST_DECL(test_wc_AesEaxEncryptAuth), - TEST_DECL(test_wc_AesEaxDecryptAuth), + TEST_AES_EAX_DECLS, #endif /* WOLFSSL_AES_EAX */ - + TEST_GMAC_DECLS, /* Ascon */ - TEST_DECL(test_ascon_hash256), - TEST_DECL(test_ascon_aead128), - + TEST_ASCON_DECLS, /* SM4 cipher */ - TEST_DECL(test_wc_Sm4), - TEST_DECL(test_wc_Sm4Ecb), - TEST_DECL(test_wc_Sm4Cbc), - TEST_DECL(test_wc_Sm4Ctr), - TEST_DECL(test_wc_Sm4Gcm), - TEST_DECL(test_wc_Sm4Ccm), + TEST_SM4_DECLS, + /* wc_encrypt API */ + TEST_WC_ENCRYPT_DECLS, /* RNG tests */ -#ifdef HAVE_HASHDRBG -#ifdef TEST_RESEED_INTERVAL - TEST_DECL(test_wc_RNG_GenerateBlock_Reseed), -#endif - TEST_DECL(test_wc_RNG_GenerateBlock), -#endif - TEST_DECL(test_get_rand_digit), - TEST_DECL(test_wc_InitRngNonce), - TEST_DECL(test_wc_InitRngNonce_ex), - - /* MP API tests */ - TEST_DECL(test_get_digit_count), - TEST_DECL(test_mp_cond_copy), - TEST_DECL(test_mp_rand), - TEST_DECL(test_get_digit), - TEST_DECL(test_wc_export_int), + TEST_RANDOM_DECLS, + /* Public key */ + /* wolfmath MP API tests */ + TEST_WOLFMATH_DECLS, /* RSA */ - TEST_DECL(test_wc_InitRsaKey), - TEST_DECL(test_wc_RsaPrivateKeyDecode), - TEST_DECL(test_wc_RsaPublicKeyDecode), - TEST_DECL(test_wc_RsaPublicKeyDecodeRaw), - TEST_DECL(test_wc_RsaPrivateKeyDecodeRaw), - TEST_DECL(test_wc_MakeRsaKey), - TEST_DECL(test_wc_CheckProbablePrime), - TEST_DECL(test_wc_RsaPSS_Verify), - TEST_DECL(test_wc_RsaPSS_VerifyCheck), - TEST_DECL(test_wc_RsaPSS_VerifyCheckInline), - TEST_DECL(test_wc_RsaKeyToDer), - TEST_DECL(test_wc_RsaKeyToPublicDer), - TEST_DECL(test_wc_RsaPublicEncryptDecrypt), - TEST_DECL(test_wc_RsaPublicEncryptDecrypt_ex), - TEST_DECL(test_wc_RsaEncryptSize), - TEST_DECL(test_wc_RsaSSL_SignVerify), - TEST_DECL(test_wc_RsaFlattenPublicKey), - TEST_DECL(test_RsaDecryptBoundsCheck), - + TEST_RSA_DECLS, /* DSA */ - TEST_DECL(test_wc_InitDsaKey), - TEST_DECL(test_wc_DsaSignVerify), - TEST_DECL(test_wc_DsaPublicPrivateKeyDecode), - TEST_DECL(test_wc_MakeDsaKey), - TEST_DECL(test_wc_DsaKeyToDer), - TEST_DECL(test_wc_DsaKeyToPublicDer), - TEST_DECL(test_wc_DsaImportParamsRaw), - TEST_DECL(test_wc_DsaImportParamsRawCheck), - TEST_DECL(test_wc_DsaExportParamsRaw), - TEST_DECL(test_wc_DsaExportKeyRaw), - + TEST_DSA_DECLS, /* DH */ - TEST_DECL(test_wc_DhPublicKeyDecode), - + TEST_DH_DECLS, /* wolfCrypt ECC tests */ - TEST_DECL(test_wc_ecc_get_curve_size_from_name), - TEST_DECL(test_wc_ecc_get_curve_id_from_name), - TEST_DECL(test_wc_ecc_get_curve_id_from_params), -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ - !defined(HAVE_SELFTEST) && \ - !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) - TEST_DECL(test_wc_ecc_get_curve_id_from_dp_params), -#endif - TEST_DECL(test_wc_ecc_make_key), - TEST_DECL(test_wc_ecc_init), - TEST_DECL(test_wc_ecc_check_key), - TEST_DECL(test_wc_ecc_get_generator), - TEST_DECL(test_wc_ecc_size), - TEST_DECL(test_wc_ecc_params), - TEST_DECL(test_wc_ecc_signVerify_hash), - TEST_DECL(test_wc_ecc_shared_secret), - TEST_DECL(test_wc_ecc_export_x963), - TEST_DECL(test_wc_ecc_export_x963_ex), - TEST_DECL(test_wc_ecc_import_x963), - TEST_DECL(test_wc_ecc_import_private_key), - TEST_DECL(test_wc_ecc_export_private_only), - TEST_DECL(test_wc_ecc_rs_to_sig), - TEST_DECL(test_wc_ecc_import_raw), - TEST_DECL(test_wc_ecc_import_unsigned), - TEST_DECL(test_wc_ecc_sig_size), - TEST_DECL(test_wc_ecc_ctx_new), - TEST_DECL(test_wc_ecc_ctx_reset), - TEST_DECL(test_wc_ecc_ctx_set_peer_salt), - TEST_DECL(test_wc_ecc_ctx_set_info), - TEST_DECL(test_wc_ecc_encryptDecrypt), - TEST_DECL(test_wc_ecc_del_point), - TEST_DECL(test_wc_ecc_pointFns), - TEST_DECL(test_wc_ecc_shared_secret_ssh), - TEST_DECL(test_wc_ecc_verify_hash_ex), - TEST_DECL(test_wc_ecc_mulmod), - TEST_DECL(test_wc_ecc_is_valid_idx), - TEST_DECL(test_wc_ecc_get_curve_id_from_oid), - TEST_DECL(test_wc_ecc_sig_size_calc), - TEST_DECL(test_wc_EccPrivateKeyToDer), - + TEST_ECC_DECLS, /* SM2 elliptic curve */ - TEST_DECL(test_wc_ecc_sm2_make_key), - TEST_DECL(test_wc_ecc_sm2_shared_secret), - TEST_DECL(test_wc_ecc_sm2_create_digest), - TEST_DECL(test_wc_ecc_sm2_verify_hash_ex), - TEST_DECL(test_wc_ecc_sm2_verify_hash), - TEST_DECL(test_wc_ecc_sm2_sign_hash_ex), - TEST_DECL(test_wc_ecc_sm2_sign_hash), - + TEST_SM2_DECLS, /* Curve25519 */ - TEST_DECL(test_wc_curve25519_init), - TEST_DECL(test_wc_curve25519_size), - TEST_DECL(test_wc_curve25519_export_key_raw), - TEST_DECL(test_wc_curve25519_export_key_raw_ex), - TEST_DECL(test_wc_curve25519_make_key), - TEST_DECL(test_wc_curve25519_shared_secret_ex), - TEST_DECL(test_wc_curve25519_make_pub), - TEST_DECL(test_wc_curve25519_export_public_ex), - TEST_DECL(test_wc_curve25519_export_private_raw_ex), - TEST_DECL(test_wc_curve25519_import_private_raw_ex), - TEST_DECL(test_wc_curve25519_import_private), - + TEST_CURVE25519_DECLS, /* ED25519 */ - TEST_DECL(test_wc_ed25519_make_key), - TEST_DECL(test_wc_ed25519_init), - TEST_DECL(test_wc_ed25519_sign_msg), - TEST_DECL(test_wc_ed25519_import_public), - TEST_DECL(test_wc_ed25519_import_private_key), - TEST_DECL(test_wc_ed25519_export), - TEST_DECL(test_wc_ed25519_size), - TEST_DECL(test_wc_ed25519_exportKey), - TEST_DECL(test_wc_Ed25519PublicKeyToDer), - TEST_DECL(test_wc_Ed25519KeyToDer), - TEST_DECL(test_wc_Ed25519PrivateKeyToDer), - + TEST_ED25519_DECLS, /* Curve448 */ - TEST_DECL(test_wc_curve448_make_key), - TEST_DECL(test_wc_curve448_shared_secret_ex), - TEST_DECL(test_wc_curve448_export_public_ex), - TEST_DECL(test_wc_curve448_export_private_raw_ex), - TEST_DECL(test_wc_curve448_export_key_raw), - TEST_DECL(test_wc_curve448_import_private_raw_ex), - TEST_DECL(test_wc_curve448_import_private), - TEST_DECL(test_wc_curve448_init), - TEST_DECL(test_wc_curve448_size), - + TEST_CURVE448_DECLS, /* Ed448 */ - TEST_DECL(test_wc_ed448_make_key), - TEST_DECL(test_wc_ed448_init), - TEST_DECL(test_wc_ed448_sign_msg), - TEST_DECL(test_wc_ed448_import_public), - TEST_DECL(test_wc_ed448_import_private_key), - TEST_DECL(test_wc_ed448_export), - TEST_DECL(test_wc_ed448_size), - TEST_DECL(test_wc_ed448_exportKey), - TEST_DECL(test_wc_Ed448PublicKeyToDer), - TEST_DECL(test_wc_Ed448KeyToDer), - TEST_DECL(test_wc_Ed448PrivateKeyToDer), - TEST_DECL(test_wc_Curve448PrivateKeyToDer), - + TEST_ED448_DECLS, /* Kyber */ - TEST_DECL(test_wc_mlkem_make_key_kats), - TEST_DECL(test_wc_mlkem_encapsulate_kats), - TEST_DECL(test_wc_mlkem_decapsulate_kats), - + TEST_MLKEM_DECLS, /* Dilithium */ - TEST_DECL(test_wc_dilithium), - TEST_DECL(test_wc_dilithium_make_key), - TEST_DECL(test_wc_dilithium_sign), - TEST_DECL(test_wc_dilithium_verify), - TEST_DECL(test_wc_dilithium_sign_vfy), - TEST_DECL(test_wc_dilithium_check_key), - TEST_DECL(test_wc_dilithium_public_der_decode), - TEST_DECL(test_wc_dilithium_der), - TEST_DECL(test_wc_dilithium_make_key_from_seed), - TEST_DECL(test_wc_dilithium_sig_kats), - TEST_DECL(test_wc_dilithium_verify_kats), - + TEST_MLDSA_DECLS, /* Signature API */ - TEST_DECL(test_wc_SignatureGetSize_ecc), - TEST_DECL(test_wc_SignatureGetSize_rsa), + TEST_SIGNATURE_DECLS, /* PEM and DER APIs. */ TEST_DECL(test_wc_PemToDer), @@ -90619,6 +67299,11 @@ static void TestCleanup(void) #endif /* OPENSSL_EXTRA || DEBUG_WOLFSSL_VERBOSE */ } +void ApiTest_StopOnFail(void) +{ + stopOnFail = 1; +} + /* Print out all API test cases with numeric identifier. */ void ApiTest_PrintTestCases(void) @@ -90631,6 +67316,52 @@ void ApiTest_PrintTestCases(void) } } +/* Print out all API group names. + */ +void ApiTest_PrintGroups(void) +{ + int i; + const char* lastGroup = NULL; + + printf("All Groups:\n"); + for (i = 0; i < TEST_CASE_CNT; i++) { + if ((testCases[i].group != NULL) && ((lastGroup == NULL) || + XSTRCMP(testCases[i].group, lastGroup) != 0)) { + printf(" %s\n", testCases[i].group); + } + lastGroup = testCases[i].group; + } +} + + +/* Add test case with group name to the list to run. + * + * @param [in] name Group name of test case to run. + * @return 0 on success. + * @return BAD_FUNC_ARG when group name does not select any tests. + */ +int ApiTest_RunGroup(char* name) +{ + int i; + int cnt = 0; + + for (i = 0; i < TEST_CASE_CNT; i++) { + if ((testCases[i].group != NULL) && + (XSTRCMP(testCases[i].group, name) == 0)) { + testAll = 0; + testCases[i].run = 1; + cnt++; + } + } + + if (cnt == 0) { + printf("Group name not found: %s\n", name); + printf("Use --groups to see all test group names.\n"); + return BAD_FUNC_ARG; + } + return 0; +} + /* Add test case with index to the list to run. * * @param [in] idx Index of test case to run starting at 1. @@ -90762,6 +67493,9 @@ int ApiTest(void) #ifndef WOLFSSL_UNIT_TEST_NO_TIMING double timeDiff; #endif + int passed = 0; + int skipped = 0; + int failed = 0; printf(" Begin API Tests\n"); fflush(stdout); @@ -90794,6 +67528,8 @@ int ApiTest(void) #endif if (res == 0) { + const char* lastGroup = NULL; + for (i = 0; i < TEST_CASE_CNT; ++i) { EXPECT_DECLS; @@ -90809,7 +67545,17 @@ int ApiTest(void) TestSetup(); - printf(" %3d: %-52s:", i + 1, testCases[i].name); + if ((lastGroup != NULL) && ((testCases[i].group == NULL) || + XSTRCMP(testCases[i].group, lastGroup) != 0)) { + printf(" Group %s DONE\n", lastGroup); + } + if ((testCases[i].group != NULL) && ((lastGroup == NULL) || + XSTRCMP(testCases[i].group, lastGroup) != 0)) { + printf(" Group %s START\n", testCases[i].group); + } + lastGroup = testCases[i].group; + + printf(" %4d: %-51s:", i + 1, testCases[i].name); fflush(stdout); #ifndef WOLFSSL_UNIT_TEST_NO_TIMING timeDiff = gettime_secs(); @@ -90835,7 +67581,22 @@ int ApiTest(void) testCases[i].fail = ((ret <= 0) && (ret != TEST_SKIPPED)); res |= ((ret <= 0) && (ret != TEST_SKIPPED)); + if (testCases[i].fail) + failed++; + else if (ret == TEST_SKIPPED) + skipped++; + else + passed++; + TestCleanup(); + + if (testCases[i].fail && stopOnFail) { + testAll = 0; + break; + } + } + if (lastGroup != NULL) { + printf(" Group %s DONE\n", lastGroup); } } @@ -90878,6 +67639,8 @@ int ApiTest(void) #endif printf(" End API Tests\n"); + printf(" Failed/Skipped/Passed/All: %d/%d/%d/%d\n", failed, skipped, passed, + failed + skipped + passed); fflush(stdout); return res; } diff --git a/tests/api/api.h b/tests/api/api.h index af310d71f..447236e1c 100644 --- a/tests/api/api.h +++ b/tests/api/api.h @@ -23,6 +23,16 @@ #define WOLFCRYPT_TEST_API_H +/* force enable test buffers */ +#ifndef USE_CERT_BUFFERS_2048 + #define USE_CERT_BUFFERS_2048 +#endif +#ifndef USE_CERT_BUFFERS_256 + #define USE_CERT_BUFFERS_256 +#endif +#include + + #ifndef HEAP_HINT #define HEAP_HINT NULL #endif @@ -32,6 +42,126 @@ #define TEST_STRING_SZ 25 +#ifndef ONEK_BUF + #define ONEK_BUF 1024 +#endif +#ifndef TWOK_BUF + #define TWOK_BUF 2048 +#endif +#ifndef FOURK_BUF + #define FOURK_BUF 4096 +#endif + + +#ifndef NO_RSA +#define GEN_BUF 294 + +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) +#define TEST_RSA_BITS 1024 +#else +#define TEST_RSA_BITS 2048 +#endif +#define TEST_RSA_BYTES (TEST_RSA_BITS/8) +#endif /* !NO_RSA */ + +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + /* In FIPS builds, wc_MakeRsaKey() will return an error if it cannot find + * a probable prime in 5*(modLen/2) attempts. In non-FIPS builds, it keeps + * trying until it gets a probable prime. */ + #ifdef HAVE_FIPS + extern int MakeRsaKeyRetry(RsaKey* key, int size, long e, WC_RNG* rng); + #define MAKE_RSA_KEY(a, b, c, d) MakeRsaKeyRetry(a, b, c, d) + #else + #define MAKE_RSA_KEY(a, b, c, d) wc_MakeRsaKey(a, b, c, d) + #endif +#endif + +#ifndef NO_DSA + #ifndef DSA_SIG_SIZE + #define DSA_SIG_SIZE 40 + #endif + #ifndef MAX_DSA_PARAM_SIZE + #define MAX_DSA_PARAM_SIZE 256 + #endif +#endif + +#ifdef HAVE_ECC + #ifndef ECC_ASN963_MAX_BUF_SZ + #define ECC_ASN963_MAX_BUF_SZ 133 + #endif + #ifndef ECC_PRIV_KEY_BUF + #define ECC_PRIV_KEY_BUF 66 /* For non user defined curves. */ + #endif + /* ecc key sizes: 14, 16, 20, 24, 28, 30, 32, 40, 48, 64 */ + /* logic to choose right key ECC size */ + #if (defined(HAVE_ECC112) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 112 + #define KEY14 14 + #else + #define KEY14 32 + #endif + #if (defined(HAVE_ECC128) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 128 + #define KEY16 16 + #else + #define KEY16 32 + #endif + #if (defined(HAVE_ECC160) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 160 + #define KEY20 20 + #else + #define KEY20 32 + #endif + #if (defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)) && ECC_MIN_KEY_SZ <= 192 + #define KEY24 24 + #else + #define KEY24 32 + #endif + #if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES) + #define KEY28 28 + #else + #define KEY28 32 + #endif + #if defined(HAVE_ECC239) || defined(HAVE_ALL_CURVES) + #define KEY30 30 + #else + #define KEY30 32 + #endif + #define KEY32 32 + #if defined(HAVE_ECC320) || defined(HAVE_ALL_CURVES) + #define KEY40 40 + #else + #define KEY40 32 + #endif + #if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES) + #define KEY48 48 + #else + #define KEY48 32 + #endif + #if defined(HAVE_ECC512) || defined(HAVE_ALL_CURVES) + #define KEY64 64 + #else + #define KEY64 32 + #endif + + #if !defined(HAVE_COMP_KEY) + #if !defined(NOCOMP) + #define NOCOMP 0 + #endif + #else + #if !defined(COMP) + #define COMP 1 + #endif + #endif + #if !defined(DER_SZ) + #define DER_SZ(ks) ((ks) * 2 + 1) + #endif +#endif /* HAVE_ECC */ +#ifndef WOLFSSL_HAVE_ECC_KEY_GET_PRIV + /* FIPS build has replaced ecc.h. */ + #define wc_ecc_key_get_priv(key) (&((key)->k)) + #define WOLFSSL_HAVE_ECC_KEY_GET_PRIV +#endif + /* Returns the result based on whether check is true. * * @param [in] check Condition for success. @@ -53,6 +183,37 @@ ((check) ? TEST_SUCCESS : TEST_FAIL) #endif /* DEBUG_WOLFSSL_VERBOSE */ +#define PRINT_DATA(name, data, len) \ +do { \ + int ii; \ + fprintf(stderr, "%s\n", name); \ + for (ii = 0; ii < (int)(len); ii++) { \ + if ((ii % 8) == 0) \ + fprintf(stderr, " "); \ + fprintf(stderr, "0x%02x,", (data)[ii]); \ + if ((ii % 8) == 7) \ + fprintf(stderr, "\n"); \ + else \ + fprintf(stderr, " "); \ + } \ + fprintf(stderr, "\n"); \ +} while (0) + +#define PRINT_DATA_STR(name, data, len) \ +do { \ + int ii; \ + fprintf(stderr, "%s\n", name); \ + for (ii = 0; ii < (int)(len); ii++) { \ + if ((ii % 8) == 0) \ + fprintf(stderr, " \""); \ + fprintf(stderr, "\\x%02x", (data)[ii]); \ + if ((ii % 8) == 7) \ + fprintf(stderr, "\"\n"); \ + } \ + if ((ii % 8) != 0) \ + fprintf(stderr, "\""); \ + fprintf(stderr, "\n"); \ +} while (0) typedef struct testVector { const char* input; diff --git a/tests/api/api_decl.h b/tests/api/api_decl.h new file mode 100644 index 000000000..7dc064906 --- /dev/null +++ b/tests/api/api_decl.h @@ -0,0 +1,38 @@ +/* api_decl.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_API_DECL_H +#define WOLFCRYPT_TEST_API_DECL_H + +typedef int (*TEST_FUNC)(void); +typedef struct { + const char *group; + const char *name; + TEST_FUNC func; + byte run:1; + byte fail:1; +} TEST_CASE; + +#define TEST_DECL(func) { NULL, #func, func, 0, 0 } +#define TEST_DECL_GROUP(group, func) { group, #func, func, 0, 0 } + +#endif /* WOLFCRYPT_TEST_API_DECL_H */ + diff --git a/tests/api/include.am b/tests/api/include.am index d2893bc9e..8b9f863b4 100644 --- a/tests/api/include.am +++ b/tests/api/include.am @@ -30,8 +30,23 @@ tests_unit_test_SOURCES += tests/api/test_aes.c tests_unit_test_SOURCES += tests/api/test_ascon.c tests_unit_test_SOURCES += tests/api/test_sm4.c tests_unit_test_SOURCES += tests/api/test_wc_encrypt.c -# Signature Algorithm +# Random +tests_unit_test_SOURCES += tests/api/test_random.c +# MP +tests_unit_test_SOURCES += tests/api/test_wolfmath.c +# Public Key Algorithm +tests_unit_test_SOURCES += tests/api/test_rsa.c +tests_unit_test_SOURCES += tests/api/test_dsa.c +tests_unit_test_SOURCES += tests/api/test_dh.c +tests_unit_test_SOURCES += tests/api/test_ecc.c +tests_unit_test_SOURCES += tests/api/test_sm2.c +tests_unit_test_SOURCES += tests/api/test_curve25519.c +tests_unit_test_SOURCES += tests/api/test_ed25519.c +tests_unit_test_SOURCES += tests/api/test_curve448.c +tests_unit_test_SOURCES += tests/api/test_ed448.c tests_unit_test_SOURCES += tests/api/test_mlkem.c +tests_unit_test_SOURCES += tests/api/test_mldsa.c +tests_unit_test_SOURCES += tests/api/test_signature.c # TLS Protocol tests_unit_test_SOURCES += tests/api/test_dtls.c # TLS Feature @@ -40,6 +55,7 @@ tests_unit_test_SOURCES += tests/api/test_evp.c endif EXTRA_DIST += tests/api/api.h +EXTRA_DIST += tests/api/api_decl.h EXTRA_DIST += tests/api/test_md2.h EXTRA_DIST += tests/api/test_md4.h EXTRA_DIST += tests/api/test_md5.h @@ -66,7 +82,20 @@ EXTRA_DIST += tests/api/test_ascon.h EXTRA_DIST += tests/api/test_sm4.h EXTRA_DIST += tests/api/test_ascon_kats.h EXTRA_DIST += tests/api/test_wc_encrypt.h +EXTRA_DIST += tests/api/test_random.h +EXTRA_DIST += tests/api/test_wolfmath.h +EXTRA_DIST += tests/api/test_rsa.h +EXTRA_DIST += tests/api/test_dsa.h +EXTRA_DIST += tests/api/test_dh.h +EXTRA_DIST += tests/api/test_ecc.h +EXTRA_DIST += tests/api/test_sm2.h +EXTRA_DIST += tests/api/test_curve25519.h +EXTRA_DIST += tests/api/test_ed25519.h +EXTRA_DIST += tests/api/test_curve448.h +EXTRA_DIST += tests/api/test_ed448.h EXTRA_DIST += tests/api/test_mlkem.h +EXTRA_DIST += tests/api/test_mldsa.h +EXTRA_DIST += tests/api/test_signature.h EXTRA_DIST += tests/api/test_dtls.h EXTRA_DIST += tests/api/test_ocsp.h EXTRA_DIST += tests/api/test_ocsp_test_blobs.h diff --git a/tests/api/test_aes.h b/tests/api/test_aes.h index eb172dba1..46d13c541 100644 --- a/tests/api/test_aes.h +++ b/tests/api/test_aes.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_AES_H #define WOLFCRYPT_TEST_AES_H +#include + int test_wc_AesSetKey(void); int test_wc_AesSetIV(void); int test_wc_AesCbcEncryptDecrypt(void); @@ -30,8 +32,6 @@ int test_wc_AesGcmSetKey(void); int test_wc_AesGcmEncryptDecrypt(void); int test_wc_AesGcmMixedEncDecLongIV(void); int test_wc_AesGcmStream(void); -int test_wc_GmacSetKey(void); -int test_wc_GmacUpdate(void); int test_wc_AesCcmSetKey(void); int test_wc_AesCcmEncryptDecrypt(void); #if defined(WOLFSSL_AES_EAX) && \ @@ -41,4 +41,31 @@ int test_wc_AesEaxEncryptAuth(void); int test_wc_AesEaxDecryptAuth(void); #endif /* WOLFSSL_AES_EAX */ +int test_wc_GmacSetKey(void); +int test_wc_GmacUpdate(void); + +#define TEST_AES_DECLS \ + TEST_DECL_GROUP("aes", test_wc_AesSetKey), \ + TEST_DECL_GROUP("aes", test_wc_AesSetIV), \ + TEST_DECL_GROUP("aes", test_wc_AesCbcEncryptDecrypt), \ + TEST_DECL_GROUP("aes", test_wc_AesCtrEncryptDecrypt), \ + TEST_DECL_GROUP("aes", test_wc_AesGcmSetKey), \ + TEST_DECL_GROUP("aes", test_wc_AesGcmEncryptDecrypt), \ + TEST_DECL_GROUP("aes", test_wc_AesGcmMixedEncDecLongIV), \ + TEST_DECL_GROUP("aes", test_wc_AesGcmStream), \ + TEST_DECL_GROUP("aes", test_wc_AesCcmSetKey), \ + TEST_DECL_GROUP("aes", test_wc_AesCcmEncryptDecrypt) + +#if defined(WOLFSSL_AES_EAX) && \ + (!defined(HAVE_FIPS) || FIPS_VERSION_GE(5, 3)) && !defined(HAVE_SELFTEST) +#define TEST_AES_EAX_DECLS \ + TEST_DECL_GROUP("aes-eax", test_wc_AesEaxVectors), \ + TEST_DECL_GROUP("aes-eax", test_wc_AesEaxEncryptAuth), \ + TEST_DECL_GROUP("aes-eax", test_wc_AesEaxDecryptAuth) +#endif /* WOLFSSL_AES_EAX */ + +#define TEST_GMAC_DECLS \ + TEST_DECL_GROUP("gmac", test_wc_GmacSetKey), \ + TEST_DECL_GROUP("gmac", test_wc_GmacUpdate) + #endif /* WOLFCRYPT_TEST_AES_H */ diff --git a/tests/api/test_arc4.h b/tests/api/test_arc4.h index 78d706ca9..adf1b4180 100644 --- a/tests/api/test_arc4.h +++ b/tests/api/test_arc4.h @@ -22,7 +22,13 @@ #ifndef WOLFCRYPT_TEST_ARC4_H #define WOLFCRYPT_TEST_ARC4_H +#include + int test_wc_Arc4SetKey(void); int test_wc_Arc4Process(void); +#define TEST_ARC4_DECLS \ + TEST_DECL_GROUP("arc4", test_wc_Arc4SetKey), \ + TEST_DECL_GROUP("arc4", test_wc_Arc4Process) + #endif /* WOLFCRYPT_TEST_ARC4_H */ diff --git a/tests/api/test_ascon.h b/tests/api/test_ascon.h index 09663f98a..f6b36a88b 100644 --- a/tests/api/test_ascon.h +++ b/tests/api/test_ascon.h @@ -22,7 +22,13 @@ #ifndef TESTS_API_TEST_ASCON_H #define TESTS_API_TEST_ASCON_H +#include + int test_ascon_hash256(void); int test_ascon_aead128(void); +#define TEST_ASCON_DECLS \ + TEST_DECL_GROUP("ascon", test_ascon_hash256), \ + TEST_DECL_GROUP("ascon", test_ascon_aead128) + #endif /* TESTS_API_TEST_ASCON_H */ diff --git a/tests/api/test_blake2.h b/tests/api/test_blake2.h index 858694364..0d0ef38e6 100644 --- a/tests/api/test_blake2.h +++ b/tests/api/test_blake2.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_BLAKE2_H #define WOLFCRYPT_TEST_BLAKE2_H +#include + int test_wc_InitBlake2b(void); int test_wc_InitBlake2b_WithKey(void); int test_wc_Blake2bUpdate(void); @@ -36,4 +38,20 @@ int test_wc_Blake2sFinal(void); int test_wc_Blake2s_KATs(void); int test_wc_Blake2s_other(void); +#define TEST_BLAKE2B_DECLS \ + TEST_DECL_GROUP("blake2b", test_wc_InitBlake2b), \ + TEST_DECL_GROUP("blake2b", test_wc_InitBlake2b_WithKey), \ + TEST_DECL_GROUP("blake2b", test_wc_Blake2bUpdate), \ + TEST_DECL_GROUP("blake2b", test_wc_Blake2bFinal), \ + TEST_DECL_GROUP("blake2b", test_wc_Blake2b_KATs), \ + TEST_DECL_GROUP("blake2b", test_wc_Blake2b_other) + +#define TEST_BLAKE2S_DECLS \ + TEST_DECL_GROUP("blake2s", test_wc_InitBlake2s), \ + TEST_DECL_GROUP("blake2s", test_wc_InitBlake2s_WithKey), \ + TEST_DECL_GROUP("blake2s", test_wc_Blake2sUpdate), \ + TEST_DECL_GROUP("blake2s", test_wc_Blake2sFinal), \ + TEST_DECL_GROUP("blake2s", test_wc_Blake2s_KATs), \ + TEST_DECL_GROUP("blake2s", test_wc_Blake2s_other) + #endif /* WOLFCRYPT_TEST_BLAKE2_H */ diff --git a/tests/api/test_camellia.h b/tests/api/test_camellia.h index 6112cc103..d981749fa 100644 --- a/tests/api/test_camellia.h +++ b/tests/api/test_camellia.h @@ -22,9 +22,17 @@ #ifndef WOLFCRYPT_TEST_CAMELLIA_H #define WOLFCRYPT_TEST_CAMELLIA_H +#include + int test_wc_CamelliaSetKey(void); int test_wc_CamelliaSetIV(void); int test_wc_CamelliaEncryptDecryptDirect(void); int test_wc_CamelliaCbcEncryptDecrypt(void); +#define TEST_CAMELLIA_DECLS \ + TEST_DECL_GROUP("camellia", test_wc_CamelliaSetKey), \ + TEST_DECL_GROUP("camellia", test_wc_CamelliaSetIV), \ + TEST_DECL_GROUP("camellia", test_wc_CamelliaEncryptDecryptDirect), \ + TEST_DECL_GROUP("camellia", test_wc_CamelliaCbcEncryptDecrypt) + #endif /* WOLFCRYPT_TEST_CAMELLIA_H */ diff --git a/tests/api/test_chacha.h b/tests/api/test_chacha.h index 4289daea5..4817ddf47 100644 --- a/tests/api/test_chacha.h +++ b/tests/api/test_chacha.h @@ -22,7 +22,13 @@ #ifndef WOLFCRYPT_TEST_CHACHA_H #define WOLFCRYPT_TEST_CHACHA_H +#include + int test_wc_Chacha_SetKey(void); int test_wc_Chacha_Process(void); +#define TEST_CHACHA_DECLS \ + TEST_DECL_GROUP("chacha", test_wc_Chacha_SetKey), \ + TEST_DECL_GROUP("chacha", test_wc_Chacha_Process) + #endif /* WOLFCRYPT_TEST_CHACHA_H */ diff --git a/tests/api/test_chacha20_poly1305.h b/tests/api/test_chacha20_poly1305.h index 7d8f6334a..4d813a5d7 100644 --- a/tests/api/test_chacha20_poly1305.h +++ b/tests/api/test_chacha20_poly1305.h @@ -22,6 +22,11 @@ #ifndef WOLFCRYPT_TEST_CHACHA20_POLY1305_H #define WOLFCRYPT_TEST_CHACHA20_POLY1305_H +#include + int test_wc_ChaCha20Poly1305_aead(void); +#define TEST_CHACHA20_POLY1305_DECLS \ + TEST_DECL_GROUP("chacha20-poly1305", test_wc_ChaCha20Poly1305_aead) + #endif /* WOLFCRYPT_TEST_CHACHA20_POLY1305_H */ diff --git a/tests/api/test_cmac.h b/tests/api/test_cmac.h index dac1e3dca..9e4cf8dd7 100644 --- a/tests/api/test_cmac.h +++ b/tests/api/test_cmac.h @@ -22,9 +22,17 @@ #ifndef WOLFCRYPT_TEST_CMAC_H #define WOLFCRYPT_TEST_CMAC_H +#include + int test_wc_InitCmac(void); int test_wc_CmacUpdate(void); int test_wc_CmacFinal(void); int test_wc_AesCmacGenerate(void); +#define TEST_CMAC_DECLS \ + TEST_DECL_GROUP("cmac", test_wc_InitCmac), \ + TEST_DECL_GROUP("cmac", test_wc_CmacUpdate), \ + TEST_DECL_GROUP("cmac", test_wc_CmacFinal), \ + TEST_DECL_GROUP("cmac", test_wc_AesCmacGenerate) + #endif /* WOLFCRYPT_TEST_CMAC_H */ diff --git a/tests/api/test_curve25519.c b/tests/api/test_curve25519.c new file mode 100644 index 000000000..a9a0a5947 --- /dev/null +++ b/tests/api/test_curve25519.c @@ -0,0 +1,557 @@ +/* test_curve25519.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + + +/* + * Testing wc_curve25519_init and wc_curve25519_free. + */ +int test_wc_curve25519_init(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + + ExpectIntEQ(wc_curve25519_init(&key), 0); + /* Test bad args for wc_curve25519_init */ + ExpectIntEQ(wc_curve25519_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Test good args for wc_curve_25519_free */ + wc_curve25519_free(&key); + /* Test bad args for wc_curve25519 free. */ + wc_curve25519_free(NULL); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_init and wc_curve_25519_free */ +/* + * Testing test_wc_curve25519_size. + */ +int test_wc_curve25519_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + + ExpectIntEQ(wc_curve25519_init(&key), 0); + + /* Test good args for wc_curve25519_size */ + ExpectIntEQ(wc_curve25519_size(&key), CURVE25519_KEYSIZE); + /* Test bad args for wc_curve25519_size */ + ExpectIntEQ(wc_curve25519_size(NULL), 0); + + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_size */ + +/* + * Testing test_wc_curve25519_export_key_raw(). + */ +int test_wc_curve25519_export_key_raw(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) + curve25519_key key; + WC_RNG rng; + byte privateKey[CURVE25519_KEYSIZE]; + byte publicKey[CURVE25519_KEYSIZE]; + word32 prvkSz; + word32 pubkSz; + byte prik[CURVE25519_KEYSIZE]; + byte pubk[CURVE25519_KEYSIZE]; + word32 prksz; + word32 pbksz; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(NULL, privateKey, &prvkSz, + publicKey, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, NULL, &prvkSz, publicKey, + &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, NULL, + publicKey, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + NULL, &pubkSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + publicKey, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* cross-testing */ + prksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_private_raw(&key, prik, &prksz), 0); + pbksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_public(&key, pubk, &pbksz), 0); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + publicKey, &pubkSz), 0); + ExpectIntEQ(prksz, CURVE25519_KEYSIZE); + ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* end of test_wc_curve25519_export_key_raw */ + +/* + * Testing test_wc_curve25519_export_key_raw_ex(). + */ +int test_wc_curve25519_export_key_raw_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) + curve25519_key key; + WC_RNG rng; + byte privateKey[CURVE25519_KEYSIZE]; + byte publicKey[CURVE25519_KEYSIZE]; + word32 prvkSz; + word32 pubkSz; + byte prik[CURVE25519_KEYSIZE]; + byte pubk[CURVE25519_KEYSIZE]; + word32 prksz; + word32 pbksz; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, + &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, + &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + NULL, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, NULL, &pubkSz, EC25519_LITTLE_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, publicKey, NULL, EC25519_LITTLE_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, + &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, + &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + NULL, publicKey, &pubkSz, EC25519_BIG_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, NULL, &pubkSz, EC25519_BIG_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, publicKey, NULL, EC25519_BIG_ENDIAN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* illegal value for endian */ + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, NULL, EC25519_BIG_ENDIAN + 10), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* cross-testing */ + prksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_private_raw( &key, prik, &prksz), 0); + pbksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_public( &key, pubk, &pbksz), 0); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); + ExpectIntEQ(prksz, CURVE25519_KEYSIZE); + ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), 0); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + + /* try once with another endian */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex( &key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* end of test_wc_curve25519_export_key_raw_ex */ + +/* + * Testing wc_curve25519_make_key + */ +int test_wc_curve25519_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + WC_RNG rng; + int keysize = 0; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + ExpectIntEQ(keysize = wc_curve25519_size(&key), CURVE25519_KEYSIZE); + ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, &key), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve25519_make_key(NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_make_key(NULL, keysize, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_make_key(&rng, 0, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_make_key */ + +/* + * Testing wc_curve25519_shared_secret_ex + */ +int test_wc_curve25519_shared_secret_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key private_key; + curve25519_key public_key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; + + ExpectIntEQ(wc_curve25519_init(&private_key), 0); +#ifdef WOLFSSL_CURVE25519_BLINDING + ExpectIntEQ(wc_curve25519_set_rng(&private_key, &rng), 0); +#endif + ExpectIntEQ(wc_curve25519_init(&public_key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &private_key), + 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &public_key), + 0); + + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), 0); + + /* test bad cases */ + ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, NULL, NULL, 0, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, &public_key, out, &outLen, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, NULL, out, &outLen, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, NULL, + &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* curve25519.c is checking for public_key size less than or equal to 0x7f, + * increasing to 0x8f checks for error being returned */ + public_key.p.point[CURVE25519_KEYSIZE-1] = 0x8F; + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + outLen = outLen - 2; + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&private_key); + wc_curve25519_free(&public_key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_shared_secret_ex */ + +/* + * Testing wc_curve25519_make_pub + */ +int test_wc_curve25519_make_pub(void) +{ + EXPECT_DECLS; +#ifdef HAVE_CURVE25519 + curve25519_key key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(out), out, + (int)sizeof(key.k), key.k), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(key.k) - 1, key.k, + (int)sizeof out, out), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out - 1, out, + (int)sizeof(key.k), key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, NULL, + (int)sizeof(key.k), key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + /* verify clamping test */ + key.k[0] |= ~248; + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + key.k), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + key.k[0] &= 248; + /* repeat the expected-to-succeed test. */ + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + key.k), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_make_pub */ + +/* + * Testing test_wc_curve25519_export_public_ex + */ +int test_wc_curve25519_export_public_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_export_public(&key, out, &outLen), 0); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve25519_export_public_ex(NULL, NULL, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_public_ex(NULL, out, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, NULL, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + outLen = outLen - 2; + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_export_public_ex */ + +/* + * Testing test_wc_curve25519_export_private_raw_ex + */ +int test_wc_curve25519_export_private_raw_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; + + ExpectIntEQ(wc_curve25519_init(&key), 0); + + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), + 0); + /* test bad cases */ + ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, NULL, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, out, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, NULL, &outLen, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, + EC25519_LITTLE_ENDIAN), 0); + outLen = outLen - 2; + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_export_private_raw_ex */ + +/* + * Testing test_wc_curve25519_import_private_raw_ex + */ +int test_wc_curve25519_import_private_raw_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + WC_RNG rng; + byte priv[CURVE25519_KEYSIZE]; + byte pub[CURVE25519_KEYSIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + int endian = EC25519_BIG_ENDIAN; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, priv, &privSz, + endian), 0); + ExpectIntEQ(wc_curve25519_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, endian), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, 0, NULL, 0, NULL, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, privSz, pub, pubSz, + &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, NULL, pubSz, + &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, 0, pub, pubSz, + &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, 0, + &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, EC25519_LITTLE_ENDIAN), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_import_private_raw_ex */ + +/* + * Testing test_wc_curve25519_import_private + */ +int test_wc_curve25519_import_private(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE25519) + curve25519_key key; + WC_RNG rng; + byte priv[CURVE25519_KEYSIZE]; + word32 privSz = sizeof(priv); + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve25519_import_private(priv, privSz, &key), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve25519_import */ + diff --git a/tests/api/test_curve25519.h b/tests/api/test_curve25519.h new file mode 100644 index 000000000..7dc8b768a --- /dev/null +++ b/tests/api/test_curve25519.h @@ -0,0 +1,52 @@ +/* test_curve25519.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_CURVE25519_H +#define WOLFCRYPT_TEST_CURVE25519_H + +#include + +int test_wc_curve25519_init(void); +int test_wc_curve25519_size(void); +int test_wc_curve25519_export_key_raw(void); +int test_wc_curve25519_export_key_raw_ex(void); +int test_wc_curve25519_make_key(void); +int test_wc_curve25519_shared_secret_ex(void); +int test_wc_curve25519_make_pub(void); +int test_wc_curve25519_export_public_ex(void); +int test_wc_curve25519_export_private_raw_ex(void); +int test_wc_curve25519_import_private_raw_ex(void); +int test_wc_curve25519_import_private(void); + +#define TEST_CURVE25519_DECLS \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_init), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_size), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_export_key_raw), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_export_key_raw_ex), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_make_key), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_shared_secret_ex), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_make_pub), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_export_public_ex), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_export_private_raw_ex), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_import_private_raw_ex), \ + TEST_DECL_GROUP("curve25519", test_wc_curve25519_import_private) + +#endif /* WOLFCRYPT_TEST_CURVE25519_H */ diff --git a/tests/api/test_curve448.c b/tests/api/test_curve448.c new file mode 100644 index 000000000..82b1eb415 --- /dev/null +++ b/tests/api/test_curve448.c @@ -0,0 +1,407 @@ +/* test_curve448.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_curve448_make_key + */ +int test_wc_curve448_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + WC_RNG rng; + int keysize = 0; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + ExpectIntEQ(keysize = wc_curve448_size(&key), CURVE448_KEY_SIZE); + ExpectIntEQ(wc_curve448_make_key(&rng, keysize, &key), 0); + + /* test bad cases */ + ExpectIntEQ(wc_curve448_make_key(NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_make_key(&rng, keysize, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_make_key(NULL, keysize, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_make_key(&rng, 0, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_make_key */ + +/* + * Testing test_wc_curve448_shared_secret_ex + */ +int test_wc_curve448_shared_secret_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key private_key; + curve448_key public_key; + WC_RNG rng; + byte out[CURVE448_KEY_SIZE]; + word32 outLen = sizeof(out); + int endian = EC448_BIG_ENDIAN; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&private_key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &private_key), 0); + + ExpectIntEQ(wc_curve448_init(&public_key), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &public_key), 0); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), 0); + + /* test bad cases */ + ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, NULL, NULL, 0, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, &public_key, out, &outLen, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, NULL, out, &outLen, + endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, NULL, + &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + outLen = outLen - 2; + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&private_key); + wc_curve448_free(&public_key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_shared_secret_ex */ + +/* + * Testing test_wc_curve448_export_public_ex + */ +int test_wc_curve448_export_public_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + WC_RNG rng; + curve448_key key; + byte out[CURVE448_KEY_SIZE]; + word32 outLen = sizeof(out); + int endian = EC448_BIG_ENDIAN; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_public(&key, out, &outLen), 0); + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve448_export_public_ex(NULL, NULL, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_public_ex(NULL, out, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_public_ex(&key, NULL, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + outLen = outLen - 2; + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_export_public_ex */ + +/* + * Testing test_wc_curve448_export_private_raw_ex + */ +int test_wc_curve448_export_private_raw_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + byte out[CURVE448_KEY_SIZE]; + word32 outLen = sizeof(out); + int endian = EC448_BIG_ENDIAN; + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), + 0); + /* test bad cases */ + ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, NULL, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, out, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, NULL, &outLen, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, NULL, endian), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, + EC448_LITTLE_ENDIAN), 0); + outLen = outLen - 2; + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_export_private_raw_ex */ + +/* + * Testing test_curve448_export_key_raw + */ +int test_wc_curve448_export_key_raw(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + byte pub[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz), + 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_import_private_raw_ex */ + +/* + * Testing test_wc_curve448_import_private_raw_ex + */ +int test_wc_curve448_import_private_raw_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + byte pub[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + int endian = EC448_BIG_ENDIAN; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, endian), 0); + /* test bad cases */ + ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, 0, NULL, 0, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, privSz, pub, pubSz, + &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, NULL, pubSz, + &key, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + NULL, endian), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, 0, pub, pubSz, + &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, 0, + &key, endian), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, EC448_LITTLE_ENDIAN), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_import_private_raw_ex */ + +/* + * Testing test_wc_curve448_import_private + */ +int test_wc_curve448_import_private(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_import_private(priv, privSz, &key), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_import */ + +/* + * Testing wc_curve448_init and wc_curve448_free. + */ +int test_wc_curve448_init(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + + /* Test bad args for wc_curve448_init */ + ExpectIntEQ(wc_curve448_init(&key), 0); + /* Test bad args for wc_curve448_init */ + ExpectIntEQ(wc_curve448_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Test good args for wc_curve_448_free */ + wc_curve448_free(&key); + /* Test bad args for wc_curve448_free */ + wc_curve448_free(NULL); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_init and wc_curve_448_free */ + +/* + * Testing test_wc_curve448_size. + */ +int test_wc_curve448_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) + curve448_key key; + + ExpectIntEQ(wc_curve448_init(&key), 0); + + /* Test good args for wc_curve448_size */ + ExpectIntEQ(wc_curve448_size(&key), CURVE448_KEY_SIZE); + /* Test bad args for wc_curve448_size */ + ExpectIntEQ(wc_curve448_size(NULL), 0); + + wc_curve448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_curve448_size */ + +/* + * Testing wc_Curve448PrivateKeyToDer + */ +int test_wc_Curve448PrivateKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_CURVE448) && defined(HAVE_CURVE448_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + byte output[ONEK_BUF]; + curve448_key curve448PrivKey; + WC_RNG rng; + word32 inLen; + + XMEMSET(&curve448PrivKey, 0, sizeof(curve448PrivKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&curve448PrivKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &curve448PrivKey), + 0); + inLen = (word32)sizeof(output); + + /* Bad Cases */ + ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good cases */ + /* length only */ + ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, NULL, 0), 0); + ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, inLen), 0); + + /* Bad Cases */ + ExpectIntEQ(wc_Curve448PublicKeyToDer(NULL, NULL, 0, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Curve448PublicKeyToDer(NULL, output, inLen, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, 0, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + ExpectIntEQ(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, 0, 1), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good cases */ + /* length only */ + ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 0), 0); + ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 1), 0); + ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 0), + 0); + ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 1), + 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_curve448_free(&curve448PrivKey); +#endif + return EXPECT_RESULT(); +} /* End wc_Curve448PrivateKeyToDer*/ + diff --git a/tests/api/test_curve448.h b/tests/api/test_curve448.h new file mode 100644 index 000000000..9d25a5514 --- /dev/null +++ b/tests/api/test_curve448.h @@ -0,0 +1,50 @@ +/* test_curve448.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_CURVE448_H +#define WOLFCRYPT_TEST_CURVE448_H + +#include + +int test_wc_curve448_make_key(void); +int test_wc_curve448_shared_secret_ex(void); +int test_wc_curve448_export_public_ex(void); +int test_wc_curve448_export_private_raw_ex(void); +int test_wc_curve448_export_key_raw(void); +int test_wc_curve448_import_private_raw_ex(void); +int test_wc_curve448_import_private(void); +int test_wc_curve448_init(void); +int test_wc_curve448_size(void); +int test_wc_Curve448PrivateKeyToDer(void); + +#define TEST_CURVE448_DECLS \ + TEST_DECL_GROUP("curve448", test_wc_curve448_make_key), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_shared_secret_ex), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_export_public_ex), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_export_private_raw_ex), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_export_key_raw), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_import_private_raw_ex), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_import_private), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_init), \ + TEST_DECL_GROUP("curve448", test_wc_curve448_size), \ + TEST_DECL_GROUP("curve448", test_wc_Curve448PrivateKeyToDer) + +#endif /* WOLFCRYPT_TEST_CURVE448_H */ diff --git a/tests/api/test_des3.h b/tests/api/test_des3.h index 70e8bca59..c3833fd01 100644 --- a/tests/api/test_des3.h +++ b/tests/api/test_des3.h @@ -22,9 +22,17 @@ #ifndef WOLFCRYPT_TEST_DES3_H #define WOLFCRYPT_TEST_DES3_H +#include + int test_wc_Des3_SetIV(void); int test_wc_Des3_SetKey(void); int test_wc_Des3_CbcEncryptDecrypt(void); int test_wc_Des3_EcbEncrypt(void); +#define TEST_DES3_DECLS \ + TEST_DECL_GROUP("des3", test_wc_Des3_SetIV), \ + TEST_DECL_GROUP("des3", test_wc_Des3_SetKey), \ + TEST_DECL_GROUP("des3", test_wc_Des3_CbcEncryptDecrypt), \ + TEST_DECL_GROUP("des3", test_wc_Des3_CbcEncryptDecrypt) + #endif /* WOLFCRYPT_TEST_DES3_H */ diff --git a/tests/api/test_dh.c b/tests/api/test_dh.c new file mode 100644 index 000000000..232422e25 --- /dev/null +++ b/tests/api/test_dh.c @@ -0,0 +1,84 @@ +/* test_dh.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_DhPublicKeyDecode + */ +int test_wc_DhPublicKeyDecode(void) +{ + EXPECT_DECLS; +#ifndef NO_DH +#if defined(WOLFSSL_DH_EXTRA) && defined(USE_CERT_BUFFERS_2048) + DhKey key; + word32 inOutIdx; + + XMEMSET(&key, 0, sizeof(DhKey)); + + ExpectIntEQ(wc_InitDhKey(&key), 0); + + ExpectIntEQ(wc_DhPublicKeyDecode(NULL,NULL,NULL,0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, + sizeof_dh_pub_key_der_2048), 0); + ExpectIntNE(key.p.used, 0); + ExpectIntNE(key.g.used, 0); + ExpectIntEQ(key.q.used, 0); + ExpectIntNE(key.pub.used, 0); + ExpectIntEQ(key.priv.used, 0); + + DoExpectIntEQ(wc_FreeDhKey(&key), 0); +#endif +#endif /* !NO_DH */ + return EXPECT_RESULT(); +} + diff --git a/tests/api/test_dh.h b/tests/api/test_dh.h new file mode 100644 index 000000000..fe6c92c79 --- /dev/null +++ b/tests/api/test_dh.h @@ -0,0 +1,32 @@ +/* test_dh.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_DH_H +#define WOLFCRYPT_TEST_DH_H + +#include + +int test_wc_DhPublicKeyDecode(void); + +#define TEST_DH_DECLS \ + TEST_DECL_GROUP("dh", test_wc_DhPublicKeyDecode) + +#endif /* WOLFCRYPT_TEST_DH_H */ diff --git a/tests/api/test_digest.h b/tests/api/test_digest.h index edf2a6073..2bb0e5443 100644 --- a/tests/api/test_digest.h +++ b/tests/api/test_digest.h @@ -19,22 +19,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA */ -#define PRINT_DATA(name, data, len) \ -do { \ - int ii; \ - fprintf(stderr, "%s\n", name); \ - for (ii = 0; ii < (int)(len); ii++) { \ - if ((ii % 8) == 0) \ - fprintf(stderr, " \""); \ - fprintf(stderr, "\\x%02x", (data)[ii]); \ - if ((ii % 8) == 7) \ - fprintf(stderr, "\"\n"); \ - } \ - if ((ii % 8) != 0) \ - fprintf(stderr, "\""); \ - fprintf(stderr, "\n"); \ -} while (0) - #define DIGEST_INIT_TEST(type, name) \ do { \ diff --git a/tests/api/test_dsa.c b/tests/api/test_dsa.c new file mode 100644 index 000000000..c139858f5 --- /dev/null +++ b/tests/api/test_dsa.c @@ -0,0 +1,587 @@ +/* test_dsa.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_InitDsaKey() + */ +int test_wc_InitDsaKey(void) +{ + EXPECT_DECLS; +#ifndef NO_DSA + DsaKey key; + + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_InitDsaKey(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_FreeDsaKey(&key); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_InitDsaKey */ + +/* + * Testing wc_DsaSign() and wc_DsaVerify() + */ +int test_wc_DsaSignVerify(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) + DsaKey key; + WC_RNG rng; + wc_Sha sha; + byte signature[DSA_SIG_SIZE]; + byte hash[WC_SHA_DIGEST_SIZE]; + word32 idx = 0; + word32 bytes; + int answer = 0; +#ifdef USE_CERT_BUFFERS_1024 + byte tmp[ONEK_BUF]; + + XMEMSET(tmp, 0, sizeof(tmp)); + XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); + bytes = sizeof_dsa_key_der_1024; +#elif defined(USE_CERT_BUFFERS_2048) + byte tmp[TWOK_BUF]; + + XMEMSET(tmp, 0, sizeof(tmp)); + XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); + bytes = sizeof_dsa_key_der_2048; +#else + byte tmp[TWOK_BUF]; + XFILE fp = XBADFILE; + + XMEMSET(tmp, 0, sizeof(tmp)); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32)XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); +#endif /* END USE_CERT_BUFFERS_1024 */ + + ExpectIntEQ(wc_InitSha(&sha), 0); + ExpectIntEQ(wc_ShaUpdate(&sha, tmp, bytes), 0); + ExpectIntEQ(wc_ShaFinal(&sha, hash), 0); + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + /* Sign. */ + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), 0); + /* Test bad args. */ + ExpectIntEQ(wc_DsaSign(NULL, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaSign(hash, NULL, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaSign(hash, signature, NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Verify. */ + ExpectIntEQ(wc_DsaVerify(hash, signature, &key, &answer), 0); + ExpectIntEQ(answer, 1); + /* Pass in bad args. */ + ExpectIntEQ(wc_DsaVerify(NULL, signature, &key, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaVerify(hash, NULL, &key, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaVerify(hash, signature, NULL, &answer), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaVerify(hash, signature, &key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#if !defined(HAVE_FIPS) && defined(WOLFSSL_PUBLIC_MP) + /* hard set q to 0 and test fail case */ + mp_free(&key.q); + mp_init(&key.q); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + mp_set(&key.q, 1); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + + DoExpectIntEQ(wc_FreeRng(&rng),0); + wc_FreeDsaKey(&key); + wc_ShaFree(&sha); +#endif + return EXPECT_RESULT(); +} /* END test_wc_DsaSign */ + +/* + * Testing wc_DsaPrivateKeyDecode() and wc_DsaPublicKeyDecode() + */ +int test_wc_DsaPublicPrivateKeyDecode(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) + DsaKey key; + word32 bytes = 0; + word32 idx = 0; + int ret = 0; +#ifdef USE_CERT_BUFFERS_1024 + byte tmp[ONEK_BUF]; + + XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); + bytes = sizeof_dsa_key_der_1024; +#elif defined(USE_CERT_BUFFERS_2048) + byte tmp[TWOK_BUF]; + + XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); + bytes = sizeof_dsa_key_der_2048; +#else + byte tmp[TWOK_BUF]; + XFILE fp = XBADFILE; + + XMEMSET(tmp, 0, sizeof(tmp)); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); +#endif /* END USE_CERT_BUFFERS_1024 */ + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + /* Test bad args. */ + ExpectIntEQ(wc_DsaPrivateKeyDecode(NULL, &idx, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, NULL, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, NULL, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntLT(ret = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(ASN_PARSE_E)) || (ret == WC_NO_ERR_TRACE(BUFFER_E))); + wc_FreeDsaKey(&key); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + idx = 0; /* Reset */ + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); + /* Test bad args. */ + ExpectIntEQ(wc_DsaPublicKeyDecode(NULL, &idx, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, NULL, &key, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, NULL, bytes), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntLT(ret = wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(ASN_PARSE_E)) || (ret == WC_NO_ERR_TRACE(BUFFER_E))); + wc_FreeDsaKey(&key); +#endif /* !NO_DSA */ + return EXPECT_RESULT(); + +} /* END test_wc_DsaPublicPrivateKeyDecode */ + +/* + * Testing wc_MakeDsaKey() and wc_MakeDsaParameters() + */ +int test_wc_MakeDsaKey(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) + DsaKey genKey; + WC_RNG rng; + + XMEMSET(&genKey, 0, sizeof(genKey)); + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitDsaKey(&genKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &genKey), 0); + /* Test bad args. */ + ExpectIntEQ(wc_MakeDsaParameters(NULL, ONEK_BUF, &genKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF + 1, &genKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_MakeDsaKey(&rng, &genKey), 0); + /* Test bad args. */ + ExpectIntEQ(wc_MakeDsaKey(NULL, &genKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_MakeDsaKey(&rng, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_FreeDsaKey(&genKey); +#endif + return EXPECT_RESULT(); +} /* END test_wc_MakeDsaKey */ + +/* + * Testing wc_DsaKeyToDer() + */ +int test_wc_DsaKeyToDer(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) + DsaKey key; + word32 bytes; + word32 idx = 0; +#ifdef USE_CERT_BUFFERS_1024 + byte tmp[ONEK_BUF]; + byte der[ONEK_BUF]; + + XMEMSET(tmp, 0, sizeof(tmp)); + XMEMSET(der, 0, sizeof(der)); + XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); + bytes = sizeof_dsa_key_der_1024; +#elif defined(USE_CERT_BUFFERS_2048) + byte tmp[TWOK_BUF]; + byte der[TWOK_BUF]; + + XMEMSET(tmp, 0, sizeof(tmp)); + XMEMSET(der, 0, sizeof(der)); + XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); + bytes = sizeof_dsa_key_der_2048; +#else + byte tmp[TWOK_BUF]; + byte der[TWOK_BUF]; + XFILE fp = XBADFILE; + + XMEMSET(tmp, 0, sizeof(tmp)); + XMEMSET(der, 0, sizeof(der)); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); +#endif /* END USE_CERT_BUFFERS_1024 */ + + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectIntGE(wc_DsaKeyToDer(&key, der, bytes), 0); + ExpectIntEQ(XMEMCMP(der, tmp, bytes), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_DsaKeyToDer(NULL, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaKeyToDer(&key, NULL, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_FreeDsaKey(&key); +#endif /* !NO_DSA && WOLFSSL_KEY_GEN */ + return EXPECT_RESULT(); + +} /* END test_wc_DsaKeyToDer */ + +/* + * Testing wc_DsaKeyToPublicDer() + * (indirectly testing setDsaPublicKey()) + */ +int test_wc_DsaKeyToPublicDer(void) +{ + EXPECT_DECLS; +#ifndef HAVE_SELFTEST +#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) + DsaKey key; + WC_RNG rng; + byte* der = NULL; + word32 sz = 0; + word32 idx = 0; + + XMEMSET(&key, 0, sizeof(DsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectNotNull(der = (byte*)XMALLOC(ONEK_BUF, NULL, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &key), 0); + ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); + + ExpectIntGE(sz = (word32)wc_DsaKeyToPublicDer(&key, der, ONEK_BUF), 0); + wc_FreeDsaKey(&key); + + idx = 0; + ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); + + /* Test without the SubjectPublicKeyInfo header */ + ExpectIntGE(sz = (word32)wc_SetDsaPublicKey(der, &key, ONEK_BUF, 0), 0); + wc_FreeDsaKey(&key); + idx = 0; + ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_DsaKeyToPublicDer(NULL, der, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_DsaKeyToPublicDer(&key, NULL, FOURK_BUF), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_FreeDsaKey(&key); + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif /* !NO_DSA && WOLFSSL_KEY_GEN */ +#endif /* !HAVE_SELFTEST */ + return EXPECT_RESULT(); + +} /* END test_wc_DsaKeyToPublicDer */ + +/* + * Testing wc_DsaImportParamsRaw() + */ +int test_wc_DsaImportParamsRaw(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) + DsaKey key; + /* [mod = L=1024, N=160], from CAVP KeyPair */ + const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" + "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" + "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" + "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" + "47123188f8dc551054ee162b634d60f097f719076640e209" + "80a0093113a8bd73"; + const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; + const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" + "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" + "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" + "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" + "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" + "76341a7e7d9"; + /* invalid p and q parameters */ + const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; + const char* invalidQ = "96c5390a"; + + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); + + /* test bad args */ + /* null key struct */ + ExpectIntEQ(wc_DsaImportParamsRaw(NULL, p, q, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* null param pointers */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, NULL, NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* illegal p length */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, invalidP, q, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* illegal q length */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, invalidQ, g), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_FreeDsaKey(&key); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_DsaImportParamsRaw */ + +/* + * Testing wc_DsaImportParamsRawCheck() + */ +int test_wc_DsaImportParamsRawCheck(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) + DsaKey key; + int trusted = 0; + /* [mod = L=1024, N=160], from CAVP KeyPair */ + const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" + "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" + "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" + "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" + "47123188f8dc551054ee162b634d60f097f719076640e209" + "80a0093113a8bd73"; + const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; + const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" + "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" + "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" + "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" + "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" + "76341a7e7d9"; + /* invalid p and q parameters */ + const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; + const char* invalidQ = "96c5390a"; + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, q, g, trusted, NULL), 0); + + /* test bad args */ + /* null key struct */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(NULL, p, q, g, trusted, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* null param pointers */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, NULL, NULL, NULL, trusted, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* illegal p length */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, invalidP, q, g, trusted, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* illegal q length */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, invalidQ, g, trusted, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_FreeDsaKey(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_DsaImportParamsRawCheck */ + +/* + * Testing wc_DsaExportParamsRaw() + */ +int test_wc_DsaExportParamsRaw(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) + DsaKey key; + /* [mod = L=1024, N=160], from CAVP KeyPair */ + const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" + "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" + "5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b6" + "52236f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c71" + "47123188f8dc551054ee162b634d60f097f719076640e209" + "80a0093113a8bd73"; + const char* q = "96c5390a8b612c0e422bb2b0ea194a3ec935a281"; + const char* g = "06b7861abbd35cc89e79c52f68d20875389b127361ca66822" + "138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37e" + "b23b94074d3c3d300042bdf15762812b6333ef7b07ceba786" + "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" + "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" + "76341a7e7d9"; + const char* pCompare = "\xd3\x83\x11\xe2\xcd\x38\x8c\x3e\xd6\x98\xe8\x2f" + "\xdf\x88\xeb\x92\xb5\xa9\xa4\x83\xdc\x88\x00\x5d" + "\x4b\x72\x5e\xf3\x41\xea\xbb\x47\xcf\x8a\x7a\x8a" + "\x41\xe7\x92\xa1\x56\xb7\xce\x97\x20\x6c\x4f\x9c" + "\x5c\xe6\xfc\x5a\xe7\x91\x21\x02\xb6\xb5\x02\xe5" + "\x90\x50\xb5\xb2\x1c\xe2\x63\xdd\xdb\x20\x44\xb6" + "\x52\x23\x6f\x4d\x42\xab\x4b\x5d\x6a\xa7\x31\x89" + "\xce\xf1\xac\xe7\x78\xd7\x84\x5a\x5c\x1c\x1c\x71" + "\x47\x12\x31\x88\xf8\xdc\x55\x10\x54\xee\x16\x2b" + "\x63\x4d\x60\xf0\x97\xf7\x19\x07\x66\x40\xe2\x09" + "\x80\xa0\x09\x31\x13\xa8\xbd\x73"; + const char* qCompare = "\x96\xc5\x39\x0a\x8b\x61\x2c\x0e\x42\x2b\xb2\xb0" + "\xea\x19\x4a\x3e\xc9\x35\xa2\x81"; + const char* gCompare = "\x06\xb7\x86\x1a\xbb\xd3\x5c\xc8\x9e\x79\xc5\x2f" + "\x68\xd2\x08\x75\x38\x9b\x12\x73\x61\xca\x66\x82" + "\x21\x38\xce\x49\x91\xd2\xb8\x62\x25\x9d\x6b\x45" + "\x48\xa6\x49\x5b\x19\x5a\xa0\xe0\xb6\x13\x7c\xa3" + "\x7e\xb2\x3b\x94\x07\x4d\x3c\x3d\x30\x00\x42\xbd" + "\xf1\x57\x62\x81\x2b\x63\x33\xef\x7b\x07\xce\xba" + "\x78\x60\x76\x10\xfc\xc9\xee\x68\x49\x1d\xbc\x1e" + "\x34\xcd\x12\x61\x54\x74\xe5\x2b\x18\xbc\x93\x4f" + "\xb0\x0c\x61\xd3\x9e\x7d\xa8\x90\x22\x91\xc4\x43" + "\x4a\x4e\x22\x24\xc3\xf4\xfd\x9f\x93\xcd\x6f\x4f" + "\x17\xfc\x07\x63\x41\xa7\xe7\xd9"; + byte pOut[MAX_DSA_PARAM_SIZE]; + byte qOut[MAX_DSA_PARAM_SIZE]; + byte gOut[MAX_DSA_PARAM_SIZE]; + word32 pOutSz; + word32 qOutSz; + word32 gOutSz; + + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + /* first test using imported raw parameters, for expected */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); + pOutSz = sizeof(pOut); + qOutSz = sizeof(qOut); + gOutSz = sizeof(gOut); + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), 0); + /* validate exported parameters are correct */ + ExpectIntEQ(XMEMCMP(pOut, pCompare, pOutSz), 0); + ExpectIntEQ(XMEMCMP(qOut, qCompare, qOutSz), 0); + ExpectIntEQ(XMEMCMP(gOut, gCompare, gOutSz), 0); + + /* test bad args */ + /* null key struct */ + ExpectIntEQ(wc_DsaExportParamsRaw(NULL, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* null output pointers */ + ExpectIntEQ(wc_DsaExportParamsRaw(&key, NULL, &pOutSz, NULL, &qOutSz, NULL, + &gOutSz), WC_NO_ERR_TRACE(LENGTH_ONLY_E)); + /* null output size pointers */ + ExpectIntEQ( wc_DsaExportParamsRaw(&key, pOut, NULL, qOut, NULL, gOut, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* p output buffer size too small */ + pOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); + pOutSz = sizeof(pOut); + /* q output buffer size too small */ + qOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); + qOutSz = sizeof(qOut); + /* g output buffer size too small */ + gOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), WC_NO_ERR_TRACE(BUFFER_E)); + + wc_FreeDsaKey(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_DsaExportParamsRaw */ + +/* + * Testing wc_DsaExportKeyRaw() + */ +int test_wc_DsaExportKeyRaw(void) +{ + EXPECT_DECLS; +#if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) + DsaKey key; + WC_RNG rng; + byte xOut[MAX_DSA_PARAM_SIZE]; + byte yOut[MAX_DSA_PARAM_SIZE]; + word32 xOutSz, yOutSz; + + XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_MakeDsaParameters(&rng, 1024, &key), 0); + ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); + + /* try successful export */ + xOutSz = sizeof(xOut); + yOutSz = sizeof(yOut); + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), 0); + + /* test bad args */ + /* null key struct */ + ExpectIntEQ(wc_DsaExportKeyRaw(NULL, xOut, &xOutSz, yOut, &yOutSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* null output pointers */ + ExpectIntEQ(wc_DsaExportKeyRaw(&key, NULL, &xOutSz, NULL, &yOutSz), + WC_NO_ERR_TRACE(LENGTH_ONLY_E)); + /* null output size pointers */ + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, NULL, yOut, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* x output buffer size too small */ + xOutSz = 1; + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), + WC_NO_ERR_TRACE(BUFFER_E)); + xOutSz = sizeof(xOut); + /* y output buffer size too small */ + yOutSz = 1; + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), + WC_NO_ERR_TRACE(BUFFER_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_FreeDsaKey(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_DsaExportParamsRaw */ + diff --git a/tests/api/test_dsa.h b/tests/api/test_dsa.h new file mode 100644 index 000000000..460c03f08 --- /dev/null +++ b/tests/api/test_dsa.h @@ -0,0 +1,50 @@ +/* test_dsa.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_DSA_H +#define WOLFCRYPT_TEST_DSA_H + +#include + +int test_wc_InitDsaKey(void); +int test_wc_DsaSignVerify(void); +int test_wc_DsaPublicPrivateKeyDecode(void); +int test_wc_MakeDsaKey(void); +int test_wc_DsaKeyToDer(void); +int test_wc_DsaKeyToPublicDer(void); +int test_wc_DsaImportParamsRaw(void); +int test_wc_DsaImportParamsRawCheck(void); +int test_wc_DsaExportParamsRaw(void); +int test_wc_DsaExportKeyRaw(void); + +#define TEST_DSA_DECLS \ + TEST_DECL_GROUP("dsa", test_wc_InitDsaKey), \ + TEST_DECL_GROUP("dsa", test_wc_DsaSignVerify), \ + TEST_DECL_GROUP("dsa", test_wc_DsaPublicPrivateKeyDecode), \ + TEST_DECL_GROUP("dsa", test_wc_MakeDsaKey), \ + TEST_DECL_GROUP("dsa", test_wc_DsaKeyToDer), \ + TEST_DECL_GROUP("dsa", test_wc_DsaKeyToPublicDer), \ + TEST_DECL_GROUP("dsa", test_wc_DsaImportParamsRaw), \ + TEST_DECL_GROUP("dsa", test_wc_DsaImportParamsRawCheck), \ + TEST_DECL_GROUP("dsa", test_wc_DsaExportParamsRaw), \ + TEST_DECL_GROUP("dsa", test_wc_DsaExportKeyRaw) + +#endif /* WOLFCRYPT_TEST_DSA_H */ diff --git a/tests/api/test_ecc.c b/tests/api/test_ecc.c new file mode 100644 index 000000000..78fc5559a --- /dev/null +++ b/tests/api/test_ecc.c @@ -0,0 +1,1872 @@ +/* test_ecc.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include +#include + +int test_wc_ecc_get_curve_size_from_name(void) +{ + EXPECT_DECLS; +#ifdef HAVE_ECC + #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + ExpectIntEQ(wc_ecc_get_curve_size_from_name("SECP256R1"), 32); + #endif + /* invalid case */ + ExpectIntEQ(wc_ecc_get_curve_size_from_name("BADCURVE"), -1); + /* NULL input */ + ExpectIntEQ(wc_ecc_get_curve_size_from_name(NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif /* HAVE_ECC */ + return EXPECT_RESULT(); +} + +int test_wc_ecc_get_curve_id_from_name(void) +{ + EXPECT_DECLS; +#ifdef HAVE_ECC + #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), + ECC_SECP256R1); + #endif + /* invalid case */ + ExpectIntEQ(wc_ecc_get_curve_id_from_name("BADCURVE"), -1); + /* NULL input */ + ExpectIntEQ(wc_ecc_get_curve_id_from_name(NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif /* HAVE_ECC */ + return EXPECT_RESULT(); +} + +int test_wc_ecc_get_curve_id_from_params(void) +{ + EXPECT_DECLS; +#ifdef HAVE_ECC + const byte prime[] = + { + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + }; + + const byte primeInvalid[] = + { + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x01 + }; + + const byte Af[] = + { + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC + }; + + const byte Bf[] = + { + 0x5A,0xC6,0x35,0xD8,0xAA,0x3A,0x93,0xE7, + 0xB3,0xEB,0xBD,0x55,0x76,0x98,0x86,0xBC, + 0x65,0x1D,0x06,0xB0,0xCC,0x53,0xB0,0xF6, + 0x3B,0xCE,0x3C,0x3E,0x27,0xD2,0x60,0x4B + }; + + const byte order[] = + { + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xBC,0xE6,0xFA,0xAD,0xA7,0x17,0x9E,0x84, + 0xF3,0xB9,0xCA,0xC2,0xFC,0x63,0x25,0x51 + }; + + const byte Gx[] = + { + 0x6B,0x17,0xD1,0xF2,0xE1,0x2C,0x42,0x47, + 0xF8,0xBC,0xE6,0xE5,0x63,0xA4,0x40,0xF2, + 0x77,0x03,0x7D,0x81,0x2D,0xEB,0x33,0xA0, + 0xF4,0xA1,0x39,0x45,0xD8,0x98,0xC2,0x96 + }; + + const byte Gy[] = + { + 0x4F,0xE3,0x42,0xE2,0xFE,0x1A,0x7F,0x9B, + 0x8E,0xE7,0xEB,0x4A,0x7C,0x0F,0x9E,0x16, + 0x2B,0xCE,0x33,0x57,0x6B,0x31,0x5E,0xCE, + 0xCB,0xB6,0x40,0x68,0x37,0xBF,0x51,0xF5 + }; + + int cofactor = 1; + int fieldSize = 256; + + #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, + prime, sizeof(prime), Af, sizeof(Af), Bf, sizeof(Bf), + order, sizeof(order), Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), + ECC_SECP256R1); + #endif + + /* invalid case, fieldSize = 0 */ + ExpectIntEQ(wc_ecc_get_curve_id_from_params(0, prime, sizeof(prime), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); + + /* invalid case, NULL prime */ + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, NULL, sizeof(prime), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* invalid case, invalid prime */ + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, + primeInvalid, sizeof(primeInvalid), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); +#endif + return EXPECT_RESULT(); +} + +int test_wc_ecc_get_curve_id_from_dp_params(void) +{ + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ + !defined(HAVE_SELFTEST) && \ + !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) +#if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + ecc_key* key; + const ecc_set_type* params = NULL; + int ret; +#endif + WOLFSSL_EC_KEY *ecKey = NULL; + + #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), ECC_SECP256R1); + ExpectNotNull(ecKey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1)); + + if (EXPECT_SUCCESS()) { + ret = EC_KEY_generate_key(ecKey); + } else + ret = 0; + + if (ret == 1) { + /* normal test */ + key = (ecc_key*)ecKey->internal; + if (key != NULL) { + params = key->dp; + } + + ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(params), + ECC_SECP256R1); + } + #endif + /* invalid case, NULL input */ + ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wolfSSL_EC_KEY_free(ecKey); +#endif + return EXPECT_RESULT(); +} + +/* + * Testing wc_ecc_make_key. + */ +int test_wc_ecc_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int ret; + + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_make_key(NULL, KEY14, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_make_key(&rng, KEY14, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_make_key */ + + +/* + * Testing wc_ecc_init() + */ +int test_wc_ecc_init(void) +{ + EXPECT_DECLS; +#ifdef HAVE_ECC + ecc_key key; + + XMEMSET(&key, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_init */ + +/* + * Testing wc_ecc_check_key() + */ +int test_wc_ecc_check_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int ret; + + XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&key, 0, sizeof(key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_check_key(&key), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_check_key(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_check_key */ + +/* + * Testing wc_ecc_get_generator() + */ +int test_wc_ecc_get_generator(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) && defined(OPENSSL_EXTRA) + ecc_point* pt = NULL; + + ExpectNotNull(pt = wc_ecc_new_point()); + + ExpectIntEQ(wc_ecc_get_generator(pt, wc_ecc_get_curve_idx(ECC_SECP256R1)), + MP_OKAY); + + /* Test bad args. */ + /* Returns Zero for bad arg. */ + ExpectIntNE(wc_ecc_get_generator(pt, -1), MP_OKAY); + ExpectIntNE(wc_ecc_get_generator(NULL, wc_ecc_get_curve_idx(ECC_SECP256R1)), + MP_OKAY); + /* If we ever get to 1000 curves increase this number */ + ExpectIntNE(wc_ecc_get_generator(pt, 1000), MP_OKAY); + ExpectIntNE(wc_ecc_get_generator(NULL, -1), MP_OKAY); + + wc_ecc_del_point(pt); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_get_generator */ + +/* + * Testing wc_ecc_size() + */ +int test_wc_ecc_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) + WC_RNG rng; + ecc_key key; + int ret; + + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_size(&key), KEY14); + /* Test bad args. */ + /* Returns Zero for bad arg. */ + ExpectIntEQ(wc_ecc_size(NULL), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_size */ + +int test_wc_ecc_params(void) +{ + EXPECT_DECLS; + /* FIPS/CAVP self-test modules do not have `wc_ecc_get_curve_params`. + It was added after certifications */ +#if defined(HAVE_ECC) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) + const ecc_set_type* ecc_set = NULL; +#if !defined(NO_ECC256) && !defined(NO_ECC_SECP) + /* Test for SECP256R1 curve */ + int curve_id = ECC_SECP256R1; + int curve_idx = 0; + + ExpectIntNE(curve_idx = wc_ecc_get_curve_idx(curve_id), ECC_CURVE_INVALID); + ExpectNotNull(ecc_set = wc_ecc_get_curve_params(curve_idx)); + ExpectIntEQ(ecc_set->id, curve_id); +#endif + /* Test case when SECP256R1 is not enabled */ + /* Test that we get curve params for index 0 */ + ExpectNotNull(ecc_set = wc_ecc_get_curve_params(0)); +#endif /* HAVE_ECC && !HAVE_FIPS && !HAVE_SELFTEST */ + return EXPECT_RESULT(); +} + +/* + * Testing wc_ecc_sign_hash() and wc_ecc_verify_hash() + */ +int test_wc_ecc_signVerify_hash(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && !defined(NO_ASN) && \ + !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int ret; +#ifdef HAVE_ECC_VERIFY + int verify = 0; +#endif + word32 siglen = ECC_BUFSIZE; + byte sig[ECC_BUFSIZE]; + byte adjustedSig[ECC_BUFSIZE+1]; + byte digest[] = TEST_STRING; + word32 digestlen = (word32)TEST_STRING_SZ; + + /* Init stack var */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(sig, 0, siglen); + XMEMSET(adjustedSig, 0, ECC_BUFSIZE+1); + + /* Init structs. */ + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, &key), + 0); + + /* Check bad args. */ + ExpectIntEQ(wc_ecc_sign_hash(NULL, digestlen, sig, &siglen, &rng, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, NULL, &siglen, &rng, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, NULL, &rng, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, NULL, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + +#ifdef HAVE_ECC_VERIFY + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, + &key), 0); + ExpectIntEQ(verify, 1); + + /* test check on length of signature passed in */ + XMEMCPY(adjustedSig, sig, siglen); + adjustedSig[1] = adjustedSig[1] + 1; /* add 1 to length for extra byte */ +#ifndef NO_STRICT_ECDSA_LEN + ExpectIntNE(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, + &verify, &key), 0); +#else + /* if NO_STRICT_ECDSA_LEN is set then extra bytes after the signature + * is allowed */ + ExpectIntEQ(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, + &verify, &key), 0); +#endif + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_verify_hash(NULL, siglen, digest, digestlen, &verify, + &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, NULL, digestlen, &verify, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, NULL, &key), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, + NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); +#endif /* HAVE_ECC_VERIFY */ + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_sign_hash */ + +/* + * Testing wc_ecc_shared_secret() + */ +int test_wc_ecc_shared_secret(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && !defined(WC_NO_RNG) + ecc_key key; + ecc_key pubKey; + WC_RNG rng; +#if defined(NO_ECC256) + int ret; +#endif + byte out[KEY32]; + int keySz = sizeof(out); + word32 outlen = (word32)sizeof(out); + +#if defined(HAVE_ECC) && !defined(NO_ECC256) + const char* qx = + "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; + const char* qy = + "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; + const char* d = + "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; + const char* curveName = "SECP256R1"; + const byte expected_shared_secret[] = + { + 0x65, 0xc0, 0xd4, 0x61, 0x17, 0xe6, 0x09, 0x75, + 0xf0, 0x12, 0xa0, 0x4d, 0x0b, 0x41, 0x30, 0x7a, + 0x51, 0xf0, 0xb3, 0xaf, 0x23, 0x8f, 0x0f, 0xdf, + 0xf1, 0xff, 0x23, 0x64, 0x28, 0xca, 0xf8, 0x06 + }; +#endif + + PRIVATE_KEY_UNLOCK(); + + /* Initialize variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&pubKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(out, 0, keySz); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_ecc_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + +#if !defined(NO_ECC256) + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); + ExpectIntEQ(wc_ecc_import_raw(&pubKey, qx, qy, NULL, curveName), 0); +#else + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); +#endif + +#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ + !defined(HAVE_SELFTEST) + ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); +#endif + + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), 0); + +#if !defined(NO_ECC256) + ExpectIntEQ(XMEMCMP(out, expected_shared_secret, outlen), 0); +#endif + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_shared_secret(NULL, &pubKey, out, &outlen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret(&key, NULL, out, &outlen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, NULL, &outlen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* Invalid length */ + outlen = 1; + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), + WC_NO_ERR_TRACE(BUFFER_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&pubKey); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + PRIVATE_KEY_LOCK(); +#endif + return EXPECT_RESULT(); +} /* END tests_wc_ecc_shared_secret */ + +/* + * testint wc_ecc_export_x963() + */ +int test_wc_ecc_export_x963(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + byte out[ECC_ASN963_MAX_BUF_SZ]; + word32 outlen = sizeof(out); + int ret; + + PRIVATE_KEY_UNLOCK(); + + /* Initialize variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(out, 0, outlen); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY20, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_export_x963(NULL, out, &outlen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_export_x963(&key, NULL, &outlen), + WC_NO_ERR_TRACE(LENGTH_ONLY_E)); + ExpectIntEQ(wc_ecc_export_x963(&key, out, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + PRIVATE_KEY_LOCK(); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_export_x963 */ + +/* + * Testing wc_ecc_export_x963_ex() + * compile with --enable-compkey will use compression. + */ +int test_wc_ecc_export_x963_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int ret; + byte out[ECC_ASN963_MAX_BUF_SZ]; + word32 outlen = sizeof(out); + #ifdef HAVE_COMP_KEY + word32 badOutLen = 5; + #endif + + /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(out, 0, outlen); + PRIVATE_KEY_UNLOCK(); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY64, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + +#ifdef HAVE_COMP_KEY + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), 0); +#else + ExpectIntEQ(ret = wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), 0); +#endif + + /* Test bad args. */ +#ifdef HAVE_COMP_KEY + ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, COMP), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, COMP), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, COMP), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#if defined(HAVE_FIPS) && (!defined(FIPS_VERSION_LT) || FIPS_VERSION_LT(5,3)) + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), + WC_NO_ERR_TRACE(BUFFER_E)); +#else + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), + WC_NO_ERR_TRACE(LENGTH_ONLY_E)); +#endif + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); +#else + ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, NOCOMP), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, NOCOMP), + WC_NO_ERR_TRACE(LENGTH_ONLY_E)); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, 1), + WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, NOCOMP), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); +#endif + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_export_x963_ex */ + +/* + * testing wc_ecc_import_x963() + */ +int test_wc_ecc_import_x963(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ + defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + ecc_key pubKey; + ecc_key key; + WC_RNG rng; + byte x963[ECC_ASN963_MAX_BUF_SZ]; + word32 x963Len = (word32)sizeof(x963); + int ret; + + /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&pubKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(x963, 0, x963Len); + + ExpectIntEQ(wc_ecc_init(&pubKey), 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#if FIPS_VERSION3_GE(6,0,0) + ret = wc_ecc_make_key(&rng, KEY32, &key); +#else + ret = wc_ecc_make_key(&rng, KEY24, &key); +#endif +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + + ExpectIntEQ(ret, 0); + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ecc_export_x963(&key, x963, &x963Len), 0); + PRIVATE_KEY_LOCK(); + + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, &pubKey), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_import_x963(NULL, x963Len, &pubKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len + 1, &pubKey), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + wc_ecc_free(&pubKey); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END wc_ecc_import_x963 */ + +/* + * testing wc_ecc_import_private_key() + */ +int test_wc_ecc_import_private_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ + defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + ecc_key key; + ecc_key keyImp; + WC_RNG rng; + byte privKey[ECC_PRIV_KEY_BUF]; /* Raw private key.*/ + byte x963Key[ECC_ASN963_MAX_BUF_SZ]; + word32 privKeySz = (word32)sizeof(privKey); + word32 x963KeySz = (word32)sizeof(x963Key); + int ret; + + /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&keyImp, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(privKey, 0, privKeySz); + XMEMSET(x963Key, 0, x963KeySz); + PRIVATE_KEY_UNLOCK(); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_ecc_init(&keyImp), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY48, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ecc_export_x963(&key, x963Key, &x963KeySz), 0); + PRIVATE_KEY_LOCK(); + ExpectIntEQ(wc_ecc_export_private_only(&key, privKey, &privKeySz), 0); + + ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, + x963KeySz, &keyImp), 0); + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, + x963KeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_private_key(NULL, privKeySz, x963Key, x963KeySz, + &keyImp), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&keyImp); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_import_private_key */ + +/* + * Testing wc_ecc_export_private_only() + */ +int test_wc_ecc_export_private_only(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + byte out[ECC_PRIV_KEY_BUF]; + word32 outlen = sizeof(out); + int ret; + + /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(out, 0, outlen); + PRIVATE_KEY_UNLOCK(); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY32, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_export_private_only(&key, out, &outlen), 0); + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_export_private_only(NULL, out, &outlen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_export_private_only(&key, NULL, &outlen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_export_private_only(&key, out, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_export_private_only */ + +/* + * Testing wc_ecc_rs_to_sig() + */ +int test_wc_ecc_rs_to_sig(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(NO_ASN) + /* first [P-192,SHA-1] vector from FIPS 186-3 NIST vectors */ + const char* R = "6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e"; + const char* S = "02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41"; + const char* zeroStr = "0"; + byte sig[ECC_MAX_SIG_SIZE]; + word32 siglen = (word32)sizeof(sig); + /* R and S max size is the order of curve. 2^192.*/ + int keySz = KEY24; + byte r[KEY24]; + byte s[KEY24]; + word32 rlen = (word32)sizeof(r); + word32 slen = (word32)sizeof(s); +#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) + word32 zeroLen = 0; +#endif + + /* Init stack variables. */ + XMEMSET(sig, 0, ECC_MAX_SIG_SIZE); + XMEMSET(r, 0, keySz); + XMEMSET(s, 0, keySz); + + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, &siglen), 0); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &slen), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_rs_to_sig(NULL, S, sig, &siglen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_rs_to_sig(R, NULL, sig, &siglen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, NULL, &siglen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_rs_to_sig(R, zeroStr, sig, &siglen), + WC_NO_ERR_TRACE(MP_ZERO_E)); + ExpectIntEQ(wc_ecc_rs_to_sig(zeroStr, S, sig, &siglen), + WC_NO_ERR_TRACE(MP_ZERO_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(NULL, siglen, r, &rlen, s, &slen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, NULL, &rlen, s, &slen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, NULL, s, &slen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, NULL, &slen), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); +#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &zeroLen, s, &slen), + WC_NO_ERR_TRACE(BUFFER_E)); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &zeroLen), + WC_NO_ERR_TRACE(BUFFER_E)); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_rs_to_sig */ + +int test_wc_ecc_import_raw(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(NO_ECC256) + ecc_key key; + const char* qx = + "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; + const char* qy = + "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; + const char* d = + "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; + const char* curveName = "SECP256R1"; +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + const char* kNullStr = ""; + int ret; +#endif + + XMEMSET(&key, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + + /* Test good import */ + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_import_raw(NULL, qx, qy, d, curveName), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_raw(&key, NULL, qy, d, curveName), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_raw(&key, qx, NULL, d, curveName), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif + ExpectIntLT(ret = wc_ecc_import_raw(&key, kNullStr, kNullStr, kNullStr, + curveName), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(ECC_INF_E)) || + (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); +#endif +#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntLT(ret = wc_ecc_import_raw(&key, "0", qy, d, curveName), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) || + (ret == WC_NO_ERR_TRACE(MP_VAL))); +#else + ExpectIntEQ(wc_ecc_import_raw(&key, "0", qy, d, curveName), 0); +#endif + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntLT(ret = wc_ecc_import_raw(&key, qx, "0", d, curveName), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) || + (ret == WC_NO_ERR_TRACE(MP_VAL))); +#else + ExpectIntEQ(wc_ecc_import_raw(&key, qx, "0", d, curveName), 0); +#endif + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif + ExpectIntEQ(wc_ecc_import_raw(&key, "0", "0", d, curveName), + WC_NO_ERR_TRACE(ECC_INF_E)); +#endif + + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_import_raw */ + +int test_wc_ecc_import_unsigned(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + ecc_key key; + const byte qx[] = { + 0xbb, 0x33, 0xac, 0x4c, 0x27, 0x50, 0x4a, 0xc6, + 0x4a, 0xa5, 0x04, 0xc3, 0x3c, 0xde, 0x9f, 0x36, + 0xdb, 0x72, 0x2d, 0xce, 0x94, 0xea, 0x2b, 0xfa, + 0xcb, 0x20, 0x09, 0x39, 0x2c, 0x16, 0xe8, 0x61 + }; + const byte qy[] = { + 0x02, 0xe9, 0xaf, 0x4d, 0xd3, 0x02, 0x93, 0x9a, + 0x31, 0x5b, 0x97, 0x92, 0x21, 0x7f, 0xf0, 0xcf, + 0x18, 0xda, 0x91, 0x11, 0x02, 0x34, 0x86, 0xe8, + 0x20, 0x58, 0x33, 0x0b, 0x80, 0x34, 0x89, 0xd8 + }; + const byte d[] = { + 0x45, 0xb6, 0x69, 0x02, 0x73, 0x9c, 0x6c, 0x85, + 0xa1, 0x38, 0x5b, 0x72, 0xe8, 0xe8, 0xc7, 0xac, + 0xc4, 0x03, 0x8d, 0x53, 0x35, 0x04, 0xfa, 0x6c, + 0x28, 0xdc, 0x34, 0x8d, 0xe1, 0xa8, 0x09, 0x8c + }; +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + const byte nullBytes[32] = {0}; + int ret; +#endif + int curveId = ECC_SECP256R1; + + XMEMSET(&key, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, + curveId), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_import_unsigned(NULL, (byte*)qx, (byte*)qy, (byte*)d, + curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_unsigned(&key, NULL, (byte*)qy, (byte*)d, + curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, NULL, (byte*)d, + curveId), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, + ECC_CURVE_INVALID), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntLT(ret = wc_ecc_import_unsigned(&key, (byte*)nullBytes, + (byte*)nullBytes, (byte*)nullBytes, curveId), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(ECC_INF_E)) || + (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); +#endif + + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_import_unsigned */ + +/* + * Testing wc_ecc_sig_size() + */ +int test_wc_ecc_sig_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int keySz = KEY16; + int ret; + + XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&key, 0, sizeof(key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntLE(wc_ecc_sig_size(&key), + (2 * keySz + SIG_HEADER_SZ + ECC_MAX_PAD_SZ)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_sig_size */ + +/* + * Testing wc_ecc_ctx_new() + */ +int test_wc_ecc_ctx_new(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) + WC_RNG rng; + ecEncCtx* cli = NULL; + ecEncCtx* srv = NULL; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + ExpectNotNull(srv = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); + wc_ecc_ctx_free(cli); + cli = NULL; + wc_ecc_ctx_free(srv); + + /* Test bad args. */ + /* wc_ecc_ctx_new_ex() will free if returned NULL. */ + ExpectNull(cli = wc_ecc_ctx_new(0, &rng)); + ExpectNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, NULL)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_ctx_free(cli); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_ctx_new */ + +/* + * Tesing wc_ecc_reset() + */ +int test_wc_ecc_ctx_reset(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) + ecEncCtx* ctx = NULL; + WC_RNG rng; + + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + + ExpectIntEQ(wc_ecc_ctx_reset(ctx, &rng), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_ctx_reset(NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_ctx_reset(ctx, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ecc_ctx_free(ctx); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_ctx_reset */ + +/* + * Testing wc_ecc_ctx_set_peer_salt() and wc_ecc_ctx_get_own_salt() + */ +int test_wc_ecc_ctx_set_peer_salt(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) + WC_RNG rng; + ecEncCtx* cliCtx = NULL; + ecEncCtx* servCtx = NULL; + const byte* cliSalt = NULL; + const byte* servSalt = NULL; + + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(cliCtx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + ExpectNotNull(servCtx = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); + + /* Test bad args. */ + ExpectNull(cliSalt = wc_ecc_ctx_get_own_salt(NULL)); + + ExpectNotNull(cliSalt = wc_ecc_ctx_get_own_salt(cliCtx)); + ExpectNotNull(servSalt = wc_ecc_ctx_get_own_salt(servCtx)); + + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, servSalt), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(NULL, servSalt), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ecc_ctx_free(cliCtx); + wc_ecc_ctx_free(servCtx); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_ecc_ctx_set_peer_salt */ + +/* + * Testing wc_ecc_ctx_set_info() + */ +int test_wc_ecc_ctx_set_info(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) + ecEncCtx* ctx = NULL; + WC_RNG rng; + const char* optInfo = "Optional Test Info."; + int optInfoSz = (int)XSTRLEN(optInfo); + const char* badOptInfo = NULL; + + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, optInfoSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_ctx_set_info(NULL, (byte*)optInfo, optInfoSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)badOptInfo, optInfoSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, -1), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ecc_ctx_free(ctx); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_ctx_set_info */ + +/* + * Testing wc_ecc_encrypt() and wc_ecc_decrypt() + */ +int test_wc_ecc_encryptDecrypt(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) && \ + defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128) + ecc_key srvKey; + ecc_key cliKey; + ecc_key tmpKey; + WC_RNG rng; + int ret; + const char* msg = "EccBlock Size 16"; + word32 msgSz = (word32)XSTRLEN("EccBlock Size 16"); +#ifdef WOLFSSL_ECIES_OLD + byte out[(sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; +#elif defined(WOLFSSL_ECIES_GEN_IV) + byte out[KEY20 * 2 + 1 + AES_BLOCK_SIZE + + (sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; +#else + byte out[KEY20 * 2 + 1 + (sizeof("EccBlock Size 16") - 1) + + WC_SHA256_DIGEST_SIZE]; +#endif + word32 outSz = (word32)sizeof(out); + byte plain[sizeof("EccBlock Size 16")]; + word32 plainSz = (word32)sizeof(plain); + int keySz = KEY20; + + /* Init stack variables. */ + XMEMSET(out, 0, outSz); + XMEMSET(plain, 0, plainSz); + XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&srvKey, 0, sizeof(ecc_key)); + XMEMSET(&cliKey, 0, sizeof(ecc_key)); + XMEMSET(&tmpKey, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&cliKey), 0); + ret = wc_ecc_make_key(&rng, keySz, &cliKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &cliKey.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_init(&srvKey), 0); + ret = wc_ecc_make_key(&rng, keySz, &srvKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &srvKey.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_init(&tmpKey), 0); + +#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ + !defined(HAVE_SELFTEST) + ExpectIntEQ(wc_ecc_set_rng(&srvKey, &rng), 0); + ExpectIntEQ(wc_ecc_set_rng(&cliKey, &rng), 0); +#endif + + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, + &outSz, NULL), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_encrypt(NULL, &srvKey, (byte*)msg, msgSz, out, &outSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, NULL, (byte*)msg, msgSz, out, &outSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, NULL, msgSz, out, &outSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, NULL, + &outSz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#ifdef WOLFSSL_ECIES_OLD + tmpKey.dp = cliKey.dp; + ExpectIntEQ(wc_ecc_copy_point(&cliKey.pubkey, &tmpKey.pubkey), 0); +#endif + + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, &plainSz, + NULL), 0); + ExpectIntEQ(wc_ecc_decrypt(NULL, &tmpKey, out, outSz, plain, &plainSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifdef WOLFSSL_ECIES_OLD + /* NULL parameter allowed in new implementations - public key comes from + * the message. */ + ExpectIntEQ(wc_ecc_decrypt(&srvKey, NULL, out, outSz, plain, &plainSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, NULL, outSz, plain, &plainSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, NULL, &plainSz, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(XMEMCMP(msg, plain, msgSz), 0); + + wc_ecc_free(&tmpKey); + wc_ecc_free(&srvKey); + wc_ecc_free(&cliKey); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_encryptDecrypt */ + +/* + * Testing wc_ecc_del_point() and wc_ecc_new_point() + */ +int test_wc_ecc_del_point(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) + ecc_point* pt = NULL; + + ExpectNotNull(pt = wc_ecc_new_point()); + wc_ecc_del_point(pt); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_del_point */ + +/* + * Testing wc_ecc_point_is_at_infinity(), wc_ecc_export_point_der(), + * wc_ecc_import_point_der(), wc_ecc_copy_point(), wc_ecc_point_is_on_curve(), + * and wc_ecc_cmp_point() + */ +int test_wc_ecc_pointFns(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && \ + !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ + !defined(WOLFSSL_ATECC608A) + ecc_key key; + WC_RNG rng; + int ret; + ecc_point* point = NULL; + ecc_point* cpypt = NULL; + int idx = 0; + int keySz = KEY32; + byte der[DER_SZ(KEY32)]; + word32 derlenChk = 0; + word32 derSz = DER_SZ(KEY32); + + /* Init stack variables. */ + XMEMSET(der, 0, derSz); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectNotNull(point = wc_ecc_new_point()); + ExpectNotNull(cpypt = wc_ecc_new_point()); + + /* Export */ + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, NULL, + &derlenChk), WC_NO_ERR_TRACE(LENGTH_ONLY_E)); + /* Check length value. */ + ExpectIntEQ(derSz, derlenChk); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, + &derSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_export_point_der(-2, &key.pubkey, der, &derSz), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), NULL, der, &derSz), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, + NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + /* Import */ + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, point), 0); + ExpectIntEQ(wc_ecc_cmp_point(&key.pubkey, point), 0); + /* Test bad args. */ + ExpectIntEQ( wc_ecc_import_point_der(NULL, derSz, idx, point), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, -1, point), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz + 1, idx, point), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + /* Copy */ + ExpectIntEQ(wc_ecc_copy_point(point, cpypt), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_copy_point(NULL, cpypt), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_copy_point(point, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + /* Compare point */ + ExpectIntEQ(wc_ecc_cmp_point(point, cpypt), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_cmp_point(NULL, cpypt), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_cmp_point(point, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* At infinity if return == 1, otherwise return == 0. */ + ExpectIntEQ(wc_ecc_point_is_at_infinity(point), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_point_is_at_infinity(NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || \ + (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2))) +#ifdef USE_ECC_B_PARAM + /* On curve if ret == 0 */ + ExpectIntEQ(wc_ecc_point_is_on_curve(point, idx), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_point_is_on_curve(NULL, idx), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_point_is_on_curve(point, 1000), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); +#endif /* USE_ECC_B_PARAM */ +#endif /* !HAVE_SELFTEST && (!HAVE_FIPS || HAVE_FIPS_VERSION > 2) */ + + /* Free */ + wc_ecc_del_point(point); + wc_ecc_del_point(cpypt); + wc_ecc_free(&key); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_pointFns */ + +/* + * Testing wc_ecc_shared_secret_ssh() + */ +int test_wc_ecc_shared_secret_ssh(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && \ + !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ + !defined(WOLFSSL_ATECC608A) && !defined(PLUTON_CRYPTO_ECC) && \ + !defined(WOLFSSL_CRYPTOCELL) + ecc_key key; + ecc_key key2; + WC_RNG rng; + int ret; + int keySz = KEY32; +#if FIPS_VERSION3_GE(6,0,0) + int key2Sz = KEY28; +#else + int key2Sz = KEY24; +#endif + byte secret[KEY32]; + word32 secretLen = (word32)keySz; + + /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&key2, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(secret, 0, secretLen); + PRIVATE_KEY_UNLOCK(); + + /* Make keys */ + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + + ExpectIntEQ(wc_ecc_init(&key2), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, key2Sz, &key2); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key2.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + +#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ + !defined(HAVE_SELFTEST) + ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); +#endif + + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, + &secretLen), 0); + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_shared_secret_ssh(NULL, &key2.pubkey, secret, + &secretLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, NULL, secret, &secretLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, NULL, &secretLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + key.type = ECC_PUBLICKEY; + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, + &secretLen), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + wc_ecc_free(&key2); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_shared_secret_ssh */ + +/* + * Testing wc_ecc_verify_hash_ex() and wc_ecc_verify_hash_ex() + */ +int test_wc_ecc_verify_hash_ex(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && defined(WOLFSSL_PUBLIC_MP) \ + && !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ + !defined(WOLFSSL_ATECC608A) && !defined(WOLFSSL_KCAPI_ECC) + ecc_key key; + WC_RNG rng; + int ret; + mp_int r; + mp_int s; + mp_int z; + unsigned char hash[] = "Everyone gets Friday off.EccSig"; + unsigned char iHash[] = "Everyone gets Friday off......."; + unsigned char shortHash[] = TEST_STRING; + word32 hashlen = sizeof(hash); + word32 iHashLen = sizeof(iHash); + word32 shortHashLen = sizeof(shortHash); + int keySz = KEY32; + int verify_ok = 0; + + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(&r, 0, sizeof(mp_int)); + XMEMSET(&s, 0, sizeof(mp_int)); + XMEMSET(&z, 0, sizeof(mp_int)); + + /* Initialize r, s and z. */ + ExpectIntEQ(mp_init_multi(&r, &s, &z, NULL, NULL, NULL), MP_OKAY); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, &s), 0); + /* verify_ok should be 1. */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, hash, hashlen, &verify_ok, &key), + 0); + ExpectIntEQ(verify_ok, 1); + + /* verify_ok should be 0 */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, iHash, iHashLen, &verify_ok, + &key), 0); + ExpectIntEQ(verify_ok, 0); + + /* verify_ok should be 0. */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, + &verify_ok, &key), 0); + ExpectIntEQ(verify_ok, 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ecc_sign_hash_ex(NULL, hashlen, &rng, &key, &r, &s), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, NULL, &key, &r, &s), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, NULL, &r, &s), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, NULL, &s), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, NULL), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_verify_hash_ex(NULL, &s, shortHash, shortHashLen, + &verify_ok, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, NULL, shortHash, shortHashLen, + &verify_ok, &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &s, shortHash, shortHashLen, + &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &z, shortHash, shortHashLen, + &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &z, shortHash, shortHashLen, + &verify_ok, &key), WC_NO_ERR_TRACE(MP_ZERO_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, NULL, shortHashLen, &verify_ok, + &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, NULL, + &key), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, + &verify_ok, NULL), WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + wc_ecc_free(&key); + mp_free(&r); + mp_free(&s); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_verify_hash_ex */ + +/* + * Testing wc_ecc_mulmod() + */ +int test_wc_ecc_mulmod(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && \ + !(defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) || \ + defined(WOLFSSL_VALIDATE_ECC_IMPORT)) + ecc_key key1; + ecc_key key2; + ecc_key key3; + WC_RNG rng; + int ret; + + XMEMSET(&key1, 0, sizeof(ecc_key)); + XMEMSET(&key2, 0, sizeof(ecc_key)); + XMEMSET(&key3, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ecc_init(&key1), 0); + ExpectIntEQ(wc_ecc_init(&key2), 0); + ExpectIntEQ(wc_ecc_init(&key3), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY32, &key1); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key1.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + + ExpectIntEQ(wc_ecc_import_raw_ex(&key2, key1.dp->Gx, key1.dp->Gy, + key1.dp->Af, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_import_raw_ex(&key3, key1.dp->Gx, key1.dp->Gy, + key1.dp->prime, ECC_SECP256R1), 0); + + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, + &key3.pubkey, wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), + 1), 0); + + /* Test bad args. */ + ExpectIntEQ(ret = wc_ecc_mulmod(NULL, &key2.pubkey, &key3.pubkey, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), NULL, &key3.pubkey, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, NULL, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, + &key3.pubkey, wc_ecc_key_get_priv(&key2), NULL, 1), + WC_NO_ERR_TRACE(ECC_BAD_ARG_E)); + + wc_ecc_free(&key1); + wc_ecc_free(&key2); + wc_ecc_free(&key3); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif /* HAVE_ECC && !WOLFSSL_ATECC508A */ + return EXPECT_RESULT(); +} /* END test_wc_ecc_mulmod */ + +/* + * Testing wc_ecc_is_valid_idx() + */ +int test_wc_ecc_is_valid_idx(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) + ecc_key key; + WC_RNG rng; + int ret; + int iVal = -2; + int iVal2 = 3000; + + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, 32, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_is_valid_idx(key.idx), 1); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_is_valid_idx(iVal), 0); + ExpectIntEQ(wc_ecc_is_valid_idx(iVal2), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); + +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_is_valid_idx */ + +/* + * Testing wc_ecc_get_curve_id_from_oid() + */ +int test_wc_ecc_get_curve_id_from_oid(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) + const byte oid[] = {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07}; + word32 len = sizeof(oid); + + /* Bad Cases */ + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(NULL, len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, 0), ECC_CURVE_INVALID); + /* Good Case */ + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, len), ECC_SECP256R1); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_get_curve_id_from_oid */ + +/* + * Testing wc_ecc_sig_size_calc() + */ +int test_wc_ecc_sig_size_calc(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) + ecc_key key; + WC_RNG rng; + int sz = 0; + int ret; + + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, 16, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif +#if FIPS_VERSION3_GE(6,0,0) + ExpectIntEQ(ret, WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#else + ExpectIntEQ(ret, 0); +#endif +#if FIPS_VERSION3_LT(6,0,0) + sz = key.dp->size; + ExpectIntGT(wc_ecc_sig_size_calc(sz), 0); +#else + (void) sz; +#endif + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ecc_sig_size_calc */ + +/* + * Testing wc_EccPrivateKeyToDer + */ +int test_wc_EccPrivateKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) + byte output[ONEK_BUF]; + ecc_key eccKey; + WC_RNG rng; + word32 inLen = 0; + word32 outLen = 0; + int ret; + + XMEMSET(&eccKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + PRIVATE_KEY_UNLOCK(); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&eccKey), 0); + ret = wc_ecc_make_key(&rng, KEY14, &eccKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + /* Bad Cases */ + ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + inLen = wc_EccPrivateKeyToDer(&eccKey, NULL, 0); + ExpectIntGT(inLen, 0); + ExpectIntEQ(wc_EccPrivateKeyToDer(&eccKey, output, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good Case */ + ExpectIntGT(outLen = (word32)wc_EccPrivateKeyToDer(&eccKey, output, inLen), + 0); + + wc_ecc_free(&eccKey); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + +#if defined(OPENSSL_EXTRA) && defined(HAVE_ALL_CURVES) + { + /* test importing private only into a PKEY struct */ + EC_KEY* ec = NULL; + EVP_PKEY* pkey = NULL; + const unsigned char* der; + + der = output; + ExpectNotNull(pkey = d2i_PrivateKey(EVP_PKEY_EC, NULL, &der, outLen)); + + der = output; + ExpectNotNull(ec = d2i_ECPrivateKey(NULL, &der, outLen)); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ec), SSL_SUCCESS); + if (EXPECT_FAIL()) { + EC_KEY_free(ec); + } + EVP_PKEY_free(pkey); /* EC_KEY should be free'd by free'ing pkey */ + } +#endif + PRIVATE_KEY_LOCK(); +#endif + return EXPECT_RESULT(); +} /* End test_wc_EccPrivateKeyToDer */ + diff --git a/tests/api/test_ecc.h b/tests/api/test_ecc.h new file mode 100644 index 000000000..d92e99b2c --- /dev/null +++ b/tests/api/test_ecc.h @@ -0,0 +1,100 @@ +/* test_ecc.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_ECC_H +#define WOLFCRYPT_TEST_ECC_H + +#include + +int test_wc_ecc_get_curve_size_from_name(void); +int test_wc_ecc_get_curve_id_from_name(void); +int test_wc_ecc_get_curve_id_from_params(void); +int test_wc_ecc_get_curve_id_from_dp_params(void); +int test_wc_ecc_make_key(void); +int test_wc_ecc_init(void); +int test_wc_ecc_check_key(void); +int test_wc_ecc_get_generator(void); +int test_wc_ecc_size(void); +int test_wc_ecc_params(void); +int test_wc_ecc_signVerify_hash(void); +int test_wc_ecc_shared_secret(void); +int test_wc_ecc_export_x963(void); +int test_wc_ecc_export_x963_ex(void); +int test_wc_ecc_import_x963(void); +int test_wc_ecc_import_private_key(void); +int test_wc_ecc_export_private_only(void); +int test_wc_ecc_rs_to_sig(void); +int test_wc_ecc_import_raw(void); +int test_wc_ecc_import_unsigned(void); +int test_wc_ecc_sig_size(void); +int test_wc_ecc_ctx_new(void); +int test_wc_ecc_ctx_reset(void); +int test_wc_ecc_ctx_set_peer_salt(void); +int test_wc_ecc_ctx_set_info(void); +int test_wc_ecc_encryptDecrypt(void); +int test_wc_ecc_del_point(void); +int test_wc_ecc_pointFns(void); +int test_wc_ecc_shared_secret_ssh(void); +int test_wc_ecc_verify_hash_ex(void); +int test_wc_ecc_mulmod(void); +int test_wc_ecc_is_valid_idx(void); +int test_wc_ecc_get_curve_id_from_oid(void); +int test_wc_ecc_sig_size_calc(void); +int test_wc_EccPrivateKeyToDer(void); + +#define TEST_ECC_DECLS \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_curve_size_from_name), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_curve_id_from_name), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_curve_id_from_params), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_curve_id_from_dp_params), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_make_key), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_init), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_check_key), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_generator), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_size), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_params), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_signVerify_hash), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_shared_secret), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_export_x963), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_export_x963_ex), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_import_x963), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_import_private_key), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_export_private_only), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_rs_to_sig), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_import_raw), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_import_unsigned), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_sig_size), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_ctx_new), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_ctx_reset), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_ctx_set_peer_salt), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_ctx_set_info), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_encryptDecrypt), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_del_point), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_pointFns), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_shared_secret_ssh), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_verify_hash_ex), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_mulmod), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_is_valid_idx), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_get_curve_id_from_oid), \ + TEST_DECL_GROUP("ecc", test_wc_ecc_sig_size_calc), \ + TEST_DECL_GROUP("ecc", test_wc_EccPrivateKeyToDer) + +#endif /* WOLFCRYPT_TEST_ECC_H */ diff --git a/tests/api/test_ed25519.c b/tests/api/test_ed25519.c new file mode 100644 index 000000000..075d376dd --- /dev/null +++ b/tests/api/test_ed25519.c @@ -0,0 +1,605 @@ +/* test_ed25519.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_ed25519_make_key(). + */ +int test_wc_ed25519_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_MAKE_KEY) + ed25519_key key; + WC_RNG rng; + unsigned char pubkey[ED25519_PUB_KEY_SIZE+1]; + int pubkey_sz = ED25519_PUB_KEY_SIZE; + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_ed25519_make_public(&key, pubkey, (word32)pubkey_sz), + WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); + ExpectIntEQ(wc_ed25519_make_public(&key, pubkey+1, (word32)pubkey_sz), + WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_make_key(NULL, ED25519_KEY_SIZE, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE - 1, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE + 1, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_make_key */ + +/* + * Testing wc_ed25519_init() + */ +int test_wc_ed25519_init(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) + ed25519_key key; + + XMEMSET(&key, 0, sizeof(ed25519_key)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_init */ + +/* + * Test wc_ed25519_sign_msg() and wc_ed25519_verify_msg() + */ +int test_wc_ed25519_sign_msg(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_SIGN) + WC_RNG rng; + ed25519_key key; + byte msg[] = "Everybody gets Friday off.\n"; + byte sig[ED25519_SIG_SIZE+1]; + word32 msglen = sizeof(msg); + word32 siglen = ED25519_SIG_SIZE; + word32 badSigLen = ED25519_SIG_SIZE - 1; +#ifdef HAVE_ED25519_VERIFY + int verify_ok = 0; /*1 = Verify success.*/ +#endif + + /* Initialize stack variables. */ + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(sig, 0, sizeof(sig)); + + /* Initialize key. */ + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, &key), 0); + ExpectIntEQ(siglen, ED25519_SIG_SIZE); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig+1, &siglen, &key), 0); + ExpectIntEQ(siglen, ED25519_SIG_SIZE); + + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_sign_msg(NULL, msglen, sig, &siglen, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, NULL, &siglen, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, NULL, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &badSigLen, &key), + WC_NO_ERR_TRACE(BUFFER_E)); + ExpectIntEQ(badSigLen, ED25519_SIG_SIZE); + badSigLen--; + +#ifdef HAVE_ED25519_VERIFY + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, &verify_ok, + &key), 0); + ExpectIntEQ(verify_ok, 1); + + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen - 1, msg, msglen, + &verify_ok, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen + 1, msg, msglen, + &verify_ok, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(NULL, siglen, msg, msglen, &verify_ok, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, NULL, msglen, &verify_ok, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, NULL, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, siglen, msg, msglen, &verify_ok, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_verify_msg(sig+1, badSigLen, msg, msglen, &verify_ok, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif /* Verify. */ + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_ed25519_sign_msg */ + +/* + * Testing wc_ed25519_import_public() + */ +int test_wc_ed25519_import_public(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) + ed25519_key pubKey; + WC_RNG rng; + const byte in[] = "Ed25519PublicKeyUnitTest......\n"; + word32 inlen = sizeof(in); + + XMEMSET(&pubKey, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#ifdef HAVE_ED25519_MAKE_KEY + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &pubKey), 0); +#endif + + ExpectIntEQ(wc_ed25519_import_public_ex(in, inlen, &pubKey, 1), 0); + ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_import_public(NULL, inlen, &pubKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_public(in, inlen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_public(in, inlen - 1, &pubKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&pubKey); +#endif + return EXPECT_RESULT(); +} /* END wc_ed25519_import_public */ + +/* + * Testing wc_ed25519_import_private_key() + */ +int test_wc_ed25519_import_private_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) + ed25519_key key; + WC_RNG rng; + const byte privKey[] = "Ed25519PrivateKeyUnitTest.....\n"; + const byte pubKey[] = "Ed25519PublicKeyUnitTest......\n"; + word32 privKeySz = sizeof(privKey); + word32 pubKeySz = sizeof(pubKey); +#ifdef HAVE_ED25519_KEY_EXPORT + byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; + word32 bothKeysSz = sizeof(bothKeys); +#endif + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#ifdef HAVE_ED25519_MAKE_KEY + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); +#endif + + ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, privKeySz, pubKey, + pubKeySz, &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); + +#ifdef HAVE_ED25519_KEY_EXPORT + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed25519_export_private(&key, bothKeys, &bothKeysSz), 0); + PRIVATE_KEY_LOCK(); + ExpectIntEQ(wc_ed25519_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, + &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); +#endif + + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_import_private_key(NULL, privKeySz, pubKey, pubKeySz, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, + pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, + pubKeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz - 1, pubKey, + pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, + pubKeySz - 1, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, 0, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_import_private_key */ + +/* + * Testing wc_ed25519_export_public() and wc_ed25519_export_private_only() + */ +int test_wc_ed25519_export(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + ed25519_key key; + WC_RNG rng; + byte priv[ED25519_PRV_KEY_SIZE]; + byte pub[ED25519_PUB_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); +#ifndef HAVE_ED25519_MAKE_KEY + const byte privKey[] = { + 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, + 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, + 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, + 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 + }; + const byte pubKey[] = { + 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, + 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, + 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, + 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d + }; +#endif + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#ifdef HAVE_ED25519_MAKE_KEY + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); +#else + ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), + pubKey, sizeof(pubKey), &key, 1), 0); +#endif + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed25519_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(pubSz, ED25519_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_public(NULL, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_public(&key, NULL, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_public(&key, pub, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, &privSz), 0); + ExpectIntEQ(privSz, ED25519_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_private_only(NULL, priv, &privSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_private_only(&key, NULL, &privSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_export */ + +/* + * Testing wc_ed25519_size() + */ +int test_wc_ed25519_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) + ed25519_key key; + WC_RNG rng; +#ifndef HAVE_ED25519_MAKE_KEY + const byte privKey[] = { + 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, + 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, + 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, + 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 + }; + const byte pubKey[] = { + 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, + 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, + 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, + 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d + }; +#endif + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#ifdef HAVE_ED25519_MAKE_KEY + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); +#else + ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), + pubKey, sizeof(pubKey), &key, 1), 0); +#endif + + ExpectIntEQ(wc_ed25519_size(&key), ED25519_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed25519_sig_size(&key), ED25519_SIG_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed25519_pub_size(&key), ED25519_PUB_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed25519_priv_size(&key), ED25519_PRV_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_size */ + +/* + * Testing wc_ed25519_export_private() and wc_ed25519_export_key() + */ +int test_wc_ed25519_exportKey(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + WC_RNG rng; + ed25519_key key; + byte priv[ED25519_PRV_KEY_SIZE]; + byte pub[ED25519_PUB_KEY_SIZE]; + byte privOnly[ED25519_PRV_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + word32 privOnlySz = sizeof(privOnly); +#ifndef HAVE_ED25519_MAKE_KEY + const byte privKey[] = { + 0xf8, 0x55, 0xb7, 0xb6, 0x49, 0x3f, 0x99, 0x9c, + 0x88, 0xe3, 0xc5, 0x42, 0x6a, 0xa4, 0x47, 0x4a, + 0xe4, 0x95, 0xda, 0xdb, 0xbf, 0xf8, 0xa7, 0x42, + 0x9d, 0x0e, 0xe7, 0xd0, 0x57, 0x8f, 0x16, 0x69 + }; + const byte pubKey[] = { + 0x42, 0x3b, 0x7a, 0xf9, 0x82, 0xcf, 0xf9, 0xdf, + 0x19, 0xdd, 0xf3, 0xf0, 0x32, 0x29, 0x6d, 0xfa, + 0xfd, 0x76, 0x4f, 0x68, 0xc2, 0xc2, 0xe0, 0x6c, + 0x47, 0xae, 0xc2, 0x55, 0x68, 0xac, 0x0d, 0x4d + }; +#endif + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); +#ifdef HAVE_ED25519_MAKE_KEY + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); +#else + ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, sizeof(privKey), + pubKey, sizeof(pubKey), &key, 1), 0); +#endif + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, &privOnlySz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_private(NULL, privOnly, &privOnlySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_private(&key, NULL, &privOnlySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, &pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_key(NULL, priv, &privSz, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_key(&key, NULL, &privSz, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, NULL, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, NULL, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + /* Cross check output. */ + ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed25519_exportKey */ + +/* + * Testing wc_Ed25519PublicKeyToDer + */ +int test_wc_Ed25519PublicKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + ed25519_key key; + byte derBuf[1024]; + + XMEMSET(&key, 0, sizeof(ed25519_key)); + + /* Test bad args */ + ExpectIntEQ(wc_Ed25519PublicKeyToDer(NULL, NULL, 0, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_Ed25519PublicKeyToDer(&key, derBuf, 0, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + wc_ed25519_free(&key); + + /* Test good args */ + if (EXPECT_SUCCESS()) { + WC_RNG rng; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + /* length only */ + ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 0), 0); + ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 1), 0); + ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, derBuf, + (word32)sizeof(derBuf), 1), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&key); + } +#endif + return EXPECT_RESULT(); +} /* END testing wc_Ed25519PublicKeyToDer */ + +/* + * Testing wc_Ed25519KeyToDer + */ +int test_wc_Ed25519KeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + byte output[ONEK_BUF]; + ed25519_key ed25519Key; + WC_RNG rng; + word32 inLen; + + XMEMSET(&ed25519Key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&ed25519Key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key), 0); + inLen = (word32)sizeof(output); + + /* Bad Cases */ + ExpectIntEQ(wc_Ed25519KeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed25519KeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed25519KeyToDer(&ed25519Key, output, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, 0), 0); + ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, inLen), 0); + ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, output, inLen), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&ed25519Key); +#endif + return EXPECT_RESULT(); +} /* End test_wc_Ed25519KeyToDer*/ + +/* + * Testing wc_Ed25519PrivateKeyToDer + */ +int test_wc_Ed25519PrivateKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + byte output[ONEK_BUF]; + ed25519_key ed25519PrivKey; + WC_RNG rng; + word32 inLen; + + XMEMSET(&ed25519PrivKey, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&ed25519PrivKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519PrivKey), + 0); + inLen = (word32)sizeof(output); + + /* Bad Cases */ + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, 0), 0); + ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, inLen), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&ed25519PrivKey); +#endif + return EXPECT_RESULT(); +} /* End test_wc_Ed25519PrivateKeyToDer*/ + diff --git a/tests/api/test_ed25519.h b/tests/api/test_ed25519.h new file mode 100644 index 000000000..e46304101 --- /dev/null +++ b/tests/api/test_ed25519.h @@ -0,0 +1,52 @@ +/* test_ed25519.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_ED25519_H +#define WOLFCRYPT_TEST_ED25519_H + +#include + +int test_wc_ed25519_make_key(void); +int test_wc_ed25519_init(void); +int test_wc_ed25519_sign_msg(void); +int test_wc_ed25519_import_public(void); +int test_wc_ed25519_import_private_key(void); +int test_wc_ed25519_export(void); +int test_wc_ed25519_size(void); +int test_wc_ed25519_exportKey(void); +int test_wc_Ed25519PublicKeyToDer(void); +int test_wc_Ed25519KeyToDer(void); +int test_wc_Ed25519PrivateKeyToDer(void); + +#define TEST_ED25519_DECLS \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_make_key), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_init), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_sign_msg), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_import_public), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_import_private_key), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_export), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_size), \ + TEST_DECL_GROUP("ed25519", test_wc_ed25519_exportKey), \ + TEST_DECL_GROUP("ed25519", test_wc_Ed25519PublicKeyToDer), \ + TEST_DECL_GROUP("ed25519", test_wc_Ed25519KeyToDer), \ + TEST_DECL_GROUP("ed25519", test_wc_Ed25519PrivateKeyToDer) + +#endif /* WOLFCRYPT_TEST_ED25519_H */ diff --git a/tests/api/test_ed448.c b/tests/api/test_ed448.c new file mode 100644 index 000000000..0fdc1ee1f --- /dev/null +++ b/tests/api/test_ed448.c @@ -0,0 +1,539 @@ +/* test_ed448.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + + +/* + * Testing wc_ed448_make_key(). + */ +int test_wc_ed448_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) + ed448_key key; + WC_RNG rng; + unsigned char pubkey[ED448_PUB_KEY_SIZE]; + + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_ed448_make_public(&key, pubkey, sizeof(pubkey)), + WC_NO_ERR_TRACE(ECC_PRIV_KEY_E)); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_make_key(NULL, ED448_KEY_SIZE, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE - 1, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE + 1, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_make_key */ + + +/* + * Testing wc_ed448_init() + */ +int test_wc_ed448_init(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) + ed448_key key; + + XMEMSET(&key, 0, sizeof(ed448_key)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_init */ + +/* + * Test wc_ed448_sign_msg() and wc_ed448_verify_msg() + */ +int test_wc_ed448_sign_msg(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_SIGN) + ed448_key key; + WC_RNG rng; + byte msg[] = "Everybody gets Friday off.\n"; + byte sig[ED448_SIG_SIZE]; + word32 msglen = sizeof(msg); + word32 siglen = sizeof(sig); + word32 badSigLen = sizeof(sig) - 1; +#ifdef HAVE_ED448_VERIFY + int verify_ok = 0; /*1 = Verify success.*/ +#endif + + /* Initialize stack variables. */ + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(sig, 0, siglen); + + /* Initialize key. */ + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, &key, NULL, 0), 0); + ExpectIntEQ(siglen, ED448_SIG_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_sign_msg(NULL, msglen, sig, &siglen, &key, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, NULL, &siglen, &key, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, NULL, &key, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &badSigLen, &key, NULL, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + ExpectIntEQ(badSigLen, ED448_SIG_SIZE); + badSigLen--; + +#ifdef HAVE_ED448_VERIFY + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, &key, + NULL, 0), 0); + ExpectIntEQ(verify_ok, 1); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen - 1, msg, msglen, &verify_ok, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen + 1, msg, msglen, &verify_ok, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(NULL, siglen, msg, msglen, &verify_ok, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, NULL, msglen, &verify_ok, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, NULL, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, + NULL, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_verify_msg(sig, badSigLen, msg, msglen, &verify_ok, + &key, NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif /* Verify. */ + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_sign_msg */ + +/* + * Testing wc_ed448_import_public() + */ +int test_wc_ed448_import_public(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) + ed448_key pubKey; + WC_RNG rng; + const byte in[] = + "Ed448PublicKeyUnitTest.................................\n"; + word32 inlen = sizeof(in); + + XMEMSET(&pubKey, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &pubKey), 0); + + ExpectIntEQ(wc_ed448_import_public_ex(in, inlen, &pubKey, 1), 0); + ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_import_public(NULL, inlen, &pubKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_public(in, inlen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_public(in, inlen - 1, &pubKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&pubKey); +#endif + return EXPECT_RESULT(); +} /* END wc_ed448_import_public */ + +/* + * Testing wc_ed448_import_private_key() + */ +int test_wc_ed448_import_private_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) + ed448_key key; + WC_RNG rng; + const byte privKey[] = + "Ed448PrivateKeyUnitTest................................\n"; + const byte pubKey[] = + "Ed448PublicKeyUnitTest.................................\n"; + word32 privKeySz = sizeof(privKey); + word32 pubKeySz = sizeof(pubKey); +#ifdef HAVE_ED448_KEY_EXPORT + byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; + word32 bothKeysSz = sizeof(bothKeys); +#endif + + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed448_import_private_key_ex(privKey, privKeySz, pubKey, + pubKeySz, &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); + +#ifdef HAVE_ED448_KEY_EXPORT + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed448_export_private(&key, bothKeys, &bothKeysSz), 0); + PRIVATE_KEY_LOCK(); + ExpectIntEQ(wc_ed448_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, + &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); +#endif + + /* Test bad args. */ + ExpectIntEQ(wc_ed448_import_private_key(NULL, privKeySz, pubKey, pubKeySz, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, pubKeySz, + &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, + pubKeySz, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz - 1, pubKey, + pubKeySz, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, + pubKeySz - 1, &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, 0, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_import_private_key */ + +/* + * Testing wc_ed448_export_public() and wc_ed448_export_private_only() + */ +int test_wc_ed448_export(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) + ed448_key key; + WC_RNG rng; + byte priv[ED448_PRV_KEY_SIZE]; + byte pub[ED448_PUB_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(pubSz, ED448_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_public(NULL, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_public(&key, NULL, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_public(&key, pub, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed448_export_private_only(&key, priv, &privSz), 0); + ExpectIntEQ(privSz, ED448_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_private_only(NULL, priv, &privSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_private_only(&key, NULL, &privSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_private_only(&key, priv, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_export */ + +/* + * Testing wc_ed448_size() + */ +int test_wc_ed448_size(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) + ed448_key key; + WC_RNG rng; + + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed448_size(&key), ED448_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed448_sig_size(&key), ED448_SIG_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed448_pub_size(&key), ED448_PUB_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed448_priv_size(&key), ED448_PRV_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_size */ + +/* + * Testing wc_ed448_export_private() and wc_ed448_export_key() + */ +int test_wc_ed448_exportKey(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) + ed448_key key; + WC_RNG rng; + byte priv[ED448_PRV_KEY_SIZE]; + byte pub[ED448_PUB_KEY_SIZE]; + byte privOnly[ED448_PRV_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + word32 privOnlySz = sizeof(privOnly); + + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ed448_export_private(&key, privOnly, &privOnlySz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_private(NULL, privOnly, &privOnlySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_private(&key, NULL, &privOnlySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_private(&key, privOnly, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, &pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_key(NULL, priv, &privSz, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_key(&key, NULL, &privSz, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_key(&key, priv, NULL, pub, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, NULL, &pubSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + PRIVATE_KEY_LOCK(); + + /* Cross check output. */ + ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); +#endif + return EXPECT_RESULT(); +} /* END test_wc_ed448_exportKey */ + +/* + * Testing wc_Ed448PublicKeyToDer + */ +int test_wc_Ed448PublicKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + ed448_key key; + byte derBuf[1024]; + + XMEMSET(&key, 0, sizeof(ed448_key)); + + /* Test bad args */ + ExpectIntEQ(wc_Ed448PublicKeyToDer(NULL, NULL, 0, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_Ed448PublicKeyToDer(&key, derBuf, 0, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + wc_ed448_free(&key); + + /* Test good args */ + if (EXPECT_SUCCESS()) { + WC_RNG rng; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + /* length only */ + ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 0), 0); + ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 1), 0); + ExpectIntGT(wc_Ed448PublicKeyToDer(&key, derBuf, + (word32)sizeof(derBuf), 1), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&key); + } +#endif + return EXPECT_RESULT(); +} /* END testing wc_Ed448PublicKeyToDer */ + +/* + * Testing wc_Ed448KeyToDer + */ +int test_wc_Ed448KeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + byte output[ONEK_BUF]; + ed448_key ed448Key; + WC_RNG rng; + word32 inLen; + + XMEMSET(&ed448Key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&ed448Key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key), 0); + inLen = (word32)sizeof(output); + + /* Bad Cases */ + ExpectIntEQ(wc_Ed448KeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed448KeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed448KeyToDer(&ed448Key, output, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, NULL, 0), 0); + ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, output, inLen), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&ed448Key); +#endif + return EXPECT_RESULT(); +} /* End test_wc_Ed448KeyToDer */ + +/* + * Testing wc_Ed448PrivateKeyToDer + */ +int test_wc_Ed448PrivateKeyToDer(void) +{ + EXPECT_DECLS; +#if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ + (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) + byte output[ONEK_BUF]; + ed448_key ed448PrivKey; + WC_RNG rng; + word32 inLen; + + XMEMSET(&ed448PrivKey, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&ed448PrivKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448PrivKey), + 0); + inLen = (word32)sizeof(output); + + /* Bad Cases */ + ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, NULL, 0), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, output, inLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, 0), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Good cases */ + /* length only */ + ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, 0), 0); + ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, inLen), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&ed448PrivKey); +#endif + return EXPECT_RESULT(); +} /* End test_wc_Ed448PrivateKeyToDer */ + diff --git a/tests/api/test_ed448.h b/tests/api/test_ed448.h new file mode 100644 index 000000000..d066d5f4b --- /dev/null +++ b/tests/api/test_ed448.h @@ -0,0 +1,52 @@ +/* test_ed448.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_ED448_H +#define WOLFCRYPT_TEST_ED448_H + +#include + +int test_wc_ed448_make_key(void); +int test_wc_ed448_init(void); +int test_wc_ed448_sign_msg(void); +int test_wc_ed448_import_public(void); +int test_wc_ed448_import_private_key(void); +int test_wc_ed448_export(void); +int test_wc_ed448_size(void); +int test_wc_ed448_exportKey(void); +int test_wc_Ed448PublicKeyToDer(void); +int test_wc_Ed448KeyToDer(void); +int test_wc_Ed448PrivateKeyToDer(void); + +#define TEST_ED448_DECLS \ + TEST_DECL_GROUP("ed448", test_wc_ed448_make_key), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_init), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_sign_msg), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_import_public), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_import_private_key), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_export), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_size), \ + TEST_DECL_GROUP("ed448", test_wc_ed448_exportKey), \ + TEST_DECL_GROUP("ed448", test_wc_Ed448PublicKeyToDer), \ + TEST_DECL_GROUP("ed448", test_wc_Ed448KeyToDer), \ + TEST_DECL_GROUP("ed448", test_wc_Ed448PrivateKeyToDer) + +#endif /* WOLFCRYPT_TEST_ED448_H */ diff --git a/tests/api/test_hash.h b/tests/api/test_hash.h index f0e6e8688..6df61b3e8 100644 --- a/tests/api/test_hash.h +++ b/tests/api/test_hash.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_HASH_H #define WOLFCRYPT_TEST_HASH_H +#include + int test_wc_HashInit(void); int test_wc_HashUpdate(void); int test_wc_HashFinal(void); @@ -35,4 +37,18 @@ int test_wc_Hash_Algs(void); int test_wc_HashGetOID(void); int test_wc_OidGetHash(void); +#define TEST_HASH_DECLS \ + TEST_DECL_GROUP("hash", test_wc_HashInit), \ + TEST_DECL_GROUP("hash", test_wc_HashUpdate), \ + TEST_DECL_GROUP("hash", test_wc_HashFinal), \ + TEST_DECL_GROUP("hash", test_wc_HashNewDelete), \ + TEST_DECL_GROUP("hash", test_wc_HashGetDigestSize), \ + TEST_DECL_GROUP("hash", test_wc_HashGetBlockSize), \ + TEST_DECL_GROUP("hash", test_wc_Hash), \ + TEST_DECL_GROUP("hash", test_wc_HashSetFlags), \ + TEST_DECL_GROUP("hash", test_wc_HashGetFlags), \ + TEST_DECL_GROUP("hash", test_wc_Hash_Algs), \ + TEST_DECL_GROUP("hash", test_wc_HashGetOID), \ + TEST_DECL_GROUP("hash", test_wc_OidGetHash) + #endif /* WOLFCRYPT_TEST_HASH_H */ diff --git a/tests/api/test_hmac.h b/tests/api/test_hmac.h index e92949f53..444aaeeb8 100644 --- a/tests/api/test_hmac.h +++ b/tests/api/test_hmac.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_HMAC_H #define WOLFCRYPT_TEST_HMAC_H +#include + int test_wc_Md5HmacSetKey(void); int test_wc_Md5HmacUpdate(void); int test_wc_Md5HmacFinal(void); @@ -38,4 +40,21 @@ int test_wc_Sha384HmacSetKey(void); int test_wc_Sha384HmacUpdate(void); int test_wc_Sha384HmacFinal(void); +#define TEST_HMAC_DECLS \ + TEST_DECL_GROUP("hmac", test_wc_Md5HmacSetKey), \ + TEST_DECL_GROUP("hmac", test_wc_Md5HmacUpdate), \ + TEST_DECL_GROUP("hmac", test_wc_Md5HmacFinal), \ + TEST_DECL_GROUP("hmac", test_wc_ShaHmacSetKey), \ + TEST_DECL_GROUP("hmac", test_wc_ShaHmacUpdate), \ + TEST_DECL_GROUP("hmac", test_wc_ShaHmacFinal), \ + TEST_DECL_GROUP("hmac", test_wc_Sha224HmacSetKey), \ + TEST_DECL_GROUP("hmac", test_wc_Sha224HmacUpdate), \ + TEST_DECL_GROUP("hmac", test_wc_Sha224HmacFinal), \ + TEST_DECL_GROUP("hmac", test_wc_Sha256HmacSetKey), \ + TEST_DECL_GROUP("hmac", test_wc_Sha256HmacUpdate), \ + TEST_DECL_GROUP("hmac", test_wc_Sha256HmacFinal), \ + TEST_DECL_GROUP("hmac", test_wc_Sha384HmacSetKey), \ + TEST_DECL_GROUP("hmac", test_wc_Sha384HmacUpdate), \ + TEST_DECL_GROUP("hmac", test_wc_Sha384HmacFinal) + #endif /* WOLFCRYPT_TEST_HMAC_H */ diff --git a/tests/api/test_md2.h b/tests/api/test_md2.h index ac11bcc36..8e6408dda 100644 --- a/tests/api/test_md2.h +++ b/tests/api/test_md2.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_MD2_H #define WOLFCRYPT_TEST_MD2_H +#include + int test_wc_InitMd2(void); int test_wc_Md2Update(void); int test_wc_Md2Final(void); @@ -29,4 +31,12 @@ int test_wc_Md2_KATs(void); int test_wc_Md2_other(void); int test_wc_Md2Hash(void); +#define TEST_MD2_DECLS \ + TEST_DECL_GROUP("md2", test_wc_InitMd2), \ + TEST_DECL_GROUP("md2", test_wc_Md2Update), \ + TEST_DECL_GROUP("md2", test_wc_Md2Final), \ + TEST_DECL_GROUP("md2", test_wc_Md2_KATs), \ + TEST_DECL_GROUP("md2", test_wc_Md2_other), \ + TEST_DECL_GROUP("md2", test_wc_Md2Hash) + #endif /* WOLFCRYPT_TEST_MD2_H */ diff --git a/tests/api/test_md4.h b/tests/api/test_md4.h index 4b30e7808..561726ead 100644 --- a/tests/api/test_md4.h +++ b/tests/api/test_md4.h @@ -22,10 +22,19 @@ #ifndef WOLFCRYPT_TEST_MD4_H #define WOLFCRYPT_TEST_MD4_H +#include + int test_wc_InitMd4(void); int test_wc_Md4Update(void); int test_wc_Md4Final(void); int test_wc_Md4_KATs(void); int test_wc_Md4_other(void); +#define TEST_MD4_DECLS \ + TEST_DECL_GROUP("md4", test_wc_InitMd4), \ + TEST_DECL_GROUP("md4", test_wc_Md4Update), \ + TEST_DECL_GROUP("md4", test_wc_Md4Final), \ + TEST_DECL_GROUP("md4", test_wc_Md4_KATs), \ + TEST_DECL_GROUP("md4", test_wc_Md4_other) + #endif /* WOLFCRYPT_TEST_MD4_H */ diff --git a/tests/api/test_md5.h b/tests/api/test_md5.h index 56ec522e3..cb58b605b 100644 --- a/tests/api/test_md5.h +++ b/tests/api/test_md5.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_MD5_H #define WOLFCRYPT_TEST_MD5_H +#include + int test_wc_InitMd5(void); int test_wc_Md5Update(void); int test_wc_Md5Final(void); @@ -32,4 +34,15 @@ int test_wc_Md5GetHash(void); int test_wc_Md5Transform(void); int test_wc_Md5_Flags(void); +#define TEST_MD5_DECLS \ + TEST_DECL_GROUP("md5", test_wc_InitMd5), \ + TEST_DECL_GROUP("md5", test_wc_Md5Update), \ + TEST_DECL_GROUP("md5", test_wc_Md5Final), \ + TEST_DECL_GROUP("md5", test_wc_Md5_KATs), \ + TEST_DECL_GROUP("md5", test_wc_Md5_other), \ + TEST_DECL_GROUP("md5", test_wc_Md5Copy), \ + TEST_DECL_GROUP("md5", test_wc_Md5GetHash), \ + TEST_DECL_GROUP("md5", test_wc_Md5Transform), \ + TEST_DECL_GROUP("md5", test_wc_Md5_Flags) + #endif /* WOLFCRYPT_TEST_MD5_H */ diff --git a/tests/api/test_mldsa.c b/tests/api/test_mldsa.c new file mode 100644 index 000000000..c73709150 --- /dev/null +++ b/tests/api/test_mldsa.c @@ -0,0 +1,16668 @@ +/* test_mldsa.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#ifdef HAVE_DILITHIUM + #include +#endif +#include +#include +#include +#include + + +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_VERIFY) && !defined(WOLFSSL_NO_ML_DSA_44) +static const byte ml_dsa_44_pub_key[] = { + 0x7c, 0x33, 0x31, 0x41, 0x15, 0xa7, 0x2d, 0x6b, + 0x17, 0x7c, 0x10, 0xab, 0x75, 0xf7, 0x83, 0xb3, + 0x30, 0x75, 0x6f, 0xa9, 0x42, 0xb0, 0x9b, 0x59, + 0x59, 0x99, 0x2b, 0x5d, 0x7d, 0x6e, 0xeb, 0xdd, + 0xd9, 0x99, 0x8f, 0x7b, 0xad, 0xe5, 0x90, 0x0f, + 0xa4, 0x80, 0xd8, 0xa2, 0x0d, 0x95, 0xea, 0x63, + 0x2b, 0xcf, 0xb4, 0x5b, 0x3c, 0xd1, 0x5a, 0xc4, + 0xc4, 0xd1, 0x71, 0x28, 0x4b, 0x0b, 0x28, 0x32, + 0x73, 0xb5, 0x0d, 0xd6, 0x8f, 0x6b, 0x01, 0x26, + 0x04, 0x45, 0xa3, 0x80, 0xc0, 0x21, 0x12, 0xee, + 0x52, 0x0f, 0x35, 0xe4, 0x8e, 0xca, 0xf8, 0x91, + 0xf4, 0x99, 0x51, 0xe2, 0x80, 0x76, 0xa7, 0x2d, + 0x09, 0xf5, 0x04, 0xcc, 0xa6, 0x6b, 0x20, 0xc4, + 0xac, 0xcd, 0x6c, 0x9c, 0x09, 0xe7, 0x51, 0xa2, + 0x29, 0x60, 0xfd, 0xf2, 0xbd, 0x7e, 0x4c, 0x9d, + 0xc0, 0xba, 0x62, 0x2f, 0x53, 0xb2, 0x47, 0x03, + 0xf2, 0x6f, 0x70, 0x51, 0xa8, 0xe1, 0xb7, 0x9f, + 0x37, 0x15, 0xfa, 0xd1, 0x6c, 0x74, 0x1a, 0x2b, + 0x4f, 0x39, 0x4f, 0x43, 0x49, 0x71, 0x6a, 0xf8, + 0x7c, 0x65, 0x1a, 0xdd, 0x1a, 0x25, 0xf8, 0x79, + 0xfa, 0x8c, 0x02, 0xf2, 0xf7, 0xf7, 0x7b, 0x9f, + 0xe4, 0xaf, 0x9e, 0x1a, 0x0b, 0x5b, 0x2e, 0x41, + 0xbb, 0xa9, 0x4f, 0xd0, 0xdb, 0xad, 0xe5, 0x25, + 0xff, 0x36, 0x3b, 0x9a, 0xc3, 0xdf, 0xb6, 0x27, + 0xd3, 0xba, 0xb0, 0xd4, 0xb2, 0x07, 0xc3, 0xd8, + 0xab, 0x10, 0x3d, 0xcd, 0x23, 0x52, 0x46, 0xe6, + 0x96, 0x57, 0x85, 0xc7, 0x60, 0xe2, 0x8c, 0x46, + 0x65, 0x7d, 0x76, 0x1c, 0x45, 0x20, 0x5d, 0x51, + 0xd6, 0x13, 0xde, 0xe5, 0x3d, 0xc2, 0x8c, 0x36, + 0xdb, 0x7f, 0x83, 0x6f, 0x6a, 0xc2, 0xa3, 0xf2, + 0xdc, 0x63, 0x69, 0x7f, 0xbd, 0xd0, 0xc1, 0x90, + 0xfb, 0x62, 0x42, 0xa1, 0xf6, 0xf7, 0xdd, 0xc2, + 0x4a, 0x38, 0x62, 0x9b, 0xef, 0x67, 0xf9, 0x5c, + 0xd8, 0xff, 0xf4, 0xf2, 0x67, 0x90, 0x42, 0x85, + 0xaf, 0xe2, 0x92, 0x6e, 0xc4, 0x9b, 0x63, 0xc3, + 0x91, 0xa5, 0x11, 0x66, 0x13, 0x83, 0xbc, 0xbb, + 0xc7, 0x34, 0x3b, 0x30, 0x40, 0x53, 0x91, 0xdf, + 0x7c, 0x3d, 0x17, 0xdd, 0xa1, 0xa6, 0x80, 0xfd, + 0x26, 0x9d, 0x60, 0x7b, 0xcd, 0xb4, 0x2b, 0xba, + 0x61, 0x0f, 0x43, 0x7c, 0x51, 0x3c, 0xb9, 0xfa, + 0xdb, 0x48, 0x35, 0x9f, 0x0d, 0x0c, 0x04, 0xe8, + 0xf9, 0x6e, 0x07, 0x65, 0x7d, 0x46, 0x1b, 0xd2, + 0x51, 0xdb, 0x55, 0x27, 0xd7, 0x3d, 0x1e, 0x36, + 0x07, 0x59, 0x18, 0xec, 0x04, 0x4b, 0x87, 0xbb, + 0xfb, 0x27, 0xac, 0xeb, 0x8f, 0x43, 0x46, 0xd0, + 0x39, 0x00, 0x90, 0x54, 0x70, 0xb1, 0x71, 0xf2, + 0xe7, 0x3d, 0x02, 0x1a, 0xcf, 0x87, 0x16, 0x67, + 0xa2, 0x3c, 0x31, 0x48, 0xe8, 0xbd, 0x4f, 0xb3, + 0xc2, 0xfd, 0x3d, 0xa1, 0x9c, 0x87, 0x54, 0x60, + 0x30, 0x21, 0x52, 0x57, 0xcd, 0x03, 0x96, 0x9e, + 0xa7, 0x8d, 0xe5, 0x02, 0x04, 0x78, 0x43, 0x72, + 0xda, 0xb2, 0x22, 0xf1, 0xee, 0x8f, 0x27, 0x0b, + 0x8f, 0x7b, 0xf8, 0xbc, 0x16, 0xa1, 0xef, 0x0b, + 0x35, 0xda, 0xfc, 0x29, 0x1b, 0xf8, 0xa1, 0x35, + 0x40, 0xe7, 0xed, 0x4c, 0x02, 0x4a, 0x83, 0xb7, + 0x49, 0x75, 0x34, 0x3f, 0x2b, 0xb3, 0x61, 0xf5, + 0xa3, 0x9b, 0x23, 0xca, 0xfb, 0x58, 0x16, 0x4f, + 0x3c, 0x50, 0xbf, 0x81, 0xab, 0x54, 0x50, 0x1a, + 0x39, 0x57, 0x5f, 0x9a, 0x72, 0x22, 0xba, 0xa4, + 0xf6, 0xbf, 0xac, 0x31, 0x5c, 0xc5, 0x96, 0xd7, + 0xa9, 0xe4, 0x3b, 0x0c, 0xd0, 0x7f, 0x79, 0x68, + 0x4d, 0x41, 0x04, 0x81, 0x73, 0xcf, 0x47, 0x4a, + 0x7b, 0x37, 0xac, 0x8e, 0x47, 0x0d, 0x72, 0x65, + 0x0f, 0x9d, 0x44, 0xd7, 0x08, 0x21, 0x5b, 0x3f, + 0xc8, 0x9d, 0xea, 0xa2, 0x64, 0x7b, 0x0d, 0x98, + 0xc1, 0x61, 0xcd, 0xa4, 0xf7, 0x8c, 0x4a, 0xa3, + 0x3b, 0xdd, 0x92, 0xce, 0x61, 0x97, 0x0e, 0x98, + 0xa4, 0x10, 0xb5, 0x1f, 0xc5, 0xfb, 0xee, 0x49, + 0x36, 0x8f, 0xe3, 0x2d, 0x46, 0x9c, 0xa9, 0xff, + 0xdd, 0x1a, 0x48, 0x1b, 0x5a, 0x99, 0x84, 0x0a, + 0x3d, 0x5c, 0xd7, 0x67, 0x32, 0x88, 0x87, 0x2a, + 0x34, 0x50, 0x04, 0xad, 0xe6, 0xbb, 0x3c, 0xb5, + 0xee, 0x80, 0x99, 0x70, 0xaa, 0x9d, 0x5a, 0x63, + 0xec, 0xd5, 0x9a, 0x6a, 0x3a, 0xe8, 0xaa, 0x3d, + 0x3f, 0xe8, 0x15, 0x2c, 0x16, 0x3e, 0x86, 0x46, + 0x21, 0xf2, 0xd2, 0x6e, 0x74, 0x3d, 0x53, 0x94, + 0x7c, 0x41, 0xec, 0x5b, 0xf5, 0xa4, 0xc8, 0x1f, + 0x75, 0x22, 0x50, 0x58, 0x31, 0xf5, 0x29, 0x9a, + 0xc2, 0x2c, 0x67, 0xd9, 0xf6, 0x2e, 0xa1, 0xa9, + 0x0a, 0x69, 0x90, 0x7a, 0xd8, 0xed, 0x5c, 0x09, + 0x3d, 0x14, 0xa3, 0x2b, 0xc0, 0x47, 0x88, 0xb7, + 0xea, 0x14, 0x8a, 0xec, 0xaf, 0x0c, 0xb7, 0xc6, + 0x7c, 0x32, 0x0f, 0x57, 0xea, 0x9f, 0xd4, 0x99, + 0x8d, 0xab, 0xd6, 0xc9, 0x31, 0x07, 0x81, 0x37, + 0x3d, 0xf5, 0x07, 0xb3, 0x93, 0xb7, 0x04, 0x20, + 0xdf, 0x91, 0xef, 0xfb, 0xa6, 0x7d, 0x4b, 0x5d, + 0xd4, 0x24, 0xd2, 0x0b, 0xc5, 0x34, 0xf6, 0x7a, + 0xf9, 0x4a, 0x48, 0xc7, 0xab, 0xaf, 0xa8, 0xd2, + 0xfc, 0x41, 0xc9, 0x8b, 0xa8, 0xc4, 0x2f, 0x94, + 0x4e, 0xb0, 0xab, 0xd3, 0xd9, 0x09, 0x4b, 0x1f, + 0x35, 0xb7, 0xb4, 0x4c, 0x2d, 0x6b, 0xe6, 0xb4, + 0x2e, 0x8a, 0x09, 0xd3, 0x9d, 0x54, 0x3f, 0x53, + 0xcc, 0x8e, 0x16, 0x18, 0x4e, 0x9a, 0xe8, 0x52, + 0x84, 0x3a, 0x3e, 0xdb, 0xab, 0x65, 0xc4, 0xa1, + 0x3c, 0xd0, 0xf6, 0x57, 0x3c, 0x0e, 0x10, 0xed, + 0xb2, 0xa9, 0x7d, 0x70, 0x3f, 0x18, 0x1a, 0xba, + 0x31, 0x33, 0xcb, 0x2a, 0xfd, 0x13, 0xf5, 0x23, + 0xd7, 0x71, 0xfa, 0xb6, 0xe8, 0xda, 0x63, 0xca, + 0x55, 0x3c, 0x5b, 0x87, 0x27, 0x96, 0x3d, 0xd0, + 0x43, 0x9d, 0x76, 0x9f, 0x28, 0x5a, 0xb6, 0xc8, + 0x81, 0xe4, 0x7c, 0x2a, 0x7a, 0x84, 0x0f, 0x2d, + 0x1b, 0xd0, 0xe4, 0x0e, 0x1b, 0x47, 0x32, 0xc8, + 0x02, 0x2d, 0x39, 0x0e, 0x7d, 0xb1, 0x12, 0x56, + 0x50, 0x00, 0xae, 0xcc, 0x45, 0x0a, 0xd5, 0x30, + 0x16, 0xe7, 0x3a, 0x53, 0x02, 0xbc, 0xd5, 0xef, + 0xca, 0x00, 0xea, 0x5f, 0xbe, 0x15, 0x0d, 0x08, + 0x76, 0xc1, 0x03, 0x93, 0x96, 0x4a, 0x88, 0xda, + 0x9d, 0x0b, 0x51, 0x39, 0x9a, 0xef, 0xd2, 0xde, + 0x8a, 0x2c, 0xe6, 0xf3, 0xa5, 0x70, 0x15, 0x3a, + 0x17, 0x43, 0x31, 0xfc, 0x47, 0x9d, 0xec, 0x3b, + 0x28, 0x6f, 0xdf, 0x45, 0x6f, 0x9e, 0x10, 0xbb, + 0x8e, 0x43, 0xc5, 0x59, 0xe5, 0x61, 0x9b, 0xa7, + 0xa1, 0xb8, 0x7a, 0x1c, 0xd4, 0x25, 0x26, 0xca, + 0xe9, 0x2b, 0x0b, 0x3d, 0x06, 0xeb, 0x44, 0x44, + 0xab, 0x4a, 0x5e, 0x68, 0x5c, 0x93, 0xf1, 0x3f, + 0x39, 0x01, 0xb9, 0xf1, 0x01, 0xb7, 0xb6, 0x14, + 0x44, 0x1d, 0x6d, 0x6b, 0x03, 0x45, 0x0d, 0xf3, + 0xbf, 0x71, 0x4e, 0xf3, 0x84, 0x3d, 0xef, 0xea, + 0x60, 0x2e, 0x2e, 0xf7, 0x33, 0xa6, 0xbe, 0x53, + 0x49, 0x26, 0xed, 0xb4, 0xbf, 0x7f, 0xb0, 0x1d, + 0x39, 0xb2, 0xc2, 0x88, 0xc2, 0xa2, 0xd4, 0x7f, + 0x0e, 0x1c, 0x44, 0xa3, 0x38, 0x76, 0xa7, 0xa6, + 0x19, 0x7e, 0x4c, 0x84, 0x25, 0x01, 0xb2, 0x78, + 0xb4, 0x56, 0xc5, 0xc1, 0x50, 0x3f, 0xf2, 0xb6, + 0x76, 0x09, 0x55, 0x57, 0x1c, 0xd1, 0x55, 0x23, + 0x16, 0x2a, 0x51, 0x16, 0xaa, 0x13, 0x4f, 0x35, + 0x69, 0xaf, 0xea, 0x01, 0x5f, 0x22, 0xc9, 0x2e, + 0xe9, 0x8c, 0x6c, 0xa2, 0x17, 0x92, 0xdc, 0x3d, + 0xd6, 0xf0, 0xfa, 0x5a, 0x53, 0xe0, 0xcd, 0x55, + 0xa2, 0x91, 0x62, 0xba, 0xae, 0x67, 0x40, 0x1c, + 0xda, 0xb4, 0xcc, 0xfc, 0x67, 0x1f, 0x44, 0xa0, + 0x50, 0xa5, 0xde, 0xc5, 0xde, 0x5e, 0xa0, 0x3b, + 0x05, 0x84, 0x1c, 0x2a, 0xc4, 0x96, 0x47, 0xd6, + 0x97, 0x56, 0x40, 0x33, 0x99, 0x7c, 0x8b, 0x56, + 0xb4, 0xfb, 0xf4, 0x23, 0xcb, 0x48, 0x81, 0x6c, + 0xa4, 0x53, 0x41, 0x8c, 0x28, 0x61, 0xd7, 0x8c, + 0xde, 0xde, 0xeb, 0xd4, 0xe7, 0x8a, 0x2a, 0x40, + 0x83, 0x1c, 0xa4, 0x19, 0x0f, 0x6c, 0x73, 0xa5, + 0x0e, 0xb6, 0x5c, 0x14, 0x36, 0xff, 0xc9, 0x99, + 0x56, 0x53, 0x8c, 0x4e, 0x4f, 0x4a, 0x82, 0xc8, + 0x76, 0x83, 0x81, 0xf1, 0x17, 0x82, 0x98, 0x3e, + 0x9c, 0x99, 0x3a, 0x7c, 0x08, 0x77, 0x3e, 0xe2, + 0x10, 0x98, 0xb0, 0xf6, 0x1d, 0xd3, 0x24, 0xe8, + 0x98, 0xcf, 0xd8, 0x9a, 0xb8, 0xd7, 0xbe, 0x56, + 0xa2, 0xb6, 0xf8, 0x2e, 0xfe, 0xeb, 0x96, 0xfa, + 0xd0, 0xba, 0x79, 0x9e, 0xde, 0x72, 0x0d, 0x53, + 0x5f, 0xdd, 0x0d, 0xb2, 0x0a, 0x8f, 0x14, 0x94, + 0x87, 0x25, 0x5e, 0xcd, 0xd4, 0x4b, 0xaa, 0xc9, + 0x7e, 0x41, 0x9f, 0x33, 0x77, 0xbe, 0x6d, 0x57, + 0x68, 0xef, 0xee, 0x1a, 0xc4, 0x5c, 0x7b, 0xca, + 0x7e, 0x33, 0x93, 0x3d, 0x88, 0x91, 0xd1, 0x34, + 0x6a, 0x39, 0x98, 0x92, 0x50, 0x1a, 0x02, 0xcf, + 0x89, 0x34, 0x33, 0x10, 0x65, 0x23, 0x4d, 0xb7, + 0x00, 0xcc, 0xc1, 0x60, 0xdd, 0x7d, 0x8e, 0xd1, + 0x16, 0xa7, 0x71, 0x7b, 0x20, 0xcb, 0xe4, 0xe8, + 0xcc, 0xfc, 0xb8, 0x5f, 0xe4, 0xe2, 0xd6, 0x8c, + 0x43, 0x9c, 0x06, 0xf4, 0x8d, 0xbc, 0x56, 0xd0, + 0x0c, 0xd6, 0x0b, 0x6c, 0x33, 0x0e, 0x08, 0x77, + 0x66, 0x52, 0x1f, 0x48, 0x0c, 0x50, 0x4a, 0xc2, + 0x99, 0x0a, 0x15, 0x86, 0xc3, 0x9b, 0x7a, 0x5f, + 0xfb, 0x58, 0xbd, 0x63, 0x0c, 0xbe, 0x83, 0x40, + 0x8f, 0xba, 0x39, 0xfb, 0x45, 0xb9, 0xf7, 0x96, + 0x62, 0xec, 0x7e, 0x77, 0xa4, 0xfb, 0xe1, 0x86, + 0x5c, 0x0a, 0xae, 0x32, 0xbd, 0x79, 0x76, 0x8b +}; +static const byte ml_dsa_44_good_sig[] = { + 0x09, 0xf0, 0xae, 0xbb, 0x25, 0xc7, 0xfc, 0xdd, + 0x93, 0x25, 0x9c, 0x50, 0xd9, 0x2e, 0x72, 0x5d, + 0x53, 0xf5, 0x29, 0xd7, 0x4c, 0xc2, 0xd6, 0x81, + 0x5c, 0xf3, 0x3f, 0x9a, 0x8a, 0xa9, 0x00, 0x21, + 0x6c, 0xc6, 0xb9, 0x72, 0xb7, 0x0e, 0x00, 0x55, + 0x9f, 0xd7, 0xae, 0x92, 0xc3, 0xbc, 0x8f, 0x2d, + 0x4f, 0x54, 0x87, 0x56, 0x52, 0xd3, 0xdd, 0xaf, + 0xe0, 0xff, 0xda, 0x80, 0x1b, 0xf3, 0x56, 0x90, + 0xdd, 0x07, 0x86, 0xad, 0xf7, 0xf3, 0x8e, 0xcf, + 0x3a, 0x57, 0x30, 0x52, 0xaa, 0xd2, 0xb1, 0xf0, + 0x66, 0xea, 0x67, 0xab, 0x94, 0x1d, 0x96, 0x04, + 0xaa, 0xcf, 0x0e, 0xb0, 0xbc, 0x7d, 0x8a, 0x4c, + 0x62, 0x21, 0x82, 0x81, 0x98, 0x63, 0x22, 0x91, + 0xb9, 0xfe, 0x53, 0x63, 0x8d, 0xdf, 0xe6, 0x19, + 0xc1, 0x54, 0x3b, 0xf0, 0xf5, 0xe4, 0xc4, 0x36, + 0x66, 0x2f, 0xcc, 0x4f, 0xed, 0xc6, 0x62, 0x7d, + 0x8b, 0x7b, 0x89, 0xac, 0x23, 0x0b, 0x40, 0x4e, + 0x2d, 0xdc, 0xe5, 0xa2, 0xbc, 0x8b, 0xac, 0xe7, + 0x0b, 0xaa, 0x15, 0xa0, 0x79, 0x4a, 0x97, 0x8a, + 0xc8, 0xb1, 0x31, 0xea, 0x29, 0x99, 0x14, 0x5d, + 0x5b, 0x8c, 0xc2, 0xd0, 0xc2, 0x29, 0xd0, 0x85, + 0xb9, 0x25, 0x16, 0x08, 0xe8, 0x41, 0xa7, 0x77, + 0x1a, 0xbf, 0x5a, 0x48, 0x5a, 0x7f, 0x97, 0x44, + 0x62, 0xb4, 0x68, 0x2e, 0x05, 0x48, 0xde, 0x0f, + 0x69, 0xcc, 0x05, 0x3c, 0xa4, 0x85, 0x20, 0x60, + 0xfd, 0x45, 0x6a, 0x14, 0xb9, 0x76, 0x8d, 0x48, + 0xe7, 0x71, 0xd0, 0xd7, 0xbe, 0xe3, 0x36, 0xd6, + 0x94, 0x5c, 0x22, 0x6e, 0x28, 0xc6, 0x34, 0x93, + 0xf4, 0x6c, 0xf2, 0x62, 0xbf, 0x8f, 0x6d, 0x07, + 0xff, 0x38, 0x92, 0x23, 0x19, 0x55, 0xd0, 0x66, + 0x72, 0x76, 0xc1, 0x43, 0xbc, 0x60, 0x5d, 0xaa, + 0x61, 0x10, 0xdb, 0x0c, 0x49, 0x7b, 0x99, 0xce, + 0x14, 0xe3, 0x0b, 0x80, 0xdc, 0x8a, 0x3d, 0xa5, + 0x3a, 0x0e, 0x29, 0x88, 0x09, 0x1f, 0x9c, 0x03, + 0x32, 0x13, 0xc2, 0xe1, 0x49, 0x26, 0xc7, 0x11, + 0xfa, 0x7f, 0x2d, 0x64, 0xfc, 0xf9, 0xaf, 0xd0, + 0x4d, 0xcf, 0x3a, 0x23, 0x49, 0xde, 0xf2, 0x5d, + 0xad, 0xf3, 0xde, 0xe0, 0x9a, 0xa2, 0x96, 0x0a, + 0x9d, 0x97, 0x39, 0x88, 0x60, 0x75, 0xec, 0x29, + 0x9b, 0x93, 0xfc, 0x80, 0xb3, 0xeb, 0xb0, 0xc6, + 0xa8, 0xea, 0x75, 0x67, 0xed, 0xbd, 0x42, 0x2a, + 0xed, 0x22, 0x27, 0xdb, 0x41, 0x3a, 0x94, 0x86, + 0xd7, 0x4a, 0xf1, 0x8f, 0xa5, 0x47, 0x38, 0xa3, + 0x3c, 0xe7, 0x17, 0x5d, 0xce, 0xdc, 0x32, 0x7c, + 0xe4, 0x05, 0x58, 0x98, 0x67, 0xc8, 0xaf, 0x35, + 0x5d, 0xf9, 0xc0, 0x10, 0x6d, 0x9d, 0xd3, 0x27, + 0x79, 0x3c, 0x1d, 0xdd, 0xfb, 0x53, 0x3c, 0x03, + 0x4c, 0xb3, 0x1b, 0x0b, 0x3a, 0x60, 0x80, 0xcd, + 0x9b, 0x1e, 0x5f, 0x3f, 0x29, 0xfa, 0xb1, 0x09, + 0x9a, 0x88, 0x58, 0x4a, 0xf5, 0xed, 0xe9, 0x7c, + 0x9d, 0x70, 0xbe, 0x57, 0xfb, 0x92, 0x12, 0xc9, + 0x8c, 0x6b, 0x77, 0xe2, 0x44, 0xc6, 0x82, 0x2a, + 0x29, 0xb3, 0x9c, 0xb0, 0x60, 0xda, 0x3d, 0xcd, + 0x4e, 0x49, 0x96, 0x8c, 0xd7, 0x2b, 0x29, 0x28, + 0x7b, 0xec, 0xf1, 0x46, 0x40, 0xf0, 0xe1, 0xd7, + 0x48, 0x9e, 0xdf, 0xfd, 0xa6, 0xd0, 0xaa, 0x35, + 0x94, 0x7a, 0x94, 0x57, 0xf3, 0xd4, 0x15, 0x19, + 0xd3, 0xc5, 0x35, 0x73, 0xc4, 0xf5, 0x86, 0x0d, + 0x2a, 0x5b, 0x67, 0x0d, 0x8d, 0xaa, 0x18, 0x3e, + 0xea, 0x9d, 0x80, 0xe7, 0xf8, 0xbb, 0x23, 0xea, + 0x5d, 0x1c, 0x4d, 0xb2, 0x58, 0x7e, 0xe5, 0xef, + 0x80, 0xc1, 0x63, 0x44, 0xaf, 0x1d, 0xed, 0xf6, + 0x92, 0x05, 0x0c, 0xda, 0xcc, 0x58, 0x39, 0x27, + 0xdd, 0x24, 0xac, 0x63, 0x23, 0x34, 0xaa, 0x2d, + 0xd0, 0x5b, 0xd7, 0x7f, 0x6d, 0xcb, 0x64, 0xed, + 0xb3, 0x9b, 0x05, 0x90, 0x79, 0xc2, 0x25, 0x68, + 0xed, 0xf6, 0xa8, 0x7e, 0x30, 0x4a, 0x46, 0x44, + 0xad, 0xc8, 0x12, 0x8d, 0x04, 0xc3, 0x11, 0x83, + 0x7e, 0x77, 0xef, 0x9c, 0xa2, 0xf9, 0x3b, 0x06, + 0x84, 0x7f, 0x72, 0xd9, 0x2f, 0x22, 0x95, 0xb7, + 0x7b, 0x4e, 0x35, 0x6a, 0xfa, 0x73, 0x7d, 0x88, + 0x5b, 0xac, 0x7b, 0xc5, 0x53, 0xc1, 0xfe, 0x6b, + 0x7c, 0x05, 0xc3, 0xe4, 0xae, 0x48, 0x1a, 0xea, + 0x6e, 0x51, 0x46, 0x1e, 0x82, 0x80, 0xde, 0x31, + 0xe1, 0x41, 0x71, 0x88, 0x41, 0xa7, 0xb2, 0xcd, + 0x3d, 0xf7, 0x5c, 0x4f, 0x4c, 0xfd, 0x3f, 0x6f, + 0x6c, 0x82, 0xc1, 0xba, 0xe0, 0xf0, 0xb4, 0x8c, + 0xd5, 0xb5, 0x32, 0xbf, 0x91, 0x49, 0x7e, 0x39, + 0x5e, 0x0a, 0xdf, 0x4b, 0xd6, 0x07, 0x72, 0xff, + 0x58, 0x65, 0x1b, 0x1f, 0xc6, 0x56, 0xd2, 0x00, + 0xec, 0x60, 0xd1, 0x22, 0xc9, 0x1a, 0xa4, 0xcc, + 0x26, 0xb4, 0xd1, 0x93, 0xbc, 0xfc, 0x52, 0xdf, + 0xa1, 0x23, 0x37, 0x9b, 0xa2, 0xa8, 0x8f, 0xf3, + 0x39, 0x03, 0xa5, 0x4c, 0xf0, 0x68, 0xe5, 0x95, + 0x62, 0xfb, 0xd8, 0x88, 0x39, 0xf6, 0x02, 0x0a, + 0x4e, 0x7c, 0xf0, 0xbf, 0x71, 0x99, 0x0f, 0x19, + 0x61, 0xd9, 0x39, 0xe8, 0x3f, 0x59, 0x22, 0x4a, + 0xaa, 0xdd, 0x03, 0xf8, 0x09, 0xb8, 0xaf, 0xd9, + 0xb9, 0x9c, 0x3f, 0xf1, 0xfe, 0x49, 0xae, 0x99, + 0x2f, 0xa2, 0x22, 0x5a, 0x3c, 0xe9, 0xe9, 0xf7, + 0xba, 0x2d, 0xeb, 0x1f, 0x6c, 0xa7, 0xe1, 0x87, + 0x2f, 0xa5, 0xff, 0xcf, 0x1c, 0x22, 0x8d, 0xf2, + 0x5f, 0x63, 0xf5, 0xbb, 0x36, 0x66, 0xcc, 0x62, + 0x89, 0x8e, 0xf7, 0x78, 0xc5, 0x97, 0x95, 0xde, + 0xec, 0x43, 0x39, 0x6e, 0x0d, 0xe0, 0x8e, 0xbd, + 0x2b, 0x3b, 0xe6, 0xff, 0xf5, 0x8f, 0x90, 0xd2, + 0xd2, 0xce, 0x3b, 0x6f, 0x78, 0xf5, 0xd3, 0x42, + 0xf3, 0x0f, 0x27, 0x4b, 0x2b, 0xe4, 0xd8, 0x0d, + 0x31, 0xfa, 0xba, 0xdc, 0x54, 0x21, 0x9a, 0xbf, + 0x1e, 0x1d, 0x06, 0x8e, 0xd9, 0x58, 0xce, 0x9a, + 0x71, 0x79, 0x4d, 0xcb, 0xfb, 0x99, 0x4b, 0x66, + 0xed, 0xef, 0x75, 0x20, 0x4d, 0x47, 0x9b, 0x40, + 0xd5, 0xcf, 0xd9, 0x00, 0xfe, 0x32, 0x45, 0xae, + 0x4b, 0x7e, 0x8e, 0x7b, 0xf9, 0xd4, 0xd4, 0x2e, + 0x1a, 0x2a, 0xac, 0x73, 0xdb, 0x79, 0xb7, 0x02, + 0x6a, 0x3d, 0xa2, 0xfe, 0x52, 0x27, 0x25, 0x43, + 0xd1, 0xb5, 0x48, 0x0e, 0xef, 0xf1, 0x0f, 0xe7, + 0x27, 0xc2, 0x59, 0x4e, 0x47, 0xe2, 0x12, 0xaa, + 0x1e, 0xae, 0xbc, 0x86, 0x22, 0x70, 0x33, 0xa5, + 0x50, 0x3f, 0xed, 0x3c, 0x98, 0xbb, 0xd5, 0xb3, + 0x3e, 0x43, 0x21, 0x8e, 0x3e, 0x8c, 0xcc, 0x0c, + 0xcf, 0x50, 0xcd, 0xeb, 0x1b, 0x9d, 0x0c, 0xc9, + 0xe3, 0x2f, 0xbb, 0x4b, 0x43, 0xfc, 0x37, 0x27, + 0xcb, 0xc9, 0x5a, 0xe9, 0x45, 0x92, 0x9d, 0xe9, + 0x60, 0x8f, 0x93, 0x1b, 0xd8, 0x6a, 0x68, 0x86, + 0xc2, 0x1d, 0x49, 0x92, 0x11, 0x29, 0x62, 0x14, + 0x15, 0x4c, 0xe9, 0x33, 0xe3, 0x70, 0x2d, 0x6b, + 0x8b, 0xb5, 0x22, 0x44, 0x82, 0xbe, 0x43, 0xe2, + 0x80, 0xfb, 0xb5, 0xfa, 0x6a, 0x30, 0x04, 0x20, + 0xb6, 0x58, 0xe1, 0xf4, 0x8c, 0xe6, 0x4c, 0x7c, + 0x8d, 0x38, 0xf6, 0xdd, 0x59, 0xfc, 0x5a, 0xd7, + 0x9f, 0x34, 0x92, 0xcc, 0xde, 0x65, 0x89, 0xa7, + 0xd9, 0x57, 0xf7, 0xf2, 0x71, 0x39, 0xaf, 0xb6, + 0x88, 0x02, 0x40, 0x24, 0x8b, 0x4f, 0xc5, 0xfc, + 0xdc, 0x5c, 0xc0, 0x1d, 0xa6, 0x68, 0x87, 0xe0, + 0x8f, 0xdc, 0xf0, 0xac, 0xd8, 0x5f, 0x1c, 0xb3, + 0x07, 0xac, 0x58, 0x97, 0x3f, 0x3e, 0x72, 0x19, + 0x18, 0x64, 0x55, 0x73, 0x11, 0x71, 0xd1, 0xa4, + 0xa6, 0x57, 0xb0, 0x27, 0xaf, 0xad, 0x8a, 0xf7, + 0xdf, 0xde, 0x1e, 0xdb, 0x31, 0xc9, 0x32, 0x85, + 0x90, 0x40, 0x3d, 0xfe, 0x64, 0x5d, 0xe3, 0x94, + 0x74, 0x98, 0xa7, 0xed, 0x84, 0x44, 0x13, 0x76, + 0xba, 0xe9, 0x09, 0x9a, 0x17, 0xe0, 0x38, 0x03, + 0x3b, 0x7a, 0xa7, 0x0e, 0x74, 0xbd, 0x93, 0xb1, + 0x85, 0x64, 0xc9, 0xc4, 0x22, 0xb9, 0xdf, 0x80, + 0xac, 0xa1, 0x17, 0xdb, 0x11, 0xdb, 0xfa, 0xeb, + 0x90, 0x3c, 0x28, 0xfb, 0xa2, 0x36, 0x76, 0x61, + 0x20, 0x00, 0x88, 0x15, 0xc0, 0x79, 0x9f, 0x7d, + 0x9f, 0x90, 0xdb, 0x79, 0xbf, 0x1c, 0xdf, 0x86, + 0xc9, 0x60, 0x8c, 0xea, 0xa6, 0x24, 0x81, 0xd6, + 0x6d, 0xd8, 0x8d, 0x17, 0x5f, 0x5c, 0x6d, 0x93, + 0xbc, 0xed, 0xe5, 0x41, 0x05, 0xbe, 0xc6, 0x0f, + 0x66, 0x50, 0xc3, 0xce, 0x7e, 0x6c, 0x80, 0x88, + 0xf5, 0x52, 0x61, 0xaf, 0xdb, 0xc0, 0x80, 0xbe, + 0x78, 0x49, 0x64, 0x39, 0x54, 0x26, 0xeb, 0xab, + 0x07, 0x4d, 0x38, 0x66, 0x06, 0x98, 0x58, 0xaa, + 0x40, 0xc4, 0x89, 0xb2, 0x08, 0x85, 0xf3, 0x14, + 0x58, 0x5d, 0x36, 0xf7, 0xf0, 0x6b, 0x72, 0x79, + 0x6d, 0xbe, 0x5e, 0x24, 0x68, 0xf1, 0x3c, 0xa2, + 0x82, 0x22, 0x6e, 0xc4, 0x46, 0x94, 0x8e, 0x00, + 0xcb, 0xc0, 0x07, 0x69, 0xa5, 0x6d, 0x57, 0x04, + 0x79, 0xeb, 0x06, 0x7a, 0x42, 0x20, 0x6e, 0xdc, + 0xb5, 0xa4, 0xdd, 0x74, 0xb3, 0x92, 0x16, 0x71, + 0x7d, 0x99, 0xfa, 0x26, 0x35, 0x57, 0xe2, 0x83, + 0xc2, 0xb6, 0xfb, 0x0a, 0xae, 0x22, 0xed, 0xe3, + 0x98, 0x65, 0x18, 0x32, 0xf8, 0xe5, 0xed, 0xa9, + 0xf9, 0x7d, 0xb8, 0xea, 0x21, 0x51, 0x6c, 0x70, + 0x4c, 0xfa, 0xec, 0x6d, 0x4c, 0xf4, 0xcb, 0x1c, + 0x43, 0xfb, 0xfc, 0xbb, 0xa9, 0xcb, 0xc5, 0x21, + 0xb3, 0x89, 0xd6, 0x4c, 0xc4, 0x42, 0xd1, 0x55, + 0x3d, 0x43, 0x74, 0xbf, 0xb7, 0x47, 0xb3, 0x5b, + 0x14, 0xc3, 0x8f, 0x42, 0x30, 0x57, 0xb0, 0x22, + 0x56, 0xbe, 0x8d, 0x88, 0x7e, 0x7d, 0x63, 0xc8, + 0xec, 0x01, 0x41, 0xd5, 0x9d, 0xb6, 0x7a, 0x3b, + 0xfe, 0x8b, 0x95, 0x94, 0xdb, 0xca, 0xf1, 0xb4, + 0x56, 0xd7, 0x83, 0xf4, 0x11, 0x05, 0x65, 0xde, + 0x7a, 0xa3, 0x5a, 0x7a, 0x70, 0xe4, 0xd2, 0xad, + 0xc0, 0xff, 0x3f, 0x66, 0x2e, 0x1a, 0x65, 0x38, + 0xda, 0x1f, 0x3f, 0xac, 0x04, 0x2f, 0x0f, 0xde, + 0x7e, 0x55, 0x05, 0x12, 0xe9, 0xe7, 0x69, 0xf9, + 0x34, 0x2c, 0x84, 0x97, 0xa8, 0x86, 0x0c, 0x24, + 0x32, 0x87, 0xfd, 0xbe, 0x67, 0xd1, 0x02, 0x21, + 0x3b, 0x33, 0xfd, 0x11, 0xb1, 0xca, 0x4f, 0xeb, + 0x40, 0x38, 0xf6, 0x19, 0x83, 0x9d, 0x73, 0x44, + 0x37, 0xd6, 0x69, 0x6d, 0x85, 0xda, 0xf7, 0x69, + 0xfb, 0x88, 0x2b, 0xe7, 0xe7, 0x3c, 0x18, 0xa8, + 0x13, 0xb7, 0xee, 0x5c, 0x50, 0x5b, 0xa3, 0x09, + 0x1c, 0xef, 0x8d, 0x37, 0x89, 0x75, 0x0f, 0x8b, + 0xea, 0x17, 0x02, 0x47, 0x21, 0xcb, 0xa8, 0x73, + 0x71, 0x23, 0x4c, 0xf7, 0x50, 0xdd, 0x21, 0xe5, + 0xdb, 0x40, 0x3a, 0x87, 0x40, 0x8d, 0x60, 0x89, + 0x9e, 0x20, 0x00, 0x58, 0xeb, 0xbb, 0x24, 0x9b, + 0x0a, 0x17, 0x8f, 0xf6, 0x56, 0x07, 0x11, 0x5b, + 0xa7, 0xcd, 0x93, 0x0a, 0x31, 0x3d, 0x1f, 0x45, + 0xa0, 0x08, 0x8f, 0x88, 0x34, 0xa5, 0x01, 0x3b, + 0xea, 0x07, 0xa3, 0x7b, 0x66, 0x3e, 0x96, 0xe8, + 0xf7, 0x4d, 0x63, 0x04, 0x55, 0x89, 0xf1, 0x02, + 0x1e, 0x4a, 0x21, 0xb1, 0x2b, 0x8c, 0x7f, 0x2e, + 0x0c, 0x64, 0x26, 0x36, 0xd8, 0x63, 0xab, 0xf5, + 0x22, 0xaf, 0xa9, 0xfa, 0xfa, 0x21, 0x4b, 0x7e, + 0x6f, 0x8c, 0xce, 0x98, 0xf2, 0x85, 0x3f, 0x2c, + 0x07, 0x90, 0xc3, 0x2c, 0x06, 0xc5, 0xde, 0xc8, + 0xc2, 0x7c, 0xd7, 0x9b, 0x64, 0x25, 0x8a, 0x9b, + 0x77, 0x07, 0xc7, 0x4c, 0xd7, 0x67, 0xff, 0xe6, + 0xdb, 0x17, 0xf5, 0xc4, 0x2a, 0x14, 0x44, 0x1a, + 0xff, 0xda, 0xe0, 0xa7, 0x09, 0x1c, 0xe9, 0x03, + 0xde, 0x4a, 0x59, 0xe4, 0xdf, 0xa3, 0x0d, 0x3a, + 0x43, 0xdf, 0x80, 0x82, 0x87, 0xfa, 0x75, 0xf5, + 0xe8, 0xef, 0x6f, 0xd0, 0x89, 0xdd, 0xa1, 0x75, + 0x17, 0x5b, 0x71, 0x47, 0xe8, 0x8d, 0xae, 0xf6, + 0x18, 0x7f, 0xb9, 0x24, 0x68, 0x3f, 0x17, 0x6b, + 0xa8, 0x30, 0x67, 0x7e, 0x02, 0x9b, 0xf6, 0x4d, + 0x03, 0xa8, 0xfb, 0x33, 0x2f, 0xb4, 0x65, 0x72, + 0x2a, 0x30, 0xa6, 0x93, 0x94, 0x7a, 0x41, 0x0f, + 0xd3, 0x67, 0x0b, 0xba, 0xa4, 0x49, 0x7c, 0xcf, + 0x1f, 0x59, 0x1e, 0x2e, 0x45, 0xd4, 0xa8, 0xb1, + 0x98, 0x2b, 0xd7, 0x6f, 0x55, 0xb8, 0xf2, 0x65, + 0x7b, 0x96, 0x18, 0xf7, 0x2e, 0xde, 0x9c, 0x39, + 0x7a, 0x08, 0x2e, 0xe7, 0x3c, 0x9e, 0x4a, 0xfe, + 0xba, 0x49, 0xce, 0xba, 0x65, 0x18, 0xae, 0xae, + 0x9b, 0xd5, 0xf5, 0xeb, 0xd3, 0xdc, 0xd7, 0x2c, + 0x92, 0x3c, 0xe2, 0x93, 0xb9, 0x69, 0xf2, 0x20, + 0xea, 0xbd, 0xa9, 0x01, 0x2b, 0x72, 0x7c, 0x93, + 0x6c, 0x1f, 0x80, 0x3a, 0xd2, 0x2d, 0xf6, 0xc1, + 0x31, 0x63, 0xd2, 0x2f, 0x6c, 0x1a, 0x54, 0x1f, + 0x74, 0xe6, 0xa0, 0xac, 0xb1, 0x04, 0x03, 0xb3, + 0x22, 0x19, 0x48, 0x0a, 0xa7, 0x55, 0x25, 0xc1, + 0x77, 0x28, 0xb9, 0xbe, 0xef, 0xa8, 0xc6, 0x2b, + 0xd5, 0x6c, 0x5d, 0x7b, 0x85, 0xcd, 0x10, 0x2d, + 0x9e, 0xfd, 0xb8, 0xa5, 0x10, 0x65, 0xf7, 0x29, + 0xa7, 0x41, 0x18, 0xc8, 0xc2, 0x23, 0xe5, 0xcb, + 0x96, 0x91, 0x8a, 0x7e, 0x45, 0x30, 0x6b, 0x91, + 0xf1, 0x88, 0xb3, 0x2e, 0x92, 0x96, 0x0a, 0x42, + 0x4a, 0x16, 0x9d, 0x0c, 0xa8, 0xa7, 0xe5, 0x64, + 0x38, 0x8a, 0x53, 0x41, 0x28, 0xbf, 0xd7, 0xa4, + 0x14, 0x05, 0x59, 0x11, 0x2e, 0x0f, 0xc8, 0x5c, + 0x97, 0x8d, 0xd3, 0x92, 0xbf, 0xb9, 0x05, 0xfa, + 0xff, 0x38, 0xbf, 0xd6, 0xc5, 0x22, 0xf8, 0xa4, + 0x75, 0x30, 0x45, 0x93, 0x14, 0xda, 0xc0, 0x7f, + 0xea, 0x24, 0xe0, 0x33, 0x68, 0xf2, 0x6d, 0xe1, + 0xb1, 0x0c, 0x7d, 0x40, 0xaa, 0x16, 0x53, 0xa1, + 0xf6, 0x26, 0xb1, 0x25, 0xe8, 0x83, 0xe9, 0xea, + 0xea, 0xd2, 0x5a, 0x24, 0xda, 0xe2, 0x6e, 0xd1, + 0x2a, 0x87, 0x64, 0x48, 0x13, 0x55, 0xb1, 0x2c, + 0x1a, 0x58, 0x43, 0x5b, 0x63, 0x14, 0x3e, 0x02, + 0xf0, 0xcf, 0x61, 0x7d, 0x83, 0x81, 0xb9, 0x65, + 0x4b, 0x72, 0xee, 0xff, 0xfb, 0x6a, 0xbe, 0x71, + 0x26, 0x56, 0x28, 0x13, 0x9f, 0x31, 0xda, 0x8c, + 0x2f, 0xdb, 0x21, 0xbe, 0x4b, 0x66, 0xbb, 0xad, + 0x7a, 0x13, 0x55, 0x92, 0x7c, 0xb5, 0x6e, 0x5f, + 0x45, 0x1b, 0x64, 0x2d, 0xad, 0x6d, 0x32, 0x07, + 0xe4, 0x91, 0xdc, 0x0c, 0x1b, 0x5f, 0xcd, 0x86, + 0xe2, 0x99, 0x2b, 0xb9, 0x7e, 0x60, 0xbd, 0xad, + 0xa1, 0x5c, 0xab, 0x7f, 0x76, 0xf3, 0x77, 0xba, + 0x73, 0x7f, 0x6a, 0x88, 0x4e, 0xff, 0x40, 0x72, + 0x7a, 0x4d, 0x9b, 0x20, 0x2d, 0xc9, 0x2a, 0x30, + 0x0f, 0x8f, 0x0f, 0xc9, 0x79, 0xc8, 0xc3, 0x8a, + 0x83, 0x52, 0xff, 0x66, 0x7a, 0x42, 0x04, 0x08, + 0x6e, 0x5b, 0x13, 0xda, 0xb9, 0xb6, 0x2d, 0x45, + 0x77, 0x9a, 0xa0, 0x2b, 0xc1, 0x87, 0xc2, 0xa6, + 0x35, 0x7f, 0x39, 0x34, 0x2e, 0x95, 0x1e, 0x8c, + 0xbf, 0x89, 0x6d, 0xcf, 0x82, 0xb8, 0x9f, 0x9b, + 0xd1, 0xbc, 0xa2, 0x55, 0x83, 0xf4, 0xca, 0x21, + 0x11, 0x8f, 0x28, 0xa9, 0x5e, 0x28, 0x23, 0xb4, + 0x43, 0x60, 0xb6, 0x11, 0x1a, 0x6f, 0xb4, 0xd1, + 0x96, 0xc8, 0x79, 0xf2, 0x39, 0x8b, 0x82, 0xae, + 0xe0, 0xc2, 0xe4, 0xf9, 0xfb, 0xf8, 0x85, 0x64, + 0x28, 0xad, 0xb5, 0xfd, 0x37, 0xc5, 0x21, 0x38, + 0x31, 0x94, 0x0d, 0xbe, 0xd8, 0xaf, 0x9b, 0x8a, + 0x7d, 0xfb, 0x56, 0xd8, 0x23, 0xf7, 0x55, 0x55, + 0xe7, 0xd9, 0x63, 0x65, 0xfd, 0x64, 0x2e, 0x8a, + 0x1d, 0x1b, 0xac, 0x4e, 0x2f, 0xef, 0x1b, 0x77, + 0xca, 0x01, 0xd6, 0xfc, 0xb0, 0x11, 0xda, 0x6b, + 0xef, 0x9f, 0x76, 0x81, 0x3e, 0x3f, 0x26, 0x4b, + 0x3b, 0x97, 0xa0, 0x7d, 0xd6, 0xcf, 0x51, 0x0d, + 0x06, 0xf7, 0xf5, 0x88, 0x64, 0x34, 0x7a, 0xe3, + 0xb9, 0x16, 0xc3, 0x06, 0x04, 0xf3, 0xe9, 0x55, + 0xd2, 0xff, 0x49, 0xec, 0x57, 0x84, 0x1f, 0x39, + 0x28, 0x71, 0x57, 0x87, 0x40, 0xf2, 0x7a, 0x30, + 0xa0, 0x88, 0xba, 0x6c, 0xb1, 0x09, 0x30, 0x3a, + 0x11, 0x75, 0xcf, 0xbe, 0x4c, 0xf7, 0xf7, 0xca, + 0x44, 0x52, 0x91, 0xd0, 0x4c, 0x12, 0x3e, 0x3a, + 0x4b, 0x31, 0x20, 0xfe, 0x27, 0xd2, 0x08, 0x5b, + 0x83, 0x7b, 0x82, 0xd3, 0xa3, 0x72, 0xba, 0x2f, + 0x5f, 0xa3, 0x71, 0xcd, 0x8d, 0x3f, 0x94, 0xce, + 0x86, 0xa8, 0x6b, 0x43, 0xb7, 0x06, 0x80, 0x70, + 0x64, 0x06, 0xab, 0x54, 0xce, 0xb5, 0x29, 0xaf, + 0x73, 0xf7, 0x0f, 0x65, 0x70, 0xa7, 0x84, 0x1a, + 0x0b, 0xdb, 0x0c, 0xa9, 0x20, 0xea, 0x06, 0x7a, + 0xba, 0x80, 0xc6, 0xae, 0x3e, 0x0a, 0x7b, 0xd6, + 0x21, 0x99, 0xe0, 0xae, 0x6e, 0x8f, 0x80, 0xa9, + 0x97, 0x27, 0x3d, 0x7e, 0xb2, 0xd8, 0x06, 0x10, + 0x36, 0x07, 0x64, 0x12, 0xd0, 0xc7, 0x91, 0xd2, + 0x81, 0x74, 0x22, 0x8b, 0x8f, 0xe0, 0x48, 0xc4, + 0xe1, 0x9b, 0x05, 0xc8, 0xc5, 0xc3, 0x9a, 0x7b, + 0x9d, 0xee, 0x23, 0xe0, 0x98, 0xc0, 0xd0, 0x05, + 0x21, 0x89, 0x9a, 0xf4, 0x45, 0xd1, 0x1d, 0x80, + 0x79, 0xb7, 0xfe, 0x3c, 0xff, 0x84, 0x86, 0xf0, + 0x2a, 0x69, 0x8b, 0x2d, 0x3b, 0x82, 0xa0, 0xab, + 0xee, 0xe6, 0xf4, 0x64, 0x84, 0x2b, 0x7a, 0x42, + 0x12, 0x8d, 0x10, 0xa6, 0xae, 0x10, 0x6d, 0x03, + 0xb5, 0x72, 0x09, 0xf8, 0x3f, 0xe4, 0x1c, 0x0a, + 0x08, 0x0d, 0x1a, 0x45, 0x5b, 0x70, 0x7b, 0x95, + 0xa1, 0xa7, 0xb4, 0xb6, 0xbf, 0xcc, 0xfc, 0x09, + 0x1a, 0x30, 0x40, 0x44, 0x5e, 0x69, 0x73, 0x7a, + 0x81, 0xa5, 0xb9, 0xd7, 0xdd, 0xe3, 0xee, 0xfb, + 0x16, 0x1a, 0x1d, 0x40, 0x41, 0x4e, 0x8d, 0x90, + 0x92, 0x9d, 0xaf, 0xb0, 0xbb, 0xc2, 0xe0, 0xfc, + 0x06, 0x0b, 0x20, 0x37, 0x47, 0x50, 0x53, 0x65, + 0x87, 0x89, 0x99, 0xa4, 0xb7, 0xdb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x20, 0x30, 0x3e +}; +#endif + +int test_wc_dilithium(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) + dilithium_key* key; + byte level; +#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + WC_RNG rng; +#endif + byte* privKey = NULL; +#ifndef WOLFSSL_DILITHIUM_NO_SIGN + word32 privKeyLen = DILITHIUM_MAX_KEY_SIZE; +#endif + byte* pubKey = NULL; +#ifndef WOLFSSL_DILITHIUM_NO_VERIFY + word32 pubKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; +#endif + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + privKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(privKey); + pubKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(pubKey); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } +#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + XMEMSET(&rng, 0, sizeof(WC_RNG)); +#endif + +#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + ExpectIntEQ(wc_InitRng(&rng), 0); +#endif + + ExpectIntEQ(wc_dilithium_init(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_init_ex(NULL, NULL, INVALID_DEVID), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + wc_dilithium_free(NULL); + + ExpectIntEQ(wc_dilithium_init(key), 0); + wc_dilithium_free(key); + ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); + +#ifndef WOLFSSL_DILITHIUM_NO_VERIFY + ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#ifndef WOLFSSL_DILITHIUM_NO_SIGN + ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + +#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY + ExpectIntEQ(wc_dilithium_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_priv_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#endif +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_pub_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + ExpectIntEQ(wc_dilithium_sig_size(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY + ExpectIntEQ(wc_dilithium_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_priv_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#endif +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_pub_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + ExpectIntEQ(wc_dilithium_sig_size(key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + + ExpectIntEQ(wc_dilithium_set_level(NULL, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_set_level(key, 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_set_level(NULL, WC_ML_DSA_44), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_set_level(key, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_set_level(key, 4), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_dilithium_get_level(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_get_level(key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_get_level(NULL, &level), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_get_level(key, &level), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#ifndef WOLFSSL_NO_ML_DSA_87 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); + ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); + ExpectIntEQ(level, WC_ML_DSA_87); +#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY + ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL5_KEY_SIZE); +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL5_PRV_KEY_SIZE); +#endif +#endif +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL5_PUB_KEY_SIZE); +#endif +#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL5_SIG_SIZE); +#endif +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); + ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); + ExpectIntEQ(level, WC_ML_DSA_65); +#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY + ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL3_KEY_SIZE); +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL3_PRV_KEY_SIZE); +#endif +#endif +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL3_PUB_KEY_SIZE); +#endif +#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL3_SIG_SIZE); +#endif +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); +#endif +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); + ExpectIntEQ(wc_dilithium_get_level(key, &level), 0); + ExpectIntEQ(level, WC_ML_DSA_44); +#ifdef WOLFSSL_DILITHIUM_PRIVATE_KEY + ExpectIntEQ(wc_dilithium_size(key), DILITHIUM_LEVEL2_KEY_SIZE); +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_priv_size(key), DILITHIUM_LEVEL2_PRV_KEY_SIZE); +#endif +#endif +#ifdef WOLFSSL_DILITHIUM_PUBLIC_KEY + ExpectIntEQ(wc_dilithium_pub_size(key), DILITHIUM_LEVEL2_PUB_KEY_SIZE); +#endif +#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + ExpectIntEQ(wc_dilithium_sig_size(key), DILITHIUM_LEVEL2_SIG_SIZE); +#endif +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); +#endif + +#ifndef WOLFSSL_DILITHIUM_NO_VERIFY + ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif +#ifndef WOLFSSL_DILITHIUM_NO_SIGN + ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + + wc_dilithium_free(key); +#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) || \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + wc_FreeRng(&rng); +#endif + XFREE(pubKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(privKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_make_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) + dilithium_key* key; + WC_RNG rng; + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_dilithium_init(key), 0); + + ExpectIntEQ(wc_dilithium_make_key(key, &rng), WC_NO_ERR_TRACE(BAD_STATE_E)); + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); +#endif + + ExpectIntEQ(wc_dilithium_make_key(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_make_key(key, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_make_key(NULL, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); + + wc_dilithium_free(key); + wc_FreeRng(&rng); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_sign(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + dilithium_key* key; + dilithium_key* importKey = NULL; + WC_RNG rng; + byte* privKey = NULL; + word32 privKeyLen = DILITHIUM_MAX_KEY_SIZE; + word32 badKeyLen; + byte msg[32]; + byte* sig = NULL; + word32 sigLen = DILITHIUM_MAX_SIG_SIZE; + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + importKey = (dilithium_key*)XMALLOC(sizeof(*key), NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(importKey); + privKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(privKey); + sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(sig); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + if (importKey != NULL) { + XMEMSET(importKey, 0, sizeof(*importKey)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(msg, 0x55, sizeof(msg)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_dilithium_init(key), 0); + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); +#endif + +#ifdef WOLFSSL_DILITHIUM_NO_MAKE_KEY +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level2_key, + sizeof_bench_dilithium_level2_key, key), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level3_key, + sizeof_bench_dilithium_level3_key, key), 0); +#else + ExpectIntEQ(wc_dilithium_import_private(bench_dilithium_level5_key, + sizeof_bench_dilithium_level5_key, key), 0); +#endif +#else + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); +#endif + + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, NULL, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, sig, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, &sigLen, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, key, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, NULL, NULL, NULL, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(NULL, 32, sig, &sigLen, key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, NULL, &sigLen, key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, NULL, key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, NULL, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); + + ExpectIntEQ(wc_dilithium_export_private(NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(key, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(NULL, privKey, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(NULL, NULL, &privKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(NULL, privKey, &privKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(key, NULL, &privKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_private(key, privKey, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + badKeyLen = 0; + ExpectIntEQ(wc_dilithium_export_private(key, privKey, &badKeyLen), + WC_NO_ERR_TRACE(BUFFER_E)); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL2_KEY_SIZE); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL3_KEY_SIZE); +#else + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL5_KEY_SIZE); +#endif + ExpectIntEQ(wc_dilithium_export_private(key, privKey, &privKeyLen), + 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL2_KEY_SIZE); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL3_KEY_SIZE); +#else + ExpectIntEQ(privKeyLen, DILITHIUM_LEVEL5_KEY_SIZE); +#endif + + ExpectIntEQ(wc_dilithium_init(importKey), 0); + ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_87), 0); +#endif + ExpectIntEQ(wc_dilithium_import_private(NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(privKey, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(NULL, privKeyLen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(NULL, 0, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(NULL, privKeyLen, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(privKey, 0, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_private(privKey, privKeyLen, importKey), + 0); + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); +#ifdef WOLFSSL_DILITHIUM_CHECK_KEY + ExpectIntEQ(wc_dilithium_check_key(importKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); +#endif + wc_dilithium_free(importKey); + + wc_dilithium_free(key); + wc_FreeRng(&rng); + + XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(privKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(importKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_verify(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_VERIFY) && \ + (!defined(WOLFSSL_NO_ML_DSA_44) || !defined(WOLFSSL_DILITHIUM_NO_SIGN)) + dilithium_key* key; + dilithium_key* importKey = NULL; + WC_RNG rng; + byte* pubKey = NULL; + word32 pubKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; + word32 badKeyLen; + byte msg[32]; + byte* sig = NULL; + word32 sigLen = DILITHIUM_MAX_SIG_SIZE; + int res; +#ifndef WOLFSSL_NO_ML_DSA_44 + byte b; +#endif + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + importKey = (dilithium_key*)XMALLOC(sizeof(*key), NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(importKey); + pubKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(pubKey); + sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(sig); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + if (importKey != NULL) { + XMEMSET(importKey, 0, sizeof(*importKey)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(msg, 0x55, sizeof(msg)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_dilithium_init(key), 0); + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); +#endif + +#if !defined(WOLFSSL_NO_ML_DSA_44) + ExpectIntEQ(wc_dilithium_import_public(ml_dsa_44_pub_key, + (word32)sizeof(ml_dsa_44_pub_key), key), 0); + if (sig != NULL) { + XMEMCPY(sig, ml_dsa_44_good_sig, sizeof(ml_dsa_44_good_sig)); + } + sigLen = (word32)sizeof(ml_dsa_44_good_sig); +#else +#ifdef WOLFSSL_DILITHIUM_NO_MAKE_KEY +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_import_public(bench_dilithium_level3_pub_key, + sizeof_bench_dilithium_level3_pub_key, key), 0); +#else + ExpectIntEQ(wc_dilithium_import_public(bench_dilithium_level5_pub_key, + sizeof_bench_dilithium_level5_pub_key, key), 0); +#endif /* !WOLFSSL_NO_ML_DSA_65 */ +#else + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); +#endif /* WOLFSSL_DILITHIUM_NO_MAKE_KEY */ + + ExpectIntEQ(wc_dilithium_sign_msg(msg, 32, sig, &sigLen, key, &rng), 0); +#endif /* !WOLFSSL_NO_ML_DSA_44 */ + + ExpectIntEQ(wc_dilithium_export_public(NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(key, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(NULL, pubKey, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(NULL, NULL, &pubKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(NULL, pubKey, &pubKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(key, NULL, &pubKeyLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_public(key, pubKey, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + badKeyLen = 0; + ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &badKeyLen), + WC_NO_ERR_TRACE(BUFFER_E)); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL2_PUB_KEY_SIZE); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL3_PUB_KEY_SIZE); +#else + ExpectIntEQ(badKeyLen, DILITHIUM_LEVEL5_PUB_KEY_SIZE); +#endif + ExpectIntEQ(wc_dilithium_export_public(key, pubKey, &pubKeyLen), 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL2_PUB_KEY_SIZE); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL3_PUB_KEY_SIZE); +#else + ExpectIntEQ(pubKeyLen, DILITHIUM_LEVEL5_PUB_KEY_SIZE); +#endif + + ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(sig, 0, NULL, 32, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, msg, 32, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, &res, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(NULL, 0, NULL, 32, NULL, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(NULL, sigLen, msg, 32, &res, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(sig, 0, msg, 32, &res, key), + WC_NO_ERR_TRACE(BUFFER_E)); + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, NULL, 32, &res, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, NULL, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + res = 0; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), 0); + ExpectIntEQ(res, 1); + + ExpectIntEQ(wc_dilithium_init(importKey), 0); + ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(importKey, WC_ML_DSA_87), 0); +#endif + ExpectIntEQ(wc_dilithium_import_public(NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(pubKey, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(NULL, pubKeyLen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(NULL, 0, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(NULL, pubKeyLen, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(pubKey, 0, importKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_public(pubKey, pubKeyLen, importKey), 0); + res = 0; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, importKey), + 0); + ExpectIntEQ(res, 1); +#ifdef WOLFSSL_DILITHIUM_CHECK_KEY + ExpectIntEQ(wc_dilithium_check_key(importKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + wc_dilithium_free(importKey); + +#ifndef WOLFSSL_NO_ML_DSA_44 + if (sig != NULL) { + if (sig[sigLen - 5] == 0) { + /* Unused hints meant to be 0. */ + sig[sigLen - 5] = 0xff; + res = 1; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, + key), WC_NO_ERR_TRACE(SIG_VERIFY_E)); + ExpectIntEQ(res, 0); + sig[sigLen - 5] = 0x00; + } + + /* Last count of hints must be less than PARAMS_ML_DSA_44_OMEGA == 80 */ + b = sig[sigLen - 1]; + sig[sigLen - 1] = 0xff; + res = 1; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), + WC_NO_ERR_TRACE(SIG_VERIFY_E)); + ExpectIntEQ(res, 0); + sig[sigLen - 1] = b; + + if (sig[sigLen - 4] > 1) { + /* Index must be less than previous. */ + b = sig[sigLen - 84]; + sig[sigLen - 84] = 0xff; + res = 1; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, + key), WC_NO_ERR_TRACE(SIG_VERIFY_E)); + ExpectIntEQ(res, 0); + sig[sigLen - 84] = b; + } + + /* Mess up commit hash. */ + sig[0] ^= 0x80; + res = 1; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), + 0); + ExpectIntEQ(res, 0); + sig[0] ^= 0x80; + + /* Mess up z. */ + sig[100] ^= 0x80; + res = 1; + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), + 0); + ExpectIntEQ(res, 0); + sig[100] ^= 0x80; + + /* Set all indices to 0. */ + XMEMSET(sig + sigLen - 4, 0, 4); + ExpectIntEQ(wc_dilithium_verify_msg(sig, sigLen, msg, 32, &res, key), + WC_NO_ERR_TRACE(SIG_VERIFY_E)); + ExpectIntEQ(res, 0); + } +#endif + + wc_dilithium_free(key); + wc_FreeRng(&rng); + + XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(pubKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(importKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_sign_vfy(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) && \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) && !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + dilithium_key* key; + WC_RNG rng; + byte msg[64]; + byte* sig = NULL; + word32 sigLen; + byte ctx[10]; + int res; + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + sig = (byte*)XMALLOC(DILITHIUM_MAX_SIG_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(sig); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(msg, 0xAA, sizeof(msg)); + XMEMSET(ctx, 0x01, sizeof(ctx)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_init(key), 0); + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), + sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, + sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + wc_dilithium_free(key); +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_init(key), 0); + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), + sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, + sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + wc_dilithium_free(key); +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + ExpectIntEQ(wc_dilithium_init(key), 0); + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_msg(ctx, sizeof(ctx), msg, sizeof(msg), + sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_msg(sig, sigLen, ctx, sizeof(ctx), msg, + sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + sigLen = DILITHIUM_MAX_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_ctx_hash(ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), sig, &sigLen, key, &rng), 0); + ExpectIntEQ(wc_dilithium_verify_ctx_hash(sig, sigLen, ctx, sizeof(ctx), + WC_HASH_TYPE_SHA3_512, msg, sizeof(msg), &res, key), 0); + ExpectIntEQ(res, 1); + + wc_dilithium_free(key); +#endif + + wc_FreeRng(&rng); + XFREE(sig, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); + +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_check_key(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + defined(WOLFSSL_DILITHIUM_CHECK_KEY) && \ + !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) + dilithium_key* checkKey; + WC_RNG rng; + byte* privCheckKey = NULL; + word32 privCheckKeyLen = DILITHIUM_MAX_KEY_SIZE; + byte* pubCheckKey = NULL; + word32 pubCheckKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE; + + checkKey = (dilithium_key*)XMALLOC(sizeof(*checkKey), NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(checkKey); + privCheckKey = (byte*)XMALLOC(DILITHIUM_MAX_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(privCheckKey); + pubCheckKey = (byte*)XMALLOC(DILITHIUM_MAX_PUB_KEY_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(pubCheckKey); + + if (checkKey != NULL) { + XMEMSET(checkKey, 0, sizeof(*checkKey)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_dilithium_check_key(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_dilithium_init(checkKey), 0); + + ExpectIntEQ(wc_dilithium_export_key(NULL, privCheckKey, + &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, pubCheckKey, pubCheckKeyLen, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, + &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(checkKey, WC_ML_DSA_87), 0); +#endif + ExpectIntEQ(wc_dilithium_make_key(checkKey, &rng), 0); + + ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, NULL, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(NULL, privCheckKey, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, &privCheckKeyLen, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, pubCheckKey, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(NULL, NULL, NULL, NULL, + &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(NULL , privCheckKey, + &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, NULL , + &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, + NULL , pubCheckKey, &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, + &privCheckKeyLen, NULL , &pubCheckKeyLen), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, + &privCheckKeyLen, pubCheckKey, NULL ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_export_key(checkKey, privCheckKey, + &privCheckKeyLen, pubCheckKey, &pubCheckKeyLen), 0); + + /* Modify hash. */ + if ((pubCheckKey != NULL) && EXPECT_SUCCESS()) { + pubCheckKey[0] ^= 0x80; + ExpectIntEQ(wc_dilithium_import_key(NULL, 0, NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, 0, NULL, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(NULL, 0, pubCheckKey, 0, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(NULL, 0, NULL, 0, checkKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(NULL , + privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + 0 , pubCheckKey, pubCheckKeyLen, checkKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, NULL , pubCheckKeyLen, checkKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, pubCheckKey, 0 , checkKey), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, pubCheckKey, pubCheckKeyLen, NULL ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen, pubCheckKey, pubCheckKeyLen, checkKey), 0); + ExpectIntEQ(wc_dilithium_check_key(checkKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); + pubCheckKey[0] ^= 0x80; + + /* Modify encoded t1. */ + pubCheckKey[48] ^= 0x80; + ExpectIntEQ(wc_dilithium_import_key(privCheckKey, + privCheckKeyLen,pubCheckKey, pubCheckKeyLen, checkKey), 0); + ExpectIntEQ(wc_dilithium_check_key(checkKey), WC_NO_ERR_TRACE(PUBLIC_KEY_E)); + pubCheckKey[48] ^= 0x80; + } + + wc_dilithium_free(checkKey); + wc_FreeRng(&rng); + + XFREE(pubCheckKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(privCheckKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(checkKey, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + defined(WOLFSSL_DILITHIUM_PUBLIC_KEY) +static const unsigned char ml_dsa_public_der[] = { +#ifndef WOLFSSL_NO_ML_DSA_44 + 0x30, 0x82, 0x05, 0x32, 0x30, 0x0d, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, + 0x11, 0x03, 0x82, 0x05, 0x21, 0x00, + 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, + 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, + 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, + 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, + 0x23, 0x0A, 0x19, 0xD7, 0x5A, 0xDB, 0xDE, 0xD5, + 0x2D, 0xB8, 0x55, 0xE2, 0x52, 0xA7, 0x19, 0xFC, + 0xBD, 0x14, 0x7B, 0xA6, 0x7B, 0x2F, 0xAD, 0x14, + 0xED, 0x0E, 0x68, 0xFD, 0xFE, 0x8C, 0x65, 0xBA, + 0xDE, 0xAC, 0xB0, 0x91, 0x11, 0x93, 0xAD, 0xFA, + 0x87, 0x94, 0xD7, 0x8F, 0x8E, 0x3D, 0x66, 0x2A, + 0x1C, 0x49, 0xDA, 0x81, 0x9F, 0xD9, 0x59, 0xE7, + 0xF0, 0x78, 0xF2, 0x03, 0xC4, 0x56, 0xF8, 0xB6, + 0xE7, 0xC9, 0x41, 0x58, 0x98, 0xE5, 0x41, 0xC7, + 0x30, 0x32, 0xDB, 0xD6, 0x19, 0xEA, 0xF6, 0x0F, + 0x8D, 0x64, 0xF8, 0x68, 0x3D, 0xA9, 0x9E, 0xCA, + 0x51, 0x22, 0x0B, 0x0A, 0xCA, 0x28, 0x46, 0x40, + 0x99, 0xF5, 0x47, 0xC0, 0x27, 0x77, 0xBD, 0x37, + 0xD8, 0x4A, 0x59, 0xBD, 0x37, 0xED, 0x7A, 0x8A, + 0x92, 0x63, 0x3C, 0x75, 0xD0, 0x7C, 0x79, 0x3F, + 0xE7, 0x25, 0x2B, 0x58, 0x4A, 0xBF, 0x6A, 0x15, + 0xEE, 0x14, 0x50, 0x7E, 0x5E, 0x19, 0x3F, 0x89, + 0x86, 0x4D, 0x09, 0xAC, 0x87, 0x27, 0xA6, 0xD0, + 0x42, 0x1F, 0x0C, 0x19, 0xF0, 0xE2, 0xFB, 0xFC, + 0x21, 0x3D, 0x3F, 0xBD, 0x70, 0xF4, 0xF9, 0x76, + 0x2C, 0xEC, 0xFF, 0x23, 0x1E, 0x9C, 0x8A, 0x76, + 0x28, 0xD3, 0xF8, 0xB0, 0x85, 0x7B, 0x03, 0x2D, + 0x32, 0xDE, 0x62, 0xFF, 0x8E, 0xCB, 0xF4, 0x00, + 0x82, 0x89, 0xBF, 0x34, 0x40, 0x36, 0x65, 0xF8, + 0x1A, 0x08, 0x1A, 0xD5, 0xA8, 0x5A, 0x28, 0x2F, + 0x99, 0xBA, 0xB9, 0xE5, 0x38, 0x5A, 0xFB, 0xCC, + 0xCF, 0x44, 0xB7, 0x4C, 0x01, 0x96, 0xC7, 0x54, + 0x55, 0x27, 0xEC, 0x30, 0x26, 0xDA, 0x12, 0x80, + 0xC4, 0xEB, 0x37, 0xD0, 0x9C, 0xFE, 0x3E, 0xC4, + 0xB4, 0x91, 0x0B, 0x62, 0xEB, 0x98, 0x15, 0xA4, + 0x25, 0xC6, 0x59, 0x0F, 0xC4, 0xAD, 0x3F, 0xBB, + 0x22, 0x57, 0x52, 0xCC, 0x1F, 0xC5, 0x69, 0x3F, + 0x18, 0x7E, 0x7D, 0xEC, 0x4E, 0xEF, 0xBE, 0xB6, + 0xB9, 0x1B, 0xD9, 0x1C, 0x5E, 0x2E, 0xA6, 0xA9, + 0x1D, 0x14, 0xD0, 0x97, 0xBE, 0x20, 0x3F, 0xBA, + 0x0B, 0xF9, 0x37, 0xC9, 0x75, 0x07, 0xDC, 0x00, + 0x7C, 0x4C, 0xAA, 0x9B, 0x07, 0x85, 0x89, 0x29, + 0x66, 0xFF, 0x15, 0x90, 0x09, 0x24, 0xE5, 0x79, + 0xD4, 0xFB, 0xA0, 0x2B, 0xDA, 0x87, 0x55, 0x5F, + 0x07, 0x3D, 0xAE, 0x00, 0x51, 0x3E, 0x70, 0x80, + 0x9A, 0xBB, 0xC7, 0x11, 0xFB, 0xA2, 0xE7, 0x64, + 0x95, 0x77, 0xC4, 0x2A, 0xFD, 0xC2, 0x4B, 0xF7, + 0x41, 0x3E, 0x51, 0x26, 0x8A, 0xD6, 0xDB, 0x61, + 0x13, 0xB7, 0xD9, 0x19, 0x1A, 0xF9, 0xD0, 0x61, + 0xDB, 0xDE, 0xD5, 0xD6, 0x30, 0x87, 0x76, 0x50, + 0xC1, 0x24, 0xF1, 0x1B, 0xC4, 0xBD, 0xC3, 0xFD, + 0xC6, 0xA9, 0x00, 0xF6, 0x31, 0x26, 0xF9, 0x21, + 0xE8, 0x38, 0xAD, 0x0C, 0x22, 0x75, 0xA3, 0x38, + 0x9A, 0x39, 0xBD, 0x99, 0xA1, 0x34, 0x50, 0x45, + 0x50, 0x10, 0x1C, 0xD3, 0xE9, 0x5E, 0x6D, 0x14, + 0x96, 0xBE, 0x7D, 0xE6, 0x62, 0x7D, 0xF4, 0xFD, + 0x6C, 0x28, 0xBB, 0xF4, 0x0B, 0x30, 0xEF, 0xA9, + 0xB5, 0xC3, 0xD5, 0xC8, 0x5A, 0xB1, 0x4A, 0x65, + 0xC0, 0x2D, 0x6D, 0x47, 0x81, 0xFF, 0x13, 0xD3, + 0x28, 0x60, 0x85, 0x54, 0xB6, 0xD1, 0x5E, 0xD9, + 0x12, 0x89, 0xA6, 0xD5, 0x5A, 0xAC, 0x0C, 0x38, + 0xE3, 0x77, 0x06, 0xF7, 0x35, 0x5E, 0x9A, 0x4F, + 0xDA, 0x61, 0x5B, 0x87, 0x59, 0x26, 0xBF, 0xE5, + 0xA5, 0x9D, 0x9E, 0xF2, 0x73, 0xBF, 0x94, 0xA0, + 0x7C, 0xFA, 0x57, 0x31, 0x78, 0xF0, 0xE0, 0x04, + 0xB6, 0xE1, 0xEF, 0x0A, 0x83, 0x49, 0xE9, 0xBC, + 0xC0, 0x19, 0x81, 0xF2, 0x46, 0x0F, 0x0A, 0x27, + 0x43, 0xC2, 0x8D, 0x1E, 0x13, 0x8F, 0xFB, 0x76, + 0x5E, 0x7E, 0x33, 0x97, 0xB7, 0x91, 0x33, 0x35, + 0xD4, 0x02, 0xFE, 0x91, 0x80, 0x6A, 0xA8, 0xFC, + 0x81, 0x92, 0x53, 0xAF, 0x32, 0x69, 0x2F, 0xA6, + 0x51, 0xE8, 0x67, 0xF5, 0x90, 0x7E, 0xF4, 0x6F, + 0x00, 0x62, 0x5A, 0x03, 0x0E, 0xC9, 0x04, 0xED, + 0xAB, 0x21, 0x42, 0x6D, 0x59, 0x11, 0x9D, 0x2C, + 0xAA, 0x43, 0xBD, 0x93, 0x5D, 0xEC, 0x0A, 0x55, + 0x0C, 0x61, 0xEE, 0x4B, 0x27, 0x9C, 0x1C, 0xA3, + 0xA7, 0x9C, 0x79, 0xA6, 0x6E, 0x3F, 0x2D, 0x2F, + 0xAD, 0xB0, 0x0F, 0x59, 0xA3, 0xA4, 0x38, 0xAA, + 0x44, 0x57, 0x01, 0x06, 0x07, 0x30, 0x17, 0xFA, + 0x1C, 0x87, 0x57, 0x50, 0x01, 0x09, 0x72, 0x0D, + 0x12, 0x5B, 0xBA, 0x23, 0x1A, 0x0C, 0x36, 0x35, + 0x0C, 0x78, 0x08, 0x6D, 0xFD, 0xC8, 0xD6, 0x13, + 0xAE, 0xCA, 0x88, 0xC4, 0xCC, 0xAE, 0xB4, 0xA4, + 0x4D, 0x13, 0xAD, 0xB3, 0xC7, 0x17, 0xD6, 0x5C, + 0x82, 0xA3, 0x51, 0xB9, 0xB6, 0xEA, 0xBF, 0x6A, + 0x10, 0xF4, 0xB4, 0xE9, 0x62, 0x3E, 0x3A, 0x95, + 0xB4, 0xD4, 0x0A, 0x12, 0xA8, 0x18, 0xAC, 0x6B, + 0x38, 0x22, 0xDB, 0x82, 0xFB, 0x05, 0xDC, 0x42, + 0x02, 0x64, 0x8B, 0x44, 0x54, 0x68, 0x9A, 0xEB, + 0x69, 0xEA, 0x32, 0x5F, 0x03, 0xE3, 0x5D, 0xEF, + 0xA5, 0x47, 0x08, 0x48, 0x14, 0x20, 0xC6, 0xD6, + 0x97, 0xBB, 0x91, 0x2F, 0xCA, 0x0D, 0x3F, 0x19, + 0x2E, 0xF2, 0x97, 0xDF, 0xE7, 0x7F, 0xF3, 0x6B, + 0x21, 0x03, 0xF1, 0xAD, 0x1A, 0xEE, 0xCE, 0xD1, + 0xC8, 0x14, 0xC2, 0xCD, 0x7E, 0xF1, 0x6B, 0xCE, + 0x47, 0x6A, 0xD0, 0x4F, 0x94, 0x1A, 0xFC, 0x79, + 0xE3, 0x29, 0x54, 0x74, 0xA4, 0x10, 0x62, 0x51, + 0x8C, 0x00, 0x37, 0x86, 0x09, 0x34, 0xF0, 0xE5, + 0xE6, 0x52, 0xF7, 0x27, 0x49, 0xA6, 0x98, 0x63, + 0x2A, 0x09, 0x91, 0xF6, 0x13, 0xF5, 0xCB, 0x96, + 0xCA, 0x11, 0x78, 0xF9, 0x74, 0xF2, 0xC4, 0xAA, + 0x0C, 0xE6, 0x3D, 0xC2, 0x4E, 0x36, 0x4C, 0x92, + 0xA6, 0x43, 0xB9, 0x0A, 0x5F, 0x85, 0xA6, 0x2F, + 0xD4, 0xD8, 0xD2, 0xB1, 0x93, 0xD2, 0x9B, 0x18, + 0xBE, 0xDE, 0x26, 0x53, 0xFC, 0x5D, 0x3F, 0x24, + 0xF5, 0xB2, 0xC0, 0x18, 0xDB, 0xBC, 0xB6, 0xEF, + 0x00, 0xF3, 0x05, 0xBF, 0x93, 0x66, 0x6B, 0xD4, + 0x7F, 0xEA, 0x91, 0x93, 0xBC, 0x23, 0x3D, 0xB3, + 0x91, 0x21, 0x44, 0x2E, 0x93, 0x8D, 0xA5, 0xDD, + 0x07, 0xEE, 0x6E, 0x87, 0x9C, 0x5B, 0x9D, 0xFF, + 0x41, 0xEC, 0xEE, 0x5E, 0x05, 0x89, 0xAE, 0x61, + 0x75, 0xFF, 0x5E, 0xC6, 0xF6, 0xD2, 0x62, 0x9F, + 0x56, 0xB1, 0x8B, 0x4D, 0xE6, 0x6F, 0xCB, 0x13, + 0xDF, 0x04, 0x00, 0xA7, 0x97, 0xC9, 0x22, 0x70, + 0xF6, 0x9B, 0xDE, 0xBD, 0xDC, 0xB8, 0x8C, 0x42, + 0x48, 0x91, 0x9B, 0x56, 0xCD, 0xA7, 0x0B, 0x8A, + 0xC4, 0xF9, 0x42, 0x9C, 0x29, 0x2D, 0xA9, 0x4D, + 0x64, 0x78, 0x28, 0x07, 0x64, 0xFE, 0x23, 0x86, + 0xFC, 0x38, 0xCB, 0x09, 0x31, 0x45, 0x88, 0x39, + 0xEF, 0x4E, 0x7D, 0xE8, 0xF0, 0x68, 0x9D, 0x99, + 0x80, 0x59, 0x88, 0xC7, 0xF9, 0x61, 0x11, 0x85, + 0x2C, 0x89, 0x29, 0xE5, 0xA5, 0x40, 0xD3, 0xB7, + 0x8D, 0x71, 0x2D, 0xEC, 0xC3, 0x96, 0xFE, 0xF3, + 0xEC, 0x34, 0x40, 0x21, 0x84, 0xE4, 0xFD, 0x29, + 0xF3, 0x63, 0xEA, 0x80, 0xF6, 0xFC, 0x50, 0xBA, + 0x9A, 0x11, 0x35, 0x1A, 0xCE, 0xEA, 0x8F, 0xE6, + 0x8D, 0x54, 0x1E, 0x1A, 0xA5, 0x84, 0x8D, 0x9F, + 0x6E, 0x61, 0xDF, 0xB6, 0x2B, 0x2F, 0x23, 0xBC, + 0x50, 0x81, 0xE8, 0x2F, 0x76, 0x22, 0x6E, 0x03, + 0x28, 0x49, 0x82, 0xEC, 0x48, 0x48, 0x12, 0x09, + 0xB1, 0xA7, 0xD4, 0xC8, 0x79, 0x7E, 0x44, 0xBF, + 0xA8, 0x70, 0xB2, 0x20, 0x04, 0xDB, 0x74, 0xBD, + 0x7D, 0x47, 0x8D, 0x5B, 0x36, 0x14, 0xD2, 0xB1, + 0xDA, 0x75, 0x02, 0xB3, 0x98, 0xEB, 0x9D, 0xA8, + 0x0D, 0x06, 0x46, 0x1E, 0x90, 0xE0, 0x30, 0x60, + 0x44, 0x6A, 0xB4, 0xA8, 0x23, 0x84, 0x32, 0xBF, + 0xAF, 0x75, 0x2F, 0x39, 0x17, 0x91, 0x21, 0x4F, + 0x1E, 0x6B, 0x63, 0x59, 0x0D, 0x53, 0x60, 0x60, + 0xD1, 0xC2, 0x45, 0x30, 0x7B, 0xC5, 0xC1, 0xBA, + 0xC4, 0xAA, 0xA0, 0x99, 0xD3, 0x6B, 0xB6, 0xDC, + 0xBC, 0x97, 0x3C, 0xF2, 0xE6, 0x9F, 0x27, 0x34, + 0xD0, 0xF2, 0x9A, 0xEE, 0xC4, 0x56, 0x7B, 0x99, + 0xA1, 0x6B, 0xC1, 0x7C, 0x6C, 0xDD, 0xAC, 0xEF, + 0xE4, 0x99, 0x27, 0xFB, 0x14, 0xE7, 0xD9, 0x8D, + 0xD4, 0x26, 0x35, 0x19, 0x46, 0x9C, 0xCA, 0x3D, + 0xB4, 0x67, 0x9A, 0x68, 0xCE, 0xED, 0xA9, 0x55, + 0x59, 0x22, 0x10, 0xFC, 0x49, 0xAA, 0x5F, 0xBE, + 0x93, 0x4C, 0xC7, 0x3D, 0x84, 0xE4, 0xBA, 0x54, + 0x78, 0x00, 0x2D, 0x68, 0x90, 0x98, 0x90, 0x68, + 0xEF, 0x8F, 0xC9, 0x8C, 0x25, 0x32, 0xB8, 0x3B, + 0xF3, 0xCB, 0x9E, 0xF0, 0x28, 0x93, 0xC2, 0x15, + 0x24, 0x26, 0xB9, 0xD1, 0xA9, 0x47, 0x34, 0xDF, + 0xB4, 0xF9, 0x11, 0x35, 0x14, 0x3C, 0x9E, 0xED, + 0x18, 0xFD, 0x51, 0xAE, 0x87, 0x5D, 0x07, 0xA2, + 0x37, 0x75, 0x60, 0x6A, 0x73, 0x4F, 0xBA, 0x98, + 0xC0, 0x63, 0xB4, 0xA1, 0x62, 0x2E, 0x7F, 0xF2, + 0x1A, 0xA7, 0xE6, 0x52, 0xA3, 0xD6, 0xC1, 0x9F, + 0xE0, 0xDC, 0x67, 0x61, 0xB7, 0xD3, 0x53, 0x02, + 0xBF, 0x21, 0x4D, 0x30, 0x79, 0xF7, 0x60, 0x51, + 0x08, 0x2A, 0x87, 0x59, 0x29, 0x92, 0x0D, 0xC3, + 0xB3, 0xCB, 0x43, 0x21, 0x1A, 0x23, 0xA4, 0x3A, + 0x50, 0x33, 0x2F, 0xAF, 0x1A, 0xC2, 0x19, 0x1E, + 0x71, 0x71, 0x25, 0xF6, 0x3E, 0x25, 0x86, 0xC4, + 0xD8, 0x6D, 0xCA, 0x6B, 0xCD, 0x3D, 0x03, 0x8F, + 0x9D, 0x3A, 0x7B, 0x66, 0xCB, 0xC7, 0xDF, 0x34 +#elif !defined(WOLFSSL_NO_ML_DSA_65) + 0x30, 0x82, 0x07, 0xb2, 0x30, 0x0d, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, + 0x12, 0x03, 0x82, 0x07, 0xa1, 0x00, + 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, + 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, + 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, + 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, + 0xBB, 0x11, 0x19, 0x23, 0xF1, 0x94, 0xA7, 0xCC, + 0x8A, 0x7B, 0xB2, 0xEB, 0xC5, 0xC0, 0xE7, 0x1A, + 0xA6, 0x37, 0xCC, 0x80, 0x0E, 0x61, 0x03, 0xB8, + 0x50, 0xA5, 0x39, 0xB2, 0xA3, 0x9E, 0x1B, 0x6D, + 0x71, 0x3E, 0x5D, 0xB8, 0x31, 0x4C, 0x9A, 0xE1, + 0xF8, 0xBF, 0x8A, 0x38, 0xF0, 0x6A, 0xFB, 0x9D, + 0x73, 0xB1, 0x61, 0xB0, 0xFF, 0xE3, 0xA4, 0x89, + 0x17, 0x06, 0xAE, 0x26, 0xD5, 0x4F, 0xFB, 0x49, + 0x6D, 0xF8, 0xDC, 0x0F, 0x19, 0x83, 0x50, 0x95, + 0x00, 0xC9, 0xAB, 0xBD, 0x28, 0xE5, 0x9B, 0x3F, + 0xCD, 0xAB, 0xBD, 0xAD, 0xAB, 0xD4, 0x5E, 0xC3, + 0x14, 0x99, 0x37, 0x8B, 0xDE, 0x84, 0x9E, 0x7C, + 0x1F, 0x19, 0xB7, 0x04, 0x4D, 0x67, 0xE0, 0x51, + 0x06, 0xD7, 0x13, 0x6D, 0x95, 0x38, 0x0D, 0x56, + 0x05, 0xD4, 0x46, 0x5D, 0x87, 0x75, 0x57, 0x06, + 0x5D, 0xF0, 0xA7, 0x5D, 0x3C, 0x28, 0x54, 0x2F, + 0x40, 0xFE, 0xED, 0x42, 0xEC, 0x7E, 0x28, 0x06, + 0x37, 0xB0, 0x83, 0xD9, 0x88, 0xBC, 0xA5, 0xF6, + 0x39, 0x4E, 0x02, 0x39, 0x6C, 0x46, 0x76, 0x18, + 0x4F, 0xB6, 0x33, 0x18, 0xDA, 0xFA, 0xF5, 0xBB, + 0xDD, 0xE0, 0x0E, 0x30, 0x8F, 0xE8, 0x40, 0x19, + 0xC2, 0x34, 0x0A, 0x3F, 0x3E, 0x1C, 0x08, 0x65, + 0x62, 0x49, 0x70, 0x71, 0x12, 0x83, 0x35, 0x6A, + 0xE1, 0x4B, 0xD6, 0xB9, 0x4D, 0x1C, 0x9A, 0xE1, + 0x88, 0xDE, 0x1A, 0x8A, 0x2C, 0xA8, 0x24, 0xA8, + 0xEA, 0xE2, 0xFE, 0x6A, 0xFB, 0x38, 0xD8, 0x3A, + 0x2D, 0x99, 0x99, 0x6A, 0xB2, 0x1F, 0xE3, 0xE8, + 0x4C, 0x0B, 0xE6, 0xB6, 0xDA, 0x08, 0x87, 0x9B, + 0x67, 0x73, 0x74, 0xFA, 0x7C, 0x69, 0x1B, 0x13, + 0xD4, 0x0F, 0xA9, 0xD4, 0xCC, 0x26, 0xB2, 0x28, + 0x8D, 0x5A, 0x8C, 0x9A, 0x43, 0x72, 0x43, 0x81, + 0x00, 0x4D, 0x61, 0xB0, 0xD5, 0x7F, 0xF4, 0x00, + 0x31, 0x4C, 0x8E, 0x30, 0xEE, 0x79, 0x6A, 0xF1, + 0x0F, 0x7E, 0xE2, 0x1B, 0xF1, 0x3D, 0x08, 0x18, + 0x04, 0x65, 0xAB, 0xC7, 0x2E, 0xDD, 0xB0, 0x80, + 0xC6, 0xA0, 0x71, 0x84, 0xE3, 0xEE, 0xDC, 0x47, + 0xC1, 0x9A, 0xA7, 0xF0, 0x9D, 0x1F, 0x33, 0x09, + 0xE1, 0x83, 0xA2, 0xBD, 0x9B, 0x05, 0x73, 0xDD, + 0xE4, 0x74, 0xA8, 0x1B, 0xA4, 0xF7, 0x8D, 0x0C, + 0x52, 0x3D, 0x0C, 0x04, 0xF9, 0x00, 0x60, 0xFD, + 0x57, 0x1A, 0x35, 0xC0, 0x37, 0xE0, 0x79, 0xC5, + 0xE2, 0x10, 0xD7, 0x39, 0x0D, 0xF5, 0x68, 0xF2, + 0xE2, 0xF0, 0x3C, 0xE4, 0x44, 0x20, 0xC8, 0x2F, + 0x3F, 0xE6, 0x9E, 0xB9, 0xB4, 0x8E, 0xE9, 0x09, + 0x62, 0xD6, 0xB0, 0xF2, 0x44, 0x40, 0x64, 0x8F, + 0x71, 0xED, 0xB2, 0x41, 0xEE, 0x65, 0x66, 0xFC, + 0x1A, 0x64, 0xCA, 0xBF, 0x66, 0xBE, 0x6F, 0xEC, + 0xBC, 0xB1, 0x38, 0x7C, 0x82, 0xA7, 0xBC, 0x20, + 0x2D, 0x9E, 0x36, 0x79, 0x98, 0xE2, 0xA2, 0x91, + 0xAF, 0x0C, 0xD1, 0x57, 0x06, 0x77, 0xFE, 0x8D, + 0x63, 0xA3, 0x28, 0x5A, 0x2E, 0xA6, 0xEB, 0x29, + 0xAF, 0x9D, 0xC1, 0xAE, 0xC1, 0xC3, 0x6C, 0x47, + 0x06, 0xB1, 0x2B, 0xAA, 0x20, 0x83, 0x96, 0x92, + 0xF2, 0x86, 0xA6, 0xE0, 0x32, 0x14, 0x68, 0xF7, + 0x47, 0x93, 0x45, 0xC4, 0xD5, 0x2F, 0xBD, 0xB2, + 0xF0, 0x67, 0x25, 0xB5, 0x54, 0xB8, 0x9E, 0x24, + 0x92, 0x61, 0x26, 0x81, 0xAC, 0xEB, 0xC6, 0xC7, + 0xBA, 0xDA, 0x92, 0x25, 0x81, 0x8D, 0xBC, 0x35, + 0xD6, 0x4C, 0x22, 0xC4, 0x8B, 0xFF, 0x80, 0xA7, + 0x30, 0xD0, 0x71, 0x6D, 0xFA, 0xC9, 0x9D, 0xFD, + 0x5B, 0x89, 0x92, 0x61, 0x1D, 0x0C, 0x93, 0xEE, + 0x90, 0xBD, 0xB2, 0x60, 0x02, 0x2A, 0xFE, 0x25, + 0xD9, 0x13, 0xE0, 0x6E, 0xFF, 0xB5, 0x9C, 0xB1, + 0xF8, 0xA6, 0x0C, 0xBF, 0xA5, 0xAB, 0x2F, 0x45, + 0x9A, 0x16, 0xF4, 0x67, 0xE9, 0x89, 0x52, 0x5E, + 0x0A, 0x37, 0xEB, 0xE5, 0x6E, 0x83, 0x3F, 0xDE, + 0x55, 0xDB, 0x9D, 0x15, 0x30, 0xAD, 0xCF, 0x45, + 0x84, 0x6D, 0xF2, 0x81, 0xE4, 0x7C, 0xAA, 0x1E, + 0x0A, 0x27, 0xEF, 0xDE, 0x21, 0x07, 0xD3, 0x54, + 0xCE, 0xA0, 0xF6, 0xA4, 0x54, 0x69, 0x2F, 0x04, + 0xCD, 0x83, 0x8E, 0xBD, 0xD4, 0x6E, 0x19, 0x1E, + 0x5D, 0x9C, 0x11, 0x83, 0x9A, 0x2C, 0x3F, 0x48, + 0x8A, 0x4F, 0xC7, 0xCD, 0x26, 0x5A, 0x7B, 0x5D, + 0x32, 0xB0, 0x8C, 0xBD, 0xBF, 0xAB, 0x9D, 0x2C, + 0xCD, 0x76, 0x22, 0x2C, 0x8E, 0xE3, 0x7D, 0xDC, + 0xBD, 0x2A, 0xA0, 0x63, 0xED, 0x86, 0x14, 0x73, + 0xA6, 0x45, 0x4C, 0xAE, 0xA3, 0x77, 0x85, 0x0B, + 0x1A, 0x2B, 0x9D, 0xDB, 0xBC, 0xB3, 0x74, 0xFA, + 0xB5, 0xB1, 0x2F, 0x35, 0x1C, 0x8E, 0x58, 0x88, + 0x87, 0x2E, 0x5C, 0xD1, 0xF6, 0x0A, 0x4F, 0xAE, + 0x1F, 0xF8, 0x37, 0xD1, 0x92, 0xC2, 0x2B, 0xEB, + 0x41, 0xEE, 0x6F, 0xA3, 0x92, 0xFC, 0xDF, 0x45, + 0x50, 0xFF, 0x46, 0xB5, 0xCE, 0x90, 0x6D, 0x01, + 0x7E, 0xF3, 0x07, 0x7D, 0xF1, 0x32, 0x30, 0x0D, + 0x8B, 0xBF, 0xA9, 0xBB, 0x03, 0xC7, 0x5E, 0x79, + 0xE2, 0xF0, 0x4C, 0x28, 0x4A, 0xD0, 0x6A, 0x44, + 0x39, 0x96, 0x49, 0xC3, 0xE2, 0xA2, 0xA8, 0xD1, + 0xEF, 0xE9, 0xB7, 0xA4, 0xE0, 0xC2, 0x71, 0x04, + 0x7A, 0xB7, 0x59, 0x08, 0xBF, 0xF7, 0xDF, 0x9E, + 0x30, 0xEC, 0xA5, 0x47, 0x74, 0x5B, 0xAE, 0x23, + 0xA8, 0x6F, 0xF9, 0xA8, 0xB5, 0x8C, 0x25, 0x38, + 0xB8, 0x8B, 0x86, 0x64, 0x01, 0x07, 0x69, 0x02, + 0xDC, 0x5F, 0x0B, 0xD7, 0x61, 0x68, 0x7B, 0x49, + 0xEA, 0xFE, 0x36, 0xD3, 0x50, 0xCB, 0xED, 0xFD, + 0xD3, 0x6C, 0x12, 0x1C, 0xF2, 0x37, 0x86, 0xBF, + 0xCF, 0x7E, 0x47, 0x07, 0x64, 0x96, 0xEA, 0xB6, + 0xBB, 0xDA, 0x77, 0x40, 0x49, 0xC2, 0xEB, 0xAB, + 0xE2, 0xDE, 0x99, 0xC4, 0xC2, 0x4F, 0x2D, 0xB7, + 0x36, 0x84, 0x01, 0x5B, 0x37, 0x39, 0x77, 0x49, + 0x67, 0x60, 0xCF, 0x9A, 0xC2, 0x3D, 0x8B, 0x62, + 0x31, 0x33, 0xDB, 0x2D, 0xE1, 0x0D, 0x73, 0xFA, + 0x6A, 0xD1, 0xC6, 0xDA, 0xC8, 0x43, 0x4F, 0x28, + 0xC6, 0xE2, 0x51, 0xCE, 0x72, 0x93, 0xCF, 0xF3, + 0xF3, 0xB6, 0x1E, 0xFC, 0xB5, 0xA4, 0x35, 0x12, + 0x36, 0x70, 0xF2, 0x98, 0x46, 0xA1, 0x3D, 0xF3, + 0xEE, 0x71, 0x26, 0x04, 0x46, 0x1F, 0x1B, 0xAB, + 0x8F, 0x4E, 0xBC, 0x83, 0x6D, 0xE0, 0x58, 0x97, + 0x8A, 0xE7, 0x34, 0x39, 0x6A, 0x98, 0x08, 0x1B, + 0x35, 0xCC, 0x98, 0x18, 0x8A, 0x86, 0x94, 0x9C, + 0x99, 0x27, 0x0D, 0x47, 0x09, 0x85, 0x4C, 0x5B, + 0x35, 0xB1, 0x7F, 0x48, 0xA3, 0x73, 0x13, 0x4C, + 0x81, 0x4C, 0xC8, 0xA0, 0xF3, 0xE2, 0xFA, 0x80, + 0x7F, 0x2A, 0x91, 0x85, 0x30, 0x90, 0x78, 0x64, + 0x77, 0x82, 0x82, 0xD7, 0x5E, 0x03, 0xA4, 0x1B, + 0x25, 0x04, 0xEE, 0xD8, 0x16, 0xA4, 0x17, 0xA3, + 0xAC, 0x6B, 0xA1, 0x60, 0x80, 0xC3, 0x9B, 0x73, + 0x10, 0x19, 0x20, 0x02, 0xA7, 0x28, 0xF7, 0xF2, + 0x03, 0x95, 0x00, 0x9A, 0x9E, 0x16, 0x76, 0x7C, + 0xE1, 0x97, 0x1F, 0x5D, 0xE7, 0xD2, 0x29, 0xA5, + 0x06, 0x13, 0x36, 0x9E, 0x43, 0x82, 0x04, 0x5A, + 0x8E, 0x81, 0x90, 0x1F, 0x4D, 0xBA, 0x81, 0x02, + 0xF3, 0xD4, 0x13, 0xFE, 0x35, 0xB3, 0x26, 0xA8, + 0x74, 0xF2, 0x33, 0xB7, 0x19, 0xA7, 0x13, 0x76, + 0x00, 0xD3, 0x5D, 0x33, 0xAE, 0xB6, 0xB7, 0x25, + 0x96, 0x24, 0x08, 0x3A, 0xA9, 0x68, 0x73, 0x0C, + 0x8F, 0x78, 0x29, 0x2A, 0xD2, 0x8F, 0x14, 0xEE, + 0xAB, 0xE6, 0x60, 0x83, 0x59, 0x84, 0xFE, 0x69, + 0xEF, 0x23, 0xDE, 0xC8, 0xC3, 0x27, 0xC0, 0xEB, + 0x0B, 0x88, 0x2D, 0x58, 0x7E, 0x1E, 0xC4, 0x33, + 0xDA, 0x85, 0xC9, 0xFD, 0x1E, 0x0A, 0x34, 0x99, + 0x4D, 0xEA, 0x24, 0x0C, 0x85, 0x44, 0x52, 0xD1, + 0x8C, 0x30, 0xF4, 0x96, 0xE4, 0x9E, 0xC9, 0x04, + 0xB6, 0x02, 0xE0, 0xF5, 0x06, 0x2E, 0xDC, 0xDA, + 0x03, 0x28, 0x0A, 0x53, 0xB4, 0x31, 0x35, 0x74, + 0xCC, 0x2C, 0x0D, 0x54, 0x71, 0xBC, 0x96, 0x13, + 0xBD, 0xFD, 0x66, 0x41, 0xF5, 0xBD, 0x12, 0x7B, + 0xAB, 0x5B, 0x5E, 0xB3, 0xD4, 0x99, 0xA3, 0x31, + 0x14, 0x04, 0x82, 0x20, 0xE8, 0x19, 0xF8, 0xEE, + 0x12, 0xCA, 0x92, 0x2C, 0x8F, 0x17, 0xD9, 0xC9, + 0xF5, 0x1A, 0xD5, 0xBD, 0x68, 0x83, 0xB1, 0x0E, + 0x6A, 0xA2, 0x48, 0x3B, 0xA4, 0x9D, 0xC5, 0x47, + 0xDA, 0x76, 0x86, 0x15, 0x13, 0x44, 0xF4, 0xE9, + 0x09, 0x9B, 0x38, 0xE4, 0x30, 0xB5, 0x22, 0x6B, + 0x05, 0x98, 0x32, 0xCF, 0x03, 0xDB, 0x48, 0xFB, + 0x02, 0xDB, 0xA4, 0xE6, 0x15, 0x93, 0xDC, 0x45, + 0x76, 0x36, 0x04, 0x91, 0x89, 0x0E, 0x53, 0xEC, + 0x0E, 0x6A, 0xC7, 0x3C, 0xF3, 0x2B, 0x25, 0xD8, + 0x23, 0xB3, 0x84, 0x56, 0xE2, 0x86, 0x50, 0x5A, + 0x54, 0x1E, 0x5A, 0xEE, 0xE9, 0x6B, 0x19, 0x14, + 0xF5, 0xF7, 0x66, 0x87, 0xCE, 0x2B, 0x01, 0x60, + 0x22, 0x7A, 0xBE, 0xD7, 0x79, 0x93, 0x59, 0x4B, + 0xCD, 0x83, 0x13, 0x66, 0x20, 0x6D, 0x75, 0x71, + 0x40, 0x82, 0xF1, 0xC4, 0x6F, 0x1F, 0x44, 0x39, + 0xAC, 0x81, 0xA5, 0x7A, 0xF3, 0x1C, 0x81, 0xC5, + 0x55, 0x30, 0x7A, 0x07, 0x0F, 0xFA, 0x94, 0xE0, + 0x47, 0x9B, 0x78, 0x4B, 0xBD, 0x88, 0xA6, 0x0C, + 0xD4, 0xC7, 0xCF, 0xD9, 0x4E, 0x6A, 0xFE, 0x02, + 0xF6, 0xB2, 0x1F, 0x72, 0xAF, 0x0D, 0xCD, 0x66, + 0x09, 0xD4, 0x0C, 0x96, 0x5C, 0x14, 0xE5, 0xF2, + 0x38, 0x91, 0x83, 0xE5, 0x3D, 0xE9, 0x30, 0xF7, + 0xDE, 0x1D, 0x44, 0x21, 0x5C, 0xF4, 0x91, 0x44, + 0x84, 0x4E, 0x8B, 0x87, 0xF7, 0x8A, 0x7F, 0x13, + 0x2A, 0xEF, 0xE2, 0x2B, 0xE8, 0x0B, 0x4E, 0x3A, + 0x05, 0xEE, 0x3A, 0x68, 0xCC, 0xF6, 0x09, 0xEF, + 0x44, 0x04, 0x74, 0x02, 0xE4, 0x49, 0x30, 0x46, + 0xE6, 0xF9, 0xC7, 0x67, 0xFF, 0x8A, 0x75, 0xE2, + 0x8B, 0x3C, 0xE0, 0x77, 0xFD, 0xE7, 0xE7, 0xEE, + 0xD3, 0x13, 0xB5, 0xBF, 0x7E, 0x46, 0x01, 0x27, + 0xCA, 0x81, 0x82, 0xE9, 0xBC, 0x79, 0x4C, 0x0D, + 0xFA, 0x73, 0x0F, 0xB9, 0x20, 0x08, 0x05, 0x75, + 0xA7, 0x51, 0xB5, 0xCA, 0xEC, 0x85, 0xA1, 0x09, + 0xB4, 0x42, 0x2B, 0xA2, 0x66, 0x74, 0x3F, 0x0D, + 0x03, 0x2B, 0xDA, 0x8F, 0x1C, 0xA6, 0x24, 0x8C, + 0xDB, 0x91, 0x75, 0x30, 0xDF, 0x13, 0x02, 0xA5, + 0xF8, 0xC1, 0x8D, 0xC6, 0x42, 0xD5, 0x24, 0x78, + 0xC9, 0x8C, 0x12, 0xA3, 0xF1, 0x6E, 0xF2, 0xB6, + 0x2B, 0x4F, 0x59, 0xEA, 0x1B, 0xB5, 0x8D, 0xE7, + 0xB6, 0x5B, 0x3C, 0x71, 0x53, 0xCE, 0x6D, 0xA5, + 0xE4, 0x95, 0x07, 0x46, 0xF8, 0x0E, 0x08, 0x7A, + 0x0E, 0x35, 0x86, 0xD0, 0x97, 0x79, 0x1B, 0xF3, + 0x6D, 0xEF, 0x86, 0x5D, 0x68, 0x59, 0x1D, 0x39, + 0xD0, 0x90, 0x37, 0x73, 0xEE, 0xA9, 0x62, 0x14, + 0x7F, 0x34, 0x70, 0x41, 0x38, 0xB5, 0x4D, 0xF7, + 0x92, 0x4C, 0xDD, 0x8C, 0x33, 0x3D, 0xB5, 0xE1, + 0xA4, 0x09, 0xCC, 0xB2, 0xB3, 0x4E, 0x2C, 0x3C, + 0x8C, 0x7F, 0xDD, 0x3F, 0xD8, 0xD0, 0x12, 0xCB, + 0xF3, 0x82, 0xAA, 0xA8, 0x5E, 0x83, 0xA1, 0x2F, + 0x23, 0x5A, 0x2D, 0x14, 0x7D, 0x03, 0x5B, 0x7B, + 0x28, 0xB3, 0x4B, 0x6F, 0x57, 0x94, 0x9F, 0x32, + 0x24, 0x82, 0xA7, 0xD4, 0xD3, 0xB1, 0x50, 0x45, + 0xC4, 0x20, 0xD5, 0xAD, 0xDC, 0x7F, 0x0E, 0x69, + 0xB4, 0xDC, 0x1C, 0xBA, 0x58, 0xB0, 0x1D, 0x87, + 0x24, 0x80, 0xB0, 0x6A, 0x26, 0x0D, 0x82, 0x7D, + 0x89, 0x1B, 0x13, 0xC4, 0xC5, 0xCA, 0x50, 0xC7, + 0x48, 0xDE, 0x3C, 0x77, 0x1B, 0xE6, 0x1E, 0x9A, + 0xA1, 0x70, 0x16, 0x5C, 0xB0, 0x1F, 0x4B, 0xF5, + 0xDA, 0x27, 0xA7, 0x79, 0x1D, 0x3A, 0xD3, 0xF6, + 0x26, 0x7B, 0x4C, 0xB4, 0xE6, 0x1B, 0x28, 0xFA, + 0x17, 0x08, 0x41, 0x8D, 0x93, 0x2D, 0xFC, 0x41, + 0x61, 0x88, 0x0C, 0x5D, 0x3B, 0x17, 0xA9, 0x66, + 0x3A, 0x90, 0x61, 0xFA, 0x8F, 0x18, 0x04, 0x31, + 0x58, 0x50, 0xFE, 0x4E, 0x73, 0x06, 0xC8, 0x82, + 0xB3, 0x82, 0x27, 0xE8, 0x67, 0xF8, 0x08, 0x72, + 0xCD, 0xC1, 0x94, 0x4D, 0x47, 0x26, 0x15, 0xEA, + 0x49, 0x00, 0xEF, 0x7D, 0x27, 0x0B, 0x88, 0x1D, + 0x41, 0x30, 0xF5, 0x6C, 0x5C, 0xC9, 0x80, 0xD9, + 0x2A, 0x47, 0xAD, 0xA6, 0x65, 0x7E, 0xB6, 0xF3, + 0x7A, 0x38, 0x5D, 0x2D, 0x8C, 0xC9, 0x93, 0xE1, + 0x44, 0x2E, 0xB0, 0x52, 0x81, 0x85, 0x36, 0x36, + 0x99, 0x1E, 0x34, 0xAA, 0xDC, 0x68, 0x95, 0x4D, + 0x04, 0xE7, 0xAD, 0xEF, 0x76, 0xBF, 0x88, 0x0F, + 0x05, 0x9B, 0x0C, 0xBB, 0x55, 0xD9, 0x15, 0xA4, + 0xB1, 0x23, 0xE2, 0xF1, 0x33, 0x9A, 0x07, 0x3C, + 0xBF, 0xBC, 0x40, 0x9B, 0xEF, 0xF6, 0x40, 0x0A, + 0xE0, 0x96, 0xD5, 0xAE, 0x18, 0xEC, 0x42, 0xCF, + 0xFA, 0xD5, 0xB4, 0x98, 0x0F, 0xA3, 0x5B, 0xF0, + 0x34, 0x13, 0xAD, 0xB5, 0xD7, 0xE6, 0x87, 0x6A, + 0xC3, 0x55, 0xD1, 0xC9, 0xED, 0x70, 0xCA, 0x2B, + 0x97, 0x39, 0x54, 0xD1, 0x2B, 0x3C, 0xDD, 0x76, + 0xAC, 0x68, 0x35, 0xDB, 0x96, 0x00, 0x3E, 0xD8, + 0xC4, 0xE2, 0x88, 0xB7, 0x1F, 0xD7, 0x7D, 0xBA, + 0xA7, 0x63, 0x57, 0x20, 0xE1, 0x2A, 0xE0, 0xA3, + 0x17, 0xDE, 0x80, 0x8C, 0x66, 0x4E, 0x31, 0x7F, + 0x55, 0x27, 0x57, 0x91, 0xF3, 0x24, 0x5C, 0xA4, + 0xFE, 0x5D, 0x4D, 0x41, 0x07, 0x7F, 0xC1, 0x50, + 0xA6, 0xE4, 0x03, 0xD5, 0xA2, 0x08, 0xE4, 0x6E, + 0xAD, 0xBE, 0x8F, 0x2C, 0xFB, 0x8A, 0xF4, 0x72, + 0xF4, 0xA0, 0xCE, 0xAC, 0x01, 0x52, 0x19, 0x47, + 0x8E, 0x6B, 0x86, 0xC9, 0x58, 0xCF, 0x86, 0x52, + 0x5B, 0x74, 0x85, 0xC1, 0x73, 0x4C, 0x7E, 0xF0, + 0x0E, 0x90, 0x68, 0x3F, 0xFF, 0x5D, 0xBD, 0x0A, + 0x7D, 0x41, 0x3A, 0x85, 0x50, 0x21, 0x02, 0x6A, + 0x1B, 0x32, 0x01, 0x3A, 0x46, 0x16, 0xCB, 0xCD, + 0x37, 0x00, 0xAC, 0xBC, 0x70, 0x5B, 0xE3, 0xEF, + 0xBA, 0x62, 0x5C, 0x69, 0xA0, 0x25, 0x26, 0x7B, + 0xCE, 0x9D, 0x13, 0x5E, 0x3F, 0x5B, 0x5C, 0xC8, + 0xC4, 0x39, 0x56, 0x40, 0x7E, 0x84, 0xB6, 0x66, + 0x31, 0x03, 0xE2, 0x9C, 0x24, 0x20, 0x35, 0x55, + 0x1A, 0xE7, 0x97, 0xF5, 0x6C, 0x63, 0x74, 0xBE, + 0x0C, 0x79, 0x8C, 0x0C, 0xF3, 0x98, 0xF1, 0xED +#else + 0x30, 0x82, 0x0a, 0x32, 0x30, 0x0d, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, + 0x13, 0x03, 0x82, 0x0a, 0x21, 0x00, + 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, + 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, + 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, + 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, + 0x83, 0x01, 0xE6, 0x66, 0xF5, 0x9D, 0x3E, 0xC5, + 0x04, 0x4D, 0xE4, 0x56, 0x78, 0x8F, 0xDE, 0x19, + 0xEB, 0x39, 0x67, 0x7B, 0x5F, 0x9F, 0xE1, 0x41, + 0x50, 0xDA, 0x46, 0x3A, 0x70, 0x6F, 0x3B, 0xAF, + 0x71, 0x5B, 0x95, 0x33, 0x6B, 0x2D, 0x68, 0x5A, + 0x7C, 0xD7, 0x88, 0x07, 0x13, 0xE4, 0x58, 0x7B, + 0xF7, 0xD8, 0x57, 0xBF, 0x7E, 0x31, 0x56, 0x96, + 0xB8, 0xD0, 0xD9, 0xD4, 0x9E, 0x14, 0x29, 0x18, + 0xBF, 0x09, 0x74, 0xE7, 0xF4, 0x32, 0x37, 0xD4, + 0xBE, 0x3A, 0xD3, 0x94, 0x59, 0x9E, 0x3D, 0x39, + 0xBB, 0x76, 0x49, 0x93, 0x25, 0x53, 0x44, 0x7E, + 0x5D, 0x5A, 0xCC, 0x34, 0x99, 0x93, 0x01, 0x76, + 0xEC, 0xD3, 0xA8, 0x44, 0xA4, 0x25, 0xF5, 0x0D, + 0x05, 0x11, 0xC9, 0x22, 0x6C, 0x4B, 0x9A, 0x24, + 0xF2, 0xA0, 0x11, 0xCD, 0x88, 0xD3, 0x23, 0x08, + 0xE0, 0x31, 0x2A, 0x0C, 0x87, 0xCC, 0x34, 0xA9, + 0x95, 0x82, 0x3C, 0x65, 0xF4, 0xF0, 0xF9, 0x8E, + 0x50, 0xC3, 0x77, 0x88, 0xCE, 0x38, 0xDC, 0x28, + 0xFB, 0x8B, 0x9B, 0xFA, 0xAF, 0xA9, 0x04, 0xB5, + 0x41, 0xEE, 0x71, 0x2F, 0x6A, 0x04, 0x1E, 0x06, + 0x11, 0x37, 0x4F, 0x6B, 0xF1, 0x7E, 0xAC, 0x0B, + 0xD5, 0x6F, 0x3B, 0x6B, 0xF3, 0x36, 0xDA, 0x92, + 0x42, 0x07, 0x0C, 0x24, 0x69, 0xA2, 0x0C, 0x4D, + 0x16, 0x16, 0x14, 0x9A, 0x61, 0x59, 0x25, 0x20, + 0x11, 0xD2, 0x99, 0xF9, 0x3F, 0x98, 0x6D, 0x87, + 0x5D, 0xD3, 0x0B, 0x38, 0xA2, 0x25, 0x49, 0x17, + 0x45, 0x70, 0x13, 0x8C, 0x2B, 0xB3, 0xAA, 0x9C, + 0xBE, 0xA9, 0x19, 0x74, 0xF3, 0xD8, 0x9B, 0xF5, + 0xAE, 0x32, 0xBE, 0x9E, 0x58, 0xB8, 0x54, 0xA2, + 0xF8, 0xE8, 0x6F, 0xF7, 0x67, 0x80, 0xC0, 0x34, + 0x90, 0xF4, 0x67, 0xDB, 0x06, 0x51, 0xC2, 0x0B, + 0x1D, 0xF6, 0x0E, 0xB9, 0x7A, 0x3C, 0x99, 0xD9, + 0xBD, 0x66, 0x4B, 0xE6, 0xA5, 0xE4, 0xC8, 0xA8, + 0xAD, 0x4C, 0xC3, 0x63, 0x90, 0xD7, 0x00, 0x4E, + 0x4B, 0xB4, 0x21, 0xDA, 0xED, 0x65, 0x4C, 0x35, + 0x7D, 0xA4, 0xD6, 0x84, 0x98, 0x93, 0x3E, 0xC7, + 0x17, 0x77, 0xAD, 0x64, 0xC2, 0xAE, 0x01, 0x3C, + 0x73, 0xEB, 0x45, 0x7C, 0x68, 0xEF, 0x9A, 0x74, + 0x5A, 0xDE, 0xEB, 0x4F, 0xDF, 0xC8, 0x79, 0xE7, + 0x74, 0xD0, 0x3F, 0xAF, 0x6B, 0x14, 0xAA, 0xB1, + 0x07, 0x52, 0xE2, 0x4B, 0x52, 0xD0, 0xF2, 0xD9, + 0x4D, 0x54, 0x0A, 0x1E, 0xBE, 0x10, 0xF5, 0x97, + 0xE5, 0x14, 0x44, 0x2D, 0x6C, 0x13, 0xC2, 0xE2, + 0x49, 0x8E, 0x8A, 0xF3, 0x01, 0x7C, 0x52, 0xDB, + 0x23, 0x3A, 0x90, 0x71, 0x7D, 0xF2, 0x5B, 0x4D, + 0x07, 0x2B, 0x7D, 0x88, 0xEE, 0x87, 0x31, 0xD1, + 0x68, 0x24, 0xC9, 0x5D, 0x1F, 0xB9, 0x83, 0xC4, + 0x49, 0xDE, 0xB4, 0x66, 0x27, 0x60, 0x60, 0xFE, + 0xE4, 0xC7, 0xEE, 0x38, 0x14, 0x51, 0xF2, 0x32, + 0xC2, 0x9C, 0x7C, 0x32, 0x20, 0x85, 0x0C, 0x61, + 0xD1, 0xC3, 0xC0, 0x0D, 0xB1, 0xCD, 0x97, 0x26, + 0xA0, 0x2A, 0x56, 0x60, 0x9F, 0x3A, 0x65, 0xD3, + 0xD1, 0x64, 0x60, 0x45, 0x88, 0xCD, 0x9B, 0x43, + 0x14, 0x12, 0xF1, 0xAD, 0xD9, 0x14, 0xC5, 0xC2, + 0xDA, 0xBB, 0xC9, 0x04, 0x67, 0xC0, 0xC4, 0xEA, + 0x5F, 0x76, 0xE2, 0x4A, 0xA6, 0x18, 0x76, 0x5F, + 0x8B, 0x06, 0x36, 0xD7, 0xB0, 0x65, 0xE1, 0xF4, + 0xE6, 0xF6, 0x22, 0xEA, 0xE1, 0x71, 0x52, 0x45, + 0x8C, 0x76, 0x65, 0x86, 0x77, 0x2D, 0x36, 0x3F, + 0xA9, 0x92, 0x14, 0xF4, 0x72, 0xB0, 0xDB, 0x8A, + 0x1E, 0x49, 0xD8, 0x2D, 0x02, 0x78, 0xF2, 0x95, + 0x8B, 0x0A, 0xAA, 0x15, 0x86, 0xDB, 0x13, 0x4B, + 0xDF, 0xD2, 0x43, 0x87, 0x42, 0x49, 0x50, 0x07, + 0xE2, 0xFE, 0x5B, 0x60, 0xE2, 0x46, 0x39, 0x92, + 0x26, 0x94, 0x7A, 0x12, 0xEA, 0x17, 0x63, 0x1C, + 0xAA, 0x53, 0x46, 0x87, 0xCB, 0x75, 0xC0, 0x60, + 0xB4, 0x79, 0x7E, 0xAB, 0x82, 0x77, 0xCC, 0x4F, + 0x8A, 0x7A, 0x20, 0x38, 0x76, 0x06, 0xEF, 0xE2, + 0xDB, 0xD3, 0xE7, 0x36, 0x24, 0x92, 0x77, 0xD9, + 0x0F, 0xCA, 0xB9, 0x92, 0xA8, 0xC9, 0x9E, 0x85, + 0xAB, 0x03, 0xEB, 0x4C, 0xAC, 0x5D, 0x88, 0x55, + 0x39, 0x58, 0x52, 0x8A, 0xF9, 0x29, 0x74, 0x71, + 0x81, 0x35, 0xF1, 0xD0, 0xC7, 0x93, 0xEB, 0x00, + 0x0E, 0xA0, 0xAE, 0xC3, 0xEC, 0x18, 0x58, 0xFD, + 0xD1, 0x86, 0x88, 0xD1, 0xDA, 0x27, 0x27, 0x8D, + 0xEB, 0xF2, 0xCA, 0x81, 0x10, 0xBA, 0x4A, 0x20, + 0x4F, 0x79, 0x30, 0xE1, 0xC8, 0xCE, 0xEC, 0xAF, + 0xB7, 0x3F, 0x75, 0xDD, 0xB3, 0x4C, 0x5C, 0x55, + 0x96, 0x8A, 0x79, 0x33, 0x05, 0x84, 0x26, 0xB5, + 0x5D, 0x03, 0x9F, 0x72, 0x92, 0xAC, 0x43, 0xF6, + 0x45, 0x84, 0xF6, 0xDF, 0x18, 0x7A, 0x1D, 0x6B, + 0x00, 0x3F, 0x51, 0x4C, 0xC1, 0x3B, 0x26, 0xC2, + 0xF3, 0x48, 0x19, 0x5A, 0xA3, 0x21, 0xDE, 0x6A, + 0x27, 0xEC, 0x11, 0x34, 0x8D, 0xE5, 0x0D, 0x82, + 0x5A, 0x29, 0x64, 0xC6, 0x31, 0x99, 0x2E, 0x4B, + 0x0B, 0x42, 0x5B, 0x1B, 0xEB, 0x4F, 0x96, 0x00, + 0xE3, 0xAD, 0xC4, 0x43, 0x1C, 0xF2, 0xE8, 0x8B, + 0x42, 0x23, 0xD2, 0xDB, 0x66, 0x3C, 0x3C, 0xE7, + 0x0E, 0xF8, 0x5D, 0xDD, 0x56, 0xA9, 0xBA, 0xF1, + 0x38, 0xA9, 0xD7, 0xED, 0xD8, 0x94, 0x13, 0x1C, + 0x3A, 0x8F, 0x41, 0xA0, 0x4E, 0xF9, 0xF8, 0x67, + 0x52, 0xB7, 0x21, 0x81, 0xFA, 0xBB, 0x37, 0xC8, + 0x6B, 0x87, 0x7E, 0x61, 0xD6, 0x0E, 0xED, 0x95, + 0xEE, 0xFF, 0xAB, 0xE6, 0x37, 0x6E, 0x14, 0xAC, + 0xA8, 0x17, 0xC5, 0xF4, 0x19, 0x61, 0xAF, 0x8A, + 0x78, 0x49, 0xBA, 0xC0, 0x94, 0x91, 0x7B, 0x2D, + 0x13, 0x22, 0x76, 0xB6, 0xB3, 0x48, 0x6A, 0xFF, + 0x95, 0x0D, 0x23, 0xD4, 0xAA, 0xDC, 0x24, 0xCE, + 0x98, 0xA5, 0x26, 0x9E, 0x1C, 0x69, 0x91, 0x79, + 0x60, 0xA3, 0x1E, 0xE0, 0x9A, 0x52, 0x7C, 0x35, + 0x81, 0x75, 0xCA, 0xA0, 0xCB, 0x1B, 0x01, 0x8E, + 0x95, 0x26, 0xD9, 0x35, 0x34, 0xEA, 0xDB, 0xAC, + 0xB5, 0x2B, 0x27, 0x3D, 0x73, 0x5E, 0x22, 0xDD, + 0x0D, 0x5C, 0x28, 0xFA, 0x3E, 0x47, 0xCF, 0xE9, + 0x0B, 0x52, 0x15, 0xAE, 0x24, 0xF1, 0x46, 0xC3, + 0x46, 0x4B, 0xFE, 0xAF, 0x01, 0xD2, 0x8D, 0xAA, + 0x55, 0x3C, 0x1E, 0x94, 0x42, 0x8A, 0x10, 0x4A, + 0x9D, 0x78, 0xAE, 0xC7, 0x62, 0x59, 0x1E, 0x88, + 0x79, 0xF7, 0x68, 0x51, 0xCF, 0xB4, 0x64, 0x85, + 0x66, 0x72, 0x1B, 0x0C, 0xAC, 0x1F, 0x14, 0xFE, + 0x16, 0x14, 0x9A, 0x9D, 0x82, 0x10, 0xCC, 0x8F, + 0x2F, 0x50, 0xDE, 0xF7, 0xB4, 0x6C, 0x84, 0x3B, + 0xE9, 0x3B, 0xD8, 0xD5, 0x56, 0x02, 0x49, 0x33, + 0x50, 0xAB, 0x56, 0x0E, 0xA5, 0xBA, 0x17, 0x71, + 0x64, 0x23, 0xBE, 0x0E, 0xB8, 0x36, 0x0A, 0xB1, + 0x09, 0xD8, 0xFB, 0x18, 0xBF, 0xEA, 0x04, 0x08, + 0x47, 0xB7, 0x33, 0x51, 0x45, 0xD4, 0xF2, 0x00, + 0xD1, 0x9C, 0xF6, 0xFE, 0x7B, 0xAC, 0x91, 0x7F, + 0x42, 0x6C, 0x9B, 0x3D, 0x39, 0xA9, 0xCA, 0x43, + 0x29, 0x81, 0x8F, 0x24, 0x0E, 0x7D, 0xA3, 0x82, + 0x76, 0x10, 0x72, 0xF4, 0xA6, 0x50, 0x5E, 0xA8, + 0xE7, 0x6C, 0x1E, 0x44, 0x6F, 0xEB, 0x66, 0x25, + 0xE3, 0x8D, 0xDB, 0xCD, 0x3C, 0xDA, 0x81, 0xE8, + 0x3B, 0xF7, 0x68, 0xF3, 0xE0, 0x1D, 0x9D, 0x26, + 0x3B, 0x36, 0x73, 0x03, 0xAE, 0x15, 0x6C, 0x0B, + 0x71, 0x83, 0x36, 0x4A, 0x1E, 0x79, 0x41, 0xA0, + 0x92, 0x98, 0xA3, 0xAD, 0xF7, 0xBD, 0x23, 0x1E, + 0x61, 0x14, 0xB9, 0xDC, 0xE7, 0x95, 0x2B, 0x11, + 0x3F, 0x78, 0x16, 0x31, 0x38, 0xB9, 0x26, 0x6F, + 0x84, 0x3F, 0x1E, 0xD9, 0x7D, 0x9C, 0x2B, 0x16, + 0x3A, 0x6E, 0x8B, 0xD4, 0xC1, 0xAB, 0x4E, 0x17, + 0x93, 0x67, 0xC5, 0xAC, 0x96, 0xCE, 0xCF, 0x50, + 0x50, 0xFE, 0x82, 0x1F, 0xDF, 0xA4, 0x4E, 0x9E, + 0x68, 0x0B, 0x61, 0xC6, 0x01, 0x89, 0x32, 0xDF, + 0x71, 0x78, 0x11, 0x45, 0x9A, 0xF2, 0x54, 0x2E, + 0x2C, 0xDE, 0x77, 0x17, 0x8C, 0x2E, 0x98, 0x80, + 0xF0, 0x11, 0xE4, 0x05, 0xEA, 0xFA, 0x59, 0xC8, + 0xCB, 0xBE, 0xD7, 0x6E, 0x5A, 0x19, 0x41, 0x10, + 0x4B, 0x1B, 0x9D, 0x3A, 0x60, 0x49, 0x1C, 0x95, + 0x47, 0x55, 0xE0, 0x2E, 0x89, 0x41, 0x03, 0xF1, + 0xF4, 0x97, 0x74, 0x75, 0xE9, 0xEA, 0x36, 0x60, + 0x9F, 0xD6, 0x7C, 0x9D, 0xE3, 0x18, 0xED, 0xA2, + 0x37, 0x0D, 0xCC, 0xDB, 0xB9, 0xCE, 0xF7, 0xAE, + 0x63, 0x60, 0x90, 0x5E, 0xC2, 0x20, 0x83, 0x8C, + 0x97, 0x69, 0x82, 0x34, 0x41, 0xCD, 0xD0, 0xDA, + 0x8E, 0xF0, 0xAB, 0xE5, 0xF2, 0xD1, 0xD7, 0x6E, + 0x2F, 0xE0, 0x8F, 0xEF, 0x53, 0xDE, 0x1D, 0x61, + 0x66, 0xAB, 0x1A, 0x92, 0xB1, 0xAC, 0x09, 0x3E, + 0x5A, 0xBF, 0x76, 0x58, 0xC4, 0xB5, 0x72, 0x87, + 0xF2, 0xD1, 0xFD, 0x7B, 0x82, 0xDE, 0xDA, 0xF8, + 0xD5, 0xA4, 0xFB, 0xAC, 0x4B, 0x35, 0xD5, 0x82, + 0x31, 0x69, 0x4E, 0x16, 0x24, 0x97, 0x57, 0x8A, + 0xBD, 0x7A, 0xA7, 0xC8, 0xFE, 0x7B, 0x35, 0x41, + 0xA7, 0xF1, 0x8E, 0x54, 0xE8, 0xB7, 0xF0, 0x87, + 0x64, 0xC5, 0xE6, 0x84, 0x49, 0xDF, 0x65, 0x59, + 0x01, 0x54, 0x98, 0x32, 0xD6, 0x28, 0xFA, 0x63, + 0xD2, 0xB2, 0xC5, 0xA1, 0x50, 0x93, 0x39, 0x94, + 0xA9, 0x86, 0x33, 0x17, 0xAD, 0x40, 0xD7, 0x78, + 0xD9, 0xD2, 0xC0, 0x5C, 0x78, 0x98, 0x85, 0x0B, + 0x90, 0x17, 0x32, 0x23, 0xC7, 0xA0, 0xAF, 0x89, + 0x0F, 0xD7, 0xE6, 0x62, 0x21, 0xB6, 0xF0, 0x63, + 0x18, 0xB2, 0xED, 0x5E, 0x19, 0x9C, 0xB4, 0x24, + 0x88, 0x5A, 0xB8, 0x41, 0xE7, 0xA4, 0x72, 0x6F, + 0xAB, 0xA2, 0xF9, 0xBB, 0x53, 0xBC, 0x32, 0x36, + 0x43, 0x4C, 0x35, 0xFB, 0xBE, 0x4B, 0x1A, 0x0F, + 0x93, 0xF5, 0x0C, 0x37, 0x89, 0x6C, 0x29, 0xF8, + 0xE3, 0x02, 0xAD, 0x31, 0xED, 0x33, 0x31, 0xD6, + 0x20, 0xE3, 0xB6, 0x29, 0x45, 0x51, 0x01, 0xA1, + 0xF1, 0xCC, 0x7B, 0xA5, 0xE4, 0x6E, 0x68, 0xED, + 0x4A, 0x8C, 0xCC, 0x87, 0xB4, 0xDC, 0x75, 0xBC, + 0x01, 0x62, 0xB6, 0x33, 0x0F, 0x83, 0x3F, 0xBA, + 0x25, 0x75, 0xDF, 0xAF, 0x5B, 0x5F, 0x28, 0xBC, + 0x54, 0xFF, 0x2B, 0xA8, 0x1E, 0x7A, 0x47, 0x31, + 0x3C, 0x15, 0x48, 0x2B, 0x60, 0x5E, 0x66, 0xBB, + 0x38, 0xC6, 0x19, 0x8F, 0x13, 0x92, 0x10, 0x40, + 0x80, 0xFB, 0xE7, 0x8B, 0x86, 0xB1, 0xBC, 0x9A, + 0x6F, 0xB8, 0x81, 0xF5, 0xC7, 0x82, 0x01, 0x47, + 0xE6, 0xBA, 0x14, 0xB8, 0x1A, 0xCC, 0xF2, 0x0C, + 0xAE, 0x96, 0x64, 0x10, 0x94, 0xC2, 0x16, 0x90, + 0x2E, 0xA5, 0xC1, 0x25, 0xF6, 0xC9, 0x35, 0xA1, + 0x50, 0xD7, 0xC9, 0xAC, 0xC5, 0xD9, 0xE2, 0xE5, + 0xD9, 0x0E, 0x38, 0xC0, 0x50, 0x3A, 0xA9, 0x42, + 0x60, 0x17, 0xC7, 0x6A, 0xAF, 0xCD, 0x52, 0x61, + 0xB5, 0x06, 0x27, 0x4E, 0xC1, 0x3A, 0x96, 0x79, + 0xFB, 0x09, 0x79, 0x60, 0x27, 0xA4, 0xBB, 0x75, + 0x9D, 0x92, 0x82, 0x79, 0xB9, 0x4D, 0x84, 0x1A, + 0x09, 0x73, 0x93, 0xBF, 0x7E, 0x5B, 0xD6, 0x9A, + 0x49, 0x6C, 0xC3, 0xDE, 0xCD, 0x2B, 0x0F, 0x07, + 0xF8, 0x33, 0x92, 0xAA, 0xDE, 0x33, 0xDC, 0x51, + 0xB2, 0xA8, 0x4F, 0x6A, 0x07, 0x63, 0x5D, 0xC0, + 0xEF, 0x57, 0xA9, 0xAD, 0x59, 0x59, 0xB6, 0xA5, + 0x0B, 0x7B, 0xA5, 0x09, 0xAD, 0x5B, 0x11, 0xFA, + 0xD2, 0x6B, 0x41, 0x9F, 0x9F, 0x1E, 0x3F, 0x9C, + 0x73, 0x29, 0xB5, 0xA9, 0x53, 0xD7, 0xCC, 0x87, + 0xB2, 0xDE, 0x21, 0x06, 0x11, 0xCF, 0x52, 0xA6, + 0x39, 0xEF, 0x2B, 0x39, 0x08, 0x01, 0x2C, 0xB8, + 0x8E, 0x1D, 0x6F, 0x57, 0x62, 0x50, 0x79, 0xCB, + 0x10, 0x3D, 0x6C, 0x98, 0x10, 0x1A, 0x11, 0xBD, + 0x22, 0x33, 0xB6, 0x56, 0x02, 0xCA, 0x30, 0x49, + 0xBD, 0x32, 0x05, 0x20, 0x41, 0x9F, 0x76, 0xB0, + 0x61, 0xE3, 0x59, 0x8D, 0xE3, 0x81, 0x52, 0xC8, + 0x87, 0x67, 0xD1, 0xA2, 0x4F, 0xBD, 0x02, 0xBB, + 0x10, 0xC3, 0x8E, 0xAC, 0xAE, 0x31, 0x7D, 0xE6, + 0xBB, 0x28, 0x7B, 0x4D, 0x2C, 0xAE, 0x5D, 0xA0, + 0x21, 0x49, 0x65, 0xD8, 0x77, 0x37, 0x78, 0x62, + 0x6E, 0x9B, 0x97, 0x28, 0x59, 0xD8, 0x48, 0x2B, + 0x8D, 0x05, 0x47, 0xE4, 0xF5, 0x6D, 0xFF, 0x87, + 0x68, 0x1D, 0x5B, 0xC5, 0x12, 0x0F, 0x61, 0x3F, + 0xBB, 0xD9, 0x1E, 0x1F, 0x14, 0xE6, 0xDE, 0xFE, + 0x67, 0x2E, 0x2A, 0x7E, 0xAB, 0xCB, 0xBB, 0x9B, + 0x11, 0x08, 0x2C, 0x5E, 0x70, 0x0A, 0xA0, 0xB1, + 0xF7, 0xC1, 0x78, 0x5F, 0xCE, 0xD1, 0x9A, 0x93, + 0xAF, 0xE7, 0xC5, 0x9F, 0xA2, 0x51, 0x9B, 0xCD, + 0xEB, 0x49, 0x4C, 0x3D, 0x13, 0xB2, 0x12, 0x5F, + 0x38, 0x53, 0x23, 0xB8, 0x16, 0xC6, 0x8F, 0x8F, + 0x56, 0x28, 0xC7, 0xC2, 0xAB, 0xFD, 0x02, 0x78, + 0xA3, 0x37, 0x07, 0x3D, 0xA7, 0x4D, 0x16, 0x09, + 0x96, 0x98, 0xC4, 0xB1, 0x14, 0xE8, 0xA8, 0xCE, + 0x34, 0x4E, 0x0A, 0x15, 0xD0, 0xFC, 0x7E, 0xD4, + 0x97, 0xB0, 0x01, 0xD5, 0x3D, 0x4C, 0x96, 0xDC, + 0x39, 0x54, 0xD3, 0xB4, 0xB9, 0x56, 0xCB, 0x9D, + 0x2A, 0x27, 0x2C, 0x51, 0xF1, 0x55, 0x9B, 0x22, + 0x90, 0x4B, 0x40, 0xCC, 0x85, 0x31, 0xE4, 0x0C, + 0xC4, 0x12, 0xC6, 0x8C, 0xB6, 0xEE, 0xA4, 0xA4, + 0x09, 0x0B, 0x38, 0xE2, 0x79, 0x73, 0x29, 0x98, + 0x54, 0x67, 0xE8, 0x18, 0xA5, 0x24, 0xD3, 0x22, + 0x8E, 0xAC, 0xAE, 0x78, 0x25, 0xD3, 0xDA, 0xD2, + 0xEA, 0xA4, 0x22, 0xFD, 0xC7, 0x7A, 0xED, 0x71, + 0xA2, 0x05, 0xDA, 0x78, 0x38, 0xD9, 0x45, 0xE7, + 0xFE, 0xC3, 0x7E, 0x4D, 0xCA, 0x67, 0xE5, 0x04, + 0xCE, 0x35, 0xE5, 0xB0, 0x45, 0xF5, 0x6F, 0x1E, + 0x8D, 0x75, 0x29, 0xEB, 0xD6, 0xF1, 0xAF, 0x7B, + 0x6E, 0x93, 0x9E, 0x2B, 0x7A, 0xB4, 0x02, 0x7D, + 0x37, 0xA5, 0x13, 0x5D, 0x17, 0x2D, 0xA1, 0xAF, + 0x9C, 0xA2, 0xF7, 0x28, 0xA6, 0xF3, 0x7D, 0xE6, + 0x0D, 0xD2, 0x3D, 0x97, 0xD1, 0x1E, 0x75, 0xAB, + 0x1F, 0xD5, 0x1F, 0x8E, 0x9A, 0x13, 0x97, 0xE5, + 0x82, 0x21, 0x59, 0xDB, 0x58, 0x38, 0x02, 0xB3, + 0x2E, 0xEB, 0xB4, 0x56, 0x7E, 0xCE, 0x37, 0x46, + 0xD1, 0xAE, 0x33, 0x31, 0x47, 0x85, 0x64, 0x3D, + 0xD2, 0xA0, 0x74, 0x1E, 0x7F, 0x1B, 0xF2, 0xD2, + 0x61, 0xF2, 0x21, 0x24, 0xE8, 0xDD, 0xD0, 0x8C, + 0x64, 0x0A, 0x48, 0xB5, 0x47, 0x17, 0x51, 0x7C, + 0x21, 0xCD, 0x32, 0x53, 0x28, 0xBC, 0x23, 0x9C, + 0xA0, 0x28, 0xB2, 0x63, 0x0D, 0x06, 0x3C, 0x8C, + 0xC2, 0x0B, 0xE9, 0xBD, 0xB4, 0x85, 0x02, 0xDA, + 0xDD, 0xE7, 0x3F, 0xFE, 0xD5, 0x96, 0x38, 0x16, + 0x53, 0x3E, 0x02, 0x0A, 0xED, 0x12, 0x08, 0x53, + 0x62, 0x55, 0xB1, 0xCC, 0xE9, 0x85, 0x43, 0x31, + 0x27, 0xFF, 0x4F, 0x04, 0xD5, 0xB1, 0xE2, 0xF2, + 0x10, 0x87, 0x04, 0xB8, 0xB9, 0x66, 0x58, 0x8C, + 0x01, 0x56, 0xAF, 0xC2, 0xAE, 0x19, 0x29, 0x86, + 0xFB, 0xEC, 0x44, 0x3B, 0xAE, 0xF6, 0xCB, 0x85, + 0xA6, 0xF2, 0x9C, 0x77, 0x92, 0x40, 0x5A, 0x24, + 0x11, 0x47, 0x10, 0xAE, 0x1C, 0x74, 0x64, 0x44, + 0xFD, 0xF5, 0xFB, 0x65, 0x9E, 0x5E, 0x34, 0x68, + 0x26, 0x20, 0x7B, 0x8C, 0x54, 0x46, 0x3A, 0x06, + 0x17, 0xCE, 0x17, 0xFF, 0x33, 0xE4, 0x0F, 0x93, + 0x1F, 0xE5, 0x76, 0x71, 0x5C, 0x93, 0x2E, 0xF2, + 0x9F, 0xD7, 0x6B, 0x04, 0xA6, 0x9B, 0x58, 0xE0, + 0x30, 0x3D, 0x8E, 0xF2, 0x56, 0x78, 0xC8, 0xB7, + 0x0A, 0xF1, 0x2E, 0x90, 0x45, 0x59, 0x1C, 0x04, + 0xE8, 0xB7, 0x71, 0x06, 0x94, 0x04, 0x15, 0x17, + 0x7E, 0x86, 0x85, 0x93, 0xA0, 0x9C, 0x7E, 0x14, + 0x61, 0x9A, 0x4B, 0x33, 0x2F, 0x9A, 0xDC, 0x3A, + 0x65, 0x8B, 0x86, 0x01, 0x7F, 0x32, 0x65, 0x6C, + 0x54, 0x29, 0xC1, 0x15, 0xE1, 0x10, 0x03, 0x7A, + 0x8C, 0xC7, 0xE5, 0x44, 0x67, 0x7D, 0x2D, 0xD2, + 0x39, 0xA5, 0x9D, 0x54, 0xD0, 0xF3, 0xC7, 0x46, + 0x0E, 0xC1, 0x52, 0x08, 0x34, 0x6B, 0xA5, 0x6D, + 0xF5, 0x08, 0x6C, 0x5D, 0xBC, 0xC4, 0x1E, 0x0C, + 0x95, 0xFC, 0xB6, 0x86, 0x1C, 0x2C, 0x0C, 0x32, + 0xAA, 0xF3, 0x45, 0x4E, 0xFE, 0xE2, 0xFF, 0xBA, + 0x21, 0x4B, 0x43, 0x0E, 0xF2, 0x48, 0xA5, 0x9B, + 0x32, 0x44, 0x4D, 0x8D, 0x0D, 0x3D, 0xB8, 0x7C, + 0x9D, 0x4B, 0x15, 0x36, 0xD1, 0x57, 0x72, 0x8E, + 0xE7, 0x58, 0x5E, 0xF5, 0x32, 0x77, 0x6A, 0x00, + 0x3A, 0x02, 0x3C, 0x0A, 0xB0, 0xE9, 0xFF, 0x55, + 0x71, 0x08, 0xC3, 0x90, 0x68, 0x4D, 0x56, 0x5A, + 0x66, 0x50, 0x63, 0x26, 0x6A, 0xE6, 0x67, 0x0E, + 0xD5, 0x3B, 0x0F, 0xAF, 0x8F, 0xF6, 0x78, 0x29, + 0xBB, 0x73, 0x78, 0x25, 0xB1, 0x53, 0xA9, 0x33, + 0x8C, 0xBE, 0x3D, 0xF1, 0xA4, 0x62, 0x84, 0x9B, + 0x93, 0xA8, 0x1F, 0x84, 0xED, 0x07, 0xBE, 0x6D, + 0x62, 0x40, 0x00, 0x32, 0x74, 0x73, 0x7F, 0x61, + 0x8D, 0xCB, 0x26, 0xE4, 0x82, 0x52, 0xCE, 0x42, + 0x04, 0xDD, 0x31, 0x39, 0xFF, 0x68, 0x76, 0xF4, + 0x3B, 0x30, 0x5D, 0x83, 0x56, 0x20, 0xFE, 0xDF, + 0x79, 0xAA, 0x67, 0x43, 0x3D, 0xC2, 0x52, 0x87, + 0x32, 0x0E, 0x99, 0x17, 0x96, 0x7B, 0x70, 0xB2, + 0xD8, 0x66, 0xD1, 0x7B, 0x69, 0x8B, 0xFF, 0xF2, + 0xB3, 0xAB, 0x95, 0x14, 0x94, 0x9E, 0x58, 0xB5, + 0x7C, 0x68, 0xA4, 0x54, 0x12, 0xC1, 0xFC, 0x42, + 0x1C, 0x76, 0x8B, 0xF5, 0xEE, 0x8A, 0x10, 0xC8, + 0xAE, 0xF5, 0x69, 0x26, 0xF5, 0x1E, 0xC6, 0x2C, + 0x11, 0x56, 0x9F, 0x31, 0xAA, 0x51, 0x78, 0x68, + 0xE5, 0xCA, 0xD8, 0x9E, 0x95, 0x80, 0x66, 0xEB, + 0x9E, 0xDD, 0x72, 0x71, 0xB3, 0x1C, 0xB4, 0xB1, + 0xD6, 0xCE, 0x21, 0x12, 0x25, 0xAE, 0xB5, 0xB5, + 0x7F, 0x74, 0x97, 0x19, 0xDA, 0x07, 0xEC, 0xBE, + 0xFE, 0x03, 0x88, 0x1D, 0xDE, 0x3D, 0x81, 0xE4, + 0x13, 0x5F, 0x2D, 0xC8, 0x1A, 0xF7, 0x79, 0x77, + 0x6C, 0x1B, 0x80, 0x57, 0x16, 0x2A, 0x6C, 0x98, + 0x2F, 0xBB, 0x4D, 0xA6, 0xA9, 0xAD, 0x28, 0x4A, + 0xB1, 0x0C, 0x70, 0x02, 0x20, 0x44, 0xF4, 0x6D, + 0x40, 0x0B, 0xF6, 0xAD, 0x71, 0x82, 0xD1, 0x97, + 0x78, 0x99, 0x83, 0xBE, 0x99, 0x22, 0x79, 0x79, + 0xA1, 0x33, 0x4B, 0xA1, 0x49, 0xD8, 0x69, 0xBA, + 0x1C, 0x40, 0x88, 0x12, 0x34, 0x35, 0xBF, 0x97, + 0x85, 0x41, 0x35, 0x6D, 0xAF, 0x17, 0x1F, 0x33, + 0xAD, 0xB1, 0xC9, 0x79, 0x07, 0xA0, 0xFB, 0x58, + 0x45, 0x07, 0x4A, 0x85, 0xD2, 0x6F, 0x54, 0x61, + 0x35, 0xAE, 0xD0, 0xF9, 0x1B, 0xE4, 0x53, 0x9C, + 0x12, 0xBF, 0x94, 0x11, 0xE4, 0xB5, 0x56, 0xF6, + 0x87, 0xD0, 0x69, 0xDB, 0x6B, 0x21, 0xFE, 0x2B, + 0x7F, 0x32, 0x18, 0x87, 0x44, 0x8C, 0xEA, 0x55, + 0xDB, 0x19, 0xFB, 0xB8, 0xB0, 0x48, 0x2A, 0x55, + 0xAE, 0xC1, 0x67, 0x38, 0xD7, 0x4C, 0xD2, 0x65, + 0x09, 0x38, 0x36, 0xBE, 0x99, 0xD4, 0xFB, 0x53, + 0xE9, 0xB0, 0x14, 0xB0, 0x37, 0xCD, 0xBF, 0xE9 +#endif + }; +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT +static const unsigned char dilithium_public_der[] = { +#ifndef WOLFSSL_NO_ML_DSA_44 + 0x30, 0x82, 0x05, 0x34, 0x30, 0x0d, 0x06, 0x0b, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, + 0x0c, 0x04, 0x04, 0x03, 0x82, 0x05, 0x21, 0x00, + 0x0a, 0xf7, 0xc8, 0xa4, 0x96, 0x01, 0xa7, 0xb2, + 0x2e, 0x4d, 0xc9, 0xd9, 0x1c, 0xa1, 0x86, 0x09, + 0xce, 0x14, 0x6f, 0xe8, 0x33, 0x3c, 0x7b, 0xdb, + 0x19, 0x9c, 0x56, 0x39, 0x6a, 0x6c, 0x5d, 0x1f, + 0xe4, 0x26, 0xcb, 0x16, 0x91, 0x4d, 0xeb, 0x5a, + 0x36, 0x22, 0xee, 0xda, 0xdf, 0x46, 0x3e, 0xa1, + 0x4f, 0x9a, 0x30, 0xb5, 0x3f, 0x60, 0xf7, 0x75, + 0x47, 0xdc, 0x55, 0xf1, 0xbe, 0xbc, 0x87, 0x6c, + 0x50, 0x7c, 0x21, 0x55, 0x35, 0xad, 0xa7, 0xf9, + 0x1c, 0xf8, 0xa1, 0x92, 0x79, 0x10, 0x52, 0x7a, + 0xc3, 0xba, 0xd3, 0x9d, 0xc6, 0x9b, 0xf4, 0xcb, + 0x1b, 0xa2, 0xde, 0x83, 0x86, 0xa6, 0x35, 0xea, + 0xf2, 0x8c, 0xdc, 0xba, 0x3e, 0xef, 0x9c, 0xf5, + 0x8e, 0xc3, 0xb0, 0xc0, 0x5b, 0xcc, 0x35, 0x6a, + 0x81, 0xe5, 0x17, 0xb3, 0x9a, 0x57, 0xa6, 0x4a, + 0x87, 0xb1, 0xa7, 0xf5, 0xa2, 0x96, 0x40, 0x8b, + 0xc1, 0x62, 0xb2, 0xd9, 0x76, 0xe8, 0x51, 0x33, + 0x44, 0x3d, 0xeb, 0x14, 0x86, 0x88, 0x2c, 0xc1, + 0x47, 0xba, 0x2b, 0x85, 0x3b, 0x72, 0xcb, 0x9f, + 0x40, 0xba, 0x19, 0x58, 0xa4, 0x34, 0x0a, 0xd2, + 0x8c, 0x97, 0xbd, 0x3d, 0x09, 0xb0, 0x4a, 0xeb, + 0xaa, 0xee, 0x58, 0x1e, 0xc1, 0x19, 0x26, 0x70, + 0x15, 0xa5, 0x17, 0x7e, 0xd0, 0xa1, 0x08, 0xf9, + 0x6d, 0xcf, 0x20, 0x62, 0x95, 0x8e, 0x61, 0xf4, + 0x29, 0x96, 0x6f, 0x38, 0x1c, 0x67, 0xd5, 0xa6, + 0x4c, 0xf5, 0x1f, 0xda, 0x12, 0x22, 0x24, 0x6b, + 0x0d, 0xb7, 0x6a, 0xe5, 0xaf, 0x6c, 0x89, 0x52, + 0xc2, 0x85, 0x85, 0x5f, 0x16, 0x33, 0x0c, 0xc6, + 0x7a, 0xe0, 0xa8, 0xed, 0x13, 0x58, 0xf3, 0xa0, + 0x80, 0x42, 0x3c, 0xe3, 0x57, 0xd1, 0xe2, 0x66, + 0xc4, 0xe0, 0x3d, 0x49, 0x32, 0x21, 0xd9, 0xa1, + 0x3c, 0x93, 0x0a, 0xf7, 0x5f, 0x34, 0x65, 0xa4, + 0x30, 0xf9, 0xe7, 0x8a, 0x96, 0x04, 0xdb, 0xc5, + 0x16, 0x15, 0x10, 0x74, 0x4f, 0xc9, 0x6b, 0x4b, + 0x66, 0x29, 0xb0, 0xd1, 0x3b, 0xdd, 0x41, 0x0a, + 0xfe, 0xdf, 0x5f, 0x72, 0x91, 0xbc, 0x99, 0x2f, + 0x8d, 0x72, 0x3a, 0x4a, 0xde, 0x11, 0x3a, 0x20, + 0xb2, 0x56, 0xb5, 0x73, 0x89, 0xb4, 0x63, 0x37, + 0x86, 0xbd, 0x99, 0x8b, 0x03, 0x56, 0x50, 0x21, + 0x11, 0x78, 0x8c, 0xd5, 0xc1, 0x92, 0x33, 0x72, + 0x6e, 0x8d, 0x88, 0x2d, 0x10, 0x8f, 0x31, 0xd3, + 0x23, 0xe5, 0xaa, 0x1f, 0xe1, 0x37, 0xec, 0x34, + 0x42, 0x30, 0x75, 0xff, 0xb2, 0x1a, 0x8e, 0x29, + 0x03, 0x4c, 0xfd, 0xdf, 0x53, 0xf2, 0x0b, 0x2d, + 0xf9, 0x1c, 0x9e, 0xb6, 0x5a, 0x6c, 0x5e, 0x88, + 0x48, 0x29, 0x89, 0x42, 0xfc, 0x97, 0xfb, 0x27, + 0x1c, 0x99, 0x2a, 0xbf, 0x7f, 0x04, 0xb2, 0xcd, + 0xc9, 0x3a, 0x39, 0xfe, 0x4f, 0x47, 0x92, 0x0b, + 0x85, 0xfc, 0x92, 0x57, 0xc5, 0x0b, 0x23, 0x1f, + 0x0b, 0x72, 0xb4, 0xde, 0xfe, 0xbe, 0xb7, 0x39, + 0xb3, 0xd7, 0x48, 0x03, 0xed, 0x76, 0xac, 0x63, + 0xf7, 0x2a, 0x58, 0xef, 0xdb, 0x63, 0x5a, 0x56, + 0x68, 0xcc, 0xb2, 0x8b, 0x22, 0xac, 0xdf, 0xc4, + 0xad, 0x6f, 0xad, 0x24, 0xfd, 0x30, 0xfb, 0xed, + 0x6e, 0xde, 0x65, 0x2b, 0xb4, 0x57, 0x35, 0x49, + 0xc1, 0xc9, 0x82, 0xf4, 0x72, 0x69, 0xef, 0x34, + 0xc0, 0x37, 0x8b, 0x8b, 0xd3, 0xd3, 0x25, 0xcc, + 0xe5, 0xf5, 0xf6, 0x9c, 0xa3, 0xe7, 0x88, 0xd7, + 0x55, 0x73, 0x31, 0x4c, 0xb1, 0x7b, 0x64, 0xb3, + 0x38, 0xde, 0x47, 0x9a, 0xfc, 0xf1, 0xfa, 0xf8, + 0x6e, 0xc5, 0x95, 0xb9, 0xaf, 0x6a, 0x7a, 0x94, + 0x80, 0x0d, 0x29, 0x62, 0x99, 0x0a, 0x34, 0xa2, + 0x8f, 0xa1, 0x5e, 0x98, 0x7c, 0x4e, 0x18, 0xcd, + 0x63, 0x68, 0x0e, 0xfa, 0x6f, 0x49, 0x01, 0x02, + 0xcd, 0xf1, 0xc1, 0x09, 0x57, 0xa3, 0x03, 0xec, + 0x94, 0x36, 0xab, 0xc6, 0x1c, 0xc0, 0x98, 0x22, + 0x15, 0x5b, 0x5b, 0x61, 0x3c, 0xc2, 0x5b, 0x6f, + 0x1c, 0x82, 0x41, 0x39, 0x87, 0xde, 0x92, 0xa9, + 0xe4, 0x12, 0x74, 0x3b, 0x31, 0x36, 0xac, 0x92, + 0xb0, 0x23, 0x26, 0xfa, 0xd8, 0xa3, 0xe8, 0x84, + 0xfc, 0x52, 0xc5, 0x7b, 0xd1, 0x4b, 0xe2, 0x1a, + 0x33, 0xdd, 0x3c, 0xdf, 0x27, 0x50, 0x6f, 0x12, + 0xd3, 0x17, 0x66, 0xd7, 0x54, 0x33, 0x30, 0x2b, + 0xe8, 0xd1, 0x1f, 0x2d, 0xf3, 0x37, 0x81, 0xa0, + 0x3c, 0x21, 0x8c, 0xea, 0x95, 0xa5, 0x5b, 0x3a, + 0x24, 0xed, 0xf7, 0x67, 0x7b, 0x72, 0x3a, 0xda, + 0x31, 0xbd, 0xa7, 0x63, 0xa6, 0x6f, 0xf9, 0xdf, + 0x06, 0x36, 0xb4, 0xe2, 0x35, 0x4b, 0xa5, 0x8e, + 0x29, 0x8e, 0x6c, 0x02, 0xc5, 0x06, 0x9b, 0x98, + 0x6e, 0x5e, 0x00, 0x6a, 0x42, 0x09, 0x4b, 0xc3, + 0x09, 0x37, 0x67, 0x19, 0x58, 0x6d, 0x40, 0x50, + 0xb0, 0x62, 0x5b, 0xd6, 0x63, 0x7f, 0xed, 0xb0, + 0x97, 0x80, 0x9e, 0x91, 0x3f, 0x82, 0xfd, 0x83, + 0x36, 0xce, 0x06, 0xc4, 0xdc, 0xa4, 0x1e, 0x70, + 0xd4, 0x94, 0xfc, 0x6e, 0x46, 0xa3, 0xc8, 0xed, + 0x34, 0x0a, 0xb1, 0x9a, 0x66, 0x5d, 0xc0, 0xce, + 0x73, 0xd3, 0x65, 0xcb, 0xfb, 0x79, 0xdd, 0xf6, + 0x19, 0xf6, 0xd8, 0xa9, 0xe6, 0x34, 0x15, 0x86, + 0x7a, 0x30, 0x79, 0xde, 0x2b, 0x06, 0xa4, 0xc0, + 0xc8, 0xa2, 0xc1, 0x41, 0xb3, 0x4c, 0xf6, 0xdb, + 0x16, 0xcd, 0xd2, 0x8b, 0xf1, 0x18, 0x5a, 0xc8, + 0x3e, 0xd9, 0x54, 0x40, 0xd4, 0xce, 0x88, 0xbb, + 0x66, 0xf1, 0x74, 0x20, 0xa2, 0x3c, 0x31, 0x09, + 0xba, 0xac, 0x61, 0x15, 0x9f, 0x73, 0x5f, 0xa7, + 0xe5, 0x0d, 0xb3, 0xab, 0xa2, 0x72, 0x25, 0xc9, + 0x87, 0x9b, 0x18, 0xdb, 0xff, 0xfb, 0x39, 0x84, + 0x8d, 0xf8, 0x97, 0x47, 0xab, 0xc4, 0xfb, 0xc2, + 0xd8, 0xe8, 0xce, 0x6e, 0x65, 0x76, 0x88, 0x4a, + 0x22, 0x2f, 0xdd, 0x43, 0xa7, 0xc4, 0x8d, 0x32, + 0x12, 0x75, 0x0b, 0x72, 0xd6, 0xb7, 0x43, 0x84, + 0xc8, 0x59, 0xa8, 0xb7, 0x8b, 0x84, 0x33, 0x92, + 0x8f, 0x94, 0xe8, 0xd0, 0xaf, 0x11, 0x35, 0xde, + 0xb7, 0x63, 0xb8, 0x91, 0x4c, 0x96, 0x4e, 0x9c, + 0x62, 0x28, 0xa2, 0xbc, 0x0b, 0x90, 0xae, 0x94, + 0x90, 0xe9, 0x32, 0xeb, 0xe3, 0x77, 0x60, 0x5f, + 0x87, 0x48, 0x4b, 0xb0, 0x78, 0x0e, 0xe2, 0x85, + 0x47, 0x06, 0xa4, 0xc9, 0x26, 0xac, 0x8f, 0xe7, + 0xc2, 0xc7, 0xce, 0xf5, 0xd1, 0x20, 0xa8, 0x56, + 0xe1, 0x4f, 0x50, 0x90, 0xb3, 0xc1, 0x03, 0x57, + 0xd3, 0x62, 0x0e, 0x2a, 0xe8, 0x86, 0xf4, 0x94, + 0x0e, 0xa5, 0x8b, 0x4e, 0x73, 0xa2, 0x76, 0xac, + 0x00, 0x29, 0xe5, 0x80, 0x26, 0x02, 0x13, 0xd1, + 0xb2, 0x68, 0x72, 0x23, 0x38, 0x55, 0xfc, 0x4d, + 0x05, 0x60, 0x49, 0x7b, 0xfb, 0xaa, 0x17, 0x8f, + 0x26, 0x0a, 0x08, 0x33, 0x8d, 0x7f, 0x4e, 0xe5, + 0x6e, 0xf8, 0x84, 0x9b, 0x9f, 0xcb, 0xa2, 0x2b, + 0xfb, 0xaf, 0xad, 0x21, 0xe2, 0x4f, 0x6f, 0x55, + 0xc1, 0x78, 0x46, 0xe3, 0xb5, 0x63, 0x06, 0x9b, + 0x93, 0x7d, 0xac, 0xd4, 0xe0, 0x64, 0x01, 0x8d, + 0xac, 0x30, 0x8b, 0x8b, 0x55, 0xb7, 0x8a, 0x16, + 0x3f, 0xc9, 0x82, 0x7f, 0xb5, 0x3b, 0x0d, 0xc0, + 0x46, 0x89, 0x5c, 0x6c, 0x45, 0x21, 0x78, 0xda, + 0x84, 0x1f, 0xc8, 0xcf, 0xf1, 0x1e, 0x79, 0x71, + 0x3b, 0xc8, 0xe2, 0x8b, 0x41, 0xfe, 0xaf, 0x2f, + 0x3b, 0x23, 0x13, 0xc5, 0x46, 0x87, 0xc6, 0x24, + 0x37, 0x21, 0x68, 0x8a, 0x3e, 0x45, 0x61, 0xf4, + 0xad, 0xf5, 0x1c, 0x23, 0x45, 0xa3, 0x42, 0xf2, + 0xa9, 0xac, 0x94, 0x50, 0xc9, 0x3d, 0x5e, 0x70, + 0x33, 0x2b, 0x78, 0xd1, 0x5c, 0x13, 0x35, 0xe6, + 0x13, 0x80, 0x5e, 0x55, 0xa7, 0xcc, 0x67, 0xb0, + 0x6c, 0xfe, 0xa2, 0x24, 0x02, 0x6d, 0xb3, 0xcb, + 0x9e, 0x94, 0xb3, 0xc6, 0x01, 0xf3, 0x01, 0x3a, + 0xe4, 0xa7, 0xa3, 0xdf, 0x56, 0x4c, 0x30, 0xce, + 0xb1, 0xd5, 0x1b, 0x68, 0x9b, 0x75, 0xae, 0xf4, + 0xb9, 0x2a, 0xe5, 0x8b, 0x7b, 0xe5, 0x99, 0x46, + 0x5f, 0x29, 0xf6, 0x82, 0xd0, 0x42, 0xb1, 0x45, + 0x09, 0x16, 0x5b, 0x32, 0x11, 0xca, 0x48, 0xea, + 0x51, 0x12, 0x0a, 0x9f, 0x6e, 0x3f, 0x74, 0xe6, + 0xe0, 0xfe, 0xf8, 0xa5, 0xc0, 0xfd, 0x15, 0x6e, + 0x2b, 0x4a, 0xd5, 0x76, 0xa8, 0x3d, 0xe3, 0x0d, + 0xfe, 0x44, 0x11, 0x5e, 0x7a, 0xde, 0x12, 0x29, + 0x5a, 0x5a, 0x25, 0xc0, 0x8e, 0x98, 0xd1, 0x11, + 0xc8, 0x00, 0x65, 0xb2, 0xf4, 0xd7, 0x56, 0x32, + 0x46, 0x2b, 0x4f, 0x7e, 0xc3, 0x4e, 0xf1, 0x17, + 0xff, 0x03, 0x32, 0xae, 0xe3, 0xbe, 0x0b, 0xab, + 0xfb, 0x43, 0x0f, 0x6d, 0xa5, 0xc6, 0x44, 0xba, + 0xc9, 0xe3, 0x3d, 0x40, 0xe7, 0x6c, 0xe8, 0x21, + 0xb2, 0x46, 0x7b, 0x3b, 0x3d, 0xde, 0x80, 0xc8, + 0xea, 0xf4, 0x6b, 0xf3, 0x53, 0xca, 0x51, 0x84, + 0xcf, 0xad, 0x7e, 0xce, 0xce, 0xc2, 0x65, 0xfc, + 0x03, 0x8c, 0xcb, 0xfa, 0xcb, 0x37, 0x89, 0x82, + 0x59, 0x5e, 0x36, 0x52, 0xe4, 0xbc, 0x8d, 0x47, + 0x7c, 0xb8, 0x3f, 0x63, 0x59, 0xdc, 0xd3, 0x74, + 0x11, 0x33, 0xb4, 0x69, 0x74, 0x40, 0x0d, 0x42, + 0x63, 0x1d, 0xe6, 0x5c, 0x1b, 0xca, 0x41, 0xff, + 0x23, 0x4e, 0xe8, 0x3d, 0x14, 0xa8, 0x17, 0x18, + 0xd0, 0x78, 0x08, 0x87, 0x7d, 0x5e, 0xdc, 0x3a, + 0x07, 0xba, 0x12, 0x8e, 0x8e, 0x56, 0x0a, 0xcb, + 0x37, 0xf6, 0x54, 0xeb, 0x55, 0x16, 0x8f, 0x06, + 0x15, 0x28, 0x6b, 0xfb, 0xed, 0x38, 0x9e, 0x9b, + 0x98, 0x5b, 0xdc, 0x67, 0x33, 0x0e, 0x02, 0x36, + 0x1b, 0x7a, 0x9a, 0x43, 0xcd, 0xf2, 0x65, 0xef, + 0x37, 0x19, 0x24, 0x6f, 0x4b, 0xb9, 0x4d, 0x3e, + 0x0b, 0x47, 0xd1, 0x67, 0x50, 0x6a, 0x7f, 0x07 +#elif !defined(WOLFSSL_NO_ML_DSA_65) + 0x30, 0x82, 0x07, 0xb4, 0x30, 0x0d, 0x06, 0x0b, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, + 0x0c, 0x06, 0x05, 0x03, 0x82, 0x07, 0xa1, 0x00, + 0xff, 0x89, 0xee, 0xad, 0x20, 0x8f, 0x61, 0xa4, + 0x07, 0x1c, 0x54, 0x98, 0x8c, 0xf4, 0x2e, 0xd9, + 0xe6, 0x0f, 0xcb, 0x0e, 0xab, 0xa1, 0x37, 0x4d, + 0xc0, 0x48, 0x24, 0x78, 0xd6, 0x2d, 0x9b, 0x6f, + 0x0f, 0x17, 0x08, 0x71, 0xc3, 0xd1, 0xc8, 0x7a, + 0xe7, 0x32, 0xcb, 0xcd, 0xd6, 0xb5, 0x90, 0x08, + 0xe1, 0xda, 0xaa, 0x89, 0x3e, 0x4a, 0x62, 0x98, + 0x3d, 0xc6, 0x71, 0x30, 0xb4, 0x63, 0xa5, 0x3b, + 0xb3, 0x69, 0x75, 0x10, 0xaf, 0x5e, 0x72, 0x78, + 0xa2, 0xef, 0x63, 0x63, 0x21, 0xe7, 0xf4, 0xa7, + 0x9c, 0x50, 0x74, 0x14, 0x3e, 0xdd, 0x73, 0x9e, + 0x97, 0x65, 0xdd, 0xdf, 0x3c, 0x40, 0x4d, 0x03, + 0x49, 0xe4, 0xbf, 0x65, 0xe7, 0x44, 0x8f, 0x59, + 0x00, 0xe2, 0x98, 0xb5, 0x66, 0xa3, 0x3b, 0x11, + 0x9f, 0xc7, 0xc2, 0x16, 0x61, 0xf0, 0x1e, 0x89, + 0xc8, 0x96, 0x8d, 0x18, 0xac, 0x86, 0xa0, 0xe2, + 0xd9, 0x8c, 0xef, 0x53, 0x6d, 0x4e, 0x74, 0xc9, + 0x66, 0x28, 0x16, 0xf3, 0x62, 0xc4, 0x6f, 0x2b, + 0x6e, 0x36, 0x03, 0xad, 0xc5, 0xe4, 0x8f, 0x0b, + 0x90, 0x8c, 0x8f, 0xff, 0x5d, 0xdf, 0x7a, 0xe6, + 0xaf, 0x9a, 0x43, 0xbc, 0xd4, 0x73, 0x22, 0xdc, + 0x5f, 0x08, 0xa1, 0x17, 0x97, 0x89, 0x79, 0xf5, + 0xdc, 0xed, 0x4f, 0x85, 0x8e, 0x0c, 0x23, 0x35, + 0x3c, 0x34, 0x19, 0x65, 0xf5, 0xd6, 0xc9, 0x2d, + 0x7a, 0x2e, 0x67, 0xd5, 0xf1, 0x82, 0x97, 0xaa, + 0x05, 0x26, 0x84, 0x25, 0x47, 0x58, 0x2c, 0xe6, + 0x59, 0xc7, 0x98, 0x7a, 0xdb, 0x40, 0x45, 0x1c, + 0x71, 0x55, 0x2e, 0xea, 0x3f, 0x6e, 0x7c, 0x82, + 0x52, 0x6a, 0x19, 0x3a, 0xd3, 0xa1, 0x3c, 0xce, + 0x00, 0x06, 0xec, 0xed, 0x97, 0xce, 0xd8, 0xdf, + 0xde, 0xa3, 0xed, 0xe7, 0x81, 0x62, 0x02, 0x9c, + 0x1b, 0x51, 0xa1, 0xf4, 0x9d, 0x1b, 0x28, 0x76, + 0x93, 0x96, 0x20, 0x55, 0x60, 0x1f, 0xaf, 0x52, + 0xc3, 0xce, 0xb9, 0x12, 0x66, 0xf5, 0x64, 0x22, + 0x87, 0x86, 0x29, 0x80, 0x8f, 0x18, 0x33, 0xba, + 0x48, 0x71, 0x1d, 0x00, 0xfe, 0xa5, 0xfc, 0xc6, + 0x87, 0xbe, 0x44, 0x3c, 0xc9, 0x49, 0xfb, 0x68, + 0x3c, 0xdf, 0xca, 0xef, 0xa7, 0xdc, 0x67, 0xb8, + 0x28, 0xd6, 0xad, 0x18, 0xaf, 0xad, 0x1f, 0x4c, + 0x85, 0xa3, 0x64, 0xac, 0x3f, 0xa9, 0x39, 0x28, + 0xef, 0x8a, 0x45, 0x7e, 0xb0, 0xf4, 0x89, 0x72, + 0xf7, 0xb1, 0xef, 0x9d, 0x1c, 0x3c, 0x93, 0xcb, + 0xa0, 0xfb, 0x2a, 0x90, 0xe2, 0x1d, 0x49, 0x8e, + 0x36, 0xb8, 0x07, 0xf4, 0xb3, 0x09, 0xf0, 0x6f, + 0x3c, 0xd9, 0x37, 0x19, 0x57, 0xd4, 0x1e, 0x2a, + 0xa2, 0xa7, 0x2e, 0xc1, 0xcd, 0x8d, 0x48, 0x47, + 0xb5, 0x8a, 0x12, 0x93, 0x34, 0xb8, 0xec, 0x32, + 0x07, 0x49, 0xb6, 0x8d, 0x73, 0xd4, 0x2c, 0x6a, + 0xa0, 0x33, 0x29, 0x21, 0x5d, 0x37, 0xa9, 0x39, + 0x40, 0xbe, 0x71, 0x29, 0xbe, 0xd1, 0x4b, 0xbc, + 0x9a, 0x17, 0x93, 0x52, 0xb8, 0x81, 0xee, 0xc5, + 0xff, 0x25, 0x78, 0x2f, 0x52, 0x0a, 0x8f, 0xb2, + 0xef, 0xf3, 0x1d, 0x68, 0x56, 0x31, 0x29, 0x84, + 0x55, 0x47, 0x32, 0x34, 0x0f, 0x60, 0x07, 0xd6, + 0x2b, 0xb9, 0x29, 0xaf, 0x0f, 0xcd, 0x1c, 0xc0, + 0x77, 0x4c, 0xc6, 0x31, 0xdb, 0xf4, 0x17, 0xbe, + 0x3d, 0xf8, 0x8c, 0xf1, 0x02, 0x7c, 0x6b, 0xd4, + 0xaf, 0x03, 0xb2, 0xf4, 0x78, 0x8d, 0xd3, 0x4e, + 0x5c, 0x04, 0xb9, 0x01, 0xe3, 0x73, 0xb4, 0x67, + 0xe9, 0xa8, 0x77, 0x6f, 0x87, 0x2b, 0xe2, 0x00, + 0x98, 0x5f, 0x02, 0x43, 0x85, 0x03, 0x4c, 0x71, + 0xd2, 0xe7, 0x61, 0x03, 0x22, 0x9e, 0xe5, 0xc2, + 0xa7, 0x66, 0x42, 0x7c, 0x9f, 0xf4, 0xb8, 0x6b, + 0x2d, 0xe4, 0xaa, 0x51, 0xda, 0x08, 0x73, 0x75, + 0x26, 0x45, 0xdc, 0xa6, 0x20, 0xd7, 0xcb, 0x00, + 0xfc, 0xe4, 0xdb, 0x28, 0x92, 0xf8, 0xb0, 0xc7, + 0xf0, 0x4b, 0x6d, 0xe8, 0xc1, 0x84, 0x38, 0xed, + 0x1a, 0xd4, 0x66, 0x69, 0xc4, 0x96, 0x40, 0xc4, + 0x7d, 0xfa, 0x58, 0x70, 0x7e, 0x70, 0x40, 0xba, + 0xfc, 0x95, 0xb6, 0x4c, 0x7c, 0x58, 0xbc, 0xb3, + 0x59, 0x08, 0x14, 0x03, 0x35, 0xf3, 0xf1, 0xaa, + 0xd5, 0xa2, 0x57, 0x70, 0xb6, 0x20, 0x75, 0x0a, + 0x58, 0x66, 0x74, 0xf7, 0x1c, 0xfd, 0x99, 0x7c, + 0x20, 0xda, 0xe7, 0x76, 0xcb, 0xf4, 0xa3, 0x9b, + 0xbc, 0x8f, 0x74, 0xef, 0xe2, 0x46, 0x5a, 0x72, + 0x33, 0x06, 0x32, 0x1e, 0xbd, 0x4e, 0x4c, 0xf6, + 0x16, 0x43, 0xa5, 0xa5, 0xa5, 0x6c, 0x76, 0x33, + 0x35, 0x63, 0xdc, 0xe4, 0xec, 0x7f, 0x8a, 0xfa, + 0xc3, 0x53, 0x69, 0x28, 0xf7, 0xd6, 0x97, 0xb9, + 0x3a, 0xf4, 0x15, 0x90, 0x50, 0xd3, 0xdf, 0xf5, + 0xd3, 0xcf, 0x15, 0x76, 0xe3, 0x3d, 0x24, 0x14, + 0xfd, 0xd3, 0x01, 0x25, 0x82, 0xb4, 0xe3, 0xd8, + 0x68, 0x89, 0x86, 0xa8, 0x26, 0x02, 0x5f, 0xc6, + 0xf4, 0x99, 0x3b, 0x97, 0xa8, 0x65, 0xed, 0x18, + 0xbb, 0x3c, 0x43, 0x4a, 0x6e, 0xaa, 0xbc, 0x83, + 0x85, 0x19, 0x9f, 0x9b, 0xb8, 0xa4, 0xa3, 0xb2, + 0xb7, 0x56, 0x07, 0x6c, 0xbf, 0x7d, 0xff, 0x5d, + 0xb5, 0x1e, 0x83, 0xc8, 0x74, 0x70, 0x98, 0x17, + 0x40, 0xe0, 0x2d, 0xad, 0x31, 0x00, 0x8e, 0x42, + 0xd5, 0xb2, 0x25, 0xaa, 0x82, 0xaf, 0x33, 0xd8, + 0x5b, 0xe2, 0x07, 0xed, 0xda, 0x84, 0xe9, 0xa2, + 0xff, 0xbb, 0xa5, 0x47, 0x95, 0x6e, 0xa1, 0x8d, + 0x59, 0x52, 0xeb, 0xf3, 0x3c, 0x18, 0x29, 0x92, + 0x72, 0x27, 0x18, 0xfc, 0x95, 0xb9, 0xde, 0x46, + 0xda, 0xcc, 0x4c, 0x31, 0x1d, 0x78, 0x86, 0xd2, + 0x8c, 0x38, 0x9c, 0x32, 0xab, 0xf7, 0xca, 0x73, + 0x85, 0xa5, 0xf1, 0xe0, 0x25, 0x06, 0xf9, 0x18, + 0x14, 0xab, 0x3b, 0x73, 0x26, 0xee, 0xa0, 0xfd, + 0x15, 0xac, 0xd6, 0x4e, 0x6b, 0xdb, 0x01, 0xa1, + 0xdc, 0xd1, 0x2f, 0xd2, 0xb7, 0x5e, 0x12, 0x4f, + 0x4b, 0x59, 0xd8, 0x03, 0x12, 0x60, 0xc9, 0x81, + 0xb7, 0x06, 0x23, 0x09, 0xc4, 0xd9, 0xa8, 0x93, + 0x6e, 0x96, 0xf4, 0x93, 0x53, 0xf0, 0x3d, 0xde, + 0x10, 0x88, 0xb1, 0xd0, 0xcc, 0xad, 0x2c, 0xbf, + 0x88, 0x98, 0x8f, 0x25, 0x76, 0xd7, 0x65, 0x77, + 0xcc, 0x36, 0x1d, 0x1b, 0x6b, 0x60, 0x58, 0xc4, + 0xfe, 0xe6, 0xca, 0xa8, 0x29, 0x33, 0x69, 0x36, + 0xb8, 0x12, 0x95, 0x38, 0xd9, 0xd4, 0x16, 0xe9, + 0x3e, 0x40, 0x8c, 0xc7, 0xae, 0x04, 0x11, 0xdf, + 0x51, 0xd3, 0xdd, 0xbf, 0xa9, 0x41, 0x43, 0x4c, + 0xff, 0x87, 0x2f, 0xea, 0x0f, 0x13, 0x66, 0x2a, + 0x2b, 0x18, 0xe8, 0xc4, 0xff, 0xa0, 0x1c, 0x78, + 0x79, 0x21, 0xf8, 0xaa, 0x8a, 0xf8, 0x92, 0xdf, + 0x7b, 0x5f, 0x6a, 0x71, 0x60, 0x67, 0x5d, 0x94, + 0xf6, 0xbb, 0x1d, 0x90, 0x7c, 0x51, 0x70, 0x1d, + 0x87, 0xde, 0xf8, 0x91, 0xcb, 0x42, 0x9f, 0xc7, + 0x4b, 0xa0, 0x16, 0xee, 0xb4, 0x73, 0xe8, 0xe0, + 0x0b, 0xa5, 0xd3, 0x26, 0x9e, 0x52, 0xda, 0x4a, + 0x1f, 0xae, 0x76, 0xbf, 0xbb, 0x4d, 0x74, 0x98, + 0xa6, 0xae, 0xc0, 0x60, 0x96, 0xc5, 0xad, 0x9b, + 0x91, 0x31, 0xb9, 0x50, 0x3d, 0x9a, 0x0f, 0xe1, + 0x93, 0xef, 0x08, 0x72, 0xb2, 0x66, 0xe5, 0x5d, + 0xe4, 0x15, 0x53, 0x8e, 0xb0, 0xb3, 0xf8, 0x78, + 0xfc, 0x5d, 0x44, 0xc5, 0xbf, 0xf5, 0x01, 0x54, + 0xc5, 0x45, 0xa9, 0x30, 0xa4, 0xf1, 0x49, 0x79, + 0x4e, 0xab, 0xfc, 0xb2, 0x93, 0xe7, 0x3a, 0xe1, + 0x7f, 0x1f, 0x2f, 0x45, 0x3a, 0x53, 0x2b, 0x68, + 0xb3, 0xa4, 0xac, 0x23, 0x54, 0xb7, 0x5d, 0x25, + 0xa3, 0xe3, 0x90, 0x8a, 0xb0, 0x02, 0xfb, 0x7f, + 0x2d, 0xeb, 0x80, 0xc2, 0x5c, 0x62, 0xe1, 0x36, + 0x5a, 0x82, 0x8f, 0x4e, 0x74, 0xeb, 0x7d, 0x70, + 0xaf, 0x23, 0x92, 0x65, 0x3a, 0x11, 0xc0, 0x29, + 0xdb, 0xf7, 0x9a, 0xdc, 0x81, 0x45, 0x25, 0x0c, + 0x2e, 0x4f, 0x88, 0x41, 0x34, 0x53, 0xc6, 0x08, + 0x21, 0x77, 0xc1, 0xbb, 0x61, 0x48, 0x20, 0x69, + 0x1a, 0xbb, 0x71, 0x1b, 0x56, 0x18, 0x79, 0x75, + 0x16, 0x9a, 0xb3, 0x79, 0x31, 0x11, 0xa2, 0x89, + 0x8d, 0xea, 0x10, 0xb0, 0x04, 0x7f, 0xf8, 0x6e, + 0xdc, 0x08, 0x9b, 0x51, 0xa7, 0x64, 0xbd, 0x8d, + 0xd4, 0xd0, 0x1e, 0x38, 0x50, 0x1a, 0xa8, 0x7e, + 0x20, 0xae, 0xee, 0x8c, 0xa7, 0x72, 0x94, 0xc9, + 0xba, 0xf0, 0x67, 0xbd, 0x25, 0x1a, 0x3a, 0xdf, + 0x75, 0x39, 0xb7, 0xd3, 0x83, 0x3b, 0x89, 0xdf, + 0xb5, 0x2d, 0xd3, 0x12, 0x24, 0x21, 0x7c, 0x9e, + 0x92, 0x1c, 0x19, 0xae, 0x28, 0xcb, 0x2e, 0x2e, + 0x3c, 0xa9, 0x9b, 0xbd, 0xf9, 0x33, 0x30, 0xb2, + 0xbd, 0x8b, 0xbf, 0xc1, 0x8b, 0x32, 0xf1, 0x20, + 0xa1, 0x00, 0xfd, 0x11, 0x7d, 0x9a, 0xa8, 0x14, + 0x2c, 0xce, 0x16, 0x16, 0x4b, 0xdd, 0x56, 0x91, + 0x15, 0x36, 0x83, 0xcb, 0x01, 0x58, 0x35, 0xe1, + 0xdc, 0x22, 0x3d, 0xf8, 0xc2, 0x06, 0x54, 0x68, + 0x77, 0xd1, 0x47, 0x28, 0xdc, 0x09, 0x2a, 0x86, + 0x13, 0x80, 0xa6, 0xe9, 0xd0, 0xb4, 0xa3, 0x41, + 0x47, 0xf4, 0x71, 0x24, 0x10, 0x4c, 0x9f, 0xb7, + 0x57, 0x34, 0x48, 0x1b, 0xb4, 0xed, 0x0e, 0x89, + 0x4c, 0xf1, 0x73, 0x44, 0xff, 0x35, 0xb6, 0xe0, + 0x8f, 0x02, 0xa3, 0xa3, 0x81, 0x55, 0x38, 0xb5, + 0xc1, 0x99, 0xb3, 0x88, 0x84, 0x0d, 0xd9, 0x73, + 0x77, 0x65, 0x0b, 0xd7, 0xf8, 0x03, 0x88, 0xcb, + 0xdf, 0x25, 0xaf, 0xc6, 0xf1, 0xfa, 0x5c, 0x4d, + 0xfa, 0xc3, 0x7b, 0x8f, 0xb8, 0x38, 0x5d, 0x29, + 0xbb, 0x3d, 0x3e, 0x62, 0x1c, 0xdd, 0xe6, 0x97, + 0xe6, 0xe9, 0xbe, 0x6e, 0xd2, 0xb7, 0x7a, 0x9a, + 0x8e, 0xaf, 0xb3, 0xc8, 0x9e, 0x19, 0xee, 0x3d, + 0x5b, 0x1f, 0xec, 0x34, 0x3a, 0x1c, 0x27, 0x90, + 0xbd, 0x1e, 0x49, 0x72, 0x25, 0x2e, 0x38, 0x48, + 0x7d, 0xe1, 0x85, 0x46, 0xa7, 0x1b, 0x4a, 0xd5, + 0x23, 0x75, 0x6d, 0x8b, 0xc3, 0xf1, 0x87, 0xec, + 0x8b, 0x45, 0xf0, 0x9b, 0xb2, 0x14, 0x7a, 0x7c, + 0x8d, 0x78, 0x9c, 0x82, 0x64, 0x14, 0xfe, 0x01, + 0xfa, 0x04, 0x33, 0x96, 0xdd, 0x5f, 0x56, 0xbc, + 0xb2, 0x03, 0xe3, 0x0c, 0xa1, 0x09, 0x66, 0xa0, + 0x5e, 0x44, 0xde, 0x21, 0xae, 0x7d, 0x7a, 0x0e, + 0x81, 0x27, 0xd2, 0xfb, 0x85, 0xed, 0x27, 0x27, + 0xac, 0x11, 0x1c, 0xa1, 0x6d, 0xe9, 0xc1, 0xca, + 0xf6, 0x40, 0x7c, 0x95, 0x01, 0xb7, 0xa8, 0x29, + 0x9a, 0xd2, 0xcc, 0x62, 0x70, 0x1c, 0x7d, 0x0e, + 0xe5, 0x60, 0xcb, 0x79, 0xa3, 0xd7, 0x5d, 0x48, + 0x4b, 0x3c, 0xf8, 0x12, 0xe8, 0x7a, 0x7e, 0x83, + 0xab, 0x24, 0x33, 0x0f, 0x7b, 0x0a, 0x38, 0xae, + 0xb1, 0xfc, 0xc3, 0x50, 0x5c, 0x83, 0x53, 0xfd, + 0x15, 0xd6, 0x49, 0x54, 0xb6, 0x40, 0xe5, 0xe8, + 0x55, 0xba, 0x08, 0x2f, 0x21, 0xd7, 0x0e, 0x71, + 0x8a, 0xb2, 0xe1, 0x6b, 0xc6, 0x7e, 0x0f, 0x1c, + 0x4d, 0x41, 0x9f, 0x38, 0xc2, 0xce, 0x41, 0x41, + 0x48, 0xcd, 0xec, 0x16, 0x1d, 0x23, 0x8e, 0x41, + 0xcd, 0x5e, 0xf9, 0x5f, 0x01, 0x5e, 0x73, 0xa2, + 0xa1, 0xef, 0xe9, 0x57, 0xe0, 0xba, 0xe6, 0xbb, + 0x2b, 0xff, 0x3e, 0xb8, 0xad, 0xd5, 0x12, 0xc1, + 0x54, 0x49, 0xca, 0x93, 0xb0, 0x7d, 0x7b, 0xcf, + 0xf0, 0xc5, 0x94, 0x43, 0x30, 0x94, 0x11, 0x8d, + 0x15, 0x79, 0x2e, 0x57, 0xb8, 0x24, 0xcd, 0x2e, + 0xc2, 0x49, 0x3d, 0x92, 0x44, 0x23, 0x0c, 0x3e, + 0xa0, 0xf9, 0xa5, 0xad, 0x2a, 0x56, 0xec, 0xf4, + 0x6d, 0x0f, 0x5b, 0xb5, 0xd4, 0x2a, 0x3f, 0x2b, + 0x17, 0x9f, 0x5d, 0x33, 0x97, 0x42, 0xd4, 0x1e, + 0x14, 0x49, 0x01, 0xfb, 0xb6, 0x72, 0xbc, 0x14, + 0x5b, 0x79, 0xf4, 0x0a, 0xc5, 0x49, 0xe1, 0x76, + 0x44, 0x78, 0x87, 0xd1, 0x8e, 0x5b, 0xd5, 0x95, + 0xad, 0x19, 0x7c, 0x0d, 0x39, 0x7f, 0x41, 0x2e, + 0xd7, 0x9e, 0xbc, 0xfd, 0x2c, 0xde, 0xfa, 0x01, + 0x7d, 0x2b, 0x04, 0xef, 0x4d, 0xf9, 0xf4, 0x5b, + 0xed, 0x05, 0x9a, 0x50, 0x35, 0xe7, 0xb0, 0xba, + 0x24, 0xea, 0x16, 0x51, 0xe1, 0x6f, 0x32, 0x08, + 0x94, 0xd6, 0x19, 0x9d, 0x0e, 0x4c, 0xc1, 0xbb, + 0x01, 0x87, 0xa5, 0x90, 0x5f, 0x6f, 0xc4, 0xed, + 0xa1, 0x4c, 0x06, 0x4d, 0x2c, 0x47, 0x24, 0xda, + 0xae, 0xd2, 0x41, 0x92, 0x1f, 0x46, 0xce, 0xec, + 0xb1, 0xcc, 0x80, 0x1e, 0xb2, 0xcb, 0x66, 0x48, + 0x22, 0xec, 0x0e, 0x47, 0xfc, 0xad, 0x17, 0xfe, + 0x7b, 0xc5, 0x4d, 0x34, 0x95, 0x40, 0xd0, 0x02, + 0x7e, 0x90, 0xaa, 0x92, 0xaf, 0x48, 0x64, 0xc5, + 0xc1, 0x56, 0xd8, 0x9b, 0x6c, 0x5f, 0x2e, 0xfa, + 0xd7, 0x84, 0xdc, 0x71, 0x65, 0x1b, 0xfb, 0xbc, + 0x21, 0xc7, 0x57, 0xf4, 0x71, 0x2e, 0x6f, 0x34, + 0x85, 0x99, 0xa8, 0x5c, 0x6f, 0x34, 0x22, 0x44, + 0x89, 0x01, 0xf9, 0x48, 0xd2, 0xe2, 0xe4, 0x71, + 0x9d, 0x48, 0x07, 0x97, 0xd4, 0x66, 0xe4, 0x4d, + 0x48, 0xa3, 0x08, 0x7f, 0x6e, 0xaa, 0x7b, 0xe9, + 0x93, 0x81, 0x03, 0x0c, 0xd2, 0x48, 0xcf, 0x3f, + 0x5f, 0xbe, 0x03, 0xfb, 0x0f, 0xad, 0xc3, 0x81, + 0xd9, 0xce, 0x88, 0x0b, 0xfa, 0xed, 0x29, 0x7e, + 0x0b, 0xa1, 0x6f, 0x4c, 0x7d, 0xe4, 0x36, 0xff, + 0xdf, 0x94, 0x1a, 0x24, 0xb3, 0x7b, 0xca, 0x24, + 0x7e, 0x3a, 0x19, 0x53, 0x13, 0x4a, 0x17, 0x58, + 0xe7, 0x16, 0x9b, 0x50, 0xd8, 0xda, 0xcc, 0x6e, + 0x05, 0x25, 0xfe, 0x16, 0xcb, 0x5b, 0xd5, 0x35, + 0x76, 0x40, 0x44, 0x96, 0x23, 0x97, 0xe2, 0x4a, + 0x72, 0x0c, 0x54, 0x43, 0xc0, 0x09, 0x85, 0x8e, + 0x15, 0x85, 0xaf, 0x3c, 0x5e, 0x5f, 0x3c, 0x2d, + 0x21, 0x42, 0x75, 0xb7, 0xe4, 0x50, 0xf9, 0x00, + 0xa3, 0x4f, 0xb1, 0x7c, 0xfe, 0x62, 0xd0, 0xe9, + 0x6d, 0x51, 0xcc, 0x83, 0xc1, 0xdc, 0x37, 0x10, + 0x90, 0x0a, 0x15, 0xd8, 0xd5, 0x02, 0xf7, 0x74, + 0xb8, 0x46, 0x84, 0xc3, 0x61, 0x17, 0x26, 0x0f, + 0xe4, 0xde, 0x1a, 0xcf, 0x42, 0x53, 0x63, 0x2f, + 0x8d, 0xf7, 0x06, 0x07, 0xc3, 0x33, 0x39, 0x59, + 0xe9, 0x17, 0xc8, 0x05, 0xd2, 0xa2, 0xae, 0x53, + 0x2c, 0x7e, 0xd0, 0x9d, 0x5c, 0xb5, 0x42, 0x9f, + 0x84, 0xd7, 0xfe, 0x93, 0x74, 0xfb, 0xbb, 0xd2, + 0x1e, 0x57, 0x4e, 0x7f, 0x79, 0xaf, 0xd2, 0xf9, + 0x5e, 0x41, 0x9e, 0x63, 0x54, 0x61, 0x47, 0x0c, + 0x92, 0x4c, 0xc9, 0xfe, 0x4f, 0xcb, 0xe5, 0x8e, + 0x65, 0xb3, 0x97, 0x1b, 0xd8, 0xd1, 0x62, 0xfd +#else + 0x30, 0x82, 0x0a, 0x34, 0x30, 0x0d, 0x06, 0x0b, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x82, 0x0b, + 0x0c, 0x08, 0x07, 0x03, 0x82, 0x0a, 0x21, 0x00, + 0x7f, 0x5f, 0x63, 0x81, 0x6f, 0x04, 0x4c, 0xec, + 0xa8, 0xaf, 0x7b, 0x99, 0x41, 0xc6, 0xff, 0xdf, + 0x77, 0x66, 0x28, 0xc0, 0xe2, 0x58, 0xea, 0x9c, + 0x60, 0xbb, 0x03, 0x3e, 0xca, 0xa8, 0x38, 0x64, + 0xfb, 0xf7, 0x1b, 0x3f, 0xec, 0xfd, 0x0f, 0xf1, + 0x9c, 0xe4, 0xfd, 0xad, 0x83, 0xf7, 0x03, 0x66, + 0x6e, 0x7f, 0x4d, 0x42, 0xab, 0x6b, 0x73, 0x26, + 0xde, 0x6f, 0x8c, 0xc4, 0xca, 0x21, 0x66, 0x31, + 0x79, 0x57, 0x88, 0xcb, 0x1e, 0xab, 0xda, 0x1d, + 0x56, 0x70, 0xd9, 0x83, 0xa1, 0xb4, 0x83, 0xce, + 0xcc, 0x0f, 0xeb, 0xd6, 0x63, 0xbd, 0xf6, 0x02, + 0x5d, 0x5b, 0x0c, 0x17, 0x3c, 0x3e, 0x15, 0x02, + 0x22, 0xa1, 0x5d, 0xb5, 0xc5, 0x81, 0x28, 0x95, + 0x0b, 0x34, 0x2b, 0x96, 0x0a, 0xae, 0x6a, 0xa8, + 0xb5, 0x1d, 0x56, 0xbb, 0x7d, 0x83, 0x9a, 0x15, + 0xad, 0x63, 0x9e, 0x86, 0x8c, 0x6e, 0x6a, 0xa8, + 0xde, 0x55, 0xd0, 0xce, 0xc0, 0x2e, 0x05, 0xfe, + 0x1f, 0x4d, 0xd7, 0x12, 0xa4, 0x5a, 0xe9, 0x04, + 0x0d, 0x20, 0x84, 0x90, 0xb9, 0xca, 0x64, 0xe4, + 0xad, 0x2e, 0x74, 0x4b, 0x1d, 0x2f, 0xcc, 0xac, + 0xd8, 0x1a, 0x5e, 0xb2, 0x78, 0xbe, 0x61, 0xf7, + 0x36, 0xa3, 0xd1, 0x93, 0x86, 0xb5, 0x15, 0xf1, + 0x74, 0xf8, 0x9f, 0x6d, 0x6a, 0x8f, 0x6d, 0x86, + 0x8b, 0x36, 0x61, 0x10, 0xc9, 0x1a, 0x31, 0x39, + 0x09, 0xe6, 0x15, 0xa0, 0xb1, 0xfa, 0x69, 0xd4, + 0xc2, 0xb2, 0x56, 0x4c, 0x06, 0x33, 0x13, 0xc4, + 0x78, 0x53, 0x16, 0xfc, 0x52, 0x99, 0xe6, 0x27, + 0xc9, 0x3b, 0x24, 0x5c, 0x3e, 0x85, 0x73, 0x76, + 0x61, 0xa3, 0x61, 0xf0, 0x95, 0xd5, 0xb2, 0xf5, + 0x21, 0xe7, 0x09, 0xc3, 0x0c, 0x5c, 0xb0, 0x36, + 0xce, 0x45, 0x68, 0x41, 0x45, 0xcb, 0x1c, 0x36, + 0x2f, 0x3a, 0x00, 0x07, 0x56, 0xbe, 0x61, 0xd2, + 0x77, 0x37, 0x63, 0xa4, 0xdb, 0xfa, 0xa9, 0x6b, + 0x37, 0x90, 0x35, 0xd1, 0x1e, 0x27, 0x5b, 0x3e, + 0xc0, 0x0a, 0x02, 0x64, 0xe4, 0x58, 0x49, 0xab, + 0x2d, 0xc1, 0x38, 0x29, 0x3d, 0x44, 0xf9, 0xac, + 0xb7, 0x65, 0xd1, 0x5f, 0xf8, 0xce, 0x52, 0x76, + 0x22, 0x15, 0x61, 0x02, 0x1f, 0xa7, 0xcd, 0xff, + 0xeb, 0xa6, 0x7f, 0x6b, 0xba, 0x75, 0xe3, 0x09, + 0x01, 0x06, 0x41, 0x20, 0x88, 0x75, 0x64, 0x6b, + 0x97, 0x38, 0x13, 0xab, 0x4c, 0x0a, 0xd4, 0x7e, + 0xd2, 0xfa, 0x78, 0xe8, 0x9f, 0x5d, 0xf9, 0x53, + 0x30, 0x17, 0xf1, 0x10, 0x9e, 0x4a, 0x32, 0x17, + 0x3a, 0x9b, 0xb9, 0x25, 0x8e, 0xeb, 0xd9, 0x41, + 0x01, 0xa2, 0xc6, 0x58, 0x4a, 0x9f, 0xc3, 0x73, + 0xfd, 0xe2, 0xe4, 0x2c, 0x92, 0xb4, 0xa2, 0x3d, + 0x0f, 0x1f, 0x37, 0x64, 0xf1, 0x17, 0x2a, 0x8c, + 0xc6, 0xb5, 0xb0, 0x69, 0x7d, 0xfe, 0x08, 0xe0, + 0x8e, 0xaa, 0xe0, 0x08, 0xd5, 0x28, 0x92, 0x51, + 0x73, 0x8a, 0x2f, 0x7a, 0x4a, 0xbf, 0x52, 0x8d, + 0x3e, 0x9b, 0x36, 0x6a, 0xfb, 0x19, 0xf0, 0xea, + 0xfe, 0x05, 0xbd, 0x2d, 0xa9, 0x58, 0x48, 0x02, + 0xa8, 0x20, 0x9e, 0xdc, 0x04, 0x57, 0xc2, 0x0c, + 0xae, 0xc1, 0x03, 0xe7, 0x17, 0x48, 0x80, 0x00, + 0x8d, 0x1b, 0xd0, 0xc5, 0xdc, 0x2a, 0x02, 0x6e, + 0x8e, 0x54, 0xf3, 0x79, 0x31, 0x02, 0x93, 0xc5, + 0xf2, 0x55, 0xea, 0x61, 0xd0, 0xb2, 0x8e, 0xc9, + 0x74, 0x17, 0x0d, 0x38, 0xf8, 0xab, 0xf4, 0x42, + 0xd4, 0xc2, 0xdc, 0xf7, 0x1b, 0xdb, 0x65, 0x36, + 0x9f, 0x56, 0xe2, 0xeb, 0xf7, 0xe5, 0x2d, 0x45, + 0xae, 0xc0, 0x95, 0xbc, 0xe4, 0x1f, 0x22, 0xdc, + 0x0f, 0x54, 0xed, 0x14, 0xb8, 0xf1, 0x2f, 0x5d, + 0xd1, 0x79, 0xa0, 0x81, 0x17, 0x71, 0xa1, 0xd6, + 0xf0, 0x88, 0x9c, 0x1c, 0xc7, 0x95, 0x07, 0xb0, + 0xea, 0xf7, 0xd3, 0xa2, 0x55, 0xfe, 0x85, 0x65, + 0x42, 0x06, 0xec, 0xd2, 0xbe, 0x03, 0x8f, 0x63, + 0x84, 0x4b, 0xb1, 0x47, 0x48, 0x20, 0x71, 0xd2, + 0xdf, 0xc9, 0x59, 0xb0, 0x24, 0x8a, 0x6e, 0xf9, + 0x4a, 0xa1, 0x7b, 0xed, 0x11, 0xb6, 0xf9, 0x9b, + 0xf7, 0x93, 0x0e, 0xcb, 0x7a, 0x32, 0x22, 0x23, + 0x4e, 0x86, 0xce, 0xad, 0x9d, 0x1b, 0x84, 0x57, + 0xaf, 0xa5, 0x04, 0x03, 0x0a, 0xc9, 0x04, 0x97, + 0xd0, 0xce, 0x8e, 0x2a, 0x9a, 0x00, 0x15, 0xeb, + 0xac, 0x96, 0x57, 0xde, 0xe6, 0xc1, 0x2d, 0xbd, + 0xfc, 0xd6, 0x95, 0x0f, 0x5f, 0x19, 0xac, 0xaf, + 0x6c, 0xd8, 0xa6, 0x1e, 0xd8, 0xdb, 0x14, 0xfd, + 0xba, 0x0f, 0xd0, 0x3f, 0x61, 0xe3, 0x76, 0xfc, + 0x47, 0x61, 0x07, 0x24, 0x49, 0x17, 0xca, 0x24, + 0x31, 0x16, 0x26, 0x4f, 0xdc, 0x2b, 0x39, 0xae, + 0x5f, 0xfa, 0x4f, 0x82, 0xef, 0xe1, 0x41, 0x8c, + 0x3e, 0x8e, 0xa7, 0x6c, 0xf2, 0x51, 0xf7, 0x85, + 0x35, 0x6c, 0xad, 0xea, 0x32, 0x35, 0xf3, 0xc0, + 0x14, 0x17, 0xe2, 0x98, 0x27, 0x36, 0x7e, 0x60, + 0x2f, 0x01, 0x60, 0x3e, 0x18, 0xf4, 0x4e, 0xe0, + 0xf5, 0x14, 0x21, 0x81, 0x05, 0x78, 0x1c, 0x5f, + 0x4e, 0x89, 0xbb, 0x23, 0x60, 0xb1, 0x8f, 0x07, + 0x53, 0x16, 0x6e, 0xfb, 0x86, 0x07, 0x90, 0xff, + 0xa6, 0x27, 0x60, 0xe6, 0x3e, 0x92, 0x2a, 0x3c, + 0xa3, 0x57, 0xec, 0x97, 0x23, 0xaf, 0xd2, 0x44, + 0xac, 0x09, 0x87, 0xb0, 0x54, 0xe9, 0x5b, 0x50, + 0x37, 0xfa, 0x12, 0xa4, 0xcb, 0x6f, 0xed, 0x9f, + 0x29, 0x73, 0xa7, 0x09, 0x29, 0x91, 0x93, 0x5c, + 0x54, 0xf4, 0x44, 0xc2, 0x04, 0x64, 0xfc, 0xd2, + 0xf2, 0x0a, 0x0b, 0x45, 0x1f, 0xc5, 0x18, 0xf0, + 0xff, 0x10, 0x1f, 0x3a, 0x97, 0xf8, 0xb1, 0x83, + 0x0e, 0x08, 0xe2, 0x55, 0x75, 0x6a, 0x45, 0x96, + 0xf8, 0x1b, 0xdc, 0xb6, 0x57, 0x83, 0x8c, 0x28, + 0xc0, 0x4a, 0x57, 0xc6, 0xfb, 0x27, 0x3d, 0xfa, + 0x5a, 0x0d, 0x69, 0x56, 0x23, 0x66, 0x02, 0x78, + 0xca, 0xf1, 0xfa, 0xcb, 0xc1, 0xf6, 0x92, 0x1c, + 0xa0, 0xe3, 0x09, 0x7d, 0x48, 0x5e, 0x86, 0xa0, + 0x82, 0xa8, 0xf1, 0x1e, 0xe1, 0xfe, 0xc6, 0x9d, + 0x4f, 0x2e, 0xf4, 0xfc, 0xc6, 0x48, 0x1d, 0xc1, + 0x2a, 0x6a, 0xb7, 0xea, 0x46, 0x89, 0x04, 0xe9, + 0xbd, 0xf1, 0xed, 0x16, 0x76, 0xd8, 0x4b, 0x42, + 0xd5, 0x43, 0xa4, 0xfb, 0x02, 0x01, 0x54, 0x00, + 0xaf, 0x55, 0x52, 0x27, 0xff, 0x00, 0xe2, 0xbb, + 0x4a, 0xf2, 0x69, 0xb4, 0x4e, 0x6c, 0x6b, 0xa3, + 0x96, 0x4f, 0xf4, 0x65, 0x90, 0x2d, 0xc8, 0x57, + 0x1f, 0xb2, 0xf0, 0x86, 0x7b, 0x93, 0x09, 0x49, + 0x31, 0xc4, 0xf4, 0x8f, 0xc8, 0x2d, 0xac, 0x1d, + 0xfc, 0xba, 0xa4, 0xa5, 0x41, 0x90, 0x76, 0x7d, + 0x9e, 0x47, 0xdc, 0x10, 0xe6, 0x0c, 0xf7, 0x0f, + 0xa4, 0xba, 0x4f, 0xe2, 0x46, 0x38, 0x4c, 0x28, + 0xa0, 0x57, 0xb5, 0x3c, 0xb3, 0x4b, 0x8f, 0x03, + 0x04, 0xff, 0xf6, 0xec, 0x60, 0x90, 0x62, 0xfe, + 0x74, 0x76, 0x48, 0xb3, 0xf4, 0x0a, 0x6a, 0x5a, + 0x5b, 0xad, 0xc8, 0x54, 0x62, 0x11, 0x52, 0xd9, + 0x84, 0x1a, 0x09, 0x4b, 0xca, 0x66, 0xaa, 0x3c, + 0x36, 0x08, 0x9d, 0x58, 0xd0, 0x4a, 0x3a, 0x8b, + 0x24, 0xe0, 0x80, 0x9f, 0xe3, 0x76, 0xb6, 0x07, + 0xb1, 0xbc, 0x00, 0x98, 0xb0, 0xc1, 0xe0, 0xf6, + 0x1f, 0x4d, 0xa8, 0xd1, 0x69, 0x44, 0x9c, 0x33, + 0xb0, 0x0f, 0x9c, 0xc9, 0x0c, 0x8c, 0xbc, 0x03, + 0x58, 0x81, 0x76, 0xab, 0x0d, 0xef, 0x25, 0x5a, + 0xf6, 0xab, 0x3b, 0xf1, 0x1f, 0x97, 0x12, 0x8e, + 0x7f, 0x28, 0x77, 0x26, 0x18, 0xc4, 0xc4, 0xda, + 0x2c, 0x43, 0x57, 0xd2, 0x1f, 0x67, 0x95, 0x40, + 0x2c, 0x94, 0x41, 0x69, 0x22, 0x8a, 0x24, 0xd9, + 0xc7, 0xfc, 0xea, 0x49, 0x83, 0x8f, 0x5d, 0x2e, + 0x9d, 0xac, 0x17, 0xb6, 0xe0, 0xc4, 0xe7, 0xe6, + 0xd5, 0xc2, 0x73, 0xa1, 0x8f, 0x33, 0x14, 0x02, + 0xae, 0x01, 0x9f, 0x6f, 0x40, 0x92, 0x4e, 0x03, + 0xc2, 0xa9, 0xf1, 0x36, 0x78, 0xe4, 0xde, 0x39, + 0x4d, 0x29, 0x2e, 0xc2, 0x00, 0x93, 0x79, 0xe4, + 0xb2, 0x29, 0x4b, 0x81, 0x5c, 0x06, 0x06, 0xbc, + 0xc1, 0x01, 0x1c, 0xa7, 0x08, 0xf7, 0x47, 0x1f, + 0x52, 0x4f, 0xdf, 0x94, 0x1e, 0xe6, 0x89, 0xe6, + 0x26, 0x71, 0x2e, 0xa2, 0xd2, 0xfe, 0x04, 0xf2, + 0x12, 0x4c, 0x06, 0x78, 0x34, 0xc0, 0xb9, 0x76, + 0x62, 0x3b, 0x72, 0x25, 0x8c, 0x0d, 0x73, 0x24, + 0xcf, 0x4b, 0x4c, 0x47, 0x20, 0x9d, 0x04, 0x7f, + 0x86, 0x2c, 0x45, 0xb8, 0xfe, 0xb2, 0xaa, 0x36, + 0xf8, 0xe0, 0x24, 0x25, 0x05, 0x23, 0x12, 0x16, + 0xbf, 0x64, 0x10, 0xdd, 0xe4, 0xc0, 0xb0, 0x85, + 0xa7, 0xd3, 0xd1, 0x18, 0x1b, 0x81, 0x6b, 0x94, + 0xfd, 0x07, 0x43, 0xdd, 0x12, 0x37, 0x78, 0x69, + 0xec, 0x8c, 0xd0, 0x41, 0x2c, 0x42, 0x94, 0x3e, + 0x9f, 0xe3, 0x49, 0xb3, 0xb8, 0x45, 0x0b, 0x1d, + 0xc1, 0x9b, 0x4d, 0x21, 0x85, 0x62, 0xea, 0xd1, + 0xc9, 0x12, 0x30, 0x8c, 0x4b, 0x63, 0xeb, 0x7d, + 0x02, 0x52, 0x15, 0xa1, 0x95, 0x48, 0x9f, 0xc2, + 0xce, 0xf3, 0x4b, 0xff, 0x5a, 0xb6, 0x8f, 0xce, + 0xcd, 0x42, 0x21, 0x40, 0x82, 0xad, 0x08, 0x99, + 0x4d, 0x24, 0x58, 0x25, 0xf3, 0x7e, 0x42, 0x86, + 0x06, 0x33, 0x1f, 0x53, 0xbb, 0x07, 0x33, 0xca, + 0xc0, 0x02, 0x18, 0x30, 0x3c, 0xc5, 0x67, 0x1c, + 0x32, 0x3f, 0x2d, 0x58, 0x4c, 0x24, 0x6e, 0x60, + 0x96, 0x1a, 0xf4, 0xd0, 0x55, 0xb8, 0x84, 0xf0, + 0xb9, 0x83, 0xbf, 0x3d, 0x37, 0xe4, 0xa6, 0x06, + 0x1c, 0xd1, 0xd7, 0x91, 0x24, 0xdc, 0x3f, 0xcc, + 0x71, 0xf3, 0x0c, 0x90, 0x2c, 0x1d, 0x2f, 0x90, + 0xc8, 0x3c, 0x6f, 0x2c, 0x5d, 0xad, 0x8c, 0xdf, + 0xbb, 0x0d, 0x2a, 0x7f, 0x4a, 0x34, 0x5a, 0xd9, + 0x83, 0xfd, 0x61, 0x36, 0xe0, 0x0a, 0xb3, 0xf6, + 0x69, 0xb1, 0xaf, 0x81, 0x22, 0xd6, 0x9e, 0x9a, + 0xf8, 0xa6, 0x24, 0x8e, 0x0c, 0xcb, 0x25, 0xc2, + 0xfc, 0xc5, 0x94, 0xbd, 0x23, 0x9c, 0xa9, 0xbd, + 0x76, 0x28, 0xa4, 0x55, 0x92, 0x7c, 0xe6, 0x76, + 0xf7, 0x30, 0xf8, 0x7d, 0xdc, 0x0a, 0x93, 0x9e, + 0x7c, 0x39, 0x0a, 0x70, 0xa0, 0xb2, 0x77, 0xe0, + 0x7a, 0x89, 0x50, 0xce, 0x75, 0xca, 0x2f, 0xa4, + 0x12, 0x0e, 0xcb, 0x75, 0x1f, 0x0a, 0x83, 0xe8, + 0x14, 0x80, 0xa7, 0xb0, 0xe8, 0x11, 0xca, 0x12, + 0x5e, 0xf7, 0x31, 0x65, 0xbd, 0x20, 0x3d, 0x8c, + 0xa6, 0x89, 0x83, 0x68, 0x66, 0x03, 0x28, 0x49, + 0x17, 0xc4, 0x3f, 0x43, 0x02, 0x9b, 0xf8, 0xed, + 0xae, 0x8e, 0x68, 0xbc, 0x8e, 0x39, 0xe7, 0x15, + 0x32, 0x45, 0x66, 0x2c, 0x1f, 0xce, 0x56, 0xc7, + 0xc0, 0x15, 0x52, 0x19, 0x40, 0xcf, 0x87, 0x20, + 0xcd, 0x3d, 0xec, 0x90, 0x8d, 0x04, 0x01, 0x31, + 0x0b, 0x74, 0x80, 0x6e, 0x61, 0xa7, 0xf3, 0x4c, + 0xb2, 0x16, 0x00, 0xd5, 0xdb, 0xcc, 0xbb, 0x2c, + 0x9f, 0xb6, 0x02, 0x4a, 0xcf, 0x71, 0x06, 0xfd, + 0x60, 0xe0, 0x00, 0xbe, 0x22, 0xba, 0x39, 0x36, + 0xa8, 0x7e, 0xe5, 0xcb, 0xea, 0x87, 0xb1, 0xee, + 0xa2, 0x6c, 0x85, 0x94, 0x18, 0x6c, 0xab, 0x9a, + 0x93, 0xa7, 0xab, 0x4e, 0x3b, 0x85, 0xf3, 0xef, + 0x8f, 0x15, 0x74, 0x21, 0x9f, 0x5d, 0x9c, 0x22, + 0x32, 0x71, 0xb5, 0x4d, 0x7f, 0xaa, 0x85, 0xe0, + 0x05, 0x2a, 0x53, 0xbb, 0x3c, 0xab, 0xc3, 0xd2, + 0x73, 0x6e, 0x97, 0xa3, 0xfd, 0x05, 0x58, 0xaa, + 0x49, 0xc8, 0x69, 0xa9, 0x0b, 0x73, 0xd4, 0xe9, + 0x1d, 0x84, 0x60, 0x34, 0x2a, 0x09, 0xb3, 0x0f, + 0x08, 0x13, 0x67, 0x77, 0xb3, 0x24, 0xdf, 0xad, + 0xbf, 0x51, 0x71, 0x2b, 0xbe, 0x4f, 0x5d, 0xf4, + 0xe7, 0x25, 0x4c, 0x24, 0xa2, 0x4a, 0x22, 0xec, + 0xcc, 0x7c, 0x6c, 0x62, 0xee, 0x47, 0x12, 0x43, + 0x88, 0xe4, 0x71, 0xaa, 0x63, 0xaa, 0x2b, 0xed, + 0x70, 0xbf, 0x26, 0x37, 0xcc, 0xa4, 0xff, 0xe9, + 0xb6, 0x65, 0x31, 0x4d, 0x0d, 0x32, 0xd6, 0x84, + 0xb8, 0xab, 0x98, 0xa7, 0x10, 0x44, 0x77, 0xc7, + 0x2a, 0x60, 0xf0, 0xf5, 0xd5, 0xd4, 0x3a, 0x73, + 0x11, 0xa5, 0x1b, 0x18, 0x3c, 0x13, 0xfb, 0xda, + 0x76, 0x9d, 0xeb, 0x3e, 0xb9, 0x7a, 0xce, 0x02, + 0xa7, 0x5e, 0x25, 0x96, 0xd2, 0xbc, 0x85, 0x1a, + 0xd1, 0xa4, 0xe2, 0x02, 0x15, 0x08, 0x49, 0x16, + 0x7c, 0xaf, 0xc6, 0x38, 0x7b, 0x95, 0xf9, 0x37, + 0xc0, 0x87, 0x73, 0x6f, 0x01, 0xcd, 0x2b, 0xf1, + 0xe7, 0x6e, 0x47, 0x18, 0x30, 0xb8, 0x16, 0x87, + 0x1d, 0x23, 0x62, 0x22, 0x85, 0x92, 0x69, 0x46, + 0x9c, 0x65, 0xd8, 0xf1, 0x27, 0x32, 0xe4, 0x16, + 0x7f, 0x9a, 0xba, 0x46, 0x61, 0x60, 0x34, 0xe5, + 0xc0, 0x14, 0xb5, 0xde, 0x4d, 0xd1, 0x71, 0x39, + 0x26, 0xdc, 0x0c, 0x0a, 0x53, 0x9e, 0x31, 0x10, + 0x45, 0x7a, 0xf9, 0xc8, 0xfa, 0x1d, 0x69, 0x5e, + 0x25, 0xc1, 0xe2, 0x00, 0xbf, 0x94, 0xa3, 0xa2, + 0x97, 0xca, 0xb4, 0x6a, 0x89, 0x68, 0xdd, 0xed, + 0x6b, 0x99, 0x5a, 0x87, 0x9e, 0xe9, 0x68, 0xe4, + 0xf2, 0xc2, 0x7e, 0x37, 0x02, 0xdf, 0x96, 0x1a, + 0x5b, 0xed, 0xa1, 0xe8, 0xdf, 0x3c, 0xf7, 0xd2, + 0x25, 0xac, 0xf7, 0x4a, 0x7f, 0x10, 0x27, 0x2b, + 0x02, 0xc7, 0x95, 0x10, 0x5a, 0xb5, 0xb0, 0xcd, + 0xa9, 0xe1, 0x36, 0xe2, 0x1c, 0x87, 0x99, 0x0e, + 0x0a, 0x44, 0xec, 0x97, 0x75, 0xa7, 0x03, 0x27, + 0x38, 0x3b, 0x16, 0x30, 0x00, 0x98, 0xbe, 0x77, + 0xfe, 0x3a, 0xac, 0x6f, 0x8f, 0x4d, 0xe1, 0xa9, + 0x9c, 0xba, 0x39, 0x52, 0xe8, 0xf7, 0xe4, 0xe6, + 0xf9, 0xe9, 0xb3, 0x57, 0x82, 0xb2, 0x23, 0xd6, + 0xa5, 0x14, 0xc0, 0x78, 0xb4, 0xa0, 0xf9, 0x96, + 0xe4, 0x03, 0xe8, 0x6c, 0x27, 0xd8, 0x37, 0x7c, + 0x8f, 0xf4, 0x80, 0x09, 0x09, 0xc9, 0x32, 0x15, + 0xe0, 0x3f, 0x37, 0xa7, 0x1a, 0x5f, 0x8c, 0xfb, + 0xdd, 0xfe, 0x6b, 0x34, 0x28, 0x53, 0x03, 0x4b, + 0x39, 0x91, 0xf2, 0x48, 0x4c, 0x2a, 0x45, 0xfe, + 0x66, 0xf7, 0x23, 0x74, 0xb8, 0x30, 0x70, 0xb4, + 0x0c, 0x2c, 0x65, 0xb1, 0x4e, 0x32, 0x0f, 0x50, + 0xbb, 0x46, 0x9b, 0x03, 0x34, 0x38, 0xfb, 0xe4, + 0x25, 0x37, 0x8d, 0x0f, 0xa1, 0x41, 0x50, 0x85, + 0x92, 0x07, 0x71, 0xff, 0x3c, 0xe6, 0xd9, 0x1d, + 0x55, 0xb7, 0x10, 0x9c, 0xea, 0x70, 0x5f, 0xa3, + 0xba, 0x84, 0x99, 0x91, 0x30, 0x3d, 0x4c, 0x98, + 0x0b, 0x1f, 0x1f, 0xcc, 0x17, 0x94, 0xdd, 0x78, + 0x7d, 0x50, 0xe5, 0xf5, 0x21, 0x88, 0x5a, 0x52, + 0x76, 0x5a, 0x97, 0xbe, 0xba, 0xa9, 0xfe, 0x82, + 0x8a, 0xb5, 0x46, 0xcf, 0x9c, 0xbe, 0xe8, 0x2f, + 0x01, 0x2f, 0x6a, 0x03, 0x8a, 0xfa, 0x4b, 0x0b, + 0xdc, 0x78, 0x79, 0x9c, 0x49, 0xc4, 0x01, 0x26, + 0x16, 0x58, 0xc6, 0xb8, 0xee, 0x6c, 0xc9, 0xa9, + 0x38, 0x7c, 0xcf, 0xf3, 0xf8, 0xd0, 0x6b, 0x99, + 0x43, 0x13, 0xe0, 0x43, 0x8e, 0xfb, 0xb2, 0xdb, + 0x61, 0x67, 0xf4, 0xfc, 0x01, 0x21, 0xd9, 0xb1, + 0x1e, 0x6c, 0x6f, 0x2a, 0x9a, 0x4b, 0x86, 0x3c, + 0x62, 0x03, 0x53, 0x83, 0x11, 0x18, 0x1a, 0x59, + 0x9e, 0x25, 0xfe, 0xdb, 0x85, 0xd0, 0xee, 0x7c, + 0x97, 0x72, 0xca, 0xf3, 0x0d, 0xd4, 0x19, 0x66, + 0x14, 0xaf, 0x46, 0x68, 0x75, 0xdb, 0x8f, 0x5f, + 0x77, 0x7f, 0xfe, 0xa9, 0xe6, 0xa1, 0x9e, 0x46, + 0x5e, 0x92, 0xda, 0xea, 0xdd, 0x89, 0x01, 0xd9, + 0xab, 0x25, 0x7d, 0xb4, 0x64, 0x50, 0x8f, 0xa3, + 0xbe, 0xe2, 0x03, 0xd5, 0xc6, 0x9c, 0xc2, 0xf8, + 0xac, 0xa4, 0x36, 0xa9, 0x37, 0x10, 0x59, 0x00, + 0x45, 0xbb, 0x55, 0x33, 0xb9, 0x6f, 0xbc, 0xa2, + 0x02, 0x9e, 0xa3, 0x1d, 0xf4, 0x17, 0x78, 0x9b, + 0xbc, 0x42, 0x4e, 0x21, 0xc3, 0xde, 0xb5, 0x70, + 0x4a, 0x23, 0x1e, 0xd4, 0x36, 0x5d, 0x7a, 0x08, + 0x37, 0x55, 0x98, 0x07, 0xa0, 0x16, 0xa3, 0x4e, + 0xa1, 0x2b, 0x96, 0x8b, 0x51, 0x63, 0x48, 0xab, + 0xc9, 0x19, 0x6f, 0x5f, 0x25, 0x9d, 0xe7, 0x25, + 0x63, 0xf0, 0x8e, 0xdb, 0x06, 0x2d, 0x42, 0x31, + 0xfd, 0x14, 0x2b, 0x7a, 0x31, 0x43, 0x04, 0xd5, + 0xe2, 0x89, 0x2e, 0xa8, 0xe4, 0x6e, 0xd5, 0xa5, + 0x21, 0x67, 0x9b, 0x92, 0x61, 0x79, 0xdd, 0xe5, + 0x44, 0x43, 0x45, 0x57, 0x13, 0xec, 0x04, 0xc1, + 0x41, 0xa3, 0x14, 0x70, 0x86, 0xda, 0x76, 0x5d, + 0xe8, 0x61, 0xd2, 0xfb, 0x7b, 0xe4, 0x71, 0x46, + 0xa3, 0x52, 0xbf, 0xf2, 0xa0, 0x3c, 0xc1, 0x90, + 0x0c, 0x2e, 0xeb, 0xb3, 0x38, 0xae, 0x13, 0x27, + 0x84, 0xe9, 0x7a, 0xd6, 0x02, 0x40, 0x84, 0xff, + 0x87, 0x1f, 0x37, 0x44, 0xd8, 0x2e, 0x93, 0xf7, + 0x0a, 0xff, 0x5b, 0x4d, 0x07, 0x82, 0xfd, 0x6e, + 0x44, 0xcc, 0x19, 0xc3, 0x7d, 0x7c, 0x31, 0xf9, + 0x0e, 0xa8, 0x1c, 0x0d, 0xcb, 0x8e, 0xe8, 0x33, + 0xb2, 0xff, 0x9e, 0x1d, 0x99, 0x7c, 0x46, 0x5b, + 0xc7, 0x28, 0xec, 0x01, 0x62, 0x82, 0xfe, 0x2a, + 0x22, 0xa3, 0x86, 0x4e, 0x47, 0xe2, 0x57, 0xf1, + 0xb4, 0x58, 0x94, 0x89, 0xe5, 0xf1, 0xcd, 0x4d, + 0x90, 0xd1, 0xa4, 0x4c, 0x34, 0x5d, 0xde, 0xdc, + 0x39, 0x63, 0x8b, 0x85, 0xfd, 0x02, 0x21, 0xf1, + 0x12, 0xa3, 0x6d, 0x65, 0x0f, 0x8d, 0xe5, 0xcd, + 0x70, 0xd5, 0x1d, 0xf8, 0x65, 0x99, 0xfb, 0xe8, + 0xb5, 0x5a, 0x09, 0x39, 0x9e, 0x09, 0x45, 0x62, + 0x22, 0x1d, 0xa2, 0x46, 0xbf, 0x75, 0x20, 0xd1, + 0xe7, 0xb0, 0x06, 0x68, 0xc3, 0x50, 0x48, 0xfc, + 0xf8, 0x5c, 0x67, 0x69, 0x68, 0x66, 0xb6, 0x81, + 0x95, 0x91, 0x81, 0x3d, 0xf6, 0x34, 0xd9, 0x4b, + 0x06, 0x35, 0x17, 0x59, 0x89, 0x18, 0x74, 0x32, + 0x50, 0xcf, 0x81, 0x16, 0x8e, 0x53, 0x9d, 0x1c, + 0xad, 0x2d, 0x8e, 0x16, 0x41, 0xda, 0xca, 0xab, + 0x78, 0x0d, 0xc9, 0x49, 0x61, 0xaa, 0x18, 0xf4, + 0x56, 0x48, 0x29, 0x8c, 0xe3, 0x9a, 0x7d, 0x58, + 0xf8, 0x99, 0x72, 0xf1, 0x78, 0xa8, 0x5a, 0x97, + 0xe3, 0x2a, 0xc6, 0xa9, 0x59, 0xde, 0xcc, 0x62, + 0xfb, 0xab, 0xc5, 0x9a, 0x0b, 0xc7, 0x16, 0x8f, + 0x18, 0x20, 0x6e, 0x01, 0x7e, 0x04, 0xef, 0x72, + 0x83, 0x61, 0xb8, 0x1a, 0x77, 0x0f, 0xd1, 0xa9, + 0x75, 0xe0, 0x4a, 0x11, 0x69, 0x9d, 0xb6, 0xc9, + 0x2e, 0xd3, 0xbf, 0xe2, 0x5b, 0x24, 0x77, 0x30, + 0x85, 0x91, 0xef, 0xa8, 0x93, 0x4e, 0xad, 0x99, + 0xad, 0xcb, 0x6d, 0x9d, 0x8f, 0xd8, 0x0f, 0xe5, + 0x41, 0xd9, 0x9e, 0x0b, 0xce, 0x33, 0xd9, 0xbb, + 0x87, 0x66, 0x2c, 0xa3, 0x0b, 0x68, 0x1b, 0xb0, + 0x71, 0x30, 0xfa, 0x15, 0x2e, 0xe8, 0xc1, 0x99, + 0x71, 0x01, 0xcc, 0xdb, 0x6f, 0x9f, 0x8a, 0xfd, + 0xb4, 0x0f, 0x35, 0xa1, 0x36, 0xf4, 0x3a, 0xc4, + 0x17, 0x77, 0x43, 0x60, 0x10, 0x18, 0xb4, 0xc2, + 0xe5, 0xc0, 0x64, 0xd8, 0x38, 0x7c, 0x05, 0x9a, + 0xfb, 0x2b, 0xb3, 0x9b, 0x9e, 0x34, 0x6b, 0x4b, + 0xc8, 0x3b, 0x77, 0xe0, 0x6f, 0x08, 0xa1, 0x7b, + 0x66, 0x69, 0x2f, 0xdb, 0x34, 0x9e, 0x98, 0x90, + 0x5b, 0x4d, 0x7b, 0xa2, 0x32, 0x8e, 0x64, 0xe6, + 0x0d, 0x75, 0xc9, 0x96, 0xe3, 0x57, 0xba, 0xad, + 0x3e, 0x3b, 0x23, 0xfb, 0x9e, 0x7f, 0xc0, 0x3c, + 0xd5, 0x41, 0x9c, 0xfb, 0xbc, 0xb3, 0x52, 0x49 +#endif +}; +#endif +#endif + +int test_wc_dilithium_public_der_decode(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + defined(WOLFSSL_DILITHIUM_PUBLIC_KEY) + dilithium_key* key; + word32 idx = 0; + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + + ExpectIntEQ(wc_dilithium_init(key), 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); +#endif + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(ml_dsa_public_der, &idx, key, + (word32)sizeof(ml_dsa_public_der)), 0); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + idx = 0; +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); +#endif + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(dilithium_public_der, &idx, key, + (word32)sizeof(dilithium_public_der)), 0); +#endif + + wc_dilithium_free(key); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_der(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_ASN1) && \ + !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) +#define DILITHIUM_MAX_DER_SIZE 8192 + dilithium_key* key; + WC_RNG rng; + byte* der = NULL; + int len; + int pubLen; + int pubDerLen; + int privDerLen; + int keyDerLen; + word32 idx = 0; + +#ifndef WOLFSSL_NO_ML_DSA_44 + pubLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE; + pubDerLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE + 22; + privDerLen = DILITHIUM_LEVEL2_KEY_SIZE + 28; + keyDerLen = DILITHIUM_LEVEL2_PUB_KEY_SIZE + DILITHIUM_LEVEL2_KEY_SIZE + 32; +#elif !defined(WOLFSSL_NO_ML_DSA_65) + pubLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE; + pubDerLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE + 22; + privDerLen = DILITHIUM_LEVEL3_KEY_SIZE + 28; + keyDerLen = DILITHIUM_LEVEL3_PUB_KEY_SIZE + DILITHIUM_LEVEL3_KEY_SIZE + 32; +#else + pubLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE; + pubDerLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE + 22; + privDerLen = DILITHIUM_LEVEL5_KEY_SIZE + 28; + keyDerLen = DILITHIUM_LEVEL5_PUB_KEY_SIZE + DILITHIUM_LEVEL5_KEY_SIZE + 32; +#endif + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + der = (byte*)XMALLOC(DILITHIUM_MAX_DER_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(der); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + if (der != NULL) { + XMEMSET(der, 0, sizeof(*der)); + } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_dilithium_init(key), 0); + + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, + 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* When security level is not set, we attempt to parse it from DER. Since + * the supplied DER is invalid, this should fail with ASN parsing error */ + idx = 0; +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, pubDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#else + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, pubDerLen), + WC_NO_ERR_TRACE(ASN_PARSE_E)); +#endif + idx = 0; +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, privDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#else + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, privDerLen), + WC_NO_ERR_TRACE(ASN_PARSE_E)); +#endif + +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); +#elif !defined(WOLFSSL_NO_ML_DSA_65) + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); +#else + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); +#endif + + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE, + 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_dilithium_make_key(key, &rng), 0); + + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, NULL, 0 , + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, der , 0 , + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, NULL, DILITHIUM_MAX_DER_SIZE, + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(NULL, der , DILITHIUM_MAX_DER_SIZE, + 0), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , der , 0 , + 0), WC_NO_ERR_TRACE(BUFFER_E)); + /* Get length only. */ + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, 0 , + 0), pubLen); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE, + 0), pubLen); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, 0 , + 1), pubDerLen); + ExpectIntEQ(wc_Dilithium_PublicKeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE, + 1), pubDerLen); + + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, NULL, + 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntGT(wc_Dilithium_PrivateKeyToDer(key , NULL, + 0 ), 0); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, der , + 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, NULL, + DILITHIUM_MAX_DER_SIZE), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(NULL, der , + DILITHIUM_MAX_DER_SIZE), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key , der , + 0 ), WC_NO_ERR_TRACE(BUFFER_E)); + /* Get length only. */ + ExpectIntEQ(wc_Dilithium_PrivateKeyToDer(key , NULL, + DILITHIUM_MAX_DER_SIZE), privDerLen); + + ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntGT(wc_Dilithium_KeyToDer(key , NULL, 0 ), + 0 ); + ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, der , 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, NULL, DILITHIUM_MAX_DER_SIZE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_KeyToDer(NULL, der , DILITHIUM_MAX_DER_SIZE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_KeyToDer(key , der , 0 ), + WC_NO_ERR_TRACE(BUFFER_E)); + /* Get length only. */ + ExpectIntEQ(wc_Dilithium_KeyToDer(key , NULL, DILITHIUM_MAX_DER_SIZE), + keyDerLen); + + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , NULL, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, &idx, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, key , 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, NULL, NULL, pubDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(NULL, &idx, key , pubDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , NULL, key , pubDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , &idx, NULL, pubDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der , &idx, key , 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , NULL, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, &idx, NULL, 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, key , 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, NULL, NULL, privDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(NULL, &idx, key , privDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , NULL, key , privDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , &idx, NULL, privDerLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der , &idx, key , 0 ), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(len = wc_Dilithium_PublicKeyToDer(key, der, + DILITHIUM_MAX_DER_SIZE, 0), pubLen); + ExpectIntEQ(wc_dilithium_import_public(der, len, key), 0); + + ExpectIntEQ(len = wc_Dilithium_PublicKeyToDer(key, der, + DILITHIUM_MAX_DER_SIZE, 1), pubDerLen); + idx = 0; + ExpectIntEQ(wc_Dilithium_PublicKeyDecode(der, &idx, key, len), 0); + + ExpectIntEQ(len = wc_Dilithium_PrivateKeyToDer(key, der, + DILITHIUM_MAX_DER_SIZE), privDerLen); + idx = 0; + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, len), 0); + + ExpectIntEQ(len = wc_Dilithium_KeyToDer(key, der, DILITHIUM_MAX_DER_SIZE), + keyDerLen); + idx = 0; + ExpectIntEQ(wc_Dilithium_PrivateKeyDecode(der, &idx, key, len), 0); + + + wc_dilithium_free(key); + wc_FreeRng(&rng); + + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_make_key_from_seed(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY) + dilithium_key* key; +#ifndef WOLFSSL_NO_ML_DSA_44 + static const byte seed_44[] = { + 0x93, 0xEF, 0x2E, 0x6E, 0xF1, 0xFB, 0x08, 0x99, + 0x9D, 0x14, 0x2A, 0xBE, 0x02, 0x95, 0x48, 0x23, + 0x70, 0xD3, 0xF4, 0x3B, 0xDB, 0x25, 0x4A, 0x78, + 0xE2, 0xB0, 0xD5, 0x16, 0x8E, 0xCA, 0x06, 0x5F + }; + static const byte pk_44[] = { + 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, + 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, + 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, + 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, + 0x23, 0x0A, 0x19, 0xD7, 0x5A, 0xDB, 0xDE, 0xD5, + 0x2D, 0xB8, 0x55, 0xE2, 0x52, 0xA7, 0x19, 0xFC, + 0xBD, 0x14, 0x7B, 0xA6, 0x7B, 0x2F, 0xAD, 0x14, + 0xED, 0x0E, 0x68, 0xFD, 0xFE, 0x8C, 0x65, 0xBA, + 0xDE, 0xAC, 0xB0, 0x91, 0x11, 0x93, 0xAD, 0xFA, + 0x87, 0x94, 0xD7, 0x8F, 0x8E, 0x3D, 0x66, 0x2A, + 0x1C, 0x49, 0xDA, 0x81, 0x9F, 0xD9, 0x59, 0xE7, + 0xF0, 0x78, 0xF2, 0x03, 0xC4, 0x56, 0xF8, 0xB6, + 0xE7, 0xC9, 0x41, 0x58, 0x98, 0xE5, 0x41, 0xC7, + 0x30, 0x32, 0xDB, 0xD6, 0x19, 0xEA, 0xF6, 0x0F, + 0x8D, 0x64, 0xF8, 0x68, 0x3D, 0xA9, 0x9E, 0xCA, + 0x51, 0x22, 0x0B, 0x0A, 0xCA, 0x28, 0x46, 0x40, + 0x99, 0xF5, 0x47, 0xC0, 0x27, 0x77, 0xBD, 0x37, + 0xD8, 0x4A, 0x59, 0xBD, 0x37, 0xED, 0x7A, 0x8A, + 0x92, 0x63, 0x3C, 0x75, 0xD0, 0x7C, 0x79, 0x3F, + 0xE7, 0x25, 0x2B, 0x58, 0x4A, 0xBF, 0x6A, 0x15, + 0xEE, 0x14, 0x50, 0x7E, 0x5E, 0x19, 0x3F, 0x89, + 0x86, 0x4D, 0x09, 0xAC, 0x87, 0x27, 0xA6, 0xD0, + 0x42, 0x1F, 0x0C, 0x19, 0xF0, 0xE2, 0xFB, 0xFC, + 0x21, 0x3D, 0x3F, 0xBD, 0x70, 0xF4, 0xF9, 0x76, + 0x2C, 0xEC, 0xFF, 0x23, 0x1E, 0x9C, 0x8A, 0x76, + 0x28, 0xD3, 0xF8, 0xB0, 0x85, 0x7B, 0x03, 0x2D, + 0x32, 0xDE, 0x62, 0xFF, 0x8E, 0xCB, 0xF4, 0x00, + 0x82, 0x89, 0xBF, 0x34, 0x40, 0x36, 0x65, 0xF8, + 0x1A, 0x08, 0x1A, 0xD5, 0xA8, 0x5A, 0x28, 0x2F, + 0x99, 0xBA, 0xB9, 0xE5, 0x38, 0x5A, 0xFB, 0xCC, + 0xCF, 0x44, 0xB7, 0x4C, 0x01, 0x96, 0xC7, 0x54, + 0x55, 0x27, 0xEC, 0x30, 0x26, 0xDA, 0x12, 0x80, + 0xC4, 0xEB, 0x37, 0xD0, 0x9C, 0xFE, 0x3E, 0xC4, + 0xB4, 0x91, 0x0B, 0x62, 0xEB, 0x98, 0x15, 0xA4, + 0x25, 0xC6, 0x59, 0x0F, 0xC4, 0xAD, 0x3F, 0xBB, + 0x22, 0x57, 0x52, 0xCC, 0x1F, 0xC5, 0x69, 0x3F, + 0x18, 0x7E, 0x7D, 0xEC, 0x4E, 0xEF, 0xBE, 0xB6, + 0xB9, 0x1B, 0xD9, 0x1C, 0x5E, 0x2E, 0xA6, 0xA9, + 0x1D, 0x14, 0xD0, 0x97, 0xBE, 0x20, 0x3F, 0xBA, + 0x0B, 0xF9, 0x37, 0xC9, 0x75, 0x07, 0xDC, 0x00, + 0x7C, 0x4C, 0xAA, 0x9B, 0x07, 0x85, 0x89, 0x29, + 0x66, 0xFF, 0x15, 0x90, 0x09, 0x24, 0xE5, 0x79, + 0xD4, 0xFB, 0xA0, 0x2B, 0xDA, 0x87, 0x55, 0x5F, + 0x07, 0x3D, 0xAE, 0x00, 0x51, 0x3E, 0x70, 0x80, + 0x9A, 0xBB, 0xC7, 0x11, 0xFB, 0xA2, 0xE7, 0x64, + 0x95, 0x77, 0xC4, 0x2A, 0xFD, 0xC2, 0x4B, 0xF7, + 0x41, 0x3E, 0x51, 0x26, 0x8A, 0xD6, 0xDB, 0x61, + 0x13, 0xB7, 0xD9, 0x19, 0x1A, 0xF9, 0xD0, 0x61, + 0xDB, 0xDE, 0xD5, 0xD6, 0x30, 0x87, 0x76, 0x50, + 0xC1, 0x24, 0xF1, 0x1B, 0xC4, 0xBD, 0xC3, 0xFD, + 0xC6, 0xA9, 0x00, 0xF6, 0x31, 0x26, 0xF9, 0x21, + 0xE8, 0x38, 0xAD, 0x0C, 0x22, 0x75, 0xA3, 0x38, + 0x9A, 0x39, 0xBD, 0x99, 0xA1, 0x34, 0x50, 0x45, + 0x50, 0x10, 0x1C, 0xD3, 0xE9, 0x5E, 0x6D, 0x14, + 0x96, 0xBE, 0x7D, 0xE6, 0x62, 0x7D, 0xF4, 0xFD, + 0x6C, 0x28, 0xBB, 0xF4, 0x0B, 0x30, 0xEF, 0xA9, + 0xB5, 0xC3, 0xD5, 0xC8, 0x5A, 0xB1, 0x4A, 0x65, + 0xC0, 0x2D, 0x6D, 0x47, 0x81, 0xFF, 0x13, 0xD3, + 0x28, 0x60, 0x85, 0x54, 0xB6, 0xD1, 0x5E, 0xD9, + 0x12, 0x89, 0xA6, 0xD5, 0x5A, 0xAC, 0x0C, 0x38, + 0xE3, 0x77, 0x06, 0xF7, 0x35, 0x5E, 0x9A, 0x4F, + 0xDA, 0x61, 0x5B, 0x87, 0x59, 0x26, 0xBF, 0xE5, + 0xA5, 0x9D, 0x9E, 0xF2, 0x73, 0xBF, 0x94, 0xA0, + 0x7C, 0xFA, 0x57, 0x31, 0x78, 0xF0, 0xE0, 0x04, + 0xB6, 0xE1, 0xEF, 0x0A, 0x83, 0x49, 0xE9, 0xBC, + 0xC0, 0x19, 0x81, 0xF2, 0x46, 0x0F, 0x0A, 0x27, + 0x43, 0xC2, 0x8D, 0x1E, 0x13, 0x8F, 0xFB, 0x76, + 0x5E, 0x7E, 0x33, 0x97, 0xB7, 0x91, 0x33, 0x35, + 0xD4, 0x02, 0xFE, 0x91, 0x80, 0x6A, 0xA8, 0xFC, + 0x81, 0x92, 0x53, 0xAF, 0x32, 0x69, 0x2F, 0xA6, + 0x51, 0xE8, 0x67, 0xF5, 0x90, 0x7E, 0xF4, 0x6F, + 0x00, 0x62, 0x5A, 0x03, 0x0E, 0xC9, 0x04, 0xED, + 0xAB, 0x21, 0x42, 0x6D, 0x59, 0x11, 0x9D, 0x2C, + 0xAA, 0x43, 0xBD, 0x93, 0x5D, 0xEC, 0x0A, 0x55, + 0x0C, 0x61, 0xEE, 0x4B, 0x27, 0x9C, 0x1C, 0xA3, + 0xA7, 0x9C, 0x79, 0xA6, 0x6E, 0x3F, 0x2D, 0x2F, + 0xAD, 0xB0, 0x0F, 0x59, 0xA3, 0xA4, 0x38, 0xAA, + 0x44, 0x57, 0x01, 0x06, 0x07, 0x30, 0x17, 0xFA, + 0x1C, 0x87, 0x57, 0x50, 0x01, 0x09, 0x72, 0x0D, + 0x12, 0x5B, 0xBA, 0x23, 0x1A, 0x0C, 0x36, 0x35, + 0x0C, 0x78, 0x08, 0x6D, 0xFD, 0xC8, 0xD6, 0x13, + 0xAE, 0xCA, 0x88, 0xC4, 0xCC, 0xAE, 0xB4, 0xA4, + 0x4D, 0x13, 0xAD, 0xB3, 0xC7, 0x17, 0xD6, 0x5C, + 0x82, 0xA3, 0x51, 0xB9, 0xB6, 0xEA, 0xBF, 0x6A, + 0x10, 0xF4, 0xB4, 0xE9, 0x62, 0x3E, 0x3A, 0x95, + 0xB4, 0xD4, 0x0A, 0x12, 0xA8, 0x18, 0xAC, 0x6B, + 0x38, 0x22, 0xDB, 0x82, 0xFB, 0x05, 0xDC, 0x42, + 0x02, 0x64, 0x8B, 0x44, 0x54, 0x68, 0x9A, 0xEB, + 0x69, 0xEA, 0x32, 0x5F, 0x03, 0xE3, 0x5D, 0xEF, + 0xA5, 0x47, 0x08, 0x48, 0x14, 0x20, 0xC6, 0xD6, + 0x97, 0xBB, 0x91, 0x2F, 0xCA, 0x0D, 0x3F, 0x19, + 0x2E, 0xF2, 0x97, 0xDF, 0xE7, 0x7F, 0xF3, 0x6B, + 0x21, 0x03, 0xF1, 0xAD, 0x1A, 0xEE, 0xCE, 0xD1, + 0xC8, 0x14, 0xC2, 0xCD, 0x7E, 0xF1, 0x6B, 0xCE, + 0x47, 0x6A, 0xD0, 0x4F, 0x94, 0x1A, 0xFC, 0x79, + 0xE3, 0x29, 0x54, 0x74, 0xA4, 0x10, 0x62, 0x51, + 0x8C, 0x00, 0x37, 0x86, 0x09, 0x34, 0xF0, 0xE5, + 0xE6, 0x52, 0xF7, 0x27, 0x49, 0xA6, 0x98, 0x63, + 0x2A, 0x09, 0x91, 0xF6, 0x13, 0xF5, 0xCB, 0x96, + 0xCA, 0x11, 0x78, 0xF9, 0x74, 0xF2, 0xC4, 0xAA, + 0x0C, 0xE6, 0x3D, 0xC2, 0x4E, 0x36, 0x4C, 0x92, + 0xA6, 0x43, 0xB9, 0x0A, 0x5F, 0x85, 0xA6, 0x2F, + 0xD4, 0xD8, 0xD2, 0xB1, 0x93, 0xD2, 0x9B, 0x18, + 0xBE, 0xDE, 0x26, 0x53, 0xFC, 0x5D, 0x3F, 0x24, + 0xF5, 0xB2, 0xC0, 0x18, 0xDB, 0xBC, 0xB6, 0xEF, + 0x00, 0xF3, 0x05, 0xBF, 0x93, 0x66, 0x6B, 0xD4, + 0x7F, 0xEA, 0x91, 0x93, 0xBC, 0x23, 0x3D, 0xB3, + 0x91, 0x21, 0x44, 0x2E, 0x93, 0x8D, 0xA5, 0xDD, + 0x07, 0xEE, 0x6E, 0x87, 0x9C, 0x5B, 0x9D, 0xFF, + 0x41, 0xEC, 0xEE, 0x5E, 0x05, 0x89, 0xAE, 0x61, + 0x75, 0xFF, 0x5E, 0xC6, 0xF6, 0xD2, 0x62, 0x9F, + 0x56, 0xB1, 0x8B, 0x4D, 0xE6, 0x6F, 0xCB, 0x13, + 0xDF, 0x04, 0x00, 0xA7, 0x97, 0xC9, 0x22, 0x70, + 0xF6, 0x9B, 0xDE, 0xBD, 0xDC, 0xB8, 0x8C, 0x42, + 0x48, 0x91, 0x9B, 0x56, 0xCD, 0xA7, 0x0B, 0x8A, + 0xC4, 0xF9, 0x42, 0x9C, 0x29, 0x2D, 0xA9, 0x4D, + 0x64, 0x78, 0x28, 0x07, 0x64, 0xFE, 0x23, 0x86, + 0xFC, 0x38, 0xCB, 0x09, 0x31, 0x45, 0x88, 0x39, + 0xEF, 0x4E, 0x7D, 0xE8, 0xF0, 0x68, 0x9D, 0x99, + 0x80, 0x59, 0x88, 0xC7, 0xF9, 0x61, 0x11, 0x85, + 0x2C, 0x89, 0x29, 0xE5, 0xA5, 0x40, 0xD3, 0xB7, + 0x8D, 0x71, 0x2D, 0xEC, 0xC3, 0x96, 0xFE, 0xF3, + 0xEC, 0x34, 0x40, 0x21, 0x84, 0xE4, 0xFD, 0x29, + 0xF3, 0x63, 0xEA, 0x80, 0xF6, 0xFC, 0x50, 0xBA, + 0x9A, 0x11, 0x35, 0x1A, 0xCE, 0xEA, 0x8F, 0xE6, + 0x8D, 0x54, 0x1E, 0x1A, 0xA5, 0x84, 0x8D, 0x9F, + 0x6E, 0x61, 0xDF, 0xB6, 0x2B, 0x2F, 0x23, 0xBC, + 0x50, 0x81, 0xE8, 0x2F, 0x76, 0x22, 0x6E, 0x03, + 0x28, 0x49, 0x82, 0xEC, 0x48, 0x48, 0x12, 0x09, + 0xB1, 0xA7, 0xD4, 0xC8, 0x79, 0x7E, 0x44, 0xBF, + 0xA8, 0x70, 0xB2, 0x20, 0x04, 0xDB, 0x74, 0xBD, + 0x7D, 0x47, 0x8D, 0x5B, 0x36, 0x14, 0xD2, 0xB1, + 0xDA, 0x75, 0x02, 0xB3, 0x98, 0xEB, 0x9D, 0xA8, + 0x0D, 0x06, 0x46, 0x1E, 0x90, 0xE0, 0x30, 0x60, + 0x44, 0x6A, 0xB4, 0xA8, 0x23, 0x84, 0x32, 0xBF, + 0xAF, 0x75, 0x2F, 0x39, 0x17, 0x91, 0x21, 0x4F, + 0x1E, 0x6B, 0x63, 0x59, 0x0D, 0x53, 0x60, 0x60, + 0xD1, 0xC2, 0x45, 0x30, 0x7B, 0xC5, 0xC1, 0xBA, + 0xC4, 0xAA, 0xA0, 0x99, 0xD3, 0x6B, 0xB6, 0xDC, + 0xBC, 0x97, 0x3C, 0xF2, 0xE6, 0x9F, 0x27, 0x34, + 0xD0, 0xF2, 0x9A, 0xEE, 0xC4, 0x56, 0x7B, 0x99, + 0xA1, 0x6B, 0xC1, 0x7C, 0x6C, 0xDD, 0xAC, 0xEF, + 0xE4, 0x99, 0x27, 0xFB, 0x14, 0xE7, 0xD9, 0x8D, + 0xD4, 0x26, 0x35, 0x19, 0x46, 0x9C, 0xCA, 0x3D, + 0xB4, 0x67, 0x9A, 0x68, 0xCE, 0xED, 0xA9, 0x55, + 0x59, 0x22, 0x10, 0xFC, 0x49, 0xAA, 0x5F, 0xBE, + 0x93, 0x4C, 0xC7, 0x3D, 0x84, 0xE4, 0xBA, 0x54, + 0x78, 0x00, 0x2D, 0x68, 0x90, 0x98, 0x90, 0x68, + 0xEF, 0x8F, 0xC9, 0x8C, 0x25, 0x32, 0xB8, 0x3B, + 0xF3, 0xCB, 0x9E, 0xF0, 0x28, 0x93, 0xC2, 0x15, + 0x24, 0x26, 0xB9, 0xD1, 0xA9, 0x47, 0x34, 0xDF, + 0xB4, 0xF9, 0x11, 0x35, 0x14, 0x3C, 0x9E, 0xED, + 0x18, 0xFD, 0x51, 0xAE, 0x87, 0x5D, 0x07, 0xA2, + 0x37, 0x75, 0x60, 0x6A, 0x73, 0x4F, 0xBA, 0x98, + 0xC0, 0x63, 0xB4, 0xA1, 0x62, 0x2E, 0x7F, 0xF2, + 0x1A, 0xA7, 0xE6, 0x52, 0xA3, 0xD6, 0xC1, 0x9F, + 0xE0, 0xDC, 0x67, 0x61, 0xB7, 0xD3, 0x53, 0x02, + 0xBF, 0x21, 0x4D, 0x30, 0x79, 0xF7, 0x60, 0x51, + 0x08, 0x2A, 0x87, 0x59, 0x29, 0x92, 0x0D, 0xC3, + 0xB3, 0xCB, 0x43, 0x21, 0x1A, 0x23, 0xA4, 0x3A, + 0x50, 0x33, 0x2F, 0xAF, 0x1A, 0xC2, 0x19, 0x1E, + 0x71, 0x71, 0x25, 0xF6, 0x3E, 0x25, 0x86, 0xC4, + 0xD8, 0x6D, 0xCA, 0x6B, 0xCD, 0x3D, 0x03, 0x8F, + 0x9D, 0x3A, 0x7B, 0x66, 0xCB, 0xC7, 0xDF, 0x34 + }; + static const byte sk_44[] = { + 0xBC, 0x5F, 0xF8, 0x10, 0xEB, 0x08, 0x90, 0x48, + 0xB8, 0xAB, 0x30, 0x20, 0xA7, 0xBD, 0x3B, 0x16, + 0xC0, 0xE0, 0xCA, 0x3D, 0x6B, 0x97, 0xE4, 0x64, + 0x6C, 0x2C, 0xCA, 0xE0, 0xBB, 0xF1, 0x9E, 0xF7, + 0xBA, 0x2B, 0x57, 0xC4, 0x46, 0x55, 0x6E, 0xE2, + 0xB7, 0x2C, 0x78, 0xB9, 0x6B, 0xB7, 0xA8, 0x50, + 0x3D, 0xE4, 0x0A, 0xFB, 0x54, 0x18, 0x4E, 0x3B, + 0x54, 0x63, 0xC2, 0x1A, 0xF7, 0x48, 0x53, 0x23, + 0xDF, 0x98, 0xF0, 0x16, 0x0A, 0xE5, 0xD1, 0x37, + 0x51, 0x27, 0x25, 0xF8, 0x9D, 0x56, 0x3B, 0xC9, + 0xA1, 0x89, 0xD3, 0x1D, 0x20, 0xB3, 0xB3, 0xC8, + 0xFF, 0xAA, 0xF5, 0xE4, 0x86, 0xE7, 0x90, 0x51, + 0xF6, 0xF3, 0x60, 0x5C, 0xCA, 0x25, 0x69, 0xFD, + 0xB4, 0x6B, 0x33, 0x18, 0xD2, 0x38, 0x42, 0xCE, + 0x40, 0xD6, 0x43, 0x86, 0x13, 0xF6, 0x8B, 0x45, + 0x5B, 0x0D, 0x3B, 0xCA, 0x0E, 0x05, 0x0D, 0x4D, + 0x11, 0x99, 0x88, 0xA2, 0xC4, 0x80, 0x1B, 0x90, + 0x84, 0xE0, 0xB0, 0x48, 0xC9, 0x28, 0x09, 0x22, + 0x30, 0x90, 0x24, 0x06, 0x49, 0x98, 0x40, 0x65, + 0x5A, 0x26, 0x8A, 0xDA, 0x32, 0x90, 0xDA, 0x48, + 0x08, 0x22, 0x81, 0x90, 0xC8, 0x14, 0x61, 0xDC, + 0x16, 0x6A, 0x21, 0x47, 0x8E, 0x08, 0xB2, 0x21, + 0xE3, 0x08, 0x68, 0x1A, 0x02, 0x44, 0x14, 0xC6, + 0x65, 0xE1, 0x98, 0x71, 0x90, 0xC6, 0x69, 0x0C, + 0x15, 0x44, 0xC9, 0xA0, 0x11, 0xCC, 0x34, 0x71, + 0x83, 0x40, 0x45, 0x00, 0x12, 0x4D, 0x91, 0x08, + 0x00, 0x83, 0x36, 0x84, 0x12, 0x85, 0x4C, 0xCC, + 0x00, 0x41, 0x09, 0x90, 0x70, 0x18, 0x95, 0x00, + 0xA2, 0xB2, 0x85, 0x94, 0x26, 0x41, 0x0B, 0x00, + 0x41, 0x0A, 0xB9, 0x80, 0xC0, 0xC6, 0x10, 0x0C, + 0x33, 0x29, 0xA3, 0xA6, 0x28, 0x1C, 0x26, 0x10, + 0x1A, 0x37, 0x49, 0x13, 0x35, 0x8A, 0x0B, 0x29, + 0x2E, 0x82, 0xA2, 0x70, 0x8B, 0x38, 0x49, 0x94, + 0x04, 0x80, 0x9B, 0x26, 0x10, 0xA4, 0x80, 0x30, + 0x04, 0x37, 0x0C, 0x48, 0xB2, 0x60, 0x04, 0x17, + 0x2E, 0x19, 0x49, 0x64, 0xC8, 0xC4, 0x64, 0x1A, + 0x96, 0x60, 0x10, 0x83, 0x6D, 0x20, 0x38, 0x22, + 0x49, 0x06, 0x08, 0x1B, 0xB7, 0x20, 0x01, 0x48, + 0x4D, 0xE1, 0x10, 0x49, 0x08, 0x38, 0x44, 0x4C, + 0x16, 0x8E, 0x04, 0xB2, 0x2C, 0x09, 0x91, 0x50, + 0x83, 0x36, 0x06, 0x5C, 0x02, 0x8C, 0x8A, 0x38, + 0x05, 0x1A, 0xB5, 0x81, 0x82, 0xC0, 0x09, 0x51, + 0x12, 0x72, 0x22, 0x10, 0x0D, 0x04, 0x08, 0x2A, + 0xA4, 0x84, 0x10, 0x58, 0x08, 0x52, 0x08, 0x26, + 0x0A, 0x02, 0xB6, 0x2D, 0x8A, 0x12, 0x0E, 0x14, + 0x22, 0x10, 0x48, 0x44, 0x0A, 0x14, 0x23, 0x91, + 0x50, 0x40, 0x90, 0x0A, 0x27, 0x92, 0xA4, 0xB0, + 0x60, 0x08, 0x84, 0x11, 0xC4, 0x40, 0x22, 0x63, + 0x46, 0x2A, 0xDA, 0xA6, 0x90, 0xC1, 0xB2, 0x30, + 0x50, 0x10, 0x00, 0xA0, 0xB4, 0x6C, 0x53, 0xB4, + 0x50, 0x13, 0x05, 0x8D, 0x02, 0x31, 0x0E, 0x08, + 0x20, 0x10, 0x91, 0xC8, 0x4C, 0x22, 0xA7, 0x50, + 0xC2, 0xA6, 0x70, 0x92, 0x46, 0x41, 0x63, 0x16, + 0x8C, 0x84, 0x00, 0x11, 0x0B, 0x81, 0x90, 0x13, + 0x83, 0x71, 0x21, 0x85, 0x30, 0x1B, 0x18, 0x46, + 0xA3, 0x10, 0x84, 0x14, 0x43, 0x40, 0x80, 0x98, + 0x25, 0x0C, 0x27, 0x2C, 0x94, 0x42, 0x41, 0xA2, + 0x88, 0x45, 0x02, 0x13, 0x05, 0x44, 0xB6, 0x44, + 0x52, 0x22, 0x92, 0xD0, 0x80, 0x50, 0x4B, 0xA6, + 0x04, 0x84, 0x36, 0x70, 0x09, 0xB2, 0x4D, 0x19, + 0xA8, 0x84, 0x24, 0x93, 0x49, 0x94, 0xA2, 0x80, + 0x49, 0xB4, 0x48, 0x91, 0x28, 0x64, 0xA1, 0xC8, + 0x65, 0x4B, 0x82, 0x85, 0x93, 0x30, 0x06, 0x63, + 0x12, 0x66, 0x10, 0x37, 0x01, 0x4A, 0x40, 0x80, + 0x18, 0x18, 0x90, 0x44, 0xC4, 0x0D, 0x4B, 0x28, + 0x81, 0xA2, 0x06, 0x40, 0xD4, 0x30, 0x2C, 0x1B, + 0x96, 0x4C, 0xE1, 0xB2, 0x60, 0x44, 0x28, 0x41, + 0xD8, 0x30, 0x65, 0x24, 0x09, 0x04, 0x64, 0x00, + 0x89, 0x63, 0xC2, 0x24, 0xC0, 0x00, 0x49, 0x92, + 0x16, 0x52, 0x23, 0xC1, 0x29, 0x42, 0x26, 0x91, + 0xD0, 0x38, 0x31, 0x83, 0x28, 0x28, 0x4C, 0x28, + 0x61, 0x1A, 0xB2, 0x88, 0x80, 0x26, 0x2D, 0x0C, + 0x19, 0x52, 0x5B, 0x22, 0x60, 0x8A, 0x92, 0x28, + 0xA2, 0x18, 0x90, 0xD9, 0x42, 0x52, 0xCB, 0x40, + 0x8E, 0x9B, 0x16, 0x06, 0x4B, 0xC8, 0x05, 0xE0, + 0x06, 0x6C, 0x49, 0xC2, 0x25, 0xD4, 0x22, 0x69, + 0x14, 0x11, 0x69, 0x1C, 0x34, 0x90, 0x0C, 0x85, + 0x8D, 0x1C, 0x84, 0x49, 0x63, 0x10, 0x85, 0x08, + 0x34, 0x89, 0x58, 0x16, 0x66, 0xA0, 0x38, 0x68, + 0x0B, 0xA2, 0x50, 0xE0, 0x84, 0x61, 0xC1, 0x26, + 0x6E, 0xC9, 0x14, 0x6A, 0xC0, 0xC0, 0x31, 0x84, + 0x18, 0x2E, 0xDC, 0x16, 0x52, 0x14, 0x18, 0x91, + 0x0A, 0x39, 0x2C, 0x83, 0xA6, 0x8D, 0x12, 0x29, + 0x62, 0x92, 0xA6, 0x60, 0x08, 0xA5, 0x10, 0xD9, + 0xC8, 0x4D, 0x24, 0x48, 0x24, 0x83, 0x98, 0x24, + 0x1A, 0x44, 0x42, 0x08, 0x08, 0x48, 0xC8, 0x96, + 0x2D, 0xA1, 0x10, 0x20, 0x60, 0x24, 0x51, 0x9C, + 0x30, 0x11, 0xDB, 0xC8, 0x04, 0x11, 0x22, 0x51, + 0x18, 0x04, 0x68, 0xE2, 0x24, 0x4E, 0x10, 0xC4, + 0x0D, 0x18, 0x37, 0x29, 0x11, 0xB7, 0x84, 0x43, + 0x84, 0x8D, 0x54, 0x40, 0x70, 0x64, 0x80, 0x70, + 0x21, 0xB0, 0x4D, 0x00, 0x26, 0x62, 0x00, 0x45, + 0x25, 0x1B, 0x83, 0x84, 0x84, 0x80, 0x70, 0x19, + 0xB0, 0x04, 0x0A, 0xC9, 0x28, 0xCA, 0x80, 0x05, + 0x1B, 0x21, 0x4E, 0xD4, 0xB0, 0x49, 0x8C, 0x96, + 0x6C, 0xD0, 0x96, 0x25, 0x48, 0x32, 0x72, 0x54, + 0x12, 0x05, 0x09, 0x98, 0x8C, 0x8A, 0x32, 0x6D, + 0xC0, 0x04, 0x31, 0x63, 0xC8, 0x61, 0xC8, 0xC2, + 0x68, 0x9B, 0xB4, 0x8C, 0x5B, 0xC0, 0x2D, 0xC3, + 0xA8, 0x8D, 0x1B, 0x16, 0x6C, 0xD8, 0x96, 0x41, + 0x98, 0x34, 0x02, 0x44, 0x14, 0x2C, 0xD3, 0x86, + 0x44, 0x0A, 0x18, 0x8A, 0x1A, 0x46, 0x92, 0x1A, + 0xB7, 0x08, 0x4C, 0x34, 0x24, 0x21, 0x91, 0x0D, + 0x9A, 0x96, 0x2D, 0xCB, 0x24, 0x22, 0x92, 0x86, + 0x08, 0x98, 0xA0, 0x50, 0xDA, 0x44, 0x6A, 0x19, + 0xB1, 0x05, 0x8B, 0x20, 0x6E, 0x24, 0xC4, 0x81, + 0xC9, 0x98, 0x40, 0x22, 0x19, 0x32, 0x11, 0x05, + 0x69, 0xD3, 0x94, 0x91, 0x08, 0xA7, 0x71, 0xDB, + 0xC0, 0x70, 0x02, 0xB8, 0x28, 0x83, 0xB4, 0x49, + 0xA0, 0x44, 0x8A, 0x0B, 0xB4, 0x10, 0x61, 0x02, + 0x48, 0x1C, 0xA6, 0x11, 0xE3, 0x20, 0x66, 0x40, + 0xB4, 0x70, 0x03, 0xB6, 0x04, 0x60, 0x48, 0x21, + 0x5B, 0x21, 0x83, 0x39, 0x88, 0xDB, 0x67, 0x4A, + 0x61, 0xE7, 0xC2, 0x08, 0xDE, 0xBE, 0x8D, 0xAE, + 0x41, 0x19, 0xAF, 0xB0, 0x26, 0x61, 0xA6, 0x9A, + 0xBC, 0x8B, 0xDD, 0x24, 0x5B, 0x5D, 0x0F, 0xB1, + 0xA2, 0x67, 0x01, 0xC9, 0xB9, 0xC9, 0xA8, 0xF7, + 0xD9, 0xFC, 0xD4, 0xC2, 0x87, 0xFF, 0x3D, 0x60, + 0x8C, 0xF2, 0x58, 0x28, 0x2A, 0x1E, 0xB2, 0x9F, + 0x93, 0x04, 0xE8, 0x9C, 0x14, 0xF3, 0xE1, 0xCE, + 0x56, 0x12, 0x89, 0x1C, 0x60, 0x29, 0x34, 0x52, + 0x60, 0x06, 0xC9, 0x9B, 0x4A, 0xA2, 0x39, 0x9B, + 0xF4, 0x94, 0xBC, 0xF8, 0xDF, 0x61, 0xD6, 0xDF, + 0x4C, 0x69, 0xBC, 0x93, 0xE0, 0x2D, 0x49, 0x95, + 0xE2, 0xF7, 0x6E, 0x9F, 0xDA, 0x4E, 0xF6, 0x7E, + 0xB7, 0x25, 0x6C, 0xA8, 0x9A, 0x3F, 0x38, 0xFE, + 0xB2, 0xE9, 0xDF, 0x6A, 0x01, 0x0D, 0xC1, 0xC1, + 0x50, 0x02, 0xFB, 0xD4, 0x56, 0xFA, 0xE8, 0x84, + 0x82, 0x1A, 0x34, 0x16, 0x6B, 0x06, 0x58, 0xA2, + 0x41, 0x25, 0x95, 0x71, 0x8E, 0x14, 0x9B, 0xBC, + 0x6E, 0x22, 0x0A, 0xEE, 0x26, 0x8D, 0x4D, 0x82, + 0x18, 0xC2, 0x5F, 0x6A, 0x95, 0x7D, 0xE5, 0xB2, + 0x6C, 0xEA, 0x7B, 0x14, 0xCB, 0x32, 0x0D, 0x89, + 0xE1, 0x69, 0x9A, 0xD9, 0xF2, 0xB3, 0x89, 0xC6, + 0x7E, 0xF9, 0x33, 0x86, 0xA2, 0xC6, 0x5F, 0x2C, + 0x32, 0x23, 0x33, 0x67, 0xD7, 0x6A, 0xE4, 0xAB, + 0x2A, 0xBB, 0xD4, 0x22, 0xE9, 0x8E, 0x49, 0x3D, + 0xCC, 0x3C, 0xC5, 0xDA, 0xF6, 0x89, 0xB6, 0x5C, + 0xC4, 0xBC, 0x3F, 0xA5, 0x1C, 0x9C, 0x59, 0xEE, + 0xAF, 0x07, 0x55, 0x17, 0x0C, 0x24, 0x95, 0x80, + 0x4D, 0x02, 0xA6, 0x07, 0xC5, 0xBF, 0x88, 0x7C, + 0xD8, 0x6A, 0x03, 0x89, 0xF2, 0x8F, 0xC9, 0x72, + 0x5E, 0xF4, 0x60, 0x03, 0xF1, 0x3B, 0x01, 0x87, + 0x68, 0x4B, 0xEA, 0xB1, 0xF2, 0x4A, 0x29, 0xF5, + 0x31, 0x96, 0x01, 0xF3, 0x09, 0xC9, 0x1D, 0x2A, + 0x33, 0x3D, 0x1B, 0x88, 0xDF, 0x20, 0x5A, 0x51, + 0x20, 0xC4, 0xCF, 0xDC, 0x22, 0x38, 0x12, 0x4E, + 0x4E, 0x2B, 0x47, 0xD0, 0xB5, 0xE6, 0x6A, 0x65, + 0x4F, 0xE4, 0xCC, 0xCB, 0x07, 0x8F, 0x07, 0xCB, + 0xD4, 0x55, 0xD1, 0x5D, 0x3E, 0xEC, 0x7D, 0xA2, + 0x74, 0xD2, 0x4A, 0x2E, 0x57, 0x18, 0x84, 0xDE, + 0x41, 0xC3, 0xA9, 0xA4, 0xFD, 0xB3, 0xF6, 0x09, + 0x8A, 0x17, 0x2C, 0x30, 0x96, 0x80, 0x39, 0xBD, + 0x0E, 0x4E, 0xB3, 0xE2, 0xFB, 0x6D, 0x6E, 0xEE, + 0xD3, 0x9E, 0x0B, 0x63, 0x62, 0xD5, 0x4E, 0x7B, + 0x88, 0x95, 0x98, 0x69, 0xDD, 0xD5, 0xD8, 0x73, + 0xD9, 0x65, 0x24, 0x01, 0xA2, 0x9F, 0x27, 0xA2, + 0x8E, 0xA6, 0x6D, 0x32, 0xCC, 0xB0, 0xEF, 0x3B, + 0xF4, 0x60, 0x0F, 0x75, 0x57, 0xEE, 0x8D, 0x54, + 0xBF, 0x1D, 0xAD, 0x18, 0xF4, 0x5D, 0xDC, 0xD4, + 0xC9, 0xED, 0x57, 0xB1, 0x3E, 0x44, 0x5B, 0xF1, + 0x22, 0xA4, 0x3F, 0x53, 0x94, 0x03, 0x89, 0xBF, + 0x87, 0x14, 0xFF, 0xAC, 0x72, 0x1E, 0x59, 0x31, + 0x7E, 0x4B, 0x70, 0x50, 0x0A, 0xD0, 0xD1, 0xB9, + 0xA6, 0x27, 0x05, 0x4D, 0x31, 0x93, 0x20, 0x8C, + 0x77, 0x4E, 0x0B, 0x20, 0xED, 0x04, 0x1A, 0x8C, + 0x05, 0x5E, 0x75, 0xEE, 0xCD, 0x37, 0x38, 0xF0, + 0x07, 0x15, 0x8F, 0xAD, 0xDF, 0xCA, 0x5F, 0x43, + 0x56, 0x2D, 0x63, 0x6A, 0x5A, 0xCF, 0x3A, 0x39, + 0x83, 0xD3, 0xCF, 0xEB, 0xCA, 0x10, 0xB8, 0x13, + 0xF9, 0xF6, 0x52, 0x65, 0x19, 0x19, 0x9A, 0x03, + 0x13, 0xCD, 0x1D, 0xE1, 0x3F, 0x06, 0xAD, 0x53, + 0x86, 0xE1, 0xE1, 0x20, 0x79, 0x5F, 0xD2, 0x67, + 0xB7, 0xF4, 0x20, 0x19, 0xD8, 0x4D, 0xF6, 0xCD, + 0x1B, 0xF9, 0x19, 0x30, 0xFC, 0xA7, 0xAF, 0xD5, + 0x2E, 0x80, 0x70, 0x0F, 0x4C, 0xF5, 0xCD, 0xC3, + 0x8A, 0x5F, 0x7A, 0x57, 0x49, 0x79, 0x1C, 0x2F, + 0xDF, 0xFC, 0x4A, 0x10, 0x75, 0x3C, 0x24, 0xDB, + 0x19, 0xE8, 0xEB, 0x65, 0x1C, 0x5B, 0x36, 0x32, + 0x00, 0xF0, 0xB5, 0xD1, 0x69, 0x94, 0x70, 0x26, + 0xE9, 0xF7, 0x4F, 0x01, 0x2D, 0xC7, 0xC5, 0xB3, + 0x39, 0xDD, 0x49, 0xD2, 0x61, 0xCA, 0x1D, 0x37, + 0xF8, 0xF2, 0x83, 0x46, 0xE6, 0x19, 0x78, 0x05, + 0x4F, 0x45, 0xAE, 0xE4, 0x36, 0xDC, 0xCB, 0xE7, + 0xBF, 0xAF, 0xE0, 0x7C, 0xE9, 0xA8, 0xB8, 0x3C, + 0x90, 0xA2, 0x68, 0x6F, 0xA9, 0x54, 0x02, 0x85, + 0x09, 0x25, 0xC8, 0x58, 0x2B, 0xC9, 0xB7, 0x34, + 0xE4, 0xEC, 0xA1, 0xF7, 0xB2, 0x0B, 0x08, 0x6F, + 0x12, 0x9F, 0x27, 0x7A, 0x5C, 0xBD, 0xAA, 0x96, + 0x3C, 0x92, 0x71, 0x7E, 0xF7, 0x0E, 0xC1, 0x9B, + 0xF3, 0xDB, 0xC6, 0xDA, 0x20, 0x3A, 0xD9, 0x0F, + 0x3B, 0x13, 0xBB, 0xC2, 0x2F, 0xBD, 0x98, 0x0B, + 0xB1, 0xB9, 0xD3, 0xA3, 0x44, 0x52, 0xB3, 0x35, + 0x70, 0x21, 0xCE, 0x36, 0x13, 0x58, 0x4E, 0x09, + 0x36, 0xBF, 0x1D, 0x09, 0x42, 0x09, 0x37, 0x81, + 0x5E, 0x11, 0xCC, 0x5D, 0x5D, 0xDB, 0x4B, 0xF1, + 0xD8, 0x30, 0xC4, 0xF8, 0x3F, 0x30, 0xE5, 0x15, + 0x92, 0x1C, 0x78, 0x4D, 0x87, 0xBB, 0x20, 0xC0, + 0x9E, 0x3C, 0x64, 0xBD, 0xCE, 0x9A, 0xB1, 0xC6, + 0x9F, 0xD3, 0x07, 0xEF, 0xE3, 0x59, 0xC7, 0xF9, + 0x38, 0x56, 0x6C, 0x9F, 0x25, 0x17, 0xB0, 0x63, + 0x38, 0x51, 0x67, 0xE2, 0x47, 0xF3, 0x10, 0x81, + 0x11, 0x9B, 0xAC, 0x6B, 0x55, 0xA0, 0xBD, 0xD7, + 0x14, 0x25, 0x51, 0x0F, 0xFA, 0x2A, 0xBD, 0xFA, + 0x88, 0x83, 0x76, 0xA3, 0x7F, 0x20, 0xC2, 0x48, + 0x01, 0x52, 0xBB, 0x36, 0x16, 0x34, 0x52, 0x00, + 0x07, 0xC5, 0xB3, 0x4B, 0xF2, 0x28, 0x17, 0xCB, + 0x2E, 0x67, 0xAC, 0x1A, 0x82, 0x67, 0x0B, 0x71, + 0xF1, 0x96, 0xC8, 0x9F, 0x23, 0xBA, 0x31, 0x4B, + 0x16, 0xA9, 0x48, 0x49, 0x93, 0x04, 0xEF, 0x5C, + 0x03, 0xDC, 0xF5, 0x8E, 0x52, 0xBE, 0x31, 0x48, + 0x63, 0xE7, 0x23, 0xC5, 0x6D, 0x3A, 0xEB, 0x34, + 0x0B, 0xFF, 0x18, 0xAB, 0xFA, 0x20, 0xDC, 0x03, + 0x44, 0x20, 0x30, 0x23, 0x05, 0x33, 0xD9, 0x12, + 0x9B, 0x83, 0xED, 0x22, 0xC3, 0x51, 0xF2, 0x32, + 0x81, 0x72, 0xE3, 0x63, 0x44, 0x74, 0x44, 0xAE, + 0x5C, 0x69, 0x02, 0xB7, 0x92, 0x79, 0x9F, 0x54, + 0x44, 0x50, 0x78, 0x71, 0x19, 0x61, 0x2E, 0x9B, + 0xB4, 0x13, 0x0A, 0x33, 0xA2, 0xA5, 0x96, 0x2A, + 0xC0, 0x9D, 0x57, 0x7D, 0x6D, 0xDC, 0x88, 0x1F, + 0xE6, 0x61, 0x61, 0x26, 0xD8, 0xA0, 0xA7, 0xDF, + 0x2B, 0x22, 0x53, 0xBC, 0x8E, 0xC4, 0xE3, 0x53, + 0x86, 0xEA, 0x55, 0x11, 0xF0, 0xF1, 0x58, 0x87, + 0x14, 0x5B, 0x6C, 0x23, 0xAB, 0x3D, 0x40, 0x33, + 0x39, 0xE4, 0x04, 0x07, 0x3E, 0xD9, 0xC6, 0xA8, + 0x96, 0xA2, 0xF9, 0xEC, 0x70, 0xC4, 0x4B, 0xD2, + 0xAE, 0xC1, 0x0F, 0xC4, 0x36, 0x0E, 0x87, 0x63, + 0x6B, 0xE1, 0x55, 0xB6, 0xA6, 0x7B, 0x7E, 0xDF, + 0x38, 0xCF, 0x73, 0x00, 0x48, 0x13, 0xC9, 0xE7, + 0xD2, 0xC6, 0x54, 0xC2, 0x53, 0x0A, 0x71, 0xE5, + 0xF8, 0xC1, 0x09, 0x42, 0xFB, 0x6D, 0x88, 0x41, + 0x53, 0x5A, 0xB1, 0xDA, 0x43, 0xE8, 0xCB, 0x0B, + 0xB8, 0x9E, 0x78, 0xEC, 0x91, 0xF8, 0xDE, 0x15, + 0x31, 0xA0, 0x36, 0x65, 0xCC, 0xD5, 0xA7, 0x5B, + 0xDA, 0x0E, 0xD0, 0xE5, 0x98, 0x64, 0xEE, 0xEF, + 0x51, 0xA8, 0x3F, 0xA5, 0x53, 0xAF, 0x66, 0x2A, + 0xEE, 0x00, 0xD1, 0xF8, 0x36, 0x7B, 0x4D, 0x5D, + 0xDD, 0xC3, 0x45, 0x54, 0x4C, 0x6B, 0xD5, 0x14, + 0xF8, 0x88, 0xE6, 0x03, 0x3C, 0x25, 0x5D, 0xB6, + 0x50, 0xDA, 0x73, 0x4A, 0xD3, 0x3A, 0x3C, 0xF8, + 0x4B, 0xD3, 0xF0, 0x6F, 0xA1, 0xA7, 0xCA, 0x02, + 0xE4, 0xB8, 0xE9, 0x93, 0xAE, 0x7A, 0xE6, 0x34, + 0x20, 0xA4, 0x6B, 0xA8, 0xA3, 0x81, 0x3D, 0x1E, + 0x9D, 0x29, 0x66, 0xBB, 0x85, 0x60, 0xD7, 0x1C, + 0x62, 0xA0, 0x44, 0xEA, 0x94, 0x17, 0x9F, 0x4E, + 0xB1, 0xB6, 0xED, 0x60, 0x71, 0x9D, 0x51, 0xE0, + 0xEE, 0xF6, 0xCD, 0x07, 0x91, 0x52, 0xF6, 0xBE, + 0x48, 0x8E, 0xC9, 0x19, 0x11, 0xC6, 0xD3, 0xF1, + 0xD1, 0x17, 0x3C, 0x54, 0x1F, 0x9D, 0x25, 0xBF, + 0x34, 0x2F, 0xCA, 0xA3, 0xFF, 0x46, 0xC1, 0x8F, + 0x2A, 0x04, 0x41, 0xD8, 0x3B, 0xDE, 0x35, 0x46, + 0xA9, 0x82, 0x6C, 0x34, 0x96, 0xE0, 0x6F, 0x2F, + 0x2B, 0x0E, 0xEB, 0x9D, 0x5B, 0xE8, 0x73, 0x9F, + 0x83, 0xA4, 0x2D, 0x3B, 0x30, 0x0E, 0x70, 0xEE, + 0x84, 0xDF, 0xFF, 0xB2, 0x07, 0x64, 0xA0, 0x60, + 0x21, 0x2F, 0x05, 0x8C, 0x8A, 0x5F, 0xFA, 0x9A, + 0x34, 0xE9, 0x28, 0xD6, 0xA7, 0xE0, 0x77, 0x08, + 0xFE, 0x53, 0x93, 0xE3, 0x01, 0x7C, 0xE4, 0x70, + 0xEB, 0x96, 0x58, 0xA7, 0x4E, 0x49, 0x51, 0xE6, + 0xFA, 0x48, 0x54, 0xC9, 0xE9, 0xC2, 0x89, 0x88, + 0x81, 0x2E, 0x44, 0x18, 0xA2, 0xE8, 0x32, 0x58, + 0x0B, 0x4A, 0x27, 0x03, 0x72, 0xBC, 0x69, 0x67, + 0x68, 0x89, 0xD0, 0xCC, 0x43, 0x24, 0x0E, 0xDA, + 0xBC, 0x1D, 0x31, 0x14, 0xD8, 0xF3, 0x5A, 0xB2, + 0xE9, 0xEA, 0x95, 0x30, 0x82, 0xE9, 0x53, 0x62, + 0x79, 0xAC, 0xB3, 0xBE, 0x16, 0xD3, 0xA2, 0x05, + 0xF4, 0x6C, 0xB6, 0x7B, 0x22, 0x14, 0x96, 0x93, + 0x5A, 0xC0, 0x42, 0x92, 0xBB, 0xFB, 0x9A, 0x61, + 0xC0, 0xA0, 0x3E, 0xF4, 0xC9, 0xB6, 0x82, 0x04, + 0x95, 0xF3, 0xD8, 0x0E, 0x4A, 0x6F, 0xB7, 0xE1, + 0xC6, 0x99, 0x03, 0xFA, 0x22, 0x6E, 0x02, 0x3E, + 0x95, 0xBA, 0x41, 0x6D, 0xF2, 0xE5, 0xE4, 0x54, + 0x1E, 0x15, 0xDC, 0xC0, 0x00, 0xB5, 0xE6, 0x5C, + 0x97, 0x20, 0xDA, 0xF6, 0x96, 0x01, 0x2F, 0xA2, + 0xA6, 0xCF, 0x75, 0x8E, 0xD6, 0xD2, 0x25, 0xA3, + 0xE4, 0xFE, 0xE4, 0x5A, 0xC5, 0xFB, 0x48, 0x70, + 0x7F, 0xAE, 0x13, 0x3D, 0x59, 0x2C, 0xFD, 0x2E, + 0x8C, 0x43, 0xC2, 0x12, 0x6F, 0x65, 0x2B, 0xEE, + 0x9B, 0xAB, 0x43, 0xA1, 0xA1, 0x0B, 0xE2, 0x41, + 0x1A, 0x67, 0x94, 0xB2, 0x6C, 0xB5, 0x5C, 0xC2, + 0x17, 0xEB, 0x7B, 0x0B, 0x14, 0x6D, 0x23, 0xF7, + 0x92, 0x2D, 0x32, 0x22, 0xAE, 0x5E, 0xE8, 0xC6, + 0xD3, 0x8E, 0x83, 0x99, 0xBA, 0x51, 0xC6, 0x81, + 0xB8, 0x38, 0x16, 0xFC, 0xF7, 0x44, 0x38, 0x82, + 0x59, 0x20, 0xF9, 0xCE, 0x8A, 0x20, 0x2A, 0x8F, + 0x6D, 0x94, 0x2D, 0xA8, 0x62, 0x38, 0xFB, 0x4C, + 0x9F, 0x21, 0x98, 0xEA, 0x8D, 0xFF, 0x81, 0xC1, + 0x72, 0x86, 0xE0, 0x18, 0xDF, 0x4B, 0x7F, 0xE3, + 0x88, 0x4D, 0x17, 0x59, 0xE4, 0xC5, 0x9B, 0xB5, + 0x26, 0x17, 0xAE, 0xD4, 0xE7, 0x8E, 0x4E, 0x7C, + 0x4E, 0x9A, 0x36, 0xE4, 0xE9, 0x96, 0xD3, 0x23, + 0x91, 0xA3, 0x4A, 0x0D, 0xAA, 0xAB, 0x6B, 0x54, + 0x08, 0x15, 0xA3, 0x4D, 0x20, 0x40, 0x7A, 0xEF, + 0x81, 0x94, 0x9B, 0xE6, 0x7B, 0x90, 0x69, 0x50, + 0xD8, 0x9B, 0xE9, 0xF0, 0x85, 0xE9, 0x9E, 0xB5, + 0x87, 0x26, 0x95, 0x17, 0x3B, 0x3E, 0xFA, 0xCA, + 0xE9, 0x45, 0x5D, 0x2B, 0x2C, 0xD4, 0xF7, 0x10, + 0xB8, 0x72, 0xCF, 0x66, 0x2B, 0x73, 0x62, 0x16, + 0xB1, 0xBB, 0xFB, 0x1F, 0x5F, 0x3D, 0x48, 0x6C, + 0x7B, 0x4B, 0x87, 0x56, 0x12, 0x33, 0x3F, 0x8E, + 0x4B, 0xA9, 0x33, 0xDC, 0x79, 0xF0, 0xED, 0xFD, + 0x7B, 0xAA, 0xDE, 0x2C, 0x16, 0xF2, 0x14, 0x6A, + 0x49, 0x6F, 0x79, 0xC4, 0x2A, 0x4D, 0x6B, 0x52, + 0x39, 0xA3, 0x0D, 0xD3, 0xC4, 0x8B, 0xEB, 0x09, + 0x2C, 0xA0, 0x75, 0x00, 0x10, 0xF6, 0x9E, 0xD4, + 0xB9, 0x23, 0x20, 0x14, 0x7D, 0xBB, 0xE2, 0x08, + 0xF6, 0xE8, 0xEB, 0x1C, 0xF2, 0x47, 0xD2, 0x1A, + 0x3A, 0x3B, 0x01, 0xDF, 0x58, 0xC0, 0xAA, 0x62, + 0x94, 0x4D, 0xA0, 0xEF, 0x04, 0x50, 0xE8, 0xCE, + 0x48, 0xAA, 0x13, 0x7E, 0x7E, 0x15, 0x16, 0xC1, + 0xD5, 0xC8, 0x6E, 0xEA, 0x17, 0xFD, 0xFA, 0xC1, + 0x69, 0x07, 0x46, 0xE7, 0x26, 0x70, 0x45, 0xA3, + 0xE9, 0x05, 0x96, 0xBD, 0xB7, 0x5D, 0x50, 0xB6, + 0xDD, 0x5C, 0x34, 0xE5, 0xC8, 0xD8, 0x9D, 0xC6, + 0xF2, 0xF1, 0xD2, 0x44, 0x40, 0xE5, 0x7B, 0x47, + 0x59, 0xB8, 0x62, 0x5F, 0x72, 0xBC, 0x4A, 0x7B, + 0x10, 0xD5, 0x19, 0xD3, 0x31, 0xF9, 0xC4, 0x00, + 0xAA, 0xE1, 0xE5, 0x0D, 0x48, 0x0C, 0xAA, 0xE5, + 0xA1, 0xC0, 0xFA, 0x99, 0xD7, 0x79, 0x24, 0xCF, + 0x8D, 0xFE, 0x56, 0xCD, 0x70, 0x92, 0xE7, 0xB9 + }; +#endif /* !WOLFSSL_NO_ML_DSA_44 */ +#ifndef WOLFSSL_NO_ML_DSA_65 + static const byte seed_65[] = { + 0x70, 0xCE, 0xFB, 0x9A, 0xED, 0x5B, 0x68, 0xE0, + 0x18, 0xB0, 0x79, 0xDA, 0x82, 0x84, 0xB9, 0xD5, + 0xCA, 0xD5, 0x49, 0x9E, 0xD9, 0xC2, 0x65, 0xFF, + 0x73, 0x58, 0x80, 0x05, 0xD8, 0x5C, 0x22, 0x5C + }; + static const byte pk_65[] = { + 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, + 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, + 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, + 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, + 0xBB, 0x11, 0x19, 0x23, 0xF1, 0x94, 0xA7, 0xCC, + 0x8A, 0x7B, 0xB2, 0xEB, 0xC5, 0xC0, 0xE7, 0x1A, + 0xA6, 0x37, 0xCC, 0x80, 0x0E, 0x61, 0x03, 0xB8, + 0x50, 0xA5, 0x39, 0xB2, 0xA3, 0x9E, 0x1B, 0x6D, + 0x71, 0x3E, 0x5D, 0xB8, 0x31, 0x4C, 0x9A, 0xE1, + 0xF8, 0xBF, 0x8A, 0x38, 0xF0, 0x6A, 0xFB, 0x9D, + 0x73, 0xB1, 0x61, 0xB0, 0xFF, 0xE3, 0xA4, 0x89, + 0x17, 0x06, 0xAE, 0x26, 0xD5, 0x4F, 0xFB, 0x49, + 0x6D, 0xF8, 0xDC, 0x0F, 0x19, 0x83, 0x50, 0x95, + 0x00, 0xC9, 0xAB, 0xBD, 0x28, 0xE5, 0x9B, 0x3F, + 0xCD, 0xAB, 0xBD, 0xAD, 0xAB, 0xD4, 0x5E, 0xC3, + 0x14, 0x99, 0x37, 0x8B, 0xDE, 0x84, 0x9E, 0x7C, + 0x1F, 0x19, 0xB7, 0x04, 0x4D, 0x67, 0xE0, 0x51, + 0x06, 0xD7, 0x13, 0x6D, 0x95, 0x38, 0x0D, 0x56, + 0x05, 0xD4, 0x46, 0x5D, 0x87, 0x75, 0x57, 0x06, + 0x5D, 0xF0, 0xA7, 0x5D, 0x3C, 0x28, 0x54, 0x2F, + 0x40, 0xFE, 0xED, 0x42, 0xEC, 0x7E, 0x28, 0x06, + 0x37, 0xB0, 0x83, 0xD9, 0x88, 0xBC, 0xA5, 0xF6, + 0x39, 0x4E, 0x02, 0x39, 0x6C, 0x46, 0x76, 0x18, + 0x4F, 0xB6, 0x33, 0x18, 0xDA, 0xFA, 0xF5, 0xBB, + 0xDD, 0xE0, 0x0E, 0x30, 0x8F, 0xE8, 0x40, 0x19, + 0xC2, 0x34, 0x0A, 0x3F, 0x3E, 0x1C, 0x08, 0x65, + 0x62, 0x49, 0x70, 0x71, 0x12, 0x83, 0x35, 0x6A, + 0xE1, 0x4B, 0xD6, 0xB9, 0x4D, 0x1C, 0x9A, 0xE1, + 0x88, 0xDE, 0x1A, 0x8A, 0x2C, 0xA8, 0x24, 0xA8, + 0xEA, 0xE2, 0xFE, 0x6A, 0xFB, 0x38, 0xD8, 0x3A, + 0x2D, 0x99, 0x99, 0x6A, 0xB2, 0x1F, 0xE3, 0xE8, + 0x4C, 0x0B, 0xE6, 0xB6, 0xDA, 0x08, 0x87, 0x9B, + 0x67, 0x73, 0x74, 0xFA, 0x7C, 0x69, 0x1B, 0x13, + 0xD4, 0x0F, 0xA9, 0xD4, 0xCC, 0x26, 0xB2, 0x28, + 0x8D, 0x5A, 0x8C, 0x9A, 0x43, 0x72, 0x43, 0x81, + 0x00, 0x4D, 0x61, 0xB0, 0xD5, 0x7F, 0xF4, 0x00, + 0x31, 0x4C, 0x8E, 0x30, 0xEE, 0x79, 0x6A, 0xF1, + 0x0F, 0x7E, 0xE2, 0x1B, 0xF1, 0x3D, 0x08, 0x18, + 0x04, 0x65, 0xAB, 0xC7, 0x2E, 0xDD, 0xB0, 0x80, + 0xC6, 0xA0, 0x71, 0x84, 0xE3, 0xEE, 0xDC, 0x47, + 0xC1, 0x9A, 0xA7, 0xF0, 0x9D, 0x1F, 0x33, 0x09, + 0xE1, 0x83, 0xA2, 0xBD, 0x9B, 0x05, 0x73, 0xDD, + 0xE4, 0x74, 0xA8, 0x1B, 0xA4, 0xF7, 0x8D, 0x0C, + 0x52, 0x3D, 0x0C, 0x04, 0xF9, 0x00, 0x60, 0xFD, + 0x57, 0x1A, 0x35, 0xC0, 0x37, 0xE0, 0x79, 0xC5, + 0xE2, 0x10, 0xD7, 0x39, 0x0D, 0xF5, 0x68, 0xF2, + 0xE2, 0xF0, 0x3C, 0xE4, 0x44, 0x20, 0xC8, 0x2F, + 0x3F, 0xE6, 0x9E, 0xB9, 0xB4, 0x8E, 0xE9, 0x09, + 0x62, 0xD6, 0xB0, 0xF2, 0x44, 0x40, 0x64, 0x8F, + 0x71, 0xED, 0xB2, 0x41, 0xEE, 0x65, 0x66, 0xFC, + 0x1A, 0x64, 0xCA, 0xBF, 0x66, 0xBE, 0x6F, 0xEC, + 0xBC, 0xB1, 0x38, 0x7C, 0x82, 0xA7, 0xBC, 0x20, + 0x2D, 0x9E, 0x36, 0x79, 0x98, 0xE2, 0xA2, 0x91, + 0xAF, 0x0C, 0xD1, 0x57, 0x06, 0x77, 0xFE, 0x8D, + 0x63, 0xA3, 0x28, 0x5A, 0x2E, 0xA6, 0xEB, 0x29, + 0xAF, 0x9D, 0xC1, 0xAE, 0xC1, 0xC3, 0x6C, 0x47, + 0x06, 0xB1, 0x2B, 0xAA, 0x20, 0x83, 0x96, 0x92, + 0xF2, 0x86, 0xA6, 0xE0, 0x32, 0x14, 0x68, 0xF7, + 0x47, 0x93, 0x45, 0xC4, 0xD5, 0x2F, 0xBD, 0xB2, + 0xF0, 0x67, 0x25, 0xB5, 0x54, 0xB8, 0x9E, 0x24, + 0x92, 0x61, 0x26, 0x81, 0xAC, 0xEB, 0xC6, 0xC7, + 0xBA, 0xDA, 0x92, 0x25, 0x81, 0x8D, 0xBC, 0x35, + 0xD6, 0x4C, 0x22, 0xC4, 0x8B, 0xFF, 0x80, 0xA7, + 0x30, 0xD0, 0x71, 0x6D, 0xFA, 0xC9, 0x9D, 0xFD, + 0x5B, 0x89, 0x92, 0x61, 0x1D, 0x0C, 0x93, 0xEE, + 0x90, 0xBD, 0xB2, 0x60, 0x02, 0x2A, 0xFE, 0x25, + 0xD9, 0x13, 0xE0, 0x6E, 0xFF, 0xB5, 0x9C, 0xB1, + 0xF8, 0xA6, 0x0C, 0xBF, 0xA5, 0xAB, 0x2F, 0x45, + 0x9A, 0x16, 0xF4, 0x67, 0xE9, 0x89, 0x52, 0x5E, + 0x0A, 0x37, 0xEB, 0xE5, 0x6E, 0x83, 0x3F, 0xDE, + 0x55, 0xDB, 0x9D, 0x15, 0x30, 0xAD, 0xCF, 0x45, + 0x84, 0x6D, 0xF2, 0x81, 0xE4, 0x7C, 0xAA, 0x1E, + 0x0A, 0x27, 0xEF, 0xDE, 0x21, 0x07, 0xD3, 0x54, + 0xCE, 0xA0, 0xF6, 0xA4, 0x54, 0x69, 0x2F, 0x04, + 0xCD, 0x83, 0x8E, 0xBD, 0xD4, 0x6E, 0x19, 0x1E, + 0x5D, 0x9C, 0x11, 0x83, 0x9A, 0x2C, 0x3F, 0x48, + 0x8A, 0x4F, 0xC7, 0xCD, 0x26, 0x5A, 0x7B, 0x5D, + 0x32, 0xB0, 0x8C, 0xBD, 0xBF, 0xAB, 0x9D, 0x2C, + 0xCD, 0x76, 0x22, 0x2C, 0x8E, 0xE3, 0x7D, 0xDC, + 0xBD, 0x2A, 0xA0, 0x63, 0xED, 0x86, 0x14, 0x73, + 0xA6, 0x45, 0x4C, 0xAE, 0xA3, 0x77, 0x85, 0x0B, + 0x1A, 0x2B, 0x9D, 0xDB, 0xBC, 0xB3, 0x74, 0xFA, + 0xB5, 0xB1, 0x2F, 0x35, 0x1C, 0x8E, 0x58, 0x88, + 0x87, 0x2E, 0x5C, 0xD1, 0xF6, 0x0A, 0x4F, 0xAE, + 0x1F, 0xF8, 0x37, 0xD1, 0x92, 0xC2, 0x2B, 0xEB, + 0x41, 0xEE, 0x6F, 0xA3, 0x92, 0xFC, 0xDF, 0x45, + 0x50, 0xFF, 0x46, 0xB5, 0xCE, 0x90, 0x6D, 0x01, + 0x7E, 0xF3, 0x07, 0x7D, 0xF1, 0x32, 0x30, 0x0D, + 0x8B, 0xBF, 0xA9, 0xBB, 0x03, 0xC7, 0x5E, 0x79, + 0xE2, 0xF0, 0x4C, 0x28, 0x4A, 0xD0, 0x6A, 0x44, + 0x39, 0x96, 0x49, 0xC3, 0xE2, 0xA2, 0xA8, 0xD1, + 0xEF, 0xE9, 0xB7, 0xA4, 0xE0, 0xC2, 0x71, 0x04, + 0x7A, 0xB7, 0x59, 0x08, 0xBF, 0xF7, 0xDF, 0x9E, + 0x30, 0xEC, 0xA5, 0x47, 0x74, 0x5B, 0xAE, 0x23, + 0xA8, 0x6F, 0xF9, 0xA8, 0xB5, 0x8C, 0x25, 0x38, + 0xB8, 0x8B, 0x86, 0x64, 0x01, 0x07, 0x69, 0x02, + 0xDC, 0x5F, 0x0B, 0xD7, 0x61, 0x68, 0x7B, 0x49, + 0xEA, 0xFE, 0x36, 0xD3, 0x50, 0xCB, 0xED, 0xFD, + 0xD3, 0x6C, 0x12, 0x1C, 0xF2, 0x37, 0x86, 0xBF, + 0xCF, 0x7E, 0x47, 0x07, 0x64, 0x96, 0xEA, 0xB6, + 0xBB, 0xDA, 0x77, 0x40, 0x49, 0xC2, 0xEB, 0xAB, + 0xE2, 0xDE, 0x99, 0xC4, 0xC2, 0x4F, 0x2D, 0xB7, + 0x36, 0x84, 0x01, 0x5B, 0x37, 0x39, 0x77, 0x49, + 0x67, 0x60, 0xCF, 0x9A, 0xC2, 0x3D, 0x8B, 0x62, + 0x31, 0x33, 0xDB, 0x2D, 0xE1, 0x0D, 0x73, 0xFA, + 0x6A, 0xD1, 0xC6, 0xDA, 0xC8, 0x43, 0x4F, 0x28, + 0xC6, 0xE2, 0x51, 0xCE, 0x72, 0x93, 0xCF, 0xF3, + 0xF3, 0xB6, 0x1E, 0xFC, 0xB5, 0xA4, 0x35, 0x12, + 0x36, 0x70, 0xF2, 0x98, 0x46, 0xA1, 0x3D, 0xF3, + 0xEE, 0x71, 0x26, 0x04, 0x46, 0x1F, 0x1B, 0xAB, + 0x8F, 0x4E, 0xBC, 0x83, 0x6D, 0xE0, 0x58, 0x97, + 0x8A, 0xE7, 0x34, 0x39, 0x6A, 0x98, 0x08, 0x1B, + 0x35, 0xCC, 0x98, 0x18, 0x8A, 0x86, 0x94, 0x9C, + 0x99, 0x27, 0x0D, 0x47, 0x09, 0x85, 0x4C, 0x5B, + 0x35, 0xB1, 0x7F, 0x48, 0xA3, 0x73, 0x13, 0x4C, + 0x81, 0x4C, 0xC8, 0xA0, 0xF3, 0xE2, 0xFA, 0x80, + 0x7F, 0x2A, 0x91, 0x85, 0x30, 0x90, 0x78, 0x64, + 0x77, 0x82, 0x82, 0xD7, 0x5E, 0x03, 0xA4, 0x1B, + 0x25, 0x04, 0xEE, 0xD8, 0x16, 0xA4, 0x17, 0xA3, + 0xAC, 0x6B, 0xA1, 0x60, 0x80, 0xC3, 0x9B, 0x73, + 0x10, 0x19, 0x20, 0x02, 0xA7, 0x28, 0xF7, 0xF2, + 0x03, 0x95, 0x00, 0x9A, 0x9E, 0x16, 0x76, 0x7C, + 0xE1, 0x97, 0x1F, 0x5D, 0xE7, 0xD2, 0x29, 0xA5, + 0x06, 0x13, 0x36, 0x9E, 0x43, 0x82, 0x04, 0x5A, + 0x8E, 0x81, 0x90, 0x1F, 0x4D, 0xBA, 0x81, 0x02, + 0xF3, 0xD4, 0x13, 0xFE, 0x35, 0xB3, 0x26, 0xA8, + 0x74, 0xF2, 0x33, 0xB7, 0x19, 0xA7, 0x13, 0x76, + 0x00, 0xD3, 0x5D, 0x33, 0xAE, 0xB6, 0xB7, 0x25, + 0x96, 0x24, 0x08, 0x3A, 0xA9, 0x68, 0x73, 0x0C, + 0x8F, 0x78, 0x29, 0x2A, 0xD2, 0x8F, 0x14, 0xEE, + 0xAB, 0xE6, 0x60, 0x83, 0x59, 0x84, 0xFE, 0x69, + 0xEF, 0x23, 0xDE, 0xC8, 0xC3, 0x27, 0xC0, 0xEB, + 0x0B, 0x88, 0x2D, 0x58, 0x7E, 0x1E, 0xC4, 0x33, + 0xDA, 0x85, 0xC9, 0xFD, 0x1E, 0x0A, 0x34, 0x99, + 0x4D, 0xEA, 0x24, 0x0C, 0x85, 0x44, 0x52, 0xD1, + 0x8C, 0x30, 0xF4, 0x96, 0xE4, 0x9E, 0xC9, 0x04, + 0xB6, 0x02, 0xE0, 0xF5, 0x06, 0x2E, 0xDC, 0xDA, + 0x03, 0x28, 0x0A, 0x53, 0xB4, 0x31, 0x35, 0x74, + 0xCC, 0x2C, 0x0D, 0x54, 0x71, 0xBC, 0x96, 0x13, + 0xBD, 0xFD, 0x66, 0x41, 0xF5, 0xBD, 0x12, 0x7B, + 0xAB, 0x5B, 0x5E, 0xB3, 0xD4, 0x99, 0xA3, 0x31, + 0x14, 0x04, 0x82, 0x20, 0xE8, 0x19, 0xF8, 0xEE, + 0x12, 0xCA, 0x92, 0x2C, 0x8F, 0x17, 0xD9, 0xC9, + 0xF5, 0x1A, 0xD5, 0xBD, 0x68, 0x83, 0xB1, 0x0E, + 0x6A, 0xA2, 0x48, 0x3B, 0xA4, 0x9D, 0xC5, 0x47, + 0xDA, 0x76, 0x86, 0x15, 0x13, 0x44, 0xF4, 0xE9, + 0x09, 0x9B, 0x38, 0xE4, 0x30, 0xB5, 0x22, 0x6B, + 0x05, 0x98, 0x32, 0xCF, 0x03, 0xDB, 0x48, 0xFB, + 0x02, 0xDB, 0xA4, 0xE6, 0x15, 0x93, 0xDC, 0x45, + 0x76, 0x36, 0x04, 0x91, 0x89, 0x0E, 0x53, 0xEC, + 0x0E, 0x6A, 0xC7, 0x3C, 0xF3, 0x2B, 0x25, 0xD8, + 0x23, 0xB3, 0x84, 0x56, 0xE2, 0x86, 0x50, 0x5A, + 0x54, 0x1E, 0x5A, 0xEE, 0xE9, 0x6B, 0x19, 0x14, + 0xF5, 0xF7, 0x66, 0x87, 0xCE, 0x2B, 0x01, 0x60, + 0x22, 0x7A, 0xBE, 0xD7, 0x79, 0x93, 0x59, 0x4B, + 0xCD, 0x83, 0x13, 0x66, 0x20, 0x6D, 0x75, 0x71, + 0x40, 0x82, 0xF1, 0xC4, 0x6F, 0x1F, 0x44, 0x39, + 0xAC, 0x81, 0xA5, 0x7A, 0xF3, 0x1C, 0x81, 0xC5, + 0x55, 0x30, 0x7A, 0x07, 0x0F, 0xFA, 0x94, 0xE0, + 0x47, 0x9B, 0x78, 0x4B, 0xBD, 0x88, 0xA6, 0x0C, + 0xD4, 0xC7, 0xCF, 0xD9, 0x4E, 0x6A, 0xFE, 0x02, + 0xF6, 0xB2, 0x1F, 0x72, 0xAF, 0x0D, 0xCD, 0x66, + 0x09, 0xD4, 0x0C, 0x96, 0x5C, 0x14, 0xE5, 0xF2, + 0x38, 0x91, 0x83, 0xE5, 0x3D, 0xE9, 0x30, 0xF7, + 0xDE, 0x1D, 0x44, 0x21, 0x5C, 0xF4, 0x91, 0x44, + 0x84, 0x4E, 0x8B, 0x87, 0xF7, 0x8A, 0x7F, 0x13, + 0x2A, 0xEF, 0xE2, 0x2B, 0xE8, 0x0B, 0x4E, 0x3A, + 0x05, 0xEE, 0x3A, 0x68, 0xCC, 0xF6, 0x09, 0xEF, + 0x44, 0x04, 0x74, 0x02, 0xE4, 0x49, 0x30, 0x46, + 0xE6, 0xF9, 0xC7, 0x67, 0xFF, 0x8A, 0x75, 0xE2, + 0x8B, 0x3C, 0xE0, 0x77, 0xFD, 0xE7, 0xE7, 0xEE, + 0xD3, 0x13, 0xB5, 0xBF, 0x7E, 0x46, 0x01, 0x27, + 0xCA, 0x81, 0x82, 0xE9, 0xBC, 0x79, 0x4C, 0x0D, + 0xFA, 0x73, 0x0F, 0xB9, 0x20, 0x08, 0x05, 0x75, + 0xA7, 0x51, 0xB5, 0xCA, 0xEC, 0x85, 0xA1, 0x09, + 0xB4, 0x42, 0x2B, 0xA2, 0x66, 0x74, 0x3F, 0x0D, + 0x03, 0x2B, 0xDA, 0x8F, 0x1C, 0xA6, 0x24, 0x8C, + 0xDB, 0x91, 0x75, 0x30, 0xDF, 0x13, 0x02, 0xA5, + 0xF8, 0xC1, 0x8D, 0xC6, 0x42, 0xD5, 0x24, 0x78, + 0xC9, 0x8C, 0x12, 0xA3, 0xF1, 0x6E, 0xF2, 0xB6, + 0x2B, 0x4F, 0x59, 0xEA, 0x1B, 0xB5, 0x8D, 0xE7, + 0xB6, 0x5B, 0x3C, 0x71, 0x53, 0xCE, 0x6D, 0xA5, + 0xE4, 0x95, 0x07, 0x46, 0xF8, 0x0E, 0x08, 0x7A, + 0x0E, 0x35, 0x86, 0xD0, 0x97, 0x79, 0x1B, 0xF3, + 0x6D, 0xEF, 0x86, 0x5D, 0x68, 0x59, 0x1D, 0x39, + 0xD0, 0x90, 0x37, 0x73, 0xEE, 0xA9, 0x62, 0x14, + 0x7F, 0x34, 0x70, 0x41, 0x38, 0xB5, 0x4D, 0xF7, + 0x92, 0x4C, 0xDD, 0x8C, 0x33, 0x3D, 0xB5, 0xE1, + 0xA4, 0x09, 0xCC, 0xB2, 0xB3, 0x4E, 0x2C, 0x3C, + 0x8C, 0x7F, 0xDD, 0x3F, 0xD8, 0xD0, 0x12, 0xCB, + 0xF3, 0x82, 0xAA, 0xA8, 0x5E, 0x83, 0xA1, 0x2F, + 0x23, 0x5A, 0x2D, 0x14, 0x7D, 0x03, 0x5B, 0x7B, + 0x28, 0xB3, 0x4B, 0x6F, 0x57, 0x94, 0x9F, 0x32, + 0x24, 0x82, 0xA7, 0xD4, 0xD3, 0xB1, 0x50, 0x45, + 0xC4, 0x20, 0xD5, 0xAD, 0xDC, 0x7F, 0x0E, 0x69, + 0xB4, 0xDC, 0x1C, 0xBA, 0x58, 0xB0, 0x1D, 0x87, + 0x24, 0x80, 0xB0, 0x6A, 0x26, 0x0D, 0x82, 0x7D, + 0x89, 0x1B, 0x13, 0xC4, 0xC5, 0xCA, 0x50, 0xC7, + 0x48, 0xDE, 0x3C, 0x77, 0x1B, 0xE6, 0x1E, 0x9A, + 0xA1, 0x70, 0x16, 0x5C, 0xB0, 0x1F, 0x4B, 0xF5, + 0xDA, 0x27, 0xA7, 0x79, 0x1D, 0x3A, 0xD3, 0xF6, + 0x26, 0x7B, 0x4C, 0xB4, 0xE6, 0x1B, 0x28, 0xFA, + 0x17, 0x08, 0x41, 0x8D, 0x93, 0x2D, 0xFC, 0x41, + 0x61, 0x88, 0x0C, 0x5D, 0x3B, 0x17, 0xA9, 0x66, + 0x3A, 0x90, 0x61, 0xFA, 0x8F, 0x18, 0x04, 0x31, + 0x58, 0x50, 0xFE, 0x4E, 0x73, 0x06, 0xC8, 0x82, + 0xB3, 0x82, 0x27, 0xE8, 0x67, 0xF8, 0x08, 0x72, + 0xCD, 0xC1, 0x94, 0x4D, 0x47, 0x26, 0x15, 0xEA, + 0x49, 0x00, 0xEF, 0x7D, 0x27, 0x0B, 0x88, 0x1D, + 0x41, 0x30, 0xF5, 0x6C, 0x5C, 0xC9, 0x80, 0xD9, + 0x2A, 0x47, 0xAD, 0xA6, 0x65, 0x7E, 0xB6, 0xF3, + 0x7A, 0x38, 0x5D, 0x2D, 0x8C, 0xC9, 0x93, 0xE1, + 0x44, 0x2E, 0xB0, 0x52, 0x81, 0x85, 0x36, 0x36, + 0x99, 0x1E, 0x34, 0xAA, 0xDC, 0x68, 0x95, 0x4D, + 0x04, 0xE7, 0xAD, 0xEF, 0x76, 0xBF, 0x88, 0x0F, + 0x05, 0x9B, 0x0C, 0xBB, 0x55, 0xD9, 0x15, 0xA4, + 0xB1, 0x23, 0xE2, 0xF1, 0x33, 0x9A, 0x07, 0x3C, + 0xBF, 0xBC, 0x40, 0x9B, 0xEF, 0xF6, 0x40, 0x0A, + 0xE0, 0x96, 0xD5, 0xAE, 0x18, 0xEC, 0x42, 0xCF, + 0xFA, 0xD5, 0xB4, 0x98, 0x0F, 0xA3, 0x5B, 0xF0, + 0x34, 0x13, 0xAD, 0xB5, 0xD7, 0xE6, 0x87, 0x6A, + 0xC3, 0x55, 0xD1, 0xC9, 0xED, 0x70, 0xCA, 0x2B, + 0x97, 0x39, 0x54, 0xD1, 0x2B, 0x3C, 0xDD, 0x76, + 0xAC, 0x68, 0x35, 0xDB, 0x96, 0x00, 0x3E, 0xD8, + 0xC4, 0xE2, 0x88, 0xB7, 0x1F, 0xD7, 0x7D, 0xBA, + 0xA7, 0x63, 0x57, 0x20, 0xE1, 0x2A, 0xE0, 0xA3, + 0x17, 0xDE, 0x80, 0x8C, 0x66, 0x4E, 0x31, 0x7F, + 0x55, 0x27, 0x57, 0x91, 0xF3, 0x24, 0x5C, 0xA4, + 0xFE, 0x5D, 0x4D, 0x41, 0x07, 0x7F, 0xC1, 0x50, + 0xA6, 0xE4, 0x03, 0xD5, 0xA2, 0x08, 0xE4, 0x6E, + 0xAD, 0xBE, 0x8F, 0x2C, 0xFB, 0x8A, 0xF4, 0x72, + 0xF4, 0xA0, 0xCE, 0xAC, 0x01, 0x52, 0x19, 0x47, + 0x8E, 0x6B, 0x86, 0xC9, 0x58, 0xCF, 0x86, 0x52, + 0x5B, 0x74, 0x85, 0xC1, 0x73, 0x4C, 0x7E, 0xF0, + 0x0E, 0x90, 0x68, 0x3F, 0xFF, 0x5D, 0xBD, 0x0A, + 0x7D, 0x41, 0x3A, 0x85, 0x50, 0x21, 0x02, 0x6A, + 0x1B, 0x32, 0x01, 0x3A, 0x46, 0x16, 0xCB, 0xCD, + 0x37, 0x00, 0xAC, 0xBC, 0x70, 0x5B, 0xE3, 0xEF, + 0xBA, 0x62, 0x5C, 0x69, 0xA0, 0x25, 0x26, 0x7B, + 0xCE, 0x9D, 0x13, 0x5E, 0x3F, 0x5B, 0x5C, 0xC8, + 0xC4, 0x39, 0x56, 0x40, 0x7E, 0x84, 0xB6, 0x66, + 0x31, 0x03, 0xE2, 0x9C, 0x24, 0x20, 0x35, 0x55, + 0x1A, 0xE7, 0x97, 0xF5, 0x6C, 0x63, 0x74, 0xBE, + 0x0C, 0x79, 0x8C, 0x0C, 0xF3, 0x98, 0xF1, 0xED + }; + static const byte sk_65[] = { + 0xD2, 0xFD, 0x03, 0xF3, 0xA1, 0xB7, 0xF6, 0x35, + 0xAF, 0x9F, 0x34, 0xD5, 0x80, 0xA9, 0x8F, 0x52, + 0x4C, 0x73, 0x5B, 0xD5, 0xBA, 0x23, 0x55, 0xDC, + 0x6E, 0x03, 0x5B, 0xD2, 0x17, 0x65, 0x58, 0x0C, + 0xE3, 0x8D, 0x1C, 0x14, 0xF6, 0x46, 0x7C, 0x35, + 0xA9, 0xF3, 0x80, 0xD2, 0x7D, 0xE6, 0x1F, 0x7C, + 0x75, 0x03, 0x15, 0x69, 0xEA, 0x2E, 0xC8, 0x26, + 0x0E, 0xEE, 0x91, 0x05, 0x26, 0x1B, 0x7F, 0xE1, + 0x60, 0xC9, 0x13, 0x44, 0xB0, 0xC6, 0x76, 0x4C, + 0x20, 0x4E, 0x5B, 0x8D, 0x42, 0x46, 0x50, 0xBE, + 0xC0, 0x6B, 0x9E, 0x2E, 0x62, 0x5A, 0xF0, 0x7E, + 0x23, 0xF4, 0x95, 0x0C, 0xA2, 0x4F, 0xB4, 0xD6, + 0xEC, 0x2C, 0x8B, 0x3A, 0x71, 0x7C, 0x93, 0x11, + 0xEB, 0x87, 0x27, 0x9F, 0xE2, 0x5E, 0x31, 0x1F, + 0x48, 0xB8, 0x25, 0x65, 0x01, 0xF6, 0x46, 0x34, + 0x12, 0xB5, 0x0D, 0xBC, 0x89, 0xA8, 0x69, 0xBA, + 0x22, 0x41, 0x11, 0x26, 0x48, 0x40, 0x07, 0x38, + 0x73, 0x02, 0x12, 0x44, 0x25, 0x44, 0x57, 0x54, + 0x83, 0x72, 0x50, 0x33, 0x35, 0x62, 0x58, 0x42, + 0x32, 0x01, 0x62, 0x11, 0x83, 0x61, 0x02, 0x45, + 0x66, 0x56, 0x48, 0x35, 0x61, 0x20, 0x84, 0x52, + 0x60, 0x68, 0x50, 0x45, 0x65, 0x55, 0x12, 0x72, + 0x47, 0x47, 0x21, 0x21, 0x25, 0x40, 0x22, 0x21, + 0x42, 0x81, 0x17, 0x65, 0x03, 0x06, 0x42, 0x61, + 0x52, 0x13, 0x43, 0x25, 0x24, 0x33, 0x82, 0x12, + 0x11, 0x35, 0x62, 0x33, 0x32, 0x07, 0x47, 0x86, + 0x22, 0x31, 0x50, 0x83, 0x70, 0x84, 0x26, 0x43, + 0x45, 0x64, 0x51, 0x48, 0x31, 0x14, 0x86, 0x24, + 0x66, 0x86, 0x74, 0x33, 0x71, 0x36, 0x67, 0x26, + 0x01, 0x47, 0x07, 0x72, 0x11, 0x61, 0x58, 0x85, + 0x58, 0x38, 0x71, 0x83, 0x80, 0x67, 0x01, 0x65, + 0x78, 0x70, 0x64, 0x77, 0x85, 0x60, 0x02, 0x88, + 0x53, 0x48, 0x46, 0x62, 0x25, 0x83, 0x54, 0x88, + 0x04, 0x74, 0x40, 0x12, 0x57, 0x43, 0x71, 0x07, + 0x75, 0x44, 0x38, 0x71, 0x21, 0x14, 0x22, 0x08, + 0x88, 0x72, 0x23, 0x58, 0x87, 0x46, 0x14, 0x85, + 0x53, 0x71, 0x67, 0x73, 0x82, 0x28, 0x22, 0x74, + 0x14, 0x03, 0x57, 0x73, 0x28, 0x71, 0x83, 0x80, + 0x78, 0x14, 0x34, 0x87, 0x52, 0x07, 0x64, 0x74, + 0x01, 0x60, 0x75, 0x61, 0x06, 0x08, 0x61, 0x32, + 0x21, 0x46, 0x15, 0x65, 0x42, 0x67, 0x08, 0x20, + 0x84, 0x10, 0x73, 0x13, 0x03, 0x61, 0x02, 0x86, + 0x50, 0x45, 0x26, 0x12, 0x16, 0x68, 0x33, 0x55, + 0x25, 0x84, 0x73, 0x53, 0x54, 0x52, 0x65, 0x17, + 0x10, 0x60, 0x00, 0x38, 0x57, 0x77, 0x81, 0x24, + 0x26, 0x80, 0x41, 0x46, 0x43, 0x26, 0x67, 0x41, + 0x06, 0x03, 0x55, 0x41, 0x28, 0x33, 0x37, 0x25, + 0x23, 0x06, 0x77, 0x82, 0x15, 0x16, 0x31, 0x73, + 0x00, 0x08, 0x75, 0x26, 0x58, 0x46, 0x34, 0x63, + 0x88, 0x08, 0x84, 0x64, 0x51, 0x11, 0x24, 0x05, + 0x32, 0x10, 0x11, 0x18, 0x18, 0x64, 0x78, 0x22, + 0x41, 0x00, 0x38, 0x55, 0x75, 0x42, 0x10, 0x46, + 0x83, 0x43, 0x73, 0x38, 0x80, 0x07, 0x83, 0x43, + 0x78, 0x74, 0x13, 0x57, 0x62, 0x32, 0x68, 0x80, + 0x65, 0x86, 0x48, 0x53, 0x48, 0x35, 0x51, 0x58, + 0x50, 0x74, 0x46, 0x05, 0x88, 0x70, 0x07, 0x72, + 0x01, 0x31, 0x00, 0x87, 0x54, 0x88, 0x14, 0x20, + 0x84, 0x16, 0x61, 0x15, 0x60, 0x56, 0x85, 0x11, + 0x58, 0x08, 0x05, 0x88, 0x63, 0x01, 0x82, 0x86, + 0x13, 0x14, 0x17, 0x22, 0x01, 0x68, 0x17, 0x17, + 0x86, 0x58, 0x53, 0x10, 0x62, 0x28, 0x52, 0x82, + 0x26, 0x15, 0x04, 0x31, 0x42, 0x88, 0x54, 0x31, + 0x78, 0x05, 0x80, 0x11, 0x50, 0x45, 0x68, 0x82, + 0x33, 0x66, 0x36, 0x36, 0x40, 0x65, 0x15, 0x24, + 0x47, 0x67, 0x06, 0x45, 0x36, 0x42, 0x26, 0x86, + 0x75, 0x06, 0x35, 0x41, 0x33, 0x47, 0x85, 0x12, + 0x17, 0x80, 0x83, 0x87, 0x65, 0x51, 0x42, 0x31, + 0x38, 0x87, 0x56, 0x62, 0x05, 0x17, 0x40, 0x85, + 0x28, 0x14, 0x17, 0x21, 0x38, 0x12, 0x60, 0x81, + 0x24, 0x41, 0x45, 0x75, 0x01, 0x82, 0x87, 0x10, + 0x10, 0x02, 0x13, 0x25, 0x57, 0x04, 0x21, 0x72, + 0x42, 0x78, 0x61, 0x11, 0x70, 0x05, 0x30, 0x47, + 0x72, 0x13, 0x20, 0x30, 0x21, 0x67, 0x44, 0x31, + 0x57, 0x71, 0x45, 0x57, 0x10, 0x54, 0x16, 0x65, + 0x74, 0x15, 0x24, 0x02, 0x43, 0x71, 0x51, 0x20, + 0x55, 0x11, 0x67, 0x83, 0x67, 0x82, 0x52, 0x53, + 0x35, 0x66, 0x42, 0x46, 0x13, 0x70, 0x22, 0x32, + 0x74, 0x00, 0x07, 0x06, 0x81, 0x87, 0x17, 0x57, + 0x80, 0x28, 0x68, 0x01, 0x72, 0x10, 0x04, 0x27, + 0x55, 0x22, 0x86, 0x42, 0x53, 0x15, 0x81, 0x76, + 0x30, 0x86, 0x40, 0x83, 0x11, 0x43, 0x30, 0x53, + 0x82, 0x73, 0x53, 0x03, 0x72, 0x35, 0x68, 0x70, + 0x45, 0x41, 0x15, 0x73, 0x14, 0x12, 0x31, 0x64, + 0x32, 0x66, 0x63, 0x56, 0x21, 0x51, 0x50, 0x82, + 0x10, 0x30, 0x23, 0x38, 0x17, 0x21, 0x27, 0x10, + 0x23, 0x14, 0x22, 0x75, 0x77, 0x28, 0x37, 0x71, + 0x62, 0x75, 0x06, 0x88, 0x72, 0x14, 0x18, 0x73, + 0x13, 0x03, 0x01, 0x50, 0x71, 0x58, 0x62, 0x86, + 0x62, 0x88, 0x86, 0x86, 0x03, 0x27, 0x01, 0x46, + 0x17, 0x22, 0x71, 0x38, 0x53, 0x81, 0x70, 0x33, + 0x88, 0x68, 0x13, 0x78, 0x81, 0x04, 0x86, 0x57, + 0x30, 0x16, 0x52, 0x31, 0x40, 0x83, 0x07, 0x56, + 0x82, 0x10, 0x32, 0x31, 0x28, 0x50, 0x06, 0x50, + 0x81, 0x63, 0x06, 0x75, 0x76, 0x65, 0x11, 0x60, + 0x14, 0x17, 0x12, 0x12, 0x55, 0x56, 0x48, 0x11, + 0x41, 0x13, 0x28, 0x82, 0x62, 0x07, 0x47, 0x64, + 0x24, 0x48, 0x23, 0x24, 0x77, 0x53, 0x26, 0x08, + 0x17, 0x58, 0x11, 0x56, 0x37, 0x48, 0x35, 0x51, + 0x47, 0x86, 0x85, 0x66, 0x66, 0x81, 0x73, 0x20, + 0x21, 0x36, 0x75, 0x22, 0x74, 0x66, 0x83, 0x44, + 0x57, 0x00, 0x66, 0x64, 0x77, 0x20, 0x47, 0x22, + 0x28, 0x56, 0x87, 0x12, 0x47, 0x02, 0x48, 0x07, + 0x02, 0x54, 0x23, 0x01, 0x25, 0x71, 0x37, 0x36, + 0x75, 0x36, 0x00, 0x52, 0x68, 0x15, 0x33, 0x35, + 0x82, 0x06, 0x13, 0x73, 0x24, 0x08, 0x71, 0x76, + 0x15, 0x22, 0x42, 0x60, 0x18, 0x53, 0x43, 0x11, + 0x64, 0x57, 0x76, 0x17, 0x61, 0x56, 0x68, 0x76, + 0x60, 0x65, 0x54, 0x78, 0x10, 0x33, 0x63, 0x14, + 0x21, 0x83, 0x21, 0x60, 0x15, 0x55, 0x80, 0x42, + 0x38, 0x42, 0x03, 0x13, 0x12, 0x34, 0x36, 0x25, + 0x27, 0x30, 0x82, 0x81, 0x25, 0x47, 0x51, 0x35, + 0x44, 0x12, 0x67, 0x35, 0x00, 0x10, 0x01, 0x83, + 0x85, 0x74, 0x42, 0x40, 0x13, 0x03, 0x61, 0x27, + 0x81, 0x26, 0x26, 0x81, 0x18, 0x87, 0x43, 0x51, + 0x20, 0x62, 0x71, 0x27, 0x51, 0x56, 0x10, 0x22, + 0x22, 0x81, 0x11, 0x81, 0x41, 0x66, 0x66, 0x38, + 0x20, 0x86, 0x75, 0x56, 0x12, 0x40, 0x06, 0x54, + 0x61, 0x12, 0x74, 0x40, 0x34, 0x58, 0x58, 0x78, + 0x10, 0x07, 0x85, 0x25, 0x72, 0x88, 0x57, 0x22, + 0x22, 0x25, 0x50, 0x84, 0x00, 0x41, 0x26, 0x08, + 0x36, 0x46, 0x28, 0x78, 0x46, 0x78, 0x05, 0x02, + 0x28, 0x20, 0x77, 0x13, 0x60, 0x75, 0x14, 0x43, + 0x68, 0x78, 0x64, 0x31, 0x38, 0x77, 0x73, 0x73, + 0x55, 0x41, 0x27, 0x00, 0x54, 0x07, 0x08, 0x28, + 0x68, 0x80, 0x04, 0x53, 0x83, 0x43, 0x22, 0x81, + 0x00, 0x64, 0x35, 0x48, 0x67, 0x66, 0x50, 0x17, + 0x75, 0x76, 0x12, 0x75, 0x43, 0x81, 0x62, 0x40, + 0x33, 0x43, 0x45, 0x38, 0x87, 0x21, 0x66, 0x14, + 0x70, 0x48, 0x41, 0x43, 0x14, 0x66, 0x58, 0x78, + 0x45, 0x82, 0x02, 0x25, 0x45, 0x73, 0x15, 0x21, + 0x32, 0x03, 0x02, 0x48, 0x80, 0x80, 0x13, 0x71, + 0x25, 0x54, 0x32, 0x72, 0x05, 0x68, 0x65, 0x24, + 0x68, 0x04, 0x06, 0x16, 0x83, 0x50, 0x54, 0x53, + 0x37, 0x37, 0x27, 0x22, 0x20, 0x68, 0x08, 0x25, + 0x50, 0x84, 0x72, 0x86, 0x74, 0x22, 0x36, 0x16, + 0x80, 0x07, 0x55, 0x18, 0x12, 0x17, 0x84, 0x44, + 0x81, 0x15, 0x64, 0x50, 0x71, 0x10, 0x58, 0x15, + 0x51, 0x10, 0x10, 0x47, 0x16, 0x21, 0x07, 0x58, + 0x61, 0x18, 0x78, 0x00, 0x52, 0x72, 0x64, 0x52, + 0x17, 0x43, 0x23, 0x40, 0x76, 0x48, 0x67, 0x30, + 0x77, 0x63, 0x64, 0x87, 0x51, 0x31, 0x63, 0x84, + 0x68, 0x74, 0x53, 0x63, 0x84, 0x23, 0x54, 0x66, + 0x10, 0x48, 0x36, 0x33, 0x85, 0x21, 0x48, 0x42, + 0x03, 0x82, 0x51, 0x10, 0x33, 0x57, 0x46, 0x80, + 0x16, 0x43, 0x34, 0x02, 0x07, 0x03, 0x53, 0x22, + 0x12, 0x75, 0x73, 0x34, 0x65, 0x83, 0x33, 0x87, + 0x43, 0x85, 0x17, 0x50, 0x36, 0x60, 0x88, 0x02, + 0x58, 0x75, 0x80, 0x88, 0x31, 0x63, 0x60, 0x18, + 0x21, 0x32, 0x26, 0x15, 0x68, 0x74, 0x11, 0x10, + 0x33, 0x14, 0x13, 0x05, 0x34, 0x16, 0x72, 0x65, + 0x35, 0x50, 0x13, 0x34, 0x80, 0x87, 0x10, 0x26, + 0x48, 0x68, 0x84, 0x52, 0x71, 0x44, 0x23, 0x58, + 0x80, 0x35, 0x57, 0x70, 0x54, 0x84, 0x28, 0x70, + 0x55, 0x88, 0x86, 0x83, 0x86, 0x25, 0x21, 0x82, + 0x72, 0x61, 0x17, 0x78, 0x85, 0x17, 0x67, 0x73, + 0x00, 0x57, 0x71, 0x11, 0x78, 0x51, 0x10, 0x65, + 0x63, 0x57, 0x02, 0x87, 0x40, 0x13, 0x40, 0x01, + 0x26, 0x53, 0x45, 0x12, 0x05, 0x46, 0x75, 0x18, + 0x80, 0x70, 0x33, 0x35, 0x66, 0x22, 0x62, 0x00, + 0x70, 0x23, 0x26, 0x87, 0x72, 0x63, 0x11, 0x13, + 0x33, 0x33, 0x81, 0x41, 0x70, 0x62, 0x28, 0x61, + 0x51, 0x47, 0x31, 0x30, 0x25, 0x46, 0x51, 0x17, + 0x61, 0x58, 0x07, 0x41, 0x61, 0x37, 0x37, 0x06, + 0x14, 0x00, 0x54, 0x88, 0x77, 0x75, 0x67, 0x77, + 0x66, 0x53, 0x16, 0x72, 0x66, 0x66, 0x88, 0x76, + 0x43, 0x58, 0x31, 0x04, 0x87, 0x57, 0x06, 0x76, + 0x47, 0x00, 0x43, 0x63, 0x58, 0x60, 0x52, 0x03, + 0x44, 0x27, 0x36, 0x48, 0x61, 0x23, 0x72, 0x16, + 0x10, 0x62, 0x42, 0x08, 0x60, 0x83, 0x23, 0x54, + 0x03, 0x55, 0x55, 0x73, 0x00, 0x61, 0x03, 0x65, + 0x34, 0x27, 0x14, 0x15, 0x86, 0x62, 0x55, 0x80, + 0x16, 0x53, 0x10, 0x18, 0x26, 0x11, 0x35, 0x46, + 0x82, 0x46, 0x13, 0x25, 0x83, 0x47, 0x70, 0x50, + 0x06, 0x01, 0x56, 0x02, 0x11, 0x68, 0x54, 0x53, + 0x03, 0x68, 0x73, 0x36, 0x41, 0x88, 0x86, 0x33, + 0x42, 0x52, 0x01, 0x58, 0x33, 0x42, 0x32, 0x88, + 0x56, 0x81, 0x77, 0x55, 0x51, 0x48, 0x48, 0x12, + 0x01, 0x58, 0x13, 0x85, 0x04, 0x14, 0x71, 0x83, + 0x57, 0x07, 0x54, 0x55, 0x54, 0x55, 0x28, 0x27, + 0x31, 0x36, 0x02, 0x12, 0x32, 0x68, 0x32, 0x13, + 0x82, 0x58, 0x70, 0x28, 0x58, 0x53, 0x44, 0x86, + 0x72, 0x73, 0x42, 0x84, 0x18, 0x22, 0x08, 0x83, + 0x61, 0x02, 0x14, 0x16, 0x17, 0x12, 0x41, 0x57, + 0x48, 0x85, 0x25, 0x10, 0x26, 0x07, 0x36, 0x76, + 0x12, 0x66, 0x17, 0x21, 0x32, 0x36, 0x03, 0x25, + 0x41, 0x10, 0x11, 0x22, 0x66, 0x60, 0x16, 0x16, + 0x32, 0x64, 0x26, 0x05, 0x18, 0x63, 0x51, 0x58, + 0x51, 0x31, 0x42, 0x53, 0x84, 0x56, 0x66, 0x27, + 0x83, 0x33, 0x54, 0x50, 0x76, 0x46, 0x50, 0x80, + 0x25, 0x43, 0x41, 0x57, 0x35, 0x78, 0x25, 0x43, + 0x02, 0x82, 0x38, 0x47, 0x45, 0x70, 0x15, 0x67, + 0x51, 0x77, 0x47, 0x80, 0x31, 0x52, 0x75, 0x00, + 0x00, 0x94, 0x7B, 0xCA, 0x93, 0xC2, 0x7D, 0x58, + 0x4E, 0x2C, 0x66, 0xEA, 0xC9, 0xC7, 0x64, 0x0C, + 0x1C, 0xA2, 0x17, 0xEE, 0xF6, 0x6D, 0xAB, 0xBC, + 0xB2, 0x60, 0xB4, 0xC3, 0x43, 0x00, 0xFA, 0x05, + 0x13, 0x57, 0x82, 0x0F, 0x57, 0x39, 0x25, 0x44, + 0x98, 0x2F, 0xD1, 0x10, 0x57, 0xDE, 0x23, 0x3E, + 0x6D, 0x2D, 0xD8, 0x49, 0x72, 0xA7, 0xE4, 0x7D, + 0x4D, 0xBA, 0x99, 0xBC, 0x30, 0xCF, 0x8F, 0x2A, + 0xD5, 0xA2, 0xC0, 0x24, 0x31, 0x95, 0xED, 0x27, + 0x30, 0xFF, 0xA9, 0x2D, 0x22, 0x7D, 0x15, 0x30, + 0x95, 0x97, 0x2D, 0x4B, 0x34, 0x47, 0xFF, 0xAC, + 0x45, 0xA2, 0x3E, 0xB4, 0x1C, 0xBC, 0x87, 0xCD, + 0xD1, 0x25, 0x0A, 0x8A, 0x47, 0x8B, 0x0F, 0x7A, + 0x1D, 0x5B, 0x39, 0xAA, 0x22, 0x06, 0xE4, 0x86, + 0x45, 0x58, 0x4F, 0xE7, 0xBF, 0x7A, 0x13, 0x16, + 0x8F, 0x48, 0x27, 0x65, 0xE5, 0x7B, 0xB9, 0x24, + 0xAC, 0x6D, 0x9A, 0x11, 0x36, 0x9F, 0x4A, 0x6A, + 0xFF, 0xCD, 0x16, 0x9B, 0x7D, 0x75, 0x12, 0x9B, + 0x35, 0xD5, 0x13, 0x4A, 0x31, 0x76, 0x1B, 0xB8, + 0x35, 0x5A, 0xEE, 0xED, 0x27, 0xE2, 0x01, 0xA0, + 0x63, 0x13, 0x01, 0x3E, 0x30, 0x7A, 0x01, 0xA7, + 0x3A, 0xEA, 0x79, 0x55, 0xC0, 0x57, 0x8C, 0x8C, + 0x5E, 0x5A, 0x1A, 0x2D, 0x2F, 0xA4, 0x59, 0x3F, + 0xAC, 0xD9, 0x04, 0xC6, 0x20, 0x40, 0xBD, 0xB9, + 0xF3, 0x29, 0x93, 0x35, 0x36, 0xBF, 0x8D, 0x81, + 0xC4, 0x25, 0x6B, 0xAA, 0xE8, 0x72, 0x3F, 0xD4, + 0xDC, 0x66, 0xBB, 0x5E, 0x7F, 0x9C, 0xA4, 0x90, + 0x31, 0xA1, 0x93, 0xEC, 0xEC, 0xBB, 0x5D, 0xC3, + 0x90, 0xEC, 0x6D, 0x55, 0x13, 0xC7, 0x9A, 0x05, + 0x2B, 0x3F, 0xD4, 0x36, 0x12, 0xFB, 0x73, 0x75, + 0x31, 0x5D, 0x80, 0x91, 0xF7, 0x9B, 0xAB, 0x13, + 0x18, 0xF1, 0x78, 0x54, 0x56, 0x1B, 0xC9, 0x3A, + 0xE0, 0xE5, 0xCD, 0x6D, 0x13, 0x1E, 0x56, 0x2C, + 0x81, 0x14, 0x81, 0x0C, 0x93, 0x9A, 0xE5, 0x63, + 0xAA, 0x10, 0xB4, 0x7C, 0xE4, 0x48, 0x43, 0x17, + 0xF3, 0x4A, 0xBD, 0x02, 0xD0, 0xCC, 0xAD, 0x58, + 0xDD, 0x29, 0xBC, 0xF6, 0x57, 0xBB, 0xD9, 0x25, + 0x4B, 0x01, 0xCA, 0x97, 0x26, 0x09, 0x19, 0x38, + 0xED, 0x32, 0x05, 0x4B, 0x37, 0xDD, 0x61, 0x72, + 0x40, 0xF4, 0x43, 0x4C, 0x1A, 0x4A, 0x87, 0x11, + 0xAA, 0x3A, 0x39, 0x9A, 0x8A, 0x53, 0x88, 0x33, + 0x0B, 0x70, 0x59, 0xEC, 0xCB, 0xB6, 0xB1, 0xB9, + 0xCF, 0x71, 0x87, 0xAD, 0xF1, 0x0B, 0x0C, 0x91, + 0x71, 0xD3, 0xC0, 0xF6, 0xE2, 0xD4, 0x60, 0xA4, + 0x19, 0x24, 0x76, 0x72, 0xE3, 0xB9, 0xFE, 0xA2, + 0xC9, 0x59, 0x10, 0xBF, 0x2F, 0xB6, 0xA5, 0xD6, + 0x1F, 0x25, 0x74, 0x53, 0xB0, 0x7A, 0xFB, 0x64, + 0xB0, 0xBA, 0x27, 0x58, 0xBC, 0xD7, 0x35, 0x75, + 0x1F, 0x2D, 0x53, 0x51, 0x5E, 0x23, 0x6F, 0xE8, + 0xA5, 0xB4, 0x39, 0x3B, 0x80, 0xBF, 0x06, 0xDF, + 0x97, 0xBD, 0xC6, 0x38, 0x00, 0x87, 0xE6, 0xAA, + 0x8D, 0xDE, 0x6E, 0x09, 0x81, 0x11, 0xA7, 0x34, + 0x3F, 0xCD, 0xD1, 0xE9, 0x03, 0x70, 0x8E, 0x63, + 0x7E, 0xBF, 0x28, 0x32, 0x3C, 0xDA, 0x6B, 0x94, + 0x05, 0x81, 0x0E, 0xDC, 0xFB, 0x36, 0x91, 0x14, + 0x9E, 0xCF, 0x22, 0x4C, 0x50, 0xF8, 0xDF, 0x92, + 0xA9, 0x4A, 0xA4, 0x77, 0x0A, 0x0E, 0x91, 0x46, + 0x61, 0x94, 0xBB, 0x0E, 0x27, 0xBF, 0x1C, 0xAB, + 0xF1, 0x6A, 0xDF, 0xD3, 0x51, 0x22, 0x00, 0x33, + 0xF7, 0x6F, 0x59, 0x25, 0x55, 0x7B, 0xCF, 0x96, + 0x34, 0xE9, 0x46, 0x13, 0x59, 0x62, 0x1D, 0x80, + 0xB4, 0xBB, 0xAD, 0x7E, 0x2A, 0x6E, 0x43, 0x2D, + 0xC4, 0x3B, 0x12, 0x6C, 0xA4, 0x2A, 0xB8, 0x8A, + 0xA8, 0x8F, 0x0A, 0x84, 0xAF, 0x58, 0x02, 0x9C, + 0x99, 0xA0, 0x24, 0x8F, 0x0C, 0x45, 0x40, 0x71, + 0xF3, 0x5B, 0x83, 0x1F, 0xED, 0x12, 0x54, 0xD6, + 0xF4, 0xE2, 0x72, 0x04, 0x85, 0x78, 0x62, 0x15, + 0xF7, 0xC7, 0xF0, 0xC4, 0xED, 0x15, 0xFA, 0x85, + 0x3C, 0xD3, 0xAA, 0x07, 0x25, 0x9B, 0x39, 0x24, + 0x0A, 0x82, 0x13, 0x5C, 0x29, 0x23, 0xA7, 0x2B, + 0x87, 0x6F, 0xAB, 0xB3, 0xF0, 0xF2, 0xC0, 0x96, + 0x13, 0xDE, 0x39, 0xD4, 0x59, 0xA0, 0x7C, 0x14, + 0xE7, 0xBA, 0x43, 0x7D, 0x80, 0x41, 0x49, 0x1F, + 0xCE, 0xC1, 0x43, 0x34, 0x04, 0xBA, 0xD1, 0xDA, + 0x9E, 0xE9, 0x47, 0x1E, 0x17, 0xCB, 0x69, 0x1B, + 0x2A, 0x35, 0x37, 0x10, 0xC9, 0xFF, 0xA4, 0xE5, + 0x17, 0x81, 0x12, 0x02, 0x77, 0x64, 0xEB, 0x7D, + 0xE8, 0x09, 0xC3, 0xE1, 0xF1, 0xFA, 0x41, 0x78, + 0xA5, 0xD4, 0xDC, 0x9E, 0xE2, 0x78, 0x57, 0xEF, + 0xF2, 0x6B, 0x91, 0x71, 0x1F, 0xC1, 0x44, 0xD5, + 0xA7, 0x75, 0xB8, 0xB5, 0x0D, 0x5D, 0xB9, 0x39, + 0xBA, 0x32, 0x07, 0x68, 0x0C, 0x24, 0x2F, 0xC8, + 0x21, 0x94, 0x7F, 0x93, 0x4C, 0x8D, 0xAE, 0xE2, + 0x03, 0x56, 0x3D, 0x28, 0x60, 0x6B, 0xE6, 0x24, + 0xA3, 0x29, 0x01, 0x93, 0x2D, 0xAE, 0x85, 0x71, + 0x2A, 0xF6, 0xC8, 0x01, 0x60, 0x26, 0x92, 0x7E, + 0x9B, 0x81, 0x29, 0x57, 0x4B, 0xE3, 0xCB, 0x1E, + 0x95, 0x33, 0x2B, 0x05, 0x27, 0x07, 0xAC, 0x8A, + 0xA8, 0xF4, 0x35, 0xE8, 0x8B, 0x7E, 0x56, 0x8D, + 0x49, 0x87, 0xC6, 0xAC, 0x0E, 0x90, 0x2B, 0x06, + 0x09, 0xA0, 0x2D, 0x91, 0xB3, 0xF5, 0xFD, 0x3F, + 0xD9, 0x01, 0xDD, 0xD0, 0xDB, 0x98, 0x73, 0xBD, + 0x7C, 0x71, 0xED, 0x92, 0x1D, 0x45, 0x77, 0xA7, + 0x8C, 0x4F, 0xCC, 0x9B, 0xF0, 0x75, 0x20, 0x3D, + 0x38, 0xF5, 0xE7, 0x6E, 0x74, 0xF2, 0x77, 0x48, + 0x4E, 0x05, 0x7B, 0x61, 0x89, 0x00, 0x41, 0x31, + 0xB0, 0xC9, 0xB1, 0xA1, 0x55, 0x29, 0x4D, 0x1C, + 0xD3, 0xD5, 0x20, 0x8E, 0x26, 0x69, 0x01, 0xD7, + 0xD3, 0x14, 0xFA, 0xCC, 0xE7, 0xE2, 0xAA, 0x58, + 0x45, 0x83, 0xA1, 0x1E, 0x4D, 0x7C, 0x21, 0xB9, + 0x4A, 0x32, 0xE5, 0x08, 0xED, 0xDB, 0xBD, 0x7A, + 0x65, 0xAA, 0x86, 0xB4, 0xFD, 0xFA, 0x6B, 0xC2, + 0x85, 0xD4, 0xCF, 0xF5, 0x39, 0x26, 0xC7, 0x17, + 0x3F, 0xBE, 0x1F, 0x89, 0xCC, 0x30, 0x32, 0x34, + 0xB8, 0x78, 0xC6, 0xB8, 0x10, 0x1F, 0x58, 0xAC, + 0x8D, 0x3E, 0x5E, 0x1B, 0xF5, 0xAB, 0x6B, 0x26, + 0x29, 0x7C, 0xC9, 0x7B, 0x95, 0x95, 0x4A, 0xAB, + 0xDB, 0x25, 0xBE, 0x00, 0x8A, 0x3F, 0x47, 0xE5, + 0x64, 0x87, 0xB0, 0x0D, 0x3D, 0xED, 0xA8, 0x90, + 0xD9, 0x2C, 0x83, 0x95, 0x7F, 0xEA, 0xC6, 0xB8, + 0x29, 0x1A, 0xF6, 0x59, 0x59, 0xE1, 0xD1, 0xFC, + 0xA3, 0xBD, 0x19, 0x6E, 0x9F, 0xC9, 0xE6, 0x7E, + 0x06, 0x07, 0x09, 0x48, 0x22, 0xE5, 0xB4, 0x19, + 0x1D, 0xB9, 0x68, 0x24, 0xB9, 0xF0, 0x3F, 0x2E, + 0xF5, 0x7F, 0x52, 0x38, 0xBA, 0x7E, 0x1E, 0x84, + 0xED, 0x55, 0xB7, 0xDF, 0xF3, 0xD6, 0xC2, 0xC1, + 0x27, 0x36, 0x92, 0xA9, 0xA1, 0x92, 0x72, 0x16, + 0x61, 0x30, 0xDB, 0x89, 0xFC, 0x67, 0xDC, 0x94, + 0xDB, 0x61, 0x4E, 0x3E, 0x82, 0xBA, 0x3A, 0x35, + 0x12, 0xB0, 0x12, 0xD5, 0x1F, 0xB4, 0x86, 0xB5, + 0xA3, 0x15, 0x0B, 0x78, 0xE7, 0x24, 0xE2, 0xA1, + 0x2D, 0xE0, 0x7D, 0x86, 0x71, 0xFB, 0xA2, 0xDA, + 0x7F, 0xD5, 0xD1, 0x47, 0x20, 0x8F, 0xC3, 0xAF, + 0x65, 0x3E, 0x65, 0x20, 0xFC, 0x40, 0x87, 0x1A, + 0xF2, 0x17, 0x7E, 0x65, 0xCB, 0xD0, 0xEA, 0xF3, + 0x04, 0x21, 0x7B, 0x36, 0x7A, 0x66, 0x5F, 0x22, + 0x4C, 0xAE, 0xDF, 0xE9, 0x30, 0x06, 0xAC, 0x1E, + 0x14, 0xBC, 0xD6, 0x7A, 0x88, 0xD1, 0x71, 0xF3, + 0xD8, 0xF3, 0xE3, 0x58, 0xA7, 0x19, 0x26, 0xBA, + 0x3E, 0x5C, 0x23, 0x9A, 0x53, 0x12, 0x63, 0xEC, + 0x94, 0x37, 0xBF, 0x2A, 0x03, 0x3B, 0x8B, 0x55, + 0xB2, 0xC0, 0xCB, 0x6E, 0x7E, 0x97, 0x31, 0x6E, + 0x22, 0xDF, 0x77, 0xCA, 0xD9, 0x10, 0xD2, 0x0E, + 0xEC, 0xE1, 0xC5, 0x09, 0x10, 0xA5, 0xCC, 0x32, + 0xAD, 0xAB, 0x09, 0x37, 0x75, 0x50, 0xF9, 0x2D, + 0x5B, 0xB1, 0xF4, 0xC0, 0x7F, 0x4A, 0x28, 0x22, + 0x33, 0x8E, 0x2C, 0xFF, 0x53, 0x48, 0xDF, 0x77, + 0xCF, 0x8E, 0xF8, 0xE6, 0x65, 0x7D, 0xED, 0x1E, + 0x0C, 0xE0, 0x58, 0xE3, 0xCC, 0xFB, 0xF3, 0x9B, + 0x3F, 0x16, 0x6E, 0x30, 0x3D, 0x33, 0xC3, 0x55, + 0x6C, 0x9A, 0xC8, 0xEC, 0xB3, 0xDF, 0x7C, 0x74, + 0xAB, 0x36, 0xD0, 0xF2, 0x79, 0x44, 0x41, 0xBA, + 0x98, 0x08, 0x82, 0x7B, 0x57, 0x8F, 0xB5, 0xC2, + 0x9E, 0x49, 0x4E, 0x21, 0x53, 0x9A, 0xD3, 0xAB, + 0x2B, 0x41, 0xBF, 0x16, 0x1D, 0x7F, 0x69, 0x58, + 0x9D, 0x45, 0x24, 0xC5, 0x4C, 0x89, 0xB4, 0x86, + 0xF7, 0x5D, 0x25, 0x2F, 0x54, 0x1C, 0xC6, 0x3B, + 0x9E, 0x70, 0x6D, 0x64, 0xA1, 0x28, 0x9A, 0x23, + 0x06, 0xC5, 0x95, 0x36, 0x3C, 0xB6, 0xFB, 0xEF, + 0x0A, 0x1B, 0x5B, 0x17, 0xAB, 0x5B, 0x17, 0x94, + 0xBF, 0x27, 0x03, 0x6F, 0x64, 0xEA, 0xF0, 0xBD, + 0x43, 0x0D, 0xD5, 0x8D, 0x80, 0x01, 0x0C, 0xCD, + 0xAD, 0xA4, 0xA5, 0xA3, 0xA1, 0xE4, 0x1A, 0x6F, + 0xBF, 0x12, 0x9D, 0x73, 0x77, 0x9A, 0x37, 0xAE, + 0x5C, 0x8D, 0x68, 0x41, 0xA9, 0x99, 0x3C, 0x51, + 0xE3, 0x64, 0xE0, 0x4F, 0xAC, 0x8E, 0x25, 0xA4, + 0xE6, 0x87, 0x2F, 0x6C, 0x86, 0x0F, 0xA2, 0x65, + 0xC1, 0xC4, 0x42, 0x6A, 0xD9, 0xC2, 0x1D, 0x26, + 0xDA, 0x8C, 0x27, 0x85, 0x46, 0xAD, 0xCD, 0x83, + 0x1F, 0x2B, 0x8B, 0x26, 0xD4, 0xE1, 0xF6, 0x70, + 0x62, 0x3D, 0x95, 0xC8, 0x36, 0x2D, 0xA6, 0x62, + 0xD1, 0xFF, 0x0A, 0xB6, 0x87, 0x50, 0x3F, 0x32, + 0x8D, 0xE0, 0x95, 0x81, 0x0E, 0xDE, 0x12, 0xB4, + 0x9E, 0xAD, 0x15, 0x33, 0x51, 0x95, 0x58, 0xC1, + 0xE9, 0x40, 0xB4, 0x6E, 0x4E, 0xDB, 0x02, 0x7B, + 0xE9, 0xDA, 0x20, 0x39, 0xB2, 0x5D, 0xCF, 0x73, + 0x57, 0xE1, 0x9E, 0x54, 0x16, 0xAE, 0x26, 0x8C, + 0x14, 0xFB, 0x3A, 0x8B, 0xAB, 0xCB, 0x3D, 0x23, + 0xF7, 0x0C, 0xC9, 0xD5, 0x96, 0x81, 0xC5, 0xD8, + 0x33, 0xAC, 0x22, 0xE6, 0x53, 0xD8, 0x6E, 0x22, + 0xCE, 0x82, 0x25, 0x40, 0x75, 0x5D, 0x8D, 0x24, + 0x3C, 0x15, 0x21, 0x3D, 0x07, 0x6C, 0x6B, 0x26, + 0x43, 0x6D, 0xDC, 0x07, 0xC7, 0xE0, 0x01, 0x34, + 0x7B, 0x0C, 0xB8, 0x78, 0x3D, 0xFE, 0xFE, 0xDF, + 0x27, 0x5F, 0xEC, 0x47, 0x92, 0x68, 0x67, 0x34, + 0x00, 0x7F, 0x0F, 0xF8, 0x54, 0x08, 0x11, 0xC2, + 0xAF, 0xE6, 0xCA, 0x15, 0x14, 0x20, 0x53, 0x2F, + 0xA5, 0x52, 0x6A, 0x10, 0x74, 0xC3, 0xD7, 0x89, + 0xF2, 0x93, 0x2D, 0xE4, 0x2E, 0x3A, 0xCF, 0xBF, + 0x94, 0x76, 0x0F, 0x42, 0x6D, 0x96, 0xCF, 0x03, + 0x3F, 0xA4, 0x9E, 0x2F, 0x45, 0x8F, 0x9A, 0x9C, + 0x2E, 0x71, 0xDA, 0xCF, 0xE0, 0x09, 0xDD, 0x9C, + 0x3F, 0x3C, 0x8A, 0xB3, 0x28, 0x2D, 0x6F, 0x38, + 0x3B, 0x98, 0x1C, 0x82, 0xD6, 0x36, 0x4F, 0x0E, + 0x4B, 0xDB, 0x2A, 0xF6, 0xA9, 0x5B, 0xA6, 0x1F, + 0x47, 0x41, 0x50, 0xCA, 0xD7, 0x23, 0x3F, 0x89, + 0x03, 0xDF, 0x97, 0x2D, 0xBB, 0x03, 0x28, 0xC0, + 0xCB, 0x9D, 0x0C, 0xCB, 0xEF, 0x88, 0x3D, 0x2E, + 0x6A, 0xDD, 0x18, 0x0E, 0xCA, 0x1B, 0x66, 0x2F, + 0xC1, 0xD2, 0xDB, 0xBD, 0xDB, 0x36, 0x34, 0x21, + 0x9E, 0x1E, 0xFF, 0x38, 0xB1, 0xE5, 0x28, 0x75, + 0x35, 0x6C, 0x03, 0xEA, 0xDE, 0x94, 0x20, 0x55, + 0xF4, 0x83, 0x50, 0x4B, 0xBB, 0xCB, 0x43, 0x02, + 0xA4, 0x17, 0xCF, 0x6D, 0x32, 0x8E, 0xD7, 0x93, + 0xB1, 0xA3, 0xC0, 0x96, 0x9B, 0x7B, 0x34, 0x18, + 0xF5, 0x0A, 0xB3, 0x9F, 0x83, 0xC5, 0x66, 0x6C, + 0x90, 0xE3, 0x83, 0x56, 0xF7, 0xF9, 0xD4, 0x94, + 0xA6, 0xDC, 0xB6, 0x3D, 0x67, 0xC3, 0x4E, 0x3D, + 0x14, 0xA4, 0xE1, 0x55, 0x96, 0x49, 0x79, 0x26, + 0xC8, 0x56, 0x8D, 0x8E, 0xC3, 0xDB, 0xD9, 0xC2, + 0xE8, 0x2C, 0x38, 0x5B, 0xCF, 0xB8, 0xD9, 0x67, + 0x48, 0x63, 0xBD, 0x4F, 0xBF, 0x17, 0x57, 0xDB, + 0x44, 0x7B, 0xF8, 0x04, 0xAE, 0x95, 0x01, 0x47, + 0xC9, 0x1F, 0xBF, 0x9A, 0xA1, 0x78, 0x91, 0x04, + 0x4C, 0xCA, 0xA7, 0x3B, 0x45, 0x52, 0x85, 0x97, + 0x46, 0x2C, 0xED, 0x75, 0x1D, 0x01, 0x5E, 0xBB, + 0xA9, 0xE2, 0xB7, 0xCD, 0xCB, 0xE6, 0xDC, 0x05, + 0xAA, 0x9E, 0xAE, 0x0C, 0x86, 0x84, 0x8A, 0x34, + 0x75, 0xBB, 0x1C, 0x57, 0x44, 0xF5, 0x90, 0x3E, + 0xE4, 0xA8, 0x42, 0xA4, 0x69, 0xCC, 0x18, 0x12, + 0x71, 0xF2, 0x45, 0xAD, 0x70, 0xD0, 0x2A, 0x48, + 0x37, 0x86, 0x3B, 0x29, 0x6B, 0x4A, 0xDB, 0x4E, + 0x8D, 0x03, 0xD8, 0x2B, 0x64, 0xAA, 0x11, 0xDD, + 0x31, 0xCD, 0xF2, 0x1E, 0xDF, 0x1D, 0xFE, 0x32, + 0x76, 0xC4, 0xDB, 0xC8, 0x77, 0xE3, 0x5B, 0x15, + 0xFB, 0x28, 0x35, 0xEC, 0x3A, 0x1C, 0x45, 0x31, + 0x68, 0xA3, 0x8C, 0xA8, 0xE5, 0x63, 0xCF, 0x3E, + 0x9A, 0x00, 0x73, 0x6C, 0xD5, 0xCF, 0xBD, 0x28, + 0x41, 0xD1, 0x0F, 0x94, 0xAD, 0x55, 0x79, 0x9C, + 0x29, 0x27, 0xE5, 0x46, 0x1B, 0x28, 0xBA, 0xC5, + 0x17, 0x4D, 0x0C, 0xE3, 0xF8, 0xF7, 0xCD, 0x76, + 0x09, 0xFB, 0xC8, 0xDA, 0x0C, 0x38, 0xCC, 0x21, + 0x69, 0x5C, 0xED, 0xAD, 0x12, 0xF8, 0xD2, 0xE6, + 0x49, 0x51, 0xA8, 0x99, 0x6E, 0x51, 0x0D, 0x6D, + 0x52, 0x79, 0x7C, 0x5B, 0xA0, 0xEB, 0x4A, 0xFA, + 0x6B, 0xF2, 0xCC, 0x43, 0xDA, 0x09, 0xDE, 0x31, + 0x79, 0xE8, 0x99, 0xBD, 0x71, 0x88, 0xB3, 0x2A, + 0x98, 0xA4, 0x99, 0xD3, 0x72, 0xF3, 0x70, 0x7C, + 0xED, 0x47, 0x9B, 0x09, 0x81, 0xCB, 0x50, 0xC0, + 0xC0, 0x53, 0x9C, 0xF7, 0xE3, 0x10, 0x0B, 0x72, + 0x0E, 0x46, 0x66, 0x52, 0xA4, 0xF4, 0x99, 0xC2, + 0xBA, 0x3A, 0x17, 0xF5, 0x23, 0x22, 0x68, 0x73, + 0x0B, 0x96, 0x2B, 0xC5, 0x72, 0xC0, 0xDE, 0x96, + 0xE8, 0xC9, 0xE2, 0x8F, 0x7E, 0x35, 0x32, 0xC2, + 0x22, 0x41, 0x96, 0xAA, 0x9E, 0x27, 0x68, 0x8D, + 0xD0, 0x50, 0xD7, 0xCB, 0x78, 0x54, 0xFB, 0x3C, + 0x35, 0xF9, 0xC6, 0x2E, 0xFB, 0x10, 0xDA, 0x84, + 0x83, 0x3F, 0x29, 0xBB, 0x1B, 0xE5, 0xEF, 0x3B, + 0x53, 0x36, 0x38, 0xEE, 0xF7, 0x43, 0xD8, 0x11, + 0x9D, 0xDC, 0x29, 0x0B, 0xDF, 0x08, 0xB6, 0xF0, + 0xF9, 0xE4, 0xE1, 0xE1, 0x34, 0x46, 0xC5, 0x3E, + 0xD6, 0x98, 0x05, 0xDA, 0x26, 0x90, 0x8A, 0x15, + 0xDF, 0x1C, 0x48, 0xE0, 0x09, 0xEC, 0x12, 0x53, + 0xBD, 0x5A, 0x58, 0x98, 0xEB, 0xB5, 0x12, 0x1C, + 0xC2, 0x49, 0x04, 0xC8, 0xB1, 0x0E, 0x24, 0xE6, + 0x80, 0xE5, 0x65, 0x98, 0x50, 0x76, 0xFD, 0xA1, + 0x1D, 0x13, 0xFF, 0xDF, 0xA4, 0xDB, 0x28, 0xAC, + 0x9F, 0x0A, 0xEA, 0x2F, 0x81, 0xFD, 0x7E, 0xD4, + 0xDC, 0xA8, 0xD3, 0xB2, 0xE3, 0x84, 0x8B, 0x4D, + 0x60, 0x46, 0xF6, 0xE0, 0xDE, 0x3A, 0x4F, 0x68, + 0x3F, 0x25, 0xE0, 0x60, 0x5E, 0x84, 0xB3, 0x6F, + 0x48, 0x3C, 0x40, 0x4E, 0xF8, 0x99, 0xCB, 0x3F, + 0xCC, 0xBE, 0x8C, 0xB2, 0xA6, 0xF0, 0xA7, 0xE1, + 0x0B, 0x19, 0x48, 0xCD, 0x4F, 0x93, 0xF1, 0x81, + 0x55, 0x5F, 0x66, 0x1D, 0x31, 0xD4, 0x26, 0x80, + 0x8B, 0xBF, 0x9F, 0x66, 0xFD, 0x60, 0xD6, 0x49, + 0x26, 0x9C, 0xA3, 0xFE, 0x99, 0x1B, 0x22, 0x42, + 0x8C, 0x37, 0xAD, 0x2A, 0x08, 0x68, 0x0F, 0x74, + 0x7C, 0xC0, 0x36, 0x0C, 0xCD, 0x37, 0x3D, 0xC6, + 0xA9, 0xF4, 0x3A, 0x66, 0x47, 0x0E, 0x01, 0x4E, + 0x72, 0xB3, 0xD8, 0xC3, 0x8E, 0x02, 0x04, 0x42, + 0xD8, 0xAA, 0xB9, 0x74, 0xE6, 0x04, 0x93, 0x74, + 0x14, 0x5B, 0x04, 0xCB, 0x7F, 0x30, 0x44, 0xAA, + 0xC1, 0xEF, 0xDA, 0xB2, 0xA1, 0x8B, 0xB4, 0x64, + 0xD4, 0xF2, 0xF2, 0xD8, 0x14, 0x39, 0x74, 0xC9, + 0x5E, 0xEE, 0x85, 0x6D, 0x59, 0xEC, 0x00, 0x28, + 0x8E, 0xD4, 0x3F, 0xF5, 0xCC, 0x88, 0x03, 0x00, + 0x6C, 0x99, 0x55, 0x14, 0xA2, 0xCC, 0x9C, 0xA6, + 0x22, 0xB6, 0x1B, 0xCD, 0x75, 0xEC, 0x51, 0xC2, + 0x02, 0xA9, 0x17, 0x10, 0x5B, 0x4A, 0x4B, 0xED, + 0x1B, 0x80, 0x14, 0x68, 0x31, 0xDC, 0xED, 0x07, + 0xEF, 0xD2, 0xED, 0x25, 0x73, 0x9F, 0x54, 0x09, + 0x69, 0x11, 0xB1, 0x50, 0xD3, 0x07, 0x7C, 0xCD, + 0x73, 0x1A, 0x03, 0x61, 0x68, 0x27, 0x25, 0xD5, + 0x38, 0x03, 0xF8, 0xFC, 0xEA, 0xA8, 0x39, 0x19, + 0x29, 0x1E, 0xDB, 0x44, 0x93, 0xEC, 0x84, 0xCC, + 0xE1, 0xD0, 0xF8, 0x2A, 0x67, 0x92, 0x36, 0xEA, + 0xD1, 0x00, 0x2A, 0xE8, 0x01, 0x8C, 0xAC, 0x9F, + 0xDB, 0xD2, 0x46, 0xFF, 0x09, 0x3D, 0x80, 0x3C, + 0x0D, 0xE3, 0x32, 0x6A, 0x57, 0x90, 0x7B, 0x0D, + 0xD6, 0xB0, 0x1D, 0x08, 0x14, 0x58, 0xC7, 0x57, + 0x28, 0xC6, 0x00, 0x82, 0x99, 0x28, 0x89, 0x0A, + 0x56, 0xAA, 0xAF, 0xEF, 0xCF, 0x74, 0x23, 0xB7, + 0x0A, 0x6D, 0x86, 0xB4, 0x15, 0xB8, 0x35, 0x8D, + 0xD0, 0x44, 0xAB, 0xEE, 0x00, 0xB9, 0xC9, 0x79, + 0x5F, 0xC8, 0xF6, 0x1A, 0x64, 0x68, 0x6D, 0xF5, + 0xF8, 0x76, 0xA8, 0xF3, 0x30, 0x61, 0x59, 0x9A, + 0xE8, 0x30, 0xF7, 0xEB, 0x4C, 0x4B, 0xFF, 0x87, + 0x5F, 0x4A, 0x93, 0x6C, 0x40, 0x3C, 0x5D, 0x16, + 0x0D, 0xE5, 0xD3, 0x3C, 0xAE, 0xE4, 0x0F, 0xB7, + 0x18, 0xDD, 0xA4, 0x47, 0x8A, 0xC6, 0xF5, 0x1C, + 0x59, 0xC2, 0x15, 0x52, 0x54, 0xBD, 0x77, 0x67, + 0x11, 0x18, 0x41, 0x1E, 0x26, 0x09, 0xD0, 0x00, + 0x30, 0x6F, 0xC9, 0x50, 0x70, 0x04, 0xA3, 0x1E, + 0x89, 0x57, 0xEA, 0x40, 0xC2, 0x56, 0x4B, 0x83, + 0xC3, 0xAB, 0xB7, 0x1A, 0x87, 0xC1, 0x1B, 0xD1, + 0x8D, 0x78, 0x91, 0xC4, 0x49, 0xDB, 0xBE, 0x79, + 0xB4, 0xA4, 0xFB, 0x04, 0x83, 0x07, 0xCE, 0x0E, + 0x81, 0x2B, 0x2C, 0x68, 0xEC, 0xAB, 0x77, 0xFD, + 0x11, 0x11, 0x52, 0x6A, 0xB0, 0x81, 0x73, 0x06, + 0xCE, 0xBC, 0xB0, 0x49, 0x7C, 0x55, 0x24, 0x31, + 0xCE, 0x15, 0xE4, 0xAB, 0x52, 0x28, 0x3F, 0x67, + 0x94, 0x80, 0xD6, 0x9D, 0xDD, 0xE1, 0xF2, 0x57, + 0x9C, 0xFD, 0xBE, 0x0B, 0xCA, 0x95, 0xFC, 0x5B, + 0x2D, 0xB0, 0xC5, 0xCC, 0x76, 0xA3, 0x19, 0x50, + 0xF5, 0x11, 0x6A, 0xAE, 0x5F, 0x02, 0xD4, 0x67, + 0x10, 0xE4, 0x25, 0x7A, 0x75, 0xFD, 0xED, 0xF2, + 0xF4, 0x7C, 0xE3, 0x7C, 0x20, 0x3E, 0x7F, 0x24, + 0xD3, 0xC9, 0x17, 0x97, 0x13, 0xC5, 0xD8, 0x07, + 0xC2, 0x96, 0x14, 0x9A, 0x75, 0xCC, 0xB4, 0x44, + 0xF0, 0xC6, 0xF6, 0xAB, 0xDD, 0x2D, 0xBB, 0x29, + 0x85, 0xFE, 0x26, 0x74, 0x82, 0x85, 0x8A, 0x1E + }; +#endif /* WOLFSSL_NO_ML_DSA_65 */ +#ifndef WOLFSSL_NO_ML_DSA_87 + static const byte seed_87[] = { + 0x38, 0x35, 0x9F, 0xBC, 0xD7, 0x95, 0x82, 0xCF, + 0xFE, 0x60, 0x9E, 0x13, 0x7E, 0xE2, 0xEF, 0xE8, + 0xA8, 0xDB, 0xCB, 0xAD, 0x18, 0xBA, 0x92, 0xBB, + 0x43, 0x3A, 0xB4, 0xF0, 0x9B, 0x49, 0x29, 0x9D + }; + static const byte pk_87[] = { + 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, + 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, + 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, + 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, + 0x83, 0x01, 0xE6, 0x66, 0xF5, 0x9D, 0x3E, 0xC5, + 0x04, 0x4D, 0xE4, 0x56, 0x78, 0x8F, 0xDE, 0x19, + 0xEB, 0x39, 0x67, 0x7B, 0x5F, 0x9F, 0xE1, 0x41, + 0x50, 0xDA, 0x46, 0x3A, 0x70, 0x6F, 0x3B, 0xAF, + 0x71, 0x5B, 0x95, 0x33, 0x6B, 0x2D, 0x68, 0x5A, + 0x7C, 0xD7, 0x88, 0x07, 0x13, 0xE4, 0x58, 0x7B, + 0xF7, 0xD8, 0x57, 0xBF, 0x7E, 0x31, 0x56, 0x96, + 0xB8, 0xD0, 0xD9, 0xD4, 0x9E, 0x14, 0x29, 0x18, + 0xBF, 0x09, 0x74, 0xE7, 0xF4, 0x32, 0x37, 0xD4, + 0xBE, 0x3A, 0xD3, 0x94, 0x59, 0x9E, 0x3D, 0x39, + 0xBB, 0x76, 0x49, 0x93, 0x25, 0x53, 0x44, 0x7E, + 0x5D, 0x5A, 0xCC, 0x34, 0x99, 0x93, 0x01, 0x76, + 0xEC, 0xD3, 0xA8, 0x44, 0xA4, 0x25, 0xF5, 0x0D, + 0x05, 0x11, 0xC9, 0x22, 0x6C, 0x4B, 0x9A, 0x24, + 0xF2, 0xA0, 0x11, 0xCD, 0x88, 0xD3, 0x23, 0x08, + 0xE0, 0x31, 0x2A, 0x0C, 0x87, 0xCC, 0x34, 0xA9, + 0x95, 0x82, 0x3C, 0x65, 0xF4, 0xF0, 0xF9, 0x8E, + 0x50, 0xC3, 0x77, 0x88, 0xCE, 0x38, 0xDC, 0x28, + 0xFB, 0x8B, 0x9B, 0xFA, 0xAF, 0xA9, 0x04, 0xB5, + 0x41, 0xEE, 0x71, 0x2F, 0x6A, 0x04, 0x1E, 0x06, + 0x11, 0x37, 0x4F, 0x6B, 0xF1, 0x7E, 0xAC, 0x0B, + 0xD5, 0x6F, 0x3B, 0x6B, 0xF3, 0x36, 0xDA, 0x92, + 0x42, 0x07, 0x0C, 0x24, 0x69, 0xA2, 0x0C, 0x4D, + 0x16, 0x16, 0x14, 0x9A, 0x61, 0x59, 0x25, 0x20, + 0x11, 0xD2, 0x99, 0xF9, 0x3F, 0x98, 0x6D, 0x87, + 0x5D, 0xD3, 0x0B, 0x38, 0xA2, 0x25, 0x49, 0x17, + 0x45, 0x70, 0x13, 0x8C, 0x2B, 0xB3, 0xAA, 0x9C, + 0xBE, 0xA9, 0x19, 0x74, 0xF3, 0xD8, 0x9B, 0xF5, + 0xAE, 0x32, 0xBE, 0x9E, 0x58, 0xB8, 0x54, 0xA2, + 0xF8, 0xE8, 0x6F, 0xF7, 0x67, 0x80, 0xC0, 0x34, + 0x90, 0xF4, 0x67, 0xDB, 0x06, 0x51, 0xC2, 0x0B, + 0x1D, 0xF6, 0x0E, 0xB9, 0x7A, 0x3C, 0x99, 0xD9, + 0xBD, 0x66, 0x4B, 0xE6, 0xA5, 0xE4, 0xC8, 0xA8, + 0xAD, 0x4C, 0xC3, 0x63, 0x90, 0xD7, 0x00, 0x4E, + 0x4B, 0xB4, 0x21, 0xDA, 0xED, 0x65, 0x4C, 0x35, + 0x7D, 0xA4, 0xD6, 0x84, 0x98, 0x93, 0x3E, 0xC7, + 0x17, 0x77, 0xAD, 0x64, 0xC2, 0xAE, 0x01, 0x3C, + 0x73, 0xEB, 0x45, 0x7C, 0x68, 0xEF, 0x9A, 0x74, + 0x5A, 0xDE, 0xEB, 0x4F, 0xDF, 0xC8, 0x79, 0xE7, + 0x74, 0xD0, 0x3F, 0xAF, 0x6B, 0x14, 0xAA, 0xB1, + 0x07, 0x52, 0xE2, 0x4B, 0x52, 0xD0, 0xF2, 0xD9, + 0x4D, 0x54, 0x0A, 0x1E, 0xBE, 0x10, 0xF5, 0x97, + 0xE5, 0x14, 0x44, 0x2D, 0x6C, 0x13, 0xC2, 0xE2, + 0x49, 0x8E, 0x8A, 0xF3, 0x01, 0x7C, 0x52, 0xDB, + 0x23, 0x3A, 0x90, 0x71, 0x7D, 0xF2, 0x5B, 0x4D, + 0x07, 0x2B, 0x7D, 0x88, 0xEE, 0x87, 0x31, 0xD1, + 0x68, 0x24, 0xC9, 0x5D, 0x1F, 0xB9, 0x83, 0xC4, + 0x49, 0xDE, 0xB4, 0x66, 0x27, 0x60, 0x60, 0xFE, + 0xE4, 0xC7, 0xEE, 0x38, 0x14, 0x51, 0xF2, 0x32, + 0xC2, 0x9C, 0x7C, 0x32, 0x20, 0x85, 0x0C, 0x61, + 0xD1, 0xC3, 0xC0, 0x0D, 0xB1, 0xCD, 0x97, 0x26, + 0xA0, 0x2A, 0x56, 0x60, 0x9F, 0x3A, 0x65, 0xD3, + 0xD1, 0x64, 0x60, 0x45, 0x88, 0xCD, 0x9B, 0x43, + 0x14, 0x12, 0xF1, 0xAD, 0xD9, 0x14, 0xC5, 0xC2, + 0xDA, 0xBB, 0xC9, 0x04, 0x67, 0xC0, 0xC4, 0xEA, + 0x5F, 0x76, 0xE2, 0x4A, 0xA6, 0x18, 0x76, 0x5F, + 0x8B, 0x06, 0x36, 0xD7, 0xB0, 0x65, 0xE1, 0xF4, + 0xE6, 0xF6, 0x22, 0xEA, 0xE1, 0x71, 0x52, 0x45, + 0x8C, 0x76, 0x65, 0x86, 0x77, 0x2D, 0x36, 0x3F, + 0xA9, 0x92, 0x14, 0xF4, 0x72, 0xB0, 0xDB, 0x8A, + 0x1E, 0x49, 0xD8, 0x2D, 0x02, 0x78, 0xF2, 0x95, + 0x8B, 0x0A, 0xAA, 0x15, 0x86, 0xDB, 0x13, 0x4B, + 0xDF, 0xD2, 0x43, 0x87, 0x42, 0x49, 0x50, 0x07, + 0xE2, 0xFE, 0x5B, 0x60, 0xE2, 0x46, 0x39, 0x92, + 0x26, 0x94, 0x7A, 0x12, 0xEA, 0x17, 0x63, 0x1C, + 0xAA, 0x53, 0x46, 0x87, 0xCB, 0x75, 0xC0, 0x60, + 0xB4, 0x79, 0x7E, 0xAB, 0x82, 0x77, 0xCC, 0x4F, + 0x8A, 0x7A, 0x20, 0x38, 0x76, 0x06, 0xEF, 0xE2, + 0xDB, 0xD3, 0xE7, 0x36, 0x24, 0x92, 0x77, 0xD9, + 0x0F, 0xCA, 0xB9, 0x92, 0xA8, 0xC9, 0x9E, 0x85, + 0xAB, 0x03, 0xEB, 0x4C, 0xAC, 0x5D, 0x88, 0x55, + 0x39, 0x58, 0x52, 0x8A, 0xF9, 0x29, 0x74, 0x71, + 0x81, 0x35, 0xF1, 0xD0, 0xC7, 0x93, 0xEB, 0x00, + 0x0E, 0xA0, 0xAE, 0xC3, 0xEC, 0x18, 0x58, 0xFD, + 0xD1, 0x86, 0x88, 0xD1, 0xDA, 0x27, 0x27, 0x8D, + 0xEB, 0xF2, 0xCA, 0x81, 0x10, 0xBA, 0x4A, 0x20, + 0x4F, 0x79, 0x30, 0xE1, 0xC8, 0xCE, 0xEC, 0xAF, + 0xB7, 0x3F, 0x75, 0xDD, 0xB3, 0x4C, 0x5C, 0x55, + 0x96, 0x8A, 0x79, 0x33, 0x05, 0x84, 0x26, 0xB5, + 0x5D, 0x03, 0x9F, 0x72, 0x92, 0xAC, 0x43, 0xF6, + 0x45, 0x84, 0xF6, 0xDF, 0x18, 0x7A, 0x1D, 0x6B, + 0x00, 0x3F, 0x51, 0x4C, 0xC1, 0x3B, 0x26, 0xC2, + 0xF3, 0x48, 0x19, 0x5A, 0xA3, 0x21, 0xDE, 0x6A, + 0x27, 0xEC, 0x11, 0x34, 0x8D, 0xE5, 0x0D, 0x82, + 0x5A, 0x29, 0x64, 0xC6, 0x31, 0x99, 0x2E, 0x4B, + 0x0B, 0x42, 0x5B, 0x1B, 0xEB, 0x4F, 0x96, 0x00, + 0xE3, 0xAD, 0xC4, 0x43, 0x1C, 0xF2, 0xE8, 0x8B, + 0x42, 0x23, 0xD2, 0xDB, 0x66, 0x3C, 0x3C, 0xE7, + 0x0E, 0xF8, 0x5D, 0xDD, 0x56, 0xA9, 0xBA, 0xF1, + 0x38, 0xA9, 0xD7, 0xED, 0xD8, 0x94, 0x13, 0x1C, + 0x3A, 0x8F, 0x41, 0xA0, 0x4E, 0xF9, 0xF8, 0x67, + 0x52, 0xB7, 0x21, 0x81, 0xFA, 0xBB, 0x37, 0xC8, + 0x6B, 0x87, 0x7E, 0x61, 0xD6, 0x0E, 0xED, 0x95, + 0xEE, 0xFF, 0xAB, 0xE6, 0x37, 0x6E, 0x14, 0xAC, + 0xA8, 0x17, 0xC5, 0xF4, 0x19, 0x61, 0xAF, 0x8A, + 0x78, 0x49, 0xBA, 0xC0, 0x94, 0x91, 0x7B, 0x2D, + 0x13, 0x22, 0x76, 0xB6, 0xB3, 0x48, 0x6A, 0xFF, + 0x95, 0x0D, 0x23, 0xD4, 0xAA, 0xDC, 0x24, 0xCE, + 0x98, 0xA5, 0x26, 0x9E, 0x1C, 0x69, 0x91, 0x79, + 0x60, 0xA3, 0x1E, 0xE0, 0x9A, 0x52, 0x7C, 0x35, + 0x81, 0x75, 0xCA, 0xA0, 0xCB, 0x1B, 0x01, 0x8E, + 0x95, 0x26, 0xD9, 0x35, 0x34, 0xEA, 0xDB, 0xAC, + 0xB5, 0x2B, 0x27, 0x3D, 0x73, 0x5E, 0x22, 0xDD, + 0x0D, 0x5C, 0x28, 0xFA, 0x3E, 0x47, 0xCF, 0xE9, + 0x0B, 0x52, 0x15, 0xAE, 0x24, 0xF1, 0x46, 0xC3, + 0x46, 0x4B, 0xFE, 0xAF, 0x01, 0xD2, 0x8D, 0xAA, + 0x55, 0x3C, 0x1E, 0x94, 0x42, 0x8A, 0x10, 0x4A, + 0x9D, 0x78, 0xAE, 0xC7, 0x62, 0x59, 0x1E, 0x88, + 0x79, 0xF7, 0x68, 0x51, 0xCF, 0xB4, 0x64, 0x85, + 0x66, 0x72, 0x1B, 0x0C, 0xAC, 0x1F, 0x14, 0xFE, + 0x16, 0x14, 0x9A, 0x9D, 0x82, 0x10, 0xCC, 0x8F, + 0x2F, 0x50, 0xDE, 0xF7, 0xB4, 0x6C, 0x84, 0x3B, + 0xE9, 0x3B, 0xD8, 0xD5, 0x56, 0x02, 0x49, 0x33, + 0x50, 0xAB, 0x56, 0x0E, 0xA5, 0xBA, 0x17, 0x71, + 0x64, 0x23, 0xBE, 0x0E, 0xB8, 0x36, 0x0A, 0xB1, + 0x09, 0xD8, 0xFB, 0x18, 0xBF, 0xEA, 0x04, 0x08, + 0x47, 0xB7, 0x33, 0x51, 0x45, 0xD4, 0xF2, 0x00, + 0xD1, 0x9C, 0xF6, 0xFE, 0x7B, 0xAC, 0x91, 0x7F, + 0x42, 0x6C, 0x9B, 0x3D, 0x39, 0xA9, 0xCA, 0x43, + 0x29, 0x81, 0x8F, 0x24, 0x0E, 0x7D, 0xA3, 0x82, + 0x76, 0x10, 0x72, 0xF4, 0xA6, 0x50, 0x5E, 0xA8, + 0xE7, 0x6C, 0x1E, 0x44, 0x6F, 0xEB, 0x66, 0x25, + 0xE3, 0x8D, 0xDB, 0xCD, 0x3C, 0xDA, 0x81, 0xE8, + 0x3B, 0xF7, 0x68, 0xF3, 0xE0, 0x1D, 0x9D, 0x26, + 0x3B, 0x36, 0x73, 0x03, 0xAE, 0x15, 0x6C, 0x0B, + 0x71, 0x83, 0x36, 0x4A, 0x1E, 0x79, 0x41, 0xA0, + 0x92, 0x98, 0xA3, 0xAD, 0xF7, 0xBD, 0x23, 0x1E, + 0x61, 0x14, 0xB9, 0xDC, 0xE7, 0x95, 0x2B, 0x11, + 0x3F, 0x78, 0x16, 0x31, 0x38, 0xB9, 0x26, 0x6F, + 0x84, 0x3F, 0x1E, 0xD9, 0x7D, 0x9C, 0x2B, 0x16, + 0x3A, 0x6E, 0x8B, 0xD4, 0xC1, 0xAB, 0x4E, 0x17, + 0x93, 0x67, 0xC5, 0xAC, 0x96, 0xCE, 0xCF, 0x50, + 0x50, 0xFE, 0x82, 0x1F, 0xDF, 0xA4, 0x4E, 0x9E, + 0x68, 0x0B, 0x61, 0xC6, 0x01, 0x89, 0x32, 0xDF, + 0x71, 0x78, 0x11, 0x45, 0x9A, 0xF2, 0x54, 0x2E, + 0x2C, 0xDE, 0x77, 0x17, 0x8C, 0x2E, 0x98, 0x80, + 0xF0, 0x11, 0xE4, 0x05, 0xEA, 0xFA, 0x59, 0xC8, + 0xCB, 0xBE, 0xD7, 0x6E, 0x5A, 0x19, 0x41, 0x10, + 0x4B, 0x1B, 0x9D, 0x3A, 0x60, 0x49, 0x1C, 0x95, + 0x47, 0x55, 0xE0, 0x2E, 0x89, 0x41, 0x03, 0xF1, + 0xF4, 0x97, 0x74, 0x75, 0xE9, 0xEA, 0x36, 0x60, + 0x9F, 0xD6, 0x7C, 0x9D, 0xE3, 0x18, 0xED, 0xA2, + 0x37, 0x0D, 0xCC, 0xDB, 0xB9, 0xCE, 0xF7, 0xAE, + 0x63, 0x60, 0x90, 0x5E, 0xC2, 0x20, 0x83, 0x8C, + 0x97, 0x69, 0x82, 0x34, 0x41, 0xCD, 0xD0, 0xDA, + 0x8E, 0xF0, 0xAB, 0xE5, 0xF2, 0xD1, 0xD7, 0x6E, + 0x2F, 0xE0, 0x8F, 0xEF, 0x53, 0xDE, 0x1D, 0x61, + 0x66, 0xAB, 0x1A, 0x92, 0xB1, 0xAC, 0x09, 0x3E, + 0x5A, 0xBF, 0x76, 0x58, 0xC4, 0xB5, 0x72, 0x87, + 0xF2, 0xD1, 0xFD, 0x7B, 0x82, 0xDE, 0xDA, 0xF8, + 0xD5, 0xA4, 0xFB, 0xAC, 0x4B, 0x35, 0xD5, 0x82, + 0x31, 0x69, 0x4E, 0x16, 0x24, 0x97, 0x57, 0x8A, + 0xBD, 0x7A, 0xA7, 0xC8, 0xFE, 0x7B, 0x35, 0x41, + 0xA7, 0xF1, 0x8E, 0x54, 0xE8, 0xB7, 0xF0, 0x87, + 0x64, 0xC5, 0xE6, 0x84, 0x49, 0xDF, 0x65, 0x59, + 0x01, 0x54, 0x98, 0x32, 0xD6, 0x28, 0xFA, 0x63, + 0xD2, 0xB2, 0xC5, 0xA1, 0x50, 0x93, 0x39, 0x94, + 0xA9, 0x86, 0x33, 0x17, 0xAD, 0x40, 0xD7, 0x78, + 0xD9, 0xD2, 0xC0, 0x5C, 0x78, 0x98, 0x85, 0x0B, + 0x90, 0x17, 0x32, 0x23, 0xC7, 0xA0, 0xAF, 0x89, + 0x0F, 0xD7, 0xE6, 0x62, 0x21, 0xB6, 0xF0, 0x63, + 0x18, 0xB2, 0xED, 0x5E, 0x19, 0x9C, 0xB4, 0x24, + 0x88, 0x5A, 0xB8, 0x41, 0xE7, 0xA4, 0x72, 0x6F, + 0xAB, 0xA2, 0xF9, 0xBB, 0x53, 0xBC, 0x32, 0x36, + 0x43, 0x4C, 0x35, 0xFB, 0xBE, 0x4B, 0x1A, 0x0F, + 0x93, 0xF5, 0x0C, 0x37, 0x89, 0x6C, 0x29, 0xF8, + 0xE3, 0x02, 0xAD, 0x31, 0xED, 0x33, 0x31, 0xD6, + 0x20, 0xE3, 0xB6, 0x29, 0x45, 0x51, 0x01, 0xA1, + 0xF1, 0xCC, 0x7B, 0xA5, 0xE4, 0x6E, 0x68, 0xED, + 0x4A, 0x8C, 0xCC, 0x87, 0xB4, 0xDC, 0x75, 0xBC, + 0x01, 0x62, 0xB6, 0x33, 0x0F, 0x83, 0x3F, 0xBA, + 0x25, 0x75, 0xDF, 0xAF, 0x5B, 0x5F, 0x28, 0xBC, + 0x54, 0xFF, 0x2B, 0xA8, 0x1E, 0x7A, 0x47, 0x31, + 0x3C, 0x15, 0x48, 0x2B, 0x60, 0x5E, 0x66, 0xBB, + 0x38, 0xC6, 0x19, 0x8F, 0x13, 0x92, 0x10, 0x40, + 0x80, 0xFB, 0xE7, 0x8B, 0x86, 0xB1, 0xBC, 0x9A, + 0x6F, 0xB8, 0x81, 0xF5, 0xC7, 0x82, 0x01, 0x47, + 0xE6, 0xBA, 0x14, 0xB8, 0x1A, 0xCC, 0xF2, 0x0C, + 0xAE, 0x96, 0x64, 0x10, 0x94, 0xC2, 0x16, 0x90, + 0x2E, 0xA5, 0xC1, 0x25, 0xF6, 0xC9, 0x35, 0xA1, + 0x50, 0xD7, 0xC9, 0xAC, 0xC5, 0xD9, 0xE2, 0xE5, + 0xD9, 0x0E, 0x38, 0xC0, 0x50, 0x3A, 0xA9, 0x42, + 0x60, 0x17, 0xC7, 0x6A, 0xAF, 0xCD, 0x52, 0x61, + 0xB5, 0x06, 0x27, 0x4E, 0xC1, 0x3A, 0x96, 0x79, + 0xFB, 0x09, 0x79, 0x60, 0x27, 0xA4, 0xBB, 0x75, + 0x9D, 0x92, 0x82, 0x79, 0xB9, 0x4D, 0x84, 0x1A, + 0x09, 0x73, 0x93, 0xBF, 0x7E, 0x5B, 0xD6, 0x9A, + 0x49, 0x6C, 0xC3, 0xDE, 0xCD, 0x2B, 0x0F, 0x07, + 0xF8, 0x33, 0x92, 0xAA, 0xDE, 0x33, 0xDC, 0x51, + 0xB2, 0xA8, 0x4F, 0x6A, 0x07, 0x63, 0x5D, 0xC0, + 0xEF, 0x57, 0xA9, 0xAD, 0x59, 0x59, 0xB6, 0xA5, + 0x0B, 0x7B, 0xA5, 0x09, 0xAD, 0x5B, 0x11, 0xFA, + 0xD2, 0x6B, 0x41, 0x9F, 0x9F, 0x1E, 0x3F, 0x9C, + 0x73, 0x29, 0xB5, 0xA9, 0x53, 0xD7, 0xCC, 0x87, + 0xB2, 0xDE, 0x21, 0x06, 0x11, 0xCF, 0x52, 0xA6, + 0x39, 0xEF, 0x2B, 0x39, 0x08, 0x01, 0x2C, 0xB8, + 0x8E, 0x1D, 0x6F, 0x57, 0x62, 0x50, 0x79, 0xCB, + 0x10, 0x3D, 0x6C, 0x98, 0x10, 0x1A, 0x11, 0xBD, + 0x22, 0x33, 0xB6, 0x56, 0x02, 0xCA, 0x30, 0x49, + 0xBD, 0x32, 0x05, 0x20, 0x41, 0x9F, 0x76, 0xB0, + 0x61, 0xE3, 0x59, 0x8D, 0xE3, 0x81, 0x52, 0xC8, + 0x87, 0x67, 0xD1, 0xA2, 0x4F, 0xBD, 0x02, 0xBB, + 0x10, 0xC3, 0x8E, 0xAC, 0xAE, 0x31, 0x7D, 0xE6, + 0xBB, 0x28, 0x7B, 0x4D, 0x2C, 0xAE, 0x5D, 0xA0, + 0x21, 0x49, 0x65, 0xD8, 0x77, 0x37, 0x78, 0x62, + 0x6E, 0x9B, 0x97, 0x28, 0x59, 0xD8, 0x48, 0x2B, + 0x8D, 0x05, 0x47, 0xE4, 0xF5, 0x6D, 0xFF, 0x87, + 0x68, 0x1D, 0x5B, 0xC5, 0x12, 0x0F, 0x61, 0x3F, + 0xBB, 0xD9, 0x1E, 0x1F, 0x14, 0xE6, 0xDE, 0xFE, + 0x67, 0x2E, 0x2A, 0x7E, 0xAB, 0xCB, 0xBB, 0x9B, + 0x11, 0x08, 0x2C, 0x5E, 0x70, 0x0A, 0xA0, 0xB1, + 0xF7, 0xC1, 0x78, 0x5F, 0xCE, 0xD1, 0x9A, 0x93, + 0xAF, 0xE7, 0xC5, 0x9F, 0xA2, 0x51, 0x9B, 0xCD, + 0xEB, 0x49, 0x4C, 0x3D, 0x13, 0xB2, 0x12, 0x5F, + 0x38, 0x53, 0x23, 0xB8, 0x16, 0xC6, 0x8F, 0x8F, + 0x56, 0x28, 0xC7, 0xC2, 0xAB, 0xFD, 0x02, 0x78, + 0xA3, 0x37, 0x07, 0x3D, 0xA7, 0x4D, 0x16, 0x09, + 0x96, 0x98, 0xC4, 0xB1, 0x14, 0xE8, 0xA8, 0xCE, + 0x34, 0x4E, 0x0A, 0x15, 0xD0, 0xFC, 0x7E, 0xD4, + 0x97, 0xB0, 0x01, 0xD5, 0x3D, 0x4C, 0x96, 0xDC, + 0x39, 0x54, 0xD3, 0xB4, 0xB9, 0x56, 0xCB, 0x9D, + 0x2A, 0x27, 0x2C, 0x51, 0xF1, 0x55, 0x9B, 0x22, + 0x90, 0x4B, 0x40, 0xCC, 0x85, 0x31, 0xE4, 0x0C, + 0xC4, 0x12, 0xC6, 0x8C, 0xB6, 0xEE, 0xA4, 0xA4, + 0x09, 0x0B, 0x38, 0xE2, 0x79, 0x73, 0x29, 0x98, + 0x54, 0x67, 0xE8, 0x18, 0xA5, 0x24, 0xD3, 0x22, + 0x8E, 0xAC, 0xAE, 0x78, 0x25, 0xD3, 0xDA, 0xD2, + 0xEA, 0xA4, 0x22, 0xFD, 0xC7, 0x7A, 0xED, 0x71, + 0xA2, 0x05, 0xDA, 0x78, 0x38, 0xD9, 0x45, 0xE7, + 0xFE, 0xC3, 0x7E, 0x4D, 0xCA, 0x67, 0xE5, 0x04, + 0xCE, 0x35, 0xE5, 0xB0, 0x45, 0xF5, 0x6F, 0x1E, + 0x8D, 0x75, 0x29, 0xEB, 0xD6, 0xF1, 0xAF, 0x7B, + 0x6E, 0x93, 0x9E, 0x2B, 0x7A, 0xB4, 0x02, 0x7D, + 0x37, 0xA5, 0x13, 0x5D, 0x17, 0x2D, 0xA1, 0xAF, + 0x9C, 0xA2, 0xF7, 0x28, 0xA6, 0xF3, 0x7D, 0xE6, + 0x0D, 0xD2, 0x3D, 0x97, 0xD1, 0x1E, 0x75, 0xAB, + 0x1F, 0xD5, 0x1F, 0x8E, 0x9A, 0x13, 0x97, 0xE5, + 0x82, 0x21, 0x59, 0xDB, 0x58, 0x38, 0x02, 0xB3, + 0x2E, 0xEB, 0xB4, 0x56, 0x7E, 0xCE, 0x37, 0x46, + 0xD1, 0xAE, 0x33, 0x31, 0x47, 0x85, 0x64, 0x3D, + 0xD2, 0xA0, 0x74, 0x1E, 0x7F, 0x1B, 0xF2, 0xD2, + 0x61, 0xF2, 0x21, 0x24, 0xE8, 0xDD, 0xD0, 0x8C, + 0x64, 0x0A, 0x48, 0xB5, 0x47, 0x17, 0x51, 0x7C, + 0x21, 0xCD, 0x32, 0x53, 0x28, 0xBC, 0x23, 0x9C, + 0xA0, 0x28, 0xB2, 0x63, 0x0D, 0x06, 0x3C, 0x8C, + 0xC2, 0x0B, 0xE9, 0xBD, 0xB4, 0x85, 0x02, 0xDA, + 0xDD, 0xE7, 0x3F, 0xFE, 0xD5, 0x96, 0x38, 0x16, + 0x53, 0x3E, 0x02, 0x0A, 0xED, 0x12, 0x08, 0x53, + 0x62, 0x55, 0xB1, 0xCC, 0xE9, 0x85, 0x43, 0x31, + 0x27, 0xFF, 0x4F, 0x04, 0xD5, 0xB1, 0xE2, 0xF2, + 0x10, 0x87, 0x04, 0xB8, 0xB9, 0x66, 0x58, 0x8C, + 0x01, 0x56, 0xAF, 0xC2, 0xAE, 0x19, 0x29, 0x86, + 0xFB, 0xEC, 0x44, 0x3B, 0xAE, 0xF6, 0xCB, 0x85, + 0xA6, 0xF2, 0x9C, 0x77, 0x92, 0x40, 0x5A, 0x24, + 0x11, 0x47, 0x10, 0xAE, 0x1C, 0x74, 0x64, 0x44, + 0xFD, 0xF5, 0xFB, 0x65, 0x9E, 0x5E, 0x34, 0x68, + 0x26, 0x20, 0x7B, 0x8C, 0x54, 0x46, 0x3A, 0x06, + 0x17, 0xCE, 0x17, 0xFF, 0x33, 0xE4, 0x0F, 0x93, + 0x1F, 0xE5, 0x76, 0x71, 0x5C, 0x93, 0x2E, 0xF2, + 0x9F, 0xD7, 0x6B, 0x04, 0xA6, 0x9B, 0x58, 0xE0, + 0x30, 0x3D, 0x8E, 0xF2, 0x56, 0x78, 0xC8, 0xB7, + 0x0A, 0xF1, 0x2E, 0x90, 0x45, 0x59, 0x1C, 0x04, + 0xE8, 0xB7, 0x71, 0x06, 0x94, 0x04, 0x15, 0x17, + 0x7E, 0x86, 0x85, 0x93, 0xA0, 0x9C, 0x7E, 0x14, + 0x61, 0x9A, 0x4B, 0x33, 0x2F, 0x9A, 0xDC, 0x3A, + 0x65, 0x8B, 0x86, 0x01, 0x7F, 0x32, 0x65, 0x6C, + 0x54, 0x29, 0xC1, 0x15, 0xE1, 0x10, 0x03, 0x7A, + 0x8C, 0xC7, 0xE5, 0x44, 0x67, 0x7D, 0x2D, 0xD2, + 0x39, 0xA5, 0x9D, 0x54, 0xD0, 0xF3, 0xC7, 0x46, + 0x0E, 0xC1, 0x52, 0x08, 0x34, 0x6B, 0xA5, 0x6D, + 0xF5, 0x08, 0x6C, 0x5D, 0xBC, 0xC4, 0x1E, 0x0C, + 0x95, 0xFC, 0xB6, 0x86, 0x1C, 0x2C, 0x0C, 0x32, + 0xAA, 0xF3, 0x45, 0x4E, 0xFE, 0xE2, 0xFF, 0xBA, + 0x21, 0x4B, 0x43, 0x0E, 0xF2, 0x48, 0xA5, 0x9B, + 0x32, 0x44, 0x4D, 0x8D, 0x0D, 0x3D, 0xB8, 0x7C, + 0x9D, 0x4B, 0x15, 0x36, 0xD1, 0x57, 0x72, 0x8E, + 0xE7, 0x58, 0x5E, 0xF5, 0x32, 0x77, 0x6A, 0x00, + 0x3A, 0x02, 0x3C, 0x0A, 0xB0, 0xE9, 0xFF, 0x55, + 0x71, 0x08, 0xC3, 0x90, 0x68, 0x4D, 0x56, 0x5A, + 0x66, 0x50, 0x63, 0x26, 0x6A, 0xE6, 0x67, 0x0E, + 0xD5, 0x3B, 0x0F, 0xAF, 0x8F, 0xF6, 0x78, 0x29, + 0xBB, 0x73, 0x78, 0x25, 0xB1, 0x53, 0xA9, 0x33, + 0x8C, 0xBE, 0x3D, 0xF1, 0xA4, 0x62, 0x84, 0x9B, + 0x93, 0xA8, 0x1F, 0x84, 0xED, 0x07, 0xBE, 0x6D, + 0x62, 0x40, 0x00, 0x32, 0x74, 0x73, 0x7F, 0x61, + 0x8D, 0xCB, 0x26, 0xE4, 0x82, 0x52, 0xCE, 0x42, + 0x04, 0xDD, 0x31, 0x39, 0xFF, 0x68, 0x76, 0xF4, + 0x3B, 0x30, 0x5D, 0x83, 0x56, 0x20, 0xFE, 0xDF, + 0x79, 0xAA, 0x67, 0x43, 0x3D, 0xC2, 0x52, 0x87, + 0x32, 0x0E, 0x99, 0x17, 0x96, 0x7B, 0x70, 0xB2, + 0xD8, 0x66, 0xD1, 0x7B, 0x69, 0x8B, 0xFF, 0xF2, + 0xB3, 0xAB, 0x95, 0x14, 0x94, 0x9E, 0x58, 0xB5, + 0x7C, 0x68, 0xA4, 0x54, 0x12, 0xC1, 0xFC, 0x42, + 0x1C, 0x76, 0x8B, 0xF5, 0xEE, 0x8A, 0x10, 0xC8, + 0xAE, 0xF5, 0x69, 0x26, 0xF5, 0x1E, 0xC6, 0x2C, + 0x11, 0x56, 0x9F, 0x31, 0xAA, 0x51, 0x78, 0x68, + 0xE5, 0xCA, 0xD8, 0x9E, 0x95, 0x80, 0x66, 0xEB, + 0x9E, 0xDD, 0x72, 0x71, 0xB3, 0x1C, 0xB4, 0xB1, + 0xD6, 0xCE, 0x21, 0x12, 0x25, 0xAE, 0xB5, 0xB5, + 0x7F, 0x74, 0x97, 0x19, 0xDA, 0x07, 0xEC, 0xBE, + 0xFE, 0x03, 0x88, 0x1D, 0xDE, 0x3D, 0x81, 0xE4, + 0x13, 0x5F, 0x2D, 0xC8, 0x1A, 0xF7, 0x79, 0x77, + 0x6C, 0x1B, 0x80, 0x57, 0x16, 0x2A, 0x6C, 0x98, + 0x2F, 0xBB, 0x4D, 0xA6, 0xA9, 0xAD, 0x28, 0x4A, + 0xB1, 0x0C, 0x70, 0x02, 0x20, 0x44, 0xF4, 0x6D, + 0x40, 0x0B, 0xF6, 0xAD, 0x71, 0x82, 0xD1, 0x97, + 0x78, 0x99, 0x83, 0xBE, 0x99, 0x22, 0x79, 0x79, + 0xA1, 0x33, 0x4B, 0xA1, 0x49, 0xD8, 0x69, 0xBA, + 0x1C, 0x40, 0x88, 0x12, 0x34, 0x35, 0xBF, 0x97, + 0x85, 0x41, 0x35, 0x6D, 0xAF, 0x17, 0x1F, 0x33, + 0xAD, 0xB1, 0xC9, 0x79, 0x07, 0xA0, 0xFB, 0x58, + 0x45, 0x07, 0x4A, 0x85, 0xD2, 0x6F, 0x54, 0x61, + 0x35, 0xAE, 0xD0, 0xF9, 0x1B, 0xE4, 0x53, 0x9C, + 0x12, 0xBF, 0x94, 0x11, 0xE4, 0xB5, 0x56, 0xF6, + 0x87, 0xD0, 0x69, 0xDB, 0x6B, 0x21, 0xFE, 0x2B, + 0x7F, 0x32, 0x18, 0x87, 0x44, 0x8C, 0xEA, 0x55, + 0xDB, 0x19, 0xFB, 0xB8, 0xB0, 0x48, 0x2A, 0x55, + 0xAE, 0xC1, 0x67, 0x38, 0xD7, 0x4C, 0xD2, 0x65, + 0x09, 0x38, 0x36, 0xBE, 0x99, 0xD4, 0xFB, 0x53, + 0xE9, 0xB0, 0x14, 0xB0, 0x37, 0xCD, 0xBF, 0xE9 + }; + static const byte sk_87[] = { + 0x69, 0x24, 0xBB, 0x42, 0x57, 0xA7, 0xB9, 0xAF, + 0xF0, 0x95, 0xC3, 0x0B, 0xB3, 0x5C, 0x6A, 0xE4, + 0x19, 0x82, 0x63, 0x12, 0x0F, 0x80, 0x39, 0xAA, + 0x4E, 0x78, 0xE1, 0x74, 0xA7, 0x86, 0xCE, 0x00, + 0x3B, 0x9A, 0xC2, 0xC1, 0x42, 0x2A, 0x1A, 0xE8, + 0x02, 0xDD, 0xD7, 0x46, 0x4D, 0x3F, 0x32, 0x72, + 0x9A, 0x3C, 0x7D, 0xE8, 0x94, 0xD5, 0x06, 0xAC, + 0xAD, 0x25, 0xCE, 0xB3, 0x72, 0xEA, 0x31, 0x49, + 0xC9, 0x87, 0x80, 0xDC, 0xD1, 0x31, 0x4B, 0xAA, + 0x29, 0xB9, 0xB8, 0x07, 0x75, 0x4C, 0x47, 0xDE, + 0x5D, 0xCA, 0x95, 0x40, 0x64, 0xF2, 0x85, 0x28, + 0xB8, 0x15, 0xFE, 0x27, 0xB7, 0x9A, 0xC5, 0x06, + 0xB3, 0xAD, 0x76, 0x29, 0xD2, 0xC9, 0x71, 0xAB, + 0x8F, 0x28, 0x2E, 0x0C, 0x6E, 0x7E, 0x55, 0x48, + 0xEE, 0x0E, 0x11, 0x32, 0x42, 0xB7, 0xA0, 0xE0, + 0x64, 0xA6, 0xDB, 0xCE, 0x30, 0xC5, 0x61, 0x9B, + 0x19, 0x80, 0x08, 0x89, 0xA0, 0x44, 0x04, 0xB5, + 0x00, 0x13, 0xC0, 0x88, 0xC1, 0x30, 0x29, 0x62, + 0x12, 0x4C, 0xD3, 0xB4, 0x91, 0x0A, 0x35, 0x2C, + 0x43, 0x12, 0x31, 0x19, 0x99, 0x65, 0x22, 0x18, + 0x52, 0x02, 0xC3, 0x85, 0x23, 0x44, 0x0D, 0x90, + 0x24, 0x4A, 0x1A, 0x30, 0x22, 0x44, 0x28, 0x61, + 0x81, 0x06, 0x29, 0x18, 0x97, 0x68, 0x0A, 0x20, + 0x09, 0x08, 0x32, 0x6A, 0x44, 0xA4, 0x4C, 0x44, + 0x90, 0x21, 0x8A, 0x16, 0x68, 0x9A, 0xA8, 0x51, + 0x1A, 0xA5, 0x2C, 0x62, 0x46, 0x8D, 0x04, 0xC3, + 0x40, 0xD3, 0x86, 0x28, 0x60, 0xA4, 0x60, 0x13, + 0x18, 0x70, 0x84, 0x94, 0x8C, 0x63, 0xC0, 0x44, + 0x04, 0xA9, 0x28, 0x20, 0x08, 0x20, 0x43, 0x16, + 0x2A, 0x23, 0x29, 0x2D, 0x1A, 0xB1, 0x29, 0x48, + 0xB6, 0x09, 0x21, 0x88, 0x31, 0x00, 0xC5, 0x30, + 0x00, 0xC4, 0x8C, 0xD9, 0x82, 0x68, 0xE1, 0x30, + 0x4C, 0x63, 0x32, 0x45, 0x0C, 0x32, 0x86, 0x18, + 0x08, 0x31, 0x91, 0x98, 0x0D, 0x10, 0xB8, 0x70, + 0x9B, 0x30, 0x22, 0x64, 0x04, 0x08, 0x93, 0xA4, + 0x8C, 0x21, 0xC9, 0x70, 0x0C, 0x35, 0x71, 0x5B, + 0x00, 0x0D, 0x14, 0x31, 0x22, 0xCC, 0x98, 0x10, + 0x21, 0x04, 0x80, 0x9B, 0x28, 0x64, 0x1C, 0x30, + 0x80, 0x21, 0x30, 0x71, 0x18, 0x33, 0x50, 0x24, + 0x25, 0x44, 0x08, 0x17, 0x8C, 0xC0, 0x08, 0x48, + 0x84, 0x44, 0x90, 0x48, 0x98, 0x30, 0xCA, 0x44, + 0x00, 0x09, 0x19, 0x51, 0x19, 0x23, 0x0C, 0x52, + 0x20, 0x0E, 0x49, 0x06, 0x32, 0x1C, 0x15, 0x4E, + 0x19, 0x48, 0x85, 0x13, 0x25, 0x49, 0xA3, 0x00, + 0x04, 0x08, 0x15, 0x6D, 0x20, 0x41, 0x0C, 0xDA, + 0x42, 0x52, 0xC1, 0x34, 0x8C, 0x00, 0x31, 0x69, + 0x43, 0x82, 0x24, 0x64, 0x94, 0x6D, 0x1C, 0x81, + 0x11, 0x01, 0x96, 0x21, 0x4B, 0x02, 0x00, 0xCA, + 0x28, 0x84, 0xCC, 0x46, 0x64, 0x51, 0x18, 0x6A, + 0x18, 0x10, 0x00, 0xA4, 0x98, 0x21, 0x60, 0xB0, + 0x68, 0x03, 0x94, 0x6C, 0x94, 0x48, 0x51, 0x80, + 0x40, 0x46, 0x92, 0x22, 0x2C, 0x23, 0x44, 0x69, + 0x98, 0x26, 0x4D, 0x1C, 0x01, 0x08, 0x52, 0x02, + 0x20, 0x8A, 0xA6, 0x08, 0x0A, 0x31, 0x61, 0x93, + 0x40, 0x0E, 0x9C, 0xC8, 0x11, 0x81, 0x32, 0x2E, + 0x21, 0x15, 0x84, 0x84, 0xC2, 0x41, 0x00, 0x22, + 0x72, 0x54, 0x22, 0x62, 0x58, 0x06, 0x92, 0x48, + 0x48, 0x44, 0x11, 0x27, 0x04, 0x04, 0xC0, 0x11, + 0x92, 0x82, 0x45, 0xA1, 0xC6, 0x8C, 0xE3, 0x32, + 0x66, 0xC1, 0x38, 0x72, 0x5A, 0x86, 0x01, 0x0C, + 0xC9, 0x90, 0x84, 0x34, 0x08, 0x58, 0xA8, 0x60, + 0x80, 0xC0, 0x70, 0xD0, 0x26, 0x62, 0x9B, 0x30, + 0x2A, 0x04, 0x29, 0x69, 0x04, 0x10, 0x8D, 0x0B, + 0xB9, 0x04, 0x50, 0x46, 0x28, 0x50, 0x48, 0x24, + 0xD0, 0x48, 0x05, 0xA2, 0x48, 0x02, 0xC3, 0x20, + 0x8C, 0xA0, 0x14, 0x00, 0x41, 0x38, 0x21, 0x4B, + 0x24, 0x01, 0x04, 0xB5, 0x49, 0x42, 0x00, 0x00, + 0x0C, 0x24, 0x28, 0x12, 0x40, 0x84, 0xA2, 0x20, + 0x44, 0x9B, 0x06, 0x90, 0x63, 0xC0, 0x88, 0x8C, + 0x14, 0x21, 0x49, 0x12, 0x10, 0x54, 0x16, 0x24, + 0x20, 0x87, 0x44, 0x50, 0x10, 0x85, 0x0C, 0xB5, + 0x64, 0xDB, 0x24, 0x41, 0xD0, 0x42, 0x29, 0x9A, + 0x16, 0x8A, 0x21, 0xB4, 0x4C, 0x13, 0xB7, 0x70, + 0x10, 0xC0, 0x85, 0x19, 0x02, 0x69, 0xCC, 0x40, + 0x61, 0x1C, 0x48, 0x46, 0x98, 0x06, 0x25, 0x60, + 0x14, 0x46, 0xE4, 0x22, 0x62, 0x24, 0x27, 0x22, + 0x62, 0x24, 0x29, 0x44, 0xC6, 0x2D, 0x08, 0x31, + 0x84, 0x20, 0x32, 0x21, 0x04, 0xB4, 0x61, 0x0A, + 0x38, 0x12, 0xD9, 0x28, 0x44, 0xA4, 0x08, 0x20, + 0xCC, 0xA8, 0x29, 0x0B, 0x21, 0x31, 0x0A, 0x34, + 0x29, 0x03, 0x21, 0x40, 0xC1, 0xA2, 0x6C, 0x8A, + 0x16, 0x12, 0x52, 0xA6, 0x64, 0xA3, 0xB2, 0x51, + 0x04, 0x29, 0x51, 0xC4, 0x04, 0x91, 0x63, 0xB0, + 0x2D, 0x14, 0x44, 0x30, 0x8C, 0x40, 0x66, 0x0C, + 0x40, 0x0C, 0x01, 0xA5, 0x2C, 0x09, 0x94, 0x2D, + 0x62, 0xC6, 0x11, 0x03, 0x98, 0x50, 0x19, 0x10, + 0x4D, 0x19, 0xA8, 0x28, 0xD3, 0x86, 0x40, 0xC0, + 0x30, 0x65, 0x54, 0xA6, 0x71, 0xE0, 0xB4, 0x85, + 0x9B, 0x86, 0x10, 0x04, 0x36, 0x69, 0xD0, 0x46, + 0x29, 0x18, 0xA3, 0x71, 0x40, 0x22, 0x49, 0x00, + 0x43, 0x85, 0xCB, 0x40, 0x28, 0x89, 0x36, 0x66, + 0x41, 0x22, 0x69, 0xA4, 0x28, 0x51, 0xD9, 0x80, + 0x29, 0x14, 0x07, 0x21, 0xDA, 0x80, 0x91, 0x1B, + 0x26, 0x50, 0x5B, 0xA0, 0x60, 0x99, 0x42, 0x71, + 0x50, 0x88, 0x49, 0x10, 0x23, 0x09, 0x5A, 0x90, + 0x21, 0x22, 0x27, 0x8E, 0x43, 0xB2, 0x70, 0x0C, + 0xC9, 0x4C, 0xA4, 0x02, 0x70, 0x92, 0x40, 0x10, + 0x0A, 0x39, 0x70, 0x02, 0x36, 0x0E, 0x11, 0x30, + 0x41, 0xD8, 0x40, 0x2D, 0x1B, 0x24, 0x6D, 0xC3, + 0x92, 0x61, 0x4C, 0x86, 0x8D, 0x21, 0xB8, 0x00, + 0xD3, 0x24, 0x22, 0x12, 0xC8, 0x21, 0x12, 0x99, + 0x85, 0x09, 0x16, 0x0C, 0x5A, 0xA2, 0x24, 0x09, + 0x34, 0x42, 0x10, 0xA2, 0x24, 0x03, 0x42, 0x8C, + 0xC0, 0xB2, 0x8D, 0x12, 0xB6, 0x69, 0x63, 0x34, + 0x0D, 0xCC, 0xB0, 0x65, 0xA1, 0x12, 0x11, 0x4A, + 0x38, 0x69, 0xCC, 0x14, 0x81, 0x58, 0x44, 0x09, + 0x54, 0xA6, 0x80, 0x0C, 0xA8, 0x05, 0xC4, 0x38, + 0x8A, 0x84, 0x06, 0x01, 0x9B, 0x32, 0x2D, 0x83, + 0x12, 0x90, 0x09, 0x02, 0x60, 0xA1, 0x28, 0x88, + 0x58, 0x10, 0x41, 0x24, 0x40, 0x02, 0x19, 0x34, + 0x48, 0x18, 0xA0, 0x4D, 0x00, 0x10, 0x62, 0x13, + 0x22, 0x50, 0xE3, 0x38, 0x21, 0x9A, 0x96, 0x21, + 0x53, 0x08, 0x80, 0x51, 0x26, 0x01, 0x99, 0xC4, + 0x28, 0x1B, 0xB9, 0x71, 0x04, 0x97, 0x84, 0x04, + 0x05, 0x2C, 0xA0, 0xC2, 0x10, 0xD3, 0x42, 0x81, + 0x81, 0x42, 0x4D, 0x61, 0x84, 0x6C, 0x5A, 0x30, + 0x49, 0x1B, 0xC2, 0x24, 0xC0, 0x20, 0x28, 0xCA, + 0x92, 0x2D, 0x4A, 0x90, 0x10, 0x04, 0x27, 0x86, + 0x4C, 0x96, 0x21, 0x09, 0x19, 0x45, 0x14, 0x82, + 0x2C, 0x11, 0xA6, 0x91, 0x13, 0xB8, 0x04, 0x03, + 0x18, 0x70, 0x01, 0xA2, 0x51, 0x52, 0x14, 0x49, + 0x5A, 0x02, 0x30, 0xCB, 0x30, 0x2C, 0x94, 0x10, + 0x2C, 0x00, 0x49, 0x86, 0x09, 0xA0, 0x25, 0xC2, + 0x12, 0x4C, 0x1B, 0x02, 0x69, 0x40, 0xA4, 0x44, + 0x41, 0x16, 0x62, 0x02, 0x25, 0x28, 0xDC, 0xA2, + 0x2D, 0x00, 0x16, 0x42, 0x58, 0x30, 0x66, 0x5B, + 0x86, 0x24, 0xD4, 0x24, 0x48, 0xDB, 0x26, 0x0C, + 0x4C, 0x08, 0x85, 0x01, 0x90, 0x49, 0x21, 0x24, + 0x41, 0x54, 0x06, 0x84, 0x02, 0x43, 0x4A, 0x24, + 0x42, 0x05, 0x40, 0x14, 0x48, 0xCA, 0x44, 0x84, + 0xC0, 0x42, 0x0C, 0x98, 0x26, 0x04, 0x9C, 0xA2, + 0x05, 0xD1, 0xC2, 0x51, 0x13, 0x01, 0x86, 0x1C, + 0xA1, 0x50, 0xD9, 0x02, 0x50, 0x0C, 0x39, 0x86, + 0x8C, 0x00, 0x31, 0x22, 0x05, 0x48, 0xD3, 0x10, + 0x81, 0x12, 0x48, 0x05, 0xD1, 0x08, 0x69, 0x62, + 0x38, 0x2C, 0x0A, 0x23, 0x70, 0x9B, 0x44, 0x72, + 0xE3, 0x48, 0x6E, 0x22, 0x96, 0x70, 0x14, 0x33, + 0x6C, 0xD8, 0x90, 0x29, 0x03, 0x00, 0x49, 0x63, + 0x20, 0x8A, 0x03, 0x91, 0x25, 0x08, 0x89, 0x21, + 0xC0, 0x82, 0x0C, 0x99, 0x40, 0x32, 0xC2, 0x34, + 0x4E, 0x4B, 0x98, 0x69, 0x09, 0x80, 0x44, 0xE4, + 0x04, 0x69, 0x94, 0x20, 0x09, 0x99, 0x24, 0x6D, + 0x09, 0xA9, 0x60, 0x01, 0x29, 0x2D, 0xC8, 0x42, + 0x28, 0x8A, 0x34, 0x02, 0xE4, 0x08, 0x70, 0x0C, + 0x23, 0x6E, 0x0A, 0x05, 0x49, 0x64, 0x44, 0x2A, + 0x82, 0xC8, 0x00, 0x02, 0x48, 0x31, 0xCB, 0x90, + 0x50, 0x1C, 0x05, 0x68, 0x12, 0x12, 0x2C, 0xD0, + 0x80, 0x0C, 0x59, 0x48, 0x61, 0xCB, 0xA6, 0x09, + 0x9C, 0xC0, 0x81, 0x42, 0xB8, 0x00, 0x24, 0x41, + 0x8A, 0x94, 0x20, 0x40, 0x42, 0x14, 0x4D, 0x19, + 0x46, 0x62, 0x18, 0x05, 0x09, 0x24, 0x33, 0x6A, + 0xD4, 0x00, 0x61, 0x12, 0x48, 0x32, 0x8A, 0x04, + 0x72, 0x93, 0xB4, 0x69, 0x62, 0xC2, 0x71, 0x41, + 0xA6, 0x89, 0x44, 0x96, 0x31, 0x62, 0x30, 0x46, + 0x83, 0x42, 0x6C, 0x00, 0x19, 0x22, 0x09, 0x46, + 0x4D, 0x8B, 0x06, 0x49, 0xE1, 0xB0, 0x70, 0x42, + 0x44, 0x31, 0xC1, 0x80, 0x65, 0x9C, 0x00, 0x24, + 0x11, 0xA8, 0x31, 0x13, 0x21, 0x2C, 0x4B, 0x46, + 0x28, 0x1B, 0x18, 0x0D, 0x88, 0x42, 0x70, 0xD1, + 0xB0, 0x0D, 0x90, 0xC8, 0x45, 0xDA, 0xC2, 0x48, + 0x59, 0x14, 0x26, 0x22, 0x44, 0x00, 0xC2, 0x94, + 0x41, 0x50, 0xC8, 0x04, 0x18, 0x00, 0x00, 0xCB, + 0xA6, 0x24, 0x19, 0x02, 0x10, 0x10, 0x89, 0x0C, + 0x18, 0x22, 0x21, 0x62, 0xA8, 0x81, 0xC8, 0x92, + 0x48, 0xD3, 0x94, 0x20, 0x82, 0x06, 0x72, 0x09, + 0xA8, 0x90, 0x0C, 0x49, 0x8A, 0x41, 0x86, 0x28, + 0x19, 0xC5, 0x80, 0x9A, 0x18, 0x4D, 0x14, 0x10, + 0x2E, 0x22, 0x12, 0x52, 0x00, 0x08, 0x12, 0x0C, + 0x33, 0x45, 0x63, 0xC6, 0x30, 0x10, 0x93, 0x4C, + 0x60, 0xC6, 0x31, 0xDC, 0x40, 0x0E, 0x98, 0x82, + 0x50, 0x60, 0x02, 0x2A, 0xD2, 0x22, 0x40, 0xE4, + 0x06, 0x2D, 0xDB, 0x32, 0x0E, 0xCA, 0x32, 0x4E, + 0xD4, 0x18, 0x24, 0x08, 0xC3, 0x28, 0x4A, 0xC2, + 0x68, 0xE2, 0x80, 0x40, 0xA1, 0xC8, 0x64, 0x51, + 0xC2, 0x65, 0xCB, 0x16, 0x60, 0x23, 0x09, 0x4C, + 0x82, 0x04, 0x68, 0xD9, 0x22, 0x2E, 0x1C, 0x49, + 0x92, 0x42, 0x24, 0x21, 0x00, 0x37, 0x0E, 0xC8, + 0x12, 0x72, 0x64, 0x08, 0x25, 0x0A, 0x20, 0x2A, + 0x58, 0x24, 0x04, 0x59, 0x16, 0x4C, 0x08, 0x17, + 0x30, 0x00, 0x46, 0x05, 0x12, 0x90, 0x40, 0x03, + 0x07, 0x21, 0x52, 0xC0, 0x64, 0x1C, 0x83, 0x6D, + 0x9C, 0x32, 0x2E, 0x11, 0x15, 0x8A, 0x10, 0x35, + 0x88, 0x5A, 0xA0, 0x8D, 0xD9, 0x80, 0x48, 0x03, + 0xB6, 0x4C, 0x01, 0x10, 0x65, 0x10, 0x86, 0x40, + 0x11, 0x01, 0x42, 0x0A, 0xC1, 0x64, 0xDB, 0x22, + 0x4D, 0x64, 0xB2, 0x51, 0x02, 0x36, 0x0D, 0x93, + 0x46, 0x31, 0x14, 0xB6, 0x68, 0x63, 0x84, 0x29, + 0xC8, 0x10, 0x24, 0x94, 0x30, 0x08, 0x19, 0x37, + 0x02, 0x14, 0x82, 0x45, 0x88, 0x28, 0x40, 0x54, + 0xA8, 0x29, 0x90, 0x14, 0x12, 0x61, 0x36, 0x12, + 0x0B, 0x09, 0x8C, 0xA4, 0x98, 0x28, 0xC2, 0x92, + 0x45, 0x4C, 0x00, 0x60, 0x63, 0xC4, 0x81, 0xC0, + 0x36, 0x25, 0xCA, 0x88, 0x2D, 0x24, 0x40, 0x30, + 0xD3, 0xA8, 0x2D, 0xC9, 0xC8, 0x25, 0xD2, 0x84, + 0x48, 0x00, 0x32, 0x92, 0x50, 0xA2, 0x71, 0xD3, + 0x44, 0x0D, 0x22, 0x34, 0x60, 0x12, 0x13, 0x12, + 0x86, 0x8C, 0x5F, 0x86, 0x20, 0x79, 0x4A, 0x05, + 0x0E, 0x20, 0xD0, 0xE1, 0x01, 0x17, 0x86, 0x24, + 0x0E, 0xA6, 0x64, 0xF2, 0xF6, 0x9B, 0xB1, 0xB7, + 0xE3, 0x0E, 0xC6, 0x6B, 0x1A, 0x4A, 0x0B, 0xE5, + 0x9B, 0x79, 0xF2, 0x19, 0x8A, 0xD9, 0x80, 0x44, + 0x83, 0xE4, 0x75, 0xE5, 0x3B, 0x3C, 0x49, 0xCB, + 0x0C, 0xE5, 0xEF, 0x92, 0x91, 0x2A, 0xF4, 0x40, + 0xF2, 0x3B, 0x99, 0x58, 0x13, 0xD1, 0x1B, 0x59, + 0xF7, 0x98, 0xE9, 0x3C, 0x9D, 0x13, 0x53, 0x98, + 0x17, 0xC7, 0xAC, 0x68, 0xCA, 0xD1, 0xAA, 0x1A, + 0xC2, 0x76, 0x56, 0xBD, 0x0C, 0x47, 0x97, 0xE9, + 0xC8, 0xEC, 0x17, 0x78, 0x4C, 0x1A, 0x32, 0x7A, + 0x9D, 0xFE, 0xAF, 0x4D, 0x61, 0x91, 0xEE, 0xCD, + 0xAF, 0xE0, 0x49, 0xB7, 0x33, 0xFE, 0x39, 0xD5, + 0xEB, 0x40, 0x00, 0x93, 0x6F, 0xEE, 0xFC, 0xF8, + 0x29, 0x28, 0xE9, 0xF9, 0x4C, 0xFD, 0x5C, 0xF4, + 0xC1, 0xE3, 0xDE, 0xB1, 0x43, 0x3A, 0x47, 0xF6, + 0xD3, 0x28, 0xB5, 0xE8, 0x3D, 0xD1, 0x56, 0xD0, + 0x18, 0x2D, 0xC6, 0x92, 0x34, 0x75, 0x91, 0xAA, + 0x6F, 0x73, 0x2C, 0xFB, 0xE9, 0x82, 0x93, 0x5F, + 0xD1, 0x84, 0x6C, 0xAC, 0xF4, 0xCB, 0x85, 0x15, + 0xC5, 0x5A, 0xB8, 0x5E, 0xE5, 0xAD, 0x44, 0xCB, + 0x09, 0xD3, 0x26, 0x9E, 0x2E, 0x6D, 0x11, 0x78, + 0x09, 0x61, 0xFD, 0x13, 0x1D, 0x5E, 0x6F, 0xBF, + 0x89, 0x84, 0x9F, 0x47, 0xF2, 0xB7, 0x1D, 0x82, + 0x83, 0xFF, 0x25, 0x38, 0x5E, 0x52, 0xB0, 0x7D, + 0xBB, 0x26, 0x6C, 0x67, 0x4C, 0xEE, 0x3D, 0x0B, + 0x5D, 0xF5, 0xA5, 0x6D, 0x8B, 0xDC, 0xDC, 0xFA, + 0xAE, 0xE6, 0xA2, 0x48, 0xE7, 0x1D, 0xB1, 0x34, + 0x5A, 0xFC, 0x59, 0x7C, 0xA8, 0x30, 0xA1, 0xA3, + 0x5B, 0x43, 0x96, 0xEF, 0x4C, 0x1A, 0xDF, 0x9E, + 0xD0, 0x1B, 0xCE, 0x9B, 0x6E, 0xB6, 0x37, 0xFA, + 0x24, 0xAA, 0x16, 0x0B, 0x90, 0x76, 0xBA, 0xE3, + 0x05, 0x59, 0xF8, 0xB2, 0x9D, 0xED, 0xB3, 0xD2, + 0x5B, 0x79, 0x06, 0x4A, 0xB0, 0xCF, 0x8B, 0x8D, + 0x70, 0xAD, 0xDD, 0xEB, 0x8B, 0x17, 0x42, 0x48, + 0xD5, 0xAE, 0xA4, 0xD1, 0x8D, 0xE4, 0x3B, 0x89, + 0x38, 0xCD, 0xD2, 0xAC, 0xBA, 0x54, 0x77, 0xBD, + 0x4A, 0xAC, 0xC3, 0xCE, 0x59, 0x5E, 0x5D, 0x26, + 0x9F, 0xE6, 0x75, 0x21, 0x0D, 0x23, 0x15, 0x2B, + 0x04, 0x71, 0x0F, 0x36, 0x84, 0x28, 0x79, 0x4A, + 0x75, 0xF4, 0x9B, 0x68, 0x3E, 0xD2, 0x0D, 0xD6, + 0x47, 0x51, 0x57, 0x77, 0x95, 0x5A, 0x8C, 0xB3, + 0x8A, 0x36, 0xAF, 0xCD, 0x2C, 0xE0, 0xAC, 0xEC, + 0x4F, 0x0D, 0xFE, 0x80, 0x77, 0x02, 0xD1, 0xEB, + 0x3B, 0xDE, 0x72, 0xE9, 0xE0, 0x85, 0xAA, 0x4E, + 0x09, 0xEB, 0x1B, 0x09, 0x47, 0x41, 0x38, 0x52, + 0xEC, 0x3C, 0x0A, 0xC5, 0x2F, 0x06, 0xCB, 0x95, + 0x9C, 0x85, 0x39, 0x4E, 0xB3, 0x74, 0x81, 0x19, + 0xED, 0xBE, 0x6C, 0x80, 0xD2, 0xD8, 0xF7, 0x92, + 0xCE, 0x0D, 0x91, 0x5E, 0x4F, 0x4B, 0x15, 0x1E, + 0xFB, 0x13, 0x5E, 0x7F, 0x4D, 0xC9, 0x7D, 0x85, + 0x81, 0x41, 0xC5, 0x7F, 0x70, 0x41, 0x7B, 0x43, + 0xA6, 0xA1, 0x26, 0x95, 0x69, 0x78, 0xD7, 0x8E, + 0xFB, 0x9F, 0x03, 0x72, 0x43, 0xB4, 0xCB, 0x41, + 0xDF, 0x96, 0x8B, 0x7E, 0xE5, 0xB5, 0x20, 0x87, + 0xF0, 0x5A, 0xA9, 0xFE, 0x48, 0x7B, 0xD1, 0x6C, + 0x03, 0x47, 0xCF, 0x13, 0x35, 0x76, 0x0B, 0xD2, + 0x39, 0x8A, 0xD5, 0x4D, 0xDA, 0x00, 0xA5, 0xAA, + 0xC4, 0x46, 0xD8, 0x0B, 0x1C, 0x79, 0x98, 0xC6, + 0x02, 0x19, 0x2A, 0xDA, 0xFC, 0xB8, 0x09, 0xD1, + 0x4E, 0xE3, 0x28, 0x64, 0x1B, 0xA3, 0xAA, 0x00, + 0xF8, 0xD2, 0x9C, 0x3A, 0x84, 0x8A, 0xCB, 0xDC, + 0x19, 0x46, 0xBC, 0x0D, 0x35, 0xE0, 0xBE, 0x0F, + 0x8F, 0x7E, 0x3D, 0xA3, 0xF6, 0x8D, 0x9F, 0xA9, + 0x76, 0x8F, 0x5C, 0xF2, 0x75, 0x53, 0x4A, 0x0E, + 0xCA, 0x9E, 0x60, 0xFC, 0xEA, 0x38, 0xF1, 0xE0, + 0x42, 0xC3, 0x16, 0x14, 0x3A, 0x76, 0x7B, 0x33, + 0xAC, 0xCA, 0xD8, 0xC8, 0xD6, 0x6C, 0x70, 0xC7, + 0x5F, 0xD1, 0xF0, 0xB2, 0x58, 0x6B, 0x65, 0x3A, + 0xD4, 0xAF, 0x54, 0xE5, 0x6E, 0xF0, 0x69, 0x33, + 0xEA, 0xD3, 0x1D, 0xE3, 0x65, 0xD1, 0x10, 0xB9, + 0xC4, 0xA2, 0xA9, 0x8B, 0xCB, 0xA1, 0x65, 0xCA, + 0xFE, 0x38, 0x6F, 0x88, 0x7C, 0x72, 0x15, 0x6E, + 0xB1, 0x4F, 0xF0, 0xDA, 0xD6, 0x65, 0x61, 0x6C, + 0xE3, 0xCE, 0x65, 0xC1, 0x90, 0x4F, 0x2C, 0x17, + 0x47, 0xB2, 0xEC, 0x2B, 0x5C, 0x9D, 0x67, 0x76, + 0xBC, 0xD7, 0x9E, 0x5A, 0xC6, 0x4B, 0x79, 0x33, + 0xBD, 0xDE, 0xDE, 0xDD, 0xBB, 0xC7, 0x25, 0xBF, + 0xDB, 0xCC, 0xDE, 0x2F, 0xB3, 0x75, 0xAE, 0x2B, + 0xE3, 0x53, 0x7B, 0xDF, 0x89, 0xBF, 0x4C, 0x25, + 0xF8, 0x3A, 0x49, 0xD6, 0xA6, 0xA8, 0xD0, 0x76, + 0x1C, 0xF3, 0x9D, 0x62, 0x0C, 0x53, 0xED, 0x83, + 0x7D, 0x19, 0x82, 0x55, 0xCF, 0x5B, 0x91, 0x0A, + 0x6D, 0xB5, 0x78, 0x77, 0xDF, 0x92, 0xD8, 0xBB, + 0x6E, 0x9C, 0x52, 0x6B, 0x8C, 0x4E, 0xC9, 0x31, + 0x00, 0xDE, 0xE0, 0x50, 0x0A, 0x21, 0x0C, 0x98, + 0x45, 0x83, 0xE1, 0x53, 0x81, 0x60, 0xED, 0xAC, + 0x2C, 0x6F, 0x86, 0x6E, 0x7F, 0x5D, 0x99, 0xD7, + 0xB1, 0xB8, 0x15, 0x82, 0xF5, 0xD0, 0xEB, 0xBF, + 0x27, 0x86, 0xE3, 0xF5, 0x56, 0x01, 0x3B, 0xA9, + 0xB6, 0xF6, 0x56, 0xEB, 0x79, 0x88, 0x38, 0xEA, + 0x05, 0x79, 0x20, 0x1A, 0x95, 0xD5, 0x6B, 0xBC, + 0x3B, 0xCD, 0xB9, 0x51, 0x1A, 0xFB, 0xD4, 0xD8, + 0x12, 0x88, 0x89, 0x6F, 0x87, 0x10, 0x8C, 0x07, + 0x7F, 0x1A, 0x81, 0xA3, 0xBD, 0x29, 0x7B, 0xB1, + 0x24, 0xA8, 0x00, 0x86, 0x89, 0x02, 0x42, 0x99, + 0x5E, 0x03, 0xCF, 0x42, 0xA0, 0xC2, 0x1E, 0x27, + 0x2A, 0x9A, 0xFA, 0x1D, 0xC1, 0x03, 0x46, 0x3D, + 0x2A, 0xB4, 0x94, 0xF7, 0xD0, 0x17, 0x68, 0x6D, + 0x31, 0x89, 0x4D, 0xD2, 0xF6, 0xEB, 0xB0, 0xC3, + 0xCB, 0x62, 0x23, 0xEC, 0x79, 0xC6, 0x5D, 0x45, + 0xC1, 0xB0, 0xD4, 0xEF, 0x19, 0x61, 0xF1, 0x6D, + 0x65, 0x3F, 0xCF, 0x25, 0x97, 0x7B, 0x65, 0x1E, + 0xC5, 0x1A, 0x13, 0xAE, 0x8D, 0x4A, 0x34, 0x72, + 0xEE, 0x71, 0x96, 0x9A, 0x7A, 0x93, 0x6F, 0x5D, + 0xBB, 0xB9, 0x39, 0x6A, 0x46, 0xD9, 0x76, 0x42, + 0x35, 0x8C, 0xAF, 0x48, 0x94, 0xC9, 0xA6, 0xDF, + 0x84, 0xA5, 0x9C, 0x59, 0x62, 0xA6, 0x99, 0x0A, + 0x76, 0xF0, 0x61, 0x48, 0x90, 0x16, 0x9F, 0x00, + 0x18, 0x70, 0xD4, 0x9C, 0xF2, 0xE7, 0x50, 0x08, + 0xCC, 0x4A, 0x5D, 0x85, 0xE7, 0x2D, 0xE2, 0xD6, + 0xCF, 0x3F, 0xA7, 0x18, 0x52, 0x25, 0x35, 0x22, + 0xFE, 0x8B, 0x0E, 0x42, 0x3C, 0xB4, 0x17, 0xA3, + 0x8E, 0xB7, 0x8C, 0x87, 0x63, 0xC3, 0x72, 0x0C, + 0x04, 0xE6, 0x7F, 0xF8, 0x89, 0x79, 0xEB, 0xA0, + 0x9E, 0x34, 0x53, 0x8B, 0xB5, 0x23, 0xB9, 0x9B, + 0x8E, 0x34, 0x16, 0x74, 0x12, 0xF7, 0x7A, 0xEA, + 0x89, 0x4D, 0x83, 0xAC, 0xF9, 0x46, 0xFC, 0x05, + 0x4D, 0x0A, 0xF4, 0x72, 0x95, 0xE5, 0x1E, 0xD8, + 0x3F, 0x74, 0x86, 0x94, 0x0A, 0x4D, 0x41, 0xC0, + 0x4A, 0xD7, 0xEB, 0xEE, 0x61, 0x0B, 0xF1, 0xD0, + 0x3F, 0xA5, 0x40, 0x71, 0xD5, 0x1A, 0x15, 0x09, + 0xE4, 0xF4, 0x91, 0x63, 0xA2, 0x50, 0x81, 0xBE, + 0x87, 0x90, 0xD0, 0x87, 0xF5, 0xF4, 0xF0, 0x5C, + 0x88, 0x55, 0x0F, 0xCA, 0x9B, 0xF9, 0x9C, 0x9B, + 0xE5, 0x95, 0x3D, 0x51, 0xDD, 0x08, 0x45, 0xC9, + 0x3E, 0x41, 0xEE, 0xEF, 0x62, 0xE0, 0x79, 0x4B, + 0x29, 0x27, 0xC4, 0xF5, 0xED, 0x9B, 0xD3, 0xE3, + 0x4E, 0xA9, 0x20, 0x0A, 0x79, 0xDD, 0xEB, 0x4B, + 0x2D, 0x8F, 0x30, 0x5F, 0xE0, 0x5F, 0x82, 0x7C, + 0x7E, 0x2E, 0xD1, 0x86, 0x34, 0x1C, 0xB5, 0xD1, + 0x15, 0x2F, 0xC8, 0x01, 0x04, 0xE0, 0xE1, 0x36, + 0x83, 0xD9, 0x41, 0x29, 0x4C, 0x77, 0x84, 0x17, + 0x16, 0x4B, 0x68, 0x4A, 0x97, 0x6E, 0x56, 0xE7, + 0x8D, 0xA4, 0xD1, 0x7C, 0x3C, 0x73, 0x22, 0x93, + 0x14, 0x87, 0x0B, 0x85, 0xC4, 0x55, 0xC2, 0x3B, + 0x83, 0x0B, 0x9A, 0x28, 0xA3, 0xD8, 0xC0, 0xB5, + 0x66, 0x42, 0x6D, 0xC1, 0x69, 0xF3, 0x26, 0xAB, + 0xCE, 0x2E, 0xFF, 0xF3, 0x9E, 0x9B, 0x19, 0x9A, + 0xE5, 0xC1, 0x29, 0x2B, 0x6F, 0x2E, 0xF3, 0x7A, + 0xF1, 0xDE, 0xA9, 0x27, 0x2C, 0x8D, 0x54, 0x23, + 0xDF, 0x8A, 0x56, 0x32, 0xF9, 0x91, 0xE1, 0x4D, + 0xCA, 0x25, 0x14, 0x78, 0x8B, 0x62, 0xBE, 0x16, + 0x48, 0x28, 0xE9, 0xAC, 0xB8, 0x93, 0xDD, 0xA6, + 0x02, 0xA5, 0xE2, 0xFB, 0x9E, 0xFC, 0xBE, 0xFD, + 0x95, 0xAB, 0xFB, 0x82, 0xD2, 0xB0, 0x2D, 0x49, + 0xCC, 0x53, 0x08, 0x4A, 0x49, 0xAB, 0x1B, 0xEC, + 0x23, 0xE5, 0xB4, 0xC8, 0xE7, 0x14, 0xCB, 0x03, + 0x40, 0x5F, 0x1B, 0xCF, 0x7E, 0x11, 0xBB, 0x59, + 0x72, 0x9D, 0xDC, 0x0B, 0x7B, 0xEF, 0xB2, 0x91, + 0x27, 0x6D, 0xCE, 0xDA, 0xCA, 0xAD, 0x39, 0xA2, + 0xF0, 0x1C, 0x7D, 0xC9, 0x8B, 0x9E, 0x06, 0x5E, + 0xAF, 0xED, 0x1C, 0xC8, 0xCE, 0x3E, 0x84, 0x80, + 0x80, 0xA2, 0xFC, 0x5B, 0x98, 0xC9, 0xF6, 0xBF, + 0x50, 0x40, 0x27, 0x33, 0x42, 0xF0, 0x31, 0x2F, + 0x8B, 0x98, 0x44, 0x59, 0x4A, 0x50, 0x3D, 0xD3, + 0xE6, 0xAF, 0x1C, 0x9E, 0x35, 0xC1, 0x03, 0x2A, + 0x4A, 0x8A, 0x5E, 0x7B, 0xF3, 0x3A, 0x82, 0xF3, + 0x5E, 0x16, 0xED, 0xF8, 0xC6, 0x0C, 0x90, 0x02, + 0x1D, 0x8C, 0x0B, 0xA4, 0xC3, 0x86, 0x24, 0x5D, + 0xFE, 0xF0, 0x94, 0x48, 0x43, 0x1D, 0x8C, 0x00, + 0xD1, 0xE2, 0x6E, 0xE4, 0xD8, 0xC7, 0x7D, 0xAA, + 0x1A, 0x70, 0x5E, 0xD4, 0x79, 0x2A, 0xCB, 0x4E, + 0xA2, 0x7C, 0x15, 0x66, 0xFB, 0x56, 0x68, 0x3C, + 0x43, 0xBF, 0x67, 0x84, 0x2E, 0x67, 0x53, 0x4C, + 0xB3, 0xF9, 0x67, 0x7C, 0x8A, 0xB9, 0xD0, 0xEE, + 0xE7, 0x82, 0x7C, 0xDE, 0xFC, 0x22, 0x3A, 0xC9, + 0x48, 0xB8, 0x80, 0xB5, 0xF1, 0xCE, 0x95, 0x37, + 0x27, 0x29, 0x32, 0x00, 0x2C, 0x1A, 0x4D, 0xD2, + 0x18, 0xF5, 0x27, 0x16, 0x6E, 0xBF, 0xB2, 0xB2, + 0xFA, 0x2B, 0xF3, 0x72, 0x46, 0xEC, 0xDF, 0xDF, + 0xA7, 0x2B, 0x6D, 0xA1, 0x1C, 0x30, 0xD1, 0xC7, + 0xD2, 0x48, 0xAD, 0x64, 0x81, 0x8F, 0x69, 0x1D, + 0x59, 0xB7, 0x55, 0xDA, 0xF7, 0x1B, 0xED, 0x9A, + 0xB5, 0xFB, 0x52, 0xE0, 0x36, 0x22, 0xA9, 0x00, + 0xD6, 0x6B, 0x4C, 0x63, 0x84, 0x16, 0x9B, 0xDF, + 0x9E, 0xB6, 0x1C, 0x02, 0xDF, 0x45, 0xFB, 0x76, + 0xB1, 0xA2, 0x6F, 0x34, 0xE9, 0x38, 0xB1, 0x90, + 0x86, 0x17, 0x45, 0xC0, 0x21, 0xFA, 0x87, 0x62, + 0x00, 0xC7, 0xFC, 0x8E, 0x22, 0x2D, 0xDB, 0xFA, + 0xD8, 0xBE, 0x78, 0x1B, 0x18, 0x54, 0x24, 0xAA, + 0xAF, 0xC6, 0x58, 0x62, 0xDB, 0x13, 0x2B, 0xEC, + 0x6D, 0x18, 0x83, 0x7A, 0x1F, 0x58, 0xA8, 0x76, + 0xC9, 0x9E, 0x63, 0xF5, 0x14, 0x20, 0xB8, 0x3F, + 0x45, 0x96, 0x75, 0x61, 0x2F, 0x7A, 0xCF, 0x80, + 0xB4, 0xEB, 0x1D, 0xD0, 0x72, 0x1C, 0xAA, 0x1B, + 0x49, 0x70, 0xDA, 0x60, 0x86, 0x79, 0xC6, 0x38, + 0x3E, 0x81, 0x7F, 0xE1, 0x6B, 0x66, 0xB1, 0x91, + 0x81, 0xED, 0xFC, 0x39, 0x27, 0x0C, 0x7E, 0x91, + 0x7B, 0x1F, 0x10, 0xEB, 0x7A, 0x01, 0x19, 0x97, + 0xE9, 0x67, 0x85, 0x3B, 0x78, 0xE0, 0x0C, 0xFD, + 0x58, 0xD2, 0x24, 0xD9, 0x33, 0xCC, 0x5A, 0x99, + 0x55, 0x32, 0xDC, 0xD4, 0xE5, 0x32, 0xE4, 0x03, + 0x05, 0x15, 0xF4, 0xA0, 0x5B, 0x33, 0x1D, 0x57, + 0x5D, 0xDA, 0xC2, 0x9B, 0xAB, 0x06, 0x9F, 0x09, + 0xAF, 0x0D, 0x17, 0x33, 0x73, 0xDB, 0x1E, 0xC2, + 0xB6, 0x36, 0x6B, 0xB3, 0x71, 0x00, 0x8A, 0x23, + 0x86, 0xFD, 0x88, 0xBE, 0x77, 0xF5, 0xED, 0x5E, + 0x19, 0x8C, 0xBE, 0x88, 0xDF, 0x24, 0xBC, 0x6E, + 0x39, 0x3F, 0xEB, 0xC1, 0x0C, 0x47, 0x0A, 0x72, + 0xD4, 0x7C, 0x0F, 0x83, 0x46, 0x53, 0xC9, 0xAE, + 0x80, 0x0E, 0x89, 0x3C, 0x6B, 0xA6, 0x8E, 0xA2, + 0x8A, 0x83, 0x8F, 0xCB, 0xB6, 0x9C, 0x3E, 0x96, + 0x4A, 0x5F, 0xAF, 0xC2, 0x06, 0x7D, 0xD4, 0x06, + 0xB2, 0x57, 0xC9, 0x8D, 0xD3, 0x97, 0x9E, 0xC7, + 0xC7, 0xEC, 0xBE, 0x96, 0xA3, 0x3D, 0x85, 0x51, + 0x5D, 0xA2, 0xCB, 0x6A, 0xA5, 0xE1, 0xFF, 0xF2, + 0x04, 0xAF, 0x62, 0xDD, 0x41, 0x19, 0xA0, 0xE4, + 0x8C, 0x04, 0xA3, 0xF2, 0xB3, 0x86, 0x60, 0xF5, + 0x29, 0x64, 0xD8, 0xD4, 0xAE, 0xE1, 0x46, 0xA9, + 0xC5, 0x3C, 0x31, 0x90, 0x6D, 0xAD, 0x0F, 0xD9, + 0x0B, 0x5D, 0x83, 0xB3, 0xE3, 0x1B, 0x69, 0x0A, + 0x4C, 0x49, 0x35, 0x24, 0x99, 0x81, 0xBE, 0x1F, + 0x1A, 0x85, 0xEC, 0x6E, 0x0F, 0xEE, 0x4C, 0x88, + 0xF2, 0xD8, 0x9E, 0x29, 0x69, 0xAB, 0x8C, 0xBB, + 0xEB, 0x50, 0x19, 0x16, 0x55, 0x8D, 0x29, 0xEA, + 0x7C, 0x3E, 0xCF, 0x1C, 0x9E, 0xF1, 0xA0, 0x43, + 0x50, 0x63, 0x3B, 0x4C, 0xDA, 0x73, 0x7D, 0xFB, + 0x15, 0x1C, 0xB5, 0xE7, 0x36, 0x11, 0x73, 0xF3, + 0xAE, 0xDD, 0xDF, 0x52, 0x7D, 0x73, 0xF2, 0xF9, + 0xD5, 0xB6, 0x21, 0x3A, 0xA6, 0x8F, 0x88, 0x3E, + 0x9A, 0x26, 0x33, 0x78, 0x5E, 0xC6, 0xBE, 0x64, + 0x2A, 0x9F, 0xD0, 0xF2, 0x1A, 0x42, 0xF6, 0xB9, + 0xDA, 0xAB, 0xDC, 0xD1, 0xE6, 0xAD, 0xBE, 0xF6, + 0x48, 0x41, 0xB5, 0x96, 0x86, 0xEA, 0xE3, 0xEC, + 0x88, 0xEE, 0xF0, 0xA9, 0xCB, 0xC1, 0x2B, 0xC0, + 0x12, 0x62, 0x2D, 0xF2, 0xDD, 0x93, 0xA8, 0x62, + 0x29, 0x04, 0x4A, 0xF2, 0xF2, 0x60, 0xD2, 0x18, + 0x3F, 0x51, 0xE8, 0x33, 0xEE, 0x92, 0xD9, 0x8F, + 0x02, 0x51, 0xE3, 0xF8, 0x5F, 0xAB, 0x74, 0xCE, + 0x36, 0x7B, 0x8B, 0x7A, 0xA6, 0x3D, 0x3C, 0xF8, + 0xC8, 0xBF, 0x4D, 0x78, 0x35, 0x8B, 0xAE, 0x0A, + 0x02, 0x41, 0xE2, 0x10, 0xAC, 0x69, 0x35, 0x30, + 0x87, 0xCC, 0x73, 0x31, 0x35, 0x7E, 0xB4, 0x45, + 0x0F, 0x95, 0x09, 0xCF, 0xE5, 0x95, 0xF5, 0x40, + 0x32, 0xEE, 0x05, 0x77, 0x54, 0xA8, 0xED, 0xD7, + 0x46, 0xCB, 0x92, 0x82, 0xE7, 0x68, 0xDC, 0x6B, + 0x83, 0x0C, 0x5B, 0x4A, 0x21, 0x93, 0x43, 0xAD, + 0x12, 0x4E, 0xDB, 0x3B, 0xBC, 0x42, 0x50, 0x55, + 0x66, 0xA7, 0x03, 0x8C, 0x95, 0x9B, 0xC3, 0x55, + 0x85, 0xB6, 0x05, 0x5F, 0x19, 0x68, 0xDA, 0x24, + 0x3F, 0x77, 0x8F, 0x4E, 0x46, 0xDB, 0x46, 0x2A, + 0xBE, 0xB9, 0x3B, 0x81, 0x24, 0x3C, 0x31, 0xEB, + 0x59, 0x62, 0x2E, 0xDF, 0x81, 0xF0, 0x6C, 0xCC, + 0x61, 0xD2, 0xA6, 0xEA, 0x73, 0xE1, 0x09, 0xC3, + 0x87, 0x91, 0x5F, 0x27, 0x7B, 0xCF, 0x1F, 0xC1, + 0x11, 0x05, 0xBB, 0xA7, 0x02, 0x93, 0xC0, 0xFA, + 0xB5, 0xC0, 0x65, 0xF2, 0x3B, 0xAA, 0x19, 0x29, + 0x0A, 0x30, 0x2F, 0x08, 0x09, 0x11, 0x07, 0xA4, + 0xB1, 0xD5, 0x68, 0x85, 0x26, 0x22, 0x09, 0x83, + 0x83, 0x42, 0x77, 0x60, 0xEF, 0x8F, 0x29, 0x28, + 0x62, 0x5B, 0xDD, 0xA5, 0xF5, 0x14, 0xC5, 0xAD, + 0xE9, 0x59, 0x89, 0x1E, 0xF2, 0x95, 0x9F, 0x24, + 0x8A, 0x35, 0x32, 0xBF, 0x9D, 0x30, 0xE7, 0x14, + 0x05, 0x9E, 0xBD, 0xEC, 0x95, 0x87, 0x08, 0xF8, + 0xA8, 0x3C, 0x26, 0x8B, 0xEF, 0x26, 0x82, 0xD6, + 0x03, 0xCA, 0x88, 0x63, 0x47, 0xE1, 0x98, 0xFD, + 0x68, 0x23, 0x39, 0x99, 0xC7, 0x7D, 0x30, 0xD7, + 0x45, 0x5D, 0xE6, 0xBC, 0xFD, 0x01, 0x44, 0x27, + 0x70, 0x62, 0xB3, 0x04, 0xBE, 0xF0, 0xE3, 0x4C, + 0x5A, 0x9D, 0x8D, 0x78, 0x0D, 0x29, 0xEC, 0x23, + 0x21, 0xE0, 0x73, 0x40, 0x77, 0x1C, 0x46, 0x36, + 0x04, 0x83, 0xAD, 0xCA, 0xF1, 0x2D, 0x5B, 0x79, + 0xFD, 0xBF, 0xE2, 0x85, 0x6A, 0xCE, 0x88, 0x59, + 0xF6, 0xB1, 0x24, 0x14, 0xB3, 0xF7, 0xE8, 0xBB, + 0x58, 0x13, 0x49, 0x89, 0x60, 0xF3, 0x4F, 0xDC, + 0x64, 0xFC, 0x84, 0x85, 0x79, 0xCA, 0xF9, 0xDC, + 0xCF, 0x19, 0xB4, 0xFB, 0x82, 0x5E, 0xD5, 0x71, + 0x6D, 0xCC, 0xCD, 0x68, 0x72, 0xCB, 0xDE, 0x38, + 0x31, 0xD6, 0x73, 0x84, 0x94, 0x2C, 0xD8, 0xA9, + 0xEC, 0x4B, 0xBF, 0xEF, 0x57, 0x06, 0xB8, 0xF9, + 0xF0, 0x5F, 0xE1, 0xE8, 0xFE, 0x69, 0xD3, 0xEA, + 0x6A, 0x86, 0x21, 0xC2, 0x21, 0x44, 0x17, 0x7B, + 0x1C, 0x12, 0x59, 0xE1, 0xA7, 0x9D, 0xFD, 0xF8, + 0x97, 0x28, 0x88, 0x7B, 0xEF, 0x1A, 0x70, 0x48, + 0x25, 0x56, 0x83, 0x1B, 0x67, 0x24, 0x40, 0xE1, + 0x3F, 0xE3, 0xE3, 0xFC, 0x82, 0x04, 0xA0, 0x2E, + 0xA1, 0xEF, 0xF1, 0x9D, 0x95, 0x25, 0x38, 0x87, + 0x28, 0x5B, 0xFB, 0xEA, 0x16, 0xA0, 0xF2, 0x19, + 0xEF, 0xBC, 0xEC, 0x30, 0xA8, 0xAE, 0x86, 0x58, + 0x9A, 0x57, 0x03, 0x10, 0x3A, 0x8A, 0x39, 0x3F, + 0xA6, 0xF6, 0xB6, 0x57, 0x70, 0x4A, 0xC6, 0x77, + 0xC1, 0x4C, 0xD1, 0x0D, 0x3D, 0x62, 0xD1, 0x3F, + 0xBD, 0x37, 0x8C, 0x2D, 0xDA, 0x32, 0x5B, 0x61, + 0xB8, 0x59, 0x52, 0xD5, 0x12, 0x93, 0x87, 0x1E, + 0x1F, 0xCD, 0xC9, 0x48, 0xC7, 0x7B, 0xEA, 0xE9, + 0xA6, 0xF0, 0xE8, 0x7C, 0xE1, 0xA8, 0x05, 0x1C, + 0x8F, 0x80, 0x87, 0x68, 0x5C, 0x12, 0x62, 0x4B, + 0xDF, 0x58, 0x38, 0x0E, 0xD6, 0x6F, 0x55, 0xB4, + 0x3D, 0xDD, 0x6D, 0x36, 0x21, 0x73, 0xA5, 0xBD, + 0x38, 0x98, 0x59, 0xC1, 0x7D, 0x95, 0xEC, 0xE3, + 0xAB, 0x73, 0x26, 0x39, 0xFF, 0xE4, 0x51, 0xCD, + 0x10, 0x3E, 0xE4, 0x85, 0x4D, 0xB2, 0xF3, 0x96, + 0x14, 0xF6, 0x58, 0xBA, 0xA3, 0x84, 0xBC, 0x99, + 0x48, 0xD0, 0x71, 0x4E, 0xB4, 0x8A, 0x88, 0x71, + 0x43, 0xE7, 0xA1, 0xFA, 0x4B, 0x69, 0x0C, 0x22, + 0xB4, 0x92, 0xA7, 0x0C, 0x61, 0x2B, 0x59, 0xFF, + 0xD2, 0xD6, 0xB3, 0xB5, 0xE9, 0x9C, 0x20, 0x03, + 0xE2, 0xC3, 0x59, 0xB1, 0xE6, 0x2D, 0xCB, 0x62, + 0x0C, 0x7A, 0x24, 0x6A, 0x7B, 0x9B, 0x32, 0x46, + 0x13, 0x15, 0x56, 0xF2, 0xF3, 0xD5, 0x13, 0xA2, + 0x3C, 0x6A, 0x9F, 0xD2, 0x28, 0x0E, 0xD6, 0x86, + 0xD7, 0x67, 0xCC, 0xD0, 0x17, 0x54, 0xEB, 0x4C, + 0x99, 0x69, 0x2F, 0x2B, 0x38, 0x0C, 0x36, 0x08, + 0x13, 0x44, 0xC1, 0xD3, 0x5E, 0xE1, 0x94, 0x97, + 0x36, 0xB6, 0x97, 0x6F, 0x48, 0x52, 0xCF, 0xBE, + 0x64, 0xFA, 0xBC, 0xF1, 0x1B, 0x9A, 0xFB, 0x82, + 0x85, 0x76, 0xB4, 0xF9, 0x78, 0x7A, 0xA7, 0xD0, + 0x3E, 0x84, 0x59, 0x8A, 0x71, 0x43, 0xEF, 0x73, + 0x11, 0xFA, 0xF2, 0x97, 0x0E, 0x23, 0xED, 0x4C, + 0x17, 0x3F, 0x98, 0x5D, 0x64, 0x50, 0x16, 0x5A, + 0xE3, 0xE2, 0x41, 0xA1, 0x82, 0x34, 0xE7, 0x4F, + 0xF3, 0xDD, 0xB9, 0x21, 0xA5, 0x30, 0x0B, 0x1C, + 0x4F, 0xB6, 0xE4, 0x32, 0xE6, 0x98, 0xF5, 0x3F, + 0x66, 0xE3, 0x8C, 0x07, 0xBC, 0xD6, 0xE7, 0x76, + 0x05, 0xDF, 0x46, 0x24, 0xD5, 0x79, 0x07, 0x62, + 0x92, 0xDE, 0x1C, 0xE6, 0xFC, 0x6F, 0x00, 0x81, + 0xA3, 0x8B, 0xD9, 0x2D, 0x39, 0xB2, 0x4B, 0x73, + 0xBA, 0xC1, 0xC5, 0x2B, 0xD6, 0x8E, 0x91, 0x81, + 0xD3, 0xDC, 0xD0, 0xAC, 0x75, 0x34, 0xDB, 0x48, + 0x90, 0x1E, 0x59, 0x84, 0xF9, 0x90, 0x25, 0x57, + 0xBF, 0xA2, 0x31, 0xB2, 0xEA, 0x28, 0xC3, 0x18, + 0x32, 0x62, 0xA1, 0xB2, 0x22, 0x1F, 0x74, 0x26, + 0xEA, 0x88, 0xA5, 0x81, 0x60, 0x93, 0xA5, 0xCA, + 0xE2, 0xCD, 0x5D, 0x59, 0xA9, 0x39, 0x0F, 0xC9, + 0x3A, 0x29, 0x56, 0x94, 0x4B, 0x06, 0x4C, 0xF0, + 0x13, 0xBC, 0xDB, 0x67, 0xFB, 0x42, 0x3D, 0x13, + 0x28, 0xD2, 0xC6, 0xD7, 0xBA, 0x32, 0x90, 0x13, + 0xFA, 0x2D, 0x30, 0xEF, 0xD6, 0x9F, 0xDC, 0xA1, + 0xA9, 0x5E, 0xA6, 0xD0, 0x6C, 0x73, 0x63, 0x53, + 0x4B, 0x2F, 0x3F, 0x7D, 0xAA, 0xFA, 0x29, 0x6E, + 0xAA, 0x09, 0xB3, 0x66, 0x8E, 0x9C, 0xF8, 0x2D, + 0x9B, 0xA9, 0x59, 0xB3, 0x2F, 0x3C, 0xAD, 0x3C, + 0x10, 0xC6, 0xEA, 0x48, 0x61, 0x15, 0x54, 0x53, + 0x9C, 0x37, 0xDF, 0x6B, 0xCA, 0x33, 0x85, 0xEA, + 0xD3, 0xFC, 0xFF, 0x96, 0xD3, 0x72, 0xB4, 0x23, + 0x93, 0xB7, 0x3C, 0x8D, 0xAA, 0xAA, 0x31, 0x50, + 0x6E, 0xE0, 0x52, 0x7B, 0x7F, 0xB3, 0xE5, 0x93, + 0xDC, 0xCC, 0xA5, 0x7C, 0x8F, 0xBB, 0xD4, 0xA3, + 0xC7, 0xF8, 0xA5, 0x38, 0x99, 0x86, 0x91, 0x32, + 0xFB, 0xC3, 0xE4, 0x05, 0x06, 0x07, 0xBB, 0xFE, + 0x29, 0xC6, 0x75, 0xE3, 0x94, 0x5E, 0x74, 0xA3, + 0x1C, 0xD5, 0x31, 0xBA, 0x7A, 0xEB, 0x2E, 0x2F, + 0x0C, 0xD9, 0x90, 0xB8, 0xF9, 0x83, 0xA9, 0x0D, + 0xFE, 0xA0, 0x56, 0x8F, 0x06, 0x77, 0xEA, 0x95, + 0x63, 0xF7, 0xC4, 0x79, 0xDE, 0x96, 0x89, 0x40, + 0xCF, 0x24, 0x29, 0x92, 0x69, 0x28, 0x65, 0xCF, + 0xDA, 0x89, 0xFA, 0x07, 0x8B, 0xBE, 0xF4, 0x9C, + 0xE4, 0x57, 0x5B, 0xDF, 0xB3, 0x80, 0x36, 0x60, + 0x11, 0xC8, 0x43, 0x5F, 0x12, 0xB4, 0x2D, 0x9A, + 0xB9, 0x9A, 0xB6, 0xA3, 0x19, 0x12, 0xC4, 0x35, + 0x41, 0x49, 0xD7, 0x23, 0x10, 0x1D, 0x13, 0x65, + 0xA6, 0x5E, 0x7C, 0xC6, 0x8D, 0x82, 0xE3, 0x05, + 0x17, 0x77, 0x39, 0x02, 0xFB, 0x38, 0xDD, 0xA2, + 0xB3, 0x24, 0xE7, 0x20, 0x8E, 0x98, 0x7E, 0xD2, + 0x87, 0xD0, 0x92, 0xE7, 0x66, 0x2A, 0x43, 0x02, + 0x41, 0xBF, 0xCA, 0x55, 0x2D, 0x31, 0x41, 0x27, + 0xE3, 0x8C, 0x85, 0x97, 0xA8, 0x95, 0x19, 0xD4, + 0xF1, 0xE6, 0x2A, 0x79, 0x46, 0x5A, 0xD5, 0xF4, + 0xEA, 0xA3, 0xFA, 0x77, 0xCD, 0x98, 0x32, 0x6D, + 0x2F, 0x92, 0xCE, 0x98, 0x52, 0x05, 0x5C, 0xEC, + 0xCF, 0x62, 0xD6, 0x3C, 0xB9, 0xD7, 0xF1, 0x98, + 0xAE, 0x08, 0x5E, 0x4D, 0x45, 0xC8, 0xE4, 0x8F, + 0xCF, 0xFE, 0x59, 0x3A, 0xD6, 0x52, 0xD9, 0x15, + 0x41, 0x67, 0xBF, 0x3E, 0x61, 0x95, 0x81, 0x0A, + 0x44, 0x5A, 0xE1, 0x58, 0xF1, 0xF9, 0xA6, 0x79, + 0x33, 0x63, 0xAF, 0xC1, 0xF2, 0x2C, 0xA8, 0x82, + 0xFE, 0xED, 0x3A, 0x5F, 0x57, 0x27, 0xCA, 0x76, + 0x47, 0x7C, 0x5F, 0x23, 0xF0, 0xFC, 0x87, 0x00, + 0xCD, 0xC6, 0xA5, 0xBC, 0xB2, 0xB2, 0x0B, 0x4F, + 0x92, 0x66, 0x35, 0x1D, 0x30, 0x4A, 0x96, 0xA8, + 0x2B, 0xF5, 0xF3, 0x14, 0xAF, 0x68, 0x5C, 0x1C, + 0x70, 0x7C, 0x92, 0xE3, 0xE8, 0x47, 0xB7, 0x04, + 0x7D, 0x68, 0x9C, 0x70, 0xB2, 0x5E, 0x55, 0x01, + 0xCA, 0xEC, 0x99, 0x19, 0x62, 0x6F, 0x4A, 0x0F, + 0xC8, 0x15, 0x86, 0xAF, 0x1E, 0xC8, 0x88, 0x89, + 0xB4, 0x23, 0x38, 0x7D, 0x5D, 0x95, 0x48, 0x26, + 0x18, 0xA6, 0x50, 0xE8, 0x0B, 0x53, 0xB0, 0x7C, + 0xAC, 0xE3, 0x22, 0x89, 0x40, 0x60, 0x2E, 0x3D, + 0xB4, 0x74, 0x66, 0xCE, 0x9B, 0xCC, 0xB6, 0xE4, + 0xD8, 0xAA, 0x61, 0xC8, 0x91, 0x25, 0x83, 0xE8, + 0x10, 0xB3, 0xB2, 0xE7, 0xE9, 0xCB, 0x48, 0xBD, + 0x40, 0x3E, 0xCF, 0x08, 0xD2, 0x8C, 0x70, 0xAE, + 0x0B, 0x62, 0x08, 0x59, 0xC1, 0xF0, 0x9B, 0x61, + 0x13, 0x14, 0x04, 0xC3, 0xD5, 0xBF, 0xFC, 0xD8, + 0x60, 0xE0, 0xF4, 0x2A, 0xB2, 0x99, 0x00, 0x62, + 0x30, 0xB2, 0x87, 0x6D, 0x77, 0xDD, 0xA9, 0x1C, + 0x8C, 0x62, 0xBD, 0x93, 0xA8, 0x44, 0xE4, 0xB3, + 0x44, 0xE3, 0x25, 0x5E, 0xEA, 0x53, 0x1C, 0x6C, + 0x45, 0x8D, 0x04, 0xAB, 0xDB, 0x0F, 0xAE, 0xF2, + 0xD1, 0xC0, 0xB4, 0xC5, 0x5F, 0x57, 0x0A, 0x5A, + 0x51, 0x02, 0x3F, 0x4D, 0x4E, 0xFF, 0xF5, 0x9F, + 0x9A, 0xBE, 0x17, 0x92, 0x2F, 0xE7, 0x32, 0xCA, + 0x71, 0xBC, 0xD4, 0x34, 0xAD, 0x77, 0x10, 0xB8, + 0x4C, 0xD4, 0xAC, 0x9F, 0x25, 0x07, 0xA0, 0x68, + 0x26, 0x56, 0x2A, 0xD7, 0xF6, 0x47, 0x82, 0x6F, + 0x9D, 0xBB, 0xE4, 0xED, 0xD2, 0x3F, 0x12, 0x43, + 0x69, 0xDB, 0x85, 0x26, 0xFC, 0x2B, 0x4D, 0x52, + 0xF0, 0x74, 0x14, 0x15, 0xF9, 0x72, 0xBE, 0xF6, + 0xA9, 0x35, 0xBD, 0x81, 0x2A, 0x56, 0xC8, 0x22, + 0x1B, 0x7D, 0xEF, 0x0F, 0x51, 0x06, 0xBC, 0x01, + 0xE9, 0x13, 0xE3, 0xD4, 0x3D, 0xB8, 0x6C, 0x2B, + 0xB4, 0xC7, 0xE0, 0x76, 0x26, 0x63, 0xC6, 0xDE, + 0x78, 0x87, 0x21, 0xC2, 0xAA, 0x07, 0xF8, 0x95, + 0x48, 0x87, 0xE2, 0x14, 0x2F, 0x2E, 0x91, 0x4A, + 0x09, 0x9E, 0xFC, 0x0A, 0xEE, 0x13, 0x39, 0x21, + 0x0D, 0x3E, 0x53, 0xDA, 0x3E, 0xCF, 0x88, 0x62, + 0x4B, 0x11, 0x19, 0xBE, 0x34, 0x01, 0x0B, 0x88, + 0x6C, 0x80, 0xF5, 0x1D, 0x18, 0x50, 0x83, 0x8F, + 0x21, 0x50, 0xE7, 0x2B, 0x04, 0x2A, 0xF3, 0x28, + 0x99, 0xC0, 0xD3, 0xD7, 0xB0, 0x2A, 0x57, 0xF8, + 0xCF, 0x26, 0x3A, 0x36, 0x95, 0x62, 0xE4, 0xE9, + 0x45, 0xA3, 0x12, 0x82, 0xA5, 0x02, 0xA9, 0x5E, + 0xE9, 0xBB, 0x03, 0x16, 0xC6, 0x86, 0x10, 0x06, + 0xDA, 0xC1, 0x7F, 0x93, 0x6F, 0x54, 0xC4, 0xC7 + }; +#endif /* WOLFSSL_NO_ML_DSA_87 */ +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT +#ifndef WOLFSSL_NO_ML_DSA_44 + static const byte seed_44_draft[] = { + 0xBA, 0xC0, 0x59, 0x52, 0x75, 0x5B, 0x26, 0x47, + 0x01, 0xCA, 0x7D, 0x80, 0x6D, 0xFA, 0x08, 0x35, + 0x10, 0x28, 0xF6, 0x7B, 0x0E, 0x83, 0xC4, 0x24, + 0x01, 0x6F, 0x66, 0xCC, 0x83, 0x87, 0xD4, 0x69 + }; + static const byte pk_44_draft[] = { + 0x86, 0xF0, 0x0C, 0x20, 0xE0, 0xDA, 0xEE, 0x5E, + 0x1E, 0xDE, 0x71, 0x39, 0x49, 0x0C, 0xC8, 0xCF, + 0xEF, 0xC9, 0xAB, 0x62, 0x3B, 0x8D, 0xEF, 0x0B, + 0xD8, 0x03, 0x12, 0x5B, 0x4A, 0xB2, 0x83, 0x61, + 0xED, 0x7E, 0xA9, 0xED, 0x2D, 0xED, 0x5A, 0x71, + 0xDD, 0xAE, 0x4A, 0x06, 0xE0, 0x2A, 0x5A, 0xAF, + 0x99, 0x69, 0x89, 0xC6, 0xAF, 0xE3, 0x2A, 0xFE, + 0x3D, 0x6E, 0x0A, 0x46, 0x71, 0x48, 0xD7, 0x17, + 0x99, 0x20, 0x01, 0x78, 0xD5, 0x8B, 0x40, 0xCB, + 0x81, 0xA0, 0x33, 0x38, 0xAE, 0x2B, 0x83, 0x4A, + 0xFD, 0x5F, 0xE0, 0xB7, 0xEE, 0xA0, 0xC4, 0x3D, + 0xB6, 0xA4, 0xD5, 0x59, 0x4B, 0xDD, 0x87, 0x1A, + 0xFC, 0x03, 0x30, 0xA0, 0xB3, 0xAD, 0x75, 0x3C, + 0xD4, 0x47, 0x72, 0x59, 0xCE, 0xB7, 0x80, 0xFD, + 0x34, 0x35, 0x5E, 0x96, 0xC8, 0x42, 0xD9, 0xDD, + 0x6C, 0xF1, 0xAB, 0xEF, 0x48, 0xD1, 0xA8, 0x02, + 0x02, 0x0F, 0x5B, 0x71, 0x4D, 0x36, 0x1E, 0x0D, + 0xC2, 0x09, 0x46, 0x7B, 0xF9, 0xEA, 0x24, 0x8F, + 0x7C, 0xCF, 0xB8, 0x9C, 0xF7, 0x49, 0x15, 0x8E, + 0x16, 0x49, 0x7E, 0xC5, 0x54, 0xF5, 0x03, 0x1D, + 0x16, 0x12, 0x02, 0x72, 0x1B, 0x38, 0x2D, 0x58, + 0x53, 0x15, 0x5E, 0xB6, 0x72, 0xCC, 0xA1, 0x09, + 0xB0, 0x2F, 0x10, 0xFA, 0x21, 0x45, 0x46, 0x37, + 0xD4, 0xFA, 0x7F, 0xFB, 0xB0, 0xD9, 0x20, 0xE2, + 0xCB, 0x56, 0xB3, 0x1E, 0xDF, 0x82, 0x67, 0x25, + 0x09, 0xD1, 0x8F, 0xFF, 0xE0, 0x43, 0xBD, 0x37, + 0x2B, 0x73, 0x0E, 0x13, 0x08, 0xC9, 0x49, 0x88, + 0x69, 0x69, 0xD9, 0x8C, 0x86, 0xE4, 0x7E, 0x63, + 0x35, 0xC5, 0xE1, 0xD0, 0x14, 0x9A, 0x89, 0x27, + 0x28, 0x17, 0xB0, 0x5B, 0x7A, 0x8F, 0xDD, 0x72, + 0x8B, 0x0A, 0x0D, 0x49, 0x58, 0x59, 0x2F, 0x0D, + 0x8F, 0x3D, 0x16, 0xCE, 0x7B, 0x11, 0xC7, 0x06, + 0x5D, 0xD5, 0x6D, 0x7B, 0x96, 0xED, 0x1E, 0x1A, + 0xF4, 0x10, 0x85, 0xDA, 0xDE, 0x84, 0x2F, 0x2B, + 0xBA, 0xFB, 0xA2, 0x5F, 0x33, 0x7D, 0x7C, 0x18, + 0x6B, 0xDF, 0x43, 0x3C, 0xE9, 0xEB, 0xB4, 0xC5, + 0x8E, 0x52, 0xF5, 0x7E, 0x4C, 0x3E, 0x6A, 0x33, + 0x41, 0x4C, 0x14, 0x05, 0x8E, 0x2C, 0x19, 0x0E, + 0x86, 0x91, 0x66, 0xDE, 0xF6, 0x4B, 0x35, 0xC2, + 0xDF, 0x3D, 0x4C, 0x7B, 0xC5, 0x58, 0x5E, 0x86, + 0x89, 0x6A, 0xFC, 0x86, 0x48, 0x75, 0xD1, 0x18, + 0xD1, 0xCB, 0x41, 0xC0, 0xF6, 0xD8, 0x87, 0x79, + 0xD9, 0xA2, 0x56, 0x2E, 0x83, 0x26, 0x11, 0xC1, + 0x4B, 0x53, 0x37, 0x85, 0x62, 0xFF, 0x6A, 0x67, + 0xFD, 0x18, 0x79, 0xD7, 0x55, 0x9B, 0xF7, 0x64, + 0xA9, 0x21, 0xB6, 0x1B, 0xF6, 0x11, 0x85, 0xF8, + 0xC0, 0x68, 0xDE, 0x61, 0x0C, 0x61, 0x7E, 0x8E, + 0xED, 0x9E, 0x58, 0x84, 0x16, 0x1A, 0x28, 0xC5, + 0x41, 0x63, 0xB3, 0xF0, 0x82, 0xAA, 0xE8, 0x36, + 0x81, 0x5C, 0xD3, 0xB7, 0xFB, 0x92, 0xF4, 0x7A, + 0x1E, 0x85, 0xA2, 0xB7, 0x21, 0xD5, 0xFA, 0xC8, + 0xE8, 0x02, 0x43, 0x5B, 0x56, 0x42, 0x03, 0x17, + 0x67, 0xEE, 0x3E, 0x31, 0x23, 0x63, 0xC7, 0x33, + 0x95, 0xDE, 0x07, 0xF6, 0x11, 0x3A, 0x2C, 0x3F, + 0x7B, 0xBB, 0x2D, 0x5C, 0x23, 0xF9, 0x2F, 0x9C, + 0x51, 0x19, 0x9F, 0x35, 0xC3, 0x18, 0x9F, 0x83, + 0x6E, 0xA8, 0x03, 0xF1, 0x79, 0x1F, 0xB0, 0xC8, + 0x2F, 0xF4, 0x2E, 0x9A, 0x26, 0xF3, 0x44, 0x02, + 0x8F, 0x45, 0x8B, 0xB0, 0x25, 0x1D, 0xF2, 0xD4, + 0x55, 0xB7, 0x65, 0xEF, 0xDB, 0x3D, 0x8E, 0x92, + 0xC8, 0xA0, 0x63, 0x4C, 0x38, 0xA3, 0x54, 0xD3, + 0xC2, 0x5A, 0x2A, 0x6A, 0x15, 0x27, 0x2A, 0xE2, + 0xFC, 0x25, 0xB6, 0xC8, 0x68, 0xEB, 0xED, 0x2D, + 0x23, 0xE8, 0x6D, 0x5C, 0xDD, 0x3F, 0x18, 0xB4, + 0x6E, 0x79, 0x36, 0xC9, 0x1C, 0xB4, 0x92, 0x41, + 0xAD, 0x35, 0xD4, 0x15, 0xE4, 0x64, 0x1C, 0x51, + 0xCB, 0x0C, 0x41, 0xB7, 0xFD, 0xC1, 0x09, 0x3E, + 0xD2, 0x4D, 0x38, 0x88, 0x77, 0x1C, 0x71, 0x91, + 0x74, 0xD3, 0x28, 0xE0, 0xCE, 0x9A, 0x11, 0x8D, + 0xBF, 0x4D, 0x8D, 0xF0, 0x44, 0xF6, 0x79, 0xFC, + 0x4C, 0xAD, 0x17, 0x88, 0xC0, 0x8C, 0x0B, 0x7A, + 0x90, 0x01, 0x53, 0x6C, 0x6B, 0x44, 0xF6, 0xE5, + 0x2E, 0xEC, 0x44, 0x4F, 0xB8, 0x9B, 0x10, 0xBE, + 0xCF, 0x55, 0x55, 0x29, 0x83, 0xB8, 0xD0, 0x25, + 0x5B, 0xCE, 0x8F, 0xA5, 0xB7, 0x6C, 0xA7, 0x47, + 0x65, 0xA9, 0xE9, 0x9B, 0xA5, 0xBC, 0x28, 0x1D, + 0x9F, 0x1F, 0x5E, 0x97, 0x42, 0x10, 0x84, 0x92, + 0xFB, 0x38, 0x0B, 0x2E, 0xAC, 0x79, 0x0A, 0x7D, + 0x00, 0x2C, 0x35, 0xD0, 0x54, 0x0D, 0x28, 0xE7, + 0xAB, 0x06, 0x02, 0xDA, 0x89, 0xA3, 0x06, 0x8E, + 0x13, 0x9A, 0xA7, 0xCA, 0x48, 0x09, 0xB0, 0x48, + 0x37, 0x08, 0xA7, 0x7D, 0xDA, 0xEB, 0x58, 0x64, + 0x39, 0xB3, 0xF3, 0xB2, 0x4C, 0x00, 0x4B, 0xCB, + 0x94, 0x36, 0xD4, 0x7C, 0x73, 0x45, 0xC8, 0x93, + 0xE5, 0x2A, 0x11, 0xF0, 0xEF, 0x0C, 0xED, 0x5F, + 0x8B, 0x0C, 0x86, 0xAD, 0x3A, 0x01, 0x07, 0x1A, + 0xC0, 0x34, 0xE8, 0x74, 0x21, 0x27, 0x73, 0x56, + 0x93, 0x76, 0x5D, 0x80, 0x59, 0xB4, 0xA4, 0xDC, + 0x80, 0xE7, 0xCE, 0x70, 0x0E, 0x0F, 0xEC, 0x56, + 0x42, 0x6E, 0x9C, 0x76, 0x3D, 0xF6, 0xB4, 0x41, + 0xE2, 0x3E, 0xAC, 0x25, 0xE7, 0x86, 0xA7, 0xA7, + 0x0A, 0x0D, 0x5D, 0x04, 0x1F, 0x45, 0xD4, 0x5B, + 0x42, 0x38, 0x4C, 0x60, 0xE7, 0xB7, 0x0D, 0xC7, + 0x28, 0x4F, 0xA5, 0x4E, 0x0C, 0x1B, 0xC4, 0xDA, + 0x50, 0x1A, 0xA0, 0x93, 0xAE, 0x10, 0x9A, 0x1A, + 0xC8, 0xC6, 0x56, 0xFC, 0x0A, 0xEA, 0x89, 0x3A, + 0x28, 0x21, 0xE9, 0x52, 0x9D, 0xEB, 0x07, 0x68, + 0xC1, 0x57, 0x32, 0x25, 0x1F, 0x93, 0x5D, 0x35, + 0xB2, 0x4B, 0x58, 0x30, 0xAF, 0x51, 0xC6, 0x7D, + 0x47, 0xD1, 0xA2, 0xAD, 0xDE, 0x75, 0x48, 0x84, + 0x74, 0x19, 0x74, 0x18, 0xA0, 0x2C, 0xD8, 0xB2, + 0xFE, 0x44, 0x78, 0x95, 0x6A, 0xBF, 0x56, 0x4D, + 0x20, 0x79, 0xE7, 0xE2, 0xE3, 0x56, 0x69, 0xB3, + 0xFA, 0xE1, 0xEB, 0xE6, 0x11, 0xAC, 0x18, 0xB3, + 0x98, 0xC1, 0x04, 0x20, 0x96, 0x4B, 0xAD, 0xDE, + 0x5B, 0x18, 0xEB, 0x7B, 0xBC, 0x15, 0x11, 0x57, + 0x29, 0x10, 0xE5, 0x80, 0x78, 0x4A, 0xF0, 0x87, + 0xF6, 0xD1, 0x3C, 0x23, 0xC5, 0xF4, 0x2D, 0xD7, + 0xAB, 0xA4, 0xD7, 0xB8, 0x45, 0x8E, 0x04, 0x1B, + 0x78, 0x59, 0x9F, 0x81, 0xE6, 0x04, 0xDF, 0x70, + 0x2B, 0x14, 0x74, 0x16, 0x49, 0xDA, 0xF0, 0xE1, + 0xC8, 0x29, 0xCC, 0x87, 0x8C, 0x2F, 0xFB, 0x18, + 0x3B, 0x47, 0xFC, 0x79, 0x04, 0x84, 0xCB, 0x0A, + 0xD2, 0x64, 0xBF, 0x86, 0xEA, 0x01, 0xAC, 0xE0, + 0xBD, 0xEC, 0x3B, 0xE1, 0xA7, 0x6C, 0xDE, 0x1D, + 0x58, 0x76, 0xCC, 0x53, 0x9E, 0xF6, 0xC6, 0xD4, + 0x2C, 0x87, 0x92, 0xA2, 0x89, 0x27, 0x31, 0x33, + 0x01, 0xA5, 0xA2, 0xE8, 0x8F, 0x13, 0x19, 0x0F, + 0xFD, 0x73, 0xB9, 0x91, 0xBD, 0xB8, 0x80, 0x9A, + 0xA3, 0xB1, 0x21, 0x6C, 0x91, 0x13, 0x8A, 0xAE, + 0xC7, 0xCB, 0x67, 0x14, 0xD1, 0xC0, 0x28, 0x89, + 0x04, 0x8C, 0x9F, 0xDE, 0xA0, 0x9A, 0x99, 0xA8, + 0x61, 0xE6, 0x8F, 0x8E, 0x39, 0xEF, 0x6B, 0x5E, + 0x84, 0x5F, 0x5D, 0x24, 0x37, 0x73, 0x9D, 0x75, + 0xC4, 0xEF, 0xE2, 0xA1, 0xF2, 0xBC, 0x0D, 0xE1, + 0x0D, 0xEC, 0xFA, 0xEE, 0xC1, 0x63, 0xC8, 0x2E, + 0x7D, 0x85, 0x65, 0xC3, 0xF2, 0x0D, 0x8B, 0x73, + 0xF9, 0x3B, 0x0B, 0x3D, 0x49, 0x8B, 0xFB, 0x16, + 0x5B, 0x75, 0x48, 0x9B, 0x56, 0x0A, 0x83, 0x4C, + 0x0D, 0x13, 0xB2, 0xB4, 0x25, 0xC7, 0x2C, 0xCB, + 0xA7, 0x9E, 0xCA, 0x41, 0x44, 0x14, 0x9A, 0x03, + 0xD3, 0x01, 0x8C, 0xB0, 0xD5, 0xA9, 0x36, 0xA4, + 0x16, 0x21, 0x49, 0x0A, 0x99, 0xA1, 0x89, 0xA5, + 0x91, 0x10, 0xA2, 0x1B, 0x3F, 0x98, 0x1E, 0x1C, + 0x43, 0xAA, 0x9C, 0x16, 0x5A, 0xF0, 0x18, 0x64, + 0x0F, 0x6A, 0xE3, 0x97, 0x83, 0x31, 0x4E, 0x84, + 0xC9, 0xEA, 0xD8, 0x9F, 0xEA, 0x9E, 0xD6, 0xF2, + 0x0E, 0x15, 0xA5, 0x48, 0x15, 0x8B, 0x10, 0x1D, + 0x77, 0x78, 0x1B, 0x54, 0x03, 0xC1, 0x2C, 0xB1, + 0xC8, 0x22, 0x11, 0x9D, 0xB8, 0x82, 0x94, 0x26, + 0xA0, 0xED, 0x6C, 0xAD, 0xA8, 0x03, 0xC2, 0xED, + 0x02, 0x74, 0x3E, 0x54, 0xBD, 0x77, 0xA6, 0x0B, + 0x37, 0xFE, 0x04, 0xCD, 0x25, 0x10, 0x2D, 0x52, + 0xC2, 0xD4, 0x5B, 0x9B, 0xAE, 0xFE, 0x35, 0x73, + 0x16, 0x61, 0x84, 0x25, 0x1D, 0xBE, 0x95, 0x34, + 0xA4, 0xF6, 0xB9, 0xA4, 0xF9, 0xAA, 0x5D, 0x1E, + 0x49, 0xBB, 0x19, 0xD9, 0x64, 0xD7, 0x48, 0x1A, + 0x0A, 0x93, 0xC3, 0x69, 0x13, 0x12, 0x68, 0xBB, + 0x97, 0x97, 0xBD, 0x99, 0x69, 0xCE, 0xE6, 0xF5, + 0x84, 0x7B, 0xCC, 0xE4, 0x7D, 0xD3, 0xCD, 0x8A, + 0x7A, 0x4B, 0x98, 0xF4, 0x09, 0x9D, 0xEA, 0x5D, + 0x4E, 0x1F, 0xE1, 0x1E, 0x6C, 0x48, 0xD3, 0x5E, + 0x67, 0xD9, 0xFF, 0x64, 0x4D, 0xA7, 0x64, 0x7A, + 0x01, 0xB2, 0xE9, 0x63, 0x14, 0x10, 0xB7, 0x08, + 0x0C, 0xF9, 0x4D, 0x66, 0x48, 0x46, 0xE3, 0xC2, + 0x48, 0x6B, 0x47, 0xCE, 0x00, 0x98, 0x92, 0x83, + 0xF7, 0xE0, 0x1F, 0x96, 0xFA, 0x53, 0xD5, 0x49, + 0x1C, 0xC7, 0x89, 0xB4, 0xA5, 0x4B, 0x63, 0xBF, + 0xD2, 0x00, 0x79, 0xDD, 0xC1, 0x60, 0xAA, 0xF2, + 0x0F, 0x47, 0xB9, 0x4F, 0x8A, 0x66, 0x05, 0x3D, + 0x96, 0x36, 0x64, 0x48, 0x5F, 0x7E, 0x56, 0x2B, + 0xB3, 0x47, 0xE2, 0x76, 0x64, 0x21, 0x65, 0x34, + 0xFC, 0xDD, 0x2D, 0x4C, 0xE2, 0x99, 0x33, 0x04, + 0xE4, 0x26, 0x15, 0x37, 0x6C, 0x32, 0xB9, 0x17 + }; + static const byte sk_44_draft[] = { + 0x86, 0xF0, 0x0C, 0x20, 0xE0, 0xDA, 0xEE, 0x5E, + 0x1E, 0xDE, 0x71, 0x39, 0x49, 0x0C, 0xC8, 0xCF, + 0xEF, 0xC9, 0xAB, 0x62, 0x3B, 0x8D, 0xEF, 0x0B, + 0xD8, 0x03, 0x12, 0x5B, 0x4A, 0xB2, 0x83, 0x61, + 0x73, 0x61, 0x49, 0x01, 0x0F, 0x94, 0x08, 0x30, + 0x26, 0x02, 0x12, 0x63, 0x64, 0x15, 0x7A, 0x4D, + 0xBA, 0xF5, 0x25, 0xA7, 0xAA, 0x0B, 0x7C, 0x3D, + 0xCE, 0x05, 0x91, 0x95, 0xEF, 0x17, 0x2F, 0xE2, + 0x5A, 0x03, 0x5E, 0x2E, 0x4D, 0xFA, 0xE7, 0x5F, + 0xCD, 0x61, 0x34, 0xFB, 0x3D, 0x3C, 0x5C, 0x60, + 0x1A, 0x6F, 0x09, 0xB5, 0x9D, 0xDD, 0x90, 0x53, + 0xF6, 0x89, 0x50, 0xC2, 0xE1, 0xED, 0x0A, 0x61, + 0x8F, 0xFA, 0xDC, 0x2D, 0xB2, 0x8B, 0xA1, 0x56, + 0xAC, 0x5E, 0x0E, 0xF1, 0x3B, 0x1E, 0x22, 0x9F, + 0xAA, 0x05, 0x96, 0xA3, 0x5E, 0x44, 0x86, 0xA8, + 0xBA, 0x15, 0xD1, 0x11, 0x7D, 0xAA, 0xD0, 0xAA, + 0x01, 0x27, 0x25, 0x04, 0x82, 0x89, 0xA4, 0x22, + 0x2E, 0xDB, 0x80, 0x45, 0xD2, 0x30, 0x45, 0x59, + 0x16, 0x64, 0xE2, 0x08, 0x86, 0x50, 0x00, 0x8E, + 0xCA, 0x08, 0x51, 0x5A, 0x06, 0x01, 0x54, 0x82, + 0x20, 0xC4, 0x92, 0x30, 0x02, 0x21, 0x4E, 0x0A, + 0x93, 0x89, 0x84, 0xB8, 0x70, 0x24, 0x40, 0x51, + 0x24, 0xB3, 0x44, 0xDB, 0x08, 0x40, 0x1B, 0x37, + 0x44, 0x21, 0x22, 0x8E, 0x8C, 0x16, 0x42, 0x10, + 0x22, 0x0E, 0xA1, 0xB2, 0x8D, 0x18, 0x49, 0x30, + 0xC1, 0x32, 0x69, 0x21, 0x03, 0x8E, 0x49, 0x44, + 0x08, 0xD3, 0x16, 0x89, 0x10, 0xA4, 0x25, 0x5C, + 0x22, 0x8A, 0xC0, 0xC8, 0x08, 0xC1, 0x04, 0x6A, + 0xD2, 0xA0, 0x50, 0x8A, 0x02, 0x52, 0x92, 0x16, + 0x44, 0x54, 0x30, 0x4A, 0x92, 0x32, 0x0C, 0x4C, + 0x44, 0x2D, 0x04, 0x15, 0x2A, 0x99, 0x24, 0x42, + 0x52, 0xA8, 0x30, 0x53, 0x24, 0x85, 0x9A, 0xB8, + 0x01, 0xE2, 0x08, 0x09, 0x23, 0x28, 0x08, 0xC4, + 0x98, 0x85, 0x0B, 0xB9, 0x40, 0x60, 0x26, 0x28, + 0x0A, 0x45, 0x12, 0x0C, 0x43, 0x84, 0x82, 0x16, + 0x89, 0xC4, 0x48, 0x28, 0x58, 0x18, 0x2A, 0x20, + 0x07, 0x02, 0xD3, 0x82, 0x45, 0x50, 0xB0, 0x50, + 0x64, 0x36, 0x91, 0x52, 0x02, 0x45, 0x5A, 0x42, + 0x26, 0x01, 0x28, 0x71, 0xD4, 0x86, 0x10, 0x19, + 0xC4, 0x68, 0xC4, 0x30, 0x66, 0xE0, 0x02, 0x49, + 0x18, 0x34, 0x05, 0x04, 0x02, 0x04, 0x90, 0x94, + 0x4C, 0x01, 0xA7, 0x80, 0x12, 0x97, 0x08, 0x19, + 0xC5, 0x41, 0x24, 0xC1, 0x61, 0x08, 0xB0, 0x0C, + 0x21, 0xC1, 0x49, 0x9B, 0x42, 0x51, 0x62, 0x18, + 0x22, 0x54, 0x06, 0x06, 0x93, 0x26, 0x70, 0x49, + 0x86, 0x91, 0x00, 0x28, 0x6C, 0x02, 0xC9, 0x60, + 0x13, 0xC3, 0x09, 0xCB, 0x14, 0x66, 0x09, 0x17, + 0x25, 0x1C, 0x16, 0x89, 0x01, 0xB6, 0x01, 0x60, + 0x86, 0x71, 0x58, 0x96, 0x04, 0x82, 0x38, 0x61, + 0x43, 0x40, 0x72, 0xCC, 0x46, 0x71, 0x81, 0x20, + 0x2C, 0x18, 0x20, 0x6E, 0x03, 0x91, 0x11, 0x9A, + 0x08, 0x89, 0x43, 0x06, 0x48, 0x64, 0x02, 0x6C, + 0x21, 0x33, 0x8D, 0x48, 0x16, 0x66, 0x9B, 0xA4, + 0x2D, 0x01, 0x10, 0x66, 0xDC, 0xB0, 0x25, 0x40, + 0xA0, 0x24, 0xA2, 0xB4, 0x44, 0xC8, 0x26, 0x61, + 0x0A, 0x10, 0x4E, 0xD0, 0x04, 0x11, 0x4A, 0x82, + 0x51, 0x03, 0x04, 0x6C, 0x18, 0x88, 0x6C, 0xE0, + 0x98, 0x41, 0x11, 0x29, 0x06, 0x62, 0x12, 0x8E, + 0xDA, 0x42, 0x91, 0x09, 0x48, 0x60, 0xD1, 0xB4, + 0x80, 0x10, 0x30, 0x30, 0x80, 0x38, 0x82, 0xD0, + 0x84, 0x0D, 0x08, 0x14, 0x92, 0x24, 0x41, 0x40, + 0x0C, 0x10, 0x89, 0xCC, 0x38, 0x8A, 0x13, 0xB6, + 0x89, 0x1A, 0xA7, 0x24, 0x5C, 0x10, 0x12, 0x1B, + 0x21, 0x50, 0x91, 0xB4, 0x29, 0x99, 0xB6, 0x51, + 0x04, 0xB1, 0x91, 0x59, 0xA6, 0x05, 0x19, 0x08, + 0x4A, 0x4A, 0x84, 0x6C, 0x1C, 0x49, 0x02, 0x44, + 0x20, 0x85, 0x14, 0xB1, 0x89, 0x09, 0x44, 0x2C, + 0x10, 0x02, 0x22, 0xE1, 0xB4, 0x25, 0x01, 0x21, + 0x71, 0x53, 0xC2, 0x85, 0x82, 0x88, 0x28, 0xC0, + 0x02, 0x52, 0x19, 0xC5, 0x51, 0x19, 0xA5, 0x09, + 0xC0, 0x82, 0x91, 0x21, 0x47, 0x0D, 0x1C, 0x30, + 0x69, 0xDC, 0xB8, 0x6C, 0x04, 0x41, 0x6A, 0x91, + 0x16, 0x40, 0xA0, 0xC8, 0x24, 0x1A, 0x10, 0x01, + 0x04, 0x39, 0x25, 0x80, 0x16, 0x02, 0x63, 0x36, + 0x71, 0x90, 0xB0, 0x8D, 0x44, 0x16, 0x8E, 0xDA, + 0x16, 0x2E, 0xCB, 0x44, 0x20, 0x54, 0x38, 0x06, + 0x54, 0xC4, 0x01, 0x51, 0x40, 0x86, 0x52, 0x44, + 0x0E, 0x82, 0x02, 0x32, 0x21, 0x38, 0x89, 0x19, + 0x04, 0x40, 0xD8, 0x12, 0x68, 0x21, 0x98, 0x11, + 0x03, 0x33, 0x8A, 0x18, 0x00, 0x45, 0xCB, 0x22, + 0x32, 0xC3, 0x04, 0x46, 0x09, 0x18, 0x51, 0x22, + 0x44, 0x89, 0x13, 0x16, 0x6E, 0xDA, 0x46, 0x45, + 0x09, 0x19, 0x41, 0x81, 0x10, 0x01, 0xDC, 0x18, + 0x8E, 0xC8, 0x44, 0x4C, 0x00, 0x17, 0x82, 0x9C, + 0xA6, 0x4D, 0xC8, 0x08, 0x10, 0x24, 0x42, 0x6D, + 0x91, 0x38, 0x89, 0x8C, 0x40, 0x6E, 0x00, 0x35, + 0x11, 0xD3, 0x24, 0x09, 0x1A, 0x01, 0x65, 0x88, + 0x48, 0x45, 0x09, 0x01, 0x71, 0x43, 0xB8, 0x80, + 0x11, 0x82, 0x2C, 0x84, 0xB8, 0x49, 0x58, 0x14, + 0x28, 0x92, 0x20, 0x32, 0x09, 0x12, 0x05, 0x20, + 0x81, 0x2D, 0x5B, 0x86, 0x11, 0x04, 0x90, 0x45, + 0x49, 0x80, 0x40, 0xD1, 0xC8, 0x24, 0x98, 0xC2, + 0x2C, 0x99, 0xA2, 0x30, 0x04, 0x98, 0x8C, 0x53, + 0x24, 0x02, 0x8A, 0x04, 0x01, 0x4C, 0x28, 0x71, + 0xC3, 0x86, 0x6C, 0x24, 0x49, 0x81, 0x04, 0x02, + 0x28, 0x62, 0x44, 0x32, 0x61, 0x20, 0x28, 0x01, + 0x04, 0x11, 0x0C, 0x09, 0x08, 0x90, 0x98, 0x84, + 0x63, 0xB2, 0x45, 0x63, 0x38, 0x2E, 0x04, 0xA4, + 0x0C, 0x18, 0x05, 0x4E, 0xCC, 0x86, 0x90, 0x43, + 0x40, 0x91, 0x54, 0x02, 0x21, 0x43, 0x28, 0x42, + 0x23, 0x94, 0x29, 0xC8, 0xA6, 0x91, 0x02, 0x09, + 0x80, 0xE3, 0x82, 0x00, 0xC1, 0x34, 0x08, 0xD1, + 0x34, 0x84, 0x12, 0x45, 0x8C, 0x02, 0xC6, 0x81, + 0x41, 0xC6, 0x6C, 0x1B, 0x12, 0x24, 0x04, 0x08, + 0x0D, 0x02, 0x00, 0x0C, 0x9C, 0xA2, 0x05, 0x49, + 0x34, 0x65, 0x00, 0x06, 0x89, 0x88, 0x34, 0x00, + 0xD8, 0x82, 0x29, 0x92, 0x12, 0x91, 0xE3, 0x36, + 0x86, 0xD1, 0x80, 0x71, 0x98, 0xB0, 0x50, 0x48, + 0xC6, 0x11, 0x14, 0x80, 0x0D, 0xA0, 0x12, 0x4D, + 0x9B, 0xB2, 0x40, 0x21, 0x41, 0x50, 0x4B, 0x36, + 0x05, 0x52, 0x10, 0x26, 0x19, 0xB2, 0x60, 0x92, + 0xA2, 0x24, 0xCB, 0x08, 0x00, 0x14, 0x22, 0x49, + 0x5A, 0xD0, 0x55, 0xBD, 0x2B, 0x45, 0xE4, 0x31, + 0x41, 0xA8, 0xC3, 0xA3, 0xAD, 0xBD, 0xB6, 0x37, + 0x92, 0x06, 0x95, 0x6B, 0x3D, 0xD8, 0xE5, 0x33, + 0x71, 0xB6, 0x62, 0xB7, 0x67, 0x6C, 0x77, 0x84, + 0x63, 0x2F, 0x41, 0x1D, 0xBA, 0x51, 0x27, 0xE1, + 0x24, 0x5D, 0xC2, 0x38, 0x71, 0x65, 0x9E, 0x8E, + 0xE4, 0xEB, 0xBB, 0x1D, 0x89, 0xEB, 0x18, 0xCA, + 0x0C, 0xA6, 0x86, 0xA3, 0x4D, 0x7C, 0x7A, 0x02, + 0xAC, 0xDD, 0x34, 0xCE, 0x05, 0x3B, 0x1B, 0x49, + 0xF4, 0x6D, 0x12, 0x33, 0xBC, 0x52, 0x70, 0x59, + 0xDF, 0xBC, 0x5D, 0x49, 0x42, 0x6A, 0xED, 0xC7, + 0xF1, 0x8C, 0xF5, 0x6D, 0x1F, 0xBC, 0xE4, 0xBD, + 0x45, 0x5D, 0x59, 0xF8, 0xCE, 0x9A, 0x39, 0xB5, + 0x96, 0x32, 0xFD, 0x93, 0x65, 0x8E, 0x92, 0xF1, + 0x8F, 0xB0, 0x99, 0xF3, 0x80, 0x0F, 0x66, 0x14, + 0xFE, 0xEB, 0x23, 0x17, 0x2D, 0x4C, 0x8F, 0x41, + 0x9A, 0x9B, 0xD1, 0x5B, 0x5B, 0xC0, 0x3D, 0xA6, + 0x0E, 0xF3, 0xE0, 0xA1, 0x04, 0xDC, 0x24, 0x18, + 0x9D, 0x90, 0xC6, 0x89, 0x5A, 0x7F, 0x10, 0x1E, + 0x4B, 0x21, 0xEC, 0x91, 0xD8, 0x5D, 0x65, 0xDB, + 0xCF, 0x90, 0x62, 0x85, 0xE9, 0x58, 0xA3, 0x47, + 0x92, 0x1C, 0xD0, 0x0C, 0xA3, 0xF3, 0x3E, 0x36, + 0xDB, 0x24, 0xA6, 0x98, 0xAB, 0xA7, 0x89, 0x2B, + 0x71, 0x6C, 0x4D, 0x00, 0xB0, 0xD5, 0xA0, 0xCA, + 0x1A, 0x76, 0x8E, 0x80, 0xB7, 0xAE, 0x83, 0x89, + 0x50, 0xF8, 0xA7, 0x52, 0x8B, 0x94, 0xD2, 0x2B, + 0x9F, 0x49, 0x92, 0x3D, 0x54, 0x0D, 0xB8, 0xD1, + 0x19, 0x49, 0xAC, 0x91, 0xAF, 0xDB, 0xE9, 0x24, + 0x4D, 0xD8, 0xE1, 0xD5, 0x16, 0x0E, 0xB1, 0x39, + 0x40, 0x7D, 0x5F, 0xF5, 0x92, 0xB4, 0xAF, 0xC3, + 0x76, 0x2B, 0xDB, 0x7D, 0x52, 0x97, 0x62, 0x9F, + 0xCF, 0x32, 0x19, 0x5F, 0xE6, 0x32, 0xFB, 0x8E, + 0x39, 0x24, 0xB4, 0xEB, 0xE9, 0x17, 0x9E, 0x47, + 0x69, 0x4D, 0x92, 0x82, 0x96, 0x88, 0x38, 0x11, + 0xCE, 0xD6, 0xBF, 0x18, 0xE3, 0x51, 0x40, 0x81, + 0x11, 0xA0, 0x74, 0xDA, 0x0D, 0x5E, 0xEC, 0xD8, + 0x5D, 0x33, 0x22, 0x1E, 0xB9, 0x5D, 0xBF, 0x79, + 0xB0, 0xA1, 0xEF, 0xD1, 0x2D, 0xA0, 0x5F, 0xA1, + 0xC7, 0x6E, 0xD5, 0x08, 0xB8, 0xD0, 0xC1, 0x95, + 0x51, 0x9B, 0x07, 0xC3, 0x4A, 0x0A, 0xB5, 0xA1, + 0x28, 0xFE, 0x95, 0x95, 0x0A, 0xCF, 0x83, 0xA8, + 0xEB, 0x8F, 0xFB, 0x18, 0xD5, 0xBD, 0x69, 0x50, + 0xF1, 0xDF, 0x06, 0xFA, 0x9A, 0x65, 0x47, 0xBB, + 0x56, 0xE9, 0xCB, 0x8F, 0x69, 0x5F, 0xE0, 0xAD, + 0x19, 0x3A, 0x70, 0xE5, 0x66, 0x42, 0xD7, 0x1C, + 0x0C, 0xB4, 0x03, 0x89, 0x7D, 0x47, 0x4D, 0x29, + 0x67, 0x8C, 0x41, 0x73, 0xAB, 0x7D, 0xFD, 0x69, + 0x15, 0xAD, 0xE3, 0xB7, 0xF8, 0x98, 0x3B, 0xCA, + 0x8F, 0x27, 0x37, 0x7B, 0x72, 0x2C, 0x5F, 0x23, + 0x73, 0x15, 0xE2, 0xB6, 0xBD, 0xDE, 0x84, 0xF8, + 0x7E, 0x22, 0xB9, 0xFD, 0xD3, 0x4D, 0x62, 0x80, + 0xBA, 0xC5, 0x57, 0x29, 0x30, 0x1B, 0x06, 0x4D, + 0x20, 0xB1, 0x53, 0x86, 0xCB, 0x6A, 0x4A, 0xE3, + 0xC1, 0xA9, 0x88, 0xCF, 0xEB, 0x15, 0x2F, 0xA8, + 0xA8, 0x6F, 0xFC, 0x2A, 0xA8, 0x0E, 0xD9, 0xFA, + 0xEA, 0xD7, 0x3B, 0xCE, 0xF8, 0x5B, 0xD8, 0x92, + 0x22, 0x6A, 0x1A, 0x8E, 0x5E, 0x91, 0x37, 0x2C, + 0x21, 0x05, 0xC4, 0xAC, 0xF7, 0x62, 0x83, 0xBA, + 0x55, 0xD5, 0x2C, 0xCE, 0xA1, 0x19, 0x93, 0x0E, + 0xDE, 0xB6, 0xB8, 0x78, 0x0F, 0xBF, 0x4C, 0xA4, + 0x66, 0xAD, 0x97, 0x2F, 0xEE, 0x34, 0xE9, 0xA2, + 0xB6, 0x1D, 0x3C, 0x60, 0xFB, 0xB8, 0x7F, 0xF8, + 0xFD, 0x34, 0x8C, 0xC5, 0xC7, 0x38, 0x72, 0x74, + 0x19, 0xA9, 0xCF, 0x54, 0x49, 0x5B, 0xBA, 0x70, + 0x12, 0xC1, 0x61, 0xDC, 0x32, 0x61, 0x49, 0x66, + 0xF3, 0x57, 0xAA, 0x0F, 0xE6, 0x44, 0x9E, 0x8A, + 0x19, 0x9C, 0x6B, 0x63, 0x2C, 0x14, 0x1E, 0xDD, + 0x00, 0x27, 0xE3, 0x95, 0xE3, 0xE7, 0xD9, 0xFF, + 0x30, 0x2D, 0x14, 0x19, 0x4F, 0x49, 0x20, 0x0B, + 0x58, 0x2A, 0x23, 0x1C, 0xE2, 0xAD, 0x6B, 0x9C, + 0x7B, 0xB6, 0x20, 0x63, 0x08, 0x24, 0x55, 0x04, + 0x58, 0x1F, 0x0E, 0xBE, 0x2A, 0x6F, 0x79, 0x90, + 0x9E, 0x15, 0x8F, 0x4B, 0xDB, 0xE2, 0xBE, 0xBC, + 0x28, 0xB1, 0xC8, 0xFE, 0x00, 0x6D, 0x71, 0xCC, + 0x91, 0x6A, 0xCC, 0xF8, 0x12, 0x8B, 0xEC, 0xF3, + 0x46, 0x53, 0xB1, 0x7F, 0xB3, 0x79, 0xF0, 0xC7, + 0xD7, 0xA5, 0xCF, 0x2C, 0xC3, 0x09, 0x66, 0x82, + 0x53, 0x43, 0xFD, 0xAC, 0xDE, 0xD5, 0x85, 0xB3, + 0x79, 0x74, 0x55, 0xE8, 0xF6, 0xE5, 0xFB, 0xF0, + 0x63, 0x0C, 0x36, 0x63, 0x65, 0x10, 0x43, 0xC9, + 0x60, 0x99, 0xD6, 0x0C, 0xB9, 0x66, 0x1C, 0xA9, + 0x97, 0x4D, 0xDB, 0xA8, 0x13, 0x9E, 0xAE, 0xCA, + 0x7A, 0x5F, 0xE3, 0x24, 0xA0, 0xEE, 0x8A, 0x9D, + 0x7F, 0x03, 0x53, 0x21, 0x6B, 0xAF, 0x3D, 0xF9, + 0x38, 0xF3, 0x7A, 0x1D, 0xDA, 0xE2, 0xEF, 0xBA, + 0x86, 0x21, 0x85, 0x1F, 0x36, 0x08, 0x0B, 0xDA, + 0x37, 0x5A, 0x0A, 0xD7, 0x55, 0x41, 0xD5, 0x84, + 0x1B, 0x36, 0xA2, 0x50, 0x65, 0xD7, 0xF3, 0xA3, + 0xEB, 0xE1, 0xDE, 0x0F, 0x85, 0xAA, 0xF6, 0x2F, + 0xAB, 0xBB, 0xC8, 0xF1, 0x2A, 0xD1, 0x0A, 0x9B, + 0xE4, 0x7B, 0xBC, 0x4D, 0x42, 0xD8, 0xA3, 0x4C, + 0x07, 0x6A, 0x60, 0x3E, 0xE2, 0xDA, 0xE7, 0x00, + 0xDF, 0x27, 0x94, 0xEF, 0x90, 0x99, 0x88, 0x2C, + 0xCF, 0xAA, 0xE1, 0x71, 0x2D, 0xFD, 0x00, 0x9C, + 0x55, 0xBF, 0xC4, 0x7A, 0x55, 0xE9, 0xE0, 0xB4, + 0x7F, 0x3D, 0xE9, 0xB0, 0x01, 0xA7, 0x27, 0x23, + 0x27, 0x58, 0x31, 0x0E, 0x8E, 0x80, 0xD8, 0xEB, + 0x64, 0xA0, 0xC3, 0xC9, 0xEA, 0x69, 0x9C, 0x74, + 0x5E, 0xAF, 0xD5, 0xEF, 0x5C, 0x4E, 0x40, 0x71, + 0xD6, 0x57, 0x77, 0xE2, 0xAF, 0x0E, 0x1D, 0xB8, + 0x5A, 0x91, 0x20, 0x4C, 0x33, 0x4D, 0xD8, 0x4F, + 0x98, 0xE0, 0x86, 0x1D, 0x02, 0xA0, 0xDA, 0x06, + 0x17, 0xC4, 0x5D, 0x2E, 0x49, 0x31, 0xE6, 0xE4, + 0xDC, 0x18, 0x23, 0x26, 0xF3, 0x61, 0xF5, 0x8D, + 0x26, 0x2C, 0x18, 0x4C, 0xDF, 0x71, 0x90, 0x24, + 0x96, 0xD3, 0xD4, 0x1A, 0x6F, 0x08, 0xAB, 0x29, + 0x7D, 0xFF, 0x4E, 0x27, 0x6D, 0x39, 0x83, 0x17, + 0x90, 0xA4, 0x07, 0x8A, 0xDE, 0x79, 0x53, 0xF6, + 0x99, 0x2E, 0xA6, 0x39, 0x47, 0xC3, 0xBE, 0x12, + 0xC7, 0xA5, 0x7E, 0xA2, 0x19, 0x57, 0x04, 0x45, + 0xBE, 0x44, 0x62, 0x92, 0xCA, 0x56, 0xE1, 0xF0, + 0x45, 0x3B, 0xA4, 0xF8, 0xF5, 0xCD, 0xC7, 0xD2, + 0xB2, 0x46, 0x57, 0x51, 0x0B, 0x06, 0xDA, 0x54, + 0x03, 0x9E, 0x52, 0xA2, 0x78, 0x69, 0x25, 0x2E, + 0x75, 0x83, 0x25, 0x3F, 0xA3, 0x62, 0x27, 0xB9, + 0xA6, 0x59, 0x7A, 0xB1, 0xB6, 0xE9, 0xC1, 0xDD, + 0x2F, 0x22, 0x2D, 0x3B, 0xA3, 0x22, 0xD6, 0x11, + 0x7B, 0x08, 0x27, 0x92, 0x83, 0x7A, 0x5D, 0x0D, + 0x6B, 0x9D, 0x5B, 0xEB, 0xE9, 0xC0, 0x88, 0xDE, + 0x44, 0x55, 0xBA, 0x69, 0xC1, 0x7A, 0x4D, 0xE6, + 0x35, 0x67, 0x6F, 0x99, 0x9B, 0x07, 0xD8, 0x04, + 0xAA, 0xEA, 0x7D, 0xFF, 0x8E, 0xB8, 0xAA, 0x4C, + 0x79, 0xE2, 0x88, 0xA8, 0x1D, 0xE8, 0xA6, 0x77, + 0xCA, 0x06, 0xC0, 0xDF, 0x0E, 0x2B, 0xCB, 0xFF, + 0x9F, 0x64, 0x67, 0x11, 0xF1, 0xB9, 0x38, 0x83, + 0x19, 0x05, 0x30, 0x9B, 0x01, 0x11, 0x55, 0x03, + 0xAD, 0x44, 0x7D, 0x3C, 0x07, 0xEF, 0x88, 0x19, + 0x92, 0xC0, 0xFE, 0xE1, 0xAB, 0xDB, 0x24, 0x18, + 0x17, 0xD0, 0x03, 0x5C, 0x91, 0xD4, 0xA6, 0x2A, + 0xF1, 0xE9, 0x72, 0x62, 0x58, 0x22, 0x7D, 0x55, + 0x15, 0xE2, 0xA1, 0x70, 0x14, 0x5E, 0x34, 0xB9, + 0x5A, 0xB7, 0x5D, 0x3F, 0xB8, 0xB5, 0x45, 0x44, + 0xD2, 0x50, 0xD1, 0xC6, 0x7E, 0xE7, 0x3D, 0xF4, + 0xD3, 0xEC, 0xFB, 0x97, 0x32, 0x11, 0x72, 0x51, + 0xB7, 0x4A, 0xC8, 0x38, 0x96, 0xFC, 0x6F, 0x69, + 0xC2, 0xD5, 0xD3, 0x28, 0xE9, 0x63, 0x14, 0x14, + 0xFE, 0xB1, 0xA4, 0x02, 0x80, 0x65, 0x73, 0xD3, + 0x57, 0x07, 0x95, 0x21, 0x40, 0x00, 0x77, 0xA7, + 0x6D, 0x44, 0x2B, 0x0D, 0x77, 0x07, 0x92, 0x64, + 0xD4, 0x3A, 0xE2, 0x7F, 0xF2, 0x1C, 0x14, 0x08, + 0x60, 0x74, 0x8F, 0xFC, 0x0B, 0xE8, 0xEC, 0xA9, + 0xB7, 0x97, 0xA7, 0x85, 0x8A, 0xEF, 0xD7, 0x7E, + 0xD5, 0x15, 0xF7, 0x45, 0x8D, 0x9C, 0xBF, 0x23, + 0xEB, 0x8C, 0x4D, 0xD2, 0x28, 0x7E, 0x0A, 0x61, + 0x2E, 0xBA, 0xBE, 0x89, 0x1D, 0x64, 0x45, 0x22, + 0x70, 0x9D, 0x48, 0xEB, 0x2F, 0x96, 0xF1, 0xA7, + 0xDE, 0xD3, 0x28, 0x4C, 0xC9, 0xFB, 0xF2, 0x9C, + 0x5B, 0xFC, 0xBE, 0xBE, 0xF4, 0x38, 0xC9, 0x43, + 0xC3, 0x66, 0x53, 0xA9, 0x06, 0xE5, 0x71, 0x16, + 0xA4, 0xBB, 0x3B, 0x50, 0x53, 0xCF, 0xF4, 0x1F, + 0xD6, 0x00, 0x07, 0x46, 0xFB, 0x97, 0x0B, 0xF9, + 0x3D, 0xF4, 0xC6, 0x60, 0xD0, 0x37, 0x70, 0xC0, + 0x2D, 0xD1, 0x9F, 0xA5, 0x78, 0xF3, 0x1F, 0x03, + 0x81, 0xB1, 0x93, 0xBA, 0xE5, 0x82, 0xE6, 0xD1, + 0x66, 0x93, 0x83, 0x5B, 0xB9, 0xAD, 0xD9, 0x01, + 0xA5, 0xB6, 0x5C, 0x69, 0x82, 0xD7, 0x2F, 0x35, + 0x35, 0x98, 0xEE, 0xE9, 0xA0, 0x74, 0xC1, 0x91, + 0x44, 0x0A, 0x04, 0xCD, 0x97, 0xBE, 0x6B, 0x60, + 0x90, 0x9A, 0x48, 0x7B, 0x83, 0xA2, 0x28, 0x97, + 0xB5, 0xBA, 0xB1, 0x4D, 0x35, 0x8B, 0x34, 0x0A, + 0xA1, 0xCB, 0xA5, 0xC2, 0xA4, 0x6A, 0x36, 0xB3, + 0x12, 0x46, 0x59, 0xDB, 0x63, 0xE5, 0xF9, 0xF1, + 0x7F, 0xAD, 0x42, 0xF4, 0x24, 0xF0, 0x02, 0x3D, + 0x1E, 0x6C, 0xD5, 0xB3, 0x06, 0x8F, 0x1F, 0x59, + 0x79, 0xCC, 0xF9, 0x5B, 0x4F, 0x8B, 0xD6, 0x03, + 0xC7, 0x53, 0xE6, 0xCE, 0xBB, 0xD8, 0x52, 0x89, + 0x70, 0x5D, 0x98, 0x86, 0xA5, 0x9E, 0x44, 0xA9, + 0xC8, 0x17, 0xA2, 0x6F, 0x43, 0x2D, 0x8D, 0xA7, + 0xDE, 0x3E, 0xFA, 0xE7, 0x98, 0x7B, 0xB5, 0xBE, + 0x7B, 0x10, 0xB8, 0xB8, 0xA5, 0x3D, 0x3E, 0xCD, + 0x94, 0x19, 0x5E, 0x06, 0x51, 0xB8, 0x58, 0x1E, + 0x0E, 0xCF, 0xFE, 0xE5, 0xED, 0x84, 0xB5, 0xF5, + 0x0F, 0x34, 0x32, 0xAC, 0x0A, 0x7F, 0x03, 0xF0, + 0xF8, 0xFC, 0x69, 0xA0, 0x26, 0x0D, 0x2E, 0xFA, + 0x62, 0x49, 0x5C, 0xC4, 0xE5, 0xF6, 0x8B, 0xC5, + 0x26, 0x21, 0x23, 0x3B, 0xBD, 0x9A, 0x23, 0x95, + 0x69, 0xA7, 0x48, 0x94, 0x30, 0x1E, 0xC3, 0x82, + 0xB6, 0x75, 0x30, 0xA6, 0xF3, 0x1E, 0xBB, 0xBC, + 0xF7, 0x21, 0x27, 0x12, 0x2C, 0x51, 0x50, 0x55, + 0x87, 0x0D, 0xF1, 0xCC, 0x6C, 0xFF, 0xEA, 0x7E, + 0x2C, 0xDA, 0x8B, 0x9B, 0x20, 0xF4, 0x75, 0xFB, + 0xC2, 0x3F, 0xBE, 0x09, 0xA6, 0xC9, 0x26, 0xE7, + 0xB5, 0xC7, 0xE6, 0xB9, 0x35, 0x8C, 0xAF, 0xFA, + 0xC0, 0x8D, 0x43, 0x33, 0x25, 0xBA, 0xAA, 0xDC, + 0xCF, 0xBC, 0xE4, 0xC4, 0xC6, 0x26, 0x4A, 0x0D, + 0x9D, 0xCC, 0x2A, 0xE0, 0x5B, 0x1E, 0xC9, 0x78, + 0xF8, 0xA2, 0xB5, 0x46, 0xE5, 0x49, 0xB8, 0x4C, + 0xC2, 0x22, 0x40, 0xCE, 0x97, 0x9A, 0x95, 0x40, + 0xF7, 0xD6, 0x52, 0x54, 0x3B, 0xBB, 0x42, 0xC5, + 0x6F, 0x00, 0x7F, 0x83, 0xDD, 0x88, 0x71, 0xF7, + 0xD4, 0x1B, 0x3D, 0x81, 0xC4, 0xB1, 0x49, 0x9B, + 0xF3, 0x68, 0x15, 0xC5, 0x15, 0x97, 0x0F, 0xC5, + 0x43, 0xDD, 0x07, 0xBE, 0x98, 0x43, 0x2C, 0xB3, + 0xEF, 0x08, 0xCA, 0xDC, 0x9C, 0x27, 0x58, 0xFE, + 0x49, 0xE9, 0x77, 0xD9, 0x1C, 0x62, 0xA4, 0xA2, + 0xF9, 0x78, 0xCC, 0xB3, 0x21, 0x06, 0x10, 0xDE, + 0x5A, 0x52, 0xA3, 0x67, 0xBD, 0x5E, 0xBC, 0x9B, + 0x4E, 0x40, 0x87, 0x93, 0xCF, 0x0E, 0x27, 0x0E, + 0xE3, 0x11, 0x4B, 0xB3, 0xE0, 0xCE, 0x24, 0xB6, + 0x0A, 0x53, 0x03, 0xF8, 0x01, 0x6A, 0x7E, 0xFE, + 0xC8, 0x66, 0x9F, 0x29, 0xF3, 0x45, 0x94, 0xD6, + 0x0E, 0x30, 0xB5, 0x61, 0xA9, 0xEC, 0x8F, 0x71, + 0xF7, 0x36, 0xD6, 0x43, 0x4B, 0x0C, 0xCD, 0x45, + 0xBB, 0xA4, 0xBD, 0xE9, 0xA9, 0xC3, 0xC1, 0x95, + 0x1E, 0xF9, 0x42, 0x07, 0x18, 0xEA, 0xF5, 0x0B, + 0x27, 0xB6, 0xDE, 0xEF, 0x67, 0x33, 0x83, 0x0D, + 0xD9, 0x5E, 0x3A, 0x93, 0xD2, 0xD0, 0xDB, 0xB9, + 0x98, 0xF0, 0x25, 0x21, 0xF3, 0xDF, 0x0B, 0x1E + }; +#endif /* !WOLFSSL_NO_ML_DSA_44 */ +#ifndef WOLFSSL_NO_ML_DSA_65 + static const byte seed_65_draft[] = { + 0x41, 0xAF, 0x98, 0x7B, 0x02, 0x6E, 0x47, 0x5F, + 0x37, 0x91, 0x7F, 0x2A, 0x6A, 0x9A, 0x87, 0xE7, + 0x51, 0xAD, 0xF9, 0x5B, 0x92, 0x7F, 0x2D, 0xCE, + 0xF0, 0xD4, 0xF3, 0xDA, 0x8F, 0x8C, 0x86, 0x6B + }; + static const byte pk_65_draft[] = { + 0xDC, 0x38, 0xE5, 0x5F, 0xDF, 0x2E, 0x9D, 0xD4, + 0x34, 0x5C, 0xAE, 0x1A, 0x7D, 0xF4, 0x2E, 0x2E, + 0xBC, 0x58, 0x57, 0x80, 0x55, 0x02, 0xE4, 0x3F, + 0xA5, 0x19, 0x41, 0xE4, 0x44, 0x58, 0x66, 0x41, + 0x39, 0x5D, 0xF9, 0x20, 0x6C, 0x36, 0x0D, 0x4F, + 0x83, 0x43, 0xBE, 0x86, 0xEF, 0x6C, 0x43, 0xD0, + 0x3E, 0xD0, 0x63, 0x0A, 0x5B, 0x92, 0x8D, 0x31, + 0x19, 0x1D, 0xA9, 0x51, 0x61, 0x48, 0xE6, 0x26, + 0x50, 0x07, 0x54, 0x9B, 0xB0, 0xB7, 0x62, 0x54, + 0xDB, 0x80, 0x4E, 0x48, 0x7F, 0x48, 0xC5, 0x11, + 0x91, 0xFC, 0xA9, 0x26, 0x25, 0x08, 0xA5, 0x99, + 0xA0, 0x3C, 0xB9, 0x0C, 0xCF, 0x6C, 0xCD, 0x83, + 0x9A, 0x38, 0x6D, 0x22, 0xDE, 0x0A, 0xC3, 0x8F, + 0xF7, 0xD0, 0x57, 0x40, 0x53, 0xE9, 0xE9, 0x4E, + 0x73, 0xFA, 0x58, 0x40, 0x9F, 0x6D, 0x8A, 0xD3, + 0x6F, 0x86, 0x84, 0x4D, 0x18, 0xD7, 0x4C, 0x76, + 0x39, 0x57, 0x9E, 0xC0, 0xC7, 0xE4, 0xEE, 0x54, + 0xF4, 0xAD, 0x10, 0xC5, 0x69, 0x59, 0xE0, 0xBC, + 0x9B, 0xF4, 0x20, 0x8F, 0xBA, 0x0A, 0x94, 0x10, + 0x55, 0x07, 0x7E, 0xD1, 0xF9, 0x20, 0xCC, 0x2F, + 0xA9, 0xAE, 0x9D, 0xF5, 0xE4, 0x29, 0x40, 0x7E, + 0x44, 0xA4, 0xDF, 0xB2, 0xE9, 0x25, 0xE0, 0xBA, + 0x8D, 0x6C, 0x33, 0x88, 0x9C, 0xEE, 0x27, 0xDB, + 0xC7, 0x0A, 0x6E, 0x5A, 0x08, 0x92, 0x9B, 0x53, + 0xF8, 0xFD, 0xF9, 0x5B, 0xEB, 0x03, 0x8E, 0x45, + 0xCB, 0x91, 0x19, 0x4E, 0x6B, 0x1E, 0xA0, 0xA4, + 0xF0, 0x43, 0xC9, 0x8F, 0xDF, 0x93, 0x5E, 0x86, + 0xB0, 0x09, 0xD3, 0x47, 0x38, 0x7C, 0x8E, 0x78, + 0x85, 0x71, 0x3D, 0x07, 0x2E, 0x2E, 0x12, 0x6F, + 0x06, 0x97, 0x0E, 0x54, 0xAD, 0x71, 0x09, 0xEF, + 0xA5, 0x55, 0x0A, 0x39, 0x86, 0xE6, 0x17, 0x17, + 0x70, 0x9A, 0xA7, 0xA7, 0x1B, 0xCE, 0x78, 0x06, + 0x2C, 0x61, 0x1A, 0xB9, 0x48, 0x22, 0x41, 0x45, + 0x15, 0xEB, 0x10, 0x3C, 0x6E, 0x24, 0x37, 0xA4, + 0xB5, 0xE8, 0x82, 0x4D, 0x6D, 0xCC, 0x44, 0xC6, + 0xB0, 0x5D, 0xBE, 0x46, 0xDA, 0x5F, 0x00, 0x36, + 0x5B, 0xBD, 0x87, 0x65, 0x3A, 0x96, 0x21, 0x58, + 0x45, 0x65, 0xDB, 0xD8, 0x77, 0x76, 0x7B, 0x25, + 0xC3, 0x78, 0x6E, 0xD9, 0x14, 0xA7, 0x19, 0x69, + 0x4F, 0xBB, 0x1B, 0xDB, 0x37, 0xCE, 0xAF, 0x8C, + 0x88, 0x2E, 0x9E, 0x30, 0xF6, 0xAE, 0x43, 0xCC, + 0x59, 0x0F, 0x67, 0x8A, 0xCB, 0x4F, 0x08, 0x20, + 0x6D, 0x99, 0xD7, 0xA9, 0xDE, 0xE5, 0xE5, 0xB3, + 0xFF, 0xAA, 0x45, 0x3C, 0xF1, 0xE3, 0x02, 0x7D, + 0x2F, 0xEE, 0x69, 0x04, 0x81, 0x73, 0x01, 0x37, + 0x51, 0x68, 0xC8, 0x0B, 0x51, 0xFD, 0x05, 0xB4, + 0x05, 0xBB, 0xA1, 0xDB, 0x1D, 0xF6, 0x5F, 0x70, + 0xD3, 0x0A, 0x37, 0x4B, 0x9C, 0xC4, 0x45, 0x30, + 0x11, 0x36, 0xE2, 0x48, 0x9F, 0xC4, 0x2E, 0x4E, + 0x0C, 0x0C, 0xA1, 0x04, 0x41, 0x75, 0x95, 0xAA, + 0xED, 0xAC, 0xD4, 0xB2, 0xE7, 0x85, 0x7E, 0xE1, + 0xA6, 0xFE, 0x2A, 0x09, 0x19, 0x09, 0x3D, 0x7C, + 0x20, 0x1E, 0x98, 0x3D, 0x6E, 0x02, 0xC1, 0xCA, + 0xBB, 0x24, 0x82, 0x9F, 0x45, 0x1D, 0x26, 0x99, + 0xAE, 0x02, 0x82, 0xF9, 0x86, 0x3B, 0x67, 0x8C, + 0xBD, 0xFE, 0xF1, 0xD0, 0xB6, 0xB8, 0xAB, 0x00, + 0x0F, 0xEC, 0x30, 0xDC, 0x27, 0x58, 0xE2, 0x29, + 0x18, 0x05, 0x5A, 0x66, 0xA5, 0x88, 0x39, 0x8E, + 0x49, 0x5B, 0xB9, 0x52, 0x43, 0x84, 0xDC, 0xA9, + 0x50, 0x2B, 0x83, 0x3C, 0x84, 0x81, 0x37, 0x52, + 0x30, 0x79, 0xBD, 0x04, 0xB8, 0xDD, 0x47, 0xC1, + 0x02, 0x2E, 0xEC, 0x24, 0xD0, 0x56, 0x23, 0xE1, + 0x92, 0xD0, 0x65, 0x7F, 0xC7, 0xC2, 0xF7, 0x60, + 0x73, 0xB8, 0xAF, 0x0A, 0xF4, 0xEF, 0xFC, 0x1B, + 0xC2, 0xB9, 0x76, 0x87, 0x8A, 0xA6, 0xC2, 0x3F, + 0xD3, 0x9F, 0x1F, 0x2D, 0x94, 0xBC, 0x89, 0x4E, + 0x31, 0x8D, 0x28, 0xD0, 0x90, 0xB5, 0x5B, 0x60, + 0x30, 0xC6, 0x0B, 0x37, 0x63, 0x5D, 0xDC, 0xC6, + 0xE0, 0x1A, 0xBA, 0x6B, 0x23, 0xCD, 0x2E, 0x09, + 0x2D, 0x6A, 0x7E, 0x0C, 0xD9, 0x4F, 0xB1, 0xE2, + 0x89, 0x67, 0xE7, 0xB1, 0x54, 0x08, 0xB2, 0xFA, + 0x83, 0x43, 0x7C, 0x77, 0x06, 0xED, 0xE2, 0x29, + 0x53, 0xB7, 0x09, 0xC4, 0x1B, 0x81, 0x55, 0x12, + 0x41, 0x8E, 0x8B, 0x03, 0x36, 0xEE, 0x45, 0x70, + 0x57, 0xA8, 0x73, 0xEF, 0x70, 0x7B, 0x1F, 0x63, + 0xB0, 0xE8, 0x00, 0xBD, 0x1E, 0xE6, 0xA9, 0x93, + 0x9D, 0x03, 0x19, 0x22, 0xDF, 0xE1, 0x01, 0xF2, + 0xA9, 0x6B, 0x90, 0x5C, 0xD2, 0xC1, 0xAC, 0x9F, + 0xB2, 0x21, 0x1C, 0x2D, 0xC6, 0x80, 0x9A, 0xB5, + 0x1E, 0x46, 0x95, 0x6C, 0xCE, 0x47, 0x3E, 0x67, + 0xCD, 0xD6, 0xC9, 0xB9, 0x81, 0x74, 0x7F, 0x17, + 0xA3, 0xF7, 0x48, 0x99, 0xF3, 0x36, 0x84, 0xF3, + 0x16, 0x41, 0x55, 0x5F, 0xA7, 0xBF, 0x4B, 0x69, + 0x8D, 0xA3, 0x3D, 0x1E, 0xEA, 0xF5, 0x1E, 0xC6, + 0xB8, 0x1C, 0xD6, 0x89, 0x45, 0x68, 0xFA, 0xE7, + 0xCA, 0x86, 0xE4, 0xB1, 0xC9, 0x9C, 0xB2, 0xAB, + 0x89, 0x03, 0xE7, 0x19, 0x7B, 0xA9, 0xF2, 0x6B, + 0x4A, 0x43, 0x1D, 0x90, 0xAF, 0xA4, 0xE3, 0xBC, + 0xEF, 0xD4, 0x37, 0xC5, 0x55, 0x5C, 0x9E, 0x14, + 0xC6, 0x18, 0xDD, 0x45, 0x3F, 0x80, 0x49, 0x1C, + 0x93, 0xFF, 0xBD, 0xDD, 0x75, 0x54, 0x0B, 0xD1, + 0xA9, 0xF6, 0xBC, 0x89, 0x98, 0x7D, 0x6F, 0x03, + 0x7B, 0x06, 0xD5, 0x40, 0x7D, 0x85, 0x48, 0x2E, + 0x11, 0x3E, 0xF0, 0x47, 0x77, 0xD0, 0xBA, 0x03, + 0x33, 0x58, 0xC4, 0x8F, 0x76, 0xF8, 0x72, 0x47, + 0x04, 0x21, 0x5E, 0x85, 0x5A, 0x0F, 0x35, 0x77, + 0xFB, 0x96, 0x29, 0x81, 0x2D, 0x55, 0x6E, 0x53, + 0xC6, 0x13, 0x1E, 0xFA, 0x4D, 0xCE, 0xA9, 0x36, + 0x1D, 0x8F, 0xAB, 0xAC, 0x13, 0x19, 0x94, 0xFC, + 0x4B, 0xCD, 0x36, 0x4C, 0x6E, 0x21, 0xAE, 0xF1, + 0x13, 0xA4, 0xF7, 0x64, 0x8E, 0xE1, 0xAF, 0x50, + 0x6A, 0x63, 0x0E, 0xCA, 0x2F, 0xE9, 0x0C, 0x8A, + 0xE7, 0xF2, 0xE3, 0x68, 0x03, 0xE0, 0x40, 0x1C, + 0x64, 0xAB, 0xC3, 0xEC, 0xC0, 0x92, 0xE9, 0x57, + 0x3E, 0x66, 0x72, 0x36, 0x39, 0x22, 0x4E, 0xCD, + 0x13, 0x08, 0xBA, 0xF8, 0x2B, 0xA1, 0xF2, 0x69, + 0x44, 0x7E, 0x90, 0x5C, 0xC8, 0xEC, 0xB6, 0xBE, + 0x8C, 0x30, 0xE0, 0x69, 0xB7, 0x97, 0xA1, 0x1C, + 0x18, 0xE5, 0x54, 0x62, 0xC3, 0x29, 0x99, 0x21, + 0x16, 0xD9, 0x78, 0x1C, 0x4C, 0x9C, 0x88, 0x4C, + 0xA5, 0xE1, 0x11, 0x66, 0x5B, 0x6E, 0x71, 0xE7, + 0xE2, 0xE7, 0xE4, 0x02, 0xDD, 0x1A, 0x8D, 0x0C, + 0xF5, 0x32, 0xFD, 0x41, 0x28, 0x35, 0x75, 0xD0, + 0x0C, 0x5F, 0x06, 0x6A, 0x5A, 0x61, 0x49, 0x59, + 0xC1, 0x0C, 0xD4, 0x9E, 0xD6, 0x29, 0xE2, 0x37, + 0xDF, 0x2B, 0x3D, 0xE8, 0x98, 0xB9, 0xDF, 0x8E, + 0xA0, 0xC4, 0xE2, 0xFC, 0x45, 0x70, 0xE8, 0x1B, + 0xF4, 0xFA, 0xC5, 0xE6, 0xA7, 0xCF, 0x4F, 0xA2, + 0xDA, 0x3D, 0x90, 0x49, 0x24, 0x8F, 0x61, 0x54, + 0xD5, 0x50, 0x8E, 0xE8, 0x0C, 0x14, 0xAD, 0x6F, + 0x65, 0x88, 0x3A, 0xF6, 0x92, 0xDB, 0x35, 0x5D, + 0xFF, 0x21, 0x20, 0xAC, 0x01, 0x16, 0x0B, 0xEC, + 0x84, 0x15, 0x3B, 0xA9, 0x93, 0x92, 0x75, 0xB3, + 0x73, 0xF1, 0x23, 0x69, 0x94, 0x10, 0xF5, 0xFE, + 0x20, 0xA8, 0xAF, 0x05, 0x87, 0x49, 0x4E, 0x9C, + 0xEB, 0x21, 0x0A, 0xCF, 0x0B, 0xA1, 0x65, 0x38, + 0xA6, 0x18, 0x4D, 0xF7, 0xD8, 0xC1, 0x2C, 0x14, + 0x4C, 0xD9, 0x40, 0xC2, 0xF7, 0xBF, 0xE3, 0x07, + 0x79, 0x55, 0xAE, 0xB9, 0xB6, 0x50, 0x06, 0x92, + 0x94, 0x8C, 0x6A, 0x0E, 0x22, 0x14, 0xE2, 0xCC, + 0x65, 0xBA, 0x0C, 0x4D, 0xB6, 0x5C, 0x4A, 0xE9, + 0x0A, 0x08, 0x0C, 0xF9, 0x26, 0xA2, 0x51, 0x85, + 0x36, 0xE2, 0xC1, 0xF1, 0x0A, 0x66, 0x51, 0x66, + 0x7A, 0x98, 0x9B, 0x2C, 0x30, 0x1A, 0x0D, 0x49, + 0x3C, 0x1E, 0xEC, 0x63, 0x53, 0x5E, 0xD9, 0xDD, + 0x84, 0x69, 0xCD, 0x7E, 0x79, 0x58, 0x3D, 0x6E, + 0xD9, 0x98, 0x58, 0xD8, 0x0A, 0x48, 0xB5, 0x13, + 0x3F, 0x72, 0x4C, 0x11, 0x90, 0x15, 0x12, 0x74, + 0xFF, 0x5C, 0x0D, 0xC6, 0x20, 0x8C, 0xC1, 0x99, + 0xCA, 0x8E, 0xFC, 0xA2, 0xE8, 0xB8, 0xEE, 0xAA, + 0x27, 0xC2, 0x97, 0x8D, 0xFA, 0xBE, 0xE0, 0x43, + 0x99, 0xB6, 0x90, 0x60, 0x00, 0x7C, 0x33, 0xD4, + 0x87, 0x71, 0x7B, 0x56, 0x6C, 0xAA, 0xE0, 0xAC, + 0x9D, 0x7E, 0x7E, 0xA3, 0xCF, 0xBB, 0xB3, 0xA0, + 0x5F, 0xD4, 0xC4, 0x3A, 0xA7, 0xB9, 0x0C, 0xCE, + 0xF3, 0x05, 0x09, 0x91, 0xA7, 0xE9, 0x11, 0x55, + 0x32, 0x45, 0xA6, 0x08, 0x0E, 0x10, 0x37, 0x91, + 0xF3, 0xBF, 0xED, 0x64, 0x26, 0xEB, 0x39, 0xC2, + 0x57, 0xAE, 0x64, 0x79, 0x33, 0x7C, 0x51, 0xB2, + 0xC8, 0x85, 0xE0, 0xF9, 0x6D, 0x10, 0x52, 0x9F, + 0x72, 0xF4, 0xD1, 0x5B, 0x54, 0x5B, 0x93, 0x28, + 0x36, 0xA8, 0xCD, 0xB3, 0x30, 0x5B, 0x7A, 0xB0, + 0xB6, 0xF0, 0xD8, 0xA0, 0xBA, 0x24, 0x59, 0x5F, + 0x43, 0x02, 0x01, 0x57, 0x91, 0x7B, 0x94, 0x07, + 0x63, 0x23, 0x12, 0x94, 0xFB, 0x9F, 0xF2, 0xC1, + 0xD6, 0x80, 0x8F, 0x4E, 0xA7, 0x9E, 0x11, 0xD8, + 0xB3, 0x08, 0xB6, 0x3B, 0x3B, 0xF2, 0xEE, 0x14, + 0xA5, 0xDB, 0xB0, 0xBB, 0x17, 0xA5, 0x96, 0x3C, + 0x2F, 0xB9, 0xE7, 0x4A, 0xD7, 0x52, 0x34, 0x98, + 0xCB, 0x0C, 0xEB, 0x42, 0x5B, 0x2D, 0x2D, 0x2B, + 0x0D, 0x94, 0x66, 0xD3, 0xAD, 0x08, 0x0A, 0x28, + 0xF6, 0x0E, 0xDA, 0xD4, 0x54, 0xFD, 0xC6, 0x48, + 0x08, 0xA1, 0x8D, 0xB0, 0x30, 0xFD, 0x18, 0xB1, + 0x50, 0xB1, 0xFD, 0xE0, 0x6E, 0x33, 0x25, 0x0D, + 0x90, 0xB1, 0xC1, 0xE7, 0x88, 0x74, 0x87, 0x05, + 0xE7, 0xBE, 0xBD, 0xAA, 0x8C, 0x6D, 0xC2, 0x3D, + 0x6F, 0x95, 0x84, 0xFA, 0x03, 0x74, 0x85, 0xE1, + 0xED, 0xE5, 0xF4, 0xE8, 0x26, 0x4A, 0x0B, 0x20, + 0x87, 0xB6, 0xE1, 0x10, 0x75, 0x6D, 0x9F, 0x95, + 0x39, 0x4C, 0x0F, 0x50, 0x1B, 0xA8, 0x69, 0x82, + 0xBB, 0xE2, 0xD6, 0x11, 0xD7, 0xBE, 0xFB, 0x4F, + 0x60, 0xD3, 0x16, 0xC6, 0x04, 0x3A, 0x5A, 0xF5, + 0x78, 0x9B, 0x0B, 0x21, 0xA1, 0x00, 0x96, 0xCD, + 0x63, 0x78, 0x1D, 0x2D, 0x4F, 0x6E, 0x50, 0xEE, + 0x62, 0x2D, 0x88, 0x62, 0x01, 0xF6, 0xB4, 0x17, + 0x4F, 0x8C, 0xAD, 0xCB, 0x4B, 0xF9, 0xF6, 0x9D, + 0xC7, 0xD8, 0xCC, 0xBF, 0x96, 0x1B, 0x1B, 0x79, + 0xF3, 0x25, 0x85, 0x23, 0x10, 0x63, 0x30, 0x8D, + 0xA8, 0x3A, 0x4B, 0x92, 0x1B, 0x88, 0x53, 0x24, + 0x2D, 0x29, 0xA5, 0x2E, 0x7A, 0xD5, 0x58, 0xEB, + 0x1B, 0x1C, 0xE6, 0xB8, 0x94, 0x0C, 0x58, 0x96, + 0x5B, 0xA0, 0x2C, 0xBF, 0xE2, 0x99, 0xA0, 0x1F, + 0x0C, 0xCC, 0xBD, 0x83, 0x72, 0x56, 0xBB, 0x13, + 0x61, 0x5A, 0xC2, 0x04, 0x27, 0x29, 0x1F, 0xD4, + 0xE4, 0x3D, 0x8A, 0x87, 0xE3, 0x81, 0x91, 0x07, + 0xD3, 0x9B, 0xBC, 0xA9, 0xB3, 0xBA, 0xF5, 0x8B, + 0x6A, 0xAD, 0xDE, 0xB0, 0x54, 0x3E, 0xFE, 0xCC, + 0xD3, 0xCB, 0x2C, 0x69, 0xF0, 0x58, 0xD7, 0xEF, + 0xA9, 0xC0, 0x15, 0x9B, 0x5A, 0xDF, 0x71, 0x25, + 0x38, 0x44, 0xEC, 0xA9, 0x18, 0x47, 0x41, 0xCE, + 0x3D, 0x53, 0x10, 0x12, 0xC3, 0x1B, 0x59, 0x9A, + 0x93, 0xA1, 0xEA, 0xBE, 0x3E, 0xBA, 0x74, 0xF6, + 0x2D, 0x40, 0x9D, 0xCB, 0x9E, 0xA1, 0xA5, 0x85, + 0xFF, 0xDC, 0xC5, 0x60, 0x6F, 0x61, 0xE8, 0x17, + 0x6C, 0x36, 0x9F, 0x7A, 0x48, 0x47, 0xDD, 0xF1, + 0xF4, 0x43, 0x21, 0xCB, 0xB3, 0x55, 0x86, 0xD0, + 0xE9, 0x46, 0x7D, 0xB5, 0x3D, 0x90, 0x34, 0x1E, + 0xBB, 0x40, 0xD3, 0x2A, 0xEB, 0xE6, 0x4C, 0x46, + 0x42, 0xA2, 0x8A, 0xBF, 0x90, 0xE7, 0x4B, 0x6D, + 0x5C, 0x94, 0x97, 0xD2, 0xF0, 0x97, 0x74, 0x4C, + 0x76, 0x03, 0xAC, 0x3D, 0xDE, 0x15, 0x96, 0x0C, + 0xEF, 0x18, 0x9D, 0xBD, 0x1A, 0x20, 0x35, 0x7E, + 0x2A, 0x70, 0x9D, 0xEA, 0x2E, 0x11, 0xDF, 0xF3, + 0x2F, 0xFE, 0x23, 0xA9, 0xB6, 0xCF, 0xB7, 0xB9, + 0x3F, 0x4F, 0x30, 0x6B, 0x3B, 0x0D, 0x3B, 0xED, + 0xCD, 0x77, 0xD4, 0xBF, 0xEE, 0xDD, 0xB6, 0x56, + 0x24, 0xD4, 0x29, 0x83, 0xDE, 0xDB, 0xC1, 0xFB, + 0x6A, 0xCE, 0x7F, 0x47, 0xD2, 0xC5, 0xF1, 0x78, + 0x5C, 0x2C, 0x5A, 0x28, 0x3E, 0x05, 0x50, 0x2E, + 0xD9, 0xAE, 0x9B, 0x95, 0x64, 0xC7, 0xD2, 0x7B, + 0xCB, 0xC5, 0x91, 0x80, 0xEB, 0x79, 0xC7, 0xCC, + 0xA8, 0x06, 0xC8, 0xF9, 0xDF, 0x2A, 0x49, 0x4A, + 0xF8, 0xFE, 0xBA, 0xA5, 0x85, 0x67, 0x1B, 0xDA, + 0x51, 0x3B, 0xC2, 0x04, 0xA6, 0xA3, 0xFF, 0x99, + 0x21, 0xE8, 0x17, 0x91, 0x33, 0x9B, 0x83, 0x75, + 0x20, 0x5E, 0x95, 0xBE, 0x49, 0xDF, 0x53, 0xFC, + 0x05, 0xA2, 0x3C, 0xAA, 0x5A, 0x22, 0x15, 0xA5, + 0x56, 0xE0, 0x51, 0x30, 0x4E, 0x32, 0x14, 0xF2, + 0x9F, 0x03, 0x51, 0x8E, 0xDD, 0x8B, 0x39, 0x19, + 0x1E, 0x39, 0xC5, 0xA7, 0x1C, 0xC6, 0xA4, 0xE1, + 0x77, 0xCA, 0x8C, 0x9D, 0x27, 0xBC, 0xCC, 0x16, + 0xD6, 0xFC, 0x59, 0x10, 0x23, 0xFF, 0x64, 0x90, + 0x9C, 0x23, 0x5A, 0xFF, 0x7E, 0x27, 0x1B, 0xC7, + 0x7F, 0x21, 0x3B, 0x41, 0xDB, 0xBC, 0x96, 0x60, + 0x0B, 0x35, 0xA1, 0xF3, 0xF8, 0x51, 0x0A, 0x65, + 0xCF, 0xDF, 0x7A, 0xB8, 0x04, 0x56, 0x49, 0xD7, + 0xD3, 0xC5, 0x0B, 0x4A, 0x1F, 0x60, 0xE1, 0x86, + 0x36, 0x53, 0x8E, 0x6C, 0x3E, 0xAF, 0x5B, 0xC1, + 0xCA, 0xCB, 0x22, 0x1A, 0x07, 0xDA, 0x54, 0xEC, + 0xAA, 0x06, 0x72, 0x17, 0xCF, 0x80, 0xC4, 0x89, + 0x56, 0x24, 0x1B, 0xD4, 0xFF, 0x50, 0x6B, 0x51, + 0x55, 0x4D, 0x6E, 0x79, 0x7E, 0xEC, 0x61, 0xC6, + 0xE4, 0x21, 0xC8, 0x0E, 0x10, 0x3F, 0x8C, 0x85, + 0x3A, 0x27, 0xEA, 0x91, 0x07, 0xCB, 0x37, 0x18, + 0x14, 0xB5, 0x63, 0x6E, 0x00, 0xBC, 0x0F, 0x36, + 0xF9, 0x54, 0x75, 0xE7, 0x0B, 0xDC, 0xE7, 0xA0, + 0x59, 0xF0, 0x64, 0xFB, 0x73, 0x07, 0x0E, 0xFE, + 0x57, 0x7F, 0x0D, 0x12, 0xBC, 0xB0, 0xBF, 0xA2, + 0x3A, 0x18, 0x08, 0x7E, 0xD5, 0x6C, 0xF0, 0x6F, + 0xF8, 0x98, 0xFB, 0xA5, 0x10, 0x7B, 0x10, 0x5F, + 0x6B, 0xC8, 0x6D, 0xDE, 0x2F, 0x1F, 0xE0, 0xC8, + 0x19, 0xEE, 0xC2, 0x03, 0x39, 0x49, 0x70, 0x3E, + 0x36, 0xE3, 0x3C, 0x70, 0xE3, 0xEA, 0xAC, 0x34, + 0x32, 0xB7, 0x0D, 0xBA, 0x7C, 0xAB, 0xE6, 0x18 + }; + static const byte sk_65_draft[] = { + 0xDC, 0x38, 0xE5, 0x5F, 0xDF, 0x2E, 0x9D, 0xD4, + 0x34, 0x5C, 0xAE, 0x1A, 0x7D, 0xF4, 0x2E, 0x2E, + 0xBC, 0x58, 0x57, 0x80, 0x55, 0x02, 0xE4, 0x3F, + 0xA5, 0x19, 0x41, 0xE4, 0x44, 0x58, 0x66, 0x41, + 0x52, 0x8D, 0xA0, 0xC7, 0xD2, 0x80, 0xDD, 0x49, + 0x0D, 0x5E, 0xB7, 0x65, 0xDB, 0x32, 0x33, 0x15, + 0x0F, 0x9E, 0xC8, 0xEB, 0xC9, 0x6E, 0xE8, 0xE8, + 0x5C, 0xBD, 0x18, 0x4F, 0xDC, 0xF8, 0xA8, 0xD9, + 0xC5, 0x33, 0x84, 0x79, 0x5A, 0x5E, 0xB7, 0x3C, + 0x6D, 0x82, 0xCA, 0xB9, 0xBA, 0x94, 0xB6, 0x46, + 0xAE, 0x3A, 0xD9, 0x19, 0x6C, 0xB4, 0xDA, 0xE2, + 0xF1, 0x4B, 0xB6, 0x43, 0xF0, 0x24, 0x08, 0xE5, + 0xF7, 0x9A, 0x41, 0xF1, 0x15, 0x9C, 0xA8, 0x08, + 0x79, 0x9F, 0xB8, 0x26, 0xD4, 0x08, 0x32, 0x47, + 0xC8, 0xF0, 0xD5, 0x31, 0xA1, 0xC1, 0x19, 0x04, + 0x02, 0x06, 0x2B, 0x4D, 0x46, 0xAE, 0x43, 0x6A, + 0x25, 0x82, 0x75, 0x41, 0x70, 0x36, 0x42, 0x48, + 0x78, 0x06, 0x36, 0x50, 0x23, 0x84, 0x68, 0x10, + 0x87, 0x08, 0x62, 0x00, 0x08, 0x34, 0x20, 0x73, + 0x32, 0x13, 0x36, 0x61, 0x87, 0x61, 0x43, 0x50, + 0x30, 0x02, 0x26, 0x07, 0x65, 0x45, 0x32, 0x00, + 0x25, 0x75, 0x01, 0x04, 0x88, 0x81, 0x58, 0x64, + 0x52, 0x40, 0x84, 0x22, 0x88, 0x42, 0x82, 0x56, + 0x47, 0x50, 0x05, 0x21, 0x88, 0x25, 0x32, 0x25, + 0x12, 0x85, 0x14, 0x52, 0x87, 0x77, 0x67, 0x18, + 0x46, 0x54, 0x63, 0x07, 0x88, 0x67, 0x37, 0x26, + 0x72, 0x62, 0x41, 0x02, 0x00, 0x01, 0x17, 0x84, + 0x33, 0x64, 0x32, 0x57, 0x06, 0x20, 0x05, 0x44, + 0x88, 0x57, 0x33, 0x45, 0x70, 0x55, 0x14, 0x43, + 0x12, 0x54, 0x04, 0x38, 0x37, 0x08, 0x42, 0x57, + 0x36, 0x05, 0x30, 0x03, 0x86, 0x53, 0x02, 0x53, + 0x75, 0x22, 0x62, 0x13, 0x38, 0x82, 0x48, 0x30, + 0x83, 0x83, 0x64, 0x83, 0x13, 0x74, 0x57, 0x32, + 0x46, 0x70, 0x06, 0x05, 0x82, 0x52, 0x73, 0x55, + 0x25, 0x77, 0x21, 0x78, 0x57, 0x83, 0x66, 0x20, + 0x38, 0x53, 0x21, 0x41, 0x77, 0x56, 0x77, 0x46, + 0x34, 0x42, 0x58, 0x31, 0x08, 0x06, 0x03, 0x62, + 0x20, 0x35, 0x11, 0x42, 0x35, 0x38, 0x63, 0x86, + 0x64, 0x13, 0x13, 0x75, 0x40, 0x01, 0x53, 0x74, + 0x41, 0x31, 0x56, 0x64, 0x38, 0x17, 0x14, 0x16, + 0x62, 0x33, 0x22, 0x12, 0x64, 0x40, 0x67, 0x11, + 0x62, 0x42, 0x25, 0x60, 0x38, 0x05, 0x83, 0x13, + 0x51, 0x00, 0x28, 0x36, 0x62, 0x56, 0x41, 0x43, + 0x58, 0x37, 0x51, 0x22, 0x70, 0x25, 0x82, 0x82, + 0x35, 0x24, 0x06, 0x83, 0x48, 0x58, 0x81, 0x78, + 0x07, 0x86, 0x23, 0x15, 0x75, 0x32, 0x46, 0x75, + 0x35, 0x40, 0x08, 0x43, 0x10, 0x66, 0x74, 0x05, + 0x13, 0x72, 0x74, 0x08, 0x83, 0x41, 0x81, 0x08, + 0x75, 0x87, 0x83, 0x28, 0x56, 0x66, 0x20, 0x01, + 0x18, 0x83, 0x57, 0x22, 0x14, 0x64, 0x18, 0x05, + 0x27, 0x75, 0x22, 0x84, 0x12, 0x38, 0x87, 0x52, + 0x32, 0x25, 0x28, 0x08, 0x14, 0x41, 0x81, 0x14, + 0x03, 0x24, 0x54, 0x23, 0x04, 0x81, 0x40, 0x36, + 0x38, 0x38, 0x64, 0x42, 0x46, 0x36, 0x68, 0x11, + 0x55, 0x00, 0x11, 0x25, 0x76, 0x16, 0x43, 0x07, + 0x23, 0x03, 0x34, 0x10, 0x46, 0x41, 0x14, 0x02, + 0x26, 0x10, 0x74, 0x38, 0x38, 0x72, 0x07, 0x87, + 0x54, 0x11, 0x12, 0x83, 0x75, 0x05, 0x82, 0x17, + 0x45, 0x20, 0x38, 0x41, 0x37, 0x20, 0x00, 0x08, + 0x32, 0x18, 0x16, 0x25, 0x58, 0x85, 0x16, 0x88, + 0x71, 0x82, 0x45, 0x60, 0x33, 0x11, 0x13, 0x42, + 0x43, 0x37, 0x68, 0x11, 0x16, 0x54, 0x04, 0x08, + 0x52, 0x78, 0x13, 0x56, 0x83, 0x52, 0x15, 0x24, + 0x03, 0x61, 0x78, 0x44, 0x13, 0x70, 0x67, 0x36, + 0x74, 0x86, 0x52, 0x50, 0x15, 0x41, 0x88, 0x74, + 0x53, 0x00, 0x05, 0x18, 0x65, 0x62, 0x14, 0x84, + 0x12, 0x32, 0x01, 0x88, 0x40, 0x42, 0x34, 0x05, + 0x32, 0x80, 0x72, 0x55, 0x20, 0x68, 0x16, 0x43, + 0x14, 0x15, 0x15, 0x38, 0x43, 0x85, 0x27, 0x60, + 0x70, 0x18, 0x27, 0x35, 0x53, 0x01, 0x28, 0x73, + 0x27, 0x84, 0x10, 0x53, 0x67, 0x10, 0x45, 0x40, + 0x81, 0x52, 0x86, 0x06, 0x11, 0x18, 0x04, 0x31, + 0x57, 0x25, 0x22, 0x44, 0x47, 0x81, 0x45, 0x44, + 0x55, 0x04, 0x72, 0x57, 0x06, 0x46, 0x76, 0x23, + 0x38, 0x85, 0x65, 0x30, 0x08, 0x48, 0x20, 0x13, + 0x22, 0x77, 0x44, 0x60, 0x43, 0x14, 0x15, 0x27, + 0x86, 0x22, 0x37, 0x37, 0x27, 0x04, 0x27, 0x50, + 0x74, 0x31, 0x10, 0x82, 0x00, 0x75, 0x80, 0x44, + 0x38, 0x10, 0x58, 0x40, 0x86, 0x60, 0x63, 0x13, + 0x65, 0x18, 0x33, 0x70, 0x57, 0x68, 0x05, 0x10, + 0x81, 0x03, 0x42, 0x05, 0x25, 0x65, 0x33, 0x57, + 0x38, 0x05, 0x65, 0x34, 0x46, 0x53, 0x68, 0x11, + 0x75, 0x10, 0x04, 0x54, 0x18, 0x47, 0x52, 0x24, + 0x63, 0x23, 0x74, 0x45, 0x11, 0x34, 0x68, 0x32, + 0x35, 0x38, 0x52, 0x85, 0x28, 0x08, 0x71, 0x78, + 0x37, 0x38, 0x27, 0x10, 0x80, 0x54, 0x26, 0x33, + 0x31, 0x82, 0x44, 0x88, 0x33, 0x24, 0x62, 0x86, + 0x32, 0x82, 0x73, 0x31, 0x28, 0x14, 0x73, 0x87, + 0x06, 0x35, 0x80, 0x36, 0x67, 0x02, 0x33, 0x75, + 0x27, 0x36, 0x38, 0x16, 0x35, 0x70, 0x52, 0x16, + 0x87, 0x58, 0x85, 0x17, 0x22, 0x13, 0x54, 0x85, + 0x07, 0x53, 0x31, 0x26, 0x78, 0x01, 0x85, 0x18, + 0x08, 0x68, 0x38, 0x52, 0x11, 0x73, 0x32, 0x25, + 0x58, 0x82, 0x70, 0x70, 0x36, 0x30, 0x50, 0x38, + 0x65, 0x12, 0x78, 0x31, 0x77, 0x72, 0x18, 0x41, + 0x05, 0x42, 0x32, 0x26, 0x26, 0x50, 0x52, 0x86, + 0x15, 0x76, 0x28, 0x66, 0x88, 0x03, 0x78, 0x28, + 0x70, 0x33, 0x36, 0x27, 0x16, 0x61, 0x43, 0x56, + 0x62, 0x81, 0x85, 0x75, 0x47, 0x60, 0x63, 0x38, + 0x66, 0x81, 0x51, 0x78, 0x03, 0x42, 0x60, 0x38, + 0x01, 0x24, 0x73, 0x63, 0x81, 0x12, 0x01, 0x27, + 0x63, 0x13, 0x11, 0x78, 0x36, 0x37, 0x15, 0x03, + 0x84, 0x58, 0x17, 0x25, 0x67, 0x87, 0x57, 0x83, + 0x71, 0x85, 0x37, 0x53, 0x86, 0x22, 0x33, 0x28, + 0x77, 0x30, 0x18, 0x15, 0x01, 0x37, 0x85, 0x40, + 0x15, 0x38, 0x51, 0x33, 0x17, 0x42, 0x64, 0x04, + 0x56, 0x27, 0x50, 0x45, 0x11, 0x27, 0x20, 0x17, + 0x76, 0x55, 0x33, 0x37, 0x58, 0x88, 0x88, 0x45, + 0x16, 0x55, 0x08, 0x53, 0x52, 0x48, 0x72, 0x85, + 0x30, 0x15, 0x23, 0x44, 0x22, 0x02, 0x43, 0x45, + 0x41, 0x10, 0x00, 0x52, 0x32, 0x73, 0x05, 0x75, + 0x72, 0x16, 0x08, 0x11, 0x51, 0x36, 0x20, 0x04, + 0x76, 0x48, 0x78, 0x56, 0x60, 0x88, 0x07, 0x47, + 0x70, 0x20, 0x46, 0x40, 0x43, 0x26, 0x04, 0x37, + 0x17, 0x51, 0x58, 0x46, 0x72, 0x44, 0x50, 0x23, + 0x67, 0x63, 0x60, 0x84, 0x30, 0x51, 0x52, 0x53, + 0x21, 0x74, 0x85, 0x45, 0x74, 0x43, 0x11, 0x72, + 0x52, 0x65, 0x76, 0x08, 0x78, 0x63, 0x14, 0x27, + 0x41, 0x34, 0x67, 0x07, 0x45, 0x15, 0x10, 0x83, + 0x24, 0x02, 0x80, 0x53, 0x07, 0x21, 0x58, 0x10, + 0x34, 0x20, 0x54, 0x12, 0x58, 0x44, 0x25, 0x53, + 0x33, 0x46, 0x02, 0x38, 0x60, 0x17, 0x70, 0x64, + 0x18, 0x52, 0x62, 0x26, 0x65, 0x61, 0x42, 0x31, + 0x22, 0x57, 0x34, 0x57, 0x02, 0x34, 0x62, 0x76, + 0x74, 0x38, 0x73, 0x21, 0x68, 0x71, 0x07, 0x21, + 0x61, 0x05, 0x20, 0x20, 0x86, 0x83, 0x30, 0x25, + 0x50, 0x50, 0x83, 0x30, 0x31, 0x56, 0x30, 0x31, + 0x76, 0x04, 0x54, 0x80, 0x75, 0x18, 0x82, 0x23, + 0x61, 0x87, 0x58, 0x25, 0x13, 0x63, 0x21, 0x51, + 0x48, 0x02, 0x67, 0x37, 0x12, 0x88, 0x70, 0x60, + 0x07, 0x36, 0x18, 0x15, 0x87, 0x74, 0x55, 0x60, + 0x00, 0x54, 0x37, 0x11, 0x01, 0x37, 0x14, 0x17, + 0x11, 0x72, 0x14, 0x55, 0x31, 0x75, 0x77, 0x48, + 0x10, 0x23, 0x83, 0x20, 0x00, 0x04, 0x32, 0x64, + 0x66, 0x61, 0x71, 0x31, 0x03, 0x15, 0x44, 0x32, + 0x57, 0x25, 0x64, 0x31, 0x28, 0x15, 0x33, 0x67, + 0x86, 0x87, 0x37, 0x03, 0x12, 0x78, 0x86, 0x13, + 0x47, 0x80, 0x61, 0x42, 0x50, 0x40, 0x23, 0x37, + 0x01, 0x01, 0x66, 0x24, 0x06, 0x57, 0x82, 0x02, + 0x22, 0x42, 0x41, 0x02, 0x26, 0x06, 0x41, 0x35, + 0x64, 0x16, 0x44, 0x42, 0x38, 0x30, 0x86, 0x88, + 0x47, 0x71, 0x62, 0x33, 0x24, 0x02, 0x12, 0x37, + 0x42, 0x33, 0x20, 0x81, 0x80, 0x53, 0x07, 0x65, + 0x71, 0x27, 0x13, 0x53, 0x15, 0x43, 0x76, 0x38, + 0x71, 0x30, 0x07, 0x87, 0x25, 0x63, 0x03, 0x33, + 0x70, 0x56, 0x18, 0x13, 0x83, 0x51, 0x44, 0x40, + 0x04, 0x80, 0x62, 0x24, 0x20, 0x64, 0x54, 0x40, + 0x20, 0x73, 0x61, 0x45, 0x01, 0x24, 0x47, 0x78, + 0x23, 0x34, 0x56, 0x10, 0x25, 0x32, 0x02, 0x70, + 0x08, 0x02, 0x23, 0x24, 0x80, 0x43, 0x04, 0x02, + 0x81, 0x11, 0x23, 0x82, 0x03, 0x61, 0x30, 0x33, + 0x15, 0x36, 0x25, 0x32, 0x14, 0x73, 0x22, 0x46, + 0x81, 0x25, 0x16, 0x13, 0x52, 0x58, 0x71, 0x61, + 0x67, 0x08, 0x38, 0x76, 0x71, 0x15, 0x88, 0x47, + 0x31, 0x25, 0x27, 0x18, 0x31, 0x50, 0x40, 0x71, + 0x06, 0x87, 0x37, 0x30, 0x85, 0x64, 0x62, 0x78, + 0x32, 0x74, 0x18, 0x83, 0x67, 0x40, 0x37, 0x44, + 0x56, 0x02, 0x72, 0x61, 0x27, 0x28, 0x38, 0x38, + 0x67, 0x17, 0x58, 0x04, 0x61, 0x28, 0x67, 0x37, + 0x46, 0x50, 0x38, 0x15, 0x45, 0x12, 0x71, 0x44, + 0x22, 0x02, 0x34, 0x83, 0x40, 0x70, 0x55, 0x75, + 0x54, 0x26, 0x88, 0x07, 0x25, 0x58, 0x73, 0x60, + 0x58, 0x61, 0x45, 0x63, 0x35, 0x05, 0x48, 0x63, + 0x48, 0x57, 0x03, 0x31, 0x28, 0x14, 0x05, 0x01, + 0x57, 0x34, 0x64, 0x50, 0x23, 0x86, 0x75, 0x85, + 0x18, 0x75, 0x56, 0x88, 0x08, 0x26, 0x01, 0x34, + 0x01, 0x57, 0x05, 0x28, 0x35, 0x48, 0x17, 0x57, + 0x71, 0x81, 0x41, 0x33, 0x77, 0x86, 0x07, 0x77, + 0x02, 0x25, 0x71, 0x74, 0x37, 0x31, 0x20, 0x14, + 0x32, 0x54, 0x20, 0x35, 0x54, 0x76, 0x83, 0x15, + 0x80, 0x73, 0x27, 0x23, 0x00, 0x58, 0x22, 0x84, + 0x64, 0x56, 0x14, 0x84, 0x38, 0x34, 0x16, 0x21, + 0x77, 0x07, 0x34, 0x81, 0x66, 0x87, 0x40, 0x11, + 0x62, 0x46, 0x45, 0x01, 0x20, 0x53, 0x21, 0x73, + 0x07, 0x76, 0x44, 0x15, 0x61, 0x50, 0x83, 0x48, + 0x58, 0x58, 0x45, 0x33, 0x25, 0x36, 0x07, 0x42, + 0x70, 0x24, 0x07, 0x41, 0x08, 0x35, 0x00, 0x78, + 0x41, 0x47, 0x02, 0x56, 0x07, 0x14, 0x68, 0x33, + 0x55, 0x77, 0x32, 0x40, 0x55, 0x24, 0x50, 0x26, + 0x47, 0x12, 0x65, 0x58, 0x43, 0x05, 0x52, 0x55, + 0x75, 0x50, 0x18, 0x46, 0x65, 0x48, 0x03, 0x32, + 0x85, 0x31, 0x16, 0x52, 0x71, 0x57, 0x87, 0x46, + 0x76, 0x14, 0x42, 0x81, 0x28, 0x74, 0x60, 0x34, + 0x35, 0x55, 0x52, 0x16, 0x58, 0x48, 0x61, 0x75, + 0x80, 0x88, 0x15, 0x32, 0x72, 0x26, 0x31, 0x03, + 0x05, 0x03, 0x16, 0x04, 0x07, 0x37, 0x37, 0x73, + 0x43, 0x81, 0x57, 0x31, 0x88, 0x04, 0x72, 0x76, + 0x01, 0x61, 0x81, 0x17, 0x37, 0x65, 0x44, 0x38, + 0x61, 0x23, 0x16, 0x26, 0x52, 0x45, 0x00, 0x73, + 0x83, 0x63, 0x64, 0x62, 0x26, 0x74, 0x60, 0x11, + 0x81, 0x08, 0x06, 0x30, 0x36, 0x05, 0x10, 0x48, + 0x47, 0x35, 0x10, 0x85, 0x30, 0x86, 0x71, 0x38, + 0x16, 0x37, 0x6F, 0x3B, 0x1C, 0x18, 0xB1, 0xE3, + 0xE8, 0xEE, 0x83, 0x3E, 0x8D, 0x38, 0x43, 0x9E, + 0x78, 0x1C, 0xA3, 0xB8, 0x94, 0x06, 0x54, 0xEF, + 0x44, 0x6C, 0x9A, 0xAC, 0xC3, 0xF1, 0xD3, 0x0E, + 0xE0, 0x10, 0x5B, 0x8F, 0x63, 0xEB, 0x89, 0x74, + 0x6E, 0xF4, 0xBE, 0xB5, 0x4C, 0xFC, 0xE8, 0x81, + 0x2C, 0xF9, 0x47, 0xCF, 0x54, 0x54, 0xFB, 0x1C, + 0xA5, 0x5F, 0x25, 0xA0, 0xFE, 0x57, 0xF5, 0xFC, + 0xFD, 0x73, 0xB0, 0xDA, 0x04, 0xB0, 0xBF, 0x28, + 0x92, 0x92, 0xAF, 0x39, 0x74, 0x72, 0x56, 0x69, + 0xC3, 0x00, 0x03, 0xE0, 0x50, 0x9F, 0xED, 0xC8, + 0x0F, 0x6C, 0x89, 0x4B, 0xB0, 0x47, 0xC2, 0xE2, + 0xAF, 0x48, 0x5C, 0xAD, 0x68, 0xC2, 0x1D, 0x80, + 0xEF, 0x33, 0xB0, 0xC4, 0xFD, 0xA6, 0x7B, 0x85, + 0x31, 0xA1, 0x58, 0x87, 0x67, 0x54, 0x71, 0x3F, + 0xF8, 0xA8, 0xA6, 0x8D, 0x9A, 0xBD, 0xC4, 0x81, + 0x6B, 0x24, 0xB4, 0xA3, 0x6A, 0x8A, 0x2B, 0xB1, + 0xFD, 0x1C, 0x2C, 0x25, 0xC3, 0x72, 0xC4, 0xB7, + 0x75, 0xF8, 0xCC, 0x17, 0x39, 0xCF, 0x2C, 0xE9, + 0xA4, 0x54, 0x58, 0xE4, 0x1A, 0xAE, 0xC6, 0x4A, + 0xEE, 0xDE, 0x75, 0x7C, 0xE7, 0x38, 0xBC, 0xDF, + 0x4D, 0xA0, 0xEE, 0x2B, 0xDD, 0x5F, 0x80, 0x5C, + 0xCF, 0xF7, 0x2A, 0x5F, 0x73, 0x8B, 0xAC, 0x12, + 0x34, 0x2E, 0xE3, 0xF1, 0x4C, 0xB7, 0x22, 0x68, + 0xC2, 0xD6, 0x36, 0x7D, 0xF1, 0x7F, 0x20, 0x46, + 0xA2, 0x4B, 0x47, 0x4B, 0x32, 0x58, 0xF7, 0xB0, + 0x88, 0x54, 0x6C, 0x99, 0x3B, 0x0D, 0xA1, 0xE2, + 0x92, 0x92, 0xEB, 0x72, 0x1E, 0xE7, 0xE5, 0xA1, + 0xF8, 0x6E, 0x14, 0xA5, 0x39, 0xB0, 0x63, 0x6F, + 0x78, 0x82, 0xA1, 0x9C, 0x8D, 0x79, 0x02, 0x85, + 0xA6, 0xDF, 0x7D, 0xEE, 0xCE, 0x17, 0x4D, 0x63, + 0xCF, 0xF3, 0xB2, 0xFF, 0x85, 0x68, 0x81, 0xCB, + 0x38, 0x6B, 0x1B, 0x38, 0xA2, 0xE0, 0xF2, 0x4C, + 0x31, 0xE0, 0x91, 0x93, 0xDD, 0xF3, 0x71, 0x47, + 0xF2, 0x69, 0xD9, 0x4C, 0xDE, 0xF9, 0x90, 0x61, + 0x34, 0x62, 0x07, 0x71, 0x79, 0xD0, 0xDD, 0x09, + 0x32, 0x64, 0x39, 0x49, 0x93, 0x1A, 0x02, 0xBA, + 0xFA, 0x80, 0x17, 0x6E, 0xDF, 0x97, 0xB6, 0xA2, + 0x31, 0x34, 0x71, 0xF0, 0xB1, 0x9B, 0x3B, 0x59, + 0xF4, 0x3B, 0xD2, 0x2A, 0x05, 0x49, 0x3E, 0xFB, + 0x0C, 0xF8, 0xB5, 0xD7, 0xB6, 0x25, 0x2B, 0x09, + 0x8B, 0x4B, 0xFA, 0x39, 0x5B, 0xF9, 0xA2, 0x09, + 0xE9, 0xBB, 0x46, 0x01, 0x30, 0x00, 0x90, 0x32, + 0x58, 0xA6, 0x9B, 0x67, 0xF5, 0x94, 0x11, 0xC8, + 0x35, 0x95, 0xFA, 0x6E, 0x67, 0x42, 0x8D, 0x96, + 0x6D, 0x20, 0xFC, 0xD3, 0x09, 0x61, 0x11, 0x86, + 0x77, 0xC0, 0x86, 0xA3, 0x54, 0xAE, 0x6D, 0x41, + 0xEE, 0x17, 0xDC, 0xA1, 0xB0, 0xB7, 0x50, 0x43, + 0xD6, 0xCE, 0x23, 0xBD, 0xB0, 0x1E, 0x02, 0xE5, + 0x9E, 0xCF, 0xC6, 0x2E, 0x8C, 0x39, 0x71, 0xB1, + 0x45, 0x02, 0x75, 0xBA, 0x7F, 0x60, 0xB0, 0x8B, + 0x1C, 0x33, 0xBA, 0x0C, 0xFF, 0x54, 0x63, 0xE3, + 0x47, 0x5B, 0x07, 0x77, 0x77, 0xC5, 0x72, 0x24, + 0x60, 0xFA, 0xDB, 0x0B, 0xF6, 0x41, 0x82, 0x69, + 0x3C, 0x68, 0x37, 0xF5, 0xFD, 0x45, 0x4A, 0x66, + 0x6C, 0xD7, 0x01, 0x10, 0x78, 0x4A, 0xED, 0x09, + 0xAE, 0x49, 0x0A, 0x60, 0xC7, 0x78, 0x56, 0x51, + 0x15, 0xE3, 0x4A, 0xB5, 0xAE, 0xAD, 0x09, 0xD1, + 0x71, 0xA8, 0xCA, 0x3C, 0x8A, 0xE6, 0xCA, 0x39, + 0x43, 0x60, 0x56, 0x83, 0x3C, 0x58, 0x04, 0xD4, + 0xB4, 0x62, 0xDD, 0x53, 0x05, 0xC8, 0x51, 0xAF, + 0x59, 0xF6, 0x4F, 0x04, 0xC3, 0x1E, 0x69, 0xFF, + 0x82, 0xBF, 0xD7, 0x89, 0xD2, 0x30, 0x9F, 0xF2, + 0xE6, 0x38, 0x05, 0x9C, 0xD5, 0x08, 0xB8, 0x25, + 0xF3, 0x3B, 0x99, 0x85, 0x4E, 0x40, 0xF8, 0x40, + 0xF2, 0x4B, 0x5C, 0x3A, 0xA8, 0x64, 0x41, 0x92, + 0xEA, 0xCA, 0x9A, 0x7B, 0xCF, 0xBA, 0x1F, 0xDE, + 0xE0, 0x9D, 0xCA, 0xAD, 0xB4, 0x0C, 0x90, 0xFF, + 0xE1, 0x6C, 0xEC, 0xDD, 0x32, 0x38, 0x2A, 0xF7, + 0x19, 0x20, 0x39, 0xCB, 0x29, 0x67, 0x2F, 0x70, + 0x71, 0x12, 0x10, 0xB6, 0xB8, 0x3E, 0x8D, 0xFD, + 0xB5, 0xFB, 0xBD, 0xBF, 0xA8, 0xCA, 0x19, 0xC4, + 0xC6, 0xAC, 0x37, 0x31, 0xFC, 0x33, 0xC2, 0x7F, + 0xA2, 0xA2, 0x6D, 0xEB, 0x15, 0x2E, 0xA1, 0x90, + 0xF8, 0x29, 0xC6, 0x34, 0xD1, 0x39, 0x30, 0x24, + 0x1C, 0xB9, 0x26, 0xAC, 0xDD, 0xE5, 0x24, 0x9C, + 0xDD, 0x35, 0x60, 0x7E, 0x38, 0x0C, 0xC1, 0x2A, + 0x7D, 0x1E, 0xA9, 0xBA, 0xA5, 0x58, 0x4C, 0xDD, + 0x26, 0x86, 0x09, 0xDC, 0xC3, 0xB0, 0x1F, 0xCD, + 0xC9, 0xAD, 0xCB, 0x4A, 0x7E, 0x51, 0x67, 0xE5, + 0xED, 0x5A, 0xD2, 0x21, 0xDB, 0x2E, 0xAB, 0xD9, + 0x0A, 0xEC, 0xAE, 0x71, 0xFA, 0x23, 0x7A, 0xEF, + 0x98, 0xDF, 0x53, 0x89, 0x93, 0xE8, 0x71, 0xD7, + 0x35, 0xDA, 0x6B, 0x88, 0x31, 0xAF, 0x67, 0xF2, + 0x97, 0x29, 0x1C, 0x39, 0x67, 0xEB, 0xAF, 0x60, + 0xD9, 0x53, 0xC4, 0x0F, 0x7A, 0x46, 0x4E, 0xF3, + 0x2F, 0x8E, 0xAE, 0xFA, 0x64, 0x2E, 0x37, 0xDE, + 0xA9, 0x74, 0x73, 0x5D, 0xDD, 0xBB, 0x83, 0x54, + 0x27, 0xB9, 0x7A, 0x63, 0x2B, 0x19, 0x8B, 0x26, + 0x22, 0x28, 0x84, 0xA0, 0x58, 0x00, 0x2D, 0x55, + 0xEA, 0x2A, 0x80, 0x0D, 0x6C, 0x97, 0x0E, 0x8B, + 0xF7, 0x67, 0xB2, 0x8B, 0x2D, 0xDE, 0x8F, 0x58, + 0xFE, 0x97, 0x81, 0xE7, 0xE2, 0x58, 0x8D, 0x7E, + 0x1B, 0xAB, 0xE5, 0x15, 0x9D, 0x54, 0xF4, 0x00, + 0x34, 0x1D, 0x12, 0x1B, 0x03, 0x23, 0x2B, 0x06, + 0x2E, 0x8C, 0xD0, 0x0A, 0xDC, 0x19, 0xA1, 0x69, + 0x1D, 0x72, 0x91, 0xB4, 0xED, 0x0E, 0x81, 0xF7, + 0x05, 0x99, 0x84, 0xFC, 0x74, 0x0F, 0x7D, 0xF8, + 0x9B, 0x3E, 0x7F, 0x63, 0x7C, 0x73, 0xEB, 0xF5, + 0x36, 0xB3, 0x24, 0x22, 0xAA, 0x33, 0x0C, 0x30, + 0x42, 0xC3, 0xE2, 0x04, 0x6B, 0x3F, 0x2A, 0x0D, + 0xAB, 0xE8, 0x5A, 0x9A, 0x09, 0xD7, 0xB6, 0xAA, + 0x9C, 0x3E, 0xD0, 0x9E, 0xB5, 0x9B, 0x52, 0x7B, + 0xAF, 0x2D, 0x6B, 0xE0, 0x40, 0x12, 0x34, 0xBE, + 0x49, 0xAB, 0xD2, 0xC8, 0xB5, 0x89, 0x1B, 0x79, + 0xEC, 0xAE, 0x88, 0x89, 0x3C, 0x05, 0xC7, 0x75, + 0xC5, 0x84, 0xF7, 0x10, 0x49, 0x48, 0x92, 0x69, + 0x9E, 0xD5, 0x56, 0xB2, 0x1E, 0x81, 0x18, 0x78, + 0xCB, 0x93, 0x5D, 0x70, 0x3A, 0xB2, 0x67, 0xD1, + 0xCC, 0x8F, 0x83, 0x03, 0xB9, 0x64, 0x46, 0x22, + 0x78, 0x0D, 0x55, 0x67, 0x22, 0x58, 0x0E, 0x22, + 0x6B, 0xBA, 0x01, 0xD4, 0x77, 0x05, 0xA7, 0xAC, + 0xB7, 0xE5, 0xFC, 0xE6, 0x11, 0xCC, 0x92, 0x5A, + 0x8C, 0xC0, 0x08, 0x24, 0xAF, 0xCC, 0x4D, 0xBD, + 0x79, 0xD3, 0x5C, 0x52, 0x2C, 0xFF, 0x1A, 0x48, + 0xBB, 0x91, 0x59, 0x6A, 0x80, 0x32, 0x8C, 0x75, + 0x7C, 0xD2, 0xC1, 0x94, 0x94, 0xA8, 0x55, 0x4B, + 0xF2, 0x96, 0xF7, 0x86, 0xF7, 0x53, 0x4F, 0x54, + 0x74, 0x05, 0x5C, 0xEF, 0x02, 0xA0, 0x8A, 0xD1, + 0x88, 0x72, 0xEB, 0x1B, 0x82, 0xF9, 0xFB, 0xDA, + 0xBC, 0xB9, 0x90, 0x98, 0xF2, 0x4B, 0x9A, 0xA6, + 0x89, 0xD5, 0xB3, 0xD8, 0x7B, 0x94, 0xE3, 0x1F, + 0x17, 0x4F, 0xEB, 0x24, 0x06, 0x2B, 0xAB, 0x5F, + 0x27, 0x9B, 0xCD, 0xCE, 0x50, 0x06, 0x40, 0xDD, + 0x7A, 0x8C, 0x67, 0xF0, 0x8E, 0x07, 0xB4, 0x1C, + 0x3C, 0x13, 0xB2, 0x07, 0x6A, 0x38, 0x59, 0x94, + 0x2C, 0xB1, 0x72, 0xA8, 0x77, 0x5B, 0x15, 0x8F, + 0x88, 0xC4, 0x5C, 0xDC, 0x92, 0xCA, 0xC0, 0xED, + 0x02, 0xFF, 0x1D, 0x57, 0x25, 0xBE, 0x67, 0x3E, + 0x4C, 0xE8, 0x95, 0x2A, 0x80, 0xB2, 0x5D, 0xBC, + 0xFA, 0x17, 0xA9, 0x35, 0x0A, 0x6B, 0x07, 0xC8, + 0x8F, 0x88, 0x8D, 0xBC, 0x97, 0x84, 0xE2, 0x07, + 0x57, 0x92, 0x99, 0x4B, 0xE8, 0xDD, 0xD7, 0xA4, + 0x58, 0xCB, 0x61, 0xCE, 0x16, 0xFC, 0x22, 0xCD, + 0x4B, 0x1A, 0x08, 0xC9, 0xAD, 0x3D, 0xB1, 0xF2, + 0xA9, 0x1B, 0x8E, 0xD0, 0xC7, 0xBC, 0xCE, 0xF9, + 0x0A, 0x7A, 0x4D, 0xBE, 0x82, 0x0A, 0xBD, 0x6C, + 0x42, 0x99, 0xBF, 0x86, 0x65, 0x53, 0xAA, 0x04, + 0x79, 0xD6, 0x6D, 0x7E, 0x0F, 0x40, 0xFA, 0xEE, + 0xCE, 0x38, 0x3B, 0x1C, 0x2F, 0xA4, 0x45, 0xA3, + 0x78, 0x2B, 0xA0, 0x29, 0xC5, 0xAA, 0xA9, 0x09, + 0x29, 0x51, 0xDC, 0x5B, 0xB5, 0x95, 0xE4, 0xCE, + 0xC8, 0x50, 0x71, 0x2D, 0xE9, 0x32, 0x12, 0xA0, + 0x7C, 0x88, 0x6B, 0xED, 0xE4, 0x38, 0xB7, 0x92, + 0xCA, 0xE4, 0xDC, 0xD4, 0x05, 0x3B, 0x2B, 0x84, + 0x95, 0x07, 0xFF, 0xF4, 0x79, 0xFF, 0x1E, 0x73, + 0x1B, 0x8E, 0xDF, 0xA3, 0x15, 0xBD, 0x56, 0xAC, + 0xDA, 0xAD, 0x73, 0x95, 0xC2, 0xD3, 0x72, 0xA8, + 0xF0, 0x8E, 0x6C, 0xE3, 0x7D, 0xBE, 0x4C, 0x87, + 0xFC, 0x0F, 0xA6, 0x3B, 0xED, 0xA4, 0x0F, 0x4F, + 0xF1, 0x5D, 0xF2, 0x56, 0x54, 0xD1, 0xCE, 0x6C, + 0xCA, 0x1C, 0xCB, 0xC2, 0x45, 0x7F, 0x90, 0x61, + 0x0E, 0x3D, 0xCE, 0xBB, 0x5E, 0x41, 0x38, 0x2B, + 0xD4, 0x41, 0x7C, 0x67, 0x7C, 0x71, 0x95, 0x34, + 0xD7, 0xED, 0x4D, 0xAC, 0x6E, 0xF1, 0x46, 0xEA, + 0x7D, 0xA4, 0x4C, 0x69, 0x0B, 0x9C, 0x2F, 0xAA, + 0xF1, 0x17, 0x90, 0x1B, 0xF4, 0x4C, 0x03, 0xBE, + 0x9D, 0x56, 0xCE, 0x0C, 0xCF, 0xE0, 0x87, 0x44, + 0xBE, 0x2C, 0x52, 0xD3, 0xBC, 0xAE, 0x02, 0x30, + 0xC7, 0x26, 0x06, 0x88, 0xA6, 0xAA, 0x9D, 0x50, + 0xF1, 0x94, 0x58, 0xC7, 0x60, 0xF3, 0xA0, 0x6F, + 0x53, 0x66, 0x53, 0xCD, 0x1D, 0xBE, 0xD1, 0xF2, + 0x39, 0xBA, 0x1F, 0xE8, 0x40, 0x84, 0xCD, 0x1C, + 0x8F, 0x3D, 0xB7, 0xD1, 0x51, 0x00, 0xDE, 0xB8, + 0x11, 0xD9, 0x66, 0xAD, 0xD5, 0xE9, 0x33, 0x09, + 0xE1, 0xA8, 0x00, 0x58, 0x65, 0xF1, 0xC1, 0x67, + 0xB4, 0x3A, 0xA7, 0x98, 0x90, 0x6A, 0xDB, 0x91, + 0xDB, 0x4A, 0x16, 0x35, 0xDC, 0x3D, 0x69, 0xEB, + 0x7B, 0xDE, 0xCC, 0x91, 0x1B, 0x8D, 0xE6, 0x46, + 0x61, 0x8E, 0x3F, 0x4C, 0x88, 0x81, 0x85, 0x4A, + 0x73, 0x08, 0x56, 0x52, 0xAE, 0xE6, 0x4A, 0x60, + 0x4A, 0x2E, 0x0C, 0x9A, 0x93, 0x76, 0x35, 0xC9, + 0x36, 0x28, 0x0C, 0x72, 0x19, 0xAD, 0x33, 0xCF, + 0x2B, 0xFB, 0xCE, 0x1A, 0x7D, 0xAC, 0xAA, 0x75, + 0x15, 0x76, 0x81, 0x52, 0x55, 0xCC, 0xB9, 0x39, + 0x07, 0xA3, 0x39, 0x12, 0x8D, 0x6F, 0x53, 0xAF, + 0xC7, 0x14, 0x7F, 0xC7, 0x96, 0x5A, 0x49, 0x3C, + 0x5C, 0xB0, 0x26, 0x47, 0xF4, 0x9D, 0xCA, 0x23, + 0xA6, 0x7D, 0xA6, 0x61, 0xC4, 0xA3, 0x26, 0x40, + 0x0F, 0xA7, 0x27, 0x09, 0xBC, 0x39, 0xFD, 0xA7, + 0x75, 0x38, 0x74, 0xD0, 0x9D, 0x29, 0x15, 0x97, + 0xDE, 0x25, 0x60, 0x4D, 0x19, 0x36, 0x04, 0xFB, + 0xA5, 0x2C, 0xB0, 0xC8, 0xB5, 0xFE, 0xE5, 0x94, + 0x7C, 0xE2, 0x1F, 0x84, 0xBB, 0xFB, 0x78, 0x9E, + 0xA5, 0x7C, 0x5D, 0x4A, 0xB2, 0x48, 0x6F, 0x6E, + 0x67, 0x95, 0x16, 0x5F, 0x01, 0x2A, 0xF8, 0x70, + 0x95, 0xCB, 0x06, 0x93, 0x26, 0x6E, 0x7A, 0x75, + 0xB5, 0xE5, 0x4E, 0x27, 0x1D, 0x8B, 0x30, 0xA6, + 0x67, 0x67, 0xD6, 0xE2, 0xD6, 0xD1, 0x99, 0xA4, + 0x55, 0x73, 0x19, 0x32, 0xF6, 0x0B, 0x6B, 0x4A, + 0xEE, 0x23, 0x33, 0x38, 0x30, 0x68, 0x6F, 0x8E, + 0x60, 0xA9, 0x60, 0x97, 0x3E, 0xEA, 0x5D, 0xE1, + 0x40, 0x6F, 0x0C, 0x76, 0x84, 0xCF, 0xAF, 0x86, + 0x8D, 0x36, 0xE5, 0x7D, 0xAE, 0x9A, 0x13, 0x70, + 0x22, 0x2A, 0x31, 0xFE, 0xC2, 0xFB, 0xE1, 0x58, + 0xA5, 0x4E, 0xEF, 0x10, 0x5B, 0x5E, 0xD4, 0x39, + 0xFC, 0xF9, 0x15, 0x64, 0x78, 0x43, 0x7D, 0x03, + 0x9F, 0x5B, 0xCB, 0x86, 0xD2, 0xEF, 0x28, 0xBD, + 0x14, 0xCB, 0x8A, 0x04, 0x1D, 0x59, 0x23, 0x53, + 0x4D, 0x13, 0xF9, 0x93, 0xFE, 0x19, 0x9C, 0xC3, + 0x3F, 0xD9, 0xC1, 0x12, 0x94, 0x84, 0x13, 0x95, + 0x8F, 0xD9, 0x10, 0xAB, 0x37, 0x69, 0x08, 0x04, + 0x4A, 0x97, 0x82, 0x28, 0x75, 0xBB, 0xC9, 0xF4, + 0x3F, 0x19, 0x6B, 0x00, 0x4C, 0x56, 0x16, 0x1F, + 0x50, 0x82, 0xD1, 0x45, 0xFF, 0x0C, 0x37, 0x28, + 0x04, 0xBB, 0x6C, 0x00, 0x97, 0x3A, 0x79, 0x2D, + 0x9A, 0xB9, 0xA5, 0x16, 0x52, 0x02, 0xA3, 0x86, + 0x81, 0xAA, 0x3A, 0x31, 0xE5, 0xB5, 0x44, 0x2D, + 0x34, 0xE2, 0x7A, 0xD8, 0xFE, 0xA1, 0x36, 0xC0, + 0x36, 0x65, 0x73, 0x12, 0x9F, 0x61, 0x3F, 0x59, + 0xC9, 0x68, 0xB6, 0x34, 0x41, 0x40, 0x25, 0xD6, + 0xE7, 0xAD, 0x25, 0x7D, 0xCB, 0xF1, 0x2A, 0xD8, + 0x53, 0x48, 0x9D, 0xBF, 0xB5, 0xD5, 0x61, 0x18, + 0x0E, 0x2A, 0x21, 0x3E, 0x61, 0x18, 0x07, 0x8E, + 0x6F, 0x9A, 0x96, 0xA8, 0x61, 0xFE, 0x8D, 0x66, + 0x1A, 0x21, 0x99, 0xD9, 0x60, 0x8B, 0xAC, 0x85, + 0x84, 0x3D, 0x41, 0xF9, 0x93, 0x35, 0x24, 0x32, + 0xFF, 0xC0, 0x8A, 0xFA, 0xBC, 0xA7, 0x85, 0x57, + 0x3C, 0x16, 0x83, 0xAE, 0x90, 0xDE, 0x40, 0x12, + 0xE4, 0x2B, 0xA2, 0x47, 0xA4, 0x92, 0x73, 0x54, + 0x6C, 0xA5, 0xB7, 0xEE, 0x62, 0xEA, 0x62, 0x37, + 0xD9, 0xD7, 0x73, 0x58, 0x43, 0xDB, 0x20, 0x60, + 0x8C, 0x4F, 0x87, 0x58, 0xB2, 0x2B, 0xC3, 0x40, + 0xB0, 0xC1, 0xB6, 0xB6, 0xA9, 0xCD, 0xCC, 0x05, + 0x4F, 0x38, 0x5F, 0x08, 0xB3, 0x3B, 0x08, 0x4D, + 0x78, 0x6B, 0x0D, 0x40, 0x46, 0xB9, 0x20, 0xDE, + 0x29, 0x6F, 0x23, 0x96, 0xDA, 0x02, 0xF5, 0x1C, + 0x1A, 0x1A, 0x36, 0xA3, 0x3A, 0xFA, 0x1D, 0x80, + 0x36, 0x3C, 0xF6, 0xB4, 0xDC, 0x2C, 0x88, 0x54, + 0xF7, 0x86, 0xC6, 0xF2, 0x15, 0xF8, 0x85, 0x33, + 0xFB, 0x21, 0x20, 0x59, 0xCE, 0x60, 0x4B, 0xE8, + 0xF1, 0xB7, 0x54, 0x17, 0x1E, 0x83, 0xCD, 0x82, + 0x39, 0x40, 0x14, 0x31, 0xEC, 0x89, 0xC8, 0xE2, + 0x6A, 0xAE, 0x3F, 0x49, 0x5B, 0x38, 0xE7, 0xCD, + 0xE2, 0xF6, 0xEF, 0x90, 0x51, 0x10, 0x83, 0x79, + 0x27, 0x80, 0x2F, 0x45, 0x78, 0x67, 0xAF, 0xF4, + 0x65, 0x95, 0x2D, 0xFE, 0x00, 0xF3, 0x2A, 0x60, + 0x00, 0xF7, 0x26, 0xFA, 0x3C, 0xAD, 0xA9, 0xAF, + 0xCA, 0xF6, 0x69, 0x48, 0x03, 0xBE, 0x18, 0x73, + 0x54, 0x06, 0x06, 0x3E, 0x4E, 0xAD, 0xFC, 0x8B, + 0xC3, 0x43, 0x24, 0x5D, 0xE9, 0xDE, 0x78, 0xDC, + 0xD0, 0xA7, 0x04, 0x77, 0xF0, 0x0D, 0xA3, 0x37, + 0x8C, 0x5F, 0x8B, 0xDF, 0xBE, 0x90, 0x1F, 0xA6, + 0xB3, 0x17, 0x9D, 0x68, 0x36, 0x45, 0x11, 0x60, + 0xFF, 0xF9, 0xBA, 0xDA, 0x80, 0xAA, 0x37, 0x57, + 0xDD, 0x34, 0x30, 0x42, 0x7A, 0x9C, 0x86, 0xB4, + 0x91, 0x30, 0xB8, 0xC0, 0xC4, 0x29, 0x15, 0x31, + 0xF3, 0x9A, 0xB0, 0xCD, 0xAC, 0x8C, 0x7C, 0x8C, + 0x4A, 0xDC, 0x76, 0xB6, 0x31, 0x30, 0xDE, 0x2D, + 0x81, 0x04, 0xC7, 0x48, 0x73, 0x69, 0x02, 0x40, + 0x30, 0x19, 0x66, 0x94, 0x21, 0x65, 0x13, 0x18, + 0xC2, 0x09, 0x14, 0x5F, 0xC4, 0x2F, 0xC4, 0xD6, + 0xA6, 0x05, 0x37, 0xAF, 0x72, 0x0C, 0x47, 0x02, + 0x29, 0x95, 0x08, 0x9D, 0xC9, 0x07, 0x31, 0x38, + 0xA9, 0xB5, 0xDA, 0x21, 0x76, 0x1D, 0x84, 0xD0, + 0x15, 0xAF, 0x2A, 0xA3, 0x69, 0x0A, 0xE9, 0x4F, + 0x75, 0x8A, 0x50, 0xA5, 0x11, 0xD4, 0x5F, 0xAF, + 0x70, 0x43, 0xCB, 0xD7, 0x03, 0x9E, 0xB0, 0xBD, + 0x19, 0x47, 0x94, 0x58, 0x22, 0x86, 0xC6, 0xE3, + 0x62, 0xD8, 0x63, 0x05, 0xD9, 0xE2, 0xE5, 0x4A, + 0x04, 0x54, 0x5A, 0x55, 0x25, 0xAD, 0x15, 0x5C, + 0x4B, 0x71, 0x25, 0xE1, 0x50, 0xE3, 0x62, 0x1B, + 0xD2, 0x43, 0x28, 0xD2, 0x84, 0xE4, 0xE2, 0x05, + 0xE3, 0x01, 0x4C, 0x8F, 0x38, 0x17, 0x49, 0xFD, + 0x3B, 0x52, 0x1A, 0x55, 0xB3, 0x1D, 0x69, 0x83, + 0xAB, 0x9E, 0xC4, 0x73, 0xEE, 0x64, 0x7A, 0x73, + 0x19, 0xEF, 0xCD, 0x7D, 0xB7, 0xF4, 0x2E, 0xCB, + 0x55, 0x2A, 0x8A, 0xCC, 0x8F, 0xF8, 0x4E, 0xFB, + 0xD2, 0x63, 0x8F, 0xF1, 0x10, 0x89, 0x02, 0x93, + 0x3E, 0xAC, 0xA4, 0xB4, 0x89, 0xC7, 0xF7, 0x8B, + 0x3E, 0xE1, 0xE8, 0x93, 0xB9, 0x8E, 0x36, 0x25, + 0xC1, 0xC0, 0xD9, 0x44, 0x81, 0xC0, 0x99, 0x3C, + 0x2B, 0x89, 0xF7, 0xDF, 0xDB, 0xD8, 0xCC, 0x84, + 0xE6, 0xFF, 0xFE, 0xAC, 0x21, 0x16, 0xF1, 0xE2, + 0xEF, 0x0A, 0x32, 0xA7, 0xDE, 0x87, 0x51, 0xEC, + 0xB1, 0x0C, 0x0B, 0xC7, 0x07, 0xD9, 0x9A, 0xF8, + 0xE8, 0xB0, 0xFE, 0xA5, 0x67, 0xAF, 0x53, 0x9F, + 0xEF, 0x23, 0xEF, 0x7D, 0xFF, 0xA8, 0x8E, 0xDE, + 0x97, 0x93, 0x32, 0xA6, 0x7C, 0xCF, 0x49, 0xBC, + 0x36, 0x0D, 0x88, 0x90, 0x89, 0x39, 0x76, 0xA8, + 0x82, 0x19, 0x02, 0xB6, 0x02, 0x82, 0xFE, 0xED, + 0x9C, 0x28, 0x8D, 0xB0, 0x1E, 0x2B, 0x2A, 0xCF, + 0xF3, 0x94, 0xFF, 0x66, 0x33, 0x93, 0x31, 0xD6, + 0xFC, 0xAF, 0xE7, 0xC5, 0x98, 0x01, 0x46, 0xCD, + 0xCB, 0xC4, 0x41, 0x13, 0x6D, 0x42, 0xF5, 0x13, + 0xDF, 0xF9, 0x97, 0x65, 0xD4, 0x7B, 0x6E, 0x10, + 0x79, 0x5D, 0x5A, 0x82, 0xA2, 0x49, 0x53, 0xA7, + 0x6D, 0x9C, 0xDD, 0x0A, 0x80, 0x98, 0x58, 0x07, + 0x30, 0xBF, 0x0B, 0x30, 0xAC, 0x24, 0x9E, 0xA0, + 0xE8, 0xE4, 0x7A, 0x0D, 0xD0, 0x50, 0x82, 0xAE, + 0xBB, 0xEC, 0x15, 0x30, 0x2A, 0xF2, 0xA7, 0xA6, + 0x6A, 0xC8, 0xAE, 0x1E, 0x14, 0x80, 0x7C, 0x18, + 0xE7, 0x2B, 0x88, 0x65, 0xB7, 0x93, 0x12, 0xB3, + 0xC1, 0x2A, 0x20, 0xAD, 0x3B, 0x2E, 0x84, 0xC4, + 0x0D, 0xA7, 0x62, 0x5C, 0x79, 0x52, 0x5D, 0x59, + 0xA4, 0x69, 0x5C, 0x26, 0xFD, 0x4F, 0x80, 0xCC, + 0xFE, 0x8E, 0x70, 0x72, 0xB1, 0x41, 0xE1, 0x75, + 0x53, 0x51, 0xCF, 0x4C, 0x0B, 0x57, 0xF2, 0xB8, + 0x59, 0x76, 0xE6, 0xEF, 0x6D, 0x74, 0xA6, 0x73, + 0x69, 0x7F, 0x7C, 0xB2, 0x35, 0xFE, 0x8A, 0x02, + 0x2F, 0xBE, 0x7C, 0x4D, 0x02, 0xBE, 0x8F, 0xFB, + 0x7A, 0x58, 0x45, 0xEC, 0xBA, 0x1B, 0xC6, 0xB9, + 0x8D, 0xF5, 0xB0, 0x82, 0xD1, 0xB4, 0x97, 0x86, + 0x9B, 0x33, 0x54, 0x49, 0x5B, 0x88, 0xD9, 0xB5, + 0xD0, 0x93, 0x8A, 0x00, 0x5D, 0x0F, 0x37, 0x88, + 0x57, 0xE3, 0xFA, 0x7E, 0x7B, 0xFA, 0x43, 0x74, + 0x8D, 0x64, 0x07, 0xD7, 0x07, 0x85, 0x4D, 0x49, + 0xBC, 0x83, 0xF5, 0xD4, 0x95, 0x3E, 0x3E, 0x09, + 0x65, 0xF3, 0xFC, 0x88, 0xA7, 0xF0, 0x46, 0x61, + 0x44, 0x7D, 0x76, 0xED, 0xC9, 0x8D, 0x0F, 0x8D, + 0xDA, 0x0D, 0x01, 0xC8, 0xB1, 0xA8, 0x9B, 0x4A, + 0xF0, 0xA3, 0x88, 0x54, 0xC1, 0xD6, 0x52, 0x97 + }; +#endif /* WOLFSSL_NO_ML_DSA_65 */ +#ifndef WOLFSSL_NO_ML_DSA_87 + static const byte seed_87_draft[] = { + 0x22, 0x5F, 0x77, 0x07, 0x5E, 0x66, 0xCE, 0x1C, + 0x99, 0xBA, 0x95, 0xB4, 0xFC, 0xDF, 0x25, 0x8B, + 0xBB, 0x6F, 0xA5, 0xFE, 0x9C, 0x34, 0x9F, 0x0F, + 0xDE, 0x3F, 0x71, 0xD5, 0x33, 0x9F, 0x6F, 0xD8 + }; + static const byte pk_87_draft[] = { + 0x8C, 0x52, 0x4B, 0xD9, 0xAC, 0x48, 0x5C, 0xC6, + 0x9A, 0xA0, 0x75, 0x64, 0xE1, 0x4F, 0x0F, 0x60, + 0x13, 0x0E, 0xDE, 0x34, 0x08, 0xA5, 0xD4, 0x81, + 0xFD, 0x76, 0xC2, 0x51, 0x74, 0x75, 0xA8, 0xFB, + 0x24, 0xBF, 0x9E, 0x97, 0x9C, 0xD2, 0x3E, 0xDA, + 0x8A, 0x1B, 0xB6, 0x76, 0xDA, 0x7D, 0x7F, 0x44, + 0xAD, 0x6B, 0xB9, 0xB0, 0x70, 0xD3, 0xD6, 0x44, + 0x7F, 0xBE, 0x6C, 0x0C, 0x71, 0x37, 0xC6, 0xFB, + 0x7B, 0x39, 0x83, 0x63, 0x9C, 0x41, 0x5C, 0xF2, + 0xC9, 0x15, 0xFF, 0xD4, 0x18, 0xEA, 0xA1, 0x4D, + 0xA9, 0xD1, 0xAD, 0x3C, 0x09, 0x8E, 0xA9, 0x05, + 0x34, 0x6C, 0xAA, 0x75, 0x78, 0xF8, 0x6B, 0x6E, + 0x52, 0xE6, 0x57, 0x55, 0x16, 0xF4, 0x92, 0x3E, + 0x74, 0x3F, 0x96, 0xA3, 0x2A, 0xD0, 0x0E, 0xEE, + 0xA1, 0xCE, 0x8A, 0x33, 0xF4, 0x87, 0xB9, 0xF3, + 0x22, 0x5D, 0x2D, 0x84, 0xCD, 0x27, 0x57, 0xCC, + 0xCF, 0xE6, 0xA3, 0x66, 0x24, 0x53, 0x0E, 0x52, + 0x8A, 0x2F, 0x64, 0xFC, 0xE7, 0x04, 0xE7, 0xA7, + 0x6C, 0x2E, 0x6A, 0xDC, 0x00, 0xEF, 0x9B, 0xEC, + 0x91, 0x07, 0xB9, 0x69, 0x8F, 0x11, 0x59, 0xFC, + 0x52, 0xEF, 0x4C, 0x36, 0x5A, 0xFD, 0xB1, 0x50, + 0xED, 0xC3, 0x43, 0x5E, 0x03, 0xBB, 0x70, 0x26, + 0x00, 0x6E, 0x5A, 0x55, 0x13, 0x51, 0xA4, 0xB1, + 0x5F, 0xB8, 0x9F, 0xD2, 0xE9, 0x98, 0x38, 0xE8, + 0xCF, 0x41, 0x73, 0xFD, 0x0D, 0xF1, 0xF6, 0x80, + 0x89, 0xE1, 0x51, 0x8D, 0xD4, 0xB5, 0x79, 0x27, + 0x76, 0xBD, 0xD9, 0x2F, 0xC7, 0xC7, 0x9B, 0xC7, + 0x99, 0x7F, 0x78, 0x84, 0xD2, 0xB8, 0x80, 0xC5, + 0xD2, 0xB7, 0xEE, 0xC8, 0x0A, 0xFE, 0x35, 0x59, + 0x84, 0x5D, 0x39, 0x08, 0x39, 0xBE, 0x5E, 0xBF, + 0x95, 0x93, 0xA7, 0x3E, 0xD0, 0x1E, 0xF6, 0x7D, + 0x50, 0x3F, 0xFB, 0x74, 0x47, 0x04, 0xA2, 0xDC, + 0x49, 0x48, 0x76, 0x2B, 0xC8, 0x43, 0x45, 0x75, + 0x72, 0x84, 0x4D, 0x15, 0x74, 0xE3, 0xEB, 0x37, + 0x83, 0x0A, 0x3B, 0x7C, 0xD4, 0x02, 0xC7, 0x6E, + 0xD5, 0xB4, 0xFC, 0x15, 0xF0, 0x5E, 0x76, 0x03, + 0x4C, 0xBB, 0x6A, 0x29, 0xDE, 0xBC, 0x7E, 0x2B, + 0x34, 0xB2, 0x14, 0x2A, 0x57, 0xCF, 0x1B, 0x39, + 0x73, 0xE5, 0x8B, 0xFF, 0x47, 0x50, 0x42, 0xDC, + 0x22, 0x6C, 0x7E, 0x13, 0x71, 0xF3, 0x37, 0x51, + 0x40, 0xF2, 0x90, 0x57, 0xAC, 0xB4, 0x64, 0x7C, + 0x5F, 0x92, 0x6D, 0x3F, 0xDC, 0xCC, 0xC8, 0xD2, + 0xE1, 0x6B, 0x81, 0xA9, 0xED, 0xCD, 0x0C, 0x8B, + 0x5B, 0x2E, 0x11, 0x89, 0x87, 0x42, 0x4B, 0xEC, + 0xAD, 0x40, 0xA5, 0xE5, 0xB4, 0x6D, 0x1C, 0xB4, + 0x01, 0x0A, 0x8E, 0x9F, 0x6F, 0x25, 0x92, 0x5D, + 0xFE, 0x6B, 0x6F, 0x24, 0x64, 0x5F, 0x9C, 0x88, + 0x86, 0x96, 0xE8, 0x79, 0x64, 0x5B, 0x6A, 0x3A, + 0x76, 0x21, 0x90, 0xCC, 0xB7, 0xD6, 0x26, 0x9D, + 0x35, 0x54, 0x79, 0xDF, 0x71, 0x90, 0x55, 0x2A, + 0x38, 0x52, 0xD1, 0xE9, 0x56, 0x73, 0xE7, 0x19, + 0x44, 0x6A, 0xD3, 0x10, 0x24, 0xB9, 0x4B, 0xF8, + 0xBB, 0xC9, 0x7B, 0x04, 0x66, 0x39, 0xCE, 0x12, + 0x3F, 0xDE, 0xC3, 0x75, 0xAF, 0x9F, 0x8D, 0x4C, + 0xF7, 0x16, 0x9B, 0xEB, 0x5F, 0xE5, 0x1B, 0xBF, + 0x82, 0x2C, 0x53, 0xBA, 0x2D, 0x98, 0xA4, 0xA0, + 0x14, 0xA2, 0xDE, 0x69, 0x7F, 0x03, 0x3C, 0x9E, + 0x4A, 0x57, 0xC6, 0xED, 0xF6, 0x10, 0x6A, 0x76, + 0x2A, 0x81, 0x92, 0x9F, 0x3E, 0xF0, 0xFD, 0xE9, + 0xB7, 0xB3, 0x8A, 0xF6, 0x1A, 0x19, 0x9A, 0x16, + 0x0F, 0x09, 0x45, 0xBD, 0xBB, 0x96, 0x7C, 0x72, + 0x40, 0xFE, 0x94, 0xBD, 0xE1, 0x60, 0x50, 0x53, + 0x13, 0xC9, 0x2B, 0xFA, 0x52, 0x40, 0xA2, 0xA7, + 0xF0, 0x8C, 0x85, 0x78, 0xDB, 0xD6, 0x7F, 0x21, + 0x39, 0xB5, 0x06, 0x72, 0xEE, 0x99, 0xA1, 0xBD, + 0x78, 0x1F, 0xA4, 0xE9, 0x54, 0xF4, 0xFA, 0xDF, + 0xA7, 0x9E, 0xDD, 0x8E, 0xB1, 0xCF, 0xA8, 0x48, + 0x84, 0x5D, 0x70, 0xCB, 0x2D, 0xA9, 0x66, 0x09, + 0x0B, 0x75, 0x75, 0xA2, 0x32, 0xFE, 0xDF, 0x96, + 0x33, 0x84, 0xA7, 0x84, 0x48, 0x1A, 0xFA, 0x82, + 0x79, 0x0A, 0x87, 0xE1, 0x1F, 0x11, 0x74, 0xD4, + 0x3C, 0xC0, 0x8D, 0x4F, 0xD2, 0x5D, 0xBB, 0x40, + 0x10, 0xB2, 0x6F, 0x23, 0xD2, 0xD6, 0xF4, 0xA5, + 0x87, 0xEF, 0x7D, 0xE8, 0xC6, 0xF7, 0xC6, 0x0F, + 0xF9, 0x6F, 0xF8, 0x4C, 0x39, 0xE4, 0x82, 0x1E, + 0x1E, 0x6A, 0x80, 0x2F, 0xEC, 0x22, 0xD6, 0xA0, + 0xAA, 0xB6, 0x2C, 0xCB, 0x16, 0x43, 0x68, 0xC2, + 0x27, 0xF6, 0xA2, 0x31, 0x62, 0x66, 0xEC, 0x2F, + 0xFF, 0x8D, 0xB4, 0x19, 0x51, 0x19, 0xA0, 0x8C, + 0x67, 0xE2, 0x04, 0x04, 0xB9, 0x1F, 0x08, 0x70, + 0x9E, 0xAA, 0xC2, 0xDE, 0xCB, 0x96, 0x19, 0x8F, + 0x02, 0x74, 0x10, 0xCC, 0x1B, 0x82, 0x5D, 0x9C, + 0x07, 0x00, 0xE5, 0xD7, 0x04, 0x51, 0xBA, 0x7F, + 0x67, 0xF9, 0x64, 0x0C, 0xA3, 0x6B, 0xF3, 0x12, + 0x21, 0x80, 0x68, 0xD6, 0xA2, 0xCA, 0xFF, 0x59, + 0x33, 0x43, 0x7D, 0x67, 0xBF, 0xD4, 0x88, 0x4A, + 0x6E, 0x92, 0xBA, 0x41, 0xE1, 0x28, 0xDA, 0xEB, + 0xE1, 0xEA, 0x25, 0x60, 0xE1, 0x2F, 0xED, 0x2C, + 0xD4, 0x4B, 0xC9, 0x4E, 0x9E, 0x9D, 0xFA, 0xBB, + 0xF9, 0x61, 0x41, 0x4C, 0x24, 0x24, 0xFC, 0x9B, + 0x62, 0xFE, 0x73, 0x74, 0xF6, 0xB8, 0x9B, 0xA9, + 0x02, 0x96, 0xF4, 0x90, 0x18, 0xA7, 0xF5, 0x49, + 0xC1, 0xA3, 0x94, 0xB8, 0xED, 0xBD, 0x0B, 0xF3, + 0xDB, 0xF3, 0xBC, 0x10, 0x6A, 0x6B, 0x3F, 0x79, + 0x07, 0xF2, 0x11, 0x09, 0xD5, 0x42, 0x8F, 0xA9, + 0x09, 0x94, 0xBE, 0xF2, 0x0D, 0x3A, 0x91, 0x33, + 0x01, 0x31, 0x34, 0xBF, 0x0A, 0xCA, 0xF1, 0x3E, + 0x66, 0x18, 0xA6, 0x69, 0xEC, 0xEA, 0xC5, 0xE9, + 0x8B, 0x80, 0xFE, 0x4D, 0x93, 0x7B, 0xD4, 0xE5, + 0x74, 0x90, 0xFA, 0xFD, 0xCE, 0x45, 0xE8, 0xD7, + 0xD8, 0x8F, 0x08, 0x8B, 0x3A, 0xA8, 0x01, 0xA2, + 0xB4, 0xE5, 0xF2, 0x29, 0x41, 0x02, 0xBD, 0xCB, + 0xF9, 0x4A, 0x62, 0x54, 0x99, 0x94, 0x61, 0xB7, + 0x8F, 0xA5, 0x8A, 0x7F, 0xDC, 0xAD, 0xD2, 0xF2, + 0x28, 0x1E, 0xF3, 0x18, 0xAE, 0x21, 0x81, 0xF7, + 0xE9, 0xE5, 0xBF, 0x2B, 0xC2, 0x98, 0x24, 0xB1, + 0x45, 0x56, 0x57, 0x31, 0xA1, 0x48, 0xAB, 0x39, + 0xC2, 0x04, 0x29, 0x1B, 0x5B, 0xD3, 0x23, 0x35, + 0xCC, 0x5A, 0x58, 0x10, 0x11, 0x5B, 0xD5, 0x88, + 0xC2, 0x60, 0x37, 0x3D, 0x1C, 0x1C, 0x7B, 0x09, + 0x95, 0xB5, 0x05, 0x12, 0xD8, 0x52, 0x8D, 0xF5, + 0xBD, 0x4A, 0xA5, 0x45, 0x6F, 0x3D, 0x55, 0x9D, + 0x90, 0xAD, 0xD7, 0xA9, 0xD0, 0x25, 0x0B, 0xD7, + 0x55, 0x11, 0x5C, 0x60, 0xBF, 0xBD, 0xFB, 0x9D, + 0x2A, 0xCE, 0x4F, 0xE6, 0xB8, 0x36, 0x3A, 0x4D, + 0xE7, 0xB6, 0xFF, 0x6B, 0xD8, 0xBA, 0xD4, 0xEE, + 0x95, 0x9A, 0x0A, 0x47, 0xD4, 0x76, 0xE0, 0xF7, + 0xAC, 0x02, 0xB6, 0xA8, 0x10, 0x1E, 0xA5, 0x98, + 0xC0, 0xF4, 0x68, 0x5E, 0x55, 0xC1, 0x67, 0xCD, + 0x16, 0x31, 0xBD, 0xA2, 0x86, 0xF3, 0xF8, 0xC0, + 0xED, 0x4A, 0xFF, 0xE8, 0xF5, 0x2C, 0xFA, 0xD2, + 0x06, 0x78, 0x6D, 0x34, 0xBE, 0xF9, 0x15, 0x84, + 0x6D, 0xE5, 0x5F, 0xA4, 0xAC, 0x84, 0x3B, 0x3A, + 0xA6, 0x2D, 0xC2, 0x01, 0xE0, 0x63, 0x92, 0xC7, + 0x77, 0xB5, 0x4E, 0x2C, 0x40, 0x90, 0x48, 0xAF, + 0x8B, 0xE9, 0x6C, 0x1E, 0xEE, 0x16, 0x8F, 0x4E, + 0x4F, 0xFF, 0x35, 0x15, 0xE5, 0x51, 0xF4, 0xB2, + 0x23, 0x1C, 0x6A, 0xCE, 0x05, 0xDC, 0xDC, 0xAD, + 0x7F, 0x9D, 0xDA, 0xB3, 0x0C, 0xAD, 0x9C, 0x62, + 0x68, 0xD6, 0x84, 0x00, 0x76, 0xFF, 0xD3, 0x01, + 0x18, 0xB0, 0xC4, 0xE5, 0xE5, 0x0D, 0x87, 0x8E, + 0xAF, 0x77, 0xEE, 0xCB, 0x56, 0x88, 0x7F, 0xED, + 0xC5, 0x7C, 0x54, 0xD6, 0x28, 0x46, 0xE0, 0x8C, + 0xE6, 0x87, 0xF2, 0x4D, 0x0D, 0x2F, 0x12, 0x62, + 0x06, 0xDF, 0xB2, 0x4E, 0x03, 0x04, 0x78, 0x0B, + 0x03, 0x4C, 0xCE, 0x86, 0xD1, 0xCD, 0x53, 0x00, + 0xED, 0xC6, 0xF8, 0x9A, 0xCB, 0x59, 0x14, 0xA6, + 0x0C, 0x87, 0x35, 0x92, 0x66, 0x0D, 0x02, 0xA9, + 0xEF, 0x0D, 0x7D, 0xC6, 0x45, 0xF3, 0x11, 0xEF, + 0x1F, 0x55, 0x72, 0x1F, 0x1B, 0x45, 0xD2, 0xE4, + 0x8F, 0x3F, 0x9F, 0xEB, 0x27, 0x02, 0xD8, 0x2C, + 0xEF, 0xAD, 0x7E, 0x7E, 0x10, 0xDD, 0x91, 0x5E, + 0x39, 0x06, 0x7C, 0x39, 0xEA, 0x61, 0xB9, 0xCC, + 0xF1, 0x45, 0x56, 0x81, 0x53, 0x55, 0x42, 0xD4, + 0x37, 0x0F, 0x53, 0xF0, 0x7F, 0xA0, 0xC6, 0x50, + 0x9B, 0x1D, 0xC6, 0x7E, 0x9F, 0x1D, 0x89, 0x3B, + 0xEB, 0x85, 0x59, 0x6D, 0x9C, 0x12, 0xEE, 0xAC, + 0xFC, 0xAE, 0xC0, 0xAE, 0x5F, 0xD4, 0x9C, 0x62, + 0xE7, 0x09, 0x8C, 0xFA, 0x80, 0x1A, 0x19, 0x09, + 0x0F, 0x8D, 0x68, 0x9E, 0x45, 0x33, 0xE2, 0x58, + 0x7B, 0xEF, 0xC7, 0x6A, 0xDC, 0x38, 0x33, 0x3E, + 0x5C, 0x53, 0xB5, 0x99, 0xDB, 0x04, 0xA7, 0xEA, + 0xFB, 0x07, 0x9B, 0x25, 0x47, 0xED, 0xAC, 0x5A, + 0xAA, 0x1E, 0xE5, 0x23, 0xDE, 0x64, 0xE5, 0x87, + 0x46, 0x8C, 0x41, 0x52, 0xC9, 0x4F, 0x90, 0x48, + 0x1C, 0xAA, 0xA6, 0xB0, 0x3A, 0x1E, 0xC9, 0x08, + 0xF7, 0x82, 0x71, 0x13, 0x76, 0x6B, 0x9E, 0x52, + 0x22, 0x32, 0xE0, 0xC6, 0xF7, 0xD7, 0x4C, 0xBD, + 0xC3, 0x1C, 0x18, 0xAF, 0xA0, 0x12, 0xD3, 0x22, + 0x6A, 0xFC, 0x71, 0x8A, 0x64, 0x24, 0xAC, 0x19, + 0x4E, 0x85, 0x3C, 0x51, 0xE6, 0xA3, 0xAD, 0xA9, + 0x59, 0x94, 0xD2, 0x7F, 0xC4, 0x9D, 0x93, 0x5B, + 0x51, 0xD7, 0xF3, 0x03, 0xE7, 0x7D, 0x5B, 0x13, + 0x0E, 0xCD, 0x7D, 0x0F, 0x77, 0x3E, 0x84, 0xD7, + 0x4E, 0x69, 0x57, 0x1B, 0x73, 0x99, 0xC9, 0x4D, + 0xC0, 0x19, 0x6B, 0x9D, 0x5F, 0xBA, 0x69, 0xEE, + 0x11, 0xBD, 0x7C, 0x45, 0xD9, 0xA9, 0x65, 0x88, + 0xA7, 0x0E, 0x16, 0xBF, 0xB3, 0x82, 0x5E, 0x5E, + 0x56, 0x13, 0x02, 0x7D, 0xB1, 0xDC, 0xF5, 0x4A, + 0x82, 0x73, 0x72, 0x35, 0x9B, 0x91, 0xAC, 0x04, + 0x69, 0xE9, 0xEA, 0x19, 0xC9, 0xD8, 0x59, 0xEB, + 0x8F, 0x22, 0x5F, 0x43, 0x11, 0x0C, 0xCF, 0xB4, + 0x16, 0x6C, 0x7D, 0x60, 0xCE, 0x14, 0x24, 0xAD, + 0xD7, 0x07, 0xC2, 0x4E, 0x98, 0xA0, 0xDE, 0x9E, + 0xE6, 0x31, 0xED, 0xF8, 0x5B, 0x9C, 0xAF, 0xF7, + 0x57, 0x59, 0x10, 0xA9, 0x92, 0xDC, 0x4F, 0x0C, + 0x2B, 0x88, 0x75, 0x19, 0x1D, 0xB3, 0xBF, 0x70, + 0x23, 0x17, 0xD5, 0x1A, 0x50, 0x30, 0x18, 0x14, + 0x1A, 0x14, 0xE6, 0x1D, 0x4F, 0x8A, 0x96, 0x3E, + 0xD8, 0x6E, 0xD9, 0xBF, 0x94, 0x4E, 0xDE, 0xB8, + 0xFF, 0xE1, 0x6F, 0xFD, 0x31, 0xE8, 0xFE, 0x43, + 0xC2, 0x40, 0x82, 0x45, 0x50, 0xFE, 0x1B, 0xBC, + 0x77, 0x4B, 0xB4, 0x30, 0xA7, 0xD4, 0x46, 0x32, + 0x6A, 0xF7, 0xC5, 0x92, 0xDA, 0x70, 0xB1, 0xB7, + 0xA1, 0x5A, 0x5D, 0x17, 0x3B, 0xDB, 0x2F, 0x28, + 0x8A, 0x6E, 0xEC, 0xDA, 0xC4, 0xF7, 0x2E, 0xCB, + 0xEB, 0x96, 0x60, 0x92, 0x1B, 0xDD, 0xD6, 0x13, + 0x7C, 0x85, 0x9F, 0x8A, 0x9A, 0xE9, 0x5F, 0xC4, + 0x24, 0xFD, 0x33, 0xDF, 0xB3, 0x98, 0x66, 0xF7, + 0xA1, 0x5A, 0xDC, 0x01, 0xC9, 0xFA, 0x37, 0xF1, + 0x7B, 0xD0, 0xF6, 0x66, 0x8A, 0x26, 0x7C, 0xC2, + 0x1B, 0xFF, 0x62, 0xBC, 0xFD, 0xCD, 0x47, 0xDA, + 0xEE, 0x75, 0xF2, 0xAC, 0x60, 0x69, 0x87, 0x26, + 0xCC, 0x92, 0x10, 0x1C, 0x92, 0xC1, 0x43, 0x09, + 0xE9, 0xCE, 0x7D, 0x05, 0x5C, 0x64, 0x55, 0xCB, + 0xBB, 0x7A, 0xAE, 0x05, 0xDB, 0x38, 0xD3, 0xD5, + 0xBB, 0xD9, 0x9F, 0xCB, 0xCF, 0xB7, 0x9C, 0xEF, + 0x7E, 0x7B, 0x2A, 0x6F, 0x84, 0x4E, 0x6A, 0x7F, + 0xD3, 0x5F, 0xF3, 0xB3, 0xC1, 0xF0, 0x02, 0x9C, + 0xA2, 0x4C, 0x86, 0x0E, 0x6B, 0xE2, 0x2B, 0x1D, + 0x1D, 0xB4, 0x55, 0x7F, 0x85, 0x54, 0x2D, 0x85, + 0x64, 0x89, 0x92, 0x19, 0x65, 0x44, 0xD7, 0x95, + 0x48, 0x2C, 0x46, 0x8D, 0x0E, 0xBA, 0xFB, 0x13, + 0x63, 0x52, 0x2E, 0x22, 0x19, 0x3F, 0x7F, 0xFB, + 0x54, 0x4D, 0x73, 0xA1, 0x3C, 0x22, 0xD6, 0x5D, + 0x2B, 0x4A, 0xBD, 0xD7, 0xBB, 0x72, 0x55, 0x80, + 0xD4, 0x57, 0x4E, 0xDC, 0xF2, 0x8B, 0xB3, 0x09, + 0x6A, 0xF9, 0x1A, 0xD3, 0x41, 0x0E, 0x72, 0x95, + 0x49, 0xE7, 0xD1, 0xDC, 0x05, 0x22, 0xC3, 0x3E, + 0x26, 0x95, 0x00, 0x01, 0x8C, 0xE1, 0x54, 0x47, + 0x84, 0x10, 0xA7, 0x67, 0x45, 0xBB, 0xB9, 0x7B, + 0x0B, 0xB4, 0x74, 0x82, 0xED, 0x6C, 0x26, 0x6E, + 0xF2, 0x56, 0xCA, 0x1A, 0xD1, 0x10, 0x68, 0x40, + 0x28, 0x23, 0xD5, 0x98, 0xB3, 0x6B, 0x75, 0x16, + 0x13, 0x87, 0xE1, 0xF2, 0x3F, 0xAB, 0xC0, 0x2A, + 0xF0, 0x16, 0x59, 0x85, 0x1A, 0x5B, 0x41, 0xB7, + 0x52, 0xB1, 0x79, 0x46, 0x20, 0xDF, 0x59, 0xFB, + 0x33, 0xB3, 0x05, 0xF1, 0x12, 0x8B, 0xDB, 0x7C, + 0x51, 0x90, 0xC9, 0x8A, 0xC9, 0x48, 0x10, 0x54, + 0xF4, 0x0F, 0x88, 0x1D, 0xDB, 0x40, 0x1B, 0x3A, + 0xD7, 0x62, 0xD1, 0x75, 0x73, 0xD6, 0xCA, 0x23, + 0x26, 0xB2, 0xBF, 0x4C, 0xCA, 0x22, 0xDD, 0xF6, + 0xAF, 0x22, 0xB8, 0x4F, 0xC2, 0xC3, 0xB3, 0xD3, + 0xED, 0xFA, 0xBA, 0x2E, 0x38, 0x28, 0x6A, 0xAE, + 0x60, 0xE9, 0x2D, 0x11, 0x33, 0xED, 0x7E, 0xE9, + 0x29, 0x8E, 0x01, 0xB0, 0x0F, 0x13, 0x83, 0x44, + 0x17, 0xFA, 0xB6, 0x54, 0x7C, 0xAC, 0x1F, 0xED, + 0xC9, 0x22, 0xF2, 0x4F, 0x69, 0x24, 0x04, 0xFE, + 0xC2, 0x6A, 0xEB, 0xB0, 0xE4, 0xF5, 0x03, 0xCB, + 0xB3, 0x99, 0x50, 0x66, 0x1F, 0x6B, 0xF3, 0xFE, + 0xB7, 0xBF, 0x8D, 0xBA, 0x59, 0x75, 0x75, 0x51, + 0xB0, 0xA5, 0xB9, 0x66, 0xC8, 0xDD, 0x35, 0xAE, + 0x20, 0x66, 0x21, 0x9B, 0x04, 0x3F, 0xC6, 0x90, + 0x6F, 0x2B, 0x5C, 0x78, 0x49, 0x3C, 0x40, 0xE6, + 0xF9, 0x6B, 0x1A, 0xEF, 0xCE, 0x5A, 0xC1, 0x68, + 0xD3, 0x34, 0x05, 0xD0, 0x21, 0x6C, 0xF8, 0xA8, + 0x55, 0xE4, 0x6E, 0x80, 0x9B, 0xAD, 0xA5, 0xC3, + 0x55, 0x0B, 0x28, 0xBB, 0x54, 0x02, 0xD4, 0xF6, + 0x82, 0x73, 0xAB, 0x56, 0x0B, 0xB1, 0x5F, 0x94, + 0xC3, 0xDA, 0x24, 0x1E, 0x7F, 0x62, 0x6B, 0x98, + 0x6B, 0x2A, 0xF3, 0x92, 0x37, 0x3A, 0xB9, 0xE6, + 0x27, 0xC4, 0xBB, 0xAB, 0xE4, 0x9A, 0x60, 0xD2, + 0xAE, 0xCE, 0xFD, 0x44, 0xEB, 0x1C, 0xCF, 0x74, + 0x54, 0xFC, 0xEC, 0x4F, 0xC2, 0xBA, 0xF4, 0x3B, + 0xAC, 0x03, 0xC7, 0x2E, 0xE6, 0x62, 0x44, 0x61, + 0x42, 0xC8, 0xAE, 0xF1, 0xB2, 0xA9, 0xAC, 0xE0, + 0xCE, 0x23, 0xAF, 0xCC, 0x86, 0x61, 0xFE, 0xC5, + 0xCB, 0xAC, 0x4A, 0x1B, 0x5C, 0xC7, 0x2B, 0xFF, + 0x8A, 0x20, 0x62, 0x0E, 0xB9, 0x1D, 0xDD, 0x93, + 0x19, 0x29, 0xE4, 0xD9, 0x13, 0x1D, 0x28, 0x32, + 0x03, 0x5A, 0xA6, 0x8E, 0x20, 0xC7, 0xD6, 0xC6, + 0x4D, 0x19, 0x17, 0xCC, 0x65, 0xB8, 0x84, 0x0C, + 0x38, 0xB4, 0xA9, 0x45, 0x2B, 0x91, 0x61, 0x79, + 0x87, 0x08, 0xA6, 0xBD, 0x28, 0x9A, 0x58, 0x48, + 0xD5, 0x58, 0xC6, 0xCE, 0xC2, 0xC5, 0x72, 0x16, + 0xD9, 0xF4, 0xED, 0x66, 0xAC, 0xFA, 0x93, 0xE8, + 0x26, 0x10, 0x3B, 0x3D, 0x8F, 0xEA, 0x51, 0xCC, + 0x82, 0xC0, 0xDB, 0xDF, 0xA7, 0x13, 0xFB, 0x1B, + 0x77, 0x7E, 0x6F, 0x9E, 0x3C, 0xC5, 0x86, 0x35, + 0x92, 0x5B, 0x6F, 0x76, 0xA1, 0x71, 0x0D, 0x8C, + 0xDC, 0x95, 0x9F, 0xAC, 0x2C, 0x8E, 0x21, 0x01, + 0x37, 0x06, 0x28, 0x64, 0x4C, 0x23, 0xE2, 0x75, + 0x0B, 0xA7, 0xA4, 0xF5, 0x90, 0x87, 0xD2, 0x43, + 0x71, 0x59, 0x7C, 0x8C, 0xCA, 0x77, 0x3B, 0xC5, + 0x36, 0x46, 0xF7, 0x2F, 0xD3, 0x47, 0x18, 0xD7, + 0xC9, 0x4E, 0x56, 0x2D, 0x49, 0x82, 0xAC, 0x7D, + 0xD7, 0x3D, 0xF1, 0xDD, 0x73, 0x8B, 0xE4, 0xA1, + 0x10, 0x85, 0xB6, 0x94, 0xBE, 0x6A, 0x5E, 0xEE, + 0xBD, 0x60, 0xEB, 0x95, 0x76, 0xA8, 0x52, 0xE1, + 0x47, 0x57, 0xA1, 0x9C, 0xEC, 0x44, 0xE5, 0x6F, + 0x68, 0x34, 0x7E, 0x19, 0xBE, 0xCE, 0x56, 0xC9, + 0xBE, 0xCE, 0xFC, 0xB8, 0x32, 0x6D, 0xCB, 0x84, + 0x59, 0xBF, 0x4D, 0xF6, 0xE1, 0x53, 0x41, 0x61, + 0x5C, 0xFB, 0xD2, 0x48, 0xA6, 0x7F, 0x05, 0xB2, + 0xFC, 0xE8, 0xB2, 0x8A, 0x55, 0x7D, 0x19, 0xC0, + 0x69, 0x3B, 0x91, 0x5D, 0x71, 0xE7, 0xBB, 0x72, + 0x7D, 0xB9, 0x64, 0x6E, 0x8B, 0x5B, 0x70, 0x51, + 0xB5, 0x69, 0x8C, 0xC0, 0xFC, 0x95, 0xB2, 0x43, + 0x08, 0xF8, 0x70, 0xE4, 0x6F, 0x87, 0xA7, 0xDF, + 0x23, 0x84, 0xEE, 0xCF, 0x73, 0x38, 0xDE, 0x99, + 0x4C, 0xF8, 0xF1, 0x2D, 0xA2, 0x68, 0x99, 0xE3, + 0x9B, 0xB8, 0xF6, 0xC1, 0x5C, 0x83, 0x07, 0xE9, + 0xB9, 0xE2, 0x51, 0x62, 0xC8, 0x53, 0xF1, 0xC2, + 0xF7, 0x57, 0x8A, 0xA0, 0x42, 0x3C, 0x18, 0x36, + 0xF3, 0x99, 0xFD, 0x34, 0xB2, 0xF0, 0x1D, 0xBA, + 0x43, 0xEA, 0x72, 0x1C, 0x0B, 0x37, 0x47, 0xBC, + 0xAF, 0xDA, 0x22, 0x1F, 0x1C, 0x08, 0x16, 0x13, + 0xBD, 0xAA, 0x07, 0xFD, 0x7E, 0xCA, 0x70, 0x57, + 0x74, 0xDF, 0x68, 0x6B, 0x9F, 0x2D, 0x56, 0xBD, + 0x21, 0x89, 0xFA, 0x09, 0x04, 0xCA, 0x09, 0xBD, + 0x4F, 0xE6, 0x15, 0xF5, 0x89, 0xAB, 0xAC, 0xB2, + 0xC9, 0xBF, 0xC8, 0xBB, 0x87, 0x83, 0xB4, 0xD3, + 0xDC, 0xB1, 0x25, 0x9B, 0xAE, 0xC5, 0x75, 0x0C, + 0x9E, 0x6A, 0x83, 0x41, 0x85, 0x9D, 0x4B, 0xBF, + 0x62, 0x0C, 0x7D, 0x77, 0xC9, 0x89, 0xA6, 0xE1, + 0x28, 0xBD, 0x13, 0x5D, 0x41, 0x26, 0x80, 0x75, + 0x23, 0x57, 0xE7, 0x4F, 0x4D, 0x02, 0x8E, 0x0F, + 0x43, 0x67, 0xF6, 0xA6, 0xE6, 0xB6, 0x84, 0x8D, + 0xF5, 0x7B, 0x6A, 0x95, 0x73, 0x27, 0x86, 0x02, + 0x72, 0xCB, 0xDF, 0x77, 0x1C, 0x6C, 0x5E, 0xD3, + 0xF0, 0x1C, 0x82, 0x7A, 0x0D, 0xBB, 0x70, 0xA3, + 0x98, 0x8B, 0x7B, 0x4A, 0xFE, 0x2D, 0xB1, 0x5C, + 0x61, 0x89, 0x34, 0x4C, 0x81, 0x4B, 0x52, 0x17, + 0x03, 0x81, 0x54, 0x4F, 0x9E, 0x9E, 0x07, 0x16, + 0xF3, 0xD9, 0x18, 0x01, 0x11, 0xFD, 0x67, 0x18, + 0xA2, 0x64, 0x35, 0x42, 0x81, 0x80, 0x4A, 0xBA, + 0xCB, 0xD5, 0xF5, 0x4A, 0x10, 0x7F, 0xE2, 0xCF, + 0xA5, 0x1E, 0xCB, 0x0C, 0xAB, 0x3E, 0x03, 0x98, + 0x73, 0x89, 0xA4, 0x10, 0x75, 0xD5, 0xAC, 0x3D, + 0xCF, 0x56, 0x75, 0xD8, 0x86, 0xC2, 0x21, 0x42, + 0x99, 0x8D, 0x1B, 0x49, 0x09, 0xFE, 0x86, 0x41, + 0xC9, 0xDC, 0x87, 0x8D, 0x5A, 0xF0, 0xF5, 0xBE, + 0xF5, 0x49, 0x64, 0x5A, 0x7A, 0xC3, 0x5D, 0xE4, + 0xD6, 0xB7, 0x30, 0x92, 0x2A, 0x15, 0x86, 0x02, + 0xBE, 0xBA, 0x6E, 0xF6, 0x3D, 0x2D, 0x70, 0x89, + 0xFB, 0xB5, 0x1E, 0xBA, 0xDA, 0x20, 0x12, 0x49, + 0x22, 0xA0, 0xD8, 0x33, 0x9E, 0x4C, 0xC0, 0x27, + 0x0F, 0x9C, 0x1F, 0xD2, 0xA9, 0xF4, 0xD2, 0xA9, + 0x6D, 0xC5, 0x32, 0x16, 0x35, 0x9F, 0x19, 0x88, + 0xC1, 0xAA, 0xA4, 0x66, 0x33, 0xE6, 0x2C, 0x6A, + 0x6E, 0xA2, 0x1B, 0x33, 0xCB, 0xC3, 0x7E, 0xC5, + 0x31, 0x4D, 0x5C, 0x17, 0x4C, 0x33, 0x7F, 0x09, + 0x01, 0x33, 0x82, 0x84, 0x37, 0x03, 0xEB, 0x0E, + 0xB1, 0x5F, 0x1B, 0x60, 0x8A, 0x2C, 0x9F, 0x39 + }; + static const byte sk_87_draft[] = { + 0x8C, 0x52, 0x4B, 0xD9, 0xAC, 0x48, 0x5C, 0xC6, + 0x9A, 0xA0, 0x75, 0x64, 0xE1, 0x4F, 0x0F, 0x60, + 0x13, 0x0E, 0xDE, 0x34, 0x08, 0xA5, 0xD4, 0x81, + 0xFD, 0x76, 0xC2, 0x51, 0x74, 0x75, 0xA8, 0xFB, + 0x9A, 0xFE, 0xF5, 0x92, 0x58, 0xBB, 0x3C, 0xEB, + 0x4C, 0x5E, 0x83, 0xF9, 0xFF, 0xBC, 0x3B, 0x49, + 0xAE, 0xE1, 0xFC, 0x4B, 0x94, 0x4B, 0x8C, 0x75, + 0xD4, 0x67, 0x75, 0x66, 0x7D, 0x6B, 0xA4, 0xF2, + 0xDA, 0xC2, 0xB7, 0xC4, 0xD8, 0x50, 0x25, 0xCB, + 0x5A, 0xDB, 0xA4, 0xAD, 0xBB, 0x44, 0x20, 0x24, + 0x90, 0xEA, 0xA5, 0x2C, 0xAE, 0x80, 0x22, 0xC9, + 0x59, 0x02, 0xB7, 0x10, 0xB0, 0x5E, 0x1E, 0x5F, + 0x52, 0x7D, 0x88, 0xDA, 0xE2, 0x04, 0xBF, 0x45, + 0xA7, 0xA8, 0x49, 0x97, 0x7D, 0xAD, 0x7C, 0x7C, + 0x9E, 0x9C, 0x4A, 0xCC, 0x36, 0x33, 0x0F, 0x30, + 0xFA, 0xDE, 0x52, 0xE9, 0xAE, 0x23, 0x29, 0x13, + 0x10, 0x17, 0x8A, 0xD0, 0x08, 0x8E, 0xE1, 0x10, + 0x30, 0xD0, 0x84, 0x65, 0x92, 0x12, 0x2A, 0x81, + 0x26, 0x2E, 0x11, 0x14, 0x30, 0x61, 0x38, 0x61, + 0x64, 0x42, 0x05, 0x08, 0x91, 0x90, 0x4C, 0x06, + 0x82, 0xCC, 0x90, 0x45, 0x10, 0x39, 0x90, 0x22, + 0x40, 0x2A, 0x9B, 0x16, 0x26, 0x9A, 0xA8, 0x50, + 0x91, 0x12, 0x70, 0x91, 0x20, 0x4D, 0xC0, 0x34, + 0x90, 0x18, 0x28, 0x31, 0x10, 0x02, 0x11, 0x22, + 0xB3, 0x6C, 0x8B, 0xB8, 0x2C, 0x22, 0xB0, 0x69, + 0x53, 0x36, 0x31, 0x61, 0x42, 0x6C, 0xD9, 0x06, + 0x6A, 0xD9, 0x04, 0x45, 0xDB, 0x18, 0x05, 0x12, + 0x37, 0x4A, 0xD4, 0x06, 0x64, 0xD3, 0xA2, 0x85, + 0xA0, 0x38, 0x8A, 0x14, 0xA5, 0x85, 0x50, 0x20, + 0x85, 0xE4, 0xA8, 0x24, 0xC3, 0xC6, 0x31, 0xC9, + 0x34, 0x4E, 0xD2, 0x14, 0x68, 0x82, 0x90, 0x85, + 0xC4, 0x02, 0x61, 0x24, 0x38, 0x05, 0x01, 0xA3, + 0x50, 0x48, 0x08, 0x62, 0x20, 0xB0, 0x25, 0x5B, + 0xA6, 0x4D, 0x98, 0x92, 0x11, 0xC2, 0x06, 0x00, + 0xD1, 0xB0, 0x4D, 0x21, 0xA4, 0x8C, 0x01, 0x16, + 0x72, 0x11, 0xA6, 0x20, 0xD0, 0x16, 0x45, 0x10, + 0x31, 0x8E, 0xCB, 0xC2, 0x69, 0x02, 0x08, 0x91, + 0xD4, 0x30, 0x89, 0x03, 0x41, 0x05, 0x93, 0x16, + 0x8E, 0x5A, 0x18, 0x04, 0x41, 0x10, 0x6D, 0x18, + 0x42, 0x70, 0x53, 0x16, 0x31, 0x52, 0x30, 0x8E, + 0x0C, 0x49, 0x66, 0x0C, 0x90, 0x0C, 0xA4, 0x08, + 0x2E, 0x41, 0x92, 0x05, 0x24, 0x07, 0x30, 0x12, + 0x46, 0x72, 0x13, 0x99, 0x20, 0xE0, 0xA2, 0x4C, + 0x1B, 0x14, 0x52, 0x5A, 0x90, 0x05, 0x08, 0x82, + 0x31, 0x53, 0xC2, 0x90, 0xCC, 0x42, 0x68, 0x18, + 0xB0, 0x2C, 0x00, 0x80, 0x65, 0x58, 0x12, 0x84, + 0x19, 0x90, 0x08, 0x44, 0x26, 0x4A, 0x10, 0xA9, + 0x0C, 0x12, 0x25, 0x0C, 0x9C, 0x10, 0x25, 0x0C, + 0x28, 0x25, 0xD8, 0x46, 0x84, 0x1A, 0x22, 0x71, + 0x5B, 0x28, 0x6E, 0x98, 0x02, 0x51, 0x61, 0xB4, + 0x51, 0x01, 0xA1, 0x21, 0x24, 0x39, 0x12, 0xC8, + 0x08, 0x85, 0xD1, 0x34, 0x64, 0xA4, 0xA8, 0x04, + 0xA2, 0xC0, 0x09, 0x44, 0x48, 0x48, 0x03, 0x37, + 0x00, 0x20, 0x05, 0x4D, 0x20, 0xA4, 0x05, 0x11, + 0x18, 0x82, 0x42, 0x94, 0x4D, 0x24, 0x16, 0x01, + 0x02, 0x93, 0x4C, 0x00, 0x16, 0x06, 0xC1, 0xC0, + 0x0C, 0x8B, 0xC0, 0x41, 0x41, 0x06, 0x42, 0xA3, + 0xC6, 0x64, 0x1A, 0x85, 0x91, 0x41, 0x06, 0x49, + 0x04, 0xA7, 0x44, 0x82, 0x22, 0x6A, 0x50, 0x08, + 0x0E, 0x14, 0x18, 0x20, 0x4B, 0x88, 0x91, 0x01, + 0xA0, 0x49, 0x1A, 0x85, 0x4D, 0x94, 0x18, 0x10, + 0x0A, 0x05, 0x44, 0x94, 0x38, 0x05, 0x93, 0x40, + 0x68, 0x23, 0x07, 0x85, 0xE2, 0x12, 0x22, 0x9B, + 0xB8, 0x08, 0xD2, 0x10, 0x2A, 0x08, 0xA8, 0x10, + 0x92, 0x40, 0x2D, 0xD8, 0x44, 0x4C, 0xCC, 0x94, + 0x05, 0x24, 0x43, 0x4C, 0xD3, 0xC2, 0x48, 0x10, + 0x21, 0x2D, 0xC9, 0xB6, 0x08, 0xC9, 0x06, 0x4D, + 0xE1, 0x90, 0x20, 0x14, 0x24, 0x70, 0x5C, 0x84, + 0x28, 0xC0, 0xC2, 0x81, 0x22, 0x13, 0x50, 0x44, + 0x84, 0x91, 0xCA, 0xA2, 0x48, 0x12, 0x91, 0x05, + 0x5B, 0x92, 0x8D, 0x92, 0x92, 0x24, 0x82, 0x42, + 0x48, 0x03, 0x37, 0x46, 0xD8, 0x44, 0x86, 0x44, + 0x20, 0x89, 0xE4, 0xC2, 0x84, 0xC2, 0x04, 0x65, + 0x49, 0xA8, 0x4D, 0xA4, 0x38, 0x28, 0xDB, 0xA4, + 0x64, 0x24, 0x00, 0x51, 0xC8, 0x12, 0x6D, 0x19, + 0x82, 0x24, 0xCB, 0x00, 0x44, 0x4B, 0x20, 0x20, + 0x9B, 0x82, 0x4C, 0x5C, 0xA8, 0x08, 0xD2, 0xB6, + 0x8C, 0x08, 0x35, 0x20, 0xC0, 0x92, 0x45, 0xE3, + 0xB4, 0x2C, 0x50, 0x32, 0x0E, 0xD1, 0x82, 0x11, + 0x4A, 0x96, 0x08, 0x1C, 0x86, 0x29, 0x02, 0x19, + 0x71, 0x12, 0x03, 0x6E, 0x94, 0x08, 0x50, 0x12, + 0x27, 0x20, 0x0B, 0x10, 0x12, 0xA1, 0x18, 0x06, + 0x5A, 0x36, 0x4C, 0x93, 0xB4, 0x68, 0x21, 0xA7, + 0x28, 0x09, 0x34, 0x91, 0x18, 0x93, 0x49, 0x4A, + 0x32, 0x60, 0x00, 0x29, 0x2D, 0x94, 0x48, 0x44, + 0x09, 0x94, 0x2C, 0x21, 0x07, 0x6C, 0x41, 0x38, + 0x60, 0x8C, 0x10, 0x46, 0x11, 0x19, 0x65, 0x01, + 0x46, 0x60, 0x1A, 0x29, 0x42, 0x23, 0x30, 0x29, + 0x40, 0x96, 0x85, 0x81, 0xC6, 0x6C, 0x09, 0xA2, + 0x31, 0x23, 0xC9, 0x84, 0x18, 0x27, 0x61, 0x02, + 0xA6, 0x05, 0x1B, 0x11, 0x32, 0xD1, 0x80, 0x24, + 0x59, 0x22, 0x52, 0x21, 0x34, 0x64, 0x0A, 0x21, + 0x52, 0x10, 0xC2, 0x80, 0x5C, 0x98, 0x0D, 0x81, + 0xA0, 0x84, 0x14, 0x97, 0x04, 0xCC, 0xC2, 0x04, + 0x1A, 0x81, 0x45, 0x23, 0x44, 0x6C, 0x13, 0xC0, + 0x44, 0x59, 0xC2, 0x68, 0x64, 0x08, 0x52, 0x51, + 0x30, 0x71, 0x12, 0x49, 0x70, 0x12, 0x94, 0x84, + 0x80, 0x12, 0x12, 0x1B, 0x00, 0x50, 0x84, 0x10, + 0x45, 0x4A, 0x30, 0x10, 0x22, 0x95, 0x49, 0xC9, + 0x82, 0x24, 0x03, 0x35, 0x21, 0x18, 0x16, 0x72, + 0x09, 0x89, 0x65, 0x88, 0xB2, 0x89, 0x41, 0xB4, + 0x90, 0x92, 0x38, 0x8C, 0x08, 0x23, 0x26, 0x0B, + 0x80, 0x61, 0x84, 0x28, 0x6A, 0x4C, 0x98, 0x44, + 0x10, 0xB9, 0x30, 0x93, 0x02, 0x49, 0x22, 0x13, + 0x80, 0x1C, 0xC3, 0x48, 0x50, 0xA8, 0x20, 0x1C, + 0x05, 0x00, 0x5B, 0x02, 0x41, 0xD2, 0x84, 0x61, + 0x4B, 0x40, 0x46, 0x20, 0x21, 0x44, 0xD9, 0xC4, + 0x21, 0xD3, 0xA4, 0x4D, 0xC0, 0xC0, 0x09, 0x5B, + 0x28, 0x91, 0x18, 0x15, 0x41, 0x18, 0xC5, 0x4C, + 0x14, 0xB7, 0x61, 0xDB, 0x34, 0x25, 0x02, 0x06, + 0x41, 0x14, 0xA9, 0x65, 0x0B, 0x10, 0x04, 0x23, + 0xC7, 0x49, 0x13, 0x47, 0x0A, 0xD0, 0x30, 0x80, + 0x99, 0x32, 0x68, 0x50, 0x18, 0x06, 0xA2, 0x28, + 0x65, 0x13, 0x35, 0x82, 0xD3, 0x06, 0x81, 0x22, + 0x49, 0x4D, 0x48, 0x44, 0x30, 0xCA, 0x96, 0x2C, + 0x12, 0xC8, 0x08, 0xA1, 0x24, 0x2C, 0x52, 0xA8, + 0x28, 0x23, 0x14, 0x0A, 0xD4, 0x20, 0x4D, 0x18, + 0x12, 0x72, 0xD4, 0x80, 0x44, 0xDC, 0x26, 0x2C, + 0x88, 0x10, 0x0A, 0x04, 0x14, 0x51, 0xC1, 0x96, + 0x00, 0xA3, 0x40, 0x30, 0x99, 0x48, 0x92, 0x9B, + 0x08, 0x86, 0x81, 0x04, 0x20, 0x4C, 0xB2, 0x29, + 0x18, 0x31, 0x08, 0x09, 0x23, 0x8C, 0x4C, 0x02, + 0x6A, 0xCA, 0x00, 0x62, 0x09, 0x22, 0x2D, 0x21, + 0x00, 0x02, 0x0A, 0x39, 0x41, 0x04, 0xA3, 0x50, + 0x90, 0x80, 0x2D, 0x59, 0xB4, 0x71, 0x13, 0x16, + 0x31, 0x11, 0x90, 0x4C, 0xC3, 0x14, 0x20, 0x60, + 0xB2, 0x30, 0x0A, 0xB6, 0x24, 0x21, 0xA9, 0x10, + 0x89, 0x80, 0x88, 0x44, 0x06, 0x8A, 0x91, 0x22, + 0x8E, 0xD9, 0x36, 0x86, 0x10, 0x46, 0x0A, 0xE1, + 0x16, 0x85, 0x42, 0x40, 0x6C, 0x09, 0x49, 0x11, + 0xE0, 0x88, 0x68, 0x12, 0x08, 0x68, 0x5C, 0x26, + 0x24, 0x04, 0xA8, 0x70, 0xC8, 0x08, 0x05, 0x13, + 0x87, 0x41, 0x23, 0x29, 0x72, 0xC9, 0xB8, 0x88, + 0x1B, 0x22, 0x66, 0x11, 0xA5, 0x2D, 0x11, 0x29, + 0x12, 0x50, 0x12, 0x70, 0x03, 0x09, 0x6A, 0x4B, + 0x88, 0x4C, 0xD2, 0xC8, 0x31, 0x40, 0x26, 0x40, + 0x4C, 0x04, 0x50, 0x58, 0x16, 0x71, 0x90, 0xC2, + 0x00, 0x0A, 0x30, 0x8A, 0xDC, 0x24, 0x85, 0x19, + 0xB0, 0x65, 0x1A, 0xA3, 0x64, 0x13, 0xA3, 0x45, + 0xC8, 0x48, 0x91, 0x91, 0x12, 0x20, 0xDC, 0x42, + 0x40, 0x24, 0xC0, 0x4D, 0xA3, 0x98, 0x10, 0x40, + 0x26, 0x25, 0xDC, 0xB4, 0x68, 0x4B, 0xC2, 0x45, + 0x13, 0x06, 0x91, 0xC8, 0x92, 0x24, 0x82, 0xA8, + 0x20, 0x4C, 0x30, 0x48, 0x52, 0x06, 0x01, 0x0B, + 0x24, 0x51, 0x41, 0x36, 0x40, 0x93, 0xC4, 0x70, + 0x44, 0x40, 0x2C, 0x24, 0x28, 0x22, 0x81, 0xA4, + 0x4C, 0x43, 0x84, 0x60, 0x20, 0x23, 0x90, 0x01, + 0x94, 0x6C, 0xDB, 0x28, 0x21, 0x93, 0x30, 0x80, + 0x93, 0xC0, 0x25, 0xC8, 0xA6, 0x50, 0xCA, 0x24, + 0x26, 0xD1, 0x40, 0x31, 0x04, 0xC4, 0x8D, 0xE2, + 0xC0, 0x04, 0x08, 0x33, 0x8C, 0x18, 0x87, 0x91, + 0xC8, 0xC8, 0x71, 0x40, 0x46, 0x06, 0x00, 0x44, + 0x20, 0x22, 0x49, 0x70, 0x11, 0x45, 0x90, 0x02, + 0xC3, 0x61, 0x60, 0xB4, 0x25, 0x80, 0x16, 0x21, + 0x11, 0x09, 0x04, 0x88, 0x04, 0x05, 0xCC, 0x36, + 0x20, 0x01, 0xB1, 0x2C, 0x64, 0xB6, 0x50, 0x54, + 0x32, 0x42, 0x0B, 0x08, 0x8D, 0x12, 0x39, 0x0D, + 0x10, 0x29, 0x52, 0x88, 0xB0, 0x04, 0x11, 0x38, + 0x44, 0xD2, 0xA6, 0x71, 0x0B, 0x45, 0x48, 0x9C, + 0x34, 0x72, 0xA0, 0x28, 0x49, 0x82, 0x16, 0x86, + 0x12, 0x18, 0x61, 0x04, 0x41, 0x0D, 0x8A, 0xA6, + 0x41, 0x80, 0xA8, 0x61, 0xDA, 0x30, 0x65, 0x82, + 0x84, 0x30, 0x08, 0xA3, 0x29, 0x04, 0x33, 0x8E, + 0x02, 0x24, 0x0D, 0x9C, 0x44, 0x10, 0xC9, 0x02, + 0x81, 0x53, 0x06, 0x66, 0x8B, 0x06, 0x90, 0x03, + 0x87, 0x69, 0x21, 0xC9, 0x69, 0x83, 0x46, 0x4E, + 0x14, 0x24, 0x89, 0x8C, 0xA0, 0x6C, 0x99, 0xA2, + 0x2C, 0x11, 0x37, 0x66, 0x0C, 0xA6, 0x4D, 0xD3, + 0xC8, 0x70, 0x03, 0x02, 0x61, 0xC3, 0xB6, 0x65, + 0x23, 0xC1, 0x6C, 0x10, 0x34, 0x8D, 0x1A, 0xC1, + 0x31, 0x43, 0x40, 0x44, 0xD4, 0x08, 0x02, 0x0A, + 0x36, 0x20, 0xE3, 0x26, 0x42, 0x0A, 0x48, 0x26, + 0x1A, 0x13, 0x44, 0x0C, 0x18, 0x61, 0x91, 0x96, + 0x84, 0x02, 0x17, 0x46, 0x9C, 0x20, 0x40, 0x41, + 0xC6, 0x2D, 0x1B, 0x16, 0x0C, 0x98, 0xB2, 0x90, + 0x1A, 0x20, 0x84, 0xE2, 0x34, 0x2D, 0xCB, 0x14, + 0x44, 0x93, 0xC6, 0x8D, 0x58, 0xB2, 0x69, 0x22, + 0xB2, 0x88, 0xC0, 0xB8, 0x2D, 0xA2, 0xC2, 0x31, + 0x20, 0xA3, 0x24, 0x11, 0x46, 0x48, 0x4A, 0xA6, + 0x50, 0x24, 0x09, 0x21, 0x1A, 0x01, 0x0D, 0x20, + 0x36, 0x01, 0xC4, 0x34, 0x70, 0xDA, 0x16, 0x68, + 0x84, 0x22, 0x4C, 0x11, 0x14, 0x09, 0x13, 0xC4, + 0x68, 0x11, 0x41, 0x2D, 0x1C, 0x10, 0x31, 0xDC, + 0xB2, 0x64, 0x42, 0x36, 0x08, 0x5C, 0x10, 0x88, + 0x04, 0x91, 0x25, 0xE1, 0xA0, 0x20, 0x14, 0x18, + 0x12, 0x14, 0x94, 0x91, 0x4C, 0xC2, 0x24, 0xD4, + 0x06, 0x71, 0x21, 0x02, 0x8D, 0xD4, 0x88, 0x30, + 0xC9, 0x36, 0x0E, 0xE4, 0x82, 0x81, 0xC0, 0x04, + 0x6D, 0x24, 0x23, 0x09, 0x21, 0x45, 0x45, 0x20, + 0x06, 0x65, 0xC2, 0x30, 0x2A, 0x18, 0x30, 0x8E, + 0x24, 0x83, 0x89, 0x93, 0x32, 0x66, 0xC1, 0x48, + 0x45, 0x62, 0x48, 0x0A, 0x52, 0xB8, 0x80, 0x11, + 0x86, 0x21, 0x04, 0x34, 0x11, 0x24, 0xB5, 0x6C, + 0x50, 0x36, 0x0A, 0x19, 0xA7, 0x8C, 0x14, 0x90, + 0x0D, 0x1A, 0xA5, 0x68, 0x0B, 0xB1, 0x11, 0x50, + 0x40, 0x08, 0x48, 0xB6, 0x31, 0x14, 0x28, 0x8D, + 0xE3, 0x47, 0xB4, 0xA1, 0x44, 0x94, 0xCC, 0x9F, + 0x0B, 0x94, 0x9F, 0x25, 0x49, 0xD9, 0xB3, 0x8F, + 0x71, 0xF4, 0x17, 0xA4, 0xA6, 0xAC, 0x24, 0x58, + 0x14, 0x25, 0x03, 0xC8, 0x63, 0x3E, 0x10, 0xA8, + 0xD4, 0x10, 0xD7, 0x90, 0x4A, 0x28, 0x37, 0x90, + 0x70, 0x27, 0xE3, 0x56, 0x5F, 0x04, 0x67, 0x76, + 0xC3, 0x67, 0x3F, 0xF5, 0xA5, 0x11, 0xA2, 0x2C, + 0x11, 0x01, 0x5D, 0x63, 0x71, 0x1A, 0xE6, 0x70, + 0x86, 0x46, 0xAB, 0xCE, 0x03, 0xB6, 0x82, 0xAF, + 0x51, 0xBA, 0x81, 0x94, 0x9C, 0x82, 0x36, 0xA9, + 0x49, 0xA5, 0xA3, 0x11, 0x08, 0x8C, 0x4B, 0x13, + 0x41, 0xF0, 0x08, 0xFD, 0xB2, 0x99, 0xED, 0xA8, + 0x07, 0x61, 0x3C, 0x2E, 0xBC, 0x49, 0x7B, 0x1C, + 0xBC, 0x87, 0xBC, 0xAE, 0x5F, 0x5E, 0x8F, 0x5D, + 0xE7, 0xB9, 0x0C, 0x70, 0x36, 0x25, 0x61, 0xFD, + 0x95, 0x9F, 0xAE, 0x0F, 0x8D, 0xF3, 0xA2, 0x45, + 0x24, 0xA7, 0xDE, 0x60, 0xD1, 0x4E, 0x6D, 0xAC, + 0xC7, 0x6A, 0x32, 0x42, 0xC0, 0x73, 0xEB, 0x78, + 0x50, 0xF4, 0x49, 0x52, 0x5E, 0x6F, 0x81, 0x42, + 0x54, 0xF8, 0x82, 0x05, 0xC9, 0x64, 0x74, 0x6A, + 0x60, 0x5E, 0x36, 0x59, 0x40, 0x50, 0xA3, 0xFE, + 0xDA, 0xE2, 0x6D, 0x8D, 0x6E, 0xE4, 0x5A, 0x27, + 0x73, 0x89, 0xDB, 0x0C, 0x5B, 0x14, 0xD9, 0xED, + 0xB2, 0xC7, 0x1D, 0x71, 0x93, 0x91, 0x0A, 0x72, + 0x32, 0xBE, 0xA3, 0xD8, 0x95, 0x8C, 0x94, 0x7E, + 0x63, 0xEB, 0xCE, 0x8B, 0xFC, 0xB0, 0x3F, 0x77, + 0x5C, 0x43, 0x48, 0x18, 0x83, 0xFE, 0xC8, 0xDA, + 0x89, 0xF2, 0x3B, 0x54, 0x82, 0x44, 0xC6, 0x9C, + 0xCC, 0x77, 0x0A, 0xC1, 0x6F, 0xB9, 0x98, 0x10, + 0xD5, 0xF2, 0x60, 0xFF, 0x38, 0xD2, 0x0D, 0xD6, + 0x8C, 0x38, 0x54, 0x5B, 0xD8, 0x38, 0x84, 0x50, + 0x36, 0xF4, 0x02, 0xC1, 0x06, 0x0F, 0x15, 0x1B, + 0xC8, 0x90, 0x9B, 0x6E, 0x36, 0xC8, 0x3F, 0xE9, + 0x8B, 0x62, 0x15, 0x6F, 0xF0, 0xC2, 0x86, 0x7F, + 0xD1, 0xB5, 0x97, 0x53, 0xAE, 0x41, 0xAE, 0x21, + 0x84, 0xAC, 0x57, 0xA5, 0x1F, 0xA7, 0xC7, 0x24, + 0xDF, 0xDE, 0x2F, 0x3C, 0xCD, 0xA2, 0x7E, 0x1D, + 0x97, 0xE1, 0x96, 0xC5, 0xB4, 0x7D, 0xF9, 0x5F, + 0x7E, 0xEF, 0x09, 0xC4, 0xF3, 0x57, 0xF0, 0x51, + 0x73, 0xAB, 0x0E, 0x6A, 0xCA, 0x64, 0xE4, 0x99, + 0x0F, 0xD2, 0x20, 0xAC, 0x72, 0xF1, 0xA8, 0x23, + 0x8F, 0x94, 0x63, 0xDC, 0xB3, 0xBB, 0x62, 0x2C, + 0xEA, 0xA6, 0x27, 0x5A, 0x93, 0xC6, 0xCD, 0xCE, + 0x1E, 0x09, 0xAF, 0x89, 0xEC, 0x22, 0xE4, 0x30, + 0x2D, 0xB9, 0xCD, 0x08, 0x2E, 0x12, 0x76, 0x79, + 0x99, 0xBC, 0xA0, 0x34, 0x0B, 0xDA, 0x89, 0x08, + 0x14, 0x60, 0x7B, 0x98, 0xE6, 0xAF, 0xD2, 0xE1, + 0x87, 0xC8, 0xDA, 0x50, 0xF7, 0x10, 0x2C, 0x72, + 0x74, 0x50, 0xD0, 0x3C, 0x98, 0x06, 0xFE, 0xEB, + 0xC6, 0xC5, 0x69, 0x31, 0x06, 0xE2, 0x2E, 0x7E, + 0x7D, 0x3D, 0x2B, 0x1F, 0x48, 0x43, 0xC5, 0x95, + 0xDA, 0x84, 0x08, 0x1E, 0x2B, 0x50, 0x6D, 0x91, + 0xA6, 0x2B, 0xCD, 0x08, 0x43, 0x7B, 0xA2, 0xD8, + 0x60, 0x6E, 0xF7, 0x80, 0x08, 0xC3, 0x3F, 0x35, + 0xF3, 0x70, 0xA5, 0xC7, 0x56, 0xFC, 0xBD, 0x34, + 0x46, 0x7B, 0xBF, 0x63, 0x19, 0xAC, 0xB6, 0xC3, + 0x1B, 0x81, 0x84, 0x9F, 0xBB, 0x54, 0x05, 0x99, + 0xAE, 0x43, 0xE2, 0xA5, 0x20, 0xFD, 0x5C, 0xC7, + 0x25, 0x47, 0xB1, 0xFD, 0x80, 0xB5, 0x78, 0xC2, + 0x00, 0x98, 0x02, 0xB9, 0x61, 0x2A, 0xBA, 0x39, + 0xC7, 0x20, 0xB8, 0x7D, 0x7A, 0x03, 0x68, 0xE5, + 0x37, 0x71, 0x1F, 0x72, 0xAA, 0x41, 0x61, 0xB4, + 0xC0, 0xC2, 0xD3, 0x7A, 0xCD, 0xD2, 0xED, 0xC2, + 0xC5, 0x99, 0x8C, 0x62, 0xA3, 0x7D, 0xC8, 0x9C, + 0xD2, 0x50, 0x02, 0x0D, 0xCB, 0x68, 0x15, 0xB0, + 0xD6, 0x19, 0x03, 0xC8, 0x01, 0x12, 0x72, 0xA1, + 0x3A, 0xC2, 0xA6, 0x63, 0x51, 0x26, 0x03, 0x5D, + 0x3F, 0x1D, 0x3B, 0x0E, 0x30, 0x6B, 0xB7, 0xEC, + 0xB6, 0x8E, 0x2D, 0x76, 0xC8, 0xD7, 0xAE, 0x59, + 0x81, 0xFC, 0x5F, 0x57, 0x5E, 0xAD, 0xA0, 0x20, + 0xC8, 0xB4, 0x91, 0x2D, 0xEC, 0x03, 0xC4, 0xC6, + 0x55, 0x05, 0x87, 0xA4, 0xA2, 0x21, 0x09, 0x25, + 0x97, 0x21, 0xA4, 0x46, 0x45, 0x46, 0x40, 0x3B, + 0xDC, 0x6F, 0xCD, 0xFB, 0xFB, 0xD9, 0xF4, 0x2C, + 0xEC, 0xF1, 0xC4, 0x73, 0x41, 0x30, 0x60, 0x63, + 0x9A, 0xF2, 0xA5, 0x26, 0x78, 0x9A, 0x5E, 0x70, + 0x98, 0xDE, 0x35, 0x10, 0xA0, 0x5D, 0x45, 0xD5, + 0x95, 0xF7, 0x11, 0xBC, 0x99, 0xD3, 0x00, 0x67, + 0x9A, 0x30, 0x85, 0x36, 0x50, 0xDB, 0x18, 0xEA, + 0x6D, 0xB2, 0xF3, 0x14, 0xDA, 0x23, 0xE2, 0x8A, + 0x44, 0x21, 0x25, 0xD4, 0xA3, 0x28, 0x43, 0xA0, + 0xC6, 0x5C, 0x99, 0xB0, 0x72, 0x6B, 0xC2, 0x1A, + 0x30, 0xBE, 0x6B, 0x7B, 0xE0, 0x31, 0x54, 0x8C, + 0x29, 0xE5, 0xC6, 0x69, 0x53, 0xDE, 0x05, 0x1E, + 0x43, 0xCC, 0x7E, 0x9A, 0x82, 0x4A, 0xC4, 0x0A, + 0x50, 0x65, 0xDC, 0xD8, 0xF9, 0x01, 0x32, 0x65, + 0x1E, 0xF9, 0xA4, 0xCC, 0x07, 0xB9, 0x55, 0x97, + 0x45, 0xA9, 0x61, 0xF8, 0xBE, 0x99, 0x00, 0x12, + 0xD8, 0x17, 0x62, 0xFB, 0x89, 0xE7, 0x05, 0x5E, + 0x1B, 0xCD, 0x2B, 0x09, 0x6C, 0x5A, 0x5C, 0xA3, + 0x66, 0x4D, 0x02, 0x78, 0x0C, 0xC3, 0x63, 0x30, + 0xD0, 0xFA, 0x7B, 0x11, 0x00, 0x40, 0xDD, 0xF0, + 0x8C, 0x7C, 0xBA, 0x4C, 0x63, 0x78, 0xDA, 0xBB, + 0xDF, 0xF9, 0xC9, 0xA4, 0x40, 0x25, 0x86, 0xD1, + 0xBA, 0x22, 0xD7, 0x69, 0x98, 0x4E, 0x9D, 0x15, + 0x21, 0xA8, 0x56, 0xC0, 0xFF, 0x52, 0xE4, 0xB4, + 0x0F, 0xB2, 0x53, 0xE7, 0xA1, 0x34, 0x18, 0xEA, + 0x5B, 0x25, 0x42, 0x13, 0xE3, 0x13, 0xE7, 0xDF, + 0x54, 0x2B, 0x8D, 0x70, 0x51, 0xC7, 0x60, 0xB1, + 0x1E, 0x4D, 0x3A, 0x46, 0x04, 0xA1, 0x11, 0x43, + 0xAD, 0x24, 0x29, 0x90, 0xC9, 0x04, 0x15, 0xC5, + 0x07, 0xE5, 0x46, 0xB8, 0x50, 0x16, 0x6B, 0x66, + 0xFE, 0x1C, 0x8B, 0xFC, 0x20, 0x9C, 0xC4, 0x88, + 0x10, 0x36, 0x5E, 0x56, 0xE8, 0x45, 0x75, 0x89, + 0xFB, 0xD6, 0xD0, 0x8D, 0x9D, 0x53, 0xAE, 0x89, + 0x19, 0x54, 0xCF, 0xE1, 0xFF, 0x12, 0x13, 0xF2, + 0xC7, 0xBE, 0x4C, 0x1E, 0xB0, 0x70, 0x6E, 0xDC, + 0x0A, 0x64, 0x3B, 0x60, 0x3A, 0xEA, 0x0D, 0x41, + 0xDD, 0x8E, 0x09, 0xB9, 0x96, 0x8F, 0x6A, 0x49, + 0x50, 0xEF, 0xDF, 0xD7, 0x73, 0x8D, 0x16, 0x32, + 0xA8, 0x5C, 0x0A, 0x90, 0x18, 0xA1, 0xEB, 0x19, + 0xCC, 0x50, 0xD5, 0x59, 0xD7, 0x35, 0x3F, 0xBA, + 0x38, 0x1B, 0x5F, 0x71, 0x56, 0x70, 0xB3, 0x20, + 0x4D, 0x9E, 0x16, 0xA8, 0xF7, 0x35, 0x19, 0xD2, + 0x09, 0x0A, 0x22, 0x28, 0x81, 0x61, 0x26, 0x5B, + 0x9C, 0xEC, 0x9D, 0x4A, 0x61, 0xCF, 0x0D, 0x3C, + 0x88, 0xEA, 0x0B, 0x7A, 0xA7, 0xC6, 0xAE, 0x31, + 0xBE, 0xC2, 0xBA, 0x48, 0xBB, 0x9D, 0x06, 0xE1, + 0x32, 0x6D, 0x80, 0xCE, 0x27, 0x5C, 0x6F, 0x13, + 0x79, 0x35, 0x9F, 0x9C, 0x11, 0xEA, 0xDB, 0xF5, + 0x49, 0x15, 0xB6, 0x51, 0x86, 0xFC, 0x62, 0x34, + 0x3D, 0x58, 0x6B, 0x0E, 0xF8, 0x3B, 0xBB, 0x42, + 0xF6, 0x2D, 0x5C, 0xE2, 0xF3, 0xAA, 0x9F, 0x03, + 0x43, 0xE9, 0x9E, 0x90, 0xB9, 0xFF, 0x55, 0x93, + 0x60, 0xF8, 0x10, 0x2F, 0xFC, 0xBD, 0x40, 0x23, + 0xB8, 0x4F, 0x4C, 0x7A, 0x74, 0x9F, 0xDC, 0x55, + 0xDF, 0x5E, 0xCD, 0x23, 0xEB, 0xAC, 0x47, 0x4E, + 0x0D, 0x0F, 0xBE, 0xDE, 0x02, 0x64, 0x61, 0x7E, + 0x73, 0x78, 0x8E, 0x25, 0xE9, 0x7D, 0x66, 0xE5, + 0x82, 0xBF, 0x98, 0x5B, 0x36, 0xCE, 0x17, 0x72, + 0x56, 0x9C, 0xDA, 0x63, 0x77, 0x55, 0x8B, 0xA9, + 0x75, 0xF5, 0x28, 0xC3, 0x78, 0x6D, 0x8F, 0xC2, + 0x75, 0x5F, 0x28, 0x9E, 0x3F, 0xFB, 0xF1, 0xFD, + 0xB7, 0xDE, 0x05, 0x3C, 0xD3, 0xE8, 0xD7, 0x7A, + 0x7D, 0xC9, 0xF7, 0x9D, 0x58, 0xB4, 0xA6, 0x21, + 0x25, 0xFC, 0x52, 0x84, 0x21, 0xF6, 0x0B, 0x6D, + 0xA6, 0x62, 0x51, 0x97, 0xCD, 0xA9, 0xA1, 0x0C, + 0x88, 0x21, 0x67, 0xA5, 0xFB, 0x8C, 0x8A, 0x50, + 0xC5, 0x21, 0x91, 0x3A, 0xAB, 0x95, 0x96, 0xF3, + 0x30, 0x6D, 0x08, 0x42, 0x07, 0x4B, 0x78, 0x1F, + 0xC1, 0xD3, 0x41, 0x15, 0x68, 0xED, 0x93, 0x09, + 0xC7, 0x8B, 0xF9, 0x77, 0x25, 0xD3, 0xCE, 0x2B, + 0xA2, 0x0D, 0xB4, 0xC6, 0x84, 0x7F, 0x8E, 0xE5, + 0x24, 0x46, 0x59, 0x8D, 0x6F, 0x0F, 0x0C, 0xA8, + 0xFC, 0x04, 0x9B, 0x4D, 0x2B, 0xA7, 0x70, 0x1F, + 0x46, 0x7E, 0x76, 0x03, 0xC6, 0x7E, 0xA5, 0x3D, + 0x79, 0xE2, 0xF1, 0xAC, 0xBC, 0xDD, 0xF6, 0x91, + 0x69, 0x4C, 0x44, 0x1F, 0xC3, 0xBF, 0x9F, 0xFC, + 0x4E, 0xB0, 0x79, 0x30, 0x68, 0x89, 0xAC, 0xF2, + 0xD7, 0xC6, 0xE1, 0x6C, 0x37, 0xFB, 0xB3, 0x38, + 0x44, 0x2C, 0x97, 0xAB, 0xDA, 0x2C, 0x88, 0xC7, + 0xF2, 0x80, 0x08, 0x00, 0x4E, 0x44, 0xED, 0xBE, + 0xA4, 0x28, 0x3D, 0xC1, 0xCF, 0x9E, 0x83, 0xE7, + 0x2E, 0x7F, 0xF5, 0x08, 0x47, 0x26, 0xE0, 0xBD, + 0x1A, 0x17, 0xDB, 0x2F, 0xED, 0x19, 0x2E, 0x65, + 0x1B, 0x62, 0x5F, 0x08, 0x82, 0x10, 0x61, 0xCB, + 0xAA, 0xA7, 0xF8, 0x59, 0x4B, 0x46, 0xCB, 0xA2, + 0xCB, 0x41, 0x34, 0x30, 0x51, 0x58, 0x2A, 0xEE, + 0xE1, 0x5E, 0xAC, 0xCA, 0xBF, 0x37, 0x45, 0x98, + 0xBD, 0x93, 0x1B, 0x5A, 0x5E, 0x92, 0x14, 0x05, + 0x75, 0x2D, 0xFB, 0x8F, 0xBD, 0x24, 0x9B, 0x81, + 0xCD, 0xDD, 0xF5, 0xBE, 0x05, 0x0D, 0xBD, 0x4B, + 0x2B, 0x8C, 0x0A, 0xF0, 0x3A, 0x85, 0xD6, 0x74, + 0x65, 0x7F, 0x98, 0xF8, 0x57, 0xA2, 0x36, 0xA2, + 0xFE, 0xE4, 0xB4, 0xA4, 0x0D, 0xEA, 0x9A, 0xBE, + 0x41, 0x79, 0x68, 0x63, 0x70, 0x3F, 0x3E, 0x38, + 0x60, 0xC3, 0x40, 0x81, 0x72, 0xDD, 0x25, 0x34, + 0xB4, 0xFE, 0xAC, 0x41, 0x6E, 0x4A, 0xE7, 0xBF, + 0xE3, 0x87, 0xFA, 0x20, 0x8B, 0xBD, 0x68, 0x9E, + 0x06, 0xA9, 0x15, 0x23, 0x07, 0x04, 0x4B, 0xFA, + 0x45, 0x45, 0xB7, 0x75, 0xD3, 0x3E, 0x16, 0x70, + 0xF6, 0x26, 0xF2, 0x3A, 0x9D, 0xFB, 0xEA, 0xEB, + 0x47, 0xCE, 0x99, 0x6B, 0x0E, 0xB2, 0xE8, 0x2B, + 0x18, 0x15, 0x14, 0x2E, 0xF2, 0x14, 0x0D, 0x44, + 0x47, 0x1E, 0x63, 0x84, 0x5B, 0x3F, 0xA8, 0xEF, + 0x5F, 0xEB, 0xA0, 0x41, 0x77, 0xC1, 0xF4, 0x4F, + 0x8E, 0x2E, 0x29, 0xCD, 0xDB, 0xF2, 0x75, 0x24, + 0x24, 0x46, 0x73, 0xC3, 0x46, 0xB5, 0xCA, 0x13, + 0x35, 0x12, 0x0A, 0x8D, 0x88, 0x89, 0x17, 0x99, + 0x13, 0xCA, 0x66, 0x07, 0x67, 0x6B, 0x7B, 0x3B, + 0x20, 0xD3, 0x5F, 0x78, 0x1C, 0xC0, 0x99, 0x59, + 0x0A, 0xBA, 0x8F, 0xA0, 0xDB, 0xDF, 0xCC, 0x03, + 0xC4, 0xA6, 0xC7, 0x08, 0xB9, 0xFD, 0x95, 0xC2, + 0x45, 0xF9, 0xF3, 0x11, 0x62, 0xF7, 0x14, 0xB9, + 0xEB, 0x09, 0xB3, 0x7C, 0xF8, 0xF6, 0x67, 0xCC, + 0x03, 0xB3, 0x06, 0x6F, 0x60, 0xAC, 0x72, 0xF2, + 0xD3, 0x71, 0x6C, 0x4D, 0xAD, 0x3A, 0x99, 0x75, + 0x5C, 0x52, 0x2D, 0x87, 0x69, 0x3E, 0xD6, 0x7E, + 0x12, 0x96, 0xD3, 0x88, 0x8D, 0x11, 0x85, 0xAA, + 0x0A, 0xA5, 0x32, 0x90, 0x51, 0xC5, 0x65, 0x64, + 0xE0, 0xA9, 0x73, 0xA4, 0xF3, 0x8A, 0x32, 0x83, + 0xE5, 0x08, 0x09, 0x39, 0x6A, 0x90, 0x2C, 0xC3, + 0xFC, 0x92, 0x29, 0x7A, 0x45, 0xBE, 0x02, 0x79, + 0x15, 0x1B, 0xBB, 0x60, 0xBB, 0xD9, 0x42, 0xF1, + 0xE5, 0x14, 0xB4, 0xA5, 0xFF, 0x12, 0x42, 0x30, + 0xB0, 0xCB, 0xD0, 0x1D, 0xB4, 0x62, 0x49, 0xC5, + 0xB7, 0xDA, 0x37, 0x47, 0x2C, 0x8B, 0x16, 0xCA, + 0xD2, 0x2C, 0xA1, 0x24, 0xE6, 0x57, 0xFA, 0xEB, + 0x2C, 0x62, 0x2E, 0x12, 0x74, 0x37, 0x2B, 0x3F, + 0x56, 0x23, 0x9C, 0xED, 0x90, 0xDE, 0x0D, 0x6E, + 0x9E, 0x11, 0x78, 0xA4, 0x9C, 0xB3, 0xA1, 0x37, + 0xF7, 0x4B, 0x09, 0x61, 0xD8, 0x33, 0x1D, 0x80, + 0x68, 0x5C, 0xDD, 0xBD, 0x3E, 0xAE, 0x9D, 0xB8, + 0xBA, 0x42, 0x41, 0xDC, 0xC9, 0x93, 0xF1, 0x92, + 0x2F, 0x7A, 0xF9, 0xFE, 0x67, 0x13, 0x87, 0xBD, + 0x7D, 0x04, 0x17, 0x91, 0xB6, 0x03, 0x5E, 0xA0, + 0x5B, 0x23, 0xEA, 0x0C, 0xFA, 0x45, 0xCB, 0x1A, + 0xC5, 0x7F, 0x63, 0xD6, 0x3D, 0x3C, 0x66, 0x4A, + 0x83, 0x4E, 0x4E, 0x90, 0xA6, 0x63, 0xB0, 0x8A, + 0xD7, 0x0D, 0xB4, 0xB7, 0xA9, 0x0F, 0xC6, 0xC7, + 0x3B, 0xAD, 0x07, 0xA6, 0x94, 0x47, 0xDB, 0x63, + 0x26, 0x00, 0x18, 0x5E, 0x27, 0xB5, 0xE2, 0xE3, + 0xED, 0x8D, 0x97, 0x95, 0x38, 0x20, 0x24, 0x9F, + 0x40, 0x84, 0x44, 0x7E, 0x8C, 0x05, 0xAB, 0xB1, + 0x89, 0x26, 0x7D, 0x46, 0x2C, 0x9F, 0xE5, 0xC1, + 0x27, 0xCE, 0x1D, 0x5A, 0x9F, 0xF1, 0xF8, 0x57, + 0x8F, 0xCF, 0xB7, 0x4E, 0x07, 0xF3, 0xBA, 0x56, + 0xCF, 0xE9, 0x87, 0x21, 0x61, 0xD6, 0x97, 0x7B, + 0x26, 0x97, 0x07, 0xB4, 0x87, 0xFE, 0x25, 0x9C, + 0xA9, 0x8E, 0x06, 0x90, 0x17, 0x2C, 0x98, 0x26, + 0x23, 0xEE, 0xBB, 0x91, 0x8A, 0x15, 0x38, 0xA1, + 0x38, 0xCB, 0x8B, 0xA0, 0xF3, 0x4A, 0xF2, 0x12, + 0xA7, 0xB7, 0x05, 0xB6, 0x09, 0xD0, 0xEC, 0xDD, + 0x21, 0xB6, 0xFA, 0x29, 0x95, 0xB4, 0x08, 0xD5, + 0x95, 0xB7, 0xB8, 0x2E, 0x23, 0xAA, 0x89, 0x81, + 0xE2, 0xD0, 0xFD, 0x9C, 0x8D, 0xF0, 0xCA, 0x61, + 0xE3, 0x1E, 0x73, 0x9E, 0xD1, 0x72, 0x5C, 0x63, + 0xB8, 0x74, 0x0E, 0x2C, 0x27, 0x3A, 0x71, 0xF9, + 0xFE, 0x66, 0x33, 0xE9, 0x41, 0x27, 0x61, 0xA3, + 0xFA, 0xD8, 0x66, 0x2A, 0x52, 0x6D, 0xAB, 0xBF, + 0x32, 0xC2, 0x8E, 0x8F, 0xB0, 0x60, 0x52, 0xE1, + 0x96, 0xC8, 0x1E, 0x9A, 0x3E, 0x07, 0xFA, 0x34, + 0xFA, 0x9C, 0x4C, 0x0D, 0x29, 0x0F, 0x68, 0xA6, + 0x59, 0x28, 0x22, 0xB1, 0x99, 0x56, 0x2C, 0x01, + 0x04, 0x2F, 0x34, 0x65, 0xFD, 0xD4, 0xD0, 0xD5, + 0x17, 0x7C, 0x14, 0x92, 0x73, 0x6C, 0x31, 0xCE, + 0xD4, 0xB3, 0x59, 0x83, 0x6B, 0x34, 0x7C, 0x76, + 0x8C, 0xED, 0xD5, 0xE2, 0x4F, 0x39, 0x44, 0xBF, + 0x90, 0x53, 0x9A, 0xC7, 0xD4, 0x6A, 0x86, 0xA3, + 0xE2, 0x15, 0x59, 0xD0, 0x0F, 0x32, 0x92, 0xC2, + 0x9B, 0x9E, 0xE3, 0xF6, 0x94, 0x96, 0xFD, 0x0B, + 0xB6, 0x06, 0x8F, 0x0D, 0x1F, 0x38, 0xFC, 0x6F, + 0xA2, 0x78, 0xAC, 0xC5, 0xB5, 0x6A, 0x6B, 0xEC, + 0x78, 0x8A, 0x6F, 0xD8, 0x21, 0xB7, 0xCF, 0x66, + 0x73, 0x03, 0xCA, 0x2E, 0x3C, 0x7F, 0x2F, 0x29, + 0x41, 0xC9, 0x88, 0xFD, 0x0E, 0xA0, 0x43, 0xD6, + 0x9E, 0xB1, 0xE7, 0x13, 0x9C, 0xF0, 0x9C, 0xCF, + 0x33, 0x22, 0x57, 0xEF, 0xE5, 0xCE, 0xD9, 0xAC, + 0x7D, 0x34, 0x75, 0xBD, 0xAE, 0x84, 0xEE, 0xE8, + 0x5D, 0x8C, 0x55, 0x86, 0xBA, 0x19, 0xE5, 0x9D, + 0x35, 0x6D, 0xD8, 0x70, 0xC5, 0xE0, 0xEA, 0x77, + 0x3A, 0xE5, 0xB5, 0x2C, 0xD2, 0x28, 0xB5, 0xE8, + 0xAF, 0xB1, 0xD2, 0xC4, 0xE5, 0x59, 0x06, 0xB8, + 0x2E, 0xA6, 0x8F, 0xC4, 0x9B, 0x30, 0xF9, 0x37, + 0xDB, 0x29, 0xA1, 0x44, 0x0B, 0xB7, 0xB5, 0xB4, + 0x12, 0xD3, 0x4E, 0xB3, 0xB7, 0xD8, 0x2F, 0x19, + 0xDE, 0x3B, 0xC3, 0x53, 0xCE, 0x1C, 0x34, 0x4C, + 0xA4, 0x6A, 0xE2, 0xD0, 0x04, 0xDF, 0x3C, 0x53, + 0x8B, 0x06, 0x8F, 0x36, 0xE5, 0x77, 0xB2, 0x7A, + 0x1A, 0xC0, 0x0C, 0xBD, 0xA3, 0xA0, 0xEE, 0xB6, + 0x40, 0xAD, 0x5C, 0x04, 0xAE, 0xCF, 0x64, 0x2B, + 0x8A, 0x18, 0x58, 0x86, 0xDE, 0xC9, 0x3D, 0x7D, + 0x15, 0xBC, 0xEE, 0x4C, 0x22, 0xF4, 0x98, 0xD9, + 0x37, 0xEE, 0xE2, 0x40, 0x43, 0xFF, 0xB2, 0x6F, + 0x05, 0xC0, 0x0E, 0x30, 0xDE, 0xD8, 0x0C, 0x0B, + 0xAD, 0xED, 0xCC, 0xBC, 0x29, 0x95, 0x07, 0x40, + 0x10, 0x99, 0xA0, 0xD1, 0x08, 0xF7, 0xD5, 0xF1, + 0xAD, 0xC9, 0xDD, 0xC8, 0x6A, 0x1E, 0x9E, 0x06, + 0xDF, 0x12, 0xFF, 0x66, 0x33, 0x5E, 0x21, 0x47, + 0xC3, 0xDE, 0x36, 0x98, 0x5B, 0xBF, 0x42, 0x9E, + 0x30, 0xA0, 0x81, 0x5C, 0x28, 0x34, 0x1B, 0x3A, + 0x32, 0xBC, 0xDE, 0x52, 0x53, 0x25, 0x1E, 0xF6, + 0xE2, 0x99, 0x12, 0x92, 0x07, 0x1D, 0xEB, 0x08, + 0x36, 0xA7, 0xD5, 0x18, 0x1F, 0xDB, 0x44, 0xA7, + 0xE1, 0x13, 0x06, 0xB0, 0xDF, 0x63, 0x82, 0x68, + 0xEF, 0xF5, 0x2B, 0x04, 0x0B, 0x93, 0xE8, 0xB0, + 0x92, 0x7B, 0xDE, 0x1F, 0xC9, 0x39, 0x8F, 0x42, + 0x9D, 0x06, 0x22, 0x13, 0xC9, 0x97, 0x2F, 0x43, + 0x8A, 0xBA, 0xAF, 0xF9, 0x71, 0xE3, 0x55, 0x5D, + 0x06, 0x77, 0x38, 0x39, 0xA3, 0xED, 0x41, 0x63, + 0xFE, 0x2A, 0xB3, 0x23, 0x43, 0x0C, 0xF3, 0x17, + 0x3B, 0x69, 0xED, 0x32, 0x0A, 0x54, 0xF3, 0x8D, + 0x76, 0xC6, 0x09, 0xDD, 0x88, 0x5B, 0x23, 0x57, + 0x72, 0xC4, 0x87, 0xB8, 0x9D, 0xF7, 0xCA, 0xFB, + 0x7C, 0x61, 0x67, 0x5C, 0x65, 0xF8, 0xD6, 0xD7, + 0x1E, 0x95, 0xB9, 0x73, 0x4D, 0x2E, 0x1F, 0x43, + 0x3E, 0x2B, 0x58, 0x92, 0x15, 0x2E, 0xAA, 0x51, + 0xF0, 0xD4, 0xF2, 0xA6, 0xCD, 0x12, 0x21, 0xD6, + 0xCA, 0x46, 0x2A, 0xFF, 0xCB, 0x1B, 0x6B, 0xB4, + 0x09, 0x17, 0x3B, 0xA2, 0x94, 0xDF, 0x1D, 0x68, + 0x8B, 0x75, 0xEA, 0x11, 0xD6, 0x99, 0x04, 0xD1, + 0x00, 0xDB, 0x61, 0xBC, 0xF2, 0x3B, 0x88, 0x4B, + 0x33, 0xDF, 0x0F, 0xD4, 0xFB, 0x14, 0x0C, 0x6A, + 0x53, 0x61, 0x1F, 0xBD, 0x28, 0xB2, 0x11, 0x19, + 0x38, 0x71, 0x17, 0x76, 0x4D, 0xEE, 0x01, 0xC4, + 0x77, 0x53, 0x2A, 0xAF, 0xD3, 0x78, 0xFF, 0x45, + 0x7F, 0x97, 0x9D, 0x26, 0x92, 0x0E, 0xD9, 0x4E, + 0x34, 0x1D, 0xE8, 0xDD, 0xBF, 0x5F, 0x87, 0xE6, + 0x35, 0x9A, 0x39, 0x71, 0x59, 0x20, 0x01, 0xFB, + 0x53, 0x2C, 0x61, 0x38, 0x0C, 0x8C, 0x02, 0xD3, + 0xA0, 0x53, 0x95, 0x02, 0xED, 0x5C, 0xFE, 0x9B, + 0xD3, 0x6A, 0xF3, 0x3F, 0x92, 0x6F, 0x33, 0x37, + 0x19, 0x97, 0x81, 0x3A, 0x50, 0xE1, 0xD9, 0x27, + 0x7E, 0x64, 0xF8, 0x01, 0x52, 0x26, 0x51, 0xD1, + 0x06, 0xAF, 0x20, 0xA0, 0x28, 0x0F, 0x3F, 0xCB, + 0x21, 0xB7, 0x55, 0x1A, 0x76, 0xB8, 0x9B, 0x4D, + 0xED, 0x2A, 0x05, 0x0E, 0x6E, 0xAF, 0xCC, 0xA1, + 0x08, 0x9C, 0xBE, 0x3F, 0x98, 0xE6, 0xB4, 0xB9, + 0x83, 0xC9, 0x08, 0x41, 0x96, 0xDD, 0xD9, 0x0D, + 0x52, 0x66, 0x94, 0xA4, 0xEA, 0xFC, 0xE5, 0x48, + 0x04, 0x73, 0x64, 0x79, 0x68, 0xC9, 0x4A, 0x81, + 0xA8, 0x07, 0xF8, 0xD9, 0x4E, 0x07, 0x1E, 0xC1, + 0x8F, 0x62, 0xAB, 0xA6, 0xD7, 0x68, 0xFC, 0x57, + 0x5E, 0x75, 0x1B, 0xBF, 0x3D, 0xA6, 0x91, 0xC5, + 0x08, 0x14, 0x5E, 0xF2, 0x4C, 0x22, 0x8B, 0x4E, + 0x29, 0x2D, 0xC0, 0x46, 0x3A, 0x9C, 0x9D, 0x86, + 0xCF, 0x51, 0x85, 0x9D, 0x93, 0x23, 0xA1, 0xA1, + 0xF3, 0x76, 0xB1, 0x56, 0xB0, 0xF4, 0x1F, 0x39, + 0xDA, 0xDB, 0x13, 0x70, 0x29, 0x89, 0x95, 0xD2, + 0xC5, 0xF3, 0x76, 0xFE, 0xEE, 0x99, 0xCF, 0xA0, + 0x84, 0xEC, 0x70, 0xF0, 0xD3, 0xFA, 0x42, 0xDB, + 0xFD, 0x99, 0x65, 0x2F, 0x84, 0x11, 0x99, 0xCD, + 0x38, 0xB3, 0x1B, 0xAB, 0x8C, 0x2D, 0x33, 0x04, + 0xCA, 0xE1, 0xB3, 0x05, 0x9A, 0x20, 0x80, 0xDB, + 0xED, 0x59, 0x42, 0x30, 0x48, 0x37, 0xB3, 0x85, + 0x5C, 0xEE, 0x54, 0x06, 0x92, 0x97, 0x4E, 0xFC, + 0xFA, 0xF7, 0x25, 0xE0, 0x4E, 0x57, 0xC4, 0x72, + 0x38, 0x59, 0xCA, 0x3C, 0x4A, 0x3F, 0x09, 0xD6, + 0x09, 0x15, 0x83, 0xEF, 0x24, 0x21, 0xDD, 0xFD, + 0x66, 0x9E, 0xBF, 0xEE, 0xCC, 0xBF, 0x86, 0x20, + 0x29, 0x40, 0x5E, 0x42, 0xD2, 0xC0, 0x24, 0x2D, + 0x76, 0xE6, 0x64, 0xF9, 0x5D, 0xC2, 0x85, 0xB6, + 0x09, 0x41, 0x04, 0x62, 0x17, 0xDC, 0xF8, 0xFA, + 0x2A, 0x4C, 0xD1, 0x82, 0x31, 0x57, 0xB7, 0x2B, + 0x49, 0xE8, 0x40, 0x13, 0x2A, 0xA1, 0x86, 0xD2, + 0x9A, 0xB8, 0xA9, 0xBE, 0x39, 0xBE, 0xE9, 0xA5, + 0x35, 0x12, 0x08, 0xF1, 0xA9, 0x9E, 0x57, 0x46, + 0x3A, 0x55, 0x16, 0xA7, 0x41, 0xD9, 0x25, 0xB8, + 0x2F, 0xAF, 0xA8, 0x81, 0x5F, 0x5F, 0x46, 0xA4, + 0x3B, 0xB3, 0xE9, 0x1B, 0x74, 0xEF, 0x5D, 0x57, + 0x48, 0x4A, 0x72, 0x08, 0xDA, 0xFE, 0x1D, 0x55, + 0x6B, 0xAB, 0x8B, 0x13, 0x18, 0xBF, 0xDD, 0xF4, + 0x4E, 0x01, 0x5F, 0x4B, 0xF6, 0x80, 0xD4, 0x16, + 0x4B, 0x2F, 0x03, 0x4B, 0xF8, 0x93, 0x20, 0x21, + 0x55, 0x52, 0x49, 0x4A, 0x6C, 0x1F, 0x7D, 0xAD, + 0x04, 0xEF, 0xB3, 0x74, 0xEE, 0xC5, 0xB6, 0xBC, + 0x33, 0x7A, 0xCF, 0x64, 0xB9, 0xF9, 0x41, 0x70, + 0xAF, 0xE9, 0xC7, 0xD6, 0x25, 0x18, 0x17, 0xAB, + 0xBA, 0xC9, 0x05, 0xEF, 0x40, 0x89, 0xD5, 0x69, + 0x76, 0xAA, 0xA0, 0x3E, 0x4D, 0x1C, 0xE7, 0x9D, + 0x9E, 0x74, 0xF4, 0xF2, 0x7B, 0x40, 0xF6, 0x57, + 0x78, 0x66, 0xFC, 0xDA, 0xE3, 0x6B, 0xD2, 0x6E, + 0xC7, 0x9D, 0x65, 0x84, 0xAF, 0x7A, 0x1F, 0xE4, + 0x34, 0xD4, 0x1A, 0x17, 0xA2, 0x72, 0xB0, 0xEE, + 0x5A, 0x0C, 0xF4, 0x02, 0xAC, 0x1D, 0x6F, 0x4A, + 0xD0, 0xB2, 0x02, 0x3A, 0x7D, 0x2C, 0xF1, 0x43, + 0x0E, 0x1E, 0x96, 0xEB, 0x42, 0xF8, 0x3A, 0xF5, + 0x0B, 0x5D, 0xA9, 0x23, 0x02, 0x28, 0xE5, 0x26, + 0x5E, 0x69, 0x38, 0x2F, 0x85, 0x34, 0x32, 0x5E, + 0x5E, 0x29, 0x33, 0x94, 0x05, 0xBD, 0x58, 0xF8, + 0xE8, 0x9C, 0xBF, 0xB1, 0x5A, 0x05, 0xC6, 0x23, + 0x9B, 0xBB, 0x57, 0x69, 0x8C, 0xE6, 0x41, 0x97, + 0x48, 0x01, 0x95, 0xAF, 0xE9, 0x62, 0x8C, 0x6F, + 0x09, 0x43, 0xF3, 0x64, 0x50, 0x90, 0x2F, 0x14, + 0xF7, 0x30, 0x07, 0xE0, 0x4B, 0xA8, 0x39, 0xAC, + 0x21, 0xC4, 0x07, 0x45, 0x5F, 0xD9, 0x87, 0xB1, + 0x57, 0x47, 0x07, 0x66, 0xFF, 0xC7, 0xAB, 0xEE, + 0x1F, 0x55, 0x71, 0x50, 0x63, 0xCF, 0x58, 0x3B, + 0xC8, 0x1B, 0xEA, 0xA5, 0xE2, 0xF1, 0x57, 0xB3, + 0x77, 0x65, 0xA9, 0xBD, 0x23, 0xC8, 0x30, 0x86, + 0xC3, 0x5F, 0xBF, 0x16, 0x3F, 0x42, 0x28, 0x0A, + 0xC6, 0x5A, 0x57, 0x15, 0x2F, 0xA1, 0x96, 0xA9, + 0x25, 0xC5, 0x8E, 0x32, 0x11, 0x62, 0xB3, 0x54, + 0x18, 0x00, 0xA4, 0xA6, 0xD4, 0x0F, 0x68, 0x27, + 0x8F, 0x21, 0x78, 0x02, 0x37, 0x98, 0xBD, 0xCE, + 0x3F, 0xBC, 0xF2, 0x9C, 0x66, 0x8E, 0x79, 0xA1, + 0x54, 0x12, 0x55, 0x2E, 0xC0, 0x59, 0xC7, 0x18, + 0x18, 0x22, 0x4D, 0x27, 0x8B, 0x8D, 0xF3, 0x08, + 0x99, 0xE6, 0x35, 0x14, 0xB1, 0xE3, 0xB8, 0x7A, + 0x40, 0x7B, 0x68, 0x7B, 0xFF, 0xDC, 0x54, 0x41, + 0x06, 0xCA, 0x91, 0xFE, 0xDB, 0x2B, 0xDA, 0x9E, + 0xC5, 0x20, 0xD8, 0xBF, 0x42, 0xBC, 0xE6, 0x39, + 0xC4, 0x26, 0x9E, 0xF3, 0x82, 0xD9, 0xF1, 0xA0, + 0x04, 0xAF, 0xFB, 0x77, 0x13, 0x36, 0xAF, 0xD7, + 0x91, 0x9B, 0x3A, 0x57, 0x98, 0xFE, 0xAD, 0xCD, + 0x46, 0xF8, 0xF8, 0xF1, 0x87, 0x53, 0xBD, 0x57, + 0x3F, 0x99, 0xBC, 0xA6, 0xBD, 0x9B, 0x6E, 0xF4, + 0x17, 0x7A, 0x78, 0x30, 0x70, 0xA3, 0x43, 0xFF, + 0x92, 0xCD, 0x99, 0x73, 0xAE, 0x65, 0x6A, 0x10, + 0xFF, 0x70, 0x47, 0x0F, 0x16, 0x4C, 0x4A, 0x90, + 0xF4, 0x52, 0x05, 0x79, 0x33, 0x63, 0xDE, 0x14, + 0x65, 0xAF, 0x8A, 0x5E, 0x67, 0x20, 0x03, 0x9F, + 0xE6, 0x70, 0x13, 0x6B, 0xE0, 0xF3, 0x6A, 0x4C, + 0x6B, 0x5B, 0xCB, 0xE1, 0x7C, 0x5D, 0x7D, 0xE3, + 0x23, 0xFD, 0xB8, 0x6A, 0xDA, 0x56, 0x1E, 0xA8, + 0x36, 0xC4, 0x29, 0x2D, 0x70, 0x41, 0x03, 0x18, + 0x31, 0x40, 0x79, 0x2E, 0xC8, 0x22, 0x98, 0x5E, + 0x11, 0xED, 0xA6, 0xDD, 0xB9, 0xAF, 0x8C, 0x27, + 0x5C, 0x1B, 0x2E, 0xEA, 0xB8, 0xC6, 0x2F, 0xA0, + 0x40, 0xB2, 0x64, 0x61, 0xFC, 0x0A, 0x3A, 0x10, + 0x88, 0xC2, 0x58, 0xEC, 0xA5, 0x8D, 0x14, 0xE9, + 0x9D, 0x21, 0xAF, 0x64, 0xD6, 0xC2, 0x5D, 0xAA, + 0x0B, 0x8A, 0x57, 0x0F, 0x84, 0x3E, 0x60, 0x8D, + 0xED, 0x05, 0x1D, 0x98, 0xED, 0xAE, 0x11, 0xD9, + 0x27, 0x03, 0x55, 0xED, 0xF5, 0x34, 0x92, 0x52, + 0xF2, 0x6F, 0x30, 0x3E, 0x69, 0xA5, 0x54, 0xA7, + 0x2E, 0x1B, 0x85, 0xAB, 0xA2, 0x3B, 0xEC, 0xC8, + 0x9D, 0xA9, 0xA3, 0xE4, 0xEF, 0x58, 0xB5, 0x33, + 0x88, 0x55, 0x16, 0x5E, 0x7D, 0x7E, 0x69, 0xFC, + 0xCA, 0xBD, 0x9C, 0x65, 0xFA, 0x0B, 0xBD, 0x7B, + 0x16, 0xC4, 0xE2, 0x9C, 0xB4, 0xF1, 0x6A, 0x25, + 0x70, 0x30, 0x32, 0xED, 0xEA, 0xD3, 0x1D, 0xDB, + 0x6F, 0x29, 0x2E, 0x42, 0x14, 0xBE, 0x03, 0x29, + 0x0A, 0x8A, 0x98, 0x9A, 0xD7, 0xB7, 0x0C, 0xF8, + 0xB9, 0xCF, 0x37, 0xC6, 0xAC, 0xAC, 0x6D, 0xCC, + 0x03, 0x23, 0x9F, 0x66, 0x85, 0x4B, 0x70, 0x45 + }; +#endif /* WOLFSSL_NO_ML_DSA_87 */ +#endif + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + + ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_44), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_44, sizeof(pk_44)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_44, sizeof(sk_44)), 0); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_44_draft), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_44_draft, sizeof(pk_44_draft)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_44_draft, sizeof(sk_44_draft)), 0); +#endif +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_65), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_65, sizeof(pk_65)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_65, sizeof(sk_65)), 0); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_65_draft), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_65_draft, sizeof(pk_65_draft)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_65_draft, sizeof(sk_65_draft)), 0); +#endif +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_87), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_87, sizeof(pk_87)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_87, sizeof(sk_87)), 0); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); + ExpectIntEQ(wc_dilithium_make_key_from_seed(key, seed_87_draft), 0); + ExpectIntEQ(XMEMCMP(key->p, pk_87_draft, sizeof(pk_87_draft)), 0); + ExpectIntEQ(XMEMCMP(key->k, sk_87_draft, sizeof(sk_87_draft)), 0); +#endif +#endif + + wc_dilithium_free(key); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_sig_kats(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_SIGN) + dilithium_key* key; +#ifndef WOLFSSL_NO_ML_DSA_44 + static const byte sk_44[] = { + 0x5D, 0xFB, 0x07, 0xA2, 0x04, 0x4B, 0x93, 0x16, + 0x75, 0xC7, 0x89, 0x43, 0xEA, 0xC3, 0xC4, 0xC5, + 0x7B, 0x07, 0x77, 0x8A, 0xD9, 0xAF, 0x2E, 0x87, + 0xC4, 0x70, 0xB9, 0xCC, 0x2C, 0x8D, 0xA1, 0xE3, + 0x75, 0xBC, 0xB3, 0xBC, 0xD1, 0x9E, 0x7B, 0xB9, + 0x83, 0xC9, 0x63, 0x66, 0xCC, 0xEA, 0x14, 0x1E, + 0xAE, 0x22, 0x07, 0x75, 0x52, 0x24, 0xC8, 0xC6, + 0xC6, 0x1F, 0x90, 0x89, 0x89, 0xCF, 0xF2, 0xF6, + 0x27, 0x98, 0xA6, 0x86, 0x45, 0x77, 0x95, 0x15, + 0xD4, 0x74, 0xDD, 0xA6, 0x1F, 0x33, 0x41, 0x42, + 0x4E, 0xDA, 0x24, 0x79, 0x60, 0x27, 0x34, 0x4E, + 0x36, 0x94, 0x14, 0x74, 0x81, 0x9A, 0x58, 0x44, + 0x2B, 0x74, 0xBF, 0x50, 0x60, 0xB8, 0x40, 0x94, + 0x4A, 0xEF, 0xDE, 0xA7, 0xA4, 0xCF, 0xFC, 0xB3, + 0x9D, 0xE2, 0x07, 0xFD, 0x9E, 0x6A, 0xC6, 0x2E, + 0x6D, 0x0D, 0xB2, 0xB4, 0x51, 0x2E, 0x20, 0x26, + 0x00, 0xB5, 0x30, 0x01, 0xA9, 0x2D, 0xE2, 0x42, + 0x02, 0x42, 0x12, 0x71, 0x24, 0xB7, 0x28, 0x94, + 0x30, 0x86, 0xDA, 0x22, 0x30, 0x00, 0x87, 0x65, + 0xCC, 0x22, 0x91, 0x1B, 0x05, 0x82, 0x03, 0x46, + 0x8A, 0xA0, 0x32, 0x26, 0x40, 0xB4, 0x84, 0xC3, + 0x14, 0x2D, 0x88, 0x14, 0x8C, 0x94, 0x92, 0x49, + 0x23, 0x15, 0x0E, 0xCA, 0x88, 0x09, 0x18, 0x94, + 0x68, 0x82, 0x38, 0x00, 0x21, 0x41, 0x28, 0x8C, + 0xB8, 0x80, 0x02, 0x09, 0x49, 0x5A, 0xB4, 0x11, + 0x9B, 0x28, 0x05, 0xE4, 0x42, 0x30, 0xCA, 0x24, + 0x80, 0xA4, 0x06, 0x2A, 0xD3, 0x92, 0x05, 0x1C, + 0x03, 0x6A, 0x22, 0x36, 0x4A, 0x92, 0x44, 0x52, + 0xE2, 0x48, 0x28, 0x19, 0x83, 0x68, 0x88, 0xC6, + 0x31, 0x41, 0x90, 0x50, 0x00, 0x43, 0x8E, 0x23, + 0x87, 0x60, 0x19, 0x43, 0x81, 0x50, 0x32, 0x69, + 0x81, 0xC0, 0x51, 0x12, 0x06, 0x08, 0x02, 0x08, + 0x82, 0xC4, 0xA6, 0x81, 0x03, 0xA5, 0x90, 0x8C, + 0xB6, 0x00, 0x90, 0x14, 0x66, 0x01, 0xB1, 0x08, + 0x12, 0x25, 0x48, 0x1A, 0x88, 0x11, 0x43, 0x38, + 0x60, 0x23, 0x26, 0x2E, 0x14, 0x45, 0x0D, 0x9C, + 0x92, 0x8C, 0xA2, 0x46, 0x12, 0x94, 0xA6, 0x05, + 0x88, 0xB0, 0x11, 0x0A, 0xB0, 0x28, 0xA4, 0x42, + 0x09, 0x9C, 0x82, 0x80, 0x1A, 0x80, 0x61, 0x59, + 0xB0, 0x8D, 0x40, 0xA6, 0x6D, 0x12, 0xC9, 0x0C, + 0xD9, 0x18, 0x68, 0xA3, 0x84, 0x2C, 0x02, 0xB6, + 0x25, 0x01, 0x40, 0x2C, 0xD8, 0x20, 0x4D, 0x1B, + 0x35, 0x30, 0x11, 0x10, 0x49, 0x63, 0x44, 0x31, + 0x8A, 0xB2, 0x70, 0x4B, 0x24, 0x28, 0xA0, 0x46, + 0x08, 0xC9, 0x06, 0x81, 0x08, 0xC5, 0x04, 0x4A, + 0xB2, 0x30, 0x08, 0x15, 0x04, 0x24, 0xA2, 0x65, + 0x9B, 0x88, 0x41, 0x19, 0x36, 0x2E, 0xE2, 0xB8, + 0x29, 0xD9, 0x12, 0x64, 0x41, 0xA6, 0x30, 0x22, + 0xB7, 0x8C, 0x93, 0x38, 0x69, 0x93, 0x30, 0x0A, + 0xC8, 0xB6, 0x85, 0x23, 0xB1, 0x8D, 0x01, 0x38, + 0x0A, 0x59, 0xA0, 0x09, 0x64, 0x12, 0x6E, 0x88, + 0x08, 0x22, 0xDB, 0x00, 0x08, 0x0C, 0x08, 0x12, + 0x99, 0x42, 0x44, 0x1B, 0x00, 0x68, 0x08, 0x13, + 0x26, 0x53, 0xA2, 0x40, 0x5A, 0x34, 0x25, 0x98, + 0x90, 0x8C, 0x00, 0x34, 0x2D, 0x93, 0x94, 0x48, + 0xC8, 0x22, 0x4C, 0xE2, 0x44, 0x29, 0xE2, 0x00, + 0x28, 0x14, 0x22, 0x40, 0x48, 0x28, 0x24, 0x22, + 0x49, 0x06, 0xCA, 0xC8, 0x0C, 0x4C, 0x12, 0x80, + 0x1B, 0xA5, 0x41, 0x11, 0x06, 0x48, 0x1B, 0x27, + 0x72, 0x20, 0x07, 0x31, 0x24, 0x10, 0x8E, 0x9C, + 0x94, 0x91, 0x1B, 0x37, 0x82, 0x51, 0x28, 0x2E, + 0x11, 0x06, 0x42, 0x01, 0x34, 0x6E, 0x8C, 0x22, + 0x25, 0x24, 0x34, 0x6A, 0x19, 0x47, 0x21, 0x23, + 0xB6, 0x09, 0x51, 0xB2, 0x31, 0x18, 0x34, 0x45, + 0x8C, 0xB8, 0x20, 0x1C, 0x19, 0x0A, 0x19, 0xB7, + 0x6D, 0x18, 0x97, 0x48, 0x09, 0x82, 0x04, 0x9C, + 0x12, 0x8A, 0x41, 0x08, 0x46, 0x24, 0x13, 0x31, + 0xD0, 0x42, 0x46, 0xC3, 0x16, 0x80, 0x51, 0x10, + 0x2E, 0x51, 0x48, 0x04, 0x5C, 0xC2, 0x64, 0x1A, + 0x10, 0x8E, 0xD9, 0x86, 0x64, 0x90, 0x24, 0x68, + 0x93, 0xB4, 0x45, 0x94, 0x30, 0x4A, 0xE3, 0x12, + 0x0C, 0x54, 0x04, 0x90, 0x03, 0x31, 0x40, 0x62, + 0x92, 0x4D, 0x5C, 0xC8, 0x10, 0x8A, 0xB8, 0x61, + 0x5C, 0x04, 0x6A, 0xC8, 0xB0, 0x85, 0x93, 0x00, + 0x05, 0xC3, 0x06, 0x69, 0x1B, 0x34, 0x8E, 0x03, + 0x84, 0x0C, 0x50, 0x00, 0x2C, 0x8C, 0x96, 0x90, + 0x08, 0x32, 0x68, 0x0B, 0x90, 0x8C, 0x02, 0x86, + 0x2D, 0x18, 0x38, 0x09, 0x1C, 0xB2, 0x21, 0x1B, + 0x48, 0x04, 0x5C, 0x10, 0x86, 0xD8, 0x34, 0x51, + 0x43, 0x84, 0x88, 0x43, 0xB2, 0x65, 0x12, 0xB6, + 0x8D, 0x03, 0x01, 0x45, 0x19, 0xB8, 0x8D, 0x92, + 0x26, 0x4E, 0x12, 0x12, 0x88, 0x52, 0xB2, 0x64, + 0x21, 0x09, 0x26, 0x49, 0x38, 0x05, 0x24, 0x11, + 0x0A, 0x22, 0x38, 0x32, 0x23, 0x31, 0x20, 0x4A, + 0x24, 0x42, 0xC4, 0xA2, 0x44, 0x20, 0x10, 0x0D, + 0xA1, 0xA8, 0x51, 0x23, 0x86, 0x84, 0x81, 0x38, + 0x8E, 0x02, 0x00, 0x4A, 0x1C, 0xB7, 0x24, 0x4C, + 0x06, 0x0A, 0x1C, 0x26, 0x4E, 0xCC, 0x22, 0x48, + 0x4C, 0x92, 0x2D, 0xC0, 0x20, 0x2D, 0xA1, 0x16, + 0x89, 0xC3, 0x44, 0x82, 0x19, 0xA7, 0x6D, 0xC4, + 0x90, 0x10, 0x01, 0x82, 0x89, 0xD8, 0x44, 0x22, + 0xD9, 0x98, 0x20, 0xC0, 0x88, 0x45, 0x88, 0x22, + 0x0C, 0x90, 0x36, 0x90, 0x90, 0xA4, 0x05, 0xD3, + 0x82, 0x21, 0xD0, 0xA6, 0x28, 0x00, 0x33, 0x25, + 0xA2, 0xC2, 0x6C, 0xD8, 0x10, 0x71, 0xD1, 0x96, + 0x50, 0xC3, 0x34, 0x08, 0x8B, 0x94, 0x2D, 0x61, + 0x88, 0x04, 0x1B, 0xC8, 0x2D, 0xE2, 0x30, 0x64, + 0x20, 0x28, 0x24, 0x1A, 0x34, 0x50, 0x10, 0x25, + 0x6A, 0x64, 0x36, 0x81, 0x09, 0xC1, 0x45, 0xE3, + 0x30, 0x80, 0xC3, 0xA6, 0x8C, 0xE0, 0xB6, 0x10, + 0xC3, 0x34, 0x8D, 0xD1, 0x06, 0x11, 0x88, 0x20, + 0x0A, 0x0A, 0xC8, 0x21, 0x20, 0x81, 0x30, 0x9C, + 0x14, 0x61, 0x9B, 0xC2, 0x50, 0x22, 0x15, 0x8D, + 0x80, 0xA0, 0x41, 0x89, 0x24, 0x41, 0x20, 0x93, + 0x40, 0x01, 0xA6, 0x09, 0x08, 0x25, 0x2E, 0xC1, + 0xC6, 0x85, 0x00, 0x17, 0x62, 0x41, 0x30, 0x32, + 0xDC, 0x06, 0x6D, 0x48, 0x88, 0x08, 0x84, 0xC8, + 0x30, 0x5B, 0x96, 0x8D, 0x42, 0xB4, 0x4C, 0xD0, + 0x34, 0x88, 0xD0, 0x04, 0x02, 0x18, 0x15, 0x52, + 0x52, 0x26, 0x30, 0x8C, 0x46, 0x28, 0x20, 0x94, + 0x4C, 0x21, 0x18, 0x00, 0xD0, 0xB2, 0x48, 0x1B, + 0x17, 0x0A, 0x09, 0x30, 0x4C, 0x44, 0xC2, 0x04, + 0x47, 0x5E, 0xF2, 0x33, 0x31, 0xFF, 0x66, 0x73, + 0xE2, 0x6E, 0x6A, 0x32, 0xF2, 0x94, 0xBE, 0xFB, + 0xD5, 0x96, 0x4F, 0xED, 0x98, 0x7A, 0x42, 0xA2, + 0x35, 0xFC, 0x5B, 0x16, 0x08, 0x61, 0x45, 0xC0, + 0xB8, 0xA8, 0x23, 0xFB, 0xC1, 0x4F, 0x1C, 0x8C, + 0xD0, 0x3F, 0xD6, 0xEE, 0xC4, 0x95, 0x28, 0x3E, + 0x03, 0x5C, 0x0D, 0xCA, 0xE5, 0x2E, 0x68, 0xF3, + 0x29, 0xDE, 0x7A, 0xDF, 0xD6, 0x4F, 0xEE, 0x0B, + 0x11, 0x6D, 0x4A, 0x14, 0xE1, 0x53, 0x94, 0xB3, + 0x1D, 0xF8, 0x8B, 0xCA, 0x10, 0xD1, 0xC9, 0x06, + 0xAA, 0x82, 0x28, 0x7C, 0x11, 0x74, 0x99, 0xE9, + 0xD8, 0xC7, 0x7D, 0x17, 0xA9, 0x5C, 0xCC, 0x14, + 0xAF, 0xF9, 0xC2, 0x05, 0xD2, 0x64, 0x80, 0xA5, + 0x70, 0xB5, 0x77, 0x0B, 0x04, 0x81, 0x99, 0xCF, + 0x3F, 0x0E, 0x1B, 0x91, 0xAB, 0x39, 0x4B, 0x1F, + 0x65, 0xD4, 0x7F, 0x92, 0x98, 0xD0, 0x96, 0xCA, + 0x25, 0xC0, 0x99, 0xBC, 0x67, 0xF4, 0x33, 0x42, + 0x63, 0xE3, 0x6B, 0xD9, 0xE6, 0x6B, 0x99, 0x8A, + 0x07, 0xDC, 0x1E, 0x18, 0x1E, 0x05, 0x38, 0x6E, + 0x96, 0x8F, 0x1C, 0xB0, 0xAB, 0x1E, 0x9A, 0x67, + 0xD5, 0xD3, 0x30, 0x11, 0x20, 0x37, 0x82, 0x24, + 0x88, 0x1F, 0x65, 0x17, 0x59, 0xEC, 0x7D, 0xBF, + 0x45, 0x78, 0x1E, 0xF8, 0xA8, 0x4D, 0xAD, 0xAF, + 0xE6, 0x13, 0xD6, 0x01, 0x69, 0x66, 0xBD, 0x88, + 0x44, 0xB6, 0xA6, 0x17, 0xAC, 0xA1, 0xEE, 0xF6, + 0x73, 0xB7, 0x74, 0xCC, 0x80, 0x7B, 0x36, 0xDD, + 0x02, 0xDD, 0x45, 0x21, 0x66, 0x86, 0x03, 0x7F, + 0x9A, 0xC0, 0xB1, 0x2F, 0x57, 0x26, 0xF2, 0x51, + 0xC5, 0x72, 0x43, 0xE2, 0xC1, 0x88, 0xF5, 0xEC, + 0xC0, 0x97, 0xE0, 0xB9, 0x89, 0xB5, 0x8A, 0x5D, + 0x80, 0x4A, 0xBF, 0xD7, 0x20, 0x25, 0x55, 0x77, + 0x66, 0x8E, 0xE3, 0x04, 0xD0, 0x1C, 0x50, 0xFE, + 0x8B, 0x6D, 0x90, 0x68, 0x53, 0xCF, 0x7A, 0x49, + 0x4F, 0xB4, 0x79, 0x91, 0xF1, 0x81, 0xB7, 0x42, + 0x0E, 0x74, 0x19, 0x9C, 0x82, 0xE7, 0x1A, 0x82, + 0x4B, 0xF8, 0xC6, 0x13, 0x1D, 0xF4, 0xD1, 0x85, + 0x6F, 0x11, 0xE7, 0x04, 0x07, 0x70, 0x72, 0x4D, + 0xE7, 0x2C, 0x81, 0x5A, 0xC0, 0x44, 0x3F, 0x2E, + 0x77, 0xEC, 0x22, 0xA1, 0x28, 0xDB, 0x18, 0xE1, + 0x18, 0x3E, 0xE7, 0x96, 0x82, 0xC4, 0x30, 0x24, + 0xC9, 0x07, 0x46, 0x6C, 0x35, 0x4B, 0x1C, 0x7B, + 0x0E, 0x0E, 0xF0, 0x9F, 0x16, 0x48, 0x7B, 0xD8, + 0xA9, 0x9C, 0x3A, 0x0A, 0x9E, 0xDB, 0xF0, 0x0F, + 0x15, 0xA5, 0xEB, 0x1C, 0x50, 0xD4, 0x27, 0x36, + 0xDB, 0x07, 0x63, 0xBD, 0x56, 0xBD, 0xFA, 0x81, + 0x09, 0x9A, 0xDE, 0xCE, 0xE8, 0x4A, 0xEA, 0x06, + 0x9C, 0x06, 0x5B, 0x67, 0x03, 0x14, 0xB9, 0xE4, + 0x8C, 0x66, 0x75, 0xA3, 0xCC, 0x69, 0x39, 0x57, + 0xDA, 0x1D, 0x21, 0xBA, 0xCE, 0xD8, 0x70, 0x02, + 0xFF, 0xF5, 0x6F, 0x25, 0x3A, 0x3D, 0xFC, 0x79, + 0xA3, 0xF0, 0x3A, 0x3F, 0x2B, 0x10, 0x51, 0x9A, + 0xCB, 0xC9, 0x1A, 0xF5, 0xF1, 0x98, 0x5B, 0x5C, + 0x87, 0x96, 0x4E, 0xC8, 0x00, 0x8A, 0x3A, 0x6E, + 0x85, 0x02, 0xA5, 0xF1, 0x69, 0x32, 0x6E, 0xC1, + 0x95, 0x68, 0xCF, 0xA8, 0xE8, 0x85, 0x55, 0x4D, + 0x6A, 0x68, 0x1F, 0x00, 0xDD, 0x26, 0xB3, 0x24, + 0xF4, 0x9D, 0xD2, 0x4D, 0x81, 0x06, 0xDA, 0xE6, + 0x4D, 0x11, 0x73, 0xDF, 0xFE, 0x4F, 0xA6, 0x22, + 0x5E, 0x6C, 0x6D, 0x5E, 0xE3, 0x59, 0xCF, 0xF4, + 0x35, 0xA0, 0x80, 0x86, 0x89, 0x49, 0xB2, 0xED, + 0x0C, 0xC7, 0x3B, 0x42, 0x06, 0x68, 0x8D, 0x90, + 0x04, 0x1A, 0xBD, 0x51, 0xF6, 0xB9, 0x29, 0x2E, + 0xB6, 0xF0, 0x79, 0x40, 0x1E, 0x6E, 0x59, 0x94, + 0xFB, 0xF5, 0x6B, 0x72, 0x82, 0x4C, 0xB6, 0xC7, + 0x2B, 0x12, 0x71, 0x77, 0xDD, 0x89, 0xCC, 0x2F, + 0x98, 0xB0, 0x93, 0x1C, 0x98, 0xCE, 0x5E, 0x89, + 0x0D, 0x95, 0x7B, 0x98, 0xE1, 0xEA, 0xDC, 0xB7, + 0xFF, 0x22, 0xC5, 0x31, 0x40, 0x9E, 0x1C, 0x80, + 0x59, 0x47, 0x01, 0x49, 0xEC, 0x81, 0xEF, 0x16, + 0x32, 0x6B, 0xB0, 0x4E, 0xE2, 0x3B, 0xA3, 0xC1, + 0x03, 0x12, 0x0D, 0xA6, 0x65, 0xDE, 0x8D, 0xB0, + 0xA0, 0xBB, 0x75, 0xEF, 0x5C, 0xDA, 0xF4, 0xEE, + 0x47, 0x6E, 0x55, 0x02, 0x38, 0xCD, 0xC1, 0xAC, + 0xDD, 0x71, 0xA6, 0x34, 0xAB, 0xCE, 0xA5, 0x5C, + 0x90, 0xFF, 0xF8, 0xE0, 0xA7, 0x87, 0xBD, 0x21, + 0x36, 0x91, 0x4F, 0x23, 0xD8, 0x75, 0x58, 0xC5, + 0xF6, 0xBA, 0xAC, 0x54, 0x6C, 0x24, 0xB1, 0x41, + 0x02, 0x02, 0xB9, 0x44, 0x31, 0x0E, 0xC4, 0xC9, + 0xC6, 0x87, 0x85, 0x36, 0x05, 0xC8, 0xAE, 0xC9, + 0xF1, 0xEF, 0x6B, 0x67, 0x52, 0xD3, 0x9A, 0x15, + 0xBF, 0xA2, 0x47, 0xEF, 0x89, 0xFC, 0x06, 0x99, + 0xA1, 0x1A, 0xE4, 0x5A, 0x75, 0xE5, 0x09, 0xD4, + 0x54, 0xE9, 0x89, 0xF2, 0x60, 0x6E, 0xAB, 0x10, + 0xF8, 0x42, 0xE4, 0xAD, 0x57, 0xC6, 0xE3, 0x65, + 0x48, 0x94, 0x14, 0x05, 0x4F, 0x62, 0x20, 0x0F, + 0x3A, 0x1E, 0xC7, 0x62, 0xDC, 0x5C, 0x8E, 0xFA, + 0x19, 0x88, 0x47, 0x5D, 0xE8, 0xC3, 0xD5, 0x8C, + 0x2B, 0x71, 0xBA, 0x11, 0x98, 0x7C, 0x0A, 0xC6, + 0x42, 0x08, 0x3B, 0xAC, 0x76, 0xFB, 0x50, 0x78, + 0x8C, 0x26, 0x8F, 0xEE, 0x7B, 0xE2, 0x59, 0x9B, + 0x34, 0x58, 0x09, 0x2A, 0x8B, 0xCB, 0x1F, 0x31, + 0x94, 0x8F, 0xE4, 0x82, 0xDF, 0x9A, 0x54, 0x5B, + 0x63, 0x85, 0x94, 0xD6, 0x7A, 0x44, 0x06, 0x91, + 0x5C, 0xCD, 0xC7, 0x55, 0x57, 0x47, 0xC0, 0x4E, + 0x72, 0xA5, 0x48, 0xAB, 0x8F, 0xEE, 0x87, 0x6B, + 0x25, 0x82, 0x61, 0x3C, 0xCA, 0xBD, 0xA9, 0x6C, + 0xF1, 0x4A, 0xAA, 0xF6, 0x71, 0x6B, 0x79, 0x0B, + 0xFE, 0x4D, 0x92, 0x32, 0xD9, 0x03, 0x70, 0xD6, + 0x0B, 0xBC, 0x18, 0x4B, 0xA3, 0x3B, 0xCF, 0x77, + 0x83, 0x16, 0xE3, 0x4B, 0x11, 0x83, 0x8D, 0x8F, + 0x71, 0xFE, 0xEA, 0xC0, 0x42, 0xF0, 0x35, 0xB0, + 0x76, 0xEA, 0xC1, 0xC2, 0x62, 0xFA, 0x9C, 0x32, + 0xBC, 0x8D, 0x69, 0xB1, 0x38, 0xB3, 0x51, 0x31, + 0x8E, 0xD1, 0xF3, 0x44, 0x95, 0x95, 0x11, 0x52, + 0x36, 0xF4, 0xCA, 0x7C, 0xBA, 0x2B, 0xA9, 0xE1, + 0x03, 0xF0, 0xF5, 0x09, 0xAB, 0x91, 0x6E, 0x48, + 0xB8, 0xAF, 0x03, 0x9B, 0xDC, 0xD5, 0x1C, 0xAB, + 0xFA, 0xCA, 0xDC, 0xEE, 0x8E, 0x49, 0x84, 0xF5, + 0x61, 0xF9, 0x7D, 0x17, 0xCB, 0xF1, 0xDE, 0x9A, + 0x7A, 0x7B, 0xDA, 0xF3, 0x26, 0xE6, 0xD8, 0xAD, + 0x90, 0xE9, 0x5B, 0xAF, 0x15, 0x45, 0xD3, 0xE2, + 0x46, 0x69, 0xD1, 0xC5, 0xF4, 0x28, 0xE0, 0x7E, + 0x2C, 0x71, 0x10, 0xFF, 0x43, 0x59, 0x80, 0x93, + 0xE6, 0xF9, 0x28, 0xA0, 0x34, 0xC6, 0x86, 0xBA, + 0xE7, 0x5A, 0x56, 0x7A, 0xE4, 0xF5, 0x20, 0xB4, + 0x4D, 0xAC, 0xB4, 0x95, 0xE5, 0xB2, 0xC6, 0x43, + 0x9E, 0x2E, 0x67, 0x8E, 0x7C, 0x05, 0x4F, 0xF7, + 0x60, 0x14, 0x88, 0xC6, 0xAE, 0x4A, 0x05, 0x36, + 0x99, 0x73, 0x55, 0x10, 0xF9, 0xDB, 0xC3, 0x4C, + 0xD7, 0x6A, 0x19, 0x94, 0xC0, 0xFE, 0x74, 0x12, + 0xC0, 0xCE, 0x95, 0x15, 0xBF, 0x60, 0x3A, 0x8E, + 0xB5, 0xFC, 0x8A, 0xBC, 0xAC, 0x9F, 0x15, 0x10, + 0x44, 0x73, 0x58, 0x60, 0x5D, 0xA1, 0x33, 0xFD, + 0xDE, 0xBD, 0xF2, 0x22, 0x69, 0xEE, 0x1D, 0x46, + 0x8E, 0x2E, 0xE8, 0x21, 0x62, 0x1D, 0x27, 0x84, + 0xC4, 0x6D, 0xA8, 0x30, 0x02, 0xA6, 0x26, 0x94, + 0xFA, 0xB1, 0xEF, 0xEC, 0x3B, 0x8D, 0x6F, 0x1B, + 0x2C, 0xCE, 0x2A, 0x4E, 0xC4, 0x28, 0x35, 0x4E, + 0x39, 0xA4, 0xF4, 0x5C, 0x96, 0x65, 0xC1, 0xB8, + 0x55, 0xA5, 0x09, 0x15, 0xBC, 0x4D, 0x3B, 0xD0, + 0x1F, 0x7F, 0xBA, 0x90, 0x20, 0xCD, 0xBD, 0xC2, + 0xC8, 0xE5, 0xC6, 0xB0, 0x6F, 0x14, 0x4E, 0x6B, + 0xEA, 0x8A, 0x24, 0x44, 0xE1, 0x0A, 0xCD, 0xB2, + 0x05, 0xF3, 0x15, 0x71, 0x7C, 0x86, 0xFC, 0xF1, + 0xFD, 0x6B, 0xA6, 0xE3, 0xFC, 0x86, 0xE3, 0xBA, + 0x56, 0x6B, 0x8F, 0xBE, 0x02, 0x9A, 0x03, 0x0C, + 0x8C, 0x69, 0xE5, 0x7C, 0x15, 0xAE, 0x13, 0x12, + 0x25, 0x2B, 0x36, 0xFB, 0x51, 0xA1, 0x61, 0x5E, + 0x37, 0x46, 0x92, 0x0C, 0x0B, 0x71, 0x5C, 0x1D, + 0xA4, 0xDB, 0x04, 0xC1, 0x08, 0xED, 0x5C, 0x44, + 0x80, 0x70, 0xC1, 0x0E, 0x63, 0x6D, 0x92, 0xC2, + 0x1E, 0x18, 0x8E, 0x71, 0x0E, 0x7C, 0x10, 0x21, + 0x1E, 0xC2, 0xCF, 0xD6, 0x38, 0x7A, 0x9B, 0x5C, + 0x9E, 0xE8, 0x82, 0x3D, 0xDD, 0x40, 0x0C, 0x96, + 0x17, 0xEF, 0xB1, 0x25, 0xBA, 0x84, 0x45, 0x4F, + 0x64, 0xA6, 0x8E, 0x2B, 0xBA, 0xF1, 0xED, 0xB3, + 0x4F, 0x92, 0x5F, 0x1A, 0x73, 0x2A, 0x2A, 0x22, + 0x68, 0x19, 0x4C, 0x8A, 0x87, 0x51, 0x75, 0x78, + 0xCF, 0x3C, 0xC5, 0x97, 0xFD, 0x77, 0x43, 0xCB, + 0xAE, 0x3D, 0x9C, 0xB6, 0x45, 0x54, 0x45, 0xF4, + 0x1B, 0x92, 0xEE, 0xF4, 0x9D, 0xC4, 0x32, 0x10, + 0x6A, 0x48, 0xAB, 0xE9, 0x47, 0xBF, 0x2B, 0x92, + 0x49, 0x84, 0x23, 0x52, 0x05, 0xA1, 0x92, 0x3B, + 0xD7, 0x78, 0x2D, 0x9A, 0x15, 0xB4, 0xD9, 0xD3, + 0x45, 0xD0, 0x69, 0xF1, 0x38, 0x4D, 0x39, 0xEA, + 0x49, 0x7E, 0xC0, 0xE7, 0x7A, 0x07, 0x88, 0x1D, + 0x1F, 0xA3, 0xAC, 0xE9, 0xC3, 0xFD, 0x6B, 0x5D, + 0xF6, 0xB2, 0xB9, 0xAA, 0x9A, 0xBE, 0xF4, 0x06, + 0xD9, 0x5E, 0x81, 0xE5, 0x68, 0xDF, 0xEA, 0x20, + 0x4C, 0xEE, 0xED, 0x42, 0xA4, 0xD3, 0x7B, 0xA8, + 0x82, 0x98, 0x0D, 0xB4, 0xC8, 0xC3, 0x43, 0x28, + 0x13, 0xE9, 0x6B, 0x11, 0x0E, 0x54, 0xE6, 0xCD, + 0x11, 0x0A, 0x01, 0x36, 0x41, 0x78, 0xC5, 0x7D, + 0x00, 0xC6, 0x8D, 0xE7, 0x7B, 0x4C, 0xE6, 0x35, + 0x57, 0x8F, 0x56, 0xA9, 0x73, 0x5A, 0xEF, 0x93, + 0xF0, 0xD8, 0x16, 0xE3, 0x44, 0x8A, 0xA0, 0xA9, + 0xF1, 0x9C, 0x2E, 0x02, 0xD1, 0x3C, 0x66, 0xDD, + 0xE5, 0x35, 0xFE, 0x81, 0x77, 0x8D, 0xC2, 0x46, + 0x64, 0x03, 0x23, 0xCC, 0x37, 0x22, 0x60, 0x68, + 0xCC, 0x7F, 0x79, 0xE8, 0x6B, 0xD0, 0xEE, 0x1C, + 0x6A, 0xC3, 0x3C, 0xEB, 0x51, 0x95, 0xFA, 0xE4, + 0x28, 0x17, 0x94, 0x49, 0x22, 0x69, 0x64, 0x98, + 0x82, 0x8B, 0x68, 0x9F, 0x69, 0x35, 0xF9, 0xBF, + 0x33, 0x22, 0xA4, 0x32, 0x0F, 0x4C, 0x26, 0xE4, + 0x8D, 0xDF, 0xAE, 0xBD, 0xF4, 0x4D, 0x01, 0xAF, + 0xA1, 0xFA, 0x3E, 0xCE, 0xD3, 0xB0, 0x5D, 0x02, + 0xDB, 0x3B, 0xB4, 0x23, 0xB8, 0x55, 0x97, 0xB5, + 0x1F, 0x25, 0x64, 0xA7, 0x5D, 0x4A, 0x8C, 0x90, + 0xD4, 0xB6, 0x85, 0x20, 0x32, 0x09, 0x37, 0x26, + 0x00, 0xD5, 0x4D, 0x98, 0x5A, 0xCF, 0x29, 0x3B, + 0x0E, 0xAF, 0x69, 0x88, 0x78, 0x18, 0xAD, 0xD1, + 0xE1, 0xB7, 0xC5, 0xD7, 0xB7, 0x5F, 0xFE, 0xB5, + 0x64, 0xE0, 0x68, 0x0B, 0x4F, 0x46, 0x7B, 0xDE, + 0x0B, 0x11, 0x7A, 0x42, 0x10, 0x86, 0x09, 0x60, + 0xB5, 0xE0, 0x22, 0x17, 0x28, 0x68, 0x7A, 0xE9, + 0xEB, 0xBC, 0x6B, 0xD5, 0x95, 0x4C, 0xE0, 0xAE, + 0x57, 0xB1, 0x45, 0xFF, 0xC2, 0x7E, 0xB6, 0xA0, + 0xD3, 0x8E, 0x46, 0x16, 0xCE, 0xBE, 0x76, 0xCE, + 0x59, 0x5B, 0xA4, 0x96, 0x1E, 0x9F, 0x80, 0xF0, + 0x06, 0x7E, 0xCD, 0x6E, 0x27, 0xB8, 0x7D, 0x26, + 0xB6, 0x60, 0xA3, 0xAB, 0x52, 0xC1, 0x37, 0x9A, + 0xDD, 0x46, 0xF5, 0xB9, 0x39, 0x75, 0xAA, 0x19, + 0xF3, 0xE4, 0xA8, 0x95, 0x4B, 0x25, 0x3F, 0x0B, + 0x44, 0x13, 0xF5, 0x82, 0x10, 0x68, 0x03, 0xD5, + 0x0F, 0x99, 0xB5, 0xB2, 0x8B, 0x85, 0x77, 0x2E, + 0x78, 0x3E, 0xEE, 0x21, 0x6E, 0xAD, 0x2D, 0xCF, + 0x95, 0x62, 0x94, 0x1C, 0x50, 0xAB, 0xC5, 0xFA, + 0x8E, 0x24, 0xB6, 0x14, 0x86, 0x46, 0x8A, 0xAA, + 0x20, 0xDF, 0x15, 0xD1, 0x72, 0xF6, 0xAC, 0x03, + 0xAF, 0xDF, 0xCD, 0x53, 0x81, 0xBA, 0xDB, 0x07, + 0x8B, 0x8E, 0xBB, 0x70, 0x91, 0x57, 0x04, 0xB9, + 0x88, 0xE5, 0x8F, 0x45, 0xD3, 0xD6, 0x31, 0x12, + 0xA5, 0xC1, 0x28, 0xC6, 0x49, 0x90, 0x0F, 0x1D, + 0x69, 0x66, 0xE3, 0x98, 0x56, 0x7D, 0xE3, 0x48, + 0xAC, 0xC0, 0xDE, 0xE4, 0x2B, 0x88, 0x01, 0x19, + 0x4E, 0x99, 0xBB, 0x1A, 0xAF, 0x02, 0x5A, 0x91, + 0xE3, 0x2C, 0xE6, 0x56, 0x4D, 0x05, 0x10, 0xB9, + 0x10, 0xF2, 0x2A, 0x27, 0xDE, 0xCF, 0x9D, 0x2E + }; + static const byte msg_44[] = { + 0xB1, 0x34, 0x49, 0x15, 0xCC, 0xD6, 0x93, 0x41, + 0x6B, 0x37, 0xFE, 0xBD, 0x8D, 0xC7, 0xC7, 0xDB, + 0x9F, 0x25, 0x3E, 0x9D, 0xF5, 0x3C, 0xEC, 0x51, + 0x49, 0x23, 0xAA, 0xA2, 0x67, 0x6F, 0xBF, 0xA4, + 0xCC, 0x04, 0xFC, 0x68, 0xF9, 0xE3, 0x2F, 0x9E, + 0x86, 0x4C, 0x68, 0x95, 0xDB, 0x37, 0xE9, 0xFF, + 0xEB, 0x80, 0xF0, 0xF6, 0xB8, 0x6C, 0xB6, 0xAD, + 0x9C, 0x42, 0xF8, 0xFC, 0x75, 0x19, 0x8D, 0xD3, + 0xCC, 0xDA, 0xF5, 0x77, 0xC7, 0xB3, 0x5B, 0x8F, + 0x1B, 0xF6, 0x0A, 0xAB, 0xEA, 0x89, 0x94, 0x42, + 0x20, 0x1F, 0xBB, 0xF4, 0x42, 0x8C, 0x7E, 0xC1, + 0x7B, 0xC3, 0x1B, 0x54, 0x72, 0x4B, 0x95, 0x90, + 0xF7, 0x53, 0x1E, 0x6F, 0x79, 0x0A, 0x1F, 0xA7, + 0x74, 0x32, 0x83, 0x37, 0x2D, 0x31, 0x71, 0xB8, + 0x96, 0x6B, 0x47, 0x0A, 0xAA, 0x85, 0x26, 0xEB, + 0x4A, 0x6E, 0x81, 0xE6, 0x5A, 0xD0, 0xC2, 0x9F, + 0x2D, 0x37, 0xDD, 0x5B, 0x41, 0x2B, 0xAE, 0x68, + 0x2A, 0x66, 0x79, 0x68, 0x77, 0xC8, 0x2F, 0xFD, + 0xA9, 0x76, 0x24, 0x34, 0xEA, 0xC2, 0xC7, 0xD4, + 0xAF, 0x60, 0x9B, 0x27, 0x72, 0x49, 0x0D, 0xEE, + 0x9B, 0xFB, 0x00, 0x5D, 0x2F, 0x1A, 0x2E, 0xBB, + 0xA0, 0x32, 0xCD, 0x71, 0x59, 0xD5, 0x4B, 0xE5, + 0x96, 0xF3, 0x30, 0x68, 0xBE, 0x5D, 0x9A, 0x2D, + 0x94, 0x0C, 0x76, 0x70, 0xE6, 0x4E, 0x9A, 0xF7, + 0xD7, 0xD3, 0x3E, 0xC3, 0xAE, 0xC6, 0xF1, 0xD9, + 0xDE, 0xE3, 0x92, 0x84, 0xF0, 0x5C, 0xE0, 0x25, + 0xD1, 0x81, 0x76, 0x0D, 0x40, 0xE5, 0xC2, 0xD9, + 0xBE, 0xAE, 0x24, 0x20, 0xF4, 0x0D, 0x9F, 0x32, + 0xB7, 0xBD, 0xCD, 0x3A, 0xFB, 0x1C, 0x66, 0x0D, + 0x01, 0x71, 0x4D, 0x81, 0x37, 0x58, 0xDB, 0xB8, + 0x2C, 0x6B, 0x7E, 0x85, 0x80, 0x52, 0xB5, 0xA5, + 0x0E, 0x39, 0xE0, 0x15, 0xD3, 0xF2, 0x4A, 0x2C, + 0x64, 0xC9, 0xDD, 0xCC, 0x15, 0x0D, 0x90, 0x4F, + 0x07, 0xF6, 0x5F, 0xF6, 0x8A, 0xD0, 0x12, 0x9E, + 0xC3, 0xF8, 0x12, 0x3F, 0x3A, 0x03, 0xFC, 0x95, + 0x8A, 0xE2, 0x47, 0x8C, 0x6C, 0x6E, 0x03, 0x61, + 0x67, 0xD8, 0x51, 0x49, 0xF7, 0x9F, 0xB0, 0x3F, + 0xAA, 0xB9, 0x89, 0x7C, 0xE7, 0x3F, 0x88, 0x55, + 0xC5, 0x4C, 0x83, 0xD7, 0x53, 0xB1, 0x04, 0xB5, + 0x13, 0xD5, 0x6B, 0xC6, 0x4C, 0x3B, 0x08, 0x91, + 0x73, 0x47, 0x35, 0x13, 0x26, 0xD8, 0xEB, 0x47, + 0xCF, 0x66, 0xF1, 0x3F, 0xB9, 0x0F, 0x6A, 0xF5, + 0xA8, 0x94, 0xC7, 0x75, 0x00, 0x77, 0xA8, 0x9C, + 0xEB, 0x77, 0x22, 0xE2, 0xE6, 0x80, 0xA5, 0x9B, + 0xF8, 0x43, 0x8C, 0x52, 0x35, 0x31, 0xEA, 0x8C, + 0xC2, 0x83, 0x4F, 0xFC, 0x4E, 0xF0, 0x2D, 0x35, + 0xB8, 0x51, 0x46, 0xF2, 0xD6, 0x01, 0xD5, 0x00, + 0x99, 0x6A, 0x44, 0x10, 0x64, 0xAD, 0xCA, 0x1F, + 0x62, 0x3F, 0x2F, 0xE7, 0x45, 0x22, 0x47, 0xEF, + 0x86, 0x9D, 0x76, 0xD5, 0x78, 0x42, 0x07, 0x30, + 0x88, 0x86, 0x90, 0xB1, 0xA0, 0x08, 0xDA, 0x28, + 0x2A, 0xD1, 0x75, 0x7D, 0x21, 0x71, 0x29, 0x38, + 0x59, 0xC7, 0x3F, 0x55, 0x20, 0xB5, 0xBB, 0x48, + 0x03, 0xE7, 0xFA, 0xB0, 0x29, 0x00, 0xD2, 0x0F, + 0xE7, 0x65, 0x81, 0x8E, 0xE6, 0x24, 0xE7, 0xA1, + 0x94, 0x50, 0x9D, 0x01, 0x6B, 0x4B, 0xD7, 0x81, + 0x4E, 0xA0, 0xD5, 0x4A, 0x51, 0xEE, 0x95, 0x0A, + 0x14, 0x76, 0xD5, 0x87, 0xAA, 0x6F, 0x78, 0xC8, + 0xD2, 0xE0, 0xC8, 0xF8, 0xF2, 0x78, 0xD8, 0x2E, + 0x11, 0x90, 0x44, 0xB6, 0xBF, 0xD0, 0xBE, 0xD8, + 0x6F, 0xA4, 0x20, 0xA2, 0xC8, 0xA4, 0xEF, 0xB0, + 0x5D, 0x73, 0x06, 0xBE, 0x52, 0xF9, 0x32, 0xD8, + 0x06, 0x5D, 0xD1, 0x29, 0x23, 0x46, 0x25, 0x6E, + 0x42, 0x9D, 0xEE, 0x41, 0x9E, 0xF3, 0x7D, 0x1B, + 0x35, 0x28, 0x81, 0xDC, 0x47, 0x7F, 0x25, 0xA4, + 0x0A, 0xEB, 0x3E, 0x17, 0xE6, 0x1B, 0xCC, 0x00, + 0xD2, 0xE2, 0xA9, 0x3D, 0xEC, 0xF3, 0x00, 0xF0, + 0x81, 0x68, 0x21, 0xED, 0x49, 0xF9, 0x9B, 0x9B, + 0x8B, 0xED, 0xD9, 0x1E, 0xFA, 0x04, 0xBB, 0xB0, + 0x9A, 0xBD, 0x1D, 0x24, 0x36, 0xA7, 0xD6, 0x64, + 0x8A, 0x38, 0x3A, 0x3A, 0x8F, 0x09, 0x08, 0x0E, + 0x46, 0x7B, 0xE1, 0x03, 0x30, 0xBF, 0x62, 0x27, + 0x10, 0x74, 0xBE, 0xBD, 0x7F, 0x56, 0x39, 0x0D, + 0x1D, 0x39, 0x47, 0xF4, 0x02, 0x47, 0x6B, 0x62, + 0x6B, 0x52, 0xAC, 0xAB, 0x21, 0xAC, 0x10, 0x4A, + 0xAB, 0x59, 0x75, 0x33, 0x11, 0xD9, 0xE9, 0xE2, + 0xB2, 0x20, 0x6B, 0xA1, 0x09, 0x42, 0xB6, 0x37, + 0xE4, 0x5C, 0xE6, 0x9F, 0x54, 0xB4, 0x67, 0xBC, + 0xAE, 0xF3, 0xDC, 0x1A, 0xA2, 0x15, 0x47, 0x7B, + 0x15, 0xC8, 0x00, 0x35, 0x8E, 0x1D, 0x69, 0x04, + 0xD8, 0x9C, 0xA9, 0x6A, 0x03, 0x1A, 0x55, 0x48, + 0x6C, 0x4F, 0xC1, 0x68, 0x27, 0x26, 0x13, 0xAB, + 0x8E, 0x03, 0x50, 0x7B, 0xDD, 0xC2, 0x7E, 0x5C, + 0x8A, 0x6F, 0xBB, 0x5F, 0x8B, 0x22, 0x86, 0xA5, + 0xC5, 0x0E, 0xC5, 0x68, 0x60, 0xF6, 0xBF, 0xFF, + 0x6E, 0xBA, 0xDC, 0x21, 0x71, 0xD2, 0xEB, 0xD1, + 0x27, 0x8C, 0x58, 0x14, 0xC3, 0x2E, 0x13, 0x9E, + 0x04, 0x09, 0x61, 0xC3, 0x19, 0xC3, 0x03, 0x48, + 0x70, 0x33, 0x3B, 0x12, 0xF7, 0x3B, 0x38, 0xE7, + 0x18, 0x14, 0xA9, 0xF1, 0x60, 0x83, 0x65, 0xEB, + 0x32, 0xD5, 0x23, 0x8F, 0x6B, 0xF7, 0xD8, 0x00, + 0x21, 0xBD, 0xA3, 0x98, 0xDE, 0xD7, 0x13, 0x17, + 0xAB, 0x3C, 0xA4, 0xD7, 0xBE, 0x1D, 0xA7, 0x4A, + 0x1B, 0xC4, 0x0C, 0x9B, 0x2E, 0x34, 0x5B, 0xA7, + 0xA2, 0x3F, 0x9B, 0x2D, 0xDB, 0xAF, 0x85, 0x14, + 0x0A, 0xF9, 0x30, 0x9E, 0x86, 0x53, 0xAC, 0x24, + 0xAF, 0xD8, 0x25, 0xBC, 0x2A, 0x07, 0x2B, 0xCD, + 0x02, 0xFE, 0x3E, 0xF0, 0x0B, 0xE3, 0xF9, 0x51, + 0x5C, 0x29, 0xEB, 0x8A, 0xFB, 0xC3, 0xEF, 0xD1, + 0xF9, 0xCF, 0xDF, 0xE9, 0xEB, 0xA9, 0x49, 0x59, + 0xB5, 0x17, 0x7E, 0x28, 0x86, 0xB8, 0xD1, 0x8D, + 0xCA, 0x97, 0xF0, 0xCB, 0x80, 0x7E, 0xE3, 0xEA, + 0xE3, 0x1B, 0x48, 0xCF, 0xAC, 0x61, 0x3C, 0x2E, + 0x00, 0xAB, 0x74, 0xFB, 0x95, 0xF6, 0x64, 0xF3, + 0xCA, 0xBF, 0x6E, 0xEF, 0xCD, 0xDD, 0x6D, 0xA5, + 0xF8, 0x98, 0xEC, 0x38, 0xF2, 0xF0, 0x7D, 0x6D, + 0xCB, 0x75, 0xE0, 0x50, 0x9D, 0x13, 0x19, 0x24, + 0x07, 0x4C, 0x05, 0xF4, 0x5D, 0xCA, 0x25, 0xB7, + 0xCF, 0xE2, 0xBC, 0xFE, 0xEC, 0xAF, 0x5F, 0xC3, + 0x6C, 0xE6, 0xE3, 0xC5, 0x85, 0x43, 0x7B, 0x06, + 0x9F, 0xD2, 0xC6, 0xBB, 0xAD, 0x33, 0xD6, 0x86, + 0xBD, 0x5B, 0x9E, 0x2C, 0xA0, 0xD9, 0x8B, 0xDC, + 0x5E, 0x71, 0x7B, 0x6D, 0xF7, 0x1D, 0x40, 0x91, + 0x30, 0x8E, 0x84, 0x73, 0x9A, 0xD6, 0x7F, 0xA6, + 0x79, 0xA6, 0xCE, 0xE9, 0xA6, 0x83, 0x28, 0x4B, + 0x4F, 0xB3, 0x1B, 0x2C, 0x40, 0x8F, 0x52, 0xF0, + 0x59, 0x7D, 0x9C, 0x04, 0xEA, 0xF4, 0xAC, 0x6D, + 0xBB, 0x6C, 0x3F, 0xD6, 0x7F, 0x25, 0x39, 0xD8, + 0x87, 0xDF, 0xBC, 0xF3, 0xCA, 0xE4, 0x59, 0xFA, + 0x76, 0x66, 0x61, 0xA4, 0x8B, 0xFC, 0xFD, 0x6F, + 0x64, 0x03, 0x99, 0xD3, 0xAF, 0x07, 0x86, 0x35, + 0x99, 0x98, 0xCE, 0xFF, 0x7E, 0x9E, 0xB1, 0xB0, + 0x57, 0xA6, 0x29, 0x3D, 0xFF, 0xB7, 0xF3, 0xF2, + 0x51, 0x4B, 0x0B, 0x70, 0x29, 0x46, 0x06, 0x8A, + 0x6B, 0xBD, 0x75, 0x30, 0xD6, 0x91, 0x7F, 0xB1, + 0x1D, 0xBB, 0xAA, 0xBE, 0xD7, 0xAA, 0x46, 0x81, + 0xD7, 0x8A, 0xEA, 0x91, 0x86, 0x69, 0x2D, 0xDA, + 0x34, 0x70, 0x65, 0x2E, 0xB8, 0xA3, 0xF1, 0x44, + 0x56, 0xA5, 0xAA, 0xC4, 0x20, 0x88, 0x3B, 0x42, + 0x37, 0xB0, 0xA7, 0x2D, 0x91, 0x27, 0x63, 0xB6, + 0x7A, 0xC4, 0x13, 0x1A, 0x8A, 0x5D, 0x2F, 0x16, + 0x82, 0x96, 0xB9, 0x12, 0xD3, 0xB6, 0x61, 0xC4, + 0xE8, 0x3C, 0xE6, 0x3A, 0x61, 0xC0, 0x45, 0xEB, + 0xA5, 0x75, 0xEE, 0xB6, 0x7F, 0xB0, 0x70, 0xED, + 0x82, 0x39, 0xE5, 0x1A, 0x67, 0xD9, 0x80, 0x3C, + 0xE0, 0x0B, 0x85, 0x66, 0x74, 0xE0, 0xB7, 0x26, + 0x66, 0x26, 0xDD, 0x02, 0x15, 0xE5, 0xEF, 0x5F, + 0xDE, 0x7B, 0xF4, 0x0B, 0x99, 0x10, 0x21, 0x08, + 0xFC, 0x2D, 0xF2, 0x8B, 0xDC, 0xC8, 0xEA, 0xC6, + 0x3E, 0xFB, 0x20, 0x50, 0x1F, 0x24, 0x66, 0x99, + 0x80, 0x88, 0xC7, 0xA0, 0xB9, 0x6D, 0x1B, 0x75, + 0xC4, 0xC2, 0xE2, 0x52, 0xA0, 0xBF, 0x38, 0x01, + 0x5C, 0xA5, 0x8A, 0xDA, 0x79, 0x38, 0xAE, 0x2E, + 0xC7, 0x96, 0x6F, 0x30, 0x5B, 0xB4, 0x21, 0xC0, + 0xCD, 0x95, 0xCA, 0xD2, 0x12, 0x7D, 0xAD, 0x87, + 0x08, 0x6C, 0xC3, 0x8B, 0xF6, 0xB1, 0x5D, 0xAD, + 0x2C, 0x7C, 0x04, 0x41, 0xE5, 0x34, 0x2E, 0x4B, + 0x5A, 0xD9, 0x1E, 0x66, 0xF4, 0x23, 0xE2, 0x88, + 0x4D, 0xD9, 0x03, 0xFE, 0x6C, 0x64, 0x7D, 0x61, + 0xE6, 0x70, 0x0E, 0xA8, 0x83, 0x08, 0x07, 0xE6, + 0xFD, 0x64, 0x54, 0x3E, 0x3C, 0x6E, 0x9A, 0xD1, + 0x93, 0x37, 0x36, 0x90, 0xDE, 0x94, 0xF7, 0x16, + 0x15, 0x47, 0x94, 0xFE, 0x97, 0x5B, 0x11, 0x80, + 0xBA, 0x40, 0xAF, 0x7F, 0x05, 0xC1, 0x82, 0x91, + 0x69, 0xFD, 0xFB, 0xEC, 0x3A, 0xF7, 0xCF, 0xE1, + 0xD7, 0x9B, 0x59, 0x7E, 0xE4, 0x38, 0xA2, 0x96, + 0xEF, 0x14, 0x6A, 0x05, 0x99, 0x71, 0xE3, 0xF9, + 0x50, 0x8E, 0x35, 0x0B, 0x50, 0x71, 0x6D, 0xEC, + 0xB5, 0x1B, 0xC8, 0x80, 0x2A, 0xE6, 0x2A, 0x7F, + 0x4C, 0x2E, 0x6F, 0x7B, 0x54, 0x62, 0x0E, 0xF0, + 0x4C, 0x00, 0xF0, 0x72, 0xAE, 0x37, 0xAC, 0x32, + 0x7E, 0x26, 0xD3, 0x65, 0x76, 0x1C, 0x10, 0x46, + 0x17, 0xAE, 0xE0, 0xF3, 0x28, 0xEE, 0x97, 0xE0, + 0x86, 0x18, 0x3D, 0x46, 0xA3, 0x62, 0x1F, 0x23, + 0xF3, 0xAC, 0x27, 0x60, 0xB8, 0x85, 0x9A, 0x96, + 0x0E, 0xF1, 0x6F, 0xC1, 0xC6, 0xB1, 0x97, 0x8A, + 0x74, 0x12, 0xDD, 0x73, 0x85, 0x02, 0x9C, 0x73, + 0x61, 0xA8, 0xF7, 0x49, 0xCE, 0xBA, 0x23, 0xED, + 0xE7, 0x9A, 0x17, 0x0E, 0xA6, 0x84, 0x59, 0xF5, + 0x21, 0x66, 0xF5, 0xC5, 0x61, 0xF8, 0x88, 0x7E, + 0x62, 0x0C, 0x00, 0xC6, 0x4F, 0x06, 0xBD, 0x0A, + 0xBB, 0xCD, 0xE5, 0x11, 0x7A, 0xBC, 0xFD, 0x03, + 0xB6, 0xD1, 0xBA, 0x4F, 0x30, 0xFA, 0x96, 0x75, + 0xD8, 0x2D, 0x7A, 0x43, 0x0D, 0x58, 0x41, 0x46, + 0xBA, 0x72, 0x06, 0xCB, 0xBD, 0xD9, 0xBE, 0xA1, + 0xEA, 0x47, 0x08, 0x3D, 0xF9, 0x32, 0x23, 0x9C, + 0xAA, 0x02, 0x1D, 0xA3, 0x3E, 0x43, 0xF1, 0x68, + 0xD8, 0xBE, 0x9F, 0x0E, 0xA8, 0xA8, 0x52, 0xC4, + 0x0A, 0xDE, 0x43, 0x9D, 0x58, 0xA8, 0x05, 0xD4, + 0x74, 0xF8, 0x93, 0x21, 0x62, 0x6E, 0x33, 0x78, + 0x3C, 0x23, 0xEB, 0x60, 0x1C, 0x4C, 0x25, 0xFE, + 0x0F, 0x5E, 0x73, 0xC3, 0xAD, 0x33, 0x9A, 0x7D, + 0x69, 0x6B, 0xAB, 0x2C, 0xAA, 0x5F, 0xBF, 0x96, + 0x62, 0x3A, 0xF0, 0x63, 0x41, 0x00, 0xC7, 0x4C, + 0x81, 0x4D, 0x42, 0x43, 0x25, 0xBC, 0x30, 0xB6, + 0x0B, 0xEE, 0xFC, 0x18, 0x3E, 0x68, 0x0E, 0x64, + 0x5C, 0xD4, 0x22, 0x2A, 0xBA, 0xB5, 0xC6, 0x7E, + 0x67, 0x11, 0x1C, 0x4C, 0x03, 0x30, 0xEC, 0x0C, + 0x77, 0xB2, 0x2B, 0xBC, 0x98, 0xF7, 0x52, 0x8C, + 0x95, 0x66, 0xE1, 0x71, 0xDD, 0x26, 0xA7, 0x7F, + 0x87, 0xF3, 0x94, 0x2E, 0x0D, 0x3E, 0xFE, 0xAD, + 0x0A, 0xDA, 0x3B, 0x77, 0x49, 0xC5, 0x1D, 0xED, + 0x5F, 0xDA, 0x3F, 0xE6, 0xE7, 0x96, 0x58, 0xF1, + 0x02, 0x30, 0x68, 0xB9, 0x62, 0xD0, 0x58, 0xA2, + 0x89, 0x65, 0x12, 0x20, 0x1E, 0x4C, 0xE7, 0xB6, + 0x98, 0x12, 0x52, 0xF0, 0xE8, 0x55, 0xBC, 0xFE, + 0x1F, 0x44, 0x42, 0x36, 0xC9, 0x30, 0xE4, 0x9A, + 0x13, 0xB3, 0x7A, 0xF4, 0xF5, 0x97, 0xC0, 0x5D, + 0xCA, 0x23, 0xCC, 0x05, 0xC4, 0x3C, 0x32, 0xA2, + 0x11, 0x08, 0x17, 0xCB, 0x30, 0x6B, 0xA4, 0x7D, + 0x24, 0x5E, 0x50, 0x22, 0x2E, 0x23, 0xC6, 0x55, + 0x6B, 0xD7, 0x5D, 0x50, 0xEE, 0xF8, 0xBE, 0xB0, + 0xDE, 0x83, 0x5C, 0x8D, 0xD2, 0xE1, 0x5C, 0x70, + 0x66, 0x70, 0x59, 0x8F, 0x86, 0x50, 0x71, 0x71, + 0x04, 0x69, 0xEC, 0xB3, 0x47, 0x9E, 0xE0, 0x26, + 0xB1, 0x9F, 0xE6, 0x21, 0xAC, 0x99, 0x12, 0x6B, + 0x97, 0x9E, 0x1B, 0xA1, 0xDD, 0xA8, 0xE6, 0x11, + 0x12, 0x97, 0xC1, 0x0E, 0x4A, 0x77, 0xF5, 0x52, + 0xF8, 0x09, 0xE9, 0x01, 0x63, 0x56, 0x4E, 0xFA, + 0x24, 0x39, 0x36, 0xB9, 0xF2, 0x6E, 0x07, 0x28, + 0x7F, 0xA4, 0x07, 0x7C, 0xA2, 0x69, 0x7B, 0xED, + 0x6A, 0x4F, 0x0A, 0x95, 0x99, 0x05, 0x60, 0xE7, + 0x58, 0xD9, 0x90, 0xB4, 0xC1, 0x92, 0x0F, 0x9E, + 0x1A, 0xBE, 0x0B, 0x58, 0x96, 0x50, 0x61, 0x1C, + 0x2D, 0x5A, 0x13, 0xAA, 0x5F, 0x4E, 0x2B, 0x88, + 0xBE, 0xAB, 0x93, 0x72, 0xF4, 0x68, 0xB8, 0x30, + 0x91, 0xCD, 0x0A, 0x53, 0x8A, 0x35, 0x82, 0x93, + 0x4F, 0x66, 0xCA, 0xCD, 0xF2, 0x39, 0x98, 0xFE, + 0xC2, 0xFE, 0xFE, 0x51, 0x35, 0xF1, 0xB5, 0x62, + 0x2D, 0x1A, 0xE9, 0x43, 0x25, 0x5E, 0x05, 0xE4, + 0x8B, 0xFE, 0x91, 0x2F, 0x4F, 0x24, 0x1B, 0x2B, + 0xAC, 0x49, 0x9C, 0x14, 0xB0, 0x58, 0xA3, 0xA8, + 0xEE, 0xB9, 0xD1, 0xFA, 0x4D, 0x44, 0x2E, 0x23, + 0xFC, 0x59, 0x77, 0xA5, 0x60, 0x2E, 0xDC, 0xEB, + 0x7B, 0x7B, 0x26, 0x95, 0xE1, 0x87, 0xB7, 0x94, + 0xF8, 0x4B, 0x96, 0x63, 0x15, 0xB1, 0xBB, 0xA5, + 0xC0, 0x4A, 0x72, 0x02, 0x4A, 0x80, 0x5F, 0xB1, + 0x94, 0x73, 0xB7, 0x06, 0xB8, 0x13, 0x76, 0x42, + 0xAD, 0xB1, 0xC6, 0x6C, 0xFD, 0x64, 0xF2, 0x60, + 0xBB, 0x1B, 0x7A, 0xAD, 0xF6, 0xC2, 0x96, 0xB3, + 0x5F, 0x30, 0xB9, 0xD7, 0x70, 0x8A, 0x9D, 0x41, + 0xE7, 0x23, 0xFA, 0xD4, 0xE8, 0x72, 0xAF, 0x73, + 0xF8, 0x8C, 0x26, 0xAB, 0x65, 0x1B, 0xD5, 0x7A, + 0x21, 0xE2, 0x8C, 0xE8, 0xC2, 0x47, 0xD5, 0x8E, + 0x47, 0x9F, 0x79, 0x68, 0x87, 0x6F, 0xCE, 0xD3, + 0x5D, 0x2B, 0x87, 0xD2, 0xDF, 0x14, 0x43, 0x47, + 0x03, 0x3D, 0xF4, 0xCB, 0x50, 0xDE, 0x52, 0xD8, + 0x98, 0x41, 0x46, 0x3F, 0x5D, 0xFB, 0x6D, 0x6F, + 0xF6, 0xD9, 0xE8, 0x2B, 0xBA, 0xB3, 0xB1, 0xEC, + 0x58, 0x77, 0x8A, 0xB8, 0xF3, 0x6D, 0xBC, 0x68, + 0x22, 0xEA, 0xE3, 0x2F, 0xB6, 0xCB, 0x67, 0x30, + 0xCB, 0x33, 0x1C, 0x39, 0x5C, 0x27, 0x4A, 0xE7, + 0xE3, 0x7B, 0x40, 0x9B, 0x7C, 0x66, 0x32, 0xE7, + 0x6D, 0xAA, 0x97, 0xB8, 0x0F, 0x1E, 0x0C, 0xB4, + 0x7A, 0xA3, 0x66, 0xA8, 0xE3, 0x50, 0xEA, 0x36, + 0x74, 0x65, 0x92, 0xEC, 0x9B, 0x1E, 0x97, 0xF0, + 0x2F, 0x99, 0xD6, 0x00, 0x21, 0x37, 0x0B, 0x89, + 0x93, 0xC6, 0x80, 0xA1, 0x02, 0xDC, 0x96, 0x5D, + 0x20, 0xB7, 0x57, 0xF4, 0x17, 0x7A, 0x81, 0xBA, + 0x7B, 0x61, 0xD2, 0x88, 0xEF, 0xC5, 0xAD, 0xED, + 0x4C, 0x9A, 0x94, 0xA5, 0x7B, 0x2C, 0x6B, 0xD2, + 0x97, 0x7E, 0x23, 0x64, 0x0A, 0x66, 0x98, 0x47, + 0xEE, 0x81, 0xB1, 0x49, 0x0B, 0xE3, 0x8A, 0xC4, + 0x3E, 0x52, 0x2C, 0x8D, 0x09, 0xA2, 0x07, 0xB6, + 0x2A, 0x8B, 0x07, 0x9A, 0x24, 0x84, 0xDE, 0xD1, + 0x00, 0x63, 0xD7, 0xA1, 0x3F, 0xBF, 0x0C, 0xA8, + 0xEE, 0xDC, 0x2B, 0xF6, 0x7B, 0xD8, 0x78, 0x53, + 0x35, 0xB8, 0x29, 0x5A, 0xFE, 0x6B, 0x35, 0x6E, + 0x20, 0x62, 0x24, 0x17, 0x0E, 0x87, 0x23, 0x1A, + 0x77, 0x2D, 0x21, 0x84, 0x37, 0xBF, 0x7D, 0x68, + 0xAC, 0x2A, 0xF9, 0x3F, 0x11, 0x27, 0x18, 0x4F, + 0xA2, 0x15, 0x21, 0x47, 0x9E, 0x56, 0xFF, 0x22, + 0xE8, 0x0F, 0x61, 0xBC, 0x28, 0xB8, 0xD2, 0xE7, + 0x1B, 0x3D, 0x1D, 0x94, 0x28, 0x1B, 0x69, 0x56, + 0x00, 0xC8, 0xB0, 0xFD, 0x8E, 0x1D, 0x7E, 0x81, + 0x1F, 0x4C, 0xCF, 0xE1, 0x6E, 0x3F, 0x57, 0x95, + 0xC2, 0x4A, 0xA0, 0xA0, 0x16, 0x7E, 0x30, 0x5C, + 0x28, 0x87, 0x5C, 0x8F, 0xA9, 0x38, 0x9B, 0x72, + 0xF7, 0x90, 0x86, 0xF6, 0xEC, 0xC1, 0x6C, 0x88, + 0xB0, 0x78, 0x3A, 0x58, 0x15, 0xFB, 0x6F, 0x77, + 0xCD, 0xC7, 0xCC, 0xC3, 0x8D, 0x60, 0xE7, 0x87, + 0xBE, 0x9C, 0xBF, 0xFA, 0xA6, 0x2E, 0xF9, 0x59, + 0xA5, 0xE5, 0xDC, 0xDE, 0xB6, 0x25, 0x5C, 0x8E, + 0x0D, 0x2E, 0x01, 0xFE, 0x05, 0xEF, 0xF9, 0xE7, + 0x81, 0x02, 0xBE, 0xA2, 0x91, 0x40, 0x57, 0xD3, + 0x6E, 0x3D, 0x1B, 0x48, 0x50, 0x7A, 0xB6, 0xB1, + 0x76, 0x40, 0x47, 0x0F, 0xE3, 0xF1, 0x7A, 0x8B, + 0x6A, 0x5E, 0x04, 0xE5, 0x34, 0x56, 0xC5, 0xD9, + 0xE5, 0x0F, 0x74, 0x5D, 0xE0, 0x6F, 0x9A, 0xED, + 0xF4, 0xBF, 0xCF, 0x31, 0xB0, 0xC6, 0xED, 0x12, + 0x13, 0x36, 0x54, 0xCB, 0xC8, 0xDE, 0xF7, 0xF6, + 0x60, 0x9E, 0x12, 0x2C, 0x2E, 0x4C, 0x93, 0x3E, + 0x6F, 0xCB, 0x0F, 0x3D, 0x8C, 0xCA, 0xE8, 0xCA, + 0x0B, 0x10, 0xED, 0xDA, 0xE8, 0xDB, 0x29, 0x7C, + 0x8B, 0x32, 0x31, 0xC8, 0x94, 0x34, 0xA5, 0xF5, + 0x4D, 0x01, 0x28, 0xC8, 0x3A, 0xA6, 0xFD, 0xE2, + 0x9A, 0xB7, 0x0C, 0xDA, 0x43, 0x78, 0x45, 0x45, + 0xFE, 0xE9, 0xFF, 0x6E, 0xD4, 0x44, 0xF8, 0x88, + 0x66, 0x4D, 0xD2, 0x2B, 0x2E, 0x2D, 0xF5, 0x7C, + 0xA6, 0x53, 0xB6, 0xD2, 0x10, 0xE6, 0xB4, 0x0B, + 0x7F, 0xC2, 0x1F, 0xE0, 0x63, 0x90, 0xCA, 0x5D, + 0x5E, 0x60, 0xF5, 0x8A, 0xB1, 0x4C, 0x49, 0x03, + 0xD4, 0x38, 0xAE, 0xEF, 0xB1, 0x7C, 0xA4, 0xB9, + 0x98, 0x70, 0x6A, 0x0E, 0xD6, 0xA4, 0xA6, 0xF4, + 0x74, 0xB1, 0xBA, 0x1D, 0x48, 0xCC, 0xC1, 0x14, + 0x3C, 0x84, 0xA8, 0xD2, 0xE7, 0x8D, 0xEC, 0x11, + 0x61, 0x8C, 0x76, 0xB6, 0xDA, 0x28, 0xBC, 0x39, + 0xDF, 0x68, 0xAD, 0x24, 0xA4, 0x07, 0xE1, 0x07, + 0x33, 0xDD, 0x18, 0x9D, 0x5D, 0xAA, 0x90, 0x4B, + 0xEF, 0x88, 0x18, 0x6E, 0xB6, 0x83, 0x21, 0x45, + 0x94, 0x0F, 0x15, 0xB8, 0xAC, 0xD9, 0xD1, 0x8D, + 0x4F, 0x17, 0xC8, 0xD9, 0x17, 0xB0, 0x9D, 0x54, + 0xF2, 0x5F, 0x56, 0x09, 0xD3, 0x80, 0x20, 0x77, + 0x44, 0x23, 0x90, 0xAB, 0xB6, 0x0B, 0x51, 0xA7, + 0x41, 0xC5, 0xD4, 0x42, 0x5B, 0xD4, 0x67, 0x89, + 0xE6, 0xEC, 0x1E, 0x7D, 0x22, 0xD5, 0x6E, 0x7F, + 0x34, 0xCE, 0x7A, 0x07, 0x2B, 0x63, 0x0A, 0x69, + 0x51, 0x71, 0x8C, 0x13, 0x63, 0xB8, 0x79, 0x6D, + 0x94, 0xEA, 0xAF, 0x86, 0x30, 0xD2, 0x22, 0x6C, + 0x67, 0x82, 0x6C, 0xDE, 0xEA, 0x71, 0xE8, 0xD1, + 0x36, 0xF3, 0x64, 0x2F, 0x79, 0xE6, 0x92, 0xF0, + 0x4B, 0x05, 0x14, 0x7E, 0x40, 0xCE, 0x0C, 0x53, + 0xCA, 0x08, 0xEF, 0x0A, 0xA6, 0xA5, 0x73, 0x99, + 0xFD, 0xF3, 0xED, 0xBD, 0x54, 0x56, 0x6E, 0x66, + 0xEF, 0xCC, 0xE1, 0x6F, 0x0C, 0x44, 0x76, 0x84, + 0xF5, 0x55, 0x2B, 0xA3, 0x6B, 0x20, 0x60, 0x54, + 0x3F, 0xC1, 0x35, 0x58, 0xD8, 0xD8, 0x9E, 0x18, + 0x63, 0x70, 0x73, 0xEF, 0x6A, 0x87, 0x46, 0x77, + 0xA9, 0x7F, 0x9F, 0xA0, 0x23, 0x4B, 0x14, 0x00, + 0x61, 0xC7, 0xE3, 0x44, 0xBE, 0xD6, 0x09, 0x71, + 0xE3, 0x58, 0x44, 0x9A, 0xCD, 0x17, 0xE5, 0x8E, + 0x6D, 0x05, 0xBB, 0x21, 0x44, 0xD7, 0x4B, 0xD8, + 0x9A, 0xE9, 0x7A, 0x75, 0x91, 0x43, 0xAD, 0x84, + 0x5B, 0x02, 0x70, 0xBE, 0x67, 0x0B, 0x1E, 0x1E, + 0x92, 0xB8, 0xC7, 0xB6, 0x5F, 0xE1, 0x60, 0x23, + 0xF5, 0x30, 0xE4, 0xD0, 0xCF, 0x70, 0x03, 0xD1, + 0x85, 0x4A, 0x50, 0xDC, 0xF4, 0x9C, 0x29, 0xAB, + 0x0E, 0xA4, 0x7B, 0x2E, 0x3B, 0xDB, 0xBF, 0x52, + 0xD5, 0x8A, 0x91, 0x47, 0xA9, 0xD1, 0x23, 0xEB, + 0xC5, 0x6F, 0x11, 0xBB, 0xEE, 0xBB, 0x29, 0xD7, + 0x31, 0xAB, 0x99, 0x27, 0x5E, 0xF3, 0xA9, 0x23, + 0xFF, 0x70, 0x87, 0x83, 0xCC, 0x26, 0x92, 0x06, + 0xEC, 0xD3, 0x8C, 0xF9, 0x47, 0x34, 0x7D, 0x1E, + 0x71, 0xAF, 0xCF, 0x9D, 0xBF, 0x29, 0x1B, 0x95, + 0x27, 0x48, 0x55, 0xCE, 0xE2, 0xAC, 0x25, 0x61, + 0x83, 0xD9, 0x7B, 0x26, 0xEF, 0x94, 0x9A, 0x95, + 0x0C, 0xD1, 0xE4, 0x0A, 0x51, 0x50, 0x1F, 0x86, + 0x7A, 0x7B, 0xD3, 0x83, 0x55, 0x2D, 0xFC, 0x7B, + 0x97, 0x77, 0x17, 0x67, 0xBB, 0x9F, 0xD7, 0xD1, + 0xDD, 0xDD, 0x49, 0x67, 0xBB, 0xF7, 0x9A, 0x45, + 0x33, 0x24, 0xCA, 0xBC, 0xA5, 0xB2, 0x0D, 0x3F, + 0xB0, 0x10, 0x6D, 0xB9, 0x7D, 0x03, 0x3F, 0xCD, + 0x40, 0x37, 0x1E, 0x8A, 0xDA, 0xCD, 0xBA, 0xD7, + 0x8D, 0x89, 0xBD, 0x5E, 0x90, 0xCF, 0x97, 0xE8, + 0x35, 0x51, 0x87, 0x94, 0xFA, 0x3D, 0xB2, 0xB5, + 0x01, 0xF2, 0x35, 0x75, 0x77, 0x65, 0x5B, 0x9A, + 0x3C, 0xDA, 0x36, 0x52, 0xDF, 0xCF, 0x96, 0xBA, + 0xB9, 0xC5, 0xF9, 0x57, 0x67, 0x0E, 0x32, 0xE5, + 0x86, 0xE5, 0x1F, 0xD8, 0x9D, 0x7B, 0xA8, 0x76, + 0x89, 0xFD, 0x59, 0x70, 0x88, 0x73, 0x9D, 0x87, + 0xE1, 0x24, 0x6D, 0xC2, 0xB5, 0x1E, 0xCD, 0x54, + 0x29, 0x25, 0x10, 0xA3, 0xB4, 0x3C, 0xB2, 0x5A, + 0x62, 0xBD, 0xE9, 0x14, 0xEC, 0x3C, 0xBF, 0xA9, + 0x9D, 0xEC, 0x70, 0xAC, 0x23, 0xC0, 0xDF, 0xC9, + 0x69, 0xAD, 0x94, 0x1A, 0x69, 0x94, 0xA3, 0x70, + 0xF9, 0x0B, 0x15, 0x5D, 0x25, 0x45, 0x63, 0xFA, + 0xAA, 0x7D, 0x30, 0x67, 0x3C, 0x06, 0x34, 0x75, + 0x3F, 0xD6, 0x57, 0x58, 0x8E, 0xC6, 0x60, 0x3F, + 0x82, 0x35, 0xE9, 0x17, 0x36, 0x5D, 0xD8, 0x93, + 0x25, 0x25, 0x1B, 0x21, 0xB2, 0xFF, 0x80, 0xF5, + 0x44, 0xFE, 0x73, 0x84, 0xFF, 0x62, 0xFE, 0x52, + 0xC4, 0xCA, 0x77, 0x41, 0x28, 0xC8, 0x95, 0x15, + 0x2C, 0xC7, 0x5C, 0xA6, 0x3B, 0xA8, 0xF8, 0x1E, + 0x01, 0x30, 0xC9, 0x3B, 0x59, 0xF9, 0x40, 0xB7, + 0x18, 0x80, 0x21, 0x24, 0xDB, 0x8D, 0x07, 0xDF, + 0xDC, 0x24, 0xBF, 0x2F, 0x7B, 0xD9, 0xC4, 0xEF, + 0x61, 0x74, 0x1A, 0xF2, 0xB6, 0x98, 0x75, 0x66, + 0x22, 0x4F, 0x11, 0x06, 0x41, 0xDB, 0x77, 0x83, + 0xFA, 0xF3, 0x1B, 0xEC, 0xB8, 0xF7, 0x89, 0x47, + 0xBA, 0x12, 0x3F, 0xB0, 0x0E, 0x1B, 0x6D, 0x13, + 0x36, 0x0B, 0x16, 0xD0, 0x7C, 0x3A, 0xAA, 0x33, + 0x6D, 0xDA, 0x1B, 0x65, 0xD4, 0xC2, 0xF2, 0x1B, + 0xD5, 0xCD, 0x4B, 0xE9, 0xED, 0xFA, 0xFA, 0x78, + 0x45, 0x97, 0x2D, 0x60, 0xCC, 0xE3, 0x40, 0x3E, + 0xB5, 0xE5, 0xC8, 0x33, 0xF6, 0x4C, 0x51, 0x45, + 0xDC, 0x08, 0xE7, 0xB3, 0x6F, 0xCF, 0xDE, 0xE8, + 0x73, 0x0B, 0x94, 0x4F, 0x5A, 0x23, 0xF9, 0xFF, + 0x3F, 0x0D, 0x1D, 0xCE, 0x80, 0x86, 0x3B, 0x55, + 0x8D, 0x8A, 0x35, 0xB2, 0xAA, 0x65, 0x27, 0x69, + 0x1D, 0xA5, 0x0C, 0xE6, 0xFA, 0x39, 0x85, 0x62, + 0x65, 0xAD, 0xE6, 0x08, 0x38, 0xCE, 0xC9, 0xEA, + 0x98, 0x73, 0x99, 0x1D, 0xB5, 0x6F, 0xEA, 0xE8, + 0xEE, 0xE2, 0xEC, 0xF4, 0x32, 0x44, 0x96, 0x5A, + 0x13, 0xCC, 0x1D, 0x23, 0x0E, 0x91, 0x72, 0xD8, + 0x2A, 0xD2, 0x3D, 0x6A, 0x6E, 0x2A, 0x37, 0x7A, + 0x7F, 0x67, 0xF6, 0x40, 0xBF, 0x3A, 0x36, 0x3B, + 0xC8, 0x1A, 0x78, 0x6D, 0x12, 0xB0, 0x35, 0xA3, + 0x18, 0x55, 0x33, 0x70, 0x48, 0x48, 0x52, 0x8F, + 0xB4, 0x59, 0x58, 0xEB, 0xAA, 0xB3, 0x03, 0x67, + 0x4F, 0xFF, 0xA5, 0x68, 0xE7, 0xAE, 0xAF, 0x46, + 0x3D, 0x66, 0x6B, 0x60, 0x21, 0x26, 0x31, 0x83, + 0xBE, 0xE8, 0x1E, 0x72, 0x92, 0x87, 0x79, 0x24, + 0xCF, 0xDE, 0xEF, 0x6F, 0x81, 0x73, 0xA1, 0x34, + 0x7B, 0x99, 0x94, 0x43, 0x33, 0xF4, 0x8B, 0x36, + 0xC8, 0xC5, 0xF8, 0xC1, 0x6D, 0x22, 0x6D, 0xA3, + 0xC9, 0xDA, 0x5F, 0x4C, 0xE7, 0x7F, 0x00, 0xE4, + 0x42, 0xD8, 0x5C, 0x73, 0xE5, 0x78, 0x0C, 0x36, + 0x28, 0xD9, 0x83, 0x8F, 0xCA, 0xFA, 0x5D, 0x1D, + 0x34, 0x05, 0xF1, 0x93, 0x6C, 0xBC, 0xFD, 0x2C, + 0x52, 0xD4, 0xE8, 0x8D, 0xA9, 0xC9, 0x0D, 0xFF, + 0x28, 0x5E, 0x3E, 0x91, 0x12, 0xC0, 0x3C, 0xBA, + 0x58, 0x64, 0x7E, 0x6B, 0x4E, 0xC0, 0x77, 0xB1, + 0x67, 0x08, 0x16, 0xF5, 0x7E, 0x29, 0x42, 0x81, + 0x6A, 0x6F, 0x34, 0x21, 0x32, 0x64, 0x9A, 0xA6, + 0x44, 0xD1, 0x4F, 0x41, 0xAB, 0xC5, 0x26, 0x4A, + 0xFA, 0x70, 0xBC, 0xAE, 0x3D, 0x67, 0x9B, 0x86, + 0xF5, 0x1A, 0xF2, 0x44, 0x70, 0x52, 0xD0, 0x78, + 0xA0, 0xEA, 0x56, 0x39, 0x0B, 0x37, 0x2A, 0x15, + 0x13, 0xBC, 0xD2, 0xEA, 0x46, 0x6D, 0xCB, 0x5A, + 0x4D, 0x86, 0x47, 0x4F, 0xA1, 0xE2, 0x6B, 0xC0, + 0xA8, 0x3F, 0x58, 0x5C, 0x79, 0xAD, 0x62, 0x17, + 0xBC, 0x96, 0xAF, 0x77, 0x1F, 0x74, 0xD1, 0x42, + 0xBF, 0x5E, 0x91, 0xA9, 0x28, 0x44, 0xC5, 0x4E, + 0x76, 0x6B, 0xF2, 0xD3, 0x69, 0x8C, 0x0E, 0x4F, + 0x61, 0x76, 0xAD, 0xDC, 0x79, 0xE9, 0x74, 0xA4, + 0x66, 0xFB, 0x2E, 0x0C, 0xBB, 0x42, 0xC5, 0x3F, + 0x59, 0xB0, 0xDC, 0xB0, 0x32, 0xCD, 0x37, 0x56, + 0x1B, 0xD2, 0x46, 0xED, 0x52, 0xC8, 0x12, 0xEA, + 0xA3, 0x6B, 0xB9, 0xE5, 0xB3, 0x2A, 0xF3, 0x9B, + 0x0F, 0xC3, 0x77, 0x5F, 0x9A, 0xE1, 0x20, 0xBC, + 0x59, 0x44, 0x9B, 0x7B, 0x77, 0xB1, 0xBA, 0x1A, + 0x5B, 0x60, 0x06, 0x6C, 0x85, 0x83, 0x68, 0xDD, + 0x5A, 0xC8, 0xEE, 0xDC, 0xFE, 0x1F, 0x83, 0xF5, + 0x2C, 0x53, 0x62, 0xED, 0xE8, 0x93, 0xB7, 0x22, + 0x3E, 0xCB, 0x70, 0xBA, 0xA6, 0x6D, 0xB2, 0x91, + 0x47, 0xB8, 0x04, 0x37, 0x20, 0x1F, 0xEF, 0x71, + 0xB0, 0x5F, 0xF2, 0x51, 0x03, 0x5F, 0x88, 0xCA, + 0xFF, 0x42, 0xE8, 0x2A, 0x43, 0x02, 0xD3, 0x60, + 0x98, 0x26, 0x8B, 0x74, 0xF4, 0x18, 0x3D, 0x4D, + 0x19, 0xF1, 0x3B, 0x87, 0xE9, 0x83, 0x37, 0x15, + 0x7D, 0xA5, 0xEF, 0xBB, 0xF3, 0x4F, 0x48, 0xCA, + 0x40, 0x65, 0xD3, 0xE3, 0xBA, 0xCC, 0x83, 0x83, + 0x3F, 0xEE, 0xBA, 0x57, 0x34, 0x6D, 0x16, 0x9F, + 0x1B, 0xE6, 0xA0, 0x4C, 0x29, 0xC8, 0x2F, 0xD2, + 0x25, 0xA3, 0xF7, 0xC6, 0x85, 0x12, 0x4F, 0x53, + 0x7E, 0xC0, 0xE1, 0x0A, 0xB8, 0x58, 0x34, 0xBA, + 0x3E, 0x65, 0x4F, 0x19, 0x55, 0x5C, 0xB9, 0x74, + 0x6B, 0x74, 0xCE, 0x43, 0xA2, 0xC7, 0x8B, 0x21, + 0x70, 0x8C, 0x3B, 0xEF, 0x87, 0xC1, 0xE8, 0x8F, + 0x08, 0x10, 0xB4, 0xED, 0xE1, 0x81, 0x14, 0xE9, + 0x2A, 0x43, 0x13, 0xB4, 0xEA, 0xA0, 0x5F, 0x60, + 0x93, 0x7E, 0x87, 0x6D, 0xA2, 0x57, 0x63, 0x32, + 0xAE, 0xC3, 0x8C, 0xCD, 0x42, 0x5E, 0xFD, 0x51, + 0x1A, 0x39, 0xB9, 0xB4, 0xBD, 0x4C, 0xF3, 0xF2, + 0xE2, 0x70, 0x9A, 0x05, 0xF9, 0x39, 0xE5, 0xFC, + 0x59, 0x7D, 0x4E, 0x85, 0x12, 0x02, 0xC9, 0xC2, + 0xC5, 0x71, 0x3A, 0xD5, 0x73, 0xF7, 0x5A, 0xC5, + 0x49, 0x0D, 0xEE, 0xCF, 0x9D, 0xB8, 0xDE, 0xE2, + 0x03, 0x99, 0x70, 0x6B, 0x19, 0x29, 0xA4, 0xE8, + 0x99, 0x00, 0xC4, 0x9C, 0x24, 0x46, 0x5E, 0x08, + 0x09, 0x56, 0x6D, 0x9C, 0x2E, 0xF7, 0x8C, 0x52, + 0xDB, 0xB4, 0x2F, 0x9E, 0x22, 0x7E, 0xFD, 0x1E, + 0x1A, 0x72, 0xCB, 0x71, 0x0B, 0xD2, 0x19, 0x33, + 0x0E, 0x69, 0xCC, 0x00, 0x49, 0x36, 0x79, 0x78, + 0xAB, 0x11, 0x4D, 0x9A, 0xD7, 0xF9, 0x55, 0xCF, + 0x0B, 0x7B, 0x3D, 0x32, 0x5C, 0xB3, 0x51, 0x65, + 0x00, 0x0E, 0xD2, 0x9D, 0xBE, 0x0A, 0x19, 0x56, + 0xF1, 0x45, 0x95, 0x83, 0xC6, 0x97, 0xCD, 0x19, + 0xE7, 0x8B, 0x51, 0x74, 0xE4, 0xFD, 0x2C, 0xEC, + 0x10, 0x8A, 0x7C, 0x24, 0x28, 0x0A, 0x78, 0xA3, + 0xEC, 0x93, 0x97, 0x16, 0x4F, 0x60, 0x03, 0xFD, + 0x85, 0x31, 0x98, 0x04, 0xE5, 0x65, 0x5A, 0x87, + 0x9F, 0x66, 0x3D, 0xD4, 0x56, 0x3E, 0xF9, 0x98, + 0x25, 0x21, 0xFE, 0xC2, 0x07, 0x9E, 0x88, 0x89, + 0x49, 0x7B, 0xE9, 0x20, 0x1F, 0x6D, 0x7F, 0x24, + 0x60, 0xA8, 0xB2, 0xDD, 0x96, 0x51, 0x0E, 0x0E, + 0x4C, 0x83, 0xC3, 0xB1, 0x93, 0xC1, 0x1F, 0xD6, + 0xB4, 0xB6, 0x84, 0xCE, 0x85, 0x63, 0xA5, 0x38, + 0x0F, 0x2E, 0x55, 0xF4, 0x74, 0xA6, 0x0B, 0x63, + 0x17, 0xD0, 0x96, 0x76, 0x15, 0xAD, 0x4F, 0xA9, + 0xF0, 0x83, 0x25, 0xAD, 0xD7, 0x97, 0xB7, 0x9E, + 0x6F, 0x5D, 0xC7, 0x2A, 0xD1, 0x97, 0xF5, 0xF6, + 0x1E, 0xC8, 0x8B, 0xE5, 0xFB, 0xFF, 0x92, 0x72, + 0x31, 0x9A, 0x49, 0x4B, 0x60, 0x8F, 0x34, 0x7C, + 0xE1, 0x55, 0x66, 0x7A, 0x59, 0xC3, 0x00, 0x9A, + 0x14, 0x50, 0xF3, 0x06, 0x19, 0x3C, 0xFE, 0x61, + 0x1C, 0xF7, 0x05, 0x49, 0x2A, 0x30, 0xFF, 0x56, + 0xFE, 0x7F, 0x71, 0xD7, 0x32, 0xCC, 0xEF, 0x63, + 0x64, 0xE1, 0x66, 0xCF, 0xF8, 0x12, 0xED, 0x23, + 0x11, 0xB5, 0x16, 0xFA, 0x56, 0x90, 0xF2, 0xA2, + 0x72, 0x7B, 0x18, 0x50, 0xF2, 0x98, 0x5D, 0x48, + 0x25, 0x5E, 0x8C, 0x47, 0xE7, 0x11, 0x50, 0x2A, + 0x4B, 0x4A, 0x97, 0x0B, 0xDF, 0x70, 0xDC, 0x34, + 0x47, 0xF8, 0xE2, 0x88, 0x78, 0x24, 0xB5, 0x8A, + 0xC7, 0x58, 0xE8, 0x83, 0xF7, 0x3B, 0xAD, 0xFC, + 0xED, 0x46, 0x40, 0xD5, 0x46, 0x35, 0x1B, 0xF3, + 0x3E, 0x8F, 0x1E, 0x0B, 0x1B, 0xB9, 0xFB, 0x5A, + 0xFF, 0x0F, 0x8B, 0xA0, 0x95, 0x4A, 0x8E, 0x65, + 0x33, 0xD3, 0x7C, 0x03, 0x04, 0x8E, 0xBA, 0x6A, + 0x55, 0xB3, 0xC5, 0xDA, 0xCB, 0xDC, 0x44, 0xD3, + 0x98, 0x77, 0xD3, 0x07, 0x8A, 0xE9, 0x5E, 0x44, + 0x5B, 0xED, 0x12, 0xB1, 0xA5, 0x03, 0xAF, 0xB2, + 0x20, 0x0C, 0xB1, 0x8B, 0x08, 0xB4, 0x6A, 0x11, + 0x96, 0xA9, 0xF5, 0x7A, 0xFD, 0x56, 0x48, 0x11, + 0xC0, 0x30, 0xA4, 0x45, 0xFC, 0xAE, 0x72, 0xE5, + 0x5E, 0x85, 0xB7, 0x6F, 0xA0, 0x50, 0x13, 0x4B, + 0x2E, 0xC2, 0x31, 0x13, 0xED, 0x04, 0x04, 0x3D, + 0xBC, 0xD0, 0xB6, 0xFC, 0xCE, 0xBD, 0xC9, 0x13, + 0x5C, 0xB2, 0x02, 0xB8, 0x4F, 0xDD, 0x74, 0x51, + 0x1F, 0x9E, 0x8F, 0x0C, 0xF2, 0x26, 0xE1, 0x4C, + 0xA5, 0xC4, 0x38, 0xC7, 0x6A, 0xA5, 0xC3, 0xC2, + 0xE9, 0xF3, 0x22, 0x71, 0x00, 0x91, 0x83, 0xEE, + 0x92, 0xA9, 0x95, 0x81, 0x9D, 0xB9, 0x0F, 0x66, + 0x89, 0x9B, 0xB9, 0xB0, 0xC7, 0xED, 0x31, 0xDF, + 0x41, 0xB6, 0x8E, 0x52, 0xAC, 0x5B, 0xBD, 0xF2, + 0x33, 0x9F, 0x71, 0x5E, 0x43, 0xFE, 0xED, 0xD9, + 0x4F, 0x57, 0xF9, 0x23, 0x05, 0x23, 0x03, 0x34, + 0x17, 0xE4, 0x22, 0x27, 0x97, 0xF7, 0x62, 0x5B, + 0x52, 0x66, 0x70, 0xEE, 0x6B, 0xD3, 0x46, 0x8C, + 0xCD, 0x9B, 0xA4, 0xA1, 0xED, 0x26, 0x4A, 0xAC, + 0xC2, 0x50, 0xA8, 0x2A, 0x48, 0x83, 0x46, 0xB2, + 0xA5, 0xF9, 0x26, 0xF2, 0xE7, 0x8A, 0x8E, 0xD8, + 0x40, 0x5F, 0x85, 0x8E, 0xAB, 0xB0, 0x29, 0xF7, + 0x81, 0x42, 0xA7, 0x4B, 0xD5, 0xA8, 0x2D, 0x3D, + 0xD7, 0x0A, 0xB1, 0x26, 0xCF, 0xA3, 0xBA, 0xD7, + 0xF5, 0x1B, 0x9E, 0x95, 0xCB, 0xC8, 0xCE, 0x75, + 0xE7, 0x7A, 0x4A, 0x1B, 0x63, 0x21, 0xB7, 0x74, + 0x77, 0x78, 0xCD, 0x03, 0x5B, 0x3B, 0xCD, 0x44, + 0x8E, 0xF1, 0xBB, 0xB6, 0xFF, 0x75, 0x52, 0x8A, + 0x7A, 0xE9, 0xAF, 0x62, 0x24, 0xA1, 0x6F, 0x4F, + 0x45, 0x03, 0x87, 0xA3, 0xED, 0xBC, 0x2E, 0x92, + 0xC0, 0xB1, 0x9C, 0x22, 0x2E, 0x35, 0xC1, 0xA5, + 0x7E, 0xC3, 0x36, 0x3B, 0x18, 0x14, 0x78, 0x6E, + 0x1D, 0x37, 0xD7, 0x92, 0xB3, 0x78, 0x26, 0x13, + 0x9A, 0xFB, 0x38, 0x1D, 0xE0, 0x4C, 0x07, 0xC4, + 0x2C, 0xD3, 0xCA, 0x78, 0xE4, 0x70, 0xC2, 0x52, + 0x7C, 0x63, 0xDB, 0x4B, 0xB4, 0x0A, 0x4B, 0x7D, + 0x20, 0x67, 0xF0, 0xF4, 0x80, 0x5B, 0x65, 0x8B, + 0x29, 0x80, 0x92, 0xF0, 0x87, 0x3D, 0x09, 0x5A, + 0x0E, 0xEA, 0x45, 0x63, 0x92, 0x99, 0xD6, 0x0D, + 0x2B, 0x58, 0xEE, 0x19, 0x03, 0x4F, 0x94, 0x2D, + 0xEC, 0xBF, 0x5A, 0xE9, 0xA6, 0x16, 0xAF, 0x72, + 0x37, 0x5C, 0x12, 0xBB, 0x7D, 0xED, 0xAA, 0x6A, + 0x7D, 0xDF, 0x9A, 0x48, 0x37, 0x37, 0x3D, 0x7B, + 0x51, 0x96, 0x0B, 0x30, 0xCE, 0x9C, 0xE7, 0x3B, + 0x3C, 0x10, 0xDE, 0x32, 0xA7, 0x86, 0x39, 0xA9, + 0x33, 0x7D, 0x9B, 0xCF, 0x15, 0x27, 0xA4, 0x36, + 0x88, 0xBD, 0xB6, 0xEB, 0x8B, 0xD0, 0x3D, 0xCA, + 0xF1, 0x02, 0x70, 0xDF, 0xC0, 0xE2, 0xF0, 0xD2, + 0x2C, 0x27, 0xE3, 0x22, 0x24, 0x33, 0x27, 0x34, + 0xCA, 0x26, 0x19, 0x74, 0x02, 0x2F, 0x7E, 0xC1, + 0x76, 0xCB, 0x12, 0xBE, 0x6F, 0x13, 0x62, 0x1F, + 0x32, 0x03, 0x65, 0xCF, 0xBB, 0x03, 0xD0, 0x4C, + 0xF2, 0x9E, 0xFE, 0x93, 0xE9, 0x1B, 0x02, 0x9B, + 0x7B, 0x26, 0xFF, 0xEE, 0xF0, 0x6F, 0xCE, 0x57, + 0xD1, 0x2B, 0xE3, 0x90, 0x2E, 0xE2, 0x71, 0x2A, + 0xBA, 0xCC, 0x3D, 0x27, 0xCE, 0xA3, 0x5A, 0xCA, + 0x15, 0x09, 0xE4, 0xD0, 0x86, 0x4F, 0xEC, 0x5A, + 0x5B, 0x41, 0xA0, 0xE0, 0x3E, 0x1D, 0xEC, 0x6F, + 0x2A, 0x33, 0x72, 0x15, 0xCD, 0xE5, 0x55, 0xD6, + 0x6F, 0x84, 0xE3, 0xD6, 0x75, 0x5D, 0xDC, 0x1C, + 0x07, 0x3D, 0x0C, 0xDC, 0xDE, 0xF8, 0x8A, 0x44, + 0x40, 0xB1, 0x76, 0x84, 0xB8, 0xE0, 0xAF, 0x9D, + 0xA2, 0xB2, 0x84, 0xAA, 0xBF, 0x61, 0x08, 0x21, + 0xE5, 0xC2, 0xC9, 0x11, 0x94, 0x2D, 0x0B, 0xD1, + 0xC6, 0x59, 0xC1, 0xEE, 0xBA, 0x8E, 0x21, 0xAF, + 0xDE, 0x32, 0x77, 0xD5, 0x07, 0x3B, 0x98, 0x39, + 0x95, 0x77, 0x03, 0x80, 0x2F, 0xA2, 0x76, 0xC8, + 0x2C, 0xC6, 0x6A, 0x00, 0xA8, 0x69, 0x77, 0xB8, + 0x87, 0x7D, 0xC0, 0x51, 0x19, 0x45, 0x14, 0xA6, + 0x33, 0xB3, 0x4D, 0x36, 0x29, 0x34, 0xE8, 0x50, + 0xC2, 0x71, 0x7A, 0x0B, 0xE5, 0x92, 0x4E, 0x86, + 0xAA, 0xDA, 0x33, 0xCF, 0x34, 0x54, 0x63, 0x2C, + 0x68, 0xA1, 0x0A, 0xEF, 0x8B, 0x5B, 0xAA, 0x10, + 0x83, 0xE9, 0x13, 0x7D, 0x29, 0x20, 0xA2, 0x5F, + 0x96, 0x9F, 0x54, 0x0B, 0x95, 0xDF, 0x59, 0x91, + 0x6C, 0x4C, 0xAC, 0xC4, 0x55, 0x98, 0x8F, 0x46, + 0x31, 0x77, 0x56, 0xCC, 0x93, 0x7E, 0xF0, 0x17, + 0x7C, 0x0F, 0xEB, 0x3F, 0x23, 0xBB, 0xD3, 0x56, + 0x9E, 0x89, 0x67, 0xC4, 0x9B, 0x95, 0xA3, 0xBF, + 0x6D, 0x9D, 0x6D, 0x7C, 0x72, 0x27, 0x20, 0x6E, + 0x28, 0x37, 0x39, 0xFC, 0x77, 0x41, 0xE9, 0xFE, + 0x64, 0xEF, 0xA0, 0x38, 0x9F, 0xC7, 0x2F, 0xDA, + 0xC8, 0x1F, 0xEB, 0x75, 0x07, 0xB8, 0x7E, 0x6B, + 0x73, 0xCE, 0x0E, 0x7C, 0x7C, 0x54, 0x06, 0x1D, + 0x48, 0x8A, 0x06, 0x53, 0x95, 0x9B, 0x75, 0x8A, + 0xFF, 0x6F, 0x7D, 0x19, 0x00, 0x17, 0x8D, 0x7C, + 0x1A, 0xEA, 0xD0, 0x79, 0x45, 0x68, 0xF9, 0x2F, + 0x8A, 0xCE, 0x98, 0xED, 0xCC, 0xE8, 0x6D, 0xE1, + 0x08, 0xA0, 0x50, 0x2C, 0x43, 0x49, 0xC4, 0x99, + 0x98, 0x31, 0xDE, 0x00, 0xE8, 0x08, 0x39, 0x0B, + 0xBB, 0xDB, 0x65, 0xEA, 0x36, 0x0F, 0xBE, 0x98, + 0xB7, 0x4A, 0x9C, 0x59, 0x34, 0x0E, 0xBB, 0xDD, + 0x6F, 0x65, 0x21, 0x39, 0x23, 0x48, 0x57, 0x7F, + 0xD4, 0x07, 0x89, 0x03, 0x01, 0xB0, 0x79, 0x27, + 0x28, 0xCC, 0xFB, 0x88, 0xC5, 0xDD, 0x47, 0x2A, + 0xDA, 0x73, 0x75, 0x9B, 0xC9, 0x99, 0xA0, 0x21, + 0x34, 0xDF, 0xB1, 0x62, 0x2F, 0x61, 0xD8, 0xB7, + 0x63, 0x2A, 0xC7, 0x7E, 0x3A, 0x98, 0x0B, 0x2C, + 0xE5, 0x66, 0xF3, 0xD5, 0x30, 0xF0, 0xBC, 0x21, + 0xC7, 0x51, 0x9B, 0xFB, 0x00, 0xBB, 0xAA, 0x9C, + 0x85, 0xC3, 0x9B, 0x0C, 0xDC, 0x5F, 0x8D, 0x1B, + 0xA1, 0x2B, 0x78, 0x82, 0xFE, 0x0F, 0x7C, 0x75, + 0x6E, 0x75, 0x56, 0x74, 0x35, 0x25, 0xE5, 0xD0, + 0xEC, 0x8E, 0xC1, 0xBD, 0x7D, 0x7A, 0xE3, 0xDC, + 0xAD, 0xC6, 0x8D, 0xB6, 0x0D, 0x7A, 0xA1, 0x3C, + 0xDB, 0x29, 0xFA, 0x15, 0xC0, 0xA9, 0xAF, 0x89, + 0x0F, 0x18, 0x75, 0xE3, 0x97, 0x58, 0x62, 0x12, + 0x79, 0xA9, 0x87, 0x7D, 0x9C, 0x69, 0x44, 0x9C, + 0x41, 0x39, 0x2C, 0xAD, 0x98, 0x8B, 0x8D, 0xE4, + 0x58, 0xEE, 0xCD, 0x98, 0x38, 0x5F, 0x79, 0x73, + 0x0B, 0x5E, 0x26, 0xC1, 0x16, 0x24, 0x15, 0xD9, + 0x73, 0x26, 0x41, 0x9B, 0x5F, 0xF9, 0x2A, 0xA8, + 0xC1, 0x33, 0x74, 0x39, 0x1D, 0xBB, 0xE7, 0x36, + 0xD9, 0x8C, 0x07, 0xAD, 0x32, 0xD6, 0x38, 0xBB, + 0x44, 0xE6, 0x77, 0xC7, 0x11, 0x05, 0xCF, 0xB5, + 0x72, 0x49, 0x68, 0x80, 0xC1, 0x67, 0x71, 0x5F, + 0x9B, 0xFF, 0x6E, 0x71, 0x1A, 0xBE, 0x5A, 0x83, + 0x25, 0x38, 0xC7, 0xE6, 0xDA, 0x88, 0x22, 0xDC, + 0xA6, 0x03, 0x02, 0xD1, 0x59, 0xC6, 0xA8, 0x2F, + 0xA4, 0x8F, 0xF8, 0x77, 0x3E, 0x0C, 0x6F, 0xA1, + 0x73, 0xE1, 0x35, 0x55, 0xB2, 0xDF, 0xBF, 0x47, + 0xB7, 0xD0, 0x8D, 0xBA, 0x35, 0x74, 0x44, 0x6B, + 0xC0, 0xA7, 0x8D, 0x30, 0x08, 0xE4, 0x41, 0xD1, + 0x55, 0x21, 0x50, 0xD9, 0x06, 0x12, 0x54, 0xB2, + 0xF3, 0xFC, 0x5A, 0x1E, 0xF3, 0xE3, 0x84, 0x33, + 0x34, 0x0B, 0xB5, 0x9A, 0x97, 0xFD, 0x51, 0xF4, + 0x68, 0xFE, 0x8A, 0x92, 0xBF, 0x62, 0x9D, 0xCD, + 0x00, 0x29, 0x39, 0x37, 0x12, 0xF3, 0x53, 0x6D, + 0x6B, 0x24, 0xB8, 0x86, 0x68, 0xAD, 0x6A, 0x4B, + 0x3A, 0x4C, 0x93, 0xA6, 0xB1, 0x41, 0xFA, 0x8E, + 0x58, 0x63, 0xCD, 0x59, 0x80, 0xBF, 0xD7, 0xAB, + 0x83, 0xC3, 0xCC, 0x5D, 0x2F, 0xBE, 0x80, 0xC7, + 0xB1, 0x67, 0xDC, 0x92, 0x8C, 0xA9, 0x57, 0x36, + 0x58, 0x0A, 0x52, 0x96, 0x0E, 0x20, 0x90, 0xCD, + 0x87, 0x68, 0xF5, 0x93, 0xBB, 0x04, 0xD4, 0x48, + 0xB6, 0x45, 0x30, 0xC0, 0xE3, 0xC2, 0x56, 0x8C, + 0xE3, 0xA2, 0xC6, 0x42, 0x0F, 0x81, 0xF7, 0x4D, + 0xF6, 0x88, 0x5D, 0x55, 0x07, 0x8E, 0xF1, 0xB3, + 0x83, 0xB0, 0x20, 0x85, 0x4A, 0x63, 0x6A, 0x78, + 0xA9, 0xEC, 0x13, 0x84, 0xF7, 0x4E, 0xBE, 0xB6, + 0x5F, 0x5A, 0x25, 0xFF, 0xD4, 0x14, 0x7D, 0xA7, + 0xEE, 0x40, 0xF6, 0x25, 0x7C, 0x7E, 0x34, 0xCA, + 0xC9, 0x27, 0x0E, 0xA2, 0x78, 0xB6, 0xE6, 0x08, + 0xA1, 0x9B, 0x56, 0x8D, 0x29, 0xE5, 0x8D, 0xEC, + 0xAD, 0xDA, 0xD3, 0x3C, 0x59, 0xBA, 0xDB, 0x92, + 0x52, 0x99, 0x3B, 0x31, 0x6B, 0x0B, 0x13, 0x00, + 0x79, 0x3D, 0x69, 0x85, 0x3A, 0x6B, 0x90, 0x33, + 0x96 + }; + static const byte rnd_44[] = { + 0x08, 0x34, 0x57, 0xD4, 0x0E, 0x25, 0x04, 0x88, + 0xA6, 0x0E, 0x76, 0x34, 0xA0, 0x1D, 0x43, 0x0A, + 0x60, 0xE8, 0x57, 0x2B, 0xA8, 0x8A, 0xED, 0xC5, + 0x54, 0x49, 0x18, 0x81, 0x37, 0x13, 0xA0, 0xB1 + }; + static const byte sig_44[] = { + 0x63, 0xA8, 0x23, 0x20, 0xD4, 0xCE, 0x09, 0xC4, + 0x7A, 0xD1, 0x27, 0xC5, 0xBB, 0x7F, 0x6C, 0x2D, + 0xFF, 0x15, 0x29, 0xCD, 0xAF, 0x9F, 0x74, 0x56, + 0xFF, 0xC2, 0xC6, 0xED, 0x90, 0x51, 0x17, 0xDC, + 0xAD, 0x8C, 0x08, 0x7A, 0xC0, 0xD8, 0x9E, 0x0C, + 0xE9, 0x61, 0xC0, 0x94, 0xFA, 0x9C, 0x2E, 0xDE, + 0x27, 0x9C, 0x65, 0xE6, 0x99, 0xD1, 0xD1, 0x7E, + 0xA6, 0x95, 0x98, 0x8F, 0xA1, 0xC4, 0x98, 0x3F, + 0x7E, 0x1F, 0x18, 0x86, 0x2A, 0xFE, 0xB2, 0xEC, + 0x9D, 0x0F, 0x5B, 0x0C, 0x11, 0xB2, 0xAA, 0x0B, + 0xDE, 0x95, 0x7C, 0x40, 0xA1, 0x5B, 0xFF, 0x97, + 0xD7, 0xCB, 0xCF, 0x4E, 0x59, 0xDA, 0xE9, 0xD5, + 0xA3, 0xC9, 0xF8, 0x7D, 0xDD, 0xA5, 0xB9, 0x06, + 0x9D, 0x82, 0xCC, 0x18, 0x10, 0x20, 0x80, 0x92, + 0xBC, 0xBA, 0x1C, 0x43, 0x73, 0xF2, 0xA8, 0x3E, + 0x19, 0x15, 0x80, 0x9E, 0x81, 0xD8, 0xD2, 0x06, + 0xEA, 0x78, 0x10, 0x3F, 0x68, 0x66, 0x3D, 0xBE, + 0xB1, 0x79, 0xB0, 0x28, 0x83, 0xCD, 0xD3, 0x33, + 0xEE, 0xFE, 0x6D, 0x02, 0x39, 0x17, 0xC6, 0xF2, + 0xA4, 0x6E, 0x5A, 0x5C, 0x45, 0x14, 0xF5, 0x7D, + 0xCA, 0x7B, 0x62, 0x4A, 0xF4, 0xE7, 0x71, 0x7B, + 0xD7, 0x1B, 0x51, 0x26, 0xE6, 0xDE, 0x2D, 0xC9, + 0x65, 0x24, 0x30, 0x2C, 0x08, 0x04, 0xD7, 0xBE, + 0x3A, 0xDA, 0x64, 0xAF, 0x11, 0x6F, 0xC6, 0xE7, + 0x38, 0xEF, 0xA6, 0xE6, 0x5E, 0x87, 0x90, 0xB4, + 0x0E, 0xB1, 0xB4, 0x83, 0x64, 0xD2, 0x15, 0xEF, + 0xD6, 0x1F, 0x7A, 0x44, 0x75, 0x3A, 0x95, 0x50, + 0x6E, 0x52, 0xC9, 0x9C, 0xE9, 0xB4, 0x56, 0xDC, + 0x93, 0x85, 0x92, 0xF1, 0x35, 0xEC, 0x50, 0x1B, + 0x3B, 0xCF, 0x82, 0xDA, 0x69, 0xA1, 0xDD, 0x44, + 0xE8, 0xB3, 0xC1, 0xCB, 0x8D, 0xD5, 0x13, 0xD0, + 0xF3, 0x14, 0x2C, 0x80, 0x82, 0x2C, 0x31, 0xBF, + 0x75, 0x20, 0x14, 0x39, 0x9F, 0x81, 0x79, 0x76, + 0x0F, 0xB6, 0x7D, 0xB6, 0x58, 0x1C, 0xF3, 0xE6, + 0x93, 0x5A, 0x9B, 0xE1, 0x8B, 0x92, 0xC2, 0xDB, + 0xF1, 0x89, 0xAA, 0x46, 0x67, 0xFA, 0x80, 0x45, + 0x72, 0xAA, 0xB4, 0xE2, 0x5E, 0xE9, 0xD1, 0xA7, + 0xA0, 0xD7, 0x05, 0x5C, 0xC6, 0xC7, 0x6D, 0x1D, + 0x66, 0x3D, 0x35, 0x0C, 0xB7, 0x1A, 0xFA, 0xB1, + 0xDB, 0xD0, 0xCB, 0x3A, 0x8B, 0xB7, 0x1B, 0x03, + 0x60, 0xA0, 0xA4, 0xDA, 0xD0, 0xE2, 0x3A, 0x1E, + 0xB5, 0xE4, 0x59, 0x68, 0x6A, 0x02, 0x94, 0x66, + 0x05, 0x60, 0x08, 0x64, 0xB4, 0xEE, 0x0F, 0x3A, + 0xCE, 0xFD, 0x40, 0x7B, 0x6F, 0xF5, 0x8D, 0x1E, + 0xFF, 0x0C, 0x75, 0xAF, 0xC1, 0x41, 0xC6, 0x24, + 0x1D, 0xF3, 0x76, 0x02, 0x48, 0x6B, 0xBA, 0x58, + 0xBC, 0xBB, 0xFE, 0xD3, 0x51, 0xC2, 0x68, 0x21, + 0x4B, 0x20, 0x4E, 0xAF, 0x8A, 0x0C, 0x74, 0x7F, + 0x5F, 0xB7, 0xAA, 0x43, 0xFC, 0x5A, 0x77, 0xA1, + 0x81, 0xCD, 0xBA, 0xE1, 0x31, 0x87, 0x1F, 0xA8, + 0x1F, 0x76, 0x30, 0x6C, 0xE0, 0x84, 0xCD, 0x14, + 0x4A, 0xDB, 0x67, 0xFD, 0x65, 0x8C, 0x35, 0xC0, + 0x91, 0x6C, 0x2B, 0xCF, 0x5B, 0x89, 0x29, 0x58, + 0x42, 0x9B, 0x65, 0xDB, 0x34, 0x7D, 0xD8, 0x31, + 0xC9, 0xB8, 0x0D, 0x07, 0xD1, 0x94, 0x60, 0x63, + 0x65, 0xDC, 0xB3, 0x70, 0x48, 0x46, 0x37, 0x18, + 0x4D, 0x5D, 0xE0, 0xAC, 0x77, 0xD0, 0x9E, 0xE1, + 0xD9, 0xB2, 0x2D, 0x09, 0xD6, 0xF8, 0x94, 0x96, + 0x7B, 0x43, 0xD9, 0x76, 0x36, 0xE6, 0x24, 0xA4, + 0x4A, 0xFF, 0x12, 0xFE, 0x30, 0x95, 0xD7, 0xCB, + 0xA9, 0xA0, 0x3A, 0xCA, 0xFC, 0x52, 0x57, 0xB8, + 0x20, 0x80, 0xF2, 0xD8, 0xAE, 0x3E, 0x18, 0xFC, + 0x0D, 0xE0, 0x9D, 0x01, 0x7B, 0x03, 0xAD, 0x6B, + 0xEE, 0xA4, 0xEC, 0x38, 0x40, 0xAC, 0x85, 0x42, + 0xF8, 0xCF, 0x93, 0x10, 0x8F, 0x8C, 0xFE, 0xF8, + 0x22, 0x64, 0xFC, 0xDD, 0x2C, 0xDD, 0x86, 0x97, + 0x5B, 0x3F, 0x8F, 0xDF, 0x1F, 0x58, 0x22, 0x08, + 0x26, 0x8A, 0x76, 0xE6, 0xC9, 0xFE, 0xDF, 0x42, + 0x90, 0x8D, 0x52, 0x78, 0xA2, 0xBF, 0xBD, 0x3F, + 0xD5, 0xD5, 0xDB, 0xAF, 0xDD, 0x5E, 0x2C, 0x2B, + 0x9F, 0x2E, 0xDC, 0xC1, 0xC4, 0x52, 0x96, 0x38, + 0x49, 0xCB, 0x34, 0xEC, 0x51, 0x00, 0x8D, 0x1B, + 0xF6, 0xDA, 0x50, 0xA0, 0xD1, 0x9D, 0x82, 0x34, + 0x5B, 0x78, 0x8C, 0x05, 0x40, 0xE1, 0x7B, 0x25, + 0xFF, 0xDC, 0xE8, 0xD4, 0x45, 0x3B, 0xBE, 0x75, + 0x1E, 0xDA, 0x96, 0xA4, 0x4C, 0x75, 0xFD, 0xD9, + 0x00, 0x81, 0x85, 0x7D, 0xC0, 0xF8, 0x26, 0x2A, + 0x30, 0x7B, 0x34, 0xCB, 0xEC, 0xD1, 0x56, 0x58, + 0x69, 0xA3, 0x14, 0xD6, 0x4C, 0x09, 0xDC, 0x9D, + 0x4A, 0x80, 0x26, 0x52, 0x2F, 0xDF, 0xE4, 0xCB, + 0x5B, 0x8B, 0x11, 0x05, 0xDA, 0xE0, 0xDB, 0x66, + 0xC8, 0x5B, 0xB4, 0x32, 0x1D, 0xBE, 0x76, 0x84, + 0xEB, 0x6B, 0x6F, 0x85, 0x87, 0xD8, 0x32, 0x0C, + 0x6D, 0xB3, 0x8D, 0xED, 0xD6, 0x18, 0x96, 0xED, + 0x51, 0xAB, 0x0C, 0x7F, 0x42, 0x8F, 0x19, 0xD2, + 0x55, 0xC6, 0xB0, 0xFD, 0xF5, 0x89, 0x51, 0xE5, + 0xCD, 0xB1, 0x96, 0x9C, 0xD9, 0xA7, 0x93, 0x4E, + 0xFD, 0xB9, 0xC8, 0x2E, 0x1E, 0x8D, 0x2A, 0x59, + 0xC9, 0xF7, 0x9D, 0xF1, 0xAA, 0x93, 0xE5, 0x07, + 0x1E, 0x3F, 0xAC, 0x73, 0x19, 0xFF, 0x68, 0x87, + 0x8C, 0xF2, 0x49, 0xDC, 0xBD, 0xCD, 0x10, 0x46, + 0x16, 0xCC, 0xC1, 0xC1, 0xFB, 0xD7, 0x85, 0x56, + 0x9F, 0x55, 0x87, 0x10, 0x44, 0x1B, 0x31, 0xCA, + 0xE3, 0x16, 0x7A, 0x4C, 0xD7, 0xDD, 0xD1, 0x86, + 0x26, 0xC5, 0x43, 0x62, 0x96, 0x20, 0x32, 0xE6, + 0xB7, 0xA2, 0x76, 0x05, 0x61, 0x96, 0xFC, 0x22, + 0x96, 0x7E, 0x90, 0x7C, 0x32, 0x0A, 0x7A, 0xF5, + 0x8C, 0xE3, 0xF5, 0x01, 0xC4, 0xCD, 0x31, 0x8A, + 0x70, 0x75, 0x04, 0xF1, 0xC2, 0x59, 0xE5, 0x07, + 0xA0, 0xD4, 0x7D, 0x25, 0x8E, 0x2F, 0x38, 0xE2, + 0x6A, 0x53, 0x41, 0x34, 0x7A, 0x06, 0xB5, 0x8B, + 0xB0, 0xBF, 0x21, 0xDE, 0xE6, 0x5F, 0x55, 0x6A, + 0xD4, 0x88, 0xA7, 0x36, 0xD4, 0xC6, 0x5C, 0x82, + 0xC6, 0x73, 0xC0, 0x60, 0xD7, 0xA6, 0xA0, 0x77, + 0x5C, 0xF8, 0xC3, 0x9A, 0xA1, 0x31, 0xFD, 0x64, + 0xDB, 0xB1, 0x7B, 0x72, 0x70, 0x4B, 0x7D, 0x1D, + 0x24, 0xBC, 0x5F, 0x84, 0x08, 0x3B, 0xF8, 0xA6, + 0x47, 0xEB, 0xED, 0xCF, 0xDD, 0xA0, 0x91, 0x14, + 0x26, 0x7D, 0x77, 0xCF, 0xBF, 0x39, 0x9B, 0xD9, + 0x2F, 0x3B, 0x2A, 0xA7, 0x2B, 0xBC, 0xF7, 0xDE, + 0x9D, 0x69, 0xBF, 0x90, 0xA4, 0xDE, 0x2C, 0xF8, + 0x24, 0x92, 0x7D, 0xE2, 0xB8, 0xBD, 0xF4, 0x6B, + 0x10, 0x9E, 0xD6, 0x08, 0x51, 0xC5, 0x9C, 0x44, + 0x8E, 0xCB, 0x44, 0x3F, 0x00, 0x26, 0x3C, 0x9C, + 0x25, 0xF4, 0x62, 0x74, 0xD1, 0x7C, 0x29, 0x4C, + 0xEB, 0xF2, 0x53, 0x7D, 0x8F, 0xEA, 0xBD, 0x78, + 0xEE, 0xBC, 0xBA, 0x72, 0x64, 0xA5, 0xB9, 0x45, + 0x08, 0xE0, 0xBF, 0x62, 0xEF, 0xC2, 0x1E, 0x06, + 0xE1, 0xE2, 0xFB, 0x14, 0x44, 0xC5, 0xAB, 0x6F, + 0x84, 0x7F, 0x52, 0x2F, 0x8A, 0xBE, 0xED, 0x04, + 0x6D, 0x6D, 0xDC, 0xFF, 0xBC, 0xB8, 0xC8, 0x1F, + 0xD0, 0x5D, 0x4D, 0x7F, 0x2E, 0x1B, 0xC9, 0x9B, + 0xEA, 0xF8, 0xC1, 0xAF, 0xE3, 0xE0, 0x5B, 0x36, + 0x90, 0xFE, 0xE4, 0xAA, 0x37, 0x5A, 0x3D, 0xCB, + 0x77, 0x57, 0x7C, 0xCC, 0x6E, 0x3E, 0xBE, 0x8A, + 0x98, 0x7C, 0x6D, 0x7E, 0x89, 0x60, 0x73, 0xC0, + 0xCC, 0x0C, 0x48, 0x25, 0x46, 0xB5, 0x39, 0xB4, + 0xFD, 0xF0, 0x4E, 0xED, 0x8E, 0x87, 0xF8, 0x5B, + 0x00, 0xBE, 0x43, 0xA6, 0x0B, 0x21, 0x7E, 0x96, + 0x88, 0x3B, 0x91, 0xD7, 0x88, 0x1A, 0xA0, 0xDD, + 0x3E, 0xBF, 0x5B, 0x0D, 0x08, 0xD0, 0x85, 0x4E, + 0xD4, 0x27, 0x8F, 0xC9, 0x02, 0xE0, 0x60, 0xEA, + 0x16, 0xFB, 0xC2, 0x54, 0xA5, 0x08, 0xC8, 0x6F, + 0x7A, 0xE7, 0x54, 0x93, 0xB8, 0xDD, 0xA0, 0x86, + 0xE9, 0xC1, 0xB2, 0x17, 0xF5, 0xC9, 0x11, 0x97, + 0x83, 0x66, 0x88, 0xCD, 0x2D, 0x0B, 0xB8, 0xE5, + 0x52, 0xD1, 0x13, 0x7A, 0xA7, 0xEB, 0xD5, 0xD5, + 0x60, 0x53, 0x8E, 0x9B, 0xB6, 0xB4, 0x1D, 0x06, + 0x90, 0xB0, 0x6C, 0x66, 0xD1, 0x57, 0x5B, 0x86, + 0x1C, 0x8A, 0x7D, 0x3A, 0x88, 0x4C, 0xC9, 0x88, + 0x1A, 0xC3, 0x00, 0x1F, 0x30, 0x0D, 0xF3, 0x47, + 0x62, 0x79, 0x85, 0x89, 0xF9, 0xEE, 0x5C, 0x92, + 0x43, 0x61, 0x53, 0xD8, 0xC7, 0x32, 0x55, 0x9B, + 0x33, 0x3D, 0x69, 0x8F, 0x3E, 0xC5, 0x82, 0x0E, + 0x8A, 0xA5, 0xF2, 0xE5, 0xA7, 0x69, 0xC2, 0xB4, + 0x7A, 0xFA, 0x27, 0x5F, 0xE4, 0x74, 0xAF, 0x81, + 0x37, 0xC7, 0x01, 0x9A, 0xF2, 0xE6, 0x0C, 0xA7, + 0x5E, 0xDB, 0xE4, 0x8F, 0x81, 0xA6, 0x51, 0xCE, + 0x6B, 0xAB, 0xD3, 0x37, 0x4C, 0x07, 0x72, 0xA8, + 0xAC, 0x36, 0x77, 0xB1, 0x0F, 0x54, 0x77, 0x17, + 0xC9, 0x67, 0x50, 0xDA, 0x44, 0x8B, 0xD9, 0xC7, + 0x93, 0x8C, 0x66, 0xCD, 0x6F, 0xB7, 0x5D, 0x73, + 0x2D, 0xAC, 0x83, 0x1A, 0xDC, 0xE9, 0x17, 0x6D, + 0x94, 0x85, 0x6E, 0x1B, 0xF6, 0x08, 0x38, 0xD0, + 0x9E, 0x63, 0x23, 0xA2, 0x7B, 0x16, 0x09, 0xF9, + 0xC1, 0x21, 0xF4, 0x98, 0xD2, 0xBB, 0x68, 0x58, + 0x18, 0xA0, 0x0D, 0xE7, 0xBA, 0x6B, 0x28, 0x47, + 0xC5, 0x16, 0x14, 0x9F, 0x35, 0x6E, 0xCE, 0xF0, + 0x4F, 0x34, 0xEA, 0x48, 0x35, 0x46, 0xFE, 0xEB, + 0x12, 0xEA, 0x40, 0x77, 0x62, 0x04, 0x30, 0xC3, + 0x9D, 0xBF, 0x47, 0xC0, 0x5E, 0xED, 0x5E, 0xD5, + 0x87, 0xFF, 0xF5, 0x92, 0x21, 0x7C, 0xA9, 0x5A, + 0x2C, 0x3D, 0x1E, 0x6F, 0x6F, 0xF9, 0xFF, 0x20, + 0x9F, 0x8B, 0x30, 0xA9, 0x9D, 0x56, 0xA3, 0x97, + 0x7A, 0x33, 0x17, 0x49, 0x0B, 0x2B, 0x00, 0x1F, + 0x43, 0xCD, 0x8D, 0xDD, 0x1D, 0x8F, 0xC1, 0x6A, + 0x3F, 0xA9, 0xB4, 0x31, 0x54, 0x62, 0x84, 0x5B, + 0x99, 0x5D, 0x2A, 0xB7, 0x6E, 0xA5, 0x39, 0xC7, + 0xF0, 0x4C, 0x31, 0x6C, 0x71, 0xD6, 0x00, 0xE1, + 0xAC, 0x4F, 0xD5, 0xC8, 0xC6, 0x34, 0x3B, 0xC8, + 0x05, 0x5F, 0x17, 0x00, 0xB4, 0x0E, 0xA2, 0xF1, + 0xAB, 0xE9, 0x4B, 0xE0, 0x06, 0x01, 0x3A, 0xA2, + 0x61, 0xF0, 0x72, 0x0A, 0xB7, 0x99, 0xD0, 0xFC, + 0x6D, 0xB5, 0xE9, 0xA4, 0xC3, 0xC5, 0xA7, 0xF8, + 0x2D, 0x70, 0xD2, 0x8E, 0x41, 0x0D, 0xD1, 0x64, + 0xE3, 0xE4, 0x61, 0xA4, 0x6E, 0x81, 0xFB, 0xDC, + 0xB8, 0x10, 0x84, 0x8B, 0xCE, 0xE0, 0x6F, 0x88, + 0x33, 0x25, 0x64, 0x6E, 0x1E, 0x2A, 0x69, 0x3F, + 0xA5, 0xDA, 0x7C, 0x25, 0xEB, 0x21, 0xC4, 0xEA, + 0xB8, 0x7D, 0xC7, 0x87, 0xA2, 0x67, 0x7C, 0xEB, + 0x6A, 0x26, 0xE1, 0x06, 0xFE, 0x78, 0xE1, 0x18, + 0xFF, 0x54, 0x71, 0x3E, 0x00, 0x59, 0x7B, 0xFA, + 0x52, 0x8C, 0x2A, 0xED, 0x06, 0x9A, 0x12, 0x6D, + 0xE3, 0x74, 0x6F, 0x06, 0x65, 0xE1, 0x75, 0x80, + 0x63, 0x0F, 0x70, 0x2F, 0xAB, 0xC0, 0xF1, 0xCD, + 0x7F, 0x57, 0xAA, 0x71, 0xF6, 0x38, 0xD8, 0xAF, + 0x37, 0xD3, 0xD9, 0xE0, 0xA7, 0xE9, 0x05, 0x5D, + 0xA3, 0xDF, 0x86, 0x48, 0x3F, 0x25, 0xDE, 0xBA, + 0x18, 0xCE, 0xF6, 0x99, 0xEB, 0x87, 0x70, 0xC7, + 0x85, 0x84, 0x79, 0x8A, 0xD8, 0x02, 0x8B, 0xAD, + 0xC5, 0x9D, 0x2A, 0xF9, 0xAE, 0xAE, 0x37, 0xEC, + 0x93, 0x91, 0x16, 0x10, 0x5F, 0x9F, 0x64, 0xEF, + 0x82, 0x78, 0xC6, 0x4D, 0xED, 0x3F, 0xD4, 0x33, + 0xA7, 0xB8, 0x82, 0x09, 0x16, 0xBE, 0xDC, 0x6B, + 0x7A, 0x75, 0x69, 0x8A, 0xDE, 0xD3, 0xFD, 0xE8, + 0x86, 0x75, 0x42, 0x83, 0x03, 0x57, 0x30, 0x70, + 0xA5, 0xA3, 0x85, 0x1F, 0x9F, 0x21, 0xEA, 0xC7, + 0x80, 0xFA, 0x8A, 0xA4, 0x02, 0x3E, 0x39, 0x11, + 0x48, 0x7D, 0x85, 0x2A, 0x53, 0x77, 0x43, 0x5A, + 0x5F, 0xFF, 0x9C, 0x60, 0x4B, 0x5D, 0x95, 0xB0, + 0x96, 0x8A, 0xE0, 0xEC, 0xF4, 0x43, 0x1B, 0x10, + 0x3F, 0xA6, 0xBA, 0x71, 0xC4, 0xDC, 0x81, 0x73, + 0xA2, 0xDE, 0x1F, 0x79, 0xDD, 0xB6, 0x0D, 0x2D, + 0x0C, 0x8E, 0x56, 0x55, 0xD0, 0x94, 0x44, 0x29, + 0x16, 0x92, 0x99, 0x2D, 0x99, 0xFC, 0x48, 0xF2, + 0x16, 0x0E, 0xC0, 0xAC, 0xE4, 0xC4, 0x92, 0x07, + 0xBB, 0xB7, 0x6D, 0x7F, 0x2A, 0x85, 0xE1, 0x81, + 0x02, 0xB9, 0x5A, 0x51, 0x45, 0x88, 0xF5, 0x9F, + 0x16, 0x2D, 0x33, 0xCE, 0xD6, 0x18, 0x07, 0x03, + 0xED, 0xC3, 0x6C, 0x8B, 0x33, 0x94, 0x88, 0x81, + 0x0D, 0x2E, 0xAE, 0x96, 0x25, 0xCE, 0xE3, 0x83, + 0x27, 0x1C, 0x71, 0x72, 0xEE, 0xD6, 0xB5, 0x48, + 0x69, 0x60, 0xE8, 0x99, 0x18, 0x74, 0xB0, 0x13, + 0x53, 0x59, 0x3D, 0x70, 0x70, 0xBD, 0xEB, 0x7A, + 0x9F, 0x92, 0x29, 0xAB, 0x77, 0x0E, 0xEB, 0x46, + 0x37, 0x8D, 0x57, 0xD9, 0x56, 0xDF, 0x7A, 0x86, + 0x40, 0x04, 0x02, 0x98, 0xF7, 0x00, 0xF4, 0x41, + 0x5B, 0xDD, 0x3A, 0x96, 0x15, 0xA4, 0x65, 0xDB, + 0x01, 0x28, 0x22, 0x12, 0xCF, 0x1A, 0xEC, 0x4B, + 0x0B, 0x8C, 0xB3, 0xB1, 0x7E, 0x5E, 0xFA, 0x28, + 0x6C, 0x6C, 0x04, 0x5B, 0x43, 0x9C, 0x74, 0x9F, + 0xE1, 0xD4, 0x50, 0x75, 0xD8, 0xE7, 0xA0, 0x0F, + 0xBE, 0x84, 0x48, 0xFC, 0xAC, 0xAA, 0x15, 0x3D, + 0x69, 0x70, 0x9D, 0x9F, 0xF2, 0xB9, 0x7C, 0xDB, + 0x26, 0xC0, 0xC3, 0x79, 0x28, 0x7C, 0xE6, 0x48, + 0x61, 0xAD, 0xD7, 0x89, 0xD0, 0xC8, 0x93, 0x9A, + 0x14, 0x21, 0xB0, 0x85, 0xD6, 0x23, 0x4C, 0xE1, + 0xA7, 0x49, 0xDE, 0x3D, 0xCB, 0xE8, 0xE0, 0x61, + 0x5C, 0xB3, 0xBC, 0xDC, 0x6A, 0x81, 0xA5, 0xC4, + 0x9D, 0x92, 0x85, 0x74, 0x5F, 0x1C, 0xA8, 0xA0, + 0x64, 0x1E, 0x32, 0x68, 0x83, 0x41, 0x93, 0x34, + 0x82, 0x18, 0x3E, 0x24, 0x5C, 0x1F, 0x9C, 0xD2, + 0x80, 0x28, 0xC3, 0x8A, 0x23, 0x18, 0x1A, 0x44, + 0x5A, 0xA6, 0xEA, 0xCC, 0xE2, 0x06, 0x06, 0xE6, + 0xF7, 0xF1, 0xDF, 0x70, 0x68, 0x83, 0xCD, 0xA5, + 0x2F, 0x3F, 0x2B, 0x68, 0xDE, 0x26, 0xDD, 0x37, + 0x71, 0xE9, 0x50, 0x03, 0x2C, 0xC7, 0x20, 0x0C, + 0x20, 0x23, 0xC8, 0x24, 0x96, 0x50, 0x82, 0x82, + 0xCD, 0x3B, 0xC4, 0x7F, 0xEC, 0xE5, 0xD9, 0x7C, + 0xA1, 0xCE, 0x35, 0x74, 0x4D, 0x03, 0xD7, 0xA4, + 0x28, 0xB7, 0xAF, 0x12, 0xB0, 0xCB, 0x8E, 0x65, + 0x7C, 0x01, 0x30, 0xF8, 0xA3, 0xA2, 0x54, 0x97, + 0x6E, 0xC8, 0xF7, 0xDC, 0xCF, 0x3A, 0xBF, 0x31, + 0xF4, 0xB0, 0xB3, 0xF7, 0x12, 0x6F, 0xFC, 0x48, + 0x77, 0xF3, 0xD1, 0xA0, 0x66, 0xD2, 0x6A, 0x23, + 0x2F, 0xA9, 0x99, 0x21, 0x61, 0x22, 0x54, 0x11, + 0xED, 0x7D, 0xDB, 0x93, 0xC3, 0x5C, 0x6A, 0x37, + 0x7F, 0x30, 0xCF, 0x22, 0xAA, 0x39, 0x2D, 0x5C, + 0x4F, 0xEE, 0x4F, 0x73, 0xC9, 0xEF, 0x6E, 0xD3, + 0xA0, 0x27, 0x97, 0x14, 0x52, 0x3B, 0x19, 0x18, + 0x65, 0x1E, 0x9B, 0x0F, 0xFA, 0x55, 0x0F, 0x16, + 0x10, 0x53, 0xEE, 0x78, 0x01, 0x39, 0x7B, 0x4C, + 0x18, 0x49, 0x98, 0x7C, 0x17, 0x9E, 0x76, 0x3E, + 0xCC, 0x60, 0xA4, 0xE4, 0xC5, 0x36, 0xB7, 0xE2, + 0x66, 0x3E, 0x4C, 0x72, 0x67, 0x14, 0xB0, 0x2E, + 0xC3, 0x16, 0x9E, 0x84, 0x07, 0xBA, 0x59, 0x2B, + 0x0E, 0xB8, 0x46, 0xF3, 0x69, 0x2D, 0xD4, 0x46, + 0x51, 0xEE, 0x08, 0x47, 0x21, 0xCA, 0xC0, 0xFE, + 0x1C, 0xCC, 0x30, 0x27, 0x07, 0xEF, 0xE2, 0x46, + 0x64, 0xE0, 0x5B, 0xDC, 0x69, 0xC8, 0x39, 0x04, + 0xAC, 0xB8, 0xCF, 0x97, 0x12, 0x1C, 0x7E, 0x5C, + 0x6D, 0xB2, 0x7E, 0xA2, 0x8E, 0x77, 0xBC, 0xDA, + 0x55, 0xD2, 0xBC, 0xC1, 0xC5, 0xFC, 0xC5, 0x52, + 0xAB, 0x83, 0xBC, 0xE4, 0x23, 0x8C, 0xA1, 0x80, + 0x62, 0xC2, 0xD2, 0x3A, 0x8B, 0x80, 0x0C, 0x82, + 0x09, 0xC3, 0xA4, 0xCD, 0xDA, 0xF1, 0x16, 0x16, + 0x57, 0x8A, 0x84, 0x55, 0x66, 0xFC, 0x28, 0x9A, + 0x8E, 0x3C, 0x88, 0xF5, 0x54, 0xC4, 0x92, 0x60, + 0x71, 0xDA, 0x89, 0x32, 0x6B, 0xEB, 0x25, 0x9A, + 0x0E, 0x1F, 0x6D, 0x84, 0x4E, 0xBF, 0x7B, 0x28, + 0x1F, 0x9F, 0xC3, 0x74, 0x3A, 0x65, 0x49, 0x9E, + 0x73, 0x94, 0x63, 0x48, 0x18, 0xE1, 0x33, 0xFA, + 0xC6, 0x64, 0xFA, 0x0C, 0x88, 0xF1, 0x01, 0xCE, + 0xC3, 0xFE, 0xD8, 0x79, 0x29, 0x50, 0xBF, 0x6E, + 0x49, 0x74, 0x84, 0x9E, 0x1E, 0xBD, 0x27, 0x69, + 0x1B, 0xF5, 0x51, 0x9B, 0x70, 0x2E, 0x1A, 0xA4, + 0xB3, 0xDB, 0xAD, 0xAB, 0x5D, 0xFA, 0x34, 0xFB, + 0x0E, 0xD9, 0xD4, 0xA9, 0xDF, 0x4B, 0x6B, 0x63, + 0xCA, 0x71, 0x65, 0xE2, 0xA9, 0x08, 0x27, 0x40, + 0x8C, 0x48, 0x2D, 0x9D, 0xBC, 0x97, 0x24, 0x68, + 0x58, 0x4F, 0x42, 0x37, 0x60, 0x04, 0xE7, 0x8B, + 0xE0, 0x67, 0x00, 0x9E, 0x43, 0x30, 0x4B, 0xED, + 0xC1, 0x07, 0xA4, 0xE2, 0xA8, 0x9C, 0xAF, 0x18, + 0x5C, 0x9B, 0xB7, 0xE9, 0xFD, 0x2C, 0xB9, 0x2A, + 0xEF, 0x36, 0x3B, 0xD7, 0x96, 0xF3, 0x60, 0x4E, + 0xDC, 0x08, 0xA7, 0xC5, 0x45, 0xB8, 0x37, 0x02, + 0xD3, 0xCF, 0x80, 0x88, 0x52, 0x10, 0x3E, 0x01, + 0x3B, 0xFE, 0xA1, 0x61, 0xAF, 0x25, 0x0B, 0xCC, + 0x72, 0x77, 0x1D, 0x0C, 0x48, 0x4D, 0xD5, 0x55, + 0x41, 0x72, 0x3A, 0x21, 0x0D, 0x68, 0x3B, 0x99, + 0x8C, 0xDB, 0xAF, 0x3D, 0x9A, 0x5E, 0x71, 0x78, + 0x6F, 0x1C, 0xF4, 0x7B, 0x86, 0x22, 0x51, 0xB5, + 0x16, 0x33, 0x60, 0x87, 0x9A, 0xC0, 0x20, 0x2D, + 0x33, 0x49, 0x51, 0x54, 0x5C, 0x5F, 0x71, 0x76, + 0x7C, 0x8F, 0x96, 0xA9, 0xD6, 0xE4, 0xF2, 0x1F, + 0x28, 0x43, 0x4D, 0x7E, 0x96, 0xBB, 0xC5, 0xE3, + 0xEF, 0xF3, 0xFD, 0x02, 0x0C, 0x17, 0x23, 0x3E, + 0x7F, 0x99, 0xB0, 0xE3, 0xE8, 0xF5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x17, 0x23, 0x2E + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + static const byte sk_65[] = { + 0xF2, 0x6B, 0xFE, 0x12, 0x68, 0x86, 0xF4, 0x82, + 0x22, 0x94, 0x4D, 0x02, 0x18, 0xFA, 0xC1, 0x7C, + 0xD8, 0xA9, 0xCC, 0x6D, 0x67, 0xA0, 0x23, 0xFD, + 0xC0, 0x7A, 0xFF, 0xC2, 0xD0, 0x25, 0xF7, 0x70, + 0x63, 0x85, 0x0D, 0x88, 0x0E, 0x98, 0xFE, 0xE5, + 0x02, 0xE0, 0x17, 0x32, 0x70, 0x00, 0xCC, 0xAF, + 0x61, 0x45, 0x73, 0xB3, 0x5A, 0xDE, 0xFE, 0xBC, + 0xAC, 0xEE, 0xA4, 0xB2, 0xC4, 0xD0, 0x45, 0xE5, + 0xBB, 0xFD, 0x3E, 0x5A, 0x72, 0xE3, 0x71, 0xAD, + 0x83, 0xB9, 0x94, 0x98, 0x77, 0xD8, 0xE6, 0x56, + 0xD4, 0x6B, 0x47, 0x75, 0x0F, 0x73, 0x0F, 0x96, + 0xDB, 0x43, 0x0B, 0x18, 0x60, 0x88, 0x67, 0x5D, + 0x9A, 0x9B, 0xD7, 0x8E, 0x47, 0xB8, 0x9D, 0x04, + 0xA8, 0x51, 0x7E, 0xD2, 0x22, 0x06, 0x95, 0x33, + 0x9F, 0x99, 0xA9, 0x7F, 0x35, 0x3C, 0xE4, 0x20, + 0x47, 0x77, 0x20, 0x9F, 0x5F, 0x3C, 0x9E, 0x9A, + 0x36, 0x14, 0x54, 0x01, 0x57, 0x48, 0x60, 0x50, + 0x75, 0x28, 0x64, 0x61, 0x72, 0x60, 0x54, 0x20, + 0x75, 0x48, 0x60, 0x32, 0x73, 0x85, 0x34, 0x24, + 0x68, 0x63, 0x71, 0x73, 0x81, 0x26, 0x71, 0x68, + 0x32, 0x61, 0x24, 0x71, 0x14, 0x18, 0x26, 0x15, + 0x05, 0x77, 0x36, 0x27, 0x50, 0x35, 0x21, 0x82, + 0x50, 0x15, 0x31, 0x47, 0x48, 0x24, 0x43, 0x76, + 0x18, 0x85, 0x66, 0x18, 0x05, 0x64, 0x27, 0x01, + 0x06, 0x06, 0x01, 0x45, 0x42, 0x60, 0x80, 0x68, + 0x25, 0x08, 0x08, 0x36, 0x13, 0x05, 0x04, 0x32, + 0x34, 0x87, 0x00, 0x70, 0x71, 0x70, 0x02, 0x51, + 0x37, 0x15, 0x08, 0x28, 0x25, 0x72, 0x61, 0x67, + 0x08, 0x52, 0x63, 0x44, 0x07, 0x88, 0x60, 0x42, + 0x03, 0x17, 0x24, 0x64, 0x80, 0x08, 0x70, 0x23, + 0x56, 0x41, 0x46, 0x17, 0x46, 0x01, 0x57, 0x74, + 0x02, 0x76, 0x31, 0x64, 0x73, 0x83, 0x50, 0x62, + 0x72, 0x61, 0x62, 0x75, 0x45, 0x73, 0x46, 0x33, + 0x65, 0x14, 0x36, 0x46, 0x12, 0x26, 0x04, 0x34, + 0x02, 0x81, 0x20, 0x34, 0x41, 0x88, 0x26, 0x77, + 0x33, 0x40, 0x18, 0x58, 0x03, 0x41, 0x16, 0x58, + 0x88, 0x04, 0x88, 0x32, 0x71, 0x05, 0x85, 0x83, + 0x42, 0x55, 0x34, 0x20, 0x18, 0x46, 0x12, 0x54, + 0x28, 0x03, 0x67, 0x10, 0x84, 0x31, 0x76, 0x00, + 0x40, 0x85, 0x46, 0x71, 0x71, 0x56, 0x00, 0x50, + 0x15, 0x33, 0x43, 0x13, 0x37, 0x57, 0x13, 0x86, + 0x43, 0x77, 0x85, 0x57, 0x54, 0x81, 0x75, 0x60, + 0x37, 0x31, 0x28, 0x52, 0x20, 0x78, 0x65, 0x53, + 0x76, 0x10, 0x84, 0x87, 0x57, 0x13, 0x66, 0x03, + 0x56, 0x81, 0x36, 0x66, 0x68, 0x41, 0x55, 0x64, + 0x63, 0x70, 0x26, 0x21, 0x02, 0x30, 0x28, 0x35, + 0x02, 0x45, 0x88, 0x80, 0x02, 0x06, 0x44, 0x58, + 0x24, 0x13, 0x88, 0x83, 0x22, 0x34, 0x22, 0x50, + 0x47, 0x11, 0x01, 0x86, 0x45, 0x60, 0x67, 0x36, + 0x82, 0x22, 0x18, 0x74, 0x11, 0x60, 0x58, 0x60, + 0x87, 0x26, 0x31, 0x85, 0x12, 0x70, 0x84, 0x83, + 0x88, 0x68, 0x88, 0x51, 0x00, 0x55, 0x02, 0x57, + 0x77, 0x42, 0x13, 0x23, 0x14, 0x04, 0x76, 0x80, + 0x72, 0x25, 0x51, 0x56, 0x10, 0x63, 0x12, 0x21, + 0x03, 0x86, 0x27, 0x30, 0x28, 0x12, 0x01, 0x37, + 0x48, 0x32, 0x53, 0x86, 0x15, 0x46, 0x50, 0x05, + 0x34, 0x87, 0x61, 0x04, 0x88, 0x18, 0x35, 0x85, + 0x44, 0x46, 0x24, 0x67, 0x43, 0x83, 0x02, 0x26, + 0x56, 0x41, 0x41, 0x77, 0x86, 0x56, 0x41, 0x75, + 0x25, 0x61, 0x36, 0x05, 0x47, 0x65, 0x00, 0x14, + 0x32, 0x38, 0x16, 0x81, 0x06, 0x30, 0x61, 0x25, + 0x16, 0x30, 0x50, 0x44, 0x13, 0x08, 0x75, 0x00, + 0x50, 0x20, 0x68, 0x21, 0x55, 0x74, 0x61, 0x18, + 0x62, 0x05, 0x15, 0x51, 0x08, 0x24, 0x01, 0x13, + 0x81, 0x33, 0x64, 0x83, 0x23, 0x00, 0x55, 0x73, + 0x62, 0x40, 0x61, 0x75, 0x15, 0x78, 0x21, 0x14, + 0x13, 0x64, 0x21, 0x47, 0x07, 0x76, 0x80, 0x76, + 0x76, 0x17, 0x75, 0x50, 0x61, 0x14, 0x40, 0x82, + 0x87, 0x83, 0x50, 0x87, 0x30, 0x86, 0x35, 0x30, + 0x28, 0x20, 0x10, 0x01, 0x48, 0x18, 0x34, 0x65, + 0x23, 0x10, 0x25, 0x42, 0x40, 0x22, 0x54, 0x34, + 0x35, 0x33, 0x71, 0x70, 0x20, 0x61, 0x55, 0x74, + 0x33, 0x01, 0x02, 0x60, 0x58, 0x24, 0x80, 0x12, + 0x46, 0x41, 0x38, 0x10, 0x76, 0x67, 0x34, 0x63, + 0x48, 0x85, 0x06, 0x48, 0x04, 0x23, 0x22, 0x66, + 0x57, 0x71, 0x68, 0x18, 0x04, 0x32, 0x01, 0x31, + 0x01, 0x55, 0x22, 0x27, 0x55, 0x72, 0x10, 0x00, + 0x43, 0x88, 0x76, 0x62, 0x84, 0x77, 0x07, 0x77, + 0x14, 0x07, 0x20, 0x53, 0x74, 0x17, 0x51, 0x17, + 0x66, 0x84, 0x47, 0x83, 0x61, 0x03, 0x52, 0x10, + 0x05, 0x40, 0x46, 0x55, 0x61, 0x47, 0x26, 0x70, + 0x40, 0x22, 0x10, 0x34, 0x41, 0x01, 0x03, 0x48, + 0x33, 0x05, 0x72, 0x32, 0x75, 0x82, 0x45, 0x85, + 0x20, 0x70, 0x80, 0x82, 0x20, 0x23, 0x62, 0x81, + 0x15, 0x47, 0x80, 0x23, 0x67, 0x23, 0x73, 0x34, + 0x44, 0x33, 0x85, 0x10, 0x05, 0x50, 0x30, 0x03, + 0x48, 0x13, 0x01, 0x36, 0x45, 0x11, 0x06, 0x33, + 0x82, 0x22, 0x78, 0x75, 0x42, 0x02, 0x40, 0x45, + 0x04, 0x47, 0x43, 0x05, 0x30, 0x44, 0x42, 0x02, + 0x28, 0x26, 0x64, 0x24, 0x74, 0x75, 0x86, 0x11, + 0x85, 0x43, 0x25, 0x46, 0x10, 0x62, 0x82, 0x71, + 0x08, 0x27, 0x45, 0x13, 0x73, 0x18, 0x84, 0x73, + 0x51, 0x51, 0x67, 0x14, 0x70, 0x11, 0x07, 0x08, + 0x62, 0x16, 0x25, 0x27, 0x36, 0x68, 0x44, 0x01, + 0x18, 0x63, 0x74, 0x50, 0x31, 0x13, 0x43, 0x65, + 0x80, 0x11, 0x16, 0x52, 0x86, 0x42, 0x51, 0x81, + 0x51, 0x17, 0x05, 0x68, 0x05, 0x73, 0x60, 0x37, + 0x63, 0x85, 0x86, 0x11, 0x23, 0x23, 0x38, 0x13, + 0x87, 0x48, 0x82, 0x74, 0x71, 0x81, 0x87, 0x65, + 0x58, 0x26, 0x60, 0x34, 0x76, 0x16, 0x15, 0x24, + 0x06, 0x78, 0x16, 0x40, 0x03, 0x45, 0x72, 0x31, + 0x63, 0x73, 0x31, 0x85, 0x02, 0x66, 0x44, 0x36, + 0x24, 0x82, 0x56, 0x38, 0x86, 0x10, 0x40, 0x54, + 0x72, 0x70, 0x24, 0x22, 0x72, 0x78, 0x47, 0x07, + 0x86, 0x30, 0x48, 0x72, 0x84, 0x57, 0x06, 0x34, + 0x78, 0x37, 0x63, 0x25, 0x56, 0x64, 0x81, 0x30, + 0x62, 0x77, 0x22, 0x84, 0x20, 0x10, 0x74, 0x25, + 0x04, 0x21, 0x76, 0x47, 0x72, 0x35, 0x05, 0x06, + 0x22, 0x50, 0x34, 0x11, 0x26, 0x67, 0x03, 0x05, + 0x42, 0x04, 0x16, 0x01, 0x27, 0x17, 0x86, 0x67, + 0x70, 0x51, 0x53, 0x13, 0x12, 0x62, 0x03, 0x25, + 0x05, 0x38, 0x37, 0x44, 0x02, 0x66, 0x84, 0x74, + 0x14, 0x40, 0x35, 0x20, 0x40, 0x30, 0x44, 0x64, + 0x27, 0x50, 0x77, 0x47, 0x06, 0x15, 0x84, 0x48, + 0x13, 0x14, 0x32, 0x48, 0x11, 0x74, 0x80, 0x68, + 0x85, 0x81, 0x17, 0x67, 0x38, 0x22, 0x76, 0x16, + 0x18, 0x44, 0x55, 0x47, 0x85, 0x36, 0x44, 0x11, + 0x52, 0x01, 0x81, 0x50, 0x41, 0x00, 0x00, 0x25, + 0x83, 0x41, 0x62, 0x22, 0x12, 0x54, 0x88, 0x77, + 0x70, 0x48, 0x84, 0x25, 0x77, 0x75, 0x40, 0x16, + 0x46, 0x24, 0x88, 0x81, 0x65, 0x70, 0x02, 0x66, + 0x28, 0x64, 0x12, 0x40, 0x30, 0x60, 0x53, 0x06, + 0x44, 0x02, 0x48, 0x78, 0x75, 0x68, 0x21, 0x23, + 0x30, 0x05, 0x81, 0x17, 0x72, 0x66, 0x88, 0x71, + 0x50, 0x25, 0x03, 0x51, 0x42, 0x27, 0x20, 0x81, + 0x03, 0x52, 0x73, 0x53, 0x63, 0x57, 0x13, 0x60, + 0x41, 0x20, 0x47, 0x12, 0x55, 0x57, 0x58, 0x16, + 0x38, 0x63, 0x21, 0x34, 0x51, 0x76, 0x33, 0x26, + 0x70, 0x41, 0x18, 0x11, 0x07, 0x37, 0x16, 0x12, + 0x01, 0x14, 0x28, 0x56, 0x78, 0x10, 0x86, 0x24, + 0x24, 0x32, 0x01, 0x13, 0x57, 0x53, 0x46, 0x46, + 0x24, 0x05, 0x20, 0x16, 0x56, 0x83, 0x30, 0x30, + 0x61, 0x20, 0x75, 0x07, 0x05, 0x74, 0x14, 0x17, + 0x43, 0x72, 0x23, 0x04, 0x18, 0x61, 0x50, 0x13, + 0x67, 0x31, 0x75, 0x36, 0x71, 0x02, 0x38, 0x74, + 0x21, 0x80, 0x20, 0x48, 0x66, 0x23, 0x52, 0x54, + 0x77, 0x27, 0x45, 0x73, 0x23, 0x88, 0x60, 0x50, + 0x88, 0x82, 0x70, 0x23, 0x72, 0x08, 0x44, 0x66, + 0x44, 0x36, 0x12, 0x57, 0x66, 0x14, 0x25, 0x12, + 0x17, 0x34, 0x64, 0x82, 0x01, 0x54, 0x61, 0x57, + 0x50, 0x31, 0x65, 0x64, 0x75, 0x44, 0x76, 0x48, + 0x16, 0x44, 0x46, 0x55, 0x80, 0x64, 0x26, 0x53, + 0x27, 0x22, 0x10, 0x87, 0x84, 0x03, 0x15, 0x35, + 0x15, 0x20, 0x86, 0x14, 0x04, 0x03, 0x26, 0x43, + 0x31, 0x43, 0x31, 0x45, 0x46, 0x34, 0x36, 0x87, + 0x44, 0x41, 0x21, 0x77, 0x61, 0x20, 0x85, 0x06, + 0x28, 0x51, 0x15, 0x62, 0x77, 0x20, 0x38, 0x58, + 0x78, 0x27, 0x12, 0x22, 0x46, 0x71, 0x51, 0x38, + 0x11, 0x15, 0x40, 0x03, 0x78, 0x36, 0x15, 0x57, + 0x34, 0x28, 0x53, 0x21, 0x37, 0x35, 0x04, 0x76, + 0x00, 0x56, 0x72, 0x48, 0x46, 0x01, 0x56, 0x67, + 0x62, 0x36, 0x14, 0x51, 0x23, 0x54, 0x32, 0x35, + 0x82, 0x83, 0x21, 0x60, 0x38, 0x62, 0x21, 0x03, + 0x62, 0x76, 0x40, 0x34, 0x66, 0x88, 0x50, 0x73, + 0x00, 0x53, 0x87, 0x31, 0x37, 0x50, 0x11, 0x32, + 0x86, 0x52, 0x18, 0x64, 0x16, 0x63, 0x48, 0x71, + 0x70, 0x47, 0x24, 0x85, 0x31, 0x86, 0x60, 0x86, + 0x33, 0x52, 0x85, 0x82, 0x68, 0x17, 0x70, 0x88, + 0x84, 0x56, 0x52, 0x77, 0x04, 0x48, 0x22, 0x22, + 0x54, 0x57, 0x20, 0x31, 0x76, 0x47, 0x26, 0x25, + 0x04, 0x35, 0x38, 0x44, 0x55, 0x21, 0x14, 0x02, + 0x13, 0x64, 0x74, 0x87, 0x68, 0x68, 0x73, 0x05, + 0x22, 0x45, 0x54, 0x45, 0x83, 0x46, 0x64, 0x54, + 0x80, 0x07, 0x32, 0x87, 0x52, 0x43, 0x54, 0x54, + 0x14, 0x73, 0x24, 0x87, 0x36, 0x41, 0x74, 0x84, + 0x06, 0x35, 0x13, 0x40, 0x61, 0x54, 0x21, 0x31, + 0x48, 0x63, 0x05, 0x74, 0x24, 0x84, 0x74, 0x76, + 0x11, 0x10, 0x16, 0x63, 0x77, 0x12, 0x26, 0x61, + 0x31, 0x28, 0x70, 0x34, 0x25, 0x01, 0x30, 0x76, + 0x76, 0x06, 0x21, 0x58, 0x42, 0x87, 0x31, 0x72, + 0x76, 0x03, 0x76, 0x26, 0x78, 0x05, 0x88, 0x25, + 0x25, 0x86, 0x17, 0x02, 0x85, 0x88, 0x76, 0x20, + 0x36, 0x57, 0x30, 0x81, 0x83, 0x61, 0x05, 0x80, + 0x21, 0x45, 0x74, 0x01, 0x12, 0x74, 0x51, 0x28, + 0x77, 0x26, 0x30, 0x14, 0x54, 0x84, 0x13, 0x78, + 0x06, 0x00, 0x12, 0x64, 0x00, 0x37, 0x44, 0x68, + 0x40, 0x57, 0x05, 0x27, 0x07, 0x41, 0x56, 0x22, + 0x31, 0x40, 0x23, 0x26, 0x55, 0x42, 0x55, 0x16, + 0x02, 0x65, 0x32, 0x16, 0x33, 0x44, 0x46, 0x48, + 0x04, 0x52, 0x06, 0x53, 0x44, 0x40, 0x11, 0x28, + 0x46, 0x67, 0x56, 0x81, 0x72, 0x75, 0x51, 0x38, + 0x21, 0x86, 0x46, 0x03, 0x22, 0x87, 0x21, 0x70, + 0x68, 0x50, 0x75, 0x13, 0x11, 0x44, 0x35, 0x12, + 0x60, 0x02, 0x13, 0x47, 0x18, 0x38, 0x78, 0x86, + 0x38, 0x58, 0x45, 0x57, 0x23, 0x03, 0x88, 0x66, + 0x56, 0x82, 0x18, 0x31, 0x20, 0x08, 0x61, 0x47, + 0x78, 0x08, 0x68, 0x37, 0x21, 0x04, 0x65, 0x47, + 0x58, 0x70, 0x34, 0x58, 0x73, 0x24, 0x22, 0x30, + 0x66, 0x05, 0x01, 0x28, 0x87, 0x85, 0x77, 0x74, + 0x23, 0x86, 0x65, 0x84, 0x85, 0x57, 0x85, 0x63, + 0x06, 0x55, 0x61, 0x75, 0x46, 0x22, 0x87, 0x00, + 0x18, 0x53, 0x08, 0x03, 0x07, 0x50, 0x42, 0x70, + 0xFC, 0xB8, 0x7B, 0x22, 0x3D, 0x24, 0xAE, 0x5D, + 0xB1, 0x89, 0x04, 0x21, 0xC3, 0xFF, 0x1D, 0x59, + 0xB8, 0x4B, 0x19, 0xE2, 0x4D, 0x14, 0x36, 0x99, + 0x19, 0x1C, 0x7E, 0x9A, 0x46, 0x48, 0x42, 0x20, + 0x6B, 0xBA, 0x24, 0x7E, 0x8C, 0x6B, 0x27, 0xBA, + 0x26, 0xE6, 0x8A, 0xD5, 0xA7, 0x1D, 0x03, 0x61, + 0xCD, 0x5C, 0x74, 0xCE, 0x50, 0xC2, 0xCE, 0xF1, + 0x91, 0x31, 0xEF, 0x54, 0x66, 0x23, 0x7F, 0xFE, + 0xF7, 0xFE, 0x6B, 0x5F, 0xD1, 0x98, 0x23, 0x8E, + 0x1C, 0xA0, 0xB1, 0x01, 0x30, 0xC6, 0x29, 0xCC, + 0x91, 0x91, 0xF5, 0x78, 0x6F, 0x5C, 0xD6, 0x28, + 0xA4, 0x22, 0x56, 0xCB, 0x6F, 0xC7, 0xD7, 0x09, + 0x56, 0x88, 0xAF, 0x1B, 0xC8, 0x43, 0x51, 0xA4, + 0x7B, 0x4B, 0x38, 0x2E, 0xF6, 0x1F, 0xD6, 0x5C, + 0x9E, 0xC2, 0x26, 0xF4, 0x2B, 0x0A, 0x19, 0x7C, + 0x6A, 0xD8, 0xF0, 0xB0, 0x15, 0xD0, 0xB1, 0xC7, + 0xE0, 0x14, 0x28, 0x95, 0x6A, 0x9B, 0xB2, 0xDE, + 0x9A, 0x97, 0xE5, 0x75, 0x66, 0xF8, 0xF5, 0x66, + 0x86, 0xA1, 0xF4, 0x68, 0x0C, 0xEC, 0xEA, 0x87, + 0x3B, 0x69, 0x1C, 0xF8, 0xBD, 0x63, 0xAB, 0x73, + 0x73, 0xBA, 0xE8, 0x09, 0x5B, 0xA7, 0x76, 0x3E, + 0x50, 0xD6, 0x83, 0x9D, 0x00, 0x35, 0xBB, 0xFB, + 0x91, 0xBA, 0x60, 0x72, 0x17, 0x98, 0xFB, 0x2C, + 0x80, 0x2C, 0x60, 0x3A, 0x08, 0xA1, 0x24, 0x05, + 0xE0, 0xB5, 0x20, 0xEA, 0x41, 0x43, 0x8F, 0xEA, + 0xEF, 0xA5, 0x62, 0xDC, 0x78, 0x92, 0xF4, 0x58, + 0x9F, 0x8D, 0x2B, 0x96, 0x5E, 0xE5, 0x49, 0x73, + 0xA7, 0x2C, 0x8D, 0x33, 0x5C, 0x62, 0x61, 0x98, + 0x80, 0x64, 0x13, 0x31, 0x03, 0x10, 0xE3, 0x2E, + 0xFE, 0x6B, 0x39, 0xB5, 0xCF, 0xB1, 0xD1, 0x33, + 0xAD, 0xE0, 0x1B, 0xCE, 0x94, 0x21, 0x6C, 0xF4, + 0xCD, 0x8F, 0x86, 0x43, 0x03, 0x1D, 0xB8, 0xC2, + 0x47, 0xB5, 0x73, 0x21, 0xCA, 0x1E, 0xFB, 0xB8, + 0x53, 0x63, 0x7D, 0x0C, 0x57, 0x52, 0x14, 0xFC, + 0x77, 0xA5, 0xA6, 0x84, 0xD5, 0x0A, 0xBF, 0xE4, + 0xE9, 0x71, 0x99, 0x8E, 0x06, 0x6E, 0x50, 0x24, + 0xDA, 0x02, 0x76, 0x8A, 0xED, 0xE1, 0x3E, 0x83, + 0xF0, 0x51, 0x54, 0xA9, 0x99, 0x29, 0x48, 0x42, + 0x7A, 0xA9, 0x8C, 0x87, 0x42, 0x51, 0xAF, 0x56, + 0x94, 0x23, 0x53, 0x89, 0x44, 0xFA, 0xD8, 0x93, + 0xFC, 0x65, 0x6E, 0x9C, 0xED, 0x80, 0x6A, 0x85, + 0xD9, 0xC3, 0x36, 0x71, 0x02, 0x25, 0x29, 0x36, + 0x8E, 0x7E, 0xC7, 0x0C, 0x9E, 0xE9, 0x74, 0x30, + 0x1C, 0x08, 0xCB, 0xE6, 0xAC, 0x5E, 0x88, 0xE6, + 0x37, 0x79, 0x5C, 0xB2, 0xA2, 0x15, 0xFF, 0xAA, + 0x08, 0xED, 0xDE, 0x40, 0xAC, 0xFA, 0xEE, 0x2A, + 0x40, 0xD5, 0x05, 0xCF, 0x58, 0xA6, 0x69, 0x66, + 0x31, 0x5A, 0x68, 0x98, 0x24, 0x03, 0xD8, 0x1B, + 0xFA, 0x89, 0xE3, 0x7C, 0x9E, 0x42, 0x1D, 0xA5, + 0x88, 0xBA, 0x7E, 0x42, 0x2A, 0xC7, 0x44, 0x6A, + 0x1E, 0x61, 0xC8, 0x22, 0x29, 0x9D, 0xFC, 0x34, + 0xEC, 0xFA, 0xBE, 0x5C, 0xB6, 0x26, 0xB9, 0x6C, + 0x8E, 0xA6, 0xC9, 0x3B, 0xDB, 0xD2, 0xD5, 0xBD, + 0x70, 0xC5, 0xF8, 0x26, 0x7A, 0x84, 0xE0, 0x07, + 0xA7, 0x11, 0x5E, 0x5B, 0xE5, 0xF1, 0x20, 0x32, + 0xA3, 0x7C, 0xAB, 0x05, 0xD5, 0x41, 0xE3, 0xDE, + 0xA5, 0x1A, 0x83, 0x2E, 0xDE, 0x8D, 0x34, 0x9A, + 0xFD, 0xD5, 0xE6, 0xFC, 0xFC, 0x83, 0x46, 0xE3, + 0xD4, 0x7C, 0xF1, 0x7F, 0xEA, 0x87, 0x5E, 0x38, + 0x5D, 0xB9, 0x8A, 0xC2, 0xDB, 0xE8, 0xB4, 0xF8, + 0x05, 0x37, 0x31, 0x0D, 0xD9, 0x4C, 0xD0, 0xB6, + 0x25, 0xE9, 0x97, 0x85, 0xDB, 0x04, 0x9A, 0x01, + 0xF5, 0x4B, 0xA1, 0xF4, 0x2A, 0xDF, 0xEC, 0xAE, + 0x24, 0x11, 0xD3, 0x2B, 0x2F, 0x84, 0x6C, 0x88, + 0xA3, 0x0C, 0x76, 0xEA, 0x0A, 0x38, 0xB2, 0x71, + 0xB6, 0xAC, 0xA8, 0x23, 0x6E, 0x61, 0xEB, 0xB8, + 0x4A, 0x9D, 0xC4, 0x9E, 0x5C, 0x5B, 0xEE, 0x7E, + 0x7D, 0x8D, 0xA2, 0xC1, 0xA1, 0xA0, 0xA3, 0x14, + 0x50, 0xE0, 0x8F, 0xAB, 0xBB, 0x1B, 0x1F, 0x05, + 0xAA, 0xE3, 0x00, 0xD8, 0xCD, 0xE7, 0x35, 0xB4, + 0x7B, 0xBD, 0xB0, 0x5C, 0xCC, 0x0C, 0x05, 0x33, + 0x6B, 0xE4, 0x51, 0x73, 0x1B, 0x6B, 0x77, 0x7B, + 0xE5, 0xCB, 0xAF, 0x98, 0x53, 0x5F, 0x7E, 0x08, + 0xFF, 0xCD, 0x8A, 0x44, 0x9E, 0x1D, 0x43, 0x6A, + 0x4F, 0x05, 0x99, 0x01, 0xF5, 0x6F, 0x01, 0x30, + 0xBD, 0x15, 0xD7, 0x51, 0x16, 0x45, 0x40, 0x6B, + 0xF3, 0x13, 0xCA, 0x1F, 0x22, 0x02, 0xA4, 0xA8, + 0x6A, 0x1D, 0x04, 0x7F, 0xD5, 0x8A, 0x3E, 0x87, + 0x7F, 0x1D, 0x5A, 0x79, 0x75, 0xD1, 0x6D, 0x67, + 0xB3, 0x23, 0xC6, 0x28, 0x7B, 0x9C, 0xCE, 0xEE, + 0x98, 0x9E, 0xE8, 0x44, 0xA9, 0x3E, 0x7E, 0xFD, + 0x3B, 0xD9, 0xD8, 0x31, 0x6D, 0xA3, 0x77, 0xDF, + 0x0B, 0xB9, 0xE2, 0x61, 0xA2, 0x71, 0xD5, 0x0C, + 0xB7, 0x01, 0x67, 0xC3, 0x0D, 0x19, 0x2D, 0xAA, + 0xDE, 0x96, 0x0E, 0xEA, 0x33, 0x5E, 0xEC, 0x52, + 0xE5, 0x2D, 0x95, 0x39, 0xE1, 0xF9, 0x5D, 0x9E, + 0xB6, 0x5E, 0x54, 0x8F, 0x16, 0x60, 0x99, 0xED, + 0x88, 0x2C, 0x30, 0x72, 0x53, 0x6A, 0x6C, 0xAA, + 0x05, 0x21, 0xA5, 0xAA, 0x7C, 0x64, 0x72, 0xA0, + 0xC0, 0x4F, 0x80, 0xDA, 0x20, 0x5D, 0x52, 0x18, + 0x77, 0x07, 0xDF, 0x5C, 0x2F, 0x2E, 0xA2, 0x5F, + 0xEF, 0x00, 0xCA, 0x7B, 0xF0, 0xD3, 0xB7, 0xF8, + 0x1E, 0x31, 0x9E, 0x61, 0xCA, 0x2C, 0xC5, 0xA5, + 0x25, 0xA2, 0x7B, 0x56, 0xAA, 0xBA, 0xE4, 0xD5, + 0x35, 0xE5, 0xEC, 0x24, 0x2D, 0x81, 0x1A, 0x24, + 0xD7, 0x45, 0x76, 0xBF, 0x4B, 0x8A, 0x72, 0xFA, + 0x5F, 0xAE, 0xC1, 0xA2, 0x83, 0xB6, 0x1D, 0x60, + 0x28, 0x7E, 0x1E, 0x2E, 0xC8, 0xC6, 0xAB, 0x04, + 0x56, 0x5F, 0xD5, 0xCD, 0x64, 0x26, 0x34, 0x94, + 0xE8, 0x03, 0x41, 0x63, 0x35, 0x5B, 0x45, 0x84, + 0xCE, 0xFA, 0x0B, 0x66, 0x40, 0x85, 0x1A, 0xE1, + 0x23, 0xE9, 0x8F, 0xBD, 0xA9, 0x23, 0xFC, 0xA3, + 0x8E, 0x38, 0xB3, 0x84, 0xE2, 0xB9, 0x54, 0x41, + 0x4B, 0x36, 0x4F, 0xB8, 0xB0, 0x87, 0x56, 0x04, + 0x8B, 0x75, 0xC7, 0x85, 0x31, 0xD4, 0xA5, 0x12, + 0x99, 0xC4, 0x9D, 0xEA, 0x4B, 0x36, 0x8C, 0x19, + 0x82, 0xFE, 0xAD, 0x4A, 0xB1, 0xAA, 0x52, 0x35, + 0xA4, 0xA1, 0x7F, 0xB0, 0x64, 0x6F, 0x04, 0x04, + 0x7B, 0xF0, 0x80, 0x48, 0xA1, 0x1C, 0xF8, 0x95, + 0x8B, 0x68, 0x34, 0xB7, 0xFD, 0x00, 0x31, 0x30, + 0x6A, 0x39, 0xC8, 0xAE, 0x68, 0xC3, 0x53, 0x65, + 0x19, 0x7C, 0x1E, 0x57, 0x97, 0xFC, 0x47, 0x3E, + 0xB1, 0x94, 0x54, 0x48, 0x6F, 0xEB, 0xAA, 0xEC, + 0x5C, 0x2E, 0xE9, 0x2C, 0xCC, 0x3A, 0xF3, 0xC7, + 0x43, 0x08, 0x7D, 0x2D, 0x56, 0x4B, 0x7D, 0xE9, + 0xE5, 0x96, 0xF3, 0x12, 0x4B, 0xE9, 0x08, 0xF3, + 0x04, 0x5A, 0x75, 0x1A, 0x7D, 0x7E, 0x37, 0xE6, + 0xC8, 0xC1, 0xFE, 0xF3, 0x32, 0x63, 0x2D, 0x0B, + 0xBE, 0x05, 0x13, 0x6A, 0x44, 0x58, 0x7F, 0x54, + 0x5F, 0x5F, 0xF5, 0x2F, 0xB8, 0x0B, 0xF2, 0xBF, + 0x0B, 0xF4, 0x30, 0x2F, 0xCF, 0xEC, 0xFE, 0x08, + 0xEC, 0x51, 0xF2, 0x29, 0xD7, 0xAC, 0x28, 0xE1, + 0x75, 0x42, 0x61, 0xBC, 0xE7, 0xB1, 0x53, 0x4F, + 0x7D, 0x3B, 0xB0, 0x8D, 0x01, 0x15, 0x1E, 0xBE, + 0xEC, 0xD9, 0x54, 0xC2, 0x4E, 0x70, 0x3E, 0xEA, + 0x39, 0x14, 0x26, 0xB7, 0x01, 0x79, 0x5D, 0x06, + 0x93, 0x85, 0x99, 0xAA, 0x7D, 0xDC, 0xF9, 0x2E, + 0x44, 0x56, 0x9B, 0xFA, 0x9D, 0x91, 0x2A, 0x8E, + 0x89, 0x48, 0x51, 0xE3, 0xD0, 0x53, 0xB3, 0xAD, + 0x43, 0x29, 0xB7, 0x6A, 0x50, 0xC0, 0x78, 0x4D, + 0x42, 0xF3, 0x7C, 0x5F, 0x90, 0x06, 0xAC, 0x2A, + 0x9D, 0x5D, 0xE5, 0x18, 0x3F, 0xA3, 0xC6, 0x5E, + 0xCD, 0xB6, 0xCF, 0x31, 0x67, 0xA4, 0x7A, 0x8F, + 0x5C, 0x59, 0xBD, 0xD7, 0x9B, 0x7C, 0x24, 0x06, + 0x97, 0xE1, 0x59, 0x72, 0x85, 0x02, 0x74, 0xFE, + 0x41, 0xAD, 0x84, 0xD9, 0x0D, 0xCB, 0x34, 0x16, + 0x11, 0xE7, 0x66, 0xD2, 0x12, 0xDC, 0x76, 0x3C, + 0xF9, 0x4C, 0x8C, 0x41, 0x94, 0xCC, 0xA9, 0x1B, + 0x21, 0x03, 0x28, 0xE4, 0xA3, 0x37, 0x4E, 0x29, + 0xD2, 0x48, 0x11, 0x2B, 0xB6, 0x68, 0xA3, 0x92, + 0xC2, 0x0D, 0x87, 0x91, 0x03, 0x76, 0xB5, 0x00, + 0x1F, 0x3F, 0xFB, 0xBE, 0xC3, 0xE0, 0x08, 0xBF, + 0x2F, 0x46, 0xF7, 0x40, 0x73, 0x83, 0xA8, 0x0D, + 0xDA, 0x08, 0x2B, 0xDB, 0x8F, 0xE9, 0x25, 0xE4, + 0xF1, 0x2B, 0x37, 0x92, 0x27, 0x0E, 0x5A, 0x46, + 0xB8, 0xC5, 0x7B, 0x6E, 0x5A, 0x4B, 0x95, 0x58, + 0x4E, 0xF3, 0x80, 0xED, 0x49, 0x93, 0xEC, 0x52, + 0x9F, 0xF2, 0xAA, 0x39, 0xDD, 0x6D, 0xFE, 0x88, + 0xFD, 0xEB, 0x6E, 0xDA, 0x0E, 0x8D, 0xA7, 0x95, + 0x66, 0xB0, 0x7D, 0x37, 0xAE, 0xCC, 0x64, 0x37, + 0x25, 0x95, 0x18, 0xF9, 0x7E, 0x6C, 0x86, 0x12, + 0xB3, 0xC3, 0x57, 0x03, 0xBF, 0xF9, 0x92, 0x15, + 0x3E, 0x66, 0x0E, 0x2E, 0x20, 0x77, 0xA0, 0x5F, + 0x26, 0x5F, 0xB5, 0x12, 0x1D, 0xD7, 0x9F, 0x0A, + 0x33, 0xBC, 0x38, 0xEC, 0x83, 0x08, 0xE2, 0xA9, + 0x84, 0xCD, 0x3D, 0x8A, 0xC6, 0x09, 0x30, 0x6F, + 0x77, 0x93, 0xD7, 0xDE, 0x08, 0xD8, 0x45, 0xA4, + 0x21, 0x28, 0x26, 0x4E, 0x5C, 0x17, 0x77, 0x74, + 0xE3, 0x5D, 0x58, 0x7C, 0x96, 0xB2, 0x47, 0x05, + 0x42, 0x21, 0x78, 0x5D, 0xB3, 0x8D, 0xDC, 0x6F, + 0xDB, 0xF7, 0xBF, 0x6F, 0x66, 0x4B, 0xD6, 0x30, + 0x14, 0xC0, 0xBF, 0x94, 0x2A, 0x83, 0x91, 0x6C, + 0xBF, 0x2C, 0x42, 0x85, 0x41, 0xED, 0xA2, 0xBB, + 0xCB, 0xFC, 0xF9, 0x35, 0xDE, 0xFC, 0xB3, 0x63, + 0xE1, 0x64, 0xAA, 0x51, 0x2D, 0xD5, 0xFA, 0x79, + 0x53, 0x31, 0x40, 0x0B, 0x9B, 0xD0, 0x3C, 0xE3, + 0xD7, 0x2D, 0x91, 0x05, 0x62, 0xC3, 0x81, 0xFE, + 0x93, 0x1E, 0x8C, 0x37, 0x9E, 0x30, 0x23, 0x73, + 0x3A, 0xB9, 0x18, 0x6E, 0x5D, 0xEF, 0x31, 0xE9, + 0xF6, 0x25, 0x7F, 0xB8, 0x47, 0x74, 0xCE, 0x28, + 0x23, 0xD4, 0x4F, 0xC1, 0x42, 0xCB, 0xEB, 0x59, + 0x8A, 0x68, 0xFD, 0x39, 0x48, 0x37, 0x1A, 0x5D, + 0x0C, 0x09, 0x64, 0xC6, 0xE1, 0x21, 0x5D, 0x89, + 0xF6, 0x58, 0xE5, 0x50, 0x4A, 0xD0, 0x93, 0xBC, + 0x86, 0x02, 0xBA, 0xD2, 0x36, 0x24, 0x9D, 0x7E, + 0xAF, 0xB6, 0xA1, 0xA0, 0x7C, 0xA7, 0xC7, 0x4D, + 0xAC, 0x30, 0x7A, 0x70, 0x0F, 0x2F, 0x81, 0x40, + 0xC1, 0x08, 0x6B, 0x21, 0xF2, 0xE1, 0x51, 0x9C, + 0x1D, 0x46, 0x94, 0x93, 0x2A, 0x1C, 0x18, 0xCB, + 0xED, 0x0D, 0x0E, 0x29, 0xDE, 0xFC, 0x52, 0x52, + 0x97, 0x93, 0x70, 0x85, 0xE2, 0x63, 0x0D, 0xC6, + 0x2C, 0x0C, 0x05, 0x0C, 0x4F, 0xF2, 0x70, 0x87, + 0x2B, 0xE7, 0xBB, 0x52, 0x2D, 0xD6, 0x99, 0x1B, + 0x59, 0x6F, 0xC2, 0x92, 0x11, 0x72, 0x5D, 0x99, + 0x60, 0xB1, 0x6A, 0x52, 0xEA, 0x91, 0x78, 0x19, + 0x23, 0xC0, 0x3B, 0x71, 0x9D, 0x09, 0xD6, 0xE7, + 0x10, 0x6D, 0xC5, 0x70, 0x55, 0xC1, 0x9E, 0xF8, + 0x76, 0xE5, 0xEC, 0x23, 0x17, 0xE7, 0xE4, 0x23, + 0xC9, 0x71, 0x45, 0x40, 0x72, 0x01, 0x9E, 0x28, + 0xE6, 0x5C, 0x81, 0xED, 0x52, 0x7A, 0xF1, 0x89, + 0xBD, 0xFC, 0xF5, 0x21, 0xC9, 0x23, 0x40, 0x75, + 0x54, 0xAC, 0xBF, 0x69, 0x45, 0xD1, 0x85, 0x44, + 0x3D, 0xAC, 0x1A, 0x1A, 0x08, 0x8A, 0x68, 0xB5, + 0x17, 0xD5, 0xD9, 0x90, 0xE1, 0x10, 0x30, 0xDE, + 0x4F, 0x75, 0x09, 0xE8, 0x7A, 0x77, 0xB3, 0x7C, + 0xF2, 0x0A, 0x78, 0xE2, 0xCD, 0x48, 0x94, 0x17, + 0x3C, 0x32, 0xA3, 0x27, 0x35, 0x51, 0x16, 0xB7, + 0x18, 0x51, 0x44, 0x42, 0x65, 0x60, 0x6A, 0x0A, + 0x9A, 0x6D, 0x94, 0x61, 0xCC, 0x5D, 0xD8, 0x3B, + 0x52, 0x7E, 0x4D, 0xBD, 0x6A, 0xEE, 0x03, 0x3D, + 0x66, 0x1C, 0x3D, 0xE8, 0xC1, 0x82, 0x97, 0xE5, + 0xD1, 0x31, 0xDB, 0xC8, 0xF6, 0x96, 0xE9, 0x47, + 0xC9, 0x5C, 0x71, 0x77, 0x2B, 0x62, 0x44, 0x74, + 0x4D, 0x06, 0x1E, 0x14, 0x45, 0x3B, 0x9F, 0xB1, + 0x17, 0x34, 0x80, 0x2D, 0xBA, 0x6F, 0x81, 0x79, + 0xB8, 0x0D, 0xAC, 0xFE, 0xB6, 0xBA, 0xDF, 0xD1, + 0x4E, 0x05, 0x76, 0x73, 0x6F, 0x80, 0x10, 0xC5, + 0x32, 0x87, 0xA3, 0xD3, 0x93, 0x18, 0x79, 0xEF, + 0x27, 0x3B, 0xBF, 0xCD, 0xB5, 0xDE, 0x5B, 0x88, + 0xAF, 0x51, 0xFD, 0x8A, 0x8C, 0x8F, 0x0A, 0x58, + 0x94, 0xE2, 0x25, 0xDF, 0xE8, 0x73, 0xFC, 0xC0, + 0x3C, 0xB1, 0xC9, 0xB5, 0x78, 0x25, 0xF1, 0x11, + 0x75, 0xC8, 0x7D, 0x08, 0x78, 0xB9, 0xE6, 0x15, + 0x6B, 0x40, 0x1B, 0x2F, 0xBE, 0x30, 0x03, 0x6B, + 0xFC, 0x7D, 0xB1, 0x00, 0x02, 0x71, 0xB7, 0xFF, + 0x5D, 0x63, 0xA8, 0x09, 0x50, 0x75, 0xEF, 0xBD, + 0x34, 0xEE, 0x73, 0xDE, 0x60, 0x14, 0x95, 0x2D, + 0x15, 0xBC, 0x30, 0x23, 0x07, 0x02, 0xD8, 0x7C, + 0x9A, 0x96, 0xD5, 0xE9, 0xF1, 0xF0, 0xF9, 0x26, + 0x25, 0x96, 0xAA, 0x58, 0xB7, 0xE4, 0x1A, 0xD9, + 0xA0, 0x9E, 0xAD, 0xB9, 0x44, 0xB6, 0x3F, 0xD9, + 0x8B, 0x34, 0x7D, 0x11, 0xBD, 0x52, 0x97, 0xC3, + 0xBE, 0x28, 0x23, 0x85, 0x9F, 0x2F, 0x35, 0xA4, + 0xE5, 0x4E, 0x13, 0x68, 0x89, 0x09, 0xC3, 0x1A, + 0x83, 0xE7, 0xDE, 0xCE, 0x4B, 0xDF, 0x31, 0x03, + 0x9C, 0x72, 0xBA, 0x54, 0xA1, 0x20, 0x2D, 0x17, + 0x2A, 0x6B, 0x8A, 0x2C, 0xE9, 0x6D, 0xED, 0xCA, + 0x5B, 0x24, 0xF7, 0xB9, 0x42, 0xC1, 0x4E, 0x13, + 0x3D, 0xAA, 0x8A, 0xB8, 0xCB, 0xD2, 0x4C, 0x1F, + 0x0B, 0xBE, 0xB1, 0x27, 0x97, 0x67, 0x26, 0x72, + 0xE2, 0x2C, 0xE6, 0xC2, 0x12, 0x37, 0xB2, 0x79, + 0x7D, 0x8E, 0x54, 0xCC, 0x8F, 0xC7, 0x6C, 0x43, + 0xB4, 0x75, 0x29, 0x66, 0xA3, 0xA4, 0x09, 0x44, + 0xE7, 0x2D, 0x37, 0x3F, 0x0D, 0x3E, 0x84, 0xF9, + 0xA3, 0x30, 0x1E, 0xAE, 0x9E, 0xDA, 0x35, 0x44, + 0x4B, 0x1E, 0x49, 0xE6, 0x61, 0x18, 0x20, 0x6A, + 0x56, 0xEB, 0x46, 0xD4, 0x8D, 0x20, 0x95, 0x4A, + 0x77, 0x9A, 0x1E, 0x74, 0xE3, 0xE3, 0xB2, 0xBD, + 0x40, 0x3D, 0x46, 0xB3, 0x35, 0x10, 0x11, 0xCB, + 0x6F, 0x8A, 0x86, 0x72, 0xB2, 0xF3, 0xD9, 0x90, + 0x31, 0x47, 0x55, 0x77, 0x6C, 0xE3, 0x23, 0x7F, + 0x0A, 0x50, 0xE7, 0x71, 0x20, 0x53, 0x09, 0xC0, + 0x5D, 0x9A, 0x78, 0xD3, 0x68, 0x88, 0xA8, 0x3B, + 0xAD, 0x78, 0xE8, 0x6E, 0xDF, 0x36, 0xA8, 0x8D, + 0xC7, 0x1C, 0x5F, 0x11, 0x56, 0x83, 0x90, 0xD0, + 0xB5, 0x92, 0x02, 0xE2, 0x9E, 0xE1, 0x1E, 0xCB, + 0x9F, 0x56, 0x89, 0x63, 0xE8, 0x17, 0x70, 0x83, + 0x9F, 0xF2, 0x39, 0xAD, 0x03, 0x15, 0x6C, 0xC0, + 0x71, 0xE8, 0xB7, 0x40, 0x15, 0x95, 0xEC, 0xEE, + 0x62, 0x34, 0xAC, 0x34, 0xB7, 0x11, 0x70, 0x3D, + 0x68, 0xC6, 0x7A, 0x28, 0x83, 0xBE, 0x9C, 0x18, + 0xAB, 0x7F, 0x1A, 0x1B, 0x2E, 0x5C, 0x90, 0xA2, + 0x32, 0x3C, 0xDF, 0x1E, 0xD4, 0x98, 0x50, 0xB8, + 0x39, 0x38, 0x19, 0x2F, 0x62, 0x8C, 0x9E, 0xF6, + 0x5B, 0x77, 0x93, 0x95, 0xEE, 0x37, 0x34, 0xC7, + 0xA9, 0x01, 0xF7, 0x47, 0x38, 0x86, 0xD7, 0x12, + 0xD2, 0x15, 0x41, 0x68, 0x16, 0xC3, 0x01, 0x6C, + 0xC2, 0x83, 0x83, 0xD4, 0x78, 0x7B, 0x46, 0xF6, + 0x89, 0xDC, 0xE1, 0x11, 0xDA, 0x4D, 0xB8, 0xAC, + 0x10, 0xE8, 0x4F, 0x66, 0xA5, 0xC2, 0xBD, 0xA1, + 0xB3, 0xFC, 0x97, 0x7F, 0x6A, 0x0F, 0x73, 0x2E, + 0xDA, 0x4F, 0x69, 0xB9, 0x75, 0x51, 0xA4, 0xB8, + 0xB2, 0x61, 0xD6, 0x88, 0x71, 0x94, 0xD3, 0xAF, + 0xE7, 0xF4, 0xB8, 0x7F, 0xB3, 0xD4, 0x1A, 0xC6, + 0xDC, 0xDB, 0x8F, 0xD3, 0x9B, 0xE5, 0x0F, 0x2F, + 0x38, 0x2B, 0xAA, 0x4D, 0x19, 0xC7, 0x45, 0x0A, + 0xB3, 0xA1, 0xAC, 0x4C, 0x63, 0xCF, 0x93, 0x0A, + 0xAA, 0x51, 0x7A, 0x15, 0xD5, 0xC0, 0xD5, 0x49, + 0xFE, 0x03, 0x22, 0x00, 0x71, 0xD3, 0x69, 0x22, + 0x3E, 0x51, 0x29, 0x6E, 0xCB, 0xF8, 0x0D, 0xCD, + 0x79, 0xFB, 0xDF, 0xB8, 0xDF, 0x62, 0x90, 0x4D, + 0x5A, 0x36, 0x20, 0x0F, 0x29, 0xCC, 0x47, 0xE8, + 0x0C, 0x86, 0x15, 0xEF, 0x1B, 0x78, 0xDB, 0xB2, + 0x6A, 0x1A, 0xA7, 0xA6, 0x6E, 0x4D, 0x9A, 0x51, + 0xC9, 0x72, 0xAC, 0x9C, 0x94, 0xEA, 0xB9, 0x95, + 0x14, 0xB5, 0xAD, 0xAE, 0x62, 0x51, 0xE8, 0xAA, + 0x30, 0xA5, 0xE5, 0x87, 0x42, 0x4E, 0x3B, 0x7B, + 0xCC, 0x42, 0xEB, 0xE7, 0x33, 0x3D, 0x92, 0x10, + 0x97, 0x26, 0x53, 0xF8, 0x11, 0x8B, 0x83, 0xAB, + 0xE1, 0xBF, 0x7E, 0x9E, 0xE9, 0xCD, 0xAC, 0x28, + 0x99, 0x7D, 0x14, 0x4C, 0x34, 0xDE, 0xA6, 0x5B, + 0x59, 0x51, 0x2C, 0x73, 0x29, 0x27, 0xDB, 0xA8, + 0x20, 0x7D, 0x56, 0x91, 0x98, 0x47, 0x21, 0xB7, + 0x27, 0x9A, 0xFC, 0xDD, 0xE0, 0x6A, 0x6B, 0xD2, + 0x68, 0x0E, 0xBB, 0x9B, 0x2E, 0x3C, 0xFE, 0xE9, + 0xA6, 0x6D, 0x73, 0xD0, 0xC0, 0xDE, 0xD6, 0x53, + 0x70, 0x8B, 0x09, 0x0B, 0x82, 0x30, 0x65, 0xF9, + 0x70, 0x78, 0x49, 0xE3, 0xB3, 0x7D, 0x41, 0x25, + 0xCA, 0x69, 0x3E, 0x74, 0x2E, 0x02, 0x3F, 0x05, + 0x8A, 0xDC, 0x95, 0x07, 0x9B, 0xB0, 0x0C, 0x56, + 0xBE, 0x0D, 0x2F, 0x07, 0x81, 0x82, 0xEF, 0xAB, + 0x30, 0x72, 0xB0, 0xFD, 0x09, 0x76, 0x7B, 0x8A, + 0x13, 0xC2, 0x80, 0x5A, 0x75, 0x91, 0xB5, 0xB2, + 0xE1, 0x24, 0x75, 0xB5, 0xC8, 0x24, 0xDB, 0xEB, + 0x15, 0x79, 0x30, 0xAB, 0x38, 0x9F, 0x91, 0x5F, + 0xCC, 0xEC, 0x8F, 0x48, 0x64, 0x7E, 0xE4, 0xB6, + 0x6A, 0xB6, 0xB5, 0x36, 0xC2, 0x2D, 0xE3, 0xE5, + 0xEE, 0x4A, 0xBB, 0x42, 0xF8, 0xE0, 0x00, 0x9A, + 0xF0, 0x45, 0x54, 0xF1, 0x28, 0xAC, 0xA3, 0xCC, + 0xE4, 0x03, 0xBB, 0x01, 0xFD, 0xB7, 0xB5, 0xE2, + 0xA7, 0x2B, 0x82, 0x91, 0x1C, 0x1F, 0xD0, 0x65, + 0x23, 0xFF, 0x90, 0x19, 0x21, 0x41, 0xC6, 0x89, + 0xEC, 0xCB, 0x0B, 0xE6, 0x1B, 0x4C, 0x6D, 0x77, + 0x06, 0x29, 0x59, 0x02, 0x18, 0xA4, 0x01, 0x1A, + 0x68, 0xB8, 0x6F, 0xF5, 0x0D, 0x23, 0x03, 0x9C, + 0x9B, 0xCD, 0x43, 0x61, 0xF6, 0x98, 0x0A, 0x60, + 0xEF, 0x88, 0xD1, 0x44, 0x0D, 0x30, 0x4C, 0x5B, + 0x4B, 0x52, 0xD6, 0xED, 0xC2, 0x91, 0x12, 0xDC, + 0x3A, 0x8A, 0xF2, 0x85, 0x89, 0xE8, 0xF6, 0x29, + 0x48, 0xED, 0xB6, 0xBE, 0x76, 0x64, 0x6D, 0x59, + 0x66, 0x06, 0xB9, 0xE7, 0x05, 0xFE, 0xE3, 0xF1, + 0x44, 0xA0, 0x7B, 0xC9, 0xED, 0x1D, 0x40, 0x0C + }; + static const byte msg_65[] = { + 0x88, 0x5A, 0x0B, 0xDD, 0x8D, 0xE7, 0x4B, 0xC7, + 0x11, 0x69, 0x0A, 0xA6, 0x14, 0xDD, 0xA5, 0x32, + 0xF4, 0xD8, 0xC7, 0xEA, 0x2C, 0x27, 0x85, 0x5A, + 0x57, 0x8E, 0x63, 0x61, 0xCA, 0xAE, 0x2C, 0x0B, + 0xF7, 0xE7, 0x73, 0xB4, 0x90, 0x0A, 0x32, 0x93, + 0x12, 0x1A, 0x6E, 0x0D, 0xD6, 0x10, 0x10, 0x7A, + 0x7A, 0x65, 0xBD, 0x6E, 0x11, 0xF6, 0x19, 0xFC, + 0x0E, 0x9C, 0xE7, 0xBF, 0x7B, 0x5D, 0xE1, 0x80, + 0x76, 0xE1, 0xB7, 0x25, 0x57, 0x20, 0x97, 0xB2, + 0x47, 0xD8, 0xE0, 0x46, 0x24, 0x94, 0xF6, 0x3F, + 0x4E, 0xDF, 0xBE, 0xAC, 0x2F, 0xA2, 0xEC, 0xAE, + 0x0C, 0xCA, 0xD4, 0x28, 0xBD, 0x79, 0x6C, 0xF2, + 0x60, 0x92, 0xA1, 0xCD, 0x50, 0x5F, 0x59, 0x39, + 0x11, 0xED, 0x10, 0xFD, 0xA4, 0x26, 0xC7, 0xE3, + 0xC5, 0xA4, 0x39, 0xE8, 0x50, 0x42, 0x13, 0x18, + 0xAE, 0x07, 0x85, 0xB0, 0x5A, 0xA9, 0x9F, 0x58, + 0xD6, 0x85, 0x6D, 0xEB, 0x78, 0xBB, 0xE4, 0x88, + 0xC7, 0x0E, 0xEE, 0x42, 0xBB, 0x9A, 0xB5, 0x92, + 0x7B, 0x2E, 0xD2, 0x5C, 0xD1, 0x43, 0x77, 0xCD, + 0x7E, 0x1A, 0x88, 0x34, 0xE8, 0x21, 0x48, 0x00, + 0x2F, 0xCB, 0x98, 0x5A, 0xB9, 0x43, 0x12, 0x97, + 0x01, 0x0B, 0x2B, 0xC7, 0x0F, 0x91, 0x32, 0x37, + 0x3C, 0x6D, 0xD2, 0xA2, 0xA9, 0xCF, 0x24, 0x6F, + 0xE0, 0x26, 0x2E, 0x8B, 0x53, 0xE6, 0x93, 0xF3, + 0xD6, 0xFE, 0xD3, 0xED, 0xD1, 0xF2, 0x00, 0x4E, + 0xD1, 0x7C, 0x2C, 0xF5, 0xB2, 0x57, 0xF4, 0xAD, + 0xA5, 0xDC, 0x1A, 0x7C, 0x15, 0x1F, 0xFE, 0x03, + 0xB9, 0x6A, 0x4D, 0xB9, 0x91, 0xE4, 0x13, 0x2D, + 0x01, 0xDE, 0x1F, 0x03, 0x3E, 0xD8, 0x13, 0x57, + 0xEA, 0xE7, 0xC1, 0xA8, 0xD2, 0xDD, 0xD9, 0x2D, + 0xDF, 0xC0, 0x6F, 0x67, 0x13, 0x94, 0xD2, 0xF6, + 0x02, 0x12, 0xC6, 0xE4, 0x49, 0xEA, 0x35, 0x93, + 0x24, 0xFE, 0xD3, 0x8C, 0x84, 0xD3, 0x6D, 0x15, + 0x43, 0x2E, 0x11, 0xE7, 0x15, 0x00, 0x15, 0x80, + 0x4F, 0x97, 0xA3, 0xC6, 0x77, 0x38, 0x2C, 0xD4, + 0x6A, 0xA4, 0xD7, 0xAC, 0xEE, 0x56, 0x86, 0xFB, + 0xCE, 0xD7, 0xA9, 0xE8, 0x5D, 0x29, 0xC4, 0x83, + 0x86, 0xE6, 0x9F, 0x40, 0x69, 0x3D, 0x9A, 0xDA, + 0xBE, 0xB4, 0x3B, 0xD0, 0xE5, 0x03, 0x6A, 0xCD, + 0xE6, 0x31, 0xB5, 0x49, 0x57, 0xF4, 0xFC, 0xE2, + 0x6F, 0x7A, 0x24, 0xB0, 0xDA, 0xD4, 0x34, 0x8A, + 0x67, 0x89, 0xCA, 0xE1, 0x06, 0x13, 0x06, 0x20, + 0xED, 0x2F, 0xA0, 0xEA, 0x38, 0xF5, 0x75, 0xF2, + 0x87, 0x83, 0xBC, 0x92, 0xB3, 0x2B, 0x0C, 0x51, + 0xC8, 0xA6, 0x54, 0x6F, 0x5D, 0x88, 0x09, 0x5F, + 0x9F, 0x73, 0xC6, 0x5B, 0xF6, 0xF2, 0x51, 0xA2, + 0xC4, 0x69, 0x74, 0x64, 0x45, 0xC5, 0x88, 0xC3, + 0xEA, 0x81, 0x39, 0xE4, 0x33, 0xD4, 0xFE, 0x2D, + 0xE4, 0xC0, 0xD3, 0x58, 0xB6, 0xCA, 0x8A, 0x62, + 0x94, 0xE6, 0xAF, 0xC1, 0xB9, 0x60, 0x74, 0xC0, + 0x68, 0xEF, 0x67, 0xB1, 0x58, 0xF1, 0x12, 0x9C, + 0xFE, 0x0A, 0x3A, 0xE7, 0xEB, 0x9D, 0x45, 0x4F, + 0x35, 0x7F, 0xBB, 0x6A, 0xB3, 0xB9, 0x92, 0x2B, + 0x1B, 0xCD, 0x55, 0x58, 0x61, 0x87, 0xCD, 0x24, + 0x69, 0x24, 0x82, 0x78, 0x23, 0x34, 0xAC, 0x9F, + 0x2B, 0x86, 0x12, 0x48, 0xF6, 0xA5, 0x30, 0xE9, + 0x3E, 0x11, 0x48, 0x87, 0x84, 0xDD, 0xE5, 0xEA, + 0x67, 0x8A, 0xE5, 0x05, 0x90, 0x3E, 0x23, 0x10, + 0x53, 0x30, 0x8C, 0x1B, 0x87, 0x84, 0x60, 0x7E, + 0x06, 0x3F, 0x48, 0x98, 0xA4, 0xFA, 0xB6, 0x01, + 0xD3, 0xE6, 0x96, 0x85, 0x97, 0x21, 0x55, 0xF6, + 0x3F, 0x09, 0xFD, 0x84, 0xB2, 0xB3, 0xDF, 0x74, + 0x1F, 0xB6, 0x42, 0xAC, 0xA6, 0x03, 0xD0, 0xD5, + 0x96, 0xE0, 0xA8, 0xDA, 0xD4, 0x24, 0xF4, 0x64, + 0x0F, 0x98, 0xB9, 0x6F, 0xB2, 0x42, 0xC6, 0x95, + 0xDC, 0x33, 0x1F, 0x57, 0x59, 0xF7, 0x5E, 0xAF, + 0x19, 0x1C, 0xBD, 0x98, 0x5E, 0xC5, 0x99, 0x8D, + 0x56, 0x48, 0xC8, 0x5E, 0xB6, 0x31, 0x29, 0x5F, + 0x61, 0x56, 0x7C, 0x11, 0x63, 0xF9, 0x90, 0xDC, + 0x4F, 0xA1, 0x71, 0x40, 0x91, 0x26, 0x1E, 0x5F, + 0x3E, 0x5F, 0x0B, 0xFE, 0x84, 0x55, 0xBB, 0x8B, + 0xAA, 0x1D, 0x69, 0x42, 0x1F, 0x15, 0x37, 0x4E, + 0x73, 0xB0, 0x7E, 0x78, 0x57, 0x9D, 0x0E, 0x25, + 0x1A, 0x41, 0xEE, 0x1A, 0x50, 0x43, 0xAA, 0xBF, + 0x8B, 0xE7, 0x73, 0xEE, 0x7F, 0x9D, 0x0F, 0xDF, + 0xCF, 0xD3, 0xAE, 0x71, 0x1F, 0xAB, 0x1D, 0x3D, + 0xBC, 0xC2, 0x84, 0x3B, 0xE5, 0xA9, 0x46, 0xB2, + 0x4D, 0x8B, 0x9B, 0x94, 0x35, 0x8B, 0x5F, 0x59, + 0x8E, 0x88, 0xED, 0x3D, 0x53, 0xF3, 0x10, 0xF8, + 0xEC, 0x63, 0x22, 0x9D, 0x4F, 0x5B, 0xB1, 0xB6, + 0xD5, 0x24, 0xA5, 0xAF, 0x9C, 0x39, 0x47, 0x79, + 0x25, 0xC7, 0xE2, 0x90, 0x95, 0xFC, 0x43, 0xF1, + 0x71, 0xFE, 0xCD, 0xD0, 0x61, 0xF3, 0x62, 0x62, + 0x71, 0x21, 0x75, 0x2C, 0x23, 0x6B, 0x79, 0x2F, + 0x1B, 0x31, 0x90, 0x79, 0x7C, 0xD0, 0x57, 0x5C, + 0x58, 0x4F, 0x30, 0xB5, 0x56, 0x81, 0x19, 0x61, + 0x90, 0x45, 0x09, 0xC9, 0x8B, 0xCD, 0xE8, 0x65, + 0x9D, 0x22, 0x80, 0xF4, 0x95, 0xA0, 0xC9, 0x55, + 0x7D, 0x38, 0x11, 0xAF, 0x5E, 0xD4, 0x37, 0x7B, + 0xC7, 0x59, 0x9E, 0x49, 0x59, 0xFF, 0x85, 0xF2, + 0x15, 0x0A, 0xCD, 0xEC, 0xC1, 0xF7, 0x67, 0x2D, + 0xE1, 0xEE, 0x4D, 0xB4, 0x4C, 0x1F, 0xB5, 0xF7, + 0x99, 0x8A, 0xB5, 0xDB, 0x74, 0x2F, 0x6C, 0x5D, + 0x32, 0xCB, 0xC0, 0xF2, 0xFB, 0xC9, 0x54, 0xEA, + 0xD6, 0xCC, 0x13, 0x4B, 0x97, 0x62, 0xDF, 0x33, + 0x13, 0x86, 0xDE, 0xCA, 0x31, 0x69, 0x47, 0x88, + 0x4B, 0x9A, 0x13, 0xAD, 0xEA, 0x5C, 0xBE, 0x29, + 0x56, 0x64, 0x4F, 0xA1, 0x2A, 0x7B, 0xB3, 0xBF, + 0xB9, 0x7E, 0x1D, 0x93, 0xA7, 0x01, 0x91, 0xAC, + 0x38, 0xA0, 0x37, 0x32, 0x58, 0xC2, 0xC2, 0x81, + 0x6D, 0xEA, 0x6E, 0xAF, 0x88, 0x0D, 0x69, 0xF4, + 0x5F, 0xBA, 0x4C, 0x29, 0x0F, 0x18, 0xD3, 0x4B, + 0xB8, 0x36, 0x8C, 0xF4, 0xEB, 0xB4, 0x72, 0xBA, + 0x49, 0x9C, 0xBB, 0x54, 0x50, 0x1E, 0xE3, 0xA2, + 0x8E, 0x5F, 0xB9, 0xFD, 0xC6, 0x6C, 0xF6, 0x45, + 0x72, 0x09, 0x47, 0x19, 0xBB, 0xDB, 0x48, 0xF3, + 0xF4, 0x88, 0x51, 0x3B, 0x65, 0x50, 0xE1, 0x27, + 0xE8, 0x34, 0x1C, 0x7E, 0x53, 0xDC, 0xFD, 0xA7, + 0xD4, 0x08, 0x05, 0x58, 0x0B, 0xC7, 0xD3, 0x0A, + 0x72, 0xF2, 0x44, 0xCC, 0xDB, 0x5A, 0xEF, 0x66, + 0x1B, 0x0F, 0x30, 0x4E, 0xC5, 0xB7, 0xAB, 0x93, + 0xB8, 0xC5, 0xC4, 0x9A, 0x77, 0x68, 0x38, 0xB7, + 0xD5, 0x23, 0x74, 0xAA, 0x41, 0x63, 0x02, 0x24, + 0xD6, 0x16, 0xF3, 0x10, 0xE4, 0x99, 0xEC, 0xAD, + 0xCE, 0x93, 0xE7, 0x8B, 0x94, 0xD3, 0xCA, 0x48, + 0xB3, 0x47, 0xBC, 0x0E, 0xEC, 0xAA, 0x20, 0x66, + 0x02, 0x29, 0x65, 0xC8, 0x07, 0xBE, 0xF9, 0x02, + 0x9B, 0xC5, 0x22, 0x8F, 0x00, 0x5E, 0xDB, 0x74, + 0xD4, 0xB1, 0x44, 0x98, 0xCE, 0x3A, 0xE1, 0x3B, + 0xEB, 0x7C, 0x69, 0x3B, 0x66, 0x9E, 0xE9, 0xF9, + 0xA6, 0xF4, 0x6F, 0xC0, 0x0E, 0xC0, 0x5E, 0x13, + 0x2B, 0xB6, 0xC6, 0x76, 0x0F, 0xB5, 0xC5, 0x1C, + 0x83, 0x23, 0xAC, 0xD6, 0xA3, 0xC7, 0x5A, 0x72, + 0xE9, 0x73, 0x89, 0x66, 0xD1, 0x25, 0xB9, 0x61, + 0x3B, 0x31, 0x45, 0xC6, 0x7B, 0x5E, 0x98, 0x81, + 0x87, 0xE8, 0x5F, 0x29, 0xAD, 0xCB, 0xAF, 0x74, + 0xE3, 0x3A, 0x61, 0x1F, 0xFF, 0x25, 0x2A, 0xEB, + 0xBA, 0xEB, 0x1E, 0xA6, 0x41, 0xE6, 0xFC, 0x8B, + 0xDF, 0x73, 0x41, 0xBE, 0x2A, 0xA8, 0x57, 0xE4, + 0x43, 0xAC, 0xFB, 0xCE, 0xB2, 0x15, 0x5D, 0x08, + 0x1A, 0xCB, 0x4C, 0xCD, 0xB0, 0x98, 0xD5, 0x7C, + 0xEF, 0x6F, 0x6F, 0xD3, 0x42, 0xDB, 0x2D, 0x83, + 0xB6, 0x12, 0x3E, 0x0A, 0xD3, 0xC9, 0x3F, 0x30, + 0x08, 0x11, 0xB8, 0xD5, 0xA1, 0x1A, 0x5A, 0x29, + 0xBE, 0x60, 0x81, 0x6F, 0x69, 0xB2, 0x9D, 0x1D, + 0x7E, 0x15, 0x88, 0x69, 0xD8, 0x60, 0xF6, 0xFB, + 0x82, 0x9D, 0xE8, 0x0D, 0x3E, 0x1B, 0x69, 0x9C, + 0x3A, 0xB6, 0x80, 0x4E, 0xB6, 0x54, 0x91, 0x78, + 0xD9, 0x47, 0x33, 0x38, 0xD6, 0xAF, 0x20, 0x9E, + 0x1F, 0x7D, 0x26, 0x3C, 0x66, 0x7A, 0xE6, 0x89, + 0x5F, 0x6E, 0x29, 0x33, 0x92, 0x34, 0x71, 0xF1, + 0x99, 0x58, 0x1F, 0x8A, 0x51, 0xBD, 0x9A, 0xA4, + 0x52, 0xEE, 0xE4, 0xBF, 0xE9, 0x56, 0x69, 0xAC, + 0xD0, 0x7B, 0x41, 0xB0, 0x0C, 0x03, 0xF5, 0x5A, + 0x40, 0xD1, 0x0B, 0x50, 0xF8, 0xE4, 0x67, 0xBD, + 0x07, 0x1C, 0x8F, 0x40, 0x5C, 0xF1, 0x19, 0x61, + 0x2D, 0x32, 0x40, 0x5B, 0xD5, 0x27, 0x5A, 0x6B, + 0xBF, 0x22, 0x17, 0xF9, 0xF1, 0x79, 0x0D, 0x29, + 0x99, 0x7B, 0x7B, 0x6B, 0x1E, 0xC8, 0xD7, 0x92, + 0x4A, 0xB9, 0xE6, 0x44, 0xC1, 0x29, 0xCE, 0xE8, + 0x74, 0x33, 0x29, 0x1A, 0x2C, 0x8E, 0xD6, 0xBC, + 0x3C, 0x2A, 0x19, 0xD0, 0x76, 0xB1, 0x77, 0xEE, + 0x60, 0x50, 0x69, 0x2A, 0xDA, 0x8E, 0x95, 0x57, + 0x4D, 0x6C, 0xE9, 0xAB, 0xE4, 0x97, 0x95, 0xD8, + 0xF2, 0x8E, 0xAB, 0x69, 0x67, 0x6E, 0x79, 0x03, + 0xA6, 0x56, 0xFA, 0xB3, 0x20, 0x25, 0xFE, 0x34, + 0x65, 0xCB, 0xDB, 0x57, 0x01, 0xC1, 0x77, 0x20, + 0x9D, 0x91, 0x89, 0xA5, 0x91, 0x7C, 0x13, 0x37, + 0xDE, 0x39, 0xF5, 0x75, 0xE5, 0xDD, 0xB9, 0x3C, + 0xA7, 0x6B, 0xEB, 0x52, 0xAF, 0x32, 0xE8, 0xD7, + 0x12, 0x7B, 0x28, 0xF7, 0xCE, 0x73, 0x12, 0xE8, + 0x03, 0x90, 0x47, 0x21, 0xAB, 0x21, 0x6E, 0x92, + 0xA8, 0xA9, 0xE6, 0x09, 0xFC, 0x10, 0xAF, 0x8D, + 0xC2, 0xAA, 0xCA, 0x14, 0xA9, 0x7B, 0xB0, 0xE4, + 0xB2, 0x34, 0xC7, 0x00, 0x0E, 0xBB, 0xE0, 0xC4, + 0x42, 0xF1, 0x85, 0x94, 0x6B, 0x7C, 0xE7, 0x72, + 0x80, 0x95, 0xCD, 0x60, 0x16, 0x9B, 0x0B, 0xD9, + 0x7B, 0x36, 0xB3, 0xAE, 0x38, 0x55, 0xD9, 0x89, + 0x25, 0xB2, 0x9D, 0x92, 0x94, 0xEF, 0x27, 0x75, + 0x09, 0xFC, 0xA4, 0x07, 0xEA, 0x2B, 0xC4, 0x76, + 0x59, 0x02, 0x6A, 0x82, 0x04, 0xD6, 0x96, 0x4F, + 0xC6, 0x5B, 0xEF, 0x35, 0x31, 0xE9, 0xC1, 0xE6, + 0xF9, 0x70, 0xBF, 0x2F, 0xF2, 0x40, 0x75, 0xEA, + 0x17, 0xD1, 0x36, 0xAD, 0xEA, 0xD2, 0x35, 0x6B, + 0x6C, 0xE4, 0x98, 0xF9, 0x3C, 0xD2, 0xF9, 0xE5, + 0xE1, 0x90, 0xD2, 0x09, 0xD9, 0x3E, 0x47, 0x3F, + 0xAA, 0x8E, 0xD9, 0x20, 0x96, 0x31, 0x5B, 0xF1, + 0xFC, 0xA6, 0x55, 0xFE, 0xBC, 0x78, 0xE0, 0x99, + 0x65, 0xC9, 0x74, 0x78, 0x29, 0x6B, 0x75, 0xD3, + 0x90, 0x56, 0x60, 0x4D, 0x32, 0x71, 0x91, 0x6D, + 0xCF, 0xF2, 0x25, 0xCB, 0x6B, 0x9A, 0x34, 0xE1, + 0x5D, 0xC1, 0x64, 0xB2, 0xA6, 0x8A, 0x3B, 0x42, + 0xDE, 0x05, 0x7A, 0x6B, 0xAC, 0x17, 0x32, 0xCF, + 0x59, 0x45, 0xBB, 0xCA, 0x12, 0xB8, 0xB3, 0x61, + 0x59, 0xFB, 0x89, 0xF7, 0xBB, 0xBE, 0x9F, 0xE0, + 0x34, 0x21, 0x8F, 0x5B, 0x3B, 0xCF, 0x18, 0x4C, + 0x20, 0x73, 0x06, 0xE6, 0xD2, 0xEA, 0x69, 0x59, + 0xEA, 0xE0, 0x89, 0x0A, 0x7B, 0x68, 0x02, 0xEC, + 0x1D, 0xA0, 0x82, 0xBE, 0xD6, 0x5B, 0xB6, 0xE4, + 0xEB, 0x4D, 0x56, 0x15, 0x70, 0x1C, 0xB0, 0xE3, + 0x50, 0x36, 0x33, 0x14, 0xA4, 0xD1, 0x01, 0xDB, + 0xBA, 0x60, 0x53, 0x71, 0xA3, 0x8B, 0x2D, 0x8A, + 0x37, 0xFF, 0x78, 0xEB, 0xB3, 0x69, 0x82, 0x53, + 0x88, 0xAA, 0xB7, 0xD3, 0xC6, 0x23, 0xB9, 0x3E, + 0x51, 0x2D, 0x96, 0xA9, 0xF3, 0x39, 0xEC, 0x96, + 0x8B, 0x35, 0x27, 0x59, 0xAF, 0x3E, 0x8F, 0xA3, + 0x21, 0x1C, 0x39, 0x29, 0x5B, 0x01, 0x10, 0xE6, + 0xDF, 0x26, 0x4E, 0x90, 0x67, 0x8C, 0x11, 0xE2, + 0xB9, 0x03, 0xAF, 0x32, 0x2E, 0x4F, 0xA7, 0x70, + 0x28, 0xD3, 0xEC, 0xC4, 0x4F, 0x62, 0x79, 0xD6, + 0x3B, 0x1E, 0x60, 0xD8, 0x06, 0x72, 0x41, 0x01, + 0x5F, 0xC4, 0xF8, 0x9B, 0xAA, 0x15, 0x6A, 0x78, + 0xFA, 0x77, 0xBB, 0x29, 0x14, 0xCA, 0xC2, 0x81, + 0xF4, 0x40, 0x9C, 0x9C, 0x03, 0x70, 0xAB, 0xD7, + 0xC1, 0xF8, 0xA5, 0xD1, 0x04, 0x0B, 0x59, 0x75, + 0x2C, 0xC4, 0xFD, 0xF0, 0xD1, 0x9C, 0xB0, 0xC5, + 0x6F, 0xEF, 0x34, 0xFA, 0x3A, 0x3B, 0xCE, 0xE1, + 0xF0, 0x64, 0xE3, 0x60, 0xE8, 0x6D, 0xC5, 0x5D, + 0xB5, 0xC9, 0x37, 0x5B, 0xDA, 0xDA, 0x67, 0x2E, + 0x72, 0xF6, 0x64, 0xE3, 0xAC, 0xB2, 0xE6, 0xD8, + 0xA0, 0x84, 0x09, 0xC8, 0xCD, 0x60, 0xA1, 0xF9, + 0x53, 0x80, 0xAB, 0x6C, 0x3A, 0xCB, 0x6B, 0x91, + 0xA8, 0xA9, 0xA3, 0xB7, 0x75, 0x50, 0x49, 0x79, + 0xB8, 0x02, 0x5A, 0xDB, 0x34, 0x22, 0x61, 0x9B, + 0xD1, 0x1E, 0x2B, 0x54, 0xFE, 0x6D, 0x07, 0x58, + 0x81, 0xAC, 0xAC, 0x24, 0x53, 0x20, 0x31, 0xCC, + 0xD2, 0x99, 0x06, 0x0E, 0x4E, 0xB7, 0xF7, 0xCB, + 0xD8, 0x08, 0x36, 0xD4, 0xB8, 0x23, 0xA5, 0xFF, + 0xA4, 0xFE, 0x8C, 0x6B, 0x98, 0x3D, 0x2A, 0xAE, + 0xB8, 0xF1, 0x6F, 0x6C, 0x1C, 0x22, 0x81, 0xEF, + 0xD7, 0x13, 0xFF, 0xDA, 0x22, 0x06, 0x9A, 0x5D, + 0x8A, 0xC4, 0x91, 0x29, 0x1C, 0xBF, 0x49, 0xF1, + 0x18, 0xC9, 0x46, 0xD5, 0x0F, 0x08, 0xE0, 0xD1, + 0x73, 0x28, 0x14, 0xE8, 0x15, 0x81, 0x90, 0x6A, + 0x31, 0x53, 0x94, 0x01, 0x14, 0xBE, 0xC8, 0xEB, + 0xD4, 0x9C, 0x73, 0x79, 0x0F, 0x9E, 0xD7, 0xCC, + 0xD9, 0x85, 0xED, 0xAD, 0x8D, 0xB3, 0x42, 0x6B, + 0x15, 0x13, 0x98, 0xEB, 0xF1, 0x6E, 0xFA, 0xFE, + 0x3D, 0xA0, 0xC7, 0xF3, 0x8B, 0x22, 0x76, 0x05, + 0x76, 0xD4, 0x88, 0x52, 0x73, 0xF5, 0xE4, 0x0B, + 0x14, 0x05, 0x57, 0x10, 0x7F, 0xCE, 0x0B, 0xF8, + 0x46, 0x1F, 0x24, 0x8B, 0xC4, 0x3F, 0xBF, 0x5C, + 0xEE, 0xE7, 0x6E, 0xF3, 0xA9, 0xEB, 0xD2, 0x30, + 0x95, 0x6C, 0x7B, 0x98, 0xAC, 0x89, 0x8A, 0x39, + 0x9E, 0x5C, 0x2A, 0xB0, 0xCB, 0xE9, 0xE5, 0xAB, + 0x94, 0x71, 0xDF, 0x5E, 0x53, 0x0C, 0x72, 0xF2, + 0x6C, 0x34, 0xDB, 0xFE, 0x2F, 0x83, 0x68, 0x3E, + 0xB6, 0x22, 0xF9, 0x64, 0x7A, 0xA0, 0x6A, 0x26, + 0x7D, 0x78, 0x97, 0x36, 0x31, 0x2C, 0x90, 0xC9, + 0xE5, 0x9D, 0x77, 0x12, 0x2A, 0x88, 0x53, 0x8F, + 0xD0, 0xF5, 0x39, 0x16, 0xAF, 0x08, 0xB2, 0x36, + 0x93, 0x5C, 0xDC, 0x5B, 0xB3, 0xCB, 0x49, 0x0C, + 0x83, 0x09, 0xE6, 0xA7, 0x9B, 0x43, 0xE7, 0xA5, + 0x4A, 0x8A, 0x07, 0xE1, 0xBA, 0xFB, 0x9B, 0x93, + 0x7E, 0xAC, 0x2F, 0xC3, 0xAC, 0xED, 0x30, 0x64, + 0x1F, 0x33, 0x79, 0x19, 0xD2, 0xDB, 0x54, 0xEC, + 0x7F, 0x32, 0x0E, 0xC5, 0x1C, 0xD1, 0x3C, 0x00, + 0xB9, 0xE6, 0x03, 0xDF, 0x6D, 0xD2, 0x69, 0x0C, + 0x75, 0xAF, 0x37, 0x07, 0xB7, 0xC9, 0x3E, 0x91, + 0xCF, 0x02, 0x78, 0xD7, 0x43, 0xA1, 0x8B, 0x4E, + 0x69, 0x74, 0xB4, 0x24, 0x08, 0x10, 0x42, 0xB5, + 0xB4, 0xE7, 0x8C, 0xEB, 0x7F, 0xFF, 0x67, 0x98, + 0x0B, 0xBC, 0xBA, 0x5E, 0x29, 0xBE, 0x61, 0x33, + 0x56, 0x16, 0xD6, 0x5E, 0x86, 0xF0, 0xE7, 0x46, + 0xD1, 0x83, 0xDF, 0xD4, 0x6B, 0x75, 0xC9, 0x30, + 0x0D, 0x60, 0xC5, 0x19, 0xFD, 0x95, 0xA8, 0xA6, + 0x61, 0xFF, 0xC8, 0x2A, 0xE7, 0x5D, 0xD1, 0x49, + 0x49, 0x1F, 0x99, 0xD1, 0x41, 0x4F, 0x15, 0x79, + 0x00, 0x8A, 0x80, 0x27, 0xA6, 0xC9, 0x98, 0xD3, + 0xE7, 0xA2, 0xBB, 0xFA, 0x07, 0xAB, 0x53, 0xEF, + 0xE8, 0x17, 0xAE, 0x9C, 0x6A, 0xE8, 0xD0, 0x52, + 0xAA, 0x85, 0x9D, 0x03, 0x48, 0xB0, 0xD2, 0xC8, + 0x5B, 0xCC, 0xC4, 0x50, 0x84, 0x90, 0xBE, 0x0F, + 0x9B, 0x32, 0x13, 0xB8, 0xAF, 0x7C, 0xCE, 0xE7, + 0x22, 0xE2, 0x82, 0x13, 0x18, 0x71, 0x46, 0xC5, + 0xDA, 0x05, 0xB7, 0x65, 0xD8, 0x33, 0x06, 0xFA, + 0x5A, 0x6B, 0x76, 0xD6, 0x92, 0x76, 0xD1, 0x6A, + 0x2B, 0xC6, 0x0D, 0xB1, 0xAD, 0xAB, 0x57, 0x62, + 0xEA, 0x76, 0x37, 0x4E, 0xAB, 0x2D, 0x34, 0xD2, + 0xA3, 0x57, 0xC7, 0x56, 0xFB, 0xEA, 0xD6, 0xA9, + 0xE3, 0xC1, 0x63, 0x07, 0xDE, 0xB9, 0x5E, 0x5A, + 0x30, 0x2E, 0x41, 0x4D, 0x43, 0xE9, 0x1C, 0xA1, + 0x5B, 0xB2, 0x4F, 0xAF, 0xDC, 0xE9, 0xBB, 0xBE, + 0x73, 0x55, 0x90, 0xF0, 0xD0, 0x02, 0x98, 0x6D, + 0x13, 0x50, 0x9A, 0xCA, 0x4C, 0xB3, 0x15, 0x3A, + 0x26, 0x14, 0x38, 0x67, 0xEB, 0xA7, 0x27, 0x33, + 0x48, 0x97, 0x58, 0x94, 0x57, 0xEA, 0xF9, 0x7E, + 0x8B, 0xB0, 0xBB, 0xF3, 0xF4, 0x84, 0x6E, 0x69, + 0x95, 0x2C, 0xF4, 0x6B, 0x1C, 0x65, 0x39, 0xB4, + 0x46, 0xA7, 0x99, 0xD6, 0x68, 0x47, 0x6E, 0x2E, + 0x49, 0x84, 0x75, 0x3E, 0x6C, 0x2E, 0x9A, 0x08, + 0xBC, 0xB7, 0x2F, 0x86, 0x68, 0x5C, 0xE1, 0xBF, + 0xEA, 0xA1, 0xAF, 0x59, 0xD6, 0x71, 0xB7, 0xBD, + 0xD6, 0xC5, 0xC2, 0xF2, 0xF3, 0xB5, 0x36, 0xBB, + 0x36, 0x23, 0x4F, 0xD6, 0x44, 0x59, 0x0A, 0x44, + 0x86, 0xCA, 0xDC, 0xD4, 0x22, 0x0F, 0x79, 0x09, + 0x99, 0x8C, 0x8C, 0x9E, 0x03, 0xA4, 0x51, 0x99, + 0x5A, 0xB9, 0x97, 0x76, 0x73, 0x20, 0xD3, 0x98, + 0x8C, 0x52, 0x96, 0xE1, 0x65, 0x7B, 0x4C, 0x77, + 0x40, 0xB2, 0xFE, 0x27, 0x0A, 0x11, 0x76, 0x6E, + 0x3B, 0x35, 0x12, 0xC6, 0x4E, 0xC2, 0x0E, 0xCC, + 0x04, 0xB5, 0x51, 0x91, 0xD0, 0x4A, 0xF7, 0x84, + 0xF2, 0xE7, 0xE5, 0x99, 0x7E, 0xB5, 0x3E, 0xAC, + 0x53, 0xDB, 0x61, 0x11, 0x71, 0x56, 0x4E, 0xAB, + 0x4A, 0x68, 0xC1, 0x6A, 0xA5, 0xC5, 0x7F, 0x72, + 0xEB, 0x14, 0x97, 0xA4, 0x27, 0xA0, 0x53, 0xA1, + 0xC4, 0x70, 0x7D, 0x58, 0xBD, 0xC1, 0xD7, 0xFD, + 0x9F, 0xB8, 0x8C, 0xCE, 0x34, 0xF9, 0xE1, 0x9C, + 0x59, 0x79, 0x31, 0x24, 0xEC, 0xBB, 0xF5, 0x6F, + 0x3F, 0xA3, 0x5A, 0x55, 0xB3, 0xDE, 0x64, 0xDF, + 0xA9, 0x95, 0x0B, 0x53, 0xF2, 0xA7, 0x25, 0x7B, + 0x8C, 0xAD, 0x25, 0x9A, 0x35, 0xBF, 0x15, 0x46, + 0x69, 0x4A, 0x83, 0x8C, 0x80, 0xFC, 0x37, 0xD0, + 0xC3, 0x6F, 0x00, 0xE2, 0x3C, 0x63, 0xAB, 0xC5, + 0x53, 0xC1, 0x8D, 0x4A, 0x40, 0x4B, 0xE6, 0xDC, + 0x05, 0xB1, 0x20, 0x23, 0x8B, 0xB8, 0xDF, 0x40, + 0x86, 0x97, 0xB9, 0x5E, 0xA4, 0xB7, 0xA1, 0x37, + 0xE0, 0x4B, 0x9E, 0xD9, 0x84, 0x2B, 0x2D, 0xAD, + 0xD1, 0xB1, 0x52, 0x15, 0x00, 0x9B, 0xDD, 0x23, + 0xA9, 0x27, 0x44, 0x21, 0x33, 0x17, 0x1C, 0x61, + 0x49, 0x84, 0x0D, 0x6A, 0x11, 0x7C, 0x77, 0xA5, + 0xD6, 0x8E, 0xE6, 0x1D, 0x6E, 0x90, 0x04, 0x4A, + 0xD3, 0x54, 0x3A, 0xA7, 0x1A, 0x28, 0xC5, 0x94, + 0x01, 0xCA, 0xDB, 0x1B, 0x5D, 0x78, 0xC5, 0xC6, + 0x69, 0x0D, 0x69, 0x88, 0x75, 0x00, 0x02, 0x0B, + 0x59, 0x6C, 0x3E, 0xC5, 0x30, 0xDF, 0xEE, 0x85, + 0x43, 0xA2, 0x9A, 0xF9, 0xDD, 0x85, 0x6E, 0xB3, + 0x0D, 0x83, 0x6A, 0x13, 0x88, 0xD0, 0x12, 0x15, + 0x53, 0x16, 0xFC, 0x5C, 0x15, 0x47, 0xEC, 0x6D, + 0x4D, 0x18, 0x2D, 0x88, 0xDB, 0xD2, 0x17, 0x6C, + 0xDE, 0x64, 0xEC, 0x70, 0x8D, 0x19, 0xDC, 0x66, + 0x69, 0x7F, 0xCF, 0x61, 0x6E, 0x4F, 0x23, 0x86, + 0xF5, 0x1A, 0x98, 0x47, 0x4B, 0xCC, 0xE9, 0x2F, + 0x12, 0x28, 0x12, 0xB9, 0xEB, 0xD8, 0x32, 0xDC, + 0xE4, 0xD8, 0x63, 0xAC, 0x56, 0x08, 0x2F, 0xEC, + 0x5E, 0x47, 0x29, 0xFF, 0x76, 0xFE, 0x95, 0x60, + 0xD2, 0x19, 0x61, 0x0E, 0xAF, 0xFC, 0x44, 0x42, + 0x11, 0x42, 0x79, 0xBC, 0x06, 0x3A, 0xAD, 0x93, + 0x7E, 0x46, 0x60, 0x03, 0xB0, 0xF5, 0x9F, 0x57, + 0x28, 0x48, 0x44, 0x8F, 0x0E, 0xFA, 0x72, 0x8C, + 0xE4, 0x18, 0xF4, 0x99, 0x6B, 0xB1, 0x23, 0x45, + 0xDC, 0x13, 0xA2, 0xF6, 0x5F, 0x57, 0x35, 0xA2, + 0xD7, 0x38, 0xF9, 0xE9, 0x8A, 0x7A, 0x79, 0xC6, + 0xB2, 0xCD, 0xBF, 0xD3, 0x41, 0x21, 0x56, 0xB3, + 0x39, 0xD9, 0x14, 0x3B, 0xDD, 0x85, 0xCB, 0x78, + 0x2F, 0xEB, 0x7E, 0x29, 0xBC, 0x52, 0x24, 0xE7, + 0x1B, 0x85, 0xB1, 0x65, 0xAE, 0xAB, 0x65, 0xF9, + 0x54, 0xD2, 0x1F, 0x37, 0x29, 0x52, 0x30, 0x5B, + 0x3D, 0x5F, 0x48, 0x84, 0x3F, 0x51, 0x27, 0x88, + 0x9D, 0xA7, 0x94, 0xF0, 0x73, 0xCD, 0x98, 0xD2, + 0x05, 0xE8, 0x25, 0x71, 0x7C, 0x93, 0x13, 0x82, + 0x5D, 0x53, 0x8D, 0x05, 0x0E, 0x69, 0x20, 0xC4, + 0xDB, 0xF2, 0xF6, 0x55, 0x24, 0x29, 0xD0, 0x41, + 0xF6, 0x2D, 0xF8, 0xC1, 0x2E, 0xC2, 0x4D, 0xE1, + 0xD7, 0x2D, 0xA0, 0x49, 0x16, 0x0B, 0x4D, 0x34, + 0xB5, 0x6D, 0xAE, 0x10, 0x93, 0x1E, 0xB6, 0x95, + 0x69, 0xC2, 0xB3, 0xC0, 0xAF, 0x6F, 0xFF, 0xA5, + 0x32, 0x3C, 0x7D, 0xC9, 0xC7, 0xC8, 0xEF, 0x0C, + 0x64, 0x20, 0x23, 0xC4, 0xFE, 0x89, 0x87, 0x8E, + 0xB3, 0xA6, 0xC5, 0x24, 0xCF, 0x03, 0x7E, 0x74, + 0xF7, 0xBF, 0x89, 0x1E, 0xCF, 0xB1, 0x02, 0xFA, + 0xF2, 0x9F, 0xD3, 0x9D, 0x99, 0x00, 0xDA, 0x7A, + 0x92, 0x7D, 0x13, 0x11, 0x92, 0xAD, 0x55, 0xF2, + 0xE1, 0x82, 0x72, 0xB1, 0x6A, 0xF1, 0x45, 0x05, + 0xDA, 0x17, 0xC9, 0xA1, 0x42, 0x82, 0x89, 0x77, + 0x31, 0xB6, 0x72, 0x54, 0x7C, 0x68, 0x10, 0x25, + 0x57, 0x30, 0x16, 0x15, 0x08, 0x58, 0x8B, 0xC1, + 0x61, 0xCB, 0xA0, 0x58, 0x29, 0x33, 0xB1, 0x64, + 0xF4, 0x4F, 0x06, 0xAA, 0x25, 0x31, 0xAA, 0xA8, + 0x92, 0x1C, 0x69, 0x1E, 0x6E, 0xB6, 0xBE, 0x81, + 0xDA, 0x9B, 0xE5, 0x1C, 0x56, 0x39, 0x55, 0xE0, + 0xC1, 0xEF, 0xD3, 0xED, 0x2A, 0x1C, 0x94, 0x9B, + 0xD4, 0xE0, 0x0B, 0x3A, 0xE9, 0xEB, 0xC1, 0x3C, + 0x4C, 0x6C, 0x4E, 0x5E, 0x39, 0x4C, 0xB0, 0x34, + 0xB9, 0xCB, 0x75, 0xBE, 0xCE, 0x86, 0x44, 0xFF, + 0x89, 0xEF, 0x95, 0xE7, 0x6E, 0xF7, 0x15, 0xE1, + 0x7A, 0xA2, 0x6B, 0x1F, 0xEB, 0x77, 0x4C, 0x50, + 0x59, 0xB3, 0xA3, 0x9A, 0x38, 0xDF, 0xD0, 0x57, + 0xD6, 0x41, 0xE4, 0x3F, 0xFE, 0x0F, 0x3E, 0x40, + 0xFF, 0xF6, 0xB2, 0x36, 0x3C, 0x1B, 0xF0, 0xEF, + 0x07, 0x87, 0x3D, 0x09, 0xA4, 0x87, 0x76, 0x9D, + 0x0A, 0x73, 0xCD, 0x0C, 0xC6, 0x44, 0xF5, 0x3C, + 0x25, 0xD2, 0x02, 0x5E, 0xE7, 0x1C, 0x69, 0xB7, + 0xAC, 0x0F, 0xA6, 0x61, 0x15, 0x57, 0xC4, 0x27, + 0xC0, 0x69, 0xDF, 0x2E, 0x1B, 0xF6, 0x29, 0xD9, + 0xA0, 0xCB, 0x5C, 0x67, 0xC7, 0xEA, 0x4F, 0xA6, + 0x58, 0xC7, 0x8D, 0x00, 0x42, 0xB0, 0x59, 0xE6, + 0xB6, 0x58, 0xFF, 0xCE, 0x60, 0x16, 0x69, 0x67, + 0xDB, 0x94, 0xF7, 0x16, 0xEB, 0x4D, 0x04, 0xB3, + 0xD2, 0x45, 0x0F, 0x40, 0x03, 0x1F, 0x10, 0xAC, + 0xDD, 0x07, 0x77, 0x7F, 0xBE, 0x9F, 0xBB, 0xB7, + 0x7F, 0xCB, 0x7C, 0x1F, 0xA9, 0xFC, 0x1E, 0xAF, + 0x0C, 0x5F, 0x86, 0xD7, 0x96, 0x2D, 0xAE, 0xD0, + 0x47, 0x4B, 0xA0, 0xFE, 0x68, 0xD9, 0xB2, 0x32, + 0x77, 0xA9, 0xCA, 0x7F, 0xC6, 0x76, 0xC6, 0x61, + 0x6B, 0x8E, 0x43, 0x9A, 0x1D, 0x4B, 0xFF, 0x72, + 0x43, 0x78, 0x19, 0xB5, 0x51, 0x87, 0x56, 0xA7, + 0x87, 0x3E, 0xF5, 0x84, 0x01, 0x26, 0x46, 0xC3, + 0x65, 0x9A, 0x6B, 0xA8, 0x6E, 0x62, 0x27, 0x26, + 0x14, 0xD8, 0x5E, 0xEC, 0xD5, 0x35, 0x0E, 0x3C, + 0xD0, 0xA1, 0x25, 0xAE, 0x9C, 0x17, 0xCC, 0xE2, + 0x52, 0x39, 0xE1, 0xEE, 0x9C, 0xDB, 0x39, 0xCA, + 0x7B, 0x18, 0xCF, 0x2C, 0x88, 0xCF, 0x14, 0x68, + 0x26, 0xB6, 0xCC, 0x1E, 0x6A, 0xA8, 0xE1, 0x69, + 0x2C, 0x91, 0x5F, 0x3B, 0xF1, 0xC1, 0xDB, 0x34, + 0xC6, 0xF3, 0x78, 0x83, 0xCB, 0x4E, 0xDC, 0xE0, + 0xF7, 0xC9, 0x95, 0xB6, 0x9E, 0x3A, 0xCE, 0x30, + 0xDC, 0x16, 0x6F, 0x78, 0x4C, 0x93, 0xD6, 0xCB, + 0xBC, 0xAC, 0x3C, 0x79, 0xBC, 0x31, 0x93, 0x10, + 0xCE, 0x6E, 0x66, 0x57, 0x00, 0xF1, 0x7F, 0x96, + 0x2F, 0x18, 0xB2, 0x40, 0x73, 0x9D, 0x15, 0x69, + 0x0B, 0x1B, 0x6C, 0x85, 0xD1, 0xAA, 0xA3, 0x2D, + 0x4A, 0x79, 0x74, 0x4A, 0xE5, 0x0C, 0xF9, 0xA9, + 0x0A, 0x09, 0x54, 0xB4, 0xA4, 0xD9, 0x4C, 0x49, + 0x9B, 0x41, 0x23, 0xEF, 0xC0, 0x20, 0x44, 0x31, + 0xF7, 0x22, 0x85, 0xB5, 0xDA, 0x9E, 0x19, 0x22, + 0x23, 0x0A, 0x30, 0x4D, 0x3A, 0x1B, 0xD8, 0x52, + 0x08, 0x72, 0x61, 0xB7, 0xCF, 0x0D, 0x8B, 0x90, + 0xD1, 0x46, 0x23, 0xEB, 0xCD, 0xC6, 0x38, 0x7B, + 0xC6, 0xAF, 0x65, 0xBE, 0x5F, 0x01, 0x1B, 0x6B, + 0xC1, 0x23, 0xC1, 0x30, 0x6A, 0x1E, 0x8F, 0xBF, + 0x2D, 0xF0, 0xB6, 0xF8, 0x9B, 0x0A, 0xE0, 0x5D, + 0xE0, 0xE4, 0xB7, 0xF5, 0x0A, 0xDA, 0x46, 0xE5, + 0x3A, 0x9B, 0x6B, 0xCA, 0xDA, 0x06, 0x43, 0xBE, + 0x6B, 0xFD, 0xC2, 0xB0, 0x6A, 0x6C, 0x75, 0x88, + 0x3C, 0x2D, 0xC6, 0x13, 0xAC, 0x72, 0x16, 0x31, + 0x7A, 0x40, 0xC4, 0xA2, 0xC0, 0x86, 0x69, 0x83, + 0xD3, 0x2C, 0x9C, 0xE0, 0xA6, 0xCC, 0xED, 0xF4, + 0x03, 0x62, 0x6B, 0xB2, 0x3B, 0x5B, 0x9D, 0xA5, + 0x86, 0x77, 0x7C, 0x73, 0x5E, 0x19, 0x11, 0xD7, + 0x7B, 0x11, 0x96, 0xC8, 0xFA, 0x47, 0x21, 0xD6, + 0xB0, 0xFE, 0x0B, 0x08, 0x11, 0xFC, 0x00, 0xB9, + 0xA1, 0x24, 0x2C, 0xBD, 0x4A, 0x92, 0x43, 0x10, + 0x08, 0xBE, 0xE9, 0xE1, 0x5D, 0x19, 0x82, 0xDE, + 0x34, 0xAE, 0xDC, 0xA6, 0x85, 0x8F, 0x19, 0x30, + 0x20, 0xB6, 0x44, 0x7F, 0x6B, 0xA6, 0x63, 0x70, + 0x59, 0xDA, 0x8D, 0xE0, 0xF8, 0x46, 0x86, 0x57, + 0xB8, 0x1C, 0x57, 0x13, 0x78, 0x41, 0x8C, 0xF5, + 0x7D, 0x77, 0xAE, 0x75, 0x6C, 0x59, 0x93, 0x2E, + 0x05, 0x25, 0x03, 0xD1, 0xEA, 0xFB, 0x2D, 0x60, + 0xD2, 0x61, 0x23, 0xEA, 0x0E, 0xFF, 0x55, 0xE3, + 0x24, 0x49, 0x00, 0x19, 0xBD, 0x1E, 0x56, 0x24, + 0x87, 0x2F, 0x7B, 0x98, 0x07, 0x36, 0xD2, 0x7C, + 0xC5, 0x9B, 0xE0, 0x4E, 0x29, 0xAB, 0xA1, 0xB8, + 0x35, 0x15, 0x31, 0xCE, 0x65, 0x14, 0x24, 0xF8, + 0x10, 0xB5, 0xAB, 0x3E, 0xD5, 0x58, 0xCA, 0xE5, + 0x73, 0x2D, 0x7C, 0x8B, 0xB4, 0x62, 0x75, 0x03, + 0x30, 0x89, 0xFE, 0x32, 0xF8, 0x65, 0x99, 0xD0, + 0x88, 0xD5, 0x72, 0x88, 0x03, 0xC9, 0x51, 0x03, + 0xBA, 0x2F, 0xFB, 0x7C, 0x39, 0x02, 0x05, 0xC4, + 0xCE, 0xD8, 0xB3, 0xC2, 0x7B, 0x29, 0x8E, 0xA7, + 0x9D, 0x35, 0x97, 0xB7, 0x17, 0xDE, 0x28, 0x0B, + 0x32, 0xE5, 0x41, 0xDA, 0x1D, 0x98, 0xBD, 0x27, + 0xEF, 0xF7, 0xB4, 0x43, 0x09, 0x13, 0x39, 0xC7, + 0x40, 0x16, 0x11, 0x20, 0x71, 0xCB, 0xB6, 0xC9, + 0xB0, 0x8F, 0x20, 0xC1, 0xF0, 0x40, 0xFB, 0x6E, + 0x73, 0x04, 0x8F, 0x73, 0xCA, 0x45, 0xDB, 0xE0, + 0xF9, 0x25, 0x8D, 0x32, 0xF2, 0x3E, 0x36, 0xBE, + 0xF7, 0x88, 0xF8, 0x13, 0x4D, 0x9B, 0x10, 0xC2, + 0x58, 0x0B, 0x20, 0xF8, 0x78, 0xB6, 0x4C, 0x7D, + 0x2A, 0xA6, 0x81, 0x40, 0xD1, 0x30, 0x50, 0x38, + 0x2A, 0x5F, 0xBC, 0x81, 0x8E, 0x0F, 0xD4, 0xD0, + 0x87, 0x99, 0x78, 0x3D, 0xBE, 0x25, 0x15, 0xF4, + 0x45, 0x61, 0xA3, 0x1A, 0x7D, 0x05, 0x3F, 0xB5, + 0xA6, 0x1C, 0x41, 0xC6, 0x0E, 0xBE, 0x57, 0x6F, + 0xC5, 0xB6, 0x38, 0x63, 0x90, 0x55, 0x23, 0xFC, + 0x26, 0x9E, 0xFD, 0xB8, 0x6C, 0xF2, 0x99, 0x6B, + 0x6D, 0x90, 0xFE, 0x28, 0xA0, 0x16, 0xEE, 0x63, + 0xC2, 0x4C, 0xD6, 0xB2, 0x0C, 0xFA, 0x6E, 0x85, + 0x51, 0xE4, 0x2F, 0x57, 0x91, 0x82, 0x84, 0x43, + 0x8A, 0x44, 0x31, 0x6C, 0x68, 0x02, 0x01, 0x7C, + 0xCE, 0x4D, 0xC0, 0x7C, 0x43, 0xA9, 0x54, 0xF5, + 0x0E, 0xCA, 0xE6, 0x15, 0x98, 0xAE, 0x41, 0x57, + 0x0A, 0x66, 0xBA, 0x6D, 0x6E, 0x68, 0xB9, 0x2E, + 0x0D, 0x42, 0xD2, 0xF5, 0x0B, 0xFC, 0x2D, 0xA8, + 0x61, 0x6E, 0x60, 0x4E, 0x51, 0x78, 0xEB, 0x0C, + 0x52, 0x9E, 0xC0, 0x4A, 0xB0, 0x92, 0x85, 0x5C, + 0x3A, 0x3D, 0x69, 0x95, 0xAB, 0x62, 0xEB, 0x2F, + 0x9B, 0x12, 0xF5, 0x2E, 0xB5, 0xA6, 0x93, 0xCE, + 0x14, 0x97, 0xA7, 0x1E, 0x0A, 0x7B, 0x94, 0x74, + 0xFB, 0x65, 0xD0, 0x5A, 0x97, 0x55, 0x40, 0x02, + 0x71, 0x87, 0x9C, 0x9F, 0xCB, 0x41, 0x3F, 0x08, + 0x8D, 0x6A, 0xCA, 0xE6, 0xEC, 0xE6, 0x71, 0x22, + 0xF8, 0x58, 0x9F, 0xF1, 0x94, 0xF6, 0xE4, 0xD6, + 0xDC, 0x35, 0xD7, 0xEB, 0x6B, 0x78, 0x99, 0x66, + 0xF9, 0xE2, 0x15, 0x27, 0xC9, 0x8C, 0x27, 0xB4, + 0x89, 0x3C, 0x15, 0xEE, 0x52, 0x71, 0xA9, 0xD2, + 0x50, 0x3C, 0xD2, 0x31, 0xBB, 0x3A, 0xE5, 0x87, + 0xAF, 0x65, 0x2B, 0xF2, 0xF5, 0xC9, 0x44, 0xA2, + 0x59, 0x1C, 0x57, 0x96, 0xB9, 0xC2, 0x5E, 0xCB, + 0x8A, 0x5B, 0x2B, 0x7A, 0x7E, 0x93, 0x3C, 0x08, + 0x27, 0xCD, 0xB4, 0xB0, 0x1B, 0xF3, 0x82, 0x50, + 0x78, 0xCF, 0xEA, 0x28, 0x57, 0xB1, 0x0F, 0xB4, + 0xB6, 0x93, 0x82, 0x8E, 0x7A, 0xD1, 0x9F, 0x04, + 0xEC, 0xEE, 0x24, 0x3D, 0x8A, 0x5E, 0x56, 0x99, + 0x8D, 0x83, 0xA4, 0x05, 0x7D, 0xFB, 0x36, 0xDB, + 0xAB, 0xD1, 0x67, 0x59, 0xC7, 0x4A, 0xB9, 0xAF, + 0x99, 0xB6, 0xD8, 0xD4, 0x2C, 0xCA, 0x8C, 0xCC, + 0xD2, 0x32, 0xAB, 0x51, 0xCE, 0x2D, 0x22, 0xE0, + 0x29, 0xB1, 0x73, 0x10, 0x60, 0xA8, 0x6B, 0x8F, + 0x68, 0xAF, 0x58, 0x06, 0x9D, 0x72, 0x36, 0x98, + 0x3F, 0xF3, 0x6B, 0xAD, 0x3E, 0x7F, 0x4A, 0x00, + 0x94, 0x04, 0xAE, 0xE9, 0x8A, 0x9E, 0x8A, 0x03, + 0xD8, 0x04, 0xCC, 0xFE, 0xE3, 0xF8, 0xA2, 0x04, + 0x64, 0x17, 0x54, 0x77, 0xCA, 0x20, 0xD0, 0x80, + 0x1B, 0x36, 0xEF, 0x59, 0x31, 0xFA, 0xE4, 0xF5, + 0xAF, 0x56, 0x09, 0x02, 0xAD, 0xCF, 0xA6, 0xBC, + 0x26, 0x23, 0x27, 0x6D, 0xF3, 0x52, 0xCE, 0x2F, + 0x4C, 0x9C, 0xA8, 0x23, 0x75, 0xFA, 0x56, 0x9E, + 0x07, 0x5B, 0xB9, 0x30, 0x5A, 0xB1, 0x27, 0xFF, + 0x72, 0xBF, 0x50, 0xB1, 0x27, 0xEF, 0xA1, 0x0C, + 0x3A, 0xC9, 0x72, 0x21, 0xBE, 0xD8, 0xDC, 0xD5, + 0x66, 0x4A, 0x0A, 0x58, 0xFA, 0x57, 0xB4, 0x00, + 0x07, 0x31, 0xF2, 0x4E, 0xDC, 0xE0, 0x86, 0x99, + 0x45, 0xE5, 0x45, 0xCF, 0x27, 0x35, 0x79, 0x57, + 0xF5, 0xA2, 0x7A, 0x29, 0xFA, 0x5E, 0xCF, 0xF9, + 0xA9, 0x96, 0x11, 0xE1, 0x4A, 0x6C, 0xE5, 0xB8, + 0x8E, 0x78, 0xE6, 0xA1, 0x46, 0x97, 0xAE, 0xB4, + 0xF3, 0x6D, 0x7F, 0x8E, 0xD1, 0x86, 0x6B, 0x78, + 0x2B, 0x55, 0xC5, 0xDF, 0x0F, 0x43, 0x78, 0xED, + 0xD2, 0x38, 0xE5, 0x8B, 0x94, 0x7A, 0x06, 0xC5, + 0x73, 0x17, 0x55, 0x93, 0xAD, 0xA5, 0xAC, 0xBA, + 0x81, 0x8A, 0x6D, 0x73, 0x4B, 0xA1, 0x32, 0x8F, + 0x21, 0xA6, 0x5B, 0x51, 0x31, 0x58, 0xD0, 0xE4, + 0x0B, 0x93, 0x46, 0xF2, 0x51, 0x30, 0x3E, 0x60, + 0xE1, 0xCB, 0x30, 0x04, 0x15, 0x8D, 0x1E, 0x87, + 0xA6, 0xF6, 0x38, 0xE0, 0x27, 0x84, 0x81, 0x18, + 0x2B, 0x37, 0xBB, 0xD3, 0xDB, 0xE7, 0x91, 0xA3, + 0x1B, 0x6B, 0x20, 0xCB, 0x2C, 0x52, 0xB1, 0xB9, + 0x6A, 0x94, 0xF8, 0xCD, 0xBA, 0x5D, 0xC7, 0xDD, + 0x79, 0x36, 0x38, 0xC2, 0xFC, 0xEC, 0x4F, 0x2B, + 0x5F, 0x73, 0x44, 0x03, 0xE9, 0xA9, 0xF5, 0xD9, + 0x99, 0xEA, 0x61, 0xDC, 0x6A, 0x98, 0xBE, 0xDE, + 0xB9, 0x34, 0xCC, 0x76, 0xB0, 0xE1, 0x8C, 0x70, + 0x3A, 0xA5, 0x7C, 0xD1, 0xC0, 0x2A, 0x8E, 0x7D, + 0x47, 0x8A, 0x63, 0xEA, 0x30, 0x6B, 0xEE, 0x36, + 0x0B, 0xA8, 0xAE, 0x46, 0xCD, 0x01, 0x83, 0xF6, + 0x07, 0xF9, 0xED, 0x8B, 0x69, 0x97, 0xB6, 0xC3, + 0x5D, 0x75, 0x6E, 0xD8, 0xDF, 0x01, 0x82, 0x48, + 0x31, 0x2F, 0xDE, 0xED, 0x8E, 0xC5, 0xD8, 0xA6, + 0xC0, 0x36, 0x0E, 0x66, 0xA4, 0xE9, 0xE5, 0xA9, + 0x7D, 0x5C, 0xD2, 0x43, 0x72, 0xC0, 0xAD, 0x26, + 0x78, 0xF2, 0xB0, 0x08, 0x12, 0xAE, 0x6C, 0x1A, + 0x0F, 0x53, 0x30, 0xB3, 0xAB, 0x01, 0x53, 0xDA, + 0x3C, 0x5F, 0x4C, 0x17, 0xBD, 0x2F, 0xB6, 0x0E, + 0x7E, 0x80, 0x87, 0x4C, 0x1B, 0x92, 0x9B, 0x62, + 0xE3, 0x89, 0xEE, 0xE2, 0xA0, 0x14, 0x06, 0x0D, + 0x4D, 0xCC, 0x96, 0x5A, 0xF8, 0x64, 0x2A, 0x05, + 0xA9, 0xEE, 0xD5, 0x0D, 0x23, 0x90, 0xB0, 0x67, + 0xD5, 0x51, 0x1D, 0x18, 0xBC, 0xBA, 0xE6, 0xA5, + 0xAD, 0x29, 0x18, 0xD5, 0x06, 0xFC, 0xC9, 0x12, + 0x6D, 0x70, 0xA8, 0x6E, 0x96, 0x8B, 0x5F, 0x9C, + 0x99, 0x43, 0x07, 0x02, 0x37, 0x48, 0x8C, 0xFB, + 0x5F, 0xF5, 0xDE, 0x69, 0x26, 0x73, 0x7D, 0xF6, + 0x3A, 0x2C, 0xE5, 0x58, 0x01, 0xC3, 0x48, 0xB0, + 0xF0, 0x0D, 0x56, 0xAF, 0x8C, 0x0F, 0x5C, 0xB3, + 0xBA, 0x44, 0x8C, 0x39, 0xB0, 0x20, 0xD2, 0x93, + 0x81, 0x19, 0x99, 0x4E, 0xAC, 0xB9, 0x1F, 0xC3, + 0x1F, 0x34, 0x7D, 0xF3, 0x3E, 0x1A, 0xE1, 0x26, + 0x7C, 0xB7, 0x22, 0x0A, 0xDC, 0x0D, 0x14, 0xF8, + 0x43, 0x8A, 0x23, 0x46, 0x37, 0x9C, 0x2A, 0xB8, + 0x1F, 0x24, 0x72, 0xE2, 0xEA, 0xC4, 0x67, 0x13, + 0x17, 0x33, 0xBD, 0xA0, 0x07, 0xA0, 0x3E, 0xDE, + 0x8B, 0xC4, 0xD6, 0xDB, 0xD9, 0xF1, 0xB8, 0xF4, + 0xFB, 0x83, 0x13, 0x14, 0xCD, 0x36, 0xF6, 0xDC, + 0xD5, 0x85, 0x93, 0x7C, 0xF9, 0x6C, 0xEA, 0x52, + 0x92, 0xFB, 0xFC, 0x95, 0x02, 0x10, 0x7B, 0x57, + 0x9F, 0xF0, 0x7C, 0x2E, 0x79, 0x00, 0x3D, 0xB2, + 0xA1, 0x6C, 0x4E, 0xD4, 0x17, 0xFA, 0x0F, 0x13, + 0xC8, 0xBF, 0xB1, 0x82, 0xF7, 0xDD, 0xCF, 0x08, + 0xF2, 0x50, 0xDB, 0x16, 0xA4, 0x5A, 0x60, 0x4A, + 0x57, 0x2B, 0x0E, 0xDC, 0x4A, 0xBF, 0x9C, 0x86, + 0x08, 0x8A, 0x5A, 0xC8, 0x74, 0xDD, 0xA2, 0x6E, + 0x12, 0xA0, 0xEF, 0x63, 0x5A, 0xD2, 0x82, 0xAD, + 0xCD, 0xC7, 0xED, 0x16, 0x86, 0x45, 0x3D, 0xFB, + 0x35, 0xC3, 0xB1, 0xBA, 0x68, 0x21, 0xB4, 0xB7, + 0x22, 0x0B, 0x55, 0x79, 0x8B, 0x9C, 0xCF, 0xE0, + 0x66, 0x61, 0x5C, 0xE2, 0x55, 0x96, 0x0D, 0x09, + 0xE6, 0x77, 0xFE, 0xFE, 0x76, 0xBE, 0x91, 0x5E, + 0x04, 0xE5, 0x65, 0x44, 0xBD, 0x09, 0xD0, 0x6F, + 0x83, 0x44, 0xF9, 0x68, 0xDC, 0x68, 0x25, 0xCB, + 0xC6, 0x64, 0xD5, 0x18, 0xA4, 0x41, 0xE1, 0x9B, + 0x07, 0x6F, 0xC3, 0x38, 0x91, 0x37, 0xFC, 0x1B, + 0x73, 0x32, 0xE2, 0xB0, 0x68, 0x95, 0x44, 0x3B, + 0x7A, 0x00, 0x23, 0x36, 0x31, 0x15, 0x79, 0xA9, + 0xB0, 0x8F, 0x36, 0x73, 0xDA, 0x05, 0x90, 0xE6, + 0x96, 0xCE, 0xD9, 0x01, 0x44, 0x4A, 0x70, 0xA6, + 0x7B, 0x2A, 0x7D, 0x55, 0x12, 0xD6, 0x5B, 0xFC, + 0xD7, 0xAF, 0x1E, 0x34, 0x27, 0x77, 0x69, 0xE1, + 0x71, 0x08, 0x83, 0x01, 0xDE, 0x78, 0x46, 0xF0, + 0x88, 0xF4, 0x87, 0xC4, 0x92, 0x1B, 0xEB, 0x98, + 0x35, 0x4B, 0xAE, 0x9A, 0xF6, 0xEA, 0xB2, 0x34, + 0x91, 0x14, 0xEB, 0x21, 0xF6, 0x18, 0xDB, 0x1D, + 0x92, 0x6C, 0x1D, 0x2F, 0xE3, 0xA5, 0xF2, 0x29, + 0xC5, 0x73, 0x40, 0xC4, 0x0A, 0xEC, 0x11, 0xC2, + 0xD0, 0x14, 0x4D, 0x03, 0x94, 0xFC, 0x4D, 0x8E, + 0x38, 0x66, 0xA7, 0xD0, 0xA1, 0x0B, 0x64, 0xC8, + 0xB9, 0x92, 0xB0, 0xA4, 0xDD, 0xBC, 0xAD, 0x82, + 0x4E, 0x43, 0x97, 0x43, 0x78, 0xEA, 0x9A, 0x38, + 0xE5, 0x8C, 0x2C, 0x5A, 0xE1, 0x94, 0xAF, 0x43, + 0x10, 0xFB, 0xEC, 0x90, 0x28, 0x41, 0x6C, 0x5C, + 0xB7, 0xB8, 0xAF, 0xA5, 0x24, 0xF7, 0x4F, 0xFD, + 0x6F, 0x2E, 0x98, 0x44, 0x3F, 0x5E, 0x89, 0x24, + 0xF6, 0xCF, 0x11, 0x0E, 0x67, 0x1B, 0x81, 0x68, + 0x37, 0xD5, 0x9B, 0x2D, 0xB9, 0x1C, 0xB1, 0xE6, + 0x87, 0xD6, 0xA2, 0x02, 0x0F, 0x91, 0x08, 0xF6, + 0x9B, 0x94, 0x76, 0x62, 0xFD, 0xE7, 0x18, 0xAC, + 0x28, 0xA6, 0xAC, 0xDA, 0x27, 0xF4, 0x33, 0x59, + 0xBB, 0xBE, 0x36, 0x2C, 0xEE, 0xEA, 0x91, 0xE6, + 0x91, 0x95, 0x2C, 0x58, 0x0A, 0xB2, 0xCA, 0xA3, + 0xAA, 0x39, 0x03, 0x9A, 0x75, 0x3C, 0x27, 0x6E, + 0x02, 0x89, 0x17, 0x4B, 0x02, 0x42, 0x7C, 0xB4, + 0x2E, 0xAD, 0xB4, 0xD9, 0x35, 0xB2, 0x30, 0x9E, + 0x2F, 0xEC, 0x9F, 0x25, 0x56, 0x1A, 0x35, 0x40, + 0xF1, 0xAF, 0x1D, 0xA4, 0xA8, 0x62, 0x07, 0x70, + 0x98, 0x6C, 0xDE, 0x1E, 0x89, 0xC1, 0xD3, 0x30, + 0xBB, 0x82, 0x72, 0x40, 0xF2, 0xBC, 0x53, 0xC7, + 0xDE, 0xAB, 0xFC, 0x7D, 0xAD, 0xBF, 0xDA, 0xE0, + 0xA7, 0xA1, 0x0C, 0xD6, 0x73, 0x37, 0x36, 0xA1, + 0xEE, 0xA6, 0x96, 0x88, 0x79, 0x0E, 0x4A, 0x2C, + 0x69, 0x4C, 0xE5, 0x30, 0xFB, 0xDD, 0xE1, 0xFE, + 0x86, 0x90, 0xDC, 0xDF, 0x03, 0xF5, 0x17, 0x2F, + 0xF4, 0x58, 0x2D, 0xD3, 0xED, 0x3D, 0x7D, 0xA0, + 0xB3, 0x6E, 0x1E, 0xD3, 0xBB, 0xD9, 0x57, 0xBA, + 0x8B, 0x00, 0x72, 0xC4, 0xEE, 0xCF, 0x39, 0xD5, + 0x74, 0xFA, 0x13, 0xF0, 0xD7, 0xE9, 0x10, 0x0C, + 0x7A, 0x52, 0x62, 0xD0, 0xC9, 0xD5, 0x2D, 0xDC, + 0x11, 0xD4, 0xFF, 0x34, 0xB2, 0x55, 0xF9, 0x99, + 0x81, 0xB4, 0xC9, 0x14, 0x02, 0x91, 0x81, 0x56, + 0x29, 0xF6, 0xA9, 0x1A, 0x19, 0x8E, 0x74, 0xB3, + 0xA3, 0xD1, 0x28, 0xB5, 0x72, 0xD8, 0x6F, 0x54, + 0x15, 0x74, 0x55, 0x70, 0x26, 0x62, 0xCB, 0x1D, + 0x15, 0x2C, 0x7F, 0x4C, 0x9C, 0xB4, 0xDE, 0xA2, + 0x07, 0xD5, 0xA9, 0x38, 0x29, 0x42, 0x51, 0x67, + 0x44, 0x26, 0x97, 0x7E, 0x73, 0x0E, 0xC6, 0x01, + 0x00, 0x65, 0xC8, 0xE0, 0x34, 0x88, 0x2B, 0xD3, + 0x2F, 0xD3, 0x5C, 0x6A, 0xF6, 0xB8, 0xD9, 0x3A, + 0x50, 0x9C, 0xC3, 0x39, 0xD9, 0x6F, 0xB9, 0xDD, + 0x55, 0x8A, 0xF9, 0x52, 0x35, 0xFB, 0xF1, 0x71, + 0x97, 0x76, 0x04, 0x75, 0xEE, 0x2E, 0x3F, 0xCA, + 0x0E, 0x83, 0xA8, 0xE3, 0x1F, 0xA7, 0xF1, 0x3D, + 0x78, 0xCC, 0x79, 0x64, 0x80, 0x5E, 0x77, 0x05, + 0xDB, 0xB7, 0x0F, 0x73, 0x53, 0x3A, 0x56, 0xD8, + 0xB7, 0x7C, 0x12, 0xE8, 0xF6, 0x51, 0x07, 0xC9, + 0x01, 0x43, 0x97, 0x51, 0x75, 0x95, 0x94, 0x65, + 0xFD, 0x4D, 0x8C, 0x8C, 0xD3, 0xA8, 0xEE, 0xA9, + 0x5E, 0xFB, 0xC7, 0xF6, 0xF8, 0x40, 0x0E, 0xA5, + 0xD5, 0x1E, 0x79, 0xB4, 0x0C, 0xEF, 0x8B, 0x04, + 0x59, 0x4D, 0x0C, 0x6F, 0x08, 0xD5, 0x00, 0xA2, + 0xAD, 0x08, 0xB4, 0x62, 0xE0, 0x2C, 0xF6, 0x30, + 0x31, 0x1E, 0xD7, 0x81, 0x56, 0x61, 0x17, 0x0D, + 0xB3, 0x9F, 0x27, 0x75, 0x38, 0x42, 0x6E, 0xB2, + 0xB0, 0x6C, 0xB8, 0xC9, 0xD8, 0x20, 0xC8, 0x36, + 0x7D, 0x1D, 0x57, 0x10, 0x4E, 0xC1, 0x45, 0xFC, + 0x93, 0xB1, 0xF7, 0x7B, 0xA1, 0x3B, 0x71, 0x12, + 0x16, 0xE5, 0x8F, 0xD0, 0x0C, 0x7D, 0xC0, 0x05, + 0x18, 0x02, 0x24, 0x25, 0x28, 0x8A, 0xE1, 0x29, + 0x9A, 0x79, 0xBD, 0xC7, 0x73, 0x2D, 0xF3, 0x42, + 0x70, 0x33, 0xF3, 0xF8, 0x48, 0x87, 0xB4, 0xD4, + 0x91, 0xE1, 0x53, 0xBA, 0x4A, 0x63, 0xAF, 0x3A, + 0xE5, 0xCB, 0x3D, 0x41, 0x04, 0xB5, 0x30, 0x87, + 0xAA, 0x40, 0x03, 0x56, 0x10, 0x02, 0xF3, 0x6A, + 0x9F, 0xDA, 0x33, 0xBC, 0xB8, 0xA5, 0xD0, 0x56, + 0x43, 0x29, 0xDA, 0x58, 0x12, 0x8B, 0x6A, 0x9D, + 0xCF, 0xCD, 0xCA, 0x66, 0x98, 0x92, 0x1D, 0xA4, + 0xEF, 0xAC, 0x9E, 0x19, 0xDE, 0xF7, 0xFE, 0x6C, + 0x3A, 0x66, 0x46, 0xB4, 0x00, 0x7F, 0x08, 0xAF, + 0x31, 0xD6, 0xD3, 0x22, 0x59, 0x1F, 0x34, 0x48, + 0x5A, 0xE1, 0x4E, 0x0F, 0x6F, 0x2D, 0xD0, 0xE5, + 0x8E, 0x34, 0x3B, 0xC0, 0x55, 0x02, 0x2D, 0x17, + 0x4B, 0x34, 0x78, 0x46, 0xD4, 0xC4, 0x7F, 0x1D, + 0xDC, 0x39, 0x94, 0x69, 0x78, 0xAB, 0xD8, 0x2B, + 0x6D, 0xF3, 0x1C, 0x0B, 0x0F, 0x4A, 0xA0, 0xB2, + 0xAC, 0x1A, 0x79, 0x7F, 0x9D, 0xE5, 0xE8, 0xC6, + 0x40, 0x4B, 0xCE, 0x32, 0x4B, 0xA1, 0x3C, 0x77, + 0xED, 0x5D, 0x59, 0x0F, 0xE0, 0x7D, 0x00, 0x07, + 0xB4, 0xD8, 0xA6, 0x3E, 0xC9, 0x6D, 0x62, 0x19, + 0x66, 0xC3, 0xE7, 0x10, 0x3B, 0x6C, 0x7A, 0x36, + 0x49, 0x75, 0xE6, 0x78, 0xB3, 0x8D, 0x04, 0x13, + 0x31, 0xE6, 0x79, 0x72, 0x64, 0x07, 0x76, 0x94, + 0x2B, 0xB4, 0xEC, 0x18, 0x1C, 0x32, 0x3C, 0x26, + 0xC4, 0x81, 0xBF, 0x4F, 0xB5, 0x6E, 0x5D, 0x67, + 0xCF, 0xBE, 0x17, 0x57, 0x11, 0x2B, 0xBC, 0xA0, + 0xF0, 0xC2, 0x70, 0x06, 0x94, 0x26, 0x9B, 0x26, + 0x12, 0x9C, 0x7F, 0x99, 0xD4, 0x4A, 0xF5, 0x60, + 0xCD, 0xF7, 0xA4, 0x70, 0x2E, 0xF5, 0xD6, 0xA2, + 0xEC, 0x0E, 0x99, 0x00, 0x2E, 0x89, 0x30, 0xAA, + 0x4E, 0xC0, 0x62, 0x11, 0x93, 0x0A, 0x1E, 0x68, + 0xF2, 0xED, 0x44, 0x8B, 0x10, 0x4A, 0x75, 0x68, + 0xBF, 0x46, 0xE1, 0x41, 0xD6, 0x0B, 0x61, 0x53, + 0xD4, 0x03, 0x10, 0xB3, 0x8F, 0x8E, 0x14, 0x57, + 0x27, 0x8F, 0xE3, 0x49, 0xB2, 0xB4, 0xA7, 0xAE, + 0x39, 0x7A, 0x7B, 0x8F, 0x48, 0xAA, 0xA5, 0xFD, + 0xC1, 0x28, 0x8E, 0x43, 0xE0, 0x58, 0x39, 0x32, + 0x0A, 0x14, 0xC6, 0x3A, 0xB8, 0x58, 0xE2, 0x6E, + 0x7D, 0x8C, 0x35, 0xB6, 0x47, 0x37, 0x90, 0x4D, + 0x89, 0xC1, 0x9A, 0x10, 0x3D, 0x6B, 0x68, 0x9A, + 0x3D, 0xC9, 0x0C, 0x72, 0xFC, 0x92, 0xE3, 0x5D, + 0x45, 0x2B, 0x81, 0x43, 0x02, 0x30, 0x70, 0xD4, + 0x8B, 0xB9, 0xFB, 0xB0, 0x45, 0xE3, 0xC6, 0xCE, + 0x9A, 0x8B, 0xD5, 0xC4, 0xB6, 0x7F, 0x5D, 0x8B, + 0x58, 0xC9, 0x6A, 0x28, 0x2D, 0x6E, 0x27, 0x78, + 0x3D, 0x7B, 0x99, 0x0E, 0x05, 0x2B, 0xD9, 0x5E, + 0x86, 0x50, 0x8F, 0x9B, 0xF7, 0xC0, 0x64, 0xA8, + 0xF2, 0x39, 0xE0, 0x24, 0x0A, 0x20, 0xD8, 0xDF, + 0x3A, 0x87, 0x6E, 0xDC, 0x8F, 0xF6, 0x24, 0x1B, + 0x54, 0xF2, 0x70, 0xA9, 0x8C, 0xB8, 0x07, 0x7A, + 0xAF, 0xE0, 0xE5, 0x8E, 0x5E, 0x98, 0x13, 0xC6, + 0xA5, 0xF9, 0x1F, 0x52, 0x89, 0x7B, 0x6A, 0xAD, + 0x24, 0x26, 0xC6, 0x0D, 0xA5, 0x88, 0x3E, 0x6B, + 0xDF, 0xEE, 0x33, 0x0A, 0x86, 0x09, 0xA2, 0x11, + 0x8B, 0x69, 0x9F, 0x75, 0xCE, 0xFD, 0x05, 0x01, + 0x95, 0x14, 0x64, 0xCD, 0x62, 0x04, 0x09, 0x87, + 0xFC, 0xF6, 0xB2, 0x2E, 0xCA, 0x92, 0xE4, 0x4F, + 0x55, 0xB3, 0x8C, 0x64, 0x99, 0xA8, 0xDA, 0x0A, + 0xC7, 0x82, 0x56, 0x93, 0x03, 0x67, 0xA4, 0xD7, + 0x54, 0x91, 0xA0, 0x89, 0xD8, 0x94, 0x1F, 0x6C, + 0x53, 0xCC, 0xB2, 0x60, 0x13, 0x6A, 0x93, 0xE1, + 0xFC, 0xA3, 0xDD, 0x72, 0xD5, 0x5A, 0x92, 0x35, + 0x9E, 0x3D, 0x62, 0x82, 0x70, 0x5D, 0x54, 0xAF, + 0x57, 0xC6, 0x98, 0x5E, 0x74, 0xE0, 0xF2, 0x33, + 0x26, 0x61, 0xBF, 0x2B, 0xDD, 0x78, 0x47, 0x29, + 0x04, 0xC7, 0xF0, 0x58, 0x17, 0xFC, 0x9D, 0xED, + 0xEF, 0x15, 0x6A, 0xCA, 0xC7, 0x46, 0xCE, 0x12, + 0xF8, 0x90, 0xD8, 0x5A, 0x93, 0x98, 0xA9, 0xED, + 0xFB, 0xF4, 0x6E, 0x73, 0x48, 0x81, 0x4A, 0x08, + 0x07, 0x29, 0xC8, 0x3E, 0x70, 0x4C, 0x40, 0x30, + 0x20, 0x2C, 0xF6, 0x1E, 0xCD, 0xEE, 0x27, 0x95, + 0xD5, 0x07, 0xAC, 0x28, 0x81, 0x4F, 0x53, 0xCD, + 0x06, 0x60, 0xA5, 0x57, 0x2C, 0xBE, 0x1A, 0xE5, + 0x33, 0x38, 0xB8, 0xEF, 0xDC, 0xA3, 0x1A, 0xA5, + 0xB9, 0x5A, 0xA9, 0xE7, 0x65, 0xAF, 0x4D, 0xA0, + 0x4C, 0x9B, 0x31, 0x62, 0x67, 0x7E, 0x41, 0xC0, + 0x18, 0xA5, 0xE1, 0x8A, 0xF2, 0xF9, 0x8A, 0xCA, + 0x14, 0x5C, 0xCD, 0x1B, 0x8F, 0x74, 0x31, 0x07, + 0x6A, 0x14, 0xA7, 0xC2, 0x0F, 0x6C, 0x72, 0xE8, + 0xEB, 0x97, 0x51, 0xB7, 0x89, 0x2E, 0x41, 0x01, + 0x54, 0x47, 0x63, 0x0E, 0xAA, 0x84, 0xB9, 0x60, + 0x1C, 0xB9, 0x54, 0xD8, 0x97, 0x39, 0x38, 0x9D, + 0x52, 0xBB, 0x91, 0xA9, 0x7F, 0x96, 0x08, 0x7C, + 0xB3, 0x8B, 0x0E, 0xAB, 0x59, 0xA7, 0x84, 0x68, + 0x34, 0x65, 0x55, 0xC7, 0x12, 0x84, 0xC2, 0xFB, + 0xBD, 0x27, 0x58, 0x18, 0xE9, 0x26, 0x73, 0xFA, + 0x42, 0xAB, 0x5E, 0x0D, 0x97, 0x76, 0x67, 0xA9, + 0x0F, 0x75, 0x92, 0x6C, 0x80, 0x76, 0x87, 0x75, + 0xD2, 0x3D, 0xFE, 0x0B, 0x33, 0x7B, 0x48, 0xB0, + 0xC8, 0x28, 0x1F, 0xE6, 0x3F, 0x18, 0xF2, 0x45, + 0xF8, 0x8F, 0x21, 0xE1, 0x1C, 0x56, 0xA5, 0x33, + 0x71, 0x88, 0x42, 0x5A, 0x34, 0x8B, 0x24, 0xDD, + 0x0E, 0x98, 0x30, 0xDB, 0x6B, 0x6C, 0x89, 0x64, + 0x8C, 0x7A, 0x63, 0x3C, 0xA9, 0xD8, 0x32, 0x51, + 0xD0, 0xC6, 0xF7, 0xA4, 0x53, 0x95, 0x0D, 0x02, + 0x19, 0x6A, 0x77, 0xBC, 0xDF, 0xD5, 0x2B, 0x2C, + 0x65, 0xC9, 0xBF, 0x72, 0x69, 0xC3, 0x0C, 0xEF, + 0x34, 0x75, 0x76, 0x29, 0x59, 0xBE, 0x9D, 0xE9, + 0x44, 0x21, 0x2F, 0x5F, 0xB7, 0x89, 0xA6, 0xCD, + 0x0A, 0x9A, 0x9E, 0x77, 0x5B, 0xBD, 0xDA, 0x03, + 0xA4, 0xBC, 0xFB, 0x47, 0xC1, 0x77, 0x73, 0x00, + 0x26, 0xAE, 0x2E, 0xFA, 0x62, 0x18, 0x9D, 0xB8, + 0xE2, 0xD3, 0x7A, 0xB9, 0xD8, 0xCF, 0xE9, 0x61, + 0x11, 0x80, 0xE9, 0xDC, 0xC3, 0x32, 0x9E, 0x63, + 0x6F, 0xD9, 0x42, 0xF6, 0x76, 0x7F, 0xBC, 0xBF, + 0xDB, 0x08, 0x2F, 0xA0, 0xEB, 0xB8, 0x4D, 0xF3, + 0x76, 0x62, 0xAA, 0xFA, 0x20, 0x4A, 0xDD, 0xE6, + 0xB3, 0x72, 0xC7, 0x7D, 0x36, 0x4F, 0x08, 0x56, + 0x4F, 0x19, 0xB2, 0xB0, 0x0C, 0x13, 0x1A, 0x8C, + 0xCE, 0x9A, 0x04, 0xB5, 0xB6, 0x9C, 0xD3, 0xD8, + 0xFE, 0x1F, 0x2C, 0xCC, 0x89, 0xEE, 0x7D, 0x22, + 0x8A, 0x4E, 0x0A, 0x91, 0x0C, 0x8B, 0x5A, 0xE0, + 0xBD, 0xE5, 0x3D, 0xBE, 0x90, 0x4B, 0x13, 0xA3, + 0x2F, 0x33, 0xE9, 0x9D, 0x6C, 0x67, 0x35, 0xBD, + 0x03, 0xD4, 0x09, 0x90, 0x2F, 0xC6, 0x3C, 0x8D, + 0xD8, 0x43, 0xFC, 0x1F, 0xB7, 0x49, 0xC0, 0xB7, + 0x38, 0x70, 0x1D, 0xEB, 0x5A, 0xD7, 0xAC, 0x07, + 0xAF, 0x5B, 0x93, 0xC5, 0x7B, 0x55, 0x65, 0x86, + 0x6E, 0xC1, 0xDB, 0xCD, 0x42, 0x92, 0x50, 0xDB, + 0xD1, 0x97, 0x95, 0x3D, 0x53, 0xC3, 0xFE, 0xC2, + 0xF9, 0x65, 0xF3, 0xD2, 0xEE, 0xA4, 0x7E, 0xDE, + 0xA1, 0x4B, 0x23, 0x7F, 0xA1, 0x0D, 0x25, 0x6E, + 0x80, 0x4F, 0xE3, 0xB5, 0x0C, 0xBA, 0x1C, 0x2B, + 0x42, 0x0B, 0x8F, 0xD9, 0xB6, 0x4E, 0x52, 0xD2, + 0xDB, 0x35, 0xD2, 0xA1, 0xC4, 0xE6, 0xD6, 0x51, + 0x76, 0xE7, 0x87, 0x5E, 0xBE, 0x93, 0xE6, 0x61, + 0x71, 0x4C, 0x8B, 0xA6, 0x96, 0xDA, 0xF7, 0xCB, + 0x06, 0xB7, 0xB8, 0xC4, 0xF6, 0xF5, 0xC6, 0x29, + 0xAA, 0xE1, 0x13, 0x87, 0x6F, 0x96, 0xBA, 0x0C, + 0xF6, 0x79, 0x8F, 0x03, 0x86, 0x22, 0xE3, 0xFB, + 0xCF, 0x86, 0xCF, 0x7C, 0x77, 0xFD, 0xB4, 0xEE, + 0xBD, 0x42, 0x38, 0x7F, 0xF2, 0xCC, 0xCB, 0x06, + 0xEA, 0x0D, 0x81, 0xA1, 0x8E, 0xB5, 0xE7, 0x40, + 0xC8, 0x03, 0xA3, 0x4B, 0xC8, 0xB4, 0x0E, 0x3E, + 0x36, 0xAB, 0x90, 0xC1, 0xFC, 0xB0, 0x37, 0x2B, + 0x83, 0xA1, 0x3D, 0x56, 0xD6, 0x83, 0x0F, 0x99, + 0xC4, 0x58, 0xB8, 0x94, 0x61, 0x19, 0xA6, 0x60, + 0x47, 0xCB, 0x2D, 0xAF, 0x29, 0x38, 0x90, 0xFA, + 0x99, 0x0F, 0x02, 0x02, 0x65, 0x90, 0x5F, 0xA2, + 0xA2, 0xE3, 0xBB, 0x34, 0x15, 0x2F, 0x0B, 0xF5, + 0xB2, 0xCC, 0x83, 0x59, 0xAF, 0xA7, 0x4D, 0x38, + 0xAD, 0xF6, 0x52, 0x5C, 0x53, 0xD9, 0x0E, 0x3F, + 0xD6, 0x53, 0x86, 0xE2, 0x79, 0xC2, 0x65, 0x48, + 0xB2, 0x67, 0x3B, 0xAF, 0x52, 0x53, 0x57, 0x9A, + 0x27, 0x80, 0x88, 0x37, 0x77, 0x67, 0x4E, 0x1F, + 0xF1, 0x7B, 0xC5, 0xCB, 0xD8, 0x11, 0x0A, 0xDD, + 0x92, 0x0E, 0x88, 0x6C, 0xCA, 0x33, 0x76, 0x3B, + 0x04, 0xFA, 0xC0, 0xFD, 0xC6, 0x3F, 0xB4, 0x72, + 0xC2, 0x2B, 0x6D, 0x5E, 0xB6, 0xA1, 0x4E, 0x5F, + 0xC0, 0x50, 0x16, 0xEF, 0xFE, 0x6A, 0x42, 0x72, + 0x65, 0x02, 0xEE, 0x07, 0xC6, 0x19, 0xC6, 0x95, + 0xDE, 0x3F, 0xD9, 0xC5, 0xC6, 0x0E, 0x70, 0x07, + 0x6A, 0xC3, 0x36, 0x1B, 0x84, 0x6F, 0xDF, 0x80, + 0x16, 0x4E, 0x86, 0x90, 0xC8, 0x55, 0x7B, 0xDD, + 0xC0, 0x86, 0x0C, 0x37, 0x47, 0x1F, 0x35, 0xF8, + 0x47, 0xF2, 0xCD, 0x96, 0x21, 0x64, 0xAD, 0x46, + 0xE1, 0xDF, 0x44, 0x79, 0x48, 0x02, 0xF9, 0x71, + 0x39, 0x35, 0x26, 0xFC, 0x12, 0x0D, 0x88, 0xAC, + 0xD6, 0xFA, 0x29, 0x74, 0x55, 0x51, 0xE7, 0xAF, + 0x3D, 0x7E, 0x1E, 0x7E, 0xE0, 0x18, 0xB6, 0x3C, + 0x4B, 0x99, 0x9D, 0x51, 0x02, 0x51, 0xD8, 0xE9, + 0xFA, 0x61, 0x88, 0x2E, 0xCF, 0x73, 0x77, 0x65, + 0x71, 0xAE, 0xAE, 0xD7, 0xA1, 0xF9, 0xE0, 0x7F, + 0x30, 0x46, 0xCB, 0x20, 0xEC, 0xF4, 0xD2, 0xC1, + 0x63, 0xF5, 0x6F, 0x8A, 0x72, 0xF9, 0x5B, 0x85, + 0xD2, 0xCA, 0x6D, 0x35, 0xD1, 0x17, 0xF6, 0x08, + 0x9E, 0x0A, 0x73, 0xB3, 0xDA, 0x1A, 0x32, 0xBA, + 0x23, 0x10, 0x4A, 0x5D, 0xD7, 0xAA, 0xB4, 0x68, + 0x97, 0x59, 0x45, 0xC5, 0x7C, 0x16, 0x6F, 0xE4, + 0x62, 0x89, 0xF1, 0xD3, 0xB4, 0x03, 0x90, 0x7B, + 0xA4, 0xA2, 0xCA, 0xA0, 0x5D, 0x69, 0x1B, 0xA9, + 0xBB, 0xEB, 0xA0, 0xE2, 0xDE, 0xBE, 0x0E, 0xC4, + 0x9E, 0x21, 0x38, 0x61, 0x92, 0x9B, 0xAB, 0x69, + 0xAA, 0xD0, 0x1D, 0xF6, 0xC3, 0xEE, 0xA6, 0xC3, + 0xF3, 0x29, 0x1B, 0xE5, 0x6E, 0x52, 0x89, 0xD0, + 0xBA, 0xD8, 0x60, 0x27, 0x80, 0x1A, 0xB5, 0x7F, + 0x7F, 0xB5, 0xC2, 0x5A, 0xC6, 0x83, 0xA4, 0xC0, + 0x88, 0x39, 0xF3, 0xE7, 0x39, 0xD6, 0x81, 0x1C, + 0x13, 0x20, 0xFD, 0x93, 0x3D, 0x8E, 0x79, 0x60, + 0x7C, 0xFF, 0xE4, 0x37, 0x5B, 0x33, 0xA3, 0x9D, + 0xB7, 0x57, 0xCD, 0x45, 0x0A, 0xB9, 0xE4, 0xF1, + 0xBC, 0x59, 0x74, 0xE8, 0xB3, 0x06, 0xD0, 0x9F, + 0x0F, 0xBC, 0x5B, 0x23, 0xB8, 0x6C, 0xD6, 0x4D, + 0xFA, 0xCC, 0x14, 0xAB, 0x74, 0x61, 0x1A, 0xFC, + 0x22, 0xA6, 0xED, 0x09, 0x76, 0x91, 0xD8, 0x6E, + 0x44, 0xB6, 0x00, 0x14, 0xDC, 0x74, 0x2D, 0x90, + 0xAA, 0x59, 0x98, 0x76, 0x30, 0xC5, 0x44, 0xA4, + 0x61, 0x43, 0xD6, 0xE2, 0x28, 0x28, 0xA7, 0xBD, + 0x6E, 0x50, 0x5C, 0xE1, 0x96, 0x7A, 0xF8, 0xA8, + 0x32, 0x8C, 0xE9, 0xFD, 0x11, 0x37, 0x91, 0xD1, + 0xAF, 0x3C, 0xD3, 0x1C, 0x1E, 0x88, 0x4D, 0x7E, + 0x87, 0x84, 0x84, 0x6F, 0x39, 0x0B, 0xFB, 0x2D, + 0xB3, 0x12, 0x4C, 0x6D, 0x45, 0xDD, 0xCD, 0x7D, + 0x75, 0xB7, 0xFE, 0x7E, 0x44, 0xCC, 0x29, 0xE5, + 0xB3, 0x10, 0xEE, 0x23, 0x55, 0x5B, 0xCF, 0xBA, + 0xBD, 0xA1, 0xBE, 0x64, 0xF8, 0x6E, 0x60, 0x31, + 0x0A, 0x2D, 0xC9, 0x3B, 0x1D, 0x44, 0xE1, 0x9D, + 0x60, 0x28, 0x77, 0xEE + }; + static const byte rnd_65[] = { + 0x4E, 0x7A, 0x01, 0x7C, 0x15, 0x03, 0x9D, 0xC2, + 0x00, 0x51, 0xD2, 0x96, 0x0E, 0x5E, 0x15, 0x59, + 0xCC, 0x27, 0xED, 0x46, 0x87, 0x7C, 0xB9, 0x81, + 0x16, 0x19, 0x9A, 0x0F, 0x41, 0x05, 0xFE, 0x32 + }; + static const byte sig_65[] = { + 0xB8, 0x65, 0xB0, 0x0B, 0x21, 0x18, 0xDB, 0xB0, + 0x0B, 0x70, 0x1C, 0x66, 0x45, 0x65, 0x5E, 0x8A, + 0xCF, 0xA8, 0x4E, 0xA7, 0x92, 0xB4, 0x48, 0x64, + 0x2E, 0x18, 0x32, 0xC3, 0x70, 0x7C, 0x87, 0xCF, + 0x09, 0xFB, 0xE7, 0x72, 0xF1, 0xD4, 0x38, 0x5B, + 0xFB, 0xE5, 0xE6, 0xCF, 0xBB, 0xE2, 0x6C, 0x10, + 0xED, 0x6E, 0xB8, 0x65, 0xC8, 0x87, 0xF8, 0x69, + 0x39, 0x43, 0x9A, 0x9B, 0xF7, 0x68, 0xBF, 0x03, + 0x9D, 0x73, 0xE3, 0xEA, 0x83, 0xBD, 0xF1, 0x85, + 0x03, 0xB5, 0xD1, 0xB3, 0x91, 0x79, 0xA8, 0x27, + 0xB0, 0xD7, 0x80, 0x5F, 0x98, 0x42, 0x8B, 0xD8, + 0x7C, 0xEA, 0x6B, 0x06, 0x96, 0x0C, 0x78, 0xB4, + 0xB5, 0x86, 0xFB, 0x0D, 0x5E, 0xDA, 0x9F, 0xAA, + 0xC0, 0x25, 0x6E, 0x38, 0x82, 0x35, 0x62, 0xA3, + 0x07, 0x96, 0x61, 0x17, 0x00, 0x5A, 0xA4, 0x2F, + 0x1B, 0x65, 0x54, 0xA0, 0x48, 0x75, 0xF8, 0x5C, + 0x2E, 0x3F, 0xAF, 0xA6, 0x52, 0x47, 0x1D, 0x4E, + 0x98, 0x06, 0x54, 0x82, 0xFC, 0x7D, 0xF4, 0x9B, + 0x2C, 0x40, 0xD0, 0xE7, 0xB9, 0x82, 0x38, 0xDF, + 0xBE, 0x85, 0x3D, 0x16, 0xBF, 0x99, 0x92, 0xBB, + 0x08, 0xC1, 0x92, 0x59, 0xF9, 0xB5, 0x75, 0xEA, + 0x7A, 0x4A, 0x80, 0x09, 0x3A, 0x64, 0xA9, 0x26, + 0x71, 0x85, 0x7A, 0x50, 0x89, 0x20, 0xD6, 0x0F, + 0xF6, 0xFB, 0xF3, 0x83, 0x41, 0xC5, 0x59, 0x01, + 0x05, 0x63, 0x3A, 0x42, 0x6D, 0x60, 0x2D, 0xAC, + 0x06, 0x4D, 0xD7, 0xA7, 0xF1, 0x1A, 0x60, 0x21, + 0x5C, 0x35, 0xB7, 0xB9, 0xC0, 0x0E, 0x9D, 0x84, + 0x63, 0x98, 0x8C, 0xF4, 0x72, 0xCD, 0x6A, 0xCF, + 0xB7, 0xF7, 0x22, 0xB8, 0xC4, 0xC6, 0x27, 0x02, + 0x60, 0x7A, 0x67, 0x48, 0x80, 0xAC, 0xB3, 0xD6, + 0xC6, 0x25, 0x3E, 0x71, 0x17, 0x5A, 0x05, 0xB3, + 0x92, 0xCA, 0xB4, 0xBB, 0x14, 0xCE, 0x86, 0xA5, + 0x98, 0xAB, 0xC7, 0x88, 0xD0, 0xFF, 0x4D, 0x82, + 0x77, 0x5E, 0x4E, 0xA0, 0xFC, 0x36, 0x36, 0x3C, + 0xD0, 0xE9, 0x7B, 0x78, 0xA6, 0xAE, 0x4D, 0xA8, + 0xE9, 0x8C, 0xA6, 0x12, 0x77, 0x2D, 0x56, 0xB5, + 0x82, 0xF8, 0x2C, 0x07, 0x09, 0xBE, 0xAE, 0x46, + 0x67, 0x3B, 0xDD, 0x80, 0x42, 0x86, 0x5C, 0xFA, + 0x95, 0xBF, 0x53, 0x38, 0xCF, 0xEA, 0x60, 0x6A, + 0x6E, 0xF3, 0x16, 0x38, 0x46, 0xAE, 0x83, 0xB2, + 0x5E, 0x5F, 0x5B, 0xD3, 0x1C, 0x83, 0xF1, 0x36, + 0x72, 0x9A, 0x8E, 0xA6, 0x27, 0x4F, 0x99, 0x4F, + 0xA9, 0x04, 0x5F, 0xA8, 0xA9, 0x0F, 0xF8, 0x54, + 0xB8, 0x71, 0xCF, 0x82, 0xE2, 0xB7, 0x01, 0xE8, + 0xF4, 0xAC, 0x04, 0xFE, 0x9E, 0x28, 0x49, 0x1B, + 0x9A, 0x25, 0xFF, 0x26, 0x3E, 0x2C, 0xF7, 0x54, + 0x99, 0xE0, 0x09, 0xFD, 0x02, 0x29, 0xFB, 0xF7, + 0xE5, 0xE4, 0x60, 0x44, 0x34, 0x4B, 0x07, 0xD7, + 0x22, 0x14, 0xA9, 0xAC, 0xB4, 0xFF, 0x61, 0x02, + 0xAB, 0xC1, 0x26, 0x2B, 0xC2, 0xE1, 0xCD, 0x24, + 0x91, 0x60, 0x7A, 0xE7, 0xAA, 0xEC, 0xF4, 0xC3, + 0x51, 0x75, 0xCF, 0xA4, 0x38, 0x3A, 0xA8, 0x6A, + 0xF1, 0xE6, 0x2E, 0xD0, 0x63, 0x87, 0xCC, 0x59, + 0x48, 0x36, 0x46, 0x7F, 0x41, 0xDF, 0xCA, 0x8F, + 0xA0, 0xCA, 0x71, 0x28, 0x0B, 0xFB, 0x1C, 0x25, + 0x60, 0xC8, 0x99, 0x55, 0x36, 0xF8, 0x42, 0x74, + 0x70, 0x45, 0x59, 0x14, 0x53, 0x74, 0x5F, 0x26, + 0x03, 0x82, 0xE3, 0xDA, 0x50, 0x79, 0x3F, 0xD7, + 0xCA, 0x76, 0x27, 0x18, 0x5D, 0xBD, 0xCE, 0xDD, + 0xF6, 0x9B, 0x2D, 0x3E, 0x15, 0x1C, 0x7F, 0x97, + 0x28, 0x8A, 0x38, 0x2A, 0x92, 0xB0, 0x50, 0xF7, + 0x91, 0xF9, 0x58, 0x7D, 0x77, 0xC6, 0x4D, 0x8B, + 0x5D, 0x40, 0xAA, 0x19, 0x9D, 0x49, 0x66, 0xBE, + 0x2D, 0x52, 0x4F, 0x96, 0x10, 0xF2, 0xFA, 0x02, + 0xED, 0x23, 0x17, 0x63, 0x69, 0xDB, 0x93, 0x93, + 0x50, 0xDA, 0x60, 0x1E, 0xA6, 0x67, 0x70, 0x95, + 0x2E, 0x0F, 0x23, 0xED, 0xA6, 0x8A, 0x73, 0x75, + 0x6E, 0xFF, 0x61, 0x0E, 0x8D, 0x6A, 0x9F, 0x49, + 0x34, 0x56, 0x58, 0x54, 0x42, 0x82, 0x45, 0x3B, + 0x5E, 0x73, 0xA3, 0x22, 0xA0, 0x32, 0x67, 0xC9, + 0x69, 0xB5, 0x07, 0x34, 0xF2, 0xEC, 0xD4, 0xEC, + 0x90, 0x55, 0x76, 0x0D, 0x92, 0x86, 0x10, 0xE9, + 0x4E, 0x0B, 0x16, 0x28, 0xD6, 0xAF, 0x1B, 0x27, + 0xAB, 0x13, 0x82, 0x9F, 0x7F, 0x8E, 0xF5, 0x0D, + 0x9E, 0x29, 0x96, 0xFC, 0x64, 0xB0, 0x6A, 0xC8, + 0x94, 0x61, 0x14, 0x76, 0x6D, 0xAD, 0x8D, 0xFF, + 0xE6, 0x34, 0xF4, 0x7E, 0x9D, 0x85, 0x69, 0x96, + 0x6C, 0x6F, 0x69, 0x68, 0x21, 0x8C, 0x5B, 0x86, + 0x33, 0x61, 0x1B, 0xF4, 0x2B, 0x4F, 0xC0, 0xE7, + 0x8D, 0x0C, 0x02, 0x9E, 0xAB, 0x85, 0xF2, 0x2F, + 0x16, 0x17, 0x19, 0x80, 0xCC, 0x65, 0xF2, 0x84, + 0x45, 0xA1, 0x1A, 0x08, 0x3A, 0xA0, 0x29, 0x77, + 0xC2, 0xE8, 0x88, 0x6E, 0xD2, 0x70, 0x67, 0x2E, + 0x51, 0x2A, 0xE8, 0x9C, 0x6A, 0x26, 0xFC, 0xAD, + 0x1E, 0xC7, 0x2B, 0x9E, 0xCF, 0xA5, 0xA5, 0xEF, + 0xC7, 0x0F, 0xF0, 0xBA, 0xB2, 0x8F, 0x11, 0x4F, + 0x4D, 0xA8, 0x17, 0x0F, 0xE8, 0xB6, 0x3C, 0x2E, + 0x11, 0xBE, 0x7A, 0x35, 0x46, 0x6E, 0x97, 0x9A, + 0x12, 0x7E, 0xC0, 0xD2, 0x03, 0x23, 0xD5, 0x02, + 0x73, 0x0A, 0xBC, 0xE6, 0x40, 0xA2, 0x44, 0x1C, + 0xDD, 0xAB, 0xA3, 0x26, 0xD6, 0x78, 0x3D, 0x01, + 0x92, 0xDB, 0xA9, 0xE9, 0x3F, 0xE5, 0x07, 0xC6, + 0xA7, 0x37, 0x67, 0xBE, 0x56, 0xE2, 0x77, 0x65, + 0x76, 0xEF, 0xEF, 0xF1, 0xCA, 0x17, 0x9D, 0x83, + 0x34, 0x3E, 0x38, 0xC6, 0xA9, 0xC2, 0xFE, 0x72, + 0x5D, 0xDE, 0x80, 0x7D, 0x21, 0x72, 0x5E, 0x73, + 0x08, 0x72, 0xE2, 0xAB, 0x3D, 0x90, 0x11, 0x61, + 0xF4, 0x55, 0xBC, 0xAD, 0x23, 0xA8, 0x43, 0x3A, + 0x41, 0x31, 0x51, 0xFD, 0x22, 0x17, 0x14, 0x31, + 0x0E, 0x4D, 0x0B, 0x6A, 0x1E, 0x1B, 0x2C, 0xAC, + 0xA4, 0x99, 0xEE, 0xE8, 0x05, 0xA1, 0x64, 0xF2, + 0x91, 0xD5, 0x07, 0x5E, 0x6B, 0x65, 0xA7, 0x9C, + 0x2B, 0xCA, 0xD9, 0x17, 0xB1, 0x22, 0xFE, 0x1A, + 0xC4, 0xFB, 0xB4, 0x10, 0x21, 0x1B, 0xA0, 0xA1, + 0x99, 0x7A, 0x31, 0x30, 0x7C, 0x01, 0xF0, 0xFE, + 0xD3, 0xB3, 0x14, 0x3D, 0x28, 0x34, 0x0F, 0xAC, + 0xF0, 0x93, 0x37, 0xC4, 0xEF, 0x04, 0x74, 0x80, + 0xA2, 0x90, 0xAE, 0x02, 0xB2, 0xF7, 0xD8, 0x7B, + 0x8C, 0x29, 0xA0, 0xAE, 0xAE, 0x2E, 0x92, 0xC9, + 0xC5, 0x44, 0x7D, 0x66, 0xC5, 0x5C, 0x1D, 0x1E, + 0x25, 0x88, 0x5D, 0x10, 0x37, 0xFB, 0x5F, 0xCC, + 0x80, 0x15, 0x4F, 0x1D, 0x23, 0xB4, 0xF2, 0x7B, + 0x5B, 0xAC, 0x89, 0xBE, 0x1C, 0x36, 0x3C, 0xFF, + 0x8E, 0xA7, 0x58, 0x73, 0xAC, 0x3F, 0x63, 0x33, + 0xE8, 0x6C, 0x53, 0xEC, 0xA5, 0x5D, 0xBE, 0xD5, + 0xE1, 0xF1, 0x12, 0x6B, 0x12, 0x78, 0xC7, 0x29, + 0xC9, 0xA8, 0x4C, 0x4A, 0x1B, 0x7F, 0x15, 0x11, + 0x93, 0x01, 0xC8, 0x0B, 0xE2, 0x2F, 0xE9, 0xBE, + 0xBA, 0x17, 0x59, 0x45, 0xB2, 0x61, 0x2B, 0x66, + 0xDD, 0xCE, 0xDF, 0x9A, 0x2A, 0x4D, 0x5F, 0x24, + 0xF9, 0x02, 0xBB, 0xA6, 0x8D, 0xA7, 0x5D, 0x95, + 0x97, 0x2E, 0x28, 0xD6, 0xCB, 0x70, 0x17, 0xCA, + 0x51, 0xED, 0x58, 0x73, 0xAB, 0x03, 0xDD, 0x2E, + 0x92, 0x6C, 0x15, 0x64, 0x2C, 0x9D, 0x6E, 0x64, + 0x27, 0xFC, 0xE8, 0x0F, 0xC3, 0x8B, 0x34, 0xFE, + 0xB3, 0xC1, 0x55, 0x13, 0xA6, 0x87, 0xC3, 0x5B, + 0x94, 0xEB, 0x83, 0xE4, 0xAB, 0x3E, 0x18, 0x76, + 0x67, 0x92, 0x70, 0xF5, 0xA9, 0x8F, 0x18, 0xA6, + 0x5F, 0x57, 0x41, 0x76, 0x55, 0xFD, 0xA9, 0x99, + 0x4E, 0x8F, 0xCC, 0x61, 0x6C, 0x6C, 0x60, 0x06, + 0x10, 0x40, 0x26, 0xD6, 0xCD, 0x7A, 0xA0, 0x56, + 0x3D, 0x51, 0x07, 0x25, 0x76, 0x00, 0x05, 0xF5, + 0xFD, 0x39, 0xE7, 0x59, 0x24, 0x90, 0x29, 0xF0, + 0x3D, 0x9F, 0x00, 0x67, 0x10, 0x3F, 0xA0, 0x45, + 0x21, 0x14, 0xDF, 0x24, 0x40, 0xE8, 0xC6, 0xDB, + 0x65, 0xE2, 0x39, 0x56, 0xEB, 0x1B, 0xEE, 0xB2, + 0xC3, 0x4E, 0x5B, 0x20, 0xAC, 0x31, 0x6A, 0x03, + 0xA9, 0x54, 0x36, 0x66, 0x62, 0x68, 0xC3, 0xD8, + 0x22, 0x8F, 0x62, 0xEB, 0x56, 0x67, 0xB3, 0xB6, + 0xBB, 0x85, 0x7D, 0xD0, 0x73, 0x7B, 0x69, 0x05, + 0x1E, 0x9F, 0x26, 0xEE, 0x02, 0x36, 0x71, 0xCE, + 0xAD, 0xFA, 0xCA, 0xF9, 0x49, 0x7F, 0x1A, 0xDE, + 0x58, 0x7A, 0x69, 0x3E, 0xEF, 0xFB, 0xFC, 0xD5, + 0x50, 0xEC, 0x20, 0x8C, 0x23, 0x56, 0x91, 0xE8, + 0xE3, 0x66, 0xD9, 0x65, 0xB6, 0x2B, 0xEC, 0x16, + 0xA6, 0x61, 0xCD, 0x5D, 0xE2, 0x87, 0x93, 0x22, + 0x0D, 0x66, 0xF2, 0x64, 0x55, 0x05, 0xB8, 0x52, + 0x41, 0x2F, 0xAE, 0x7B, 0x9D, 0x98, 0x29, 0xBF, + 0x61, 0x5F, 0x7C, 0xBD, 0x59, 0xA7, 0xBC, 0x1D, + 0x03, 0x4E, 0x6A, 0x25, 0x52, 0x9C, 0xFB, 0x48, + 0x6A, 0xF2, 0x01, 0xDE, 0xB7, 0xEA, 0x95, 0xBA, + 0x70, 0x8A, 0x31, 0x59, 0x17, 0x16, 0x74, 0x34, + 0x53, 0x09, 0xDB, 0x81, 0x50, 0xE6, 0x7E, 0xBB, + 0x30, 0xA7, 0xFF, 0x80, 0xCA, 0xC9, 0xAB, 0x13, + 0x92, 0x50, 0x0A, 0x83, 0xE6, 0x3B, 0xBF, 0x7C, + 0x42, 0xEB, 0x94, 0x53, 0xC2, 0xC9, 0xAC, 0xDA, + 0x02, 0xBE, 0x53, 0x82, 0x34, 0xAA, 0xA7, 0xDB, + 0x5A, 0x7F, 0x58, 0x8F, 0xC9, 0x1B, 0x90, 0xEE, + 0x24, 0x77, 0xF2, 0xB6, 0x1C, 0xD1, 0x06, 0x2A, + 0x7E, 0xF1, 0xE6, 0xE4, 0xDC, 0x54, 0xB3, 0x6D, + 0x0E, 0x19, 0x93, 0x3E, 0x98, 0x1C, 0xB7, 0x63, + 0xA9, 0xE1, 0x07, 0xE0, 0x1D, 0xA9, 0x42, 0x0F, + 0x82, 0xCA, 0x79, 0x35, 0x92, 0xA4, 0x7C, 0x4B, + 0x97, 0x7F, 0xF2, 0xC8, 0x84, 0x98, 0xDA, 0x95, + 0xC4, 0x3D, 0x23, 0x2F, 0x42, 0xAF, 0x99, 0x48, + 0x0B, 0xF0, 0xA4, 0xF8, 0xB7, 0xC4, 0x94, 0x9D, + 0x1A, 0xE1, 0xD4, 0xFA, 0x8E, 0x1D, 0x1A, 0x8C, + 0xD0, 0xF9, 0xED, 0x00, 0xDA, 0x59, 0x5E, 0xFD, + 0x2B, 0x76, 0x6F, 0x0B, 0x79, 0xD4, 0x49, 0x0D, + 0xB9, 0x28, 0xEC, 0x44, 0xB5, 0x03, 0x0A, 0x74, + 0xCA, 0x42, 0x81, 0x1A, 0x5B, 0x5A, 0xE5, 0x22, + 0xC7, 0x76, 0x4D, 0xDF, 0xD9, 0xFD, 0x92, 0xF0, + 0x06, 0xE9, 0x4B, 0x35, 0xA7, 0xEF, 0x01, 0x42, + 0xDA, 0x71, 0x78, 0xC2, 0xF5, 0x30, 0x74, 0xD0, + 0x74, 0x51, 0xB1, 0x55, 0x65, 0xA9, 0xE0, 0xC5, + 0x7E, 0xA1, 0xB9, 0x4C, 0x88, 0xEA, 0xE7, 0x41, + 0xB1, 0xF5, 0x01, 0xC4, 0xD3, 0x70, 0x72, 0x7D, + 0xAD, 0x27, 0x65, 0xF7, 0x95, 0xAD, 0x41, 0x46, + 0x35, 0x80, 0x0E, 0xC1, 0x94, 0x9D, 0x03, 0x71, + 0x39, 0xDE, 0x26, 0xAF, 0xCF, 0x93, 0x3D, 0x9A, + 0x09, 0xC1, 0x27, 0xFC, 0x6B, 0x36, 0xE5, 0x18, + 0xC6, 0xDE, 0x94, 0x92, 0xBA, 0x70, 0x82, 0x7B, + 0x68, 0x1C, 0x2D, 0x18, 0xA4, 0x01, 0x23, 0xB6, + 0xC5, 0xF6, 0x17, 0x37, 0xCB, 0x9D, 0xC6, 0xAA, + 0x9C, 0xE1, 0x7D, 0x16, 0x8E, 0xBB, 0xDD, 0xD6, + 0x3C, 0x07, 0x60, 0x19, 0x3C, 0x97, 0x49, 0x33, + 0xDB, 0x47, 0x4A, 0xA8, 0x9A, 0xF3, 0x0E, 0x16, + 0x29, 0x38, 0xF6, 0xDB, 0x78, 0x65, 0xDE, 0x23, + 0x1F, 0x86, 0x16, 0x9C, 0x9E, 0x2A, 0x30, 0x2F, + 0xC4, 0x1F, 0x1B, 0xE5, 0xF3, 0x6C, 0x55, 0x83, + 0xFC, 0xD9, 0x1E, 0x21, 0xCB, 0x8A, 0x67, 0x57, + 0xD3, 0x0A, 0x4B, 0xAC, 0xDB, 0x67, 0xE7, 0xA6, + 0x1B, 0x0C, 0x8E, 0x21, 0x7E, 0x0C, 0xCB, 0xF5, + 0x0E, 0xA6, 0x42, 0xCD, 0xE3, 0xFC, 0x74, 0xC7, + 0xF9, 0xFF, 0xBD, 0xA9, 0xA1, 0xE6, 0x84, 0xBB, + 0xC9, 0xA8, 0xF7, 0xCD, 0x3F, 0x1B, 0xD0, 0xDB, + 0x63, 0xDD, 0xDF, 0x4E, 0xA4, 0x79, 0xC2, 0x35, + 0x65, 0x2C, 0x5D, 0xCB, 0xCA, 0x7B, 0xDD, 0x4E, + 0x2F, 0x33, 0xE8, 0x71, 0x72, 0xC1, 0x8B, 0x5F, + 0xF3, 0x90, 0x99, 0x40, 0x8D, 0x27, 0x2F, 0xD0, + 0xFB, 0x0D, 0x6A, 0x23, 0xB1, 0x43, 0x00, 0xDF, + 0xC6, 0x4C, 0x02, 0x74, 0x3E, 0x52, 0x36, 0x08, + 0xE9, 0x73, 0x61, 0x3D, 0xCA, 0xAC, 0x9D, 0x1D, + 0x14, 0xB3, 0xA6, 0x24, 0x0E, 0xC2, 0xF2, 0x29, + 0x39, 0x91, 0xF6, 0x90, 0x6A, 0xE3, 0x6C, 0x04, + 0x69, 0xF3, 0x09, 0x11, 0x34, 0x8E, 0xC1, 0x2D, + 0xDB, 0xA6, 0xC3, 0xCA, 0x19, 0xBC, 0x69, 0x5F, + 0xCD, 0x16, 0xE5, 0xAE, 0xF2, 0xAD, 0x7C, 0x73, + 0x25, 0x15, 0x70, 0xB5, 0xD0, 0x49, 0xA6, 0xC3, + 0xA5, 0x2F, 0xA3, 0xFC, 0x9E, 0xD5, 0x4E, 0x54, + 0x97, 0x3A, 0xE7, 0x89, 0xB0, 0xBF, 0xD6, 0xF8, + 0xCC, 0x26, 0x44, 0xA9, 0xF8, 0x5A, 0xCE, 0x06, + 0x78, 0xD8, 0x9E, 0xFC, 0x12, 0xB6, 0x11, 0xC3, + 0xDF, 0xAE, 0x3F, 0x94, 0x50, 0x34, 0xB8, 0x99, + 0xBE, 0x99, 0xA7, 0x32, 0x88, 0x9F, 0x17, 0xD2, + 0x08, 0xDC, 0xD7, 0xEE, 0x95, 0x9D, 0x1A, 0xC7, + 0x61, 0xDB, 0xA4, 0x86, 0x4C, 0x14, 0xB0, 0xA3, + 0x5E, 0x4C, 0x7B, 0xBD, 0xA0, 0x96, 0xFB, 0x8A, + 0xB3, 0x22, 0x69, 0x26, 0xC8, 0x9E, 0x7C, 0xDA, + 0x92, 0x9E, 0xF1, 0x30, 0xC6, 0x92, 0xC9, 0x26, + 0x59, 0xE6, 0xF4, 0x65, 0x2B, 0xF2, 0x15, 0x63, + 0x61, 0xC7, 0x7D, 0xBE, 0xEF, 0x5A, 0x06, 0x23, + 0xA0, 0x67, 0x04, 0x99, 0x0E, 0x19, 0x8A, 0x13, + 0x67, 0x30, 0x54, 0x32, 0x4B, 0xBB, 0xAA, 0x64, + 0x36, 0x92, 0xF2, 0x43, 0xD6, 0x7C, 0x1B, 0x4F, + 0x95, 0xB9, 0x28, 0xAC, 0xF1, 0x68, 0x6F, 0x60, + 0xC1, 0x44, 0x87, 0xD6, 0xDD, 0x7F, 0x88, 0x01, + 0xEF, 0x20, 0x93, 0x9E, 0x03, 0xA1, 0xCA, 0x7D, + 0x74, 0x32, 0xDC, 0xF5, 0x95, 0xF1, 0xE9, 0xED, + 0xF2, 0xB2, 0x93, 0x57, 0xA1, 0xD4, 0xC7, 0xDA, + 0x33, 0x51, 0x2C, 0x45, 0x1A, 0x7C, 0x66, 0x04, + 0x38, 0x2D, 0x90, 0xC3, 0x30, 0x79, 0xD9, 0x57, + 0x38, 0xE4, 0x71, 0x89, 0xD8, 0x54, 0x9E, 0x43, + 0xD2, 0x94, 0xE7, 0x3D, 0x1C, 0xA7, 0x48, 0x7B, + 0x50, 0xD0, 0xED, 0x7C, 0xC6, 0xF9, 0x6B, 0xEE, + 0xA7, 0x6C, 0xCE, 0xB9, 0x6D, 0x37, 0x92, 0x00, + 0x4E, 0xB3, 0xE5, 0x49, 0x16, 0x35, 0xA6, 0x7F, + 0x6F, 0xFA, 0x1F, 0x1D, 0xF6, 0xA1, 0xF2, 0xFD, + 0xEE, 0x77, 0x84, 0x17, 0x80, 0xAE, 0x08, 0x09, + 0xD2, 0x92, 0xED, 0x7B, 0x00, 0xF4, 0x2D, 0x80, + 0x91, 0x19, 0x09, 0xB5, 0x1C, 0x9A, 0x3A, 0xE5, + 0x4B, 0x7A, 0x6D, 0x7D, 0x29, 0xD2, 0x00, 0x05, + 0x22, 0xD4, 0xF8, 0x76, 0xE2, 0x5C, 0x0D, 0x6A, + 0x15, 0x77, 0x22, 0x18, 0x85, 0xFD, 0x30, 0x74, + 0xF3, 0x3B, 0xDC, 0xD9, 0x6C, 0xDE, 0x80, 0x40, + 0x4A, 0x37, 0xE1, 0x60, 0x9F, 0x26, 0xCF, 0xBE, + 0x24, 0xA1, 0xFB, 0xF9, 0x76, 0x2A, 0x1A, 0x23, + 0x32, 0xE7, 0xA2, 0xD8, 0x2D, 0xF9, 0xD2, 0x0F, + 0x08, 0x3A, 0xDB, 0x35, 0x35, 0x33, 0x59, 0x0B, + 0xB1, 0xF9, 0x54, 0x33, 0x49, 0x36, 0x9E, 0x21, + 0xEC, 0xF5, 0x94, 0xE2, 0x78, 0x07, 0xA5, 0x63, + 0x50, 0xD6, 0x23, 0x84, 0xDE, 0xAD, 0xA7, 0x89, + 0xBE, 0x92, 0xF0, 0x12, 0xC1, 0xF8, 0xA7, 0x2D, + 0x8B, 0xE0, 0x79, 0xF8, 0xD7, 0xBD, 0x04, 0x0B, + 0xC5, 0xF2, 0x23, 0x36, 0x11, 0x6D, 0x6F, 0x37, + 0xDB, 0xFB, 0xD2, 0xC7, 0x44, 0xC3, 0xAE, 0x78, + 0xEC, 0xB4, 0xE0, 0x5A, 0x55, 0xB3, 0xFC, 0xC3, + 0x1B, 0x8C, 0xA6, 0xDB, 0xE8, 0x95, 0x72, 0x44, + 0x90, 0x8F, 0x4E, 0xD1, 0xD3, 0x46, 0x6C, 0x9E, + 0x00, 0xC6, 0xCC, 0xAE, 0xFC, 0x95, 0x4D, 0x85, + 0x7C, 0x65, 0x5F, 0x74, 0x71, 0xE3, 0x80, 0x88, + 0xCF, 0x1E, 0xB8, 0xBE, 0xED, 0x8D, 0xC4, 0xFB, + 0x3E, 0x36, 0xF3, 0xB8, 0x42, 0x1F, 0x37, 0x31, + 0x8D, 0xA2, 0x35, 0x36, 0x9E, 0x92, 0x3D, 0xD8, + 0xEA, 0xA7, 0xA2, 0x29, 0x0E, 0x14, 0xBF, 0x59, + 0x1E, 0x1D, 0x98, 0x27, 0x30, 0x3B, 0xF3, 0x57, + 0x69, 0x75, 0xCC, 0x3A, 0xB3, 0x49, 0x99, 0x70, + 0x19, 0x50, 0xAB, 0xF6, 0x7F, 0xF6, 0x55, 0x1A, + 0xCA, 0x2D, 0xA0, 0x73, 0x50, 0xE0, 0x9C, 0xEE, + 0x07, 0xEC, 0x37, 0x26, 0x6B, 0xAA, 0xA5, 0x34, + 0xFD, 0x7B, 0x1A, 0x92, 0x4E, 0xE7, 0x36, 0x1A, + 0xEB, 0x35, 0xCC, 0x5A, 0x5C, 0x06, 0x7F, 0x77, + 0xCE, 0x52, 0x33, 0x57, 0x73, 0x9D, 0xEC, 0x2D, + 0x28, 0x0C, 0xC9, 0xBF, 0x06, 0x9E, 0xA7, 0x7C, + 0x36, 0xF9, 0x0B, 0xC6, 0x7F, 0x0F, 0x66, 0x24, + 0x65, 0x2D, 0x30, 0x2B, 0xD7, 0x7F, 0x07, 0xD3, + 0x57, 0xC8, 0x4B, 0xC3, 0x0C, 0xA3, 0x5B, 0xAA, + 0xAF, 0xEA, 0xF3, 0xA3, 0x9E, 0x9E, 0xD4, 0x63, + 0xCD, 0x82, 0x8B, 0xBC, 0x5D, 0xEF, 0xE6, 0x2A, + 0x4D, 0x5B, 0x95, 0x13, 0x17, 0x98, 0xD3, 0x67, + 0x66, 0x04, 0x9E, 0x71, 0x71, 0xE6, 0xBD, 0x44, + 0x15, 0x6B, 0x29, 0x76, 0xE4, 0x62, 0x01, 0x99, + 0xEB, 0xF4, 0x2E, 0x14, 0x29, 0x0D, 0xBF, 0x8A, + 0x02, 0x30, 0x4A, 0xE7, 0x0D, 0x25, 0x42, 0x9E, + 0xD7, 0x0C, 0xAD, 0x30, 0xC6, 0xA3, 0x49, 0xF9, + 0x90, 0x0C, 0x46, 0x5B, 0x77, 0x67, 0x5F, 0x0B, + 0xE9, 0xA9, 0xFE, 0xFA, 0xC8, 0x5F, 0x19, 0xF7, + 0x35, 0x09, 0xF7, 0xB5, 0x6D, 0x51, 0x32, 0x17, + 0xBE, 0xE6, 0xC3, 0xBE, 0x4A, 0x9A, 0x33, 0xDA, + 0xC6, 0x90, 0xB7, 0xA7, 0x6F, 0x97, 0x9E, 0xD5, + 0x80, 0xE5, 0x02, 0x9E, 0x58, 0xD6, 0x45, 0x34, + 0x4D, 0x61, 0x71, 0x19, 0x07, 0x69, 0x1F, 0xAF, + 0xFF, 0x9F, 0xDE, 0x97, 0x13, 0xA1, 0xDF, 0x47, + 0x0E, 0x8B, 0xD6, 0xD0, 0x75, 0x40, 0x08, 0x59, + 0x7D, 0xFB, 0x74, 0x74, 0xF2, 0x48, 0xF4, 0x23, + 0x1B, 0x5E, 0x18, 0x4E, 0x2D, 0x2D, 0xC5, 0x40, + 0xD0, 0x90, 0x4F, 0x95, 0x69, 0xC4, 0xDA, 0xFB, + 0x39, 0x4B, 0x12, 0x7D, 0x22, 0x1E, 0x9A, 0x68, + 0x5B, 0x68, 0x2E, 0x47, 0x23, 0xB9, 0x6A, 0xBF, + 0xF7, 0xE2, 0x56, 0x79, 0xDD, 0x7A, 0x72, 0xF9, + 0x5F, 0x20, 0x6B, 0x29, 0x56, 0xEE, 0x04, 0x11, + 0x4C, 0x16, 0x34, 0x04, 0x14, 0x54, 0xB5, 0x21, + 0xAA, 0x6A, 0x46, 0x40, 0xE4, 0xF1, 0x78, 0x7C, + 0x50, 0xF3, 0x4D, 0xBC, 0x57, 0x34, 0x7C, 0x6A, + 0xBD, 0x9B, 0xEF, 0x03, 0x80, 0x7D, 0xAB, 0x20, + 0x0F, 0x77, 0x87, 0x6F, 0x93, 0xFB, 0x24, 0x20, + 0x82, 0xC7, 0x7E, 0xFB, 0x43, 0x2D, 0xC6, 0xD4, + 0xE9, 0x27, 0x8C, 0x66, 0xA8, 0x5A, 0x58, 0xC8, + 0xD8, 0x9A, 0xA8, 0x50, 0x5F, 0x3A, 0x3D, 0x0B, + 0xC3, 0x4F, 0xCE, 0x94, 0xE0, 0x0D, 0x16, 0xCB, + 0x20, 0xE0, 0xF5, 0x1A, 0x13, 0x6E, 0x28, 0xA6, + 0x42, 0xB2, 0xB1, 0x30, 0x1D, 0x56, 0x28, 0xCD, + 0xF3, 0x4E, 0xA7, 0x3E, 0x74, 0x04, 0x7D, 0xA5, + 0x86, 0xD9, 0x1A, 0xDF, 0x07, 0xBC, 0x2C, 0x59, + 0xB1, 0x91, 0x6D, 0x9B, 0xA2, 0xD0, 0x72, 0xE7, + 0xA5, 0x56, 0x4A, 0x27, 0x56, 0x1F, 0x65, 0xCD, + 0x90, 0x7B, 0xB7, 0x5A, 0x51, 0x25, 0x75, 0x1B, + 0xD9, 0xD4, 0xC7, 0x19, 0x8A, 0xB0, 0x3D, 0x38, + 0x22, 0x61, 0xCF, 0xD9, 0x66, 0xED, 0xF5, 0xB8, + 0xF5, 0x86, 0xFF, 0x98, 0x1A, 0xB7, 0xFB, 0x67, + 0xED, 0x25, 0x52, 0xD9, 0x2F, 0x84, 0xDC, 0x96, + 0x89, 0x2C, 0x52, 0xCF, 0x5F, 0xA0, 0xEA, 0xD0, + 0xB3, 0x38, 0x98, 0xFC, 0xD7, 0x50, 0x84, 0xCF, + 0xA5, 0xE9, 0x53, 0x8B, 0x44, 0x38, 0xB5, 0x7D, + 0xD8, 0xAD, 0x0A, 0xE5, 0x35, 0x78, 0x29, 0xBF, + 0x9F, 0x6B, 0x2C, 0xBB, 0x97, 0x9D, 0xD3, 0x64, + 0x23, 0x2B, 0xA8, 0xA4, 0x71, 0xE3, 0xF1, 0x2F, + 0x61, 0xC9, 0x68, 0xD2, 0x06, 0xD0, 0x4E, 0x87, + 0x03, 0x99, 0xCC, 0xB1, 0x83, 0xB6, 0x94, 0x61, + 0x3C, 0xE9, 0xE0, 0x7D, 0x13, 0xAF, 0xCF, 0xE4, + 0xA6, 0x42, 0x7F, 0x62, 0x8F, 0xFC, 0x10, 0xF1, + 0x08, 0x4D, 0x1D, 0xFC, 0x0F, 0x37, 0x11, 0xBE, + 0xD7, 0xF1, 0x80, 0x46, 0xAF, 0xFA, 0x13, 0x65, + 0x99, 0xAE, 0xF9, 0xD0, 0x13, 0xA7, 0xC7, 0x3A, + 0xD2, 0xC1, 0x9B, 0x5A, 0xB8, 0xC3, 0x08, 0x13, + 0x49, 0x40, 0x33, 0x0D, 0x1F, 0x93, 0x5D, 0x10, + 0x49, 0x3E, 0x4F, 0x90, 0x34, 0xC5, 0xEA, 0xF7, + 0x24, 0xFF, 0xF3, 0xC5, 0x95, 0xF7, 0x1F, 0x13, + 0x9A, 0xE0, 0x0C, 0xCD, 0x61, 0x93, 0x39, 0xE6, + 0xAF, 0xD5, 0x3E, 0xA9, 0xD8, 0xC4, 0x8F, 0x64, + 0x05, 0x09, 0x45, 0x2A, 0xEB, 0x12, 0xC5, 0x51, + 0x58, 0x1C, 0x55, 0x20, 0xE9, 0x29, 0x74, 0xC7, + 0x10, 0x01, 0xF3, 0xA4, 0x56, 0xB4, 0x14, 0xFE, + 0x9C, 0x10, 0x2F, 0xF8, 0xBF, 0xB5, 0x9C, 0x6E, + 0xBB, 0xE6, 0x52, 0xE7, 0xAC, 0xA7, 0xCE, 0x41, + 0x6E, 0x00, 0x66, 0x0A, 0x2F, 0x46, 0x71, 0xB8, + 0x8F, 0x45, 0x89, 0x26, 0x68, 0xCD, 0x49, 0xDF, + 0xCB, 0xCD, 0xD6, 0x66, 0xC6, 0xA7, 0x8E, 0xB3, + 0xE4, 0x72, 0xEF, 0xBA, 0xA6, 0x6D, 0x7A, 0xB7, + 0xE9, 0xD9, 0xB2, 0x60, 0xB5, 0x82, 0x77, 0x20, + 0x2A, 0xFA, 0xE3, 0xCB, 0xF5, 0x30, 0x50, 0x30, + 0xC6, 0x19, 0x67, 0xA8, 0xB8, 0xFA, 0xFE, 0xB6, + 0xDA, 0xB6, 0xB6, 0xBF, 0x07, 0x90, 0x40, 0xD8, + 0x5B, 0x15, 0x48, 0x39, 0xCD, 0x99, 0x0F, 0x3A, + 0x28, 0xD2, 0x2E, 0xBA, 0xAC, 0x6D, 0xA3, 0xF8, + 0x53, 0x88, 0xF0, 0x86, 0x87, 0x70, 0xF5, 0x07, + 0xD2, 0x99, 0xC4, 0xCA, 0xDD, 0xD8, 0x8C, 0xEB, + 0x00, 0x96, 0xB4, 0x62, 0xA3, 0x7B, 0x79, 0x31, + 0xB2, 0x85, 0xB0, 0x61, 0x39, 0xF2, 0xBC, 0x1D, + 0x31, 0xC3, 0x0C, 0x7F, 0x70, 0x9A, 0x63, 0x74, + 0xC6, 0xCB, 0xD3, 0x93, 0x0D, 0x43, 0x7F, 0x80, + 0x85, 0x87, 0x72, 0x98, 0xE1, 0x6E, 0x9A, 0x59, + 0x2E, 0x6C, 0xA8, 0x9E, 0xC2, 0xC0, 0x72, 0xFE, + 0x26, 0xE8, 0xAF, 0x89, 0x61, 0xCA, 0x0D, 0x15, + 0xCC, 0xB0, 0xBA, 0x10, 0xB8, 0x9D, 0x77, 0x2C, + 0x6C, 0x28, 0xCC, 0x70, 0x5B, 0x1F, 0x5D, 0x68, + 0xD4, 0xC8, 0x1F, 0x0F, 0x67, 0xF5, 0x3E, 0x5C, + 0x70, 0x50, 0x4B, 0x32, 0x12, 0xE6, 0x1A, 0xCE, + 0xB8, 0x32, 0x5F, 0x1D, 0xC5, 0xFB, 0x07, 0x77, + 0xAD, 0x85, 0x45, 0x95, 0x04, 0x0D, 0x94, 0x7A, + 0x1F, 0xDD, 0x05, 0x74, 0x14, 0xA5, 0x9A, 0x66, + 0xF4, 0x93, 0xBE, 0xF2, 0xA9, 0x5B, 0xCD, 0xAB, + 0xC7, 0x82, 0xF7, 0xE7, 0x4A, 0x1C, 0x90, 0x6B, + 0x9A, 0xBD, 0x93, 0xDD, 0x41, 0x56, 0xDA, 0xA5, + 0x0F, 0x5D, 0x57, 0x2C, 0xBA, 0x07, 0x07, 0x4B, + 0x91, 0x33, 0xE6, 0x1B, 0x0E, 0x25, 0x9E, 0x36, + 0xBF, 0xCA, 0x21, 0xCE, 0xC6, 0x82, 0x33, 0x4D, + 0x42, 0x4F, 0x2E, 0x71, 0xC2, 0xE7, 0x6F, 0x16, + 0xF6, 0xB7, 0x30, 0x1C, 0xA1, 0xA8, 0xE3, 0xE7, + 0xB1, 0x71, 0xDD, 0x9F, 0x90, 0x1F, 0x01, 0x1D, + 0x0A, 0xBD, 0x2C, 0x4A, 0x22, 0x84, 0x5C, 0xBF, + 0x61, 0x07, 0x24, 0xC4, 0x0D, 0x23, 0xDB, 0xC6, + 0x28, 0xB1, 0x27, 0xCB, 0x7E, 0x06, 0xF8, 0x3C, + 0x42, 0xF9, 0x51, 0x2F, 0x21, 0xC5, 0x80, 0x98, + 0x08, 0x2F, 0x56, 0x58, 0xD7, 0xE0, 0xDA, 0xC4, + 0x24, 0x0C, 0xE8, 0xFA, 0x94, 0x23, 0x57, 0xA6, + 0xD8, 0xE2, 0xC5, 0xCC, 0x16, 0x70, 0x55, 0x57, + 0xC4, 0x52, 0x2D, 0x94, 0xCE, 0x5B, 0x22, 0x8E, + 0x6C, 0x3D, 0x8E, 0x74, 0x9D, 0xFD, 0x47, 0xC7, + 0x42, 0x11, 0x41, 0x9F, 0x6A, 0x0A, 0xF6, 0x16, + 0x97, 0xB1, 0x24, 0xC4, 0x6C, 0x98, 0xF8, 0x62, + 0x51, 0xE9, 0x67, 0x6D, 0x39, 0x2B, 0x76, 0x19, + 0x5F, 0x41, 0xF4, 0x82, 0x51, 0x87, 0xFF, 0xAA, + 0x87, 0xE3, 0x46, 0x87, 0xC0, 0xC9, 0xBB, 0xB5, + 0xAC, 0xA0, 0xD1, 0x56, 0x54, 0xC2, 0x2C, 0x59, + 0x9E, 0x78, 0xF9, 0xA6, 0xBA, 0xCB, 0xE2, 0x45, + 0x8A, 0xC1, 0xE5, 0xDF, 0xC3, 0x81, 0x91, 0xDB, + 0xDB, 0x9E, 0xE2, 0x9C, 0xB9, 0x44, 0x5F, 0x5D, + 0x6D, 0x83, 0x8D, 0x2D, 0x3E, 0x72, 0x2F, 0x98, + 0xFC, 0xFA, 0x5F, 0xC0, 0xF0, 0x03, 0x4A, 0x42, + 0x19, 0x67, 0x48, 0x24, 0x70, 0x35, 0xAE, 0x37, + 0x34, 0x27, 0xAB, 0xD6, 0x92, 0xB8, 0xB4, 0x52, + 0xC9, 0xD1, 0xF0, 0x5C, 0xAC, 0xFA, 0xB9, 0x2D, + 0xCE, 0xF2, 0x24, 0xE3, 0x53, 0xF4, 0x2D, 0x65, + 0x8D, 0xBF, 0x27, 0x3F, 0xAF, 0x62, 0xE0, 0x27, + 0xBE, 0x12, 0xCB, 0x40, 0xA4, 0x99, 0xAF, 0x47, + 0x19, 0x5F, 0x68, 0x69, 0x7F, 0x8C, 0xD2, 0x1E, + 0x4A, 0xA1, 0xA4, 0x3D, 0x5A, 0x62, 0x6F, 0x78, + 0x87, 0x8E, 0xA0, 0xC0, 0xF3, 0x2C, 0x60, 0xC3, + 0xCE, 0xDD, 0xED, 0x7C, 0xAF, 0xE0, 0x0B, 0x72, + 0x9D, 0xBA, 0xC6, 0xEE, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x0B, 0x15, 0x1B, 0x1E, 0x24 + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + static const byte sk_87[] = { + 0xF1, 0x79, 0x16, 0xD9, 0x5C, 0x51, 0x2F, 0xEC, + 0x0C, 0xEF, 0xA6, 0xA1, 0x5C, 0x9F, 0xB3, 0xBF, + 0x84, 0xFF, 0x8D, 0x7F, 0xA3, 0x55, 0x22, 0xEB, + 0x1C, 0x91, 0x5C, 0x4D, 0x25, 0x4E, 0x89, 0x35, + 0x24, 0x8E, 0x3C, 0x08, 0x58, 0x2B, 0x74, 0x5E, + 0xB2, 0xFD, 0x13, 0x15, 0x2B, 0x5D, 0xAE, 0xEA, + 0xB0, 0x72, 0x80, 0x42, 0xB0, 0x08, 0x85, 0xBB, + 0x92, 0xF8, 0x44, 0xA8, 0x6B, 0x42, 0x62, 0x03, + 0x5C, 0x9F, 0x44, 0x8A, 0x2B, 0x78, 0xEF, 0x5D, + 0xB3, 0x47, 0xE0, 0x25, 0x04, 0x15, 0xE1, 0x01, + 0x5F, 0xBB, 0x34, 0x31, 0x91, 0x24, 0x07, 0xC8, + 0x5A, 0x2F, 0x36, 0x2A, 0x85, 0xA9, 0xAE, 0x42, + 0x77, 0x23, 0xBF, 0x62, 0x69, 0x7B, 0x77, 0x99, + 0x1B, 0x3E, 0x93, 0xA3, 0x81, 0x13, 0x3F, 0x95, + 0x0D, 0x40, 0xE7, 0xC1, 0xAC, 0xBC, 0x17, 0xE4, + 0xF1, 0xD1, 0x0C, 0xD1, 0x27, 0x4C, 0x8D, 0x3C, + 0x84, 0x02, 0x02, 0x0A, 0xC5, 0x10, 0x1C, 0xC3, + 0x4D, 0xD0, 0x94, 0x70, 0x24, 0xC0, 0x89, 0x94, + 0x08, 0x4D, 0xC2, 0x30, 0x20, 0x63, 0xC0, 0x24, + 0xE1, 0x80, 0x40, 0xD0, 0x26, 0x68, 0x10, 0x97, + 0x01, 0x83, 0xC2, 0x91, 0x5A, 0x90, 0x2D, 0x44, + 0x94, 0x6D, 0x10, 0x09, 0x50, 0x11, 0xA7, 0x0D, + 0xE4, 0x04, 0x89, 0x9B, 0x80, 0x8D, 0x40, 0xB8, + 0x45, 0x4B, 0x86, 0x0D, 0xC8, 0xB6, 0x05, 0xC0, + 0xC0, 0x71, 0x02, 0x09, 0x06, 0xA2, 0x00, 0x2D, + 0x0B, 0x24, 0x86, 0xA0, 0x90, 0x11, 0x20, 0x16, + 0x82, 0x1B, 0x24, 0x42, 0xCB, 0xB6, 0x70, 0x43, + 0x36, 0x05, 0xDA, 0x16, 0x25, 0x9A, 0x34, 0x6C, + 0xCB, 0xB4, 0x08, 0xC4, 0x16, 0x90, 0x24, 0x29, + 0x6C, 0x42, 0x90, 0x04, 0x24, 0x06, 0x46, 0x84, + 0x12, 0x6D, 0xC2, 0x26, 0x00, 0x88, 0x40, 0x02, + 0x51, 0xC8, 0x40, 0x9C, 0x16, 0x24, 0x82, 0x18, + 0x26, 0x21, 0x06, 0x0C, 0x12, 0xC2, 0x71, 0x50, + 0x98, 0x91, 0x4A, 0x40, 0x28, 0x48, 0x48, 0x21, + 0x5A, 0x18, 0x49, 0x1B, 0xB7, 0x01, 0x5A, 0xC6, + 0x48, 0xA1, 0x90, 0x2C, 0x14, 0x18, 0x2D, 0xD2, + 0x20, 0x62, 0xDC, 0xB6, 0x49, 0x00, 0x09, 0x6D, + 0x40, 0xA8, 0x4D, 0x24, 0xC8, 0x24, 0x4C, 0x06, + 0x08, 0x80, 0x40, 0x4E, 0xD3, 0x18, 0x88, 0x12, + 0x09, 0x91, 0x8B, 0x12, 0x31, 0xC9, 0x16, 0x04, + 0x64, 0x10, 0x72, 0xDA, 0x84, 0x91, 0x92, 0xC6, + 0x65, 0x22, 0x10, 0x48, 0x18, 0xC9, 0x00, 0x14, + 0x44, 0x62, 0x24, 0xC1, 0x60, 0x40, 0xC6, 0x10, + 0x4A, 0x48, 0x28, 0x9B, 0x44, 0x66, 0x91, 0x10, + 0x52, 0xD3, 0x26, 0x52, 0xD8, 0xA6, 0x0C, 0x0A, + 0xA8, 0x44, 0xD8, 0x26, 0x0C, 0x64, 0x86, 0x45, + 0x44, 0x20, 0x00, 0xD2, 0x48, 0x85, 0xDC, 0x46, + 0x32, 0xC8, 0x22, 0x45, 0x5B, 0x00, 0x8D, 0x20, + 0xA5, 0x45, 0x01, 0xC1, 0x91, 0xA2, 0x12, 0x84, + 0x20, 0x47, 0x0E, 0x98, 0xA8, 0x25, 0xD9, 0xA0, + 0x4D, 0xA4, 0x06, 0x2D, 0x5B, 0xB0, 0x08, 0x21, + 0xB0, 0x80, 0x4C, 0x10, 0x2C, 0xC4, 0x98, 0x71, + 0x99, 0x24, 0x24, 0xA4, 0x36, 0x71, 0x4B, 0xB6, + 0x49, 0xE1, 0x92, 0x00, 0x09, 0x92, 0x4C, 0x89, + 0x12, 0x49, 0x1A, 0x39, 0x2A, 0xE0, 0x22, 0x69, + 0x61, 0xB2, 0x50, 0x40, 0x26, 0x8E, 0xC9, 0xA2, + 0x08, 0x0A, 0x90, 0x24, 0x13, 0x35, 0x06, 0x21, + 0x24, 0x62, 0x60, 0xB0, 0x01, 0xE3, 0xC6, 0x29, + 0x5B, 0x28, 0x89, 0x20, 0x90, 0x70, 0xC4, 0xA4, + 0x31, 0x08, 0x42, 0x11, 0x10, 0xC0, 0x71, 0x98, + 0x98, 0x20, 0xC4, 0xA8, 0x29, 0x1A, 0x15, 0x32, + 0xC4, 0x86, 0x6C, 0x18, 0x14, 0x6A, 0x02, 0x46, + 0x46, 0xDC, 0xC2, 0x4C, 0x81, 0x02, 0x6D, 0x49, + 0x16, 0x48, 0x10, 0x94, 0x6C, 0x0A, 0x85, 0x90, + 0x9C, 0x34, 0x84, 0x54, 0x24, 0x25, 0x49, 0xA8, + 0x21, 0x04, 0xA6, 0x2C, 0x61, 0x00, 0x01, 0x61, + 0x46, 0x92, 0xE0, 0xA6, 0x44, 0xE2, 0x00, 0x90, + 0xC8, 0x06, 0x06, 0x90, 0xB8, 0x2D, 0x0B, 0x85, + 0x85, 0x20, 0x23, 0x0D, 0x83, 0x94, 0x04, 0x54, + 0x26, 0x50, 0x41, 0x92, 0x29, 0x09, 0x16, 0x20, + 0x54, 0xC6, 0x2D, 0x81, 0xC8, 0x8C, 0x09, 0x44, + 0x44, 0xE2, 0x06, 0x30, 0x13, 0x92, 0x49, 0x0B, + 0x17, 0x48, 0x93, 0x28, 0x86, 0xD8, 0xA4, 0x50, + 0xD1, 0x32, 0x91, 0x08, 0xB8, 0x05, 0xA4, 0x02, + 0x62, 0x01, 0x15, 0x82, 0xE3, 0x18, 0x42, 0x83, + 0xC6, 0x44, 0x43, 0x02, 0x81, 0x53, 0x88, 0x04, + 0x04, 0x98, 0x31, 0x19, 0x18, 0x46, 0xDB, 0x02, + 0x89, 0x10, 0x23, 0x81, 0x03, 0x90, 0x71, 0x83, + 0x26, 0x89, 0x1A, 0x01, 0x05, 0xCA, 0xB0, 0x01, + 0x4C, 0x84, 0x09, 0x10, 0x11, 0x84, 0x13, 0xB1, + 0x20, 0x61, 0xB8, 0x41, 0x1B, 0x02, 0x8C, 0x09, + 0x98, 0x61, 0x83, 0x18, 0x61, 0x08, 0xC1, 0x6D, + 0x44, 0x86, 0x09, 0xCB, 0x88, 0x8D, 0x93, 0xB4, + 0x41, 0x58, 0x90, 0x81, 0x04, 0x31, 0x08, 0xD1, + 0xC4, 0x04, 0x19, 0xB4, 0x4C, 0x1C, 0x88, 0x20, + 0xCA, 0x30, 0x72, 0x1C, 0xB5, 0x85, 0x13, 0x27, + 0x32, 0x84, 0xB4, 0x44, 0x04, 0x42, 0x20, 0x61, + 0x18, 0x52, 0x50, 0x96, 0x44, 0x03, 0x38, 0x86, + 0xE3, 0x48, 0x31, 0x02, 0x82, 0x68, 0x98, 0x06, + 0x90, 0x23, 0x28, 0x04, 0x10, 0x18, 0x0D, 0x10, + 0x28, 0x45, 0x4C, 0x84, 0x6C, 0x09, 0x36, 0x71, + 0x82, 0x26, 0x64, 0x18, 0xC6, 0x21, 0x90, 0x18, + 0x22, 0x0A, 0x37, 0x08, 0xC4, 0x94, 0x28, 0xE2, + 0x30, 0x2C, 0x92, 0xB4, 0x24, 0x63, 0x46, 0x70, + 0x52, 0x96, 0x0C, 0x8B, 0xA4, 0x05, 0xD3, 0x02, + 0x85, 0x09, 0x32, 0x92, 0x49, 0x12, 0x21, 0x18, + 0x43, 0x28, 0x01, 0x32, 0x45, 0x0B, 0xA5, 0x50, + 0x14, 0x16, 0x65, 0x91, 0x80, 0x65, 0x0A, 0x44, + 0x66, 0x13, 0xB6, 0x4C, 0x01, 0x38, 0x71, 0x11, + 0x49, 0x28, 0x22, 0x43, 0x02, 0x0B, 0x34, 0x04, + 0x01, 0x16, 0x91, 0x80, 0x14, 0x0E, 0x12, 0x93, + 0x01, 0x00, 0x11, 0x80, 0xDC, 0x28, 0x51, 0x11, + 0x87, 0x85, 0xC1, 0x34, 0x28, 0x02, 0xA2, 0x11, + 0x02, 0x38, 0x44, 0x52, 0x14, 0x64, 0xC2, 0xA0, + 0x01, 0x1B, 0x42, 0x8C, 0xC2, 0xB2, 0x71, 0xCB, + 0x16, 0x00, 0xCC, 0x10, 0x21, 0x04, 0x12, 0x52, + 0x84, 0x24, 0x2A, 0xD3, 0x48, 0x12, 0x08, 0x44, + 0x08, 0x81, 0x88, 0x44, 0x01, 0x23, 0x50, 0xC0, + 0xA2, 0x09, 0x81, 0x94, 0x50, 0x02, 0x89, 0x61, + 0x01, 0x31, 0x88, 0x1B, 0xA2, 0x61, 0x90, 0x94, + 0x84, 0x91, 0x24, 0x09, 0x03, 0x18, 0x22, 0xA3, + 0x46, 0x60, 0x10, 0x16, 0x4D, 0x48, 0x84, 0x89, + 0x11, 0x00, 0x2E, 0xCC, 0xC0, 0x40, 0x8C, 0xC0, + 0x51, 0xE4, 0x42, 0x62, 0xDA, 0x24, 0x11, 0x13, + 0x19, 0x46, 0x93, 0x34, 0x4C, 0x42, 0x42, 0x24, + 0xC4, 0x48, 0x90, 0x00, 0x35, 0x80, 0x1B, 0x98, + 0x51, 0x0B, 0x41, 0x60, 0x0C, 0x25, 0x46, 0x9A, + 0xA8, 0x89, 0x12, 0x86, 0x4C, 0xE3, 0x16, 0x09, + 0x14, 0x27, 0x24, 0x51, 0x26, 0x4D, 0x1B, 0x02, + 0x10, 0x00, 0x17, 0x28, 0xD4, 0xA8, 0x45, 0x48, + 0x88, 0x48, 0x01, 0xC7, 0x0D, 0x93, 0xC8, 0x40, + 0x5B, 0x02, 0x49, 0x51, 0x02, 0x4A, 0x01, 0x42, + 0x10, 0xE1, 0x08, 0x90, 0x03, 0x85, 0x48, 0x11, + 0xA8, 0x68, 0x8B, 0x90, 0x08, 0x5A, 0x02, 0x0C, + 0x5A, 0x18, 0x50, 0x11, 0x87, 0x51, 0x9C, 0x38, + 0x92, 0xD0, 0x44, 0x82, 0x10, 0x33, 0x21, 0x88, + 0x44, 0x2D, 0x24, 0x28, 0x0D, 0x22, 0xA3, 0x30, + 0x49, 0x88, 0x25, 0xA1, 0xB2, 0x01, 0x5C, 0x40, + 0x20, 0x1C, 0x03, 0x72, 0xCC, 0x96, 0x8C, 0x51, + 0xA6, 0x88, 0xE3, 0x92, 0x08, 0x13, 0xB0, 0x08, + 0x5C, 0x38, 0x44, 0x03, 0x47, 0x8E, 0x93, 0x12, + 0x4A, 0x88, 0x20, 0x48, 0xE0, 0x42, 0x20, 0x81, + 0x90, 0x09, 0x4B, 0x06, 0x6D, 0xD2, 0x90, 0x10, + 0x01, 0x82, 0x49, 0x19, 0x28, 0x91, 0xDA, 0x20, + 0x2A, 0x20, 0x85, 0x40, 0x0A, 0x16, 0x8A, 0x1C, + 0x83, 0x60, 0xCA, 0x48, 0x4A, 0xA2, 0xC8, 0x50, + 0xE4, 0x02, 0x31, 0x88, 0x86, 0x88, 0x53, 0x00, + 0x89, 0x60, 0x08, 0x8A, 0xA2, 0x02, 0x0A, 0x0A, + 0x34, 0x45, 0x03, 0x04, 0x42, 0x1B, 0x40, 0x09, + 0x89, 0xA0, 0x69, 0x42, 0x18, 0x49, 0x4A, 0xA8, + 0x8C, 0x99, 0x90, 0x30, 0xCA, 0x38, 0x91, 0x09, + 0x31, 0x72, 0x8B, 0x44, 0x29, 0x52, 0xA2, 0x8D, + 0x08, 0x14, 0x6E, 0xA1, 0x84, 0x50, 0x1C, 0x31, + 0x46, 0x19, 0xB7, 0x01, 0xCC, 0x06, 0x29, 0x11, + 0x09, 0x20, 0x4B, 0x40, 0x66, 0x40, 0xC4, 0x49, + 0x00, 0x13, 0x24, 0xD0, 0xA2, 0x84, 0xCA, 0x16, + 0x29, 0xD0, 0xC0, 0x84, 0xC8, 0x88, 0x44, 0xE1, + 0x20, 0x29, 0x1A, 0x97, 0x05, 0x90, 0x42, 0x90, + 0x04, 0x40, 0x71, 0x9C, 0x32, 0x4E, 0x64, 0x26, + 0x22, 0x93, 0x36, 0x66, 0xD3, 0x06, 0x49, 0xA3, + 0x26, 0x51, 0x4C, 0xA6, 0x89, 0x84, 0x36, 0x84, + 0x93, 0x46, 0x6D, 0x14, 0x07, 0x8D, 0x18, 0x29, + 0x42, 0x52, 0x34, 0x72, 0x44, 0x10, 0x90, 0x12, + 0x37, 0x81, 0xD4, 0x10, 0x64, 0x04, 0xA5, 0x08, + 0x84, 0x24, 0x09, 0x1C, 0x08, 0x8D, 0x02, 0x99, + 0x6C, 0x1B, 0x30, 0x50, 0x09, 0x89, 0x81, 0x19, + 0x30, 0x48, 0x5B, 0x14, 0x4D, 0xD9, 0x20, 0x20, + 0x0C, 0x01, 0x2A, 0x00, 0x90, 0x4D, 0xA1, 0x02, + 0x64, 0x1C, 0x03, 0x01, 0xC2, 0x26, 0x8C, 0x14, + 0x08, 0x45, 0xE3, 0x12, 0x48, 0x09, 0x20, 0x09, + 0x41, 0x40, 0x61, 0x90, 0x44, 0x21, 0x49, 0x06, + 0x91, 0x4B, 0xC0, 0x84, 0x22, 0x95, 0x51, 0x23, + 0x38, 0x0E, 0x5C, 0x28, 0x70, 0xC2, 0x40, 0x2C, + 0x94, 0x18, 0x62, 0x9A, 0x30, 0x4A, 0xE2, 0x86, + 0x4C, 0x5C, 0x10, 0x8D, 0xC2, 0x12, 0x21, 0x9C, + 0xC4, 0x4D, 0xD9, 0x96, 0x88, 0x0C, 0x29, 0x45, + 0x1B, 0x45, 0x6A, 0x1A, 0x00, 0x60, 0x91, 0x30, + 0x0C, 0x12, 0x00, 0x69, 0xA2, 0xA0, 0x04, 0x81, + 0x00, 0x65, 0x5C, 0x38, 0x8A, 0x18, 0x05, 0x89, + 0x48, 0x32, 0x24, 0x81, 0xC6, 0x4D, 0x60, 0x90, + 0x31, 0x83, 0x22, 0x12, 0xE1, 0xC2, 0x6C, 0x89, + 0x00, 0x90, 0x14, 0xB4, 0x40, 0xD3, 0xB8, 0x45, + 0x89, 0x24, 0x70, 0x09, 0x26, 0x6C, 0xD9, 0x32, + 0x8A, 0x83, 0x44, 0x0E, 0x21, 0x44, 0x61, 0x99, + 0xA4, 0x20, 0x44, 0x16, 0x2E, 0x1A, 0xC2, 0x08, + 0x09, 0x98, 0x6C, 0x8C, 0x18, 0x8C, 0x0C, 0x30, + 0x62, 0x8B, 0x46, 0x45, 0x80, 0x10, 0x21, 0x20, + 0x33, 0x32, 0x5A, 0x38, 0x4C, 0x98, 0x06, 0x45, + 0x1A, 0x33, 0x09, 0x82, 0x34, 0x44, 0x02, 0x20, + 0x09, 0x59, 0x00, 0x41, 0x08, 0x13, 0x08, 0xDC, + 0x18, 0x68, 0x12, 0x47, 0x86, 0x43, 0xB8, 0x21, + 0x62, 0x02, 0x8D, 0x5C, 0x10, 0x0D, 0x60, 0x96, + 0x65, 0xA2, 0x22, 0x4C, 0x83, 0x18, 0x09, 0x41, + 0x08, 0x41, 0x63, 0xC2, 0x80, 0x13, 0x81, 0x65, + 0x22, 0x03, 0x92, 0x04, 0xA9, 0x4D, 0x1C, 0xB0, + 0x44, 0x80, 0xC6, 0x24, 0x00, 0x01, 0x44, 0x22, + 0x11, 0x80, 0x21, 0x95, 0x64, 0x09, 0x99, 0x8C, + 0xD3, 0x14, 0x4A, 0xD1, 0x98, 0x2D, 0x19, 0x31, + 0x4C, 0x0A, 0x92, 0x40, 0x13, 0x98, 0x48, 0x14, + 0x89, 0x20, 0x23, 0xB3, 0x0D, 0x14, 0x98, 0x6D, + 0x12, 0x98, 0x05, 0x9B, 0x14, 0x06, 0x5B, 0x26, + 0x91, 0x0A, 0x38, 0x09, 0x08, 0x98, 0x2C, 0x19, + 0xA0, 0x45, 0x44, 0x26, 0x00, 0x0A, 0x05, 0x21, + 0xDB, 0xA0, 0x69, 0x51, 0x42, 0x92, 0x0B, 0x43, + 0x00, 0xD1, 0x42, 0x0D, 0x81, 0x30, 0x28, 0x13, + 0xC2, 0x20, 0x03, 0x27, 0x60, 0x10, 0x83, 0x91, + 0x0A, 0x53, 0x7E, 0xA1, 0x4F, 0x11, 0x54, 0x5E, + 0x25, 0x4F, 0xCF, 0x28, 0x03, 0x95, 0x2A, 0x58, + 0x0A, 0x4B, 0x6C, 0x9B, 0x29, 0x10, 0x3D, 0x97, + 0x43, 0x6C, 0x00, 0x3E, 0x2E, 0xCE, 0xAE, 0x20, + 0x28, 0x01, 0x7F, 0xF1, 0xD5, 0x18, 0xB0, 0xB5, + 0xD5, 0xE6, 0x24, 0x26, 0x64, 0xED, 0x33, 0x7C, + 0xCA, 0x45, 0x26, 0xED, 0x5D, 0xB5, 0xEA, 0xD8, + 0xBB, 0x31, 0x16, 0x94, 0x1C, 0xD0, 0xC8, 0xF0, + 0xA7, 0xED, 0x5A, 0x1A, 0x5A, 0x00, 0xB9, 0x8C, + 0x33, 0x6A, 0x9B, 0xC8, 0xEB, 0x6B, 0x3A, 0x30, + 0x83, 0x16, 0xF1, 0x17, 0xEA, 0xA8, 0x0D, 0x4B, + 0x77, 0x56, 0xDD, 0x4A, 0x91, 0xDA, 0xA5, 0x8E, + 0x80, 0xD7, 0xB5, 0x77, 0x55, 0x83, 0x97, 0xAF, + 0x90, 0x5B, 0x67, 0xC5, 0x9F, 0x14, 0xE1, 0x2C, + 0x15, 0x8D, 0x29, 0x2C, 0xA6, 0xB6, 0x41, 0xED, + 0x0C, 0x75, 0xE3, 0x9A, 0x91, 0x4F, 0xFA, 0x1A, + 0x9F, 0x24, 0xCA, 0x28, 0xF2, 0x00, 0xC7, 0x48, + 0xDE, 0x70, 0x9D, 0x15, 0xD7, 0x22, 0xE7, 0xED, + 0x2C, 0x91, 0x8D, 0xEF, 0x08, 0xCF, 0xAF, 0x9B, + 0x7E, 0x24, 0xDE, 0xF2, 0xD5, 0x1A, 0x4D, 0x42, + 0x0E, 0x7E, 0x89, 0x06, 0xFA, 0xCD, 0x9A, 0x5A, + 0x98, 0xB0, 0xD1, 0xD5, 0x34, 0x5C, 0x8B, 0x9A, + 0xC0, 0xBB, 0xF4, 0xB1, 0x5E, 0xF0, 0xB4, 0x6A, + 0x8E, 0x3B, 0x6B, 0xAE, 0x0C, 0x6E, 0x9F, 0x09, + 0x2E, 0xB3, 0xEF, 0x1D, 0x49, 0x62, 0x0B, 0x65, + 0xE7, 0xDE, 0xDB, 0xEF, 0x68, 0x7E, 0xBD, 0x0E, + 0xA0, 0x95, 0x97, 0x2A, 0x56, 0xA0, 0xEA, 0xFB, + 0x2D, 0x75, 0xF4, 0x32, 0x1B, 0x80, 0xAC, 0xBC, + 0xA3, 0x2B, 0x1B, 0x11, 0xAA, 0x57, 0x6F, 0xE4, + 0xE0, 0xCC, 0xCC, 0x20, 0x52, 0x12, 0x65, 0x42, + 0x96, 0xF0, 0x60, 0x8F, 0xF3, 0x83, 0x69, 0xAF, + 0x19, 0x80, 0x75, 0x68, 0xDB, 0xE1, 0x71, 0xDB, + 0x79, 0xEB, 0x8C, 0x1C, 0xB7, 0x6A, 0x8E, 0xB9, + 0x5B, 0x28, 0x8C, 0x9D, 0xCC, 0x62, 0x0B, 0xEF, + 0xCE, 0x96, 0x06, 0x0F, 0x45, 0xA6, 0xA2, 0xDA, + 0xC2, 0x2F, 0x55, 0xE4, 0x7D, 0xC7, 0xBA, 0xB4, + 0xA7, 0x93, 0xD9, 0x65, 0x8F, 0xE2, 0x7C, 0x66, + 0x2C, 0xA6, 0x37, 0x00, 0x81, 0x30, 0xF1, 0x00, + 0xD9, 0x65, 0xB4, 0x78, 0x17, 0x7A, 0xC6, 0xDC, + 0x35, 0x93, 0x1A, 0x5E, 0xCC, 0x5F, 0x93, 0x31, + 0x22, 0x40, 0x2C, 0x17, 0x0E, 0xB8, 0xE0, 0xA4, + 0x1C, 0xB6, 0x3F, 0xE5, 0x60, 0x2F, 0x7B, 0x18, + 0xE1, 0xDB, 0xB6, 0xDB, 0x30, 0xA7, 0x61, 0x55, + 0xC6, 0xCF, 0x03, 0x0F, 0x73, 0x8D, 0xC0, 0x91, + 0x6D, 0xB1, 0x80, 0xF8, 0x3F, 0x02, 0x90, 0x93, + 0x11, 0xCB, 0x6B, 0x3B, 0x9E, 0x55, 0x3F, 0xAC, + 0xA0, 0x52, 0x23, 0xB3, 0x3C, 0x69, 0x60, 0x2D, + 0x0F, 0x05, 0xA0, 0x8B, 0xEB, 0x84, 0x80, 0x96, + 0x51, 0x99, 0x9A, 0x55, 0x26, 0xE7, 0x76, 0xF3, + 0xDE, 0x39, 0x30, 0x4A, 0x5F, 0xEF, 0x00, 0x95, + 0x0A, 0x9A, 0x81, 0x0D, 0x12, 0xE0, 0x1D, 0x15, + 0xD8, 0x86, 0xDB, 0x26, 0x75, 0xF6, 0x54, 0xCA, + 0x17, 0xFA, 0xAE, 0xEB, 0xD1, 0xF5, 0x61, 0xF9, + 0xD1, 0xA9, 0x5E, 0x0B, 0xAD, 0xF7, 0xC3, 0x31, + 0x5A, 0xFA, 0xBA, 0x8D, 0x4B, 0xEC, 0x1F, 0x05, + 0x42, 0xA8, 0xF1, 0x0A, 0xC6, 0x66, 0xFD, 0x8D, + 0x0C, 0x5A, 0xF1, 0xD6, 0x86, 0x7A, 0x9D, 0x82, + 0x6B, 0xFB, 0x6B, 0x03, 0x0B, 0x58, 0xEC, 0xEF, + 0x67, 0x78, 0xD2, 0xC5, 0x2B, 0xF6, 0x2C, 0xB3, + 0x4B, 0x81, 0xFF, 0x93, 0x6D, 0xA3, 0x3E, 0xDA, + 0xB3, 0x1D, 0xB3, 0x9A, 0xB7, 0x63, 0x66, 0xD0, + 0x94, 0x36, 0x2F, 0x04, 0x6D, 0x50, 0x78, 0xB4, + 0x22, 0x35, 0x04, 0xA1, 0x2B, 0xA0, 0xC7, 0xB8, + 0xE8, 0x83, 0x72, 0x77, 0x18, 0x50, 0x9B, 0xD4, + 0x7A, 0x69, 0x6E, 0xE9, 0x88, 0x0C, 0xAF, 0xF6, + 0x63, 0x61, 0x2B, 0x95, 0x86, 0x30, 0x3D, 0x6D, + 0xE0, 0xD2, 0x1F, 0x9A, 0x21, 0x96, 0x22, 0x78, + 0xEB, 0xCE, 0x60, 0xA6, 0xD4, 0x68, 0x44, 0x09, + 0x5C, 0x5F, 0x89, 0x2D, 0xAC, 0xA4, 0x8D, 0x78, + 0x28, 0x22, 0x45, 0x38, 0x34, 0xB4, 0xE4, 0x2C, + 0xD3, 0xA1, 0xFE, 0x39, 0x87, 0x35, 0x6E, 0xAB, + 0x11, 0xEF, 0xB8, 0xEE, 0xCD, 0x8E, 0x9C, 0xC8, + 0xF3, 0x9A, 0x0F, 0xF1, 0xFF, 0xB8, 0x06, 0x9A, + 0x44, 0x1F, 0x85, 0x1E, 0xB4, 0x38, 0xE9, 0xC0, + 0xB5, 0x7E, 0x88, 0x18, 0xA3, 0x22, 0x65, 0x1E, + 0x60, 0xF4, 0xB6, 0x78, 0x90, 0xE5, 0xED, 0x7A, + 0x0F, 0xBF, 0x75, 0x36, 0xC3, 0xFD, 0x50, 0xD0, + 0xB0, 0x65, 0x8D, 0x7C, 0xCF, 0x27, 0x5E, 0x8A, + 0x9E, 0x9F, 0xBB, 0x99, 0xBE, 0x2E, 0x5F, 0x5E, + 0x16, 0x7B, 0xE2, 0x90, 0xB7, 0xE9, 0x67, 0x32, + 0xF8, 0x9E, 0x40, 0xD7, 0x85, 0xAF, 0x25, 0xC1, + 0xBA, 0x61, 0xA7, 0x78, 0x6D, 0x3E, 0xF2, 0xD0, + 0xC1, 0x14, 0xD1, 0x04, 0x8E, 0x76, 0x46, 0xDF, + 0xA3, 0x03, 0x2B, 0xFB, 0x7A, 0x51, 0xA6, 0x36, + 0x05, 0xDC, 0xE3, 0xE1, 0xD8, 0x98, 0x95, 0x00, + 0xD6, 0xE5, 0x8E, 0x96, 0x05, 0x19, 0x93, 0x1D, + 0xAC, 0x9F, 0x14, 0xDD, 0xA4, 0x28, 0xF5, 0xA2, + 0xC9, 0xC7, 0x4D, 0x91, 0x6D, 0x90, 0x77, 0x07, + 0xB5, 0x3E, 0xB5, 0x2C, 0x44, 0xAD, 0x71, 0xD7, + 0x27, 0x82, 0x6E, 0xB2, 0xCA, 0x68, 0x07, 0x0A, + 0x6F, 0x0E, 0x47, 0xFA, 0x16, 0xE5, 0x2E, 0x96, + 0x29, 0xB7, 0xAA, 0x82, 0x41, 0xDA, 0xAB, 0xB1, + 0x94, 0x97, 0xA5, 0x82, 0x4E, 0x58, 0xD7, 0x26, + 0x75, 0xC3, 0xA6, 0x7E, 0x10, 0xA1, 0x19, 0xB2, + 0x74, 0xB8, 0x4D, 0x9B, 0xEE, 0x28, 0x71, 0x72, + 0x8E, 0xD2, 0xF9, 0x4F, 0x85, 0x59, 0xB9, 0x7F, + 0x97, 0x9A, 0xE8, 0x82, 0xEA, 0x54, 0x99, 0x28, + 0xD6, 0xB1, 0xA9, 0xA4, 0xE4, 0xA2, 0x29, 0xF6, + 0xEB, 0x3F, 0xB1, 0xA4, 0x34, 0xA0, 0xFA, 0xED, + 0xAD, 0x62, 0xB7, 0x03, 0x30, 0xCF, 0xCB, 0x24, + 0xCB, 0x34, 0x98, 0x80, 0x2A, 0x67, 0x9F, 0x8F, + 0x54, 0xBF, 0x83, 0xEF, 0x34, 0x47, 0x22, 0x96, + 0x91, 0x98, 0x31, 0xCA, 0xAD, 0x59, 0xEB, 0xE8, + 0x30, 0x82, 0xEA, 0xB6, 0x7D, 0x4A, 0xBD, 0x90, + 0x22, 0x9A, 0x5E, 0x93, 0xA0, 0xB5, 0x80, 0x97, + 0x7F, 0x08, 0x13, 0xCC, 0xB1, 0x5E, 0xCD, 0x74, + 0xFF, 0x71, 0x5F, 0xE8, 0xDB, 0x5B, 0x05, 0xCE, + 0xF3, 0x7D, 0x34, 0x93, 0xBE, 0xDA, 0x27, 0x05, + 0x84, 0x94, 0x4C, 0x02, 0x09, 0x86, 0x34, 0x51, + 0x4D, 0xAA, 0xCE, 0x70, 0x47, 0xE4, 0x74, 0x32, + 0xF9, 0x2A, 0xDC, 0xA4, 0x91, 0xA3, 0xE0, 0x96, + 0x1A, 0x5D, 0x9F, 0x01, 0x44, 0x85, 0x2E, 0x46, + 0x32, 0x63, 0x35, 0xE2, 0x15, 0x24, 0x3D, 0xAA, + 0xE8, 0x37, 0x92, 0x7F, 0xBF, 0xDC, 0xE6, 0x91, + 0xF4, 0x98, 0x59, 0x26, 0x6E, 0x90, 0x08, 0x16, + 0x8C, 0x6A, 0x5E, 0x2F, 0x60, 0x9C, 0x80, 0xC6, + 0x8E, 0x08, 0x20, 0xE7, 0x27, 0x19, 0xE9, 0xB5, + 0x87, 0x3F, 0xA1, 0x99, 0xE1, 0x97, 0xF9, 0xC4, + 0x94, 0xAA, 0x8A, 0x3A, 0x65, 0x26, 0x9E, 0x95, + 0xB7, 0x61, 0xB6, 0x7B, 0xEC, 0x61, 0x13, 0xC1, + 0x44, 0xA5, 0x69, 0x89, 0xC5, 0x75, 0x0D, 0x45, + 0x05, 0x42, 0xCC, 0xF8, 0x1B, 0x24, 0x62, 0x09, + 0x2F, 0x70, 0x71, 0x5D, 0x49, 0x14, 0xEB, 0x2C, + 0xAA, 0x31, 0x74, 0xBC, 0x9E, 0xEB, 0x20, 0xAA, + 0xB6, 0xC6, 0x40, 0xF8, 0xB5, 0xD9, 0xC6, 0xA0, + 0xDC, 0xC6, 0xF0, 0xAE, 0xC9, 0x7B, 0x3A, 0xF6, + 0x47, 0xEB, 0xF8, 0x00, 0x34, 0xA4, 0x3B, 0xF3, + 0x19, 0xBF, 0x40, 0xAD, 0xF7, 0x9A, 0xFE, 0xAB, + 0x58, 0x90, 0xD2, 0x02, 0x3B, 0xAE, 0x02, 0xC9, + 0xFD, 0x02, 0xC5, 0xBB, 0x65, 0x87, 0x9C, 0x1B, + 0x5E, 0xA4, 0x06, 0x02, 0x9A, 0xE7, 0x78, 0x45, + 0xCB, 0x99, 0x4D, 0xB8, 0xC3, 0x52, 0x11, 0xCA, + 0x1D, 0xC8, 0x81, 0xF7, 0xF2, 0x0A, 0x47, 0x06, + 0x50, 0x5F, 0x29, 0xD9, 0xCD, 0x19, 0x89, 0xAD, + 0x42, 0xB0, 0x7E, 0xF5, 0x2D, 0x96, 0x54, 0xE2, + 0x8E, 0x3D, 0xCB, 0x83, 0x00, 0x08, 0xA1, 0xBE, + 0x31, 0x99, 0x38, 0x7E, 0x06, 0x6B, 0x28, 0xB3, + 0x15, 0xCA, 0x19, 0x02, 0xF4, 0xBB, 0x0E, 0xE6, + 0x3F, 0xDC, 0x4C, 0x93, 0xE1, 0xAB, 0x88, 0x6F, + 0xD7, 0x42, 0x52, 0x61, 0xC3, 0x7A, 0xC5, 0x87, + 0x62, 0xD0, 0x3D, 0xB6, 0x07, 0x06, 0x88, 0x7E, + 0x72, 0xCF, 0x74, 0x5A, 0x44, 0x6D, 0xF6, 0xC6, + 0x66, 0x2F, 0x53, 0xDD, 0x61, 0x24, 0x71, 0xA4, + 0x34, 0xAC, 0x56, 0xC4, 0xBE, 0xDB, 0x3C, 0x9F, + 0x36, 0x47, 0xE6, 0x03, 0x2B, 0x3C, 0xC0, 0x99, + 0x0A, 0x3A, 0x2E, 0x87, 0x05, 0x2B, 0x36, 0xD4, + 0xA1, 0x62, 0x42, 0x4E, 0x2D, 0x39, 0x9E, 0x1B, + 0xC2, 0x37, 0x92, 0x8D, 0x0B, 0xD7, 0x71, 0x58, + 0x07, 0x9C, 0xCB, 0x20, 0x8B, 0x71, 0x95, 0x07, + 0x96, 0x55, 0xBD, 0xB7, 0x6C, 0xBA, 0xFF, 0x44, + 0x7C, 0x34, 0xC5, 0x82, 0x9F, 0xAC, 0x19, 0x9B, + 0xB0, 0x27, 0xA0, 0x80, 0x06, 0x50, 0x8D, 0x56, + 0xC8, 0x1D, 0x18, 0x70, 0x90, 0xE7, 0x10, 0x24, + 0xDB, 0x7F, 0xBF, 0x3A, 0x7D, 0x64, 0xD8, 0xFA, + 0x48, 0x74, 0xA8, 0xF4, 0x70, 0x37, 0x7B, 0x15, + 0x38, 0x00, 0x96, 0x82, 0x2F, 0xFE, 0x46, 0x55, + 0x71, 0xB5, 0x0C, 0x54, 0x05, 0x58, 0xBA, 0x50, + 0xE9, 0x0E, 0xB8, 0x14, 0x52, 0xF4, 0x12, 0x75, + 0xC2, 0x51, 0x5B, 0xAE, 0x05, 0x92, 0xD5, 0x3F, + 0x6A, 0x6A, 0x34, 0xD2, 0xA3, 0x4D, 0x8E, 0xAC, + 0x6E, 0x7A, 0x03, 0xFB, 0xDB, 0x52, 0x49, 0x4F, + 0x4B, 0x98, 0x1B, 0x56, 0xC0, 0x96, 0x26, 0x08, + 0x48, 0x50, 0xC7, 0xCF, 0x96, 0x2F, 0x93, 0x10, + 0x72, 0x25, 0x15, 0xA6, 0x2A, 0xC0, 0x85, 0xA6, + 0x18, 0x9A, 0xDD, 0xEA, 0x38, 0x12, 0x91, 0x13, + 0x57, 0x31, 0xB2, 0xEE, 0x83, 0xA4, 0xF1, 0xEB, + 0xFA, 0x09, 0xAF, 0x80, 0xA9, 0x12, 0x68, 0xA8, + 0x76, 0x23, 0xCB, 0x55, 0x7C, 0x9F, 0x66, 0xDE, + 0xB4, 0x54, 0xFB, 0x2F, 0x4F, 0xC2, 0x64, 0x8F, + 0x44, 0x41, 0x5A, 0x7B, 0xEF, 0x29, 0x96, 0x2D, + 0x5F, 0x7C, 0x16, 0xE7, 0x85, 0x79, 0xF5, 0x26, + 0xDD, 0x20, 0xE9, 0x20, 0x9B, 0x6C, 0xA6, 0xDF, + 0xD1, 0x30, 0xF9, 0x2E, 0xF7, 0x24, 0x64, 0x5B, + 0x5B, 0x84, 0xD8, 0x72, 0x4F, 0x3C, 0xF6, 0xF3, + 0xA3, 0xB2, 0xA9, 0xCF, 0x61, 0x24, 0x7A, 0x54, + 0xBA, 0x92, 0x8F, 0x53, 0xEA, 0xCB, 0xA7, 0xE6, + 0xD6, 0xB8, 0x12, 0xC4, 0xCE, 0x21, 0xA1, 0x8B, + 0xA8, 0xD1, 0x14, 0x50, 0xE7, 0x04, 0x89, 0xBA, + 0x57, 0x2E, 0x5E, 0xB9, 0xA7, 0x72, 0x2D, 0x9D, + 0xC6, 0xAA, 0xE4, 0xF9, 0x57, 0x93, 0x60, 0x09, + 0xE2, 0x6E, 0xB3, 0xE7, 0x4D, 0x9F, 0x99, 0x33, + 0xF3, 0xDB, 0x4D, 0xA0, 0xA1, 0xF5, 0x44, 0x93, + 0x99, 0xB5, 0xE1, 0x01, 0x03, 0x11, 0xF8, 0x7D, + 0x92, 0xC1, 0x87, 0xAD, 0x2E, 0xFA, 0xBB, 0x0A, + 0x2C, 0x86, 0xB7, 0xD7, 0xF9, 0xA0, 0x72, 0xAB, + 0xC0, 0xC6, 0x60, 0x6D, 0xBC, 0xD9, 0x20, 0x17, + 0x7A, 0x22, 0x57, 0x20, 0xA7, 0x05, 0x76, 0xB8, + 0xE8, 0x2D, 0x7D, 0x53, 0xC1, 0xDF, 0xA4, 0x8E, + 0xA7, 0x31, 0x81, 0xAF, 0x0A, 0xF0, 0x86, 0xB6, + 0xAA, 0xF8, 0x0A, 0xB2, 0x49, 0x81, 0xF2, 0x75, + 0xD6, 0x6D, 0x4F, 0xBD, 0xE2, 0xC5, 0x1A, 0xE8, + 0xE8, 0xD4, 0x58, 0x33, 0x72, 0x9F, 0x45, 0x03, + 0x01, 0x30, 0xBC, 0x85, 0xB2, 0xBD, 0x9A, 0x14, + 0xC8, 0x13, 0xA3, 0x7F, 0x1F, 0xA1, 0x47, 0xF8, + 0x15, 0x48, 0x8D, 0x7A, 0x17, 0xC0, 0xC0, 0x39, + 0xEA, 0xF8, 0x66, 0xCE, 0xA7, 0x5F, 0x5B, 0x2E, + 0xBE, 0x05, 0xEF, 0x31, 0x09, 0x47, 0x2B, 0xA5, + 0xF7, 0xCF, 0xCE, 0x4C, 0x35, 0x8B, 0x60, 0x80, + 0x40, 0x0C, 0x5C, 0xC0, 0x85, 0x15, 0x14, 0x92, + 0xD1, 0x3A, 0x5B, 0x00, 0x96, 0xA0, 0x63, 0x1F, + 0xAA, 0x30, 0xCB, 0x48, 0xF2, 0xDA, 0x87, 0x3B, + 0x85, 0x7D, 0xFD, 0xB3, 0x86, 0xD9, 0x33, 0x98, + 0x18, 0x07, 0x34, 0x92, 0x55, 0x9A, 0x0E, 0xC2, + 0xDA, 0xF3, 0x73, 0x8E, 0x15, 0x88, 0xB0, 0x98, + 0x75, 0x1F, 0xF0, 0xFA, 0x1C, 0x87, 0x1B, 0x22, + 0x23, 0x7E, 0x5C, 0xD1, 0x5B, 0x0E, 0x17, 0x28, + 0xEA, 0x26, 0x71, 0x66, 0xC3, 0x8A, 0x71, 0x97, + 0xB6, 0xCC, 0x7D, 0xAD, 0x39, 0x11, 0x6B, 0xE6, + 0x1D, 0xF4, 0x33, 0x3C, 0xD7, 0xC2, 0xA4, 0x13, + 0xDB, 0x30, 0x63, 0xD7, 0xF0, 0x22, 0x8C, 0x61, + 0xFA, 0xDA, 0xC3, 0xF8, 0xC3, 0x31, 0xF4, 0x45, + 0x09, 0xB4, 0xD6, 0x08, 0x53, 0x1F, 0x99, 0x5D, + 0x15, 0xFA, 0xB1, 0x19, 0xD8, 0x47, 0xE6, 0xD8, + 0x54, 0x95, 0x75, 0xB7, 0xD8, 0x50, 0xB2, 0x60, + 0x0E, 0x4D, 0x13, 0x64, 0x6C, 0xF9, 0x6B, 0x6B, + 0x9D, 0xA6, 0xC6, 0x2F, 0x2A, 0x80, 0xAE, 0x02, + 0x58, 0xA8, 0xCD, 0x6E, 0xF4, 0xC5, 0x5E, 0xEA, + 0x7E, 0x78, 0xD2, 0x0A, 0x46, 0x4A, 0x19, 0x4C, + 0xEC, 0xBB, 0x01, 0xE7, 0x3F, 0x32, 0x76, 0xD6, + 0x6E, 0x12, 0xAD, 0x37, 0x74, 0x51, 0xBB, 0xB9, + 0x4E, 0x5C, 0x94, 0x88, 0x32, 0x59, 0x5F, 0x6B, + 0x6E, 0x38, 0x2A, 0xD1, 0x42, 0xD9, 0xF1, 0xB8, + 0x68, 0x97, 0x95, 0xE9, 0xEB, 0xC3, 0x2A, 0x5A, + 0x10, 0x1E, 0x69, 0x6C, 0xA3, 0x4A, 0xBA, 0x00, + 0x5B, 0x4C, 0xED, 0xA2, 0x7D, 0x12, 0x00, 0xFE, + 0x48, 0xFD, 0x82, 0xC1, 0x72, 0x17, 0xE5, 0x08, + 0xA8, 0x48, 0x4F, 0x03, 0x88, 0x34, 0x5C, 0x9D, + 0xED, 0xE2, 0xA1, 0x39, 0x28, 0xFA, 0xC3, 0x29, + 0x21, 0x84, 0x2F, 0x6E, 0x6A, 0xA5, 0xCF, 0xBF, + 0x57, 0xFA, 0xA2, 0x8F, 0x43, 0xE0, 0x5E, 0x9A, + 0x45, 0x23, 0x12, 0x50, 0x29, 0x11, 0xEF, 0x9C, + 0x33, 0xC8, 0x11, 0xEB, 0xE7, 0xCA, 0xD7, 0x30, + 0x62, 0x3D, 0xB7, 0x04, 0x8E, 0xC2, 0x18, 0xC7, + 0xEA, 0x9D, 0xFC, 0x6E, 0x19, 0x65, 0xA9, 0x85, + 0x7E, 0x92, 0x94, 0xC4, 0xE4, 0x7F, 0x4D, 0x96, + 0x23, 0xCB, 0x74, 0xB6, 0x5F, 0x7B, 0xB5, 0x86, + 0x22, 0x83, 0x8D, 0xC4, 0x4E, 0x16, 0xD9, 0x15, + 0xD9, 0x59, 0x65, 0x55, 0xCA, 0x3D, 0x26, 0x1C, + 0x9C, 0x2A, 0xFC, 0xCB, 0xAF, 0x5A, 0xC0, 0x3D, + 0xE0, 0x91, 0xF0, 0xDB, 0xEA, 0xE1, 0xB4, 0xA7, + 0xE3, 0xDE, 0xC4, 0x39, 0x09, 0x89, 0x67, 0x65, + 0x77, 0xA0, 0x53, 0x68, 0x4F, 0x57, 0x86, 0x8D, + 0x91, 0xFE, 0x6A, 0x5B, 0x7D, 0x3D, 0x7C, 0x79, + 0x50, 0x78, 0x9E, 0x89, 0xD8, 0x38, 0x83, 0xBC, + 0x3D, 0xAE, 0x55, 0xCA, 0x30, 0x78, 0xB0, 0x8D, + 0x99, 0x18, 0x31, 0xBA, 0x91, 0x50, 0x2A, 0x5A, + 0x33, 0x54, 0xB8, 0x8E, 0x15, 0x9B, 0x0A, 0xFF, + 0xD2, 0x5B, 0x0D, 0xBB, 0x72, 0xBC, 0xD6, 0xF4, + 0x04, 0x65, 0xDD, 0xFC, 0x00, 0xFF, 0x8B, 0x63, + 0x39, 0xC0, 0x67, 0x09, 0x5D, 0x6C, 0x7C, 0xB0, + 0x6F, 0x3B, 0xE7, 0x59, 0xC5, 0x27, 0x40, 0x39, + 0x5D, 0xD1, 0x08, 0x29, 0x6F, 0x2B, 0xBC, 0x2E, + 0x7A, 0x5D, 0xDD, 0xE3, 0xD1, 0xC3, 0x5D, 0x18, + 0xBF, 0xBE, 0x39, 0x68, 0xEC, 0x59, 0xAB, 0xF8, + 0x5C, 0x1B, 0xD2, 0x92, 0x8A, 0xB2, 0xAA, 0x67, + 0x8A, 0x78, 0x91, 0x74, 0x6E, 0x88, 0xF4, 0x39, + 0xF8, 0xB4, 0x38, 0x40, 0x31, 0xC3, 0xED, 0xB7, + 0x31, 0x97, 0xE5, 0x2A, 0x4E, 0x77, 0x3D, 0x2D, + 0x8B, 0x7B, 0xAD, 0xDC, 0x5D, 0xD0, 0xA7, 0xE4, + 0x4C, 0x80, 0x8D, 0x73, 0xB8, 0x18, 0x1D, 0x19, + 0x1C, 0x3C, 0x89, 0xFE, 0x15, 0xEA, 0x90, 0xD7, + 0x56, 0x7E, 0x89, 0x16, 0xA3, 0x37, 0x83, 0x03, + 0x05, 0x04, 0x1B, 0x1E, 0x94, 0xB3, 0xB4, 0x06, + 0xDA, 0x4C, 0x36, 0xBE, 0xF0, 0x5D, 0x91, 0x00, + 0xAB, 0x99, 0x2A, 0x4D, 0x56, 0x25, 0x33, 0x73, + 0x0E, 0x0D, 0x8C, 0x05, 0x2B, 0x3A, 0x62, 0xD3, + 0xF6, 0x9A, 0x83, 0xA0, 0xC9, 0xB2, 0x12, 0x4F, + 0x12, 0xAE, 0x7D, 0xAC, 0xC9, 0x78, 0xC4, 0xA0, + 0xAD, 0xCC, 0x2E, 0xBA, 0x2D, 0x80, 0xF4, 0x94, + 0xAA, 0x16, 0xEC, 0x1E, 0x8E, 0x71, 0xC7, 0x9B, + 0x02, 0xF3, 0x26, 0x1B, 0x6F, 0x98, 0x68, 0xB8, + 0xD5, 0x7E, 0x9D, 0x16, 0xF4, 0x2B, 0x7C, 0xC6, + 0x64, 0x06, 0x54, 0x9A, 0x27, 0x6D, 0x37, 0x14, + 0x37, 0xDE, 0x88, 0xB7, 0xF3, 0x9E, 0x74, 0x08, + 0x7C, 0xBB, 0xC5, 0x61, 0x16, 0x80, 0x31, 0x2D, + 0xE8, 0xF0, 0xC3, 0x68, 0x14, 0xE1, 0x74, 0xF9, + 0x1E, 0xB6, 0x00, 0xCC, 0x96, 0xE3, 0xCF, 0x51, + 0xBB, 0x20, 0x25, 0x88, 0x77, 0xA2, 0xAA, 0xEB, + 0x82, 0x7F, 0x7F, 0x5A, 0xDA, 0x80, 0x78, 0x6B, + 0x50, 0x84, 0xC8, 0x02, 0xE6, 0x06, 0xDE, 0xF3, + 0x88, 0xA3, 0x9C, 0xE4, 0xF0, 0xD5, 0xBC, 0x19, + 0x39, 0x4C, 0xE8, 0x41, 0xE2, 0xD2, 0xAA, 0x74, + 0x25, 0x23, 0x05, 0x80, 0xFA, 0x66, 0x75, 0xC5, + 0x17, 0x41, 0xD1, 0x75, 0x87, 0x9B, 0x4D, 0x03, + 0xC3, 0x90, 0xF6, 0x52, 0xA5, 0x03, 0xA7, 0x51, + 0x6A, 0x1F, 0x07, 0x5E, 0x30, 0x82, 0xD5, 0x2C, + 0x60, 0xB8, 0x64, 0x2A, 0x82, 0x40, 0xEE, 0x94, + 0x4D, 0x5F, 0xB4, 0x27, 0x37, 0x6B, 0x40, 0xB0, + 0xB2, 0x82, 0xE1, 0x9A, 0xB9, 0x08, 0xCC, 0xF2, + 0x0C, 0xA9, 0x26, 0x11, 0x64, 0x90, 0xAF, 0xED, + 0x57, 0xEA, 0xD0, 0xDC, 0x0C, 0x8E, 0x29, 0x6C, + 0x79, 0xA4, 0x8D, 0x08, 0x8E, 0x83, 0x7A, 0xF0, + 0x67, 0xDC, 0x02, 0x9E, 0xC6, 0x31, 0xF9, 0x93, + 0x3E, 0xE4, 0xD2, 0x07, 0x46, 0xE6, 0x4E, 0x5F, + 0x21, 0x67, 0x55, 0xA1, 0x38, 0x97, 0x4D, 0x30, + 0x82, 0x93, 0x73, 0x6D, 0xC1, 0x86, 0x04, 0x27, + 0x6C, 0xC4, 0x18, 0xBA, 0x69, 0xF8, 0x72, 0xB5, + 0x8E, 0x7F, 0x6E, 0x3A, 0x8B, 0x84, 0x6E, 0xBA, + 0xAE, 0xB3, 0x83, 0xE7, 0xF8, 0x90, 0xF5, 0x4E, + 0x77, 0xF5, 0xD7, 0xF5, 0xD4, 0xA5, 0x8D, 0xB7, + 0x83, 0xEC, 0xA0, 0x49, 0xF1, 0x86, 0x17, 0x12, + 0x82, 0xBA, 0xC2, 0x60, 0x7D, 0x51, 0xB2, 0x98, + 0xB1, 0x49, 0x38, 0xEF, 0xB1, 0x92, 0x8F, 0xC8, + 0xD0, 0x78, 0x06, 0xE8, 0xC3, 0xE7, 0x3B, 0x46, + 0x46, 0xBC, 0xF1, 0x68, 0x90, 0xCC, 0x13, 0x80, + 0xE7, 0xB6, 0x33, 0x50, 0x2B, 0x3E, 0xAD, 0xA4, + 0x47, 0x75, 0x02, 0xE2, 0x46, 0x7C, 0xFD, 0xB9, + 0xAC, 0xBD, 0x1C, 0x72, 0xBC, 0x6A, 0xEB, 0x4F, + 0x41, 0xE1, 0xC2, 0x3C, 0x63, 0x68, 0x39, 0xE3, + 0x57, 0x13, 0x5F, 0x76, 0xBC, 0x39, 0xC4, 0xF9, + 0xAC, 0x1C, 0xE8, 0xF1, 0xBE, 0xEF, 0xEB, 0xFF, + 0x87, 0x59, 0xE8, 0xF7, 0x19, 0x65, 0xD4, 0x85, + 0x4B, 0xEA, 0xAD, 0x0A, 0xFE, 0xDC, 0xA9, 0xD4, + 0xD6, 0xBD, 0x1E, 0x63, 0xD3, 0x48, 0xA4, 0x2C, + 0xEE, 0xFF, 0xC1, 0x70, 0xD0, 0xEE, 0x9F, 0x13, + 0x6F, 0x5B, 0xE9, 0x90, 0x14, 0x66, 0x92, 0x61, + 0x22, 0xF9, 0x48, 0xBD, 0xDE, 0x2A, 0x91, 0x07, + 0xD2, 0xA9, 0x8B, 0xA2, 0xDE, 0xA6, 0xD6, 0xF2, + 0xDA, 0x17, 0x72, 0x47, 0x02, 0xEC, 0x51, 0x8C, + 0x03, 0x75, 0x3D, 0x51, 0xEA, 0x83, 0x1E, 0x95, + 0xCB, 0x87, 0x08, 0xD5, 0xDE, 0xC8, 0x22, 0xDB, + 0x73, 0x7E, 0x44, 0x14, 0x3C, 0x86, 0xF4, 0x71, + 0x77, 0xD8, 0x5C, 0xD0, 0x98, 0xC2, 0x1B, 0x9B, + 0xC8, 0x00, 0xDF, 0xA9, 0xDC, 0x26, 0xFD, 0xC2, + 0x61, 0xE9, 0x21, 0xDE, 0x00, 0x2D, 0x81, 0xC1, + 0x59, 0xF8, 0xEB, 0x1F, 0xEE, 0x67, 0x67, 0x9D, + 0x62, 0x1E, 0xCE, 0x6B, 0x36, 0xD0, 0x1C, 0x77, + 0x5A, 0x16, 0x45, 0xD5, 0x22, 0x92, 0xB4, 0xB2, + 0xB8, 0x22, 0x73, 0x18, 0x77, 0x2A, 0x80, 0x91, + 0xE9, 0xEC, 0x01, 0x70, 0x13, 0xB1, 0x95, 0xEB, + 0xF4, 0xEF, 0x20, 0x1F, 0x4E, 0x88, 0x1C, 0x49, + 0x36, 0x33, 0xC0, 0x7F, 0x27, 0xC9, 0x79, 0x0D, + 0xD8, 0xAE, 0xCC, 0x94, 0x49, 0xCF, 0x63, 0xBC, + 0xB1, 0x19, 0x46, 0x16, 0x9A, 0xCF, 0xF3, 0x95, + 0x42, 0x26, 0x6B, 0x0C, 0x66, 0x85, 0xBB, 0xB0, + 0x80, 0xB5, 0x9F, 0x11, 0x7E, 0xEB, 0x2A, 0x73, + 0x38, 0x2B, 0x3D, 0x18, 0x7C, 0x06, 0x80, 0xC5, + 0xAE, 0x70, 0x90, 0x70, 0xDF, 0x03, 0xA0, 0x08, + 0xA7, 0xAD, 0x13, 0x22, 0x6F, 0x3C, 0x37, 0x15, + 0x39, 0x20, 0x52, 0xF2, 0x44, 0x1B, 0x4A, 0x17, + 0x8D, 0x7C, 0xF7, 0x05, 0x18, 0x33, 0x9C, 0xFF, + 0xBB, 0x54, 0xA6, 0xD9, 0xB9, 0xCD, 0xE3, 0xB0, + 0xB5, 0x7D, 0xBC, 0x79, 0xF4, 0xE4, 0x7A, 0xD6, + 0x27, 0x4C, 0xE2, 0x18, 0x0C, 0x92, 0xAC, 0x64, + 0x10, 0xE5, 0x0D, 0x05, 0xF6, 0x66, 0x5A, 0x57, + 0xD4, 0xD4, 0x47, 0x6C, 0x2C, 0x0E, 0x6E, 0xE0, + 0x75, 0x7A, 0x3A, 0xFE, 0xA2, 0xB1, 0xBF, 0x86, + 0xA5, 0x51, 0xEF, 0x98, 0xAA, 0x1D, 0xFC, 0xBA, + 0x96, 0x31, 0x59, 0x59, 0x45, 0x2B, 0x2B, 0x3A, + 0x2F, 0xCB, 0xBB, 0x95, 0x5C, 0xB3, 0xFA, 0x1E, + 0xEB, 0xBB, 0x83, 0xBD, 0x17, 0x87, 0x67, 0xC0, + 0x2E, 0xFB, 0xBE, 0xFF, 0x6C, 0x7E, 0xEF, 0x94, + 0xB5, 0x5D, 0xF8, 0x83, 0x1D, 0xDF, 0xB7, 0xB2, + 0x02, 0xCE, 0x7D, 0xE0, 0x55, 0xEA, 0xF9, 0x92, + 0x8A, 0xDA, 0xF6, 0xED, 0x0E, 0x31, 0x59, 0xCA, + 0x56, 0xC4, 0x83, 0xFA, 0x3B, 0xA3, 0xD2, 0x47, + 0x8C, 0xA3, 0x94, 0x82, 0x4C, 0xEE, 0x6A, 0xBD, + 0x59, 0x67, 0x09, 0x53, 0xEE, 0x80, 0xD3, 0x83, + 0xAA, 0xA6, 0x08, 0xE1, 0x58, 0x51, 0x13, 0x5C, + 0x1C, 0xDE, 0xEE, 0xB5, 0xF6, 0xA8, 0x89, 0x7C, + 0x3C, 0x9E, 0x06, 0x6A, 0xB4, 0x73, 0x4F, 0xDD, + 0xFA, 0xBC, 0x3B, 0xC3, 0xBA, 0x12, 0x06, 0xBA, + 0x54, 0x34, 0xDC, 0xDE, 0xDB, 0x9D, 0x8B, 0x3A, + 0x81, 0xA2, 0xE6, 0x38, 0x14, 0x6D, 0x83, 0xF1, + 0x4F, 0x06, 0xE5, 0x60, 0x99, 0xC0, 0xC8, 0xA0, + 0xFC, 0xCD, 0xB9, 0xEC, 0xF0, 0xF3, 0xD8, 0x8D, + 0xE3, 0x79, 0x2F, 0x2D, 0x0B, 0x65, 0x1B, 0x61, + 0x9C, 0x57, 0x1B, 0x69, 0xF4, 0xBF, 0x8E, 0x7C, + 0xD1, 0x91, 0x0F, 0x26, 0x6A, 0x4D, 0xAD, 0xF8, + 0xC2, 0xAB, 0xB4, 0xAC, 0x05, 0xBD, 0x1F, 0xBA, + 0x05, 0x8C, 0x03, 0x94, 0xC0, 0x16, 0xDE, 0xE6, + 0x0C, 0x66, 0x40, 0x1A, 0x17, 0xD1, 0x34, 0x59, + 0x54, 0x79, 0x33, 0x38, 0x9A, 0x35, 0x65, 0x69, + 0xAD, 0xA5, 0x32, 0xC9, 0xF4, 0x87, 0x69, 0x88, + 0x55, 0xA4, 0xD7, 0xBC, 0xCD, 0x0E, 0xF6, 0x95, + 0x31, 0x09, 0x4D, 0xA4, 0x08, 0x6F, 0x52, 0xBF, + 0x98, 0xCD, 0xC9, 0xA4, 0xB0, 0xBC, 0x88, 0x8D, + 0xC3, 0x89, 0x1A, 0x76, 0x09, 0x6C, 0x7C, 0x48, + 0x34, 0x90, 0xE9, 0x52, 0x32, 0x6A, 0xE4, 0x02, + 0xD8, 0xDF, 0xD2, 0xF3, 0xDC, 0xCF, 0x1A, 0xA5, + 0xD7, 0xBD, 0x69, 0x8E, 0x2A, 0xA8, 0x8D, 0x29, + 0x48, 0x13, 0xA8, 0x8F, 0xD3, 0x18, 0x66, 0xBC, + 0xA1, 0x1B, 0x3B, 0x91, 0xC0, 0x09, 0xEE, 0xB6, + 0x67, 0x60, 0x1C, 0xEE, 0xAF, 0xAF, 0xE9, 0x7C, + 0x56, 0xFA, 0x33, 0xF9, 0x38, 0x1F, 0x3E, 0x43, + 0x29, 0x90, 0x1A, 0xC3, 0xB7, 0xEA, 0x70, 0x32, + 0xC0, 0x19, 0xE5, 0xC8, 0xA8, 0xEF, 0xD7, 0x04, + 0x4C, 0x97, 0x36, 0x44, 0xAF, 0x2B, 0xE4, 0x20, + 0xA0, 0x33, 0xC6, 0xC2, 0xC7, 0xCE, 0x0C, 0xEA, + 0x39, 0x34, 0xDC, 0x18, 0xB4, 0x2A, 0xDF, 0xD7, + 0xA8, 0x46, 0xF4, 0x2D, 0xD4, 0x06, 0x86, 0x6A, + 0x39, 0x09, 0x29, 0x02, 0x6A, 0xDE, 0x5C, 0x79, + 0x1B, 0x5F, 0x61, 0xF9, 0x42, 0xB1, 0x55, 0x07, + 0x7D, 0x82, 0xF2, 0xAF, 0xCC, 0xFF, 0xF8, 0x5B, + 0x04, 0x06, 0x64, 0x7A, 0x96, 0x27, 0xE3, 0x69, + 0x5D, 0x4B, 0xEA, 0x3D, 0x58, 0xA6, 0x3E, 0x17, + 0x18, 0xD1, 0x84, 0xE4, 0x6B, 0x5F, 0x4B, 0xC8, + 0x41, 0x03, 0x34, 0xA4, 0x09, 0x5D, 0x0F, 0xAF, + 0x30, 0x6F, 0xB9, 0xDC, 0x10, 0x94, 0x25, 0xC3, + 0x16, 0x52, 0xD0, 0x6F, 0xF0, 0x51, 0xA1, 0x62, + 0xEE, 0x2B, 0x7B, 0x1C, 0x54, 0xD6, 0xC7, 0xDE, + 0xD6, 0xE3, 0x95, 0xAA, 0xD1, 0xA8, 0x6D, 0x03, + 0xB1, 0xB6, 0xC8, 0x00, 0x76, 0x7E, 0xC1, 0x44, + 0x12, 0xEE, 0xCE, 0x13, 0x46, 0x20, 0xA6, 0x1D, + 0x36, 0x9A, 0xF4, 0x9E, 0x21, 0xB0, 0xD1, 0x4B, + 0xC4, 0x23, 0x06, 0x49, 0xCD, 0xD3, 0xE9, 0xFD, + 0x84, 0x7A, 0xE5, 0x0B, 0xE9, 0x62, 0xEF, 0xC8, + 0xCB, 0x0F, 0x33, 0x9F, 0x9E, 0x6D, 0x32, 0x47, + 0x53, 0x3B, 0xDE, 0xD8, 0x71, 0x1D, 0x46, 0x1D, + 0x4A, 0xF2, 0xAE, 0x3F, 0xDD, 0x1D, 0x7D, 0x2A, + 0x28, 0x9C, 0x78, 0xCB, 0x19, 0xF3, 0xCD, 0xC2, + 0x14, 0x2B, 0xF5, 0x2B, 0x23, 0xE6, 0xA2, 0x7B, + 0x39, 0xD6, 0x99, 0x54, 0x3C, 0x3D, 0x63, 0x9B, + 0x9C, 0x72, 0xCA, 0x80, 0xB3, 0x7E, 0xA2, 0x77, + 0x5B, 0x5E, 0x26, 0x81, 0xF0, 0xDD, 0x01, 0xDF, + 0xF0, 0xC0, 0x55, 0x13, 0x36, 0x90, 0x62, 0xFE + }; + static const byte msg_87[] = { + 0x9E, 0xFF, 0x34, 0x15, 0x06, 0xD1, 0x8B, 0xCB, + 0x27, 0xA7, 0xFC, 0x4E, 0xAA, 0xBF, 0x5A, 0x7C, + 0x4A, 0x59, 0x37, 0x77, 0x19, 0x6F, 0x66, 0x4B, + 0xCE, 0x31, 0x6C, 0x95, 0x5B, 0x83, 0x5A, 0xD4, + 0xC9, 0xF5, 0xDE, 0x9A, 0x2B, 0xF8, 0x96, 0x15, + 0xDA, 0xCB, 0x9C, 0x1E, 0x61, 0x8C, 0x78, 0xE7, + 0x11, 0x44, 0xCD, 0x4B, 0x70, 0x46, 0xF4, 0x7D, + 0x9A, 0x60, 0x0E, 0x9C, 0xE6, 0x65, 0x96, 0xC4, + 0xC5, 0x5E, 0xDA, 0x23, 0xA6, 0x6C, 0xC1, 0x18, + 0xA4, 0xA7, 0xBD, 0x0D, 0xED, 0x00, 0xAB, 0xDD, + 0xCE, 0x53, 0xFB, 0xF2, 0x48, 0x20, 0x33, 0xA4, + 0x18, 0x85, 0x06, 0xEC, 0x11, 0x3B, 0xBD, 0x98, + 0xD9, 0x89, 0x1F, 0x0D, 0x69, 0x46, 0x3A, 0x0D, + 0x36, 0x15, 0x6B, 0xA3, 0xEA, 0x0D, 0x02, 0xA1, + 0x4C, 0x1F, 0xD7, 0xA3, 0xFE, 0x70, 0x4E, 0xE5, + 0x6B, 0x44, 0x6A, 0xE1, 0x79, 0xF7, 0x2E, 0x10, + 0x4A, 0xA8, 0x1A, 0xF0, 0xA2, 0xF8, 0xFC, 0xA6, + 0xF6, 0xF9, 0x62, 0x96, 0x05, 0x9E, 0xE8, 0x82, + 0x66, 0x80, 0xE4, 0x3F, 0x4B, 0x07, 0x40, 0xF4, + 0x7A, 0xC1, 0x05, 0x66, 0xED, 0x31, 0x07, 0x99, + 0xAC, 0x71, 0x41, 0xD3, 0x8F, 0x69, 0x21, 0x31, + 0x5F, 0x23, 0xAB, 0x3E, 0x64, 0xC8, 0xA7, 0x70, + 0xAA, 0x57, 0x12, 0x80, 0x90, 0xDB, 0x82, 0x8C, + 0x7B, 0xAA, 0x59, 0xC3, 0x29, 0x5C, 0xCA, 0xA2, + 0x38, 0xC7, 0x5F, 0xAC, 0x0F, 0x93, 0xDA, 0x79, + 0x00, 0x74, 0x1B, 0xCD, 0x94, 0xBB, 0x9F, 0xD3, + 0x85, 0x2E, 0xC2, 0xB7, 0xD3, 0x3F, 0x60, 0x0B, + 0x1D, 0x51, 0x66, 0x6A, 0xE2, 0x22, 0xA5, 0x7A, + 0xF1, 0x40, 0xFA, 0x04, 0x9C, 0x2C, 0x9F, 0x6D, + 0x0F, 0xE6, 0xC0, 0xF1, 0xE7, 0xA0, 0xDD, 0xE1, + 0x14, 0x3B, 0xE5, 0xCE, 0xD7, 0xBB, 0xE2, 0x32, + 0xCB, 0xFB, 0xD8, 0xAE, 0x00, 0xEA, 0x5F, 0xC1, + 0x65, 0x02, 0x6D, 0x72, 0x9D, 0xB3, 0x0F, 0x6A, + 0xFD, 0x99, 0x73, 0xB6, 0x72, 0x2C, 0x07, 0xF6, + 0x00, 0x66, 0x54, 0x41, 0xE3, 0x0B, 0x7C, 0x5F, + 0xB2, 0x97, 0xB8, 0xAB, 0x96, 0x9C, 0x06, 0x83, + 0x9D, 0x33, 0x1D, 0xEE, 0x96, 0xDE, 0x48, 0x68, + 0x7D, 0xC9, 0xDA, 0x53, 0x1A, 0x95, 0xCA, 0x83, + 0xA7, 0x6F, 0x4B, 0x07, 0x6D, 0xFC, 0xF4, 0x83, + 0xF0, 0x04, 0x50, 0xE5, 0x1C, 0x8D, 0x34, 0xD8, + 0xED, 0x8E, 0x4B, 0x3D, 0xAF, 0xAE, 0x66, 0x4B, + 0x6D, 0xC1, 0x3E, 0xD8, 0x8E, 0x6D, 0x63, 0x02, + 0x7D, 0xD4, 0x38, 0xCB, 0x74, 0xF4, 0x12, 0xE8, + 0x70, 0xCC, 0x9D, 0xFD, 0x29, 0xB5, 0x2A, 0xBC, + 0xA1, 0x69, 0xC1, 0x7E, 0x97, 0x47, 0x58, 0xE0, + 0x3A, 0xC0, 0xFB, 0x7F, 0xE5, 0x64, 0x50, 0x8E, + 0x01, 0x7A, 0x9B, 0x47, 0x49, 0xD6, 0x41, 0xAF, + 0x0D, 0xE3, 0x84, 0x08, 0x8F, 0xA0, 0x0C, 0x69, + 0x40, 0x23, 0x3D, 0xDE, 0xFB, 0x65, 0x7C, 0x18, + 0x1C, 0x82, 0xA1, 0xB6, 0xA3, 0x1F, 0xCC, 0xF4, + 0xD5, 0x2C, 0x9D, 0x35, 0x1E, 0x6B, 0xDF, 0xDF, + 0x48, 0xBC, 0xE4, 0x14, 0x60, 0x74, 0x62, 0xDB, + 0x76, 0x9F, 0x9E, 0xB1, 0x59, 0x25, 0xBA, 0x9F, + 0xAF, 0xBA, 0xB2, 0x29, 0xB5, 0x89, 0x6B, 0xF1, + 0xF8, 0xE4, 0x7D, 0xF1, 0x7C, 0x82, 0x08, 0xDF, + 0xD5, 0x96, 0x04, 0xB6, 0x05, 0x2C, 0xD2, 0xCE, + 0xAB, 0x56, 0x40, 0x0F, 0x11, 0xC4, 0xD9, 0x52, + 0x1E, 0x1A, 0xB8, 0x27, 0x4A, 0xB5, 0x76, 0x4C, + 0x73, 0xE9, 0x41, 0x32, 0x42, 0x0E, 0x32, 0xB6, + 0xAE, 0xB0, 0x76, 0x33, 0x78, 0xD9, 0xBA, 0x68, + 0xE1, 0xFC, 0xDE, 0x2B, 0xD6, 0xDE, 0xDA, 0x39, + 0x17, 0xC0, 0x00, 0xAF, 0x39, 0xB7, 0x8F, 0x4C, + 0xCA, 0x7C, 0x8F, 0xBF, 0x94, 0xB4, 0xCB, 0x8A, + 0x81, 0x16, 0xEE, 0xEC, 0xFE, 0xF0, 0x13, 0x1E, + 0xC9, 0xF2, 0xDE, 0xDA, 0x01, 0x40, 0xC9, 0x02, + 0xA8, 0xD6, 0xE6, 0x0E, 0x98, 0xB3, 0xCD, 0x9D, + 0x9C, 0x75, 0x24, 0x8B, 0xF8, 0x84, 0x5A, 0xC0, + 0xD7, 0xE0, 0x6B, 0xA0, 0xE1, 0x83, 0x10, 0xFE, + 0xCE, 0x98, 0x62, 0x07, 0x54, 0x2C, 0xC1, 0xEE, + 0x08, 0x88, 0x43, 0xEF, 0x74, 0xA2, 0x6A, 0xEC, + 0xB6, 0xD0, 0x6F, 0x0F, 0xEF, 0xE1, 0xB7, 0x2C, + 0xF9, 0x33, 0x06, 0xC3, 0x2E, 0xD2, 0x8A, 0xEC, + 0xC5, 0x5B, 0xB1, 0x03, 0xA0, 0x84, 0x6D, 0x0C, + 0x84, 0x13, 0x6D, 0xB0, 0xB0, 0x54, 0xF3, 0xDE, + 0xA3, 0x9A, 0x72, 0x6C, 0x6F, 0xD6, 0x59, 0x7F, + 0x9B, 0x03, 0x8C, 0xC2, 0x38, 0x46, 0x01, 0x76, + 0x38, 0xF4, 0x43, 0x68, 0x81, 0x0D, 0x86, 0x29, + 0x3D, 0xDF, 0xE5, 0x48, 0x61, 0x53, 0x2F, 0x85, + 0xF5, 0x3F, 0x09, 0x30, 0x48, 0xC3, 0xE0, 0x09, + 0xC4, 0x32, 0x11, 0x27, 0xAD, 0xAA, 0xEC, 0x6A, + 0x5C, 0xCE, 0x03, 0xE0, 0xD9, 0xE9, 0x1D, 0xAC, + 0xCA, 0xBB, 0x2F, 0x50, 0xE0, 0x1E, 0xB2, 0xAC, + 0x2B, 0x39, 0x6D, 0x24, 0xB0, 0x5D, 0x45, 0x3B, + 0xD5, 0x1D, 0x52, 0x9F, 0xBA, 0x51, 0xE4, 0x6D, + 0x30, 0xC5, 0x66, 0x13, 0x00, 0x5A, 0xBF, 0x62, + 0x63, 0xB9, 0x8D, 0x8D, 0xFE, 0xB5, 0x26, 0x16, + 0xD1, 0xCB, 0x78, 0x92, 0x18, 0x1C, 0x2F, 0xC2, + 0xE2, 0x04, 0x3B, 0x99, 0x4C, 0x81, 0x66, 0x58, + 0x48, 0x2E, 0x06, 0x06, 0x34, 0x83, 0x78, 0xA3, + 0xCC, 0x85, 0x40, 0xE0, 0x20, 0x27, 0x3F, 0x10, + 0xB6, 0x9E, 0x20, 0x21, 0xA9, 0x2D, 0x9C, 0x36, + 0xCC, 0x9B, 0x97, 0x79, 0xFE, 0x8C, 0xE7, 0xA4, + 0x99, 0xAE, 0xB5, 0x3E, 0xC6, 0xDD, 0xB4, 0xF2, + 0xEC, 0x22, 0xBF, 0xB4, 0x52, 0xFC, 0x5E, 0x79, + 0x7D, 0x3A, 0x25, 0x33, 0x26, 0x00, 0x06, 0xFE, + 0x6D, 0xCC, 0xE4, 0xE9, 0x76, 0x65, 0xC6, 0x8C, + 0x39, 0x93, 0xDC, 0x7E, 0xA0, 0xBD, 0x4B, 0xDC, + 0xD2, 0x47, 0x21, 0xB0, 0x2B, 0x09, 0x02, 0xB1, + 0x84, 0x0D, 0xDE, 0xC5, 0x18, 0x20, 0x38, 0x76, + 0x2D, 0x55, 0xFC, 0x11, 0xB9, 0x87, 0x3A, 0x0D, + 0xD2, 0xEB, 0xBD, 0x55, 0xAD, 0xE3, 0x86, 0x5C, + 0xFF, 0x3D, 0x54, 0x5F, 0x76, 0x33, 0x53, 0x69, + 0xDD, 0x9E, 0x70, 0xB0, 0x73, 0x99, 0x77, 0xF6, + 0xE9, 0x8A, 0x61, 0x27, 0x19, 0x4A, 0x19, 0x26, + 0xA6, 0x97, 0xE4, 0x7F, 0x73, 0xE0, 0x4F, 0xF5, + 0xBD, 0x52, 0x5E, 0x8F, 0x17, 0x22, 0x00, 0x8F, + 0x7C, 0x15, 0x5C, 0xD3, 0xAD, 0xE0, 0xA5, 0xB6, + 0x6A, 0x31, 0x36, 0xFD, 0xD8, 0x44, 0xAE, 0x5E, + 0xCD, 0x6C, 0x82, 0x77, 0xC3, 0xD0, 0x7F, 0x39, + 0x72, 0x1E, 0x91, 0x19, 0x50, 0xE1, 0x28, 0x20, + 0x88, 0x3A, 0x6B, 0xC8, 0xA9, 0xE7, 0x93, 0x28, + 0x0F, 0xA7, 0x4F, 0xF2, 0x1A, 0xC2, 0x13, 0x4E, + 0x6B, 0xAE, 0x71, 0x3F, 0x43, 0x89, 0xC9, 0xE7, + 0xDD, 0x05, 0xBB, 0x41, 0x09, 0xB5, 0x5E, 0xB9, + 0x23, 0x51, 0xC0, 0xEB, 0x92, 0x1A, 0x0C, 0x3F, + 0xAC, 0xC5, 0x00, 0x8C, 0xB8, 0x5C, 0x3F, 0x2D, + 0x5F, 0x9A, 0xCE, 0xAE, 0x9B, 0x4B, 0x71, 0x48, + 0x25, 0xFD, 0xE2, 0xB6, 0x26, 0x3F, 0xEE, 0x10, + 0x33, 0x07, 0x4F, 0x59, 0xF0, 0x73, 0xE9, 0x39, + 0x5C, 0x0D, 0x8B, 0xB5, 0xD1, 0xEF, 0xE5, 0xBF, + 0xBB, 0xE1, 0x80, 0xF7, 0xC5, 0x91, 0xC1, 0x72, + 0xAA, 0xB0, 0x5E, 0x7C, 0x53, 0x69, 0x4C, 0x37, + 0x7A, 0xD2, 0x7B, 0x9D, 0x1C, 0xFA, 0x0F, 0xE0, + 0x92, 0x93, 0x40, 0x5D, 0xBE, 0x1C, 0xF8, 0x84, + 0x7A, 0x35, 0x1F, 0x72, 0x77, 0x68, 0xE2, 0xAF, + 0xA5, 0x6B, 0x54, 0xFF, 0x53, 0x7C, 0xCD, 0x9D, + 0x6A, 0x49, 0xD1, 0xCA, 0x74, 0x5F, 0xF5, 0xDB, + 0x54, 0xF8, 0x60, 0xA7, 0x41, 0x66, 0xDE, 0xFF, + 0xB0, 0xB2, 0xF9, 0x21, 0x06, 0xB7, 0x81, 0x4C, + 0x9C, 0xEF, 0xFD, 0x11, 0xD5, 0x63, 0xD8, 0xF3, + 0x3A, 0x81, 0xC4, 0x9D, 0x1B, 0xA8, 0x37, 0x73, + 0x57, 0x26, 0x29, 0xF8, 0xB4, 0x7F, 0x9F, 0xA2, + 0x7D, 0x2A, 0x63, 0x2C, 0x70, 0x08, 0x1E, 0x2E, + 0xE7, 0xED, 0x73, 0xAB, 0xD2, 0x4C, 0x02, 0x7E, + 0xF1, 0x15, 0x26, 0xE1, 0x09, 0x5C, 0x29, 0x13, + 0xDF, 0x69, 0x29, 0x25, 0xE5, 0x68, 0x39, 0x10, + 0x9B, 0xD0, 0x5E, 0xD8, 0xE2, 0xC9, 0x08, 0x61, + 0x63, 0xCD, 0xF9, 0x45, 0xBC, 0x16, 0xDC, 0x80, + 0x4C, 0x0F, 0x61, 0xEE, 0x8F, 0x3B, 0x72, 0xDB, + 0x02, 0x45, 0xF6, 0x78, 0x69, 0x81, 0xFC, 0xE0, + 0x32, 0x2F, 0xC2, 0xAF, 0xCD, 0x4E, 0x8E, 0x52, + 0x03, 0xB5, 0x1C, 0x7C, 0x37, 0x2C, 0x58, 0xD5, + 0xE2, 0x92, 0xA7, 0xE2, 0x49, 0x6C, 0x3F, 0x5D, + 0x7F, 0x2B, 0x26, 0x70, 0x1C, 0x0C, 0x16, 0x7F, + 0x49, 0x30, 0x71, 0x14, 0xEB, 0xBE, 0x13, 0xF4, + 0xF1, 0xAA, 0x5A, 0xCF, 0x98, 0xF2, 0x07, 0x29, + 0xB5, 0x12, 0x84, 0x80, 0x01, 0x46, 0x11, 0xA4, + 0x44, 0xAE, 0x6D, 0xE0, 0x43, 0x7F, 0xFD, 0x5D, + 0x84, 0xB5, 0x6E, 0x3E, 0x55, 0x0D, 0xE8, 0x66, + 0x13, 0xA9, 0x28, 0x5A, 0x10, 0x84, 0x0B, 0xED, + 0x0B, 0x69, 0xF0, 0x19, 0x69, 0x9B, 0x34, 0xB8, + 0x6F, 0xC6, 0x22, 0xD3, 0x25, 0x26, 0x9D, 0x1A, + 0x04, 0x6B, 0x53, 0xA4, 0xDF, 0x12, 0x93, 0xA5, + 0x2C, 0xEE, 0x1C, 0x35, 0xFE, 0x81, 0x6B, 0x67, + 0x81, 0x92, 0x07, 0xE0, 0x9A, 0x02, 0xC9, 0xD8, + 0x59, 0x4D, 0x51, 0xE8, 0xB3, 0x14, 0x55, 0x2F, + 0xDE, 0x26, 0xDB, 0x7C, 0xEB, 0x8D, 0x80, 0x12, + 0x4A, 0x8A, 0x1C, 0x33, 0x74, 0x8E, 0x05, 0xC1, + 0xAF, 0xD6, 0xE8, 0x7B, 0x56, 0x7C, 0x41, 0xE0, + 0xE7, 0x3F, 0x32, 0x5F, 0x25, 0xDD, 0x2F, 0x48, + 0x21, 0x90, 0xC4, 0x04, 0x42, 0x1A, 0x3D, 0x6A, + 0x0E, 0x5D, 0x5C, 0xDB, 0xE2, 0xB0, 0x18, 0x8B, + 0xAC, 0x77, 0xC6, 0xE3, 0x5D, 0x77, 0xC0, 0xA3, + 0x2B, 0x1D, 0x96, 0x29, 0xF8, 0x8E, 0x70, 0xA7, + 0x65, 0xFE, 0xE3, 0x8C, 0x1A, 0xB2, 0x39, 0x75, + 0xB9, 0x45, 0xF2, 0x16, 0x1F, 0x6C, 0xFE, 0x7E, + 0x68, 0x2A, 0xED, 0x96, 0x84, 0x95, 0x47, 0x05, + 0x1D, 0xDE, 0xB7, 0x7B, 0x90, 0xF6, 0xAF, 0x00, + 0x74, 0x7C, 0x47, 0xE0, 0x2E, 0x80, 0xB6, 0x9A, + 0x0D, 0x4B, 0x78, 0xA4, 0x7D, 0xDD, 0x81, 0xE2, + 0x99, 0x27, 0x1F, 0xA7, 0x8F, 0xE4, 0x23, 0xAD, + 0xDF, 0x12, 0x0D, 0xD0, 0x4D, 0x46, 0xC1, 0x32, + 0xE9, 0x70, 0xF4, 0xA0, 0x4E, 0x97, 0xA5, 0x88, + 0xD2, 0x7C, 0x7B, 0xA8, 0x43, 0x26, 0x18, 0x2A, + 0xAE, 0x04, 0xC2, 0x51, 0x28, 0x99, 0x71, 0x69, + 0x1D, 0x96, 0x78, 0xD4, 0x09, 0x88, 0x16, 0x88, + 0xF3, 0xBC, 0xCB, 0x95, 0x08, 0x30, 0xE6, 0x5B, + 0x78, 0x48, 0x41, 0x00, 0x4E, 0x40, 0x44, 0x58, + 0xE6, 0x16, 0x59, 0x63, 0xCF, 0xB4, 0xEE, 0xB5, + 0x05, 0xFD, 0xD1, 0x35, 0xF3, 0x1E, 0xD0, 0x14, + 0x7C, 0xC9, 0xE9, 0x87, 0x7F, 0xFF, 0x41, 0x07, + 0x68, 0x91, 0x06, 0x17, 0x4E, 0x76, 0x66, 0xEE, + 0xCB, 0x6C, 0xF2, 0xDA, 0x9C, 0x93, 0x51, 0xDC, + 0x43, 0x4A, 0x94, 0x49, 0x38, 0x4E, 0xED, 0x7F, + 0x5F, 0x90, 0x77, 0xB4, 0x2F, 0x0F, 0xC5, 0xD9, + 0xF0, 0xF5, 0xF7, 0x21, 0x91, 0x32, 0xFF, 0x9A, + 0x47, 0x09, 0x83, 0xE1, 0x9D, 0x30, 0xA4, 0xF3, + 0x7D, 0x18, 0x97, 0x44, 0xD8, 0x32, 0xFD, 0x5F, + 0xB3, 0x97, 0x49, 0x4E, 0x11, 0xAD, 0xF7, 0x4F, + 0x4E, 0x90, 0x0A, 0x41, 0x87, 0xCF, 0xF5, 0xDA, + 0x8F, 0x6D, 0x7B, 0x35, 0xAE, 0xA0, 0x16, 0xA8, + 0xDE, 0x88, 0x62, 0x26, 0x5F, 0x13, 0x69, 0xFB, + 0x36, 0x7E, 0xF1, 0x86, 0x0C, 0x8E, 0x07, 0xC3, + 0x3F, 0x32, 0x82, 0xB4, 0xD9, 0x83, 0x7C, 0xDF, + 0x3E, 0xF6, 0x58, 0x42, 0x2D, 0x34, 0xDE, 0xA4, + 0x1E, 0x56, 0xDD, 0x18, 0x70, 0x36, 0x81, 0xD0, + 0x44, 0xE3, 0xC4, 0x03, 0xAF, 0x33, 0xD1, 0xE7, + 0xAF, 0xA9, 0x6A, 0x8C, 0x44, 0x35, 0xFE, 0xBB, + 0xA0, 0xD2, 0x5D, 0xE0, 0xE4, 0xAE, 0xDF, 0xFB, + 0x82, 0xA0, 0xBA, 0xDE, 0x76, 0xB6, 0x6C, 0xA9, + 0xBE, 0xC7, 0xE9, 0xD7, 0x3F, 0x1C, 0xB2, 0x9C, + 0xD7, 0x3C, 0xF0, 0x0C, 0x2F, 0x60, 0x44, 0xD8, + 0x34, 0x53, 0xCE, 0xDD, 0xE0, 0x3F, 0x97, 0x2E, + 0xBB, 0x03, 0x20, 0x62, 0xD0, 0xA8, 0x23, 0x9F, + 0xB6, 0x99, 0xEC, 0x89, 0x0D, 0x32, 0x0F, 0x6F, + 0xAF, 0x3D, 0x20, 0x7B, 0xDC, 0x9A, 0xFE, 0xA2, + 0x02, 0x8B, 0x86, 0x99, 0x56, 0x23, 0x43, 0xAA, + 0x50, 0xF7, 0x0A, 0x4E, 0x8C, 0x62, 0xDA, 0xF8, + 0xB8, 0xCC, 0xA7, 0x2D, 0x02, 0x47, 0x63, 0xBA, + 0xEC, 0x25, 0x00, 0x23, 0xEA, 0xE8, 0x25, 0xC6, + 0x51, 0xAC, 0xC4, 0xAA, 0xA0, 0xDB, 0x6C, 0x5E, + 0xC7, 0xEF, 0xD0, 0x71, 0xED, 0xFB, 0x95, 0xAF, + 0x61, 0x0B, 0x64, 0x01, 0x61, 0x4F, 0x4F, 0xC6, + 0x36, 0x27, 0x75, 0xC3, 0x81, 0x0A, 0x9A, 0x21, + 0x69, 0xF8, 0x4A, 0x21, 0x12, 0x3B, 0x03, 0x1C, + 0xCE, 0x08, 0x7D, 0x52, 0x0E, 0x99, 0xE2, 0x62, + 0xE8, 0x81, 0x2E, 0x84, 0x09, 0x8E, 0xBE, 0x9B, + 0xCE, 0xD6, 0xE6, 0xA4, 0xF7, 0x3B, 0x67, 0x45, + 0x41, 0xDE, 0x0B, 0xCF, 0x5E, 0x7E, 0x31, 0x8F, + 0x90, 0x6D, 0x90, 0x1F, 0xEB, 0x1D, 0x9D, 0x1C, + 0xCB, 0x6C, 0xFF, 0xE8, 0x50, 0xDB, 0xFF, 0x75, + 0xC8, 0xA8, 0x9F, 0x43, 0xCB, 0x94, 0x89, 0x5F, + 0x28, 0x69, 0x6F, 0xAB, 0xB6, 0xAD, 0xCE, 0xE7, + 0x69, 0x7E, 0x60, 0x09, 0x03, 0x87, 0x43, 0x6E, + 0x19, 0xB1, 0x38, 0x81, 0x9B, 0x90, 0xAE, 0xB1, + 0x8A, 0xC2, 0x7D, 0x2C, 0x65, 0x9B, 0x0D, 0xF1, + 0x77, 0x94, 0xA7, 0x2F, 0x8B, 0xB7, 0xCE, 0x03, + 0xEE, 0x9A, 0x78, 0xFE, 0x8C, 0x8A, 0x37, 0x45, + 0xD5, 0x05, 0xDE, 0xD8, 0x85, 0x00, 0xF4, 0xCF, + 0x98, 0xFB, 0x62, 0x85, 0xB0, 0xBD, 0x82, 0xE2, + 0x7D, 0xED, 0x93, 0x3B, 0xCC, 0x18, 0x73, 0xF8, + 0x8A, 0xBD, 0x82, 0x8F, 0x60, 0x47, 0xAC, 0xEC, + 0x47, 0x2D, 0xEA, 0xE8, 0x7D, 0x8A, 0xDE, 0x0A, + 0xD0, 0x73, 0x48, 0xFF, 0xAF, 0x59, 0xC1, 0x70, + 0x29, 0xD8, 0x45, 0x38, 0x77, 0x7F, 0x73, 0xBF, + 0xED, 0x5C, 0x63, 0x63, 0x0B, 0xC4, 0x43, 0xE0, + 0xFA, 0x12, 0xDE, 0x72, 0x2D, 0xAB, 0xBB, 0xC2, + 0x25, 0x0A, 0xBA, 0x3F, 0xD8, 0x61, 0x54, 0xEE, + 0x20, 0x8D, 0x53, 0xA3, 0x27, 0xA7, 0xFF, 0x26, + 0xA0, 0x17, 0x93, 0x39, 0x4D, 0x04, 0x15, 0x8B, + 0xB3, 0x20, 0x60, 0x04, 0x47, 0xE2, 0xFD, 0x7D, + 0x7C, 0x6D, 0xE0, 0x76, 0xA5, 0x13, 0xD6, 0x81, + 0x95, 0xB0, 0x67, 0x20, 0x4F, 0xF6, 0x00, 0x5B, + 0x16, 0x25, 0x54, 0x2B, 0x28, 0x37, 0x2F, 0x06, + 0x80, 0x60, 0x53, 0xAE, 0xE2, 0xEA, 0x9F, 0x88, + 0xAE, 0xA2, 0x9A, 0x27, 0x02, 0x15, 0x4B, 0xF4, + 0x43, 0xBC, 0x70, 0x7D, 0x0A, 0x96, 0xEB, 0x06, + 0xCE, 0x43, 0xEF, 0xE6, 0x6A, 0xAC, 0x1F, 0x16, + 0x95, 0xE2, 0x8C, 0xF1, 0x07, 0x19, 0x3D, 0x06, + 0x2E, 0x71, 0xB6, 0x3A, 0xFD, 0xCF, 0x9E, 0x05, + 0x0B, 0xBE, 0xD7, 0x48, 0x4E, 0xC5, 0xE8, 0x0C, + 0x51, 0x5A, 0xC8, 0x20, 0xF0, 0xCD, 0xF9, 0x65, + 0xDD, 0x97, 0xF7, 0xA1, 0x1B, 0x57, 0xB2, 0x1A, + 0x04, 0xBF, 0x42, 0xF2, 0xA3, 0x3D, 0x61, 0x97, + 0x64, 0xDF, 0xB3, 0x63, 0x11, 0xFD, 0xAD, 0x8C, + 0x83, 0xA7, 0x48, 0xBA, 0x34, 0x42, 0xC5, 0x70, + 0x64, 0x5A, 0x78, 0x5E, 0x67, 0x03, 0xE5, 0xBF, + 0x22, 0xE8, 0x46, 0xFC, 0x51, 0x6C, 0xB4, 0x99, + 0x15, 0xFD, 0x63, 0xB6, 0x3E, 0x5D, 0xBF, 0x56, + 0xF5, 0x5E, 0xA4, 0x01, 0x16, 0xD5, 0x03, 0x4B, + 0xBB, 0x94, 0x5F, 0x58, 0xD6, 0x76, 0x95, 0xC7, + 0x96, 0xF1, 0xC1, 0xD0, 0x53, 0xA3, 0xEB, 0x28, + 0xA9, 0x5E, 0x8F, 0x38, 0x8E, 0x80, 0x04, 0xC3, + 0xB2, 0x4F, 0xD5, 0xFC, 0xCA, 0x7B, 0xB1, 0xE3, + 0xB9, 0x9A, 0x9F, 0x3C, 0x94, 0x5E, 0xF8, 0xA5, + 0x35, 0xF1, 0x37, 0x43, 0x20, 0x71, 0xA5, 0xCA, + 0x5B, 0x6F, 0x7D, 0xC7, 0xB8, 0xBC, 0xE5, 0x5A, + 0xD0, 0xF3, 0xB6, 0xCF, 0x1B, 0xCB, 0xB9, 0xCD, + 0x35, 0xE2, 0x41, 0xF8, 0x6E, 0x46, 0x97, 0x27, + 0x26, 0x48, 0xF4, 0x73, 0xDB, 0xD5, 0xB7, 0x68, + 0x1E, 0xF0, 0xC7, 0x84, 0x49, 0xE6, 0xC5, 0xFA, + 0x93, 0x0D, 0x83, 0x2C, 0x85, 0x1E, 0xED, 0x2A, + 0x65, 0x12, 0x19, 0xD7, 0xD9, 0xC3, 0xBB, 0x23, + 0xF3, 0xC6, 0xAD, 0x7E, 0xB7, 0x78, 0x68, 0x54, + 0x1F, 0x3C, 0xEE, 0x09, 0xF5, 0x1E, 0xE0, 0x4E, + 0xBA, 0x1B, 0xBC, 0x29, 0x69, 0x8A, 0xED, 0xD3, + 0xC7, 0xAC, 0xEC, 0x44, 0x29, 0xD7, 0xA4, 0x0C, + 0xFA, 0xBD, 0xA2, 0x29, 0x34, 0x80, 0x16, 0x4F, + 0x37, 0xEC, 0xB6, 0x73, 0xF2, 0xB5, 0xD7, 0x51, + 0x57, 0x43, 0xAF, 0x7E, 0xD0, 0xB6, 0xE0, 0x96, + 0xF0, 0xE2, 0xFE, 0xCE, 0xC8, 0x9F, 0x40, 0xD6, + 0xAF, 0xE0, 0xBF, 0xCD, 0x70, 0x37, 0x91, 0x69, + 0x99, 0x8C, 0xDF, 0x4A, 0x20, 0xDE, 0xB6, 0xC6, + 0x7A, 0xB4, 0xE3, 0x6A, 0xAD, 0x53, 0xED, 0xB9, + 0x8A, 0x13, 0x61, 0xC5, 0xE9, 0xB0, 0xDC, 0x16, + 0x36, 0xD7, 0x51, 0xA8, 0x7B, 0x52, 0x05, 0x3B, + 0xAD, 0x5C, 0xD2, 0xBD, 0x6F, 0x6B, 0xA9, 0x51, + 0xA7, 0xE8, 0x7E, 0xA4, 0xB6, 0x77, 0xAE, 0x00, + 0x89, 0x3A, 0x1F, 0x76, 0x72, 0x3F, 0xC5, 0x6C, + 0x49, 0x4F, 0xB5, 0xCA, 0x2F, 0x5D, 0xAE, 0xF8, + 0x58, 0x9A, 0xE2, 0x5B, 0x54, 0x76, 0xF4, 0xAA, + 0x89, 0xD4, 0x04, 0xAF, 0x1C, 0x26, 0x65, 0xEC, + 0xA1, 0x81, 0x06, 0x2A, 0x4B, 0x5E, 0xD5, 0x90, + 0xB8, 0x26, 0x33, 0x64, 0x15, 0x33, 0x25, 0xAC, + 0x97, 0x9A, 0xCA, 0x1B, 0x64, 0x50, 0x82, 0x8F, + 0x65, 0x6A, 0xD4, 0x47, 0xCF, 0x7E, 0x93, 0x7D, + 0xB3, 0xCB, 0xFE, 0x55, 0x0A, 0x46, 0x93, 0x22, + 0xB5, 0x46, 0xAB, 0xD6, 0x05, 0x59, 0x14, 0x5E, + 0x1B, 0xD4, 0x2D, 0xAF, 0xA3, 0x18, 0xB7, 0xA0, + 0xD7, 0x11, 0x70, 0xDE, 0x81, 0x8B, 0xD6, 0x64, + 0xFD, 0x38, 0xBD, 0x29, 0x92, 0x41, 0x80, 0xC4, + 0x4A, 0x6D, 0x34, 0x1B, 0xF0, 0x59, 0xA0, 0xD6, + 0x48, 0x55, 0xD2, 0xA5, 0xE2, 0x91, 0xB6, 0x71, + 0xF4, 0x90, 0x97, 0x8B, 0x0A, 0xDD, 0x90, 0xEA, + 0x61, 0x9B, 0x30, 0xA6, 0x2F, 0x5D, 0xB4, 0xEE, + 0x7A, 0x10, 0x40, 0x59, 0x89, 0xAC, 0x30, 0x6E, + 0x9C, 0x7B, 0xBC, 0x11, 0x75, 0x38, 0x00, 0x2E, + 0xDF, 0xED, 0x87, 0x47, 0x30, 0xFB, 0xD4, 0x8A, + 0xC6, 0xBE, 0xC7, 0x20, 0xC8, 0x3D, 0x51, 0x05, + 0x67, 0x48, 0xDE, 0xE2, 0xBF, 0x95, 0x5E, 0x7B, + 0xD7, 0xC7, 0x86, 0xDF, 0x68, 0x57, 0xA9, 0x29, + 0xBC, 0xF8, 0xE3, 0x81, 0x62, 0x1B, 0x37, 0x58, + 0xF2, 0xFF, 0xEE, 0xE8, 0x28, 0x08, 0x36, 0x23, + 0x5B, 0x24, 0x68, 0x1E, 0x62, 0xBD, 0x27, 0xC2, + 0x6F, 0xE9, 0x63, 0x67, 0x53, 0xC7, 0x8A, 0xB5, + 0xA7, 0xEF, 0x29, 0xFE, 0x60, 0xAC, 0x29, 0xCF, + 0x67, 0x40, 0x9F, 0xE6, 0x57, 0xCE, 0x65, 0x3A, + 0x2F, 0xDA, 0xA7, 0xF2, 0x0C, 0x50, 0x19, 0xE6, + 0xF7, 0x43, 0x2E, 0x8C, 0xEB, 0x9E, 0x99, 0x92, + 0xE6, 0x46, 0xB7, 0x8D, 0x43, 0x65, 0xFD, 0x02, + 0x17, 0x74, 0x6F, 0x7B, 0xA3, 0x1E, 0x06, 0x9D, + 0x75, 0x4E, 0x05, 0xED, 0x5A, 0x71, 0xFC, 0x5E, + 0x7D, 0x6D, 0x64, 0x5E, 0xAF, 0x41, 0x44, 0xD6, + 0xBC, 0x43, 0x05, 0x5E, 0x6C, 0xDB, 0x89, 0x34, + 0xC7, 0x02, 0x64, 0x08, 0xAE, 0x96, 0x53, 0x5B, + 0xA2, 0xDE, 0xCD, 0x2F, 0x74, 0x56, 0xD6, 0xEC, + 0xA4, 0x23, 0x68, 0xCD, 0x9A, 0xC5, 0x05, 0x7B, + 0x7D, 0x1E, 0x12, 0xF7, 0x7A, 0xA8, 0x7C, 0x43, + 0x7E, 0x7A, 0x43, 0x31, 0x5D, 0xA0, 0x81, 0xE5, + 0x3A, 0xFE, 0x23, 0xB5, 0xBC, 0xC2, 0xF4, 0xCE, + 0x3A, 0x80, 0x06, 0xE8, 0x1E, 0x08, 0xAF, 0x0A, + 0x33, 0xC1, 0xA9, 0x30, 0x7C, 0x8D, 0x5A, 0xC5, + 0x93, 0x89, 0xF2, 0x69, 0x24, 0x11, 0x6C, 0xAB, + 0x0B, 0x87, 0xD5, 0x49, 0xD0, 0x38, 0x3C, 0x27, + 0x4E, 0x8E, 0x85, 0xD4, 0x6E, 0x0F, 0xCD, 0x70, + 0xE3, 0x68, 0x42, 0xCA, 0x4C, 0x8D, 0x6D, 0x0F, + 0x48, 0xF3, 0xED, 0xF9, 0xE9, 0x43, 0x5D, 0xBF, + 0x55, 0x75, 0xF8, 0xEB, 0x78, 0x93, 0x72, 0x75, + 0x8B, 0xF5, 0xBD, 0xE9, 0x9D, 0xA2, 0xB9, 0x81, + 0x83, 0xDB, 0xAC, 0x82, 0xD1, 0xC1, 0x20, 0x03, + 0x72, 0x4D, 0xDC, 0x42, 0xAE, 0xC8, 0x1C, 0x0C, + 0x78, 0x22, 0x77, 0x27, 0x91, 0x50, 0x4C, 0x90, + 0xEA, 0x13, 0x8B, 0x6C, 0x91, 0xDF, 0x5D, 0x25, + 0x36, 0x9C, 0xC2, 0x06, 0x4F, 0xD5, 0xE2, 0xCC, + 0x9D, 0x89, 0x3B, 0xC4, 0x23, 0x5D, 0x88, 0x17, + 0x62, 0x4E, 0xC9, 0xFA, 0xC8, 0xEF, 0x1D, 0x45, + 0xE1, 0xFB, 0x58, 0xB3, 0x8E, 0xBD, 0x8D, 0xAE, + 0x12, 0xFF, 0xA0, 0x37, 0xE0, 0x7F, 0x5B, 0x41, + 0x1D, 0x40, 0x17, 0xAF, 0x95, 0x2D, 0x8C, 0x42, + 0xC6, 0x1A, 0x2A, 0x1E, 0x8E, 0x70, 0x25, 0xD6, + 0xD3, 0xA2, 0x85, 0xAA, 0x17, 0xFF, 0x0D, 0xB4, + 0x39, 0xD0, 0xF2, 0xAF, 0xA0, 0x4F, 0x31, 0x8D, + 0x6D, 0x57, 0x6A, 0xED, 0xC6, 0xF1, 0xE7, 0x67, + 0xA6, 0x6F, 0xB3, 0x9B, 0x72, 0xC6, 0x7F, 0x05, + 0xAF, 0x40, 0x87, 0x12, 0x0D, 0xC8, 0x98, 0x88, + 0x2D, 0xDE, 0xA1, 0x7C, 0x95, 0x32, 0xB2, 0x7A, + 0xB5, 0x9D, 0xE4, 0x0D, 0x75, 0xD4, 0x17, 0x5B, + 0xB4, 0x92, 0x73, 0xAF, 0x87, 0x3A, 0x92, 0xDA, + 0x4D, 0x87, 0xE2, 0x53, 0xCA, 0xE7, 0x2A, 0x52, + 0x64, 0xE0, 0xC1, 0xDE, 0x4C, 0x9C, 0xF9, 0x1A, + 0x1F, 0x3A, 0xD6, 0x05, 0xA0, 0xCC, 0x8D, 0x91, + 0x93, 0x51, 0xF9, 0x37, 0x1A, 0xFC, 0x68, 0xEF, + 0xBC, 0xED, 0x19, 0x8E, 0x4C, 0xD1, 0xB5, 0x8C, + 0xA2, 0x85, 0xDA, 0x02, 0x65, 0xAB, 0xAC, 0xAE, + 0xCA, 0x8E, 0xAC, 0xF0, 0x2A, 0x4F, 0xC7, 0x67, + 0x16, 0x2E, 0x24, 0x7F, 0x73, 0xCD, 0xD7, 0x3E, + 0xE3, 0x27, 0x8A, 0xF9, 0x4A, 0xC4, 0xA8, 0xCB, + 0x2B, 0x01, 0x55, 0x68, 0x34, 0xA3, 0xC0, 0xB8, + 0xD0, 0x6D, 0x05, 0xF2, 0x3B, 0x4C, 0x17, 0x47, + 0xE7, 0x64, 0x53, 0xF4, 0x9D, 0xE0, 0x8D, 0xF8, + 0xEE, 0x0E, 0xA6, 0x25, 0x64, 0x7D, 0x1B, 0xD0, + 0x80, 0xE7, 0x3C, 0x41, 0x97, 0xAE, 0xCB, 0x6A, + 0x23, 0xC2, 0x5F, 0x00, 0xC6, 0xC5, 0x4C, 0x8A, + 0x4C, 0xEF, 0x76, 0x65, 0x95, 0x28, 0xB3, 0x67, + 0x42, 0xEC, 0x17, 0xFF, 0x0E, 0xE3, 0x7B, 0x30, + 0x6D, 0xCC, 0xB8, 0x87, 0xD6, 0x63, 0x36, 0x5D, + 0xC9, 0xE8, 0x1D, 0x51, 0x47, 0xCF, 0xE5, 0x05, + 0x0D, 0xB4, 0x09, 0xDF, 0xAD, 0x88, 0x9C, 0x38, + 0x6F, 0x12, 0xA5, 0xCD, 0x0C, 0x95, 0x53, 0x41, + 0x13, 0xA6, 0xD0, 0xAB, 0xCB, 0x5A, 0x3F, 0x56, + 0xCE, 0x23, 0xEE, 0x32, 0x61, 0x22, 0x79, 0xE8, + 0xBA, 0x23, 0x94, 0x61, 0x25, 0x8E, 0xD6, 0x3E, + 0x78, 0x83, 0xE1, 0x15, 0xBA, 0x05, 0x81, 0xB8, + 0x1A, 0x7F, 0x73, 0xC1, 0xB7, 0x9F, 0x29, 0xA1, + 0x16, 0x2E, 0x6E, 0x84, 0xC7, 0x15, 0xBC, 0x50, + 0x28, 0x5F, 0xD3, 0x8D, 0x4D, 0x6D, 0xC0, 0x87, + 0x68, 0x88, 0x4B, 0xF4, 0xFB, 0x55, 0x85, 0x3D, + 0xA7, 0xB5, 0x47, 0x1E, 0x73, 0xA1, 0x47, 0x8D, + 0xB1, 0xE1, 0xCF, 0xE6, 0x15, 0x3E, 0xC6, 0xC3, + 0x78, 0xDD, 0x6A, 0x3F, 0x42, 0x29, 0x6E, 0x61, + 0x9D, 0xE7, 0x63, 0xFF, 0x2D, 0xDB, 0x83, 0xE5, + 0x15, 0x84, 0xC2, 0x8D, 0xD8, 0x34, 0x2E, 0x92, + 0x9E, 0x15, 0xB7, 0xBB, 0xCF, 0x5D, 0x6E, 0xCB, + 0x87, 0x79, 0xCF, 0x7F, 0x3A, 0x9A, 0xC1, 0x6A, + 0x43, 0x1F, 0x52, 0xA2, 0x34, 0xE6, 0xA3, 0x69, + 0x9D, 0x9E, 0x44, 0x84, 0x0A, 0x4D, 0x3D, 0x48, + 0x5D, 0xA5, 0xD9, 0x03, 0x94, 0xB1, 0x81, 0xEF, + 0x89, 0x98, 0xE6, 0xD1, 0x44, 0x21, 0x83, 0x59, + 0x09, 0xCD, 0xDB, 0x16, 0x7C, 0x8C, 0x38, 0x78, + 0x19, 0x4B, 0x6D, 0x51, 0x4D, 0xF8, 0x63, 0x6D, + 0x4A, 0x14, 0xA1, 0xBE, 0xF3, 0xCA, 0x38, 0x1E, + 0x36, 0xCF, 0x2E, 0x6D, 0x5F, 0xBC, 0xB4, 0x0A, + 0xF0, 0x91, 0x7D, 0x6D, 0xBB, 0x87, 0x5C, 0xFF, + 0x64, 0xCD, 0xCE, 0xCC, 0xCF, 0xB8, 0xBF, 0xB8, + 0x05, 0x45, 0x8D, 0xF8, 0x2C, 0x74, 0xEB, 0x86, + 0x3A, 0x96, 0x9E, 0xD9, 0x8B, 0x9C, 0x46, 0xE7, + 0x17, 0x3C, 0x09, 0x0D, 0xB0, 0x68, 0xB2, 0xD8, + 0x0C, 0xCE, 0x32, 0xDE, 0x51, 0x72, 0xB5, 0xD4, + 0xA8, 0xB9, 0x09, 0xA5, 0xA4, 0xCC, 0x47, 0xFA, + 0x9F, 0x2E, 0xD6, 0x6E, 0x60, 0x69, 0xCD, 0x96, + 0xAB, 0x1F, 0x3E, 0x84, 0x8C, 0x68, 0x72, 0x0F, + 0xEA, 0x32, 0xC5, 0x73, 0x6E, 0x8A, 0xB5, 0x10, + 0x05, 0xFE, 0x42, 0x58, 0x33, 0xF2, 0x07, 0x56, + 0xC1, 0x96, 0x76, 0x23, 0x77, 0x9D, 0x0A, 0xD2, + 0x42, 0xA1, 0x69, 0x06, 0x83, 0xBA, 0xD2, 0xEB, + 0x12, 0x3D, 0x97, 0xAB, 0x23, 0x08, 0x90, 0x15, + 0x51, 0x4D, 0x0C, 0x6A, 0x3B, 0x0F, 0x37, 0x15, + 0x25, 0xC2, 0x3E, 0x5F, 0x53, 0x84, 0x4C, 0x81, + 0xDD, 0xE8, 0x7C, 0xFE, 0x9F, 0x06, 0x5E, 0x11, + 0x68, 0x7D, 0x68, 0x6B, 0x07, 0x2C, 0x19, 0x00, + 0xF5, 0xC9, 0xA7, 0xC3, 0x1F, 0xE8, 0xBA, 0xBE, + 0x9F, 0x09, 0x0C, 0xE2, 0xCB, 0x3B, 0x68, 0x7B, + 0xA8, 0x9E, 0xD8, 0x3C, 0x08, 0x85, 0xDF, 0xF9, + 0x11, 0x2B, 0x52, 0xF6, 0xCE, 0xD7, 0x1E, 0x32, + 0xA4, 0x0A, 0x9A, 0xBC, 0xFF, 0xF4, 0x20, 0xB6, + 0x24, 0x85, 0x84, 0x7F, 0xFF, 0x70, 0x3C, 0xBB, + 0x74, 0x36, 0x42, 0x25, 0x5F, 0xBD, 0x0A, 0x90, + 0x86, 0xA7, 0xB8, 0x3F, 0x9E, 0xDF, 0x43, 0x24, + 0x88, 0x0C, 0x52, 0x08, 0xF7, 0xDC, 0xB1, 0xEA, + 0xC3, 0x38, 0xF9, 0x13, 0x16, 0x65, 0xA0, 0xCA, + 0x6B, 0xF0, 0xD6, 0x12, 0xFB, 0xA6, 0x3F, 0xF7, + 0x13, 0x91, 0x99, 0xB1, 0xDE, 0xE4, 0xEE, 0x1E, + 0x98, 0x9B, 0xE4, 0xA0, 0x3A, 0xA8, 0xAC, 0x4A, + 0x48, 0x3E, 0xCB, 0x9E, 0xB4, 0x1D, 0x22, 0x1F, + 0x59, 0x97, 0x24, 0x8C, 0xFE, 0xDC, 0xBF, 0x6C, + 0xAD, 0x8D, 0xB0, 0xA3, 0x27, 0xFA, 0x28, 0x8F, + 0xD6, 0xAE, 0x31, 0x39, 0x84, 0xFA, 0x61, 0x8F, + 0x7D, 0xD4, 0xEE, 0xBB, 0x13, 0xED, 0x85, 0xC4, + 0x35, 0xC0, 0xAB, 0x07, 0x73, 0xC5, 0xCD, 0xCA, + 0xD4, 0x69, 0x9B, 0x9C, 0x38, 0x2A, 0x1F, 0x37, + 0xF9, 0xDF, 0x8C, 0x3A, 0xE1, 0x57, 0xDF, 0x05, + 0x9F, 0x97, 0x51, 0xCC, 0xA6, 0x93, 0xD5, 0x49, + 0x2A, 0xE9, 0xCD, 0x46, 0x31, 0x22, 0x6E, 0x62, + 0xE8, 0x13, 0x90, 0x64, 0xFF, 0x00, 0x27, 0xCF, + 0xA1, 0x95, 0x4E, 0xE9, 0x36, 0xAF, 0xAD, 0x02, + 0x06, 0xDD, 0x2A, 0xE2, 0x28, 0xB6, 0xDD, 0x65, + 0xCD, 0x9A, 0x9D, 0x5F, 0xF9, 0xC0, 0xCC, 0x48, + 0xC8, 0xC2, 0xE9, 0x8F, 0x5A, 0xE6, 0xE2, 0xC9, + 0x79, 0x7A, 0x83, 0x84, 0xF8, 0xA3, 0xE3, 0xC7, + 0x48, 0xC7, 0x06, 0xFE, 0x6A, 0x36, 0x25, 0xD2, + 0xA2, 0xEB, 0x4A, 0xE2, 0xCA, 0xA0, 0x49, 0x24, + 0x1A, 0x47, 0x8C, 0x1A, 0x77, 0xF5, 0xC9, 0x0D, + 0xDC, 0x94, 0x18, 0x4D, 0x89, 0x80, 0x50, 0x18, + 0x7D, 0x67, 0x00, 0x43, 0xE4, 0xE7, 0x8F, 0x54, + 0xDC, 0x60, 0x84, 0x24, 0xF3, 0xBF, 0x5E, 0x92, + 0xC7, 0x0C, 0x05, 0x49, 0xBB, 0x61, 0x2F, 0x48, + 0x0A, 0xEB, 0xE5, 0xFA, 0x8B, 0x01, 0x33, 0x27, + 0x10, 0x3E, 0xA1, 0x28, 0x33, 0x11, 0x30, 0x1F, + 0x91, 0x47, 0x7B, 0xA6, 0x3E, 0xD4, 0xF9, 0xC2, + 0x8F, 0xA3, 0x4E, 0xBC, 0xA7, 0x61, 0x56, 0x1F, + 0x90, 0x33, 0x54, 0x15, 0x06, 0x21, 0x9C, 0x57, + 0x07, 0xC2, 0xF8, 0xED, 0x81, 0xED, 0x36, 0x15, + 0xC8, 0xAC, 0xAB, 0x12, 0x80, 0xBF, 0x7C, 0x5E, + 0x00, 0xEC, 0x1B, 0x27, 0x58, 0x3A, 0xE9, 0x09, + 0x2B, 0x23, 0x16, 0x69, 0x26, 0xF9, 0xCC, 0x3C, + 0x5A, 0xFB, 0x66, 0xBA, 0x32, 0xF9, 0xAF, 0xAB, + 0xCB, 0xA7, 0xF7, 0x91, 0x6A, 0x82, 0x42, 0xA7, + 0x9D, 0x7B, 0x0E, 0xD3, 0x5D, 0xF6, 0x52, 0x6D, + 0x7D, 0x2B, 0xE6, 0x30, 0x99, 0x01, 0xBD, 0xC0, + 0x3D, 0x15, 0x95, 0xC2, 0x67, 0x19, 0xD9, 0x0F, + 0xC0, 0x79, 0x1E, 0xAB, 0xA7, 0x67, 0x35, 0x12, + 0x53, 0xB0, 0x6A, 0xE4, 0xB9, 0x0A, 0x52, 0xEF, + 0xBD, 0xCD, 0xD4, 0x0C, 0x09, 0x6F, 0x24, 0xE9, + 0x52, 0x9F, 0xF8, 0x9F, 0x95, 0x95, 0x57, 0x07, + 0x5F, 0xC8, 0xDD, 0xAF, 0xE6, 0x10, 0x3A, 0x51, + 0x38, 0xF0, 0x9F, 0xBD, 0xEB, 0x0F, 0x5F, 0x36, + 0xB5, 0x2A, 0x57, 0xBE, 0x21, 0x39, 0xD8, 0x9D, + 0x29, 0x04, 0xBC, 0xE2, 0xB8, 0x6D, 0x03, 0xF2, + 0x6D, 0x56, 0xF4, 0x18, 0x40, 0x07, 0x1A, 0x15, + 0x8B, 0xF5, 0x46, 0xE1, 0x0C, 0x4D, 0xED, 0x0E, + 0x81, 0xB0, 0x0D, 0x98, 0x88, 0xC5, 0x5D, 0x53, + 0xE1, 0x1D, 0xB7, 0x00, 0x26, 0xC6, 0x46, 0x7E, + 0xD2, 0xAB, 0x0B, 0xD9, 0x1E, 0xE0, 0xE7, 0xC3, + 0xC3, 0xE0, 0x83, 0x7F, 0x8C, 0xB9, 0xBA, 0xE0, + 0x04, 0xE2, 0xA8, 0xFF, 0xEC, 0xD5, 0x9E, 0x79, + 0x2F, 0x13, 0xF9, 0x27, 0xCA, 0xDD, 0xF5, 0x0F, + 0x74, 0xD2, 0x9B, 0xC6, 0x2E, 0xF2, 0xF0, 0x2A, + 0xB0, 0xF9, 0x6E, 0x27, 0x3E, 0x8D, 0x66, 0xDB, + 0x44, 0x82, 0xDD, 0x1B, 0xD5, 0xBB, 0x51, 0x6E, + 0x72, 0x3A, 0xCB, 0x0F, 0x0B, 0x97, 0xBC, 0x32, + 0x07, 0xC1, 0x0C, 0xF3, 0x94, 0xFF, 0x62, 0xE2, + 0xFD, 0x7D, 0xBB, 0x3D, 0x43, 0x11, 0xB3, 0xFA, + 0x22, 0x05, 0xBF, 0x87, 0x0F, 0xFD, 0xD1, 0x81, + 0xC6, 0x30, 0xC6, 0x91, 0xD4, 0xEE, 0xA8, 0x6B, + 0x37, 0xB2, 0x38, 0xF1, 0x87, 0x89, 0xE0, 0x04, + 0x09, 0xED, 0x18, 0xA6, 0x3C, 0x18, 0x9E, 0x38, + 0xCB, 0x9F, 0xFE, 0xB3, 0x03, 0xF4, 0xE4, 0x3F, + 0xB3, 0x94, 0x7C, 0x74, 0x03, 0x6C, 0xCF, 0x16, + 0x24, 0xF8, 0x56, 0xE2, 0x4A, 0x7E, 0x9A, 0x21, + 0xB8, 0xC2, 0x7C, 0xF4, 0x3D, 0x85, 0x15, 0x43, + 0xA5, 0xCA, 0xFD, 0xA3, 0x05, 0xCC, 0x63, 0x8D, + 0x94, 0x82, 0x70 + }; + static const byte rnd_87[] = { + 0x16, 0xB8, 0x2B, 0x9B, 0x0A, 0x90, 0x5B, 0xB3, + 0xD8, 0x7B, 0x4A, 0x1E, 0x40, 0xAE, 0xAD, 0x3C, + 0xDE, 0x63, 0xB2, 0x2C, 0xB7, 0x16, 0xBD, 0x46, + 0x7A, 0x7B, 0xE8, 0x4A, 0xF1, 0x9B, 0x7C, 0xFE + }; + static const byte sig_87[] = { + 0xE5, 0x5D, 0x62, 0x56, 0x92, 0x73, 0x72, 0x13, + 0xDD, 0x3D, 0x7F, 0x51, 0x42, 0xF3, 0xAA, 0x33, + 0x87, 0x12, 0x2F, 0x20, 0xC9, 0x50, 0x93, 0x0A, + 0x7E, 0x7C, 0xCC, 0x0C, 0x6D, 0x21, 0xB9, 0x5D, + 0x62, 0x47, 0xD5, 0xFB, 0x3A, 0xCC, 0xBC, 0xB8, + 0xA1, 0x5A, 0xDF, 0x97, 0x58, 0xBA, 0x7E, 0x40, + 0x9A, 0x76, 0xD0, 0x1C, 0xBF, 0x0F, 0x14, 0xC3, + 0x23, 0x3B, 0x21, 0xB0, 0x5D, 0x11, 0x3B, 0x1F, + 0x70, 0xCB, 0x21, 0x78, 0x51, 0x68, 0xE2, 0x3A, + 0x29, 0x4A, 0x0D, 0xD0, 0x32, 0x50, 0xDC, 0xBB, + 0xD1, 0xCF, 0x80, 0x19, 0x7A, 0xC7, 0xFC, 0x37, + 0x2D, 0x5A, 0x5A, 0xDF, 0x3E, 0x7E, 0x89, 0x2D, + 0xC6, 0x0E, 0x75, 0x9A, 0xBB, 0xDF, 0x69, 0x82, + 0x28, 0xB6, 0xD0, 0xF3, 0xF4, 0xCB, 0x4F, 0xD5, + 0xDC, 0x5D, 0xFE, 0x8D, 0x01, 0xB4, 0x93, 0x9F, + 0x89, 0x53, 0x18, 0x74, 0x29, 0x20, 0x36, 0xBF, + 0x34, 0xCA, 0x71, 0x2B, 0x01, 0x14, 0xFB, 0x66, + 0x94, 0x28, 0x81, 0xF1, 0xF1, 0x7E, 0x80, 0xB6, + 0x4E, 0x0E, 0x9E, 0x9E, 0x60, 0xD7, 0x6A, 0xFB, + 0x59, 0xC7, 0x96, 0x9F, 0xB4, 0x9C, 0x98, 0x72, + 0x06, 0xC1, 0x6C, 0xAA, 0x8E, 0xC7, 0x48, 0xE6, + 0xC3, 0xAD, 0x8B, 0x4E, 0xF7, 0x81, 0x92, 0x74, + 0xC0, 0x5A, 0x2B, 0x54, 0x8D, 0x47, 0x15, 0xAC, + 0xED, 0x45, 0x69, 0xD0, 0x7C, 0x28, 0x80, 0x18, + 0xA3, 0x9F, 0xB7, 0x14, 0xC6, 0x51, 0xF9, 0x02, + 0x70, 0x98, 0xD9, 0xC1, 0x09, 0xC0, 0xD7, 0xCE, + 0x8B, 0x81, 0x7B, 0x30, 0x99, 0x4C, 0x85, 0x1C, + 0xFA, 0xAE, 0xBF, 0x05, 0x95, 0xBB, 0x6E, 0x01, + 0xE4, 0xFC, 0xE7, 0x11, 0x16, 0x90, 0x28, 0xC3, + 0xC4, 0x36, 0x9F, 0x11, 0xCD, 0xEB, 0xEB, 0x71, + 0x15, 0x08, 0x1D, 0x43, 0x2B, 0x12, 0xA6, 0x4E, + 0xB6, 0xF9, 0x35, 0xE4, 0x37, 0x0D, 0xF7, 0x49, + 0xDF, 0x73, 0x4D, 0xE3, 0x57, 0x33, 0x96, 0x7B, + 0x72, 0x45, 0x2F, 0x92, 0x70, 0xBB, 0x6F, 0xCD, + 0x90, 0x82, 0x67, 0xBB, 0x31, 0x9D, 0x9E, 0x38, + 0x75, 0xCD, 0x5B, 0x55, 0x10, 0x6B, 0xFC, 0x00, + 0x15, 0xC8, 0xCB, 0xFC, 0xE1, 0x18, 0x41, 0xE8, + 0x6E, 0x92, 0xEC, 0x1A, 0x26, 0x88, 0x6C, 0xF6, + 0x2A, 0x5C, 0x05, 0x94, 0xD7, 0xB8, 0xD0, 0x78, + 0x52, 0x68, 0x8D, 0xC5, 0xBD, 0xD6, 0x29, 0xF8, + 0x21, 0xDF, 0xB3, 0x28, 0x43, 0x74, 0xC7, 0x0E, + 0x99, 0xD3, 0x0C, 0xDE, 0xE9, 0x06, 0x44, 0xCD, + 0x77, 0x13, 0x34, 0x82, 0xBA, 0x36, 0x20, 0x71, + 0x02, 0xB1, 0x6E, 0xBA, 0xCF, 0x9F, 0x15, 0x36, + 0xC8, 0xF1, 0x4E, 0x36, 0x30, 0x34, 0x2D, 0x23, + 0x6C, 0x77, 0xEC, 0xCA, 0xBA, 0x7C, 0x17, 0x4F, + 0x3F, 0x22, 0x4A, 0x34, 0xA1, 0x5C, 0xB3, 0x8F, + 0xD8, 0x48, 0xD5, 0x8A, 0x2C, 0x8B, 0x1B, 0xFB, + 0x87, 0xDA, 0xBC, 0xB6, 0xD9, 0x59, 0xD6, 0x9B, + 0xF0, 0x6E, 0x8D, 0xB1, 0x52, 0xE1, 0x8A, 0x36, + 0x31, 0xA7, 0x83, 0xCE, 0xDF, 0x36, 0xEB, 0xBE, + 0xEA, 0xC3, 0xC6, 0xA6, 0x52, 0x2D, 0x89, 0x0B, + 0xF9, 0x5B, 0x1D, 0x14, 0xA9, 0xBF, 0x37, 0x31, + 0xE0, 0x1C, 0xF5, 0x29, 0x95, 0xF0, 0xC0, 0x08, + 0xE8, 0x97, 0xEE, 0x53, 0x27, 0x85, 0x81, 0x7D, + 0x47, 0xE5, 0xAC, 0xC5, 0x1B, 0x48, 0xA5, 0x36, + 0x1E, 0x8A, 0xD7, 0xF5, 0xC9, 0x93, 0x74, 0xCE, + 0x06, 0xEA, 0xC3, 0x26, 0x45, 0xFF, 0xED, 0x39, + 0xC1, 0x0B, 0x7A, 0x59, 0x3C, 0x0F, 0xEE, 0x89, + 0xEF, 0xA4, 0xEC, 0xD0, 0x72, 0x34, 0x95, 0xC9, + 0xC4, 0x78, 0x47, 0xB6, 0xB7, 0xCE, 0xA4, 0xD9, + 0xA1, 0xB6, 0x37, 0xC1, 0xF1, 0xFB, 0x4E, 0x4C, + 0x38, 0xB0, 0x4A, 0xE5, 0x13, 0x63, 0xDC, 0x44, + 0xC4, 0x7E, 0x86, 0x9C, 0xAD, 0x69, 0x29, 0xFD, + 0xA1, 0xFE, 0xAD, 0x3B, 0x59, 0x24, 0x2F, 0x70, + 0xAE, 0x5F, 0x2C, 0x00, 0xFE, 0x01, 0x09, 0xA3, + 0x10, 0x87, 0xF0, 0xAD, 0xFA, 0x9B, 0x83, 0x8F, + 0x48, 0x96, 0x8B, 0x9A, 0x35, 0xE7, 0x4D, 0xAA, + 0xEC, 0xA4, 0xCD, 0x26, 0x7C, 0x3E, 0xAC, 0x93, + 0x26, 0x9D, 0x6B, 0x83, 0x34, 0xC4, 0x71, 0xE1, + 0xC8, 0x93, 0x88, 0x09, 0xAF, 0x00, 0xB5, 0x7F, + 0xD9, 0x5A, 0x8E, 0x36, 0xC1, 0x2E, 0x7E, 0xF1, + 0x0C, 0xC5, 0x2A, 0xB3, 0xE4, 0x48, 0xDF, 0xFB, + 0xFF, 0x99, 0xC9, 0x66, 0xD2, 0x28, 0x46, 0x7C, + 0x43, 0x39, 0x96, 0x69, 0x95, 0x42, 0xAC, 0xE0, + 0xC2, 0x0C, 0x65, 0x99, 0xC8, 0xB0, 0xAE, 0x76, + 0xE8, 0x18, 0x3E, 0xA9, 0x1D, 0x44, 0x81, 0x14, + 0x65, 0xF7, 0xDF, 0xD1, 0xD1, 0x7B, 0x7C, 0x28, + 0xE0, 0x77, 0x9D, 0x79, 0x9C, 0xE4, 0x1A, 0xF1, + 0xD0, 0xFF, 0x8E, 0xEA, 0x58, 0x84, 0xB3, 0x47, + 0xBC, 0xA1, 0x47, 0x48, 0xB7, 0xC3, 0xD5, 0xD1, + 0xF3, 0xDD, 0xA6, 0x3B, 0x15, 0x4C, 0xB3, 0xB5, + 0xFD, 0x52, 0x9D, 0x7E, 0xF0, 0xC7, 0x40, 0x2C, + 0x34, 0xBC, 0xCF, 0x1C, 0x67, 0x30, 0xC0, 0x4D, + 0xA1, 0xC7, 0x5E, 0xAD, 0xAF, 0xCD, 0xFA, 0x21, + 0xE4, 0xB5, 0x33, 0x8B, 0x37, 0x2D, 0xCF, 0x4D, + 0x07, 0x48, 0x61, 0xB0, 0xB6, 0x8B, 0x27, 0x05, + 0xA0, 0x8C, 0x71, 0x95, 0x84, 0x02, 0xB2, 0x1E, + 0x59, 0xBC, 0xB6, 0xE2, 0x2C, 0x3C, 0x20, 0x4C, + 0xDE, 0x1E, 0x35, 0x24, 0xC1, 0x5B, 0x3C, 0xB4, + 0x2A, 0x8C, 0xA7, 0x2D, 0xE3, 0xDC, 0x45, 0x26, + 0x6E, 0x29, 0x52, 0x5D, 0x24, 0x8A, 0xC2, 0x16, + 0x73, 0xDB, 0x80, 0xF2, 0x91, 0xEC, 0x05, 0x3E, + 0x2E, 0x9E, 0x39, 0x12, 0x5E, 0x11, 0x80, 0x24, + 0xF5, 0xFC, 0x86, 0x4C, 0xD9, 0xF9, 0x70, 0x59, + 0xC8, 0xC8, 0x57, 0x5D, 0x0F, 0x68, 0x75, 0x3C, + 0x7A, 0x3D, 0x1B, 0xF7, 0xD0, 0xDF, 0xE2, 0xF9, + 0xBD, 0x44, 0xFD, 0x21, 0x75, 0x86, 0x77, 0x25, + 0xAF, 0xD3, 0x28, 0x55, 0x2A, 0x60, 0x7D, 0x79, + 0x9C, 0x72, 0x2F, 0x6E, 0xAB, 0x2F, 0x26, 0x44, + 0x0C, 0xFF, 0x52, 0xBD, 0xA1, 0xA9, 0x07, 0xBD, + 0x9D, 0x2A, 0x64, 0x2E, 0x0B, 0xA1, 0xB8, 0x78, + 0xD3, 0xC4, 0x84, 0x9A, 0xE1, 0xDB, 0xB4, 0x4A, + 0x4C, 0x45, 0x7A, 0x8E, 0xD5, 0xA3, 0x6B, 0x09, + 0x8D, 0x72, 0x8E, 0x6D, 0x17, 0x34, 0xFF, 0xD6, + 0xED, 0x24, 0x19, 0x7D, 0xC6, 0x2D, 0x5B, 0x82, + 0x68, 0xAE, 0x25, 0x33, 0xBB, 0xCB, 0x7D, 0xFD, + 0x00, 0x15, 0x83, 0xEA, 0xBB, 0xE7, 0x40, 0x3D, + 0x80, 0xD5, 0x9E, 0x6C, 0xE0, 0x3C, 0x7E, 0x3E, + 0x12, 0xC7, 0x36, 0x7E, 0x41, 0x84, 0xE8, 0xB4, + 0x16, 0xCA, 0x4A, 0xB7, 0xEB, 0x16, 0xEC, 0xAB, + 0x5A, 0x69, 0x24, 0x7F, 0x5E, 0x81, 0x86, 0x7D, + 0x30, 0x61, 0x4E, 0x0F, 0x75, 0x39, 0xEE, 0xF2, + 0xF4, 0xDC, 0x5E, 0x23, 0x40, 0xE8, 0x3C, 0xC0, + 0x10, 0xAD, 0x5E, 0xE6, 0x06, 0x8E, 0x5F, 0x55, + 0xC5, 0x69, 0x65, 0x5F, 0xA3, 0x6E, 0x73, 0x86, + 0x82, 0x32, 0x5F, 0x36, 0xA7, 0x6B, 0x2C, 0x26, + 0xCD, 0x64, 0xC8, 0x57, 0x1F, 0x06, 0x7A, 0xAB, + 0x8B, 0xA7, 0xDB, 0x53, 0x48, 0x1A, 0x06, 0x8D, + 0x36, 0xF1, 0x77, 0x74, 0xE6, 0xF5, 0x18, 0x62, + 0x8E, 0x8A, 0xBF, 0xB7, 0x7F, 0x72, 0x44, 0xAC, + 0xC8, 0x9A, 0x0E, 0x60, 0x4B, 0xAB, 0xB2, 0x9E, + 0x95, 0xDF, 0x95, 0x28, 0x98, 0x78, 0xBB, 0xA9, + 0x5D, 0x8E, 0xEE, 0xB4, 0x84, 0xF5, 0x81, 0x7E, + 0xA1, 0x53, 0x3E, 0xBB, 0x43, 0xF6, 0xD4, 0xB7, + 0x60, 0xFD, 0xF4, 0xF8, 0x68, 0xB6, 0x1D, 0x9A, + 0xF7, 0xDA, 0x77, 0xFA, 0xBB, 0x74, 0x44, 0xDE, + 0x7C, 0x32, 0x2D, 0x5C, 0x24, 0xD8, 0x4D, 0xBF, + 0xE0, 0x5C, 0x70, 0x12, 0x3C, 0x43, 0xCC, 0x5F, + 0x00, 0xD5, 0x1F, 0xEA, 0x5D, 0xC9, 0x3A, 0x5C, + 0x32, 0xED, 0xE0, 0xF1, 0x59, 0xA0, 0xB7, 0x71, + 0xDC, 0x65, 0xD2, 0x88, 0x20, 0x20, 0xD8, 0x59, + 0x53, 0x2D, 0x30, 0x2D, 0xFC, 0xA9, 0xEA, 0x45, + 0xB0, 0xF3, 0x1E, 0x66, 0x9F, 0xF6, 0xF1, 0x5E, + 0x9B, 0x67, 0x1D, 0xBF, 0x5E, 0x19, 0xB3, 0x2A, + 0xE8, 0xCE, 0xE5, 0x90, 0xFE, 0x82, 0x5C, 0x19, + 0x7B, 0x84, 0x3E, 0x45, 0xFF, 0x5D, 0xC2, 0x2E, + 0x49, 0x6A, 0xB1, 0x2D, 0x50, 0x2D, 0x21, 0xF7, + 0x2A, 0xA2, 0x39, 0x47, 0x8D, 0xB5, 0x17, 0x64, + 0x3E, 0x96, 0x13, 0x90, 0x53, 0xEA, 0x57, 0x4C, + 0xDB, 0x3D, 0x43, 0xC3, 0xE7, 0xD6, 0x5C, 0x54, + 0x89, 0xDF, 0x6E, 0xF9, 0xE4, 0xC6, 0x64, 0xF0, + 0x88, 0x1C, 0xD0, 0xF6, 0x9D, 0x9E, 0xD7, 0xCD, + 0x2C, 0xFB, 0xCC, 0x54, 0x0E, 0x96, 0xD7, 0x4E, + 0x05, 0xD2, 0xB3, 0x88, 0x85, 0xD8, 0x60, 0xA4, + 0xF2, 0xE4, 0xD7, 0xFF, 0xAF, 0x12, 0x2E, 0xBA, + 0xC4, 0x5A, 0x3A, 0x3E, 0xC5, 0xD7, 0xF3, 0x60, + 0x4F, 0x27, 0xEF, 0xE0, 0x35, 0xAC, 0x4A, 0x8B, + 0x14, 0x7D, 0xC4, 0xEF, 0x61, 0x9A, 0x69, 0x2E, + 0x49, 0x80, 0x04, 0x0C, 0x18, 0xB9, 0x42, 0xC6, + 0x8C, 0x8A, 0x99, 0x43, 0xA6, 0x5A, 0xCD, 0x72, + 0x20, 0xAD, 0xFD, 0x9C, 0xC4, 0xAA, 0xDF, 0x6C, + 0x6C, 0x03, 0xEF, 0x48, 0x3E, 0xFB, 0x4A, 0xBC, + 0xAA, 0x44, 0xEE, 0xC4, 0x25, 0x8F, 0xF9, 0x8A, + 0xC2, 0x24, 0x73, 0x15, 0xFA, 0x0E, 0xCB, 0x00, + 0xEE, 0x9B, 0x39, 0x3F, 0x60, 0x1F, 0x00, 0x95, + 0xCA, 0xFE, 0xC2, 0x2C, 0x35, 0x5F, 0xD9, 0xD1, + 0x29, 0xB5, 0x4D, 0xC1, 0x66, 0x51, 0x8F, 0x17, + 0x3B, 0xF4, 0xF1, 0x49, 0x42, 0x36, 0x0C, 0x5B, + 0x58, 0xF2, 0x9B, 0x59, 0x01, 0xFB, 0x15, 0x7F, + 0x21, 0x90, 0x1F, 0x56, 0x69, 0x8B, 0xE2, 0xA5, + 0x44, 0xCB, 0x84, 0x98, 0x4B, 0x75, 0xA8, 0xCB, + 0x83, 0x0D, 0xE8, 0x1C, 0x91, 0x7F, 0xE4, 0x57, + 0x81, 0x16, 0x34, 0x2F, 0xCE, 0x01, 0xAA, 0x62, + 0x54, 0x44, 0xB7, 0xD6, 0xC7, 0xF1, 0x68, 0x9A, + 0x00, 0x3B, 0x71, 0x16, 0xF9, 0x96, 0x6A, 0x90, + 0x6C, 0x2C, 0x4E, 0x58, 0xBC, 0xDD, 0xE9, 0x3B, + 0x60, 0xB7, 0xA0, 0x97, 0xEE, 0xD6, 0x34, 0xDD, + 0x49, 0x4A, 0xD9, 0x85, 0xD1, 0xB7, 0x95, 0x14, + 0xEC, 0x6A, 0x40, 0xE8, 0x31, 0x80, 0xF1, 0xD8, + 0x5F, 0x75, 0xF6, 0x92, 0x3A, 0x4F, 0xCD, 0x0A, + 0x6E, 0xBF, 0xA1, 0x27, 0x48, 0x79, 0x27, 0x04, + 0x76, 0x2C, 0xAB, 0x25, 0x06, 0xEB, 0x43, 0xDD, + 0x1B, 0x4B, 0x24, 0xFC, 0x93, 0x51, 0x1C, 0x45, + 0xF6, 0xAE, 0x77, 0xCF, 0xC9, 0xE6, 0x20, 0xE4, + 0xA5, 0x2B, 0x3D, 0x7D, 0xF0, 0xEB, 0x51, 0x7C, + 0xCA, 0xFE, 0x58, 0xBA, 0xC4, 0x07, 0x95, 0x75, + 0x62, 0x0C, 0x50, 0x68, 0x88, 0x1A, 0x8A, 0x0D, + 0x1B, 0x5C, 0x53, 0x1A, 0x9C, 0xA8, 0x4E, 0xFE, + 0x63, 0x9B, 0xDB, 0x05, 0x70, 0x01, 0x75, 0xA1, + 0x3A, 0x08, 0xFA, 0x51, 0xD5, 0xF6, 0x81, 0xDE, + 0x69, 0xE5, 0x40, 0xB3, 0xF8, 0x7C, 0x46, 0x97, + 0xA6, 0x4E, 0xA8, 0x51, 0x47, 0x9C, 0xB9, 0x25, + 0xCD, 0x4E, 0xED, 0xFC, 0xEE, 0x03, 0x6A, 0xCD, + 0x93, 0x65, 0xB3, 0x68, 0x09, 0x6F, 0xE8, 0x00, + 0x6A, 0x3F, 0xBF, 0xE8, 0x6F, 0x09, 0xE9, 0xF2, + 0x6F, 0x44, 0x2E, 0xB1, 0x81, 0x76, 0x04, 0xDD, + 0x6E, 0xF4, 0x93, 0x61, 0xE5, 0x78, 0xD4, 0xDA, + 0xBF, 0x05, 0xA1, 0xF4, 0x9D, 0xFD, 0x57, 0x06, + 0x9C, 0x13, 0x45, 0x97, 0xF2, 0x48, 0xE6, 0x1A, + 0xB5, 0xAD, 0x09, 0x11, 0x04, 0xBB, 0xA0, 0xA8, + 0xA3, 0xA3, 0x33, 0xCD, 0x42, 0x2C, 0x66, 0xC2, + 0x94, 0x80, 0x15, 0x9D, 0x56, 0x74, 0x02, 0xEE, + 0xA7, 0xE4, 0x90, 0xDD, 0xFB, 0x0B, 0x3B, 0xF0, + 0x7A, 0x02, 0x44, 0xE8, 0x11, 0xC4, 0x3A, 0xFE, + 0x73, 0x2A, 0x4C, 0x92, 0x3C, 0x23, 0x37, 0x8B, + 0x4F, 0x28, 0x8E, 0x1C, 0x4E, 0x7D, 0x0D, 0x6B, + 0xFD, 0x20, 0xB5, 0x93, 0xB3, 0x75, 0x30, 0x28, + 0xC7, 0x7E, 0x67, 0xC4, 0xDE, 0xDA, 0x27, 0xA9, + 0xE3, 0xF2, 0xF5, 0x25, 0x98, 0x5F, 0x6B, 0xBE, + 0x11, 0x80, 0x23, 0x49, 0x30, 0xC8, 0x8A, 0x63, + 0xF9, 0xC4, 0x14, 0x77, 0x2A, 0xE2, 0x21, 0x42, + 0x28, 0x1C, 0xEB, 0x9F, 0x7B, 0x70, 0xA8, 0x2B, + 0xFB, 0x25, 0x36, 0xA6, 0xAC, 0xFE, 0x8E, 0xFF, + 0xB6, 0x86, 0x09, 0x15, 0x7E, 0xD9, 0x26, 0x8F, + 0xDB, 0xF2, 0x2D, 0xC2, 0xFA, 0xAE, 0xDA, 0x50, + 0xF6, 0x24, 0x53, 0xDB, 0xBF, 0x92, 0x9D, 0x7E, + 0x48, 0xCC, 0x75, 0xAC, 0xD0, 0xD3, 0x45, 0x09, + 0x2F, 0x01, 0x60, 0xBB, 0xAE, 0xCB, 0xE6, 0xB3, + 0x30, 0xDA, 0xD9, 0xB6, 0x12, 0xCD, 0xF5, 0x11, + 0xCF, 0x2B, 0x2A, 0xC6, 0x61, 0x9A, 0x05, 0x59, + 0x08, 0x58, 0x64, 0xEC, 0xDB, 0x77, 0xCF, 0x64, + 0xE2, 0x4B, 0x6E, 0xF4, 0x07, 0x68, 0x5E, 0xE9, + 0x31, 0xB1, 0x38, 0x67, 0xF9, 0x29, 0x2E, 0x7A, + 0xD2, 0x03, 0xA6, 0x29, 0x3F, 0x22, 0x58, 0x66, + 0x6A, 0x07, 0xD8, 0xFD, 0xC5, 0x03, 0xEE, 0x66, + 0xD4, 0x66, 0x70, 0x6D, 0xA4, 0xC4, 0xA1, 0xEE, + 0xCD, 0x4D, 0xFA, 0x3C, 0x34, 0x36, 0xC2, 0xC5, + 0x1E, 0x86, 0xB8, 0x7B, 0x7C, 0xBC, 0x67, 0x16, + 0xF3, 0x6E, 0xF2, 0xB7, 0xEA, 0x96, 0x1B, 0x0D, + 0xA2, 0xC8, 0x42, 0xBF, 0x30, 0x09, 0x2A, 0x6D, + 0x9D, 0x35, 0xB3, 0x92, 0xBA, 0x3E, 0xE2, 0xE9, + 0xE2, 0xAA, 0x90, 0x70, 0xCE, 0x0F, 0x07, 0xFA, + 0x7C, 0x3B, 0xF7, 0x66, 0x7F, 0x5C, 0xFE, 0xD9, + 0x72, 0x1C, 0x4E, 0xFE, 0x7E, 0x86, 0x8E, 0x7F, + 0x62, 0x8D, 0x41, 0x46, 0x7B, 0x43, 0x17, 0xB9, + 0x44, 0xED, 0x39, 0x1B, 0x3E, 0xF9, 0x2D, 0xC7, + 0x5C, 0x9D, 0xAC, 0x05, 0x00, 0xC6, 0x85, 0x4E, + 0xB8, 0xBC, 0x29, 0xDF, 0x6D, 0x6A, 0xCC, 0xEB, + 0xD6, 0x44, 0x86, 0xAA, 0xC9, 0x55, 0x49, 0xA1, + 0x3F, 0x59, 0x5E, 0xAF, 0xD5, 0xC9, 0x96, 0x19, + 0x84, 0xC0, 0x4D, 0x1B, 0xE5, 0x2C, 0x42, 0x8D, + 0x2C, 0xC8, 0x83, 0x00, 0x26, 0xBF, 0x46, 0x9F, + 0x20, 0x97, 0xEC, 0x2C, 0xA9, 0x2C, 0xF0, 0xA7, + 0x11, 0xED, 0xE2, 0xA2, 0x57, 0x83, 0x40, 0x92, + 0xF3, 0x58, 0xB7, 0x4E, 0xD6, 0x3A, 0x9D, 0xF0, + 0xDD, 0xD4, 0x5F, 0x82, 0x58, 0xD3, 0x72, 0x05, + 0x69, 0xFF, 0x1E, 0xBC, 0x74, 0x90, 0x87, 0xB5, + 0x7A, 0xEE, 0xF8, 0xCE, 0x3F, 0x59, 0xE1, 0xC0, + 0x46, 0x24, 0xF8, 0x9D, 0x93, 0x51, 0x4A, 0x44, + 0xFB, 0xEA, 0x58, 0xA6, 0xAC, 0x9A, 0x7C, 0xA3, + 0x11, 0xA3, 0x47, 0x44, 0x24, 0x11, 0xF5, 0x56, + 0x1A, 0x3B, 0xCF, 0xEC, 0xD9, 0x2B, 0x6C, 0xBA, + 0xA6, 0xA2, 0x67, 0xB9, 0xE0, 0xCB, 0x3F, 0x8D, + 0xA8, 0xC4, 0x8A, 0x45, 0xAB, 0xE2, 0x10, 0x19, + 0x10, 0xC9, 0xDB, 0x01, 0x64, 0xC0, 0x0B, 0x6F, + 0x3B, 0xA1, 0xE9, 0xEB, 0x74, 0x9A, 0x63, 0x93, + 0xE5, 0x74, 0x3F, 0xD3, 0x7B, 0xEA, 0x8C, 0xD6, + 0x7D, 0x66, 0xDD, 0x90, 0x6C, 0x69, 0x67, 0x05, + 0xAD, 0x70, 0xF1, 0xFA, 0x52, 0xBB, 0xD5, 0x3D, + 0x0E, 0x7E, 0x87, 0xE0, 0x98, 0xAF, 0xA6, 0xE6, + 0x0E, 0x25, 0x91, 0x70, 0xCA, 0x36, 0xE4, 0xF8, + 0xF7, 0x95, 0x1C, 0x48, 0xF6, 0x62, 0x9A, 0x4D, + 0xE4, 0xE7, 0x3A, 0x92, 0xC6, 0x2E, 0xAB, 0x8A, + 0x75, 0x7C, 0x45, 0xDA, 0x54, 0xB1, 0x6D, 0x2E, + 0xCC, 0x13, 0x46, 0x67, 0x8F, 0xFF, 0xDA, 0x18, + 0xE1, 0x4C, 0xE4, 0x6A, 0xB6, 0xAC, 0x65, 0x32, + 0x0C, 0x63, 0xD5, 0x43, 0xB5, 0x8B, 0xB1, 0x52, + 0xEE, 0x0C, 0xBB, 0x62, 0x34, 0x30, 0xDB, 0xF7, + 0x08, 0xC6, 0xE8, 0x5B, 0x07, 0x66, 0x6D, 0x4B, + 0x39, 0xC6, 0x94, 0x2B, 0x22, 0x9E, 0x3E, 0x45, + 0x62, 0x3D, 0x05, 0x03, 0x2B, 0x16, 0x71, 0xBB, + 0x85, 0x1B, 0x6E, 0x84, 0xD3, 0x48, 0x4D, 0x63, + 0x26, 0x60, 0x97, 0x45, 0xB8, 0xEA, 0x43, 0x96, + 0x00, 0xFE, 0x0B, 0x85, 0xBD, 0x22, 0x40, 0xA4, + 0xA7, 0x2F, 0xC1, 0xEB, 0xFD, 0xB5, 0x22, 0xD5, + 0x1F, 0xB3, 0xEA, 0x7C, 0x6D, 0x20, 0xFB, 0x98, + 0xA5, 0xF2, 0x84, 0x70, 0xF7, 0xB9, 0x2A, 0x12, + 0x63, 0x0C, 0x2D, 0x97, 0x6C, 0xC2, 0x76, 0xAC, + 0x32, 0xE2, 0xB1, 0x3A, 0xB3, 0xAB, 0x9E, 0xBB, + 0x61, 0xB4, 0x6A, 0x5F, 0x2D, 0x4D, 0xCE, 0x0D, + 0xFB, 0x97, 0x80, 0x89, 0x4A, 0x81, 0xFB, 0xB2, + 0x72, 0x37, 0x66, 0xB9, 0x08, 0xBF, 0xCD, 0x9F, + 0x63, 0xB2, 0xBA, 0x54, 0xF1, 0x9E, 0xEC, 0x11, + 0x67, 0x26, 0xC7, 0x98, 0xDD, 0xA3, 0xC5, 0x50, + 0x86, 0x17, 0xD5, 0xCF, 0x51, 0x97, 0x22, 0x65, + 0x2B, 0x71, 0xF7, 0x34, 0x84, 0x55, 0xC9, 0xD1, + 0xFE, 0x75, 0x42, 0x0A, 0x5A, 0x31, 0x59, 0xE8, + 0x8A, 0x0D, 0xE5, 0x77, 0x1C, 0xF5, 0xFD, 0x27, + 0x05, 0x05, 0xF7, 0x28, 0xDA, 0x54, 0xAB, 0xBD, + 0xDC, 0x50, 0xB8, 0xDB, 0x2E, 0xB4, 0x28, 0x41, + 0x30, 0x04, 0x40, 0xD5, 0xF0, 0x12, 0xD7, 0x16, + 0x3D, 0x8F, 0x41, 0xE7, 0x70, 0x76, 0x82, 0xB9, + 0xC4, 0xB2, 0x1F, 0x57, 0x10, 0xB6, 0xC4, 0x84, + 0x0D, 0xB1, 0xB8, 0x21, 0xB2, 0x77, 0x09, 0xF6, + 0xD5, 0x9C, 0xE4, 0xA2, 0xFA, 0x83, 0x13, 0x56, + 0x94, 0x3F, 0x37, 0x6D, 0x0D, 0x7C, 0x7E, 0xA0, + 0xE5, 0xC8, 0xD9, 0x42, 0x0F, 0x35, 0xB1, 0xDC, + 0xB9, 0x49, 0xD5, 0xED, 0xA8, 0x90, 0x09, 0x14, + 0xAE, 0x63, 0xB5, 0xEA, 0x62, 0x0D, 0x9E, 0x6D, + 0x93, 0xBD, 0x3A, 0xEA, 0x24, 0xB5, 0xAC, 0xC9, + 0xD1, 0x7B, 0xBC, 0xC6, 0xC4, 0xBA, 0x68, 0xB1, + 0x65, 0xFE, 0xAB, 0x30, 0xD4, 0x92, 0xD9, 0xC1, + 0x94, 0x84, 0xE1, 0x20, 0x4E, 0x28, 0x7C, 0x3A, + 0x3E, 0x8B, 0x44, 0x79, 0xC7, 0xB5, 0xA5, 0x95, + 0xC2, 0xC9, 0xA8, 0x3F, 0x92, 0x67, 0x06, 0x9A, + 0x12, 0xD3, 0xAE, 0x78, 0x87, 0x0E, 0x31, 0x54, + 0x26, 0xDF, 0x97, 0xEB, 0x6C, 0xF3, 0xC9, 0x53, + 0x39, 0xED, 0x50, 0x5A, 0xF9, 0x6A, 0x03, 0x27, + 0x8E, 0xC6, 0x79, 0x5B, 0xD4, 0xD3, 0x57, 0x97, + 0xFD, 0xF5, 0xCB, 0x14, 0xDB, 0xBE, 0x39, 0xB9, + 0x64, 0x8A, 0x75, 0xAA, 0xE3, 0x4A, 0x19, 0x59, + 0x69, 0x7D, 0xF8, 0x7D, 0x8C, 0xB8, 0x2F, 0x32, + 0x57, 0xBF, 0x84, 0x9E, 0x45, 0x4E, 0xC4, 0xA0, + 0x65, 0xA4, 0x0B, 0x73, 0x36, 0xC5, 0xD1, 0x07, + 0xF8, 0x1C, 0x91, 0x07, 0xB8, 0x0B, 0x4B, 0xE5, + 0x4F, 0xE6, 0xA1, 0xDF, 0x29, 0x03, 0xE7, 0x68, + 0xA4, 0x32, 0x8E, 0x21, 0x8F, 0x15, 0x51, 0x57, + 0x65, 0x16, 0xF0, 0x55, 0x71, 0x8C, 0x28, 0xD8, + 0x82, 0xDC, 0x8A, 0xC1, 0xE7, 0x5C, 0xF2, 0xD5, + 0xB8, 0x18, 0x16, 0x9F, 0x63, 0x89, 0x21, 0xF1, + 0xA6, 0xED, 0x21, 0xDA, 0xC8, 0x0A, 0x10, 0x21, + 0x18, 0x98, 0xD0, 0xF2, 0x9E, 0xDE, 0x5A, 0xA1, + 0x51, 0xC9, 0x18, 0x3B, 0x68, 0x79, 0x75, 0xE7, + 0xF4, 0xF9, 0xBF, 0x5F, 0xBE, 0x61, 0x35, 0xA9, + 0x02, 0x56, 0x2D, 0x99, 0xD8, 0x95, 0xFA, 0x78, + 0x8A, 0x67, 0x24, 0x1D, 0xDF, 0x13, 0x14, 0xD0, + 0xB4, 0xB6, 0x21, 0x11, 0xB7, 0xA4, 0x06, 0x8D, + 0x1D, 0xF6, 0xD5, 0x50, 0x2A, 0x0A, 0x42, 0x3C, + 0x7C, 0xF1, 0x1F, 0x15, 0x1C, 0x81, 0x69, 0xDA, + 0xCC, 0xAC, 0x8F, 0xB9, 0x08, 0x4E, 0xF8, 0x4E, + 0x3E, 0x77, 0x26, 0x4A, 0x1F, 0x72, 0x89, 0xCA, + 0x91, 0x77, 0x99, 0xBF, 0x28, 0xD2, 0x31, 0x65, + 0x30, 0x37, 0x84, 0x66, 0x8A, 0x1C, 0xC6, 0x59, + 0x7D, 0x48, 0x9B, 0x4D, 0xDC, 0x87, 0x4F, 0xD2, + 0x04, 0xA0, 0x8B, 0x8B, 0x37, 0x3B, 0x1A, 0xDB, + 0xCF, 0x63, 0x39, 0x07, 0xF3, 0x37, 0xCF, 0x0E, + 0x2F, 0xEB, 0xE6, 0x2A, 0xA1, 0x4C, 0xE0, 0x75, + 0x3F, 0xAB, 0xF7, 0xDE, 0x48, 0x83, 0x79, 0x89, + 0x30, 0xA7, 0x1B, 0xE8, 0x73, 0x8E, 0x9D, 0x1D, + 0xF6, 0x5C, 0x91, 0x4F, 0x44, 0x7C, 0x04, 0xA7, + 0x07, 0xC8, 0xCC, 0x4A, 0x5C, 0x81, 0xAD, 0x48, + 0x7C, 0xE5, 0x19, 0x5A, 0xC4, 0x29, 0x80, 0x14, + 0xFA, 0xC2, 0x26, 0x1C, 0x50, 0x28, 0xB9, 0xF6, + 0x7F, 0x8D, 0x51, 0x9A, 0xDA, 0xBB, 0x8E, 0x90, + 0xBA, 0x3B, 0xD9, 0x4D, 0x61, 0xBE, 0xFD, 0x33, + 0xC0, 0xCA, 0x7B, 0x09, 0xFF, 0x36, 0x84, 0x70, + 0x11, 0xB4, 0xBE, 0x81, 0xFE, 0x71, 0xEE, 0x81, + 0xD7, 0x61, 0xBB, 0x83, 0xA6, 0xA0, 0xDC, 0x20, + 0x04, 0x02, 0x4C, 0x1B, 0x4D, 0xED, 0x8A, 0xC1, + 0x38, 0x70, 0xC3, 0x69, 0xC9, 0x50, 0xC2, 0x17, + 0x64, 0xAD, 0x9D, 0x44, 0x63, 0x44, 0xE5, 0x32, + 0x7B, 0x90, 0xE3, 0xEF, 0x45, 0x28, 0xA6, 0x23, + 0x92, 0xCB, 0xA1, 0xFC, 0xA8, 0xB4, 0x39, 0xF1, + 0xB1, 0x00, 0x1F, 0x06, 0xD4, 0x91, 0x5D, 0xDB, + 0xAC, 0x7D, 0x87, 0xD4, 0xEE, 0xCD, 0x4A, 0x06, + 0x3E, 0xB4, 0x84, 0x65, 0xAA, 0x47, 0x05, 0x41, + 0x7C, 0x95, 0x47, 0x3A, 0x49, 0x80, 0xC5, 0xAC, + 0x32, 0x41, 0x6A, 0x3A, 0x2B, 0xB9, 0xD9, 0x21, + 0x80, 0xC7, 0xC1, 0xD0, 0xC9, 0x95, 0x4B, 0xC3, + 0xEA, 0x0D, 0x3F, 0x0E, 0xE4, 0x5A, 0xD8, 0xBD, + 0x11, 0xD0, 0x76, 0x6D, 0x3C, 0xA7, 0x64, 0xD8, + 0xCA, 0x4C, 0x8F, 0x58, 0x2C, 0xDD, 0x95, 0x1F, + 0xBB, 0x76, 0x8D, 0x10, 0xFD, 0xAD, 0x45, 0xCE, + 0x71, 0x6E, 0x27, 0x92, 0xC4, 0xA6, 0x17, 0x46, + 0x95, 0xDB, 0xD8, 0xEA, 0x9A, 0x5F, 0x0E, 0xE0, + 0x0A, 0xA2, 0xF5, 0x79, 0xC3, 0x74, 0xA7, 0x70, + 0x99, 0x3B, 0x23, 0xD7, 0x3E, 0xA4, 0x96, 0xB5, + 0x54, 0x77, 0x71, 0x8D, 0x78, 0x2E, 0xCC, 0x0A, + 0x4E, 0xF8, 0xA9, 0x96, 0xEE, 0xB4, 0x4B, 0x5B, + 0xDC, 0x52, 0x6D, 0xE1, 0x61, 0x36, 0xE1, 0x32, + 0xD6, 0xA2, 0x7B, 0x2E, 0xCC, 0x78, 0x92, 0xA1, + 0x81, 0x59, 0xB8, 0xC7, 0x04, 0x11, 0x3D, 0xF0, + 0xF9, 0xF9, 0x3E, 0x47, 0x3C, 0xEA, 0xD5, 0x30, + 0x2D, 0xAE, 0xC0, 0x47, 0xC8, 0x61, 0xCC, 0x9C, + 0x2E, 0xC0, 0x40, 0x16, 0x11, 0x73, 0x13, 0xF3, + 0x19, 0xAE, 0x72, 0x44, 0x72, 0xC5, 0x59, 0x51, + 0x2E, 0x9F, 0xE3, 0x07, 0xB0, 0xCA, 0x6B, 0xB0, + 0x15, 0x20, 0xB4, 0x25, 0x00, 0xED, 0xFD, 0xAC, + 0xD6, 0x34, 0x8B, 0xCA, 0xE8, 0xC6, 0x3B, 0xFD, + 0x02, 0x22, 0xE6, 0x91, 0x2B, 0x4B, 0x61, 0xDF, + 0x63, 0x5C, 0x2B, 0x5F, 0x82, 0x07, 0x23, 0x59, + 0x82, 0x5E, 0x0E, 0x21, 0xF7, 0x9C, 0x37, 0x1C, + 0x7E, 0x6F, 0xD4, 0xFA, 0x91, 0x40, 0x8B, 0x98, + 0x68, 0xBD, 0x60, 0x2F, 0x0A, 0xC8, 0xC8, 0x99, + 0xA1, 0xC6, 0x10, 0xF1, 0x27, 0x53, 0xD3, 0xFB, + 0x23, 0x02, 0xE7, 0x8E, 0x95, 0xB1, 0xF0, 0x21, + 0xCB, 0x90, 0xEE, 0x8D, 0xE0, 0x27, 0x57, 0xDE, + 0x40, 0xA3, 0xE7, 0x8F, 0x61, 0xC1, 0x8F, 0xC5, + 0x0C, 0x0F, 0xBA, 0x05, 0xA0, 0x58, 0x8E, 0x86, + 0x8A, 0xF5, 0x72, 0xE1, 0x34, 0xB4, 0xF6, 0x8E, + 0x6E, 0xA4, 0x21, 0x75, 0x43, 0x73, 0xE7, 0x32, + 0x72, 0x80, 0x9B, 0xE7, 0x1D, 0x78, 0x8F, 0x0D, + 0x06, 0x47, 0x9E, 0x4D, 0xB4, 0xAC, 0x3E, 0x0D, + 0xB8, 0x11, 0x23, 0xFF, 0xAD, 0xB9, 0x23, 0xE0, + 0xA4, 0x37, 0xA6, 0x3D, 0xC2, 0x15, 0xF4, 0x64, + 0x03, 0x1F, 0x0A, 0x68, 0xED, 0x37, 0x37, 0xE8, + 0x3E, 0x5B, 0x49, 0x78, 0xFC, 0xFC, 0x12, 0x06, + 0xE8, 0xC7, 0xCD, 0x3A, 0xAF, 0xD4, 0x54, 0xA7, + 0x04, 0x7B, 0xFC, 0x66, 0xA6, 0xA8, 0x1C, 0x38, + 0x0C, 0x26, 0x08, 0xE6, 0xEE, 0x47, 0x25, 0x80, + 0x59, 0xA5, 0x39, 0x81, 0x20, 0xEE, 0x5F, 0x49, + 0x9A, 0x01, 0x37, 0xE9, 0x96, 0x18, 0xD0, 0x05, + 0x2D, 0xE3, 0x73, 0xD5, 0x08, 0x3B, 0x18, 0x46, + 0xFE, 0x9E, 0x67, 0x5B, 0x9E, 0xF8, 0x53, 0x05, + 0x2F, 0x96, 0x18, 0x9C, 0x09, 0x0D, 0xA6, 0x05, + 0xB3, 0x9E, 0x2F, 0x0B, 0x5A, 0xF3, 0x93, 0xFF, + 0x29, 0xF3, 0x4F, 0x62, 0xD5, 0x9A, 0xCE, 0x74, + 0x64, 0xD0, 0xBC, 0xB3, 0x08, 0xF1, 0xD3, 0x22, + 0xA5, 0xBE, 0x64, 0x0A, 0xEB, 0xA5, 0xF5, 0x1B, + 0x7E, 0x0A, 0x44, 0x3B, 0x1D, 0xA9, 0x48, 0x9A, + 0x2F, 0xED, 0x05, 0x0F, 0x44, 0xB3, 0x6D, 0xAD, + 0x39, 0x2C, 0xBA, 0x8E, 0x2B, 0xDE, 0x17, 0x38, + 0xD1, 0x69, 0xEA, 0xAE, 0x4E, 0x97, 0xCD, 0x61, + 0xBA, 0x75, 0x39, 0xF2, 0x81, 0xBB, 0xA9, 0x0F, + 0x6F, 0x82, 0xD4, 0xCB, 0xE4, 0x93, 0x82, 0x11, + 0x72, 0x9A, 0xE9, 0x87, 0xEC, 0xCC, 0x6D, 0xA1, + 0x7D, 0x47, 0x60, 0x20, 0xB6, 0xEE, 0xC6, 0xAA, + 0xC0, 0x3C, 0x95, 0x08, 0xA0, 0x8B, 0xFA, 0x04, + 0xF6, 0x6F, 0x65, 0x48, 0xCA, 0xA7, 0xA3, 0xA8, + 0xBB, 0x3B, 0x80, 0x91, 0xB6, 0x6D, 0x2F, 0x9D, + 0x97, 0xBB, 0x52, 0xE6, 0xC4, 0x24, 0x99, 0x97, + 0x63, 0xAD, 0xD2, 0xFD, 0xB3, 0x94, 0x6D, 0xC1, + 0xFB, 0xFA, 0x89, 0x45, 0x78, 0x80, 0x3C, 0xAA, + 0x3F, 0xC0, 0x7E, 0x8D, 0x37, 0x00, 0xA7, 0x70, + 0xD6, 0x57, 0x2A, 0xD3, 0x17, 0xB1, 0x9E, 0xDF, + 0x96, 0x98, 0x40, 0xB8, 0x1C, 0xCC, 0xC6, 0xCD, + 0xCD, 0xB0, 0xF3, 0x23, 0x53, 0xB6, 0x45, 0x78, + 0xA6, 0xA0, 0x88, 0x61, 0x06, 0x04, 0x8E, 0x1B, + 0xCD, 0x12, 0x29, 0x50, 0x0F, 0xD2, 0x8C, 0x89, + 0x51, 0xD1, 0x74, 0x0B, 0xE3, 0xA7, 0x75, 0x8A, + 0x60, 0x95, 0xEF, 0x6A, 0x98, 0xC7, 0x35, 0xA5, + 0xC0, 0xFB, 0x4C, 0x88, 0xA1, 0xDA, 0xCE, 0x79, + 0x3D, 0x4E, 0x4F, 0x91, 0x75, 0x88, 0xE0, 0x5F, + 0x17, 0xF5, 0xEF, 0xF8, 0x49, 0xFE, 0xB1, 0xDB, + 0x0D, 0xE8, 0xB2, 0xF7, 0xD4, 0x90, 0xBD, 0xB0, + 0x6B, 0x3A, 0x1B, 0xB5, 0xC6, 0xFB, 0x93, 0xEF, + 0xF3, 0xDD, 0x60, 0xEA, 0x67, 0x11, 0xFE, 0x6A, + 0xCC, 0x2C, 0x64, 0x2A, 0x85, 0x2E, 0x24, 0x39, + 0x34, 0x6B, 0xBC, 0xF8, 0x89, 0xB3, 0x49, 0x82, + 0x9C, 0xC0, 0x04, 0x29, 0x6D, 0x25, 0xCB, 0x19, + 0xE1, 0x53, 0xC6, 0x10, 0x7D, 0x62, 0x07, 0xD2, + 0x83, 0x8B, 0x89, 0x04, 0x70, 0x06, 0x60, 0x4F, + 0xB6, 0x10, 0x2B, 0xA0, 0x92, 0xF4, 0x1A, 0x7A, + 0xD6, 0x4F, 0xDC, 0x6C, 0x6C, 0x27, 0xE5, 0xEC, + 0x68, 0x1B, 0x95, 0x7C, 0x1C, 0x95, 0x2C, 0xB7, + 0x0A, 0x8D, 0xC7, 0x57, 0x92, 0x00, 0x4D, 0xC0, + 0x5F, 0xD4, 0xF4, 0x88, 0x3F, 0x8D, 0x43, 0x12, + 0x05, 0xE2, 0x14, 0x0E, 0xDD, 0x2C, 0xEC, 0xD5, + 0x2F, 0x1A, 0xE6, 0x97, 0xDC, 0xFE, 0x96, 0x80, + 0x67, 0x3B, 0xD4, 0x63, 0x73, 0xFA, 0xC8, 0x4F, + 0x4C, 0x4F, 0x2D, 0x68, 0x76, 0x44, 0x8E, 0xC2, + 0x19, 0x99, 0x44, 0xEA, 0xF2, 0x33, 0x23, 0x83, + 0xC8, 0xB1, 0x7C, 0x27, 0x43, 0x9B, 0x67, 0xF9, + 0xDE, 0xE1, 0xAE, 0x03, 0xA5, 0xA5, 0x2B, 0x96, + 0xB2, 0xEC, 0x4A, 0x43, 0xA7, 0x6D, 0xF4, 0xDB, + 0x32, 0x5B, 0x54, 0xD6, 0x63, 0xEA, 0x65, 0xC2, + 0xA8, 0x4B, 0x80, 0xCC, 0x65, 0x2D, 0xCE, 0x6F, + 0x61, 0x2F, 0x58, 0xD1, 0xE5, 0x64, 0x8A, 0x42, + 0x8D, 0xBA, 0xFA, 0x35, 0x5C, 0x9E, 0xD5, 0x80, + 0x2D, 0x5C, 0xC3, 0x47, 0xFB, 0x0D, 0x43, 0x20, + 0x7A, 0xA4, 0x37, 0xB2, 0x2F, 0x0B, 0x43, 0xB9, + 0x94, 0xD3, 0xD9, 0xC2, 0xD7, 0x02, 0x5D, 0x6A, + 0x12, 0x99, 0xE7, 0x32, 0x6C, 0xF0, 0x0C, 0x73, + 0x51, 0x33, 0x84, 0xA9, 0x0C, 0x66, 0xC9, 0x19, + 0x88, 0x9A, 0xF1, 0xB6, 0xF8, 0x41, 0xB1, 0xDC, + 0x60, 0xA4, 0x80, 0x73, 0x0B, 0x21, 0xF9, 0xB8, + 0x01, 0x7E, 0x66, 0x0D, 0xB4, 0x2B, 0x53, 0x8D, + 0x7D, 0x0B, 0xE1, 0xA3, 0x0C, 0x27, 0xF6, 0x2F, + 0x27, 0x34, 0x53, 0x75, 0x54, 0xF7, 0x5E, 0x05, + 0x1C, 0x5A, 0x94, 0x08, 0x14, 0xDE, 0xAA, 0x98, + 0xD9, 0xA5, 0xA0, 0xBE, 0x80, 0xC1, 0xEB, 0x3C, + 0xCF, 0x78, 0x88, 0xA4, 0xA2, 0x03, 0xF8, 0x79, + 0x1F, 0x84, 0x84, 0xA7, 0x0E, 0x95, 0x1A, 0x85, + 0xEF, 0x4C, 0xBE, 0xA2, 0x99, 0xAB, 0x10, 0xDD, + 0x85, 0x3F, 0x10, 0x6A, 0x9C, 0xD5, 0xDD, 0x7A, + 0xFB, 0xF5, 0xD9, 0xD9, 0xAA, 0xDF, 0x03, 0x78, + 0xAF, 0x1D, 0xEC, 0x18, 0xEB, 0x00, 0xB6, 0x64, + 0xB5, 0x75, 0xA5, 0x00, 0xDC, 0x36, 0x45, 0xBD, + 0x0C, 0x66, 0xCE, 0xA9, 0xBB, 0xD1, 0xF7, 0xE4, + 0x6A, 0xDA, 0x0E, 0x81, 0x0F, 0x6A, 0x71, 0x60, + 0x5C, 0x41, 0xD2, 0x12, 0x45, 0x14, 0xEF, 0x6F, + 0xEC, 0x22, 0x73, 0x4C, 0xA7, 0x94, 0xDD, 0x1A, + 0x42, 0x22, 0x58, 0x14, 0x0C, 0x4E, 0x6D, 0x77, + 0x7F, 0xF5, 0xC9, 0x69, 0x81, 0xA3, 0xB8, 0x6D, + 0x1C, 0x39, 0x47, 0xA5, 0xC4, 0x61, 0x1C, 0x91, + 0x2F, 0x67, 0xC3, 0x5E, 0x87, 0x1A, 0x85, 0x81, + 0x7D, 0x76, 0xF2, 0xE0, 0xB9, 0xD0, 0x43, 0x33, + 0xF1, 0xC1, 0xBA, 0x48, 0x6F, 0x48, 0xD5, 0xAE, + 0xB6, 0xDC, 0xAA, 0xCA, 0xEB, 0x0B, 0x6B, 0xFE, + 0xF4, 0xF1, 0x6E, 0x5D, 0xE4, 0x90, 0x53, 0xCF, + 0x9E, 0x13, 0x80, 0xCE, 0xE5, 0xDD, 0xA4, 0x01, + 0xBC, 0x16, 0x50, 0xD0, 0x78, 0x96, 0x3F, 0x2B, + 0x7A, 0x71, 0x8E, 0x86, 0xFD, 0x14, 0x21, 0xDF, + 0x4D, 0xD7, 0xDD, 0x42, 0x59, 0xB3, 0xED, 0x81, + 0xE3, 0xAF, 0x71, 0x57, 0xE7, 0x04, 0xD2, 0x26, + 0xA8, 0x83, 0xFC, 0x03, 0x90, 0x8C, 0x88, 0xC4, + 0xBF, 0x74, 0x54, 0x59, 0xD8, 0x66, 0x9F, 0xE2, + 0x7A, 0xCE, 0x5B, 0x9C, 0xC4, 0x37, 0xFA, 0xDB, + 0x40, 0x9A, 0xDD, 0x73, 0x9C, 0x06, 0x5A, 0x21, + 0x43, 0xFB, 0xFA, 0x1B, 0x41, 0x31, 0x9F, 0xF4, + 0x24, 0x09, 0x05, 0xFE, 0x56, 0x17, 0x52, 0x9C, + 0xC7, 0xE2, 0xCA, 0xC9, 0x1F, 0xBE, 0xE2, 0xEB, + 0x92, 0xEE, 0xD4, 0x76, 0x44, 0x9A, 0xFA, 0xFB, + 0x07, 0x62, 0x98, 0xEC, 0xA0, 0xCF, 0xBF, 0xFA, + 0x5E, 0x1B, 0x8B, 0xCD, 0x33, 0xFB, 0x1A, 0x97, + 0xFE, 0x50, 0x65, 0x22, 0x08, 0x9E, 0xC3, 0x87, + 0x88, 0xCA, 0xDD, 0x11, 0x5E, 0xA7, 0xCF, 0xF3, + 0x07, 0x0A, 0x34, 0x0E, 0x30, 0x1B, 0xC5, 0xCE, + 0xF7, 0xA6, 0xA4, 0x31, 0xB5, 0x40, 0xB8, 0x81, + 0xAC, 0xAA, 0x07, 0xE0, 0x7D, 0x5E, 0x6A, 0x25, + 0x85, 0x8D, 0x1D, 0x82, 0x45, 0x82, 0x76, 0xB2, + 0x65, 0x69, 0x3E, 0x88, 0xFE, 0x21, 0xFE, 0x6A, + 0x6B, 0x97, 0xD6, 0x70, 0x70, 0x00, 0x83, 0x18, + 0x39, 0xA6, 0x91, 0x3F, 0xB1, 0xB7, 0xED, 0x11, + 0xD3, 0xF9, 0x74, 0x31, 0xEC, 0x21, 0xA2, 0xEE, + 0x69, 0x04, 0xC0, 0xEA, 0x4A, 0x17, 0x1A, 0xF8, + 0xDA, 0xF1, 0x52, 0xB2, 0x78, 0x69, 0x4F, 0xDF, + 0xE6, 0xB9, 0xF3, 0xE7, 0x48, 0x8B, 0x09, 0x5F, + 0x4A, 0x7A, 0x05, 0x8E, 0xA8, 0xF6, 0x69, 0x3D, + 0x91, 0x7A, 0x6F, 0x6C, 0xAD, 0x03, 0x16, 0xEA, + 0xE0, 0x04, 0xFE, 0x54, 0x71, 0x50, 0x6D, 0x31, + 0xE4, 0x37, 0x76, 0xD6, 0x1B, 0xA9, 0xEE, 0x56, + 0x7A, 0x39, 0x34, 0x24, 0x00, 0x58, 0xE3, 0x2F, + 0xD4, 0x97, 0x57, 0x6F, 0xD8, 0x0E, 0x8B, 0xD3, + 0x88, 0x7F, 0xE8, 0x74, 0x72, 0xF7, 0xBA, 0x26, + 0x25, 0xE4, 0xD5, 0x86, 0xCD, 0xA8, 0x1E, 0x8D, + 0x49, 0xCF, 0x04, 0x92, 0x5B, 0x50, 0xD0, 0x73, + 0x3C, 0xC9, 0x17, 0xC3, 0x0E, 0x67, 0x02, 0xC5, + 0xDE, 0x48, 0x88, 0x0D, 0x2C, 0x0D, 0x68, 0x04, + 0xD5, 0x51, 0xDF, 0x4F, 0x23, 0x89, 0x7A, 0x29, + 0x41, 0xB2, 0x7A, 0xCA, 0x86, 0xA5, 0xCC, 0xC4, + 0xF5, 0xD3, 0xE1, 0xEF, 0xB8, 0xCD, 0x84, 0xB5, + 0x6D, 0xB6, 0x51, 0x1B, 0x81, 0x26, 0x97, 0xAC, + 0x00, 0xFC, 0x76, 0x8D, 0x99, 0xD9, 0x35, 0x8E, + 0x4D, 0x3E, 0xC0, 0xC1, 0x0E, 0x8D, 0x9B, 0xE5, + 0x79, 0xF3, 0xC7, 0xA0, 0xA4, 0xA6, 0xA2, 0xE9, + 0x8B, 0xCD, 0x36, 0x79, 0x76, 0xF1, 0x6A, 0xEE, + 0xCF, 0x91, 0x8D, 0x91, 0xB1, 0xAF, 0xF2, 0xF5, + 0x43, 0xF6, 0xB2, 0x3A, 0x39, 0x9F, 0xBF, 0xDE, + 0x16, 0x03, 0x52, 0x18, 0x62, 0x93, 0xB5, 0x09, + 0xC4, 0xEE, 0x27, 0x9C, 0x56, 0x6F, 0x0C, 0x1C, + 0x12, 0x42, 0xF0, 0x34, 0xBD, 0x44, 0x52, 0x4C, + 0x32, 0x7E, 0x64, 0xDF, 0x78, 0x16, 0xD9, 0x9E, + 0xD7, 0x8A, 0x11, 0x33, 0x65, 0x42, 0xEC, 0x36, + 0x07, 0xEE, 0x3F, 0x19, 0x97, 0x9B, 0x92, 0x9D, + 0x3A, 0xE4, 0x98, 0x83, 0xDB, 0x0C, 0x85, 0x39, + 0xFA, 0x8D, 0x73, 0xF5, 0xBF, 0xE0, 0x75, 0x40, + 0x50, 0x9B, 0xF2, 0xE6, 0xB6, 0xA5, 0x33, 0xD0, + 0xC4, 0xD6, 0xAB, 0xFF, 0x16, 0xDE, 0x30, 0x9C, + 0x68, 0x90, 0xE0, 0x5E, 0xD3, 0xD5, 0xA9, 0xB0, + 0xD9, 0x6B, 0x0A, 0x43, 0x45, 0x9A, 0x3D, 0xE8, + 0xB6, 0x66, 0xE4, 0x57, 0x05, 0x8E, 0x5B, 0x72, + 0xFE, 0x50, 0x44, 0x8C, 0xE4, 0x68, 0x43, 0x51, + 0x0D, 0x9A, 0xD3, 0x36, 0xA9, 0xC7, 0xF6, 0xCF, + 0x6D, 0x2C, 0x95, 0x46, 0x98, 0x6D, 0x9E, 0x78, + 0x90, 0x87, 0x19, 0x64, 0xD5, 0xDE, 0x1D, 0x9B, + 0x37, 0x4E, 0x52, 0xF5, 0x14, 0xAA, 0xEE, 0x31, + 0x83, 0x55, 0x7C, 0x38, 0x0F, 0xB3, 0xF6, 0xF2, + 0x1C, 0x60, 0x71, 0x68, 0x1F, 0x06, 0xBD, 0x99, + 0xFD, 0x42, 0x12, 0x54, 0x3E, 0xBA, 0x4B, 0x60, + 0xFB, 0xFB, 0x51, 0x4D, 0x02, 0xCE, 0xE5, 0x9E, + 0x59, 0xB2, 0xE6, 0x98, 0x67, 0xBB, 0xAB, 0xC8, + 0x08, 0xE4, 0x08, 0x0D, 0xF5, 0x3B, 0x47, 0x78, + 0x39, 0x24, 0x56, 0x80, 0xF0, 0x6A, 0x1D, 0x33, + 0x05, 0x5F, 0xF2, 0xA2, 0x38, 0xAD, 0xDF, 0x5C, + 0xC5, 0xEA, 0x9C, 0xC7, 0x0A, 0x1B, 0x5B, 0x43, + 0xE9, 0x59, 0x3D, 0x68, 0x00, 0x23, 0x32, 0x5D, + 0x25, 0xFD, 0xA7, 0xCA, 0xDA, 0xA1, 0xFD, 0x22, + 0x4E, 0x34, 0x96, 0xE7, 0x0D, 0xFF, 0x89, 0x3B, + 0xA6, 0x56, 0x0D, 0x11, 0x13, 0xA6, 0x9D, 0x3B, + 0xBC, 0x12, 0x97, 0x9A, 0x2B, 0xAA, 0xE9, 0xE2, + 0xCF, 0xD2, 0xD3, 0xEF, 0x95, 0xFC, 0x40, 0x80, + 0x94, 0x48, 0x80, 0x5A, 0x3F, 0x4A, 0xD2, 0xB5, + 0x7D, 0x61, 0xA2, 0x26, 0x7B, 0xDC, 0x32, 0xCB, + 0x84, 0x2E, 0x9B, 0x29, 0x63, 0x45, 0x74, 0x0D, + 0x85, 0x54, 0xB2, 0x16, 0x77, 0x9B, 0x47, 0x51, + 0x63, 0x33, 0xE9, 0x1A, 0x52, 0x9D, 0xEB, 0x26, + 0x06, 0x7F, 0x97, 0xA0, 0xA1, 0xAA, 0x07, 0x0F, + 0x1E, 0x23, 0xAB, 0xCC, 0xD5, 0x0F, 0x3E, 0x88, + 0xAA, 0xC3, 0xED, 0x06, 0x25, 0x3A, 0x4A, 0x62, + 0x85, 0x9F, 0xA7, 0xD3, 0xF5, 0x1C, 0x9A, 0xCC, + 0x52, 0x87, 0x9F, 0xB8, 0xC7, 0xDD, 0xF1, 0x50, + 0x66, 0x70, 0xAC, 0xC6, 0x2C, 0x2E, 0x8C, 0xC9, + 0xD9, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0D, 0x13, 0x1D, 0x20, + 0x27, 0x2C, 0x32 + }; +#endif + byte sig[DILITHIUM_MAX_SIG_SIZE]; + word32 sigLen; + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + + ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); + ExpectIntEQ(wc_dilithium_import_private(sk_44, (word32)sizeof(sk_44), key), + 0); + sigLen = PARAMS_ML_DSA_44_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_44, (word32)sizeof(msg_44), + sig, &sigLen, key, rnd_44), 0); + ExpectIntEQ(sigLen, PARAMS_ML_DSA_44_SIG_SIZE); + ExpectIntEQ(XMEMCMP(sig, sig_44, sizeof(sig_44)), 0); +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); + ExpectIntEQ(wc_dilithium_import_private(sk_65, (word32)sizeof(sk_65), key), + 0); + sigLen = PARAMS_ML_DSA_65_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_65, (word32)sizeof(msg_65), + sig, &sigLen, key, rnd_65), 0); + ExpectIntEQ(sigLen, PARAMS_ML_DSA_65_SIG_SIZE); + ExpectIntEQ(XMEMCMP(sig, sig_65, sizeof(sig_65)), 0); +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); + ExpectIntEQ(wc_dilithium_import_private(sk_87, (word32)sizeof(sk_87), key), + 0); + sigLen = PARAMS_ML_DSA_87_SIG_SIZE; + ExpectIntEQ(wc_dilithium_sign_msg_with_seed(msg_87, (word32)sizeof(msg_87), + sig, &sigLen, key, rnd_87), 0); + ExpectIntEQ(sigLen, PARAMS_ML_DSA_87_SIG_SIZE); + ExpectIntEQ(XMEMCMP(sig, sig_87, sizeof(sig_87)), 0); +#endif + + wc_dilithium_free(key); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + +int test_wc_dilithium_verify_kats(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \ + !defined(WOLFSSL_DILITHIUM_NO_VERIFY) + dilithium_key* key; + int res; +#ifndef WOLFSSL_NO_ML_DSA_44 + static const byte pk_44[] = { + 0x09, 0xB4, 0x88, 0x7D, 0x97, 0xBC, 0xF6, 0x37, + 0x9C, 0xC5, 0x9B, 0x61, 0x62, 0xC1, 0xE8, 0xBF, + 0x05, 0x60, 0xBF, 0x44, 0xD6, 0x18, 0x09, 0x17, + 0x0E, 0x6E, 0x28, 0xF7, 0x06, 0x69, 0xA3, 0xE9, + 0x49, 0x64, 0x38, 0xE8, 0x91, 0x57, 0x35, 0xAD, + 0xAE, 0xB4, 0x45, 0xCF, 0xDB, 0x7D, 0x89, 0xB3, + 0x8C, 0x04, 0x8F, 0x4C, 0x3E, 0x00, 0x58, 0x15, + 0x14, 0xC5, 0xFD, 0x19, 0x8B, 0x2D, 0x17, 0x39, + 0xE8, 0x83, 0xB8, 0x78, 0xD5, 0x6B, 0xB4, 0x12, + 0x64, 0xBE, 0x41, 0xD3, 0xD5, 0x15, 0x65, 0xE2, + 0xE9, 0xCA, 0xE3, 0x31, 0x84, 0xA8, 0x99, 0xF6, + 0x2D, 0xD5, 0x7D, 0x07, 0x40, 0x0E, 0x98, 0xE5, + 0x86, 0x87, 0xA9, 0xB2, 0x2F, 0xA3, 0x17, 0xEE, + 0xD1, 0x34, 0xCA, 0x72, 0x14, 0xBF, 0xF0, 0x21, + 0xDD, 0x21, 0x62, 0xB1, 0x83, 0x09, 0x1D, 0x15, + 0xF2, 0x63, 0xB7, 0x29, 0x82, 0x14, 0x42, 0x3C, + 0x6B, 0xB6, 0x96, 0xD7, 0x5C, 0x20, 0xD9, 0xEA, + 0xCD, 0x0A, 0x03, 0xE4, 0x26, 0x2C, 0x4B, 0x08, + 0xBE, 0x39, 0xFA, 0x21, 0x54, 0xBD, 0x6E, 0x50, + 0x25, 0xFF, 0x79, 0x1E, 0x88, 0x5F, 0x22, 0x26, + 0xE3, 0xCF, 0x48, 0xF7, 0xB5, 0xEB, 0x04, 0xFB, + 0xE9, 0xEC, 0xF7, 0x5B, 0x19, 0xE1, 0xD1, 0x5C, + 0x30, 0x5E, 0x92, 0x26, 0x0A, 0xB0, 0xD6, 0xAE, + 0x7D, 0xBA, 0x7B, 0xBE, 0x73, 0xB6, 0xBC, 0x18, + 0x1C, 0xF9, 0x33, 0x84, 0x0C, 0xC1, 0x0A, 0x00, + 0x05, 0x02, 0x28, 0xFA, 0x46, 0xA2, 0x63, 0x6D, + 0xD9, 0xA9, 0x09, 0x47, 0xE9, 0xF1, 0x3A, 0x93, + 0xEF, 0x4C, 0x62, 0xBE, 0x37, 0x4D, 0x76, 0xD1, + 0xFD, 0xBB, 0xC5, 0xD8, 0xB5, 0x5E, 0x72, 0x9F, + 0xA5, 0x86, 0x65, 0xAA, 0x07, 0xB9, 0x0C, 0x8C, + 0xDD, 0xD6, 0x1C, 0x56, 0x6B, 0x0D, 0x7E, 0xD6, + 0x57, 0x70, 0x49, 0x2E, 0xA0, 0x71, 0x3E, 0x1E, + 0xD4, 0x6A, 0xC7, 0xAD, 0x15, 0x03, 0xC5, 0x6D, + 0x90, 0x52, 0xD2, 0xC9, 0x4D, 0x49, 0xE4, 0x41, + 0x6A, 0xC9, 0x2B, 0x70, 0x39, 0x6F, 0x76, 0xF6, + 0xFB, 0x48, 0x10, 0x45, 0x68, 0x17, 0x25, 0xA6, + 0x8C, 0xB3, 0x56, 0x37, 0x7F, 0xB2, 0x31, 0xAB, + 0x8F, 0x3E, 0xB9, 0xA4, 0x98, 0x2F, 0xFF, 0x18, + 0x36, 0x47, 0x3B, 0xCB, 0xDA, 0xB6, 0x87, 0x2D, + 0x22, 0x94, 0x67, 0xEF, 0xB9, 0x36, 0x62, 0x61, + 0xFE, 0xB1, 0x48, 0xBA, 0x9B, 0x7D, 0xB9, 0xC4, + 0xFE, 0x0B, 0xB8, 0x86, 0x12, 0xAB, 0xB8, 0xFD, + 0x61, 0x09, 0x6F, 0x18, 0x19, 0x60, 0x4D, 0x55, + 0xDF, 0x60, 0x20, 0x46, 0x4D, 0x3F, 0x09, 0x2C, + 0xFC, 0xA5, 0x98, 0x12, 0x08, 0x22, 0x18, 0x56, + 0x68, 0x99, 0xA5, 0x6A, 0x3C, 0x63, 0x3C, 0xC8, + 0x1F, 0x88, 0xAD, 0xB2, 0xE1, 0x41, 0x4E, 0xF3, + 0x85, 0x0D, 0x10, 0xBF, 0x5A, 0x77, 0xAC, 0xE7, + 0x24, 0xD6, 0xC1, 0xF3, 0x88, 0x92, 0x87, 0x44, + 0xB3, 0xE5, 0x42, 0xAE, 0x49, 0x1C, 0xD5, 0x6A, + 0x64, 0x21, 0x3F, 0x1D, 0x3C, 0xC9, 0x0B, 0x29, + 0x10, 0x5F, 0x43, 0xD2, 0x37, 0xC8, 0x3D, 0x5F, + 0xB8, 0x29, 0x32, 0x5C, 0x83, 0xE6, 0x54, 0x57, + 0x77, 0x76, 0x39, 0x2F, 0x85, 0x36, 0xAA, 0x9D, + 0xAE, 0x87, 0x24, 0x07, 0xAB, 0xAA, 0xA9, 0xAC, + 0xC2, 0x2A, 0x68, 0x12, 0xCE, 0xA7, 0x4C, 0x0B, + 0xA6, 0x7E, 0xAF, 0x4A, 0x41, 0x01, 0x52, 0x97, + 0x5E, 0x9A, 0x83, 0xEE, 0x44, 0x69, 0x29, 0x53, + 0x17, 0xBE, 0xD1, 0x05, 0x51, 0xBA, 0x32, 0xE6, + 0x5A, 0xFC, 0x8C, 0x8E, 0x68, 0xDD, 0x55, 0x42, + 0x0C, 0x50, 0x2D, 0x93, 0x7D, 0xAD, 0xD2, 0xEF, + 0xA2, 0xCB, 0xFD, 0x1F, 0x73, 0x9F, 0xC0, 0xAB, + 0x2B, 0x26, 0x54, 0xFA, 0xE0, 0x8C, 0x0C, 0x7F, + 0x8E, 0xDD, 0x43, 0xCF, 0x9F, 0xF0, 0xB0, 0x1D, + 0x98, 0x4D, 0x49, 0x18, 0x52, 0xA3, 0x72, 0xE9, + 0xFE, 0xFD, 0xCC, 0x1B, 0xC1, 0x6C, 0xDB, 0x52, + 0x39, 0xAE, 0x10, 0x01, 0x15, 0x5F, 0x89, 0x56, + 0x30, 0x51, 0xCE, 0x47, 0x99, 0x6C, 0x5A, 0xEE, + 0xB2, 0x19, 0x0E, 0xA1, 0x8F, 0x7F, 0x73, 0x40, + 0x42, 0xDE, 0x68, 0xE9, 0x88, 0x36, 0x7D, 0x89, + 0x35, 0x5D, 0x9D, 0x83, 0x77, 0xBA, 0xF9, 0x64, + 0x79, 0x78, 0xEB, 0x2E, 0x49, 0x2A, 0xD0, 0x21, + 0xC5, 0x69, 0xAE, 0x8B, 0xA6, 0x9B, 0x15, 0xF1, + 0xFC, 0xF7, 0x03, 0x9A, 0x7E, 0x64, 0xAF, 0x10, + 0xAB, 0xF3, 0xEA, 0x45, 0xB7, 0x22, 0x2F, 0x96, + 0x59, 0xE3, 0x33, 0x73, 0x37, 0x2E, 0x1D, 0xB1, + 0x86, 0xD2, 0xC2, 0xA0, 0xD7, 0x54, 0x51, 0xC4, + 0x78, 0xAE, 0xF3, 0x3E, 0x59, 0x49, 0xF2, 0x40, + 0x04, 0x0C, 0x2A, 0xFC, 0x44, 0xB1, 0xD3, 0xA0, + 0x2A, 0x6D, 0x2F, 0x87, 0x90, 0x2A, 0x28, 0x0E, + 0x27, 0xA2, 0x0D, 0x4E, 0x57, 0xF8, 0x89, 0x66, + 0x27, 0x00, 0xDB, 0x8A, 0x9D, 0x24, 0x99, 0x57, + 0xA7, 0xDB, 0x43, 0x7C, 0xD4, 0x80, 0xDD, 0xC0, + 0x58, 0x84, 0xFB, 0x23, 0xF8, 0x68, 0x26, 0x8E, + 0xAC, 0xE3, 0x4E, 0xED, 0x27, 0x4A, 0x92, 0x7D, + 0x9D, 0x84, 0xF1, 0xEA, 0x57, 0xEA, 0xB1, 0xA8, + 0x13, 0xB5, 0xE6, 0xAA, 0xBE, 0x9E, 0xD2, 0x61, + 0x0B, 0xC6, 0xF7, 0x2E, 0x32, 0x0C, 0xDE, 0xC4, + 0xF9, 0x95, 0x23, 0xF9, 0x3F, 0xA4, 0x48, 0xDC, + 0x1F, 0xBB, 0xDD, 0x25, 0x9B, 0x10, 0x2F, 0x5D, + 0xC9, 0x95, 0x5A, 0xFA, 0x0C, 0x41, 0x60, 0x4D, + 0x83, 0xDD, 0x1C, 0x2D, 0x22, 0x95, 0xEF, 0x44, + 0x61, 0x45, 0x6B, 0xAE, 0x86, 0x90, 0x5C, 0x4C, + 0x30, 0xD8, 0xA9, 0xFA, 0x48, 0xC9, 0x0F, 0x37, + 0xA1, 0x9C, 0x41, 0xA2, 0xD5, 0x98, 0x8F, 0x13, + 0xD5, 0x13, 0x44, 0xEC, 0x30, 0xA4, 0xA4, 0x62, + 0x19, 0xFE, 0x84, 0x11, 0x37, 0xD5, 0xAA, 0x1F, + 0x51, 0xE6, 0xC4, 0x44, 0x16, 0x8A, 0xF3, 0x98, + 0x90, 0xB6, 0xFA, 0x40, 0x0D, 0x67, 0xF4, 0x80, + 0x6F, 0x5B, 0xBD, 0x44, 0x47, 0x03, 0x07, 0x4A, + 0x7A, 0x11, 0x39, 0xC7, 0x17, 0x46, 0xD7, 0xC4, + 0xCE, 0xB3, 0xC9, 0x11, 0xF5, 0x25, 0x7E, 0x3E, + 0x53, 0xEB, 0xFA, 0x5A, 0xA8, 0xF2, 0x27, 0x80, + 0x9D, 0x44, 0xEE, 0x7D, 0xE1, 0x3C, 0x02, 0x79, + 0x24, 0xDD, 0x60, 0x15, 0x3B, 0x30, 0xAA, 0x76, + 0xDD, 0x96, 0xA7, 0xC5, 0xAC, 0xC5, 0x9B, 0x62, + 0x79, 0x19, 0x50, 0x7B, 0xF1, 0x42, 0x57, 0xAE, + 0x7A, 0x26, 0x24, 0x3C, 0x16, 0x83, 0xB2, 0x8D, + 0x1B, 0x14, 0xB5, 0x01, 0xAD, 0x05, 0x9B, 0x4D, + 0x52, 0x2A, 0x57, 0x99, 0x1E, 0x55, 0x39, 0xCE, + 0xF1, 0x8C, 0xEB, 0x5C, 0x26, 0xD6, 0x60, 0xB8, + 0x82, 0x24, 0x54, 0xC9, 0xC4, 0x2A, 0x95, 0xE6, + 0xF7, 0x2B, 0x84, 0xF7, 0x8A, 0xB9, 0x9F, 0x51, + 0xEC, 0x49, 0x78, 0x9F, 0x9D, 0xB4, 0xC1, 0x28, + 0xB0, 0x31, 0x8F, 0xFF, 0xC8, 0x2D, 0x95, 0xCA, + 0xD2, 0x77, 0xF1, 0x1E, 0x14, 0xF1, 0xEF, 0x87, + 0x14, 0x14, 0x88, 0x11, 0x22, 0xA9, 0xB1, 0x1B, + 0xDF, 0xAE, 0x4A, 0x7A, 0xBC, 0x8E, 0x75, 0x75, + 0x5A, 0xB1, 0x37, 0x41, 0xDF, 0xAC, 0xD6, 0x64, + 0x29, 0x3D, 0x1A, 0x32, 0x6B, 0xF5, 0xED, 0x5A, + 0xBB, 0xB1, 0x53, 0xEB, 0xE6, 0x99, 0x6D, 0xD6, + 0x22, 0xF0, 0xA8, 0xCB, 0x47, 0x39, 0x69, 0xA5, + 0x03, 0x66, 0xBD, 0x0B, 0x01, 0xC5, 0xC7, 0x3A, + 0x89, 0x2B, 0x8E, 0x26, 0xCE, 0x08, 0xF7, 0x5F, + 0xF8, 0x01, 0xB6, 0xDE, 0xF0, 0x41, 0xE1, 0x71, + 0x3B, 0xE6, 0xDF, 0x0E, 0xFB, 0x51, 0x58, 0x7B, + 0xE5, 0xFB, 0xEA, 0x72, 0x7E, 0x00, 0xD7, 0x17, + 0x64, 0x7D, 0xD5, 0x39, 0x07, 0x9D, 0xE1, 0x8A, + 0xE7, 0xBE, 0xD1, 0x2B, 0x91, 0xAF, 0x8D, 0xBB, + 0x1B, 0x8B, 0x32, 0xD2, 0x86, 0x0B, 0xAF, 0x40, + 0xAF, 0x8A, 0x0B, 0xBF, 0xE0, 0x28, 0x87, 0xEB, + 0x5D, 0xBE, 0x7A, 0xB1, 0xAF, 0xC4, 0x1D, 0xA7, + 0x9B, 0x01, 0x6A, 0xA1, 0x6E, 0xDA, 0x28, 0x13, + 0x21, 0xCA, 0xA5, 0xDA, 0x64, 0x4F, 0xD8, 0x65, + 0x8A, 0x7B, 0x70, 0x21, 0x81, 0x00, 0x14, 0x31, + 0x56, 0x0D, 0xD6, 0x3C, 0xB2, 0x1E, 0x5F, 0xF7, + 0x5C, 0x3F, 0x72, 0x50, 0x45, 0x6B, 0xE0, 0x8C, + 0x0D, 0x5E, 0x34, 0xC3, 0xBD, 0xE2, 0xF6, 0x06, + 0xA2, 0xBF, 0x34, 0x17, 0x76, 0x8D, 0x24, 0xB2, + 0x37, 0x39, 0xEA, 0x86, 0xCB, 0xEF, 0xDD, 0xA3, + 0x43, 0x88, 0xBC, 0x1F, 0x91, 0x8F, 0x95, 0x1E, + 0x15, 0xE4, 0x3B, 0x13, 0x85, 0xA7, 0xBC, 0xC5, + 0x59, 0xF9, 0x49, 0x2C, 0x72, 0x13, 0xA1, 0x42, + 0x27, 0xE0, 0x93, 0xE9, 0x29, 0xF3, 0x2D, 0x1E, + 0xFB, 0xE7, 0xF1, 0xEE, 0x57, 0xC4, 0x9C, 0x90, + 0x55, 0x62, 0x3E, 0xA4, 0x2E, 0xC6, 0xC7, 0x9D, + 0x7F, 0xCE, 0x71, 0xFA, 0x74, 0x76, 0x07, 0x56, + 0x6D, 0xDA, 0x69, 0xF6, 0x9D, 0xAF, 0x68, 0x11, + 0x59, 0x19, 0xC6, 0x32, 0x2E, 0xBB, 0x42, 0xC8, + 0xC0, 0x89, 0x33, 0x8C, 0x9E, 0x0C, 0x53, 0x56, + 0x5B, 0xCB, 0xE7, 0x2F, 0xBE, 0x47, 0x26, 0x68, + 0x7B, 0x07, 0x87, 0x07, 0x18, 0x06, 0xC5, 0xA6, + 0xC1, 0x49, 0xC8, 0x2B, 0x66, 0x8A, 0xA6, 0x4A, + 0x7B, 0xA0, 0xCC, 0xC1, 0xCC, 0x49, 0xA1, 0xEE, + 0xE9, 0x45, 0x3D, 0x04, 0x33, 0x6E, 0x5D, 0xC8, + 0x11, 0xE0, 0x38, 0x92, 0xF7, 0xF4, 0x66, 0x88, + 0xEC, 0xEF, 0xD0, 0x4F, 0x18, 0x76, 0xF7, 0x11, + 0x17, 0x12, 0xB5, 0x95, 0xED, 0x62, 0xDA, 0x00, + 0x67, 0x8F, 0x9E, 0x37, 0x86, 0xB5, 0xC1, 0xA5, + 0x09, 0x5B, 0xE8, 0x71, 0x0D, 0xCF, 0xA4, 0x16, + 0x52, 0x56, 0x50, 0x9E, 0x00, 0x14, 0x3A, 0x6F, + 0x11, 0x72, 0xFA, 0xBE, 0x8B, 0xF2, 0x1E, 0x5F, + 0xCE, 0x7C, 0x79, 0xC1, 0xA4, 0x4B, 0x4B, 0x15, + 0x25, 0xA0, 0x76, 0xFF, 0xB8, 0xDD, 0x90, 0x66 + }; + static const byte msg_44[] = { + 0x3A, 0xFD, 0x7F, 0xF8, 0xCA, 0xD3, 0xAC, 0xBD, + 0xF9, 0x77, 0x31, 0x26, 0x1C, 0x7A, 0x1C, 0x96, + 0x9D, 0x50, 0x16, 0xF1, 0x7D, 0x3E, 0x7F, 0x83, + 0xD2, 0x44, 0x1A, 0xF9, 0x01, 0x4B, 0x63, 0x47, + 0x7B, 0x14, 0xA6, 0x41, 0x31, 0x50, 0xFA, 0xD7, + 0xC8, 0x44, 0x39, 0xBC, 0x88, 0x66, 0x2C, 0x5E, + 0x93, 0x1F, 0x06, 0xB9, 0x51, 0x41, 0x90, 0xE1, + 0x3F, 0xB0, 0x49, 0xC4, 0xAB, 0x74, 0x01, 0x32, + 0x33, 0xB9, 0x8D, 0x48, 0xD9, 0xAF, 0xB6, 0xA3, + 0x0A, 0x67, 0x33, 0x0E, 0x1F, 0xBE, 0x33, 0x1B, + 0x09, 0xC5, 0x6D, 0x03, 0x7E, 0x97, 0x01, 0x08, + 0x5D, 0x80, 0xF1, 0xE7, 0xF4, 0x04, 0x3E, 0xFB, + 0x53, 0x58, 0x7A, 0xBB, 0x82, 0x36, 0x24, 0x01, + 0x23, 0x84, 0x51, 0x52, 0x49, 0xEE, 0x61, 0x30, + 0x97, 0x3D, 0xC9, 0xEA, 0x6F, 0x55, 0x8B, 0xAE, + 0x75, 0x10, 0x7E, 0xFD, 0xB1, 0xD9, 0x28, 0x5B + }; + static const byte sig_44[] = { + 0x4A, 0x2B, 0x16, 0xCD, 0xB5, 0x52, 0xF9, 0x29, + 0x7F, 0x8E, 0x39, 0x1A, 0xD8, 0xF5, 0xAD, 0xC8, + 0xCC, 0x5D, 0x2C, 0x56, 0xC4, 0x6B, 0x80, 0x0F, + 0x9B, 0x3E, 0xE4, 0xBB, 0xD2, 0xF2, 0xE8, 0xA8, + 0x9D, 0x59, 0x9D, 0x7B, 0x5C, 0xC2, 0xD8, 0x8C, + 0x80, 0xF2, 0x71, 0x85, 0x9B, 0xBC, 0x83, 0x04, + 0x3E, 0xC4, 0xE5, 0x48, 0x12, 0xF5, 0x93, 0x6B, + 0x44, 0x6C, 0x95, 0x13, 0xC8, 0x55, 0x28, 0x9C, + 0x94, 0xB1, 0x15, 0x51, 0xA0, 0xC7, 0x65, 0x3E, + 0x7B, 0xA7, 0x4F, 0xFB, 0x6F, 0x72, 0xD4, 0x65, + 0x2C, 0x91, 0xD3, 0x8D, 0xD1, 0xF9, 0x0D, 0xFE, + 0x44, 0x39, 0xBC, 0x21, 0xCA, 0x53, 0xE0, 0xCC, + 0x7A, 0x7A, 0xA5, 0xB8, 0x75, 0xA5, 0xB9, 0xBA, + 0x42, 0x36, 0x6E, 0xB8, 0xEC, 0xBA, 0x24, 0x36, + 0xDA, 0xF0, 0x8A, 0x91, 0x97, 0x8D, 0xD0, 0x93, + 0xF2, 0x0F, 0x1E, 0xFB, 0x6B, 0x0B, 0xCB, 0x90, + 0xDA, 0x99, 0xCC, 0xA0, 0x5E, 0x8F, 0x6F, 0x82, + 0xB8, 0x6D, 0x3C, 0x6E, 0xE2, 0x4B, 0xA5, 0xD5, + 0x0A, 0xEA, 0x10, 0xB2, 0x30, 0x7F, 0x57, 0xF8, + 0x9E, 0xD7, 0x8D, 0xB4, 0xA7, 0x4F, 0xBB, 0xF6, + 0xEB, 0x33, 0x2A, 0xFB, 0x08, 0xD0, 0x74, 0xAC, + 0xF0, 0xDE, 0x5C, 0xD7, 0xFE, 0xC1, 0x2F, 0x76, + 0xF3, 0xAB, 0x61, 0x9C, 0x81, 0x5B, 0x9E, 0xDD, + 0x28, 0x7E, 0xAD, 0x67, 0xF0, 0x4F, 0x14, 0x79, + 0x7F, 0x8D, 0xCF, 0x2C, 0xDE, 0x9A, 0x87, 0x53, + 0xB5, 0xAD, 0x0A, 0xFA, 0x12, 0x87, 0x41, 0x97, + 0xD1, 0x74, 0x40, 0x92, 0x87, 0x25, 0x21, 0xE8, + 0x68, 0xAF, 0x9E, 0x64, 0x45, 0x23, 0x73, 0xFE, + 0xB6, 0xFE, 0x25, 0xD5, 0x27, 0x3D, 0x63, 0xC0, + 0xEB, 0xD6, 0xD3, 0xB1, 0x02, 0x8C, 0x1C, 0xD0, + 0x6A, 0xF3, 0x2C, 0xEC, 0xA2, 0x62, 0x13, 0x10, + 0x83, 0x7C, 0x72, 0x78, 0x8C, 0x8A, 0xDA, 0xB5, + 0xA0, 0xF0, 0x38, 0x17, 0x12, 0x8E, 0xB7, 0xB7, + 0x66, 0xFA, 0x81, 0x2C, 0x69, 0x6C, 0xF8, 0x86, + 0xF0, 0x0A, 0x10, 0x44, 0xCD, 0xD0, 0x6B, 0xB2, + 0x8C, 0xB2, 0xE5, 0x78, 0x0C, 0x8D, 0x8C, 0xC7, + 0xE6, 0x0A, 0xB6, 0x99, 0xDD, 0x78, 0x66, 0x8B, + 0xE4, 0xFF, 0x9F, 0x46, 0x90, 0xC6, 0xFC, 0x98, + 0xAA, 0xC9, 0xC0, 0x2B, 0x66, 0xB9, 0xB9, 0x82, + 0x6A, 0x30, 0x61, 0xFD, 0x32, 0x22, 0xDA, 0x84, + 0x82, 0x66, 0x79, 0x60, 0xA3, 0x16, 0x52, 0xEE, + 0x88, 0xEB, 0x32, 0xB0, 0x46, 0x9A, 0xB7, 0x1C, + 0xAA, 0x25, 0x19, 0xF2, 0x3D, 0x1A, 0x24, 0x42, + 0xD5, 0xB1, 0x31, 0x62, 0x62, 0x13, 0x1D, 0xCE, + 0xC5, 0xF2, 0x87, 0xE3, 0x2F, 0xD3, 0x43, 0xFE, + 0xB4, 0x42, 0x9E, 0x54, 0x25, 0x8D, 0x69, 0x0D, + 0x9D, 0x20, 0xA1, 0x0A, 0xBD, 0x75, 0xA5, 0x36, + 0xDF, 0xF8, 0xCF, 0x1D, 0x6D, 0xDF, 0x19, 0x29, + 0x1E, 0x27, 0x49, 0xA7, 0xD1, 0x6E, 0xB9, 0x0A, + 0xB5, 0x09, 0x3B, 0xAD, 0x38, 0xE1, 0x16, 0xA8, + 0x6B, 0x73, 0x0E, 0x65, 0x57, 0x4C, 0x06, 0x8C, + 0x38, 0xBA, 0x94, 0x57, 0xC9, 0xD6, 0xD9, 0x13, + 0xEA, 0xFF, 0x57, 0xFE, 0x23, 0xBF, 0x3D, 0xD2, + 0x4D, 0x8C, 0xA5, 0x11, 0xEF, 0xA3, 0x76, 0xA5, + 0xDF, 0x08, 0x46, 0x70, 0x25, 0xFF, 0x51, 0xBE, + 0xAD, 0x3E, 0xDE, 0x0A, 0x84, 0xED, 0xC5, 0x32, + 0x16, 0x20, 0x99, 0x80, 0x61, 0xE8, 0xA1, 0xA7, + 0x3D, 0x67, 0xB7, 0x02, 0x1B, 0x81, 0x0C, 0x78, + 0x67, 0xFF, 0x39, 0x18, 0x7B, 0x59, 0xD4, 0x03, + 0xBF, 0x7C, 0x75, 0x06, 0x30, 0x0C, 0x73, 0x45, + 0xB1, 0xFE, 0x07, 0xC1, 0x12, 0x78, 0xB0, 0xAB, + 0xA6, 0x1D, 0xBB, 0x4F, 0x2B, 0x8C, 0x43, 0xE7, + 0x4F, 0xEF, 0xA5, 0x5E, 0xD5, 0x2C, 0x10, 0xA8, + 0xC4, 0x90, 0x88, 0x2B, 0xBF, 0xE3, 0xE3, 0xB3, + 0xCE, 0x57, 0x9E, 0x81, 0x16, 0xA9, 0xB6, 0x68, + 0x6C, 0x1A, 0x10, 0x0A, 0xA1, 0xF6, 0x59, 0x1F, + 0x19, 0x1F, 0x77, 0x2B, 0x5A, 0x5A, 0x50, 0xDD, + 0x6C, 0xC1, 0x55, 0xCB, 0x5A, 0x1B, 0xE5, 0xBA, + 0x12, 0x2E, 0x91, 0xF0, 0x44, 0x42, 0x01, 0x56, + 0xCD, 0x63, 0x08, 0x0F, 0x0A, 0x45, 0xD6, 0x62, + 0xE7, 0x6D, 0xD5, 0x7B, 0xD0, 0xF6, 0x89, 0xD0, + 0xB2, 0x99, 0x04, 0x2B, 0xFF, 0x48, 0x5E, 0x8A, + 0x38, 0x2D, 0x86, 0x5C, 0x26, 0xCD, 0x46, 0xB4, + 0xA5, 0x47, 0x28, 0xBD, 0x48, 0x45, 0x83, 0x62, + 0xD7, 0x9A, 0xC3, 0xEB, 0x75, 0x6F, 0xC6, 0xC5, + 0x18, 0xC9, 0xE2, 0xF0, 0xE7, 0xD5, 0xA3, 0x03, + 0xAF, 0x11, 0x59, 0xEE, 0x6D, 0xBE, 0x7D, 0xD5, + 0x6B, 0xA0, 0x71, 0x28, 0x57, 0xA6, 0x88, 0x36, + 0xC3, 0xC7, 0x8C, 0x6C, 0x9F, 0x74, 0x88, 0x57, + 0x28, 0x13, 0xC0, 0xF6, 0xA8, 0x14, 0x70, 0x9D, + 0x2B, 0xC1, 0x42, 0xFE, 0xF0, 0x25, 0x27, 0xCA, + 0xE7, 0x71, 0x23, 0x58, 0x37, 0x1C, 0x54, 0x26, + 0x52, 0x2C, 0xCC, 0x64, 0x30, 0x0C, 0x2C, 0xD9, + 0xFB, 0xE2, 0x0C, 0x65, 0x62, 0xE3, 0x48, 0x35, + 0x20, 0x5F, 0xCD, 0xD5, 0xA8, 0x98, 0x2C, 0x92, + 0x0B, 0xB4, 0x77, 0xFB, 0x88, 0x17, 0x02, 0x82, + 0x7B, 0x49, 0x11, 0x87, 0x13, 0x94, 0xC0, 0x6B, + 0x5F, 0xEC, 0xD0, 0xC7, 0x40, 0xAF, 0x7B, 0x27, + 0x63, 0x7B, 0xAC, 0x1A, 0x0C, 0xBC, 0xA5, 0x37, + 0xE4, 0x43, 0x3E, 0xA8, 0x47, 0x45, 0x4C, 0x69, + 0x38, 0x97, 0xA3, 0x2E, 0x4D, 0x18, 0x44, 0x19, + 0x54, 0x26, 0xA0, 0xC6, 0xAE, 0xD6, 0x74, 0x72, + 0xBD, 0x2C, 0x4E, 0xEE, 0x17, 0x9F, 0x3F, 0x60, + 0x84, 0xA3, 0x6A, 0x76, 0x89, 0xF4, 0xCB, 0x1F, + 0x8E, 0x5D, 0xB2, 0xDD, 0xE5, 0x4A, 0xCC, 0x06, + 0x66, 0xBA, 0x98, 0x41, 0x54, 0x31, 0xA4, 0xB2, + 0x02, 0xF4, 0x02, 0xFB, 0x1F, 0x1B, 0xCC, 0xDC, + 0x23, 0xBF, 0xF1, 0x31, 0x48, 0xC7, 0xB8, 0xF6, + 0x1F, 0xBF, 0x62, 0x43, 0xB2, 0x96, 0xA7, 0x8E, + 0xB6, 0x98, 0x18, 0x9D, 0xA9, 0x5B, 0xDA, 0x85, + 0xDB, 0xC1, 0x1D, 0x15, 0xFF, 0xDC, 0x6B, 0xF4, + 0x6C, 0x53, 0xF6, 0xE4, 0x72, 0xA8, 0x71, 0x40, + 0x1E, 0x9A, 0x9A, 0xB7, 0xF9, 0xFB, 0x46, 0x7E, + 0xB4, 0xEC, 0xB1, 0xF0, 0xDA, 0x7E, 0x63, 0xEE, + 0x86, 0x19, 0xCB, 0xC4, 0x86, 0xEB, 0xB0, 0xF2, + 0x12, 0x0A, 0x78, 0x11, 0xBF, 0xB0, 0x55, 0x7D, + 0x13, 0x93, 0x05, 0x74, 0x29, 0x7C, 0x94, 0x64, + 0xFC, 0x59, 0x5B, 0x27, 0x56, 0x9A, 0xDF, 0x5F, + 0x4A, 0x8D, 0xF6, 0x69, 0xC9, 0xEE, 0xA0, 0xA2, + 0x50, 0xF4, 0xD2, 0x2C, 0x2E, 0x8C, 0x64, 0x1B, + 0xA3, 0x90, 0x2B, 0xA8, 0x08, 0x00, 0x48, 0x99, + 0x65, 0xF1, 0x1A, 0xF1, 0xE1, 0xA8, 0x57, 0x17, + 0xC6, 0x24, 0xE7, 0x42, 0xF1, 0x61, 0x55, 0x08, + 0x19, 0xD1, 0xF0, 0x37, 0x2C, 0x5C, 0xAE, 0x8B, + 0xC6, 0x2B, 0x54, 0x9E, 0xFE, 0x87, 0x44, 0x61, + 0x08, 0x0D, 0x06, 0x34, 0x6E, 0x1F, 0xA6, 0xF0, + 0x15, 0x14, 0xFB, 0xEC, 0xCB, 0x06, 0xE3, 0x4E, + 0xE2, 0x71, 0xA0, 0xF0, 0x03, 0x17, 0x90, 0xBD, + 0xAB, 0xE0, 0xF0, 0x2B, 0xBA, 0x4A, 0xEA, 0x4B, + 0x73, 0x97, 0xFE, 0x33, 0x33, 0xEB, 0x81, 0x21, + 0x82, 0x07, 0x57, 0x28, 0x1F, 0x96, 0xA5, 0x83, + 0x1F, 0x9E, 0x49, 0x03, 0x66, 0x54, 0x9D, 0x16, + 0x76, 0x3F, 0xF1, 0x9F, 0xF7, 0x73, 0x58, 0x0E, + 0xD5, 0xE3, 0xE1, 0xE2, 0xAA, 0x3E, 0x38, 0xF8, + 0x84, 0x74, 0xDE, 0x6D, 0x9B, 0xA6, 0x99, 0x4F, + 0x8E, 0x62, 0x91, 0x60, 0x48, 0x8C, 0xB4, 0xCD, + 0x5B, 0x87, 0x8C, 0xDA, 0x37, 0xAA, 0xEC, 0x9B, + 0x56, 0x36, 0x9A, 0x7E, 0x73, 0xF7, 0x3B, 0x42, + 0x86, 0x39, 0xA0, 0x5C, 0x13, 0x78, 0x44, 0x8A, + 0xDB, 0x7F, 0x07, 0x4D, 0xC8, 0x15, 0x4D, 0x92, + 0xE1, 0x3C, 0x63, 0x56, 0xB5, 0xF4, 0x66, 0xD6, + 0x64, 0x77, 0x15, 0x9B, 0x2A, 0x94, 0x37, 0x99, + 0xAD, 0x61, 0x9A, 0x02, 0x9F, 0x30, 0x10, 0xD0, + 0x37, 0x67, 0x2D, 0xBB, 0x68, 0x20, 0xE5, 0x13, + 0x23, 0xAD, 0xA9, 0x88, 0x81, 0xC6, 0xDE, 0x85, + 0x9D, 0xF8, 0x75, 0xAB, 0xAF, 0x11, 0xDA, 0x5D, + 0xDC, 0xA5, 0xA7, 0x77, 0x62, 0x2B, 0xDA, 0xE8, + 0xFA, 0xCE, 0x2E, 0x0C, 0xED, 0x3B, 0x6A, 0x77, + 0xB8, 0x8A, 0x87, 0x29, 0xFB, 0x7C, 0x50, 0x93, + 0x3D, 0xA6, 0xC5, 0x2E, 0x3F, 0x4D, 0x94, 0x8F, + 0x9D, 0xC1, 0x53, 0xB5, 0xB1, 0x29, 0x9C, 0xD8, + 0x62, 0x1D, 0xDF, 0xBA, 0x48, 0xAF, 0x44, 0xE4, + 0xB6, 0xF6, 0x10, 0x6E, 0xE7, 0x77, 0x95, 0x01, + 0xDD, 0x5F, 0xB3, 0xC5, 0x78, 0xEA, 0x4D, 0x32, + 0xC5, 0xC2, 0xF0, 0x36, 0xA7, 0x35, 0x27, 0x03, + 0xAD, 0xD1, 0x35, 0xAB, 0x84, 0x46, 0x01, 0x62, + 0x41, 0x7E, 0x50, 0xBF, 0x91, 0xE6, 0x07, 0x97, + 0xD5, 0x9B, 0x9E, 0x18, 0xD3, 0x24, 0xDA, 0x97, + 0x1F, 0x4F, 0xF4, 0x28, 0xAE, 0xAF, 0x23, 0xAC, + 0x0B, 0xA4, 0xE2, 0xE2, 0xFC, 0x7A, 0xBA, 0xA6, + 0xC8, 0x98, 0x4F, 0xE9, 0xE2, 0xD8, 0x5B, 0x8A, + 0xDA, 0x40, 0x86, 0xB3, 0xC1, 0x3A, 0xBD, 0x43, + 0xCF, 0xD1, 0xC7, 0x11, 0xD8, 0x32, 0x6B, 0x18, + 0xAD, 0xC3, 0x4C, 0xC1, 0x4C, 0xF8, 0x95, 0x7E, + 0xC3, 0x95, 0x94, 0x98, 0xFC, 0x2A, 0x7B, 0xE0, + 0x6B, 0xD1, 0x84, 0x0D, 0xE1, 0x70, 0x36, 0x65, + 0x66, 0xE5, 0x07, 0x41, 0x95, 0x77, 0x63, 0xC2, + 0xDD, 0x27, 0xAC, 0xF8, 0xC3, 0xF1, 0x02, 0x6F, + 0xAE, 0xE1, 0xD2, 0x56, 0x2F, 0xA1, 0x05, 0x2E, + 0x69, 0xAF, 0xDD, 0x42, 0xF4, 0x46, 0xF0, 0x59, + 0x88, 0x66, 0xD5, 0xD3, 0x06, 0xBF, 0x1B, 0x77, + 0x50, 0x42, 0xB0, 0x35, 0x92, 0x73, 0x72, 0x82, + 0x7F, 0x43, 0x86, 0x31, 0x65, 0x34, 0xFA, 0x1B, + 0x7E, 0xE6, 0x33, 0xBA, 0x95, 0x8C, 0xED, 0x8F, + 0x0D, 0x24, 0x1D, 0x46, 0x88, 0xE3, 0xC7, 0x91, + 0x8E, 0x2A, 0x75, 0x62, 0x63, 0x77, 0xC3, 0x42, + 0xA5, 0x90, 0x69, 0x2B, 0xBF, 0xB8, 0x27, 0xBF, + 0x90, 0x51, 0x41, 0x82, 0xD4, 0x09, 0x0D, 0xF8, + 0xD7, 0x32, 0x35, 0x19, 0xA1, 0xAB, 0x6C, 0xD0, + 0x22, 0x73, 0x67, 0x41, 0x0D, 0xD1, 0x4D, 0x37, + 0x86, 0xA2, 0x6D, 0xDF, 0x91, 0x72, 0x4F, 0xC8, + 0x2D, 0x06, 0xA2, 0x5D, 0x5F, 0x56, 0x68, 0x39, + 0x53, 0xE8, 0xE0, 0xF2, 0x0E, 0x3C, 0x17, 0x71, + 0xDA, 0xF4, 0x2E, 0x52, 0x02, 0x4C, 0x11, 0x6E, + 0xD8, 0xA4, 0xC0, 0xA6, 0x11, 0x68, 0x0F, 0x5F, + 0xE0, 0x0E, 0xD9, 0xB1, 0x48, 0xD1, 0x5F, 0x12, + 0xAA, 0x95, 0xB9, 0xBD, 0x5A, 0x9F, 0xD8, 0x10, + 0x16, 0x42, 0xB3, 0x69, 0x11, 0xF3, 0x10, 0xB0, + 0xDE, 0x18, 0x17, 0x1D, 0x62, 0x37, 0xD9, 0xBE, + 0x17, 0x25, 0xDC, 0x29, 0x9A, 0x1A, 0x3A, 0xAA, + 0xE9, 0x85, 0x40, 0xCE, 0xED, 0x26, 0x95, 0x3D, + 0x10, 0xCE, 0x85, 0x47, 0xF1, 0xC3, 0xE4, 0x6A, + 0x86, 0x2B, 0xED, 0x42, 0x8D, 0x1E, 0x10, 0x60, + 0x1B, 0xF3, 0x28, 0xC7, 0x27, 0xFD, 0x95, 0x34, + 0x3E, 0x2D, 0xB4, 0xD9, 0xAC, 0xD5, 0xD1, 0xCB, + 0x47, 0x15, 0xF6, 0x00, 0x40, 0x96, 0xED, 0xA0, + 0x93, 0xD1, 0xB0, 0xA3, 0x3B, 0x1E, 0x56, 0xF1, + 0x6D, 0x73, 0xAD, 0xB8, 0x73, 0x2C, 0xB4, 0xA3, + 0x11, 0x60, 0xA4, 0x49, 0x1F, 0xAA, 0x0C, 0x86, + 0xE6, 0x80, 0xE3, 0xD7, 0xC0, 0x2C, 0xCE, 0xA8, + 0xFE, 0x92, 0xF1, 0xE0, 0x01, 0x01, 0x6D, 0x22, + 0x02, 0x21, 0xDD, 0x10, 0xED, 0x62, 0x60, 0x17, + 0x96, 0x6C, 0x34, 0x50, 0xAD, 0x12, 0x13, 0x65, + 0x91, 0x8C, 0x93, 0x09, 0x1F, 0x14, 0x71, 0x2B, + 0xA4, 0x77, 0xCF, 0x2E, 0x26, 0x32, 0x96, 0xC7, + 0x78, 0xA2, 0xBA, 0xEE, 0xF5, 0x84, 0x94, 0x55, + 0xFA, 0x35, 0xCB, 0x61, 0x72, 0x51, 0xE0, 0x2A, + 0x22, 0xDA, 0xF5, 0xC3, 0x3E, 0x5A, 0xAA, 0x9F, + 0x00, 0xE8, 0xAC, 0xDC, 0x50, 0xEC, 0xF4, 0x7C, + 0x52, 0x15, 0x03, 0xC5, 0x2F, 0x27, 0xD6, 0xB5, + 0x7C, 0x8F, 0x2B, 0x3D, 0x8F, 0x12, 0x22, 0x41, + 0x3E, 0x7F, 0xA4, 0xEC, 0x59, 0x29, 0x63, 0x38, + 0x09, 0x8C, 0x9A, 0xB5, 0xA1, 0xD8, 0xA5, 0x78, + 0x84, 0xBD, 0x86, 0x00, 0x41, 0x40, 0x6D, 0x96, + 0x55, 0xD1, 0x73, 0x82, 0x94, 0x9A, 0x03, 0xD5, + 0x0F, 0x11, 0x08, 0xD0, 0x5B, 0xDB, 0x31, 0xCA, + 0x08, 0xE6, 0x6F, 0x2D, 0x8D, 0xE4, 0x80, 0xC6, + 0x79, 0x35, 0x18, 0xD4, 0x9A, 0x60, 0xD4, 0x76, + 0x2A, 0x9E, 0xDD, 0xC0, 0x24, 0x9B, 0x42, 0x2E, + 0x84, 0x02, 0x0E, 0xD5, 0x39, 0xA1, 0x4E, 0x24, + 0x78, 0xF6, 0x8B, 0xAB, 0x1F, 0x2B, 0x00, 0xE2, + 0x2A, 0x5C, 0xBB, 0x62, 0x97, 0x9A, 0xC7, 0x44, + 0xE0, 0x8B, 0x57, 0xD5, 0xB5, 0x78, 0xC4, 0x01, + 0xA8, 0xD2, 0x6D, 0x9A, 0xDD, 0x15, 0x05, 0x23, + 0x60, 0x82, 0x86, 0x36, 0x72, 0xD9, 0x11, 0xCF, + 0x3A, 0x09, 0x66, 0xD3, 0x03, 0xF8, 0x91, 0x70, + 0x93, 0xBF, 0x97, 0xAF, 0x90, 0xA7, 0xE1, 0xF9, + 0xD5, 0x9B, 0x09, 0x20, 0x6B, 0x9C, 0xAC, 0x35, + 0x11, 0x0F, 0xA3, 0x8D, 0x58, 0x90, 0xED, 0x21, + 0x16, 0x83, 0x5C, 0xE3, 0x73, 0x84, 0xF5, 0x63, + 0x0F, 0x1C, 0x42, 0x8E, 0x21, 0x36, 0x05, 0x87, + 0x2E, 0xCF, 0x91, 0x1B, 0x01, 0x4B, 0x91, 0xC2, + 0xC6, 0x00, 0xE8, 0xA4, 0x07, 0x29, 0xD0, 0x7B, + 0xF9, 0x18, 0x79, 0x07, 0x42, 0xC9, 0x27, 0x9F, + 0x31, 0x14, 0xF6, 0x8C, 0xDF, 0x65, 0x94, 0xCD, + 0xA3, 0xCA, 0x66, 0x94, 0x22, 0x3A, 0x82, 0xF6, + 0x6C, 0x2B, 0x4B, 0xDF, 0x3E, 0x51, 0xC6, 0xFF, + 0xDC, 0x55, 0xE0, 0xFF, 0x51, 0xEF, 0xD6, 0xC9, + 0x34, 0x36, 0x2B, 0xE7, 0xD6, 0xFA, 0xBC, 0x11, + 0xB8, 0xB0, 0xDA, 0xDD, 0xD5, 0x21, 0x08, 0xFA, + 0x5F, 0xB5, 0xCA, 0x75, 0x8A, 0x64, 0x37, 0x7D, + 0x38, 0x6D, 0x45, 0xCE, 0x70, 0x60, 0x5B, 0x46, + 0x0E, 0x81, 0x57, 0x03, 0x7B, 0x5B, 0x1B, 0x2E, + 0x0A, 0xED, 0xD1, 0x2A, 0x63, 0x31, 0x15, 0xD6, + 0xC4, 0x3B, 0xC6, 0xC7, 0xC8, 0x36, 0xFF, 0xF3, + 0x3E, 0x7D, 0x03, 0x3F, 0x2E, 0x58, 0x00, 0x52, + 0x71, 0x64, 0xC0, 0xC4, 0x78, 0x1C, 0x37, 0xDF, + 0x50, 0xB6, 0x6B, 0xBA, 0x5C, 0x81, 0x94, 0x73, + 0xA1, 0xC5, 0x30, 0x20, 0x83, 0xA1, 0x6F, 0x01, + 0x43, 0x72, 0x79, 0xD2, 0xF2, 0xDF, 0x14, 0xC8, + 0x78, 0x26, 0x9A, 0x2F, 0x3F, 0xA4, 0x0C, 0x1C, + 0x76, 0x1E, 0xD6, 0x15, 0x01, 0xAC, 0x9E, 0xF1, + 0x41, 0x02, 0x90, 0x38, 0xC8, 0x19, 0x95, 0x40, + 0x89, 0xB7, 0x38, 0x09, 0x87, 0x08, 0x17, 0x43, + 0x93, 0xFE, 0xAE, 0xA7, 0xB0, 0x2A, 0xE5, 0xCE, + 0xF6, 0x7B, 0x3C, 0x8C, 0xE6, 0xA9, 0x70, 0x67, + 0x5C, 0xA1, 0xB8, 0xC8, 0x56, 0xDC, 0xF5, 0x97, + 0x25, 0x08, 0xC7, 0xC6, 0xB2, 0x5E, 0xE4, 0xD1, + 0x2D, 0x82, 0x12, 0xB9, 0x89, 0x40, 0xB4, 0x88, + 0xEC, 0x40, 0x2A, 0xC7, 0xAE, 0x3C, 0x70, 0xDF, + 0x93, 0x8D, 0x12, 0x88, 0xCD, 0xA7, 0xA3, 0x19, + 0xE0, 0x85, 0xBC, 0x73, 0xA4, 0x69, 0xB2, 0xD2, + 0xA3, 0x30, 0x3B, 0x11, 0xA6, 0x83, 0x10, 0x0A, + 0xF6, 0xDB, 0x86, 0x93, 0x7B, 0xA1, 0x18, 0x29, + 0x03, 0x61, 0x6E, 0x3F, 0x03, 0x47, 0xBD, 0x68, + 0x59, 0x1B, 0x47, 0xBA, 0x65, 0x15, 0x6B, 0x93, + 0xF2, 0x60, 0xDE, 0x59, 0xB3, 0xAE, 0xB2, 0x89, + 0xE2, 0xA7, 0x3A, 0x3B, 0xFF, 0x38, 0xC2, 0xF3, + 0xAD, 0xED, 0xA2, 0x9C, 0x7E, 0x90, 0x28, 0x3A, + 0xC7, 0xB8, 0x6D, 0x03, 0x6B, 0x47, 0xD5, 0xBA, + 0x1A, 0x03, 0xEC, 0x78, 0x3D, 0x25, 0x0B, 0xAC, + 0xAE, 0x58, 0x47, 0xE4, 0x1F, 0x82, 0x9C, 0xB3, + 0x3D, 0xE0, 0x8D, 0xF8, 0xF7, 0xD6, 0x9C, 0x9A, + 0xA4, 0xED, 0xE8, 0xD7, 0xAB, 0x96, 0x84, 0x07, + 0xEE, 0xD3, 0x1A, 0x05, 0x6B, 0xA0, 0xEF, 0x88, + 0x16, 0xE1, 0x27, 0xAA, 0x90, 0x06, 0x5A, 0x67, + 0x9E, 0x1C, 0xA9, 0x55, 0x0D, 0xEE, 0xF2, 0x5A, + 0xC5, 0xB7, 0xA3, 0x4F, 0x70, 0xDC, 0xF2, 0xB1, + 0x16, 0xCF, 0x35, 0x1F, 0x3B, 0xAD, 0xA9, 0x9F, + 0x83, 0x6C, 0x73, 0x0D, 0xCC, 0x1A, 0xE0, 0x3F, + 0x49, 0x6C, 0xF3, 0xF0, 0x38, 0x7A, 0x0C, 0x2C, + 0x70, 0x2E, 0x2C, 0x13, 0xBD, 0xD9, 0xCF, 0x45, + 0xA1, 0xCD, 0x53, 0xAB, 0x58, 0x73, 0x11, 0x88, + 0xB1, 0x8E, 0xA8, 0xBE, 0x48, 0xD5, 0x10, 0xC5, + 0x81, 0x2E, 0x90, 0xBC, 0xEC, 0xBC, 0x6E, 0x19, + 0x8E, 0x70, 0x8B, 0x1C, 0x08, 0xC8, 0xF8, 0x64, + 0xB1, 0x24, 0xBB, 0x4C, 0xC0, 0xBD, 0xBB, 0xDF, + 0x2C, 0x2F, 0x4E, 0x38, 0x8F, 0xC1, 0x96, 0x60, + 0xD6, 0x9C, 0xC2, 0xC0, 0xEB, 0xF9, 0x10, 0x08, + 0xC8, 0x24, 0x3D, 0xB4, 0x2D, 0xDA, 0xF5, 0x7C, + 0x02, 0x42, 0x51, 0xC4, 0x23, 0x1D, 0xF5, 0x37, + 0x90, 0xCE, 0x57, 0x56, 0x13, 0xEE, 0x8E, 0x1C, + 0x7A, 0x33, 0xC1, 0x56, 0x1F, 0x35, 0x04, 0xDE, + 0xAA, 0xED, 0x1E, 0x84, 0x08, 0x50, 0x06, 0x23, + 0xEC, 0xA5, 0xAE, 0x5A, 0x28, 0x45, 0x41, 0x17, + 0x49, 0x93, 0x0D, 0x8E, 0x42, 0x07, 0x8C, 0x03, + 0x23, 0x49, 0x95, 0x7F, 0xC3, 0x9A, 0x1D, 0xA0, + 0xEA, 0xF9, 0xE8, 0x7C, 0x31, 0xFF, 0xBF, 0x6A, + 0xC0, 0xC1, 0x81, 0x1E, 0xB2, 0x8A, 0x41, 0xB1, + 0xD8, 0x6B, 0xD7, 0xD4, 0x9A, 0xD1, 0xC4, 0x68, + 0xA4, 0x95, 0x94, 0x95, 0x65, 0x25, 0xA2, 0x0A, + 0x31, 0x70, 0x0F, 0x12, 0x2F, 0x4C, 0x4B, 0xB2, + 0x25, 0x2A, 0x2F, 0x3D, 0x5C, 0x5D, 0x68, 0x73, + 0x83, 0x8C, 0x90, 0x95, 0x97, 0xBB, 0xCA, 0xD8, + 0xE1, 0x33, 0x3D, 0x5D, 0x61, 0x7C, 0x87, 0xC8, + 0xEE, 0x0F, 0x1B, 0x22, 0x38, 0x3B, 0x42, 0x4B, + 0x4C, 0x5C, 0x62, 0x72, 0x98, 0xA3, 0xBE, 0xCC, + 0x1B, 0x32, 0x47, 0x5C, 0x9D, 0xB6, 0xB9, 0xBD, + 0xC6, 0xD6, 0xDC, 0xF5, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x19, 0x28, 0x34 + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + static const byte pk_65[] = { + 0x6C, 0x9E, 0x7A, 0x1E, 0xE3, 0x66, 0x25, 0x76, + 0x0E, 0x5D, 0x2F, 0x33, 0xDF, 0x29, 0x29, 0xDA, + 0x56, 0x20, 0x32, 0x34, 0x06, 0x91, 0x60, 0xE5, + 0xF2, 0xBF, 0x03, 0x9C, 0x11, 0x06, 0x22, 0x73, + 0x07, 0x3C, 0x23, 0x75, 0x66, 0xCE, 0x05, 0x5D, + 0x87, 0x1F, 0x38, 0xAC, 0xD1, 0xA9, 0x85, 0x9A, + 0x82, 0x44, 0x67, 0xF1, 0x9B, 0xE6, 0x8E, 0x4F, + 0x00, 0x64, 0x5D, 0x22, 0x5C, 0x42, 0xC8, 0x5A, + 0x55, 0x7D, 0x2C, 0x5E, 0xCB, 0x44, 0x2B, 0x0F, + 0x02, 0x8A, 0x65, 0x28, 0x89, 0x8E, 0xE2, 0xB6, + 0x73, 0xD8, 0x63, 0xF3, 0x2E, 0xB9, 0xEC, 0x81, + 0x64, 0x12, 0x75, 0x41, 0xF3, 0x25, 0x19, 0xBB, + 0x88, 0xE0, 0x34, 0xA0, 0x3F, 0x46, 0xF7, 0xD1, + 0x93, 0xCD, 0x3D, 0xFB, 0xAD, 0xF6, 0x35, 0x57, + 0x92, 0x6C, 0x5C, 0x8F, 0x5B, 0x76, 0x6A, 0x7F, + 0xC5, 0xEC, 0x8B, 0x3F, 0x94, 0x8B, 0xF7, 0xA8, + 0x21, 0xB5, 0x4C, 0x94, 0x41, 0xAB, 0x0B, 0xD8, + 0x33, 0xFD, 0x63, 0x54, 0xCE, 0xC7, 0x06, 0xFA, + 0xA5, 0x00, 0xAB, 0xB5, 0x28, 0x9B, 0x90, 0xB1, + 0xBF, 0x91, 0x76, 0x77, 0xA2, 0x9D, 0x11, 0x5F, + 0x00, 0x94, 0xBD, 0xB4, 0x8D, 0xC7, 0x2E, 0x26, + 0x1D, 0xBA, 0x12, 0x0B, 0xA6, 0xFF, 0x5E, 0x52, + 0xA0, 0x1B, 0x17, 0x89, 0x81, 0xDD, 0x82, 0x96, + 0x44, 0x46, 0x56, 0xD9, 0x44, 0x2D, 0xF9, 0xCB, + 0xB6, 0xBF, 0xDA, 0xE5, 0x6A, 0x23, 0x0F, 0x6F, + 0x29, 0xF9, 0x4C, 0xDC, 0xC2, 0x65, 0x57, 0x6A, + 0xA8, 0x75, 0x2A, 0xCE, 0xD0, 0x7E, 0x99, 0x89, + 0x5C, 0xAE, 0xF0, 0x16, 0x8B, 0xF8, 0x3D, 0x23, + 0xFD, 0xAD, 0xFB, 0xB9, 0x28, 0xCB, 0xCD, 0xAB, + 0xA2, 0x5F, 0xE2, 0xCD, 0x26, 0xAD, 0xDF, 0xB0, + 0xDA, 0xCD, 0x74, 0x94, 0x0F, 0x35, 0x14, 0x26, + 0x94, 0x2F, 0x17, 0x6F, 0xFB, 0xC5, 0xF3, 0x45, + 0x6D, 0xB7, 0xC9, 0x12, 0xAA, 0x16, 0xB8, 0x6D, + 0x07, 0x45, 0xF8, 0x7C, 0x9F, 0x45, 0x37, 0x0A, + 0x84, 0x56, 0xA1, 0xAD, 0xB5, 0x1D, 0xB4, 0x05, + 0x2B, 0x5C, 0x9E, 0xAF, 0x60, 0xAD, 0x7B, 0x80, + 0xA4, 0x2E, 0xA4, 0xBF, 0x92, 0xC8, 0x41, 0x27, + 0x3A, 0xD7, 0x61, 0xDE, 0xDB, 0x0D, 0x34, 0xBF, + 0x57, 0x96, 0x00, 0xB1, 0x49, 0xFC, 0xCD, 0x42, + 0xAB, 0x15, 0x49, 0xBA, 0x0A, 0xBE, 0xDA, 0x57, + 0xEF, 0x71, 0xD1, 0xFC, 0xA5, 0x70, 0x2A, 0xAD, + 0x08, 0x32, 0x99, 0xBB, 0x98, 0x30, 0x01, 0x89, + 0xC2, 0x5F, 0x3B, 0x27, 0x0A, 0x87, 0x65, 0x8D, + 0x0B, 0x2E, 0xA5, 0x65, 0x24, 0x14, 0x7F, 0x73, + 0x9E, 0xB6, 0xC6, 0x76, 0xD7, 0xBE, 0x73, 0xDD, + 0x3B, 0x95, 0xB1, 0x0C, 0x55, 0xAB, 0x46, 0xFD, + 0x01, 0x54, 0x9C, 0x51, 0x68, 0xBF, 0x7D, 0xA1, + 0x3A, 0x49, 0x97, 0x85, 0xF3, 0x5A, 0x1E, 0x3B, + 0x56, 0xF4, 0xC5, 0x67, 0xF5, 0x4E, 0xA9, 0xAA, + 0x28, 0x17, 0xA3, 0x36, 0x38, 0x36, 0x43, 0xFA, + 0x2E, 0xA3, 0x1F, 0xB1, 0xB7, 0x3E, 0x10, 0x24, + 0x8D, 0xFC, 0xA0, 0x5C, 0x04, 0x13, 0x12, 0x66, + 0x49, 0x8E, 0x1C, 0x94, 0x91, 0x13, 0x5A, 0x50, + 0xE6, 0x3D, 0x02, 0xFA, 0xDF, 0x41, 0x65, 0xFC, + 0x9E, 0x15, 0xE3, 0xE1, 0xB3, 0x2F, 0xAB, 0x83, + 0x37, 0x68, 0x4C, 0x49, 0x19, 0x3E, 0x1B, 0xC4, + 0xED, 0xEA, 0xE3, 0x73, 0xA2, 0x67, 0xA7, 0x14, + 0xAC, 0x1F, 0x90, 0x9C, 0xC6, 0x57, 0xCD, 0x80, + 0x66, 0x64, 0x63, 0x27, 0xE0, 0xEE, 0xA0, 0x41, + 0xAC, 0x9F, 0x2A, 0xEF, 0xFC, 0x80, 0x69, 0x1B, + 0xF6, 0x0D, 0x3C, 0x94, 0xC6, 0x42, 0x55, 0x7E, + 0x42, 0x99, 0xD3, 0x95, 0x92, 0x22, 0x16, 0xC6, + 0x5E, 0x75, 0xB7, 0xE1, 0xA5, 0x02, 0x89, 0x60, + 0x38, 0x4B, 0xF8, 0x16, 0xC9, 0xF7, 0x05, 0x48, + 0x29, 0xE7, 0x98, 0x5B, 0x58, 0x41, 0xA7, 0x33, + 0xF3, 0x3F, 0xCE, 0x24, 0x55, 0xEF, 0xC8, 0x9B, + 0xAE, 0x84, 0xB4, 0x79, 0x90, 0xE8, 0xD0, 0xAF, + 0xC6, 0x19, 0x3E, 0x4A, 0xF9, 0xBC, 0x68, 0x0A, + 0xE2, 0x4F, 0xE5, 0x91, 0xE8, 0x8B, 0xA6, 0xA2, + 0xAE, 0x12, 0xDA, 0x38, 0x58, 0xD2, 0x1F, 0x49, + 0x2D, 0x24, 0xAB, 0xC4, 0xFE, 0x4F, 0xD5, 0x2D, + 0x5A, 0xBF, 0x24, 0xBD, 0x25, 0x46, 0x87, 0xB9, + 0x18, 0x79, 0x2F, 0x0A, 0x00, 0x3A, 0x52, 0x22, + 0xDF, 0x45, 0x03, 0x86, 0x85, 0xC7, 0x25, 0xCE, + 0x75, 0x79, 0xE0, 0x2C, 0xB1, 0x68, 0xBB, 0xC6, + 0x66, 0xAB, 0xF6, 0x69, 0x85, 0x6E, 0x10, 0x53, + 0x7C, 0x92, 0x91, 0x69, 0x2C, 0x0C, 0xB0, 0xCF, + 0xA9, 0x06, 0x27, 0x0A, 0xC2, 0xC7, 0xB7, 0xDC, + 0x31, 0xD4, 0xF9, 0x28, 0x3C, 0xB2, 0xDB, 0x8A, + 0x46, 0x2A, 0xEC, 0x0B, 0x98, 0x07, 0xBB, 0xF4, + 0xAB, 0x45, 0x76, 0xFE, 0xC6, 0x22, 0x6B, 0x41, + 0x79, 0x32, 0x2B, 0x67, 0xAE, 0xA5, 0x3B, 0xDD, + 0xF9, 0xC9, 0xBE, 0x5E, 0x0D, 0xBC, 0x43, 0xF7, + 0x87, 0x43, 0x06, 0x8A, 0xB5, 0xBE, 0x49, 0xF0, + 0xE6, 0x2F, 0x8E, 0x2E, 0xB1, 0xB6, 0xC6, 0x73, + 0x6C, 0x05, 0xC9, 0x41, 0x3D, 0x06, 0x5C, 0xE0, + 0xCC, 0xB7, 0x90, 0x54, 0x80, 0x41, 0xD7, 0xE8, + 0x32, 0x88, 0x1A, 0x83, 0x9B, 0x57, 0x29, 0xAF, + 0x94, 0xAB, 0x79, 0xFD, 0x8A, 0x16, 0xDF, 0xFF, + 0x78, 0xCA, 0xAA, 0x14, 0x1D, 0x97, 0xCC, 0x06, + 0x50, 0xF8, 0x62, 0x62, 0xF2, 0x61, 0x59, 0xBE, + 0x8B, 0x36, 0x1A, 0x4A, 0x04, 0x1E, 0x9A, 0x0B, + 0x65, 0x11, 0xBB, 0xE3, 0x35, 0x5A, 0x4B, 0xF5, + 0x7A, 0xC0, 0x98, 0x48, 0x84, 0x7E, 0xE0, 0x24, + 0x3C, 0x3B, 0xA7, 0x74, 0x77, 0x6F, 0x7E, 0x9A, + 0x22, 0x72, 0x75, 0xD7, 0x4E, 0x6E, 0x31, 0x01, + 0xD3, 0x82, 0x81, 0x87, 0x63, 0xED, 0x1E, 0x13, + 0x53, 0xAB, 0x9E, 0xEC, 0xCD, 0x92, 0x0C, 0xD2, + 0x89, 0x22, 0xD5, 0x59, 0xA4, 0x04, 0x8F, 0x40, + 0xF0, 0x62, 0x16, 0x4C, 0xB6, 0x61, 0xC4, 0xF4, + 0xAF, 0xA8, 0x1A, 0x3D, 0x55, 0x93, 0x3C, 0x47, + 0x91, 0xED, 0xDA, 0xA3, 0x93, 0x9E, 0x5A, 0xC3, + 0x42, 0xB0, 0xAD, 0x1F, 0x43, 0x8A, 0x53, 0x2C, + 0x6C, 0xE7, 0x86, 0x68, 0x1A, 0x87, 0x0D, 0x94, + 0xEC, 0x88, 0xA3, 0x34, 0xCC, 0xEF, 0xC6, 0xAC, + 0xE7, 0xD9, 0x88, 0xA1, 0xA8, 0x2B, 0xC0, 0xAC, + 0xCE, 0x78, 0x5F, 0x12, 0x3B, 0xE2, 0x3A, 0x7C, + 0x92, 0xAF, 0x10, 0x8E, 0x5E, 0xD4, 0xF0, 0x86, + 0x9E, 0x22, 0xDA, 0xE2, 0x73, 0x55, 0x6D, 0x1D, + 0xE3, 0x86, 0x62, 0x3A, 0x6C, 0x3F, 0x11, 0x5B, + 0xBD, 0x11, 0x92, 0x71, 0xD3, 0xFB, 0xA7, 0x96, + 0xF6, 0x18, 0xB5, 0x39, 0x59, 0xFB, 0x98, 0x01, + 0x2E, 0x7D, 0x5B, 0x9A, 0xC6, 0x88, 0x94, 0x0B, + 0x87, 0xE2, 0xC9, 0xC0, 0x65, 0x52, 0x4A, 0x00, + 0xD3, 0xA4, 0xF4, 0xDB, 0xF5, 0x2F, 0x4B, 0x1A, + 0x63, 0xEF, 0x5C, 0x46, 0x19, 0x3B, 0xAD, 0xF7, + 0xAD, 0x7F, 0x98, 0x8D, 0x44, 0x64, 0x34, 0x5B, + 0x2C, 0x3E, 0x54, 0x96, 0x84, 0xF2, 0xF9, 0x05, + 0xF6, 0xF8, 0x9D, 0xD6, 0x41, 0x47, 0x3E, 0xC0, + 0x51, 0x08, 0xA5, 0x2D, 0x8D, 0xBB, 0x91, 0x76, + 0x8C, 0x54, 0x1D, 0xE5, 0x20, 0xB1, 0x76, 0x66, + 0x97, 0x0A, 0xAE, 0xB5, 0x06, 0xE7, 0x5D, 0x8E, + 0xE9, 0xF4, 0xB4, 0x45, 0x5B, 0x71, 0xE0, 0x08, + 0x8A, 0xB2, 0x56, 0x55, 0x21, 0x3B, 0x75, 0x85, + 0x9D, 0x25, 0xF5, 0x59, 0xD3, 0xC3, 0x24, 0xD2, + 0x83, 0xD3, 0x97, 0xAB, 0xE6, 0xF0, 0xAA, 0xA3, + 0x86, 0x81, 0x57, 0x68, 0xD0, 0x33, 0x57, 0xD7, + 0x75, 0x96, 0x49, 0x02, 0x41, 0x31, 0x53, 0xE3, + 0x56, 0x0C, 0xCE, 0xF1, 0xFD, 0x44, 0xB6, 0x5F, + 0xF1, 0xB2, 0x87, 0xA9, 0x2A, 0x96, 0x93, 0xF0, + 0x34, 0xB7, 0xEE, 0x66, 0x89, 0x34, 0x70, 0x2D, + 0x75, 0x01, 0xCA, 0xF6, 0xDA, 0x4E, 0xE9, 0x8A, + 0xF4, 0xE8, 0xE6, 0x4B, 0x03, 0x40, 0xE0, 0xBB, + 0x8B, 0xDC, 0x53, 0x3B, 0x0E, 0xFE, 0xE1, 0x91, + 0x5A, 0x4B, 0x68, 0xB9, 0x3C, 0x5E, 0x95, 0x32, + 0x1E, 0xED, 0xC2, 0x34, 0xAE, 0xFE, 0x71, 0xAE, + 0x2E, 0x5D, 0xAC, 0xEC, 0x2F, 0x52, 0xF8, 0x37, + 0x23, 0xA2, 0x39, 0x2A, 0x7F, 0x8E, 0x13, 0xBC, + 0x03, 0x01, 0xCD, 0x10, 0x4D, 0x85, 0x2E, 0x62, + 0xA7, 0xF8, 0x28, 0xAD, 0x32, 0x9B, 0x3D, 0x95, + 0x96, 0xC5, 0x8E, 0x13, 0xFC, 0xC0, 0xED, 0x96, + 0xC1, 0xC4, 0x8D, 0x82, 0xA2, 0xC0, 0xF4, 0xD9, + 0xD2, 0x4D, 0xD8, 0x42, 0x1F, 0xDC, 0xCE, 0xFD, + 0x49, 0x7A, 0x9B, 0x05, 0xFF, 0xC5, 0x09, 0x04, + 0x77, 0x04, 0x01, 0x37, 0x3F, 0xEE, 0x7D, 0xC7, + 0x37, 0x73, 0x41, 0x8A, 0xEB, 0x4A, 0x1F, 0x59, + 0x9A, 0x4B, 0xB3, 0x8E, 0xDE, 0x8D, 0x10, 0xA3, + 0xCC, 0x83, 0xA1, 0xC7, 0x2D, 0xE9, 0x21, 0x96, + 0x9E, 0x3C, 0xE3, 0xE8, 0xEF, 0x2F, 0x7D, 0xA8, + 0x9D, 0x34, 0x4C, 0x80, 0xD6, 0x1C, 0xF9, 0xC5, + 0xA4, 0x23, 0xB1, 0xA4, 0xF3, 0x56, 0x7D, 0x96, + 0xDB, 0x2D, 0xA3, 0xDB, 0x9B, 0x5B, 0x5F, 0xA6, + 0x81, 0x56, 0xBE, 0x74, 0x52, 0xC8, 0xA0, 0x18, + 0x1B, 0xB9, 0xF0, 0xDC, 0x75, 0xCD, 0x97, 0x50, + 0x88, 0x3D, 0x0D, 0xDA, 0xE5, 0x3F, 0xC1, 0x56, + 0xD6, 0x7A, 0x74, 0x20, 0x08, 0x69, 0x04, 0x6B, + 0x41, 0xDF, 0x4B, 0xC4, 0x39, 0x69, 0x93, 0xC0, + 0x8A, 0xA4, 0x89, 0x7A, 0x0B, 0xDD, 0xEF, 0xB5, + 0x5F, 0x69, 0xCC, 0x1C, 0x4D, 0x7B, 0x5F, 0xB1, + 0x50, 0x40, 0x84, 0x27, 0xB4, 0x16, 0xF7, 0x31, + 0x83, 0xF2, 0xB3, 0xCC, 0x16, 0xE3, 0xB7, 0xDA, + 0x63, 0xCE, 0xE1, 0x14, 0x3A, 0xDA, 0x1A, 0x05, + 0x66, 0x26, 0xA0, 0x77, 0xB6, 0xD2, 0x1C, 0x3D, + 0xD9, 0x74, 0xED, 0x90, 0x7C, 0x5A, 0x09, 0x40, + 0x19, 0x22, 0x57, 0x37, 0xEF, 0xB9, 0x33, 0x19, + 0xAD, 0x3B, 0x40, 0xA4, 0xF4, 0x34, 0xAE, 0x49, + 0xD2, 0x83, 0x91, 0xC1, 0x7A, 0x99, 0x9C, 0x74, + 0x4A, 0x68, 0xC5, 0x5A, 0x91, 0xB8, 0x62, 0x72, + 0x95, 0x83, 0xD3, 0xDA, 0x46, 0xEE, 0x70, 0xC5, + 0xCC, 0x46, 0x16, 0x94, 0x16, 0x7D, 0x32, 0xD2, + 0x1D, 0xE7, 0x53, 0x27, 0x73, 0x2C, 0x63, 0xBB, + 0xFB, 0xD7, 0xB3, 0x0D, 0xBF, 0x20, 0x57, 0xA0, + 0xD6, 0x81, 0x51, 0x9F, 0x6E, 0x4A, 0xF6, 0x08, + 0xD4, 0xBC, 0xD0, 0xB4, 0x75, 0x07, 0x26, 0x77, + 0x0E, 0x15, 0x6A, 0xED, 0xE8, 0x54, 0x17, 0xBD, + 0x75, 0x9D, 0x5F, 0xFE, 0x40, 0x1C, 0xB2, 0x99, + 0x6F, 0x34, 0x43, 0x4D, 0xB4, 0x28, 0xD9, 0xA4, + 0x17, 0x03, 0x72, 0x01, 0xFC, 0xD2, 0x60, 0xFA, + 0xA9, 0x80, 0x84, 0x50, 0x2E, 0xED, 0x5C, 0x27, + 0xA8, 0x91, 0x6E, 0x44, 0xF5, 0x92, 0x98, 0x19, + 0xD2, 0x1A, 0x69, 0xCE, 0x16, 0xBC, 0xDC, 0x3C, + 0xC8, 0x14, 0x1E, 0x28, 0x5E, 0xF8, 0x97, 0xB1, + 0x40, 0x2C, 0x15, 0xC9, 0x52, 0x59, 0x01, 0x19, + 0x05, 0x1E, 0x36, 0x9A, 0x1B, 0x7B, 0xE4, 0x43, + 0xFE, 0xAE, 0x6E, 0x32, 0xBC, 0x8F, 0x3D, 0x64, + 0x7F, 0xC5, 0x31, 0x5A, 0x52, 0x00, 0xCD, 0x52, + 0x38, 0xDC, 0x66, 0x77, 0x46, 0x6E, 0xA8, 0x6E, + 0xF8, 0xD1, 0x8E, 0x5A, 0x79, 0xF2, 0x62, 0x48, + 0x3E, 0x89, 0x6B, 0x82, 0x77, 0xC7, 0x41, 0xF5, + 0x16, 0xFC, 0x04, 0x0C, 0x10, 0x90, 0xF2, 0x49, + 0x5B, 0xF1, 0x65, 0x0B, 0x02, 0xAF, 0x30, 0x45, + 0x67, 0x33, 0xA0, 0x71, 0xAF, 0x47, 0xD7, 0xA1, + 0x5B, 0xD8, 0xE3, 0x2A, 0x49, 0x80, 0x64, 0x55, + 0xD3, 0xBE, 0xA7, 0x4A, 0xEF, 0x5D, 0x00, 0x90, + 0x6A, 0xD2, 0xF0, 0xC0, 0x45, 0x35, 0x4E, 0xFD, + 0xE7, 0xC9, 0xA2, 0x76, 0xE7, 0x3D, 0x9E, 0xDD, + 0x11, 0xD1, 0xCA, 0x5C, 0x29, 0x7B, 0x9A, 0x68, + 0x51, 0xE7, 0xF6, 0x7E, 0x21, 0xEB, 0x06, 0x1B, + 0xB5, 0x5D, 0x9E, 0x67, 0x3C, 0x4A, 0x75, 0xFE, + 0xB8, 0x4D, 0x52, 0x62, 0x9E, 0xEC, 0xC5, 0x3C, + 0x24, 0xBE, 0xA9, 0x51, 0x53, 0x05, 0x1A, 0xC2, + 0x06, 0xC8, 0x7D, 0xF5, 0x54, 0x10, 0xCA, 0x1F, + 0xE6, 0xCF, 0xC3, 0xF4, 0x03, 0xA6, 0xD9, 0xD4, + 0x3E, 0xA8, 0x4C, 0x60, 0xC9, 0x45, 0xE6, 0x42, + 0xB2, 0x83, 0x63, 0x38, 0xB5, 0xAF, 0x9F, 0x69, + 0xE5, 0x27, 0x08, 0xB2, 0xE2, 0x25, 0x93, 0x3D, + 0xB3, 0x20, 0xBB, 0x3F, 0x79, 0x0D, 0x39, 0x7F, + 0x22, 0xD7, 0xB6, 0xF8, 0xA4, 0x33, 0xCD, 0xAC, + 0xE9, 0x81, 0x0A, 0xA0, 0xE2, 0x7C, 0x69, 0x95, + 0x55, 0x53, 0x0C, 0x56, 0x2D, 0xBF, 0x75, 0x17, + 0xA4, 0x16, 0x26, 0x28, 0xBF, 0x10, 0xD1, 0xB6, + 0xDB, 0xAC, 0xEF, 0x5C, 0x9E, 0xD5, 0x1E, 0x55, + 0xD9, 0xA8, 0x9D, 0x60, 0xE0, 0xFC, 0x37, 0x8C, + 0x47, 0xA2, 0x1D, 0x5E, 0x0F, 0x2D, 0xC3, 0xBC, + 0xEF, 0x5E, 0x05, 0xC6, 0xE0, 0x26, 0x15, 0x30, + 0xFB, 0x02, 0x7E, 0x50, 0x32, 0x55, 0x8C, 0xA2, + 0xB4, 0x70, 0x05, 0xBD, 0xDE, 0x99, 0x90, 0x99, + 0x30, 0x39, 0x1E, 0xAD, 0x7F, 0x3F, 0x0A, 0x96, + 0xB3, 0xDE, 0xDA, 0x54, 0xA1, 0x11, 0x45, 0xF5, + 0x30, 0xE5, 0x1D, 0xEF, 0x89, 0x2E, 0x5A, 0xB0, + 0x20, 0x4D, 0x61, 0x4E, 0x6E, 0x38, 0xAF, 0xE7, + 0x9C, 0xA9, 0x2C, 0x28, 0x15, 0x8D, 0x57, 0x01, + 0x20, 0x35, 0x3B, 0x7A, 0x4D, 0xE0, 0x88, 0x98, + 0x46, 0xD8, 0x35, 0x29, 0x49, 0x39, 0x55, 0x7E, + 0xD0, 0xAE, 0xDA, 0x27, 0x0D, 0x4D, 0x73, 0xED, + 0x84, 0xD3, 0xD4, 0x9F, 0x9F, 0x03, 0x2D, 0x43, + 0x45, 0x7B, 0xF5, 0x9B, 0xB7, 0xD6, 0x63, 0x59, + 0xDC, 0x53, 0xF9, 0xB4, 0x69, 0x63, 0xB2, 0x17, + 0x84, 0xB0, 0x6C, 0xBC, 0xF0, 0x4B, 0xEC, 0x1E, + 0x33, 0xA3, 0x33, 0x71, 0x53, 0x27, 0x16, 0xC9, + 0xED, 0xB3, 0xFB, 0xED, 0xB8, 0x19, 0x99, 0xB4, + 0x37, 0x2D, 0x09, 0x45, 0xC1, 0x0A, 0xE8, 0x26, + 0xC6, 0x0F, 0xFE, 0x93, 0x17, 0x0B, 0x6D, 0x29, + 0x4B, 0x38, 0x91, 0xB0, 0xD2, 0xA7, 0xB3, 0x5B, + 0x28, 0xA8, 0x97, 0x18, 0x45, 0xDC, 0x2F, 0xEC, + 0xE2, 0x37, 0xB8, 0x0F, 0x20, 0xB3, 0x79, 0xCC, + 0x4D, 0x13, 0x6D, 0xAB, 0x3F, 0xBB, 0x37, 0x92, + 0xC6, 0x3E, 0xC6, 0x1F, 0x5C, 0x75, 0x5B, 0xC9, + 0xDB, 0x35, 0x08, 0x6F, 0xBF, 0x46, 0xD2, 0xB7, + 0x97, 0x0D, 0xCA, 0x2A, 0x85, 0x23, 0xFD, 0xB4, + 0xC7, 0xA0, 0xB8, 0xE4, 0x2F, 0x8A, 0xF9, 0xAC, + 0xAD, 0x2A, 0x0E, 0xFC, 0x11, 0x36, 0x02, 0xA4, + 0xEA, 0x62, 0xE4, 0xEB, 0xB7, 0xD2, 0x69, 0xC3, + 0xA4, 0x0B, 0xA2, 0xC4, 0x4E, 0xDD, 0x29, 0x56 + }; + static const byte msg_65[] = { + 0xC4, 0xF5, 0x9F, 0xA2, 0xDE, 0x30, 0xC8, 0x42, + 0x0A, 0x7E, 0x7F, 0x09, 0x6B, 0xAF, 0x6A, 0xD6, + 0x9B, 0x1C, 0x15, 0xA5, 0xC6, 0xE6, 0x1C, 0x9D, + 0x82, 0xAF, 0xCF, 0xDB, 0x6E, 0xB8, 0xF2, 0x75, + 0xBF, 0x57, 0x87, 0x18, 0x6A, 0xAE, 0x78, 0x1F, + 0x48, 0x7F, 0x9F, 0x88, 0x75, 0x8C, 0x9C, 0x61, + 0xF3, 0x5D, 0x50, 0x83, 0xEE, 0x70, 0x42, 0x4B, + 0x0D, 0x0A, 0x51, 0x57, 0x50, 0x10, 0xC2, 0xA9, + 0x07, 0xF4, 0x96, 0x08, 0x11, 0x5D, 0x33, 0xEB, + 0xA0, 0x03, 0x15, 0x09, 0x32, 0x2A, 0xA7, 0xD3, + 0x06, 0x1F, 0xEC, 0x31, 0x62, 0xF9, 0x6A, 0x56, + 0x5F, 0x98, 0x76, 0x9E, 0x9A, 0x19, 0x23, 0x5D, + 0x89, 0xD1, 0xB2, 0x1D, 0x60, 0xA3, 0x81, 0xDF, + 0x8E, 0xB3, 0x7D, 0x58, 0xC6, 0xA2, 0xE4, 0x83, + 0xA8, 0xEB, 0x70, 0x73, 0x6E, 0x4B, 0x7B, 0xB9, + 0x11, 0xF7, 0xAB, 0x92, 0x3D, 0xC2, 0x9F, 0x1E + }; + static const byte sig_65[] = { + 0xE8, 0x95, 0xDB, 0x64, 0xC5, 0x7B, 0xC3, 0xC2, + 0xA9, 0x7F, 0x0E, 0xC9, 0x33, 0x41, 0x0E, 0x98, + 0xF6, 0x21, 0x61, 0x03, 0xE3, 0x42, 0x3C, 0xAF, + 0x06, 0xA6, 0x71, 0x96, 0x4C, 0x51, 0x4A, 0x69, + 0x4E, 0xB6, 0xF6, 0x5C, 0xBD, 0x11, 0x37, 0xCC, + 0xCF, 0x88, 0x81, 0xFA, 0x40, 0x3C, 0x5F, 0xA0, + 0xE0, 0xB2, 0xF3, 0x6B, 0x9F, 0x40, 0x09, 0xC3, + 0x78, 0x21, 0x0D, 0x29, 0xE5, 0x4A, 0x7A, 0x5A, + 0x9B, 0x79, 0x31, 0x97, 0xCD, 0x6D, 0x2F, 0x38, + 0xD7, 0xE1, 0xF3, 0xAC, 0xA6, 0x9D, 0x48, 0x88, + 0x13, 0x89, 0x38, 0x1C, 0x89, 0xFA, 0x67, 0x6D, + 0xE4, 0x26, 0xD6, 0x34, 0xF9, 0xA1, 0x57, 0x05, + 0x5F, 0x17, 0x28, 0x3E, 0xCE, 0x82, 0x48, 0xCA, + 0xF1, 0x4D, 0xCF, 0x11, 0xE2, 0xD5, 0x63, 0x55, + 0xB0, 0x47, 0xDF, 0x63, 0x2A, 0x18, 0x48, 0x2E, + 0x79, 0xCB, 0x2D, 0x5A, 0x74, 0x39, 0x66, 0xBA, + 0xA8, 0xA7, 0x61, 0x21, 0xBB, 0x69, 0xC2, 0xE6, + 0x81, 0x55, 0xAC, 0xCB, 0x0A, 0x31, 0xDA, 0x6E, + 0xDC, 0x73, 0xCB, 0x09, 0xA9, 0xE6, 0x60, 0xFE, + 0xB2, 0x0F, 0x66, 0xC7, 0xBD, 0x96, 0x7A, 0xDE, + 0x32, 0x14, 0x9C, 0x55, 0x52, 0xEA, 0xEB, 0x2E, + 0xA1, 0x75, 0xB5, 0x62, 0x33, 0xF3, 0xB3, 0x70, + 0xED, 0xD8, 0x67, 0x92, 0x69, 0xCE, 0x0D, 0x2B, + 0x43, 0xF6, 0xB2, 0xF6, 0x5F, 0xE9, 0x57, 0xE7, + 0xAB, 0x37, 0xB9, 0x82, 0x04, 0x37, 0x54, 0xEA, + 0xC8, 0xA3, 0x0B, 0x36, 0xC1, 0x00, 0x04, 0xEF, + 0x13, 0xC6, 0x92, 0xE2, 0x19, 0xAA, 0x7A, 0xF0, + 0xA4, 0xC5, 0x28, 0x69, 0x10, 0xC7, 0x10, 0x0D, + 0xA4, 0x1E, 0x17, 0xBB, 0xEF, 0x2D, 0xA2, 0xAB, + 0x03, 0xAD, 0xF3, 0x07, 0x4B, 0xA1, 0xDA, 0x15, + 0xBC, 0xC8, 0x48, 0x05, 0xB8, 0x9B, 0x9D, 0xA8, + 0x8E, 0x9B, 0x40, 0x0A, 0xFB, 0x7E, 0x3B, 0xC8, + 0x33, 0x8D, 0x35, 0x4D, 0xA9, 0x53, 0xAC, 0x0B, + 0xAD, 0x82, 0x27, 0x56, 0xCA, 0x92, 0xE5, 0xDD, + 0x95, 0x07, 0xF4, 0x2B, 0xFE, 0xFC, 0xCB, 0x32, + 0xB4, 0xB9, 0x1A, 0x2B, 0xE5, 0xEF, 0x34, 0xC2, + 0xCF, 0x11, 0x77, 0xEA, 0xAF, 0xB2, 0x50, 0xAC, + 0x9A, 0xDE, 0xC4, 0xBE, 0x71, 0x80, 0x75, 0x89, + 0xF1, 0x00, 0x32, 0x27, 0xF9, 0xB7, 0x6B, 0x74, + 0xE0, 0x7B, 0xA6, 0x7A, 0xC6, 0x08, 0x19, 0xB2, + 0xAF, 0x76, 0x6A, 0x47, 0xFF, 0xFC, 0x7B, 0x76, + 0xD3, 0xA7, 0xC0, 0x77, 0xF5, 0xEC, 0x69, 0xAE, + 0xEA, 0x3E, 0x96, 0x38, 0x59, 0xB8, 0x2C, 0x2A, + 0xDE, 0x58, 0xBE, 0xC2, 0x15, 0x2E, 0xC8, 0x20, + 0x51, 0x10, 0x97, 0x5D, 0x37, 0xC6, 0x50, 0x5E, + 0x0D, 0xC7, 0x76, 0xFD, 0xE0, 0x71, 0x09, 0x7E, + 0x93, 0x01, 0x3D, 0x10, 0x04, 0xF4, 0xE1, 0xA2, + 0xFD, 0x79, 0xB8, 0x77, 0xED, 0x50, 0x25, 0xF5, + 0x27, 0xF3, 0xBF, 0xF1, 0x37, 0xF0, 0x41, 0xBB, + 0x9B, 0xD0, 0x01, 0xE9, 0x49, 0xF0, 0x8B, 0x4C, + 0xF8, 0x8D, 0xFD, 0x32, 0xFC, 0x7C, 0xDB, 0xCE, + 0xCC, 0xFD, 0xB0, 0xFA, 0x2D, 0xE7, 0x82, 0x3E, + 0x11, 0x0B, 0xCF, 0xF5, 0x8A, 0x41, 0x2C, 0xEA, + 0x27, 0x95, 0x75, 0x3E, 0x9C, 0x89, 0x67, 0x8C, + 0x3A, 0xE2, 0x42, 0x68, 0xF7, 0x48, 0x9F, 0x72, + 0x97, 0x4B, 0x69, 0x55, 0xED, 0xD0, 0x4E, 0x19, + 0x0D, 0x99, 0xBB, 0x0D, 0x7A, 0x25, 0x2F, 0xAD, + 0x5B, 0xBA, 0x60, 0x6C, 0x1A, 0x1F, 0x3A, 0xCA, + 0x73, 0x3B, 0xFA, 0xE3, 0x30, 0x9E, 0xA0, 0xA6, + 0xEB, 0x7D, 0x07, 0xE3, 0x6D, 0x8C, 0xA3, 0x36, + 0xD2, 0x64, 0x4F, 0xCE, 0x1A, 0x41, 0x89, 0x5D, + 0x01, 0x4D, 0x1A, 0x60, 0xCB, 0x10, 0x6F, 0x3F, + 0x80, 0x75, 0xF9, 0x37, 0x84, 0x61, 0x73, 0x8D, + 0x63, 0xD1, 0x15, 0xD0, 0x0B, 0x02, 0x4C, 0x67, + 0x78, 0x01, 0x05, 0x0A, 0x1B, 0x0B, 0x50, 0xDE, + 0x05, 0x7F, 0x85, 0xDB, 0x6A, 0xEB, 0x2C, 0x9D, + 0x6B, 0xB7, 0x40, 0x2A, 0x66, 0xE3, 0xAB, 0x4D, + 0xB0, 0x5C, 0x58, 0xBB, 0xDA, 0x12, 0xF6, 0x95, + 0x95, 0x8B, 0x8A, 0xC7, 0xB4, 0xE4, 0x5E, 0xC6, + 0xC9, 0x52, 0xF6, 0x79, 0xC1, 0xEE, 0xBD, 0xF8, + 0x60, 0xE3, 0x48, 0x98, 0x27, 0x79, 0xAA, 0x69, + 0x88, 0xEF, 0xC2, 0xAD, 0x1D, 0xC1, 0xEA, 0xE2, + 0x2A, 0x27, 0xA5, 0xB2, 0xC6, 0x1C, 0x97, 0xB3, + 0xB2, 0x49, 0x3C, 0xB6, 0xC1, 0x3C, 0x5F, 0x6E, + 0x20, 0xA6, 0x7B, 0x88, 0xD3, 0xC3, 0xAC, 0xCF, + 0xAF, 0x0A, 0x42, 0x57, 0x42, 0xDF, 0x24, 0x06, + 0x34, 0xD1, 0xEE, 0x59, 0x38, 0x28, 0xFE, 0x62, + 0x97, 0x44, 0x6C, 0x07, 0x6F, 0x97, 0x90, 0x55, + 0x98, 0x8A, 0xB8, 0x34, 0xB2, 0xBD, 0x82, 0xE1, + 0x4D, 0xC0, 0x86, 0x40, 0x0E, 0x1C, 0x95, 0x6C, + 0xC0, 0xC3, 0x0C, 0xE7, 0xBF, 0xD9, 0x62, 0x22, + 0x3D, 0x23, 0xFE, 0x94, 0x94, 0x96, 0x4A, 0x81, + 0x1B, 0x93, 0xE8, 0xD7, 0xB8, 0xF3, 0x4C, 0x89, + 0xAA, 0xD4, 0x5D, 0xD4, 0x11, 0x3F, 0x2A, 0xE7, + 0xBD, 0x94, 0xB5, 0x3F, 0xC8, 0x6E, 0x8B, 0x2A, + 0xE8, 0x2E, 0x51, 0xEC, 0x6F, 0x3E, 0xA4, 0xC3, + 0x0D, 0x60, 0xB8, 0x60, 0x72, 0x74, 0x86, 0x12, + 0xD1, 0x60, 0x70, 0x56, 0xB5, 0xFF, 0x6A, 0x45, + 0x00, 0xEE, 0xE7, 0x8A, 0x5A, 0x63, 0x9C, 0x7B, + 0x74, 0x16, 0x97, 0x77, 0x62, 0x68, 0x64, 0xDD, + 0x9E, 0xAE, 0xF0, 0xE3, 0xAD, 0x84, 0x93, 0xD8, + 0x31, 0xF7, 0x1D, 0xEA, 0x95, 0xBB, 0xFC, 0xF8, + 0x14, 0x23, 0xA2, 0x66, 0xDE, 0x56, 0xF3, 0xA8, + 0xFE, 0x8E, 0x6C, 0x3C, 0x0D, 0x61, 0x2F, 0xB6, + 0x2B, 0xD6, 0x42, 0x18, 0x8C, 0xA7, 0x1C, 0xB8, + 0x98, 0x34, 0xF3, 0x0B, 0xCC, 0x28, 0xBD, 0x17, + 0x88, 0x45, 0xF1, 0xF6, 0xF4, 0x6C, 0x03, 0xD3, + 0x06, 0xF7, 0xED, 0x4E, 0x68, 0x75, 0x94, 0x27, + 0xAE, 0xC2, 0x70, 0x11, 0x98, 0xC3, 0xC0, 0x5D, + 0x38, 0x5D, 0xFA, 0xFD, 0x52, 0x8C, 0xCE, 0x84, + 0x25, 0xBC, 0x55, 0x14, 0x69, 0xA0, 0xED, 0x68, + 0x1B, 0xEE, 0x4D, 0x12, 0xA8, 0x43, 0xE3, 0x33, + 0xB5, 0xA8, 0xE0, 0x51, 0x7F, 0xC6, 0x19, 0x06, + 0xF9, 0xC4, 0xE7, 0x80, 0x9B, 0xAE, 0xD4, 0xD3, + 0xD1, 0x6E, 0xB2, 0x2F, 0x1F, 0xA9, 0xAB, 0x40, + 0x2D, 0x98, 0x8E, 0xD5, 0x9F, 0x9F, 0xED, 0x04, + 0x55, 0xE9, 0x26, 0x0F, 0xD6, 0x27, 0xA2, 0x4A, + 0x17, 0xFE, 0x7C, 0xB6, 0x3E, 0x53, 0x0B, 0x48, + 0xF5, 0xFB, 0x66, 0x87, 0xA2, 0xE8, 0xC4, 0x9D, + 0xA7, 0x9F, 0xBD, 0x69, 0xA3, 0x40, 0x00, 0x56, + 0x66, 0x5D, 0xD1, 0x1D, 0x19, 0xA2, 0xBC, 0x4D, + 0xB1, 0xD3, 0x74, 0xAB, 0x6A, 0x6E, 0x42, 0x47, + 0x2A, 0x27, 0xAC, 0x6B, 0x98, 0xF6, 0x76, 0xE8, + 0xED, 0xAA, 0xDD, 0x51, 0x4F, 0x6D, 0x44, 0xDE, + 0xEC, 0xDA, 0xB5, 0xA6, 0xDF, 0xA0, 0xF8, 0x4F, + 0x13, 0x9A, 0x80, 0x3A, 0x25, 0x24, 0xBF, 0x33, + 0x5D, 0xC5, 0x2E, 0xA5, 0x8F, 0xA5, 0x0D, 0x98, + 0xFB, 0x5C, 0xD5, 0x5D, 0x5D, 0x50, 0xA6, 0x63, + 0xCF, 0x64, 0x7E, 0xEE, 0x56, 0xFE, 0x8E, 0x66, + 0x4B, 0x3B, 0xCA, 0xF9, 0xE3, 0x33, 0x97, 0x8A, + 0x79, 0x46, 0x97, 0x3F, 0xD1, 0x13, 0xE4, 0xFD, + 0x39, 0x24, 0xE6, 0xC0, 0x9E, 0x60, 0x38, 0x64, + 0x44, 0x21, 0x4D, 0xFA, 0x7A, 0x4D, 0x67, 0x1F, + 0xC2, 0x38, 0x90, 0x63, 0x7E, 0xB8, 0x59, 0x13, + 0x4D, 0x79, 0xE2, 0x65, 0xC5, 0x9C, 0xA3, 0xEC, + 0xCD, 0xDF, 0xA0, 0x18, 0x22, 0x3C, 0x9B, 0xAE, + 0x1C, 0xCA, 0x10, 0x39, 0x62, 0x07, 0x8B, 0xC5, + 0xF0, 0xDD, 0x02, 0x24, 0x6F, 0xA2, 0x83, 0x24, + 0xF7, 0xCB, 0x2F, 0xCF, 0xAD, 0x07, 0xC2, 0x5B, + 0x4B, 0xC2, 0xD8, 0x88, 0x06, 0x9B, 0x0C, 0xF5, + 0xF2, 0x3C, 0x76, 0x1C, 0x0E, 0x47, 0x10, 0x98, + 0x81, 0xCD, 0x31, 0x45, 0x6A, 0x64, 0xB9, 0x40, + 0xB4, 0xBB, 0x9B, 0x4C, 0x2C, 0x3B, 0x8E, 0x6B, + 0xA8, 0x34, 0xAA, 0xAE, 0x69, 0xFD, 0xFC, 0x47, + 0xD4, 0x4B, 0x3C, 0x96, 0x88, 0x7A, 0xBE, 0xD3, + 0x60, 0x15, 0xE7, 0xB6, 0x4E, 0x85, 0x42, 0x92, + 0x8F, 0x27, 0x7C, 0xBD, 0x2D, 0x3C, 0x51, 0x2C, + 0x24, 0xDE, 0xEF, 0xE5, 0x90, 0xE8, 0x1C, 0x68, + 0x4E, 0x06, 0x3E, 0x7A, 0xAD, 0xCF, 0x11, 0x7B, + 0x48, 0x94, 0x3D, 0xB7, 0x71, 0xFC, 0x22, 0x07, + 0xF5, 0x7A, 0x74, 0x53, 0x57, 0x55, 0x5D, 0x41, + 0x9C, 0x9C, 0xDC, 0xA3, 0x5C, 0xC1, 0xA7, 0x10, + 0x0A, 0x69, 0x13, 0xA3, 0xB6, 0xAA, 0xCF, 0x79, + 0x6F, 0xE3, 0xF9, 0x4D, 0xD2, 0xF8, 0x18, 0x98, + 0x27, 0x16, 0xCE, 0x03, 0x16, 0x54, 0x2A, 0x1B, + 0x95, 0x7E, 0x12, 0xDA, 0x43, 0xE2, 0x31, 0x54, + 0x2C, 0xC1, 0x4F, 0xCC, 0x66, 0xD7, 0x28, 0xA6, + 0x83, 0x26, 0xB2, 0xBC, 0x31, 0x12, 0x48, 0x33, + 0x0F, 0x3E, 0x98, 0xF8, 0x1E, 0xA3, 0x8C, 0xA9, + 0x24, 0xA8, 0xE4, 0xDA, 0x97, 0xCF, 0x67, 0x38, + 0x42, 0xC7, 0x59, 0xF9, 0x35, 0xBE, 0x88, 0x16, + 0x3C, 0xE9, 0x7F, 0xE4, 0xD9, 0x45, 0x71, 0x76, + 0xF5, 0xB8, 0x90, 0x8A, 0xF9, 0x48, 0xF7, 0x4D, + 0x5D, 0x1D, 0xDB, 0xC5, 0x21, 0x82, 0x5D, 0x93, + 0x1C, 0x63, 0xCA, 0x8A, 0x8E, 0x12, 0x24, 0x26, + 0x26, 0x30, 0x5A, 0xB6, 0xA2, 0xE0, 0x62, 0x45, + 0x64, 0xEE, 0x04, 0x19, 0x83, 0xC1, 0x8C, 0x29, + 0x52, 0xEC, 0x3D, 0x9D, 0x15, 0x9B, 0xDE, 0x39, + 0x85, 0xCF, 0x77, 0x89, 0x7E, 0xE2, 0xDC, 0x88, + 0x81, 0x12, 0x72, 0x1D, 0x48, 0x54, 0xE9, 0x14, + 0xA5, 0x39, 0x7E, 0x08, 0xB5, 0x4F, 0x4A, 0x54, + 0x32, 0x3F, 0xF8, 0x20, 0x82, 0x1B, 0xE0, 0x26, + 0xEA, 0x09, 0x1E, 0xCA, 0x6B, 0x7D, 0x80, 0xD9, + 0x1E, 0x3D, 0xCA, 0x2E, 0xF7, 0x84, 0x8B, 0x86, + 0xFC, 0xA6, 0xBB, 0x40, 0xCE, 0x48, 0x27, 0x1E, + 0x10, 0x08, 0x36, 0x8E, 0x3E, 0xBB, 0x5E, 0x39, + 0x5E, 0x1C, 0xCD, 0x0D, 0x17, 0x8F, 0x1A, 0x62, + 0x57, 0xD2, 0x6B, 0x6B, 0xA4, 0xB7, 0xCE, 0x53, + 0x2C, 0xAA, 0x1E, 0x76, 0xCE, 0x28, 0xFA, 0x4C, + 0xF9, 0xE0, 0x29, 0xE2, 0x48, 0x2B, 0x94, 0xD3, + 0xAC, 0xF9, 0x7A, 0x32, 0x6D, 0x23, 0x5D, 0x1B, + 0xDC, 0x89, 0xF7, 0x00, 0x02, 0x19, 0x84, 0x51, + 0xD9, 0xF1, 0xF1, 0x2C, 0xCD, 0x5B, 0xCA, 0xEC, + 0xDD, 0xE9, 0xE1, 0x4A, 0xC8, 0x07, 0x42, 0xEB, + 0x31, 0xE6, 0x46, 0x4C, 0x83, 0x21, 0x0A, 0x39, + 0xF3, 0x50, 0x98, 0xBE, 0x03, 0x78, 0xD0, 0x74, + 0xCE, 0x1C, 0xCD, 0x1E, 0xBC, 0x1C, 0x77, 0x70, + 0xF7, 0x78, 0xD6, 0x05, 0xF2, 0xBE, 0x59, 0xDB, + 0x7E, 0xA0, 0x7D, 0x80, 0xCC, 0xDF, 0x55, 0xF1, + 0x6E, 0x98, 0x5B, 0x14, 0x2F, 0xB7, 0xBD, 0xA0, + 0x7A, 0xA7, 0xDC, 0xA5, 0xB2, 0x01, 0xE1, 0x95, + 0x0C, 0xF9, 0xA7, 0x28, 0xF2, 0x1E, 0x9A, 0x9D, + 0x8A, 0xC4, 0xD1, 0x32, 0x7E, 0x3B, 0xC0, 0xFF, + 0x33, 0x9A, 0x25, 0x05, 0x22, 0xF6, 0x31, 0xDF, + 0x2E, 0x75, 0x95, 0x51, 0x54, 0x89, 0x3E, 0x4A, + 0x1A, 0xAF, 0x98, 0x66, 0xFE, 0xE1, 0x63, 0x7E, + 0xE1, 0xAA, 0x51, 0x06, 0xD2, 0x44, 0xE9, 0x9E, + 0x6F, 0x31, 0xFC, 0x56, 0x01, 0xBB, 0x7B, 0x79, + 0xBA, 0xD8, 0x28, 0x60, 0xB1, 0xD6, 0x05, 0x9D, + 0x9B, 0x13, 0x2E, 0x02, 0x64, 0x18, 0x02, 0x0D, + 0xB0, 0x6E, 0xB8, 0x39, 0x1F, 0xA1, 0x5B, 0x7A, + 0x0F, 0x29, 0xE3, 0x6D, 0x96, 0x6A, 0xBD, 0x3D, + 0x2A, 0x2F, 0xF3, 0xF2, 0xAA, 0xC3, 0x4C, 0x8B, + 0x45, 0xC7, 0xD2, 0x35, 0x5E, 0xDB, 0xB8, 0x0B, + 0x22, 0x4B, 0xC1, 0x06, 0xEB, 0xC6, 0x75, 0x0E, + 0x55, 0x07, 0x0F, 0x85, 0xA7, 0xCB, 0x60, 0x03, + 0x39, 0x4E, 0x51, 0x61, 0xAE, 0x26, 0xF5, 0xAB, + 0xF8, 0x3F, 0x0D, 0xCC, 0xCF, 0x69, 0xB8, 0x61, + 0x39, 0xAF, 0x86, 0x94, 0xFE, 0x1D, 0xC0, 0x07, + 0x81, 0xEA, 0xE0, 0x9C, 0xDB, 0x42, 0x18, 0x14, + 0x87, 0x80, 0x43, 0xDC, 0x9B, 0x05, 0x30, 0xE5, + 0x54, 0x5A, 0x16, 0x5E, 0x39, 0xA9, 0xB7, 0xDE, + 0x88, 0xB4, 0xAD, 0x2A, 0xEB, 0x90, 0xD3, 0xC3, + 0x29, 0x41, 0x2E, 0xD2, 0xFE, 0x1D, 0x97, 0xB7, + 0x32, 0xC8, 0x43, 0x9D, 0xF4, 0xF8, 0x3D, 0x22, + 0x88, 0x35, 0xB5, 0x38, 0xDC, 0x27, 0x8F, 0xF0, + 0xA2, 0xDC, 0x42, 0xF4, 0x1B, 0x00, 0xCE, 0x3A, + 0xCA, 0x06, 0xB0, 0x5C, 0x48, 0x39, 0xB8, 0x96, + 0x93, 0x15, 0x15, 0xD7, 0x8E, 0xA3, 0x67, 0x3A, + 0x37, 0x82, 0x79, 0xF4, 0xE8, 0x9C, 0xE0, 0x8E, + 0x34, 0x53, 0xFF, 0x2F, 0xB4, 0x53, 0xBE, 0x03, + 0x1C, 0x63, 0x18, 0x62, 0x8A, 0x73, 0x1D, 0x02, + 0x9F, 0xC7, 0xBE, 0xA2, 0xBA, 0x5E, 0xAC, 0x49, + 0x16, 0x27, 0x8B, 0x93, 0x8A, 0x6A, 0x6A, 0xCE, + 0xF5, 0xBF, 0xE2, 0x15, 0x8F, 0x2A, 0xF4, 0x3D, + 0x8E, 0x56, 0xA0, 0x64, 0x9D, 0xF2, 0x8A, 0x25, + 0x0D, 0x2F, 0x25, 0x36, 0xAB, 0xDE, 0x1E, 0x00, + 0x8E, 0xB6, 0x31, 0xF4, 0xBD, 0x0E, 0xB5, 0x55, + 0x73, 0xA4, 0x05, 0x39, 0xA6, 0x00, 0x41, 0x81, + 0xA9, 0xD2, 0xBF, 0x7A, 0x1E, 0x53, 0x50, 0x4F, + 0x11, 0xE0, 0x14, 0x84, 0x07, 0x33, 0x84, 0x41, + 0x31, 0xAC, 0x66, 0x89, 0x46, 0xE5, 0xB8, 0x27, + 0x28, 0x9A, 0xB6, 0xB2, 0x13, 0x66, 0xC5, 0xD0, + 0xE2, 0x64, 0x92, 0x19, 0xB9, 0x2C, 0x47, 0x60, + 0xDF, 0xB7, 0x05, 0xF7, 0xF6, 0x1A, 0x96, 0x56, + 0x4C, 0x9E, 0x84, 0x0D, 0x14, 0xB0, 0xBB, 0x0D, + 0xA8, 0x2D, 0xA5, 0x0F, 0x8B, 0x8E, 0x75, 0x2B, + 0xBF, 0xEA, 0x3B, 0x0A, 0x33, 0x7B, 0xE1, 0x24, + 0xF7, 0x2D, 0x8F, 0x82, 0x49, 0x19, 0x5B, 0xC1, + 0x9C, 0x3E, 0x0B, 0x62, 0xEA, 0xE4, 0x96, 0xD3, + 0x8C, 0xF7, 0x50, 0x0B, 0x4F, 0x10, 0x66, 0x5F, + 0xC2, 0xD2, 0x8B, 0x9E, 0xA9, 0x35, 0xF7, 0xE3, + 0x16, 0x47, 0x2F, 0x4F, 0xF4, 0x01, 0x26, 0x75, + 0x41, 0xBD, 0xB6, 0x23, 0x01, 0x55, 0x4B, 0x20, + 0x09, 0x92, 0x8C, 0x64, 0x45, 0xBB, 0xD0, 0xEF, + 0x21, 0xD0, 0x99, 0x72, 0xF3, 0x50, 0x81, 0xAB, + 0xA9, 0x09, 0x1A, 0x6C, 0x23, 0xFE, 0xD2, 0x9F, + 0x5C, 0xF9, 0xE0, 0x77, 0x9F, 0x7E, 0xFB, 0xAD, + 0x88, 0xE6, 0x2A, 0x45, 0x44, 0x42, 0xB3, 0x00, + 0x79, 0xBE, 0x0A, 0xC9, 0xC6, 0x48, 0x26, 0xB9, + 0x8C, 0x1E, 0x10, 0x01, 0xCB, 0x0F, 0xB0, 0xF0, + 0xA9, 0x5F, 0x79, 0x65, 0xFE, 0x93, 0x12, 0xBF, + 0xDA, 0xEC, 0x33, 0xF9, 0x50, 0x65, 0xC8, 0xE5, + 0x9D, 0x39, 0x50, 0xF8, 0x0A, 0xDC, 0x7F, 0xB3, + 0x34, 0xF2, 0x02, 0xD3, 0xE5, 0xF8, 0xDA, 0x48, + 0x1C, 0x9B, 0x54, 0xA7, 0x59, 0x83, 0x93, 0x0F, + 0xD1, 0xE5, 0xAC, 0xD1, 0x62, 0x84, 0xF0, 0x71, + 0x93, 0xFB, 0xCB, 0x50, 0xD0, 0xDC, 0x00, 0xEF, + 0xF8, 0x20, 0x31, 0x44, 0xC1, 0x1E, 0xC6, 0x14, + 0x20, 0xFC, 0x32, 0xD7, 0x98, 0x2C, 0xE8, 0x96, + 0x40, 0x6B, 0xE7, 0x69, 0xA7, 0x5D, 0xD8, 0xD3, + 0xCA, 0xC7, 0x53, 0xAB, 0xE5, 0xA2, 0x78, 0x65, + 0x5B, 0xF5, 0x4B, 0xE3, 0x3A, 0x1B, 0x83, 0x74, + 0xEB, 0xEE, 0xFF, 0x21, 0x2C, 0x39, 0xCE, 0x51, + 0x46, 0x68, 0xF1, 0xC4, 0x56, 0xEA, 0xA2, 0x53, + 0x28, 0x28, 0xC8, 0x42, 0x93, 0xF1, 0xA5, 0xBC, + 0x9E, 0xB5, 0xDE, 0xDF, 0x55, 0x8A, 0x9B, 0x4C, + 0x12, 0x39, 0xF7, 0x72, 0x72, 0xC6, 0x7E, 0x1A, + 0xB2, 0x8E, 0x1E, 0xFE, 0xC5, 0x89, 0x3E, 0x09, + 0xC1, 0x06, 0x62, 0xB5, 0x3C, 0x8B, 0x82, 0x55, + 0xB1, 0xC8, 0xDC, 0x8F, 0x8E, 0x51, 0x20, 0xA2, + 0x5C, 0x75, 0xEE, 0xFE, 0x79, 0xC4, 0x3F, 0x7A, + 0x8B, 0x37, 0xDF, 0x9D, 0x1E, 0x4F, 0x32, 0x48, + 0x69, 0x33, 0xDA, 0x1C, 0xB0, 0x66, 0x4C, 0x5D, + 0xB3, 0x9E, 0x21, 0xBC, 0x22, 0x7B, 0x0C, 0xDF, + 0xE7, 0xA5, 0x50, 0x7F, 0x07, 0xF2, 0x18, 0xA7, + 0xA4, 0x7D, 0xEB, 0xCD, 0x9D, 0xAD, 0x72, 0x47, + 0xB4, 0xD0, 0x45, 0xA1, 0x3A, 0xD4, 0xF7, 0x5E, + 0xAD, 0x2D, 0x45, 0xC3, 0x39, 0xD0, 0xDF, 0x04, + 0x57, 0x7F, 0x2E, 0x0F, 0xDC, 0x78, 0x03, 0x92, + 0x55, 0x30, 0x33, 0xC7, 0x38, 0x85, 0x2B, 0x1B, + 0xE4, 0xE6, 0x3E, 0xA3, 0x89, 0x7D, 0x6C, 0x9C, + 0x4B, 0x11, 0xAD, 0x6B, 0x58, 0xD3, 0xE2, 0xD3, + 0x42, 0xD3, 0x28, 0x40, 0xF6, 0x49, 0xDD, 0x83, + 0xE7, 0x59, 0x86, 0x6B, 0x73, 0x81, 0xA8, 0x4C, + 0x8A, 0xDD, 0xDF, 0x41, 0x3F, 0xAE, 0x18, 0xE6, + 0x43, 0x1B, 0x1E, 0xEA, 0x73, 0xA5, 0x6C, 0xD8, + 0x89, 0xB7, 0x6B, 0xC9, 0x78, 0x6B, 0xED, 0xED, + 0xCA, 0x25, 0x41, 0xE4, 0xC9, 0xB2, 0x4E, 0x28, + 0xF5, 0x8A, 0xD3, 0x74, 0xC1, 0xD9, 0x3D, 0xF2, + 0xD3, 0xF2, 0xC3, 0x7E, 0xC5, 0x94, 0xA0, 0x49, + 0x8C, 0x57, 0x45, 0x79, 0xA7, 0x33, 0x2F, 0x72, + 0xC0, 0xF9, 0x75, 0x08, 0x77, 0xFA, 0xD5, 0xB9, + 0x0B, 0x96, 0x8D, 0x88, 0xF1, 0x16, 0x82, 0xC4, + 0x07, 0x1E, 0x4E, 0xA3, 0x8B, 0x81, 0x6A, 0xEA, + 0xD6, 0xBE, 0x54, 0xD2, 0xF3, 0x71, 0x32, 0x4F, + 0x24, 0x75, 0xB8, 0x62, 0xC7, 0x54, 0x24, 0xEC, + 0xF9, 0x85, 0x8A, 0xA4, 0xE2, 0x00, 0xCF, 0xBA, + 0x41, 0x2D, 0x7E, 0x3E, 0x6C, 0x30, 0x8D, 0x8D, + 0xE1, 0x1D, 0xD1, 0x85, 0x33, 0x1A, 0xF9, 0xD4, + 0x1A, 0xFE, 0x88, 0x79, 0x96, 0x5D, 0x67, 0x46, + 0xEF, 0x21, 0xFD, 0x98, 0xD3, 0xED, 0x38, 0x06, + 0xFB, 0x5C, 0x46, 0x19, 0xC9, 0x8E, 0x34, 0x7D, + 0x76, 0xB8, 0xB8, 0x98, 0x49, 0x39, 0x55, 0x61, + 0xEE, 0x28, 0x6D, 0xFD, 0xFC, 0x6A, 0x04, 0xE1, + 0xD4, 0x7E, 0x9F, 0x5B, 0x5B, 0x49, 0x25, 0x77, + 0x84, 0xC3, 0x93, 0x64, 0xDF, 0xA8, 0x8A, 0xD6, + 0x30, 0xDF, 0xA5, 0x9C, 0xCA, 0x32, 0x37, 0xF4, + 0xA2, 0xB1, 0x41, 0xA8, 0x13, 0xD2, 0x2C, 0x6F, + 0xFE, 0x73, 0xC2, 0xD9, 0x9A, 0xDC, 0x82, 0x4D, + 0x93, 0xE0, 0x6A, 0x54, 0xB6, 0xDE, 0x62, 0xC3, + 0x12, 0x5D, 0x94, 0xB4, 0x9E, 0x95, 0x0D, 0xEC, + 0x36, 0x1F, 0x96, 0x1F, 0x56, 0xD3, 0x67, 0x1C, + 0x99, 0x25, 0x37, 0x7F, 0x6E, 0x67, 0x06, 0x65, + 0x32, 0x2B, 0x84, 0x89, 0xE8, 0x33, 0xD3, 0x83, + 0x0E, 0xCC, 0xDD, 0x0F, 0x53, 0xF4, 0xA4, 0xF9, + 0xD6, 0x8F, 0x14, 0x45, 0xF3, 0xAE, 0xD5, 0xC9, + 0xD7, 0x66, 0x40, 0x9B, 0x59, 0xBA, 0xE7, 0xA7, + 0x29, 0x12, 0xE9, 0x8B, 0x3B, 0xB5, 0x73, 0x42, + 0xD2, 0x9B, 0x6A, 0xCF, 0xD1, 0x43, 0x36, 0xB7, + 0xB8, 0xB6, 0xB7, 0x54, 0x9A, 0xF8, 0xCC, 0x88, + 0x45, 0xE1, 0x0C, 0x28, 0x11, 0x28, 0x72, 0x81, + 0x98, 0x5D, 0x5D, 0x47, 0x68, 0x5F, 0xC5, 0x89, + 0xF2, 0x67, 0x8E, 0xD8, 0x93, 0xF5, 0x7B, 0x85, + 0xAC, 0xED, 0x75, 0x63, 0x2E, 0x50, 0xDE, 0x5E, + 0x07, 0x4E, 0x6C, 0xED, 0xCF, 0x1A, 0xD4, 0x99, + 0xBC, 0xE6, 0x7A, 0x7F, 0x49, 0x85, 0x64, 0xDE, + 0xEC, 0x67, 0x7C, 0x70, 0x83, 0x88, 0xDE, 0x8F, + 0xD7, 0xB0, 0x99, 0xCF, 0xC1, 0x16, 0x09, 0x6C, + 0x45, 0xFE, 0x28, 0x89, 0x0B, 0x5E, 0xAF, 0x06, + 0x16, 0x99, 0x39, 0xFD, 0xA3, 0x5E, 0x12, 0x15, + 0xF2, 0x38, 0xE8, 0xCD, 0xED, 0xFE, 0x67, 0x00, + 0x65, 0xF5, 0xDE, 0x32, 0x72, 0xA2, 0x32, 0xFD, + 0x53, 0xC2, 0x50, 0xF5, 0xD7, 0x79, 0xB3, 0x16, + 0x94, 0xFB, 0xA9, 0x1B, 0x55, 0x48, 0x03, 0x67, + 0x6E, 0x4D, 0xEA, 0x28, 0x84, 0x63, 0xFE, 0x10, + 0x63, 0x00, 0x9E, 0x9C, 0xB7, 0x6C, 0x31, 0x7D, + 0xB4, 0x00, 0xAC, 0xF4, 0xD2, 0xD2, 0xB6, 0xD1, + 0x6E, 0xDE, 0xBA, 0x41, 0x08, 0x91, 0x3F, 0x60, + 0xAE, 0xB2, 0x52, 0xCD, 0xE4, 0x13, 0x69, 0x0C, + 0xEE, 0xFD, 0xCF, 0xA6, 0x38, 0x96, 0x3D, 0xBD, + 0x04, 0xF4, 0xCF, 0x21, 0xAD, 0x74, 0xDD, 0xE6, + 0x5F, 0x0F, 0x1E, 0x7C, 0xE7, 0x0A, 0xF1, 0x01, + 0xA6, 0xDE, 0x9A, 0x59, 0xDB, 0x21, 0xD3, 0x80, + 0x27, 0xDB, 0xBF, 0x76, 0x16, 0x78, 0x27, 0x95, + 0x0B, 0x69, 0x41, 0x82, 0x66, 0xAF, 0xA4, 0x44, + 0xC7, 0x28, 0xDE, 0x36, 0x24, 0xA1, 0xC8, 0x1E, + 0x5B, 0x16, 0x41, 0xDB, 0xE8, 0x79, 0xCD, 0x82, + 0x2F, 0xB2, 0x30, 0x3C, 0xC3, 0xA9, 0xFC, 0xEE, + 0xFE, 0x3D, 0xDF, 0x7D, 0xBD, 0x0B, 0x70, 0x57, + 0x24, 0x8A, 0x28, 0xD6, 0x06, 0x2D, 0x76, 0xEB, + 0x13, 0xB9, 0x2C, 0x9C, 0x9D, 0x00, 0x3B, 0x69, + 0xE1, 0x84, 0x2A, 0x54, 0xC0, 0x9C, 0xF6, 0xB4, + 0x84, 0x52, 0x08, 0x15, 0xE2, 0xBB, 0x23, 0x72, + 0x88, 0xC6, 0x4F, 0xC6, 0x96, 0xFD, 0x3B, 0xC4, + 0x5D, 0xB3, 0x0C, 0xB8, 0x64, 0x65, 0xDF, 0x11, + 0x88, 0xBF, 0x47, 0x95, 0x6E, 0x5B, 0x91, 0x6A, + 0x80, 0x09, 0x71, 0x5C, 0xC9, 0xA9, 0xA6, 0xDC, + 0xE4, 0x4C, 0x54, 0xF9, 0x28, 0x81, 0x6B, 0x41, + 0xD0, 0x18, 0xC5, 0xFE, 0x65, 0x2F, 0xFE, 0x4E, + 0x33, 0xF3, 0x52, 0xD3, 0x83, 0xA9, 0xC1, 0x36, + 0x5F, 0x02, 0xAB, 0xFD, 0x64, 0x7B, 0xD6, 0xB4, + 0x2A, 0xD1, 0x63, 0x73, 0x0F, 0x8B, 0xFD, 0xA1, + 0xE2, 0xBE, 0x5F, 0x61, 0x4D, 0x79, 0x59, 0x78, + 0x25, 0xBA, 0x09, 0xF4, 0x57, 0xD3, 0xCB, 0xE7, + 0x56, 0x1E, 0x7E, 0x89, 0xEA, 0xF0, 0x59, 0xE9, + 0x77, 0xD1, 0xEE, 0x88, 0x84, 0x8B, 0x78, 0x1F, + 0x21, 0xF7, 0x23, 0x89, 0x0F, 0xF1, 0xF9, 0x87, + 0x39, 0x28, 0x41, 0x2C, 0x8F, 0x11, 0xEE, 0xDD, + 0x2C, 0x0C, 0x39, 0xC9, 0x51, 0x27, 0x90, 0x98, + 0x6A, 0x19, 0xE1, 0x7B, 0x2B, 0x70, 0xA4, 0xD7, + 0xCF, 0x49, 0xD9, 0xD1, 0x8C, 0xAA, 0x0C, 0x20, + 0x23, 0x13, 0x4C, 0xAC, 0xD1, 0x69, 0x20, 0x0D, + 0x88, 0x17, 0xFA, 0x32, 0x1F, 0x04, 0xAC, 0xC9, + 0x10, 0x61, 0x3D, 0xFF, 0x25, 0x0E, 0xB3, 0x25, + 0xDB, 0xEF, 0x29, 0xEB, 0x56, 0x11, 0xB2, 0xAD, + 0x2A, 0x23, 0xED, 0xD5, 0x38, 0x04, 0x9B, 0x3F, + 0x43, 0xEF, 0xEB, 0x4D, 0x60, 0x98, 0x37, 0x92, + 0xB4, 0xBF, 0x05, 0x56, 0x79, 0x44, 0xAA, 0xDB, + 0x7A, 0xC4, 0xD3, 0xA5, 0xD8, 0x0A, 0x1B, 0x9D, + 0x84, 0x48, 0xB4, 0xC0, 0xC1, 0x15, 0xC3, 0xB5, + 0xAD, 0x38, 0x85, 0x35, 0x3F, 0x47, 0xD5, 0xFC, + 0xB9, 0xB7, 0xD6, 0x44, 0x6F, 0x1A, 0x72, 0x10, + 0xBB, 0xC6, 0x67, 0xFC, 0x41, 0x14, 0x15, 0xF2, + 0x3C, 0xD4, 0x0A, 0x2A, 0x3D, 0x64, 0x06, 0x1D, + 0x71, 0xC6, 0x71, 0x91, 0x57, 0x1A, 0x97, 0xD0, + 0x10, 0x88, 0xA2, 0x4B, 0x67, 0x11, 0x56, 0x7F, + 0xC8, 0x91, 0x06, 0x73, 0x2D, 0x88, 0x92, 0xFF, + 0x98, 0x5B, 0x8E, 0x6C, 0xF7, 0x01, 0x63, 0x82, + 0x9C, 0xC0, 0x85, 0xBE, 0x4E, 0x40, 0x83, 0x15, + 0x36, 0x1B, 0xB1, 0xB2, 0x00, 0x3D, 0x64, 0x13, + 0x22, 0x0B, 0x13, 0x45, 0x06, 0xD3, 0xC3, 0x04, + 0xC0, 0xBB, 0xBA, 0x9C, 0x9C, 0x45, 0xD3, 0x65, + 0x1E, 0x05, 0x71, 0xB6, 0xB1, 0x15, 0x17, 0x72, + 0x13, 0xD8, 0x59, 0x5E, 0x14, 0x3D, 0xB9, 0x0B, + 0xD7, 0x2F, 0x7E, 0xB9, 0x74, 0xD8, 0xD0, 0xA0, + 0x31, 0x74, 0x09, 0xD6, 0x4D, 0x58, 0x37, 0xEA, + 0xEC, 0x9B, 0x8D, 0x44, 0xDD, 0x7E, 0xCF, 0xF6, + 0xCD, 0xA9, 0xF7, 0x29, 0x38, 0x2A, 0x43, 0xB3, + 0x79, 0xCB, 0xDD, 0x43, 0xFF, 0xB1, 0x8A, 0xEA, + 0x35, 0xC1, 0xA9, 0x96, 0xCE, 0xF1, 0x48, 0x8D, + 0x3B, 0x7A, 0x81, 0xEE, 0x7C, 0xFC, 0x0B, 0x96, + 0x23, 0x41, 0x8A, 0xB3, 0x91, 0x9A, 0x6E, 0xDD, + 0xB9, 0x9F, 0x22, 0x2F, 0x0D, 0xDD, 0xB2, 0xF3, + 0x2A, 0x20, 0xC8, 0xF8, 0x4F, 0xBF, 0x4C, 0x49, + 0xB4, 0xCB, 0x3E, 0xB5, 0x0D, 0x9C, 0x4C, 0xD2, + 0x5A, 0x6F, 0x71, 0x75, 0x46, 0x70, 0x66, 0xD2, + 0x5E, 0x64, 0x37, 0xB6, 0x7F, 0x2D, 0xBC, 0x70, + 0xC2, 0xE6, 0xEB, 0x0B, 0xDE, 0x23, 0x86, 0xD0, + 0x30, 0x14, 0xA7, 0x89, 0xFB, 0x6D, 0xC0, 0x8E, + 0xE3, 0x3C, 0x0C, 0x67, 0x95, 0x1D, 0xA9, 0xD7, + 0x4B, 0x9C, 0x94, 0x84, 0x5D, 0x2A, 0x99, 0x03, + 0x7E, 0x09, 0x5F, 0xEF, 0x79, 0x19, 0x92, 0x0F, + 0xE5, 0x26, 0xEB, 0x5D, 0xD0, 0xBA, 0x1F, 0x97, + 0xDF, 0xBD, 0x2D, 0xDC, 0x31, 0x60, 0x9C, 0x1B, + 0x7B, 0x45, 0xEC, 0x3A, 0xDB, 0x58, 0x6F, 0xE3, + 0x03, 0x0A, 0x0C, 0x7A, 0x9D, 0xD0, 0x34, 0xA3, + 0xC2, 0xE6, 0xF9, 0x84, 0x90, 0x93, 0xCE, 0xE1, + 0x0A, 0x18, 0x19, 0x53, 0x54, 0x7F, 0x8B, 0xE3, + 0x28, 0x72, 0x0A, 0x4A, 0x5A, 0x82, 0x90, 0xB5, + 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x0B, 0x10, 0x18, 0x1A, 0x21 + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + static const byte pk_87[] = { + 0x59, 0xB2, 0x37, 0x1F, 0xE7, 0xBA, 0xCC, 0x20, + 0x7F, 0xE1, 0xFE, 0xE8, 0x8A, 0x8B, 0x38, 0x05, + 0xA7, 0x05, 0x28, 0x65, 0x69, 0x17, 0x89, 0xBB, + 0x90, 0x54, 0x2F, 0xA4, 0x7F, 0x7E, 0xF2, 0xB7, + 0x5F, 0xCA, 0x13, 0xDB, 0xA5, 0x88, 0x8B, 0xEC, + 0x32, 0x05, 0x14, 0xDC, 0xB0, 0x5F, 0xD2, 0x6E, + 0xB5, 0x54, 0x1F, 0x6E, 0x57, 0x2E, 0xCE, 0xA6, + 0xC4, 0xF1, 0xD3, 0x8A, 0xA7, 0x02, 0x59, 0x09, + 0x4A, 0xA9, 0x45, 0xF1, 0x9F, 0xED, 0x0D, 0x98, + 0x0E, 0x65, 0xDB, 0xF6, 0x5D, 0xB8, 0x0F, 0x56, + 0x4F, 0xE2, 0x9D, 0x83, 0x6C, 0x54, 0x79, 0x28, + 0x8B, 0x55, 0xCF, 0x07, 0xF4, 0xE0, 0x01, 0x59, + 0xB6, 0x95, 0x5D, 0xAB, 0xDE, 0xCC, 0x8C, 0x4D, + 0x66, 0xAE, 0x68, 0x87, 0x28, 0xBA, 0x6D, 0x5C, + 0x04, 0x42, 0xF3, 0xC1, 0x23, 0x2C, 0x78, 0x2C, + 0x46, 0x5B, 0x9B, 0x7C, 0x50, 0x14, 0xB1, 0x46, + 0x40, 0x65, 0xCC, 0xD8, 0xA5, 0x6D, 0x6B, 0x1C, + 0x16, 0x51, 0x08, 0x69, 0xE0, 0x14, 0xE6, 0x93, + 0x39, 0x98, 0xEF, 0x72, 0x55, 0x20, 0xB4, 0x00, + 0x91, 0x3D, 0x93, 0xB0, 0xEC, 0x75, 0xE2, 0xFB, + 0x72, 0x5D, 0xC1, 0xAE, 0xC0, 0xC0, 0xCC, 0x73, + 0x43, 0xB9, 0xE5, 0x44, 0xBA, 0xA4, 0xD6, 0x79, + 0x86, 0x0E, 0x34, 0x7B, 0x2E, 0x94, 0x7D, 0x8D, + 0x24, 0x36, 0xF0, 0x92, 0x98, 0xA7, 0xBB, 0x83, + 0x36, 0xB9, 0xDE, 0x9C, 0xFD, 0x5C, 0xDB, 0xCD, + 0x91, 0xC7, 0x24, 0x92, 0x68, 0xCA, 0x03, 0xEF, + 0xAC, 0x27, 0x3A, 0xF5, 0x29, 0x68, 0xD5, 0x01, + 0x40, 0x6C, 0xD9, 0xC9, 0x61, 0x59, 0xD7, 0xC1, + 0x5A, 0xA2, 0x90, 0x03, 0x30, 0xC1, 0x18, 0x9C, + 0xFC, 0x2C, 0xD8, 0xB9, 0x12, 0xC4, 0x80, 0xE4, + 0x58, 0x29, 0x7E, 0xF1, 0x4D, 0xB6, 0x94, 0xA3, + 0xF1, 0xE7, 0x2C, 0x1D, 0xFA, 0x3A, 0x3D, 0x2A, + 0x8A, 0x69, 0xE0, 0x11, 0x60, 0x2B, 0x93, 0x02, + 0x0B, 0xAC, 0xD1, 0xC2, 0xF3, 0xAD, 0x06, 0xC9, + 0x5A, 0x7F, 0x36, 0xEB, 0xF5, 0x26, 0x1F, 0x6E, + 0xC1, 0x06, 0x81, 0x6B, 0xB3, 0x30, 0x3C, 0xC0, + 0x0B, 0xF4, 0xE8, 0x68, 0x8D, 0x2E, 0x85, 0x48, + 0xF1, 0x04, 0x90, 0xD9, 0xEB, 0x23, 0xC5, 0x67, + 0x93, 0xB3, 0x4B, 0x84, 0x06, 0xCB, 0xE4, 0x43, + 0xD8, 0x35, 0x6B, 0xCD, 0x0F, 0x4F, 0x61, 0xD0, + 0xD0, 0x17, 0xD5, 0x48, 0x31, 0xB9, 0xBA, 0x32, + 0x9F, 0x89, 0x48, 0xF2, 0x5C, 0x31, 0x22, 0xF9, + 0xDE, 0xDE, 0x8C, 0xEC, 0xBA, 0x51, 0x56, 0x9E, + 0xDF, 0xFF, 0x89, 0x5F, 0xA0, 0x20, 0x86, 0x2C, + 0x5D, 0xF7, 0x9F, 0x86, 0x40, 0x78, 0x48, 0x6B, + 0x5F, 0xB2, 0x28, 0xFD, 0x78, 0x9C, 0x35, 0xFD, + 0xE1, 0xC5, 0x4B, 0xFF, 0xBF, 0x4A, 0x02, 0x5A, + 0x7F, 0xE7, 0xD8, 0xC3, 0x49, 0x0A, 0x5D, 0x4E, + 0x62, 0xD0, 0x4F, 0x79, 0xF4, 0x18, 0x3C, 0xA6, + 0x83, 0x79, 0xF4, 0x64, 0x8B, 0xD5, 0xB2, 0x41, + 0x6D, 0xBE, 0x5B, 0x84, 0x5C, 0x9F, 0x4B, 0x7A, + 0x7E, 0x23, 0x39, 0xC0, 0x50, 0x6D, 0x58, 0x53, + 0x9E, 0xAE, 0xA9, 0x45, 0x1C, 0x9B, 0x2F, 0xE2, + 0xA1, 0x8C, 0x84, 0x9D, 0xCA, 0x7E, 0xED, 0x9D, + 0xAC, 0xC0, 0x58, 0xD0, 0x05, 0xFB, 0x73, 0x75, + 0xC4, 0xEF, 0x45, 0xB0, 0x01, 0x54, 0x3F, 0xC6, + 0x8E, 0x47, 0xDD, 0xB6, 0xD1, 0x4F, 0xF9, 0x37, + 0xD1, 0xAA, 0x0D, 0x4D, 0x74, 0x89, 0xDF, 0xFA, + 0x62, 0x10, 0x67, 0x9C, 0xCC, 0xEC, 0xF9, 0xB8, + 0x55, 0x1D, 0xCF, 0x68, 0x2D, 0x2A, 0xF1, 0xE5, + 0xBD, 0x86, 0x9F, 0x3E, 0x8D, 0x40, 0x0D, 0x5C, + 0x86, 0x1A, 0xE5, 0x1F, 0xE7, 0xEB, 0xBB, 0x54, + 0x57, 0xF2, 0xEA, 0xAF, 0xD0, 0x93, 0xA9, 0x59, + 0x8E, 0xC7, 0x21, 0xC6, 0x93, 0x27, 0xC5, 0x19, + 0x30, 0xF4, 0xB9, 0xFF, 0xB2, 0xAA, 0x7F, 0x1A, + 0x28, 0x43, 0x6B, 0x6D, 0x80, 0x8D, 0x75, 0x39, + 0x2B, 0xC4, 0x3C, 0x1B, 0x5B, 0x85, 0x9C, 0x66, + 0xC5, 0x4F, 0xA5, 0x15, 0xC7, 0xA6, 0x15, 0xA6, + 0x9E, 0x60, 0x92, 0x14, 0x34, 0xAA, 0x9C, 0xF9, + 0xF9, 0xE0, 0x3C, 0x3C, 0xA3, 0x5B, 0x5E, 0xBC, + 0x6A, 0x40, 0x9E, 0x82, 0x2F, 0xE7, 0x6E, 0x09, + 0x24, 0xC6, 0xC0, 0x62, 0xF1, 0x72, 0x4C, 0x38, + 0x2F, 0xF3, 0xC8, 0xAC, 0xB5, 0xC1, 0x66, 0x6C, + 0x2E, 0xC2, 0x6B, 0x76, 0x28, 0xE3, 0xD7, 0xC1, + 0x3D, 0xA8, 0xD7, 0x58, 0x89, 0x0E, 0x6C, 0xC0, + 0x17, 0xB7, 0x89, 0x25, 0x82, 0xE9, 0x5E, 0xDD, + 0x04, 0xBA, 0x93, 0x45, 0xDF, 0x70, 0xFA, 0xD5, + 0x6E, 0xA6, 0x8B, 0xF8, 0x87, 0x5B, 0x93, 0x2C, + 0x28, 0xB3, 0x28, 0x07, 0xC8, 0x63, 0x71, 0xE1, + 0x7D, 0xCC, 0x04, 0x72, 0x5C, 0xB5, 0x97, 0xB5, + 0x24, 0x46, 0x79, 0x63, 0xE1, 0xD4, 0xA6, 0x1B, + 0x5F, 0xBF, 0x9E, 0xC5, 0x04, 0xD5, 0xDD, 0xB6, + 0x17, 0x93, 0xDD, 0x4E, 0x34, 0xAE, 0x08, 0x2A, + 0x59, 0x90, 0xEF, 0xCE, 0x80, 0x1E, 0x93, 0x8C, + 0xCA, 0xE7, 0x38, 0xE0, 0x2E, 0x90, 0x59, 0x9D, + 0x97, 0x1C, 0x2D, 0x7C, 0x64, 0xE5, 0xB6, 0xF8, + 0x63, 0x9F, 0x75, 0x8E, 0xD6, 0x21, 0xC1, 0xF2, + 0x10, 0x73, 0xC0, 0x3E, 0xDB, 0x78, 0x2C, 0x7A, + 0x0F, 0x5D, 0x7C, 0x66, 0xF5, 0xCE, 0x16, 0x1D, + 0xED, 0x55, 0xB3, 0xE9, 0x2D, 0xC2, 0x71, 0x83, + 0xAB, 0x08, 0x3D, 0xBC, 0x1F, 0x39, 0x30, 0xAE, + 0x56, 0xED, 0xB8, 0xC5, 0x3E, 0x9A, 0x7E, 0x02, + 0x0F, 0xFF, 0x0C, 0x40, 0x42, 0xF5, 0x18, 0xB2, + 0x6F, 0x39, 0x0C, 0x96, 0xC8, 0x18, 0x3B, 0x79, + 0xB5, 0x3C, 0x7C, 0x7B, 0xC5, 0x15, 0x18, 0x7B, + 0x3D, 0xE8, 0xCA, 0xB0, 0x87, 0x69, 0xC5, 0xDD, + 0x6F, 0xF5, 0x49, 0x21, 0x12, 0xE8, 0xB0, 0xF2, + 0x8D, 0x09, 0xF4, 0x06, 0x7A, 0xDB, 0x04, 0x19, + 0x4F, 0x60, 0x25, 0x0E, 0x75, 0xAD, 0xE3, 0x31, + 0xA5, 0xC2, 0x55, 0x93, 0xBC, 0xD9, 0x2A, 0x6D, + 0x13, 0x50, 0x43, 0x95, 0x85, 0x86, 0x0B, 0xB6, + 0xFE, 0xED, 0xBD, 0x2F, 0x83, 0x9F, 0x31, 0x7A, + 0x01, 0x35, 0x88, 0x76, 0xC8, 0x8E, 0x89, 0x8A, + 0xC0, 0xC8, 0x53, 0x78, 0xF5, 0x72, 0xF2, 0x3C, + 0xDE, 0x93, 0x1D, 0x47, 0xDE, 0x71, 0xD3, 0x35, + 0x3D, 0xAB, 0x1F, 0x81, 0x0A, 0x61, 0xB1, 0x8D, + 0x24, 0xCD, 0x83, 0xDD, 0xAB, 0x8D, 0x53, 0xBA, + 0x9C, 0x7B, 0x82, 0x74, 0xB0, 0xFE, 0x82, 0xAF, + 0xF3, 0x0C, 0x57, 0x07, 0x2F, 0x64, 0x37, 0x87, + 0xCA, 0x1D, 0xF0, 0x3B, 0x99, 0xEB, 0x57, 0xDB, + 0xDA, 0x8C, 0x8E, 0xE8, 0xEB, 0x20, 0x1F, 0x28, + 0x47, 0xCB, 0xC9, 0xD3, 0x4F, 0xD8, 0x0C, 0xE6, + 0xBC, 0x5E, 0x1E, 0x32, 0x8E, 0xB6, 0xEF, 0xC8, + 0x3C, 0x4B, 0xD9, 0xD5, 0x2F, 0x32, 0x4E, 0x30, + 0xEE, 0x4B, 0x5E, 0x86, 0x35, 0x1E, 0x5C, 0x8C, + 0x4C, 0x54, 0x56, 0x83, 0x6D, 0x5A, 0x45, 0x22, + 0x03, 0xB3, 0xC3, 0x72, 0xC7, 0x87, 0xAE, 0x33, + 0x32, 0xC8, 0xA5, 0xE9, 0xDC, 0x21, 0x97, 0xD9, + 0xC3, 0x41, 0xB9, 0x75, 0x6B, 0xB1, 0xE6, 0x3C, + 0x75, 0xBB, 0xD5, 0xCF, 0x3E, 0x5C, 0xD4, 0xBF, + 0x47, 0xBD, 0x1F, 0xEB, 0xC3, 0xE3, 0x71, 0x09, + 0x12, 0xD6, 0x30, 0x32, 0xF6, 0xB9, 0x7D, 0xC1, + 0x9C, 0x4D, 0xE1, 0x96, 0xAC, 0xD9, 0x15, 0x77, + 0x15, 0xE2, 0xC1, 0x4E, 0x05, 0x4A, 0x93, 0x17, + 0xBF, 0x96, 0xA6, 0x84, 0xBB, 0x96, 0xCE, 0xFB, + 0x7D, 0x8F, 0xDC, 0xA8, 0xAA, 0x47, 0x7A, 0x2A, + 0xF6, 0xF7, 0x26, 0xD2, 0xCA, 0xC1, 0xA6, 0x03, + 0xCF, 0x13, 0x60, 0xEC, 0x11, 0xCA, 0x89, 0x7E, + 0x5B, 0xC7, 0x35, 0xAB, 0x69, 0xB8, 0x64, 0x7F, + 0x30, 0xCE, 0xD4, 0x94, 0x7B, 0xA9, 0xF6, 0x35, + 0xD9, 0xCB, 0x2D, 0x82, 0xA6, 0x62, 0xFF, 0x17, + 0xA0, 0xE1, 0x2D, 0x4D, 0x06, 0xD6, 0x41, 0xEE, + 0x76, 0xEB, 0x8B, 0x45, 0xC7, 0x1E, 0xDE, 0x38, + 0xC9, 0x05, 0xC5, 0x2B, 0xE7, 0x6C, 0x61, 0x09, + 0xF2, 0x61, 0x2F, 0xEE, 0x6C, 0x31, 0x94, 0x46, + 0x5C, 0x19, 0xBA, 0x5D, 0x3E, 0xBC, 0xF1, 0xF0, + 0xB5, 0xE5, 0x34, 0xE0, 0xF0, 0xF1, 0xD3, 0x1C, + 0xB1, 0xE7, 0xA3, 0x6C, 0x43, 0x03, 0xF2, 0x83, + 0xDB, 0xA8, 0x59, 0x1C, 0xC6, 0x09, 0x31, 0x1A, + 0x80, 0x9E, 0x44, 0x4E, 0x33, 0xA8, 0x93, 0x88, + 0x0C, 0xDB, 0xAE, 0x29, 0x11, 0x91, 0x46, 0xA3, + 0x68, 0xE4, 0xD2, 0xED, 0xD9, 0x1F, 0xE4, 0x71, + 0x64, 0x7F, 0xFE, 0x82, 0x1A, 0xA6, 0xD3, 0x1C, + 0x9F, 0xA4, 0x96, 0x95, 0xEB, 0x99, 0x41, 0xB0, + 0x8F, 0x7B, 0xE3, 0xF0, 0x6C, 0xDD, 0xF2, 0x73, + 0x9B, 0x8C, 0xAD, 0x2A, 0xB0, 0xDA, 0x4F, 0x5A, + 0x3C, 0x0A, 0x26, 0xDF, 0x6A, 0x17, 0xB1, 0x37, + 0xCA, 0xAB, 0x3B, 0x91, 0x9A, 0xB6, 0x36, 0xD6, + 0xC8, 0x9B, 0xED, 0xA3, 0x05, 0x88, 0x98, 0x62, + 0x87, 0x21, 0xF2, 0x77, 0x03, 0x15, 0xFE, 0xEE, + 0x88, 0x15, 0x95, 0xE2, 0x4C, 0xF4, 0x8B, 0x44, + 0x16, 0x60, 0xD0, 0xB2, 0xE9, 0xD5, 0xB9, 0x09, + 0x28, 0xC3, 0x81, 0xF2, 0xB0, 0xFA, 0x26, 0x34, + 0x2E, 0x4C, 0x9B, 0x88, 0xC0, 0x88, 0x7A, 0x46, + 0x87, 0x12, 0x4C, 0x01, 0x2D, 0x96, 0x9E, 0x1A, + 0xFD, 0x85, 0x32, 0x75, 0x4B, 0xA1, 0x21, 0x25, + 0xE9, 0x43, 0x3D, 0xCF, 0x6D, 0x7B, 0xC1, 0xA3, + 0x6A, 0x83, 0xE6, 0xA1, 0x0B, 0xA1, 0xCB, 0x76, + 0x52, 0xA8, 0x13, 0x50, 0x89, 0x9C, 0x2D, 0xFC, + 0x6E, 0x4F, 0xED, 0x38, 0xD0, 0x09, 0xE6, 0xD0, + 0xF1, 0xD4, 0x4C, 0xCC, 0xB9, 0x5E, 0x55, 0x1B, + 0x3A, 0xD5, 0x4B, 0x3A, 0xC8, 0x1E, 0x8B, 0xA4, + 0x66, 0x5E, 0xA4, 0x28, 0xB3, 0xC8, 0x61, 0xE8, + 0x67, 0x78, 0x90, 0xCF, 0x5F, 0x62, 0x5C, 0x19, + 0xA7, 0xC5, 0x94, 0x3A, 0x94, 0x01, 0xCB, 0x78, + 0xE7, 0x02, 0x6B, 0xAE, 0x92, 0xB6, 0x0A, 0x8B, + 0x68, 0x07, 0xC1, 0x77, 0x45, 0x41, 0x5C, 0xD8, + 0xE0, 0x30, 0xC6, 0x4C, 0x56, 0xE8, 0x22, 0x13, + 0x9A, 0x35, 0xDA, 0x42, 0x3F, 0x26, 0x43, 0x36, + 0xE0, 0xAF, 0xDF, 0x16, 0x74, 0x30, 0xDD, 0x36, + 0xE0, 0x06, 0x4B, 0x2F, 0x6E, 0x8D, 0x8B, 0xB6, + 0xBE, 0x99, 0xC5, 0xA9, 0xFB, 0x55, 0x1C, 0xC6, + 0x3E, 0x50, 0x8D, 0xB6, 0x36, 0x66, 0x7D, 0xDA, + 0x53, 0xF6, 0x11, 0xF0, 0x2F, 0xCD, 0x1F, 0x99, + 0x41, 0x0F, 0x1A, 0x7A, 0x82, 0x88, 0x2F, 0x96, + 0x23, 0xAD, 0xDC, 0x50, 0xEB, 0x01, 0xE1, 0xF3, + 0x99, 0x78, 0xBF, 0x68, 0x50, 0x6C, 0x71, 0xDB, + 0xBE, 0xE4, 0x2E, 0x4A, 0x80, 0x06, 0x9B, 0x0E, + 0x4C, 0x7F, 0xC4, 0xCC, 0x14, 0x71, 0xF4, 0xF1, + 0x02, 0x8D, 0xB2, 0x5C, 0x46, 0x87, 0xB6, 0x0D, + 0xF4, 0x25, 0x5D, 0xEC, 0x91, 0x48, 0x19, 0x7A, + 0x74, 0x79, 0x6E, 0xC7, 0x60, 0xA6, 0x6A, 0xFC, + 0x78, 0x84, 0x03, 0x86, 0x51, 0x92, 0x09, 0x73, + 0xA6, 0x9C, 0x20, 0x35, 0x16, 0x22, 0x26, 0x32, + 0xEC, 0x58, 0x75, 0xEA, 0x6D, 0x83, 0x80, 0x96, + 0xE7, 0xFE, 0x9B, 0x5B, 0x4F, 0xB6, 0x9C, 0x5E, + 0x94, 0x07, 0xE7, 0x0D, 0x27, 0xFA, 0x34, 0xB0, + 0xCD, 0xBD, 0x6E, 0x11, 0x9D, 0x87, 0xCE, 0x38, + 0x58, 0x1D, 0xF1, 0xD3, 0xE0, 0xDF, 0x3A, 0xE0, + 0x29, 0x04, 0x2A, 0x3B, 0x20, 0xE9, 0x23, 0xEB, + 0xCE, 0x19, 0xA4, 0x95, 0x87, 0x55, 0xEE, 0x2F, + 0x98, 0xFD, 0x23, 0x4C, 0x44, 0x13, 0xE2, 0xDB, + 0xC9, 0x35, 0x59, 0xA4, 0x28, 0xDC, 0x37, 0xF2, + 0xD1, 0x23, 0x5B, 0xD4, 0x41, 0x9B, 0x09, 0x9E, + 0x0F, 0x0D, 0xE5, 0x42, 0xC4, 0x69, 0x35, 0x99, + 0x1B, 0xE0, 0x69, 0x2A, 0x6D, 0x80, 0xB8, 0xFD, + 0x98, 0x86, 0xE0, 0xFA, 0x17, 0x69, 0xB4, 0x9E, + 0x8A, 0xE6, 0x30, 0x7C, 0xB0, 0xBC, 0x1B, 0x49, + 0x73, 0x2D, 0x26, 0xE2, 0x5C, 0xA1, 0xCD, 0x9D, + 0x40, 0x7E, 0x0D, 0x88, 0x64, 0x04, 0x09, 0x41, + 0x61, 0x1F, 0x93, 0x33, 0xB6, 0x36, 0x7E, 0x83, + 0x00, 0xFD, 0x64, 0x6A, 0xC5, 0xA7, 0x1A, 0xD9, + 0x13, 0xEE, 0xFD, 0x80, 0x8D, 0x5C, 0xAF, 0xBF, + 0x15, 0x21, 0xA3, 0x06, 0x2E, 0xC1, 0x84, 0xE5, + 0x21, 0x65, 0x50, 0x1E, 0x00, 0x55, 0x56, 0xDE, + 0x4D, 0xEE, 0x46, 0xF9, 0xE5, 0x3D, 0x7D, 0xEF, + 0x99, 0x09, 0xF3, 0xD5, 0xD9, 0x8C, 0xA8, 0x0D, + 0x87, 0x70, 0x7F, 0x7B, 0xC0, 0xFF, 0x8D, 0x87, + 0x9D, 0x65, 0xD4, 0xD7, 0x83, 0xD1, 0x96, 0xF2, + 0x46, 0x06, 0x93, 0x81, 0x1C, 0xDF, 0x33, 0x35, + 0x8E, 0x08, 0x2D, 0x81, 0xF4, 0xDB, 0x8F, 0x6C, + 0x20, 0x48, 0x61, 0x83, 0xA3, 0x6D, 0x4F, 0xBC, + 0xC8, 0xA1, 0xC6, 0xDA, 0x21, 0xAA, 0x4D, 0xD1, + 0x36, 0xE1, 0x9F, 0xEF, 0x2E, 0xA9, 0x93, 0x97, + 0x2B, 0xB9, 0x98, 0x9A, 0xC1, 0xC3, 0x8A, 0x79, + 0xF3, 0x18, 0x52, 0x17, 0x80, 0x04, 0x12, 0x3C, + 0x46, 0x27, 0x7D, 0x38, 0xA8, 0x8F, 0xC1, 0x58, + 0x9F, 0x25, 0x73, 0x32, 0x28, 0x4C, 0xD8, 0xA8, + 0x73, 0xC2, 0x5A, 0x1A, 0x6D, 0x40, 0x26, 0x5B, + 0x28, 0x5D, 0xF0, 0x93, 0x70, 0xE8, 0x8F, 0x72, + 0xFF, 0x70, 0xE4, 0x34, 0xE8, 0xF6, 0x60, 0x84, + 0xCC, 0xFE, 0xBD, 0xBB, 0xC4, 0xB9, 0x9E, 0xDF, + 0xBC, 0x75, 0x0C, 0xC5, 0xDE, 0xA6, 0x36, 0x17, + 0xF6, 0x47, 0xF5, 0xF0, 0x21, 0xD5, 0x7D, 0x64, + 0xD5, 0xEF, 0xF0, 0x48, 0x63, 0x4D, 0xB2, 0x20, + 0x9D, 0x7C, 0x8B, 0x82, 0xFB, 0x63, 0xB8, 0x82, + 0x3E, 0x4C, 0xA0, 0x57, 0x16, 0x8B, 0xAE, 0x88, + 0xD9, 0x71, 0x52, 0x91, 0x24, 0x0B, 0x37, 0x58, + 0xD7, 0x68, 0x45, 0x01, 0xF8, 0x61, 0x86, 0x7B, + 0x7A, 0x24, 0x1C, 0x06, 0x3B, 0x05, 0xD5, 0xE8, + 0xCA, 0x6B, 0x4C, 0x79, 0xCB, 0x24, 0x35, 0xD7, + 0xF9, 0x94, 0xCB, 0x76, 0x91, 0x5B, 0x4A, 0x54, + 0x87, 0x08, 0xB1, 0x1B, 0x29, 0x44, 0x96, 0x85, + 0x94, 0x1D, 0x43, 0xE6, 0x0A, 0x89, 0x76, 0xF9, + 0xA9, 0x60, 0x72, 0xF9, 0x10, 0x41, 0xF4, 0xC3, + 0xDF, 0x7C, 0x73, 0x96, 0x90, 0x12, 0xAE, 0x1B, + 0x30, 0xE4, 0xB9, 0xC4, 0xE1, 0x33, 0x55, 0x8D, + 0xAB, 0xC4, 0x6C, 0x10, 0x3C, 0x0C, 0xB1, 0xDF, + 0xB9, 0x9B, 0x58, 0x53, 0x74, 0xA5, 0x4F, 0x9B, + 0xA5, 0x6B, 0x72, 0x48, 0xB8, 0xC3, 0xF6, 0x6F, + 0x1D, 0x55, 0x76, 0x0D, 0x6A, 0xBB, 0x43, 0x03, + 0x75, 0x77, 0x4D, 0xFB, 0xA2, 0x05, 0x9C, 0x5D, + 0xDD, 0xB6, 0x59, 0xFD, 0x2E, 0x1D, 0xA9, 0xC3, + 0xF0, 0xB8, 0x08, 0x68, 0xC9, 0x2B, 0xCA, 0xC1, + 0x04, 0x03, 0xDC, 0xD1, 0x40, 0xD6, 0xA3, 0xD3, + 0xF3, 0x5F, 0x8E, 0xF1, 0xA2, 0xDD, 0x98, 0xDE, + 0x1A, 0x43, 0x34, 0x23, 0x85, 0x99, 0xED, 0xAD, + 0x92, 0x0D, 0xC0, 0xAA, 0x69, 0x8E, 0x9F, 0xE6, + 0x10, 0x6A, 0x07, 0x80, 0xC9, 0xC2, 0x45, 0xF2, + 0xC6, 0x5A, 0x0C, 0x3E, 0x5C, 0xD5, 0x36, 0x61, + 0x10, 0xB1, 0x76, 0x0F, 0xCD, 0x41, 0x4D, 0x45, + 0x0D, 0xB9, 0xD7, 0x6A, 0x22, 0xA9, 0xEA, 0xEA, + 0x0C, 0x9F, 0xB7, 0x2E, 0xD5, 0x43, 0xCE, 0x9F, + 0xA3, 0x31, 0x4B, 0xAB, 0x17, 0x68, 0x7E, 0x9D, + 0xE5, 0xAD, 0xAD, 0x75, 0x61, 0xF1, 0xA5, 0xBE, + 0xC1, 0x63, 0x39, 0x26, 0x9A, 0x87, 0xE0, 0x9A, + 0xCB, 0x29, 0xE4, 0xC4, 0x39, 0x60, 0x5E, 0x95, + 0x72, 0xAA, 0x9B, 0x7D, 0x0E, 0x83, 0x71, 0xA3, + 0x0E, 0x41, 0xA0, 0xA7, 0xBD, 0xC0, 0x2D, 0xA3, + 0xA6, 0x12, 0x1B, 0xF2, 0x61, 0xEA, 0xA0, 0x16, + 0xA2, 0x07, 0x4E, 0x44, 0x32, 0xCF, 0x63, 0xAF, + 0x96, 0xBE, 0x81, 0xCE, 0xB6, 0xE0, 0xC2, 0x67, + 0x6A, 0x85, 0x45, 0xC6, 0x6D, 0x2F, 0x30, 0xC9, + 0x8B, 0x54, 0x24, 0xF0, 0xFE, 0xF0, 0x4B, 0x3C, + 0x6C, 0x70, 0x64, 0xE2, 0xD2, 0xE1, 0x1C, 0xBE, + 0x60, 0xF8, 0x57, 0x23, 0xFF, 0xC0, 0xB7, 0x70, + 0xD6, 0x86, 0x6F, 0xFA, 0x58, 0x9E, 0x3F, 0x9B, + 0x2A, 0xBF, 0x75, 0x10, 0x40, 0x19, 0xAA, 0x69, + 0xCB, 0x58, 0x89, 0x5B, 0x47, 0x4A, 0x0A, 0xDE, + 0x2B, 0x60, 0xA4, 0xAB, 0x07, 0x7C, 0x3A, 0x6D, + 0xF6, 0x15, 0x33, 0x4E, 0xBB, 0xE7, 0x32, 0xE9, + 0x52, 0x20, 0x21, 0x39, 0x94, 0xD3, 0xBD, 0xC4, + 0x43, 0xC8, 0xEF, 0x94, 0xAD, 0x51, 0x5F, 0x45, + 0x41, 0x83, 0x55, 0x18, 0x33, 0x14, 0x48, 0x58, + 0x57, 0xAC, 0x12, 0xBA, 0x1D, 0x62, 0xCF, 0x4F, + 0xD4, 0xF4, 0xDE, 0x2A, 0x7F, 0xFF, 0x1E, 0xCF, + 0x0D, 0x29, 0x0C, 0x4C, 0xDF, 0xFA, 0x88, 0xD8, + 0xF4, 0x8C, 0x5B, 0x83, 0x7D, 0x3A, 0x94, 0xCD, + 0x17, 0xB3, 0xD1, 0x69, 0x96, 0x6E, 0xB0, 0x38, + 0xFE, 0x5A, 0x6E, 0x85, 0xDF, 0xC6, 0x0A, 0x00, + 0x23, 0x3F, 0x10, 0x73, 0x19, 0x73, 0xDC, 0x47, + 0x5D, 0x53, 0xBC, 0x7B, 0x9E, 0x60, 0x32, 0x0B, + 0xA7, 0x90, 0x5D, 0x88, 0x51, 0x9F, 0xA3, 0x25, + 0xDF, 0x5A, 0xB0, 0x2B, 0x40, 0xF2, 0xAB, 0xBD, + 0xB3, 0x7D, 0x22, 0x61, 0xCB, 0x81, 0x48, 0x27, + 0x7B, 0x87, 0xAE, 0x32, 0x97, 0x97, 0x6C, 0x80, + 0xC3, 0x51, 0x34, 0xE5, 0xF7, 0x86, 0x90, 0x45, + 0x64, 0xC1, 0x46, 0x99, 0x47, 0xF6, 0x20, 0xFE, + 0x09, 0xFD, 0xF3, 0x86, 0x2C, 0x40, 0x57, 0xA3, + 0xBC, 0xEF, 0x70, 0x75, 0x0C, 0xB7, 0x27, 0xF0, + 0x31, 0x28, 0x3A, 0x18, 0x26, 0xF1, 0x38, 0x1B, + 0x33, 0x48, 0xE3, 0xEA, 0x46, 0x88, 0x60, 0x9E, + 0xCB, 0x19, 0x3A, 0xFA, 0xAE, 0xE1, 0xCD, 0x97, + 0xE4, 0xDD, 0xAA, 0x02, 0xC0, 0xC3, 0x0E, 0x49, + 0xF1, 0x37, 0xD0, 0x82, 0x85, 0x94, 0x15, 0x28, + 0x10, 0x17, 0x59, 0xA7, 0x42, 0x2A, 0xA4, 0x99, + 0xC9, 0x00, 0xA3, 0x79, 0xDD, 0x73, 0xB3, 0x07, + 0x28, 0x4C, 0xCD, 0xDA, 0xF1, 0xFA, 0x1B, 0x0C, + 0x4B, 0x28, 0x0E, 0x3F, 0x9F, 0x1D, 0xB6, 0xD3, + 0x8E, 0xCF, 0x8A, 0x84, 0x1F, 0x9D, 0x4E, 0x40, + 0xEC, 0xA8, 0x62, 0x47, 0xD6, 0xCD, 0x9B, 0x31, + 0xEA, 0xCD, 0x6A, 0x46, 0xF0, 0xE3, 0x33, 0xB9, + 0xE8, 0x3D, 0x69, 0x0D, 0x7E, 0x13, 0x46, 0x76, + 0x19, 0xB4, 0x6A, 0xF9, 0xAF, 0xCF, 0xDC, 0x4A, + 0xA9, 0xA0, 0x49, 0xB1, 0x80, 0x26, 0x0D, 0x70, + 0xD9, 0xEE, 0xDB, 0x8A, 0x53, 0x30, 0x51, 0xAB, + 0x83, 0x51, 0x7A, 0xAD, 0xC2, 0xCD, 0x90, 0x0B, + 0x3E, 0xA5, 0x12, 0x60, 0xF4, 0x64, 0xAF, 0xC5, + 0xD2, 0xDC, 0x41, 0x10, 0x29, 0x77, 0x9B, 0x21, + 0xCE, 0x2C, 0xBD, 0x16, 0x02, 0x18, 0xDF, 0x41, + 0xF6, 0x61, 0xDA, 0x1A, 0xD9, 0x5A, 0xD4, 0x0B, + 0x8C, 0x35, 0x3C, 0x7F, 0x10, 0xFC, 0x23, 0xF8, + 0x30, 0xD1, 0x17, 0xBC, 0xAE, 0xF8, 0xCE, 0xCE, + 0xBC, 0xBF, 0xA4, 0x9D, 0x79, 0xD8, 0xD9, 0x39, + 0x1E, 0x8D, 0x08, 0x28, 0x1F, 0x00, 0x0A, 0x55, + 0xE9, 0x2D, 0xB3, 0x31, 0xBD, 0xEC, 0xD7, 0x31, + 0x83, 0xE0, 0x58, 0xFF, 0x3F, 0xE5, 0x83, 0x9A, + 0xF5, 0x0D, 0x8C, 0x55, 0xF2, 0x2F, 0x6A, 0xFF, + 0x5A, 0x33, 0xDA, 0x77, 0x4B, 0xA1, 0xB3, 0xE6, + 0x43, 0xF5, 0x87, 0x7C, 0xF5, 0x49, 0xC4, 0xF9, + 0x08, 0xEA, 0x64, 0xA3, 0x7D, 0xF3, 0xBF, 0xA4, + 0xCD, 0x5F, 0x70, 0xF8, 0xCD, 0x15, 0x44, 0x76, + 0xD3, 0x4B, 0xC8, 0x53, 0xC9, 0xE8, 0xF7, 0x97, + 0x9E, 0x5F, 0x4E, 0xBB, 0x88, 0x8A, 0xF7, 0x61 + }; + static const byte msg_87[] = { + 0x4A, 0xC4, 0x67, 0x5C, 0x96, 0xD9, 0x11, 0x7D, + 0x1E, 0xDE, 0xB8, 0x0D, 0x7C, 0xD2, 0x84, 0xA3, + 0xE1, 0xE1, 0xFE, 0x03, 0x8E, 0x30, 0x12, 0x05, + 0xB4, 0xC4, 0x08, 0xEB, 0x96, 0x52, 0x35, 0xAD, + 0x1C, 0x85, 0xF8, 0xBE, 0x3F, 0x77, 0xCA, 0x48, + 0x6F, 0xD2, 0x07, 0xF7, 0xC7, 0x5F, 0x41, 0x21, + 0xCD, 0x3C, 0xA2, 0xB2, 0x3D, 0x6B, 0xCE, 0x43, + 0x82, 0xA6, 0xD3, 0x61, 0x21, 0x81, 0x50, 0x25, + 0xD5, 0x80, 0x6C, 0xBE, 0xF4, 0x52, 0xE0, 0x83, + 0x93, 0x3C, 0x6E, 0x5C, 0x73, 0x94, 0xAC, 0x88, + 0x26, 0x2A, 0x6D, 0xE7, 0x77, 0x0B, 0x2D, 0x88, + 0x43, 0xEC, 0x10, 0x1F, 0xFB, 0x5E, 0x84, 0xDE, + 0x2F, 0x7A, 0x8B, 0x74, 0xE7, 0x67, 0x4B, 0x3B, + 0x23, 0x19, 0xBD, 0x6B, 0xF4, 0x11, 0x2F, 0x92, + 0xC5, 0xCF, 0xC0, 0xA5, 0x5F, 0x7F, 0xA0, 0x61, + 0xF4, 0x53, 0x25, 0x40, 0x8D, 0x03, 0x9D, 0x51 + }; + static const byte sig_87[] = { + 0x4B, 0x3F, 0x52, 0xF0, 0x81, 0xB3, 0xD9, 0x14, + 0xBC, 0x7C, 0x6C, 0x07, 0x3B, 0x18, 0x2B, 0x26, + 0x8A, 0xDF, 0x51, 0x89, 0xE2, 0x98, 0xA8, 0x69, + 0xBF, 0xB9, 0x91, 0xB1, 0x99, 0x99, 0x3C, 0x10, + 0x42, 0xDE, 0xF5, 0xB5, 0x92, 0x70, 0xB6, 0xCD, + 0x3F, 0xF8, 0xF9, 0x07, 0xA1, 0xCB, 0x0D, 0x3B, + 0x6F, 0xED, 0xCA, 0x14, 0x38, 0x38, 0xF8, 0xF8, + 0x1E, 0x0C, 0x37, 0x0F, 0xFE, 0xEE, 0x6B, 0x25, + 0xCD, 0x07, 0x03, 0x56, 0x41, 0xA0, 0x51, 0x94, + 0x4E, 0xAB, 0x51, 0x6C, 0xFB, 0xB8, 0x01, 0x53, + 0x6B, 0x4F, 0x26, 0x2B, 0x16, 0x19, 0x8E, 0x7D, + 0xDB, 0x1D, 0x61, 0xC3, 0x5A, 0x64, 0xD9, 0x0D, + 0x39, 0x48, 0xCE, 0xAA, 0xC8, 0xEE, 0x58, 0x0D, + 0xCE, 0xF5, 0x40, 0xED, 0x99, 0xD9, 0x12, 0xBB, + 0xA2, 0xBC, 0x4F, 0x51, 0x45, 0xBB, 0x94, 0x9C, + 0x73, 0xCC, 0xBD, 0x58, 0x26, 0x13, 0xB1, 0x0E, + 0xAA, 0xE8, 0x63, 0xAC, 0xA3, 0x46, 0x83, 0xEB, + 0x92, 0x2B, 0x3D, 0xAD, 0xFC, 0x74, 0xF7, 0x6F, + 0x47, 0xE4, 0x97, 0x86, 0x02, 0x59, 0x24, 0x02, + 0xD9, 0x15, 0x43, 0x94, 0xEB, 0x09, 0xFB, 0xC2, + 0xEB, 0xCC, 0xC5, 0x94, 0x73, 0x2F, 0x2D, 0x8B, + 0xC3, 0x83, 0x50, 0xE5, 0x53, 0x5A, 0x44, 0x12, + 0xA7, 0x7A, 0xDD, 0x79, 0x16, 0x60, 0x45, 0x76, + 0xFD, 0x6A, 0x36, 0x31, 0xE5, 0x15, 0xBA, 0xF2, + 0x6A, 0x6F, 0x9C, 0xA4, 0x06, 0x1E, 0xBB, 0xDD, + 0x3B, 0xEC, 0x71, 0x79, 0xAD, 0x58, 0x55, 0x2A, + 0x5B, 0x50, 0x8F, 0x31, 0x34, 0x8A, 0x56, 0xAD, + 0x1A, 0xDA, 0x7A, 0x05, 0x35, 0x2C, 0x72, 0xC0, + 0x04, 0xB9, 0x4C, 0x47, 0xE7, 0x04, 0x9A, 0x10, + 0xB3, 0xA5, 0x9B, 0xF2, 0x38, 0xA8, 0xDF, 0xC6, + 0xC7, 0x01, 0x9A, 0x17, 0xF0, 0x5D, 0x5B, 0xFC, + 0xB9, 0xD9, 0x3D, 0x9D, 0x1C, 0xCB, 0xCB, 0x47, + 0xF8, 0xC4, 0x38, 0x09, 0x8F, 0xDB, 0xDF, 0xE2, + 0x3F, 0x9F, 0x78, 0xBC, 0x28, 0x06, 0x99, 0x08, + 0xC6, 0xB9, 0x89, 0x8B, 0x43, 0x4C, 0xBF, 0x37, + 0x78, 0x7E, 0x1A, 0xF6, 0xA6, 0xB8, 0x27, 0xE8, + 0x30, 0xE9, 0xF7, 0x62, 0x9C, 0xD8, 0xF5, 0x10, + 0x70, 0xC4, 0xC8, 0xA8, 0xDE, 0xB2, 0x60, 0xD0, + 0x7C, 0x3E, 0x41, 0xD8, 0x49, 0x04, 0x84, 0x87, + 0x74, 0x91, 0xB3, 0x9A, 0xA6, 0xD9, 0xE1, 0x0D, + 0x91, 0x74, 0x8B, 0x64, 0xE3, 0x31, 0x60, 0x62, + 0x9D, 0x8A, 0xE4, 0x3E, 0xFD, 0x5F, 0x85, 0x78, + 0x1E, 0x69, 0xF7, 0x6B, 0x68, 0x95, 0xC1, 0x41, + 0xEB, 0xCD, 0xDF, 0xEE, 0xB4, 0x85, 0xA0, 0x0B, + 0xDB, 0xA4, 0xF7, 0xC9, 0x91, 0xF5, 0x3F, 0x2F, + 0x84, 0x93, 0x39, 0x26, 0xAF, 0x39, 0xE6, 0x96, + 0x4A, 0xBF, 0x2D, 0xFE, 0xBB, 0xC1, 0x9A, 0x7E, + 0x31, 0xC5, 0x07, 0x97, 0xB8, 0xDA, 0x29, 0x31, + 0xE1, 0x0F, 0x3D, 0xAC, 0x49, 0x3F, 0x19, 0x8D, + 0xFD, 0x78, 0x5D, 0x21, 0xAD, 0xB2, 0xC0, 0x62, + 0xB0, 0x97, 0xE8, 0x89, 0xA2, 0x07, 0x37, 0xF1, + 0x86, 0x00, 0x8F, 0x29, 0x28, 0xF6, 0xB8, 0x4D, + 0x6E, 0x09, 0xE9, 0x75, 0xA8, 0xF2, 0xAA, 0xAD, + 0xC7, 0x85, 0x23, 0x42, 0x34, 0xFD, 0xA0, 0x37, + 0x03, 0xA7, 0xC2, 0x1F, 0x81, 0x2D, 0x65, 0x0B, + 0xD2, 0x51, 0x0B, 0x30, 0xF0, 0x55, 0x00, 0x81, + 0x04, 0x7A, 0x15, 0x5C, 0x84, 0x85, 0x86, 0xA9, + 0x6F, 0x10, 0x0D, 0x77, 0x4F, 0x3E, 0x39, 0xE0, + 0x29, 0xB0, 0x77, 0x7C, 0xD3, 0x3E, 0x68, 0x31, + 0x8A, 0x11, 0xC1, 0x98, 0x02, 0x93, 0xFA, 0xD3, + 0xE7, 0x87, 0xD2, 0x0D, 0xFE, 0x7E, 0xEE, 0x70, + 0x53, 0xC0, 0x5E, 0xEB, 0x6A, 0x15, 0x9B, 0xAA, + 0xD4, 0x02, 0x0B, 0x9E, 0xC3, 0xF5, 0x37, 0xDA, + 0x4D, 0xAD, 0xAF, 0xB3, 0xB1, 0xBB, 0x1D, 0xBE, + 0xB2, 0xD5, 0xB8, 0xF9, 0xD0, 0x5A, 0x01, 0x97, + 0x98, 0xEA, 0xE0, 0xED, 0x09, 0x9D, 0xB0, 0x66, + 0xD7, 0x3E, 0xE8, 0xE9, 0xA5, 0x6D, 0xE3, 0x68, + 0xE8, 0x78, 0xA7, 0xFF, 0x39, 0x14, 0x0D, 0x80, + 0x21, 0xD5, 0x00, 0x85, 0xE6, 0x25, 0x29, 0x41, + 0xAB, 0x31, 0x53, 0x09, 0xCB, 0x53, 0xAA, 0xA4, + 0x9E, 0x86, 0x34, 0x7F, 0xBA, 0xD5, 0x4A, 0x1F, + 0x87, 0x3E, 0x0C, 0xB4, 0xB8, 0x6A, 0x8D, 0x5B, + 0x1B, 0x2A, 0x95, 0xD4, 0x85, 0xF3, 0x7A, 0x9F, + 0xB6, 0x10, 0x5D, 0xF8, 0x44, 0x0F, 0xDB, 0x85, + 0x78, 0xF2, 0x62, 0x4C, 0x07, 0x93, 0x29, 0x56, + 0x9A, 0x75, 0xF3, 0x6F, 0x2C, 0x55, 0xD8, 0xD0, + 0x30, 0xFB, 0xFE, 0xAA, 0x88, 0x89, 0xAD, 0x74, + 0x6C, 0x32, 0x3B, 0x1A, 0xC4, 0xEC, 0x8C, 0x40, + 0x3E, 0x77, 0x5A, 0x6F, 0xBE, 0x59, 0x6E, 0x7E, + 0x6A, 0x5A, 0x28, 0x63, 0x57, 0x66, 0x25, 0x14, + 0x99, 0x40, 0x97, 0x6F, 0x7C, 0xC9, 0x36, 0x17, + 0xB4, 0x3F, 0xB1, 0x34, 0x89, 0x07, 0x4E, 0xCA, + 0xC5, 0xBE, 0xB1, 0xA4, 0xDF, 0xE5, 0x8B, 0x9A, + 0xD2, 0xE0, 0xC6, 0xA1, 0x5B, 0x76, 0xA7, 0xC2, + 0xD2, 0x08, 0x72, 0x5A, 0x31, 0x23, 0xCA, 0x4E, + 0x6F, 0x2C, 0x58, 0x47, 0xEE, 0x5F, 0xA8, 0x38, + 0x49, 0x19, 0xEF, 0x89, 0x01, 0x1D, 0x21, 0x9B, + 0x25, 0x7B, 0x3E, 0x4D, 0xC4, 0xF2, 0x09, 0x51, + 0x60, 0x84, 0x4C, 0xAE, 0xEA, 0xFC, 0xF8, 0x57, + 0x26, 0x0F, 0x1C, 0x63, 0xD3, 0xB0, 0x5A, 0x67, + 0xD3, 0xD0, 0xF2, 0xB0, 0xEC, 0x9D, 0xCC, 0x27, + 0x23, 0xF1, 0x37, 0x55, 0x75, 0x0B, 0xAE, 0x62, + 0xFC, 0xC3, 0x61, 0xCF, 0xB5, 0x84, 0xF7, 0x74, + 0xC0, 0x9A, 0xDF, 0x9A, 0x04, 0x31, 0xB2, 0x3E, + 0x48, 0x8C, 0x35, 0x9C, 0x0A, 0xEF, 0x5B, 0x1C, + 0x97, 0x87, 0xBD, 0x8F, 0x52, 0xB0, 0x83, 0xBC, + 0x9D, 0xBC, 0xC9, 0xB3, 0x03, 0x9F, 0x77, 0x7C, + 0x7E, 0x8E, 0xAB, 0xC8, 0x00, 0x78, 0x05, 0x0C, + 0xE6, 0xD4, 0x9C, 0x3B, 0xB7, 0x01, 0x68, 0xFA, + 0x21, 0x77, 0x29, 0x8F, 0xB0, 0xA8, 0xF7, 0x2C, + 0x1C, 0xD2, 0x8D, 0x66, 0x2A, 0x07, 0xDA, 0xE6, + 0xC7, 0xAC, 0xB7, 0xFB, 0x8E, 0x7F, 0xDD, 0x01, + 0xDF, 0xB2, 0x7C, 0x62, 0xEE, 0x68, 0x3F, 0x4E, + 0x5F, 0x88, 0xC7, 0xC1, 0xDD, 0xDD, 0x5E, 0xEC, + 0xC1, 0xC3, 0xAF, 0x85, 0x3F, 0x1F, 0xF6, 0xB1, + 0xD9, 0xDE, 0x67, 0x2F, 0x1B, 0xF6, 0x47, 0x3A, + 0xF0, 0x02, 0x1D, 0x8A, 0x3D, 0x4D, 0xD0, 0x4A, + 0x2F, 0xCA, 0x23, 0x25, 0xC7, 0x21, 0xCF, 0x1C, + 0x82, 0x16, 0x76, 0xD0, 0xA0, 0xD5, 0x74, 0x18, + 0x66, 0x25, 0xDE, 0x83, 0x1C, 0x84, 0x11, 0xF6, + 0x41, 0x79, 0xF9, 0x16, 0x7F, 0x78, 0xBC, 0xB2, + 0x2F, 0xB4, 0x1C, 0x2C, 0xDB, 0x63, 0xC4, 0xDB, + 0x5E, 0x13, 0x87, 0x66, 0xD3, 0x80, 0x35, 0x89, + 0x59, 0x8F, 0x11, 0x4F, 0x41, 0xBA, 0x42, 0xCD, + 0xB1, 0x34, 0x10, 0x20, 0x44, 0x9B, 0xA9, 0x96, + 0x56, 0x11, 0x39, 0x90, 0xB4, 0xE0, 0x22, 0xD8, + 0xDA, 0x20, 0xD7, 0x44, 0x49, 0x1C, 0x6E, 0xEA, + 0xB6, 0x7B, 0x91, 0x8E, 0x80, 0xFF, 0xF3, 0x43, + 0xCC, 0x5B, 0x4C, 0x8E, 0x58, 0xC3, 0x48, 0x4B, + 0x01, 0x25, 0xA6, 0x0C, 0x36, 0xAE, 0xF7, 0x63, + 0x89, 0x4D, 0x35, 0x14, 0x8B, 0x57, 0x8F, 0x41, + 0x7C, 0x3A, 0x98, 0xA1, 0x43, 0xED, 0xFE, 0x9F, + 0x8C, 0x95, 0xBC, 0xC3, 0x46, 0xC6, 0xF5, 0xEA, + 0xF9, 0x7A, 0xAD, 0x11, 0xDA, 0xE0, 0x1C, 0x47, + 0x7C, 0x22, 0x7A, 0x88, 0xD1, 0x0E, 0xCF, 0xDC, + 0xF4, 0x50, 0xB3, 0x7F, 0x88, 0x19, 0x68, 0x02, + 0x78, 0x49, 0xD9, 0xB4, 0x3E, 0x2B, 0xFF, 0x90, + 0xC6, 0xA3, 0x4A, 0xE4, 0x1B, 0x8B, 0xBD, 0x74, + 0x30, 0x83, 0xD3, 0xC5, 0x87, 0x86, 0xB0, 0x36, + 0x67, 0x1C, 0xD6, 0xEE, 0xD9, 0x4D, 0xAE, 0x51, + 0xF7, 0x61, 0x32, 0x47, 0xEF, 0x86, 0x07, 0xAC, + 0xF7, 0x4A, 0x3C, 0xCE, 0x93, 0x2F, 0x1C, 0x38, + 0x69, 0xBD, 0xB3, 0x5C, 0xA1, 0x7F, 0xC6, 0xBA, + 0x9F, 0x9C, 0x95, 0x6F, 0xF1, 0xD4, 0xD8, 0x80, + 0x94, 0x32, 0x5C, 0xAB, 0xCE, 0x41, 0x23, 0x3F, + 0xB1, 0xD8, 0x08, 0xEF, 0x41, 0x01, 0x03, 0x96, + 0xDE, 0xB0, 0xEC, 0xF5, 0x07, 0x34, 0xD8, 0x18, + 0xDD, 0xAB, 0x70, 0x01, 0x5A, 0x0A, 0xBD, 0xD1, + 0x92, 0x6D, 0xFA, 0x49, 0x1F, 0x71, 0x1A, 0xA8, + 0x5D, 0xA2, 0xA8, 0xEC, 0x60, 0xE3, 0x25, 0x5C, + 0xCF, 0x97, 0x5C, 0x23, 0xCC, 0x4E, 0x8D, 0xAF, + 0xDD, 0xED, 0x9F, 0xEC, 0x60, 0xA6, 0x46, 0x7C, + 0x45, 0xB0, 0x3C, 0xA4, 0x76, 0x49, 0x9A, 0xA3, + 0x31, 0xB0, 0xE3, 0x99, 0x95, 0x76, 0xCE, 0xC3, + 0x19, 0x1A, 0x9A, 0x62, 0xBC, 0x1B, 0xEA, 0xC1, + 0xEA, 0xF2, 0x0E, 0x18, 0xCF, 0xC3, 0x21, 0x61, + 0x27, 0xDE, 0x4A, 0xAE, 0x2E, 0x75, 0x20, 0x1F, + 0x9E, 0x42, 0x7E, 0x39, 0xBF, 0x92, 0x11, 0x50, + 0xEA, 0xB9, 0x49, 0x55, 0x9C, 0x02, 0x2D, 0x87, + 0x6F, 0xA2, 0x42, 0xC2, 0xA8, 0x45, 0xBC, 0xA7, + 0x23, 0x5F, 0x72, 0x1B, 0x00, 0x56, 0x78, 0x8A, + 0x44, 0xEC, 0xC3, 0xEB, 0x98, 0xF0, 0xF5, 0x02, + 0xB8, 0x9F, 0x8E, 0x74, 0x10, 0xEA, 0x56, 0x79, + 0xAE, 0x7C, 0x04, 0x34, 0xF1, 0x3A, 0xD8, 0x16, + 0x42, 0x1D, 0x2F, 0xEE, 0x30, 0xCB, 0xCB, 0x2D, + 0xAA, 0x6B, 0x85, 0x1C, 0xD1, 0xB6, 0xE9, 0x96, + 0xDA, 0x7A, 0x75, 0x7E, 0x4C, 0x4D, 0x85, 0x72, + 0xC8, 0xB6, 0x00, 0xDE, 0x85, 0xDD, 0xB6, 0x53, + 0x20, 0xD1, 0xCB, 0x71, 0xD9, 0x37, 0x83, 0x49, + 0xC0, 0xC4, 0x01, 0xAD, 0x4F, 0x9E, 0x91, 0x27, + 0x21, 0x39, 0x22, 0x8A, 0x8D, 0xA2, 0xF4, 0xFD, + 0x2F, 0x48, 0x89, 0x1A, 0x4D, 0xCB, 0x06, 0x6D, + 0x50, 0x1D, 0x44, 0x74, 0x83, 0xB6, 0x11, 0xBB, + 0x3C, 0x80, 0x55, 0x0A, 0x90, 0xEA, 0x0B, 0x73, + 0x2D, 0x63, 0x9D, 0x8B, 0x39, 0x26, 0xB6, 0xE7, + 0xC3, 0x54, 0x53, 0xED, 0x3C, 0xC1, 0x10, 0xBA, + 0xF5, 0x56, 0xCF, 0x46, 0xD8, 0xFC, 0x21, 0x77, + 0xE7, 0x6F, 0xB2, 0x66, 0x3B, 0x8B, 0xDD, 0x17, + 0x1E, 0x94, 0xC0, 0xAC, 0xAF, 0x25, 0xB9, 0x15, + 0x3B, 0x22, 0xBC, 0xA7, 0x49, 0x91, 0x67, 0x56, + 0xFB, 0x3E, 0xD3, 0x01, 0x8E, 0x09, 0x44, 0xB6, + 0xC3, 0xB9, 0xB6, 0xBF, 0xA1, 0x5B, 0x9B, 0xE8, + 0x03, 0xAC, 0x79, 0x33, 0x3C, 0xD2, 0xC3, 0xA2, + 0x7A, 0x26, 0xBC, 0x17, 0xCD, 0xA2, 0x57, 0x79, + 0x8A, 0xE1, 0x6B, 0x28, 0xB4, 0x63, 0xB6, 0xDF, + 0x3F, 0xA8, 0x7C, 0x2D, 0x74, 0x2D, 0x0F, 0x68, + 0x85, 0xBE, 0xE0, 0xBE, 0xC6, 0xE2, 0x0D, 0x01, + 0xE5, 0xDA, 0xDC, 0x86, 0x82, 0x3E, 0x92, 0xD6, + 0x0F, 0xEC, 0x79, 0xB0, 0xD2, 0x40, 0x24, 0x87, + 0x53, 0xE4, 0x20, 0x48, 0x38, 0x4C, 0x80, 0x42, + 0x89, 0x60, 0x48, 0x21, 0xA5, 0x7F, 0x4F, 0x9F, + 0x50, 0xAE, 0x0C, 0x38, 0x52, 0x7F, 0xE5, 0xA3, + 0x49, 0x38, 0xDD, 0xBC, 0xDC, 0xD9, 0xA1, 0xD0, + 0x20, 0x83, 0x9B, 0xEB, 0xB6, 0x2F, 0x9F, 0x41, + 0xFB, 0xA0, 0x80, 0x52, 0xAB, 0xB8, 0x2F, 0xAD, + 0xA8, 0x84, 0xCB, 0xE5, 0x63, 0x79, 0x11, 0x03, + 0xAA, 0x58, 0x55, 0x46, 0xEB, 0xFE, 0xB1, 0x12, + 0x72, 0xCC, 0x2E, 0x87, 0xA3, 0xB7, 0x5B, 0x3C, + 0x6B, 0xB1, 0x85, 0x3A, 0xE7, 0xF9, 0xCF, 0x55, + 0x85, 0xB2, 0x65, 0x3C, 0xF5, 0xEE, 0xA2, 0x44, + 0xD2, 0x04, 0xEB, 0x26, 0x9C, 0x56, 0xA2, 0x09, + 0x85, 0x16, 0x06, 0x59, 0xCB, 0x07, 0x25, 0xEE, + 0x13, 0xCE, 0x35, 0xD5, 0x5E, 0xB0, 0x95, 0xA5, + 0x34, 0x14, 0xF2, 0x32, 0xDF, 0x81, 0x08, 0xB1, + 0x80, 0x24, 0xEB, 0x0D, 0xBF, 0x34, 0x5E, 0xB5, + 0xCD, 0xAD, 0x0B, 0xCE, 0x72, 0x63, 0x50, 0x9A, + 0x34, 0x1D, 0x54, 0xA7, 0xD5, 0x34, 0xE5, 0x53, + 0xEA, 0xEF, 0xFE, 0x4E, 0x24, 0x2E, 0xA2, 0x3B, + 0xCF, 0xE5, 0x9A, 0x58, 0xA6, 0x04, 0x25, 0x88, + 0x2C, 0xB7, 0xE3, 0xB0, 0xC9, 0xE4, 0xAF, 0xE8, + 0x69, 0x8E, 0x3D, 0xF5, 0x6A, 0xFD, 0x6D, 0x61, + 0x1E, 0x91, 0x68, 0x74, 0x7D, 0x87, 0x35, 0xCF, + 0x92, 0x46, 0xD9, 0x4F, 0x21, 0x26, 0xBE, 0x72, + 0x7F, 0xB4, 0x2B, 0x22, 0x41, 0xA8, 0x3B, 0x34, + 0xF0, 0xB9, 0xEB, 0x47, 0x93, 0x8D, 0x72, 0x65, + 0x02, 0xC5, 0x4E, 0x45, 0x72, 0x76, 0x63, 0x31, + 0x62, 0x8F, 0xA5, 0xCD, 0xA8, 0x93, 0xC3, 0x53, + 0x76, 0xAB, 0x45, 0x38, 0xFF, 0x87, 0x17, 0xC2, + 0x79, 0x5B, 0x0F, 0x51, 0xF0, 0x8E, 0x11, 0x37, + 0x61, 0x2B, 0x89, 0xB0, 0xC1, 0xE2, 0xCD, 0x1F, + 0x09, 0x9E, 0x88, 0x55, 0x69, 0x23, 0xAE, 0x57, + 0xA1, 0xDA, 0xD2, 0xAF, 0xB1, 0x23, 0x0B, 0x50, + 0x94, 0xA1, 0xB2, 0x1B, 0xAD, 0x7D, 0xBB, 0xC3, + 0x33, 0xA9, 0x7F, 0x17, 0x93, 0x04, 0x71, 0x8F, + 0x32, 0x89, 0xB6, 0xDE, 0x31, 0x31, 0x5B, 0x74, + 0xC1, 0xA7, 0x3A, 0xC7, 0x75, 0x6F, 0xAA, 0x4D, + 0x7E, 0xB5, 0x68, 0xBB, 0xC6, 0xF7, 0xE7, 0x88, + 0xCD, 0x08, 0x9B, 0x39, 0x55, 0x64, 0xD2, 0x17, + 0x6B, 0x00, 0x56, 0xDF, 0xFE, 0x95, 0x2C, 0x77, + 0x48, 0xB0, 0x48, 0x30, 0x67, 0x20, 0xF6, 0x02, + 0xB6, 0x7E, 0x8F, 0x6A, 0xDC, 0xC9, 0x1F, 0x8E, + 0x3A, 0xA4, 0xB8, 0xC4, 0xD7, 0xFA, 0xC2, 0x33, + 0xAA, 0xF9, 0x36, 0x53, 0xAD, 0x22, 0x09, 0xE2, + 0xFF, 0x92, 0xDA, 0x30, 0xC2, 0xD5, 0x3F, 0xDE, + 0xF6, 0xF4, 0xC9, 0x0E, 0xAA, 0x0D, 0xE6, 0x0D, + 0x59, 0x4A, 0xDA, 0x39, 0x15, 0xDB, 0x24, 0x27, + 0x9D, 0x86, 0x74, 0x76, 0xEA, 0xD7, 0x57, 0xB4, + 0xC0, 0x26, 0x4A, 0x1D, 0xB8, 0xA1, 0xF5, 0x7A, + 0x1B, 0x5D, 0x71, 0x73, 0xBB, 0x1A, 0x96, 0x0C, + 0xE0, 0x2F, 0xDE, 0xFE, 0xF1, 0x60, 0xD5, 0x12, + 0x66, 0x7D, 0x65, 0x52, 0x68, 0xFC, 0xC3, 0xA1, + 0x53, 0xA4, 0x31, 0x47, 0x82, 0xA0, 0xEB, 0xFF, + 0x84, 0xF6, 0x5F, 0x14, 0xA0, 0xE3, 0xE1, 0x2A, + 0x13, 0x25, 0x0C, 0x07, 0xD0, 0x8C, 0x22, 0x5B, + 0x11, 0xA6, 0x83, 0x1B, 0xC2, 0x5C, 0x40, 0x46, + 0x7B, 0x76, 0x80, 0x04, 0xDD, 0xE0, 0xE8, 0x74, + 0xA5, 0x11, 0x44, 0xC1, 0x89, 0x20, 0xBD, 0xF2, + 0x86, 0x09, 0x0B, 0x59, 0xF5, 0x15, 0x64, 0xEA, + 0x40, 0x70, 0xFB, 0xBF, 0x61, 0xE3, 0x69, 0x64, + 0x35, 0xF2, 0x8F, 0x63, 0x33, 0x2B, 0x64, 0x49, + 0x6D, 0xF3, 0xEC, 0x8B, 0x65, 0xD5, 0x4E, 0x1C, + 0xF4, 0x78, 0x9D, 0xDA, 0xB1, 0x22, 0xDA, 0x6B, + 0x26, 0x4D, 0x31, 0x2A, 0x71, 0x1C, 0x12, 0x9E, + 0x3B, 0x07, 0xF4, 0xC6, 0xDA, 0x25, 0xA5, 0x61, + 0x73, 0xAF, 0x58, 0xB9, 0x0A, 0x71, 0xB7, 0xAC, + 0xFA, 0x31, 0x61, 0xA8, 0x1F, 0x59, 0xD1, 0x79, + 0x14, 0xC9, 0x9B, 0xBA, 0xC4, 0xF9, 0xA3, 0x14, + 0x97, 0x7A, 0x89, 0xCE, 0xF7, 0x69, 0x69, 0x43, + 0x60, 0x9B, 0xB4, 0x82, 0x79, 0x64, 0xFB, 0x29, + 0x76, 0x40, 0x3B, 0xD4, 0x99, 0x6F, 0x1E, 0x84, + 0x2B, 0xF5, 0xAA, 0xAE, 0x1E, 0xCC, 0xA1, 0x12, + 0x55, 0xB9, 0xE6, 0x00, 0x1C, 0x20, 0xF7, 0x2F, + 0x1F, 0xD5, 0xE3, 0x2C, 0xDA, 0x32, 0xD8, 0xA7, + 0xAC, 0x5F, 0x62, 0xB0, 0x9A, 0x0E, 0x61, 0x58, + 0x47, 0xCA, 0x74, 0x6F, 0x48, 0x95, 0x15, 0xCF, + 0x8F, 0x18, 0x31, 0x62, 0x85, 0x9F, 0x53, 0xB9, + 0x7E, 0x9E, 0x5C, 0xA8, 0x00, 0xEE, 0x62, 0x4F, + 0x72, 0x98, 0x43, 0xA0, 0x00, 0x91, 0x64, 0xA4, + 0xA9, 0xFF, 0x76, 0xEB, 0x34, 0xE4, 0x70, 0x41, + 0x84, 0x84, 0x8A, 0x13, 0x9A, 0xD9, 0x7D, 0x90, + 0x9F, 0x7A, 0x7E, 0xD1, 0x14, 0xF0, 0x87, 0xA4, + 0xB2, 0xE1, 0xB4, 0xA3, 0x03, 0x23, 0x91, 0x16, + 0x0B, 0x6F, 0x3A, 0x36, 0x49, 0xFF, 0x15, 0xAE, + 0xA2, 0xB7, 0x10, 0x7A, 0xF8, 0xA3, 0xB5, 0xFC, + 0xAD, 0x61, 0xD4, 0x3D, 0x60, 0x2E, 0x62, 0x86, + 0xA9, 0x00, 0x87, 0x0C, 0xC8, 0xCE, 0x24, 0xE3, + 0x9E, 0x78, 0xF0, 0x39, 0x7A, 0x0D, 0x7E, 0x27, + 0xE8, 0xE2, 0xD4, 0x77, 0x6A, 0x44, 0xCB, 0xA2, + 0x18, 0xEB, 0xCD, 0x88, 0xB3, 0xC2, 0x8C, 0x18, + 0x2A, 0x7C, 0x9F, 0x4D, 0xBB, 0x2D, 0xBB, 0x5E, + 0x98, 0x15, 0x63, 0xD6, 0x6C, 0xEE, 0xB7, 0x7E, + 0x7F, 0x90, 0x34, 0xBD, 0x42, 0x9D, 0x27, 0x63, + 0x7C, 0xF7, 0x97, 0xDE, 0x82, 0xE0, 0x1F, 0xEB, + 0xBC, 0xE2, 0x17, 0x1E, 0xFD, 0x01, 0x6E, 0x40, + 0x2A, 0x42, 0xD7, 0x8E, 0xA1, 0xAC, 0xE2, 0xCB, + 0x37, 0x0E, 0x75, 0xC9, 0x0A, 0xDF, 0xA1, 0xA7, + 0x93, 0xB2, 0x16, 0x9C, 0xC2, 0x65, 0x22, 0xDB, + 0x2F, 0x54, 0x6A, 0xC1, 0xDE, 0x34, 0xC9, 0x08, + 0x71, 0x20, 0xC4, 0x2A, 0x9F, 0x10, 0xC0, 0x0D, + 0x49, 0x3C, 0x25, 0x73, 0x01, 0x66, 0xF9, 0xD2, + 0x19, 0xFB, 0xDA, 0xD2, 0x22, 0xC8, 0xB2, 0x81, + 0x15, 0x54, 0x33, 0x13, 0x21, 0x08, 0x48, 0xFB, + 0x2F, 0x04, 0xBF, 0xDC, 0xE1, 0x5D, 0x32, 0x0C, + 0x36, 0x34, 0xA8, 0xE4, 0xD6, 0x37, 0x55, 0x51, + 0x59, 0x00, 0xC7, 0x5B, 0xFD, 0x09, 0x0A, 0xD7, + 0x8D, 0xD5, 0x88, 0x65, 0x9F, 0xBF, 0x97, 0xC9, + 0x6E, 0x0D, 0x0A, 0xCC, 0x8E, 0x81, 0x5E, 0x60, + 0x8F, 0x9E, 0x86, 0x1D, 0x79, 0xAF, 0x30, 0x51, + 0xB9, 0x42, 0xB5, 0x25, 0x70, 0xB6, 0x29, 0x2B, + 0xF4, 0x8C, 0x2B, 0xFA, 0xA9, 0x07, 0x7D, 0xC7, + 0x6F, 0xE9, 0x02, 0x68, 0x32, 0x17, 0xB8, 0xBF, + 0x80, 0x9E, 0xD7, 0xA0, 0x05, 0x0A, 0xDD, 0xBB, + 0x65, 0xFD, 0xDF, 0xBD, 0x24, 0x01, 0x9C, 0x91, + 0x81, 0xB5, 0xAC, 0x81, 0x56, 0x61, 0x13, 0xD6, + 0x69, 0x4E, 0xA6, 0x29, 0x1D, 0x7F, 0x4A, 0x7F, + 0x56, 0xA4, 0x1E, 0xB9, 0x1F, 0x76, 0x36, 0x8D, + 0xF8, 0x2B, 0x16, 0x4B, 0x48, 0x59, 0x25, 0x9D, + 0x71, 0x89, 0x24, 0x0F, 0x1D, 0x88, 0x03, 0xF8, + 0x10, 0x72, 0x96, 0xD3, 0x78, 0xBA, 0xB4, 0xD2, + 0x4F, 0xE6, 0xD1, 0x0E, 0xF7, 0x88, 0x36, 0x7B, + 0xCE, 0x16, 0xC5, 0xAB, 0x77, 0xFB, 0xC1, 0x68, + 0xB8, 0x57, 0xF7, 0xBA, 0x5C, 0xDC, 0xBE, 0x50, + 0x67, 0xC8, 0x64, 0xF8, 0x79, 0x80, 0x9F, 0xE5, + 0x21, 0x7D, 0xEF, 0x02, 0x94, 0xBF, 0xAF, 0xDF, + 0x80, 0x9A, 0xBC, 0xE9, 0x53, 0x2D, 0xD9, 0xDA, + 0xB3, 0x44, 0x8F, 0x4D, 0xA6, 0x8E, 0xCA, 0x51, + 0x60, 0x94, 0x76, 0x27, 0x8E, 0xB8, 0xC4, 0xF6, + 0x9E, 0xA2, 0x96, 0x73, 0xF6, 0x94, 0x18, 0x04, + 0x1D, 0x26, 0x85, 0x7E, 0xBC, 0x24, 0xA4, 0x87, + 0xBB, 0x4B, 0x0B, 0xA6, 0x3A, 0xF8, 0x48, 0x54, + 0x5E, 0xE9, 0xBE, 0x89, 0xF1, 0x39, 0xD5, 0x02, + 0x09, 0x9B, 0x9D, 0x35, 0xDB, 0x38, 0x07, 0xB9, + 0x25, 0xCB, 0xA5, 0x76, 0xE2, 0x71, 0x70, 0xEA, + 0xEC, 0x48, 0xCC, 0x2C, 0xC1, 0x5B, 0x04, 0x36, + 0x77, 0x82, 0x5D, 0x0E, 0xE8, 0x1E, 0xB2, 0xCE, + 0xE3, 0xA8, 0xED, 0x14, 0xA7, 0x98, 0xB8, 0x79, + 0x53, 0x02, 0x20, 0xE5, 0x0C, 0xE8, 0xC0, 0x03, + 0xA3, 0x05, 0x38, 0x2A, 0x24, 0xD2, 0x3C, 0x27, + 0x7B, 0x99, 0xD1, 0xF4, 0xC5, 0x4F, 0x9A, 0x8D, + 0x33, 0xFA, 0x3D, 0x1E, 0x33, 0x7E, 0x18, 0xD7, + 0xCB, 0xBA, 0x5E, 0x5A, 0x47, 0xF2, 0xD5, 0xE0, + 0x96, 0xCF, 0x45, 0x51, 0xB2, 0x3B, 0x1B, 0x86, + 0x43, 0x6E, 0x81, 0xB4, 0xA0, 0x9D, 0x1E, 0x3D, + 0x38, 0x49, 0x2E, 0xC8, 0xB2, 0xA0, 0x09, 0x67, + 0x01, 0x6A, 0xB7, 0x6B, 0x9A, 0x9B, 0x18, 0x64, + 0x67, 0x14, 0x21, 0xDA, 0x56, 0xF5, 0x7D, 0x00, + 0x8D, 0x5C, 0xE1, 0xB8, 0x92, 0xA7, 0xE9, 0xC1, + 0xF6, 0x9F, 0x6C, 0x72, 0x2C, 0xF1, 0x09, 0xDB, + 0x50, 0x0E, 0x53, 0xF6, 0xBC, 0x07, 0x83, 0x7A, + 0xD1, 0xCD, 0x4C, 0xF4, 0xA6, 0x4D, 0xA7, 0x63, + 0xB4, 0xA9, 0xC4, 0x92, 0x9B, 0x0D, 0xCD, 0xDF, + 0x7C, 0x7E, 0x11, 0x86, 0xBE, 0x3F, 0xF0, 0xC3, + 0x21, 0x15, 0x84, 0x37, 0x82, 0x0C, 0x81, 0xE7, + 0x4F, 0xF3, 0x16, 0xAE, 0x32, 0x54, 0xE9, 0x72, + 0xFC, 0x19, 0x7A, 0x7F, 0x0E, 0x62, 0x02, 0x42, + 0xAC, 0x05, 0xA4, 0xE4, 0x3E, 0x98, 0x7C, 0x2A, + 0x83, 0x55, 0xB0, 0x35, 0x77, 0x45, 0xCA, 0x79, + 0xE6, 0xAE, 0x48, 0xAB, 0x29, 0xED, 0x4F, 0xA6, + 0x3D, 0x3A, 0x1F, 0x19, 0xB9, 0x99, 0xDE, 0x25, + 0x1F, 0xDE, 0x06, 0x40, 0xDD, 0x87, 0x87, 0x6D, + 0x55, 0x76, 0x28, 0x78, 0xAD, 0x1D, 0xB1, 0x2D, + 0x65, 0xBA, 0xFD, 0x14, 0xB6, 0xA9, 0xA7, 0x08, + 0x1B, 0xF2, 0x3F, 0x9F, 0x06, 0xD9, 0x0C, 0xE2, + 0x73, 0xC5, 0xA2, 0x6E, 0x01, 0x2C, 0xA9, 0x4D, + 0xD4, 0x81, 0xD3, 0x2E, 0x10, 0x93, 0x8C, 0x16, + 0x51, 0x63, 0xE8, 0x9B, 0xE8, 0xA9, 0x3A, 0x63, + 0x03, 0x4D, 0x34, 0x5B, 0x74, 0xE2, 0xA9, 0x4E, + 0xF6, 0x43, 0xD0, 0x6A, 0xF9, 0xE1, 0xF5, 0xC9, + 0xF1, 0x04, 0x93, 0x0D, 0xA0, 0x0E, 0x61, 0xE0, + 0x61, 0xEE, 0x8C, 0x3B, 0xB1, 0x7C, 0x11, 0xE0, + 0x5D, 0x45, 0xC1, 0x68, 0x2E, 0x4D, 0x59, 0x3C, + 0x91, 0x98, 0x23, 0x8D, 0x2B, 0xA2, 0x89, 0x77, + 0x9E, 0x7D, 0x0F, 0x22, 0x7B, 0xCB, 0x0B, 0x09, + 0x97, 0x2B, 0x19, 0x77, 0x0F, 0xF0, 0x11, 0xBF, + 0x6C, 0x60, 0xD9, 0xD1, 0x93, 0xCF, 0xAB, 0x32, + 0x74, 0x7A, 0x00, 0x95, 0xE1, 0xA4, 0xAD, 0x32, + 0x51, 0x4C, 0x78, 0x2E, 0xF3, 0xDE, 0x7A, 0x26, + 0xEA, 0x77, 0x1F, 0x55, 0x30, 0xD9, 0xDE, 0x97, + 0x36, 0xD0, 0xF6, 0xAE, 0x1A, 0xFB, 0x78, 0xEC, + 0x7C, 0xE4, 0x88, 0x4A, 0x1B, 0xB4, 0x36, 0xCF, + 0xCE, 0x45, 0x9C, 0xD9, 0x93, 0x58, 0x26, 0x09, + 0x06, 0xAA, 0xC9, 0x97, 0x16, 0xA5, 0x36, 0xCC, + 0x76, 0x87, 0xA0, 0x37, 0x5F, 0xDA, 0x11, 0x00, + 0x76, 0x18, 0xE5, 0x53, 0x53, 0x4E, 0x54, 0xD5, + 0xB2, 0x14, 0xF7, 0xAA, 0x6F, 0xC7, 0xDB, 0xE3, + 0x7C, 0x2B, 0xD2, 0xB6, 0x48, 0x50, 0xAE, 0x46, + 0x9A, 0x98, 0x58, 0x98, 0x7F, 0x3F, 0xA4, 0xB1, + 0xFD, 0x26, 0xD9, 0x54, 0xBF, 0xEC, 0x36, 0x5D, + 0xBE, 0x06, 0xDD, 0xCD, 0x61, 0x5E, 0x1F, 0xED, + 0x58, 0xA8, 0x86, 0x76, 0x40, 0x2D, 0x1D, 0x6B, + 0x58, 0x14, 0x85, 0x49, 0x8B, 0x5A, 0xDF, 0xFF, + 0xC4, 0x2D, 0x47, 0xD6, 0x1D, 0xF9, 0x93, 0x84, + 0xE2, 0x2C, 0x51, 0x57, 0xF0, 0x17, 0x8A, 0x6F, + 0xDA, 0xF8, 0xF4, 0xA9, 0x49, 0x1D, 0xAF, 0x29, + 0x8B, 0x2C, 0x3E, 0xC8, 0x80, 0x85, 0x02, 0x2C, + 0x0A, 0x7C, 0xF2, 0x45, 0xED, 0x0F, 0xB5, 0xA3, + 0x8C, 0xD1, 0x6F, 0x30, 0xD3, 0x7D, 0xA5, 0xC4, + 0x95, 0x9A, 0x55, 0x50, 0x1D, 0xAD, 0x50, 0xF1, + 0xB4, 0x8B, 0xBB, 0xDD, 0x86, 0xAB, 0x8B, 0xB5, + 0x22, 0xA9, 0x36, 0xDD, 0xF0, 0x00, 0x3B, 0x81, + 0xBE, 0x16, 0x23, 0x1A, 0x04, 0xE7, 0xA5, 0x89, + 0xC5, 0x6F, 0xFF, 0xB5, 0x1B, 0x07, 0x92, 0x7B, + 0x4A, 0xFA, 0x1D, 0xB7, 0xD4, 0x8B, 0xC6, 0xFB, + 0xC3, 0xF3, 0x67, 0x56, 0x37, 0x18, 0x4B, 0x7A, + 0xDB, 0x9B, 0xAD, 0xF4, 0xDE, 0x7C, 0x08, 0x5B, + 0xCA, 0x1D, 0x42, 0x8D, 0xC9, 0xFC, 0x82, 0x77, + 0xCB, 0xD8, 0x58, 0x84, 0xA5, 0x92, 0x1B, 0x52, + 0xBB, 0x05, 0xB7, 0x10, 0x61, 0x55, 0x08, 0x26, + 0x1B, 0xB4, 0x54, 0x6B, 0xD6, 0xE1, 0xFC, 0x73, + 0x0D, 0x16, 0xB0, 0x49, 0xEA, 0x12, 0x79, 0x8C, + 0xE2, 0xE6, 0xDF, 0x43, 0xF5, 0xB8, 0xF3, 0xEF, + 0x9A, 0xC8, 0xFB, 0xAE, 0x31, 0xB0, 0x11, 0xE1, + 0x0C, 0x4F, 0xC6, 0x2F, 0xFD, 0x7F, 0x39, 0xD1, + 0x6E, 0xC3, 0x2C, 0xA8, 0x21, 0x0E, 0xD1, 0x6E, + 0x04, 0x1D, 0xA4, 0x3D, 0x92, 0x74, 0x22, 0x95, + 0x14, 0x05, 0x4A, 0x0F, 0x82, 0xD4, 0x62, 0xFE, + 0x08, 0x0C, 0x6F, 0xFD, 0x7B, 0xBD, 0xBF, 0xBF, + 0x0B, 0xFF, 0xC6, 0xD5, 0xEC, 0xC4, 0x32, 0xA3, + 0x25, 0x6C, 0x0B, 0xE0, 0xDD, 0xFD, 0x5D, 0x90, + 0x80, 0xC6, 0x76, 0xC7, 0x95, 0x5D, 0x66, 0xE4, + 0x4D, 0x1C, 0xE5, 0x1F, 0xCC, 0x23, 0x82, 0xF8, + 0x68, 0xD7, 0x32, 0xE8, 0x58, 0x51, 0x72, 0x1B, + 0x48, 0xA0, 0x1D, 0x08, 0xC6, 0x39, 0x62, 0x6E, + 0xE0, 0x50, 0x9C, 0xB5, 0x81, 0xEF, 0xF5, 0x62, + 0x8F, 0xA6, 0xCC, 0xD1, 0x08, 0x9A, 0xC0, 0xE1, + 0x2D, 0xEB, 0xE0, 0x85, 0x17, 0x82, 0xE6, 0x4C, + 0x50, 0x49, 0xCB, 0xD6, 0x50, 0x10, 0x13, 0x96, + 0x5C, 0xC0, 0xCA, 0x25, 0xAC, 0xAB, 0x17, 0x6E, + 0xF7, 0xCA, 0xB9, 0x29, 0x40, 0x98, 0x5D, 0xDB, + 0x49, 0x02, 0x1D, 0xF6, 0xC6, 0x0D, 0x6C, 0x4A, + 0x48, 0x91, 0x16, 0x31, 0x1E, 0x86, 0xBA, 0x19, + 0xED, 0xF0, 0x0D, 0x74, 0x79, 0x73, 0x58, 0x20, + 0x7C, 0xDE, 0x50, 0x50, 0x6D, 0x00, 0x7F, 0xE0, + 0x3C, 0x88, 0x04, 0xC6, 0x64, 0x51, 0xF0, 0x2A, + 0x01, 0x82, 0xD3, 0x87, 0xB7, 0x59, 0x89, 0x40, + 0x96, 0xF6, 0x52, 0x32, 0x95, 0x2D, 0x18, 0x3D, + 0xBA, 0xAA, 0xBB, 0x6B, 0xC0, 0xE1, 0x91, 0xDC, + 0x2C, 0x3F, 0x75, 0xFC, 0x72, 0xBD, 0x61, 0xBA, + 0xB2, 0xEF, 0x19, 0xB6, 0x53, 0x2B, 0x23, 0x1C, + 0x4A, 0xFB, 0x1A, 0x9C, 0x2C, 0xB2, 0xF3, 0xD6, + 0xC4, 0x51, 0xE8, 0x44, 0x0D, 0x6A, 0x92, 0x3C, + 0xF7, 0x2A, 0x63, 0xE2, 0xED, 0x85, 0x54, 0x77, + 0x38, 0x87, 0x91, 0x0C, 0xA5, 0xC6, 0x71, 0xAD, + 0x4F, 0xD5, 0x92, 0x3C, 0xB9, 0x5E, 0xC7, 0x3F, + 0xFD, 0xFB, 0xDA, 0x4B, 0x66, 0x55, 0xF5, 0x5D, + 0xBF, 0xD1, 0x31, 0x7D, 0x02, 0x44, 0x22, 0x30, + 0x1E, 0xD6, 0x6A, 0x6E, 0x4C, 0x67, 0x20, 0x85, + 0xCE, 0xD1, 0xF4, 0xC7, 0xB0, 0x50, 0x30, 0xA1, + 0x00, 0xC4, 0x78, 0x8F, 0xEF, 0x4C, 0xD3, 0xE4, + 0x94, 0xA8, 0x53, 0xBD, 0xE6, 0x3E, 0x9D, 0x44, + 0x9A, 0xE3, 0xBB, 0x6B, 0xA1, 0x08, 0x32, 0x38, + 0xDA, 0x3F, 0x40, 0x90, 0x51, 0x5D, 0x14, 0x3C, + 0x67, 0xDB, 0xE5, 0x3D, 0x8D, 0x50, 0x7A, 0x52, + 0x29, 0xFF, 0xEB, 0x20, 0x72, 0xD0, 0xBD, 0x09, + 0x2F, 0xC9, 0xAE, 0x52, 0xDE, 0xAA, 0xAC, 0xD1, + 0xF0, 0xF1, 0x4B, 0x5A, 0xC8, 0x47, 0x52, 0xBF, + 0xD0, 0x02, 0x5E, 0x5F, 0x55, 0xB8, 0x69, 0x35, + 0x0F, 0x4B, 0x27, 0x19, 0xC5, 0xC0, 0x5A, 0xC1, + 0x66, 0x9B, 0xB0, 0xFD, 0x3C, 0x61, 0x4A, 0xCE, + 0x02, 0xA2, 0x70, 0x61, 0x3F, 0xD3, 0x30, 0x97, + 0x06, 0xDD, 0xCD, 0x5B, 0x1A, 0x6A, 0xD2, 0x6F, + 0x35, 0x9A, 0xDA, 0x80, 0xB3, 0x0E, 0x50, 0xA7, + 0xE5, 0x0B, 0xBD, 0x3A, 0xA4, 0x5D, 0x06, 0x54, + 0xDD, 0x7D, 0x05, 0x8B, 0x0B, 0xBF, 0x4D, 0x0D, + 0x92, 0x13, 0x51, 0x42, 0x21, 0x4E, 0xE7, 0x05, + 0x11, 0xF3, 0x67, 0x6A, 0xE6, 0x43, 0xB5, 0xF2, + 0x45, 0x06, 0x3B, 0x94, 0x19, 0xCF, 0x6B, 0x49, + 0xFD, 0x64, 0x7F, 0x27, 0xD7, 0xC4, 0x1C, 0x86, + 0x6E, 0x6C, 0xAD, 0x9D, 0x5E, 0x2E, 0x3E, 0x33, + 0x1B, 0xF6, 0xB9, 0xF7, 0x2A, 0xCA, 0x32, 0x9B, + 0xB6, 0x42, 0x59, 0xC3, 0xE7, 0x97, 0x83, 0xA2, + 0x66, 0x74, 0xB7, 0xD3, 0x8E, 0xBD, 0xE8, 0x31, + 0x84, 0x11, 0xF4, 0x76, 0x4E, 0xBD, 0xC4, 0xC7, + 0xE4, 0x1A, 0xCF, 0xF8, 0x5B, 0xBB, 0x30, 0x31, + 0x8D, 0x59, 0xC4, 0x2C, 0x92, 0x03, 0xAB, 0xD6, + 0x63, 0x6B, 0xA3, 0xF7, 0x72, 0xB6, 0x72, 0x51, + 0x21, 0xC0, 0x52, 0xDE, 0x99, 0x91, 0x0D, 0x55, + 0x15, 0x8C, 0x6F, 0x3E, 0xF8, 0xBB, 0x7F, 0xED, + 0xE2, 0xF8, 0x1E, 0x58, 0xA7, 0xAE, 0xB2, 0x5E, + 0x2E, 0x46, 0xFD, 0x72, 0x32, 0x30, 0x2F, 0xAF, + 0xA8, 0xFC, 0x37, 0xFC, 0x8B, 0x55, 0xD5, 0x94, + 0xB7, 0x6E, 0xC4, 0xA5, 0x3E, 0xB1, 0x1E, 0xB3, + 0xFD, 0x63, 0x44, 0x28, 0xAA, 0xA5, 0xD8, 0x6F, + 0x83, 0x9D, 0x08, 0x9A, 0xBE, 0x2F, 0xEF, 0xE2, + 0xAE, 0x52, 0x62, 0xFE, 0xFC, 0x73, 0x48, 0xD8, + 0x36, 0x69, 0x2E, 0xDB, 0x21, 0x5D, 0x6F, 0x8F, + 0x54, 0x8B, 0x88, 0x52, 0x90, 0xC2, 0x40, 0x3C, + 0x51, 0xC3, 0xE2, 0x69, 0xD4, 0x93, 0xFB, 0xD3, + 0x39, 0xB5, 0xDF, 0xB0, 0xA3, 0x8E, 0xED, 0xA7, + 0x75, 0x4D, 0xAF, 0xFA, 0x16, 0xE5, 0xBC, 0xA5, + 0xA9, 0xBB, 0xDE, 0x04, 0xB0, 0x14, 0xB7, 0xAE, + 0xA8, 0x98, 0x8F, 0x37, 0x49, 0xD5, 0x2D, 0x2F, + 0xC1, 0xC9, 0xF7, 0xC7, 0xB2, 0xC2, 0xD6, 0x92, + 0xE7, 0x89, 0x6E, 0x4C, 0x34, 0xF5, 0x7C, 0x55, + 0x8C, 0xFE, 0x83, 0x17, 0xA8, 0x37, 0x44, 0x09, + 0xD5, 0x66, 0x87, 0x9A, 0x08, 0x62, 0x8F, 0x64, + 0x4F, 0xB4, 0x5B, 0x81, 0x84, 0x55, 0xBC, 0xA6, + 0x04, 0x2B, 0x4E, 0x61, 0x87, 0xC1, 0xDD, 0x17, + 0x7E, 0x9E, 0x51, 0x46, 0x31, 0x99, 0x04, 0xB1, + 0x50, 0x5F, 0x3E, 0xE0, 0x0C, 0xD7, 0xFE, 0xAF, + 0x0E, 0x83, 0xC3, 0x02, 0x49, 0x56, 0xF7, 0x76, + 0x59, 0xAC, 0xC5, 0x6D, 0x8D, 0x91, 0x7A, 0x37, + 0xE8, 0xFF, 0x7E, 0xB8, 0x87, 0x13, 0xCC, 0xA3, + 0x34, 0xEA, 0x04, 0xB8, 0xE2, 0x58, 0xC9, 0x34, + 0x5D, 0xA9, 0xDE, 0x26, 0xA0, 0xA3, 0x66, 0x51, + 0x94, 0x51, 0xE1, 0x01, 0x2D, 0xE6, 0xAA, 0xBF, + 0x46, 0x97, 0xC9, 0xDE, 0x82, 0x1D, 0x70, 0x02, + 0x1C, 0x32, 0x50, 0xA1, 0x06, 0xCF, 0x4C, 0x23, + 0xA1, 0xB1, 0x78, 0x5F, 0x54, 0x9D, 0x3C, 0x8C, + 0xD7, 0x1B, 0x05, 0xFE, 0xA7, 0x53, 0xE0, 0x04, + 0x6A, 0x3A, 0xE0, 0xA9, 0xB1, 0xF4, 0x02, 0x77, + 0xCF, 0x45, 0x3A, 0x2B, 0xA1, 0x4C, 0xBA, 0x92, + 0x3C, 0xC6, 0x26, 0x97, 0x06, 0xDF, 0xFF, 0xD5, + 0x17, 0xC1, 0xE5, 0x93, 0x00, 0x79, 0x91, 0x2E, + 0x05, 0xA5, 0x57, 0x18, 0x97, 0xA0, 0x68, 0x65, + 0x51, 0x6C, 0x86, 0x69, 0x9F, 0x70, 0x7E, 0x00, + 0xCB, 0x38, 0xCE, 0x19, 0x34, 0x90, 0xAE, 0xE3, + 0x0B, 0xA4, 0x7D, 0xDD, 0xF3, 0xA5, 0xB4, 0xFB, + 0xCE, 0xBA, 0x73, 0xDC, 0x13, 0xD0, 0xA1, 0x60, + 0xEA, 0x64, 0x2D, 0x30, 0xD6, 0x3A, 0x02, 0x96, + 0x4E, 0xDF, 0xDB, 0x2F, 0x29, 0xDC, 0xD3, 0x2C, + 0xA9, 0x97, 0x4F, 0x89, 0xC3, 0x2D, 0x1F, 0xA9, + 0xA8, 0x3C, 0x94, 0xA2, 0x77, 0x0F, 0xCF, 0xCF, + 0x86, 0xE6, 0x46, 0x46, 0x88, 0x2B, 0xD5, 0x50, + 0xDD, 0xD6, 0x5B, 0x4E, 0x2D, 0x28, 0x7A, 0xF6, + 0xC1, 0x96, 0xF4, 0x2D, 0xBD, 0x39, 0xB0, 0x20, + 0xD7, 0xCD, 0xFB, 0xB6, 0xE6, 0xE7, 0x5F, 0xFA, + 0xAB, 0x26, 0x09, 0x9E, 0xC1, 0xD2, 0x5E, 0x32, + 0x34, 0xF7, 0x0D, 0xD9, 0x72, 0x28, 0x6A, 0xEA, + 0x0C, 0x34, 0x36, 0x59, 0x5F, 0xE4, 0x9F, 0xCA, + 0x89, 0x8B, 0xFA, 0x42, 0x16, 0x04, 0xC8, 0x2D, + 0x3E, 0x94, 0x85, 0x6D, 0x18, 0x69, 0x05, 0x07, + 0x6D, 0x18, 0x6C, 0x68, 0x41, 0x74, 0xBF, 0x42, + 0x90, 0xDF, 0x31, 0x76, 0x9E, 0xDC, 0x97, 0xA1, + 0xDF, 0x2D, 0xFE, 0xD0, 0x3C, 0xF4, 0x5C, 0xE6, + 0x78, 0xC8, 0xA1, 0x42, 0x9E, 0xB9, 0x78, 0xD0, + 0x2A, 0x79, 0xD4, 0xF8, 0xCF, 0x01, 0x68, 0xDA, + 0xAB, 0x48, 0x2C, 0x6C, 0x61, 0x2F, 0x04, 0xB1, + 0xC9, 0x36, 0x37, 0xFE, 0x77, 0xB3, 0x02, 0xCE, + 0xFA, 0x78, 0x8C, 0x11, 0x35, 0x6C, 0x52, 0xC5, + 0x4F, 0x37, 0xA9, 0xDC, 0xFD, 0xA5, 0x59, 0x27, + 0xA8, 0xEF, 0x0A, 0x0C, 0xEA, 0x7C, 0xC4, 0xAD, + 0xCE, 0xE4, 0x59, 0xEB, 0x64, 0xDF, 0x08, 0xED, + 0x0F, 0xC2, 0x9F, 0xDC, 0x3C, 0x7B, 0x76, 0x2B, + 0x39, 0x93, 0x32, 0x06, 0x33, 0x40, 0xD4, 0x73, + 0x96, 0x62, 0x19, 0xBF, 0xC8, 0x7B, 0x4A, 0x3C, + 0x91, 0xC8, 0x0F, 0x0E, 0x4B, 0xA8, 0x6A, 0xA1, + 0x87, 0x9C, 0x76, 0x62, 0x5C, 0x86, 0x80, 0xA2, + 0x27, 0xAB, 0x22, 0x78, 0x06, 0x59, 0xD4, 0xB5, + 0xD3, 0x0E, 0x0E, 0x9A, 0x0D, 0xCE, 0x09, 0x4D, + 0xAF, 0x53, 0x76, 0x79, 0x27, 0x3A, 0x9B, 0x27, + 0x7E, 0xD2, 0xA2, 0xE2, 0x50, 0xEE, 0xA0, 0x93, + 0x82, 0x04, 0xC9, 0xE9, 0x63, 0xD3, 0x38, 0x52, + 0x2A, 0x3D, 0x1A, 0x44, 0x40, 0xE2, 0xA1, 0x23, + 0x97, 0xA5, 0xB9, 0x7D, 0x35, 0x65, 0x73, 0x07, + 0xBE, 0xC9, 0x4C, 0xC0, 0xC7, 0x2C, 0x5C, 0x6B, + 0x09, 0xDA, 0xF2, 0xBA, 0xF0, 0x02, 0x0B, 0x7D, + 0x8C, 0xA5, 0x60, 0xBF, 0x65, 0x96, 0x92, 0x9A, + 0xC8, 0xD4, 0xE5, 0x46, 0x0F, 0x78, 0x37, 0xB4, + 0x1B, 0x4A, 0xE6, 0xFF, 0x12, 0x33, 0x9D, 0xB8, + 0xEB, 0xD7, 0x02, 0x8A, 0xAC, 0xFE, 0x0B, 0x42, + 0xE0, 0x2C, 0xDE, 0x90, 0x67, 0x83, 0xAB, 0xFF, + 0x69, 0x4E, 0x7C, 0xBE, 0x08, 0x97, 0xED, 0x6E, + 0xD4, 0x38, 0xAC, 0xDB, 0x00, 0xA4, 0x70, 0x9C, + 0xFE, 0xF7, 0x15, 0x0E, 0xBE, 0xB0, 0x8C, 0x8F, + 0xF6, 0xC1, 0x54, 0x38, 0x15, 0xF4, 0xB8, 0x95, + 0x1C, 0x3C, 0xAC, 0xE4, 0x99, 0x58, 0x64, 0x58, + 0xA7, 0x3C, 0x85, 0x72, 0x38, 0x9A, 0xFC, 0x97, + 0x03, 0xA7, 0xFE, 0xAF, 0x67, 0x34, 0x45, 0xFB, + 0x4B, 0x0C, 0xCA, 0xA5, 0x11, 0xD4, 0xA2, 0xCF, + 0x46, 0x3F, 0x57, 0xE3, 0xA6, 0xD7, 0x2D, 0xA0, + 0x4B, 0x25, 0x66, 0x99, 0xA3, 0x02, 0x12, 0xE7, + 0xC5, 0x76, 0x8E, 0xFC, 0x15, 0x1B, 0x71, 0x74, + 0x41, 0x56, 0x57, 0x5A, 0x2E, 0x94, 0x43, 0x31, + 0x92, 0x32, 0xD1, 0x59, 0xC6, 0xCC, 0x00, 0x6F, + 0xDB, 0x57, 0xC5, 0x81, 0x73, 0xAD, 0x8D, 0x2C, + 0x86, 0x6C, 0x88, 0x87, 0x43, 0x7C, 0x22, 0x38, + 0x88, 0xE2, 0x1E, 0xF6, 0x7E, 0x1A, 0x33, 0x2C, + 0x1F, 0xDF, 0xCC, 0x15, 0xEF, 0x17, 0x47, 0x6F, + 0xE0, 0xFB, 0x57, 0xD4, 0x22, 0x98, 0x94, 0x72, + 0x5E, 0x14, 0x74, 0xC1, 0xBA, 0x12, 0x16, 0x56, + 0x28, 0x17, 0xF1, 0x6C, 0x53, 0xEC, 0xE0, 0x1C, + 0x7F, 0x9E, 0x36, 0x64, 0xEE, 0xDB, 0xBA, 0x94, + 0x95, 0x29, 0x87, 0x43, 0x1A, 0xA2, 0xA5, 0x7D, + 0x33, 0x0E, 0xB1, 0x1B, 0x28, 0xE6, 0xBF, 0x77, + 0x0E, 0x34, 0x9E, 0xCE, 0x35, 0x0C, 0x83, 0xE9, + 0x0D, 0xA6, 0xFE, 0x0D, 0x0A, 0x4A, 0xB9, 0x71, + 0x5D, 0xB2, 0x8B, 0xDD, 0x39, 0x7F, 0xAF, 0xA1, + 0x42, 0x83, 0x02, 0x15, 0x1E, 0x1F, 0x22, 0x2B, + 0x44, 0x69, 0x87, 0x9E, 0xB5, 0xD0, 0xF0, 0x18, + 0x60, 0x6A, 0x75, 0x94, 0xBF, 0xC8, 0x2C, 0x39, + 0x4E, 0x91, 0xB9, 0x26, 0x44, 0x95, 0xC9, 0x06, + 0x3D, 0x50, 0x52, 0x62, 0x79, 0x9B, 0x9F, 0xCB, + 0xE6, 0x31, 0x6B, 0xBC, 0xC8, 0xD8, 0x09, 0x30, + 0x53, 0x63, 0x6A, 0x74, 0xD4, 0xFA, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0F, 0x16, 0x1B, 0x1F, + 0x29, 0x2E, 0x36 + }; +#endif +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT +#ifndef WOLFSSL_NO_ML_DSA_44 + static const byte pk_44_draft[] = { + 0x35, 0x07, 0x31, 0x3A, 0xE3, 0x7A, 0xF6, 0x96, + 0x6C, 0x11, 0xA9, 0xE4, 0x0B, 0xEB, 0xEC, 0xE9, + 0x2B, 0x67, 0x3F, 0xD2, 0x67, 0x3C, 0x1C, 0x4C, + 0x08, 0xF0, 0x45, 0xA9, 0xDD, 0x5A, 0xB8, 0x8C, + 0x0A, 0x51, 0xA9, 0xBA, 0x89, 0x0F, 0x4C, 0xCB, + 0x9D, 0x0A, 0x41, 0x3F, 0x9C, 0xF4, 0x13, 0x36, + 0x79, 0x49, 0x00, 0x90, 0xBB, 0x57, 0x3B, 0xBD, + 0x2E, 0x18, 0xB3, 0xD0, 0xA5, 0x0E, 0x6B, 0x67, + 0xFF, 0x98, 0x8C, 0xDD, 0x07, 0xE8, 0xA7, 0xA1, + 0x3F, 0xAE, 0xFB, 0xD6, 0xC0, 0xF8, 0xF3, 0x34, + 0xA5, 0x17, 0xC2, 0x34, 0x88, 0x92, 0x65, 0xA6, + 0xE8, 0x66, 0x57, 0xFE, 0x86, 0x08, 0xF7, 0xDF, + 0xA0, 0x5B, 0x70, 0x3E, 0x91, 0x6C, 0x63, 0xA0, + 0xA3, 0x75, 0x55, 0xF8, 0xB6, 0xAA, 0xD4, 0x1B, + 0x78, 0x5E, 0x42, 0x9F, 0x96, 0xE4, 0xA0, 0x50, + 0xB6, 0x94, 0x2D, 0xC3, 0xE3, 0x36, 0x2B, 0x9D, + 0x6B, 0x7A, 0xEF, 0xF5, 0x68, 0xF2, 0x11, 0xDF, + 0x87, 0xA0, 0x9A, 0xC4, 0x61, 0xFB, 0xA4, 0x1C, + 0x98, 0x3F, 0xC9, 0x52, 0x59, 0x3B, 0x47, 0x4D, + 0xF5, 0x24, 0xA3, 0xD8, 0x63, 0xE1, 0xED, 0xDC, + 0xFD, 0xEB, 0x96, 0xFB, 0xF3, 0xE7, 0x50, 0x9C, + 0x72, 0x61, 0xC7, 0x3C, 0xCE, 0xF2, 0xEB, 0x22, + 0x55, 0x6B, 0x9F, 0x25, 0xE4, 0x45, 0xE1, 0xFB, + 0x3E, 0x2E, 0x4E, 0x92, 0x4F, 0x8A, 0x85, 0xEB, + 0x63, 0x2C, 0x05, 0x0F, 0x9A, 0xEC, 0x0E, 0x9D, + 0x05, 0x81, 0x46, 0x82, 0xEA, 0x74, 0x91, 0xD5, + 0x2A, 0xBC, 0xCC, 0xBB, 0xD6, 0x7F, 0x5F, 0x9A, + 0xD3, 0xBD, 0xEB, 0x14, 0xBA, 0x84, 0x27, 0x13, + 0x32, 0xB5, 0xF3, 0x71, 0xAC, 0x47, 0x19, 0x6B, + 0x5E, 0x43, 0x50, 0xC2, 0xA8, 0x82, 0xF5, 0x97, + 0x9B, 0x27, 0x62, 0xFB, 0xB7, 0xFF, 0x6B, 0xC8, + 0x52, 0x1E, 0xFB, 0x97, 0x39, 0x1E, 0x7F, 0x01, + 0xF8, 0x34, 0x47, 0xAA, 0xB2, 0x64, 0xB5, 0x9E, + 0x28, 0x18, 0xCB, 0x4A, 0x94, 0xBE, 0x6A, 0x43, + 0x5B, 0xAE, 0x21, 0xA4, 0x63, 0x64, 0x46, 0x0C, + 0x6B, 0x36, 0x1C, 0x2A, 0x3B, 0x64, 0xFA, 0xA0, + 0xAB, 0xE3, 0x3B, 0x7D, 0xB0, 0x23, 0x99, 0x21, + 0x55, 0x59, 0xBF, 0xD6, 0xDB, 0xB8, 0xDB, 0x09, + 0x5E, 0xBC, 0x32, 0x3C, 0xAC, 0xAB, 0x1A, 0x63, + 0x32, 0x21, 0x10, 0xD5, 0x8D, 0x7A, 0x5F, 0xCE, + 0x72, 0x8D, 0x2A, 0xED, 0x1D, 0x30, 0x38, 0x5D, + 0x3E, 0x62, 0xC2, 0x8E, 0xC9, 0x9F, 0x8C, 0x50, + 0x3F, 0xC6, 0xCE, 0x86, 0x4D, 0x67, 0x3D, 0x09, + 0xB6, 0x27, 0x14, 0x57, 0x14, 0xED, 0xC9, 0x8F, + 0xAC, 0x9E, 0xAC, 0x6F, 0xB5, 0xB2, 0xE6, 0x8D, + 0x9D, 0x5E, 0xE6, 0x78, 0x77, 0x09, 0x94, 0x35, + 0x5E, 0x3B, 0x64, 0x04, 0x38, 0xD4, 0x5B, 0x04, + 0xB8, 0x6C, 0x33, 0x97, 0xE1, 0x58, 0x54, 0x32, + 0xB3, 0x0F, 0x37, 0x69, 0x39, 0xCE, 0x57, 0x31, + 0x5C, 0x75, 0xA8, 0x94, 0xD0, 0x39, 0x2D, 0xB4, + 0x73, 0xA7, 0xA4, 0x7C, 0xBE, 0x34, 0x03, 0x2D, + 0x99, 0x1D, 0xDF, 0x32, 0x26, 0xB7, 0x45, 0x1B, + 0x03, 0xCD, 0xEE, 0x9D, 0x58, 0xA8, 0xA7, 0x76, + 0x1B, 0x17, 0x42, 0xD9, 0x69, 0x0F, 0x26, 0x3A, + 0x9D, 0x70, 0x9B, 0x4E, 0x81, 0xEB, 0x96, 0x02, + 0xB5, 0xB3, 0x92, 0x31, 0xFE, 0xBC, 0x38, 0x11, + 0x5A, 0x47, 0xED, 0x0A, 0x2A, 0xE2, 0xB8, 0x47, + 0x13, 0x5E, 0x43, 0x97, 0xD5, 0xFA, 0x31, 0x02, + 0x58, 0xE9, 0x9E, 0xB5, 0x3F, 0x85, 0x92, 0x0E, + 0xB9, 0xDB, 0xE0, 0xEE, 0x56, 0x76, 0x64, 0x8F, + 0xF2, 0xE2, 0x47, 0x81, 0xD4, 0xA4, 0x82, 0x43, + 0x69, 0xAE, 0x8E, 0x48, 0x50, 0x84, 0x93, 0x3B, + 0x9C, 0x65, 0xD3, 0x6F, 0xCD, 0x90, 0xA0, 0xD8, + 0xA0, 0xE1, 0x79, 0xCC, 0xD5, 0x1F, 0x71, 0x73, + 0x93, 0xE7, 0xB2, 0xB0, 0x78, 0x17, 0xD7, 0x79, + 0xDE, 0xCC, 0x83, 0x7D, 0x5A, 0xF2, 0x0E, 0xA6, + 0xB1, 0x76, 0x61, 0x15, 0x88, 0x8E, 0xD7, 0xA6, + 0x51, 0xBF, 0x9C, 0xD1, 0x0A, 0xFC, 0xDA, 0x65, + 0xA5, 0x65, 0xFE, 0xB2, 0xED, 0x07, 0x74, 0x42, + 0x4C, 0xF5, 0x42, 0x3D, 0xAF, 0x5F, 0x4D, 0x72, + 0x51, 0xE6, 0x3F, 0x68, 0xCC, 0xC5, 0x2D, 0x89, + 0x01, 0xD8, 0x80, 0xB4, 0xFC, 0xEB, 0x3B, 0xBE, + 0x7C, 0xFA, 0x24, 0x27, 0xE1, 0x05, 0x94, 0x67, + 0xAD, 0xB3, 0x47, 0x7D, 0x28, 0x18, 0xC1, 0xC9, + 0xB8, 0xA1, 0x2A, 0x95, 0xBB, 0x5D, 0xC9, 0x42, + 0x4F, 0x64, 0x94, 0x07, 0x5F, 0x65, 0xD3, 0xA5, + 0x65, 0xEE, 0x67, 0x2C, 0x10, 0x65, 0x81, 0x4D, + 0x7F, 0xAF, 0x2E, 0x97, 0x9E, 0x11, 0xA3, 0xF5, + 0x3E, 0xDE, 0xB1, 0x1D, 0x44, 0x72, 0x90, 0x74, + 0xFD, 0x47, 0x82, 0xA6, 0x04, 0x3E, 0x28, 0x3C, + 0x15, 0xDF, 0xC4, 0x7A, 0x7C, 0xF5, 0x5A, 0xC6, + 0xFB, 0xE4, 0xC2, 0xE0, 0x6E, 0x4C, 0x09, 0x2E, + 0xE3, 0xE6, 0x3A, 0xEF, 0xF6, 0x54, 0xDC, 0x92, + 0xBE, 0x8F, 0x24, 0x8E, 0x70, 0x53, 0x90, 0x3D, + 0x06, 0xA5, 0x0A, 0x72, 0xA0, 0x7B, 0x22, 0x14, + 0x80, 0x43, 0xAD, 0xDC, 0x11, 0xFC, 0xFF, 0xCF, + 0x5E, 0xA4, 0x69, 0x1C, 0x09, 0x09, 0xC3, 0x3D, + 0xF5, 0xE7, 0x05, 0x6F, 0x16, 0x33, 0x75, 0xB4, + 0x9B, 0x7B, 0x26, 0xDB, 0xE7, 0x27, 0x56, 0xD3, + 0x91, 0x82, 0x9D, 0xEB, 0x96, 0x3E, 0xE8, 0x40, + 0xAB, 0x5D, 0x6C, 0xB7, 0xA6, 0x36, 0x07, 0xD4, + 0xE7, 0x7C, 0xD4, 0x5C, 0x36, 0xE4, 0xFC, 0x7C, + 0x8A, 0x36, 0x8D, 0x53, 0x43, 0xD4, 0xAC, 0x0B, + 0x1B, 0xBA, 0x32, 0x88, 0xFA, 0xCE, 0xC1, 0xB9, + 0x34, 0x3C, 0xAC, 0xA0, 0xF4, 0xF2, 0x83, 0xA8, + 0xBB, 0x6F, 0x12, 0xC6, 0xB5, 0x3C, 0xDE, 0xA8, + 0x49, 0x66, 0x97, 0xD7, 0x7E, 0x37, 0xF7, 0xCE, + 0x7C, 0xF8, 0xC8, 0xBB, 0x8C, 0xB5, 0x3B, 0x3F, + 0xB9, 0x51, 0x68, 0x00, 0xD7, 0x2E, 0x1C, 0x10, + 0xAF, 0x9F, 0x3C, 0xD2, 0xAC, 0xE5, 0xBE, 0x94, + 0xB9, 0x60, 0xF5, 0xB2, 0x70, 0x24, 0xE8, 0x8A, + 0x2C, 0xD8, 0x95, 0xAF, 0xAA, 0xA9, 0xA5, 0x2B, + 0xCA, 0xE0, 0x58, 0x44, 0x02, 0x3F, 0xF8, 0x21, + 0x0C, 0x29, 0xB7, 0xD5, 0x08, 0x9E, 0x69, 0x81, + 0xD4, 0x6C, 0xC5, 0x0B, 0xF6, 0xEF, 0xAB, 0x01, + 0xEA, 0xDF, 0x36, 0x2C, 0x5C, 0xFB, 0xEB, 0xC8, + 0x4F, 0x71, 0x80, 0xD7, 0x00, 0xC9, 0x32, 0x5D, + 0x02, 0x4F, 0x96, 0x94, 0x71, 0xCD, 0x98, 0xC4, + 0x25, 0x7A, 0x92, 0xF1, 0x9B, 0xA0, 0x34, 0x30, + 0x6C, 0x41, 0x59, 0xD5, 0x01, 0x5D, 0xD6, 0x56, + 0xEA, 0x05, 0xF2, 0xFC, 0xF8, 0x58, 0xFA, 0x12, + 0x9C, 0x5A, 0x5C, 0xD5, 0x3D, 0xC7, 0x5D, 0x1B, + 0x99, 0x2A, 0x6A, 0x4C, 0xF9, 0xEA, 0x9D, 0x70, + 0x53, 0xBC, 0xBE, 0xAD, 0x61, 0xC7, 0x2D, 0x77, + 0xEF, 0x61, 0xC7, 0xBE, 0x9C, 0x73, 0xC1, 0xD5, + 0xD4, 0x5C, 0x5F, 0x21, 0x6A, 0x5C, 0xEE, 0x78, + 0xAA, 0xC6, 0x6C, 0x56, 0xDB, 0x38, 0x5A, 0x94, + 0x12, 0xB8, 0x73, 0x7C, 0xDF, 0x9A, 0x27, 0xCD, + 0xC5, 0xD1, 0xD3, 0xCA, 0x0E, 0x37, 0x0A, 0xC1, + 0x6F, 0xAD, 0xE3, 0x32, 0x94, 0x6C, 0x20, 0xB5, + 0xED, 0xE6, 0x2D, 0x34, 0x39, 0x58, 0xD2, 0x1E, + 0x63, 0x8D, 0xFA, 0xFF, 0xB5, 0xE8, 0x40, 0xC8, + 0x42, 0x38, 0x7A, 0x01, 0x80, 0xFF, 0x52, 0x3F, + 0xE9, 0x89, 0x63, 0xAD, 0x91, 0x5F, 0xCE, 0x0A, + 0x47, 0x87, 0xF9, 0x6D, 0xD7, 0x79, 0xEF, 0xCE, + 0x10, 0x7B, 0x73, 0x43, 0xBE, 0x51, 0xA0, 0xDF, + 0xE5, 0xEC, 0xA9, 0x63, 0xF6, 0x5E, 0x72, 0x36, + 0x22, 0x86, 0xEE, 0x4E, 0x4A, 0x76, 0xFD, 0x86, + 0xBA, 0xE6, 0xD6, 0xC4, 0xD2, 0xE6, 0xFF, 0xB2, + 0x5B, 0x39, 0xF9, 0xC3, 0x29, 0xA8, 0x61, 0x3A, + 0x33, 0x34, 0x89, 0xC9, 0x83, 0xF9, 0xB2, 0x70, + 0x21, 0x54, 0x44, 0x94, 0x70, 0xAD, 0x70, 0x18, + 0x84, 0x38, 0x91, 0xFB, 0xDE, 0x5E, 0x3D, 0xE3, + 0xB2, 0xA7, 0x3C, 0x1D, 0x49, 0xA6, 0x66, 0x7C, + 0x4B, 0xEB, 0xB0, 0xA7, 0x7C, 0xC5, 0xAE, 0x45, + 0x1F, 0xBE, 0x0E, 0x2F, 0x11, 0xDC, 0x92, 0x08, + 0xAA, 0x18, 0x38, 0xFE, 0x61, 0xBE, 0x9D, 0xC3, + 0x3A, 0x1F, 0x2F, 0xB6, 0x6E, 0xB6, 0x54, 0x97, + 0x74, 0x06, 0xBC, 0x12, 0x2D, 0x64, 0x18, 0x14, + 0x25, 0x5A, 0xCB, 0x7B, 0xD7, 0x9D, 0xC3, 0x2C, + 0xC2, 0x0B, 0x19, 0x10, 0xD2, 0x57, 0xF0, 0xDF, + 0xA4, 0x95, 0xA4, 0x5A, 0xA0, 0x2D, 0x0F, 0xA0, + 0xBC, 0xF7, 0x60, 0x7F, 0x38, 0xE1, 0x17, 0x0D, + 0x36, 0x08, 0xF5, 0xF9, 0x75, 0x28, 0x75, 0xAC, + 0xA9, 0x2B, 0x75, 0xC4, 0x41, 0xE0, 0x0D, 0x5C, + 0xBC, 0x5F, 0x49, 0x16, 0x25, 0x38, 0x16, 0xE1, + 0x0C, 0x2C, 0x9C, 0x63, 0xA8, 0x5F, 0x70, 0xF4, + 0x64, 0xC7, 0x10, 0x19, 0x52, 0x19, 0x6E, 0x9B, + 0x5C, 0x09, 0x4F, 0xEE, 0xB6, 0x7C, 0x85, 0xC9, + 0x6E, 0xCB, 0x33, 0x32, 0x42, 0x9D, 0x57, 0x18, + 0xE6, 0x55, 0x94, 0x74, 0x02, 0xEE, 0xEB, 0xAA, + 0xF7, 0xD3, 0x45, 0x7A, 0x49, 0x6F, 0x83, 0x89, + 0x00, 0xE4, 0xAA, 0x20, 0x87, 0x10, 0xAD, 0xC0, + 0x0E, 0xF5, 0x93, 0x57, 0xE5, 0x45, 0x7A, 0xBD, + 0x82, 0x87, 0x50, 0x0F, 0xE1, 0x2C, 0x0C, 0x6D, + 0xEE, 0xC8, 0x94, 0xB8, 0x39, 0xF3, 0x3C, 0xFE, + 0x7E, 0xC1, 0x0F, 0xB4, 0x67, 0xA2, 0xDF, 0xC6, + 0x9D, 0xB5, 0x9D, 0xB8, 0x72, 0x50, 0xBD, 0xB3, + 0xDB, 0xF6, 0x87, 0x5E, 0x26, 0x93, 0xF0, 0xD4, + 0x0D, 0x68, 0xA4, 0x8B, 0xBD, 0x2C, 0x6E, 0xD8, + 0x4F, 0x81, 0x5D, 0x0D, 0xAC, 0x72, 0x65, 0xEC, + 0x4E, 0xF2, 0x4E, 0x5F, 0x67, 0x04, 0xF3, 0x08, + 0x29, 0x4D, 0xB2, 0xE2, 0xD5, 0x9F, 0xD4, 0xB9, + 0x13, 0xB4, 0x33, 0x80, 0x27, 0x84, 0x7E, 0xF4 + }; + static const byte msg_44_draft[] = { + 0x5C, 0x70, 0x7F, 0xBF, 0xF4, 0xFF, 0xE5, 0x9B, + 0x09, 0xAA, 0xF8, 0xDB, 0x21, 0xAD, 0xBE, 0xBA, + 0xC6, 0xB2, 0x65, 0x37, 0x9A, 0x9A, 0x43, 0x3A, + 0xA8, 0x23, 0x2B, 0x13, 0x9B, 0xBD, 0x46, 0x37, + 0x30, 0x60, 0xA7, 0x5B, 0xC4, 0x48, 0x63, 0x5F, + 0x41, 0x35, 0x38, 0x69, 0xF9, 0x6F, 0xB5, 0x65, + 0x26, 0xDB, 0xAE, 0xB7, 0x5C, 0xFE, 0x2C, 0x03, + 0xCB, 0x43, 0x08, 0x58, 0x5E, 0x27, 0xD1, 0x42, + 0x14, 0xF2, 0x4B, 0xD7, 0x13, 0xE4, 0x96, 0x74, + 0x6A, 0xC1, 0x36, 0xC7, 0x9D, 0x0F, 0x7D, 0xB0, + 0x7B, 0x8A, 0x3A, 0x6D, 0x00, 0x5B, 0x29, 0x7B, + 0x37, 0xBA, 0x3F, 0x5B, 0xBD, 0xCE, 0x21, 0x77, + 0xFD, 0xD6, 0x78, 0x77, 0x20, 0x31, 0xF0, 0x60, + 0x49, 0xAE, 0x12, 0x86, 0x7A, 0x64, 0xBD, 0x0B, + 0x9E, 0xC6, 0x26, 0x80, 0x9E, 0xCE, 0x19, 0x8D, + 0x6A, 0x6B, 0x09, 0x03, 0x45, 0xDF, 0x22, 0x7D + }; + static const byte sig_44_draft[] = { + 0x08, 0xF0, 0x10, 0xFA, 0x63, 0x3F, 0x2B, 0xA1, + 0x46, 0x81, 0x34, 0xC4, 0xBC, 0xAB, 0x62, 0x17, + 0x0B, 0x64, 0xEA, 0x00, 0x2D, 0xD6, 0x8A, 0xE5, + 0xC2, 0x45, 0x29, 0xB9, 0xEC, 0x6F, 0x3B, 0xF2, + 0xDC, 0x2F, 0xC7, 0x34, 0x5A, 0x1E, 0xFE, 0x0C, + 0xCA, 0xB9, 0x6A, 0xD8, 0xDA, 0xBA, 0xAA, 0x80, + 0x90, 0xDC, 0x8C, 0x6C, 0x22, 0xFF, 0xC4, 0x90, + 0x9E, 0xE9, 0xA5, 0x45, 0xFC, 0xE8, 0x64, 0x53, + 0x9E, 0xC4, 0x17, 0xE1, 0xB2, 0x1A, 0x31, 0x40, + 0x26, 0x9D, 0x5E, 0x03, 0x6A, 0xC6, 0x09, 0x19, + 0xDD, 0xB3, 0x63, 0xE0, 0x35, 0xCD, 0xB4, 0x2E, + 0x25, 0x38, 0x6E, 0x6C, 0x76, 0xA9, 0x19, 0x75, + 0x68, 0x6E, 0xB7, 0xAB, 0xAD, 0x8F, 0x63, 0x64, + 0x97, 0x4E, 0x56, 0x82, 0x30, 0x45, 0x86, 0x22, + 0x64, 0xDA, 0xD2, 0xAE, 0x54, 0x70, 0x5C, 0xF1, + 0xEB, 0xD1, 0x84, 0x8D, 0xFF, 0x86, 0x15, 0xE6, + 0x20, 0xCE, 0x14, 0x89, 0xEF, 0xFA, 0x2E, 0xF8, + 0x60, 0xCA, 0x53, 0x52, 0xE4, 0xD5, 0xC8, 0x2E, + 0x50, 0xD5, 0x9D, 0x90, 0xA6, 0x12, 0xC7, 0xF1, + 0x70, 0x0D, 0xE2, 0x89, 0x5B, 0x31, 0x6A, 0x21, + 0x79, 0x9C, 0xBE, 0x77, 0x6E, 0xA6, 0xBF, 0x51, + 0x05, 0x2A, 0x83, 0x50, 0x7E, 0x86, 0x14, 0xD1, + 0x50, 0x53, 0x1F, 0x1C, 0x5E, 0x50, 0x24, 0x69, + 0x6C, 0x91, 0x55, 0x35, 0x19, 0x6F, 0xE0, 0xDC, + 0xB5, 0xD6, 0x48, 0x7E, 0x78, 0x61, 0x59, 0x2C, + 0xD0, 0x1B, 0x42, 0x58, 0xAF, 0x7A, 0x39, 0xCA, + 0x02, 0x1C, 0x50, 0xEF, 0xE9, 0xE1, 0xDE, 0x31, + 0x8D, 0x09, 0x51, 0xC9, 0xDB, 0x16, 0xF9, 0xB9, + 0x45, 0x54, 0x81, 0x16, 0xD7, 0x14, 0xD8, 0xBE, + 0x9C, 0xCA, 0x53, 0xFE, 0x8F, 0x24, 0x99, 0x0D, + 0xBA, 0x7F, 0x99, 0x42, 0x11, 0x9B, 0x32, 0xDD, + 0x93, 0x5C, 0xBA, 0x2D, 0xD3, 0xB3, 0xF2, 0x48, + 0x13, 0x9C, 0x80, 0xBB, 0x8D, 0xF4, 0xC7, 0xAA, + 0xEB, 0xC6, 0xFD, 0xB8, 0x35, 0x95, 0x87, 0x2B, + 0x9E, 0xCF, 0x48, 0xF3, 0x2D, 0xFF, 0x70, 0xF4, + 0xCE, 0x35, 0x68, 0x7E, 0x9D, 0xDF, 0xD5, 0x0C, + 0xCD, 0xE3, 0x51, 0xB0, 0x90, 0x86, 0xE5, 0xD1, + 0xF1, 0x3B, 0x72, 0x42, 0x73, 0x07, 0x03, 0xE2, + 0xFB, 0x40, 0x3F, 0xD4, 0xC8, 0x30, 0xB6, 0x86, + 0x49, 0x8A, 0x17, 0xDB, 0x8F, 0x46, 0x6C, 0x3A, + 0xC3, 0x49, 0xCD, 0x59, 0x68, 0x81, 0x66, 0x03, + 0xD7, 0x24, 0xAF, 0x1F, 0x77, 0xC7, 0xFB, 0xF7, + 0x83, 0xCD, 0xA2, 0x6D, 0x35, 0x0C, 0x8B, 0xBC, + 0x29, 0x3A, 0x7F, 0xAC, 0xB9, 0xF9, 0x78, 0x50, + 0x6A, 0x67, 0xFC, 0xDC, 0x6F, 0x01, 0x65, 0x06, + 0x82, 0x81, 0xB0, 0x7D, 0x25, 0x5D, 0x74, 0x0B, + 0x68, 0x5F, 0x51, 0x2C, 0x82, 0xF3, 0x1D, 0x92, + 0xF6, 0xA9, 0xA9, 0x6A, 0x77, 0x57, 0x58, 0xAA, + 0x7C, 0xBE, 0x35, 0xF4, 0x56, 0xDE, 0x42, 0x01, + 0x2D, 0xB8, 0x28, 0x83, 0x7B, 0xA0, 0xA9, 0x7D, + 0xC3, 0x30, 0x13, 0x52, 0xD0, 0xA1, 0xC8, 0xA1, + 0x2C, 0x51, 0x49, 0xAE, 0xA8, 0x04, 0xCB, 0xA8, + 0x66, 0x01, 0x26, 0xDF, 0x2D, 0x1C, 0x21, 0xA2, + 0x4E, 0xBD, 0xA5, 0x48, 0x2A, 0x2D, 0x56, 0x60, + 0x20, 0x98, 0x4D, 0x15, 0x7D, 0x02, 0xB6, 0x3A, + 0xE4, 0x11, 0xAE, 0xF7, 0x3E, 0x5D, 0x56, 0x4F, + 0x6A, 0xA3, 0x0A, 0xEA, 0xCC, 0x35, 0x8A, 0xB7, + 0xC4, 0x8F, 0x25, 0x3E, 0x42, 0x41, 0x2B, 0xA5, + 0x1F, 0xA7, 0x3B, 0x87, 0x22, 0x86, 0x79, 0xD5, + 0xE5, 0x2A, 0xA2, 0xCD, 0x68, 0xCE, 0xB8, 0x18, + 0x6D, 0xEF, 0x1C, 0x36, 0x7F, 0x75, 0x50, 0x36, + 0x1B, 0x58, 0xEB, 0x32, 0xA1, 0xC8, 0xAF, 0x47, + 0xE1, 0x26, 0x73, 0x1F, 0x5D, 0x73, 0x30, 0x13, + 0x2F, 0xC7, 0x8B, 0xA3, 0x03, 0xB4, 0xA8, 0x86, + 0x25, 0x29, 0xD1, 0x75, 0x10, 0xEE, 0x7F, 0x56, + 0xBC, 0x0D, 0x59, 0xB4, 0xAE, 0xC9, 0x44, 0x0A, + 0xF7, 0x0D, 0xBF, 0x17, 0x6A, 0x22, 0x9C, 0x75, + 0x2B, 0x3E, 0x22, 0xB8, 0x2F, 0x4B, 0x68, 0xF1, + 0x07, 0xE3, 0x47, 0x47, 0x21, 0x9C, 0xA3, 0x5B, + 0x31, 0x0A, 0x14, 0xD9, 0x7C, 0xA8, 0xC0, 0xC6, + 0x5C, 0xAD, 0x05, 0xD6, 0x15, 0xD3, 0xEC, 0xEC, + 0x32, 0xC2, 0xFF, 0xF4, 0x96, 0x9C, 0xC8, 0x65, + 0xA0, 0xB2, 0xD6, 0xF4, 0x98, 0xBB, 0xB1, 0x4E, + 0xA5, 0x11, 0x3B, 0x4E, 0xA8, 0xEB, 0x90, 0xAB, + 0xD8, 0x25, 0x10, 0xE3, 0x66, 0xB5, 0xA5, 0x11, + 0x60, 0xA0, 0xCB, 0xDF, 0x77, 0x8A, 0x80, 0x4C, + 0x07, 0x9B, 0x1B, 0x45, 0x95, 0x29, 0x1D, 0x88, + 0x85, 0xAC, 0x32, 0x94, 0x26, 0x87, 0x12, 0x0A, + 0x2F, 0x9E, 0xAE, 0x69, 0x79, 0x25, 0x5A, 0x50, + 0xF4, 0xDB, 0x15, 0x20, 0x9F, 0x7A, 0x7A, 0xF2, + 0xE5, 0x8A, 0x63, 0x6A, 0xDD, 0xBD, 0x06, 0xCB, + 0x42, 0xF0, 0x20, 0xA9, 0x3B, 0x52, 0xD8, 0x68, + 0x37, 0x71, 0x07, 0xB8, 0x5B, 0xFE, 0xA0, 0xEC, + 0xBD, 0x75, 0xFF, 0x9C, 0x89, 0xDF, 0x01, 0xE7, + 0x17, 0x7D, 0xA7, 0xE8, 0x27, 0x9E, 0xA2, 0x41, + 0x66, 0xE6, 0xDB, 0x8B, 0x5A, 0x3F, 0x6C, 0xC9, + 0xE3, 0x4F, 0x0D, 0xD0, 0x92, 0x1E, 0x27, 0x41, + 0xF2, 0xB3, 0x08, 0x32, 0x03, 0x6D, 0x2C, 0x4F, + 0x78, 0xEC, 0x99, 0xB3, 0x94, 0x6C, 0xC1, 0x89, + 0xD9, 0x34, 0x0F, 0xEF, 0x10, 0xF0, 0xDA, 0xCE, + 0x09, 0x69, 0x7A, 0x93, 0xC6, 0xFF, 0x19, 0x4F, + 0xBD, 0xDE, 0xA6, 0x54, 0x8A, 0xE5, 0x81, 0x3F, + 0x96, 0xD3, 0xA0, 0x77, 0x7C, 0xF2, 0x4B, 0xF1, + 0x68, 0xA2, 0x23, 0x3D, 0xD4, 0x16, 0xC1, 0x66, + 0xDA, 0x13, 0x53, 0xE1, 0x9F, 0x9A, 0x36, 0x09, + 0x4D, 0x72, 0x08, 0x09, 0xEB, 0x87, 0x74, 0x9A, + 0xB2, 0x8C, 0x60, 0x7F, 0xFB, 0x70, 0x17, 0x51, + 0xB1, 0xAC, 0x18, 0xDF, 0xCB, 0x43, 0x2A, 0xD3, + 0x89, 0xDA, 0x78, 0xAE, 0xDC, 0xEA, 0xB2, 0x22, + 0xCA, 0x2F, 0xF1, 0xE4, 0xA7, 0xCC, 0xAF, 0xB1, + 0x63, 0x1B, 0x5D, 0xDD, 0xD1, 0x49, 0xB8, 0x90, + 0x2E, 0xC9, 0xC0, 0x83, 0x0D, 0xAB, 0x88, 0x88, + 0x4C, 0x74, 0x72, 0x00, 0x7D, 0xFE, 0xF2, 0x46, + 0x73, 0xFD, 0x99, 0xEC, 0x89, 0x8B, 0x3B, 0x0F, + 0xCE, 0x35, 0x5A, 0xEA, 0x13, 0x4F, 0x67, 0x67, + 0xFD, 0x0D, 0x87, 0xFC, 0xB1, 0x36, 0x48, 0x07, + 0x33, 0x0B, 0xCA, 0xD4, 0xD7, 0xD0, 0xCC, 0xA1, + 0x8F, 0xF0, 0x3F, 0x01, 0x8B, 0x6B, 0x74, 0x44, + 0x2F, 0x1B, 0xE0, 0x65, 0x31, 0x1B, 0x4E, 0xDB, + 0x67, 0x65, 0xA9, 0x34, 0xE8, 0x4D, 0x0C, 0xF3, + 0x29, 0xED, 0x53, 0xAB, 0x8A, 0x98, 0x07, 0x2B, + 0xE0, 0xCD, 0xC0, 0x08, 0x82, 0x4A, 0x72, 0x28, + 0x72, 0xA2, 0xAC, 0xFE, 0xF7, 0xBF, 0x6E, 0x8E, + 0xF8, 0x3E, 0x04, 0x58, 0xA4, 0x36, 0x46, 0x33, + 0xAB, 0xDD, 0x0E, 0xBF, 0x01, 0xD2, 0xEF, 0x19, + 0x5B, 0x78, 0x2B, 0x30, 0x51, 0x25, 0x50, 0xD0, + 0xB5, 0x82, 0xC7, 0x20, 0x0D, 0xA1, 0x2C, 0x38, + 0xAF, 0x44, 0xFC, 0xBD, 0x49, 0xB8, 0x7F, 0x89, + 0xEF, 0xBE, 0x37, 0x5C, 0xCB, 0xA2, 0x11, 0x75, + 0x7D, 0xDA, 0xA8, 0x7B, 0x3A, 0x3C, 0x10, 0x11, + 0x4D, 0x9F, 0x99, 0xAB, 0x4B, 0xA2, 0x20, 0x7A, + 0x5F, 0x96, 0xEF, 0x1C, 0x00, 0xD7, 0x27, 0x17, + 0x77, 0x7C, 0x51, 0x58, 0x4B, 0x13, 0x97, 0x53, + 0x2A, 0xC6, 0x86, 0x4D, 0x3B, 0x8E, 0xBB, 0x4F, + 0xB8, 0xA0, 0x84, 0x87, 0xF6, 0xEF, 0x55, 0x12, + 0x2B, 0xCF, 0x9E, 0x5C, 0xD0, 0x0E, 0xBC, 0x1E, + 0x79, 0x53, 0xE7, 0x8C, 0x4D, 0x8B, 0xCB, 0x20, + 0xF6, 0xEA, 0x72, 0x0A, 0x63, 0x2F, 0x0C, 0xCF, + 0x57, 0x27, 0x26, 0xF4, 0x3A, 0x95, 0xCA, 0xBE, + 0xB5, 0x7C, 0x47, 0x60, 0x10, 0xCD, 0x28, 0x9E, + 0x02, 0x64, 0xC9, 0x8D, 0x82, 0x49, 0xD0, 0xD6, + 0x60, 0xF8, 0xDC, 0xC8, 0x4B, 0x7D, 0xB5, 0xEF, + 0x11, 0x17, 0xC7, 0x94, 0x5F, 0x0D, 0x99, 0xBE, + 0x75, 0x48, 0x49, 0xC6, 0x58, 0x43, 0x64, 0x99, + 0x1A, 0x5A, 0x41, 0xBA, 0xC2, 0x31, 0xB3, 0xE0, + 0x45, 0x1B, 0x81, 0xD2, 0x12, 0xBE, 0x90, 0xDB, + 0xFF, 0xBC, 0xCB, 0x99, 0xA3, 0xF0, 0x74, 0xE8, + 0x2C, 0x48, 0x58, 0xB3, 0x17, 0xA4, 0x9A, 0xD2, + 0x22, 0x46, 0xFB, 0xF5, 0x85, 0x8D, 0x07, 0xDF, + 0xDB, 0x78, 0x07, 0xF4, 0x99, 0xA8, 0x6C, 0xEE, + 0x6E, 0x96, 0x20, 0xB8, 0xC2, 0xA9, 0xFA, 0x8B, + 0x6E, 0xA6, 0x79, 0x6D, 0xF9, 0xC3, 0x0C, 0x77, + 0x74, 0xAE, 0xB0, 0x40, 0xA9, 0xE5, 0xA7, 0x0B, + 0x30, 0x40, 0x4B, 0x4F, 0xB1, 0x0A, 0x0B, 0x7B, + 0xEE, 0x1F, 0x69, 0xFA, 0xD0, 0xF0, 0x2D, 0x5D, + 0x00, 0xB5, 0x4D, 0xEB, 0x32, 0x84, 0xB2, 0xB7, + 0x60, 0xAA, 0x6C, 0xF9, 0x98, 0x18, 0xB3, 0xD9, + 0xC1, 0x54, 0x8D, 0xAC, 0x12, 0xB0, 0x3A, 0x26, + 0xB2, 0x23, 0x2D, 0x9B, 0xF8, 0x20, 0xEE, 0x90, + 0xE0, 0x6D, 0x31, 0xDE, 0xF5, 0xCA, 0xBA, 0x6A, + 0x53, 0x40, 0x29, 0x6C, 0x18, 0x62, 0xA5, 0x8A, + 0xB8, 0x17, 0xA0, 0xAB, 0xCB, 0xDC, 0xE1, 0x3B, + 0xD6, 0xC6, 0x29, 0xA3, 0x1C, 0x5F, 0x8D, 0x6E, + 0x73, 0xF6, 0x98, 0x10, 0x0F, 0x9F, 0x7E, 0xCA, + 0x4C, 0xD8, 0xEB, 0xE4, 0xB8, 0xDF, 0x72, 0x78, + 0x65, 0xAF, 0x4A, 0x20, 0xFE, 0x7C, 0xB4, 0xCA, + 0x07, 0x81, 0xFD, 0xC5, 0xC5, 0xFD, 0x33, 0x4D, + 0xB8, 0x37, 0x37, 0xC4, 0x21, 0x81, 0x66, 0x45, + 0xAE, 0x81, 0x34, 0x13, 0xA6, 0x40, 0x81, 0x39, + 0x55, 0x90, 0xE6, 0xF1, 0x42, 0x56, 0x74, 0xFF, + 0x06, 0x9B, 0x50, 0x1F, 0x0F, 0xDA, 0x6B, 0x31, + 0xC6, 0x4B, 0xC5, 0xC2, 0x14, 0xE7, 0x01, 0x5E, + 0xA9, 0xDA, 0x12, 0x2D, 0x6C, 0xE0, 0x8C, 0xEB, + 0x2D, 0xF6, 0x2C, 0x45, 0xBC, 0x01, 0x73, 0x34, + 0x6D, 0xAB, 0xBC, 0x15, 0x4C, 0x16, 0x03, 0x35, + 0x9D, 0xD4, 0xF0, 0xAC, 0x49, 0x84, 0x4A, 0xEE, + 0x46, 0x47, 0x64, 0x93, 0xF2, 0x49, 0x59, 0x86, + 0x26, 0xFB, 0x24, 0x6B, 0x99, 0xB3, 0x9A, 0xCB, + 0xB4, 0x2B, 0x28, 0x4E, 0x0C, 0x2D, 0x3F, 0x9E, + 0xCE, 0x32, 0x71, 0xC4, 0xD5, 0xE0, 0x6C, 0x48, + 0x25, 0xEA, 0x1A, 0x8F, 0x08, 0x57, 0x23, 0x85, + 0x89, 0xCD, 0xC5, 0x48, 0x37, 0x19, 0x8E, 0xD4, + 0x23, 0x4D, 0xD0, 0x31, 0x73, 0xA8, 0x8E, 0x43, + 0xEE, 0x95, 0x67, 0xF5, 0x7A, 0x93, 0x27, 0xD3, + 0x90, 0x36, 0x30, 0x4C, 0xA1, 0xCD, 0xB5, 0xF8, + 0x65, 0xC5, 0x89, 0x54, 0x57, 0x2C, 0xAE, 0xF8, + 0x75, 0xF1, 0x2E, 0x14, 0x14, 0x14, 0x0D, 0x97, + 0x5B, 0x24, 0x52, 0x46, 0x7A, 0x57, 0x6D, 0x9C, + 0x4C, 0x79, 0xDB, 0x0A, 0xE0, 0x23, 0x69, 0x52, + 0x9B, 0xF8, 0x1B, 0x54, 0x40, 0x18, 0xDF, 0xE0, + 0x1E, 0xF0, 0x61, 0xE4, 0x79, 0x81, 0xF9, 0x98, + 0x9A, 0x8C, 0x48, 0xFF, 0x86, 0x93, 0x0B, 0x68, + 0x96, 0x78, 0x2F, 0xF1, 0x2D, 0xDC, 0x60, 0x1F, + 0x8B, 0x1C, 0x04, 0x43, 0x4E, 0x60, 0x96, 0x5B, + 0x8A, 0xF6, 0x89, 0xCC, 0xC8, 0xB2, 0x9B, 0xBF, + 0x87, 0x16, 0x2E, 0xA8, 0x6F, 0x9B, 0x4B, 0xFD, + 0x74, 0x4E, 0x8F, 0x36, 0x33, 0x23, 0xDE, 0x94, + 0xD2, 0xA1, 0x72, 0x4F, 0xB2, 0xE6, 0x75, 0x3D, + 0x6E, 0x47, 0x9B, 0xDB, 0x58, 0xE5, 0x4A, 0x0C, + 0x09, 0x8F, 0x9C, 0x83, 0x63, 0x98, 0x8B, 0xA4, + 0xF7, 0x3D, 0x01, 0xA6, 0x8B, 0x93, 0x97, 0x48, + 0x84, 0x75, 0x32, 0xC7, 0xD7, 0x03, 0xDF, 0x7E, + 0x94, 0x8C, 0x8A, 0xA6, 0x78, 0x1A, 0xAE, 0xDE, + 0x36, 0x8A, 0xAD, 0x13, 0x7E, 0xF0, 0x16, 0xC2, + 0x3B, 0xAF, 0xF9, 0xD8, 0x66, 0x12, 0x30, 0x72, + 0x76, 0x6D, 0x21, 0x4C, 0xF3, 0xEF, 0x0D, 0x8C, + 0x11, 0xA4, 0x12, 0xBE, 0xF5, 0x7E, 0x8E, 0x6A, + 0x11, 0x13, 0x48, 0x8D, 0xC2, 0x62, 0xCF, 0x45, + 0x7C, 0xE3, 0x91, 0x88, 0x59, 0xFF, 0xB0, 0xF1, + 0xC3, 0xBC, 0x1D, 0x2A, 0x3E, 0x9B, 0x78, 0xF3, + 0xB1, 0x2E, 0xB0, 0x27, 0xD8, 0x16, 0xF8, 0x9B, + 0x2A, 0xAF, 0xF1, 0xAB, 0xB0, 0xF1, 0x8C, 0x7F, + 0x94, 0x31, 0x97, 0x85, 0xDA, 0xF0, 0xF4, 0x27, + 0x51, 0x3E, 0x5A, 0xE1, 0xDD, 0x6D, 0x9E, 0x98, + 0x39, 0xBB, 0xDF, 0xA2, 0xBA, 0x2C, 0x08, 0xAD, + 0x1D, 0x3F, 0x86, 0xF6, 0xC2, 0x1A, 0x8C, 0xAD, + 0xE0, 0xDC, 0xDD, 0x02, 0x47, 0x4C, 0x7E, 0x2D, + 0xDA, 0x1D, 0x70, 0x92, 0x39, 0xAA, 0x4E, 0xBA, + 0x14, 0xC7, 0xEC, 0x26, 0xBD, 0x9D, 0x1F, 0x6D, + 0x91, 0x58, 0x3C, 0xB5, 0xEF, 0x37, 0xB9, 0x66, + 0x4E, 0x04, 0x7C, 0x29, 0xCF, 0xD7, 0x8E, 0x47, + 0x84, 0xF3, 0xD2, 0x21, 0x84, 0xC5, 0xF8, 0xDC, + 0xC9, 0xF2, 0x52, 0xD5, 0x6A, 0xBF, 0xF1, 0xF1, + 0xDE, 0x9E, 0x7A, 0xF1, 0xD5, 0x5A, 0xF6, 0xEF, + 0x94, 0x66, 0xF9, 0x25, 0x44, 0x7F, 0x8D, 0x92, + 0xA2, 0x25, 0x1C, 0x72, 0x92, 0x30, 0x2A, 0xB7, + 0xEF, 0x18, 0xF3, 0x8C, 0xEF, 0x69, 0xA5, 0x5C, + 0x19, 0x3E, 0xC5, 0xBD, 0xEE, 0x2C, 0x2D, 0x71, + 0xDB, 0x89, 0xD4, 0x11, 0xA6, 0x27, 0x80, 0x8F, + 0x5A, 0x39, 0x9A, 0x04, 0x28, 0x4F, 0x9F, 0x00, + 0xBE, 0xF9, 0xF7, 0x9B, 0x46, 0x69, 0xD6, 0xAC, + 0x12, 0xE9, 0xA7, 0xC2, 0xD1, 0xC8, 0xAD, 0x5D, + 0xF7, 0xCB, 0x0C, 0x98, 0x78, 0x2D, 0x04, 0x4D, + 0x2D, 0x41, 0xAB, 0xC6, 0x3F, 0x81, 0x1D, 0xB9, + 0x2C, 0x1F, 0x3F, 0x59, 0x11, 0xF4, 0x80, 0x4F, + 0x0B, 0xCA, 0x9F, 0x81, 0x6E, 0x9C, 0xD1, 0xB4, + 0x74, 0x06, 0x48, 0x0A, 0x87, 0x2C, 0xFD, 0x4D, + 0x85, 0xD4, 0x21, 0x65, 0x7C, 0x96, 0x69, 0x53, + 0x51, 0xC0, 0xC4, 0xB0, 0xEB, 0x20, 0xDB, 0xE0, + 0x41, 0x09, 0xA7, 0x62, 0xB2, 0xF3, 0xC7, 0x6A, + 0x1D, 0x53, 0xA0, 0x39, 0xBA, 0xCF, 0x78, 0x9E, + 0xBF, 0x1D, 0xA5, 0x98, 0x09, 0x8E, 0xA7, 0x1A, + 0xE7, 0x95, 0xFF, 0x10, 0x38, 0xCC, 0x8F, 0x44, + 0xCB, 0xE7, 0xF6, 0xD6, 0x2C, 0xFF, 0xA8, 0x1C, + 0xFF, 0xA3, 0x65, 0xE8, 0x4E, 0xAE, 0xC7, 0xEF, + 0x61, 0xE1, 0x16, 0x4B, 0x8C, 0xA8, 0xC8, 0xFB, + 0xA5, 0x2C, 0xD1, 0x0A, 0x39, 0xAB, 0x4A, 0xF9, + 0xEE, 0x0B, 0x9B, 0xB4, 0x33, 0x5E, 0x25, 0x15, + 0xD0, 0xAA, 0x93, 0xC4, 0x53, 0x42, 0x91, 0xC5, + 0x98, 0x15, 0x34, 0x9A, 0x22, 0x1D, 0x9A, 0xE7, + 0x0E, 0x81, 0xF6, 0x99, 0x55, 0xB3, 0xD6, 0x49, + 0x1B, 0xB8, 0xA8, 0xBE, 0xDF, 0x54, 0xF0, 0x78, + 0xF7, 0x02, 0x97, 0x74, 0x84, 0x67, 0x6B, 0xAE, + 0x2F, 0xEC, 0x6E, 0x59, 0x20, 0x68, 0xD8, 0xE3, + 0x5A, 0x07, 0x48, 0xE1, 0x99, 0x90, 0xEE, 0xCD, + 0x17, 0x2B, 0xB6, 0xD6, 0xAA, 0x1A, 0xF8, 0x97, + 0x4E, 0xE0, 0x67, 0x9E, 0x4C, 0x35, 0xFE, 0x68, + 0x71, 0x54, 0x43, 0x5D, 0x43, 0x59, 0x19, 0xEB, + 0x58, 0x8E, 0x9A, 0xF6, 0xBD, 0x88, 0x71, 0xEE, + 0x89, 0xC6, 0xF2, 0x10, 0x04, 0x33, 0x13, 0x88, + 0xCD, 0x08, 0xB5, 0xE3, 0x5D, 0xA8, 0xBC, 0x43, + 0xB3, 0x84, 0x5F, 0x70, 0x94, 0xD9, 0xAC, 0xAE, + 0x74, 0x70, 0x13, 0x1E, 0x21, 0xFB, 0xD5, 0x7F, + 0xEC, 0x66, 0x2F, 0xA0, 0xB1, 0x1D, 0xE3, 0xF8, + 0xB9, 0x36, 0x48, 0x25, 0x3D, 0xBA, 0x7D, 0x44, + 0x08, 0xC5, 0x71, 0x74, 0xDA, 0xD3, 0x4F, 0x97, + 0x86, 0xF1, 0x16, 0x38, 0xD8, 0xC9, 0xE3, 0x3A, + 0xA7, 0x2E, 0x06, 0x4D, 0x9D, 0xE8, 0xFC, 0x38, + 0x58, 0x2A, 0x8D, 0x2D, 0x07, 0x99, 0xEA, 0xDF, + 0xF3, 0x00, 0x3B, 0xBC, 0x5F, 0x67, 0x1E, 0x4B, + 0x6C, 0xF1, 0x4A, 0x47, 0xB0, 0x71, 0x90, 0x5A, + 0x3B, 0x75, 0x93, 0x75, 0x56, 0x50, 0x4C, 0x70, + 0xF3, 0xC7, 0x95, 0xD5, 0xEA, 0xCB, 0x4C, 0x92, + 0x4F, 0x22, 0x4F, 0xD9, 0x34, 0x46, 0x76, 0xFB, + 0x79, 0xD6, 0xBD, 0x4E, 0x84, 0xEE, 0xE7, 0x78, + 0x7C, 0xB8, 0x92, 0x9F, 0xAD, 0xF2, 0x17, 0x5D, + 0x38, 0xB1, 0x88, 0x2E, 0xE9, 0x65, 0xAC, 0x4C, + 0x24, 0x27, 0x1D, 0x7B, 0xA3, 0x69, 0x96, 0x55, + 0x5C, 0x26, 0x40, 0xAF, 0x04, 0xB1, 0xCE, 0xA8, + 0x5D, 0x1E, 0x1F, 0xE5, 0x5A, 0xC3, 0xAE, 0xF9, + 0x14, 0x03, 0x58, 0x10, 0x1C, 0x8B, 0x1F, 0xDB, + 0x6C, 0x71, 0x68, 0x60, 0x13, 0x32, 0xF1, 0xA9, + 0x69, 0x45, 0x28, 0x69, 0x7C, 0xE3, 0xC9, 0x56, + 0xAF, 0xF3, 0xBD, 0x4B, 0x9E, 0x0A, 0x06, 0x6A, + 0x62, 0x20, 0x40, 0x65, 0xBD, 0xBC, 0xBF, 0xC7, + 0x0A, 0x2A, 0xCF, 0x56, 0x7C, 0x0E, 0x64, 0xBB, + 0x64, 0x71, 0x2D, 0x90, 0xBB, 0x32, 0x00, 0x0A, + 0x4A, 0x45, 0x44, 0x08, 0x75, 0x2C, 0x86, 0x13, + 0x86, 0x52, 0x8D, 0x3D, 0xFC, 0xF3, 0x5E, 0x5B, + 0x3F, 0x7A, 0xAA, 0x98, 0x84, 0xCF, 0x92, 0xF9, + 0x0B, 0x40, 0x8F, 0xC0, 0xA3, 0x71, 0x84, 0xAD, + 0xEE, 0xDF, 0xC4, 0x91, 0x7E, 0x87, 0x7D, 0x06, + 0xCA, 0x65, 0x8C, 0xE4, 0x8E, 0x03, 0xF0, 0x59, + 0x3E, 0xB4, 0x90, 0x4C, 0xEE, 0x88, 0x29, 0xE4, + 0x26, 0x7D, 0xA6, 0x54, 0x82, 0x49, 0xC1, 0x9D, + 0x80, 0xAB, 0x6B, 0xD7, 0xBE, 0x7D, 0x09, 0x80, + 0x5E, 0xB6, 0xD1, 0x1E, 0xD1, 0x1B, 0xE9, 0x8D, + 0xFC, 0x6E, 0x9C, 0x14, 0x0C, 0x15, 0x02, 0x87, + 0xF3, 0x9D, 0x21, 0xF8, 0xCB, 0xC8, 0xB9, 0xBD, + 0xE1, 0x70, 0xEA, 0xE4, 0x86, 0x4C, 0x97, 0xC1, + 0xEE, 0x4C, 0x18, 0x95, 0xEC, 0xD2, 0x4D, 0x35, + 0x9F, 0xC6, 0x56, 0x10, 0x3E, 0xC0, 0xB9, 0x7B, + 0x13, 0x1A, 0x37, 0x3D, 0x40, 0x4C, 0x88, 0x8B, + 0x9A, 0xA5, 0xB2, 0xB8, 0xB9, 0xC3, 0xEC, 0xF1, + 0x14, 0x33, 0x63, 0x67, 0x84, 0x98, 0xC8, 0xF4, + 0x06, 0x0C, 0x0E, 0x0F, 0x10, 0x12, 0x15, 0x16, + 0x45, 0x4E, 0x55, 0x5A, 0x5F, 0x8A, 0x94, 0x97, + 0xA8, 0xAF, 0xB2, 0xCC, 0xD4, 0xDC, 0xE7, 0xF1, + 0xFE, 0xFF, 0x11, 0x24, 0x53, 0x62, 0x94, 0xB7, + 0xB9, 0xD3, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x18, 0x32, 0x3B + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + static const byte pk_65_draft[] = { + 0x6C, 0x84, 0x14, 0x38, 0x08, 0x56, 0xCB, 0x52, + 0xD7, 0x9C, 0x4B, 0x29, 0x13, 0x9F, 0xB1, 0x83, + 0x9B, 0x86, 0x06, 0xF5, 0x94, 0x8B, 0x9D, 0x72, + 0xA9, 0x56, 0xDC, 0xF1, 0x01, 0x16, 0xDA, 0x9E, + 0x2D, 0x79, 0x77, 0x01, 0x86, 0xFC, 0x74, 0xD9, + 0x42, 0xC0, 0xF4, 0xA3, 0xB5, 0x95, 0xFF, 0x6C, + 0x19, 0x80, 0x4B, 0x49, 0x90, 0x1C, 0x6A, 0xD5, + 0xFA, 0xF7, 0x16, 0x01, 0xC2, 0xB6, 0x00, 0x31, + 0x5E, 0x1F, 0x40, 0xC2, 0x05, 0x47, 0x67, 0xB0, + 0x09, 0x25, 0xDF, 0x3A, 0xA4, 0x90, 0xE8, 0xC7, + 0x6F, 0x05, 0xFB, 0xFB, 0x74, 0x91, 0x10, 0x75, + 0xE6, 0x51, 0x8C, 0x5F, 0x1D, 0x91, 0xB8, 0xA0, + 0xE5, 0xB5, 0x98, 0x30, 0xD3, 0xDF, 0x39, 0x94, + 0x76, 0x04, 0x11, 0xEB, 0xB9, 0x11, 0xED, 0x4C, + 0xC2, 0xC1, 0x60, 0xE3, 0x84, 0x9A, 0x93, 0x76, + 0x2D, 0xFC, 0xA7, 0xB9, 0x81, 0x2B, 0xC7, 0xAE, + 0xB2, 0xDD, 0xB2, 0x76, 0x7B, 0xEF, 0x36, 0x50, + 0x56, 0x05, 0xAE, 0x06, 0x92, 0x60, 0xBC, 0xC8, + 0xDC, 0x47, 0x87, 0xC4, 0x28, 0xCB, 0x3C, 0x07, + 0x6E, 0xF2, 0xA6, 0xB9, 0x35, 0x61, 0xD8, 0x94, + 0x3F, 0x45, 0xCA, 0xBE, 0x8F, 0x05, 0x53, 0xFF, + 0x2E, 0xA1, 0xAC, 0x95, 0xC1, 0xCE, 0x21, 0x59, + 0x3A, 0x17, 0x54, 0x59, 0xD7, 0xDF, 0x12, 0xC4, + 0x07, 0x0A, 0xDB, 0x0E, 0xEE, 0x55, 0xB4, 0xAB, + 0xAE, 0x59, 0xBE, 0x69, 0xC3, 0xFF, 0x0D, 0xE5, + 0xA9, 0xB0, 0x27, 0xFC, 0x7D, 0x8E, 0x6E, 0x05, + 0x7B, 0x71, 0x52, 0xEE, 0x6A, 0xB4, 0x80, 0xD1, + 0x05, 0xD3, 0x0B, 0x0F, 0x50, 0x51, 0xB6, 0x0C, + 0x79, 0x01, 0xC5, 0x25, 0xC4, 0x63, 0x5F, 0xE6, + 0x68, 0xCC, 0x00, 0xE9, 0xD3, 0x09, 0x7D, 0xB9, + 0x9D, 0x66, 0x32, 0x37, 0x15, 0xCE, 0x4F, 0x0B, + 0x79, 0xB4, 0x26, 0xB4, 0x54, 0x5E, 0x09, 0xF4, + 0xDE, 0x39, 0x32, 0x3D, 0xD1, 0x4C, 0xCB, 0x0D, + 0x17, 0x10, 0x8C, 0xD4, 0x6D, 0xEC, 0x61, 0x38, + 0xCD, 0xFA, 0x28, 0x72, 0xC1, 0xC4, 0xC8, 0xAE, + 0xAD, 0x5C, 0x8C, 0xE0, 0x41, 0x57, 0xE5, 0x53, + 0xA3, 0x75, 0x58, 0xC2, 0x34, 0x6A, 0x06, 0x19, + 0x4C, 0xB5, 0x0B, 0x49, 0x81, 0xBF, 0x4D, 0x09, + 0x0C, 0xE4, 0xE8, 0x60, 0x12, 0x6A, 0x82, 0x54, + 0xA4, 0xD4, 0xC0, 0x84, 0xC3, 0xE2, 0x02, 0x0B, + 0xC0, 0x75, 0x35, 0x21, 0x04, 0x9B, 0x0F, 0xD8, + 0x89, 0x97, 0xE0, 0x27, 0xAC, 0x51, 0xE7, 0x5C, + 0xF1, 0x35, 0x0C, 0x3F, 0x30, 0x3A, 0x0E, 0xCE, + 0x42, 0x64, 0x87, 0x15, 0x3D, 0xAF, 0x1F, 0xAA, + 0xD6, 0x80, 0x8B, 0x9D, 0x99, 0x07, 0xDA, 0x9F, + 0x35, 0x18, 0x5B, 0xD3, 0xBE, 0x8D, 0x9C, 0xEB, + 0xE9, 0x16, 0xCE, 0xD1, 0xFA, 0x29, 0x28, 0xD8, + 0x85, 0xA9, 0xCB, 0xA8, 0x81, 0x49, 0x70, 0x3F, + 0x5E, 0x47, 0x72, 0xE4, 0x85, 0x23, 0x12, 0x5D, + 0xDD, 0x02, 0x6E, 0x71, 0x4C, 0x49, 0xF4, 0xFB, + 0x4E, 0x54, 0x4B, 0xBF, 0x61, 0x7A, 0x40, 0xB0, + 0x0B, 0x68, 0xDF, 0x8F, 0x15, 0x5F, 0x58, 0x80, + 0xD4, 0x11, 0x87, 0x7E, 0x25, 0xB4, 0x2B, 0x24, + 0x48, 0xB3, 0x6B, 0xEC, 0x2F, 0x1F, 0x8F, 0x9A, + 0x77, 0x0C, 0x54, 0x51, 0x50, 0xA0, 0x27, 0x8E, + 0x9B, 0x72, 0x45, 0x00, 0xAE, 0xAA, 0xEA, 0x47, + 0x1C, 0x11, 0xCF, 0xF0, 0x4E, 0x30, 0xEA, 0xB2, + 0xF4, 0x73, 0xBC, 0x04, 0x8E, 0x32, 0xCD, 0x31, + 0xAE, 0xF2, 0x15, 0x79, 0xB6, 0x99, 0x22, 0x5B, + 0xF9, 0xE1, 0xB6, 0x70, 0x0C, 0x57, 0xE5, 0x09, + 0xFC, 0xA1, 0xF2, 0x36, 0x29, 0x4A, 0x59, 0x74, + 0xDA, 0xA1, 0x5F, 0xBC, 0xAD, 0x62, 0xD4, 0xBD, + 0xDC, 0x45, 0x32, 0xB2, 0x61, 0x41, 0x44, 0xDB, + 0xE2, 0x88, 0x07, 0x36, 0x8C, 0x28, 0x1A, 0x77, + 0x0E, 0xA2, 0x2B, 0x1E, 0x5A, 0x3F, 0xA5, 0xBA, + 0x14, 0x92, 0x6D, 0xC5, 0x5A, 0x54, 0xF8, 0x4A, + 0x2A, 0x77, 0xC5, 0xA7, 0x08, 0x41, 0xF0, 0x7B, + 0xC1, 0xDE, 0xEF, 0x74, 0x03, 0xB2, 0x47, 0xAB, + 0x42, 0xB8, 0x4A, 0xDF, 0x14, 0x1E, 0x03, 0x0C, + 0x98, 0x46, 0x84, 0x24, 0xDA, 0xAE, 0xB9, 0x9D, + 0x25, 0x77, 0xF9, 0x50, 0xC2, 0x37, 0x3C, 0xCA, + 0x1E, 0x2D, 0xC2, 0x76, 0x1B, 0x8E, 0xDD, 0x6D, + 0x08, 0xFF, 0x79, 0xE5, 0x28, 0x88, 0x0F, 0xFB, + 0x51, 0xC3, 0x6E, 0xD4, 0x20, 0xAC, 0x5D, 0x50, + 0xF2, 0x58, 0x2A, 0xA6, 0x64, 0xE5, 0x4E, 0xA5, + 0xF4, 0x18, 0x9E, 0xA0, 0x17, 0x6D, 0xAA, 0x61, + 0x22, 0xF6, 0x23, 0x5A, 0x70, 0xB1, 0x5C, 0xEB, + 0x4D, 0xDD, 0x65, 0xD3, 0xBE, 0x6E, 0xBF, 0x3D, + 0xC4, 0x31, 0x89, 0xEE, 0x0A, 0x2E, 0x31, 0x05, + 0x63, 0x8F, 0x23, 0x87, 0x36, 0x95, 0x28, 0x0F, + 0x1B, 0x74, 0x27, 0x43, 0x52, 0xD6, 0x0A, 0x48, + 0xE5, 0xD3, 0xDD, 0x02, 0xFB, 0x7A, 0x5E, 0xD8, + 0x3F, 0xE2, 0x7A, 0x69, 0x82, 0x51, 0x42, 0x1C, + 0x8E, 0x9C, 0x98, 0x80, 0x61, 0x02, 0x39, 0x6E, + 0x53, 0x73, 0x90, 0xAC, 0xFD, 0x8C, 0x1D, 0x0B, + 0x4F, 0x99, 0xB7, 0x02, 0xA9, 0xEA, 0x65, 0x98, + 0x78, 0x58, 0x3D, 0x92, 0x75, 0x89, 0x41, 0xB3, + 0x0E, 0xCE, 0x50, 0x7C, 0x10, 0x4B, 0x2C, 0xE4, + 0x87, 0x67, 0x9E, 0xCF, 0x68, 0xB4, 0xD8, 0xB9, + 0x80, 0x69, 0x8A, 0xCF, 0x6A, 0xA6, 0xA5, 0x7E, + 0x8E, 0xD6, 0xAF, 0x3F, 0xF1, 0x8D, 0x26, 0x68, + 0x95, 0x04, 0x28, 0xB5, 0x7D, 0x18, 0x2F, 0x73, + 0xBB, 0x49, 0xB9, 0xB0, 0x38, 0xCC, 0xC8, 0x2D, + 0x56, 0x12, 0x78, 0xA3, 0x86, 0xD5, 0x66, 0x45, + 0xEC, 0x3F, 0xAF, 0xFB, 0x41, 0x25, 0xE0, 0xE7, + 0xF3, 0x6B, 0x48, 0xB1, 0x4B, 0x45, 0x25, 0x47, + 0xA0, 0xB4, 0x81, 0xAA, 0x6B, 0x33, 0x42, 0x29, + 0x24, 0x91, 0x53, 0xE4, 0x2E, 0xDF, 0x7E, 0x49, + 0xDD, 0x6E, 0x76, 0x36, 0xBF, 0xC6, 0x15, 0xA2, + 0x3A, 0x40, 0x1E, 0xFD, 0x40, 0x34, 0xC8, 0x1B, + 0x4D, 0xCE, 0xF0, 0x27, 0xD3, 0x44, 0xDD, 0xCC, + 0xE0, 0xA7, 0x16, 0x18, 0xEB, 0x59, 0x10, 0xCE, + 0xC6, 0x22, 0x28, 0x81, 0x93, 0x85, 0x03, 0x3E, + 0x8D, 0x0A, 0xBD, 0x49, 0x3D, 0x98, 0x3E, 0x4F, + 0xC0, 0x87, 0xD7, 0x2B, 0x45, 0x5E, 0x4D, 0xB6, + 0x3A, 0x2F, 0x82, 0xCE, 0xFF, 0x65, 0xC1, 0xE6, + 0x28, 0xEA, 0xE6, 0x30, 0x59, 0x6D, 0xEC, 0x27, + 0xFB, 0x98, 0xB8, 0x4D, 0xBF, 0xDC, 0xDF, 0xAB, + 0x40, 0xE4, 0x72, 0x24, 0x49, 0x14, 0xAF, 0xF1, + 0x79, 0x32, 0x6D, 0x54, 0x2D, 0x40, 0x1A, 0x3C, + 0xBB, 0x86, 0xE5, 0xFF, 0x83, 0x51, 0xEF, 0xE5, + 0x3A, 0x73, 0xC5, 0x1A, 0xBB, 0x63, 0xFF, 0x55, + 0x3E, 0x7D, 0x79, 0x57, 0xEF, 0x89, 0x13, 0x5E, + 0x0F, 0x5B, 0xB1, 0xBD, 0x0C, 0x24, 0xF9, 0xE4, + 0x5E, 0x32, 0x36, 0x41, 0x3C, 0x60, 0xE1, 0x39, + 0x6A, 0x47, 0x56, 0x7C, 0x94, 0x39, 0x51, 0x0F, + 0x00, 0xD4, 0xA4, 0x3C, 0x14, 0x9A, 0x5C, 0xCC, + 0x04, 0xF3, 0xD4, 0x7E, 0x67, 0xA8, 0xE2, 0x94, + 0xA4, 0x61, 0xA5, 0xF6, 0x93, 0xDB, 0x0C, 0xAE, + 0x22, 0xCF, 0xAC, 0x61, 0xE8, 0x53, 0x47, 0x7D, + 0x33, 0x9A, 0x4E, 0x45, 0xF7, 0xB1, 0x7C, 0x3C, + 0x11, 0x6D, 0x56, 0xF3, 0xA0, 0x68, 0xFC, 0x5A, + 0xDF, 0xEF, 0x38, 0xFF, 0x85, 0x33, 0x2B, 0xD5, + 0x15, 0x3C, 0x4D, 0x8F, 0xB8, 0xF1, 0x48, 0xF1, + 0x17, 0x65, 0x9C, 0x2E, 0xA9, 0x4D, 0xB4, 0x2A, + 0xA0, 0xB0, 0xBE, 0xBB, 0x47, 0x5A, 0x11, 0x04, + 0x12, 0xF3, 0xCD, 0x33, 0x49, 0xFC, 0x1A, 0xD0, + 0x41, 0xB7, 0xD5, 0x30, 0x4A, 0x85, 0x93, 0x14, + 0x4E, 0xFA, 0x3A, 0x36, 0x1D, 0x1B, 0x0C, 0x76, + 0x13, 0xB8, 0x2C, 0x08, 0x6E, 0xA7, 0x12, 0x6E, + 0x43, 0xC6, 0x16, 0xCE, 0xE8, 0xF1, 0x44, 0x4E, + 0x99, 0x56, 0xE8, 0x7F, 0x5C, 0xAB, 0x95, 0xC7, + 0xC7, 0xFB, 0x17, 0x58, 0xEC, 0x7D, 0x97, 0x01, + 0x9E, 0x5B, 0xA9, 0x35, 0x43, 0xEF, 0x3B, 0xAC, + 0x1A, 0x17, 0x42, 0x99, 0xCA, 0x48, 0xBF, 0x78, + 0x59, 0xDB, 0xFB, 0xDF, 0xF2, 0x43, 0xB1, 0x14, + 0xF6, 0xBF, 0x42, 0x3C, 0xE9, 0x8B, 0x4D, 0x4D, + 0x09, 0x1D, 0xA4, 0x4F, 0x32, 0x74, 0xD5, 0x73, + 0xFD, 0xC9, 0x04, 0xBD, 0x88, 0x5E, 0x35, 0xC9, + 0x15, 0x2A, 0x65, 0x35, 0x48, 0x88, 0xF1, 0x1E, + 0xD4, 0xF3, 0xD6, 0x3F, 0x26, 0xA7, 0xBE, 0x2F, + 0x57, 0x26, 0xEA, 0xDA, 0xF4, 0x85, 0x86, 0x59, + 0x2B, 0xBD, 0xF6, 0xCE, 0xE2, 0x46, 0x76, 0x9E, + 0x0E, 0xDA, 0x2A, 0x80, 0x77, 0x1F, 0xED, 0x34, + 0x7D, 0x67, 0xAF, 0xEE, 0xC6, 0x8B, 0x89, 0x46, + 0x3F, 0xA0, 0x49, 0x6D, 0xBC, 0x15, 0xC8, 0x9E, + 0x8D, 0x56, 0x99, 0x83, 0xD1, 0xD6, 0x74, 0x73, + 0x3F, 0x2B, 0xF9, 0xDF, 0x4A, 0x98, 0x0E, 0xA8, + 0xC5, 0xE3, 0xAF, 0x15, 0x56, 0x0A, 0x0E, 0x28, + 0xD6, 0x72, 0xB5, 0x80, 0xAB, 0x65, 0x52, 0xED, + 0x76, 0xAA, 0xCB, 0x5F, 0x80, 0x26, 0x0B, 0x97, + 0x03, 0x76, 0x9D, 0x33, 0xF4, 0x13, 0x8A, 0xBC, + 0x10, 0xBF, 0x5B, 0x05, 0x82, 0xDC, 0xC6, 0x2D, + 0xBE, 0x58, 0xC8, 0x90, 0xF5, 0x1B, 0x41, 0x00, + 0x12, 0x77, 0x34, 0xFB, 0x7D, 0xB7, 0x44, 0x7A, + 0x72, 0x0A, 0xAE, 0x00, 0x9D, 0x00, 0xBE, 0x8C, + 0x61, 0x07, 0x92, 0xC6, 0x4F, 0x13, 0x1F, 0x2D, + 0x72, 0x11, 0x5C, 0x7E, 0x05, 0x8E, 0x48, 0xB9, + 0xDE, 0x64, 0xF5, 0x5B, 0x4D, 0x61, 0x0C, 0x36, + 0xD1, 0x12, 0x71, 0x6A, 0x31, 0xA3, 0xDF, 0xE2, + 0x66, 0x99, 0xE9, 0xC2, 0xAB, 0xA0, 0x56, 0x58, + 0xCE, 0xF1, 0xB2, 0xB0, 0x86, 0x7C, 0xF8, 0xD5, + 0x23, 0x3D, 0xB7, 0x4F, 0xA8, 0xDC, 0x3A, 0xD1, + 0x45, 0xF5, 0xD2, 0x85, 0x74, 0x36, 0x0A, 0x85, + 0xE3, 0xB0, 0xB1, 0x0A, 0xC0, 0xA6, 0x46, 0x7A, + 0x7B, 0x05, 0x98, 0x46, 0x28, 0xEC, 0xA1, 0x04, + 0x63, 0xF3, 0x48, 0xA3, 0x11, 0x1E, 0x00, 0x57, + 0x8D, 0x3C, 0xE5, 0x48, 0x0F, 0x53, 0x75, 0xA1, + 0xEE, 0x23, 0xEE, 0x82, 0x08, 0x7B, 0xAC, 0x41, + 0x23, 0x3A, 0x14, 0xAA, 0xA7, 0x24, 0x73, 0x4B, + 0x18, 0x74, 0xA4, 0xAC, 0xE1, 0x13, 0x37, 0x06, + 0x25, 0x8F, 0x5F, 0xEA, 0x3A, 0x0C, 0x16, 0x09, + 0xE3, 0x0C, 0x7F, 0xD2, 0x10, 0xDA, 0x0C, 0x4F, + 0xDE, 0x91, 0x62, 0xDF, 0x66, 0xFB, 0xAF, 0x79, + 0x2F, 0xA2, 0xAE, 0xAA, 0x51, 0x2F, 0x0F, 0xF7, + 0x83, 0x7B, 0x9C, 0xC0, 0x2E, 0xE9, 0xBD, 0x95, + 0x53, 0x9F, 0x00, 0x1B, 0xBD, 0x60, 0xDD, 0x8B, + 0x42, 0xD6, 0x16, 0xB2, 0xCA, 0x95, 0xF3, 0x83, + 0x5F, 0x5E, 0x47, 0xD4, 0x3B, 0x14, 0x34, 0xC4, + 0x56, 0x3F, 0xD8, 0x1C, 0x15, 0xBE, 0xFA, 0x20, + 0x2C, 0xF3, 0xD9, 0x54, 0x08, 0x73, 0xF6, 0x84, + 0xAF, 0xE1, 0x9A, 0xB5, 0xC0, 0x1F, 0xA9, 0x2E, + 0x95, 0xA8, 0xCD, 0x6F, 0x36, 0x07, 0x30, 0x85, + 0x6E, 0x59, 0xC9, 0xC6, 0xAB, 0x77, 0x0D, 0x65, + 0x75, 0x96, 0x2A, 0xF7, 0x58, 0x78, 0x57, 0x2A, + 0x2A, 0x26, 0x41, 0x3D, 0x01, 0xAB, 0x31, 0x8C, + 0x10, 0x0D, 0xFC, 0x34, 0xDC, 0x1D, 0xEF, 0xA5, + 0x92, 0x7C, 0x4B, 0x45, 0x99, 0x25, 0xD7, 0x3E, + 0x1E, 0xB9, 0x14, 0x70, 0xE3, 0x7A, 0x58, 0x45, + 0x5C, 0x22, 0xA9, 0x61, 0xFD, 0x53, 0xF7, 0xD9, + 0x90, 0x26, 0xFF, 0x88, 0x4B, 0xF4, 0xA2, 0x57, + 0x9F, 0x70, 0x63, 0x35, 0xEF, 0xB6, 0xFB, 0x22, + 0x50, 0xD5, 0x2A, 0xE5, 0x61, 0x89, 0x8B, 0xA1, + 0x60, 0x6E, 0x51, 0xE9, 0x6D, 0x37, 0xC9, 0xED, + 0x3E, 0xC6, 0xCF, 0xCB, 0x33, 0xBF, 0xBE, 0x9C, + 0x31, 0x43, 0xFD, 0x3B, 0x6B, 0x33, 0x4D, 0x5F, + 0x61, 0x92, 0x2B, 0x36, 0x9A, 0xFB, 0xB3, 0x1C, + 0x3E, 0x6E, 0x9B, 0x5F, 0x3A, 0xEB, 0xF9, 0x5C, + 0xB7, 0x08, 0x34, 0x6F, 0xEC, 0xF7, 0x15, 0x9C, + 0xAD, 0x94, 0xA9, 0x3D, 0x8C, 0xD4, 0xB8, 0xC4, + 0x89, 0x41, 0x92, 0xDF, 0xE5, 0x3E, 0xA4, 0x36, + 0xFB, 0xF3, 0xAF, 0x4E, 0x86, 0x4E, 0x8C, 0x39, + 0x91, 0xEA, 0x02, 0x0A, 0x81, 0x1F, 0x0A, 0xF5, + 0x0B, 0x42, 0x57, 0x43, 0x6A, 0x3F, 0xF5, 0x22, + 0xBE, 0x73, 0x67, 0x39, 0x1D, 0x0F, 0x95, 0x0B, + 0xA6, 0x45, 0x2F, 0xBF, 0xD8, 0xFD, 0x87, 0x28, + 0xF4, 0x0B, 0xD2, 0xFC, 0xB8, 0x94, 0x52, 0x99, + 0x85, 0xB4, 0x32, 0xDF, 0xEF, 0x62, 0x30, 0xEB, + 0x4D, 0xEE, 0x73, 0x7A, 0x8D, 0x10, 0xA3, 0xBC, + 0xDF, 0xB7, 0x63, 0xE0, 0x86, 0x9B, 0x22, 0x5C, + 0x1A, 0x8D, 0x0E, 0x1F, 0xBF, 0x2D, 0x16, 0x1C, + 0x2C, 0x65, 0xD6, 0xDF, 0xB9, 0x58, 0xE9, 0x82, + 0xD1, 0x17, 0x77, 0xAC, 0xBE, 0xAD, 0x8D, 0xFB, + 0x6B, 0x1F, 0x5E, 0xB2, 0x1E, 0xA9, 0x42, 0xF7, + 0xC4, 0x0D, 0xC2, 0x0D, 0x2E, 0x4E, 0xB3, 0xE7, + 0x29, 0xB4, 0xE2, 0x9F, 0x75, 0x01, 0xDA, 0x34, + 0x23, 0x45, 0x61, 0xF6, 0x28, 0x88, 0x12, 0xD6, + 0x12, 0xD4, 0x1D, 0xFA, 0x83, 0xC5, 0xB8, 0xD9, + 0x0F, 0xF3, 0x8B, 0xA5, 0x48, 0x20, 0x1B, 0x57, + 0x5B, 0x52, 0x93, 0xAD, 0x78, 0x12, 0x0D, 0x91, + 0xCE, 0xC0, 0x59, 0xCA, 0xE2, 0xE7, 0x6A, 0x9A, + 0xB4, 0x3E, 0xF1, 0x28, 0x1E, 0x2B, 0xEF, 0x3E, + 0x34, 0x8D, 0x28, 0xF2, 0x19, 0x47, 0xC8, 0x88, + 0x48, 0x96, 0x04, 0x59, 0x48, 0x97, 0x75, 0x17, + 0x6F, 0x8E, 0x40, 0xEE, 0x06, 0x42, 0x79, 0x53, + 0x68, 0x7F, 0xB6, 0x3E, 0x47, 0x0F, 0x7D, 0x59, + 0xFB, 0x60, 0xDF, 0x56, 0x9F, 0x8A, 0x11, 0xE2, + 0x8E, 0x09, 0x37, 0x16, 0x2C, 0x46, 0xAF, 0xC7, + 0xD2, 0x21, 0x0A, 0x88, 0x5F, 0xFA, 0x21, 0xB3, + 0xDB, 0xF5, 0x35, 0x4B, 0x29, 0x41, 0xF4, 0xED, + 0x5D, 0x50, 0x79, 0x08, 0x90, 0x84, 0x0C, 0xC3, + 0xB9, 0x73, 0xD2, 0xC3, 0xD0, 0x26, 0x02, 0xB2, + 0x9B, 0xAC, 0xCB, 0x6C, 0xE1, 0x7C, 0xED, 0xB9, + 0x7B, 0x08, 0x5A, 0x2A, 0xB3, 0x10, 0x57, 0x2B, + 0xA7, 0x37, 0x1D, 0x1F, 0x81, 0x20, 0xFF, 0xE3, + 0x7D, 0x0B, 0x0F, 0xCA, 0x35, 0xAF, 0xC5, 0xB5, + 0x62, 0xAA, 0x84, 0x99, 0x71, 0x5A, 0x29, 0x9C, + 0xE0, 0x59, 0xCC, 0xE3, 0xB0, 0xD1, 0x1C, 0xEF, + 0x0D, 0x92, 0x38, 0x96, 0x1A, 0xD4, 0xBE, 0x11, + 0xE9, 0xA6, 0xD1, 0xA4, 0x69, 0x21, 0x77, 0xC8, + 0xB0, 0xC5, 0x3F, 0x11, 0xA8, 0xED, 0x26, 0x50, + 0x21, 0x2E, 0x7A, 0x2F, 0x80, 0xEB, 0xFF, 0x6D, + 0xCF, 0xE4, 0x67, 0x21, 0x03, 0x65, 0x84, 0x34, + 0xD0, 0x32, 0x7A, 0xDD, 0xCD, 0x66, 0xBC, 0xB6 + }; + static const byte msg_65_draft[] = { + 0xDB, 0x84, 0x94, 0xBA, 0x19, 0xC4, 0x11, 0x8F, + 0xB1, 0x5D, 0x0A, 0xCF, 0x42, 0x54, 0xFD, 0x37, + 0x48, 0x3F, 0xCF, 0x47, 0x48, 0xFD, 0x18, 0x44, + 0xF7, 0x17, 0xCE, 0x6F, 0x69, 0x58, 0x9E, 0x61, + 0x77, 0x2C, 0xFE, 0xFA, 0x7F, 0x97, 0x58, 0x65, + 0x34, 0x09, 0xD4, 0xEE, 0x5A, 0x26, 0x4B, 0x83, + 0x4E, 0x60, 0xD6, 0xBB, 0x96, 0x49, 0x9E, 0xBE, + 0xB2, 0xB0, 0x6B, 0x0B, 0xA8, 0x74, 0xBF, 0x31, + 0xE6, 0x41, 0x39, 0x4C, 0xFA, 0xA6, 0xA2, 0xD3, + 0x0D, 0xDB, 0x8F, 0x04, 0x58, 0x76, 0x20, 0x8D, + 0x2F, 0x51, 0xDE, 0x15, 0xE2, 0x05, 0xE8, 0xC9, + 0x1B, 0x87, 0xEC, 0xEB, 0x05, 0xFF, 0x31, 0x83, + 0x27, 0x1B, 0x26, 0x49, 0x66, 0x5D, 0xD3, 0xCC, + 0x49, 0xBF, 0xDB, 0x99, 0x8D, 0x53, 0x9D, 0xA8, + 0x09, 0x30, 0x55, 0x16, 0xBB, 0xBE, 0x9C, 0x90, + 0x60, 0x21, 0x19, 0x1C, 0x52, 0x23, 0xE5, 0x25, + 0xA8, 0xFC, 0x36, 0x16, 0xA1, 0x76, 0x5E, 0xC3, + 0xF9, 0xC5, 0xDB, 0x53, 0xCC, 0x33, 0x7E, 0x03, + 0x9F, 0x18, 0x6A, 0xCF, 0xEA, 0x91, 0x14, 0x8E, + 0xE2, 0xA7, 0x9C, 0xCA, 0x36, 0x89, 0xED, 0xB6, + 0x2A, 0xAF, 0x28, 0xB5, 0xD7, 0x52, 0xFD, 0xE2, + 0x65, 0xEE, 0x52, 0x80, 0xB5, 0x19, 0x72, 0x6C, + 0x1C, 0xA9, 0x80, 0x32, 0x95, 0xC6, 0x74, 0xB7, + 0xEF, 0xAF, 0xA4, 0xD6, 0x1B, 0x30, 0x6A, 0x79, + 0xE3, 0xF6, 0xE7, 0xA8, 0x87, 0xC2, 0xFB, 0x53, + 0x5B, 0x3B, 0x0F, 0xB3, 0xD9, 0xEB, 0xC8, 0x76, + 0x03, 0xEA, 0xFE, 0xF1, 0x70, 0xC1, 0xF1, 0xD2, + 0x8E, 0x99, 0xBB + }; + static const byte sig_65_draft[] = { + 0xF7, 0x78, 0x9A, 0x45, 0xA3, 0x58, 0x73, 0x30, + 0xE7, 0xFC, 0xF7, 0x06, 0x95, 0xF7, 0xF6, 0x96, + 0x88, 0xA2, 0xB8, 0xD0, 0xCE, 0x54, 0xF0, 0x90, + 0x21, 0x4F, 0x10, 0x9F, 0x56, 0x48, 0x4F, 0x98, + 0xC3, 0xAD, 0x1A, 0x53, 0xA5, 0x44, 0x1C, 0x2C, + 0xA7, 0x2A, 0x3B, 0x31, 0x91, 0xBC, 0x04, 0x6F, + 0x46, 0x37, 0x30, 0x45, 0xB9, 0xE5, 0x40, 0xC7, + 0x3D, 0xFE, 0x91, 0xB6, 0x1F, 0x05, 0x88, 0xD6, + 0x13, 0x59, 0x3F, 0xCE, 0x1B, 0x00, 0xEE, 0xF1, + 0xB2, 0x27, 0x03, 0x4C, 0x6F, 0xD3, 0xB1, 0x8B, + 0x3F, 0x22, 0x11, 0x10, 0xFB, 0x34, 0x5A, 0xA7, + 0x86, 0x31, 0xB8, 0xB5, 0x9F, 0xBD, 0xFD, 0xCC, + 0xDA, 0xE6, 0xA2, 0x4D, 0x25, 0x9D, 0x34, 0xAA, + 0xBA, 0xD2, 0x18, 0xB3, 0xAE, 0x4E, 0x77, 0x18, + 0x66, 0x53, 0xB8, 0x56, 0x3A, 0xA6, 0x12, 0x0A, + 0x0A, 0x53, 0x1A, 0x4E, 0x91, 0x37, 0x30, 0xDC, + 0x91, 0x4F, 0xE5, 0xE0, 0x08, 0xBE, 0xCE, 0x68, + 0x69, 0xB0, 0x2B, 0x07, 0xFD, 0xC1, 0x62, 0x14, + 0x54, 0x0D, 0x31, 0x6C, 0x43, 0xFA, 0x0C, 0x21, + 0x1B, 0x41, 0xAC, 0x7E, 0x52, 0x65, 0x67, 0x29, + 0xC7, 0x73, 0xE4, 0xC4, 0xB8, 0x8E, 0xD3, 0x11, + 0x88, 0x6D, 0xD4, 0xD2, 0x75, 0x41, 0x7D, 0x70, + 0x19, 0x66, 0x44, 0xEE, 0xD1, 0x5F, 0xA3, 0x15, + 0x06, 0x60, 0x03, 0xE3, 0x09, 0xF8, 0x32, 0xAF, + 0x91, 0x26, 0x2C, 0x94, 0x90, 0x11, 0xFC, 0xB0, + 0xAD, 0x2C, 0xCE, 0x65, 0xDD, 0x9E, 0xFF, 0x56, + 0x7E, 0xE2, 0x9C, 0xC4, 0x0A, 0x6F, 0xE0, 0x66, + 0x4E, 0x7D, 0x9F, 0x23, 0x65, 0x68, 0xFC, 0x94, + 0x29, 0x5D, 0xBB, 0x34, 0x28, 0x82, 0x33, 0xE8, + 0xC5, 0x11, 0xD2, 0x88, 0x15, 0xEC, 0x72, 0x10, + 0x32, 0x29, 0x6E, 0x1E, 0xDE, 0xCA, 0x7F, 0x72, + 0x6A, 0x6E, 0xB0, 0xF7, 0x6C, 0xC5, 0x82, 0x80, + 0x11, 0xC0, 0xE4, 0x01, 0x3C, 0xC7, 0xEE, 0x43, + 0x29, 0xB8, 0x1E, 0xCC, 0x0D, 0x52, 0xED, 0x1E, + 0x49, 0x1D, 0xD6, 0xD5, 0x5C, 0x52, 0x65, 0x66, + 0x5E, 0xD8, 0xAD, 0x21, 0x9B, 0x89, 0x4F, 0x31, + 0xC6, 0x8C, 0x61, 0x9A, 0xFC, 0xDB, 0x73, 0x58, + 0xE5, 0x55, 0x4C, 0x49, 0x5B, 0x8B, 0x6E, 0x33, + 0x25, 0x68, 0x8F, 0xB8, 0xC1, 0xA2, 0x53, 0x31, + 0xD5, 0x7B, 0xD3, 0x48, 0xA2, 0x7D, 0x39, 0x09, + 0x29, 0xBC, 0x46, 0xA1, 0x49, 0x6A, 0xB3, 0x5B, + 0x46, 0xBA, 0x61, 0xB6, 0xB9, 0xD2, 0x3C, 0xD0, + 0x63, 0x15, 0xFB, 0x72, 0xC2, 0x47, 0x76, 0x01, + 0x61, 0x30, 0xAD, 0xB1, 0xCF, 0x2D, 0xC7, 0x29, + 0x59, 0xEA, 0x9C, 0xAD, 0x96, 0xAF, 0x5D, 0xA9, + 0x96, 0x12, 0x6C, 0xDD, 0x85, 0xB1, 0x34, 0xCC, + 0x92, 0x7A, 0x51, 0xFD, 0x23, 0xF8, 0x47, 0x91, + 0xA3, 0xFC, 0xDA, 0x07, 0x7E, 0x15, 0x99, 0x17, + 0x48, 0xA0, 0x39, 0x4F, 0x33, 0x4E, 0xB8, 0xBC, + 0x48, 0xA9, 0x9A, 0xB9, 0xDF, 0xBB, 0x0F, 0x2A, + 0xAD, 0x6F, 0xBE, 0x48, 0x49, 0x61, 0xD3, 0xA4, + 0xE8, 0xF8, 0xB2, 0x1A, 0x6A, 0xC0, 0x92, 0xB2, + 0x26, 0xD6, 0xE1, 0x19, 0xFA, 0xD4, 0x4D, 0x8E, + 0x57, 0x6F, 0xE9, 0x6C, 0x6C, 0xDB, 0x68, 0x40, + 0xEA, 0x61, 0x4B, 0xAF, 0xC7, 0x07, 0x86, 0xC5, + 0x19, 0xE1, 0xD5, 0xDC, 0x0F, 0x98, 0x44, 0x43, + 0xC8, 0xB1, 0xE5, 0x4F, 0x8E, 0xE1, 0x76, 0xD9, + 0x8B, 0x2C, 0x70, 0x27, 0xF5, 0x7D, 0x7E, 0x3D, + 0xE9, 0xB2, 0xA0, 0xA3, 0x69, 0x11, 0xB8, 0xE4, + 0x71, 0x21, 0xDE, 0x0C, 0x07, 0xEB, 0xBA, 0x5D, + 0x7B, 0x59, 0x4E, 0xF2, 0x44, 0xC6, 0x83, 0x27, + 0xEC, 0x6C, 0x6D, 0x1D, 0xD5, 0x01, 0xF4, 0x83, + 0xFE, 0x9B, 0x95, 0x70, 0x59, 0x7E, 0x70, 0xDF, + 0x41, 0x3E, 0x7A, 0xF0, 0x38, 0x47, 0xF4, 0x09, + 0xED, 0x61, 0xE2, 0x84, 0x6E, 0x6C, 0x64, 0x1E, + 0x6A, 0x7F, 0xFA, 0x79, 0xDE, 0x6B, 0xFA, 0x37, + 0x3A, 0x06, 0x44, 0xB0, 0x0B, 0xF4, 0x1A, 0x03, + 0x49, 0x92, 0xA7, 0x94, 0xDA, 0x17, 0xC8, 0x88, + 0x85, 0x23, 0x90, 0x32, 0xC8, 0x51, 0x76, 0x4E, + 0x3E, 0x4D, 0xBD, 0xE7, 0xF1, 0x2A, 0x16, 0xC5, + 0xA2, 0x63, 0xE9, 0x64, 0xC1, 0xE7, 0xFD, 0xD3, + 0xCC, 0xE5, 0x76, 0xDD, 0x6D, 0x56, 0xB1, 0x81, + 0x82, 0x84, 0x8B, 0x75, 0x63, 0x64, 0x5D, 0x4E, + 0x42, 0xFF, 0x22, 0x74, 0x2A, 0x99, 0x67, 0x85, + 0x16, 0x9D, 0x7F, 0x50, 0x3B, 0x48, 0xA7, 0x15, + 0x8B, 0x3C, 0xBD, 0x29, 0x93, 0x5E, 0xD3, 0x20, + 0x49, 0xBE, 0xA1, 0xAD, 0x95, 0x3E, 0xF7, 0x07, + 0x32, 0x7B, 0x77, 0x8B, 0xFD, 0xDD, 0xFC, 0x60, + 0x51, 0x1D, 0xA1, 0x13, 0xA3, 0x4F, 0x65, 0x57, + 0x12, 0xE4, 0xE5, 0x9D, 0x6C, 0xCE, 0x40, 0x4E, + 0x94, 0xAB, 0xA6, 0x1E, 0x81, 0x35, 0x38, 0x8F, + 0xC2, 0x1C, 0x8E, 0x41, 0x34, 0x4F, 0x32, 0x4B, + 0x01, 0xAC, 0x8C, 0x06, 0x9F, 0x92, 0x57, 0x5D, + 0x34, 0xF8, 0x8B, 0xCA, 0x22, 0xCB, 0x30, 0x7E, + 0x37, 0x07, 0x00, 0x63, 0x32, 0x02, 0x56, 0xB8, + 0xBA, 0xD6, 0xEB, 0x7A, 0x81, 0xAF, 0xE9, 0xA2, + 0x54, 0x01, 0x6E, 0x1C, 0x8A, 0x12, 0x50, 0x89, + 0xAA, 0xA3, 0xED, 0xE8, 0x4E, 0x5B, 0x6C, 0x2E, + 0xCF, 0xAE, 0xFA, 0xA5, 0x2B, 0x9F, 0x57, 0x09, + 0x60, 0x2C, 0x06, 0xAE, 0xA4, 0xA0, 0x38, 0x4E, + 0x9B, 0x09, 0xE5, 0xB8, 0x81, 0x64, 0xB2, 0x74, + 0xEA, 0x32, 0x65, 0xFB, 0x51, 0x52, 0x39, 0x7D, + 0xFF, 0x5A, 0x3A, 0x08, 0x61, 0xE2, 0xBC, 0x12, + 0xD2, 0x10, 0x92, 0x89, 0x72, 0x97, 0x47, 0xE8, + 0x3F, 0xDF, 0x24, 0x3A, 0x1D, 0x17, 0xB9, 0x83, + 0x48, 0x37, 0x98, 0x45, 0xA9, 0xE9, 0x55, 0xE2, + 0xD6, 0xF9, 0x38, 0xDA, 0xA5, 0x91, 0x8E, 0x2A, + 0x14, 0xF9, 0x7B, 0xA2, 0xBE, 0x50, 0x1C, 0xCC, + 0xAF, 0xD6, 0x81, 0x91, 0x0F, 0x4A, 0x4F, 0x06, + 0x71, 0x5C, 0xE8, 0x40, 0x96, 0xF3, 0x7A, 0x91, + 0xDC, 0xCA, 0x2A, 0x8A, 0x4B, 0xE8, 0xDA, 0x79, + 0x21, 0xDB, 0xF8, 0xD3, 0xF4, 0xEF, 0xB9, 0x8C, + 0x6B, 0x4F, 0x94, 0x0E, 0xCE, 0xF8, 0x32, 0xB5, + 0x49, 0xD0, 0x68, 0x94, 0x7C, 0x3D, 0xFB, 0x58, + 0x09, 0xCB, 0x7B, 0x06, 0x0A, 0x3A, 0x0E, 0xF3, + 0xB2, 0x1C, 0x01, 0x64, 0x50, 0x1D, 0xDE, 0xA7, + 0xC9, 0xE5, 0xE7, 0x89, 0x7C, 0x6B, 0x1C, 0x46, + 0x34, 0x8B, 0x2C, 0x3E, 0x80, 0x5F, 0x6F, 0x22, + 0x87, 0xBA, 0x15, 0x8C, 0xF9, 0x25, 0xA7, 0xBA, + 0x7F, 0x08, 0x25, 0x49, 0x89, 0xC8, 0x7D, 0x24, + 0x97, 0x9A, 0xD9, 0x86, 0xAA, 0x97, 0xC5, 0x1B, + 0x01, 0xF4, 0x5D, 0x4A, 0x1F, 0x24, 0x75, 0x29, + 0x91, 0xF0, 0x42, 0x05, 0xEB, 0x55, 0x1F, 0xD0, + 0x2D, 0x41, 0x5F, 0x2D, 0xD1, 0xEF, 0xF1, 0x42, + 0xB0, 0xD7, 0x04, 0x16, 0xC6, 0xD8, 0x15, 0xEB, + 0x91, 0x73, 0x2B, 0x26, 0x8F, 0xB2, 0x0D, 0x08, + 0x67, 0x44, 0x2D, 0x71, 0xDE, 0xC0, 0x57, 0xB2, + 0x86, 0xCD, 0x93, 0x81, 0x1F, 0xF3, 0xF6, 0x46, + 0xEB, 0xD5, 0x65, 0xD5, 0x1D, 0x09, 0xA4, 0x2D, + 0x3A, 0xBA, 0xAC, 0x0F, 0x34, 0xCC, 0x81, 0x7B, + 0x18, 0x93, 0x8E, 0xCC, 0xBB, 0x1F, 0xEF, 0x05, + 0xBD, 0x3C, 0x2B, 0x49, 0x4F, 0xA5, 0x29, 0xED, + 0x4C, 0x63, 0x4C, 0x93, 0x25, 0xA4, 0x81, 0x73, + 0xF2, 0x0F, 0xFA, 0xC3, 0x2D, 0xC1, 0x01, 0xE6, + 0xEE, 0x03, 0xB2, 0xFC, 0xBE, 0xC2, 0x46, 0x8D, + 0xBC, 0x8F, 0x76, 0x75, 0x8C, 0x32, 0x15, 0x47, + 0x4F, 0x7E, 0xF2, 0x40, 0x65, 0xF7, 0x90, 0x60, + 0xAC, 0xA3, 0xC8, 0xD5, 0xD7, 0x4A, 0xF7, 0x0F, + 0x48, 0x30, 0x1D, 0xDB, 0x30, 0xC0, 0x5D, 0xB3, + 0xEF, 0xA7, 0x26, 0xCF, 0x88, 0x55, 0x59, 0x01, + 0x84, 0x12, 0x82, 0xAA, 0x08, 0xF6, 0x66, 0xA6, + 0x53, 0x51, 0xA6, 0xA2, 0x4E, 0xED, 0x6B, 0xE2, + 0x11, 0x77, 0x31, 0x07, 0xE1, 0x85, 0xE1, 0xB4, + 0x88, 0xA2, 0xE4, 0x91, 0xB6, 0xC1, 0x41, 0x52, + 0x84, 0x62, 0xA8, 0x64, 0x94, 0xB5, 0x4F, 0xDC, + 0xCE, 0xCC, 0xB6, 0xAA, 0x21, 0x25, 0x36, 0x86, + 0x69, 0x3A, 0xE7, 0x98, 0xC9, 0xCE, 0x9E, 0x0B, + 0xDD, 0xC6, 0xAE, 0x53, 0xD9, 0xB7, 0x06, 0xDC, + 0x4F, 0x4D, 0x81, 0xB9, 0xC7, 0x3C, 0x46, 0x1E, + 0xCD, 0x70, 0x35, 0xC5, 0x17, 0x2E, 0xFA, 0xE5, + 0x60, 0x2C, 0xAF, 0x88, 0xC6, 0x4E, 0x79, 0xE5, + 0x32, 0x40, 0x30, 0x55, 0x5D, 0xE2, 0x11, 0xF8, + 0x9F, 0xD4, 0x24, 0xC3, 0x38, 0xC3, 0x88, 0x3C, + 0x83, 0xCA, 0x94, 0x05, 0xC2, 0xB5, 0xD1, 0x44, + 0x5F, 0x7C, 0x98, 0xC4, 0x3E, 0xD3, 0xD2, 0xBE, + 0xCB, 0xE2, 0x5F, 0x5F, 0x3F, 0x54, 0x4C, 0xCC, + 0x5B, 0x5A, 0xEA, 0xE4, 0x7D, 0xDF, 0x3F, 0xB5, + 0x64, 0x9F, 0xF5, 0xD6, 0x1E, 0xAA, 0x02, 0xED, + 0xEB, 0xC7, 0x5C, 0xE4, 0x78, 0xBA, 0x00, 0x42, + 0x6C, 0xAF, 0x47, 0x4F, 0xA7, 0x9E, 0x5B, 0x08, + 0x9E, 0xB1, 0xA8, 0x82, 0xF1, 0x53, 0x54, 0x59, + 0x26, 0x95, 0x95, 0x2B, 0xA0, 0xA8, 0xEE, 0x91, + 0xE6, 0x49, 0xE3, 0xF2, 0xC3, 0x82, 0x26, 0x4D, + 0xAA, 0x30, 0xF6, 0xA6, 0xD2, 0x17, 0xF6, 0x12, + 0x9C, 0x19, 0x39, 0xB6, 0xDC, 0xAC, 0xCD, 0xA5, + 0xB6, 0x37, 0x32, 0x6E, 0x8A, 0x83, 0x61, 0xC3, + 0xB5, 0x6F, 0xCF, 0xFC, 0x48, 0x50, 0x36, 0x86, + 0x58, 0x22, 0xB9, 0xBB, 0x87, 0xB4, 0x35, 0x10, + 0xBC, 0xDD, 0x55, 0xBC, 0x35, 0x0D, 0xE7, 0xB2, + 0xAE, 0x90, 0xA2, 0x1E, 0x9E, 0x19, 0x97, 0x8E, + 0xDA, 0x10, 0xDF, 0x66, 0x76, 0x14, 0xA4, 0x4F, + 0xE2, 0xA8, 0x4D, 0x16, 0xBE, 0x04, 0x3E, 0xA8, + 0x77, 0x36, 0x33, 0xEA, 0x6B, 0xAD, 0xF6, 0x57, + 0x10, 0x05, 0x2F, 0x34, 0x1F, 0x65, 0xCB, 0xE9, + 0x28, 0xD3, 0x96, 0x2A, 0x5A, 0x2F, 0xE6, 0x4E, + 0x46, 0xD6, 0xBF, 0xB8, 0xFD, 0x0D, 0x99, 0x78, + 0xF0, 0x42, 0x3C, 0xBD, 0x19, 0x5F, 0x72, 0xF3, + 0xCB, 0x19, 0xD7, 0xEF, 0xD9, 0xEB, 0xE3, 0x3C, + 0xD2, 0xF5, 0x70, 0x9A, 0x57, 0x80, 0x7D, 0xF9, + 0x44, 0xEC, 0xE5, 0x68, 0xAA, 0xCA, 0x43, 0x36, + 0x42, 0x20, 0x83, 0xB0, 0x69, 0x7B, 0x6A, 0xA0, + 0x05, 0x86, 0xE4, 0xBF, 0x7D, 0xD6, 0x73, 0xA3, + 0xD5, 0x96, 0xB8, 0x61, 0x8A, 0xC3, 0xB4, 0x06, + 0x17, 0x50, 0xC6, 0xBE, 0x97, 0xCB, 0x53, 0x75, + 0x3D, 0x02, 0x39, 0x55, 0x56, 0x07, 0x5A, 0x26, + 0xF1, 0x40, 0xB9, 0x3F, 0x57, 0x7D, 0xAD, 0x50, + 0x5E, 0x1C, 0xF2, 0xB5, 0x51, 0xA0, 0x4C, 0x98, + 0xC7, 0xF0, 0x90, 0x18, 0x31, 0xB3, 0xCA, 0x61, + 0xD7, 0x5D, 0xA7, 0x93, 0xAC, 0x72, 0xA4, 0x4C, + 0x7A, 0x07, 0xF7, 0xDB, 0xBA, 0xD6, 0x0A, 0x55, + 0xF4, 0x9C, 0xBD, 0x79, 0xDE, 0xE4, 0x73, 0x9F, + 0xFD, 0x36, 0x77, 0x8E, 0xBD, 0x08, 0xEB, 0xDB, + 0x79, 0xEC, 0x07, 0xA1, 0x62, 0x39, 0xC5, 0xB9, + 0x21, 0x59, 0x9F, 0xEB, 0xFE, 0xA4, 0x6D, 0xDF, + 0x96, 0x6A, 0xA4, 0xA0, 0x15, 0x12, 0xE6, 0x10, + 0x94, 0x3F, 0x5D, 0xC5, 0x4B, 0x4C, 0x76, 0xB7, + 0x64, 0xB3, 0x80, 0xBF, 0x2F, 0x84, 0xED, 0xE3, + 0x21, 0x24, 0x91, 0x2F, 0x54, 0xF7, 0xB6, 0xE2, + 0x07, 0xB7, 0x38, 0x1F, 0x67, 0x0F, 0x7A, 0xA0, + 0xF3, 0xC3, 0xED, 0x10, 0x15, 0x74, 0x03, 0x84, + 0xDD, 0x61, 0xA9, 0x76, 0x5E, 0xE4, 0x69, 0x6E, + 0xAC, 0xF8, 0x2E, 0xA4, 0x10, 0x69, 0x18, 0x05, + 0xCB, 0x68, 0x89, 0x03, 0x53, 0x5D, 0x70, 0x46, + 0x10, 0x0D, 0xCC, 0x2B, 0xA7, 0xD8, 0x30, 0x2A, + 0xCB, 0x04, 0x30, 0xD5, 0x06, 0xCC, 0xC1, 0xC0, + 0xDD, 0xEA, 0x71, 0x11, 0xA7, 0x6F, 0x45, 0xB4, + 0x54, 0xE2, 0x5C, 0xDD, 0xFB, 0x63, 0x9B, 0x3D, + 0x66, 0x4C, 0x36, 0xD8, 0x84, 0x35, 0x13, 0xA3, + 0xFC, 0xAF, 0x9E, 0x60, 0x57, 0xE9, 0xBC, 0x06, + 0x82, 0x37, 0xFE, 0x24, 0x19, 0xA2, 0xD2, 0xD9, + 0x0B, 0x4A, 0x1F, 0xC2, 0xA7, 0x1A, 0x14, 0x6D, + 0x2B, 0xD0, 0x43, 0x64, 0xC7, 0x9B, 0x8E, 0xBA, + 0x8E, 0x3E, 0x88, 0xCE, 0x11, 0xE9, 0x16, 0xE4, + 0xA7, 0x52, 0x84, 0x21, 0x32, 0x8C, 0xF5, 0x4F, + 0xAA, 0xB2, 0xB1, 0x9F, 0x44, 0x46, 0x87, 0x81, + 0xF8, 0xAB, 0x84, 0xB7, 0xDD, 0x97, 0x2F, 0xF5, + 0x61, 0x50, 0x71, 0x43, 0x0A, 0x43, 0x74, 0xDA, + 0xFC, 0xAE, 0x1E, 0x60, 0x44, 0xAA, 0x98, 0xE9, + 0x85, 0x94, 0x1B, 0xA6, 0xB9, 0xDB, 0x8C, 0x02, + 0xF5, 0x89, 0x60, 0x3E, 0xEB, 0x8B, 0xE9, 0x0A, + 0x70, 0xEF, 0xC0, 0x88, 0xD7, 0x95, 0xE6, 0xDA, + 0x1F, 0x1F, 0x2E, 0x6E, 0xCE, 0xDD, 0x03, 0x1D, + 0x81, 0x99, 0xE6, 0x59, 0x12, 0xD4, 0x34, 0xD0, + 0x9B, 0xFB, 0xE5, 0x94, 0x40, 0x6D, 0xC1, 0x15, + 0x0E, 0x99, 0x35, 0x8C, 0xEA, 0x7F, 0xAD, 0x2E, + 0x7C, 0x44, 0xC3, 0x8B, 0x6E, 0x0C, 0xEE, 0xAB, + 0x9B, 0xDE, 0x0D, 0xB9, 0x7B, 0xCF, 0x5A, 0xC9, + 0x94, 0x10, 0xC9, 0x47, 0x0E, 0x26, 0x6B, 0x8B, + 0xE4, 0x5F, 0x66, 0x90, 0x83, 0x1F, 0x41, 0x45, + 0xE2, 0x63, 0x79, 0xDB, 0x80, 0x7C, 0x26, 0xDD, + 0xF9, 0x1E, 0x30, 0x9D, 0x4F, 0x4A, 0x3E, 0x7E, + 0xCA, 0xB7, 0x36, 0x2F, 0x15, 0xD2, 0x0E, 0xA4, + 0x33, 0xB7, 0xE7, 0x0A, 0x7D, 0xDE, 0x74, 0x16, + 0xCE, 0xA8, 0x71, 0x49, 0x8B, 0x2C, 0xE3, 0xF5, + 0x8D, 0x29, 0xD8, 0x62, 0x8C, 0x53, 0x18, 0x40, + 0xF0, 0x22, 0xDD, 0x3B, 0xD2, 0xF3, 0x80, 0x9B, + 0x11, 0x68, 0xD3, 0x8E, 0x63, 0xC7, 0xF6, 0x93, + 0x08, 0xA3, 0x1A, 0x2D, 0x4D, 0x5E, 0xEB, 0x97, + 0x42, 0x39, 0xB3, 0x4A, 0x62, 0xBC, 0x85, 0xE4, + 0xEC, 0xF9, 0x0C, 0x33, 0x6A, 0x0C, 0x37, 0xBD, + 0x9E, 0x0E, 0xF4, 0x26, 0x6B, 0x83, 0x5A, 0xC8, + 0x90, 0x6A, 0x83, 0xCF, 0x0B, 0x35, 0x13, 0x8A, + 0x65, 0xE5, 0xD9, 0xA6, 0x1F, 0xCC, 0x9B, 0x2D, + 0x5A, 0x33, 0x7B, 0x8A, 0xBE, 0xF8, 0x8A, 0x7F, + 0xB3, 0xC0, 0x94, 0x5D, 0x7C, 0xAF, 0x35, 0x61, + 0x1A, 0xE0, 0xE4, 0x46, 0x93, 0xA5, 0xBC, 0xE0, + 0xA6, 0xE2, 0xFE, 0xCA, 0xE9, 0xBD, 0xF4, 0xE3, + 0x56, 0xD6, 0x53, 0x6B, 0x58, 0x1A, 0x18, 0xF0, + 0x3A, 0x59, 0x16, 0x4E, 0xD5, 0x44, 0x7C, 0x7E, + 0xC8, 0xBD, 0x99, 0x7B, 0xE9, 0x53, 0xDE, 0xD9, + 0x32, 0x53, 0x5B, 0x5F, 0x43, 0x8A, 0x04, 0x31, + 0x9F, 0x5E, 0x0D, 0x8B, 0x0F, 0xEB, 0xC8, 0xDE, + 0x81, 0x46, 0x65, 0x8E, 0x52, 0xB9, 0x75, 0x9C, + 0x73, 0x93, 0x5B, 0x12, 0x0D, 0xC9, 0xB8, 0x54, + 0xF3, 0xC8, 0xF9, 0x4E, 0xC9, 0x33, 0x90, 0x57, + 0xD7, 0xD7, 0xCD, 0x91, 0xF7, 0xE0, 0xB9, 0x8D, + 0x84, 0xEC, 0x7B, 0x2F, 0x92, 0x32, 0x8D, 0x73, + 0x60, 0x18, 0xB0, 0x31, 0x65, 0xA8, 0x74, 0x5F, + 0x8E, 0x77, 0xEB, 0x80, 0x29, 0xF9, 0x78, 0x26, + 0x70, 0xCB, 0xD8, 0x6B, 0x43, 0x16, 0xC7, 0xBE, + 0x4A, 0x88, 0x03, 0x38, 0xBA, 0xCF, 0xB0, 0x15, + 0x69, 0x9B, 0xF3, 0x0D, 0x3A, 0x4B, 0x05, 0x32, + 0x54, 0x35, 0xBA, 0x5F, 0xA3, 0xB9, 0xD2, 0xB2, + 0xFE, 0x0B, 0x51, 0x9C, 0x2C, 0xB2, 0x46, 0xE5, + 0x3D, 0x1A, 0x34, 0x3D, 0x66, 0x1A, 0x66, 0x14, + 0x3C, 0x6F, 0x46, 0x8C, 0x55, 0x38, 0x64, 0x5C, + 0xC2, 0x6D, 0x4E, 0x2A, 0x87, 0x03, 0xEC, 0x9B, + 0x10, 0xFC, 0x89, 0xBE, 0x6F, 0x85, 0x99, 0x97, + 0x70, 0x8F, 0x31, 0x19, 0x4F, 0x0D, 0xFE, 0xE9, + 0x29, 0x98, 0xB2, 0x5E, 0x93, 0xB9, 0x70, 0x70, + 0xDE, 0x14, 0x40, 0x9D, 0x5B, 0xA4, 0x3D, 0xF8, + 0x8D, 0x15, 0xC2, 0xFB, 0xA9, 0x7B, 0xDD, 0xE6, + 0x18, 0xCC, 0x3F, 0xC0, 0x42, 0xF7, 0x74, 0x81, + 0x84, 0xBA, 0x9E, 0xC9, 0xCB, 0xA1, 0xB2, 0x00, + 0x68, 0x81, 0xD0, 0x51, 0x42, 0x64, 0x19, 0x8F, + 0xB6, 0x91, 0xC5, 0xC0, 0x38, 0xE0, 0x49, 0x50, + 0xCF, 0x69, 0x09, 0x93, 0x77, 0xFE, 0x66, 0xBA, + 0x64, 0xE2, 0x19, 0x52, 0xA4, 0x45, 0x81, 0x71, + 0x96, 0x64, 0xF5, 0xD9, 0x23, 0x97, 0xD2, 0x2A, + 0xA7, 0x03, 0x2B, 0xF5, 0x89, 0xAF, 0x8A, 0xCA, + 0x48, 0xDF, 0x6D, 0x14, 0xEB, 0x43, 0xCE, 0xF0, + 0xA9, 0xC8, 0xA8, 0xF9, 0xAD, 0x32, 0x95, 0x25, + 0xEF, 0x0A, 0xAA, 0x4F, 0x9E, 0x09, 0xC3, 0x51, + 0x3C, 0xF0, 0x29, 0xF3, 0xDE, 0xFC, 0xBB, 0x41, + 0x14, 0xFA, 0x0F, 0x66, 0x8D, 0xB4, 0x72, 0x2F, + 0xCC, 0xD9, 0xC2, 0x07, 0xB6, 0x6F, 0x10, 0x9E, + 0xD9, 0x5B, 0x45, 0x4B, 0xB6, 0x19, 0x5D, 0x59, + 0xC4, 0xA6, 0x78, 0xBA, 0x6F, 0x5A, 0x9B, 0x23, + 0x41, 0x21, 0xAD, 0x05, 0x16, 0xA1, 0xD4, 0x12, + 0x3D, 0x38, 0x26, 0xD9, 0x2A, 0x61, 0xB3, 0x5D, + 0xEB, 0x29, 0x5B, 0xAA, 0x2F, 0xE1, 0xB5, 0xEE, + 0x25, 0x02, 0x1D, 0xAE, 0xF8, 0x57, 0xB5, 0xDF, + 0x19, 0x2E, 0x17, 0x5E, 0x3A, 0x2A, 0x0D, 0x3F, + 0x08, 0x2F, 0x21, 0x1C, 0xB5, 0xBD, 0xC2, 0x36, + 0x27, 0x4F, 0x86, 0xC5, 0xDC, 0x74, 0xC3, 0x9B, + 0xE9, 0x7C, 0xCF, 0x5F, 0x57, 0x94, 0xEB, 0x64, + 0xEC, 0x64, 0x55, 0x45, 0x21, 0x0F, 0xC6, 0x67, + 0xD1, 0xE0, 0x74, 0x0E, 0x66, 0xCB, 0xED, 0xC2, + 0x06, 0x48, 0xCA, 0x1F, 0xA7, 0x34, 0x14, 0x59, + 0x6B, 0xA0, 0x89, 0x17, 0xA1, 0x9A, 0x46, 0x3A, + 0xD3, 0x02, 0x7C, 0x81, 0x83, 0x6B, 0x8F, 0x4F, + 0x02, 0xB9, 0x9F, 0xC5, 0x08, 0x3F, 0x06, 0xF3, + 0x4B, 0xD2, 0x30, 0x9C, 0x23, 0x42, 0xAD, 0x88, + 0xA8, 0x4F, 0xA9, 0x6E, 0x20, 0x7C, 0x01, 0x08, + 0xF6, 0x82, 0x54, 0x14, 0x94, 0x4F, 0x26, 0x4E, + 0xD6, 0xC4, 0x66, 0x7C, 0x78, 0x8D, 0x61, 0xA6, + 0xBC, 0x2C, 0x45, 0x6A, 0xF6, 0x6C, 0x2F, 0x76, + 0x9E, 0x16, 0x90, 0x17, 0x06, 0x91, 0x2C, 0xC9, + 0x0D, 0x4B, 0x6C, 0x90, 0xDC, 0xA1, 0x6C, 0xAC, + 0x8F, 0xFE, 0xD8, 0x39, 0x70, 0x20, 0xE2, 0x97, + 0x5E, 0x24, 0xFF, 0x4C, 0x80, 0x7C, 0x8A, 0xB7, + 0x31, 0xC8, 0x1D, 0x36, 0xCA, 0x84, 0xC9, 0x12, + 0x1A, 0x85, 0x13, 0xE0, 0xC9, 0xD0, 0xF4, 0x1B, + 0xC6, 0x8F, 0x88, 0xEA, 0xCA, 0xA3, 0x55, 0x99, + 0xFA, 0xE3, 0xBB, 0xA6, 0xFC, 0xC6, 0x52, 0x8D, + 0x47, 0xE4, 0x0C, 0x07, 0x64, 0xCF, 0x9C, 0x83, + 0x83, 0xB3, 0xA4, 0x45, 0x15, 0xE6, 0x1D, 0x92, + 0xCD, 0xAE, 0xC9, 0xCB, 0x90, 0x82, 0xB5, 0xA0, + 0xC0, 0x37, 0x94, 0x60, 0xD9, 0x17, 0x9A, 0x7D, + 0x9D, 0xF2, 0x9E, 0x0B, 0x4B, 0x6A, 0x41, 0x18, + 0x28, 0x52, 0x15, 0xE8, 0x7B, 0x6F, 0x11, 0x8E, + 0x97, 0x31, 0xE4, 0x66, 0xFB, 0x3F, 0xEB, 0xD1, + 0x95, 0xE1, 0x44, 0xFD, 0x20, 0x37, 0xD1, 0x16, + 0x62, 0x75, 0x79, 0xAC, 0x55, 0xFE, 0xD5, 0xE3, + 0x25, 0x85, 0xEC, 0x66, 0x38, 0xA0, 0xDF, 0xBE, + 0x6E, 0xD6, 0xC5, 0x87, 0x6C, 0xF8, 0x11, 0x4C, + 0x90, 0x2A, 0xEF, 0xA3, 0x63, 0xF4, 0xC9, 0xB7, + 0x2E, 0x7D, 0x5C, 0x85, 0x2D, 0xCC, 0x1A, 0xF2, + 0xB8, 0x85, 0x2A, 0x9D, 0x0F, 0x99, 0x59, 0x38, + 0x86, 0x50, 0x84, 0xCE, 0x52, 0x13, 0xB3, 0x08, + 0xA9, 0xCB, 0x37, 0xF6, 0x81, 0x96, 0x0D, 0x84, + 0xEF, 0xE1, 0xDF, 0x51, 0x34, 0xA5, 0x91, 0x5A, + 0xE5, 0x87, 0x8B, 0x10, 0xDA, 0x0F, 0xD4, 0xD9, + 0xAC, 0x2A, 0xEF, 0x0C, 0x7E, 0x01, 0xC2, 0xE9, + 0xE7, 0xC0, 0x17, 0xE7, 0xBA, 0x74, 0x0C, 0xEE, + 0x1A, 0x89, 0x94, 0x59, 0xBB, 0x75, 0x03, 0x3E, + 0xEA, 0xF3, 0x19, 0x0D, 0x67, 0x79, 0xED, 0x9E, + 0xDD, 0x84, 0x6A, 0x74, 0xE3, 0x21, 0x52, 0x8C, + 0x03, 0x08, 0x4A, 0x5D, 0x30, 0x87, 0x48, 0x39, + 0x71, 0x8A, 0x53, 0x54, 0x9B, 0x2E, 0xC6, 0xB2, + 0xB7, 0x30, 0xAA, 0x93, 0x5C, 0xA6, 0xE1, 0xC4, + 0xFD, 0x8B, 0xE0, 0x35, 0x7D, 0x93, 0xF6, 0x21, + 0x74, 0xEE, 0xED, 0xF8, 0xDA, 0xB7, 0x75, 0x5B, + 0x46, 0x65, 0x7E, 0x59, 0xD7, 0xAA, 0x00, 0xB9, + 0xF2, 0xF8, 0x5E, 0x4C, 0x0F, 0x77, 0xFA, 0x11, + 0xA5, 0xD6, 0x9A, 0x23, 0xB1, 0xEF, 0x3A, 0x09, + 0xF2, 0x19, 0xD8, 0x3B, 0x1F, 0x39, 0x1F, 0x84, + 0x13, 0x18, 0xEE, 0xF3, 0x5A, 0x32, 0x63, 0x67, + 0xBF, 0xA2, 0xB1, 0x5F, 0xD7, 0x14, 0x03, 0x20, + 0x92, 0xB9, 0xD0, 0x2B, 0xF6, 0x13, 0xAF, 0xF7, + 0x69, 0x6F, 0xAD, 0xF1, 0xDE, 0x2C, 0x81, 0x70, + 0x77, 0xCB, 0x7C, 0x99, 0x67, 0x76, 0xD6, 0x9E, + 0xC2, 0x41, 0xA2, 0x42, 0x54, 0xDA, 0x2D, 0x13, + 0x98, 0x76, 0x91, 0xEA, 0xC7, 0xEB, 0xA8, 0xCD, + 0x8D, 0xCF, 0xB3, 0x94, 0x7B, 0x1D, 0x99, 0xED, + 0xF9, 0x62, 0xD2, 0x15, 0xB3, 0x18, 0xBB, 0x5F, + 0x9A, 0xA0, 0x4D, 0x1C, 0x82, 0x62, 0x6A, 0x41, + 0x73, 0xD0, 0x2D, 0x41, 0x0C, 0x58, 0x6B, 0xCA, + 0x4E, 0x51, 0xCA, 0x4F, 0x3E, 0x15, 0x1B, 0x54, + 0xF1, 0x7A, 0x6B, 0xC9, 0x67, 0x76, 0x09, 0xBB, + 0xAF, 0x6C, 0x30, 0x38, 0xA6, 0x7C, 0xAD, 0xA6, + 0x6B, 0x4F, 0xDF, 0xB5, 0x10, 0x29, 0xE0, 0x78, + 0x07, 0xD7, 0x05, 0x96, 0x9D, 0x96, 0xC9, 0xAB, + 0xFB, 0x71, 0x62, 0xE4, 0x58, 0x10, 0xA1, 0xDC, + 0x4B, 0x56, 0xDA, 0x14, 0x77, 0xED, 0x90, 0x0A, + 0x89, 0xCC, 0xAC, 0x29, 0x8E, 0x17, 0x88, 0x42, + 0x69, 0xC3, 0x9E, 0x8D, 0x7A, 0xB9, 0x66, 0xF3, + 0x3D, 0xDA, 0xDB, 0xE5, 0x6A, 0x38, 0x4C, 0xA2, + 0x0A, 0x7B, 0x18, 0x99, 0xEC, 0x18, 0xE2, 0xAE, + 0x54, 0x70, 0x00, 0xB9, 0x04, 0xE3, 0x4E, 0x46, + 0x80, 0x1D, 0x85, 0x74, 0xDB, 0x00, 0x84, 0x17, + 0xBC, 0xFD, 0xD1, 0xA7, 0x4D, 0xC0, 0x18, 0xE5, + 0x07, 0xB7, 0x6B, 0x0F, 0xA0, 0x86, 0x26, 0x23, + 0x5B, 0x1C, 0xE2, 0x4B, 0xCF, 0xC3, 0x20, 0xFA, + 0xE3, 0x55, 0x1C, 0x1C, 0x92, 0x9B, 0x94, 0xC7, + 0xC4, 0x96, 0x53, 0x41, 0x82, 0x9D, 0x8A, 0x13, + 0x47, 0xD6, 0xA7, 0x38, 0x58, 0x03, 0xB0, 0x8B, + 0xCD, 0xA8, 0x4A, 0x27, 0xEA, 0x5E, 0x49, 0xCA, + 0x1E, 0x60, 0x06, 0xEA, 0x23, 0x2A, 0x53, 0xEE, + 0x41, 0x7E, 0xC8, 0x81, 0xD3, 0x32, 0x8A, 0x15, + 0x63, 0x82, 0xA6, 0xB2, 0x93, 0x89, 0x4D, 0xDF, + 0x9B, 0x36, 0x9C, 0xDE, 0x6B, 0x2F, 0xF5, 0x9C, + 0xB6, 0xA5, 0x64, 0xE2, 0x1C, 0x92, 0x79, 0xEC, + 0xA0, 0x31, 0x1F, 0x5D, 0x80, 0xCE, 0x39, 0xB9, + 0x8B, 0xF9, 0x0D, 0xB3, 0x27, 0xF7, 0x4D, 0x3F, + 0x76, 0x2D, 0x11, 0x7D, 0xF5, 0xF9, 0x13, 0x20, + 0x84, 0xFF, 0xB5, 0x55, 0xA5, 0xD1, 0x47, 0x22, + 0x1A, 0xF8, 0x63, 0xAB, 0xF7, 0x87, 0x15, 0xB7, + 0x21, 0x94, 0x52, 0x9A, 0x0E, 0x33, 0x4D, 0x4A, + 0x19, 0x1D, 0x42, 0xA9, 0x9B, 0xEA, 0x52, 0xAD, + 0xA2, 0xC7, 0xCC, 0x4A, 0x97, 0x74, 0xD5, 0xCB, + 0x28, 0xD4, 0xED, 0x82, 0xB6, 0x1F, 0x94, 0xE8, + 0x9F, 0x60, 0xF0, 0xC8, 0xEA, 0x52, 0xDC, 0x07, + 0x9D, 0x46, 0x58, 0xBF, 0x8C, 0x85, 0x6D, 0x61, + 0x52, 0xD9, 0x22, 0x51, 0x94, 0x8B, 0x3B, 0xA0, + 0x14, 0xD8, 0xBA, 0xF3, 0xDC, 0xD3, 0x6B, 0xC7, + 0x1F, 0x8E, 0x5B, 0x2C, 0xE6, 0xF5, 0x35, 0xB7, + 0xB9, 0xAE, 0x13, 0xDA, 0x4A, 0x1E, 0xAF, 0xFC, + 0x25, 0x3B, 0xE4, 0x3A, 0x9F, 0x60, 0x8E, 0xAC, + 0xE7, 0x33, 0xCF, 0xCE, 0x52, 0xEA, 0x5C, 0xDA, + 0x83, 0x59, 0xDB, 0x53, 0xFF, 0x3A, 0xF2, 0xCE, + 0xFE, 0x87, 0x79, 0xBC, 0xC5, 0x3C, 0x24, 0xA4, + 0xB1, 0x8D, 0x5E, 0x0D, 0x78, 0x1B, 0xEC, 0xF7, + 0x5B, 0x54, 0x77, 0x47, 0x3A, 0x20, 0x24, 0xAD, + 0x56, 0xC5, 0x4A, 0x7F, 0x99, 0x0E, 0xF6, 0xB1, + 0xDF, 0xAC, 0x50, 0x10, 0x88, 0x50, 0x9D, 0x3A, + 0x37, 0xF1, 0xC8, 0xD5, 0xC2, 0x64, 0x87, 0xE4, + 0x20, 0xB7, 0xF4, 0x35, 0x8E, 0x92, 0x69, 0x76, + 0x1F, 0xF1, 0xFA, 0x3A, 0xFC, 0xBE, 0xCA, 0xEB, + 0x68, 0xF5, 0xDD, 0xDE, 0x3A, 0xA8, 0xFD, 0x07, + 0x8C, 0xC4, 0x22, 0x4C, 0xEA, 0x67, 0x13, 0x2D, + 0x7E, 0xBF, 0x5D, 0x23, 0x2E, 0x43, 0xBA, 0xDD, + 0x21, 0x8C, 0x0B, 0x4D, 0xBE, 0x1E, 0x16, 0x52, + 0x98, 0x66, 0xB9, 0xAB, 0x93, 0x58, 0x85, 0xAC, + 0xB4, 0x15, 0xFB, 0xB1, 0xEE, 0xE6, 0x94, 0x08, + 0xA5, 0x21, 0xB4, 0x62, 0xEC, 0x59, 0xCD, 0x0D, + 0x3C, 0x54, 0x96, 0xD9, 0x85, 0xAE, 0xB0, 0xCE, + 0x37, 0x4F, 0x67, 0x72, 0xA4, 0xE6, 0x39, 0x3A, + 0x4E, 0xF0, 0x07, 0x43, 0x80, 0x90, 0xA8, 0xA9, + 0xE5, 0x2D, 0x2F, 0x55, 0x66, 0x6D, 0x70, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x08, 0x0E, 0x12, 0x19, 0x20 + }; +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + static const byte pk_87_draft[] = { + 0x2D, 0x1E, 0x6B, 0xED, 0x84, 0x52, 0xEB, 0xF1, + 0x26, 0xED, 0xE7, 0x0C, 0xA0, 0xA2, 0xB5, 0x0D, + 0x03, 0x34, 0x2D, 0x5B, 0x13, 0xB2, 0xAE, 0x21, + 0x0F, 0x45, 0x62, 0xA3, 0xBF, 0x67, 0x0C, 0xB1, + 0x5C, 0xE9, 0x25, 0xFD, 0x22, 0xF2, 0x62, 0x42, + 0xBA, 0xE3, 0x10, 0xB3, 0xAA, 0x41, 0x3B, 0x6E, + 0x78, 0xD4, 0x42, 0xD9, 0x35, 0xD1, 0x72, 0x8A, + 0x32, 0x48, 0xCC, 0x20, 0x5C, 0xCD, 0x8D, 0x3F, + 0xD8, 0x34, 0x95, 0x55, 0x20, 0xCD, 0xFB, 0x2C, + 0x73, 0xE9, 0x0E, 0x60, 0x8B, 0x2C, 0x3F, 0xA8, + 0xB7, 0xD1, 0x79, 0xFD, 0xDC, 0xC8, 0x81, 0x11, + 0xC9, 0xE8, 0x41, 0x71, 0xE9, 0x70, 0x9B, 0x53, + 0x59, 0x33, 0xE4, 0x92, 0xB6, 0x81, 0x9C, 0x6A, + 0x92, 0xED, 0xA2, 0x5A, 0xC4, 0x07, 0x77, 0x1A, + 0x8F, 0xED, 0xB4, 0xE7, 0x11, 0xFB, 0x89, 0xEB, + 0x7B, 0xDF, 0xCC, 0xEA, 0xC5, 0x3B, 0x4E, 0xF4, + 0x6B, 0x6F, 0xBE, 0xE1, 0x32, 0xA9, 0xD7, 0xAD, + 0xB4, 0x36, 0xE7, 0x4A, 0x6D, 0x67, 0x11, 0x83, + 0xAF, 0x31, 0x1A, 0x7A, 0x31, 0x42, 0x9B, 0x01, + 0x21, 0x17, 0x52, 0x75, 0x85, 0xF7, 0x92, 0x0F, + 0x34, 0x8A, 0x69, 0x11, 0x88, 0x5A, 0x02, 0x08, + 0xB6, 0x6D, 0xE3, 0x07, 0x93, 0xB1, 0x3F, 0xE1, + 0xD5, 0x7B, 0xD9, 0x51, 0xF7, 0xAA, 0xC0, 0x34, + 0x9A, 0x78, 0x5D, 0x26, 0xDB, 0xF1, 0xF0, 0xA9, + 0x1E, 0x5C, 0x9F, 0x4F, 0xA7, 0x43, 0x5C, 0x44, + 0xA9, 0x43, 0xF1, 0x38, 0x11, 0x45, 0xED, 0xEB, + 0x1C, 0x8A, 0x05, 0xEE, 0xFF, 0xAB, 0x20, 0x2C, + 0xF6, 0x2C, 0xEE, 0x77, 0x42, 0x36, 0x3E, 0xE6, + 0x9D, 0x8E, 0x45, 0x0F, 0xF6, 0x7C, 0x39, 0x62, + 0xD6, 0xFF, 0x97, 0xBC, 0x3D, 0x02, 0xD6, 0xDF, + 0x4A, 0x35, 0xDA, 0x3F, 0x89, 0xA4, 0x88, 0x33, + 0xCD, 0xF2, 0x90, 0xF0, 0xE9, 0x37, 0x2F, 0x65, + 0xA5, 0x88, 0x65, 0xFD, 0x40, 0x44, 0xAD, 0x09, + 0x09, 0x92, 0xAA, 0x15, 0x9E, 0xEE, 0xF7, 0x2B, + 0x0D, 0xA7, 0xCB, 0x3A, 0x5E, 0x0A, 0xED, 0xD6, + 0x7D, 0x82, 0x8B, 0xBA, 0xCF, 0xE5, 0x9E, 0xE4, + 0x62, 0xAB, 0x69, 0x6B, 0xBA, 0xD0, 0xE5, 0xA9, + 0xBB, 0x1F, 0x5A, 0x51, 0xE0, 0xFA, 0x5D, 0xD4, + 0x4D, 0x8E, 0xC0, 0xDC, 0x43, 0x06, 0xDF, 0x23, + 0x67, 0xB2, 0x4A, 0xA2, 0xFB, 0x75, 0x2F, 0x82, + 0xD8, 0x44, 0xE4, 0xC0, 0xCE, 0x15, 0x9E, 0x3F, + 0xD6, 0xB4, 0x70, 0x5F, 0x3B, 0xD0, 0x56, 0x3E, + 0x0A, 0x7A, 0x4B, 0x94, 0xBF, 0xBA, 0x01, 0x2B, + 0x9C, 0x8B, 0x91, 0x35, 0xF2, 0xDB, 0x4C, 0x8C, + 0x8D, 0xD6, 0xEE, 0xC8, 0x65, 0x8D, 0xF3, 0x05, + 0x59, 0xBE, 0x3A, 0x17, 0xA7, 0x72, 0x10, 0x56, + 0x14, 0xEF, 0xB8, 0xC1, 0xBE, 0x18, 0x11, 0x0B, + 0xE6, 0x70, 0xF8, 0x39, 0xA5, 0x72, 0x7D, 0xF9, + 0x47, 0xFB, 0xAC, 0xFD, 0x1F, 0xC3, 0x71, 0x33, + 0x58, 0x44, 0x15, 0xD3, 0x7C, 0x93, 0x2E, 0x70, + 0x92, 0xFA, 0xBB, 0xF2, 0xD0, 0x9D, 0x25, 0xC4, + 0xCF, 0x4A, 0xB8, 0xEC, 0xBE, 0x5D, 0x8B, 0x7F, + 0xA4, 0x7C, 0xAB, 0xAD, 0xE7, 0x1E, 0x93, 0x83, + 0x92, 0x86, 0x1E, 0x8D, 0x15, 0xA4, 0x1C, 0x5B, + 0x42, 0x25, 0xDA, 0x3D, 0x16, 0xD3, 0x93, 0xF2, + 0x85, 0x50, 0x86, 0x0A, 0x86, 0x35, 0x6B, 0x14, + 0xAB, 0x5F, 0x22, 0xD0, 0xCF, 0x03, 0x7C, 0xEB, + 0xB4, 0x0E, 0xAC, 0x87, 0xA2, 0x41, 0x42, 0xA0, + 0x21, 0x93, 0x00, 0xB6, 0x47, 0x6F, 0x96, 0xD0, + 0x41, 0xD1, 0xC3, 0x0E, 0x3C, 0x52, 0xD2, 0x45, + 0xAB, 0x6A, 0xE7, 0xA1, 0xE5, 0xFD, 0x73, 0xC5, + 0x82, 0x9D, 0x60, 0x62, 0x8B, 0x6D, 0x87, 0xFC, + 0x88, 0x9C, 0x3E, 0xEF, 0xAE, 0xAA, 0xB6, 0x1C, + 0x18, 0xEE, 0xD7, 0x51, 0x1A, 0x96, 0xC4, 0x93, + 0x25, 0x05, 0xD3, 0x83, 0x3D, 0xD8, 0x33, 0x16, + 0x14, 0x44, 0x88, 0xE2, 0xAF, 0xC4, 0xEC, 0x59, + 0x18, 0x12, 0xB9, 0x99, 0xC1, 0xC9, 0x5F, 0x31, + 0x79, 0x00, 0x03, 0xF6, 0xC9, 0x55, 0x14, 0xAA, + 0x29, 0x08, 0x78, 0x24, 0xAF, 0x1D, 0x99, 0x12, + 0x36, 0xD9, 0x4A, 0xD9, 0x50, 0xEF, 0x66, 0xFC, + 0x7F, 0xF4, 0xBC, 0x3B, 0xA0, 0xF6, 0xFD, 0xF2, + 0x62, 0xCA, 0xA5, 0x9D, 0x2B, 0x55, 0xB8, 0x33, + 0xBC, 0xA6, 0x7A, 0xA5, 0x1E, 0xE1, 0x14, 0x5F, + 0x94, 0xE2, 0xDC, 0xF0, 0x5B, 0xBD, 0x43, 0x07, + 0xD8, 0xB1, 0xE0, 0x81, 0x3F, 0x84, 0x54, 0x90, + 0xBF, 0x23, 0x59, 0x92, 0x3C, 0xA5, 0x98, 0xAB, + 0x7D, 0x99, 0xD2, 0xF0, 0xED, 0x8E, 0x0B, 0xC9, + 0x9F, 0xAF, 0xB0, 0x13, 0xED, 0xC7, 0xDD, 0xB8, + 0x61, 0x72, 0x07, 0x3D, 0xCC, 0x35, 0x73, 0xA0, + 0xCF, 0x0C, 0xD9, 0x7E, 0x93, 0xDC, 0x63, 0xB8, + 0x82, 0xEC, 0xF4, 0x30, 0xCE, 0x43, 0x92, 0xEA, + 0x5E, 0xD8, 0xC8, 0xA1, 0xEC, 0x79, 0xDC, 0xAE, + 0x64, 0xD4, 0x33, 0xEB, 0x53, 0x8C, 0xFC, 0x49, + 0x79, 0xBF, 0x7A, 0x28, 0x65, 0x1E, 0x8C, 0xD5, + 0x21, 0xB0, 0x8E, 0xCA, 0xAD, 0xF8, 0x96, 0x9A, + 0x98, 0x10, 0x00, 0x35, 0x6D, 0x58, 0x9A, 0xEF, + 0x84, 0x84, 0x86, 0x72, 0xBA, 0xCD, 0x38, 0x66, + 0x96, 0x9B, 0xC2, 0x83, 0xB0, 0x65, 0xC1, 0xAB, + 0xCF, 0x63, 0x8C, 0x2D, 0xC3, 0x42, 0xB2, 0x7D, + 0xF6, 0xB8, 0xF0, 0x3D, 0x26, 0x21, 0x8F, 0xAE, + 0x4E, 0x96, 0xF2, 0x55, 0x66, 0xBC, 0x6F, 0xED, + 0xE7, 0x19, 0xD3, 0x8D, 0xC0, 0xCD, 0x55, 0x20, + 0x5F, 0x10, 0xCA, 0xDA, 0x09, 0xED, 0x91, 0x4A, + 0x43, 0x33, 0xD3, 0x82, 0x11, 0x5C, 0x2F, 0x5D, + 0xEC, 0xCD, 0x54, 0xF9, 0x6C, 0xE4, 0xE5, 0xF2, + 0x68, 0xBC, 0xE9, 0x27, 0xB2, 0x1D, 0xCA, 0xB5, + 0xCD, 0x04, 0x01, 0x1E, 0x92, 0xF5, 0xF6, 0x01, + 0x86, 0x2B, 0x20, 0x20, 0x9B, 0xB0, 0xF9, 0x56, + 0xD9, 0x33, 0xD5, 0x0A, 0xEC, 0x1B, 0xF4, 0xCE, + 0xD2, 0xB2, 0xC2, 0xD4, 0x3F, 0x9A, 0x25, 0x76, + 0x8E, 0x29, 0x87, 0x52, 0x64, 0x86, 0x4A, 0xA5, + 0x7B, 0x5A, 0x91, 0x72, 0x6E, 0xBE, 0x6D, 0x73, + 0x0A, 0x8D, 0x89, 0x53, 0x82, 0x33, 0x70, 0x44, + 0x20, 0xBE, 0xE0, 0xB0, 0x1B, 0x76, 0x30, 0x43, + 0xA5, 0x5B, 0x8F, 0xAB, 0x7E, 0xB8, 0x61, 0x5F, + 0x43, 0x70, 0x1B, 0x1A, 0x71, 0x61, 0x56, 0xF9, + 0x13, 0x31, 0x2A, 0x64, 0x33, 0x14, 0x00, 0x98, + 0x72, 0xEC, 0x32, 0x88, 0x09, 0xFB, 0x64, 0x46, + 0x3D, 0x56, 0x02, 0xD9, 0x76, 0xD3, 0xAA, 0x90, + 0x0F, 0xBD, 0xF0, 0xF9, 0x96, 0x43, 0x7B, 0x62, + 0x19, 0x26, 0x22, 0x6A, 0x93, 0x91, 0xEC, 0x07, + 0x34, 0xF5, 0x22, 0x32, 0xB3, 0x65, 0x66, 0xE0, + 0x6B, 0x11, 0x7F, 0x97, 0x9F, 0x1A, 0x89, 0x46, + 0xCE, 0x8F, 0xBD, 0xFD, 0x2F, 0xCC, 0x3D, 0xBF, + 0xF2, 0x83, 0xA4, 0x30, 0xE1, 0x02, 0x72, 0xF8, + 0x74, 0xE6, 0x21, 0x96, 0x77, 0xE1, 0x57, 0x8A, + 0xF7, 0x9E, 0xB3, 0x31, 0xAF, 0xD8, 0xC5, 0xD7, + 0x20, 0xDC, 0xFD, 0xCF, 0x79, 0x06, 0x0F, 0x1F, + 0xE5, 0x84, 0x3D, 0x0B, 0x9C, 0xB3, 0xC7, 0xAB, + 0xB8, 0xF1, 0xC0, 0xD0, 0xB5, 0xC7, 0x01, 0xE2, + 0x0E, 0x3B, 0xAF, 0x7E, 0xAC, 0x44, 0x5A, 0x75, + 0x50, 0x0A, 0x76, 0x1C, 0x13, 0xDB, 0x25, 0xD4, + 0x0D, 0x19, 0x75, 0x4C, 0x02, 0xD9, 0xF3, 0xDF, + 0x6D, 0xBB, 0xCF, 0x47, 0xA6, 0xAE, 0xF6, 0xD1, + 0xFB, 0xF4, 0xB4, 0x55, 0xD3, 0xA5, 0x87, 0xA1, + 0x55, 0xFB, 0xBF, 0xCD, 0xF6, 0xA1, 0x64, 0x57, + 0x12, 0x75, 0x9A, 0x11, 0xA3, 0xCE, 0x42, 0x70, + 0x84, 0x54, 0x93, 0x12, 0xE1, 0x3A, 0x0F, 0xFA, + 0xCA, 0xF2, 0x25, 0x91, 0xF1, 0x4D, 0x8F, 0x84, + 0xB1, 0xB5, 0x35, 0xAC, 0xE9, 0x81, 0x77, 0x34, + 0x4D, 0x6F, 0x5D, 0x14, 0x9D, 0xB9, 0xE1, 0xF0, + 0x3F, 0x3C, 0xE7, 0xAD, 0x48, 0xE6, 0x8C, 0x51, + 0x86, 0xF4, 0x4A, 0xB4, 0xD0, 0x98, 0xEC, 0x3A, + 0x4E, 0xAB, 0x58, 0x2F, 0x08, 0x9E, 0x5A, 0x9D, + 0x45, 0x30, 0xB0, 0x85, 0xDF, 0x4A, 0xE7, 0x92, + 0xC6, 0xC8, 0x18, 0x93, 0x08, 0xCE, 0x9A, 0x8C, + 0xE2, 0x91, 0x8D, 0x91, 0x57, 0x7B, 0x37, 0xC8, + 0x80, 0xA2, 0x31, 0x10, 0x0D, 0x4E, 0xEF, 0x51, + 0x07, 0x94, 0x8E, 0xF8, 0x3C, 0x3C, 0x2E, 0xD5, + 0x03, 0x26, 0xB8, 0x72, 0x7F, 0xB9, 0xBC, 0xD7, + 0x95, 0xC4, 0x31, 0x08, 0xEC, 0x6F, 0xEE, 0x11, + 0xAF, 0xC0, 0xA2, 0xEC, 0xD7, 0xC8, 0x0B, 0xBE, + 0x15, 0xAE, 0xC9, 0x17, 0xBE, 0x37, 0xE2, 0x40, + 0x83, 0x65, 0xDE, 0xB3, 0x4E, 0xB4, 0x15, 0xB3, + 0x5C, 0x14, 0xF6, 0x5F, 0xA9, 0x1F, 0x70, 0xB5, + 0x23, 0x93, 0x78, 0xB9, 0x47, 0xF9, 0x1D, 0x2B, + 0x1E, 0x8D, 0xB1, 0x25, 0x7E, 0xE5, 0x85, 0x3C, + 0x16, 0x9F, 0xD0, 0xC2, 0x67, 0x8B, 0x0D, 0xD2, + 0x72, 0x4E, 0x74, 0x30, 0xE1, 0xAF, 0xB8, 0x66, + 0xCB, 0x53, 0xDF, 0xC4, 0xFB, 0xA5, 0x6D, 0x03, + 0xF2, 0xAE, 0xEE, 0x90, 0xFE, 0xD7, 0x30, 0xAF, + 0x33, 0x98, 0x09, 0xEB, 0x75, 0xC7, 0x3E, 0xC8, + 0x2F, 0xE7, 0x22, 0x5F, 0x2F, 0x0A, 0xBD, 0xA4, + 0x22, 0x88, 0x28, 0x19, 0x35, 0x83, 0x12, 0x86, + 0xEE, 0x72, 0xB4, 0x26, 0x89, 0x2F, 0xC7, 0x11, + 0x6E, 0xDD, 0x14, 0x98, 0x22, 0xE7, 0x73, 0x3E, + 0xFA, 0x46, 0x75, 0xF9, 0x40, 0xC1, 0x84, 0x22, + 0xBC, 0x75, 0x36, 0xC7, 0x82, 0xD3, 0xAE, 0x6E, + 0x0D, 0xBF, 0x6F, 0xC3, 0x4B, 0x67, 0x49, 0x19, + 0xF3, 0x4B, 0x12, 0xF2, 0x83, 0xFD, 0x39, 0x56, + 0x44, 0x05, 0x3A, 0x24, 0x6A, 0x35, 0x69, 0x12, + 0xCF, 0xE4, 0x93, 0xFE, 0x26, 0xCC, 0xD6, 0x01, + 0xA0, 0x4A, 0x84, 0xA8, 0x1D, 0x85, 0xE6, 0x83, + 0x0F, 0x3C, 0xE6, 0x6D, 0xD2, 0xCB, 0xB1, 0x14, + 0x8C, 0xEC, 0x10, 0xB3, 0x63, 0x4B, 0x9C, 0xF5, + 0x11, 0xE0, 0xF9, 0x86, 0x6F, 0xA7, 0xC0, 0x3B, + 0x9D, 0x25, 0xD7, 0x54, 0xCA, 0x40, 0x4D, 0x26, + 0xBA, 0x71, 0x8E, 0x25, 0xF5, 0xA7, 0xE3, 0x9B, + 0x25, 0x20, 0x7F, 0x29, 0x05, 0xB6, 0x27, 0x14, + 0x17, 0x67, 0x26, 0x10, 0xAD, 0xA3, 0x06, 0x03, + 0xFE, 0x82, 0x85, 0x5D, 0x01, 0x04, 0x4D, 0xE0, + 0x64, 0x38, 0x38, 0x5E, 0x83, 0x1E, 0x21, 0x9A, + 0x39, 0x02, 0xF8, 0xF9, 0x69, 0x85, 0x52, 0xE5, + 0xEC, 0x6A, 0xAC, 0x96, 0x86, 0xA7, 0x88, 0x69, + 0xB5, 0xB5, 0x7E, 0x03, 0x1D, 0xA9, 0x68, 0xCA, + 0x45, 0x0F, 0xF9, 0x14, 0xD6, 0x7B, 0xCF, 0x9C, + 0x03, 0x6F, 0xD1, 0xD9, 0x6F, 0x01, 0x3D, 0xF8, + 0xF3, 0x11, 0xF3, 0x29, 0x17, 0x90, 0xE8, 0x9B, + 0xED, 0x58, 0x9B, 0xF0, 0xBC, 0xC7, 0xBA, 0xF4, + 0x60, 0xC8, 0xAA, 0x30, 0xB4, 0x2F, 0x22, 0x8F, + 0xD3, 0xAC, 0x18, 0xC2, 0xB7, 0xC4, 0x7B, 0x31, + 0x9E, 0x0F, 0x7E, 0x9D, 0xBF, 0xD4, 0x63, 0xC2, + 0x8B, 0x1B, 0x58, 0x50, 0x33, 0x53, 0x6D, 0x79, + 0xBB, 0xF8, 0x0D, 0x91, 0x33, 0xD9, 0x07, 0xE7, + 0xB0, 0x81, 0xD4, 0xB4, 0x47, 0x61, 0x93, 0xF0, + 0xFB, 0x68, 0xBC, 0x1B, 0x41, 0xC2, 0xF5, 0x43, + 0x30, 0x7E, 0x76, 0xF9, 0xB1, 0xA3, 0xD6, 0xD4, + 0x26, 0xEA, 0x77, 0x75, 0x12, 0x7A, 0xC8, 0x30, + 0x9B, 0xCF, 0x45, 0xBE, 0x74, 0x7D, 0x8A, 0x8B, + 0xEC, 0xED, 0x11, 0xE6, 0xA1, 0xD1, 0xB8, 0xF1, + 0x90, 0xAD, 0x6D, 0x6A, 0xC6, 0x54, 0xE9, 0xDB, + 0xAD, 0x4C, 0x97, 0x39, 0xC8, 0xD8, 0x44, 0xA9, + 0x1A, 0x37, 0x16, 0x7E, 0x68, 0x45, 0x0C, 0xBB, + 0x10, 0xF4, 0xAE, 0x8E, 0x2B, 0x69, 0xFA, 0x95, + 0x3E, 0xA5, 0xC9, 0x91, 0xD3, 0xF1, 0xA3, 0x89, + 0x3F, 0x90, 0x86, 0x93, 0x1B, 0xF1, 0xA0, 0x89, + 0xC7, 0xF2, 0x23, 0x57, 0xD4, 0x8E, 0x2F, 0xD5, + 0x71, 0xCD, 0x36, 0xF1, 0x90, 0xB3, 0x98, 0x3E, + 0x19, 0xEA, 0xC8, 0x0F, 0x12, 0x9D, 0xBF, 0x58, + 0xED, 0xDC, 0x6B, 0x9A, 0x79, 0x84, 0xFC, 0xF0, + 0x4C, 0xC3, 0xB4, 0x0D, 0xB8, 0x7A, 0x8D, 0xAD, + 0x75, 0x40, 0xD5, 0xD5, 0xDE, 0xC8, 0xCA, 0x39, + 0x3E, 0x45, 0xE4, 0xBC, 0xF4, 0x33, 0xEA, 0x64, + 0xE1, 0x5E, 0x94, 0x42, 0x91, 0xAB, 0xBC, 0x42, + 0x2A, 0xB3, 0xD0, 0x60, 0x23, 0xCE, 0x57, 0x8E, + 0xFF, 0xAD, 0xA2, 0x2B, 0x64, 0xD9, 0x94, 0xA0, + 0x80, 0x0F, 0x8E, 0x50, 0x17, 0x08, 0x1D, 0x16, + 0xCF, 0x51, 0xD0, 0xB9, 0x28, 0xB6, 0x59, 0xEF, + 0x78, 0xCC, 0xC9, 0x96, 0xF9, 0xCA, 0x87, 0x7A, + 0xEE, 0xD9, 0x15, 0x5E, 0xDF, 0x5D, 0xBC, 0xC2, + 0x58, 0xE6, 0x04, 0xEE, 0x17, 0xDC, 0xB3, 0xF9, + 0x90, 0xF9, 0x88, 0x32, 0x9E, 0xA1, 0xDB, 0x1C, + 0x38, 0x56, 0x53, 0x90, 0x30, 0x69, 0x2E, 0x52, + 0x00, 0x2C, 0xF3, 0x0F, 0xD5, 0x80, 0x2E, 0x02, + 0x5B, 0x99, 0xBF, 0xCD, 0x11, 0x12, 0x64, 0x5B, + 0x56, 0xC6, 0x0A, 0xE6, 0x38, 0xE7, 0x4D, 0x21, + 0xE5, 0x98, 0x78, 0x9D, 0xE6, 0xCB, 0x60, 0xB4, + 0x2E, 0xE4, 0x98, 0x56, 0xCB, 0xAD, 0xE6, 0xDD, + 0x53, 0xF4, 0xC5, 0x67, 0xA2, 0x9F, 0xA0, 0x5C, + 0x7C, 0xFB, 0x24, 0x5A, 0xA7, 0x72, 0xD0, 0xE7, + 0x63, 0xF2, 0x5D, 0xBF, 0xD8, 0xE9, 0xF1, 0x6B, + 0xB4, 0x29, 0xA6, 0x28, 0xE6, 0x93, 0xD3, 0x87, + 0xB6, 0xD9, 0x3C, 0x39, 0x8D, 0xEA, 0x28, 0xC0, + 0x96, 0x3D, 0xF5, 0xC2, 0x3C, 0x29, 0xF2, 0x80, + 0x21, 0x8A, 0x03, 0x9D, 0x64, 0xF8, 0xBA, 0x81, + 0xC1, 0xDD, 0xA2, 0x88, 0x2A, 0x84, 0x2E, 0x3C, + 0xB5, 0x03, 0x95, 0xED, 0xAA, 0x6E, 0xE2, 0x6F, + 0x5E, 0x99, 0x3C, 0x63, 0xEE, 0xB8, 0x4F, 0x66, + 0x32, 0x77, 0x42, 0x23, 0x36, 0x29, 0x89, 0xB0, + 0xED, 0x5F, 0xF2, 0x5A, 0x65, 0x66, 0x3F, 0xD2, + 0x8B, 0x48, 0x68, 0x65, 0xDC, 0xE0, 0xB0, 0xC2, + 0x72, 0x73, 0xF1, 0xA4, 0xC6, 0x56, 0x2C, 0x5D, + 0xD8, 0xC6, 0x5C, 0x41, 0xCE, 0x30, 0x89, 0x59, + 0xA9, 0xD6, 0x45, 0x96, 0xD0, 0x8E, 0x7B, 0x25, + 0xE0, 0x13, 0xFB, 0xFE, 0x7C, 0xEA, 0xF3, 0x67, + 0x0D, 0xB2, 0x9A, 0x21, 0x3C, 0xCE, 0x99, 0x75, + 0xA9, 0x13, 0xCE, 0xF4, 0x23, 0x6E, 0x64, 0x00, + 0x30, 0x87, 0x70, 0x9C, 0xAD, 0x61, 0x81, 0x71, + 0x0E, 0x95, 0x19, 0x26, 0xCA, 0x55, 0x29, 0x71, + 0x99, 0xA6, 0x08, 0xAE, 0x54, 0x58, 0x75, 0xCD, + 0xC3, 0x8F, 0xE3, 0x83, 0xC1, 0x45, 0x62, 0xB4, + 0x8D, 0xCA, 0x66, 0x02, 0xEA, 0x34, 0x05, 0x5D, + 0x98, 0x3F, 0x38, 0xE6, 0x1C, 0xCE, 0x53, 0x1A, + 0xD9, 0x3F, 0x58, 0xEC, 0x16, 0x28, 0x45, 0xF5, + 0x38, 0xCE, 0x48, 0x43, 0x87, 0x1D, 0x3C, 0x4A, + 0xDF, 0x05, 0xF3, 0x5E, 0x29, 0x7E, 0xA6, 0x2E, + 0xFC, 0xDD, 0x5E, 0xF9, 0x40, 0x1B, 0xA0, 0x42, + 0xA2, 0x35, 0x15, 0x0A, 0x09, 0xD9, 0x47, 0x4A, + 0x3F, 0xB0, 0x3A, 0xAA, 0x19, 0xE7, 0xE3, 0x7A, + 0x22, 0x8D, 0x5F, 0x5B, 0x07, 0x41, 0x4C, 0x3D, + 0xA2, 0xAD, 0x2E, 0x5C, 0x75, 0xEC, 0xF0, 0x4C, + 0x11, 0x2B, 0x90, 0x76, 0x9E, 0x19, 0x96, 0x0E, + 0x97, 0x5E, 0x8D, 0x19, 0x17, 0xB3, 0xBF, 0xDA, + 0x84, 0xFD, 0xC6, 0xD2, 0x32, 0x6F, 0xB8, 0xA3, + 0xB0, 0x0F, 0x95, 0xD9, 0xC5, 0x26, 0x50, 0x11, + 0x15, 0x72, 0xBE, 0xC2, 0x1B, 0x12, 0x12, 0x7C, + 0xA5, 0x70, 0xD8, 0xA9, 0x8A, 0xB9, 0x77, 0xEB, + 0xD8, 0xD7, 0x9A, 0x59, 0x37, 0x5E, 0xE1, 0x4F, + 0x64, 0xB5, 0xB0, 0x4F, 0xD9, 0x69, 0xFE, 0xB0, + 0x3D, 0x0A, 0xF7, 0x34, 0x89, 0xE3, 0xBA, 0xEF, + 0xE7, 0xC7, 0xBC, 0x8D, 0xC7, 0xE8, 0x54, 0x83, + 0xEE, 0x62, 0xF0, 0x23, 0x98, 0x58, 0x0F, 0x83, + 0xB9, 0x6D, 0xD8, 0x44, 0x77, 0xB9, 0xC4, 0x8F, + 0x0B, 0xB3, 0x9F, 0x54, 0x06, 0xA3, 0x70, 0x36, + 0xD6, 0xF3, 0x6E, 0x2B, 0x1B, 0x6B, 0x53, 0xFE, + 0x6F, 0xF6, 0x1C, 0x32, 0x7B, 0x29, 0xD4, 0xE0, + 0x5D, 0xD2, 0xB8, 0x11, 0x74, 0xC6, 0x0B, 0x59, + 0xC7, 0x9C, 0xB1, 0x97, 0x6B, 0xC0, 0x6E, 0x7A, + 0xC3, 0x4D, 0xF3, 0xE3, 0x8F, 0x7D, 0x2C, 0x1C, + 0x0E, 0x31, 0x51, 0xB7, 0x14, 0x7A, 0xB8, 0x31, + 0x77, 0x47, 0x70, 0x14, 0x3B, 0x92, 0x7B, 0x5F, + 0xEC, 0x5D, 0xF7, 0x76, 0xC1, 0xD7, 0x2D, 0xB6, + 0xBC, 0x99, 0x81, 0xD6, 0x58, 0x67, 0x71, 0x3C, + 0xF2, 0x97, 0xC8, 0xB0, 0xF1, 0xE9, 0x8D, 0x0E, + 0x16, 0xF0, 0xCC, 0x22, 0x7A, 0x39, 0xE4, 0x7E, + 0x50, 0xBA, 0x01, 0x16, 0x15, 0x6D, 0x5B, 0x54, + 0x67, 0x53, 0x66, 0x04, 0xBE, 0x05, 0xCC, 0x2E, + 0xF4, 0x0A, 0xBC, 0xE8, 0x52, 0xF1, 0x5D, 0xFA, + 0x2C, 0xAC, 0xF8, 0x6A, 0x78, 0x9E, 0x5B, 0x7B, + 0x0E, 0x5B, 0xB4, 0xB7, 0x77, 0xCD, 0x7C, 0xC9, + 0xF6, 0x54, 0x77, 0x9B, 0x10, 0x2F, 0x78, 0xB5, + 0xAA, 0x4B, 0x94, 0xC3, 0xB4, 0xFD, 0xE5, 0x5F, + 0xA7, 0xF7, 0xBF, 0x54, 0xAC, 0x22, 0x5E, 0x1F, + 0x26, 0x16, 0x5B, 0x65, 0xF1, 0x6D, 0x03, 0x21, + 0x66, 0x9F, 0xD9, 0xF6, 0xE4, 0x7F, 0xCA, 0x1D, + 0xD3, 0x47, 0x09, 0x6D, 0xF5, 0xDD, 0xA8, 0x64, + 0x66, 0xA5, 0x7C, 0x5B, 0x06, 0x8D, 0x9C, 0x67, + 0xB7, 0x32, 0x03, 0x66, 0xEA, 0x19, 0xC8, 0x99, + 0x3F, 0xF9, 0x0B, 0xD8, 0xFB, 0x06, 0x93, 0xFB, + 0xA3, 0x70, 0xE6, 0x6D, 0x2B, 0x20, 0x3B, 0x99, + 0x70, 0x11, 0xB0, 0xD1, 0x5B, 0x94, 0xE2, 0x8B, + 0xAA, 0x2E, 0xBF, 0x01, 0x77, 0x4F, 0x7A, 0xE7, + 0x8F, 0x84, 0xED, 0xBD, 0xAD, 0x9F, 0x65, 0xA4, + 0x50, 0x42, 0x7A, 0x47, 0x74, 0xC6, 0x0C, 0xC8, + 0x9A, 0x02, 0x0B, 0x37, 0xDA, 0x21, 0xC7, 0x91, + 0xDA, 0xC8, 0xF7, 0xA7, 0x45, 0x7E, 0x30, 0xD0, + 0x8B, 0x01, 0x37, 0x51, 0x60, 0x03, 0x9C, 0x30, + 0x1B, 0x60, 0x51, 0xA9, 0x65, 0xE8, 0xA7, 0xCC, + 0xA2, 0xAE, 0xF9, 0x3B, 0xD5, 0x2F, 0x82, 0xC0, + 0x20, 0xBE, 0xCE, 0x90, 0xA1, 0x29, 0x02, 0x4E, + 0xFE, 0xA4, 0xB2, 0xFA, 0x21, 0x27, 0x0F, 0x8E, + 0xB5, 0xED, 0x6A, 0xAA, 0xE5, 0x59, 0x29, 0xAA, + 0xC5, 0x99, 0xA5, 0x77, 0x97, 0x29, 0x57, 0x66, + 0x0C, 0xC4, 0x7A, 0xC4, 0xE3, 0xCE, 0x77, 0x2B, + 0xBF, 0x10, 0x05, 0x2D, 0xE7, 0xED, 0xB1, 0xB8, + 0xA4, 0x49, 0x41, 0xF8, 0x84, 0xC9, 0xF8, 0xBE, + 0x13, 0x17, 0x46, 0x69, 0x94, 0x56, 0x29, 0xF4, + 0x6D, 0xE2, 0x46, 0x74, 0x44, 0xF3, 0x10, 0x6A, + 0x73, 0xFA, 0x27, 0x9C, 0xF0, 0x2A, 0x80, 0x0A, + 0x04, 0x7E, 0x20, 0xBD, 0x4D, 0x82, 0x0B, 0x38, + 0x9C, 0x3B, 0xB6, 0xA8, 0x68, 0xA5, 0x38, 0x4C, + 0xF5, 0x72, 0x4C, 0x20, 0x4C, 0xEF, 0xB1, 0xA6, + 0xA1, 0xBE, 0xB9, 0x72, 0x3E, 0x36, 0xDD, 0xDD, + 0xD9, 0xC7, 0x07, 0xC8, 0xF6, 0x3E, 0x8B, 0xC2, + 0x66, 0x83, 0xCC, 0x8B, 0x43, 0xC7, 0xDF, 0xDA, + 0xA4, 0x08, 0xAC, 0x4D, 0xD2, 0xBA, 0x9A, 0xEC, + 0xBC, 0x3B, 0x6D, 0xDA, 0xED, 0xCE, 0x09, 0x4A, + 0xAB, 0x58, 0xFF, 0x73, 0x2B, 0x19, 0x66, 0x38, + 0xD8, 0xB8, 0xEF, 0xC4, 0x28, 0xBB, 0xA9, 0x61, + 0x57, 0x93, 0xC4, 0xDD, 0x9F, 0x00, 0xF9, 0x0D, + 0x62, 0xC6, 0x76, 0xD1, 0x27, 0xA0, 0xE1, 0x8C, + 0x14, 0xC6, 0xEE, 0x9C, 0x99, 0x05, 0x10, 0xB0, + 0x54, 0xAD, 0xB4, 0xB4, 0x17, 0x0A, 0xC7, 0x12, + 0x7F, 0x93, 0x17, 0x5C, 0x1E, 0xB2, 0x25, 0x12 + }; + static const byte msg_87_draft[] = { + 0x14, 0x42, 0x63, 0x34, 0x94, 0x09, 0x60, 0x77, + 0x3B, 0xFF, 0x65, 0xF0, 0x8D, 0x1D, 0xE4, 0x89, + 0xC4, 0xC3, 0xED, 0x36 + }; + static const byte sig_87_draft[] = { + 0x13, 0xE8, 0x99, 0xEE, 0xDC, 0xCC, 0x0F, 0xBA, + 0x62, 0x91, 0x44, 0xE4, 0xAC, 0x06, 0x79, 0x06, + 0xB5, 0x32, 0x6B, 0x8F, 0x9A, 0x6C, 0xCB, 0xAB, + 0xE1, 0x44, 0x4A, 0xDD, 0x46, 0x45, 0x16, 0x0D, + 0x22, 0x57, 0x82, 0x87, 0x10, 0xD1, 0xEE, 0x10, + 0x60, 0x21, 0xB5, 0x64, 0x1E, 0x78, 0x81, 0x55, + 0x75, 0xD4, 0xF0, 0x95, 0xD0, 0x15, 0xD8, 0x46, + 0x5C, 0x92, 0xD2, 0xDD, 0xF4, 0xAB, 0xDF, 0xBE, + 0xB1, 0x1E, 0xE5, 0xE0, 0x70, 0xE6, 0xDA, 0x52, + 0xE5, 0x48, 0xDC, 0x04, 0xFD, 0xEF, 0x54, 0x72, + 0xE7, 0xE5, 0xF1, 0x82, 0x10, 0xAA, 0xCB, 0xA0, + 0x4F, 0x4F, 0x18, 0xAE, 0x66, 0x86, 0xB9, 0xAF, + 0x96, 0x57, 0xE3, 0x8E, 0x3B, 0x9B, 0xDD, 0xB4, + 0xAA, 0x84, 0xE6, 0x7B, 0x4D, 0x81, 0x92, 0xD0, + 0x03, 0x87, 0x3D, 0xD3, 0xEE, 0xE7, 0x47, 0x00, + 0xFB, 0xD8, 0x1E, 0x38, 0x1C, 0x21, 0x98, 0xB7, + 0xCC, 0xC1, 0x37, 0xC1, 0x71, 0xB2, 0x2F, 0x93, + 0x53, 0x41, 0x9C, 0x48, 0xC1, 0x4B, 0x8D, 0x63, + 0x0F, 0x99, 0x63, 0x40, 0x27, 0x5F, 0x6E, 0x60, + 0x4B, 0x95, 0xC4, 0x35, 0x20, 0x8A, 0xED, 0x2B, + 0xCA, 0x1B, 0x41, 0x9F, 0x83, 0x63, 0xF0, 0x95, + 0x0E, 0x24, 0x0D, 0x6F, 0x9E, 0xAB, 0x11, 0x8E, + 0x4B, 0xD3, 0xDA, 0x0E, 0xC3, 0xA2, 0xBE, 0x26, + 0xA8, 0xA0, 0x98, 0x57, 0x71, 0x3C, 0x36, 0xDD, + 0x69, 0xC3, 0x4E, 0xDD, 0x2C, 0x61, 0x9E, 0x88, + 0x26, 0x70, 0x71, 0xCF, 0x9E, 0xE5, 0xA6, 0x0C, + 0xA3, 0x14, 0x2D, 0xF1, 0x63, 0xF0, 0x1D, 0x8D, + 0x79, 0x6A, 0xC8, 0x50, 0xCF, 0xF3, 0x66, 0x60, + 0x78, 0xB3, 0x18, 0xFB, 0x5B, 0xD1, 0x73, 0x60, + 0xC8, 0x76, 0xC9, 0xC9, 0x0D, 0x8A, 0x7F, 0x41, + 0x2C, 0x8A, 0x31, 0x61, 0x6B, 0xE7, 0xA3, 0x74, + 0x58, 0x71, 0x54, 0x84, 0x86, 0x71, 0x5C, 0x94, + 0x26, 0x3A, 0x17, 0xB3, 0x6C, 0xA4, 0x99, 0x25, + 0x45, 0x0C, 0x57, 0x8A, 0xD9, 0xD4, 0xB1, 0xC2, + 0x00, 0x43, 0xF4, 0x5E, 0x84, 0x31, 0x99, 0x4F, + 0xA6, 0xD2, 0x6A, 0x14, 0x1B, 0xAD, 0x9E, 0x49, + 0x6E, 0x00, 0x9E, 0x91, 0x46, 0x16, 0xCA, 0x57, + 0x0C, 0x09, 0xF6, 0x38, 0xD0, 0x62, 0xBE, 0xC6, + 0x87, 0x33, 0x3A, 0xC7, 0x28, 0x38, 0x34, 0x53, + 0x7E, 0xFB, 0x60, 0x42, 0xF3, 0x7D, 0x83, 0xF7, + 0x29, 0x5D, 0xEA, 0x30, 0xD5, 0x00, 0x90, 0xB6, + 0x38, 0x4C, 0x17, 0x29, 0xEF, 0x17, 0xA0, 0xD5, + 0x87, 0x50, 0xC0, 0x03, 0x75, 0x14, 0xE5, 0xE1, + 0x22, 0x78, 0x53, 0xBC, 0x5A, 0xA3, 0x1E, 0x95, + 0xBE, 0xEC, 0x37, 0xB1, 0x51, 0x82, 0x69, 0x26, + 0x2E, 0xA3, 0x5A, 0xDA, 0x4F, 0xDA, 0x77, 0x62, + 0x7E, 0xED, 0xDA, 0xAF, 0x57, 0x97, 0x1B, 0xA3, + 0x6D, 0x46, 0x7B, 0x19, 0xA9, 0x0B, 0x99, 0x1C, + 0xD2, 0x55, 0xDB, 0x79, 0xB0, 0x15, 0x48, 0x86, + 0x52, 0x30, 0x31, 0xD6, 0xC5, 0xB1, 0xAE, 0x8F, + 0xCF, 0x9A, 0x43, 0x10, 0xBB, 0xC8, 0x19, 0x74, + 0x84, 0xB2, 0x92, 0x3B, 0xFE, 0x0B, 0x12, 0x15, + 0xA1, 0xC4, 0xD8, 0xC6, 0x83, 0x90, 0x89, 0x8A, + 0xD5, 0x3E, 0x33, 0x69, 0xB7, 0x05, 0x3F, 0xB1, + 0x8B, 0x0D, 0x87, 0x40, 0x70, 0x90, 0x2A, 0x5D, + 0x3B, 0x3D, 0x91, 0xD8, 0x1D, 0x4D, 0xF1, 0x08, + 0x7E, 0xF7, 0xDC, 0x05, 0x84, 0xEB, 0xDC, 0x63, + 0xD7, 0xBA, 0x3C, 0x0D, 0x31, 0xF8, 0x6D, 0xA6, + 0xC0, 0xFD, 0x08, 0x11, 0x5C, 0x53, 0xF6, 0xAE, + 0xFE, 0xC0, 0x82, 0x9A, 0x68, 0xD2, 0xA3, 0x44, + 0x2E, 0xEE, 0x47, 0x36, 0x70, 0x2D, 0x66, 0x81, + 0x0D, 0x62, 0x30, 0x8A, 0x8C, 0xC8, 0x2A, 0xA6, + 0x21, 0x82, 0xF5, 0x98, 0xF4, 0x4E, 0x25, 0x37, + 0x11, 0xB5, 0xD6, 0x07, 0x88, 0xBD, 0x0D, 0x69, + 0x0E, 0xF9, 0x8F, 0x9A, 0xD5, 0x93, 0xE0, 0x3C, + 0xEF, 0x38, 0xB9, 0xC9, 0x77, 0x98, 0x3F, 0x69, + 0x11, 0xBA, 0x1A, 0xB9, 0xF7, 0x35, 0xE9, 0x28, + 0xCD, 0xA3, 0x8C, 0x03, 0xE6, 0xAD, 0x83, 0x62, + 0xF4, 0x60, 0xAE, 0x4C, 0xD0, 0xF4, 0x6E, 0x00, + 0xEE, 0xEC, 0x74, 0xB6, 0x12, 0x34, 0x98, 0xAB, + 0x31, 0xE7, 0xA7, 0x9D, 0x33, 0x4D, 0x72, 0xA7, + 0xA7, 0xEE, 0xF3, 0xB5, 0x51, 0xE7, 0x8D, 0x31, + 0xBC, 0x2C, 0xAF, 0xFB, 0x13, 0x9C, 0xAC, 0xA4, + 0xD7, 0x9C, 0x8B, 0xBD, 0x52, 0xBD, 0x78, 0xF4, + 0x90, 0x65, 0x09, 0xBE, 0x42, 0xE7, 0x76, 0x3A, + 0xE6, 0xAC, 0xB8, 0x98, 0x28, 0x5E, 0xC9, 0x32, + 0x3E, 0x68, 0x67, 0x6A, 0x8C, 0xC7, 0x4A, 0x58, + 0xC8, 0xDA, 0x8B, 0xE9, 0x11, 0xED, 0x6F, 0x51, + 0x3B, 0x66, 0x08, 0x70, 0x73, 0x10, 0xFB, 0x45, + 0xCB, 0xD9, 0x7D, 0x5F, 0xF0, 0xD2, 0xAB, 0xA3, + 0x6F, 0xCE, 0xF7, 0x3D, 0x46, 0xCB, 0x7F, 0x01, + 0xC2, 0xCF, 0xE3, 0x8E, 0x68, 0xE8, 0x4F, 0x4A, + 0x30, 0x19, 0x16, 0xD2, 0xF5, 0x10, 0xD8, 0x2B, + 0x49, 0x69, 0xBE, 0x7A, 0x0E, 0x9C, 0xC6, 0x0E, + 0xFF, 0x5C, 0x0A, 0x87, 0x17, 0xB8, 0x22, 0x83, + 0x8C, 0x77, 0xAF, 0x42, 0x06, 0xB1, 0x25, 0x45, + 0x08, 0x9B, 0xB2, 0xDD, 0x6A, 0x3F, 0xF0, 0x12, + 0xC8, 0x64, 0x15, 0xBB, 0xA0, 0x4F, 0xD7, 0xD4, + 0xEC, 0x70, 0x7A, 0xF3, 0xB1, 0x7F, 0x25, 0x57, + 0x47, 0x66, 0xF1, 0xE9, 0x27, 0x38, 0xE0, 0x62, + 0x10, 0xF4, 0x8A, 0x5E, 0xF2, 0x55, 0x0E, 0xBD, + 0xF8, 0x5A, 0x5C, 0xA3, 0x44, 0x97, 0xCF, 0x1D, + 0x4D, 0x3A, 0x75, 0x86, 0x48, 0xEC, 0x41, 0x17, + 0x24, 0x43, 0x83, 0x5E, 0x50, 0x91, 0xBE, 0x8F, + 0x04, 0x78, 0x23, 0xD9, 0x62, 0x0C, 0x2A, 0xD5, + 0x1C, 0x96, 0x11, 0xAA, 0xEE, 0x39, 0xB2, 0x1E, + 0x6D, 0x6A, 0xEC, 0x87, 0x0C, 0x89, 0x15, 0xE2, + 0x66, 0x47, 0x6A, 0x50, 0xEE, 0xCA, 0x59, 0x96, + 0x22, 0xF7, 0x09, 0x1A, 0x34, 0xC2, 0x3F, 0x14, + 0xB4, 0x04, 0x29, 0xD9, 0x5E, 0x3E, 0xF9, 0x8F, + 0xED, 0x3E, 0x74, 0x94, 0x37, 0xF0, 0x4B, 0xB4, + 0xA3, 0x37, 0x52, 0x2E, 0x68, 0x09, 0xFC, 0x10, + 0x45, 0x03, 0xE2, 0x53, 0xB4, 0x1C, 0x4F, 0x03, + 0x01, 0xAF, 0x46, 0x7F, 0x74, 0xD3, 0x31, 0x25, + 0xFA, 0x83, 0xEF, 0x71, 0x24, 0x45, 0xA1, 0x71, + 0xFA, 0x40, 0xEB, 0xF4, 0xE6, 0x55, 0x3E, 0x45, + 0x4A, 0xFE, 0x25, 0x68, 0x02, 0x1D, 0x2B, 0x2A, + 0x19, 0x8D, 0xEC, 0x9B, 0xF7, 0x20, 0xF9, 0xD7, + 0x2F, 0x81, 0x52, 0x0B, 0xE8, 0x74, 0x66, 0xAF, + 0x70, 0xD0, 0x0E, 0x0E, 0x86, 0x0F, 0xF9, 0xAB, + 0xD0, 0x39, 0x78, 0xC3, 0xE4, 0x29, 0xB5, 0xAA, + 0x17, 0xB9, 0x7F, 0x9A, 0xE9, 0x34, 0x48, 0x85, + 0x3D, 0x6E, 0xFD, 0x16, 0x8A, 0x30, 0xC6, 0xCB, + 0xE8, 0xDE, 0x2D, 0x28, 0x8D, 0x9A, 0x24, 0xEA, + 0x5D, 0x2A, 0x58, 0x23, 0x33, 0x2B, 0x84, 0xFD, + 0x2C, 0xE7, 0x93, 0xA2, 0x2B, 0xEC, 0x43, 0x98, + 0x48, 0xD4, 0xE6, 0x0F, 0x3B, 0xB9, 0xC7, 0x5D, + 0x7E, 0xB0, 0x87, 0x1E, 0x80, 0x3D, 0x61, 0xB0, + 0x7E, 0x74, 0x9E, 0xD7, 0x60, 0x72, 0xB2, 0x7C, + 0x87, 0xB6, 0x9D, 0x6C, 0x01, 0x42, 0x61, 0xF6, + 0x47, 0xAF, 0xA8, 0x8C, 0x4F, 0x1E, 0xC5, 0x5A, + 0x75, 0xA5, 0x0F, 0xB4, 0xC7, 0x9D, 0x2C, 0x94, + 0xC0, 0x50, 0x3D, 0xB2, 0x0D, 0xFD, 0xF7, 0x1F, + 0x62, 0x88, 0x74, 0x18, 0x8C, 0xDD, 0x73, 0x85, + 0xC0, 0x33, 0x81, 0xDA, 0xBB, 0x85, 0x4D, 0x4A, + 0xA9, 0xF4, 0x7B, 0x66, 0x43, 0x8C, 0x43, 0xFF, + 0x53, 0xEF, 0x5E, 0x78, 0xAB, 0x45, 0x0B, 0x45, + 0x01, 0x91, 0x27, 0x8A, 0xF6, 0xE2, 0x6A, 0x7B, + 0x5E, 0x64, 0x61, 0xF5, 0x77, 0xF9, 0x85, 0x2F, + 0x81, 0xC9, 0x02, 0x03, 0xC7, 0x13, 0xF5, 0xB1, + 0xF6, 0xC3, 0xEF, 0x55, 0x8C, 0x90, 0x32, 0x51, + 0x6D, 0x8D, 0x62, 0xFD, 0x5E, 0x24, 0xE4, 0xF0, + 0xF5, 0x07, 0x18, 0xF5, 0x6B, 0x5A, 0x59, 0xA0, + 0x09, 0xD5, 0x93, 0x8D, 0xAD, 0x55, 0x91, 0xF6, + 0x1F, 0x4C, 0x65, 0x9A, 0x76, 0x05, 0x26, 0xEF, + 0x41, 0x20, 0x2F, 0xA7, 0xE5, 0xF6, 0xC7, 0xD5, + 0xE0, 0xB0, 0xC0, 0xC4, 0x3B, 0x52, 0x4B, 0x66, + 0x71, 0x2C, 0x5A, 0x7C, 0x53, 0xC8, 0x4C, 0x50, + 0xB8, 0x3E, 0xB9, 0xC9, 0x8D, 0x2F, 0xD0, 0x84, + 0xC9, 0xC5, 0xF2, 0x1F, 0xEE, 0x77, 0x42, 0xE6, + 0xEF, 0xC8, 0xCB, 0xBE, 0x57, 0x18, 0xB7, 0x0C, + 0x06, 0x2D, 0x82, 0xE2, 0xF9, 0x86, 0xF3, 0x8D, + 0xF1, 0xE7, 0x15, 0x89, 0xDC, 0x79, 0x87, 0x24, + 0x35, 0x62, 0xA2, 0x31, 0x9D, 0x7C, 0x00, 0xB2, + 0x6E, 0x53, 0x1E, 0x93, 0xC3, 0x84, 0x44, 0x61, + 0x8C, 0xE7, 0x58, 0x73, 0x4F, 0xDE, 0xCF, 0xD0, + 0xC6, 0x85, 0x37, 0x28, 0xC6, 0x10, 0x00, 0x78, + 0x4E, 0xDF, 0xFE, 0xD7, 0xB3, 0x30, 0x86, 0xE1, + 0x68, 0xD6, 0xCB, 0x63, 0xE3, 0xDA, 0xCA, 0xF3, + 0x55, 0x2F, 0x88, 0x5B, 0x47, 0x82, 0x62, 0xDE, + 0x5E, 0x1E, 0x63, 0xCE, 0x7A, 0x4C, 0x66, 0x95, + 0xD1, 0x19, 0x38, 0x35, 0xE4, 0x5A, 0x67, 0x91, + 0x8C, 0x42, 0xD3, 0x9B, 0xF8, 0x80, 0x38, 0x53, + 0x30, 0x31, 0x0F, 0x2C, 0x7B, 0xF9, 0x1E, 0x6C, + 0x3E, 0x29, 0xB7, 0x81, 0xD0, 0x98, 0x70, 0xC2, + 0x6D, 0x76, 0xBD, 0x8A, 0xE2, 0x09, 0xC4, 0x2B, + 0xC7, 0x43, 0x2D, 0xBB, 0x4C, 0x16, 0x52, 0x63, + 0x57, 0xA5, 0x63, 0x4E, 0xEC, 0xDE, 0x93, 0xC5, + 0x1D, 0xD4, 0xD6, 0xF0, 0x06, 0x5B, 0x2E, 0xC5, + 0x7A, 0xD3, 0xB5, 0x82, 0x66, 0x53, 0x95, 0x97, + 0xC8, 0xF4, 0x2B, 0x55, 0x27, 0x1D, 0x6F, 0x90, + 0xE9, 0x86, 0xF6, 0x82, 0x8D, 0x95, 0x9E, 0xE8, + 0x00, 0xDB, 0xEB, 0xCF, 0x48, 0x23, 0x6B, 0xA3, + 0xDE, 0x25, 0x27, 0xE0, 0xEC, 0xA4, 0xA3, 0xC2, + 0xA3, 0x4B, 0xBC, 0xDD, 0x6C, 0xBB, 0x3A, 0x9C, + 0x96, 0xDC, 0x3B, 0xE1, 0x10, 0xD3, 0x49, 0x94, + 0x66, 0xE2, 0x85, 0x7F, 0xBA, 0x98, 0x12, 0x3A, + 0x6D, 0xBA, 0x90, 0x14, 0x87, 0x7E, 0x24, 0xEA, + 0xDC, 0xCA, 0x40, 0xF8, 0xAE, 0x94, 0xB2, 0xFE, + 0xD2, 0x36, 0xCB, 0xE5, 0xBC, 0xA9, 0xDF, 0xE0, + 0xCB, 0xA9, 0xA0, 0xF8, 0x62, 0x41, 0x33, 0x18, + 0x59, 0xF9, 0xD6, 0xC0, 0x87, 0xB2, 0x76, 0xDE, + 0xC9, 0x35, 0x6F, 0x1F, 0xEF, 0x69, 0xB3, 0x59, + 0xF9, 0xFB, 0x38, 0x4A, 0x84, 0x02, 0x2D, 0xEC, + 0xB7, 0x01, 0x08, 0xDA, 0xC8, 0xE9, 0x3B, 0xB6, + 0xC3, 0x00, 0xC0, 0x34, 0x5F, 0xC6, 0x40, 0xC0, + 0x06, 0xEA, 0xEB, 0xC1, 0x51, 0x13, 0x81, 0x2F, + 0xB3, 0x7D, 0xD9, 0x6E, 0x2A, 0x06, 0xA4, 0x63, + 0xAF, 0xCE, 0x66, 0xC5, 0x9F, 0x8D, 0x71, 0x4A, + 0xA1, 0xFF, 0x49, 0x4F, 0x08, 0x6F, 0xB9, 0xEA, + 0xDA, 0x18, 0x45, 0x63, 0xCA, 0x9D, 0x88, 0x08, + 0xB1, 0x6C, 0x19, 0xA8, 0x24, 0xAD, 0x85, 0x7D, + 0xDE, 0x51, 0xE5, 0x08, 0xB7, 0x04, 0x12, 0x35, + 0xF3, 0x00, 0xED, 0x2C, 0x79, 0x9C, 0x18, 0x23, + 0x05, 0x38, 0x95, 0x76, 0xCF, 0x39, 0x3C, 0xAE, + 0xB0, 0xD3, 0xBA, 0x3E, 0x4E, 0xE4, 0xB5, 0x77, + 0xA3, 0xE3, 0x7B, 0x27, 0x5F, 0xD8, 0x05, 0x19, + 0x42, 0xAE, 0x91, 0x54, 0xE5, 0xBD, 0x7C, 0x35, + 0xE0, 0xF8, 0x95, 0x52, 0x3A, 0x29, 0xB0, 0xE6, + 0xB7, 0xAE, 0x20, 0xBE, 0x21, 0xDF, 0xF5, 0x67, + 0xEC, 0x82, 0x52, 0xFF, 0x5B, 0xD0, 0xAA, 0x14, + 0x50, 0x15, 0xE1, 0x1C, 0x6A, 0x1B, 0x94, 0x1B, + 0xCC, 0x76, 0x01, 0xBF, 0x03, 0x94, 0x42, 0xF2, + 0x00, 0x61, 0x96, 0x58, 0xD9, 0xD0, 0x40, 0x21, + 0xFA, 0xCE, 0x6B, 0xAB, 0x5D, 0x49, 0xD8, 0xD7, + 0xBC, 0x9A, 0x66, 0xC2, 0xBA, 0x3F, 0xDC, 0x49, + 0x0D, 0xA5, 0x5C, 0xB4, 0x67, 0x08, 0x38, 0xEB, + 0x2D, 0x07, 0x24, 0x5B, 0xB1, 0x22, 0x7B, 0x02, + 0x4A, 0x8A, 0x53, 0x38, 0xE9, 0x42, 0x8E, 0xA5, + 0x57, 0x41, 0xD6, 0x71, 0xA7, 0x9D, 0x6A, 0x14, + 0xD2, 0x7D, 0x13, 0xFB, 0x59, 0xD0, 0xDA, 0xE5, + 0x23, 0x9E, 0x1B, 0xC4, 0x21, 0x87, 0xBB, 0x78, + 0xE0, 0x38, 0x01, 0x1D, 0xA0, 0xD1, 0x36, 0x3F, + 0xD0, 0xA7, 0x8F, 0x86, 0x26, 0x1E, 0xB0, 0x26, + 0xDE, 0x7E, 0x17, 0x3A, 0x90, 0xFC, 0xC0, 0x17, + 0xDD, 0x78, 0xF5, 0xA3, 0x2D, 0x3E, 0x29, 0xCE, + 0x38, 0x45, 0x76, 0xA9, 0x55, 0x11, 0xB6, 0xB4, + 0xE5, 0x6E, 0xDD, 0x01, 0x4B, 0x16, 0x07, 0x99, + 0xBD, 0x19, 0x77, 0xF5, 0xD7, 0x9E, 0x39, 0x9E, + 0xAA, 0x8E, 0x2B, 0x75, 0xC5, 0xEB, 0x33, 0x56, + 0x6C, 0xD8, 0xB6, 0x3F, 0x3F, 0x4E, 0x81, 0x7E, + 0x29, 0x0A, 0x68, 0xED, 0x1E, 0x9F, 0xDC, 0x6B, + 0xFA, 0x18, 0xE3, 0xE5, 0x7D, 0x05, 0x7F, 0x22, + 0xFA, 0xA2, 0xF6, 0x0F, 0xB6, 0x34, 0x56, 0x72, + 0x55, 0x16, 0x5E, 0xF4, 0x18, 0xD1, 0x82, 0xFA, + 0xDD, 0xF7, 0xB8, 0x9F, 0x7D, 0x30, 0x10, 0x69, + 0xC4, 0x85, 0xD8, 0xE8, 0x34, 0x89, 0xD4, 0x93, + 0xBE, 0x56, 0xEE, 0xDC, 0x43, 0xD4, 0x82, 0x00, + 0xFD, 0x1E, 0x2B, 0x06, 0x69, 0x07, 0x1B, 0xBF, + 0x33, 0x61, 0x39, 0x28, 0xCA, 0x31, 0x91, 0x0B, + 0xF2, 0xEA, 0x32, 0x8E, 0xA8, 0x64, 0x13, 0x9A, + 0xEF, 0x79, 0x1A, 0x9A, 0xBE, 0x52, 0x13, 0x32, + 0x49, 0x93, 0x7D, 0xA8, 0x8C, 0x48, 0xD4, 0xC0, + 0x1D, 0x10, 0x8A, 0x46, 0x85, 0xAD, 0x29, 0xDF, + 0x2E, 0xCD, 0x41, 0x83, 0x82, 0x01, 0x28, 0x44, + 0x0E, 0xE5, 0x37, 0x8D, 0x6B, 0xCA, 0x61, 0x98, + 0xDE, 0x89, 0xA9, 0x7B, 0xBB, 0x44, 0x48, 0xA2, + 0x8D, 0x82, 0x3A, 0x57, 0x40, 0x60, 0x7C, 0x6E, + 0x69, 0x98, 0x98, 0x93, 0xFA, 0x7E, 0x29, 0x9A, + 0x74, 0x53, 0xD8, 0xDC, 0xB3, 0x4B, 0xDB, 0x7E, + 0xFE, 0x95, 0xB0, 0xC7, 0x23, 0x14, 0xEF, 0xCB, + 0x49, 0x3C, 0x09, 0xD7, 0x7B, 0xD0, 0x11, 0x9B, + 0xAC, 0xF2, 0xC2, 0x2E, 0x7C, 0xCB, 0xCD, 0x59, + 0x7F, 0x6A, 0x09, 0xFE, 0xFE, 0xDF, 0xA0, 0xA7, + 0xAC, 0x3C, 0x90, 0xBA, 0x75, 0x19, 0xF4, 0x01, + 0x60, 0x56, 0xD5, 0xFB, 0x41, 0x2B, 0xA0, 0x2D, + 0x0D, 0x45, 0xCF, 0xF3, 0xA6, 0x3D, 0x36, 0xEE, + 0xE1, 0xE4, 0x68, 0xE6, 0xEA, 0x2F, 0x67, 0x3A, + 0x7A, 0x02, 0x92, 0x6B, 0xB3, 0x18, 0xBA, 0x73, + 0xEE, 0x1B, 0x2C, 0x13, 0x7D, 0xEF, 0x4A, 0x39, + 0xE8, 0x03, 0xFF, 0x57, 0x35, 0x53, 0xE9, 0xA5, + 0xC6, 0xAA, 0x1A, 0x17, 0x21, 0xCA, 0x54, 0x38, + 0x7C, 0xB1, 0xDF, 0xB8, 0xFA, 0x7D, 0xA7, 0x26, + 0xB2, 0xAE, 0x7A, 0x05, 0x45, 0x3B, 0x40, 0x0A, + 0x19, 0xE5, 0x32, 0x52, 0x78, 0x9D, 0xC3, 0x20, + 0x63, 0x24, 0xB2, 0x58, 0x4B, 0x86, 0x1F, 0x00, + 0xA2, 0x50, 0xF9, 0x9F, 0xD9, 0xDC, 0x7D, 0x51, + 0x3D, 0xD7, 0xA6, 0x5A, 0x04, 0x03, 0x4E, 0xB3, + 0x3D, 0x2D, 0x56, 0xA4, 0x96, 0xB3, 0x6A, 0xBA, + 0x0A, 0x30, 0x08, 0xE3, 0x0F, 0xC1, 0x38, 0x24, + 0x88, 0x5D, 0x9E, 0x6F, 0x68, 0x1A, 0x7D, 0xB6, + 0x2D, 0xDD, 0xE3, 0x50, 0x1B, 0xD4, 0x07, 0x75, + 0xE2, 0xE2, 0xCC, 0x09, 0xCC, 0x8E, 0x4E, 0x67, + 0x02, 0x72, 0x02, 0xA8, 0x11, 0x70, 0xA5, 0x7F, + 0x4A, 0xC1, 0x98, 0xC1, 0x7F, 0xBF, 0x95, 0xBB, + 0xCE, 0xD3, 0x6D, 0x49, 0x30, 0xB9, 0x50, 0x8C, + 0xFA, 0x3E, 0x8B, 0xF6, 0xE5, 0x54, 0xE9, 0x1B, + 0xD7, 0xD6, 0xE5, 0x32, 0x33, 0xBB, 0x91, 0xAD, + 0xC8, 0x15, 0x76, 0x1A, 0x04, 0x35, 0xDE, 0xCC, + 0xE1, 0x67, 0x26, 0x4C, 0x2F, 0x4E, 0x34, 0x34, + 0x3D, 0x1E, 0x5A, 0xF7, 0xBC, 0xE6, 0x0C, 0x9B, + 0x7B, 0x7E, 0xE5, 0xDF, 0x72, 0x9A, 0x0D, 0xDD, + 0x4B, 0xE6, 0x6F, 0x82, 0xFB, 0x5E, 0x2C, 0xC0, + 0x7B, 0x03, 0x85, 0x76, 0x11, 0x0E, 0xFD, 0xC7, + 0xD5, 0x50, 0x26, 0xBE, 0x75, 0x5E, 0xC1, 0xF0, + 0x2E, 0x47, 0x62, 0xD6, 0xF1, 0xDA, 0xDF, 0xF4, + 0x1C, 0xEE, 0x63, 0x52, 0xC4, 0x45, 0x37, 0xE6, + 0x85, 0xA5, 0x0A, 0x07, 0x54, 0x63, 0x21, 0x7B, + 0x92, 0xF7, 0x33, 0x0C, 0xD9, 0x29, 0xCF, 0xE3, + 0xAB, 0xB5, 0xFC, 0xAA, 0x26, 0x20, 0x93, 0x55, + 0x8A, 0x07, 0x33, 0xB2, 0x7D, 0x95, 0x02, 0x7A, + 0x76, 0x9E, 0x7D, 0xBB, 0xC1, 0xF3, 0x6E, 0x84, + 0x10, 0x30, 0x4B, 0x5D, 0x59, 0x73, 0x68, 0xEC, + 0x2A, 0x63, 0x2D, 0x46, 0xE8, 0xC2, 0xF8, 0xEA, + 0x2B, 0xC4, 0x4F, 0xA7, 0x6E, 0xF4, 0x74, 0xEB, + 0x96, 0xA3, 0x64, 0x40, 0x9B, 0x23, 0x63, 0x42, + 0x4B, 0x8F, 0x85, 0x00, 0x43, 0x04, 0xAD, 0x61, + 0x76, 0x93, 0xBD, 0xC3, 0x88, 0xC3, 0xFC, 0x29, + 0x61, 0xBD, 0xB1, 0x5A, 0x1F, 0x5B, 0x20, 0xEF, + 0x95, 0xED, 0x99, 0x84, 0x96, 0xB2, 0x93, 0x81, + 0x82, 0xFF, 0xE3, 0xB9, 0x27, 0xEA, 0x9A, 0x23, + 0xF6, 0x42, 0x8D, 0xD3, 0x5C, 0x86, 0x11, 0xC8, + 0x39, 0xE3, 0x16, 0xE9, 0xA5, 0x32, 0x7C, 0xC9, + 0xEA, 0x82, 0x50, 0x9B, 0x21, 0x5C, 0xC9, 0x66, + 0xBE, 0x1C, 0x78, 0x48, 0xEF, 0x39, 0x2D, 0xA1, + 0xC6, 0xF3, 0x69, 0xA3, 0x36, 0x25, 0x3A, 0xA1, + 0x15, 0x2B, 0x6D, 0xCF, 0xDA, 0xA7, 0xCA, 0xDD, + 0x4D, 0x9A, 0x1D, 0x58, 0x9F, 0x73, 0xD3, 0xEF, + 0x0F, 0xBF, 0x03, 0x88, 0x2F, 0xDE, 0xB9, 0x44, + 0xB5, 0xB6, 0xCF, 0xE2, 0x6F, 0x6A, 0xB5, 0x12, + 0x38, 0x29, 0x55, 0x8C, 0x4C, 0x73, 0x6F, 0x0B, + 0x68, 0x7A, 0xC7, 0x06, 0x83, 0x80, 0xFE, 0x7F, + 0x61, 0xBE, 0x6B, 0x40, 0xE3, 0xF0, 0x4D, 0x7B, + 0x36, 0x82, 0x0F, 0xD8, 0x63, 0x29, 0xB3, 0x10, + 0x9D, 0x02, 0xEC, 0x63, 0x90, 0xEA, 0xFC, 0x8C, + 0xA7, 0x30, 0x56, 0x2B, 0x68, 0x08, 0x24, 0x24, + 0xFD, 0xA9, 0x8D, 0x0B, 0x64, 0xBC, 0x97, 0x34, + 0xB4, 0x0B, 0x63, 0xF7, 0xE3, 0x7A, 0xF6, 0x89, + 0x0A, 0xF7, 0xC2, 0xD9, 0x2F, 0x79, 0xEE, 0xA3, + 0xCC, 0xEA, 0xC6, 0x0A, 0x6F, 0x38, 0x06, 0x92, + 0xF8, 0x02, 0xB1, 0x55, 0x6A, 0x78, 0xFE, 0x55, + 0x83, 0xFF, 0x20, 0xA9, 0xC6, 0xA7, 0xBF, 0xCC, + 0x86, 0x3A, 0x9E, 0x7B, 0x62, 0x01, 0x4D, 0x16, + 0x05, 0xDE, 0x89, 0x4F, 0xB5, 0x85, 0xE2, 0xD4, + 0xF9, 0x41, 0x15, 0xE0, 0x29, 0xE5, 0x85, 0x7E, + 0x6A, 0x0A, 0x73, 0x89, 0x27, 0x5F, 0x53, 0x0D, + 0x3D, 0x80, 0xCF, 0xAB, 0x1F, 0x22, 0x5D, 0x38, + 0x33, 0x5D, 0x24, 0x67, 0x91, 0x97, 0xD4, 0x8A, + 0x01, 0x8A, 0x34, 0x18, 0x7D, 0xE3, 0xBC, 0xCE, + 0xDE, 0x94, 0xFF, 0x8E, 0xC5, 0x34, 0xC0, 0x2D, + 0xA7, 0x24, 0xD4, 0x59, 0x8D, 0x66, 0x9E, 0x85, + 0xA9, 0xC6, 0x0E, 0x45, 0x21, 0x4F, 0xAA, 0x65, + 0x44, 0xD6, 0xA4, 0x7D, 0x1C, 0x4E, 0xD7, 0x40, + 0x9D, 0x55, 0xB1, 0xA7, 0xF1, 0x15, 0xAE, 0x15, + 0x44, 0x3A, 0x1C, 0x31, 0x06, 0x40, 0xD1, 0x16, + 0x23, 0x84, 0x93, 0xEF, 0x3E, 0xE2, 0x87, 0x9B, + 0xB8, 0x46, 0x1F, 0x7D, 0x68, 0x73, 0x64, 0x70, + 0xD4, 0xB5, 0x73, 0xAE, 0x45, 0x49, 0x93, 0xF5, + 0x32, 0x30, 0x1E, 0x35, 0xCB, 0x9E, 0xEE, 0xDF, + 0xFE, 0xA8, 0x2F, 0xAC, 0x49, 0x77, 0x53, 0xF7, + 0x50, 0x19, 0xF2, 0xB3, 0xB0, 0x2C, 0x70, 0xB6, + 0x4A, 0x57, 0x95, 0x31, 0xC3, 0x26, 0x07, 0x2A, + 0xCF, 0x1B, 0xD0, 0xAA, 0xA0, 0x9F, 0x0A, 0x97, + 0x8B, 0x78, 0xAB, 0x22, 0xBD, 0x61, 0x19, 0xF8, + 0x8D, 0xD2, 0xD5, 0x72, 0xF8, 0x91, 0x9D, 0x47, + 0x4F, 0x59, 0x1D, 0xAE, 0x9F, 0xCE, 0x47, 0x53, + 0xC9, 0x85, 0xFB, 0x25, 0x04, 0x25, 0xF2, 0x65, + 0x61, 0xFF, 0xA9, 0x44, 0x3F, 0x23, 0x76, 0x68, + 0x9F, 0xEB, 0x48, 0xC4, 0xCE, 0x51, 0x46, 0x04, + 0x52, 0x6A, 0x10, 0x0A, 0xF3, 0x3F, 0x0D, 0x43, + 0x37, 0xD1, 0x60, 0x42, 0x22, 0xC4, 0xD9, 0xF9, + 0x3A, 0x8E, 0x69, 0xE4, 0xCC, 0xD3, 0x66, 0x69, + 0x09, 0x0C, 0x5D, 0xFB, 0x0E, 0x95, 0x49, 0x42, + 0x29, 0xFF, 0x9B, 0x20, 0xCC, 0xB1, 0xAC, 0x81, + 0xB8, 0x1A, 0x36, 0xD6, 0x3A, 0x85, 0x0D, 0xDB, + 0x33, 0x33, 0x4D, 0xAA, 0x51, 0x46, 0xBF, 0x36, + 0xFE, 0x18, 0x80, 0x1E, 0x3B, 0xEB, 0xD0, 0xE9, + 0x1B, 0x5E, 0x1C, 0xFE, 0x7A, 0x98, 0x26, 0x85, + 0x0A, 0xF4, 0x39, 0x7D, 0x1B, 0x07, 0xD3, 0xB7, + 0x19, 0xE5, 0x7B, 0xB8, 0x32, 0xAF, 0x42, 0x34, + 0xC0, 0xCD, 0x9F, 0xD4, 0x0B, 0x88, 0x2F, 0xCE, + 0xDA, 0x93, 0x7E, 0xF9, 0xA2, 0xDA, 0x24, 0x59, + 0x2B, 0xCB, 0x5D, 0x1B, 0xE8, 0x3E, 0xC5, 0xF0, + 0x3D, 0xBD, 0xFB, 0xCB, 0x33, 0x5D, 0x90, 0xD5, + 0xC8, 0xA0, 0x2E, 0xE5, 0x3D, 0x50, 0x8E, 0xB5, + 0xDE, 0x4A, 0x96, 0x1B, 0x95, 0x8F, 0x75, 0x1E, + 0x5F, 0x89, 0xA1, 0xD2, 0x88, 0x95, 0xA3, 0xDB, + 0x7B, 0x62, 0xEF, 0x4A, 0xE1, 0x6D, 0x28, 0xFB, + 0x78, 0x9B, 0x32, 0x03, 0xAD, 0x24, 0x63, 0xD6, + 0xEA, 0xB8, 0x3A, 0x6D, 0x20, 0xCE, 0xA1, 0x31, + 0x4A, 0xE0, 0x2A, 0x3F, 0xF6, 0xF6, 0x53, 0x15, + 0x4A, 0xE1, 0x44, 0x23, 0x81, 0x86, 0x21, 0x47, + 0x41, 0xC2, 0x36, 0x14, 0x81, 0x83, 0xBC, 0x39, + 0xAE, 0xDF, 0x44, 0xDA, 0x97, 0xF7, 0x31, 0xCE, + 0x3D, 0xCB, 0x61, 0xA4, 0xCF, 0xE1, 0x4F, 0x9E, + 0x84, 0xAA, 0x05, 0xAB, 0x1C, 0x1B, 0x95, 0x1D, + 0x20, 0x15, 0x52, 0x33, 0xFA, 0xFA, 0xF1, 0x6C, + 0xF1, 0xBD, 0x0B, 0xAF, 0xE1, 0x99, 0xE6, 0x5D, + 0x56, 0x34, 0x53, 0xBF, 0xE5, 0x5D, 0x5F, 0x47, + 0x4A, 0xB1, 0x05, 0x94, 0xD7, 0x38, 0xA8, 0xC1, + 0x06, 0x28, 0x8D, 0x69, 0xD0, 0x7A, 0x16, 0x88, + 0x60, 0x14, 0x63, 0xF3, 0xBD, 0x21, 0x46, 0x81, + 0x9C, 0x83, 0x72, 0x6D, 0x14, 0xC6, 0xA8, 0x08, + 0x39, 0xB8, 0x79, 0x0B, 0x57, 0x16, 0xE7, 0x72, + 0xF6, 0xC2, 0x4C, 0x2B, 0xEB, 0x7E, 0x2C, 0xF3, + 0x7B, 0x3F, 0x42, 0xAC, 0xDD, 0x47, 0x3E, 0x8C, + 0xCD, 0xBE, 0x48, 0x4D, 0x6E, 0x07, 0xB0, 0x73, + 0xDE, 0xCB, 0x17, 0x4A, 0xC3, 0xB8, 0xBB, 0x2E, + 0xF5, 0x4E, 0x6D, 0xF9, 0xE0, 0x20, 0x71, 0xFA, + 0x60, 0x0A, 0xE5, 0x59, 0x67, 0xEB, 0x6F, 0x70, + 0x2F, 0x71, 0x91, 0x59, 0xF0, 0xEB, 0x06, 0x5C, + 0xC4, 0x60, 0x48, 0xE8, 0x75, 0xE7, 0xCF, 0x42, + 0x71, 0xAD, 0x2E, 0xDA, 0xF9, 0x10, 0x82, 0x9A, + 0xF6, 0x13, 0xBA, 0x89, 0xFC, 0x61, 0x2A, 0x00, + 0xFD, 0xAE, 0x53, 0x7B, 0x09, 0x3A, 0xE8, 0xCB, + 0xE6, 0xB7, 0x0D, 0x03, 0x01, 0xFA, 0x2E, 0x13, + 0xA9, 0x16, 0x38, 0x1C, 0x92, 0xEC, 0xB4, 0x51, + 0xA3, 0x6E, 0x3F, 0xA8, 0xB7, 0x37, 0x36, 0x20, + 0xC0, 0x71, 0xA3, 0x05, 0x34, 0xED, 0xCB, 0x4A, + 0x3F, 0x11, 0x31, 0x17, 0xA5, 0x02, 0xD6, 0xA7, + 0x2D, 0xE6, 0xC7, 0x7B, 0xBB, 0xF6, 0xAE, 0x99, + 0x85, 0x9A, 0xAC, 0xE6, 0x4A, 0x92, 0x8C, 0x37, + 0x4B, 0xD2, 0xC4, 0x65, 0x2A, 0xC9, 0x7E, 0xB7, + 0x44, 0xD2, 0x9A, 0x70, 0xCE, 0xA9, 0xA1, 0x9D, + 0x70, 0x13, 0x49, 0x7B, 0xCA, 0xB6, 0x96, 0x31, + 0x43, 0x3F, 0x9E, 0xD1, 0xFE, 0x20, 0xF8, 0x0B, + 0x59, 0x83, 0xE1, 0x28, 0x8B, 0xB6, 0xA2, 0xBE, + 0x91, 0x54, 0x3E, 0xD4, 0x79, 0x28, 0xBB, 0x5E, + 0x46, 0x2D, 0x01, 0xE9, 0xC0, 0xB7, 0xFF, 0xFA, + 0xC0, 0x6C, 0x10, 0xF1, 0x52, 0xF4, 0x3C, 0x32, + 0x9E, 0x89, 0xDF, 0x8A, 0x79, 0x99, 0x6A, 0x09, + 0x79, 0x8A, 0x36, 0x76, 0x40, 0xBE, 0x9F, 0xB5, + 0x3D, 0xCE, 0x27, 0xBD, 0x0B, 0xAA, 0x9B, 0xF0, + 0x21, 0xBF, 0x10, 0xD2, 0xFC, 0xFE, 0x5B, 0x13, + 0xFD, 0x7D, 0x84, 0xD1, 0xC1, 0xEB, 0xC0, 0xBC, + 0xEC, 0x26, 0xD0, 0x87, 0x80, 0xD1, 0x3B, 0x99, + 0x47, 0x67, 0x26, 0x61, 0xE0, 0xFA, 0x5F, 0xAE, + 0x6F, 0x31, 0x5B, 0x6D, 0xE4, 0x01, 0x68, 0xC2, + 0x35, 0x1D, 0xE3, 0x1F, 0x41, 0xFF, 0x6C, 0x53, + 0x32, 0x26, 0xE1, 0xBC, 0xE3, 0xF8, 0xE2, 0x16, + 0xAF, 0x3B, 0xE6, 0x4C, 0x69, 0x33, 0x72, 0xA0, + 0x66, 0xB1, 0x75, 0xF7, 0x26, 0xCF, 0xCD, 0x64, + 0x2B, 0xAE, 0x98, 0x02, 0x92, 0xC1, 0xCB, 0x65, + 0xE0, 0x1F, 0x07, 0x29, 0x64, 0x0A, 0xB0, 0x09, + 0xCB, 0x98, 0x89, 0x2D, 0x6C, 0xFE, 0x40, 0x03, + 0x34, 0x55, 0xDE, 0xE7, 0x30, 0x33, 0xB6, 0xD5, + 0xE1, 0x9C, 0x59, 0x9F, 0x8A, 0x40, 0x0E, 0xB1, + 0x41, 0x52, 0x7D, 0xF2, 0xBB, 0xDD, 0xEF, 0x50, + 0xBB, 0xD5, 0xFB, 0x55, 0xAA, 0x5E, 0xFD, 0xB3, + 0x5D, 0x08, 0x56, 0x9B, 0x02, 0x97, 0xE2, 0x48, + 0x14, 0x69, 0xF1, 0x7B, 0x87, 0xB5, 0x08, 0x93, + 0x6A, 0x9C, 0x5C, 0x11, 0x08, 0x9A, 0xE9, 0xE4, + 0xB0, 0xCA, 0xC5, 0x74, 0x93, 0x93, 0xC8, 0x03, + 0xE4, 0x70, 0x39, 0xF5, 0x1B, 0x5C, 0xBD, 0x42, + 0xA6, 0xC9, 0xE1, 0x9E, 0xC3, 0xF6, 0x3C, 0x23, + 0x32, 0xE8, 0x77, 0x68, 0xA9, 0x60, 0xFA, 0x02, + 0x18, 0x6B, 0x7A, 0x2B, 0x02, 0x92, 0x65, 0x09, + 0x11, 0x46, 0x73, 0x04, 0x63, 0xDF, 0x8B, 0x37, + 0x5F, 0x24, 0xAA, 0x83, 0xBD, 0xD4, 0x1D, 0x13, + 0x04, 0xFC, 0x2F, 0xB5, 0x2D, 0xA1, 0x0F, 0x1F, + 0xED, 0x65, 0x29, 0x08, 0xCF, 0x8C, 0x52, 0x8F, + 0xB2, 0x62, 0x5F, 0x39, 0x3F, 0xC8, 0xC7, 0xB3, + 0x3F, 0xAD, 0x45, 0xBA, 0xD4, 0x7D, 0x38, 0x3D, + 0x2C, 0x04, 0xCF, 0x32, 0xE8, 0x07, 0x42, 0x5F, + 0x93, 0xD2, 0x35, 0x07, 0x21, 0xB7, 0xB2, 0xF5, + 0x96, 0x64, 0x8E, 0xB5, 0xE1, 0x38, 0x6B, 0x43, + 0xD1, 0x2E, 0xFD, 0xDB, 0x8F, 0xE2, 0x43, 0x6A, + 0xEC, 0x27, 0x8E, 0xE7, 0x68, 0x75, 0xB5, 0x23, + 0xC5, 0x43, 0x1D, 0x99, 0x48, 0x57, 0x73, 0xD9, + 0xAD, 0xBC, 0xD0, 0x14, 0xDD, 0x87, 0xBC, 0x68, + 0xFB, 0x82, 0xEE, 0x47, 0x4B, 0x22, 0xA5, 0x43, + 0x3A, 0xF9, 0xF9, 0x91, 0xFC, 0x34, 0xB2, 0x58, + 0x34, 0xDF, 0x13, 0x09, 0x9A, 0x46, 0xF5, 0x68, + 0xAF, 0xD1, 0x15, 0x5F, 0x32, 0x1B, 0x9D, 0xA9, + 0xE9, 0xC0, 0x63, 0x47, 0xAB, 0x3C, 0x1F, 0x59, + 0xF7, 0xEA, 0x0E, 0xD6, 0xCF, 0x47, 0xB3, 0xE9, + 0xAF, 0x65, 0x7A, 0xA7, 0xAE, 0x9B, 0xF8, 0x26, + 0x0B, 0x96, 0x9D, 0xE4, 0xAD, 0x24, 0xD3, 0xA8, + 0xCE, 0x95, 0xE5, 0x77, 0xD0, 0x44, 0x13, 0x05, + 0x06, 0x4E, 0x07, 0xB9, 0xA2, 0xC7, 0x5C, 0x3C, + 0x43, 0x80, 0x1F, 0xCE, 0xB7, 0x36, 0xFE, 0x3D, + 0x27, 0x1B, 0xE1, 0xF3, 0x6B, 0xFF, 0xC8, 0xE4, + 0x3D, 0xB1, 0x4A, 0x16, 0x24, 0x76, 0xBA, 0xEA, + 0x9D, 0x34, 0x6B, 0x52, 0x11, 0xAB, 0xD0, 0x06, + 0x08, 0xB1, 0x5A, 0xF3, 0xB5, 0xE6, 0x3A, 0x00, + 0xFF, 0x92, 0x8D, 0x1E, 0xA1, 0xA1, 0x8D, 0x75, + 0xFA, 0x7C, 0x6C, 0x1B, 0x0F, 0xB6, 0x27, 0x2E, + 0x55, 0xC3, 0xFE, 0x7E, 0x4D, 0x42, 0x05, 0xE5, + 0xCF, 0x0A, 0x1F, 0x87, 0x18, 0x30, 0x4E, 0x14, + 0xF2, 0xB4, 0xCC, 0x54, 0x3D, 0x04, 0x37, 0x34, + 0x1A, 0x4A, 0x31, 0x16, 0x01, 0xA9, 0x2E, 0x92, + 0x56, 0x6B, 0x7D, 0xFB, 0x42, 0x64, 0xE8, 0x70, + 0xE1, 0xB3, 0xA8, 0x75, 0xED, 0xBC, 0x00, 0x3A, + 0x56, 0x19, 0x70, 0xCF, 0x8A, 0x66, 0x9F, 0x3D, + 0x1B, 0x69, 0x28, 0x8C, 0xC6, 0xE3, 0x59, 0xCE, + 0x28, 0xCA, 0x65, 0xF9, 0xDA, 0xE8, 0xCE, 0xCA, + 0x74, 0x3C, 0x1C, 0x8D, 0x9F, 0xFB, 0x55, 0x08, + 0x82, 0x4A, 0x83, 0x61, 0xE3, 0x3B, 0x43, 0x1A, + 0x2E, 0x9E, 0x9A, 0x99, 0x78, 0x47, 0xD2, 0xE6, + 0xE4, 0x3C, 0x83, 0xF0, 0x22, 0x62, 0xE2, 0x94, + 0x6D, 0xF7, 0x72, 0x6D, 0x54, 0xE3, 0xE6, 0xC9, + 0xCC, 0xDB, 0x6D, 0x3F, 0x13, 0x63, 0x46, 0xC1, + 0x1E, 0x59, 0x42, 0xE7, 0xA1, 0xBF, 0x85, 0x0C, + 0x2E, 0x99, 0xB4, 0xFA, 0xCE, 0x75, 0xFD, 0x40, + 0x88, 0x69, 0x33, 0x90, 0x7C, 0xCD, 0xFC, 0x0D, + 0xE1, 0x17, 0x70, 0x20, 0x31, 0x94, 0x1D, 0x00, + 0x1E, 0x2A, 0x68, 0x3C, 0x55, 0x78, 0xFD, 0x33, + 0x54, 0x21, 0x2C, 0xEA, 0xD9, 0x69, 0xBF, 0x1C, + 0x81, 0x23, 0x9E, 0xEC, 0xC7, 0x74, 0xFD, 0x0B, + 0x88, 0x3D, 0x0E, 0xEE, 0x82, 0x4B, 0x10, 0xB8, + 0x79, 0xCF, 0x70, 0x7C, 0xB2, 0x68, 0x47, 0x45, + 0x22, 0x06, 0x1E, 0x92, 0x7B, 0x12, 0x43, 0x24, + 0x41, 0x15, 0xC6, 0x69, 0xE9, 0xEB, 0x27, 0x2B, + 0x60, 0xA6, 0x44, 0xF5, 0x19, 0xEF, 0xEC, 0x06, + 0x34, 0x08, 0xB6, 0x58, 0x47, 0x2E, 0x91, 0x61, + 0xA1, 0xF7, 0x44, 0xFD, 0x66, 0x16, 0x9F, 0x0C, + 0xAE, 0x36, 0xB4, 0x2E, 0x23, 0x79, 0xCB, 0xE8, + 0x1E, 0x6E, 0x51, 0xA0, 0xF5, 0x34, 0x15, 0x18, + 0x4E, 0xA0, 0x06, 0xB2, 0x27, 0x0B, 0x33, 0xE2, + 0xCA, 0x36, 0x4C, 0xDB, 0x33, 0xAA, 0xAE, 0x77, + 0xFF, 0xD9, 0x53, 0xDB, 0x39, 0x70, 0x4D, 0x49, + 0x0C, 0xE9, 0xAC, 0x6F, 0x2D, 0xD1, 0xC7, 0xA1, + 0x8E, 0x61, 0x74, 0x19, 0xA9, 0xAA, 0xFB, 0x37, + 0xE7, 0x23, 0x9B, 0x23, 0x6A, 0x4B, 0x74, 0xCE, + 0x63, 0xE4, 0xA0, 0xAD, 0xFF, 0x85, 0x5D, 0xCD, + 0x78, 0xF6, 0x45, 0x8E, 0x76, 0x0B, 0xFD, 0x1D, + 0x2A, 0xB9, 0x5E, 0x83, 0xC0, 0x3B, 0x6F, 0xAE, + 0x0C, 0xD3, 0xC5, 0xCE, 0xEE, 0xEE, 0x1C, 0x69, + 0x51, 0x59, 0x65, 0xA3, 0x35, 0xFC, 0xF7, 0x8E, + 0x80, 0xAA, 0x73, 0x93, 0x39, 0x54, 0x21, 0x27, + 0x17, 0x0B, 0x2C, 0x3E, 0xE1, 0x0B, 0x0E, 0xAA, + 0x09, 0x9A, 0xC7, 0xAD, 0x4C, 0xD7, 0x6E, 0x7F, + 0xE4, 0xC1, 0x16, 0x4E, 0x62, 0xF4, 0xE5, 0x80, + 0x7D, 0xC0, 0x06, 0x1F, 0x77, 0xE4, 0xA8, 0xA5, + 0x28, 0xD7, 0x10, 0x37, 0x59, 0x30, 0xCB, 0x75, + 0x5B, 0x28, 0xBF, 0xFD, 0x92, 0x8C, 0xB0, 0x7B, + 0xB4, 0xA1, 0x07, 0xCD, 0xCA, 0xBB, 0x30, 0x8A, + 0x48, 0x65, 0x0D, 0xA4, 0xE5, 0x74, 0xD9, 0xBF, + 0x56, 0x07, 0xF5, 0x83, 0xDA, 0xC3, 0x40, 0xD7, + 0x20, 0x93, 0xEF, 0xB1, 0x2B, 0xBF, 0x93, 0x41, + 0x0F, 0x1E, 0xF5, 0xC9, 0x51, 0x6C, 0x74, 0x4D, + 0x23, 0x15, 0xEC, 0x9E, 0x00, 0x0A, 0x8D, 0xC5, + 0xD1, 0x7A, 0x7B, 0x6F, 0x0D, 0x07, 0x9D, 0x78, + 0x4B, 0x6D, 0x90, 0x19, 0x3F, 0x6E, 0x3E, 0xE7, + 0xEA, 0x0E, 0xAB, 0xFC, 0x6F, 0x68, 0xC5, 0x2B, + 0x37, 0xCB, 0xCE, 0x82, 0x18, 0xAF, 0xA3, 0x67, + 0x0A, 0x80, 0xBC, 0x17, 0xB9, 0x5D, 0x7B, 0x40, + 0x53, 0x62, 0x26, 0x35, 0x8F, 0x04, 0xAC, 0xD9, + 0x2A, 0x1B, 0xE1, 0x5B, 0x26, 0xA4, 0xE5, 0x81, + 0x7E, 0x62, 0x8B, 0xA6, 0x79, 0xB3, 0x52, 0x72, + 0x03, 0xCD, 0x36, 0x32, 0x62, 0x8E, 0xC8, 0x3A, + 0xA4, 0xF2, 0x18, 0x6D, 0x2F, 0x00, 0x5D, 0x5D, + 0xFE, 0x6F, 0x7F, 0xDB, 0x4F, 0xED, 0xAC, 0x9E, + 0x89, 0xD6, 0x66, 0xE3, 0x03, 0xBB, 0x56, 0x83, + 0x06, 0x15, 0x6C, 0x56, 0xF0, 0x95, 0x34, 0xE2, + 0x5C, 0x61, 0x9A, 0xB3, 0xB9, 0x50, 0x18, 0xF4, + 0x89, 0x6B, 0xAC, 0xAA, 0x48, 0x34, 0xF6, 0xD2, + 0xD8, 0xFE, 0x14, 0xA9, 0x38, 0xAA, 0x10, 0xE5, + 0x30, 0x54, 0xF0, 0x00, 0x84, 0x44, 0xAC, 0x2E, + 0xEA, 0x25, 0x38, 0xC1, 0x23, 0x0E, 0x6A, 0x18, + 0xC9, 0x2B, 0x01, 0xD9, 0x14, 0x7F, 0xDC, 0xEF, + 0xC9, 0xC8, 0xDA, 0xC1, 0xD4, 0xEC, 0xC8, 0xCF, + 0x1F, 0x96, 0x2E, 0xFA, 0x1B, 0x8C, 0xD3, 0xC9, + 0x69, 0x00, 0x0B, 0x7E, 0xBA, 0xC5, 0x98, 0xDC, + 0xA4, 0x5E, 0xB4, 0x0B, 0xCF, 0xB1, 0x98, 0x51, + 0x48, 0x38, 0x51, 0xCF, 0x34, 0x0F, 0x3E, 0x8C, + 0x23, 0x7A, 0x9E, 0xFF, 0x1C, 0x9F, 0x21, 0xE4, + 0x97, 0x55, 0x41, 0xC6, 0x1A, 0x8F, 0xEF, 0x2A, + 0xC6, 0x05, 0x7F, 0x59, 0xDC, 0xB2, 0x3A, 0x80, + 0xE8, 0x06, 0x10, 0xCD, 0x85, 0xDB, 0x20, 0x3C, + 0x35, 0xD2, 0x4B, 0xC8, 0x2B, 0x9C, 0xD7, 0x82, + 0x46, 0xF5, 0x9F, 0xEB, 0xB2, 0x48, 0x32, 0xD7, + 0xCD, 0x66, 0x4C, 0x99, 0x51, 0x88, 0xE0, 0x28, + 0x1C, 0xD7, 0x86, 0x79, 0x00, 0xDC, 0x0D, 0xF4, + 0x4D, 0x40, 0x90, 0x80, 0x26, 0x8B, 0x79, 0xE9, + 0x56, 0x82, 0x88, 0x5F, 0x22, 0x87, 0x70, 0x73, + 0x4F, 0xA5, 0x35, 0x18, 0xEC, 0x80, 0xCE, 0x23, + 0x06, 0xCE, 0x14, 0x48, 0x52, 0x4E, 0xF0, 0x18, + 0x43, 0x03, 0xD4, 0x50, 0xC7, 0x6E, 0xA6, 0x3B, + 0x73, 0x3E, 0xB0, 0xC8, 0xDC, 0x48, 0xBF, 0x12, + 0x42, 0x3A, 0xD2, 0x38, 0x89, 0xCF, 0xCD, 0xD8, + 0x91, 0xE5, 0x95, 0x00, 0x47, 0x24, 0x0D, 0xC0, + 0xC3, 0x8A, 0xB2, 0xDB, 0xC1, 0x65, 0xB8, 0x1E, + 0x63, 0x10, 0x02, 0xEA, 0x6F, 0x74, 0x11, 0x9E, + 0x27, 0xF9, 0xF8, 0x60, 0x73, 0xBF, 0x2D, 0xF7, + 0x10, 0x81, 0x86, 0x76, 0x98, 0x0C, 0x4C, 0xB6, + 0xBD, 0x53, 0xF9, 0xA5, 0x72, 0x17, 0x78, 0xB8, + 0x9F, 0x59, 0xC6, 0x8C, 0x89, 0x35, 0xF5, 0x03, + 0x1C, 0x8A, 0x93, 0x36, 0x7D, 0x71, 0x70, 0x57, + 0xFD, 0x4D, 0x5E, 0xFA, 0xBE, 0xDE, 0x70, 0x2C, + 0xC6, 0x45, 0xEF, 0xB6, 0xD7, 0xF4, 0x4C, 0x86, + 0x0F, 0xFF, 0x76, 0x37, 0xAA, 0xD9, 0x72, 0x24, + 0x8C, 0x84, 0x4D, 0x15, 0x13, 0x39, 0x20, 0x07, + 0x38, 0x91, 0xC3, 0x13, 0x5D, 0x29, 0x78, 0x68, + 0xB7, 0xDA, 0x86, 0xF0, 0x97, 0xD8, 0xFB, 0x39, + 0xC1, 0x3B, 0xA1, 0x4C, 0x4F, 0x24, 0x75, 0x16, + 0xAB, 0xA4, 0xC5, 0xF8, 0xCE, 0x38, 0x18, 0x48, + 0x2C, 0x8F, 0xF6, 0x0C, 0xCA, 0x51, 0xFD, 0xB2, + 0xCE, 0xE9, 0x6B, 0xC1, 0x13, 0x8D, 0xC0, 0x4A, + 0x86, 0xF8, 0x57, 0x72, 0x75, 0x91, 0xAA, 0xE6, + 0xF8, 0x7C, 0x30, 0x05, 0x9B, 0x3E, 0x81, 0xB6, + 0x80, 0x55, 0xB2, 0x4E, 0xA2, 0xFA, 0x98, 0x36, + 0x86, 0x49, 0x8B, 0xFC, 0x9D, 0x9E, 0x7D, 0x59, + 0x50, 0x79, 0xEB, 0x64, 0x6E, 0x85, 0xB2, 0x12, + 0xCE, 0xDD, 0x21, 0xD0, 0x08, 0x7E, 0x0F, 0x2A, + 0xF6, 0x63, 0xEB, 0x77, 0x2A, 0x98, 0x47, 0xB1, + 0xDF, 0x21, 0x97, 0xAF, 0x13, 0x62, 0x6B, 0x89, + 0x7C, 0x24, 0x63, 0x7A, 0xF5, 0xBF, 0xE8, 0x18, + 0x16, 0xA8, 0xC9, 0x0D, 0x30, 0x48, 0x37, 0x5B, + 0x69, 0x94, 0x97, 0x14, 0x3E, 0x57, 0x71, 0x85, + 0xA7, 0x0E, 0x11, 0x50, 0x58, 0xA3, 0xA9, 0x11, + 0x2B, 0x2C, 0x43, 0x51, 0xB6, 0xCA, 0xD0, 0x09, + 0x28, 0x2B, 0x4F, 0x7C, 0xB8, 0xBD, 0xFC, 0x28, + 0x57, 0x77, 0xD7, 0xDF, 0xE8, 0xF5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x06, 0x0B, 0x11, 0x17, + 0x1F, 0x27, 0x2E + }; +#endif +#endif + + key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectNotNull(key); + + if (key != NULL) { + XMEMSET(key, 0, sizeof(*key)); + } + + ExpectIntEQ(wc_dilithium_init_ex(key, NULL, INVALID_DEVID), 0); +#ifndef WOLFSSL_NO_ML_DSA_44 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_44, (word32)sizeof(pk_44), key), + 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_44, (word32)sizeof(sig_44), msg_44, + (word32)sizeof(msg_44), &res, key), 0); + ExpectIntEQ(res, 1); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_44_DRAFT), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_44_draft, + (word32)sizeof(pk_44_draft), key), 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_44_draft, + (word32)sizeof(sig_44_draft), msg_44_draft, + (word32)sizeof(msg_44_draft), &res, key), 0); + ExpectIntEQ(res, 1); +#endif +#endif +#ifndef WOLFSSL_NO_ML_DSA_65 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_65, (word32)sizeof(pk_65), key), + 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_65, (word32)sizeof(sig_65), msg_65, + (word32)sizeof(msg_65), &res, key), 0); + ExpectIntEQ(res, 1); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_65_DRAFT), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_65_draft, + (word32)sizeof(pk_65_draft), key), 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_65_draft, + (word32)sizeof(sig_65_draft), msg_65_draft, + (word32)sizeof(msg_65_draft), &res, key), 0); + ExpectIntEQ(res, 1); +#endif +#endif +#ifndef WOLFSSL_NO_ML_DSA_87 + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_87, (word32)sizeof(pk_87), key), + 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_87, (word32)sizeof(sig_87), msg_87, + (word32)sizeof(msg_87), &res, key), 0); + ExpectIntEQ(res, 1); +#ifdef WOLFSSL_DILITHIUM_FIPS204_DRAFT + ExpectIntEQ(wc_dilithium_set_level(key, WC_ML_DSA_87_DRAFT), 0); + ExpectIntEQ(wc_dilithium_import_public(pk_87_draft, + (word32)sizeof(pk_87_draft), key), 0); + ExpectIntEQ(wc_dilithium_verify_msg(sig_87_draft, + (word32)sizeof(sig_87_draft), msg_87_draft, + (word32)sizeof(msg_87_draft), &res, key), 0); + ExpectIntEQ(res, 1); +#endif +#endif + + wc_dilithium_free(key); + XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} + diff --git a/tests/api/test_mldsa.h b/tests/api/test_mldsa.h new file mode 100644 index 000000000..9b77d4620 --- /dev/null +++ b/tests/api/test_mldsa.h @@ -0,0 +1,52 @@ +/* test_mldsa.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_MLDSA_H +#define WOLFCRYPT_TEST_MLDSA_H + +#include + +int test_wc_dilithium(void); +int test_wc_dilithium_make_key(void); +int test_wc_dilithium_sign(void); +int test_wc_dilithium_verify(void); +int test_wc_dilithium_sign_vfy(void); +int test_wc_dilithium_check_key(void); +int test_wc_dilithium_public_der_decode(void); +int test_wc_dilithium_der(void); +int test_wc_dilithium_make_key_from_seed(void); +int test_wc_dilithium_sig_kats(void); +int test_wc_dilithium_verify_kats(void); + +#define TEST_MLDSA_DECLS \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_make_key), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_sign), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_verify), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_sign_vfy), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_check_key), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_public_der_decode), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_der), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_make_key_from_seed), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_sig_kats), \ + TEST_DECL_GROUP("mldsa", test_wc_dilithium_verify_kats) + +#endif /* WOLFCRYPT_TEST_MLDSA_H */ diff --git a/tests/api/test_mlkem.h b/tests/api/test_mlkem.h index c726edbe4..0dc6651d9 100644 --- a/tests/api/test_mlkem.h +++ b/tests/api/test_mlkem.h @@ -22,8 +22,15 @@ #ifndef WOLFCRYPT_TEST_MLKEM_H #define WOLFCRYPT_TEST_MLKEM_H +#include + int test_wc_mlkem_make_key_kats(void); int test_wc_mlkem_encapsulate_kats(void); int test_wc_mlkem_decapsulate_kats(void); +#define TEST_MLKEM_DECLS \ + TEST_DECL_GROUP("mlkem", test_wc_mlkem_make_key_kats), \ + TEST_DECL_GROUP("mlkem", test_wc_mlkem_encapsulate_kats), \ + TEST_DECL_GROUP("mlkem", test_wc_mlkem_decapsulate_kats) + #endif /* WOLFCRYPT_TEST_MLKEM_H */ diff --git a/tests/api/test_ocsp.c b/tests/api/test_ocsp.c index 7d2c9fddf..4bc1d0410 100644 --- a/tests/api/test_ocsp.c +++ b/tests/api/test_ocsp.c @@ -34,7 +34,7 @@ #include #include -#if defined(HAVE_OCSP) && !defined(NO_SHA) +#if defined(HAVE_OCSP) && !defined(NO_SHA) && !defined(NO_RSA) struct ocsp_cb_ctx { byte* response; int responseSz; @@ -155,7 +155,6 @@ int test_ocsp_response_parsing(void) conf.targetCertSz = sizeof(intermediate1_ca_cert_pem); ExpectIntEQ(test_ocsp_response_with_cm(&conf, WOLFSSL_SUCCESS), TEST_SUCCESS); - return EXPECT_SUCCESS(); } #else /* HAVE_OCSP && !NO_SHA */ @@ -165,7 +164,8 @@ int test_ocsp_response_parsing(void) } #endif /* HAVE_OCSP && !NO_SHA */ -#if defined(HAVE_OCSP) && (defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA)) +#if defined(HAVE_OCSP) && (defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA)) && \ + !defined(NO_RSA) static int test_ocsp_create_x509store(WOLFSSL_X509_STORE** store, unsigned char* ca, int caSz) { @@ -349,7 +349,6 @@ int test_ocsp_basic_verify(void) wc_FreeDecodedCert(&cert); wolfSSL_sk_X509_pop_free(certs, wolfSSL_X509_free); wolfSSL_X509_STORE_free(store); - return EXPECT_RESULT(); } #else @@ -594,7 +593,7 @@ int test_ocsp_status_callback(void) && defined(OPENSSL_ALL) */ #if !defined(NO_SHA) && defined(OPENSSL_ALL) && defined(HAVE_OCSP) && \ - !defined(WOLFSSL_SM3) && !defined(WOLFSSL_SM2) + !defined(WOLFSSL_SM3) && !defined(WOLFSSL_SM2) && !defined(NO_RSA) int test_ocsp_certid_enc_dec(void) { EXPECT_DECLS; @@ -651,7 +650,6 @@ int test_ocsp_certid_enc_dec(void) wolfSSL_OCSP_CERTID_free(certIdDec); wolfSSL_X509_free(subject); wolfSSL_X509_free(issuer); - return EXPECT_SUCCESS(); } #else /* !NO_SHA && OPENSSL_ALL && HAVE_OCSP && !WOLFSSL_SM3 && !WOLFSSL_SM2 */ diff --git a/tests/api/test_poly1305.h b/tests/api/test_poly1305.h index 0986d6cf0..15225ee87 100644 --- a/tests/api/test_poly1305.h +++ b/tests/api/test_poly1305.h @@ -22,6 +22,11 @@ #ifndef WOLFCRYPT_TEST_POLY1305_H #define WOLFCRYPT_TEST_POLY1305_H +#include + int test_wc_Poly1305SetKey(void); +#define TEST_POLY1305_DECLS \ + TEST_DECL_GROUP("poly1305", test_wc_Poly1305SetKey) + #endif /* WOLFCRYPT_TEST_POLY1305_H */ diff --git a/tests/api/test_random.c b/tests/api/test_random.c new file mode 100644 index 000000000..3e0fc1204 --- /dev/null +++ b/tests/api/test_random.c @@ -0,0 +1,535 @@ +/* test_random.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + + +int test_wc_InitRng(void) +{ + EXPECT_DECLS; +#ifndef WC_NO_RNG + WC_RNG rng[1]; + + (void)rng; + + /* Bad parameter. */ + ExpectIntEQ(wc_InitRng(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_InitRng_ex(NULL, HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_FreeRng(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + +#ifdef HAVE_HASHDRBG + /* Good parameter. */ + ExpectIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(wc_FreeRng(rng), 0); + ExpectIntEQ(wc_InitRng_ex(rng, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_FreeRng(rng), 0); +#endif +#elif !defined(HAVE_FIPS) || \ + (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) + WC_RNG rng[1]; + + (void)rng; + + ExpectIntEQ(wc_InitRng(NULL), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + ExpectIntEQ(wc_InitRng_ex(NULL, HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + ExpectIntEQ(wc_FreeRng(NULL), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + + ExpectIntEQ(wc_InitRng(rng), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + ExpectIntEQ(wc_InitRng_ex(rng, HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(NOT_COMPILED_IN)); + ExpectIntEQ(wc_FreeRng(rng), WC_NO_ERR_TRACE(NOT_COMPILED_IN)); +#endif + return EXPECT_RESULT(); +} + + +int test_wc_RNG_GenerateBlock_Reseed(void) +{ + EXPECT_DECLS; +#if defined(HAVE_HASHDRBG) && defined(TEST_RESEED_INTERVAL) + int i; + WC_RNG rng; + byte key[32]; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + for (i = 0; i < WC_RESEED_INTERVAL + 10; i++) { + ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key, sizeof(key)), 0); + } + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_RNG_GenerateBlock(void) +{ + EXPECT_DECLS; +#ifdef HAVE_HASHDRBG + int i; + WC_RNG rng; + byte key[32]; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + + /* Bad parameters. */ + ExpectIntEQ(wc_RNG_GenerateBlock(NULL, NULL, sizeof(key)), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_GenerateBlock(&rng, NULL, sizeof(key)), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_GenerateBlock(NULL, key , sizeof(key)), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + for (i = 0; i <= (int)sizeof(key); i++) { + ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key + i, sizeof(key) - i), 0); + } + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_RNG_GenerateByte(void) +{ + EXPECT_DECLS; +#ifdef HAVE_HASHDRBG + int i; + WC_RNG rng; + byte output[10]; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + + /* Bad parameters. */ + ExpectIntEQ(wc_RNG_GenerateByte(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_GenerateByte(&rng, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_GenerateByte(NULL, output), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + for (i = 0; i < (int)sizeof(output); i++) { + ExpectIntEQ(wc_RNG_GenerateByte(&rng, output + i), 0); + } + + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_InitRngNonce(void) +{ + EXPECT_DECLS; +#if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + WC_RNG rng; + byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" + "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; + word32 nonceSz = sizeof(nonce); + + /* Bad parameters. */ + ExpectIntEQ(wc_InitRngNonce(NULL, NULL , nonceSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_InitRngNonce(&rng, NULL , nonceSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_InitRngNonce(NULL, nonce, nonceSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good parameters. */ + ExpectIntEQ(wc_InitRngNonce(&rng, nonce, nonceSz), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); + ExpectIntEQ(wc_InitRngNonce(&rng, NULL, 0), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); + ExpectIntEQ(wc_InitRngNonce(&rng, nonce, 0), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_InitRngNonce_ex(void) +{ + EXPECT_DECLS; +#if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + WC_RNG rng; + byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" + "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; + word32 nonceSz = sizeof(nonce); + + /* Bad parameters. */ + ExpectIntEQ(wc_InitRngNonce_ex(NULL, NULL , nonceSz, HEAP_HINT, testDevId), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_InitRngNonce_ex(&rng, NULL , nonceSz, HEAP_HINT, testDevId), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_InitRngNonce_ex(NULL, nonce, nonceSz, HEAP_HINT, testDevId), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_InitRngNonce_ex(&rng, nonce, nonceSz, HEAP_HINT, testDevId), + 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); + ExpectIntEQ(wc_InitRngNonce_ex(&rng, NULL, 0, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); + ExpectIntEQ(wc_InitRngNonce_ex(&rng, nonce, 0, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_GenerateSeed(void) +{ + EXPECT_DECLS; +#if !defined(WC_NO_RNG) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) + OS_Seed seed[1]; + byte output[16]; + + XMEMSET(seed, 0, sizeof(OS_Seed)); + + /* Different configurations have different paths and different errors or + * no error at all. */ +#ifdef TEST_WC_GENERATE_SEED_PARAMS + /* Bad parameters. */ + ExpectIntEQ(wc_GenerateSeed(NULL, NULL , 16), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntLT(wc_GenerateSeed(seed, NULL , 16), 0); + ExpectIntEQ(wc_GenerateSeed(NULL, output, 16), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + + /* Good parameters. */ + ExpectIntEQ(wc_GenerateSeed(seed, output, 16), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_rng_new(void) +{ + EXPECT_DECLS; +#if !defined(WC_NO_RNG) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) && \ + !defined(WOLFSSL_NO_MALLOC) + WC_RNG* rng = NULL; + unsigned char nonce[16]; + word32 nonceSz = (word32)sizeof(nonce); + + XMEMSET(nonce, 0xa5, nonceSz); + + /* Bad parameters. */ + ExpectNull(wc_rng_new(NULL, nonceSz, HEAP_HINT)); + ExpectIntEQ(wc_rng_new_ex(&rng, NULL, nonceSz, HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectNull(rng); + + /* Good parameters. */ + ExpectNotNull(rng = wc_rng_new(nonce, nonceSz, HEAP_HINT)); +#ifdef HAVE_HASHDRBG + /* Ensure random object is usable. */ + ExpectIntEQ(wc_RNG_GenerateBlock(rng, nonce, nonceSz), 0); +#endif + wc_rng_free(rng); + rng = NULL; + ExpectNotNull(rng = wc_rng_new(nonce, 0, HEAP_HINT)); +#ifdef HAVE_HASHDRBG + /* Ensure random object is usable. */ + ExpectIntEQ(wc_RNG_GenerateBlock(rng, nonce, nonceSz), 0); +#endif + wc_rng_free(rng); + rng = NULL; + + ExpectIntEQ(wc_rng_new_ex(&rng, nonce, nonceSz, HEAP_HINT, INVALID_DEVID), + 0); + ExpectNotNull(rng); +#ifdef HAVE_HASHDRBG + /* Ensure random object is usable. */ + ExpectIntEQ(wc_RNG_GenerateBlock(rng, nonce, nonceSz), 0); +#endif + wc_rng_free(rng); + rng = NULL; + ExpectIntEQ(wc_rng_new_ex(&rng, nonce, 0, HEAP_HINT, INVALID_DEVID), 0); + ExpectNotNull(rng); +#ifdef HAVE_HASHDRBG + /* Ensure random object is usable. */ + ExpectIntEQ(wc_RNG_GenerateBlock(rng, nonce, nonceSz), 0); +#endif + wc_rng_free(rng); + + wc_rng_free(NULL); +#endif + return EXPECT_RESULT(); +} + +int test_wc_RNG_DRBG_Reseed(void) +{ + EXPECT_DECLS; +#if defined(HAVE_HASHDRBG) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) + WC_RNG rng[1]; + byte entropy[16]; + word32 entropySz = sizeof(entropy); + + XMEMSET(entropy, 0xa5, entropySz); + + ExpectIntEQ(wc_InitRng(rng), 0); + + /* Bad Parameters. */ + ExpectIntEQ(wc_RNG_DRBG_Reseed(NULL, NULL, entropySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_DRBG_Reseed(rng, NULL, entropySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_DRBG_Reseed(NULL, entropy, entropySz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good Parameters. */ + ExpectIntEQ(wc_RNG_DRBG_Reseed(rng, entropy, entropySz), 0); + ExpectIntEQ(wc_RNG_GenerateBlock(rng, entropy, entropySz), 0); + ExpectIntEQ(wc_RNG_DRBG_Reseed(rng, entropy, 0), 0); + ExpectIntEQ(wc_RNG_GenerateBlock(rng, entropy, entropySz), 0); + + ExpectIntEQ(wc_FreeRng(rng), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_RNG_TestSeed(void) +{ + EXPECT_DECLS; +#if defined(HAVE_HASHDRBG) && \ + !(defined(HAVE_FIPS) || defined(HAVE_SELFTEST)) || \ + (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) + byte seed[16]; + byte i; + +#ifdef TEST_WC_RNG_TESTSEED_BAD_PARAMS + /* Doesn't handle NULL. */ + ExpectIntEQ(wc_RNG_TestSeed(NULL, sizeof(seed)), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* Doesn't handle seed being less than SEED_BLOCK_SZ which is not public + * and is different for different configurations. */ + for (i = 0; i < 4; i++) { + ExpectIntEQ(wc_RNG_TestSeed(seed, i), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + } +#endif + + /* Bad seed as it repeats. */ + XMEMSET(seed, 0xa5, sizeof(seed)); + /* Return value is DRBG_CONT_FAILURE which is not public. */ + ExpectIntGT(wc_RNG_TestSeed(seed, sizeof(seed)), 0); + + /* Good seed. */ + for (i = 0; i < (byte)sizeof(seed); i++) + seed[i] = i; + ExpectIntEQ(wc_RNG_TestSeed(seed, sizeof(seed)), 0); +#endif + return EXPECT_RESULT(); +} + +int test_wc_RNG_HealthTest(void) +{ + EXPECT_DECLS; +#if defined(HAVE_HASHDRBG) + static const byte test1Seed[] = { + 0xa6, 0x5a, 0xd0, 0xf3, 0x45, 0xdb, 0x4e, 0x0e, + 0xff, 0xe8, 0x75, 0xc3, 0xa2, 0xe7, 0x1f, 0x42, + 0xc7, 0x12, 0x9d, 0x62, 0x0f, 0xf5, 0xc1, 0x19, + 0xa9, 0xef, 0x55, 0xf0, 0x51, 0x85, 0xe0, 0xfb, + 0x85, 0x81, 0xf9, 0x31, 0x75, 0x17, 0x27, 0x6e, + 0x06, 0xe9, 0x60, 0x7d, 0xdb, 0xcb, 0xcc, 0x2e + }; + static const byte test1Output[] = { + 0xd3, 0xe1, 0x60, 0xc3, 0x5b, 0x99, 0xf3, 0x40, + 0xb2, 0x62, 0x82, 0x64, 0xd1, 0x75, 0x10, 0x60, + 0xe0, 0x04, 0x5d, 0xa3, 0x83, 0xff, 0x57, 0xa5, + 0x7d, 0x73, 0xa6, 0x73, 0xd2, 0xb8, 0xd8, 0x0d, + 0xaa, 0xf6, 0xa6, 0xc3, 0x5a, 0x91, 0xbb, 0x45, + 0x79, 0xd7, 0x3f, 0xd0, 0xc8, 0xfe, 0xd1, 0x11, + 0xb0, 0x39, 0x13, 0x06, 0x82, 0x8a, 0xdf, 0xed, + 0x52, 0x8f, 0x01, 0x81, 0x21, 0xb3, 0xfe, 0xbd, + 0xc3, 0x43, 0xe7, 0x97, 0xb8, 0x7d, 0xbb, 0x63, + 0xdb, 0x13, 0x33, 0xde, 0xd9, 0xd1, 0xec, 0xe1, + 0x77, 0xcf, 0xa6, 0xb7, 0x1f, 0xe8, 0xab, 0x1d, + 0xa4, 0x66, 0x24, 0xed, 0x64, 0x15, 0xe5, 0x1c, + 0xcd, 0xe2, 0xc7, 0xca, 0x86, 0xe2, 0x83, 0x99, + 0x0e, 0xea, 0xeb, 0x91, 0x12, 0x04, 0x15, 0x52, + 0x8b, 0x22, 0x95, 0x91, 0x02, 0x81, 0xb0, 0x2d, + 0xd4, 0x31, 0xf4, 0xc9, 0xf7, 0x04, 0x27, 0xdf + }; + static const byte test2SeedA[] = { + 0x63, 0x36, 0x33, 0x77, 0xe4, 0x1e, 0x86, 0x46, + 0x8d, 0xeb, 0x0a, 0xb4, 0xa8, 0xed, 0x68, 0x3f, + 0x6a, 0x13, 0x4e, 0x47, 0xe0, 0x14, 0xc7, 0x00, + 0x45, 0x4e, 0x81, 0xe9, 0x53, 0x58, 0xa5, 0x69, + 0x80, 0x8a, 0xa3, 0x8f, 0x2a, 0x72, 0xa6, 0x23, + 0x59, 0x91, 0x5a, 0x9f, 0x8a, 0x04, 0xca, 0x68 + }; + static const byte test2SeedB[] = { + 0xe6, 0x2b, 0x8a, 0x8e, 0xe8, 0xf1, 0x41, 0xb6, + 0x98, 0x05, 0x66, 0xe3, 0xbf, 0xe3, 0xc0, 0x49, + 0x03, 0xda, 0xd4, 0xac, 0x2c, 0xdf, 0x9f, 0x22, + 0x80, 0x01, 0x0a, 0x67, 0x39, 0xbc, 0x83, 0xd3 + }; + static const byte test2Output[] = { + 0x04, 0xee, 0xc6, 0x3b, 0xb2, 0x31, 0xdf, 0x2c, + 0x63, 0x0a, 0x1a, 0xfb, 0xe7, 0x24, 0x94, 0x9d, + 0x00, 0x5a, 0x58, 0x78, 0x51, 0xe1, 0xaa, 0x79, + 0x5e, 0x47, 0x73, 0x47, 0xc8, 0xb0, 0x56, 0x62, + 0x1c, 0x18, 0xbd, 0xdc, 0xdd, 0x8d, 0x99, 0xfc, + 0x5f, 0xc2, 0xb9, 0x20, 0x53, 0xd8, 0xcf, 0xac, + 0xfb, 0x0b, 0xb8, 0x83, 0x12, 0x05, 0xfa, 0xd1, + 0xdd, 0xd6, 0xc0, 0x71, 0x31, 0x8a, 0x60, 0x18, + 0xf0, 0x3b, 0x73, 0xf5, 0xed, 0xe4, 0xd4, 0xd0, + 0x71, 0xf9, 0xde, 0x03, 0xfd, 0x7a, 0xea, 0x10, + 0x5d, 0x92, 0x99, 0xb8, 0xaf, 0x99, 0xaa, 0x07, + 0x5b, 0xdb, 0x4d, 0xb9, 0xaa, 0x28, 0xc1, 0x8d, + 0x17, 0x4b, 0x56, 0xee, 0x2a, 0x01, 0x4d, 0x09, + 0x88, 0x96, 0xff, 0x22, 0x82, 0xc9, 0x55, 0xa8, + 0x19, 0x69, 0xe0, 0x69, 0xfa, 0x8c, 0xe0, 0x07, + 0xa1, 0x80, 0x18, 0x3a, 0x07, 0xdf, 0xae, 0x17 + }; +#if !(defined(HAVE_FIPS) || defined(HAVE_SELFTEST)) || \ + (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) + static const byte testEx1Nonce[] = { + 0x89, 0xc9, 0x49, 0xe9, 0xc8, 0x04, 0xaf, 0x01, + 0x4d, 0x56, 0x04, 0xb3, 0x94, 0x59, 0xf2, 0xc8 + }; + static const byte testEx1Output[] = { + 0x2d, 0xa7, 0x72, 0x76, 0xe2, 0xab, 0xf5, 0x79, + 0x08, 0x4f, 0x1a, 0xf3, 0x53, 0xb4, 0xec, 0x58, + 0x07, 0x09, 0x1f, 0x61, 0xa4, 0x3c, 0x65, 0x38, + 0xd3, 0x43, 0x66, 0x29, 0x10, 0x81, 0x33, 0xa6, + 0xb8, 0x71, 0x8d, 0xc0, 0x27, 0x80, 0xfe, 0x11, + 0x85, 0xc6, 0xe6, 0x40, 0x69, 0x23, 0x39, 0x74, + 0x4a, 0xc9, 0xdc, 0x68, 0x6f, 0x47, 0x5c, 0x5c, + 0x56, 0xc8, 0x00, 0x78, 0xcf, 0x12, 0x7a, 0x67, + 0x27, 0x1b, 0xe7, 0x14, 0xdf, 0x9d, 0x22, 0xb5, + 0x5a, 0x8a, 0x2f, 0xdd, 0x7b, 0x6f, 0xb7, 0xf4, + 0xe3, 0x58, 0x8e, 0x6c, 0x79, 0x09, 0xf1, 0xe3, + 0x15, 0x1d, 0x9f, 0x1f, 0x69, 0x23, 0x70, 0x2f, + 0xd0, 0xee, 0x4e, 0xdd, 0x02, 0x56, 0xeb, 0x3f, + 0x25, 0xcc, 0x63, 0x06, 0x70, 0x97, 0x07, 0x76, + 0xb3, 0xe1, 0x39, 0xbd, 0xd3, 0xc2, 0x12, 0xeb, + 0x42, 0x77, 0xe8, 0xc5, 0xd0, 0xde, 0xf1, 0x4f + }; + static const byte testEx2Nonce[] = { + 0xeb, 0xb7, 0x73, 0xf9, 0x93, 0x27, 0x8e, 0xff, + 0xf0, 0x51, 0x77, 0x8b, 0x65, 0xdb, 0x13, 0x57 + }; + static const byte testEx2Output[] = { + 0x40, 0xb2, 0xeb, 0x2b, 0x10, 0x53, 0x30, 0x8f, + 0xe4, 0xa0, 0x47, 0xe0, 0x24, 0x22, 0xe7, 0x03, + 0x03, 0x90, 0x91, 0x7b, 0xa5, 0xa8, 0xa2, 0xfd, + 0xba, 0x3b, 0xc9, 0x8e, 0xfb, 0x39, 0xef, 0xd9, + 0xae, 0x62, 0xb7, 0x0b, 0x21, 0xe6, 0x93, 0x22, + 0xeb, 0x3d, 0x3b, 0x00, 0x59, 0xaa, 0xc0, 0x27, + 0x0c, 0xde, 0xb4, 0xbd, 0x5c, 0x73, 0xa6, 0x51, + 0xf5, 0x55, 0x2c, 0xf4, 0xb8, 0xc8, 0x46, 0x04, + 0x03, 0x63, 0xa7, 0x9f, 0x81, 0xd1, 0x34, 0x1c, + 0x93, 0x86, 0x43, 0x09, 0x4c, 0x0e, 0x0a, 0x7d, + 0x54, 0x63, 0xc4, 0x72, 0xbe, 0xe3, 0x30, 0x39, + 0x3b, 0x1b, 0x8d, 0xbe, 0x55, 0x9a, 0x46, 0x11, + 0x75, 0x22, 0x00, 0xcc, 0x5a, 0xa6, 0xbb, 0x8c, + 0xd1, 0x70, 0xba, 0xbc, 0x3c, 0xf5, 0xcf, 0x81, + 0xa5, 0x17, 0x5a, 0x34, 0x0c, 0x29, 0xca, 0xcf, + 0x2b, 0x27, 0x38, 0x42, 0x21, 0x32, 0x9b, 0xc0 + }; +#endif + byte output[WC_SHA256_DIGEST_SIZE * 4]; + + /* Bad parameters. */ + ExpectIntEQ(wc_RNG_HealthTest(0, NULL , 0 , NULL, 0, + NULL , 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest(0, test1Seed, sizeof(test1Seed), NULL, 0, + NULL , 0 ), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest(0, NULL , 0 , NULL, 0, + output, sizeof(output)), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest(0, test1Seed, sizeof(test1Seed), NULL, 0, + output, 0 ), WC_NO_ERR_TRACE(-1)); + + /* Good parameters. */ + ExpectIntEQ(wc_RNG_HealthTest(0, test1Seed, sizeof(test1Seed), NULL, 0, + output, sizeof(output)), 0); + ExpectBufEQ(test1Output, output, sizeof(output)); + + ExpectIntEQ(wc_RNG_HealthTest(1, test2SeedA, sizeof(test2SeedA), test2SeedB, + sizeof(test2SeedB), output, sizeof(output)), 0); + ExpectBufEQ(test2Output, output, sizeof(output)); + +#if !(defined(HAVE_FIPS) || defined(HAVE_SELFTEST)) || \ + (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) + /* Bad parameters. */ + ExpectIntEQ(wc_RNG_HealthTest_ex(0, NULL, 0, NULL , 0 , + NULL, 0, NULL , 0 , HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest_ex(0, NULL, 0, test1Seed, sizeof(test1Seed), + NULL, 0, NULL , 0 , HEAP_HINT, + INVALID_DEVID), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest_ex(0, NULL, 0, NULL , 0 , + NULL, 0, output, sizeof(output), HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RNG_HealthTest_ex(0, NULL, 0, test1Seed, sizeof(test1Seed), + NULL, 0, output, 0 , HEAP_HINT, INVALID_DEVID), + WC_NO_ERR_TRACE(-1)); + + /* Good parameters. */ + ExpectIntEQ(wc_RNG_HealthTest_ex(0, NULL, 0, test1Seed, sizeof(test1Seed), + NULL, 0, output, sizeof(output), HEAP_HINT, INVALID_DEVID), 0); + ExpectBufEQ(test1Output, output, sizeof(output)); + /* with nonce */ + ExpectIntEQ(wc_RNG_HealthTest_ex(0, testEx1Nonce, sizeof(testEx1Nonce), + test1Seed, sizeof(test1Seed), NULL, 0, output, sizeof(output), + HEAP_HINT, INVALID_DEVID), 0); + ExpectBufEQ(testEx1Output, output, sizeof(output)); + + ExpectIntEQ(wc_RNG_HealthTest_ex(1, NULL, 0, test2SeedA, sizeof(test2SeedA), + test2SeedB, sizeof(test2SeedB), output, sizeof(output), HEAP_HINT, + INVALID_DEVID), 0); + ExpectBufEQ(test2Output, output, sizeof(output)); + /* with nonce */ + ExpectIntEQ(wc_RNG_HealthTest_ex(1, testEx2Nonce, sizeof(testEx2Nonce), + test2SeedA, sizeof(test2SeedA), test2SeedB, sizeof(test2SeedB), output, + sizeof(output), HEAP_HINT, INVALID_DEVID), 0); + ExpectBufEQ(testEx2Output, output, sizeof(output)); +#endif +#endif + return EXPECT_RESULT(); +} + diff --git a/tests/api/test_random.h b/tests/api/test_random.h new file mode 100644 index 000000000..ad34fcf87 --- /dev/null +++ b/tests/api/test_random.h @@ -0,0 +1,52 @@ +/* test_random.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_RANDOM_H +#define WOLFCRYPT_TEST_RANDOM_H + +#include + +int test_wc_InitRng(void); +int test_wc_RNG_GenerateBlock_Reseed(void); +int test_wc_RNG_GenerateBlock(void); +int test_wc_RNG_GenerateByte(void); +int test_wc_InitRngNonce(void); +int test_wc_InitRngNonce_ex(void); +int test_wc_GenerateSeed(void); +int test_wc_rng_new(void); +int test_wc_RNG_DRBG_Reseed(void); +int test_wc_RNG_TestSeed(void); +int test_wc_RNG_HealthTest(void); + +#define TEST_RANDOM_DECLS \ + TEST_DECL_GROUP("random", test_wc_InitRng), \ + TEST_DECL_GROUP("random", test_wc_RNG_GenerateBlock_Reseed), \ + TEST_DECL_GROUP("random", test_wc_RNG_GenerateBlock), \ + TEST_DECL_GROUP("random", test_wc_RNG_GenerateByte), \ + TEST_DECL_GROUP("random", test_wc_InitRngNonce), \ + TEST_DECL_GROUP("random", test_wc_InitRngNonce_ex), \ + TEST_DECL_GROUP("random", test_wc_GenerateSeed), \ + TEST_DECL_GROUP("random", test_wc_rng_new), \ + TEST_DECL_GROUP("random", test_wc_RNG_DRBG_Reseed), \ + TEST_DECL_GROUP("random", test_wc_RNG_TestSeed), \ + TEST_DECL_GROUP("random", test_wc_RNG_HealthTest) + +#endif /* WOLFCRYPT_TEST_RANDOM_H */ diff --git a/tests/api/test_rc2.h b/tests/api/test_rc2.h index ab3159bc3..bfa540d60 100644 --- a/tests/api/test_rc2.h +++ b/tests/api/test_rc2.h @@ -22,9 +22,17 @@ #ifndef WOLFCRYPT_TEST_RC2_H #define WOLFCRYPT_TEST_RC2_H +#include + int test_wc_Rc2SetKey(void); int test_wc_Rc2SetIV(void); int test_wc_Rc2EcbEncryptDecrypt(void); int test_wc_Rc2CbcEncryptDecrypt(void); +#define TEST_RC2_DECLS \ + TEST_DECL_GROUP("rc2", test_wc_Rc2SetKey), \ + TEST_DECL_GROUP("rc2", test_wc_Rc2SetIV), \ + TEST_DECL_GROUP("rc2", test_wc_Rc2EcbEncryptDecrypt), \ + TEST_DECL_GROUP("rc2", test_wc_Rc2CbcEncryptDecrypt) + #endif /* WOLFCRYPT_TEST_RC2_H */ diff --git a/tests/api/test_ripemd.h b/tests/api/test_ripemd.h index f954b64d3..90d288328 100644 --- a/tests/api/test_ripemd.h +++ b/tests/api/test_ripemd.h @@ -14,6 +14,7 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA @@ -22,10 +23,19 @@ #ifndef WOLFCRYPT_TEST_RIPEMD_H #define WOLFCRYPT_TEST_RIPEMD_H +#include + int test_wc_InitRipeMd(void); int test_wc_RipeMdUpdate(void); int test_wc_RipeMdFinal(void); int test_wc_RipeMd_KATs(void); int test_wc_RipeMd_other(void); +#define TEST_RIPEMD_DECLS \ + TEST_DECL_GROUP("ripemd", test_wc_InitRipeMd), \ + TEST_DECL_GROUP("ripemd", test_wc_RipeMdUpdate), \ + TEST_DECL_GROUP("ripemd", test_wc_RipeMdFinal), \ + TEST_DECL_GROUP("ripemd", test_wc_RipeMd_KATs), \ + TEST_DECL_GROUP("ripemd", test_wc_RipeMd_other) + #endif /* WOLFCRYPT_TEST_RIPEMD_H */ diff --git a/tests/api/test_rsa.c b/tests/api/test_rsa.c new file mode 100644 index 000000000..0533d8733 --- /dev/null +++ b/tests/api/test_rsa.c @@ -0,0 +1,1097 @@ +/* test_rsa.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_Init RsaKey() + */ +int test_wc_InitRsaKey(void) +{ + EXPECT_DECLS; +#ifndef NO_RSA + RsaKey key; + + XMEMSET(&key, 0, sizeof(RsaKey)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_InitRsaKey(NULL, HEAP_HINT), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_InitRsaKey */ + + +/* + * Testing wc_RsaPrivateKeyDecode() + */ +int test_wc_RsaPrivateKeyDecode(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024) || \ + defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) + RsaKey key; + byte* tmp = NULL; + word32 idx = 0; + int bytes = 0; + + XMEMSET(&key, 0, sizeof(RsaKey)); + + ExpectNotNull(tmp = (byte*)XMALLOC(FOURK_BUF, NULL, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + if (tmp != NULL) { + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024); + bytes = sizeof_client_key_der_1024; + #else + XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048); + bytes = sizeof_client_key_der_2048; + #endif /* Use cert buffers. */ + } + + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes), 0); + + /* Test bad args. */ + ExpectIntEQ(wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_RsaPrivateKeyDecode */ + +/* + * Testing wc_RsaPublicKeyDecode() + */ +int test_wc_RsaPublicKeyDecode(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024) || \ + defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) + RsaKey keyPub; + byte* tmp = NULL; + word32 idx = 0; + int bytes = 0; + word32 keySz = 0; + word32 tstKeySz = 0; +#if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) + XFILE f = XBADFILE; + const char* rsaPssPubKey = "./certs/rsapss/ca-rsapss-key.der"; + const char* rsaPssPubKeyNoParams = "./certs/rsapss/ca-3072-rsapss-key.der"; + byte buf[4096]; +#endif + + XMEMSET(&keyPub, 0, sizeof(RsaKey)); + + ExpectNotNull(tmp = (byte*)XMALLOC(GEN_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&keyPub, HEAP_HINT), 0); + if (tmp != NULL) { + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_keypub_der_1024, sizeof_client_keypub_der_1024); + bytes = sizeof_client_keypub_der_1024; + keySz = 1024; + #else + XMEMCPY(tmp, client_keypub_der_2048, sizeof_client_keypub_der_2048); + bytes = sizeof_client_keypub_der_2048; + keySz = 2048; + #endif + } + + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, &keyPub, (word32)bytes), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRsaKey(&keyPub), 0); + + /* Test for getting modulus key size */ + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(tmp, &idx, (word32)bytes, NULL, + &tstKeySz, NULL, NULL), 0); + ExpectIntEQ(tstKeySz, keySz/8); + +#if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) + ExpectTrue((f = XFOPEN(rsaPssPubKey, "rb")) != XBADFILE); + ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, (word32)bytes, NULL, NULL, + NULL, NULL), 0); + ExpectTrue((f = XFOPEN(rsaPssPubKeyNoParams, "rb")) != XBADFILE); + ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); + if (f != XBADFILE) + XFCLOSE(f); + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, (word32)bytes, NULL, NULL, + NULL, NULL), 0); +#endif + + XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPublicKeyDecode */ + +/* + * Testing wc_RsaPublicKeyDecodeRaw() + */ +int test_wc_RsaPublicKeyDecodeRaw(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) + RsaKey key; + const byte n = 0x23; + const byte e = 0x03; + word32 nSz = sizeof(n); + word32 eSz = sizeof(e); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, &key), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_RsaPublicKeyDecodeRaw */ + +/* + * Testing wc_RsaPrivateKeyDecodeRaw() + */ +int test_wc_RsaPrivateKeyDecodeRaw(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) && \ + !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) + RsaKey key; + const byte n = 33; + const byte e = 3; + const byte d = 7; + const byte u = 2; + const byte p = 3; + const byte q = 11; + const byte dp = 1; + const byte dq = 7; + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), NULL, 0, + NULL, 0, &key), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + NULL, 0, &key), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), NULL, 0, + &dq, sizeof(dq), &key), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(NULL, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, 0, + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + NULL, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, 0, &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), NULL, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, 0, &u, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + NULL, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, 0, &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), NULL, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, sizeof(u), + &p, sizeof(p), &q, 0, &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM) + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, 0, + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), NULL, sizeof(u), + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n), + &e, sizeof(e), &d, sizeof(d), &u, 0, + &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp), + &dq, sizeof(dq), &key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); +#endif + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPrivateKeyDecodeRaw */ + +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + /* In FIPS builds, wc_MakeRsaKey() will return an error if it cannot find + * a probable prime in 5*(modLen/2) attempts. In non-FIPS builds, it keeps + * trying until it gets a probable prime. */ + #ifdef HAVE_FIPS + int MakeRsaKeyRetry(RsaKey* key, int size, long e, WC_RNG* rng) + { + int ret; + + for (;;) { + ret = wc_MakeRsaKey(key, size, e, rng); + if (ret != WC_NO_ERR_TRACE(PRIME_GEN_E)) break; + fprintf(stderr, "MakeRsaKey couldn't find prime; " + "trying again.\n"); + } + + return ret; + } + #endif +#endif + +/* + * Testing wc_MakeRsaKey() + */ +int test_wc_MakeRsaKey(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + + RsaKey genKey; + WC_RNG rng; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) + int bits = 1024; +#else + int bits = 2048; +#endif + + XMEMSET(&genKey, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); + DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); + + /* Test bad args. */ + ExpectIntEQ(MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* e < 3 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 2, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* e & 1 == 0 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 6, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_MakeRsaKey */ + +/* + * Testing wc_CheckProbablePrime() + */ +int test_wc_CheckProbablePrime(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) +#define CHECK_PROBABLE_PRIME_KEY_BITS 2048 + RsaKey key; + WC_RNG rng; + byte e[3]; + word32 eSz = (word32)sizeof(e); + byte n[CHECK_PROBABLE_PRIME_KEY_BITS / 8]; + word32 nSz = (word32)sizeof(n); + byte d[CHECK_PROBABLE_PRIME_KEY_BITS / 8]; + word32 dSz = (word32)sizeof(d); + byte p[CHECK_PROBABLE_PRIME_KEY_BITS / 8 / 2]; + word32 pSz = (word32)sizeof(p); + byte q[CHECK_PROBABLE_PRIME_KEY_BITS / 8 / 2]; + word32 qSz = (word32)sizeof(q); + int nlen = CHECK_PROBABLE_PRIME_KEY_BITS; + int* isPrime; + int test[5]; + isPrime = test; + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, CHECK_PROBABLE_PRIME_KEY_BITS, + WC_RSA_EXPONENT, &rng), 0); + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_RsaExportKey(&key, e, &eSz, n, &nSz, d, &dSz, p, &pSz, q, + &qSz), 0); + PRIVATE_KEY_LOCK(); + + /* Bad cases */ + ExpectIntEQ(wc_CheckProbablePrime(NULL, pSz, q, qSz, e, eSz, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(p, 0, q, qSz, e, eSz, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, NULL, qSz, e, eSz, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, 0, e, eSz, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, NULL, eSz, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, 0, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_CheckProbablePrime(NULL, 0, NULL, 0, NULL, 0, nlen, isPrime), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good case */ + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, eSz, nlen, isPrime), + 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); +#undef CHECK_PROBABLE_PRIME_KEY_BITS +#endif + return EXPECT_RESULT(); +} /* END test_wc_CheckProbablePrime */ + +/* + * Testing wc_RsaPSS_Verify() + */ +int test_wc_RsaPSS_Verify(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) + RsaKey key; + WC_RNG rng; + int sz = 256; + const char* szMessage = "This is the string to be signed"; + unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ + unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; + word32 outLen = sizeof(pDecrypted); + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntGT(sz = wc_RsaPSS_Sign((byte*)szMessage, + (word32)XSTRLEN(szMessage)+1, pSignature, sizeof(pSignature), + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); + + /* Bad cases */ + ExpectIntEQ(wc_RsaPSS_Verify(NULL, (word32)sz, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_Verify(pSignature, 0, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_Verify(pSignature, (word32)sz, NULL, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_Verify(NULL, 0, NULL, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good case */ + ExpectIntGT(wc_RsaPSS_Verify(pSignature, (word32)sz, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPSS_Verify */ + +/* + * Testing wc_RsaPSS_VerifyCheck() + */ +int test_wc_RsaPSS_VerifyCheck(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) + RsaKey key; + WC_RNG rng; + int sz = 256; /* 2048/8 */ + byte digest[32]; + word32 digestSz = sizeof(digest); + unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ + word32 pSignatureSz = sizeof(pSignature); + unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; + word32 outLen = sizeof(pDecrypted); + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + XMEMSET(digest, 0, sizeof(digest)); + XMEMSET(pSignature, 0, sizeof(pSignature)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectTrue((digestSz = (word32)wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > + 0); + ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, (word32)sz, digest, + digestSz), 0); + + ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, pSignatureSz, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); + + /* Bad cases */ + ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, (word32)sz, pt, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, 0, pt, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, (word32)sz, NULL, outLen, + digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, 0, NULL, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good case */ + ExpectIntGT(wc_RsaPSS_VerifyCheck(pSignature, (word32)sz, pt, outLen, + digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); + + ExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPSS_VerifyCheck */ + +/* + * Testing wc_RsaPSS_VerifyCheckInline() + */ +int test_wc_RsaPSS_VerifyCheckInline(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ + !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) + RsaKey key; + WC_RNG rng; + int sz = 256; + byte digest[32]; + word32 digestSz = sizeof(digest); + unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ + unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + XMEMSET(digest, 0, sizeof(digest)); + XMEMSET(pSignature, 0, sizeof(pSignature)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectTrue((digestSz = (word32)wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > + 0); + ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, (word32)sz, digest, + digestSz), 0); + + ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, + sizeof(pSignature), WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); + + /* Bad Cases */ + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, (word32)sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, 0, NULL, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, 0, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, (word32)sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA, WC_MGF1SHA256, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Good case */ + ExpectIntGT(wc_RsaPSS_VerifyCheckInline(pSignature, (word32)sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPSS_VerifyCheckInline */ + +/* + * Testing wc_RsaKeyToDer() + */ +int test_wc_RsaKeyToDer(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey genKey; + WC_RNG rng; + byte* der = NULL; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) + int bits = 1024; + word32 derSz = 611; + /* (2 x 128) + 2 (possible leading 00) + (5 x 64) + 5 (possible leading 00) + + 3 (e) + 8 (ASN tag) + 10 (ASN length) + 4 seqSz + 3 version */ +#else + int bits = 2048; + word32 derSz = 1196; + /* (2 x 256) + 2 (possible leading 00) + (5 x 128) + 5 (possible leading 00) + + 3 (e) + 8 (ASN tag) + 17 (ASN length) + 4 seqSz + 3 version */ +#endif + + XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&genKey, 0, sizeof(genKey)); + + ExpectNotNull(der = (byte*)XMALLOC(derSz, NULL, DYNAMIC_TYPE_TMP_BUFFER)); + /* Init structures. */ + ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + /* Make key. */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntGT(wc_RsaKeyToDer(&genKey, der, derSz), 0); + + /* Pass good/bad args. */ + ExpectIntEQ(wc_RsaKeyToDer(NULL, der, FOURK_BUF), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* Get just the output length */ + ExpectIntGT(wc_RsaKeyToDer(&genKey, NULL, 0), 0); + /* Try Public Key. */ + genKey.type = 0; + ExpectIntEQ(wc_RsaKeyToDer(&genKey, der, FOURK_BUF), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + #ifdef WOLFSSL_CHECK_MEM_ZERO + /* Put back to Private Key */ + genKey.type = 1; + #endif + + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaKeyToDer */ + +/* + * Testing wc_RsaKeyToPublicDer() + */ +int test_wc_RsaKeyToPublicDer(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey key; + WC_RNG rng; + byte* der = NULL; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) + int bits = 1024; + word32 derLen = 162; +#else + int bits = 2048; + word32 derLen = 294; +#endif + int ret = 0; + + XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&key, 0, sizeof(key)); + + ExpectNotNull(der = (byte*)XMALLOC(derLen, NULL, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); + + /* test getting size only */ + ExpectIntGT(wc_RsaKeyToPublicDer(&key, NULL, derLen), 0); + ExpectIntGT(wc_RsaKeyToPublicDer(&key, der, derLen), 0); + + /* test getting size only */ + ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, NULL, derLen, 0), 0); + ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, der, derLen, 0), 0); + + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaKeyToPublicDer(NULL, der, derLen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntLT(ret = wc_RsaKeyToPublicDer(&key, der, -1), 0); + ExpectTrue((ret == WC_NO_ERR_TRACE(BUFFER_E)) || + (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))); + + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaKeyToPublicDer */ + +/* + * Testing wc_RsaPublicEncrypt() and wc_RsaPrivateDecrypt() + */ +int test_wc_RsaPublicEncryptDecrypt(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey key; + WC_RNG rng; + const char inStr[] = TEST_STRING; + const word32 plainLen = (word32)TEST_STRING_SZ; + const word32 inLen = (word32)TEST_STRING_SZ; + int bits = TEST_RSA_BITS; + const word32 cipherLen = TEST_RSA_BYTES; + word32 cipherLenResult = cipherLen; + WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); + WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); + + WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); + WC_ALLOC_VAR(cipher, byte, TEST_RSA_BYTES, NULL); + +#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC + ExpectNotNull(in); + ExpectNotNull(plain); + ExpectNotNull(cipher); +#endif + ExpectNotNull(XMEMCPY(in, inStr, inLen)); + + /* Initialize stack structures. */ + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); + + /* Encrypt. */ + ExpectIntGT(cipherLenResult = (word32)wc_RsaPublicEncrypt(in, inLen, cipher, + cipherLen, &key, &rng), 0); + /* Pass bad args - tested in another testing function.*/ + + /* Decrypt */ +#if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) + /* Bind rng */ + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); +#endif + ExpectIntGE(wc_RsaPrivateDecrypt(cipher, cipherLenResult, plain, plainLen, + &key), 0); + ExpectIntEQ(XMEMCMP(plain, inStr, plainLen), 0); + /* Pass bad args - tested in another testing function.*/ + + WC_FREE_VAR(in, NULL); + WC_FREE_VAR(plain, NULL); + WC_FREE_VAR(cipher, NULL); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_RsaPublicEncryptDecrypt */ + +/* + * Testing wc_RsaPrivateDecrypt_ex() and wc_RsaPrivateDecryptInline_ex() + */ +int test_wc_RsaPublicEncryptDecrypt_ex(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_FIPS) && \ + !defined(WC_NO_RSA_OAEP) && !defined(NO_SHA256) + RsaKey key; + WC_RNG rng; + const char inStr[] = TEST_STRING; + const word32 inLen = (word32)TEST_STRING_SZ; + const word32 plainSz = (word32)TEST_STRING_SZ; + byte* res = NULL; + int idx = 0; + int bits = TEST_RSA_BITS; + const word32 cipherSz = TEST_RSA_BYTES; + + WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); + WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); + + WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); + WC_ALLOC_VAR(cipher, byte, TEST_RSA_BYTES, NULL); + +#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC + ExpectNotNull(in); + ExpectNotNull(plain); + ExpectNotNull(cipher); +#endif + ExpectNotNull(XMEMCPY(in, inStr, inLen)); + + /* Initialize stack structures. */ + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey_ex(&key, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); + + /* Encrypt */ + ExpectIntGE(idx = wc_RsaPublicEncrypt_ex(in, inLen, cipher, cipherSz, &key, + &rng, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + /* Pass bad args - tested in another testing function.*/ + +#ifndef WOLFSSL_RSA_PUBLIC_ONLY + /* Decrypt */ + #if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + #endif + ExpectIntGE(wc_RsaPrivateDecrypt_ex(cipher, (word32)idx, plain, plainSz, + &key, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + ExpectIntEQ(XMEMCMP(plain, inStr, plainSz), 0); + /* Pass bad args - tested in another testing function.*/ + + ExpectIntGE(wc_RsaPrivateDecryptInline_ex(cipher, (word32)idx, &res, &key, + WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + ExpectIntEQ(XMEMCMP(inStr, res, plainSz), 0); +#endif + + WC_FREE_VAR(in, NULL); + WC_FREE_VAR(plain, NULL); + WC_FREE_VAR(cipher, NULL); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaPublicEncryptDecrypt_ex */ + +/* + * Tesing wc_RsaSSL_Sign() and wc_RsaSSL_Verify() + */ +int test_wc_RsaSSL_SignVerify(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey key; + WC_RNG rng; + const char inStr[] = TEST_STRING; + const word32 plainSz = (word32)TEST_STRING_SZ; + const word32 inLen = (word32)TEST_STRING_SZ; + word32 idx = 0; + int bits = TEST_RSA_BITS; + const word32 outSz = TEST_RSA_BYTES; + + WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_DECLARE_VAR(out, byte, TEST_RSA_BYTES, NULL); + WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); + + WC_ALLOC_VAR(in, byte, TEST_STRING_SZ, NULL); + WC_ALLOC_VAR(out, byte, TEST_RSA_BYTES, NULL); + WC_ALLOC_VAR(plain, byte, TEST_STRING_SZ, NULL); + +#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC + ExpectNotNull(in); + ExpectNotNull(out); + ExpectNotNull(plain); +#endif + ExpectNotNull(XMEMCPY(in, inStr, inLen)); + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); + + /* Sign. */ + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, &key, &rng), (int)outSz); + idx = (int)outSz; + + /* Test bad args. */ + ExpectIntEQ(wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Verify. */ + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, &key), (int)inLen); + + /* Pass bad args. */ + ExpectIntEQ(wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Verify(out, 0, plain, plainSz, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + WC_FREE_VAR(in, NULL); + WC_FREE_VAR(out, NULL); + WC_FREE_VAR(plain, NULL); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaSSL_SignVerify */ + +/* + * Testing wc_RsaEncryptSize() + */ +int test_wc_RsaEncryptSize(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey key; + WC_RNG rng; + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) + ExpectIntEQ(MAKE_RSA_KEY(&key, 1024, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntEQ(wc_RsaEncryptSize(&key), 128); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + + ExpectIntEQ(MAKE_RSA_KEY(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectIntEQ(wc_RsaEncryptSize(&key), 256); + + /* Pass in bad arg. */ + ExpectIntEQ(wc_RsaEncryptSize(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_RsaEncryptSize*/ + +/* + * Testing wc_RsaFlattenPublicKey() + */ +int test_wc_RsaFlattenPublicKey(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) + RsaKey key; + WC_RNG rng; + byte e[256]; + byte n[256]; + word32 eSz = sizeof(e); + word32 nSz = sizeof(n); + #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) && \ + (defined(RSA_MIN_SIZE) && (RSA_MIN_SIZE <= 1024)) + int bits = 1024; + #else + int bits = 2048; + #endif + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, &nSz), 0); + + /* Pass bad args. */ + ExpectIntEQ(wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); + +} /* END test_wc_RsaFlattenPublicKey */ + +/* + * Test the bounds checking on the cipher text versus the key modulus. + * 1. Make a new RSA key. + * 2. Set c to 1. + * 3. Decrypt c into k. (error) + * 4. Copy the key modulus to c and sub 1 from the copy. + * 5. Decrypt c into k. (error) + * Valid bounds test cases are covered by all the other RSA tests. + */ +int test_wc_RsaDecrypt_BoundsCheck(void) +{ + EXPECT_DECLS; +#if !defined(NO_RSA) && defined(WC_RSA_NO_PADDING) && \ + (defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048)) && \ + defined(WOLFSSL_PUBLIC_MP) && !defined(NO_RSA_BOUNDS_CHECK) + WC_RNG rng; + RsaKey key; + byte flatC[256]; + word32 flatCSz = 0; + byte out[256]; + word32 outSz = sizeof(out); + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + if (EXPECT_SUCCESS()) { + const byte* derKey; + word32 derKeySz; + word32 idx = 0; + + #ifdef USE_CERT_BUFFERS_1024 + derKey = server_key_der_1024; + derKeySz = (word32)sizeof_server_key_der_1024; + flatCSz = 128; + #else + derKey = server_key_der_2048; + derKeySz = (word32)sizeof_server_key_der_2048; + flatCSz = 256; + #endif + + ExpectIntEQ(wc_RsaPrivateKeyDecode(derKey, &idx, &key, derKeySz), 0); + } + + if (EXPECT_SUCCESS()) { + XMEMSET(flatC, 0, flatCSz); + flatC[flatCSz-1] = 1; + + ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, + RSA_PRIVATE_DECRYPT, &rng), WC_NO_ERR_TRACE(RSA_OUT_OF_RANGE_E)); + if (EXPECT_SUCCESS()) { + mp_int c; + #ifndef WOLFSSL_SP_MATH + ExpectIntEQ(mp_init_copy(&c, &key.n), 0); + #else + ExpectIntEQ(mp_init(&c), 0); + ExpectIntEQ(mp_copy(&key.n, &c), 0); + #endif + ExpectIntEQ(mp_sub_d(&c, 1, &c), 0); + ExpectIntEQ(mp_to_unsigned_bin(&c, flatC), 0); + ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, + RSA_PRIVATE_DECRYPT, NULL), + WC_NO_ERR_TRACE(RSA_OUT_OF_RANGE_E)); + mp_clear(&c); + } + } + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* END test_wc_RsaDecryptBoundsCheck */ + diff --git a/tests/api/test_rsa.h b/tests/api/test_rsa.h new file mode 100644 index 000000000..52e9ae3f4 --- /dev/null +++ b/tests/api/test_rsa.h @@ -0,0 +1,66 @@ +/* test_rsa.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_RSA_H +#define WOLFCRYPT_TEST_RSA_H + +#include + +int test_wc_InitRsaKey(void); +int test_wc_RsaPrivateKeyDecode(void); +int test_wc_RsaPublicKeyDecode(void); +int test_wc_RsaPublicKeyDecodeRaw(void); +int test_wc_RsaPrivateKeyDecodeRaw(void); +int test_wc_MakeRsaKey(void); +int test_wc_CheckProbablePrime(void); +int test_wc_RsaPSS_Verify(void); +int test_wc_RsaPSS_VerifyCheck(void); +int test_wc_RsaPSS_VerifyCheckInline(void); +int test_wc_RsaKeyToDer(void); +int test_wc_RsaKeyToPublicDer(void); +int test_wc_RsaPublicEncryptDecrypt(void); +int test_wc_RsaPublicEncryptDecrypt_ex(void); +int test_wc_RsaEncryptSize(void); +int test_wc_RsaSSL_SignVerify(void); +int test_wc_RsaFlattenPublicKey(void); +int test_wc_RsaDecrypt_BoundsCheck(void); + +#define TEST_RSA_DECLS \ + TEST_DECL_GROUP("rsa", test_wc_InitRsaKey), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPrivateKeyDecode), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPublicKeyDecode), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPublicKeyDecodeRaw), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPrivateKeyDecodeRaw), \ + TEST_DECL_GROUP("rsa", test_wc_MakeRsaKey), \ + TEST_DECL_GROUP("rsa", test_wc_CheckProbablePrime), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPSS_Verify), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPSS_VerifyCheck), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPSS_VerifyCheckInline), \ + TEST_DECL_GROUP("rsa", test_wc_RsaKeyToDer), \ + TEST_DECL_GROUP("rsa", test_wc_RsaKeyToPublicDer), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPublicEncryptDecrypt), \ + TEST_DECL_GROUP("rsa", test_wc_RsaPublicEncryptDecrypt_ex), \ + TEST_DECL_GROUP("rsa", test_wc_RsaEncryptSize), \ + TEST_DECL_GROUP("rsa", test_wc_RsaSSL_SignVerify), \ + TEST_DECL_GROUP("rsa", test_wc_RsaFlattenPublicKey), \ + TEST_DECL_GROUP("rsa", test_wc_RsaDecrypt_BoundsCheck) + +#endif /* WOLFCRYPT_TEST_RSA_H */ diff --git a/tests/api/test_sha.h b/tests/api/test_sha.h index 54d36a027..e86be032a 100644 --- a/tests/api/test_sha.h +++ b/tests/api/test_sha.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SHA_H #define WOLFCRYPT_TEST_SHA_H +#include + int test_wc_InitSha(void); int test_wc_ShaUpdate(void); int test_wc_ShaFinal(void); @@ -33,4 +35,16 @@ int test_wc_ShaGetHash(void); int test_wc_ShaTransform(void); int test_wc_Sha_Flags(void); +#define TEST_SHA_DECLS \ + TEST_DECL_GROUP("sha", test_wc_InitSha), \ + TEST_DECL_GROUP("sha", test_wc_ShaUpdate), \ + TEST_DECL_GROUP("sha", test_wc_ShaFinal), \ + TEST_DECL_GROUP("sha", test_wc_ShaFinalRaw), \ + TEST_DECL_GROUP("sha", test_wc_Sha_KATs), \ + TEST_DECL_GROUP("sha", test_wc_Sha_other), \ + TEST_DECL_GROUP("sha", test_wc_ShaCopy), \ + TEST_DECL_GROUP("sha", test_wc_ShaGetHash), \ + TEST_DECL_GROUP("sha", test_wc_ShaTransform), \ + TEST_DECL_GROUP("sha", test_wc_Sha_Flags) + #endif /* WOLFCRYPT_TEST_SHA_H */ diff --git a/tests/api/test_sha256.h b/tests/api/test_sha256.h index 9a3053723..b7a379da8 100644 --- a/tests/api/test_sha256.h +++ b/tests/api/test_sha256.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SHA256_H #define WOLFCRYPT_TEST_SHA256_H +#include + int test_wc_InitSha256(void); int test_wc_Sha256Update(void); int test_wc_Sha256Final(void); @@ -42,4 +44,26 @@ int test_wc_Sha224Copy(void); int test_wc_Sha224GetHash(void); int test_wc_Sha224_Flags(void); +#define TEST_SHA256_DECLS \ + TEST_DECL_GROUP("sha256", test_wc_InitSha256), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256Update), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256Final), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256FinalRaw), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256_KATs), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256_other), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256Copy), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256GetHash), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256Transform), \ + TEST_DECL_GROUP("sha256", test_wc_Sha256_Flags) + +#define TEST_SHA224_DECLS \ + TEST_DECL_GROUP("sha224", test_wc_InitSha224), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224Update), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224Final), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224_KATs), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224_other), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224Copy), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224GetHash), \ + TEST_DECL_GROUP("sha224", test_wc_Sha224_Flags) + #endif /* WOLFCRYPT_TEST_SHA256_H */ diff --git a/tests/api/test_sha3.h b/tests/api/test_sha3.h index f4692f5c4..5658c3024 100644 --- a/tests/api/test_sha3.h +++ b/tests/api/test_sha3.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SHA3_H #define WOLFCRYPT_TEST_SHA3_H +#include + int test_wc_InitSha3(void); int test_wc_Sha3_Update(void); int test_wc_Sha3_Final(void); @@ -56,4 +58,41 @@ int test_wc_Shake256_Absorb(void); int test_wc_Shake256_SqueezeBlocks(void); int test_wc_Shake256_XOF(void); +#define TEST_SHA3_DECLS \ + TEST_DECL_GROUP("sha3", test_wc_InitSha3), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_Update), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_Final), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_224_KATs), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_256_KATs), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_384_KATs), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_512_KATs), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_other), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_Copy), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_GetHash), \ + TEST_DECL_GROUP("sha3", test_wc_Sha3_Flags) + +#define TEST_SHAKE128_DECLS \ + TEST_DECL_GROUP("shake128", test_wc_InitShake128), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_Update), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_Final), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_KATs), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_other), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_Copy), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128Hash), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_Absorb), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_SqueezeBlocks), \ + TEST_DECL_GROUP("shake128", test_wc_Shake128_XOF) + +#define TEST_SHAKE256_DECLS \ + TEST_DECL_GROUP("shake256", test_wc_InitShake256), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_Update), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_Final), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_KATs), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_other), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_Copy), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256Hash), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_Absorb), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_SqueezeBlocks), \ + TEST_DECL_GROUP("shake256", test_wc_Shake256_XOF) + #endif /* WOLFCRYPT_TEST_SHA3_H */ diff --git a/tests/api/test_sha512.h b/tests/api/test_sha512.h index e7b8ac9ab..95f997019 100644 --- a/tests/api/test_sha512.h +++ b/tests/api/test_sha512.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SHA512_H #define WOLFCRYPT_TEST_SHA512_H +#include + int test_wc_InitSha512(void); int test_wc_Sha512Update(void); int test_wc_Sha512Final(void); @@ -65,4 +67,51 @@ int test_wc_Sha384Copy(void); int test_wc_Sha384GetHash(void); int test_wc_Sha384_Flags(void); +#define TEST_SHA512_DECLS \ + TEST_DECL_GROUP("sha512", test_wc_InitSha512), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512Update), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512Final), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512FinalRaw), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512_KATs), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512_other), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512Copy), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512GetHash), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512Transform), \ + TEST_DECL_GROUP("sha512", test_wc_Sha512_Flags) + +#define TEST_SHA512_224_DECLS \ + TEST_DECL_GROUP("sha512_224", test_wc_InitSha512_224), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224Update), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224Final), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224FinalRaw), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224_KATs), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224_other), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224Copy), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224GetHash), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224Transform), \ + TEST_DECL_GROUP("sha512_224", test_wc_Sha512_224_Flags) + +#define TEST_SHA512_256_DECLS \ + TEST_DECL_GROUP("sha512_256", test_wc_InitSha512_256), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256Update), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256Final), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256FinalRaw), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256_KATs), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256_other), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256Copy), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256GetHash), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256Transform), \ + TEST_DECL_GROUP("sha512_256", test_wc_Sha512_256_Flags) + +#define TEST_SHA384_DECLS \ + TEST_DECL_GROUP("sha384", test_wc_InitSha384), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384Update), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384Final), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384FinalRaw), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384_KATs), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384_other), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384Copy), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384GetHash), \ + TEST_DECL_GROUP("sha384", test_wc_Sha384_Flags) + #endif /* WOLFCRYPT_TEST_SHA512_H */ diff --git a/tests/api/test_signature.c b/tests/api/test_signature.c new file mode 100644 index 000000000..1fc17d5b6 --- /dev/null +++ b/tests/api/test_signature.c @@ -0,0 +1,157 @@ +/* test_signature.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include +#include +#include + +/* Testing wc_SignatureGetSize() for signature type ECC */ +int test_wc_SignatureGetSize_ecc(void) +{ + EXPECT_DECLS; +#if !defined(NO_SIG_WRAPPER) && defined(HAVE_ECC) && !defined(NO_ECC256) + enum wc_SignatureType sig_type; + word32 key_len; + ecc_key ecc; + const char* qx = + "fa2737fb93488d19caef11ae7faf6b7f4bcd67b286e3fc54e8a65c2b74aeccb0"; + const char* qy = + "d4ccd6dae698208aa8c3a6f39e45510d03be09b2f124bfc067856c324f9b4d09"; + const char* d = + "be34baa8d040a3b991f9075b56ba292f755b90e4b6dc10dad36715c33cfdac25"; + + XMEMSET(&ecc, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&ecc), 0); + ExpectIntEQ(wc_ecc_import_raw(&ecc, qx, qy, d, "SECP256R1"), 0); + /* Input for signature type ECC */ + sig_type = WC_SIGNATURE_TYPE_ECC; + key_len = sizeof(ecc_key); + ExpectIntGT(wc_SignatureGetSize(sig_type, &ecc, key_len), 0); + + /* Test bad args */ + /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ + sig_type = (enum wc_SignatureType) 100; + /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ + ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + sig_type = WC_SIGNATURE_TYPE_ECC; + ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), 0); + key_len = (word32)0; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_ecc_free(&ecc), 0); +#endif /* !NO_SIG_WRAPPER && HAVE_ECC && !NO_ECC256 */ + return EXPECT_RESULT(); +} /* END test_wc_SignatureGetSize_ecc() */ + +/* Testing wc_SignatureGetSize() for signature type rsa */ +int test_wc_SignatureGetSize_rsa(void) +{ + EXPECT_DECLS; +#if !defined(NO_SIG_WRAPPER) && !defined(NO_RSA) + enum wc_SignatureType sig_type; + word32 key_len; + word32 idx = 0; + RsaKey rsa_key; + byte* tmp = NULL; + size_t bytes; + + XMEMSET(&rsa_key, 0, sizeof(RsaKey)); + + #ifdef USE_CERT_BUFFERS_1024 + bytes = (size_t)sizeof_client_key_der_1024; + if (bytes < (size_t)sizeof_client_key_der_1024) + bytes = (size_t)sizeof_client_cert_der_1024; + #elif defined(USE_CERT_BUFFERS_2048) + bytes = (size_t)sizeof_client_key_der_2048; + if (bytes < (size_t)sizeof_client_cert_der_2048) + bytes = (size_t)sizeof_client_cert_der_2048; + #else + bytes = FOURK_BUF; + #endif + + ExpectNotNull(tmp = (byte*)XMALLOC(bytes, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (tmp != NULL) { + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_key_der_1024, (size_t)sizeof_client_key_der_1024); + #elif defined(USE_CERT_BUFFERS_2048) + XMEMCPY(tmp, client_key_der_2048, (size_t)sizeof_client_key_der_2048); + #elif !defined(NO_FILESYSTEM) + XFILE file = XBADFILE; + ExpectTrue((file = XFOPEN(clientKey, "rb")) != XBADFILE); + ExpectIntGT(bytes = (size_t)XFREAD(tmp, 1, FOURK_BUF, file), 0); + if (file != XBADFILE) { + XFCLOSE(file); + } + #else + ExpectFail(); + #endif + } + + ExpectIntEQ(wc_InitRsaKey_ex(&rsa_key, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &rsa_key, (word32)bytes), 0); + /* Input for signature type RSA */ + sig_type = WC_SIGNATURE_TYPE_RSA; + key_len = sizeof(RsaKey); + ExpectIntGT(wc_SignatureGetSize(sig_type, &rsa_key, key_len), 0); + + /* Test bad args */ + /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ + sig_type = (enum wc_SignatureType)100; + /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ + ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + sig_type = WC_SIGNATURE_TYPE_RSA; + ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + key_len = (word32)0; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRsaKey(&rsa_key), 0); + XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); +#endif /* !NO_SIG_WRAPPER && !NO_RSA */ + return EXPECT_RESULT(); +} /* END test_wc_SignatureGetSize_rsa(void) */ + diff --git a/tests/api/test_signature.h b/tests/api/test_signature.h new file mode 100644 index 000000000..52d48f186 --- /dev/null +++ b/tests/api/test_signature.h @@ -0,0 +1,34 @@ +/* test_signature.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_SIGNATURE_H +#define WOLFCRYPT_TEST_SIGNATURE_H + +#include + +int test_wc_SignatureGetSize_ecc(void); +int test_wc_SignatureGetSize_rsa(void); + +#define TEST_SIGNATURE_DECLS \ + TEST_DECL_GROUP("signature", test_wc_SignatureGetSize_ecc), \ + TEST_DECL_GROUP("signature", test_wc_SignatureGetSize_ecc) + +#endif /* WOLFCRYPT_TEST_SIGNATURE_H */ diff --git a/tests/api/test_sm2.c b/tests/api/test_sm2.c new file mode 100644 index 000000000..414fe144e --- /dev/null +++ b/tests/api/test_sm2.c @@ -0,0 +1,657 @@ +/* test_sm2.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing wc_ecc_sm2_make_key() + */ +int test_wc_ecc_sm2_make_key(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) + EXPECT_DECLS; + WC_RNG rng[1]; + ecc_key key[1]; + + XMEMSET(rng, 0, sizeof(*rng)); + XMEMSET(key, 0, sizeof(*key)); + + ExpectIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_make_key(NULL, NULL, WC_ECC_FLAG_NONE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_make_key(rng, NULL, WC_ECC_FLAG_NONE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_make_key(NULL, key, WC_ECC_FLAG_NONE), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); + ExpectIntEQ(key->dp->id, ECC_SM2P256V1); + + wc_ecc_free(key); + wc_FreeRng(rng); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_shared_secret() + */ +int test_wc_ecc_sm2_shared_secret(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) + EXPECT_DECLS; + WC_RNG rng[1]; + ecc_key keyA[1]; + ecc_key keyB[1]; + byte outA[32]; + byte outB[32]; + word32 outALen = 32; + word32 outBLen = 32; + + XMEMSET(rng, 0, sizeof(*rng)); + XMEMSET(keyA, 0, sizeof(*keyA)); + XMEMSET(keyB, 0, sizeof(*keyB)); + + ExpectIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(wc_ecc_init(keyA), 0); + ExpectIntEQ(wc_ecc_init(keyB), 0); + ExpectIntEQ(wc_ecc_sm2_make_key(rng, keyA, WC_ECC_FLAG_NONE), 0); + ExpectIntEQ(wc_ecc_sm2_make_key(rng, keyB, WC_ECC_FLAG_NONE), 0); + +#ifdef ECC_TIMING_RESISTANT + ExpectIntEQ(wc_ecc_set_rng(keyA, rng), 0); + ExpectIntEQ(wc_ecc_set_rng(keyB, rng), 0); +#endif + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, NULL, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, keyB, NULL, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, outA, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, NULL, NULL, &outALen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(NULL, keyB, outA, &outALen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, NULL, outA, &outALen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, NULL, &outALen), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, outA, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyA, keyB, outA, &outALen), 0); + ExpectIntLE(outALen, 32); + ExpectIntEQ(wc_ecc_sm2_shared_secret(keyB, keyA, outB, &outBLen), 0); + ExpectIntLE(outBLen, 32); + ExpectIntEQ(outALen, outBLen); + ExpectBufEQ(outA, outB, outALen); + + wc_ecc_free(keyB); + wc_ecc_free(keyA); + wc_FreeRng(rng); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_create_digest() + */ +int test_wc_ecc_sm2_create_digest(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && !defined(NO_HASH_WRAPPER) && \ + (defined(WOLFSSL_SM3) || !defined(NO_SHA256)) + EXPECT_DECLS; + ecc_key key[1]; + enum wc_HashType hashType; + unsigned char pub[] = { + 0x04, + 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, + 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, + 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, + 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, + 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, + 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, + 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, + 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 + }; + unsigned char id[] = { + 0x01, 0x02, 0x03, + }; + unsigned char msg[] = { + 0x01, 0x02, 0x03, + }; + unsigned char hash[32]; +#ifdef WOLFSSL_SM3 + unsigned char expHash[32] = { + 0xc1, 0xdd, 0x92, 0xc5, 0x60, 0xd3, 0x94, 0x28, + 0xeb, 0x0f, 0x57, 0x79, 0x3f, 0xc9, 0x96, 0xc5, + 0xfa, 0xf5, 0x90, 0xb2, 0x64, 0x2f, 0xaf, 0x9c, + 0xc8, 0x57, 0x21, 0x6a, 0x52, 0x7e, 0xf1, 0x95 + }; +#else + unsigned char expHash[32] = { + 0xea, 0x41, 0x55, 0x21, 0x61, 0x00, 0x5c, 0x9a, + 0x57, 0x35, 0x6b, 0x49, 0xca, 0x8f, 0x65, 0xc2, + 0x0e, 0x29, 0x0c, 0xa0, 0x1d, 0xa7, 0xc4, 0xed, + 0xdd, 0x51, 0x12, 0xf6, 0xe7, 0x55, 0xc5, 0xf4 + }; +#endif + +#ifdef WOLFSSL_SM3 + hashType = WC_HASH_TYPE_SM3; +#else + hashType = WC_HASH_TYPE_SHA256; +#endif + + XMEMSET(key, 0, sizeof(*key)); + + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test with no curve set. */ + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), + hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), NULL, sizeof(msg), + hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), msg, sizeof(msg), + hashType, NULL, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), + hashType, hash, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), NULL, sizeof(msg), + hashType, NULL, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(NULL, sizeof(id), msg, sizeof(msg), + hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), NULL, sizeof(msg), + hashType, hash, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + hashType, NULL, sizeof(hash), key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + hashType, hash, sizeof(hash), NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Bad hash type. */ + /* // NOLINTBEGIN(clang-analyzer-optin.core.EnumCastOutOfRange) */ + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + -1, hash, 0, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + /* // NOLINTEND(clang-analyzer-optin.core.EnumCastOutOfRange) */ + /* Bad hash size. */ + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + hashType, hash, 0, key), WC_NO_ERR_TRACE(BUFFER_E)); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_create_digest(id, sizeof(id), msg, sizeof(msg), + hashType, hash, sizeof(hash), key), 0); + ExpectBufEQ(hash, expHash, sizeof(expHash)); + + wc_ecc_free(key); + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_verify_hash_ex() + */ +int test_wc_ecc_sm2_verify_hash_ex(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_VERIFY) && \ + defined(WOLFSSL_PUBLIC_MP) + EXPECT_DECLS; + ecc_key key[1]; + mp_int r[1]; + mp_int s[1]; + int verified; + unsigned char pub[] = { + 0x04, + 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, + 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, + 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, + 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, + 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, + 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, + 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, + 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 + }; + unsigned char hash[] = { + 0x3B, 0xFA, 0x5F, 0xFB, 0xC4, 0x27, 0x8C, 0x9D, + 0x02, 0x3A, 0x19, 0xCB, 0x1E, 0xAA, 0xD2, 0xF1, + 0x50, 0x69, 0x5B, 0x20 + }; + unsigned char rData[] = { + 0xD2, 0xFC, 0xA3, 0x88, 0xE3, 0xDF, 0xA3, 0x00, + 0x73, 0x9B, 0x3C, 0x2A, 0x0D, 0xAD, 0x44, 0xA2, + 0xFC, 0x62, 0xD5, 0x6B, 0x84, 0x54, 0xD8, 0x40, + 0x22, 0x62, 0x3D, 0x5C, 0xA6, 0x61, 0x9B, 0xE7, + }; + unsigned char sData[] = { + 0x1D, + 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, + 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, + 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, + 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDC + }; + unsigned char rBadData[] = { + 0xD2, 0xFC, 0xA3, 0x88, 0xE3, 0xDF, 0xA3, 0x00, + 0x73, 0x9B, 0x3C, 0x2A, 0x0D, 0xAD, 0x44, 0xA2, + 0xFC, 0x62, 0xD5, 0x6B, 0x84, 0x54, 0xD8, 0x40, + 0x22, 0x62, 0x3D, 0x5C, 0xA6, 0x61, 0x9B, 0xE8, + }; + + XMEMSET(key, 0, sizeof(*key)); + XMEMSET(r, 0, sizeof(*r)); + XMEMSET(s, 0, sizeof(*s)); + + ExpectIntEQ(mp_init(r), 0); + ExpectIntEQ(mp_init(s), 0); + ExpectIntEQ(mp_read_unsigned_bin(r, rData, sizeof(rData)), 0); + ExpectIntEQ(mp_read_unsigned_bin(s, sData, sizeof(sData)), 0); + + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test with no curve set. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, NULL, NULL, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, s, NULL, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, hash, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), + &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, NULL, NULL, sizeof(hash), + NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(NULL, s, hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, NULL, hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, NULL, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Make key not on the SM2 curve. */ + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + &verified, key), 0); + ExpectIntEQ(verified, 1); + + ExpectIntEQ(mp_read_unsigned_bin(r, rBadData, sizeof(rBadData)), 0); + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), + &verified, key), 0); + ExpectIntEQ(verified, 0); + + mp_free(s); + mp_free(r); + wc_ecc_free(key); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_verify_hash() + */ +int test_wc_ecc_sm2_verify_hash(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_VERIFY) + EXPECT_DECLS; + ecc_key key[1]; + int verified; + unsigned char pub[] = { + 0x04, + 0x63, 0x7F, 0x1B, 0x13, 0x50, 0x36, 0xC9, 0x33, + 0xDC, 0x3F, 0x7A, 0x8E, 0xBB, 0x1B, 0x7B, 0x2F, + 0xD1, 0xDF, 0xBD, 0x26, 0x8D, 0x4F, 0x89, 0x4B, + 0x5A, 0xD4, 0x7D, 0xBD, 0xBE, 0xCD, 0x55, 0x8F, + 0xE8, 0x81, 0x01, 0xD0, 0x80, 0x48, 0xE3, 0x6C, + 0xCB, 0xF6, 0x1C, 0xA3, 0x8D, 0xDF, 0x7A, 0xBA, + 0x54, 0x2B, 0x44, 0x86, 0xE9, 0x9E, 0x49, 0xF3, + 0xA7, 0x47, 0x0A, 0x85, 0x7A, 0x09, 0x64, 0x33 + }; + unsigned char hash[] = { + 0x3B, 0xFA, 0x5F, 0xFB, 0xC4, 0x27, 0x8C, 0x9D, + 0x02, 0x3A, 0x19, 0xCB, 0x1E, 0xAA, 0xD2, 0xF1, + 0x50, 0x69, 0x5B, 0x20 + }; + unsigned char sig[] = { + 0x30, 0x45, 0x02, 0x21, 0x00, 0xD2, 0xFC, 0xA3, + 0x88, 0xE3, 0xDF, 0xA3, 0x00, 0x73, 0x9B, 0x3C, + 0x2A, 0x0D, 0xAD, 0x44, 0xA2, 0xFC, 0x62, 0xD5, + 0x6B, 0x84, 0x54, 0xD8, 0x40, 0x22, 0x62, 0x3D, + 0x5C, 0xA6, 0x61, 0x9B, 0xE7, 0x02, 0x20, 0x1D, + 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, + 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, + 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, + 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDC + }; + unsigned char sigBad[] = { + 0x30, 0x45, 0x02, 0x21, 0x00, 0xD2, 0xFC, 0xA3, + 0x88, 0xE3, 0xDF, 0xA3, 0x00, 0x73, 0x9B, 0x3C, + 0x2A, 0x0D, 0xAD, 0x44, 0xA2, 0xFC, 0x62, 0xD5, + 0x6B, 0x84, 0x54, 0xD8, 0x40, 0x22, 0x62, 0x3D, + 0x5C, 0xA6, 0x61, 0x9B, 0xE7, 0x02, 0x20, 0x1D, + 0xB5, 0xB5, 0xD9, 0xD8, 0xF1, 0x20, 0xDD, 0x97, + 0x92, 0xBF, 0x7E, 0x9B, 0x3F, 0xE6, 0x3C, 0x4B, + 0x03, 0xD8, 0x80, 0xBD, 0xB7, 0x27, 0x7E, 0x6A, + 0x84, 0x23, 0xDE, 0x61, 0x7C, 0x8D, 0xDD + }; + + + XMEMSET(key, 0, sizeof(*key)); + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test with no curve set. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ecc_import_x963_ex(pub, sizeof(pub), key, ECC_SM2P256V1), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), NULL, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), hash, sizeof(hash), + NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), + &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), NULL, sizeof(hash), + NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(NULL, sizeof(sig), hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), NULL, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), + NULL, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), + &verified, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Make key not on the SM2 curve. */ + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), + &verified, key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sizeof(sig), hash, sizeof(hash), + &verified, key), 0); + ExpectIntEQ(verified, 1); + + ExpectIntEQ(wc_ecc_sm2_verify_hash(sigBad, sizeof(sigBad), hash, + sizeof(hash), &verified, key), 0); + ExpectIntEQ(verified, 0); + + wc_ecc_free(key); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_sign_hash_ex() + */ +int test_wc_ecc_sm2_sign_hash_ex(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_SIGN) && \ + defined(WOLFSSL_PUBLIC_MP) + EXPECT_DECLS; + WC_RNG rng[1]; + ecc_key key[1]; + mp_int r[1]; + mp_int s[1]; + unsigned char hash[32]; +#ifdef HAVE_ECC_VERIFY + int verified; +#endif + + XMEMSET(rng, 0, sizeof(*rng)); + XMEMSET(key, 0, sizeof(*key)); + XMEMSET(r, 0, sizeof(*r)); + XMEMSET(s, 0, sizeof(*s)); + + ExpectIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(mp_init(r), 0); + ExpectIntEQ(mp_init(s), 0); + ExpectIntEQ(wc_RNG_GenerateBlock(rng, hash, sizeof(hash)), 0); + + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test with no curve set. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), NULL, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), rng, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, key, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, r, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), NULL, NULL, NULL, + s), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(NULL, sizeof(hash), rng, key, r, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), NULL, key, r, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, NULL, r, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, NULL, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, NULL), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Make key not on the SM2 curve. */ + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); + +#ifdef WOLFSSL_SP_MATH_ALL + { + mp_int smallR[1]; + sp_init_size(smallR, 1); + /* Force failure in _ecc_sm2_calc_r_s by r being too small. */ + ExpectIntLT(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, + smallR, s), 0); + } +#endif + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash_ex(hash, sizeof(hash), rng, key, r, s), + 0); +#ifdef HAVE_ECC_VERIFY + ExpectIntEQ(wc_ecc_sm2_verify_hash_ex(r, s, hash, sizeof(hash), &verified, + key), 0); + ExpectIntEQ(verified, 1); +#endif + + mp_free(s); + mp_free(r); + wc_ecc_free(key); + wc_FreeRng(rng); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + +/* + * Testing wc_ecc_sm2_sign_hash() + */ +int test_wc_ecc_sm2_sign_hash(void) +{ + int res = TEST_SKIPPED; +#if defined(HAVE_ECC) && defined(WOLFSSL_SM2) && defined(HAVE_ECC_SIGN) + EXPECT_DECLS; + WC_RNG rng[1]; + ecc_key key[1]; + unsigned char hash[32]; + unsigned char sig[72]; + word32 sigSz = sizeof(sig); +#ifdef HAVE_ECC_VERIFY + int verified; +#endif + + XMEMSET(rng, 0, sizeof(*rng)); + XMEMSET(key, 0, sizeof(*key)); + + ExpectIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(wc_RNG_GenerateBlock(rng, hash, sizeof(hash)), 0); + + ExpectIntEQ(wc_ecc_init(key), 0); + + /* Test with no curve set. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + ExpectIntEQ(wc_ecc_sm2_make_key(rng, key, WC_ECC_FLAG_NONE), 0); + + /* Test invalid parameters. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), NULL, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), sig, NULL, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, &sigSz, NULL, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, rng, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), NULL, NULL, NULL, + key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(NULL, sizeof(hash), sig, &sigSz, rng, + key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), NULL, &sigSz, rng, + key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, NULL, rng, + key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, NULL, + key), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, + NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + /* Make key not on the SM2 curve. */ + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(wc_ecc_set_curve(key, 32, ECC_SM2P256V1), 0); + + /* Test valid parameters. */ + ExpectIntEQ(wc_ecc_sm2_sign_hash(hash, sizeof(hash), sig, &sigSz, rng, key), + 0); +#ifdef HAVE_ECC_VERIFY + ExpectIntEQ(wc_ecc_sm2_verify_hash(sig, sigSz, hash, sizeof(hash), + &verified, key), 0); + ExpectIntEQ(verified, 1); +#endif + + wc_ecc_free(key); + wc_FreeRng(rng); +#ifdef FP_ECC + wc_ecc_fp_free(); +#endif + + res = EXPECT_RESULT(); +#endif + return res; +} + diff --git a/tests/api/test_sm2.h b/tests/api/test_sm2.h new file mode 100644 index 000000000..ca2eb9b67 --- /dev/null +++ b/tests/api/test_sm2.h @@ -0,0 +1,44 @@ +/* test_sm2.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_SM2_H +#define WOLFCRYPT_TEST_SM2_H + +#include + +int test_wc_ecc_sm2_make_key(void); +int test_wc_ecc_sm2_shared_secret(void); +int test_wc_ecc_sm2_create_digest(void); +int test_wc_ecc_sm2_verify_hash_ex(void); +int test_wc_ecc_sm2_verify_hash(void); +int test_wc_ecc_sm2_sign_hash_ex(void); +int test_wc_ecc_sm2_sign_hash(void); + +#define TEST_SM2_DECLS \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_make_key), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_shared_secret), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_create_digest), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_verify_hash_ex), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_verify_hash), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_sign_hash_ex), \ + TEST_DECL_GROUP("sm2", test_wc_ecc_sm2_sign_hash) + +#endif /* WOLFCRYPT_TEST_SM2_H */ diff --git a/tests/api/test_sm3.h b/tests/api/test_sm3.h index 57ae93a22..bdfd9eae1 100644 --- a/tests/api/test_sm3.h +++ b/tests/api/test_sm3.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SM3_H #define WOLFCRYPT_TEST_SM3_H +#include + int test_wc_InitSm3(void); int test_wc_Sm3Update(void); int test_wc_Sm3Final(void); @@ -32,4 +34,15 @@ int test_wc_Sm3Copy(void); int test_wc_Sm3GetHash(void); int test_wc_Sm3_Flags(void); +#define TEST_SM3_DECLS \ + TEST_DECL_GROUP("sm3", test_wc_InitSm3), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3Update), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3Final), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3FinalRaw), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3_KATs), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3_other), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3Copy), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3GetHash), \ + TEST_DECL_GROUP("sm3", test_wc_Sm3_Flags) + #endif /* WOLFCRYPT_TEST_SM3_H */ diff --git a/tests/api/test_sm4.h b/tests/api/test_sm4.h index be60a466d..92558bcae 100644 --- a/tests/api/test_sm4.h +++ b/tests/api/test_sm4.h @@ -22,6 +22,8 @@ #ifndef WOLFCRYPT_TEST_SM4_H #define WOLFCRYPT_TEST_SM4_H +#include + int test_wc_Sm4(void); int test_wc_Sm4Ecb(void); int test_wc_Sm4Cbc(void); @@ -29,4 +31,12 @@ int test_wc_Sm4Ctr(void); int test_wc_Sm4Gcm(void); int test_wc_Sm4Ccm(void); +#define TEST_SM4_DECLS \ + TEST_DECL_GROUP("sm4", test_wc_Sm4), \ + TEST_DECL_GROUP("sm4", test_wc_Sm4Ecb), \ + TEST_DECL_GROUP("sm4", test_wc_Sm4Cbc), \ + TEST_DECL_GROUP("sm4", test_wc_Sm4Ctr), \ + TEST_DECL_GROUP("sm4", test_wc_Sm4Gcm), \ + TEST_DECL_GROUP("sm4", test_wc_Sm4Ccm) + #endif /* WOLFCRYPT_TEST_SM4_H */ diff --git a/tests/api/test_wc_encrypt.h b/tests/api/test_wc_encrypt.h index c6cf25e8f..dadf960dc 100644 --- a/tests/api/test_wc_encrypt.h +++ b/tests/api/test_wc_encrypt.h @@ -22,6 +22,11 @@ #ifndef WOLFCRYPT_TEST_WC_ENCRYPT_H #define WOLFCRYPT_TEST_WC_ENCRYPT_H +#include + int test_wc_Des3_CbcEncryptDecryptWithKey(void); +#define TEST_WC_ENCRYPT_DECLS \ + TEST_DECL_GROUP("wc_encrypt", test_wc_Des3_CbcEncryptDecryptWithKey) + #endif /* WOLFCRYPT_TEST_WC_ENCRYPT_H */ diff --git a/tests/api/test_wolfmath.c b/tests/api/test_wolfmath.c new file mode 100644 index 000000000..657775c86 --- /dev/null +++ b/tests/api/test_wolfmath.c @@ -0,0 +1,204 @@ +/* test_wolfmath.c + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) + #include +#endif +#include + +#ifdef NO_INLINE + #include +#else + #define WOLFSSL_MISC_INCLUDED + #include +#endif + +#include +#include +#include +#include +#include + +/* + * Testing get_digit_count + */ +int test_get_digit_count(void) +{ + EXPECT_DECLS; +#if !defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_PUBLIC_MP) + mp_int a; + + XMEMSET(&a, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), 0); + + ExpectIntEQ(get_digit_count(NULL), 0); + ExpectIntEQ(get_digit_count(&a), 0); + + mp_clear(&a); +#endif + return EXPECT_RESULT(); +} /* End test_get_digit_count */ + +/* + * Testing get_digit + */ +int test_get_digit(void) +{ + EXPECT_DECLS; +#if defined(WOLFSSL_PUBLIC_MP) + mp_int a; + int n = 0; + + XMEMSET(&a, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(get_digit(NULL, n), 0); + ExpectIntEQ(get_digit(&a, n), 0); + + mp_clear(&a); +#endif + return EXPECT_RESULT(); +} /* End test_get_digit */ + +/* + * Testing get_rand_digit + */ +int test_get_rand_digit(void) +{ + EXPECT_DECLS; +#if !defined(WC_NO_RNG) && defined(WOLFSSL_PUBLIC_MP) + WC_RNG rng; + mp_digit d; + + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(get_rand_digit(&rng, &d), 0); + ExpectIntEQ(get_rand_digit(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(get_rand_digit(NULL, &d), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(get_rand_digit(&rng, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* End test_get_rand_digit */ + +/* + * Testing mp_cond_copy + */ +int test_mp_cond_copy(void) +{ + EXPECT_DECLS; +#if (defined(HAVE_ECC) || defined(WOLFSSL_MP_COND_COPY)) && \ + defined(WOLFSSL_PUBLIC_MP) + mp_int a; + mp_int b; + int copy = 0; + + XMEMSET(&a, 0, sizeof(mp_int)); + XMEMSET(&b, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(mp_init(&b), MP_OKAY); + + ExpectIntEQ(mp_cond_copy(NULL, copy, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(mp_cond_copy(NULL, copy, &b), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(mp_cond_copy(&a, copy, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(mp_cond_copy(&a, copy, &b), 0); + + mp_clear(&a); + mp_clear(&b); +#endif + return EXPECT_RESULT(); +} /* End test_mp_cond_copy */ + +/* + * Testing mp_rand + */ +int test_mp_rand(void) +{ + EXPECT_DECLS; +#if defined(WC_RSA_BLINDING) && defined(WOLFSSL_PUBLIC_MP) + mp_int a; + WC_RNG rng; + int digits = 1; + + XMEMSET(&a, 0, sizeof(mp_int)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(mp_rand(&a, digits, NULL), WC_NO_ERR_TRACE(MISSING_RNG_E)); + ExpectIntEQ(mp_rand(NULL, digits, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(mp_rand(&a, 0, &rng), WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + ExpectIntEQ(mp_rand(&a, digits, &rng), 0); + + mp_clear(&a); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); +} /* End test_mp_rand */ + +/* + * Testing wc_export_int + */ +int test_wc_export_int(void) +{ + EXPECT_DECLS; +#if (defined(HAVE_ECC) || defined(WOLFSSL_EXPORT_INT)) && \ + defined(WOLFSSL_PUBLIC_MP) + mp_int mp; + byte buf[32]; + word32 keySz = (word32)sizeof(buf); + word32 len = (word32)sizeof(buf); + + XMEMSET(&mp, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&mp), MP_OKAY); + ExpectIntEQ(mp_set(&mp, 1234), 0); + + ExpectIntEQ(wc_export_int(NULL, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), + WC_NO_ERR_TRACE(BAD_FUNC_ARG)); + len = sizeof(buf)-1; + ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), + WC_NO_ERR_TRACE(BUFFER_E)); + len = sizeof(buf); + ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), 0); + len = 4; /* test input too small */ + ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), + WC_NO_ERR_TRACE(BUFFER_E)); + len = sizeof(buf); + ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), 0); + /* hex version of 1234 is 04D2 and should be 4 digits + 1 null */ + ExpectIntEQ(len, 5); + + mp_clear(&mp); +#endif + return EXPECT_RESULT(); +} /* End test_wc_export_int */ + diff --git a/tests/api/test_wolfmath.h b/tests/api/test_wolfmath.h new file mode 100644 index 000000000..e02020c75 --- /dev/null +++ b/tests/api/test_wolfmath.h @@ -0,0 +1,42 @@ +/* test_wolfmath.h + * + * Copyright (C) 2006-2025 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef WOLFCRYPT_TEST_WOLFMATH_H +#define WOLFCRYPT_TEST_WOLFMATH_H + +#include + +int test_get_digit_count(void); +int test_get_digit(void); +int test_get_rand_digit(void); +int test_mp_cond_copy(void); +int test_mp_rand(void); +int test_wc_export_int(void); + +#define TEST_WOLFMATH_DECLS \ + TEST_DECL_GROUP("wolfmath", test_get_digit_count), \ + TEST_DECL_GROUP("wolfmath", test_get_digit), \ + TEST_DECL_GROUP("wolfmath", test_get_rand_digit), \ + TEST_DECL_GROUP("wolfmath", test_mp_cond_copy), \ + TEST_DECL_GROUP("wolfmath", test_mp_rand), \ + TEST_DECL_GROUP("wolfmath", test_wc_export_int) + +#endif /* WOLFCRYPT_TEST_WOLFMATH_H */ diff --git a/tests/unit.c b/tests/unit.c index fa53c75ac..6bc6bda13 100644 --- a/tests/unit.c +++ b/tests/unit.c @@ -52,14 +52,19 @@ int main(int argc, char** argv) static void UnitTest_Usage(void) { printf("Usage: ./tests/unit.test \n"); - printf(" -?, --help Display this usage information.\n"); - printf(" --list List the API tests.\n"); - printf(" --api Only perform API tests.\n"); - printf(" - Run the API test identified by number.\n"); - printf(" Can be specified multiple times.\n"); - printf(" - Run the API test identified by name.\n"); - printf(" Can be specified multiple times.\n"); - printf(" Name of cipher suite testing file.\n"); + printf(" -?, --help Display this usage information.\n"); + printf(" --list List the API tests.\n"); + printf(" --api Only perform API tests.\n"); + printf(" --no-api Do not perform API tests.\n"); + printf(" --stopOnFail Stops API testing on first failure.\n"); + printf(" --groups List known group names.\n"); + printf(" --group Functions in this group are tested.\n"); + printf(" - Run the API test identified by number.\n"); + printf(" Can be specified multiple times.\n"); + printf(" - Run the API test identified by name.\n"); + printf(" Can be specified multiple times.\n"); + printf(" -~ Functions with this substring are tested.\n"); + printf(" Name of cipher suite testing file.\n"); } int unit_test(int argc, char** argv) @@ -196,6 +201,27 @@ int unit_test(int argc, char** argv) else if (XSTRCMP(argv[1], "--no-api") == 0) { apiTesting = 0; } + else if (XSTRCMP(argv[1], "--stopOnFail") == 0) { + ApiTest_StopOnFail(); + } + else if (XSTRCMP(argv[1], "--groups") == 0) { + ApiTest_PrintGroups(); + goto exit; + } + else if (XSTRCMP(argv[1], "--group") == 0) { + if (argc == 1) { + fprintf(stderr, "No group name supplied\n"); + ret = -1; + goto exit; + } + ret = ApiTest_RunGroup(argv[2]); + if (ret != 0) { + goto exit; + } + allTesting = 0; + argc--; + argv++; + } else if (argv[1][0] == '-' && argv[1][1] >= '0' && argv[1][1] <= '9') { ret = ApiTest_RunIdx(atoi(argv[1] + 1)); if (ret != 0) { diff --git a/tests/unit.h b/tests/unit.h index d20d97674..afacf9c38 100644 --- a/tests/unit.h +++ b/tests/unit.h @@ -414,7 +414,10 @@ int test_wolfSSL_client_server_nofail_memio(test_ssl_cbf* client_cb, test_ssl_cbf* server_cb, test_cbType client_on_handshake); #endif /* HAVE_SSL_MEMIO_TESTS_DEPENDENCIES */ +void ApiTest_StopOnFail(void); void ApiTest_PrintTestCases(void); +void ApiTest_PrintGroups(void); +int ApiTest_RunGroup(char* name); int ApiTest_RunIdx(int idx); int ApiTest_RunPartName(char* name); int ApiTest_RunName(char* name); diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index ed52d11b8..c73aa0489 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -38764,9 +38764,11 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ed448_test(void) (void)keySz; (void)sigSz; +#if defined(HAVE_ED448_KEY_IMPORT) ret = ed448_test_check_key(); if (ret < 0) return ret; +#endif #ifdef WOLFSSL_TEST_CERT ret = ed448_test_cert(); if (ret < 0)