From fa6b642b0152f393212ce5891bd18962dae5cffb Mon Sep 17 00:00:00 2001 From: olegsolovev Date: Thu, 9 Jul 2020 11:38:45 +0000 Subject: [PATCH 1/6] Version 3.2.0 up Patch SUSE-extra-symver redefined Man3 files setted as %doc --- .abf.yml | 2 +- SUSE-extra-symver.patch | 39 ++++++++++++++++++++++++--------------- libressl.spec | 25 ++++++------------------- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/.abf.yml b/.abf.yml index 6d0f88b..8bd84d4 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,2 +1,2 @@ sources: - libressl-3.0.2.git20200319.tar.gz: 88a2cf55c423b7ea60fc5ccc3f2539b99221790f + libressl-3.2.0.tar.gz: de3c762ffaba7c60101f92d2a419e886a199de03 diff --git a/SUSE-extra-symver.patch b/SUSE-extra-symver.patch index 61c2af9..2815b0c 100644 --- a/SUSE-extra-symver.patch +++ b/SUSE-extra-symver.patch @@ -1,20 +1,22 @@ -From f2969c659b4cbccbb3766f72926a9a829b17d561 Mon Sep 17 00:00:00 2001 +From 11a5823b7300099137473775d7ad2128b4420490 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt -Date: Mon, 4 Dec 2017 21:25:11 +0100 -Subject: [PATCH 8/8] SUSE extra symver +Date: Thu, 9 Jul 2020 14:11:14 +0000 +Subject: [PATCH] SUSE-extra-symver.patch + +Redefined by Oleg Solvev Add symbol versions into the library to be on par with openssl. --- - libressl/crypto/Makefile.am | 6 +++++- - libressl/ssl/Makefile.am | 6 +++++- - libressl/tls/Makefile.am | 6 +++++- - 3 files changed, 15 insertions(+), 3 deletions(-) + crypto/Makefile.am | 7 ++++++- + ssl/Makefile.am | 7 ++++++- + tls/Makefile.am | 7 ++++++- + 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/crypto/Makefile.am b/crypto/Makefile.am -index 156a756..1e54634 100644 +index b897c00..3a96361 100644 --- a/crypto/Makefile.am +++ b/crypto/Makefile.am -@@ -93,7 +93,11 @@ if HOST_WIN +@@ -93,7 +93,12 @@ if HOST_WIN -mv crypto_portable.sym.tmp crypto_portable.sym endif @@ -24,30 +26,33 @@ index 156a756..1e54634 100644 + +libcrypto_la_DEPENDENCIES = crypto2.sym libcompat.la +libcrypto_la_LDFLAGS = -version-info @LIBCRYPTO_VERSION@ -no-undefined -Wl,--version-script=crypto2.sym ++ + EXTRA_libcrypto_la_DEPENDENCIES = crypto_portable.sym libcrypto_la_LIBADD = libcompat.la if !HAVE_EXPLICIT_BZERO - libcrypto_la_LIBADD += libcompatnoopt.la diff --git a/ssl/Makefile.am b/ssl/Makefile.am -index 2651181..6191b80 100644 +index a7bb8a3..e01138d 100644 --- a/ssl/Makefile.am +++ b/ssl/Makefile.am -@@ -7,6 +7,11 @@ EXTRA_DIST += CMakeLists.txt +@@ -7,7 +7,12 @@ EXTRA_DIST += CMakeLists.txt EXTRA_DIST += ssl.sym libssl_la_LDFLAGS = -version-info @LIBSSL_VERSION@ -no-undefined -export-symbols $(top_srcdir)/ssl/ssl.sym +-libssl_la_LIBADD = $(abs_top_builddir)/crypto/libcrypto.la $(PLATFORM_LDADD) +ssl2.sym: ssl.sym + (echo 'LIBRESSL { global: '; sed -e 's/\(.*\)/\1;/' <$<; echo 'local: *; };') >$@ + +libssl_la_DEPENDENCIES = ssl2.sym +libssl_la_LDFLAGS = -version-info @LIBSSL_VERSION@ -no-undefined -Wl,--version-script=ssl2.sym - libssl_la_LIBADD = $(abs_top_builddir)/crypto/libcrypto.la $(PLATFORM_LDADD) ++ libssl_la_LIBADD = $(abs_top_builddir)/crypto/libcrypto.la $(PLATFORM_LDADD) libssl_la_SOURCES = bio_ssl.c + libssl_la_SOURCES += bs_ber.c diff --git a/tls/Makefile.am b/tls/Makefile.am -index 942abf9..0be3f5d 100644 +index 942abf9..a722ef1 100644 --- a/tls/Makefile.am +++ b/tls/Makefile.am -@@ -6,7 +6,11 @@ EXTRA_DIST = VERSION +@@ -6,7 +6,12 @@ EXTRA_DIST = VERSION EXTRA_DIST += CMakeLists.txt EXTRA_DIST += tls.sym @@ -57,6 +62,10 @@ index 942abf9..0be3f5d 100644 + +libtls_la_DEPENDENCIES = tls2.sym +libtls_la_LDFLAGS = -version-info @LIBTLS_VERSION@ -no-undefined -Wl,--version-script=tls2.sym ++ libtls_la_LIBADD = $(abs_top_builddir)/ssl/libssl.la libtls_la_LIBADD += $(abs_top_builddir)/crypto/libcrypto.la libtls_la_LIBADD += $(PLATFORM_LDADD) +-- +2.26.2 + diff --git a/libressl.spec b/libressl.spec index f8f175d..c68e64d 100644 --- a/libressl.spec +++ b/libressl.spec @@ -58,28 +58,15 @@ %define libcrypto_pkg %mklibname crypto_libressl %{libcrypto_sover} %define libtls_pkg %mklibname tls_libressl %{libtls_sover} -%define base_version 3.0.2 -%define git_date 20200319 +%define base_version 3.2.0 Summary: LibreSSL utils and libs coexisting with OpenSSL Name: libressl -Version: %{base_version}.git%{git_date} -Release: 25 +Version: 3.2.0 +Release: 1 # The code is distributed under ISC license except of original OpenSSL code License: ISC and BSD-like Group: System/Base Url: http://libressl.org -# Using a git snapshot, because CMS (Cryptographic Message Syntax) -# was enabled later than v3.0.2, includes a lot of commits and is needed. -# Ability to sign files using SHA-512 and not only SHA-1 is also needed. -# TODO: switch to release tarballs in next versions. -# https://bugzilla.kernel.org/show_bug.cgi?id=202159 -# To make a tarball from git: -# git clone https://github.com/libressl-portable/portable.git -# cd portable && ./autogen.sh && ./dist.sh -# Built from: -# - libressl-portable/portable commit b462bfdb -# - libressl-portable/openbsd commit 1203000a -#Source0: http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-%{version}.tar.gz Source0: libressl-%{version}.tar.gz Source10: libressl.rpmlintrc # TODO: add printing config location to `openssl version` @@ -201,7 +188,7 @@ pkg-config sets -I%{_libdir} in CFLAGS. %{_olibdir}/pkgconfig/*.pc %{_includedir} %{_mandir}/*/* -%{_omandir}/man3/* +%doc %{_omandir}/man3/* %{_rpmmacrodir}/*libressl* #------------------------------------------------------------------------------------- @@ -265,7 +252,7 @@ capabilities. #------------------------------------------------------------------------------------- %prep -%setup -q -n libressl-3.1.0 +%setup -q -n libressl-%{version} %patch2 -p1 # Patch is against gits https://github.com/libressl-portable/ # Release tarball is packaged in a tricky way @@ -414,7 +401,7 @@ mv -v %{buildroot}/%{_openssldir}/openssl.cnf %{buildroot}/%{_openssldir}/libres # Having sovers as macros may be useful to check that binaries are linked against LibreSSL cat << EOF > macros.file -%%libressl_version %{base_version} +%%libressl_version %{version} %%libressl_libcrypto_sover %{libcrypto_sover} %%libressl_libssl_sover %{libssl_sover} %%libressl_libtls_sover %{libtls_sover} From 2d4e2f6ffa94e46f4a079513acd2edfed45fdf48 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Mon, 13 Jul 2020 10:33:42 +0300 Subject: [PATCH 2/6] rm unused macro, fix Source0 --- libressl.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libressl.spec b/libressl.spec index c68e64d..4edf2d9 100644 --- a/libressl.spec +++ b/libressl.spec @@ -58,7 +58,6 @@ %define libcrypto_pkg %mklibname crypto_libressl %{libcrypto_sover} %define libtls_pkg %mklibname tls_libressl %{libtls_sover} -%define base_version 3.2.0 Summary: LibreSSL utils and libs coexisting with OpenSSL Name: libressl Version: 3.2.0 @@ -67,7 +66,7 @@ Release: 1 License: ISC and BSD-like Group: System/Base Url: http://libressl.org -Source0: libressl-%{version}.tar.gz +Source0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-%{version}.tar.gz Source10: libressl.rpmlintrc # TODO: add printing config location to `openssl version` Patch1: 0001-Allow-custom-config-location.patch From ce2e67e4c299b072dc2b246277dad761056f7711 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Mon, 13 Jul 2020 10:48:19 +0300 Subject: [PATCH 3/6] Make RPM mark files in both %%_mandir and %%_omandir as docs (RPM4-only) This is a better fix of rpmlint warning that files are not marked as documentation then marking with %doc manually --- libressl.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libressl.spec b/libressl.spec index 4edf2d9..6ea7895 100644 --- a/libressl.spec +++ b/libressl.spec @@ -21,6 +21,8 @@ %define _defaultdocdir %{_oprefix}/share/doc # RPM 4 by default looks for *.pc in %%_libdir which is redefined %global __pkgconfig_path ^(%{_olibdir}/pkgconfig/.*\\.pc|%{_obindir}/pkg-config)$ +# Make RPM mark files in both %%_mandir and %%_omandir as docs (RPM4-only) +%global __docdir_path %{__docdir_path}:%{_omandir} # Disable /usr/share/spec-helper/relink_symlinks # to make sure that symlinks are not broken %define dont_relink 1 @@ -61,7 +63,7 @@ Summary: LibreSSL utils and libs coexisting with OpenSSL Name: libressl Version: 3.2.0 -Release: 1 +Release: 2 # The code is distributed under ISC license except of original OpenSSL code License: ISC and BSD-like Group: System/Base @@ -187,7 +189,7 @@ pkg-config sets -I%{_libdir} in CFLAGS. %{_olibdir}/pkgconfig/*.pc %{_includedir} %{_mandir}/*/* -%doc %{_omandir}/man3/* +%{_omandir}/man3/* %{_rpmmacrodir}/*libressl* #------------------------------------------------------------------------------------- From faac7d3eaad6a55804ad856f748cba936ff2a0cc Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Wed, 5 Aug 2020 12:55:25 +0300 Subject: [PATCH 4/6] Add gost-new patches sponsored by ROSA Linux TODO: add tests --- .abf.yml | 3 +- 0001-Allow-custom-config-location.patch | 6 +- 0002-Remove-expired-certificate-ok-tb.patch | 82 + ...t-PKCS7_final-3-which-was-already-me.patch | 562 + 0004-distracting-whitespace.patch | 58 + ...ew-manual-page-PKCS7_add_attribute-3.patch | 378 + ...t-TLS_method-3-also-supports-TLSv1.3.patch | 41 + 0007-minor-polishing.patch | 58 + 0008-Apply-some-style-9.patch | 90 + ...d-support-for-additional-GOST-curves.patch | 300 + ...-a-few-more-errors-to-help-debugging.patch | 85 + ...C-using-Streebog-GOST-R-34.11-2012-h.patch | 42 + ...ST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch | 36 + ...FORMAT_RS_LE-when-verifying-certific.patch | 72 + 0014-Handle-GOST-in-ssl_cert_dup.patch | 40 + ...GOST-R-34.10-94-as-a-CertificateType.patch | 40 + ...llocated-GOST-ClientCertificateTypes.patch | 96 + ...custom-copy-handler-for-AES-key-wrap.patch | 96 + 0018-document-PKCS7_get_signer_info-3.patch | 191 + ...tweaks-from-ross-l-richardson-and-tb.patch | 52 + ..._ASN1_read-3-and-PEM_ASN1_read_bio-3.patch | 367 + ...ying-that-name_cmp-is-intentionally-.patch | 42 + ...-and-license-which-i-forgot-when-add.patch | 46 + 0023-Document-PEM_def_callback-3.patch | 430 + 0024-Document-EVP_read_pw_string_min-3.patch | 115 + ...pulate-params-tables-with-new-curves.patch | 44 + ...gost-use-ECerror-to-report-EC-errors.patch | 112 + ...pport-new-PublicKeyParameters-format.patch | 92 + ...pport-unwrapped-private-keys-support.patch | 259 + ...kcs12-add-support-for-GOST-PFX-files.patch | 109 + ...ons-implementing-common-code-for-64-.patch | 750 + ...-drop-key_len-from-Gost28147_set_key.patch | 185 + ..._meshing-for-specifying-section-size.patch | 84 + 0033-gost-add-support-for-magma-cipher.patch | 468 + ...st-add-support-for-kuznyechik-cipher.patch | 13047 ++++++++++++++++ ...nyechik-fix-IV-handling-for-CTR-mode.patch | 52 + 0036-magma-fix-IV-handling-for-CTR-mode.patch | 52 + ...-gost-add-support-for-ACPKM-rekeying.patch | 100 + ...-for-GOST-34.12-Magma-Kuznyechik-enc.patch | 202 + ...add-support-for-magma-ctr-acpkm-mode.patch | 193 + ...upport-for-kuznyechik-ctr-acpkm-mode.patch | 188 + ...tions-implementing-KDF_TREE-function.patch | 249 + ...-for-new-GOST-key-transport-data-for.patch | 823 + ...des-add-support-for-128-bit-MGM-mode.patch | 380 + ...odes-add-support-for-64-bit-MGM-mode.patch | 378 + 0045-gost-add-kuznyechik-mgm-support.patch | 258 + 0046-gost-add-magma-mgm-support.patch | 254 + ...evp-add-simple-test-for-AEAD-ciphers.patch | 427 + ..._CIPHER-interface-for-kuznyechik-mgm.patch | 244 + ...d-EVP_CIPHER-interface-for-magma-mgm.patch | 235 + ...for-Kuznyechik-ctr-acpkm-omac-cipher.patch | 251 + ...port-for-Magma-ctr-acpkm-omac-cipher.patch | 251 + ...tch => 0052-gost-restore-CMS-support.patch | 29 +- ...rt-for-CMS-and-SMIME-enveloped-files.patch | 349 + ...-for-using-AEAD-ciphers-in-CMS-files.patch | 224 + ...e-SMIMECaps-with-new-GOST-algorithms.patch | 32 + ...llow-keys-support-different-RI-types.patch | 112 + ...-kuznyechik-kexp15-keywrap-algorithm.patch | 210 + ...pport-magma-kexp15-keywrap-algorithm.patch | 210 + ...cifying-old-or-new-KEG-derivation-fo.patch | 144 + ...support-for-setting-KeyAgreement-UKM.patch | 72 + ...proper-cipher-for-GOST-KeyAgreeement.patch | 41 + ...inator-key-for-KeyAgreement-decoding.patch | 202 + ...ifying-originator-certificate-and-ke.patch | 277 + ...-for-decoding-KeyAgreement-CMS-files.patch | 411 + ...toguess-preferred-RecipientInfo-type.patch | 45 + ...or-CipherKeyExchange-message-in-GOST.patch | 41 + ...-that-result-of-data-encryption-woul.patch | 46 + ...ct-proper-default-algorithm-for-GOST.patch | 146 + ...for-IANA-allocated-GOST-sigalgs-valu.patch | 109 + ...-interoperability-with-CryptoPro-CSP.patch | 40 + ...do-not-send-GOST-94-certificate-type.patch | 31 + ...for-new-GOST-CNT-IMIT-ciphersuite-va.patch | 47 + ...p-add-EVP_PKEY_new_CMAC_key-function.patch | 89 + ...x-sign-verify-for-EVP_PKEY_CMAC-keys.patch | 77 + ...EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch | 49 + ...or-gost-kdf-key-exchange-for-CTR-OMA.patch | 36 + ...fines-for-GOST-CTR-OMAC-ciphersuites.patch | 211 + ...dd-support-for-GOST-KDF-key-exchange.patch | 411 + ...cting-CMAC-for-CTR-OMAC-ciphersuites.patch | 158 + ...-session-size-for-CTR-OMAC-ciphersui.patch | 31 + ...-message-length-for-CTR-OMAC-ciphers.patch | 150 + 0082-ssl-fix-CMAC-support.patch | 182 + ...nd-write-sequence-secrets-into-commo.patch | 261 + 0084-ssl-drop-mac_flags-field.patch | 87 + ...ncrements-for-GOST-CTR-OMAC-ciphersu.patch | 177 + ...pport-for-TLSTREE-rekeying-algorithm.patch | 275 + ...ssl-add-support-for-TLSTREE-rekeying.patch | 243 + ...ons-implementing-common-code-for-64-.patch | 15 + ...33-gost-add-support-for-magma-cipher.patch | 12 + ...st-add-support-for-kuznyechik-cipher.patch | 24 + ...tions-implementing-KDF_TREE-function.patch | 26 + ...-for-new-GOST-key-transport-data-for.patch | 13 + ...des-add-support-for-128-bit-MGM-mode.patch | 12 + ...odes-add-support-for-64-bit-MGM-mode.patch | 12 + ...pport-for-TLSTREE-rekeying-algorithm.patch | 13 + PORTABLE-0100-fixup-build.patch | 38 + ...h => PORTABLE-2200-SUSE-extra-symver.patch | 4 +- libressl.spec | 196 +- 99 files changed, 28596 insertions(+), 39 deletions(-) create mode 100644 0002-Remove-expired-certificate-ok-tb.patch create mode 100644 0003-Properly-document-PKCS7_final-3-which-was-already-me.patch create mode 100644 0004-distracting-whitespace.patch create mode 100644 0005-new-manual-page-PKCS7_add_attribute-3.patch create mode 100644 0006-mention-that-TLS_method-3-also-supports-TLSv1.3.patch create mode 100644 0007-minor-polishing.patch create mode 100644 0008-Apply-some-style-9.patch create mode 100644 0009-Add-support-for-additional-GOST-curves.patch create mode 100644 0010-Add-a-few-more-errors-to-help-debugging.patch create mode 100644 0011-Add-OIDs-for-HMAC-using-Streebog-GOST-R-34.11-2012-h.patch create mode 100644 0012-Allow-GOST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch create mode 100644 0013-Enable-GOST_SIG_FORMAT_RS_LE-when-verifying-certific.patch create mode 100644 0014-Handle-GOST-in-ssl_cert_dup.patch create mode 100644 0015-Stop-sending-GOST-R-34.10-94-as-a-CertificateType.patch create mode 100644 0016-Use-IANA-allocated-GOST-ClientCertificateTypes.patch create mode 100644 0017-Add-a-custom-copy-handler-for-AES-key-wrap.patch create mode 100644 0018-document-PKCS7_get_signer_info-3.patch create mode 100644 0019-wording-tweaks-from-ross-l-richardson-and-tb.patch create mode 100644 0020-document-PEM_ASN1_read-3-and-PEM_ASN1_read_bio-3.patch create mode 100644 0021-add-a-comment-saying-that-name_cmp-is-intentionally-.patch create mode 100644 0022-add-my-Copyright-and-license-which-i-forgot-when-add.patch create mode 100644 0023-Document-PEM_def_callback-3.patch create mode 100644 0024-Document-EVP_read_pw_string_min-3.patch create mode 100644 0025-gost-populate-params-tables-with-new-curves.patch create mode 100644 0026-gost-use-ECerror-to-report-EC-errors.patch create mode 100644 0027-gost-support-new-PublicKeyParameters-format.patch create mode 100644 0028-gostr341001-support-unwrapped-private-keys-support.patch create mode 100644 0029-pkcs12-add-support-for-GOST-PFX-files.patch create mode 100644 0030-modes-add-functions-implementing-common-code-for-64-.patch create mode 100644 0031-gost-drop-key_len-from-Gost28147_set_key.patch create mode 100644 0032-gost-use-key_meshing-for-specifying-section-size.patch create mode 100644 0033-gost-add-support-for-magma-cipher.patch create mode 100644 0034-gost-add-support-for-kuznyechik-cipher.patch create mode 100644 0035-kuznyechik-fix-IV-handling-for-CTR-mode.patch create mode 100644 0036-magma-fix-IV-handling-for-CTR-mode.patch create mode 100644 0037-gost-add-support-for-ACPKM-rekeying.patch create mode 100644 0038-gost-add-support-for-GOST-34.12-Magma-Kuznyechik-enc.patch create mode 100644 0039-gost-add-support-for-magma-ctr-acpkm-mode.patch create mode 100644 0040-gost-add-support-for-kuznyechik-ctr-acpkm-mode.patch create mode 100644 0041-kdftree-add-functions-implementing-KDF_TREE-function.patch create mode 100644 0042-gost-add-support-for-new-GOST-key-transport-data-for.patch create mode 100644 0043-modes-add-support-for-128-bit-MGM-mode.patch create mode 100644 0044-modes-add-support-for-64-bit-MGM-mode.patch create mode 100644 0045-gost-add-kuznyechik-mgm-support.patch create mode 100644 0046-gost-add-magma-mgm-support.patch create mode 100644 0047-regress-evp-add-simple-test-for-AEAD-ciphers.patch create mode 100644 0048-evp-add-EVP_CIPHER-interface-for-kuznyechik-mgm.patch create mode 100644 0049-evp-add-EVP_CIPHER-interface-for-magma-mgm.patch create mode 100644 0050-evp-add-support-for-Kuznyechik-ctr-acpkm-omac-cipher.patch create mode 100644 0051-evp-add-support-for-Magma-ctr-acpkm-omac-cipher.patch rename 0001-gost-restore-CMS-support.patch => 0052-gost-restore-CMS-support.patch (73%) create mode 100644 0053-gost-add-support-for-CMS-and-SMIME-enveloped-files.patch create mode 100644 0054-cms-add-support-for-using-AEAD-ciphers-in-CMS-files.patch create mode 100644 0055-cms-populate-SMIMECaps-with-new-GOST-algorithms.patch create mode 100644 0056-cms-allow-keys-support-different-RI-types.patch create mode 100644 0057-evp-support-kuznyechik-kexp15-keywrap-algorithm.patch create mode 100644 0058-evp-support-magma-kexp15-keywrap-algorithm.patch create mode 100644 0059-gost-support-specifying-old-or-new-KEG-derivation-fo.patch create mode 100644 0060-cms-add-support-for-setting-KeyAgreement-UKM.patch create mode 100644 0061-cms-select-proper-cipher-for-GOST-KeyAgreeement.patch create mode 100644 0062-cms-specify-originator-key-for-KeyAgreement-decoding.patch create mode 100644 0063-cms-support-specifying-originator-certificate-and-ke.patch create mode 100644 0064-gost-add-support-for-decoding-KeyAgreement-CMS-files.patch create mode 100644 0065-cms-autoguess-preferred-RecipientInfo-type.patch create mode 100644 0066-Fix-S-Box-used-for-CipherKeyExchange-message-in-GOST.patch create mode 100644 0067-gost-pmeth-check-that-result-of-data-encryption-woul.patch create mode 100644 0068-ssl_sigalgs-select-proper-default-algorithm-for-GOST.patch create mode 100644 0069-ssl-add-support-for-IANA-allocated-GOST-sigalgs-valu.patch create mode 100644 0070-ssl-provide-interoperability-with-CryptoPro-CSP.patch create mode 100644 0071-ssl-do-not-send-GOST-94-certificate-type.patch create mode 100644 0072-ssl-add-support-for-new-GOST-CNT-IMIT-ciphersuite-va.patch create mode 100644 0073-evp-add-EVP_PKEY_new_CMAC_key-function.patch create mode 100644 0074-evp-fix-sign-verify-for-EVP_PKEY_CMAC-keys.patch create mode 100644 0075-evp-fix-EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch create mode 100644 0076-objects-add-id-for-gost-kdf-key-exchange-for-CTR-OMA.patch create mode 100644 0077-ssl-add-defines-for-GOST-CTR-OMAC-ciphersuites.patch create mode 100644 0078-ssl-add-support-for-GOST-KDF-key-exchange.patch create mode 100644 0079-ssl-support-selecting-CMAC-for-CTR-OMAC-ciphersuites.patch create mode 100644 0080-ssl-select-ACPKM-session-size-for-CTR-OMAC-ciphersui.patch create mode 100644 0081-ssl-fix-Finished-message-length-for-CTR-OMAC-ciphers.patch create mode 100644 0082-ssl-fix-CMAC-support.patch create mode 100644 0083-ssl-merge-read-and-write-sequence-secrets-into-commo.patch create mode 100644 0084-ssl-drop-mac_flags-field.patch create mode 100644 0085-ssl-support-IV-increments-for-GOST-CTR-OMAC-ciphersu.patch create mode 100644 0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch create mode 100644 0087-ssl-add-support-for-TLSTREE-rekeying.patch create mode 100644 PORTABLE-0030-modes-add-functions-implementing-common-code-for-64-.patch create mode 100644 PORTABLE-0033-gost-add-support-for-magma-cipher.patch create mode 100644 PORTABLE-0034-gost-add-support-for-kuznyechik-cipher.patch create mode 100644 PORTABLE-0041-kdftree-add-functions-implementing-KDF_TREE-function.patch create mode 100644 PORTABLE-0042-gost-add-support-for-new-GOST-key-transport-data-for.patch create mode 100644 PORTABLE-0043-modes-add-support-for-128-bit-MGM-mode.patch create mode 100644 PORTABLE-0044-modes-add-support-for-64-bit-MGM-mode.patch create mode 100644 PORTABLE-0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch create mode 100644 PORTABLE-0100-fixup-build.patch rename SUSE-extra-symver.patch => PORTABLE-2200-SUSE-extra-symver.patch (98%) diff --git a/.abf.yml b/.abf.yml index 8bd84d4..9413210 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,2 +1,3 @@ sources: - libressl-3.2.0.tar.gz: de3c762ffaba7c60101f92d2a419e886a199de03 + libressl-openbsd-768c7156952b7df8245172586ca8c4c37d599a47.tar.gz: ab8c29e38a759d6b1c9d0abe1da99984ddcfdce2 + libressl-portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322.tar.gz: 18b8a78ec08f4224f2ee590b0ded804481a2b932 diff --git a/0001-Allow-custom-config-location.patch b/0001-Allow-custom-config-location.patch index da1c68a..32b82de 100644 --- a/0001-Allow-custom-config-location.patch +++ b/0001-Allow-custom-config-location.patch @@ -1,7 +1,7 @@ -From 4074611c49806fa5e8937a5aa24d9084235a89a5 Mon Sep 17 00:00:00 2001 +From d2e4509e4ce2b6b622291a9879e41dc0717774a0 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Fri, 29 Nov 2019 21:24:49 +0300 -Subject: [PATCH] Allow custom config location +Subject: [PATCH 01/87] Allow custom config location I want LibreSSL to: - coexist with OpenSSL @@ -52,5 +52,5 @@ index c9a2f34b2..313d6ecee 100644 return p; } -- -2.20.1 +2.17.1 diff --git a/0002-Remove-expired-certificate-ok-tb.patch b/0002-Remove-expired-certificate-ok-tb.patch new file mode 100644 index 0000000..783b8a4 --- /dev/null +++ b/0002-Remove-expired-certificate-ok-tb.patch @@ -0,0 +1,82 @@ +From 23b68544c48ef0bc931b2693a32d45394cdac7b2 Mon Sep 17 00:00:00 2001 +From: sthen <> +Date: Mon, 1 Jun 2020 18:53:53 +0000 +Subject: [PATCH 02/87] Remove expired certificate, ok tb@ /C=SE/O=AddTrust + AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root + +--- + src/lib/libcrypto/cert.pem | 54 +------------------------------------- + 1 file changed, 1 insertion(+), 53 deletions(-) + +diff --git a/src/lib/libcrypto/cert.pem b/src/lib/libcrypto/cert.pem +index c8531a781..de7633ce1 100644 +--- a/src/lib/libcrypto/cert.pem ++++ b/src/lib/libcrypto/cert.pem +@@ -1,4 +1,4 @@ +-# $OpenBSD: cert.pem,v 1.20 2020/04/10 12:13:17 sthen Exp $ ++# $OpenBSD: cert.pem,v 1.21 2020/06/01 18:53:53 sthen Exp $ + ### /C=ES/CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 + + === /C=ES/CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +@@ -350,58 +350,6 @@ LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT + LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== + -----END CERTIFICATE----- + +-### AddTrust AB +- +-=== /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root +-Certificate: +- Data: +- Version: 3 (0x2) +- Serial Number: 1 (0x1) +- Signature Algorithm: sha1WithRSAEncryption +- Validity +- Not Before: May 30 10:48:38 2000 GMT +- Not After : May 30 10:48:38 2020 GMT +- Subject: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root +- X509v3 extensions: +- X509v3 Subject Key Identifier: +- AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A +- X509v3 Key Usage: +- Certificate Sign, CRL Sign +- X509v3 Basic Constraints: critical +- CA:TRUE +- X509v3 Authority Key Identifier: +- keyid:AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A +- DirName:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root +- serial:01 +- +-SHA1 Fingerprint=02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68 +-SHA256 Fingerprint=68:7F:A4:51:38:22:78:FF:F0:C8:B1:1F:8D:43:D5:76:67:1C:6E:B2:BC:EA:B4:13:FB:83:D9:65:D0:6D:2F:F2 +------BEGIN CERTIFICATE----- +-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +-MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +-IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +-MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +-FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +-bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +-dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +-H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +-uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +-mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +-a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +-E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +-WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +-VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +-Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +-cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +-IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +-AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +-YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +-6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +-Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +-c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +-mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +------END CERTIFICATE----- +- + ### AffirmTrust + + === /C=US/O=AffirmTrust/CN=AffirmTrust Commercial +-- +2.17.1 + diff --git a/0003-Properly-document-PKCS7_final-3-which-was-already-me.patch b/0003-Properly-document-PKCS7_final-3-which-was-already-me.patch new file mode 100644 index 0000000..ab46e4a --- /dev/null +++ b/0003-Properly-document-PKCS7_final-3-which-was-already-me.patch @@ -0,0 +1,562 @@ +From 4136b433281acfa0808344e5db0f77ec981c30ee Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Wed, 3 Jun 2020 13:41:27 +0000 +Subject: [PATCH 03/87] Properly document PKCS7_final(3), which was already + mentioned in passing in some other manual pages. + +--- + src/lib/libcrypto/man/Makefile | 3 +- + .../man/PEM_write_bio_PKCS7_stream.3 | 7 +- + src/lib/libcrypto/man/PKCS7_dataFinal.3 | 5 +- + src/lib/libcrypto/man/PKCS7_dataInit.3 | 25 ++- + src/lib/libcrypto/man/PKCS7_encrypt.3 | 14 +- + src/lib/libcrypto/man/PKCS7_final.3 | 201 ++++++++++++++++++ + src/lib/libcrypto/man/PKCS7_sign.3 | 16 +- + src/lib/libcrypto/man/PKCS7_sign_add_signer.3 | 9 +- + src/lib/libcrypto/man/SMIME_write_PKCS7.3 | 8 +- + src/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 | 7 +- + 10 files changed, 263 insertions(+), 32 deletions(-) + create mode 100644 src/lib/libcrypto/man/PKCS7_final.3 + +diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile +index 8af0c34d2..05b992e13 100644 +--- a/src/lib/libcrypto/man/Makefile ++++ b/src/lib/libcrypto/man/Makefile +@@ -1,4 +1,4 @@ +-# $OpenBSD: Makefile,v 1.164 2020/05/27 12:00:44 schwarze Exp $ ++# $OpenBSD: Makefile,v 1.165 2020/06/03 13:41:27 schwarze Exp $ + + .include + +@@ -218,6 +218,7 @@ MAN= \ + PKCS7_dataInit.3 \ + PKCS7_decrypt.3 \ + PKCS7_encrypt.3 \ ++ PKCS7_final.3 \ + PKCS7_new.3 \ + PKCS7_set_content.3 \ + PKCS7_set_type.3 \ +diff --git a/src/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 b/src/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 +index 91a1a5cd5..dba2a42a7 100644 +--- a/src/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 ++++ b/src/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: PEM_write_bio_PKCS7_stream.3,v 1.9 2019/06/14 13:59:32 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: PEM_write_bio_PKCS7_stream.3,v 1.10 2020/06/03 13:41:27 schwarze Exp $ ++.\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2007, 2009, 2016 The OpenSSL Project. All rights reserved. +@@ -48,7 +48,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 14 2019 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PEM_WRITE_BIO_PKCS7_STREAM 3 + .Os + .Sh NAME +@@ -81,6 +81,7 @@ otherwise 0 is returned and an error code can be retrieved with + .Xr BIO_new 3 , + .Xr i2d_PKCS7_bio_stream 3 , + .Xr PEM_write_PKCS7 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr SMIME_write_PKCS7 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/PKCS7_dataFinal.3 b/src/lib/libcrypto/man/PKCS7_dataFinal.3 +index f9cdd62f6..e2e088d9d 100644 +--- a/src/lib/libcrypto/man/PKCS7_dataFinal.3 ++++ b/src/lib/libcrypto/man/PKCS7_dataFinal.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_dataFinal.3,v 1.1 2020/05/27 12:00:44 schwarze Exp $ ++.\" $OpenBSD: PKCS7_dataFinal.3,v 1.2 2020/06/03 13:41:27 schwarze Exp $ + .\" + .\" Copyright (c) 2020 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: May 27 2020 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PKCS7_DATAFINAL 3 + .Os + .Sh NAME +@@ -134,6 +134,7 @@ but are silently skipped. + .Sh SEE ALSO + .Xr BIO_new 3 , + .Xr PKCS7_dataInit 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/PKCS7_dataInit.3 b/src/lib/libcrypto/man/PKCS7_dataInit.3 +index 53090ff96..cb54d3f95 100644 +--- a/src/lib/libcrypto/man/PKCS7_dataInit.3 ++++ b/src/lib/libcrypto/man/PKCS7_dataInit.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_dataInit.3,v 1.1 2020/05/24 12:37:30 schwarze Exp $ ++.\" $OpenBSD: PKCS7_dataInit.3,v 1.2 2020/06/03 13:41:27 schwarze Exp $ + .\" + .\" Copyright (c) 2020 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: May 24 2020 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PKCS7_DATAINIT 3 + .Os + .Sh NAME +@@ -110,6 +110,20 @@ are typically required to create + to choose its desired type, and to allocate the nested + .Vt ContentInfo + structure. ++Alternatively, for ++.Vt SignedData , ++.Xr PKCS7_sign 3 ++can be used with the ++.Dv PKCS7_PARTIAL ++or ++.Dv PKCS7_STREAM ++.Fa flags ++or for ++.Vt EnvelopedData , ++.Xr PKCS7_encrypt 3 ++with the ++.Dv PKCS7_STREAM ++flag. + .Pp + After calling + .Fn PKCS7_dataInit , +@@ -130,7 +144,10 @@ does support the + .Vt EnvelopedData + and + .Vt SignedAndEnvelopedData +-types, using it for these types is awkward and error prone because ++types, using it for these types is awkward and error prone ++except when using ++.Xr PKCS7_encrypt 3 ++for the setup because + .Xr PKCS7_content_new 3 + does not support these two types. + So in addition to creating +@@ -183,6 +200,8 @@ or for various other reasons. + .Xr BIO_read 3 , + .Xr PKCS7_content_new 3 , + .Xr PKCS7_dataFinal 3 , ++.Xr PKCS7_encrypt 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_set_type 3 , + .Xr PKCS7_sign 3 +diff --git a/src/lib/libcrypto/man/PKCS7_encrypt.3 b/src/lib/libcrypto/man/PKCS7_encrypt.3 +index 4d1b435f1..700498a1d 100644 +--- a/src/lib/libcrypto/man/PKCS7_encrypt.3 ++++ b/src/lib/libcrypto/man/PKCS7_encrypt.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: PKCS7_encrypt.3,v 1.10 2019/06/10 14:58:48 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: PKCS7_encrypt.3,v 1.11 2020/06/03 13:41:27 schwarze Exp $ ++.\" full merge up to: OpenSSL e9b77246 Jan 20 19:58:49 2017 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2002, 2006, 2007, 2008, 2009 The OpenSSL Project. +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 10 2019 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PKCS7_ENCRYPT 3 + .Os + .Sh NAME +@@ -133,11 +133,12 @@ properly finalize the + .Vt PKCS7 + structure will give unpredictable results. + .Pp +-Several functions, including ++Several functions including ++.Xr PKCS7_final 3 , + .Xr SMIME_write_PKCS7 3 , +-.Xr i2d_PKCS7_bio_stream 3 , +-and + .Xr PEM_write_bio_PKCS7_stream 3 , ++and ++.Xr i2d_PKCS7_bio_stream 3 + finalize the structure. + Alternatively finalization can be performed by obtaining the streaming + ASN.1 +@@ -155,6 +156,7 @@ The error can be obtained from + .Xr ERR_get_error 3 . + .Sh SEE ALSO + .Xr PKCS7_decrypt 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/PKCS7_final.3 b/src/lib/libcrypto/man/PKCS7_final.3 +new file mode 100644 +index 000000000..593483bb6 +--- /dev/null ++++ b/src/lib/libcrypto/man/PKCS7_final.3 +@@ -0,0 +1,201 @@ ++.\" $OpenBSD: PKCS7_final.3,v 1.1 2020/06/03 13:41:27 schwarze Exp $ ++.\" ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.Dd $Mdocdate: June 3 2020 $ ++.Dt PKCS7_FINAL 3 ++.Os ++.Sh NAME ++.Nm PKCS7_final ++.Nd read data from a BIO into a ContentInfo object ++.Sh SYNOPSIS ++.In openssl/pkcs7.h ++.Ft int ++.Fo PKCS7_final ++.Fa "PKCS7 *p7" ++.Fa "BIO *data" ++.Fa "int flags" ++.Fc ++.Sh DESCRIPTION ++.Fn PKCS7_final ++reads ++.Fa data ++and puts it into the appropriate content field of ++.Fa p7 ++itself or of its appropriate substructure, which can be of type ++.Vt SignedData , ++.Vt EnvelopedData , ++.Vt SignedAndEnvelopedData , ++.Vt DigestedData , ++or arbitrary data. ++The ++.Xr PKCS7_dataFinal 3 ++manual explains which field exactly the data is put into. ++.Pp ++The following ++.Fa flags ++are recognized: ++.Bl -tag -width PKCS7_BINARY ++.It Dv PKCS7_BINARY ++Copy the data verbatim without changing any bytes. ++By default, line endings are replaced with two-byte ++.Qq \er\en ++sequences (ASCII CR+LF). ++If this flag is set, ++.Dv PKCS7_TEXT ++is ignored. ++.It Dv PKCS7_TEXT ++Prepend ++.Qq Content-Type: text/plain ++followed by a blank line to the data. ++This flag is ignored if ++.Dv PKCS7_BINARY ++is also set. ++.El ++.Pp ++If any other bits are set in ++.Fa flags , ++for example ++.Dv PKCS7_STREAM ++or ++.Dv PKCS7_PARTIAL , ++they are ignored, allowing to pass the same ++.Fa flags ++argument that was already passed to ++.Xr PKCS7_sign 3 ++or ++.Xr PKCS7_encrypt 3 . ++.Pp ++.Fn PKCS7_final ++is most commonly used to finalize a ++.Fa p7 ++object returned from a call to ++.Xr PKCS7_sign 3 ++that used ++.Fa flags ++including ++.Dv PKCS7_PARTIAL ++or ++.Dv PKCS7_STREAM . ++With these flags, ++.Xr PKCS7_sign 3 ++ignores its ++.Fa data ++argument. ++The partial ++.Fa p7 ++object returned can then be customized, for example setting up ++multiple signers or non-default digest algorithms with ++.Xr PKCS7_sign_add_signer 3 , ++before calling ++.Fn PKCS7_final . ++.Pp ++Similarly, ++.Fn PKCS7_final ++can be used to finalize a ++.Fa p7 ++object returned from a call to ++.Xr PKCS7_encrypt 3 ++that used ++.Fa flags ++including ++.Dv PKCS7_STREAM . ++.Pp ++Since ++.Fn PKCS7_final ++starts by calling ++.Xr PKCS7_dataInit 3 ++internally, using it to finalize a ++.Fa p7 ++object containing ++.Vt SignedAndEnvelopedData , ++.Vt DigestedData , ++or arbitrary data requires the setup described in the ++.Xr PKCS7_dataInit 3 ++manual. ++For ++.Vt SignedData ++and ++.Vt EnvelopedData , ++such manual setup is also feasible, but it is more easily performed with ++.Xr PKCS7_sign 3 ++or ++.Xr PKCS7_encrypt 3 , ++respectively. ++.Pp ++.Fn PKCS7_final ++is only one among several functions that can be used to finalize ++.Fa p7 ; ++alternatives include ++.Xr SMIME_write_PKCS7 3 , ++.Xr PEM_write_bio_PKCS7_stream 3 , ++and ++.Xr i2d_PKCS7_bio_stream 3 . ++.Sh RETURN VALUES ++.Fn PKCS7_final ++returns 1 on success or 0 on failure. ++.Pp ++Possible reasons for failure include: ++.Pp ++.Bl -dash -compact -offset 2n -width 1n ++.It ++.Fa p7 ++is ++.Dv NULL . ++.It ++The ++.Fa content ++field of ++.Fa p7 ++is empty. ++.It ++The ++.Fa contentType ++of ++.Fa p7 ++is unsupported. ++.It ++Signing or digesting is requested and ++.Fa p7 ++is not configured to store a detached signature, but does not contain ++the required field to store the content either. ++.It ++At least one signer lacks a useable digest algorithm. ++.It ++A cipher is required but none is configured. ++.It ++Any required operation fails, for example signing or digesting. ++.It ++Memory allocation fails. ++.El ++.Pp ++Signers lacking private keys do not cause failure but are silently skipped. ++.Sh SEE ALSO ++.Xr BIO_new 3 , ++.Xr i2d_PKCS7_bio_stream 3 , ++.Xr PEM_write_bio_PKCS7_stream 3 , ++.Xr PKCS7_dataFinal 3 , ++.Xr PKCS7_dataInit 3 , ++.Xr PKCS7_encrypt 3 , ++.Xr PKCS7_new 3 , ++.Xr PKCS7_sign 3 , ++.Xr SMIME_write_PKCS7 3 ++.Sh HISTORY ++.Fn PKCS7_final ++first appeared in OpenSSL 1.0.0 and has been available since ++.Ox 4.9 . ++.Sh CAVEATS ++This function does not support ++.Vt EncryptedData . +diff --git a/src/lib/libcrypto/man/PKCS7_sign.3 b/src/lib/libcrypto/man/PKCS7_sign.3 +index a04e800ca..d5f4c89c6 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: PKCS7_sign.3,v 1.10 2019/06/10 14:58:48 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: PKCS7_sign.3,v 1.11 2020/06/03 13:41:27 schwarze Exp $ ++.\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2002, 2003, 2006-2009, 2015 The OpenSSL Project. +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 10 2019 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PKCS7_SIGN 3 + .Os + .Sh NAME +@@ -166,11 +166,12 @@ properly finalize the + .Vt PKCS7 + structure will give unpredictable results. + .Pp +-Several functions, including ++Several functions including ++.Xr PKCS7_final 3 , + .Xr SMIME_write_PKCS7 3 , +-.Xr i2d_PKCS7_bio_stream 3 , +-and + .Xr PEM_write_bio_PKCS7_stream 3 , ++and ++.Xr i2d_PKCS7_bio_stream 3 + finalize the structure. + Alternatively finalization can be performed by obtaining the streaming + ASN.1 +@@ -196,7 +197,7 @@ if the + flag is set. + One or more signers can be added using the function + .Xr PKCS7_sign_add_signer 3 . +-.Fn PKCS7_final ++.Xr PKCS7_final 3 + must also be called to finalize the structure if streaming is not + enabled. + Alternative signing digests can also be specified using this method. +@@ -228,6 +229,7 @@ The error can be obtained from + .Xr ERR_get_error 3 . + .Sh SEE ALSO + .Xr PKCS7_encrypt 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign_add_signer 3 , + .Xr PKCS7_verify 3 +diff --git a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +index 41d57c2c2..f8024d9b5 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.10 2019/06/14 13:59:32 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.11 2020/06/03 13:41:27 schwarze Exp $ ++.\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2007, 2008, 2009, 2015 The OpenSSL Project. +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 14 2019 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt PKCS7_SIGN_ADD_SIGNER 3 + .Os + .Sh NAME +@@ -100,7 +100,7 @@ flag is set, the returned + .Dv PKCS7 + structure is not complete and must be + finalized either by streaming (if applicable) or by a call to +-.Fn PKCS7_final . ++.Xr PKCS7_final 3 . + .Pp + The main purpose of this function is to provide finer control over a + PKCS#7 signed data structure where the simpler +@@ -174,6 +174,7 @@ In some cases of failure, the reason can be determined with + .Xr ERR_get_error 3 . + .Sh SEE ALSO + .Xr EVP_DigestInit 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/SMIME_write_PKCS7.3 b/src/lib/libcrypto/man/SMIME_write_PKCS7.3 +index 8baf6689a..39d8b5d85 100644 +--- a/src/lib/libcrypto/man/SMIME_write_PKCS7.3 ++++ b/src/lib/libcrypto/man/SMIME_write_PKCS7.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: SMIME_write_PKCS7.3,v 1.6 2019/06/14 13:59:32 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: SMIME_write_PKCS7.3,v 1.7 2020/06/03 13:41:27 schwarze Exp $ ++.\" full merge up to: OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2002, 2003, 2006, 2007, 2015 The OpenSSL Project. +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 14 2019 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt SMIME_WRITE_PKCS7 3 + .Os + .Sh NAME +@@ -132,7 +132,9 @@ otherwise 0 is returned and an error code can be retrieved with + .Xr ERR_get_error 3 . + .Sh SEE ALSO + .Xr i2d_PKCS7_bio_stream 3 , ++.Xr PEM_write_bio_PKCS7_stream 3 , + .Xr PEM_write_PKCS7 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr SMIME_read_PKCS7 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 b/src/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 +index 463d861be..3d5df72b3 100644 +--- a/src/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 ++++ b/src/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 +@@ -1,5 +1,5 @@ +-.\" $OpenBSD: i2d_PKCS7_bio_stream.3,v 1.7 2018/03/23 04:34:23 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: i2d_PKCS7_bio_stream.3,v 1.8 2020/06/03 13:41:27 schwarze Exp $ ++.\" OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . + .\" Copyright (c) 2007, 2008, 2009, 2013 The OpenSSL Project. +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: March 23 2018 $ ++.Dd $Mdocdate: June 3 2020 $ + .Dt I2D_PKCS7_BIO_STREAM 3 + .Os + .Sh NAME +@@ -82,6 +82,7 @@ returns 1 for success or 0 for failure. + .Xr ERR_get_error 3 , + .Xr PEM_write_bio_PKCS7_stream 3 , + .Xr PEM_write_PKCS7 3 , ++.Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr SMIME_write_PKCS7 3 + .Sh HISTORY +-- +2.17.1 + diff --git a/0004-distracting-whitespace.patch b/0004-distracting-whitespace.patch new file mode 100644 index 0000000..c4e3b38 --- /dev/null +++ b/0004-distracting-whitespace.patch @@ -0,0 +1,58 @@ +From 5029d3d4df84afafd0d2fdb31d907c10b568b7c3 Mon Sep 17 00:00:00 2001 +From: tb <> +Date: Tue, 2 Jun 2020 04:50:17 +0000 +Subject: [PATCH 04/87] distracting whitespace + +--- + src/lib/libssl/tls13_server.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c +index e9fecdee2..50ae69449 100644 +--- a/src/lib/libssl/tls13_server.c ++++ b/src/lib/libssl/tls13_server.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: tls13_server.c,v 1.55 2020/05/29 18:00:10 jsing Exp $ */ ++/* $OpenBSD: tls13_server.c,v 1.56 2020/06/02 04:50:17 tb Exp $ */ + /* + * Copyright (c) 2019, 2020 Joel Sing + * Copyright (c) 2020 Bob Beck +@@ -255,7 +255,7 @@ err: + } + + static int +-tls13_server_engage_record_protection(struct tls13_ctx *ctx) ++tls13_server_engage_record_protection(struct tls13_ctx *ctx) + { + struct tls13_secrets *secrets; + struct tls13_secret context; +@@ -469,7 +469,7 @@ tls13_server_check_certificate(struct tls13_ctx *ctx, CERT_PKEY *cpk, + /* + * The digitalSignature bit MUST be set if the Key Usage extension is + * present as per RFC 8446 section 4.4.2.2. +- */ ++ */ + if ((cpk->x509->ex_flags & EXFLAG_KUSAGE) && + !(cpk->x509->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE)) + goto done; +@@ -483,7 +483,7 @@ tls13_server_check_certificate(struct tls13_ctx *ctx, CERT_PKEY *cpk, + done: + return 1; + } +- ++ + static int + tls13_server_select_certificate(struct tls13_ctx *ctx, CERT_PKEY **out_cpk, + const struct ssl_sigalg **out_sigalg) +@@ -586,7 +586,7 @@ tls13_server_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb) + memset(&sig_cbb, 0, sizeof(sig_cbb)); + + if ((cpk = ctx->hs->cpk) == NULL) +- goto err; ++ goto err; + if ((sigalg = ctx->hs->sigalg) == NULL) + goto err; + pkey = cpk->privatekey; +-- +2.17.1 + diff --git a/0005-new-manual-page-PKCS7_add_attribute-3.patch b/0005-new-manual-page-PKCS7_add_attribute-3.patch new file mode 100644 index 0000000..5897a99 --- /dev/null +++ b/0005-new-manual-page-PKCS7_add_attribute-3.patch @@ -0,0 +1,378 @@ +From 52f72375ae466a3914e02a33dcd4a545ee773d52 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Thu, 4 Jun 2020 10:24:27 +0000 +Subject: [PATCH 05/87] new manual page PKCS7_add_attribute(3); tweaks and OK + tb@ + +--- + src/lib/libcrypto/man/Makefile | 3 +- + src/lib/libcrypto/man/PKCS7_add_attribute.3 | 179 ++++++++++++++++++ + src/lib/libcrypto/man/PKCS7_final.3 | 5 +- + src/lib/libcrypto/man/PKCS7_new.3 | 5 +- + src/lib/libcrypto/man/PKCS7_sign.3 | 9 +- + src/lib/libcrypto/man/PKCS7_sign_add_signer.3 | 7 +- + src/lib/libcrypto/man/X509_ATTRIBUTE_new.3 | 5 +- + 7 files changed, 201 insertions(+), 12 deletions(-) + create mode 100644 src/lib/libcrypto/man/PKCS7_add_attribute.3 + +diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile +index 05b992e13..7effea837 100644 +--- a/src/lib/libcrypto/man/Makefile ++++ b/src/lib/libcrypto/man/Makefile +@@ -1,4 +1,4 @@ +-# $OpenBSD: Makefile,v 1.165 2020/06/03 13:41:27 schwarze Exp $ ++# $OpenBSD: Makefile,v 1.166 2020/06/04 10:24:27 schwarze Exp $ + + .include + +@@ -214,6 +214,7 @@ MAN= \ + PKCS12_parse.3 \ + PKCS12_SAFEBAG_new.3 \ + PKCS5_PBKDF2_HMAC.3 \ ++ PKCS7_add_attribute.3 \ + PKCS7_dataFinal.3 \ + PKCS7_dataInit.3 \ + PKCS7_decrypt.3 \ +diff --git a/src/lib/libcrypto/man/PKCS7_add_attribute.3 b/src/lib/libcrypto/man/PKCS7_add_attribute.3 +new file mode 100644 +index 000000000..09c36a4d5 +--- /dev/null ++++ b/src/lib/libcrypto/man/PKCS7_add_attribute.3 +@@ -0,0 +1,179 @@ ++.\" $OpenBSD: PKCS7_add_attribute.3,v 1.1 2020/06/04 10:24:27 schwarze Exp $ ++.\" ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.Dd $Mdocdate: June 4 2020 $ ++.Dt PKCS7_ADD_ATTRIBUTE 3 ++.Os ++.Sh NAME ++.Nm PKCS7_add_attribute , ++.Nm PKCS7_get_attribute , ++.Nm PKCS7_add_signed_attribute , ++.Nm PKCS7_get_signed_attribute ++.Nd attributes of SignerInfo objects ++.Sh SYNOPSIS ++.In openssl/pkcs7.h ++.Ft int ++.Fo PKCS7_add_attribute ++.Fa "PKCS7_SIGNER_INFO *si" ++.Fa "int nid" ++.Fa "int attrtype" ++.Fa "void *value" ++.Fc ++.Ft ASN1_TYPE * ++.Fo PKCS7_get_attribute ++.Fa "PKCS7_SIGNER_INFO *si" ++.Fa "int nid" ++.Fc ++.Ft int ++.Fo PKCS7_add_signed_attribute ++.Fa "PKCS7_SIGNER_INFO *si" ++.Fa "int nid" ++.Fa "int attrtype" ++.Fa "void *value" ++.Fc ++.Ft ASN1_TYPE * ++.Fo PKCS7_get_signed_attribute ++.Fa "PKCS7_SIGNER_INFO *si" ++.Fa "int nid" ++.Fc ++.Sh DESCRIPTION ++.Fn PKCS7_add_attribute ++appends a new attribute of type ++.Fa nid ++to the ++.Fa unauthenticatedAttributes ++list of ++.Fa si , ++and it adds a new ASN.1 ANY object of type ++.Fa attrtype ++with the given ++.Fa value ++to the new attribute. ++Ownership of the ++.Fa value ++is transferred into the new attribute object, so the calling code ++must not ++.Xr free 3 ++the ++.Fa value . ++If the list already contains an unauthenticated attribute of type ++.Fa nid ++before the call, the new attribute replaces the old one ++instead of being appended to the end of the list. ++.Pp ++.Fn PKCS7_get_attribute ++retrieves the first ASN.1 ANY member of the attribute of type ++.Fa nid ++from the ++.Fa unauthenticatedAttributes ++list of ++.Fa si . ++.Pp ++The behaviour of ++.Fn PKCS7_add_signed_attribute ++and ++.Fn PKCS7_get_signed_attribute ++is identical except that they operate on the list of ++.Fa authenticatedAttributes . ++.Pp ++The normal way to use ++.Fn PKCS7_add_signed_attribute ++is to first create a ++.Vt SignedInfo ++object with ++.Xr PKCS7_sign 3 ++using the ++.Dv PKCS7_PARTIAL ++or ++.Dv PKCS7_STREAM ++flag, retrieve the ++.Vt PKCS7_SIGNER_INFO ++object with the undocumented function ++.Fn PKCS7_get_signer_info ++or add an additional one with ++.Xr PKCS7_sign_add_signer 3 , ++call ++.Fn PKCS7_add_signed_attribute ++for each desired additional attribute, then do the signing with ++.Xr PKCS7_final 3 ++or with another finalizing function. ++.Pp ++For particular types of attributes, undocumented wrapper functions ++.Fn PKCS7_add_attrib_content_type , ++.Fn PKCS7_add1_attrib_digest , ++.Fn PKCS7_add0_attrib_signing_time , ++and ++.Fn PKCS7_add_attrib_smimecap ++exist. ++.Sh RETURN VALUES ++.Fn PKCS7_add_attribute ++and ++.Fn PKCS7_add_signed_attribute ++return 1 on success or 0 on failure. ++The most common reason for failure is lack of memory. ++.Pp ++.Fn PKCS7_get_attribute ++and ++.Fn PKCS7_get_signed_attribute ++return an internal pointer to an ASN.1 ANY object or ++.Dv NULL ++on failure. ++They fail if ++.Fa nid ++is invalid, if the respective list in ++.Fa si ++contains no attribute of the requested type, or if an invalid element ++is found in the list before finding the attribute of the requested type. ++.Sh SEE ALSO ++.Xr ASN1_TYPE_new 3 , ++.Xr PKCS7_final 3 , ++.Xr PKCS7_new 3 , ++.Xr PKCS7_sign 3 , ++.Xr PKCS7_sign_add_signer 3 , ++.Xr STACK_OF 3 , ++.Xr X509_ATTRIBUTE_new 3 ++.Sh STANDARDS ++RFC 2315: PKCS #7: Cryptographic Message Syntax Version 1.5, ++section 9.2: SignerInfo type ++.Sh HISTORY ++These functions first appeared in OpenSSL 0.9.1 ++and have been available since ++.Ox 2.6 . ++.Sh BUGS ++Adding an attribute with an invalid ++.Fa nid ++ought to fail, but it actually succeeds ++setting the type of the new attribute to ++.Dv NULL . ++Subsequent attempts to retrieve attributes ++may cause the program to crash due to ++.Dv NULL ++pointer access. ++.Pp ++A function to remove individual attributes from these lists ++does not appear to exist. ++A program desiring to do that might have to manually iterate the fields ++.Fa auth_attr ++and ++.Fa unauth_attr ++of ++.Fa si , ++which are both of type ++.Vt STACK_OF(X509_ATTRIBUTE) , ++using the facilities described in ++.Xr STACK_OF 3 ++and ++.Xr OPENSSL_sk_new 3 . +diff --git a/src/lib/libcrypto/man/PKCS7_final.3 b/src/lib/libcrypto/man/PKCS7_final.3 +index 593483bb6..7c9e51521 100644 +--- a/src/lib/libcrypto/man/PKCS7_final.3 ++++ b/src/lib/libcrypto/man/PKCS7_final.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_final.3,v 1.1 2020/06/03 13:41:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_final.3,v 1.2 2020/06/04 10:24:27 schwarze Exp $ + .\" + .\" Copyright (c) 2020 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: June 3 2020 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt PKCS7_FINAL 3 + .Os + .Sh NAME +@@ -186,6 +186,7 @@ Signers lacking private keys do not cause failure but are silently skipped. + .Xr BIO_new 3 , + .Xr i2d_PKCS7_bio_stream 3 , + .Xr PEM_write_bio_PKCS7_stream 3 , ++.Xr PKCS7_add_attribute 3 , + .Xr PKCS7_dataFinal 3 , + .Xr PKCS7_dataInit 3 , + .Xr PKCS7_encrypt 3 , +diff --git a/src/lib/libcrypto/man/PKCS7_new.3 b/src/lib/libcrypto/man/PKCS7_new.3 +index 4abe3698e..c5eebe96d 100644 +--- a/src/lib/libcrypto/man/PKCS7_new.3 ++++ b/src/lib/libcrypto/man/PKCS7_new.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_new.3,v 1.10 2020/05/27 12:00:44 schwarze Exp $ ++.\" $OpenBSD: PKCS7_new.3,v 1.11 2020/06/04 10:24:27 schwarze Exp $ + .\" + .\" Copyright (c) 2016 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: May 27 2020 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt PKCS7_NEW 3 + .Os + .Sh NAME +@@ -246,6 +246,7 @@ frees + .Xr i2d_PKCS7_bio_stream 3 , + .Xr PEM_read_PKCS7 3 , + .Xr PEM_write_bio_PKCS7_stream 3 , ++.Xr PKCS7_add_attribute 3 , + .Xr PKCS7_dataFinal 3 , + .Xr PKCS7_dataInit 3 , + .Xr PKCS7_decrypt 3 , +diff --git a/src/lib/libcrypto/man/PKCS7_sign.3 b/src/lib/libcrypto/man/PKCS7_sign.3 +index d5f4c89c6..c9b13680c 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_sign.3,v 1.11 2020/06/03 13:41:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_sign.3,v 1.12 2020/06/04 10:24:27 schwarze Exp $ + .\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 3 2020 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt PKCS7_SIGN 3 + .Os + .Sh NAME +@@ -196,7 +196,9 @@ if the + .Dv PKCS7_PARTIAL + flag is set. + One or more signers can be added using the function +-.Xr PKCS7_sign_add_signer 3 . ++.Xr PKCS7_sign_add_signer 3 ++and attributes can be added using the functions described in ++.Xr PKCS7_add_attribute 3 . + .Xr PKCS7_final 3 + must also be called to finalize the structure if streaming is not + enabled. +@@ -228,6 +230,7 @@ if an error occurred. + The error can be obtained from + .Xr ERR_get_error 3 . + .Sh SEE ALSO ++.Xr PKCS7_add_attribute 3 , + .Xr PKCS7_encrypt 3 , + .Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , +diff --git a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +index f8024d9b5..28d327fef 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.11 2020/06/03 13:41:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.12 2020/06/04 10:24:27 schwarze Exp $ + .\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 3 2020 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt PKCS7_SIGN_ADD_SIGNER 3 + .Os + .Sh NAME +@@ -162,6 +162,8 @@ If any of these algorithms is disabled, then it will not be included. + returns an internal pointer to the + .Vt PKCS7_SIGNER_INFO + structure just added, which can be used to set additional attributes ++with the functions described in ++.Xr PKCS7_add_attribute 3 + before it is finalized. + .Sh RETURN VALUES + .Fn PKCS7_sign_add_signer +@@ -174,6 +176,7 @@ In some cases of failure, the reason can be determined with + .Xr ERR_get_error 3 . + .Sh SEE ALSO + .Xr EVP_DigestInit 3 , ++.Xr PKCS7_add_attribute 3 , + .Xr PKCS7_final 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign 3 +diff --git a/src/lib/libcrypto/man/X509_ATTRIBUTE_new.3 b/src/lib/libcrypto/man/X509_ATTRIBUTE_new.3 +index b5c78ee8d..66779d637 100644 +--- a/src/lib/libcrypto/man/X509_ATTRIBUTE_new.3 ++++ b/src/lib/libcrypto/man/X509_ATTRIBUTE_new.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: X509_ATTRIBUTE_new.3,v 1.7 2019/06/06 01:06:59 schwarze Exp $ ++.\" $OpenBSD: X509_ATTRIBUTE_new.3,v 1.8 2020/06/04 10:24:27 schwarze Exp $ + .\" + .\" Copyright (c) 2016 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: June 6 2019 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt X509_ATTRIBUTE_NEW 3 + .Os + .Sh NAME +@@ -65,6 +65,7 @@ if an error occurs. + .Sh SEE ALSO + .Xr d2i_X509_ATTRIBUTE 3 , + .Xr PKCS12_SAFEBAG_new 3 , ++.Xr PKCS7_add_attribute 3 , + .Xr PKCS8_PRIV_KEY_INFO_new 3 , + .Xr X509_EXTENSION_new 3 , + .Xr X509_new 3 , +-- +2.17.1 + diff --git a/0006-mention-that-TLS_method-3-also-supports-TLSv1.3.patch b/0006-mention-that-TLS_method-3-also-supports-TLSv1.3.patch new file mode 100644 index 0000000..d33739b --- /dev/null +++ b/0006-mention-that-TLS_method-3-also-supports-TLSv1.3.patch @@ -0,0 +1,41 @@ +From dd750e94b69c061918acd26fe950f1ccbeb7b200 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Thu, 4 Jun 2020 18:06:43 +0000 +Subject: [PATCH 06/87] mention that TLS_method(3) also supports TLSv1.3; tb@ + OKed this part of a larger diff from inoguchi@ + +--- + src/lib/libssl/man/SSL_CTX_new.3 | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/lib/libssl/man/SSL_CTX_new.3 b/src/lib/libssl/man/SSL_CTX_new.3 +index 35fe702fb..13b370024 100644 +--- a/src/lib/libssl/man/SSL_CTX_new.3 ++++ b/src/lib/libssl/man/SSL_CTX_new.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: SSL_CTX_new.3,v 1.11 2019/03/18 06:23:38 schwarze Exp $ ++.\" $OpenBSD: SSL_CTX_new.3,v 1.12 2020/06/04 18:06:43 schwarze Exp $ + .\" full merge up to: OpenSSL 21cd6e00 Oct 21 14:40:15 2015 +0100 + .\" selective merge up to: OpenSSL 1212818e Sep 11 13:22:14 2018 +0100 + .\" +@@ -50,7 +50,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: March 18 2019 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt SSL_CTX_NEW 3 + .Os + .Sh NAME +@@ -170,7 +170,7 @@ can be of the following types: + These are the general-purpose version-flexible SSL/TLS methods. + The actual protocol version used will be negotiated to the highest + version mutually supported by the client and the server. +-The supported protocols are TLSv1, TLSv1.1 and TLSv1.2. ++The supported protocols are TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3. + Applications should use these methods and avoid the version-specific + methods described below. + .It Xo +-- +2.17.1 + diff --git a/0007-minor-polishing.patch b/0007-minor-polishing.patch new file mode 100644 index 0000000..b8af615 --- /dev/null +++ b/0007-minor-polishing.patch @@ -0,0 +1,58 @@ +From c3d4e71233267840d28afd8f8e5dfe96934517c1 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Thu, 4 Jun 2020 20:06:04 +0000 +Subject: [PATCH 07/87] minor polishing: * below SEE ALSO, point to the most + similar function that is not deprecated * add a comment saying why + ERR_load_ERR_strings() is intentionally undocumented * update the comment + specifying the merge status + +--- + src/lib/libcrypto/man/ERR_load_crypto_strings.3 | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/lib/libcrypto/man/ERR_load_crypto_strings.3 b/src/lib/libcrypto/man/ERR_load_crypto_strings.3 +index e3d60527d..4ad12659a 100644 +--- a/src/lib/libcrypto/man/ERR_load_crypto_strings.3 ++++ b/src/lib/libcrypto/man/ERR_load_crypto_strings.3 +@@ -1,5 +1,6 @@ +-.\" $OpenBSD: ERR_load_crypto_strings.3,v 1.8 2019/06/14 13:41:31 schwarze Exp $ +-.\" OpenSSL a528d4f0 Oct 27 13:40:11 2015 -0400 ++.\" $OpenBSD: ERR_load_crypto_strings.3,v 1.9 2020/06/04 20:06:04 schwarze Exp $ ++.\" full merge up to: OpenSSL f672aee4 Feb 9 11:52:40 2016 -0500 ++.\" selective merge up to: OpenSSL b3696a55 Sep 2 09:35:50 2017 -0400 + .\" + .\" This file is a derived work. + .\" The changes are covered by the following Copyright and license: +@@ -65,7 +66,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 14 2019 $ ++.Dd $Mdocdate: June 4 2020 $ + .Dt ERR_LOAD_CRYPTO_STRINGS 3 + .Os + .Sh NAME +@@ -73,6 +74,10 @@ + .Nm ERR_free_strings , + .Nm SSL_load_error_strings + .Nd load and free OpenSSL error strings ++.\" The function ERR_load_ERR_strings() is intentionally undocumented ++.\" because it is merely a subroutine of ERR_load_crypto_strings(3) ++.\" and should not have been made a part of the API. ++.\" The same applies to the other ERR_load_*_strings() functions. + .Sh SYNOPSIS + .In openssl/err.h + .Ft void +@@ -102,7 +107,8 @@ If the error strings were already loaded before, no action occurs. + frees all previously loaded error strings. + .Sh SEE ALSO + .Xr ERR 3 , +-.Xr ERR_error_string 3 ++.Xr ERR_error_string 3 , ++.Xr OPENSSL_config 3 + .Sh HISTORY + .Fn ERR_load_crypto_strings + and +-- +2.17.1 + diff --git a/0008-Apply-some-style-9.patch b/0008-Apply-some-style-9.patch new file mode 100644 index 0000000..0faa097 --- /dev/null +++ b/0008-Apply-some-style-9.patch @@ -0,0 +1,90 @@ +From 84b027f3d640592489672ef62ee8f0032ebc4ce6 Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 15:51:49 +0000 +Subject: [PATCH 08/87] Apply some style(9). + +--- + src/lib/libcrypto/gost/gost_err.c | 64 +++++++++++++++---------------- + 1 file changed, 30 insertions(+), 34 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost_err.c b/src/lib/libcrypto/gost/gost_err.c +index 3bf60ff06..e7111dd34 100644 +--- a/src/lib/libcrypto/gost/gost_err.c ++++ b/src/lib/libcrypto/gost/gost_err.c +@@ -73,43 +73,39 @@ static ERR_STRING_DATA GOST_str_functs[]= { + {0, NULL} + }; + +-static ERR_STRING_DATA GOST_str_reasons[]= +- { +-{ERR_REASON(GOST_R_BAD_KEY_PARAMETERS_FORMAT),"bad key parameters format"}, +-{ERR_REASON(GOST_R_BAD_PKEY_PARAMETERS_FORMAT),"bad pkey parameters format"}, +-{ERR_REASON(GOST_R_CANNOT_PACK_EPHEMERAL_KEY),"cannot pack ephemeral key"}, +-{ERR_REASON(GOST_R_CTRL_CALL_FAILED) ,"ctrl call failed"}, +-{ERR_REASON(GOST_R_ERROR_COMPUTING_SHARED_KEY),"error computing shared key"}, +-{ERR_REASON(GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO),"error parsing key transport info"}, +-{ERR_REASON(GOST_R_INCOMPATIBLE_ALGORITHMS),"incompatible algorithms"}, +-{ERR_REASON(GOST_R_INCOMPATIBLE_PEER_KEY),"incompatible peer key"}, +-{ERR_REASON(GOST_R_INVALID_DIGEST_TYPE) ,"invalid digest type"}, +-{ERR_REASON(GOST_R_INVALID_IV_LENGTH) ,"invalid iv length"}, +-{ERR_REASON(GOST_R_INVALID_MAC_KEY_LENGTH),"invalid mac key length"}, +-{ERR_REASON(GOST_R_KEY_IS_NOT_INITIALIZED),"key is not initialized"}, +-{ERR_REASON(GOST_R_KEY_PARAMETERS_MISSING),"key parameters missing"}, +-{ERR_REASON(GOST_R_MAC_KEY_NOT_SET) ,"mac key not set"}, +-{ERR_REASON(GOST_R_NO_PARAMETERS_SET) ,"no parameters set"}, +-{ERR_REASON(GOST_R_NO_PEER_KEY) ,"no peer key"}, +-{ERR_REASON(GOST_R_NO_PRIVATE_PART_OF_NON_EPHEMERAL_KEYPAIR),"no private part of non ephemeral keypair"}, +-{ERR_REASON(GOST_R_PUBLIC_KEY_UNDEFINED) ,"public key undefined"}, +-{ERR_REASON(GOST_R_RANDOM_NUMBER_GENERATOR_FAILED),"random number generator failed"}, +-{ERR_REASON(GOST_R_SIGNATURE_MISMATCH) ,"signature mismatch"}, +-{ERR_REASON(GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q),"signature parts greater than q"}, +-{ERR_REASON(GOST_R_UKM_NOT_SET) ,"ukm not set"}, +-{0,NULL} +- }; +- ++static ERR_STRING_DATA GOST_str_reasons[] = { ++ {ERR_REASON(GOST_R_BAD_KEY_PARAMETERS_FORMAT),"bad key parameters format"}, ++ {ERR_REASON(GOST_R_BAD_PKEY_PARAMETERS_FORMAT),"bad pkey parameters format"}, ++ {ERR_REASON(GOST_R_CANNOT_PACK_EPHEMERAL_KEY),"cannot pack ephemeral key"}, ++ {ERR_REASON(GOST_R_CTRL_CALL_FAILED) ,"ctrl call failed"}, ++ {ERR_REASON(GOST_R_ERROR_COMPUTING_SHARED_KEY),"error computing shared key"}, ++ {ERR_REASON(GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO),"error parsing key transport info"}, ++ {ERR_REASON(GOST_R_INCOMPATIBLE_ALGORITHMS),"incompatible algorithms"}, ++ {ERR_REASON(GOST_R_INCOMPATIBLE_PEER_KEY),"incompatible peer key"}, ++ {ERR_REASON(GOST_R_INVALID_DIGEST_TYPE) ,"invalid digest type"}, ++ {ERR_REASON(GOST_R_INVALID_IV_LENGTH) ,"invalid iv length"}, ++ {ERR_REASON(GOST_R_INVALID_MAC_KEY_LENGTH),"invalid mac key length"}, ++ {ERR_REASON(GOST_R_KEY_IS_NOT_INITIALIZED),"key is not initialized"}, ++ {ERR_REASON(GOST_R_KEY_PARAMETERS_MISSING),"key parameters missing"}, ++ {ERR_REASON(GOST_R_MAC_KEY_NOT_SET) ,"mac key not set"}, ++ {ERR_REASON(GOST_R_NO_PARAMETERS_SET) ,"no parameters set"}, ++ {ERR_REASON(GOST_R_NO_PEER_KEY) ,"no peer key"}, ++ {ERR_REASON(GOST_R_NO_PRIVATE_PART_OF_NON_EPHEMERAL_KEYPAIR),"no private part of non ephemeral keypair"}, ++ {ERR_REASON(GOST_R_PUBLIC_KEY_UNDEFINED) ,"public key undefined"}, ++ {ERR_REASON(GOST_R_RANDOM_NUMBER_GENERATOR_FAILED),"random number generator failed"}, ++ {ERR_REASON(GOST_R_SIGNATURE_MISMATCH) ,"signature mismatch"}, ++ {ERR_REASON(GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q),"signature parts greater than q"}, ++ {ERR_REASON(GOST_R_UKM_NOT_SET) ,"ukm not set"}, ++ {0, NULL} ++}; + #endif + +-void ERR_load_GOST_strings(void) +- { ++void ++ERR_load_GOST_strings(void) { + #ifndef OPENSSL_NO_ERR +- +- if (ERR_func_error_string(GOST_str_functs[0].error) == NULL) +- { ++ if (ERR_func_error_string(GOST_str_functs[0].error) == NULL) { + ERR_load_strings(0,GOST_str_functs); + ERR_load_strings(0,GOST_str_reasons); +- } +-#endif + } ++#endif ++} +-- +2.17.1 + diff --git a/0009-Add-support-for-additional-GOST-curves.patch b/0009-Add-support-for-additional-GOST-curves.patch new file mode 100644 index 0000000..2246459 --- /dev/null +++ b/0009-Add-support-for-additional-GOST-curves.patch @@ -0,0 +1,300 @@ +From d0368ed4943958dfb98e6fc5c1a005ea9bddc49c Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:12:09 +0000 +Subject: [PATCH 09/87] Add support for additional GOST curves. + +These GOST curves are defined in RFC 7836 and draft-deremin-rfc4491-bis. +Add aliases for 256-bit GOST curves (see +draft-smyshlyaev-tls12-gost-suites) and rename the 512-bit curve ids to +follow names defined in tc26 OID registry. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux. + +ok inoguchi@ +--- + src/lib/libcrypto/ec/ec_curve.c | 168 +++++++++++++++++++- + src/lib/libcrypto/gost/gostr341001_params.c | 6 +- + src/lib/libcrypto/objects/obj_mac.num | 10 +- + src/lib/libcrypto/objects/objects.txt | 10 +- + 4 files changed, 182 insertions(+), 12 deletions(-) + +diff --git a/src/lib/libcrypto/ec/ec_curve.c b/src/lib/libcrypto/ec/ec_curve.c +index e075b1ed3..84a565d43 100644 +--- a/src/lib/libcrypto/ec/ec_curve.c ++++ b/src/lib/libcrypto/ec/ec_curve.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ec_curve.c,v 1.19 2018/07/15 16:27:39 tb Exp $ */ ++/* $OpenBSD: ec_curve.c,v 1.20 2020/06/05 17:12:09 jsing Exp $ */ + /* + * Written by Nils Larsch for the OpenSSL project. + */ +@@ -2900,11 +2900,105 @@ static const struct { + } + }; + ++/* ++ * This curve is defined in two birationally equal forms: canonical and Twisted ++ * Edwards. We do calculations in canonical (Weierstrass) form. ++ */ ++static const struct { ++ EC_CURVE_DATA h; ++ unsigned char data[0 + 32 * 6]; ++} ++ _EC_GOST_2012_256_TC26_A = { ++ { ++ NID_X9_62_prime_field, 0, 32, 4 ++ }, ++ { /* no seed */ ++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* p */ ++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, ++ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, ++ 0xFD, 0x97, ++ 0xc2, 0x17, 0x3f, 0x15, 0x13, 0x98, 0x16, 0x73, 0xaf, 0x48, /* a */ ++ 0x92, 0xc2, 0x30, 0x35, 0xa2, 0x7c, 0xe2, 0x5e, 0x20, 0x13, ++ 0xbf, 0x95, 0xaa, 0x33, 0xb2, 0x2c, 0x65, 0x6f, 0x27, 0x7e, ++ 0x73, 0x35, ++ 0x29, 0x5f, 0x9b, 0xae, 0x74, 0x28, 0xed, 0x9c, 0xcc, 0x20, /* b */ ++ 0xe7, 0xc3, 0x59, 0xa9, 0xd4, 0x1a, 0x22, 0xfc, 0xcd, 0x91, ++ 0x08, 0xe1, 0x7b, 0xf7, 0xba, 0x93, 0x37, 0xa6, 0xf8, 0xae, ++ 0x95, 0x13, ++ 0x91, 0xe3, 0x84, 0x43, 0xa5, 0xe8, 0x2c, 0x0d, 0x88, 0x09, /* x */ ++ 0x23, 0x42, 0x57, 0x12, 0xb2, 0xbb, 0x65, 0x8b, 0x91, 0x96, ++ 0x93, 0x2e, 0x02, 0xc7, 0x8b, 0x25, 0x82, 0xfe, 0x74, 0x2d, ++ 0xaa, 0x28, ++ 0x32, 0x87, 0x94, 0x23, 0xab, 0x1a, 0x03, 0x75, 0x89, 0x57, /* y */ ++ 0x86, 0xc4, 0xbb, 0x46, 0xe9, 0x56, 0x5f, 0xde, 0x0b, 0x53, ++ 0x44, 0x76, 0x67, 0x40, 0xaf, 0x26, 0x8a, 0xdb, 0x32, 0x32, ++ 0x2e, 0x5c, ++ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* order */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xd8, 0xcd, 0xdf, ++ 0xc8, 0x7b, 0x66, 0x35, 0xc1, 0x15, 0xaf, 0x55, 0x6c, 0x36, ++ 0x0c, 0x67, ++ } ++}; ++ + static const struct { + EC_CURVE_DATA h; + unsigned char data[0 + 64 * 6]; + } +- _EC_GOST_2012_TC26_A = { ++ _EC_GOST_2012_512_Test = { ++ { ++ NID_X9_62_prime_field, 0, 64, 1 ++ }, ++ { /* no seed */ ++ 0x45, 0x31, 0xac, 0xd1, 0xfe, 0x00, 0x23, 0xc7, 0x55, 0x0d, /* p */ ++ 0x26, 0x7b, 0x6b, 0x2f, 0xee, 0x80, 0x92, 0x2b, 0x14, 0xb2, ++ 0xff, 0xb9, 0x0f, 0x04, 0xd4, 0xeb, 0x7c, 0x09, 0xb5, 0xd2, ++ 0xd1, 0x5d, 0xf1, 0xd8, 0x52, 0x74, 0x1a, 0xf4, 0x70, 0x4a, ++ 0x04, 0x58, 0x04, 0x7e, 0x80, 0xe4, 0x54, 0x6d, 0x35, 0xb8, ++ 0x33, 0x6f, 0xac, 0x22, 0x4d, 0xd8, 0x16, 0x64, 0xbb, 0xf5, ++ 0x28, 0xbe, 0x63, 0x73, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */ ++ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x07, ++ 0x1c, 0xff, 0x08, 0x06, 0xa3, 0x11, 0x16, 0xda, 0x29, 0xd8, /* b */ ++ 0xcf, 0xa5, 0x4e, 0x57, 0xeb, 0x74, 0x8b, 0xc5, 0xf3, 0x77, ++ 0xe4, 0x94, 0x00, 0xfd, 0xd7, 0x88, 0xb6, 0x49, 0xec, 0xa1, ++ 0xac, 0x43, 0x61, 0x83, 0x40, 0x13, 0xb2, 0xad, 0x73, 0x22, ++ 0x48, 0x0a, 0x89, 0xca, 0x58, 0xe0, 0xcf, 0x74, 0xbc, 0x9e, ++ 0x54, 0x0c, 0x2a, 0xdd, 0x68, 0x97, 0xfa, 0xd0, 0xa3, 0x08, ++ 0x4f, 0x30, 0x2a, 0xdc, ++ 0x24, 0xd1, 0x9c, 0xc6, 0x45, 0x72, 0xee, 0x30, 0xf3, 0x96, /* x */ ++ 0xbf, 0x6e, 0xbb, 0xfd, 0x7a, 0x6c, 0x52, 0x13, 0xb3, 0xb3, ++ 0xd7, 0x05, 0x7c, 0xc8, 0x25, 0xf9, 0x10, 0x93, 0xa6, 0x8c, ++ 0xd7, 0x62, 0xfd, 0x60, 0x61, 0x12, 0x62, 0xcd, 0x83, 0x8d, ++ 0xc6, 0xb6, 0x0a, 0xa7, 0xee, 0xe8, 0x04, 0xe2, 0x8b, 0xc8, ++ 0x49, 0x97, 0x7f, 0xac, 0x33, 0xb4, 0xb5, 0x30, 0xf1, 0xb1, ++ 0x20, 0x24, 0x8a, 0x9a, ++ 0x2b, 0xb3, 0x12, 0xa4, 0x3b, 0xd2, 0xce, 0x6e, 0x0d, 0x02, /* y */ ++ 0x06, 0x13, 0xc8, 0x57, 0xac, 0xdd, 0xcf, 0xbf, 0x06, 0x1e, ++ 0x91, 0xe5, 0xf2, 0xc3, 0xf3, 0x24, 0x47, 0xc2, 0x59, 0xf3, ++ 0x9b, 0x2c, 0x83, 0xab, 0x15, 0x6d, 0x77, 0xf1, 0x49, 0x6b, ++ 0xf7, 0xeb, 0x33, 0x51, 0xe1, 0xee, 0x4e, 0x43, 0xdc, 0x1a, ++ 0x18, 0xb9, 0x1b, 0x24, 0x64, 0x0b, 0x6d, 0xbb, 0x92, 0xcb, ++ 0x1a, 0xdd, 0x37, 0x1e, ++ 0x45, 0x31, 0xac, 0xd1, 0xfe, 0x00, 0x23, 0xc7, 0x55, 0x0d, /* order */ ++ 0x26, 0x7b, 0x6b, 0x2f, 0xee, 0x80, 0x92, 0x2b, 0x14, 0xb2, ++ 0xff, 0xb9, 0x0f, 0x04, 0xd4, 0xeb, 0x7c, 0x09, 0xb5, 0xd2, ++ 0xd1, 0x5d, 0xa8, 0x2f, 0x2d, 0x7e, 0xcb, 0x1d, 0xba, 0xc7, ++ 0x19, 0x90, 0x5c, 0x5e, 0xec, 0xc4, 0x23, 0xf1, 0xd8, 0x6e, ++ 0x25, 0xed, 0xbe, 0x23, 0xc5, 0x95, 0xd6, 0x44, 0xaa, 0xf1, ++ 0x87, 0xe6, 0xe6, 0xdf, ++ } ++}; ++ ++static const struct { ++ EC_CURVE_DATA h; ++ unsigned char data[0 + 64 * 6]; ++} ++ _EC_GOST_2012_512_TC26_A = { + { + NID_X9_62_prime_field, 0, 64, 1 + }, +@@ -2958,7 +3052,7 @@ static const struct { + EC_CURVE_DATA h; + unsigned char data[0 + 64 * 6]; + } +- _EC_GOST_2012_TC26_B = { ++ _EC_GOST_2012_512_TC26_B = { + { + NID_X9_62_prime_field, 0, 64, 1 + }, +@@ -3008,6 +3102,64 @@ static const struct { + } + }; + ++/* ++ * This curve is defined in two birationally equal forms: canonical and Twisted ++ * Edwards. We do calculations in canonical (Weierstrass) form. ++ */ ++static const struct { ++ EC_CURVE_DATA h; ++ unsigned char data[0 + 64 * 6]; ++} ++ _EC_GOST_2012_512_TC26_C = { ++ { ++ NID_X9_62_prime_field, 0, 64, 4 ++ }, ++ { /* no seed */ ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* p */ ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xfd, 0xc7, ++ 0xdc, 0x92, 0x03, 0xe5, 0x14, 0xa7, 0x21, 0x87, 0x54, 0x85, /* a */ ++ 0xa5, 0x29, 0xd2, 0xc7, 0x22, 0xfb, 0x18, 0x7b, 0xc8, 0x98, ++ 0x0e, 0xb8, 0x66, 0x64, 0x4d, 0xe4, 0x1c, 0x68, 0xe1, 0x43, ++ 0x06, 0x45, 0x46, 0xe8, 0x61, 0xc0, 0xe2, 0xc9, 0xed, 0xd9, ++ 0x2a, 0xde, 0x71, 0xf4, 0x6f, 0xcf, 0x50, 0xff, 0x2a, 0xd9, ++ 0x7f, 0x95, 0x1f, 0xda, 0x9f, 0x2a, 0x2e, 0xb6, 0x54, 0x6f, ++ 0x39, 0x68, 0x9b, 0xd3, ++ 0xb4, 0xc4, 0xee, 0x28, 0xce, 0xbc, 0x6c, 0x2c, 0x8a, 0xc1, /* b */ ++ 0x29, 0x52, 0xcf, 0x37, 0xf1, 0x6a, 0xc7, 0xef, 0xb6, 0xa9, ++ 0xf6, 0x9f, 0x4b, 0x57, 0xff, 0xda, 0x2e, 0x4f, 0x0d, 0xe5, ++ 0xad, 0xe0, 0x38, 0xcb, 0xc2, 0xff, 0xf7, 0x19, 0xd2, 0xc1, ++ 0x8d, 0xe0, 0x28, 0x4b, 0x8b, 0xfe, 0xf3, 0xb5, 0x2b, 0x8c, ++ 0xc7, 0xa5, 0xf5, 0xbf, 0x0a, 0x3c, 0x8d, 0x23, 0x19, 0xa5, ++ 0x31, 0x25, 0x57, 0xe1, ++ 0xe2, 0xe3, 0x1e, 0xdf, 0xc2, 0x3d, 0xe7, 0xbd, 0xeb, 0xe2, /* x */ ++ 0x41, 0xce, 0x59, 0x3e, 0xf5, 0xde, 0x22, 0x95, 0xb7, 0xa9, ++ 0xcb, 0xae, 0xf0, 0x21, 0xd3, 0x85, 0xf7, 0x07, 0x4c, 0xea, ++ 0x04, 0x3a, 0xa2, 0x72, 0x72, 0xa7, 0xae, 0x60, 0x2b, 0xf2, ++ 0xa7, 0xb9, 0x03, 0x3d, 0xb9, 0xed, 0x36, 0x10, 0xc6, 0xfb, ++ 0x85, 0x48, 0x7e, 0xae, 0x97, 0xaa, 0xc5, 0xbc, 0x79, 0x28, ++ 0xc1, 0x95, 0x01, 0x48, ++ 0xf5, 0xce, 0x40, 0xd9, 0x5b, 0x5e, 0xb8, 0x99, 0xab, 0xbc, /* y */ ++ 0xcf, 0xf5, 0x91, 0x1c, 0xb8, 0x57, 0x79, 0x39, 0x80, 0x4d, ++ 0x65, 0x27, 0x37, 0x8b, 0x8c, 0x10, 0x8c, 0x3d, 0x20, 0x90, ++ 0xff, 0x9b, 0xe1, 0x8e, 0x2d, 0x33, 0xe3, 0x02, 0x1e, 0xd2, ++ 0xef, 0x32, 0xd8, 0x58, 0x22, 0x42, 0x3b, 0x63, 0x04, 0xf7, ++ 0x26, 0xaa, 0x85, 0x4b, 0xae, 0x07, 0xd0, 0x39, 0x6e, 0x9a, ++ 0x9a, 0xdd, 0xc4, 0x0f, ++ 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* order */ ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xc9, 0x8c, 0xdb, 0xa4, 0x65, 0x06, 0xab, 0x00, ++ 0x4c, 0x33, 0xa9, 0xff, 0x51, 0x47, 0x50, 0x2c, 0xc8, 0xed, ++ 0xa9, 0xe7, 0xa7, 0x69, 0xa1, 0x26, 0x94, 0x62, 0x3c, 0xef, ++ 0x47, 0xf0, 0x23, 0xed, ++ } ++}; ++ + #endif + + typedef struct _ec_list_element_st { +@@ -3147,8 +3299,14 @@ static const ec_list_element curve_list[] = { + {NID_id_GostR3410_2001_CryptoPro_C_ParamSet, &_EC_GOST_2001_CryptoPro_C.h, 0, "GOST R 34.10-2001 CryptoPro-C"}, + {NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet, &_EC_GOST_2001_CryptoPro_A.h, 0, "GOST R 34.10-2001 CryptoPro-XchA"}, + {NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet, &_EC_GOST_2001_CryptoPro_C.h, 0, "GOST R 34.10-2001 CryptoPro-XchB"}, +- {NID_id_tc26_gost_3410_2012_512_paramSetA, &_EC_GOST_2012_TC26_A.h, 0, "GOST R 34.10-2012 TC26-A"}, +- {NID_id_tc26_gost_3410_2012_512_paramSetB, &_EC_GOST_2012_TC26_B.h, 0, "GOST R 34.10-2012 TC26-B"}, ++ {NID_id_tc26_gost_3410_12_256_paramSetA, &_EC_GOST_2012_256_TC26_A.h, 0, "GOST R 34.10-2012 256 TC26-A"}, ++ {NID_id_tc26_gost_3410_12_256_paramSetB, &_EC_GOST_2001_CryptoPro_A.h, 0, "GOST R 34.10-2012 256 TC26-B"}, ++ {NID_id_tc26_gost_3410_12_256_paramSetC, &_EC_GOST_2001_CryptoPro_B.h, 0, "GOST R 34.10-2012 256 TC26-C"}, ++ {NID_id_tc26_gost_3410_12_256_paramSetD, &_EC_GOST_2001_CryptoPro_C.h, 0, "GOST R 34.10-2012 256 TC26-D"}, ++ {NID_id_tc26_gost_3410_12_512_paramSetTest, &_EC_GOST_2012_512_Test.h, 0, "GOST R 34.10-2012 512 Test Curve"}, ++ {NID_id_tc26_gost_3410_12_512_paramSetA, &_EC_GOST_2012_512_TC26_A.h, 0, "GOST R 34.10-2012 512 TC26-A"}, ++ {NID_id_tc26_gost_3410_12_512_paramSetB, &_EC_GOST_2012_512_TC26_B.h, 0, "GOST R 34.10-2012 512 TC26-B"}, ++ {NID_id_tc26_gost_3410_12_512_paramSetC, &_EC_GOST_2012_512_TC26_C.h, 0, "GOST R 34.10-2012 512 TC26-C"}, + #endif + }; + +diff --git a/src/lib/libcrypto/gost/gostr341001_params.c b/src/lib/libcrypto/gost/gostr341001_params.c +index 6500c30f3..282a21041 100644 +--- a/src/lib/libcrypto/gost/gostr341001_params.c ++++ b/src/lib/libcrypto/gost/gostr341001_params.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: gostr341001_params.c,v 1.3 2015/07/20 22:42:56 bcook Exp $ */ ++/* $OpenBSD: gostr341001_params.c,v 1.4 2020/06/05 17:12:09 jsing Exp $ */ + /* + * Copyright (c) 2014 Dmitry Eremin-Solenikov + * Copyright (c) 2005-2006 Cryptocom LTD +@@ -98,8 +98,8 @@ static const GostR3410_params GostR3410_256_params[] = { + }; + + static const GostR3410_params GostR3410_512_params[] = { +- { "A", NID_id_tc26_gost_3410_2012_512_paramSetA }, +- { "B", NID_id_tc26_gost_3410_2012_512_paramSetB }, ++ { "A", NID_id_tc26_gost_3410_12_512_paramSetA }, ++ { "B", NID_id_tc26_gost_3410_12_512_paramSetB }, + { NULL, NID_undef }, + }; + +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index 8405ba5e3..3f0b5666f 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -940,8 +940,8 @@ gost89_cbc 939 + tc26 940 + id_tc26_gost3411_2012_256 941 + id_tc26_gost3411_2012_512 942 +-id_tc26_gost_3410_2012_512_paramSetA 943 +-id_tc26_gost_3410_2012_512_paramSetB 944 ++id_tc26_gost_3410_12_512_paramSetA 943 ++id_tc26_gost_3410_12_512_paramSetB 944 + id_tc26_gost_28147_param_Z 945 + id_tc26_gost3410_2012_256 946 + id_tc26_gost3410_2012_512 947 +@@ -990,3 +990,9 @@ dhSinglePass_cofactorDH_sha512kdf_scheme 989 + dh_std_kdf 990 + dh_cofactor_kdf 991 + pSpecified 992 ++id_tc26_gost_3410_12_256_paramSetA 993 ++id_tc26_gost_3410_12_256_paramSetB 994 ++id_tc26_gost_3410_12_256_paramSetC 995 ++id_tc26_gost_3410_12_256_paramSetD 996 ++id_tc26_gost_3410_12_512_paramSetTest 997 ++id_tc26_gost_3410_12_512_paramSetC 998 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index ea7700724..42f31c3cb 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1372,8 +1372,14 @@ member-body 643 7 1 : tc26 + tc26 1 2 2 : streebog256 : GOST R 34.11-2012 (256 bit) + !Cname id-tc26-gost3411-2012-512 + tc26 1 2 3 : streebog512 : GOST R 34-11-2012 (512 bit) +-tc26 2 1 2 1 : id-tc26-gost-3410-2012-512-paramSetA +-tc26 2 1 2 2 : id-tc26-gost-3410-2012-512-paramSetB ++tc26 2 1 1 1 : id-tc26-gost-3410-12-256-paramSetA : GOST R 34.10-2012 (256 bit) ParamSet A ++tc26 2 1 1 2 : id-tc26-gost-3410-12-256-paramSetB : GOST R 34.10-2012 (256 bit) ParamSet B ++tc26 2 1 1 3 : id-tc26-gost-3410-12-256-paramSetC : GOST R 34.10-2012 (256 bit) ParamSet C ++tc26 2 1 1 4 : id-tc26-gost-3410-12-256-paramSetD : GOST R 34.10-2012 (256 bit) ParamSet D ++tc26 2 1 2 0 : id-tc26-gost-3410-12-512-paramSetTest : GOST R 34.10-2012 (512 bit) testing parameter set ++tc26 2 1 2 1 : id-tc26-gost-3410-12-512-paramSetA : GOST R 34.10-2012 (512 bit) ParamSet A ++tc26 2 1 2 2 : id-tc26-gost-3410-12-512-paramSetB : GOST R 34.10-2012 (512 bit) ParamSet B ++tc26 2 1 2 3 : id-tc26-gost-3410-12-512-paramSetC : GOST R 34.10-2012 (512 bit) ParamSet C + tc26 2 5 1 1 : id-tc26-gost-28147-param-Z + tc26 1 1 1 : id-tc26-gost3410-2012-256 : GOST R 34.10-2012 (256 bit) + tc26 1 1 2 : id-tc26-gost3410-2012-512 : GOST R 34.10-2012 (512 bit) +-- +2.17.1 + diff --git a/0010-Add-a-few-more-errors-to-help-debugging.patch b/0010-Add-a-few-more-errors-to-help-debugging.patch new file mode 100644 index 0000000..d552132 --- /dev/null +++ b/0010-Add-a-few-more-errors-to-help-debugging.patch @@ -0,0 +1,85 @@ +From 8684eee04716891b26d77093c53c3792bc40580b Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:17:22 +0000 +Subject: [PATCH 10/87] Add a few more errors to help debugging. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux. + +ok inoguchi@ tb@ +--- + src/lib/libcrypto/gost/gostr341001_ameth.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 16295996d..27a95f206 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: gostr341001_ameth.c,v 1.15 2018/08/24 20:22:15 tb Exp $ */ ++/* $OpenBSD: gostr341001_ameth.c,v 1.16 2020/06/05 17:17:22 jsing Exp $ */ + /* + * Copyright (c) 2014 Dmitry Eremin-Solenikov + * Copyright (c) 2005-2006 Cryptocom LTD +@@ -96,15 +96,19 @@ decode_gost01_algor_params(EVP_PKEY *pkey, const unsigned char **p, int len) + ec = pkey->pkey.gost; + if (ec == NULL) { + ec = GOST_KEY_new(); +- if (ec == NULL) ++ if (ec == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); + return 0; ++ } + if (EVP_PKEY_assign_GOST(pkey, ec) == 0) + return 0; + } + + group = EC_GROUP_new_by_curve_name(param_nid); +- if (group == NULL) ++ if (group == NULL) { ++ GOSTerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); + return 0; ++ } + EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); + if (GOST_KEY_set_group(ec, group) == 0) { + EC_GROUP_free(group); +@@ -207,8 +211,10 @@ pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub) + return 0; + } + p = pval->data; +- if (decode_gost01_algor_params(pk, &p, pval->length) == 0) ++ if (decode_gost01_algor_params(pk, &p, pval->length) == 0) { ++ GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); + return 0; ++ } + + octet = d2i_ASN1_OCTET_STRING(NULL, &pubkey_buf, pub_len); + if (octet == NULL) { +@@ -407,8 +413,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) + int ptype = V_ASN1_UNDEF; + ASN1_STRING *pval = NULL; + +- if (PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf) == 0) ++ if (PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf) == 0) { ++ GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); + return 0; ++ } + (void)EVP_PKEY_assign_GOST(pk, NULL); + X509_ALGOR_get0(NULL, &ptype, (const void **)&pval, palg); + if (ptype != V_ASN1_SEQUENCE) { +@@ -416,8 +424,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) + return 0; + } + p = pval->data; +- if (decode_gost01_algor_params(pk, &p, pval->length) == 0) ++ if (decode_gost01_algor_params(pk, &p, pval->length) == 0) { ++ GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); + return 0; ++ } + p = pkey_buf; + if (V_ASN1_OCTET_STRING == *p) { + /* New format - Little endian octet string */ +-- +2.17.1 + diff --git a/0011-Add-OIDs-for-HMAC-using-Streebog-GOST-R-34.11-2012-h.patch b/0011-Add-OIDs-for-HMAC-using-Streebog-GOST-R-34.11-2012-h.patch new file mode 100644 index 0000000..d91901e --- /dev/null +++ b/0011-Add-OIDs-for-HMAC-using-Streebog-GOST-R-34.11-2012-h.patch @@ -0,0 +1,42 @@ +From 6971f6b41730ba03beb943114a44cc6898b9b663 Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:28:56 +0000 +Subject: [PATCH 11/87] Add OIDs for HMAC using Streebog (GOST R 34.11-2012) + hash function. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libcrypto/objects/obj_mac.num | 2 ++ + src/lib/libcrypto/objects/objects.txt | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index 3f0b5666f..ba75ec246 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -996,3 +996,5 @@ id_tc26_gost_3410_12_256_paramSetC 995 + id_tc26_gost_3410_12_256_paramSetD 996 + id_tc26_gost_3410_12_512_paramSetTest 997 + id_tc26_gost_3410_12_512_paramSetC 998 ++id_tc26_hmac_gost_3411_12_256 999 ++id_tc26_hmac_gost_3411_12_512 1000 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 42f31c3cb..8e533530f 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1372,6 +1372,8 @@ member-body 643 7 1 : tc26 + tc26 1 2 2 : streebog256 : GOST R 34.11-2012 (256 bit) + !Cname id-tc26-gost3411-2012-512 + tc26 1 2 3 : streebog512 : GOST R 34-11-2012 (512 bit) ++tc26 1 4 1 : id-tc26-hmac-gost-3411-12-256 : HMAC STREEBOG 256 ++tc26 1 4 2 : id-tc26-hmac-gost-3411-12-512 : HMAC STREEBOG 512 + tc26 2 1 1 1 : id-tc26-gost-3410-12-256-paramSetA : GOST R 34.10-2012 (256 bit) ParamSet A + tc26 2 1 1 2 : id-tc26-gost-3410-12-256-paramSetB : GOST R 34.10-2012 (256 bit) ParamSet B + tc26 2 1 1 3 : id-tc26-gost-3410-12-256-paramSetC : GOST R 34.10-2012 (256 bit) ParamSet C +-- +2.17.1 + diff --git a/0012-Allow-GOST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch b/0012-Allow-GOST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch new file mode 100644 index 0000000..d3358eb --- /dev/null +++ b/0012-Allow-GOST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch @@ -0,0 +1,36 @@ +From 059e028bf15f9a770c67e4b167b15c3883f540ab Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:30:41 +0000 +Subject: [PATCH 12/87] Allow GOST R 34.11-2012 in PBE/PBKDF2/PKCS#5. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libcrypto/evp/evp_pbe.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/lib/libcrypto/evp/evp_pbe.c b/src/lib/libcrypto/evp/evp_pbe.c +index de08c8d78..65e9e45ea 100644 +--- a/src/lib/libcrypto/evp/evp_pbe.c ++++ b/src/lib/libcrypto/evp/evp_pbe.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: evp_pbe.c,v 1.25 2017/01/29 17:49:23 beck Exp $ */ ++/* $OpenBSD: evp_pbe.c,v 1.26 2020/06/05 17:30:41 jsing Exp $ */ + /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL + * project 1999. + */ +@@ -114,6 +114,8 @@ static const EVP_PBE_CTL builtin_pbe[] = { + {EVP_PBE_TYPE_PRF, NID_hmacWithSHA384, -1, NID_sha384, 0}, + {EVP_PBE_TYPE_PRF, NID_hmacWithSHA512, -1, NID_sha512, 0}, + {EVP_PBE_TYPE_PRF, NID_id_HMACGostR3411_94, -1, NID_id_GostR3411_94, 0}, ++ {EVP_PBE_TYPE_PRF, NID_id_tc26_hmac_gost_3411_12_256, -1, NID_id_tc26_gost3411_2012_256, 0}, ++ {EVP_PBE_TYPE_PRF, NID_id_tc26_hmac_gost_3411_12_512, -1, NID_id_tc26_gost3411_2012_512, 0}, + }; + + int +-- +2.17.1 + diff --git a/0013-Enable-GOST_SIG_FORMAT_RS_LE-when-verifying-certific.patch b/0013-Enable-GOST_SIG_FORMAT_RS_LE-when-verifying-certific.patch new file mode 100644 index 0000000..4f63acc --- /dev/null +++ b/0013-Enable-GOST_SIG_FORMAT_RS_LE-when-verifying-certific.patch @@ -0,0 +1,72 @@ +From bea1abe78c72962af15bd0868e9dd2fcffd9ddf9 Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:53:26 +0000 +Subject: [PATCH 13/87] Enable GOST_SIG_FORMAT_RS_LE when verifying certificate + signatures. + +GOST cipher suites requires that CertVerify signatures be generated in a +special way (see ssl3_send_client_kex_gost(), ssl3_get_cert_verify()). +However, the GOST_SIG_FORMAT_RS_LE flag was not passed in case of TLS 1.2 +connections (because they use different code path). Set this flag on +GOST PKEYs. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libssl/ssl_clnt.c | 8 +++++++- + src/lib/libssl/ssl_srvr.c | 9 ++++++++- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c +index 4d003466c..0a1b6ea24 100644 +--- a/src/lib/libssl/ssl_clnt.c ++++ b/src/lib/libssl/ssl_clnt.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ssl_clnt.c,v 1.68 2020/05/31 16:36:35 jsing Exp $ */ ++/* $OpenBSD: ssl_clnt.c,v 1.69 2020/06/05 17:53:26 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -2341,6 +2341,12 @@ ssl3_send_client_verify_sigalgs(SSL *s, CBB *cert_verify) + SSLerror(s, ERR_R_EVP_LIB); + goto err; + } ++ if (sigalg->key_type == EVP_PKEY_GOSTR01 && ++ EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN, ++ EVP_PKEY_CTRL_GOST_SIG_FORMAT, GOST_SIG_FORMAT_RS_LE, NULL) <= 0) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ goto err; ++ } + if ((sigalg->flags & SIGALG_FLAG_RSA_PSS) && + (!EVP_PKEY_CTX_set_rsa_padding(pctx, RSA_PKCS1_PSS_PADDING) || + !EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1))) { +diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c +index fac24f4d0..69e547cbe 100644 +--- a/src/lib/libssl/ssl_srvr.c ++++ b/src/lib/libssl/ssl_srvr.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ssl_srvr.c,v 1.77 2020/05/31 16:36:35 jsing Exp $ */ ++/* $OpenBSD: ssl_srvr.c,v 1.79 2020/06/05 17:53:26 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -2187,6 +2187,13 @@ ssl3_get_cert_verify(SSL *s) + al = SSL_AD_INTERNAL_ERROR; + goto f_err; + } ++ if (sigalg->key_type == EVP_PKEY_GOSTR01 && ++ EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_VERIFY, ++ EVP_PKEY_CTRL_GOST_SIG_FORMAT, GOST_SIG_FORMAT_RS_LE, ++ NULL) <= 0) { ++ al = SSL_AD_INTERNAL_ERROR; ++ goto f_err; ++ } + if (!EVP_DigestVerifyUpdate(&mctx, hdata, hdatalen)) { + SSLerror(s, ERR_R_EVP_LIB); + al = SSL_AD_INTERNAL_ERROR; +-- +2.17.1 + diff --git a/0014-Handle-GOST-in-ssl_cert_dup.patch b/0014-Handle-GOST-in-ssl_cert_dup.patch new file mode 100644 index 0000000..b7dd2f2 --- /dev/null +++ b/0014-Handle-GOST-in-ssl_cert_dup.patch @@ -0,0 +1,40 @@ +From 72d5aaa54573c61341b1830ff3a377cf332267ea Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:55:24 +0000 +Subject: [PATCH 14/87] Handle GOST in ssl_cert_dup(). + +Add missing case entry for SSL_PKEY_GOST01. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libssl/ssl_cert.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c +index 3567b7b42..43e833196 100644 +--- a/src/lib/libssl/ssl_cert.c ++++ b/src/lib/libssl/ssl_cert.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ssl_cert.c,v 1.77 2020/05/19 16:35:20 jsing Exp $ */ ++/* $OpenBSD: ssl_cert.c,v 1.78 2020/06/05 17:55:24 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -248,6 +248,10 @@ ssl_cert_dup(CERT *cert) + /* We have an ECC key */ + break; + ++ case SSL_PKEY_GOST01: ++ /* We have a GOST key */ ++ break; ++ + default: + /* Can't happen. */ + SSLerrorx(SSL_R_LIBRARY_BUG); +-- +2.17.1 + diff --git a/0015-Stop-sending-GOST-R-34.10-94-as-a-CertificateType.patch b/0015-Stop-sending-GOST-R-34.10-94-as-a-CertificateType.patch new file mode 100644 index 0000000..1db322d --- /dev/null +++ b/0015-Stop-sending-GOST-R-34.10-94-as-a-CertificateType.patch @@ -0,0 +1,40 @@ +From e0892f5cadc07677b7b04f03c62f184ae0ea4fa5 Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 17:58:32 +0000 +Subject: [PATCH 15/87] Stop sending GOST R 34.10-94 as a CertificateType. + +GOST R 34.10-94 is an obsolete certificate type, unsupported by +LibreSSL and by the rest of current software, so there is no point in +sending in the CertificateTypes. + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libssl/s3_lib.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index afc798bed..f98ec3e09 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: s3_lib.c,v 1.193 2020/05/10 14:17:47 jsing Exp $ */ ++/* $OpenBSD: s3_lib.c,v 1.194 2020/06/05 17:58:32 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -2547,8 +2547,6 @@ ssl3_get_req_cert_types(SSL *s, CBB *cbb) + + #ifndef OPENSSL_NO_GOST + if ((alg_k & SSL_kGOST) != 0) { +- if (!CBB_add_u8(cbb, TLS_CT_GOST94_SIGN)) +- return 0; + if (!CBB_add_u8(cbb, TLS_CT_GOST01_SIGN)) + return 0; + if (!CBB_add_u8(cbb, TLS_CT_GOST12_256_SIGN)) +-- +2.17.1 + diff --git a/0016-Use-IANA-allocated-GOST-ClientCertificateTypes.patch b/0016-Use-IANA-allocated-GOST-ClientCertificateTypes.patch new file mode 100644 index 0000000..10da248 --- /dev/null +++ b/0016-Use-IANA-allocated-GOST-ClientCertificateTypes.patch @@ -0,0 +1,96 @@ +From 8559d74b6337caf1173ef440c4105e0b0e6d3e54 Mon Sep 17 00:00:00 2001 +From: jsing <> +Date: Fri, 5 Jun 2020 18:14:05 +0000 +Subject: [PATCH 16/87] Use IANA allocated GOST ClientCertificateTypes. + +IANA has allocated numbers for GOST ClientCertificateType. Use them in +addition to private values (left in place for compatibility). + +Diff from Dmitry Baryshkov + +Sponsored by ROSA Linux + +ok inoguchi@ tb@ +--- + src/lib/libssl/s3_lib.c | 6 +++++- + src/lib/libssl/ssl3.h | 4 ++-- + src/lib/libssl/tls1.h | 14 ++++++++------ + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index f98ec3e09..e2fef7258 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: s3_lib.c,v 1.194 2020/06/05 17:58:32 jsing Exp $ */ ++/* $OpenBSD: s3_lib.c,v 1.195 2020/06/05 18:14:05 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -2553,6 +2553,10 @@ ssl3_get_req_cert_types(SSL *s, CBB *cbb) + return 0; + if (!CBB_add_u8(cbb, TLS_CT_GOST12_512_SIGN)) + return 0; ++ if (!CBB_add_u8(cbb, TLS_CT_GOST12_256_SIGN_COMPAT)) ++ return 0; ++ if (!CBB_add_u8(cbb, TLS_CT_GOST12_512_SIGN_COMPAT)) ++ return 0; + } + #endif + +diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h +index 30dc4c5d7..a102d1143 100644 +--- a/src/lib/libssl/ssl3.h ++++ b/src/lib/libssl/ssl3.h +@@ -1,4 +1,4 @@ +-/* $OpenBSD: ssl3.h,v 1.50 2020/03/12 17:01:53 jsing Exp $ */ ++/* $OpenBSD: ssl3.h,v 1.51 2020/06/05 18:14:05 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -348,7 +348,7 @@ typedef struct ssl3_buffer_st { + * enough to contain all of the cert types defined either for + * SSLv3 and TLSv1. + */ +-#define SSL3_CT_NUMBER 11 ++#define SSL3_CT_NUMBER 13 + + #define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 +diff --git a/src/lib/libssl/tls1.h b/src/lib/libssl/tls1.h +index 2230f0bab..8cd522658 100644 +--- a/src/lib/libssl/tls1.h ++++ b/src/lib/libssl/tls1.h +@@ -1,4 +1,4 @@ +-/* $OpenBSD: tls1.h,v 1.40 2020/01/02 06:23:16 jsing Exp $ */ ++/* $OpenBSD: tls1.h,v 1.41 2020/06/05 18:14:05 jsing Exp $ */ + /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * +@@ -735,16 +735,18 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) + #define TLS_CT_DSS_SIGN 2 + #define TLS_CT_RSA_FIXED_DH 3 + #define TLS_CT_DSS_FIXED_DH 4 ++#define TLS_CT_GOST94_SIGN 21 ++#define TLS_CT_GOST01_SIGN 22 + #define TLS_CT_ECDSA_SIGN 64 + #define TLS_CT_RSA_FIXED_ECDH 65 + #define TLS_CT_ECDSA_FIXED_ECDH 66 +-#define TLS_CT_GOST94_SIGN 21 +-#define TLS_CT_GOST01_SIGN 22 +-#define TLS_CT_GOST12_256_SIGN 238 /* FIXME: IANA */ +-#define TLS_CT_GOST12_512_SIGN 239 /* FIXME: IANA */ ++#define TLS_CT_GOST12_256_SIGN 67 ++#define TLS_CT_GOST12_512_SIGN 68 ++#define TLS_CT_GOST12_256_SIGN_COMPAT 238 /* pre-IANA, for compat */ ++#define TLS_CT_GOST12_512_SIGN_COMPAT 239 /* pre-IANA, for compat */ + /* when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) */ +-#define TLS_CT_NUMBER 11 ++#define TLS_CT_NUMBER 13 + + #define TLS1_FINISH_MAC_LENGTH 12 + +-- +2.17.1 + diff --git a/0017-Add-a-custom-copy-handler-for-AES-key-wrap.patch b/0017-Add-a-custom-copy-handler-for-AES-key-wrap.patch new file mode 100644 index 0000000..2fd7e0f --- /dev/null +++ b/0017-Add-a-custom-copy-handler-for-AES-key-wrap.patch @@ -0,0 +1,96 @@ +From 4b3b3243b241fd08b36ef49f68891a837d723e05 Mon Sep 17 00:00:00 2001 +From: tb <> +Date: Fri, 5 Jun 2020 18:44:42 +0000 +Subject: [PATCH 17/87] Add a custom copy handler for AES key wrap + +This is necessary because ctx->cipher_data is an EVP_AES_WRAP_CTX +containing a pointer to ctx->iv. EVP_CIPHER_CTX_copy() uses memcpy +to copy cipher_data to the target struct. The result is that the +copy contains a pointer to the wrong struct, which then leads to a +use-after-free. The custom copy handler fixes things up to avoid +that. + +Issue reported by Guido Vranken + +ok beck inoguchi jsing +--- + src/lib/libcrypto/evp/e_aes.c | 36 ++++++++++++++++++++++++++++++----- + 1 file changed, 31 insertions(+), 5 deletions(-) + +diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c +index 80eba8024..05ed00295 100644 +--- a/src/lib/libcrypto/evp/e_aes.c ++++ b/src/lib/libcrypto/evp/e_aes.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: e_aes.c,v 1.41 2020/04/30 18:43:11 tb Exp $ */ ++/* $OpenBSD: e_aes.c,v 1.42 2020/06/05 18:44:42 tb Exp $ */ + /* ==================================================================== + * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. + * +@@ -1636,9 +1636,35 @@ aes_wrap_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, + return ret != 0 ? ret : -1; + } + ++static int ++aes_wrap_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) ++{ ++ EVP_AES_WRAP_CTX *wctx = c->cipher_data; ++ ++ switch (type) { ++ case EVP_CTRL_COPY: ++ { ++ EVP_CIPHER_CTX *out = ptr; ++ EVP_AES_WRAP_CTX *wctx_out = out->cipher_data; ++ ++ if (wctx->iv != NULL) { ++ if (c->iv != wctx->iv) ++ return 0; ++ ++ wctx_out->iv = out->iv; ++ } ++ ++ return 1; ++ } ++ } ++ ++ return -1; ++} ++ + #define WRAP_FLAGS \ + ( EVP_CIPH_WRAP_MODE | EVP_CIPH_CUSTOM_IV | EVP_CIPH_FLAG_CUSTOM_CIPHER | \ +- EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_FLAG_DEFAULT_ASN1 ) ++ EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_FLAG_DEFAULT_ASN1 | \ ++ EVP_CIPH_CUSTOM_COPY ) + + static const EVP_CIPHER aes_128_wrap = { + .nid = NID_id_aes128_wrap, +@@ -1652,7 +1678,7 @@ static const EVP_CIPHER aes_128_wrap = { + .ctx_size = sizeof(EVP_AES_WRAP_CTX), + .set_asn1_parameters = NULL, + .get_asn1_parameters = NULL, +- .ctrl = NULL, ++ .ctrl = aes_wrap_ctrl, + .app_data = NULL, + }; + +@@ -1674,7 +1700,7 @@ static const EVP_CIPHER aes_192_wrap = { + .ctx_size = sizeof(EVP_AES_WRAP_CTX), + .set_asn1_parameters = NULL, + .get_asn1_parameters = NULL, +- .ctrl = NULL, ++ .ctrl = aes_wrap_ctrl, + .app_data = NULL, + }; + +@@ -1696,7 +1722,7 @@ static const EVP_CIPHER aes_256_wrap = { + .ctx_size = sizeof(EVP_AES_WRAP_CTX), + .set_asn1_parameters = NULL, + .get_asn1_parameters = NULL, +- .ctrl = NULL, ++ .ctrl = aes_wrap_ctrl, + .app_data = NULL, + }; + +-- +2.17.1 + diff --git a/0018-document-PKCS7_get_signer_info-3.patch b/0018-document-PKCS7_get_signer_info-3.patch new file mode 100644 index 0000000..7519ca7 --- /dev/null +++ b/0018-document-PKCS7_get_signer_info-3.patch @@ -0,0 +1,191 @@ +From 1bfa49e8d29f738ee5af179ad9aa12ee59dc6938 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Wed, 10 Jun 2020 11:43:08 +0000 +Subject: [PATCH 18/87] document PKCS7_get_signer_info(3) + +--- + src/lib/libcrypto/man/Makefile | 3 +- + src/lib/libcrypto/man/PKCS7_get_signer_info.3 | 62 +++++++++++++++++++ + src/lib/libcrypto/man/PKCS7_new.3 | 6 +- + src/lib/libcrypto/man/PKCS7_sign.3 | 5 +- + src/lib/libcrypto/man/PKCS7_sign_add_signer.3 | 7 ++- + 5 files changed, 75 insertions(+), 8 deletions(-) + create mode 100644 src/lib/libcrypto/man/PKCS7_get_signer_info.3 + +diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile +index 7effea837..05b1a54c8 100644 +--- a/src/lib/libcrypto/man/Makefile ++++ b/src/lib/libcrypto/man/Makefile +@@ -1,4 +1,4 @@ +-# $OpenBSD: Makefile,v 1.166 2020/06/04 10:24:27 schwarze Exp $ ++# $OpenBSD: Makefile,v 1.167 2020/06/10 11:43:07 schwarze Exp $ + + .include + +@@ -220,6 +220,7 @@ MAN= \ + PKCS7_decrypt.3 \ + PKCS7_encrypt.3 \ + PKCS7_final.3 \ ++ PKCS7_get_signer_info.3 \ + PKCS7_new.3 \ + PKCS7_set_content.3 \ + PKCS7_set_type.3 \ +diff --git a/src/lib/libcrypto/man/PKCS7_get_signer_info.3 b/src/lib/libcrypto/man/PKCS7_get_signer_info.3 +new file mode 100644 +index 000000000..280f373ea +--- /dev/null ++++ b/src/lib/libcrypto/man/PKCS7_get_signer_info.3 +@@ -0,0 +1,62 @@ ++.\" $OpenBSD: PKCS7_get_signer_info.3,v 1.1 2020/06/10 11:43:08 schwarze Exp $ ++.\" ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.Dd $Mdocdate: June 10 2020 $ ++.Dt PKCS7_GET_SIGNER_INFO 3 ++.Os ++.Sh NAME ++.Nm PKCS7_get_signer_info ++.Nd retrieve signerInfos from a SignedData object ++.Sh SYNOPSIS ++.In openssl/pkcs7.h ++.Ft STACK_OF(PKCS7_SIGNER_INFO) * ++.Fn PKCS7_get_signer_info "PKCS7 *p7" ++.Sh DESCRIPTION ++This function retrieves the set of ++.Vt SignerInfo ++structures from the ++.Fa signerInfos ++field of ++.Fa p7 . ++.Pp ++These can subsequently be manipulated with the functions documented in ++.Xr PKCS7_add_attribute 3 . ++.Sh RETURN VALUES ++.Fn PKCS7_get_signer_info ++returns an internal pointer to a ++.Vt STACK_OF(PKCS7_SIGNER_INFO) ++object or ++.Dv NULL ++on failure. ++It fails if ++.Fa p7 ++is ++.Dv NULL , ++if it has no content, ++or if it is of a type other than ++.Vt SignedData ++or ++.Vt SignedAndEnvelopedData . ++.Sh SEE ALSO ++.Xr PKCS7_add_attribute 3 , ++.Xr PKCS7_final 3 , ++.Xr PKCS7_new 3 , ++.Xr PKCS7_sign 3 , ++.Xr PKCS7_sign_add_signer 3 ++.Sh HISTORY ++.Fn PKCS7_get_signer_info ++first appeared in SSLeay 0.8.1 and has been available since ++.Ox 2.4 . +diff --git a/src/lib/libcrypto/man/PKCS7_new.3 b/src/lib/libcrypto/man/PKCS7_new.3 +index c5eebe96d..151261a31 100644 +--- a/src/lib/libcrypto/man/PKCS7_new.3 ++++ b/src/lib/libcrypto/man/PKCS7_new.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_new.3,v 1.11 2020/06/04 10:24:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_new.3,v 1.12 2020/06/10 11:43:08 schwarze Exp $ + .\" + .\" Copyright (c) 2016 Ingo Schwarze + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: June 4 2020 $ ++.Dd $Mdocdate: June 10 2020 $ + .Dt PKCS7_NEW 3 + .Os + .Sh NAME +@@ -251,6 +251,8 @@ frees + .Xr PKCS7_dataInit 3 , + .Xr PKCS7_decrypt 3 , + .Xr PKCS7_encrypt 3 , ++.Xr PKCS7_final 3 , ++.Xr PKCS7_get_signer_info 3 , + .Xr PKCS7_ISSUER_AND_SERIAL_digest 3 , + .Xr PKCS7_set_content 3 , + .Xr PKCS7_set_type 3 , +diff --git a/src/lib/libcrypto/man/PKCS7_sign.3 b/src/lib/libcrypto/man/PKCS7_sign.3 +index c9b13680c..37257e60f 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_sign.3,v 1.12 2020/06/04 10:24:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_sign.3,v 1.13 2020/06/10 11:43:08 schwarze Exp $ + .\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 4 2020 $ ++.Dd $Mdocdate: June 10 2020 $ + .Dt PKCS7_SIGN 3 + .Os + .Sh NAME +@@ -233,6 +233,7 @@ The error can be obtained from + .Xr PKCS7_add_attribute 3 , + .Xr PKCS7_encrypt 3 , + .Xr PKCS7_final 3 , ++.Xr PKCS7_get_signer_info 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign_add_signer 3 , + .Xr PKCS7_verify 3 +diff --git a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +index 28d327fef..195d6388c 100644 +--- a/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 ++++ b/src/lib/libcrypto/man/PKCS7_sign_add_signer.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.12 2020/06/04 10:24:27 schwarze Exp $ ++.\" $OpenBSD: PKCS7_sign_add_signer.3,v 1.13 2020/06/10 11:43:08 schwarze Exp $ + .\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 + .\" + .\" This file was written by Dr. Stephen Henson . +@@ -49,12 +49,12 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 4 2020 $ ++.Dd $Mdocdate: June 10 2020 $ + .Dt PKCS7_SIGN_ADD_SIGNER 3 + .Os + .Sh NAME + .Nm PKCS7_sign_add_signer +-.Nd add a signer PKCS7 signed data structure ++.Nd add a signer to a SignedData structure + .Sh SYNOPSIS + .In openssl/pkcs7.h + .Ft PKCS7_SIGNER_INFO * +@@ -178,6 +178,7 @@ In some cases of failure, the reason can be determined with + .Xr EVP_DigestInit 3 , + .Xr PKCS7_add_attribute 3 , + .Xr PKCS7_final 3 , ++.Xr PKCS7_get_signer_info 3 , + .Xr PKCS7_new 3 , + .Xr PKCS7_sign 3 + .Sh HISTORY +-- +2.17.1 + diff --git a/0019-wording-tweaks-from-ross-l-richardson-and-tb.patch b/0019-wording-tweaks-from-ross-l-richardson-and-tb.patch new file mode 100644 index 0000000..20b643c --- /dev/null +++ b/0019-wording-tweaks-from-ross-l-richardson-and-tb.patch @@ -0,0 +1,52 @@ +From eaaa6e46157f9dc7f8bd914215c9bc042c586e3b Mon Sep 17 00:00:00 2001 +From: jmc <> +Date: Thu, 11 Jun 2020 18:03:19 +0000 +Subject: [PATCH 19/87] wording tweaks from ross l richardson and tb; ok tb + +--- + src/lib/libcrypto/man/x509v3.cnf.5 | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libcrypto/man/x509v3.cnf.5 b/src/lib/libcrypto/man/x509v3.cnf.5 +index 4d5aaa3e2..392c44d45 100644 +--- a/src/lib/libcrypto/man/x509v3.cnf.5 ++++ b/src/lib/libcrypto/man/x509v3.cnf.5 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: x509v3.cnf.5,v 1.6 2019/06/06 01:06:59 schwarze Exp $ ++.\" $OpenBSD: x509v3.cnf.5,v 1.7 2020/06/11 18:03:19 jmc Exp $ + .\" full merge up to: + .\" OpenSSL man5/x509v3_config a41815f0 Mar 17 18:43:53 2017 -0700 + .\" selective merge up to: OpenSSL 36cf10cf Oct 4 02:11:08 2017 -0400 +@@ -51,7 +51,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 6 2019 $ ++.Dd $Mdocdate: June 11 2020 $ + .Dt X509V3.CNF 5 + .Os + .Sh NAME +@@ -186,16 +186,16 @@ keyUsage=digitalSignature, nonRepudiation + keyUsage=critical, keyCertSign + .Ed + .Ss Extended key usage +-This extensions consists of a list of usages indicating purposes for +-which the certificate public key can be used for. ++This extension consists of a list of purposes for ++which the certificate public key can be used. + .Pp + These can either be object short names or the dotted numerical form of OIDs. + While any OID can be used, only certain values make sense. + In particular the following PKIX, NS and MS values are meaningful: + .Bl -column emailProtection + .It Em value Ta Em meaning +-.It Ic serverAuth Ta SSL/TLS web server authentication +-.It Ic clientAuth Ta SSL/TLS web client authentication ++.It Ic serverAuth Ta TLS server authentication ++.It Ic clientAuth Ta TLS client authentication + .It Ic codeSigning Ta code signing + .It Ic emailProtection Ta E-mail protection (S/MIME) + .It Ic timeStamping Ta trusted timestamping +-- +2.17.1 + diff --git a/0020-document-PEM_ASN1_read-3-and-PEM_ASN1_read_bio-3.patch b/0020-document-PEM_ASN1_read-3-and-PEM_ASN1_read_bio-3.patch new file mode 100644 index 0000000..99b3524 --- /dev/null +++ b/0020-document-PEM_ASN1_read-3-and-PEM_ASN1_read_bio-3.patch @@ -0,0 +1,367 @@ +From 0bce9751943e4ed359b05bb17d9cec8d3a36da59 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Fri, 12 Jun 2020 11:37:42 +0000 +Subject: [PATCH 20/87] document PEM_ASN1_read(3) and PEM_ASN1_read_bio(3); + tweaks and OK tb@ + +--- + src/lib/libcrypto/man/Makefile | 3 +- + src/lib/libcrypto/man/PEM_ASN1_read.3 | 171 ++++++++++++++++++ + src/lib/libcrypto/man/PEM_bytes_read_bio.3 | 52 +++++- + src/lib/libcrypto/man/PEM_read.3 | 7 +- + .../libcrypto/man/PEM_read_bio_PrivateKey.3 | 10 +- + 5 files changed, 236 insertions(+), 7 deletions(-) + create mode 100644 src/lib/libcrypto/man/PEM_ASN1_read.3 + +diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile +index 05b1a54c8..c613fdc29 100644 +--- a/src/lib/libcrypto/man/Makefile ++++ b/src/lib/libcrypto/man/Makefile +@@ -1,4 +1,4 @@ +-# $OpenBSD: Makefile,v 1.167 2020/06/10 11:43:07 schwarze Exp $ ++# $OpenBSD: Makefile,v 1.168 2020/06/12 11:37:42 schwarze Exp $ + + .include + +@@ -203,6 +203,7 @@ MAN= \ + OPENSSL_malloc.3 \ + OPENSSL_sk_new.3 \ + OpenSSL_add_all_algorithms.3 \ ++ PEM_ASN1_read.3 \ + PEM_bytes_read_bio.3 \ + PEM_read.3 \ + PEM_read_bio_PrivateKey.3 \ +diff --git a/src/lib/libcrypto/man/PEM_ASN1_read.3 b/src/lib/libcrypto/man/PEM_ASN1_read.3 +new file mode 100644 +index 000000000..cea0c2df6 +--- /dev/null ++++ b/src/lib/libcrypto/man/PEM_ASN1_read.3 +@@ -0,0 +1,171 @@ ++.\" $OpenBSD: PEM_ASN1_read.3,v 1.1 2020/06/12 11:37:42 schwarze Exp $ ++.\" ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.Dd $Mdocdate: June 12 2020 $ ++.Dt PEM_ASN1_READ 3 ++.Os ++.Sh NAME ++.Nm d2i_of_void , ++.Nm PEM_ASN1_read , ++.Nm PEM_ASN1_read_bio ++.Nd PEM and DER decode an arbitrary ASN.1 value ++.Sh SYNOPSIS ++.In openssl/pem.h ++.Ft typedef void * ++.Fo d2i_of_void ++.Fa "void **val_out" ++.Fa "const unsigned char **der_in" ++.Fa "long length" ++.Fc ++.Ft void * ++.Fo PEM_ASN1_read ++.Fa "d2i_of_void *d2i" ++.Fa "const char *name" ++.Fa "FILE *in_fp" ++.Fa "void **val_out" ++.Fa "pem_password_cb *cb" ++.Fa "void *u" ++.Fc ++.Ft void * ++.Fo PEM_ASN1_read_bio ++.Fa "d2i_of_void *d2i" ++.Fa "const char *name" ++.Fa "BIO *in_bp" ++.Fa "void **val_out" ++.Fa "pem_password_cb *cb" ++.Fa "void *u" ++.Fc ++.Sh DESCRIPTION ++These functions read one object from ++.Fa in_fp ++or ++.Fa in_bp ++and perform both PEM and DER decoding. ++They are needed when more specific decoding functions ++like those documented in ++.Xr PEM_read_bio_PrivateKey 3 ++and ++.Xr PEM_read_SSL_SESSION 3 ++are inadequate for the type ++.Fa name . ++.Pp ++For PEM decoding, ++.Xr PEM_bytes_read_bio 3 ++is called internally. ++Consequently, the first object of type ++.Fa name ++is returned and preceding objects of other types are discarded. ++If necessary, data is decrypted, using ++.Fa cb ++and/or ++.Fa u ++if they are not ++.Dv NULL , ++as described in the ++.Xr pem_password_cb 3 ++manual page. ++.Pp ++For subsequent DER decoding, pass a ++.Fa d2i ++callback function that is adequate for the type ++.Fa name , ++typically returning a pointer of a type more specific than ++.Ft void * . ++For example, ++.Xr d2i_ASN1_TYPE 3 ++can always be used and its manual page describes the required ++behaviour of the callback function to be passed. ++Normally, passing a more specific function is more useful; ++candidate functions can be found with ++.Ql man -k Nm~^d2i_ . ++.Pp ++For the ++.Fa name ++argument, the ++.Dv PEM_STRING_* ++string constants defined in ++.In openssl/pem.h ++can be used. ++.Pp ++The ++.Fa val_out ++argument is useless and its many dangers are described in detail in the ++.Xr d2i_ASN1_TYPE 3 ++manual page. ++To reduce the risk of bugs, always passing ++.Dv NULL ++is recommended. ++.Sh RETURN VALUES ++These functions return a pointer to the decoded object or ++.Dv NULL ++if an error occurs. ++They fail if ++.Xr PEM_bytes_read_bio 3 ++fails, for example because of invalid syntax in the input, an unknown ++encryption, or an invalid passphrase entered by the user. ++They also fail if ++.Fa d2i ++returns ++.Dv NULL , ++for example due to DER decoding errors. ++.Pp ++.Fn PEM_ASN1_read ++may also fail if memory is exhausted. ++.Sh EXAMPLES ++Typical usage of ++.Fn PEM_ASN1_read ++is demonstrated by the implementation of the more specific function ++to PEM and DER decode an X.509 certificate: ++.Bd -literal -offset 2n ++X509 * ++PEM_read_X509(FILE *fp, X509 **val_out, pem_password_cb *cb, void *u) ++{ ++ return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, ++ fp, (void **)val_out, cb, u); ++} ++.Ed ++.Sh ERRORS ++Diagnostics that can be retrieved with ++.Xr ERR_get_error 3 , ++.Xr ERR_GET_REASON 3 , ++and ++.Xr ERR_reason_error_string 3 ++include: ++.Bl -tag -width Ds ++.It Dv ERR_R_BUF_LIB Qq "BUF lib" ++.Fn PEM_ASN1_read ++failed to set up a temporary BIO, ++for example because memory was exhausted. ++.It Dv ERR_R_ASN1_LIB Qq "ASN1 lib" ++.Fa d2i ++returned ++.Dv NULL , ++for example due to a DER syntax error. ++.El ++.Pp ++Additional types of errors can result from ++.Xr PEM_bytes_read_bio 3 . ++.Sh SEE ALSO ++.Xr BIO_new 3 , ++.Xr d2i_ASN1_TYPE 3 , ++.Xr PEM_bytes_read_bio 3 , ++.Xr PEM_read 3 , ++.Xr PEM_read_bio_PrivateKey 3 , ++.Xr PEM_read_SSL_SESSION 3 ++.Sh HISTORY ++These functions first appeared in SSLeay 0.5.1 ++and have been available since ++.Ox 2.4 . +diff --git a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +index b3cb143cf..63b8a58d9 100644 +--- a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 ++++ b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.2 2018/03/22 21:08:22 schwarze Exp $ ++.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.3 2020/06/12 11:37:42 schwarze Exp $ + .\" OpenSSL PEM_bytes_read_bio.pod 7671342e Feb 29 15:47:12 2016 -0600 + .\" + .\" This file was written by Benjamin Kaduk . +@@ -48,7 +48,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: March 22 2018 $ ++.Dd $Mdocdate: June 12 2020 $ + .Dt PEM_BYTES_READ_BIO 3 + .Os + .Sh NAME +@@ -86,6 +86,8 @@ The password callback + and rock + .Fa u + are used to obtain the decryption passphrase, if applicable. ++For more details, see ++.Xr pem_password_cb 3 . + .Pp + Some data types have compatibility aliases, such as a file containing + X509 CERTIFICATE matching a request for the deprecated type CERTIFICATE. +@@ -107,7 +109,53 @@ The caller must free the storage pointed to by + .Sh RETURN VALUES + .Fn PEM_bytes_read_bio + returns 1 for success or 0 for failure. ++.Sh ERRORS ++Diagnostics that can be retrieved with ++.Xr ERR_get_error 3 , ++.Xr ERR_GET_REASON 3 , ++and ++.Xr ERR_reason_error_string 3 ++include: ++.Bl -tag -width Ds ++.It Dv PEM_R_NO_START_LINE Qq no start line ++No more PEM objects were found in the input. ++This can happen when the input contains no PEM objects at all, ++or only objects that do not match the type ++.Fa name . ++.It Dv PEM_R_NOT_PROC_TYPE Qq not proc type ++The first PEM header does not start with ++.Qq "Proc-Type: " . ++.It Dv PEM_R_NOT_ENCRYPTED Qq not encrypted ++The Proc-Type header differs from ++.Qq 4,ENCRYPTED . ++.It Dv PEM_R_SHORT_HEADER Qq short header ++The Proc-Type header is the last header line. ++.It Dv PEM_R_NOT_DEK_INFO Qq not dek info ++The second PEM header does not start with ++.Qq "DEK-Info: " . ++.It Dv PEM_R_UNSUPPORTED_ENCRYPTION Qq unsupported encryption ++The cipher name given in the DEK-Info header is unknown to ++.Xr EVP_get_cipherbyname 3 . ++.It Dv PEM_R_BAD_IV_CHARS Qq "bad iv chars" ++The word following the cipher name in the DEK-Info header ++contains bytes that are not hexadecimal digits. ++This also happens when the initialization vector is missing or too short. ++.It Dv PEM_R_BAD_PASSWORD_READ Qq bad password read ++.Fa cb ++reported failure. ++This may for example happen when the user mistypes the password. ++.It Dv PEM_R_BAD_DECRYPT Qq bad decrypt ++.Xr EVP_DecryptInit_ex 3 , ++.Xr EVP_DecryptUpdate 3 , ++or ++.Xr EVP_DecryptFinal_ex 3 ++failed. ++.El ++.Pp ++Additional types of errors can result from ++.Xr PEM_read_bio 3 . + .Sh SEE ALSO ++.Xr PEM_ASN1_read 3 , + .Xr PEM_read 3 , + .Xr PEM_read_bio_PrivateKey 3 + .Sh HISTORY +diff --git a/src/lib/libcrypto/man/PEM_read.3 b/src/lib/libcrypto/man/PEM_read.3 +index 5648aa014..1469ccd55 100644 +--- a/src/lib/libcrypto/man/PEM_read.3 ++++ b/src/lib/libcrypto/man/PEM_read.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PEM_read.3,v 1.9 2019/06/10 14:58:48 schwarze Exp $ ++.\" $OpenBSD: PEM_read.3,v 1.10 2020/06/12 11:37:42 schwarze Exp $ + .\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 + .\" + .\" This file was written by Viktor Dukhovni +@@ -49,7 +49,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 10 2019 $ ++.Dd $Mdocdate: June 12 2020 $ + .Dt PEM_READ 3 + .Os + .Sh NAME +@@ -279,8 +279,11 @@ is likely meaningless if these functions fail. + .Sh SEE ALSO + .Xr crypto 3 , + .Xr d2i_PKCS8PrivateKey_bio 3 , ++.Xr PEM_ASN1_read 3 , + .Xr PEM_bytes_read_bio 3 , + .Xr PEM_read_bio_PrivateKey 3 , ++.Xr PEM_read_SSL_SESSION 3 , ++.Xr PEM_write_bio_CMS_stream 3 , + .Xr PEM_write_bio_PKCS7_stream 3 + .Sh HISTORY + .Fn PEM_write , +diff --git a/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 b/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 +index cf45356cf..3799baa04 100644 +--- a/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 ++++ b/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.16 2019/11/02 15:25:34 schwarze Exp $ ++.\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.17 2020/06/12 11:37:42 schwarze Exp $ + .\" full merge up to: + .\" OpenSSL man3/PEM_read_bio_PrivateKey.pod 18bad535 Apr 9 15:13:55 2019 +0100 + .\" OpenSSL man3/PEM_read_CMS.pod 83cf7abf May 29 13:07:08 2018 +0100 +@@ -51,7 +51,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: November 2 2019 $ ++.Dd $Mdocdate: June 12 2020 $ + .Dt PEM_READ_BIO_PRIVATEKEY 3 + .Os + .Sh NAME +@@ -770,6 +770,9 @@ will be used to collectively refer to the + and + .Fn PEM_write_TYPE + functions. ++If no set of specific functions exists for a given type, ++.Xr PEM_ASN1_read 3 ++can be used instead. + .Pp + The + .Sy PrivateKey +@@ -1266,8 +1269,11 @@ pass_cb(char *buf, int size, int rwflag, void *u) + .Sh SEE ALSO + .Xr BIO_new 3 , + .Xr DSA_new 3 , ++.Xr PEM_ASN1_read 3 , + .Xr PEM_bytes_read_bio 3 , + .Xr PEM_read 3 , ++.Xr PEM_read_SSL_SESSION 3 , ++.Xr PEM_write_bio_CMS_stream 3 , + .Xr PEM_write_bio_PKCS7_stream 3 , + .Xr RSA_new 3 , + .Xr X509_CRL_new 3 , +-- +2.17.1 + diff --git a/0021-add-a-comment-saying-that-name_cmp-is-intentionally-.patch b/0021-add-a-comment-saying-that-name_cmp-is-intentionally-.patch new file mode 100644 index 0000000..bc672c1 --- /dev/null +++ b/0021-add-a-comment-saying-that-name_cmp-is-intentionally-.patch @@ -0,0 +1,42 @@ +From ea838d97bb686ea74dabf19a2b3c08ef4aeb813f Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Fri, 12 Jun 2020 12:15:59 +0000 +Subject: [PATCH 21/87] add a comment saying that name_cmp() is intentionally + undocumented; tb@ agrees that it should not be part of the public API + +--- + src/lib/libcrypto/man/X509_cmp.3 | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libcrypto/man/X509_cmp.3 b/src/lib/libcrypto/man/X509_cmp.3 +index 1734d6a74..bd168c2a6 100644 +--- a/src/lib/libcrypto/man/X509_cmp.3 ++++ b/src/lib/libcrypto/man/X509_cmp.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: X509_cmp.3,v 1.1 2019/08/20 13:27:19 schwarze Exp $ ++.\" $OpenBSD: X509_cmp.3,v 1.2 2020/06/12 12:15:59 schwarze Exp $ + .\" full merge up to: OpenSSL ea5d4b89 Jun 6 11:42:02 2019 +0800 + .\" + .\" This file is a derived work. +@@ -65,7 +65,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: August 20 2019 $ ++.Dd $Mdocdate: June 12 2020 $ + .Dt X509_CMP 3 + .Os + .Sh NAME +@@ -77,6 +77,9 @@ + .Nm X509_CRL_cmp , + .Nm X509_CRL_match + .Nd compare X.509 certificates and related values ++.\" The function name_cmp() is intentionally undocumented. ++.\" It was a mistake to make it public in the first place, ++.\" and it is no longer part of the public API in OpenSSL 1.1. + .Sh SYNOPSIS + .In openssl/x509.h + .Ft int +-- +2.17.1 + diff --git a/0022-add-my-Copyright-and-license-which-i-forgot-when-add.patch b/0022-add-my-Copyright-and-license-which-i-forgot-when-add.patch new file mode 100644 index 0000000..b7e3a22 --- /dev/null +++ b/0022-add-my-Copyright-and-license-which-i-forgot-when-add.patch @@ -0,0 +1,46 @@ +From 45c46ae34710091d5dab6d2f1beaf438ab3fbfac Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Fri, 12 Jun 2020 18:16:13 +0000 +Subject: [PATCH 22/87] add my Copyright and license, which i forgot when + adding a significant amount of text, the ERRORS section, in the previous + commit + +--- + src/lib/libcrypto/man/PEM_bytes_read_bio.3 | 23 +++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +diff --git a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +index 63b8a58d9..d3a664ba7 100644 +--- a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 ++++ b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +@@ -1,7 +1,24 @@ +-.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.3 2020/06/12 11:37:42 schwarze Exp $ +-.\" OpenSSL PEM_bytes_read_bio.pod 7671342e Feb 29 15:47:12 2016 -0600 ++.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.4 2020/06/12 18:16:13 schwarze Exp $ ++.\" selective merge up to: ++.\" OpenSSL PEM_bytes_read_bio.pod 7671342e Feb 29 15:47:12 2016 -0600 + .\" +-.\" This file was written by Benjamin Kaduk . ++.\" This file is a derived work. ++.\" The changes are covered by the following Copyright and license: ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.\" The original file was written by Benjamin Kaduk . + .\" Copyright (c) 2017 The OpenSSL Project. All rights reserved. + .\" + .\" Redistribution and use in source and binary forms, with or without +-- +2.17.1 + diff --git a/0023-Document-PEM_def_callback-3.patch b/0023-Document-PEM_def_callback-3.patch new file mode 100644 index 0000000..b141c53 --- /dev/null +++ b/0023-Document-PEM_def_callback-3.patch @@ -0,0 +1,430 @@ +From 8b13cacf2286f4647d6fe7d975a090f2e82b58d1 Mon Sep 17 00:00:00 2001 +From: schwarze <> +Date: Mon, 15 Jun 2020 14:13:14 +0000 +Subject: [PATCH 23/87] Document PEM_def_callback(3). Move pem_password_cb(3) + to the file PEM_read(3) and rewrite its description from scratch for + precision and conciseness. Plus some minor improvements in the vicinity. + Tweaks and OK tb@. + +--- + src/lib/libcrypto/man/PEM_bytes_read_bio.3 | 36 +++-- + src/lib/libcrypto/man/PEM_read.3 | 146 +++++++++++++++--- + .../libcrypto/man/PEM_read_bio_PrivateKey.3 | 82 ++-------- + 3 files changed, 158 insertions(+), 106 deletions(-) + +diff --git a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +index d3a664ba7..d1148edfe 100644 +--- a/src/lib/libcrypto/man/PEM_bytes_read_bio.3 ++++ b/src/lib/libcrypto/man/PEM_bytes_read_bio.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.4 2020/06/12 18:16:13 schwarze Exp $ ++.\" $OpenBSD: PEM_bytes_read_bio.3,v 1.5 2020/06/15 14:13:14 schwarze Exp $ + .\" selective merge up to: + .\" OpenSSL PEM_bytes_read_bio.pod 7671342e Feb 29 15:47:12 2016 -0600 + .\" +@@ -65,7 +65,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 12 2020 $ ++.Dd $Mdocdate: June 15 2020 $ + .Dt PEM_BYTES_READ_BIO 3 + .Os + .Sh NAME +@@ -79,31 +79,31 @@ + .Fa "long *plen" + .Fa "char **pnm" + .Fa "const char *name" +-.Fa "BIO *bp" ++.Fa "BIO *in_bp" + .Fa "pem_password_cb *cb" + .Fa "void *u" + .Fc + .Sh DESCRIPTION + .Fn PEM_bytes_read_bio +-reads PEM-formatted (RFC 1421) data from the BIO +-.Fa bp +-for the data type given in ++reads and PEM decodes the first object of type + .Fa name +-(RSA PRIVATE KEY, CERTIFICATE, etc.). ++.Pq e.g. RSA PRIVATE KEY, CERTIFICATE, etc.\& ++from ++.Fa in_bp . + If multiple PEM-encoded data structures are present in the same stream, +-.Fn PEM_bytes_read_bio +-will skip non-matching data types and continue reading. +-Non-PEM data present in the stream may cause an error. ++it skips non-matching data types and continues reading. ++Before reading each PEM object, lines not starting with ++.Qq "-----BEGIN " ++are also skipped; see ++.Xr PEM_read_bio 3 ++for details of PEM parsing. + .Pp + The PEM header may indicate that the following data is encrypted; if so, +-the data will be decrypted, waiting on user input to supply a passphrase +-if needed. +-The password callback ++the data is decrypted, optionally using + .Fa cb +-and rock +-.Fa u +-are used to obtain the decryption passphrase, if applicable. +-For more details, see ++and ++.Fa u , ++as described in + .Xr pem_password_cb 3 . + .Pp + Some data types have compatibility aliases, such as a file containing +@@ -175,6 +175,8 @@ Additional types of errors can result from + .Xr PEM_ASN1_read 3 , + .Xr PEM_read 3 , + .Xr PEM_read_bio_PrivateKey 3 ++.Sh STANDARDS ++RFC 1421: Privacy Enhancement for Internet Electronic Mail (PEM), Part I + .Sh HISTORY + .Fn PEM_bytes_read_bio + first appeared in OpenSSL 0.9.7 and has been available since +diff --git a/src/lib/libcrypto/man/PEM_read.3 b/src/lib/libcrypto/man/PEM_read.3 +index 1469ccd55..49cdd0f3c 100644 +--- a/src/lib/libcrypto/man/PEM_read.3 ++++ b/src/lib/libcrypto/man/PEM_read.3 +@@ -1,7 +1,24 @@ +-.\" $OpenBSD: PEM_read.3,v 1.10 2020/06/12 11:37:42 schwarze Exp $ +-.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 ++.\" $OpenBSD: PEM_read.3,v 1.11 2020/06/15 14:13:14 schwarze Exp $ ++.\" full merge up to: OpenSSL 83cf7abf May 29 13:07:08 2018 +0100 + .\" +-.\" This file was written by Viktor Dukhovni ++.\" This file is a derived work. ++.\" The changes are covered by the following Copyright and license: ++.\" ++.\" Copyright (c) 2020 Ingo Schwarze ++.\" ++.\" Permission to use, copy, modify, and distribute this software for any ++.\" purpose with or without fee is hereby granted, provided that the above ++.\" copyright notice and this permission notice appear in all copies. ++.\" ++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++.\" ++.\" The original file was written by Viktor Dukhovni + .\" and by Rich Salz . + .\" Copyright (c) 2016 The OpenSSL Project. All rights reserved. + .\" +@@ -49,7 +66,7 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 12 2020 $ ++.Dd $Mdocdate: June 15 2020 $ + .Dt PEM_READ 3 + .Os + .Sh NAME +@@ -57,8 +74,10 @@ + .Nm PEM_write_bio , + .Nm PEM_read , + .Nm PEM_read_bio , ++.Nm PEM_get_EVP_CIPHER_INFO , + .Nm PEM_do_header , +-.Nm PEM_get_EVP_CIPHER_INFO ++.Nm PEM_def_callback , ++.Nm pem_password_cb + .Nd PEM encoding routines + .Sh SYNOPSIS + .In openssl/pem.h +@@ -107,6 +126,20 @@ + .Fa "pem_password_cb *cb" + .Fa "void *u" + .Fc ++.Ft int ++.Fo PEM_def_callback ++.Fa "char *password" ++.Fa "int size" ++.Fa "int verify" ++.Fa "void *u" ++.Fc ++.Ft typedef int ++.Fo pem_password_cb ++.Fa "char *password" ++.Fa "int size" ++.Fa "int verify" ++.Fa "void *u" ++.Fc + .Sh DESCRIPTION + These functions read and write PEM-encoded objects, using the PEM type + .Fa name , +@@ -224,34 +257,83 @@ unknown or some internal error happens, 0 is returned. + can then be used to decrypt the data if the header indicates encryption. + The + .Fa cinfo +-argument is a pointer to the structure initialized by the previous call ++argument is a pointer to the structure initialized by a preceding call + to + .Fn PEM_get_EVP_CIPHER_INFO . ++If that structure indicates the absence of encryption, ++.Fn PEM_do_header ++returns sucessfully without taking any action. + The + .Fa data + and + .Fa len +-arguments are those returned by the previous call to ++arguments are used both to pass in the encrypted data that was ++returned in the same arguments from the preceding call to + .Fn PEM_read + or +-.Fn PEM_read_bio . ++.Fn PEM_read_bio ++and to pass out the decrypted data. ++.Pp ++The callback function ++.Fa cb ++is used to obtain the encryption ++.Fa password ; ++if ++.Fa cb ++is ++.Dv NULL , ++.Fn PEM_def_callback ++is used instead. + The ++.Fa password ++buffer needs to be at least ++.Fa size ++bytes long. ++.Fn PEM_def_callback ++silently truncates the NUL-terminated byte string ++.Fa u ++to at most ++.Fa num ++bytes and copies it into ++.Fa password ++without a terminating NUL byte. ++If ++.Fa u ++is ++.Dv NULL , ++.Fn PEM_def_callback ++instead prompts the user for the password with echoing turned off ++by calling ++.Xr EVP_read_pw_string_min 3 ++internally. ++In this case, the ++.Fa size ++is silently reduced to at most ++.Dv BUFSIZ ++and at most ++.Fa size No \- 1 ++bytes are accepted from the user and copied into the byte string buffer ++.Fa password . ++A callback function + .Fa cb +-and ++supplied by the application may use + .Fa u +-arguments make it possible to override the default password prompt +-function as described in +-.Xr PEM_read_PrivateKey 3 . +-On successful completion, the +-.Fa data +-is decrypted in place, and +-.Fa len +-is updated to indicate the plaintext length. ++for a different purpose than ++.Fn PEM_def_callback ++does, e.g., as auxiliary data to use while acquiring the password. ++For example, a GUI application might pass a window handle. ++If the ++.Fa verify ++flag is non-zero, the user is prompted twice for the password to ++make typos less likely and it is checked that both inputs agree. ++This flag is not set by ++.Fn PEM_do_header ++nor by other read functions. + .Pp + If the data is a priori known to not be encrypted, then neither +-.Fn PEM_do_header +-nor + .Fn PEM_get_EVP_CIPHER_INFO ++nor ++.Fn PEM_do_header + need to be called. + .Sh RETURN VALUES + .Fn PEM_read +@@ -276,6 +358,28 @@ return 1 on success or 0 on failure. + The + .Fa data + is likely meaningless if these functions fail. ++.Pp ++.Fn PEM_def_callback ++returns the number of bytes stored into ++.Fa buf ++or a negative value on failure, and ++.Fa cb ++is expected to behave in the same way. ++If ++.Fa u ++is ++.Dv NULL , ++.Fn PEM_def_callback ++fails if ++.Fa num ++is less than 5 ++or if an error occurs trying to prompt the user for the password. ++Otherwise, it fails when ++.Fa num ++is negative. ++The details of the circumstances that cause ++.Fa cb ++to fail may differ. + .Sh SEE ALSO + .Xr crypto 3 , + .Xr d2i_PKCS8PrivateKey_bio 3 , +@@ -299,3 +403,7 @@ and + first appeared in SSLeay 0.6.0. + These functions have been available since + .Ox 2.4 . ++.Pp ++.Fn PEM_def_callback ++first appeared in OpenSSL 0.9.7 and has been available since ++.Ox 3.2 . +diff --git a/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 b/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 +index 3799baa04..cc58640b1 100644 +--- a/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 ++++ b/src/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.17 2020/06/12 11:37:42 schwarze Exp $ ++.\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.18 2020/06/15 14:13:14 schwarze Exp $ + .\" full merge up to: + .\" OpenSSL man3/PEM_read_bio_PrivateKey.pod 18bad535 Apr 9 15:13:55 2019 +0100 + .\" OpenSSL man3/PEM_read_CMS.pod 83cf7abf May 29 13:07:08 2018 +0100 +@@ -51,11 +51,10 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: June 12 2020 $ ++.Dd $Mdocdate: June 15 2020 $ + .Dt PEM_READ_BIO_PRIVATEKEY 3 + .Os + .Sh NAME +-.Nm pem_password_cb , + .Nm PEM_read_bio_PrivateKey , + .Nm PEM_read_PrivateKey , + .Nm PEM_write_bio_PrivateKey , +@@ -149,13 +148,6 @@ + .Nd PEM routines + .Sh SYNOPSIS + .In openssl/pem.h +-.Ft typedef int +-.Fo pem_password_cb +-.Fa "char *buf" +-.Fa "int size" +-.Fa "int rwflag" +-.Fa "void *u" +-.Fc + .Ft EVP_PKEY * + .Fo PEM_read_bio_PrivateKey + .Fa "BIO *bp" +@@ -754,7 +746,9 @@ + .Sh DESCRIPTION + The PEM functions read or write structures in PEM format. + In this sense PEM format is simply base64-encoded data surrounded by +-header lines. ++header lines; see ++.Xr PEM_read 3 ++for more details. + .Pp + For more details about the meaning of arguments see the + .Sx PEM function arguments +@@ -1050,10 +1044,14 @@ If this parameter is set to + .Dv NULL , + then the private key is written in unencrypted form. + .Pp +-The ++The optional arguments ++.Fa u ++and + .Fa cb +-argument is the callback to use when querying for the passphrase used +-for encrypted PEM structures (normally only private keys). ++are a passphrase used for encrypting a PEM structure ++or a callback to obtain the passphrase; see ++.Xr pem_password_cb 3 ++for details. + .Pp + For the PEM write routines, if the + .Fa kstr +@@ -1066,62 +1064,6 @@ bytes at + are used as the passphrase and + .Fa cb + is ignored. +-.Pp +-If the +-.Fa cb +-parameter is set to +-.Dv NULL +-and the +-.Fa u +-parameter is not +-.Dv NULL , +-then the +-.Fa u +-parameter is interpreted as a null terminated string to use as the +-passphrase. +-If both +-.Fa cb +-and +-.Fa u +-are +-.Dv NULL , +-then the default callback routine is used, which will typically +-prompt for the passphrase on the current terminal with echoing +-turned off. +-.Pp +-The default passphrase callback is sometimes inappropriate (for example +-in a GUI application) so an alternative can be supplied. +-The callback routine has the following form: +-.Bd -filled -offset inset +-.Ft int +-.Fo cb +-.Fa "char *buf" +-.Fa "int size" +-.Fa "int rwflag" +-.Fa "void *u" +-.Fc +-.Ed +-.Pp +-.Fa buf +-is the buffer to write the passphrase to. +-.Fa size +-is the maximum length of the passphrase, i.e. the size of +-.Fa buf . +-.Fa rwflag +-is a flag which is set to 0 when reading and 1 when writing. +-A typical routine will ask the user to verify the passphrase (for +-example by prompting for it twice) if +-.Fa rwflag +-is 1. +-The +-.Fa u +-parameter has the same value as the +-.Fa u +-parameter passed to the PEM routine. +-It allows arbitrary data to be passed to the callback by the application +-(for example a window handle in a GUI application). +-The callback must return the number of characters in the passphrase +-or -1 if an error occurred. + .Ss PEM encryption format + This old + .Sy PrivateKey +-- +2.17.1 + diff --git a/0024-Document-EVP_read_pw_string_min-3.patch b/0024-Document-EVP_read_pw_string_min-3.patch new file mode 100644 index 0000000..88355a3 --- /dev/null +++ b/0024-Document-EVP_read_pw_string_min-3.patch @@ -0,0 +1,115 @@ +From d7a02c1cb2864937d134b1285f5980f72dc9e650 Mon Sep 17 00:00:00 2001 +From: tb <> +Date: Mon, 15 Jun 2020 15:25:46 +0000 +Subject: [PATCH 24/87] Document EVP_read_pw_string_min(3) + +Add detailed information on the return values of all the functions +in this page and remove the previous incorrect information. + +tweaks & ok schwarze +--- + src/lib/libcrypto/man/des_read_pw.3 | 50 +++++++++++++++++++++++++---- + 1 file changed, 44 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libcrypto/man/des_read_pw.3 b/src/lib/libcrypto/man/des_read_pw.3 +index 8c63a65fd..55d36ef72 100644 +--- a/src/lib/libcrypto/man/des_read_pw.3 ++++ b/src/lib/libcrypto/man/des_read_pw.3 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: des_read_pw.3,v 1.8 2018/03/27 17:35:50 schwarze Exp $ ++.\" $OpenBSD: des_read_pw.3,v 1.9 2020/06/15 15:25:46 tb Exp $ + .\" OpenSSL doc/crypto/ui_compat.pod May 14 11:28:00 2006 +0000 + .\" OpenSSL doc/crypto/des.pod 2a9aca32 Oct 25 08:44:10 2001 +0000 + .\" +@@ -50,13 +50,14 @@ + .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + .\" OF THE POSSIBILITY OF SUCH DAMAGE. + .\" +-.Dd $Mdocdate: March 27 2018 $ ++.Dd $Mdocdate: June 15 2020 $ + .Dt DES_READ_PW 3 + .Os + .Sh NAME + .Nm des_read_pw , + .Nm des_read_pw_string , +-.Nm EVP_read_pw_string ++.Nm EVP_read_pw_string , ++.Nm EVP_read_pw_string_min + .Nd compatibility user interface functions + .Sh SYNOPSIS + .In openssl/ui_compat.h +@@ -83,6 +84,14 @@ + .Fa "const char *prompt" + .Fa "int verify" + .Fc ++.Ft int ++.Fo EVP_read_pw_string_min ++.Fa "char *buf" ++.Fa "int min_length" ++.Fa "int length" ++.Fa "const char *prompt" ++.Fa "int verify" ++.Fc + .Sh DESCRIPTION + The DES library contained a few routines to prompt for passwords. + These aren't necessarily dependent on DES, and have therefore become +@@ -107,8 +116,6 @@ The second password is stored in + which must therefore also be at least + .Fa length + bytes. +-A return code of -1 indicates a system error, 1 failure due to use +-interaction, and 0 is success. + .Pp + .Fn des_read_pw_string + is a variant of +@@ -126,8 +133,34 @@ uses + .Dv BUFSIZ . + .Pp + .Fn EVP_read_pw_string +-is functionally similar to ++and ++.Fn EVP_read_pw_string_min ++are functionally similar to + .Fn des_read_pw_string . ++.Fn EVP_read_pw_string_min ++additionally checks that the password is at least ++.Fa min_length ++bytes long. ++.Sh RETURN VALUES ++These functions return 0 on success and a negative value on failure. ++.Pp ++They return -1 if ++.Fa length ++is less than or equal to zero or on memory allocation failure. ++They return -1 or -2 if the internal call to ++.Xr UI_process 3 ++fails. ++.Pp ++In addition, ++.Fa EVP_read_pw_string_min ++returns -1 if ++.Fa min_length ++is negative, if ++.Fa length ++is less than or equal to ++.Fa min_length , ++or if the user entered a password shorter than ++.Fa min_length . + .Sh SEE ALSO + .Xr UI_new 3 + .Sh HISTORY +@@ -139,6 +172,11 @@ first appeared in SSLeay 0.5.1. + first appeared in SSLeay 0.8.0. + These functions have been available since + .Ox 2.4 . ++.Pp ++.Fn EVP_read_pw_string_min ++first appeared in OpenSSL 1.0.0 ++and has been available since ++.Ox 4.9 . + .Sh AUTHORS + .An Richard Levitte Aq Mt richard@levitte.org + for the OpenSSL project. +-- +2.17.1 + diff --git a/0025-gost-populate-params-tables-with-new-curves.patch b/0025-gost-populate-params-tables-with-new-curves.patch new file mode 100644 index 0000000..e5a88e6 --- /dev/null +++ b/0025-gost-populate-params-tables-with-new-curves.patch @@ -0,0 +1,44 @@ +From 2b6729397b700f453dbf3797f91dd8297c61cf21 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 28 Mar 2020 19:08:50 +0300 +Subject: [PATCH 25/87] gost: populate params tables with new curves + +Allow users to specify new curves via strings. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gostr341001_params.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/lib/libcrypto/gost/gostr341001_params.c b/src/lib/libcrypto/gost/gostr341001_params.c +index 282a21041..9764964cd 100644 +--- a/src/lib/libcrypto/gost/gostr341001_params.c ++++ b/src/lib/libcrypto/gost/gostr341001_params.c +@@ -94,12 +94,22 @@ static const GostR3410_params GostR3410_256_params[] = { + { "0", NID_id_GostR3410_2001_TestParamSet }, + { "XA", NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet }, + { "XB", NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet }, ++ { "TCA", NID_id_tc26_gost_3410_12_256_paramSetA }, ++ { "TCB", NID_id_tc26_gost_3410_12_256_paramSetB }, ++ { "TCC", NID_id_tc26_gost_3410_12_256_paramSetC }, ++ { "TCD", NID_id_tc26_gost_3410_12_256_paramSetD }, + { NULL, NID_undef }, + }; + + static const GostR3410_params GostR3410_512_params[] = { + { "A", NID_id_tc26_gost_3410_12_512_paramSetA }, + { "B", NID_id_tc26_gost_3410_12_512_paramSetB }, ++ { "C", NID_id_tc26_gost_3410_12_512_paramSetC }, ++ { "0", NID_id_tc26_gost_3410_12_512_paramSetTest}, ++ /* Duplicates for compatibility with OpenSSL */ ++ { "TCA", NID_id_tc26_gost_3410_12_512_paramSetA }, ++ { "TCB", NID_id_tc26_gost_3410_12_512_paramSetB }, ++ { "TCC", NID_id_tc26_gost_3410_12_512_paramSetC }, + { NULL, NID_undef }, + }; + +-- +2.17.1 + diff --git a/0026-gost-use-ECerror-to-report-EC-errors.patch b/0026-gost-use-ECerror-to-report-EC-errors.patch new file mode 100644 index 0000000..4315c4c --- /dev/null +++ b/0026-gost-use-ECerror-to-report-EC-errors.patch @@ -0,0 +1,112 @@ +From 4db6b93111cff924d0ba6650ef351939d67e94a5 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 18 Mar 2020 14:05:08 +0300 +Subject: [PATCH 26/87] gost: use ECerror to report EC errors + +GOST code uses GOSTerror(EC_R_foo) to report several errors. Use +ECerror(EC_R_foo) instead to make error messages match error code. + +Sponsored by ROSA Linux. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gostr341001_ameth.c | 2 +- + src/lib/libcrypto/gost/gostr341001_key.c | 14 +++++++------- + src/lib/libcrypto/gost/gostr341001_pmeth.c | 2 +- + 3 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 27a95f206..0e9521178 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -547,7 +547,7 @@ param_decode_gost01(EVP_PKEY *pkey, const unsigned char **pder, int derlen) + } + group = EC_GROUP_new_by_curve_name(nid); + if (group == NULL) { +- GOSTerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); ++ ECerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); + GOST_KEY_free(ec); + return 0; + } +diff --git a/src/lib/libcrypto/gost/gostr341001_key.c b/src/lib/libcrypto/gost/gostr341001_key.c +index 0af39f21b..74f8cab9d 100644 +--- a/src/lib/libcrypto/gost/gostr341001_key.c ++++ b/src/lib/libcrypto/gost/gostr341001_key.c +@@ -121,7 +121,7 @@ GOST_KEY_check_key(const GOST_KEY *key) + return 0; + } + if (EC_POINT_is_at_infinity(key->group, key->pub_key) != 0) { +- GOSTerror(EC_R_POINT_AT_INFINITY); ++ ECerror(EC_R_POINT_AT_INFINITY); + goto err; + } + if ((ctx = BN_CTX_new()) == NULL) +@@ -131,14 +131,14 @@ GOST_KEY_check_key(const GOST_KEY *key) + + /* testing whether the pub_key is on the elliptic curve */ + if (EC_POINT_is_on_curve(key->group, key->pub_key, ctx) == 0) { +- GOSTerror(EC_R_POINT_IS_NOT_ON_CURVE); ++ ECerror(EC_R_POINT_IS_NOT_ON_CURVE); + goto err; + } + /* testing whether pub_key * order is the point at infinity */ + if ((order = BN_new()) == NULL) + goto err; + if (EC_GROUP_get_order(key->group, order, ctx) == 0) { +- GOSTerror(EC_R_INVALID_GROUP_ORDER); ++ ECerror(EC_R_INVALID_GROUP_ORDER); + goto err; + } + if (EC_POINT_mul(key->group, point, NULL, key->pub_key, order, +@@ -147,7 +147,7 @@ GOST_KEY_check_key(const GOST_KEY *key) + goto err; + } + if (EC_POINT_is_at_infinity(key->group, point) == 0) { +- GOSTerror(EC_R_WRONG_ORDER); ++ ECerror(EC_R_WRONG_ORDER); + goto err; + } + /* +@@ -156,7 +156,7 @@ GOST_KEY_check_key(const GOST_KEY *key) + */ + if (key->priv_key != NULL) { + if (BN_cmp(key->priv_key, order) >= 0) { +- GOSTerror(EC_R_WRONG_ORDER); ++ ECerror(EC_R_WRONG_ORDER); + goto err; + } + if (EC_POINT_mul(key->group, point, key->priv_key, NULL, NULL, +@@ -165,7 +165,7 @@ GOST_KEY_check_key(const GOST_KEY *key) + goto err; + } + if (EC_POINT_cmp(key->group, point, key->pub_key, ctx) != 0) { +- GOSTerror(EC_R_INVALID_PRIVATE_KEY); ++ ECerror(EC_R_INVALID_PRIVATE_KEY); + goto err; + } + } +@@ -212,7 +212,7 @@ GOST_KEY_set_public_key_affine_coordinates(GOST_KEY *key, BIGNUM *x, BIGNUM *y) + * out of range. + */ + if (BN_cmp(x, tx) != 0 || BN_cmp(y, ty) != 0) { +- GOSTerror(EC_R_COORDINATES_OUT_OF_RANGE); ++ ECerror(EC_R_COORDINATES_OUT_OF_RANGE); + goto err; + } + if (GOST_KEY_set_public_key(key, point) == 0) +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index 0eb1d873d..0e0cae99e 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -246,7 +246,7 @@ pkey_gost01_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + *siglen = 2 * size; + return 1; + } else if (*siglen < 2 * size) { +- GOSTerror(EC_R_BUFFER_TOO_SMALL); ++ ECerror(EC_R_BUFFER_TOO_SMALL); + return 0; + } + if (tbs_len != 32 && tbs_len != 64) { +-- +2.17.1 + diff --git a/0027-gost-support-new-PublicKeyParameters-format.patch b/0027-gost-support-new-PublicKeyParameters-format.patch new file mode 100644 index 0000000..1e85aa5 --- /dev/null +++ b/0027-gost-support-new-PublicKeyParameters-format.patch @@ -0,0 +1,92 @@ +From c9c184c2ea46015df5fd582f0b90c50e80806131 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 18 Mar 2020 14:14:31 +0300 +Subject: [PATCH 27/87] gost: support new PublicKeyParameters format + +Add support for updated PublicKeyParameters format as defined by +draft-deremin-rfc4491-bis. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost_asn1.c | 2 +- + src/lib/libcrypto/gost/gostr341001_ameth.c | 42 ++++++++++++++++++++-- + 2 files changed, 41 insertions(+), 3 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c +index 265216277..703d64070 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.c ++++ b/src/lib/libcrypto/gost/gost_asn1.c +@@ -190,7 +190,7 @@ static const ASN1_TEMPLATE GOST_KEY_PARAMS_seq_tt[] = { + .item = &ASN1_OBJECT_it, + }, + { +- .flags = 0, ++ .flags = ASN1_TFLG_OPTIONAL, + .tag = 0, + .offset = offsetof(GOST_KEY_PARAMS, hash_params), + .field_name = "hash_params", +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 0e9521178..7cb70ed42 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -90,9 +90,33 @@ decode_gost01_algor_params(EVP_PKEY *pkey, const unsigned char **p, int len) + return 0; + } + param_nid = OBJ_obj2nid(gkp->key_params); +- digest_nid = OBJ_obj2nid(gkp->hash_params); ++ if (gkp->hash_params) ++ digest_nid = OBJ_obj2nid(gkp->hash_params); ++ else { ++ switch (param_nid) { ++ case NID_id_tc26_gost_3410_12_256_paramSetA: ++ case NID_id_tc26_gost_3410_12_256_paramSetB: ++ case NID_id_tc26_gost_3410_12_256_paramSetC: ++ case NID_id_tc26_gost_3410_12_256_paramSetD: ++ digest_nid = NID_id_tc26_gost3411_2012_256; ++ break; ++ case NID_id_tc26_gost_3410_12_512_paramSetTest: ++ case NID_id_tc26_gost_3410_12_512_paramSetA: ++ case NID_id_tc26_gost_3410_12_512_paramSetB: ++ case NID_id_tc26_gost_3410_12_512_paramSetC: ++ digest_nid = NID_id_tc26_gost3411_2012_512; ++ break; ++ default: ++ digest_nid = NID_undef; ++ } ++ } + GOST_KEY_PARAMS_free(gkp); + ++ if (digest_nid == NID_undef) { ++ GOSTerror(GOST_R_BAD_PKEY_PARAMETERS_FORMAT); ++ return 0; ++ } ++ + ec = pkey->pkey.gost; + if (ec == NULL) { + ec = GOST_KEY_new(); +@@ -137,7 +161,21 @@ encode_gost01_algor_params(const EVP_PKEY *key) + pkey_param_nid = + EC_GROUP_get_curve_name(GOST_KEY_get0_group(key->pkey.gost)); + gkp->key_params = OBJ_nid2obj(pkey_param_nid); +- gkp->hash_params = OBJ_nid2obj(GOST_KEY_get_digest(key->pkey.gost)); ++ switch (pkey_param_nid) { ++ case NID_id_GostR3410_2001_TestParamSet: ++ case NID_id_GostR3410_2001_CryptoPro_A_ParamSet: ++ case NID_id_GostR3410_2001_CryptoPro_B_ParamSet: ++ case NID_id_GostR3410_2001_CryptoPro_C_ParamSet: ++ case NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet: ++ case NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet: ++ case NID_id_tc26_gost_3410_12_512_paramSetA: ++ case NID_id_tc26_gost_3410_12_512_paramSetB: ++ gkp->hash_params = OBJ_nid2obj(GOST_KEY_get_digest(key->pkey.gost)); ++ break; ++ default: ++ gkp->hash_params = NULL; ++ break; ++ } + /*gkp->cipher_params = OBJ_nid2obj(cipher_param_nid); */ + params->length = i2d_GOST_KEY_PARAMS(gkp, ¶ms->data); + if (params->length <= 0) { +-- +2.17.1 + diff --git a/0028-gostr341001-support-unwrapped-private-keys-support.patch b/0028-gostr341001-support-unwrapped-private-keys-support.patch new file mode 100644 index 0000000..265fd1a --- /dev/null +++ b/0028-gostr341001-support-unwrapped-private-keys-support.patch @@ -0,0 +1,259 @@ +From b24d8544474981c74fcd13630a811ada98e8743d Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 19 Mar 2020 18:12:09 +0300 +Subject: [PATCH 28/87] gostr341001: support unwrapped private keys support + +GOST private keys can be wrapped in OCTET STRING, INTEGER or come +unwrapped. Support the latter format. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost_asn1.c | 52 ++++++++++ + src/lib/libcrypto/gost/gost_asn1.h | 11 ++ + src/lib/libcrypto/gost/gostr341001_ameth.c | 115 +++++++++++++++++++-- + 3 files changed, 169 insertions(+), 9 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c +index 703d64070..bfd81faa1 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.c ++++ b/src/lib/libcrypto/gost/gost_asn1.c +@@ -17,6 +17,58 @@ + #include "gost_locl.h" + #include "gost_asn1.h" + ++static const ASN1_TEMPLATE MASKED_GOST_KEY_seq_tt[] = { ++ { ++ .flags = 0, ++ .tag = 0, ++ .offset = offsetof(MASKED_GOST_KEY, masked_priv_key), ++ .field_name = "masked_priv_key", ++ .item = &ASN1_OCTET_STRING_it, ++ }, ++ { ++ .flags = 0, ++ .tag = 0, ++ .offset = offsetof(MASKED_GOST_KEY, public_key), ++ .field_name = "public_key", ++ .item = &ASN1_OCTET_STRING_it, ++ }, ++}; ++ ++const ASN1_ITEM MASKED_GOST_KEY_it = { ++ .itype = ASN1_ITYPE_NDEF_SEQUENCE, ++ .utype = V_ASN1_SEQUENCE, ++ .templates = MASKED_GOST_KEY_seq_tt, ++ .tcount = sizeof(MASKED_GOST_KEY_seq_tt) / sizeof(ASN1_TEMPLATE), ++ .funcs = NULL, ++ .size = sizeof(MASKED_GOST_KEY), ++ .sname = "MASKED_GOST_KEY", ++}; ++ ++MASKED_GOST_KEY * ++d2i_MASKED_GOST_KEY(MASKED_GOST_KEY **a, const unsigned char **in, long len) ++{ ++ return (MASKED_GOST_KEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ++ &MASKED_GOST_KEY_it); ++} ++ ++int ++i2d_MASKED_GOST_KEY(MASKED_GOST_KEY *a, unsigned char **out) ++{ ++ return ASN1_item_i2d((ASN1_VALUE *)a, out, &MASKED_GOST_KEY_it); ++} ++ ++MASKED_GOST_KEY * ++MASKED_GOST_KEY_new(void) ++{ ++ return (MASKED_GOST_KEY *)ASN1_item_new(&MASKED_GOST_KEY_it); ++} ++ ++void ++MASKED_GOST_KEY_free(MASKED_GOST_KEY *a) ++{ ++ ASN1_item_free((ASN1_VALUE *)a, &MASKED_GOST_KEY_it); ++} ++ + static const ASN1_TEMPLATE GOST_KEY_TRANSPORT_seq_tt[] = { + { + .flags = 0, +diff --git a/src/lib/libcrypto/gost/gost_asn1.h b/src/lib/libcrypto/gost/gost_asn1.h +index 7cabfc79c..cdbda7b98 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.h ++++ b/src/lib/libcrypto/gost/gost_asn1.h +@@ -56,6 +56,17 @@ + + __BEGIN_HIDDEN_DECLS + ++typedef struct { ++ ASN1_OCTET_STRING *masked_priv_key; ++ ASN1_OCTET_STRING *public_key; ++} MASKED_GOST_KEY; ++ ++MASKED_GOST_KEY *MASKED_GOST_KEY_new(void); ++void MASKED_GOST_KEY_free(MASKED_GOST_KEY *a); ++MASKED_GOST_KEY *d2i_MASKED_GOST_KEY(MASKED_GOST_KEY **a, const unsigned char **in, long len); ++int i2d_MASKED_GOST_KEY(MASKED_GOST_KEY *a, unsigned char **out); ++extern const ASN1_ITEM MASKED_GOST_KEY_it; ++ + typedef struct { + ASN1_OCTET_STRING *encrypted_key; + ASN1_OCTET_STRING *imit; +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 7cb70ed42..880c17cea 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -437,6 +437,70 @@ priv_print_gost01(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx) + return pub_print_gost01(out, pkey, indent, pctx); + } + ++static BIGNUM *unmask_priv_key(EVP_PKEY *pk, ++ const unsigned char *buf, int len, int num_masks) ++{ ++ BIGNUM *pknum_masked = NULL, *q, *mask; ++ const GOST_KEY *key_ptr = pk->pkey.gost; ++ const EC_GROUP *group = GOST_KEY_get0_group(key_ptr); ++ const unsigned char *p = buf + num_masks * len; ++ BN_CTX *ctx; ++ ++ pknum_masked = GOST_le2bn(buf, len, NULL); ++ if (!pknum_masked) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ return NULL; ++ } ++ ++ if (num_masks == 0) ++ return pknum_masked; ++ ++ ctx = BN_CTX_new(); ++ if (ctx == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ BN_CTX_start(ctx); ++ ++ q = BN_CTX_get(ctx); ++ if (!q) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ mask = BN_CTX_get(ctx); ++ if (!mask) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ if (EC_GROUP_get_order(group, q, NULL) <= 0) { ++ GOSTerror(ERR_R_EC_LIB); ++ goto err; ++ } ++ ++ for (; p != buf; p -= len) { ++ if (GOST_le2bn(p, len, mask) == NULL || ++ !BN_mod_mul(pknum_masked, pknum_masked, mask, q, ctx)) { ++ GOSTerror(ERR_R_BN_LIB); ++ goto err; ++ } ++ } ++ ++ BN_CTX_end(ctx); ++ BN_CTX_free(ctx); ++ ++ return pknum_masked; ++ ++err: ++ BN_CTX_end(ctx); ++ BN_CTX_free(ctx); ++ ++ BN_free(pknum_masked); ++ return NULL; ++} ++ + static int + priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) + { +@@ -450,6 +514,7 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) + GOST_KEY *ec; + int ptype = V_ASN1_UNDEF; + ASN1_STRING *pval = NULL; ++ int expected_key_len; + + if (PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf) == 0) { + GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); +@@ -467,29 +532,61 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) + return 0; + } + p = pkey_buf; +- if (V_ASN1_OCTET_STRING == *p) { ++ ++ expected_key_len = (pkey_bits_gost01(pk) + 7) / 8; ++ if (expected_key_len == 0) { ++ EVPerror(EVP_R_DECODE_ERROR); ++ return 0; ++ } else if (priv_len % expected_key_len == 0) { ++ /* Key is not wrapped but masked */ ++ pk_num = unmask_priv_key(pk, pkey_buf, expected_key_len, ++ priv_len / expected_key_len - 1); ++ } else if (V_ASN1_OCTET_STRING == *p) { + /* New format - Little endian octet string */ + ASN1_OCTET_STRING *s = + d2i_ASN1_OCTET_STRING(NULL, &p, priv_len); + + if (s == NULL) { +- GOSTerror(EVP_R_DECODE_ERROR); ++ EVPerror(EVP_R_DECODE_ERROR); + ASN1_STRING_free(s); + return 0; + } + + pk_num = GOST_le2bn(s->data, s->length, NULL); + ASN1_STRING_free(s); +- } else { +- priv_key = d2i_ASN1_INTEGER(NULL, &p, priv_len); +- if (priv_key == NULL) ++ } else if ((V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED) == *p) { ++ /* New format - Structure with masked private and separate public key */ ++ MASKED_GOST_KEY *s = ++ d2i_MASKED_GOST_KEY(NULL, &p, priv_len); ++ ++ if (s == NULL || ++ !s->masked_priv_key || ++ s->masked_priv_key->length % expected_key_len != 0) { ++ EVPerror(EVP_R_DECODE_ERROR); ++ MASKED_GOST_KEY_free(s); + return 0; +- ret = ((pk_num = ASN1_INTEGER_to_BN(priv_key, NULL)) != NULL); +- ASN1_INTEGER_free(priv_key); +- if (ret == 0) { +- GOSTerror(EVP_R_DECODE_ERROR); ++ } ++ ++ pk_num = unmask_priv_key(pk, s->masked_priv_key->data, ++ expected_key_len, ++ s->masked_priv_key->length / expected_key_len - 1); ++ MASKED_GOST_KEY_free(s); ++ } else if (V_ASN1_INTEGER == *p) { ++ priv_key = d2i_ASN1_INTEGER(NULL, &p, priv_len); ++ if (priv_key == NULL) { ++ EVPerror(EVP_R_DECODE_ERROR); + return 0; + } ++ pk_num = ASN1_INTEGER_to_BN(priv_key, NULL); ++ ASN1_INTEGER_free(priv_key); ++ } else { ++ EVPerror(EVP_R_DECODE_ERROR); ++ return 0; ++ } ++ ++ if (pk_num == NULL) { ++ EVPerror(EVP_R_DECODE_ERROR); ++ return 0; + } + + ec = pk->pkey.gost; +-- +2.17.1 + diff --git a/0029-pkcs12-add-support-for-GOST-PFX-files.patch b/0029-pkcs12-add-support-for-GOST-PFX-files.patch new file mode 100644 index 0000000..6018336 --- /dev/null +++ b/0029-pkcs12-add-support-for-GOST-PFX-files.patch @@ -0,0 +1,109 @@ +From 63d60fe4403982e7491286b9e1e47c0a4a9ed4d5 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 13:31:41 +0300 +Subject: [PATCH 29/87] pkcs12: add support for GOST PFX files + +Russian standard body has changed the way MAC key is calculated for +PKCS12 files. Generate proper keys depending on the digest type used for +MAC generation. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/pkcs12/p12_key.c | 18 ++++++++++++++++++ + src/lib/libcrypto/pkcs12/p12_mutl.c | 28 +++++++++++++++++++++------- + src/lib/libcrypto/pkcs12/pkcs12.h | 5 +++++ + 3 files changed, 44 insertions(+), 7 deletions(-) + +diff --git a/src/lib/libcrypto/pkcs12/p12_key.c b/src/lib/libcrypto/pkcs12/p12_key.c +index d419a9d83..9a5297a23 100644 +--- a/src/lib/libcrypto/pkcs12/p12_key.c ++++ b/src/lib/libcrypto/pkcs12/p12_key.c +@@ -195,3 +195,21 @@ end: + EVP_MD_CTX_cleanup(&ctx); + return ret; + } ++ ++int ++PKCS12_key_gen_gost(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int iter, int n, unsigned char *out, ++ const EVP_MD *md_type) ++{ ++ unsigned char buf[96]; ++ ++ if (n != PKCS12_GOST_KEY_LEN) ++ return 0; ++ ++ if (!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, md_type, sizeof(buf), buf)) ++ return 0; ++ ++ memcpy(out, buf + sizeof(buf) - PKCS12_GOST_KEY_LEN, PKCS12_GOST_KEY_LEN); ++ ++ return 1; ++} +diff --git a/src/lib/libcrypto/pkcs12/p12_mutl.c b/src/lib/libcrypto/pkcs12/p12_mutl.c +index f3132ec75..023bbbd92 100644 +--- a/src/lib/libcrypto/pkcs12/p12_mutl.c ++++ b/src/lib/libcrypto/pkcs12/p12_mutl.c +@@ -74,6 +74,7 @@ PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen) + { + const EVP_MD *md_type; ++ int md_type_nid; + HMAC_CTX hmac; + unsigned char key[EVP_MAX_MD_SIZE], *salt; + int saltlen, iter; +@@ -97,13 +98,26 @@ PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + PKCS12error(PKCS12_R_UNKNOWN_DIGEST_ALGORITHM); + return 0; + } +- md_size = EVP_MD_size(md_type); +- if (md_size < 0) +- return 0; +- if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, +- md_size, key, md_type)) { +- PKCS12error(PKCS12_R_KEY_GEN_ERROR); +- return 0; ++ md_type_nid = EVP_MD_type(md_type); ++ if ((md_type_nid == NID_id_GostR3411_94 || ++ md_type_nid == NID_id_tc26_gost3411_2012_256 || ++ md_type_nid == NID_id_tc26_gost3411_2012_512) && ++ getenv("LEGACY_GOST_PKCS12") == NULL) { ++ md_size = PKCS12_GOST_KEY_LEN; ++ if (!PKCS12_key_gen_gost(pass, passlen, salt, saltlen, iter, ++ md_size, key, md_type)) { ++ PKCS12error(PKCS12_R_KEY_GEN_ERROR); ++ return 0; ++ } ++ } else { ++ md_size = EVP_MD_size(md_type); ++ if (md_size < 0) ++ return 0; ++ if (!PKCS12_key_gen(pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, ++ md_size, key, md_type)) { ++ PKCS12error(PKCS12_R_KEY_GEN_ERROR); ++ return 0; ++ } + } + HMAC_CTX_init(&hmac); + if (!HMAC_Init_ex(&hmac, key, md_size, md_type, NULL) || +diff --git a/src/lib/libcrypto/pkcs12/pkcs12.h b/src/lib/libcrypto/pkcs12/pkcs12.h +index 56635f9d7..4dab109bb 100644 +--- a/src/lib/libcrypto/pkcs12/pkcs12.h ++++ b/src/lib/libcrypto/pkcs12/pkcs12.h +@@ -91,6 +91,11 @@ extern "C" { + #define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc + #endif + ++#define PKCS12_GOST_KEY_LEN 32 ++int PKCS12_key_gen_gost(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int iter, int n, unsigned char *out, ++ const EVP_MD *md_type); ++ + /* MS key usage constants */ + + #define KEY_EX 0x10 +-- +2.17.1 + diff --git a/0030-modes-add-functions-implementing-common-code-for-64-.patch b/0030-modes-add-functions-implementing-common-code-for-64-.patch new file mode 100644 index 0000000..e46f460 --- /dev/null +++ b/0030-modes-add-functions-implementing-common-code-for-64-.patch @@ -0,0 +1,750 @@ +From ea7314c1d00c3d63636dd769f0cec60b7e42e79d Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 20 Mar 2020 00:39:56 +0300 +Subject: [PATCH 30/87] modes: add functions implementing common code for + 64-bit ciphers + +64-bit ciphers are old, but it would be good to use common code for +their implementations. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/modes/cbc64.c | 202 ++++++++++++++++++++++++++++++++ + src/lib/libcrypto/modes/cfb64.c | 169 ++++++++++++++++++++++++++ + src/lib/libcrypto/modes/ctr64.c | 174 +++++++++++++++++++++++++++ + src/lib/libcrypto/modes/modes.h | 26 ++++ + src/lib/libcrypto/modes/ofb64.c | 119 +++++++++++++++++++ + 5 files changed, 690 insertions(+) + create mode 100644 src/lib/libcrypto/modes/cbc64.c + create mode 100644 src/lib/libcrypto/modes/cfb64.c + create mode 100644 src/lib/libcrypto/modes/ctr64.c + create mode 100644 src/lib/libcrypto/modes/ofb64.c + +diff --git a/src/lib/libcrypto/modes/cbc64.c b/src/lib/libcrypto/modes/cbc64.c +new file mode 100644 +index 000000000..ec65ac5d3 +--- /dev/null ++++ b/src/lib/libcrypto/modes/cbc64.c +@@ -0,0 +1,202 @@ ++/* $OpenBSD: cbc64.c,v 1.4 2015/02/10 09:46:30 miod Exp $ */ ++/* ==================================================================== ++ * Copyright (c) 2008 The OpenSSL Project. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. All advertising materials mentioning features or use of this ++ * software must display the following acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" ++ * ++ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. For written permission, please contact ++ * openssl-core@openssl.org. ++ * ++ * 5. Products derived from this software may not be called "OpenSSL" ++ * nor may "OpenSSL" appear in their names without prior written ++ * permission of the OpenSSL Project. ++ * ++ * 6. Redistributions of any form whatsoever must retain the following ++ * acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit (http://www.openssl.org/)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY ++ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ==================================================================== ++ * ++ */ ++ ++#include ++#include "modes_lcl.h" ++#include ++ ++#ifndef MODES_DEBUG ++# ifndef NDEBUG ++# define NDEBUG ++# endif ++#endif ++ ++#undef STRICT_ALIGNMENT ++#ifdef __STRICT_ALIGNMENT ++#define STRICT_ALIGNMENT 1 ++#else ++#define STRICT_ALIGNMENT 0 ++#endif ++ ++void CRYPTO_cbc64_encrypt(const unsigned char *in, unsigned char *out, ++ size_t len, const void *key, ++ unsigned char ivec[8], block64_f block) ++{ ++ size_t n; ++ const unsigned char *iv = ivec; ++ ++#if !defined(OPENSSL_SMALL_FOOTPRINT) ++ if (STRICT_ALIGNMENT && ++ ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) { ++ while (len>=8) { ++ for(n=0; n<8; ++n) ++ out[n] = in[n] ^ iv[n]; ++ (*block)(out, out, key); ++ iv = out; ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } else { ++ while (len>=8) { ++ for(n=0; n<8; n+=sizeof(size_t)) ++ *(size_t*)(out+n) = ++ *(size_t*)(in+n) ^ *(size_t*)(iv+n); ++ (*block)(out, out, key); ++ iv = out; ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } ++#endif ++ while (len) { ++ for(n=0; n<8 && n=8) { ++ (*block)(in, out, key); ++ for(n=0; n<8; ++n) ++ out[n] ^= iv[n]; ++ iv = in; ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } else if (8%sizeof(size_t) == 0) { /* always true */ ++ while (len>=8) { ++ size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; ++ ++ (*block)(in, out, key); ++ for(n=0; n<8/sizeof(size_t); n++) ++ out_t[n] ^= iv_t[n]; ++ iv = in; ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } ++ memcpy(ivec,iv,8); ++ } else { ++ if (STRICT_ALIGNMENT && ++ ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) { ++ unsigned char c; ++ while (len>=8) { ++ (*block)(in, tmp.c, key); ++ for(n=0; n<8; ++n) { ++ c = in[n]; ++ out[n] = tmp.c[n] ^ ivec[n]; ++ ivec[n] = c; ++ } ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } else if (8%sizeof(size_t) == 0) { /* always true */ ++ while (len>=8) { ++ size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; ++ const size_t *in_t=(const size_t *)in; ++ ++ (*block)(in, tmp.c, key); ++ for(n=0; n<8/sizeof(size_t); n++) { ++ c = in_t[n]; ++ out_t[n] = tmp.t[n] ^ ivec_t[n]; ++ ivec_t[n] = c; ++ } ++ len -= 8; ++ in += 8; ++ out += 8; ++ } ++ } ++ } ++#endif ++ while (len) { ++ unsigned char c; ++ (*block)(in, tmp.c, key); ++ for(n=0; n<8 && n ++#include "modes_lcl.h" ++#include ++ ++#ifndef MODES_DEBUG ++# ifndef NDEBUG ++# define NDEBUG ++# endif ++#endif ++ ++/* The input and output encrypted as though 64bit cfb mode is being ++ * used. The extra state information to record how much of the ++ * 64bit block we have used is contained in *num; ++ */ ++void CRYPTO_cfb64_encrypt(const unsigned char *in, unsigned char *out, ++ size_t len, const void *key, ++ unsigned char ivec[8], int *num, ++ int enc, block64_f block) ++{ ++ unsigned int n; ++ size_t l = 0; ++ ++ n = *num; ++ ++ if (enc) { ++#if !defined(OPENSSL_SMALL_FOOTPRINT) ++ if (8%sizeof(size_t) == 0) do { /* always true actually */ ++ while (n && len) { ++ *(out++) = ivec[n] ^= *(in++); ++ --len; ++ n = (n+1) % 8; ++ } ++#ifdef __STRICT_ALIGNMENT ++ if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) ++ break; ++#endif ++ while (len>=8) { ++ (*block)(ivec, ivec, key); ++ for (; n<8; n+=sizeof(size_t)) { ++ *(size_t*)(out+n) = ++ *(size_t*)(ivec+n) ^= *(size_t*)(in+n); ++ } ++ len -= 8; ++ out += 8; ++ in += 8; ++ n = 0; ++ } ++ if (len) { ++ (*block)(ivec, ivec, key); ++ while (len--) { ++ out[n] = ivec[n] ^= in[n]; ++ ++n; ++ } ++ } ++ *num = n; ++ return; ++ } while (0); ++ /* the rest would be commonly eliminated by x86* compiler */ ++#endif ++ while (l=8) { ++ (*block)(ivec, ivec, key); ++ for (; n<8; n+=sizeof(size_t)) { ++ size_t t = *(size_t*)(in+n); ++ *(size_t*)(out+n) = *(size_t*)(ivec+n) ^ t; ++ *(size_t*)(ivec+n) = t; ++ } ++ len -= 8; ++ out += 8; ++ in += 8; ++ n = 0; ++ } ++ if (len) { ++ (*block)(ivec, ivec, key); ++ while (len--) { ++ unsigned char c; ++ out[n] = ivec[n] ^ (c = in[n]); ivec[n] = c; ++ ++n; ++ } ++ } ++ *num = n; ++ return; ++ } while (0); ++ /* the rest would be commonly eliminated by x86* compiler */ ++#endif ++ while (l ++#include "modes_lcl.h" ++#include ++ ++#ifndef MODES_DEBUG ++# ifndef NDEBUG ++# define NDEBUG ++# endif ++#endif ++#include ++ ++/* NOTE: the IV/counter CTR mode is big-endian. The code itself ++ * is endian-neutral. */ ++ ++/* increment counter (64-bit int) by 1 */ ++static void ctr64_inc(unsigned char *counter) { ++ u32 n=8; ++ u8 c; ++ ++ do { ++ --n; ++ c = counter[n]; ++ ++c; ++ counter[n] = c; ++ if (c) return; ++ } while (n); ++} ++ ++#if !defined(OPENSSL_SMALL_FOOTPRINT) ++static void ++ctr64_inc_aligned(unsigned char *counter) ++{ ++#if BYTE_ORDER == LITTLE_ENDIAN ++ ctr64_inc(counter); ++#else ++ size_t *data, c, n; ++ data = (size_t *)counter; ++ n = 8 / sizeof(size_t); ++ do { ++ --n; ++ c = data[n]; ++ ++c; ++ data[n] = c; ++ if (c) ++ return; ++ } while (n); ++#endif ++} ++#endif ++ ++/* The input encrypted as though 64bit counter mode is being ++ * used. The extra state information to record how much of the ++ * 64bit block we have used is contained in *num, and the ++ * encrypted counter is kept in ecount_buf. Both *num and ++ * ecount_buf must be initialised with zeros before the first ++ * call to CRYPTO_ctr64_encrypt(). ++ * ++ * This algorithm assumes that the counter is in the x lower bits ++ * of the IV (ivec), and that the application has full control over ++ * overflow and the rest of the IV. This implementation takes NO ++ * responsability for checking that the counter doesn't overflow ++ * into the rest of the IV when incremented. ++ */ ++void CRYPTO_ctr64_encrypt(const unsigned char *in, unsigned char *out, ++ size_t len, const void *key, ++ unsigned char ivec[8], unsigned char ecount_buf[8], ++ unsigned int *num, block64_f block) ++{ ++ unsigned int n; ++ size_t l=0; ++ ++ assert(*num < 8); ++ ++ n = *num; ++ ++#if !defined(OPENSSL_SMALL_FOOTPRINT) ++ if (8%sizeof(size_t) == 0) do { /* always true actually */ ++ while (n && len) { ++ *(out++) = *(in++) ^ ecount_buf[n]; ++ --len; ++ n = (n+1) % 8; ++ } ++ ++#ifdef __STRICT_ALIGNMENT ++ if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) ++ break; ++#endif ++ while (len>=8) { ++ (*block)(ivec, ecount_buf, key); ++ ctr64_inc_aligned(ivec); ++ for (; n<8; n+=sizeof(size_t)) ++ *(size_t *)(out+n) = ++ *(size_t *)(in+n) ^ *(size_t *)(ecount_buf+n); ++ len -= 8; ++ out += 8; ++ in += 8; ++ n = 0; ++ } ++ if (len) { ++ (*block)(ivec, ecount_buf, key); ++ ctr64_inc_aligned(ivec); ++ while (len--) { ++ out[n] = in[n] ^ ecount_buf[n]; ++ ++n; ++ } ++ } ++ *num = n; ++ return; ++ } while(0); ++ /* the rest would be commonly eliminated by x86* compiler */ ++#endif ++ while (l ++#include "modes_lcl.h" ++#include ++ ++#ifndef MODES_DEBUG ++# ifndef NDEBUG ++# define NDEBUG ++# endif ++#endif ++ ++/* The input and output encrypted as though 64bit ofb mode is being ++ * used. The extra state information to record how much of the ++ * 64bit block we have used is contained in *num; ++ */ ++void CRYPTO_ofb64_encrypt(const unsigned char *in, unsigned char *out, ++ size_t len, const void *key, ++ unsigned char ivec[8], int *num, ++ block64_f block) ++{ ++ unsigned int n; ++ size_t l=0; ++ ++ n = *num; ++ ++#if !defined(OPENSSL_SMALL_FOOTPRINT) ++ if (8%sizeof(size_t) == 0) do { /* always true actually */ ++ while (n && len) { ++ *(out++) = *(in++) ^ ivec[n]; ++ --len; ++ n = (n+1) % 8; ++ } ++#ifdef __STRICT_ALIGNMENT ++ if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) ++ break; ++#endif ++ while (len>=8) { ++ (*block)(ivec, ivec, key); ++ for (; n<8; n+=sizeof(size_t)) ++ *(size_t*)(out+n) = ++ *(size_t*)(in+n) ^ *(size_t*)(ivec+n); ++ len -= 8; ++ out += 8; ++ in += 8; ++ n = 0; ++ } ++ if (len) { ++ (*block)(ivec, ivec, key); ++ while (len--) { ++ out[n] = in[n] ^ ivec[n]; ++ ++n; ++ } ++ } ++ *num = n; ++ return; ++ } while(0); ++ /* the rest would be commonly eliminated by x86* compiler */ ++#endif ++ while (l +Date: Mon, 23 Mar 2020 22:53:46 +0300 +Subject: [PATCH 31/87] gost: drop key_len from Gost28147_set_key + +There is no point in specifying key length to Gost28147_set_key, +everybody just passes 256 (or 32 * 8) no matter what. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/e_gost2814789.c | 4 +++- + src/lib/libcrypto/evp/m_gost2814789.c | 3 ++- + src/lib/libcrypto/gost/gost.h | 3 +-- + src/lib/libcrypto/gost/gost2814789.c | 2 +- + src/lib/libcrypto/gost/gost89_keywrap.c | 6 +++--- + src/lib/libcrypto/gost/gost89_params.c | 12 +++--------- + src/lib/libcrypto/gost/gostr341194.c | 8 ++++---- + 7 files changed, 17 insertions(+), 21 deletions(-) + +diff --git a/src/lib/libcrypto/evp/e_gost2814789.c b/src/lib/libcrypto/evp/e_gost2814789.c +index 730de4fed..e3c608f0e 100644 +--- a/src/lib/libcrypto/evp/e_gost2814789.c ++++ b/src/lib/libcrypto/evp/e_gost2814789.c +@@ -93,7 +93,9 @@ gost2814789_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + { + EVP_GOST2814789_CTX *c = ctx->cipher_data; + +- return Gost2814789_set_key(&c->ks, key, ctx->key_len * 8); ++ Gost2814789_set_key(&c->ks, key); ++ ++ return 1; + } + + int +diff --git a/src/lib/libcrypto/evp/m_gost2814789.c b/src/lib/libcrypto/evp/m_gost2814789.c +index 279af872e..779ccf07d 100644 +--- a/src/lib/libcrypto/evp/m_gost2814789.c ++++ b/src/lib/libcrypto/evp/m_gost2814789.c +@@ -82,7 +82,8 @@ gost2814789_md_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2) + + switch (cmd) { + case EVP_MD_CTRL_SET_KEY: +- return Gost2814789_set_key(&gctx->cipher, p2, p1); ++ Gost2814789_set_key(&gctx->cipher, p2); ++ return 1; + case EVP_MD_CTRL_GOST_SET_SBOX: + return Gost2814789_set_sbox(&gctx->cipher, p1); + } +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 092f96fb6..b6e5b51c4 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -73,8 +73,7 @@ typedef struct gost2814789_key_st { + } GOST2814789_KEY; + + int Gost2814789_set_sbox(GOST2814789_KEY *key, int nid); +-int Gost2814789_set_key(GOST2814789_KEY *key, +- const unsigned char *userKey, const int bits); ++void Gost2814789_set_key(GOST2814789_KEY *key, const unsigned char *userKey); + void Gost2814789_ecb_encrypt(const unsigned char *in, unsigned char *out, + GOST2814789_KEY *key, const int enc); + void Gost2814789_cfb64_encrypt(const unsigned char *in, unsigned char *out, +diff --git a/src/lib/libcrypto/gost/gost2814789.c b/src/lib/libcrypto/gost/gost2814789.c +index e285413ed..5016ed004 100644 +--- a/src/lib/libcrypto/gost/gost2814789.c ++++ b/src/lib/libcrypto/gost/gost2814789.c +@@ -461,7 +461,7 @@ GOST2814789IMIT(const unsigned char *d, size_t n, unsigned char *md, int nid, + md = m; + GOST2814789IMIT_Init(&c, nid); + memcpy(c.mac, iv, 8); +- Gost2814789_set_key(&c.cipher, key, 256); ++ Gost2814789_set_key(&c.cipher, key); + GOST2814789IMIT_Update(&c, d, n); + GOST2814789IMIT_Final(md, &c); + explicit_bzero(&c, sizeof(c)); +diff --git a/src/lib/libcrypto/gost/gost89_keywrap.c b/src/lib/libcrypto/gost/gost89_keywrap.c +index a754c4d56..47a11ad0c 100644 +--- a/src/lib/libcrypto/gost/gost89_keywrap.c ++++ b/src/lib/libcrypto/gost/gost89_keywrap.c +@@ -85,7 +85,7 @@ key_diversify_crypto_pro(GOST2814789_KEY *ctx, const unsigned char *inputKey, + p = S; + l2c (s1, p); + l2c (s2, p); +- Gost2814789_set_key(ctx, outputKey, 256); ++ Gost2814789_set_key(ctx, outputKey); + mask = 0; + Gost2814789_cfb64_encrypt(outputKey, outputKey, 32, ctx, S, + &mask, 1); +@@ -102,7 +102,7 @@ gost_key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, + + Gost2814789_set_sbox(&ctx, nid); + key_diversify_crypto_pro(&ctx, keyExchangeKey, ukm, kek_ukm); +- Gost2814789_set_key(&ctx, kek_ukm, 256); ++ Gost2814789_set_key(&ctx, kek_ukm); + memcpy(wrappedKey, ukm, 8); + Gost2814789_encrypt(sessionKey + 0, wrappedKey + 8 + 0, &ctx); + Gost2814789_encrypt(sessionKey + 8, wrappedKey + 8 + 8, &ctx); +@@ -122,7 +122,7 @@ gost_key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, + Gost2814789_set_sbox(&ctx, nid); + /* First 8 bytes of wrapped Key is ukm */ + key_diversify_crypto_pro(&ctx, keyExchangeKey, wrappedKey, kek_ukm); +- Gost2814789_set_key(&ctx, kek_ukm, 256); ++ Gost2814789_set_key(&ctx, kek_ukm); + Gost2814789_decrypt(wrappedKey + 8 + 0, sessionKey + 0, &ctx); + Gost2814789_decrypt(wrappedKey + 8 + 8, sessionKey + 8, &ctx); + Gost2814789_decrypt(wrappedKey + 8 + 16, sessionKey + 16, &ctx); +diff --git a/src/lib/libcrypto/gost/gost89_params.c b/src/lib/libcrypto/gost/gost89_params.c +index 35d8f62fe..526710cb0 100644 +--- a/src/lib/libcrypto/gost/gost89_params.c ++++ b/src/lib/libcrypto/gost/gost89_params.c +@@ -212,21 +212,15 @@ Gost2814789_set_sbox(GOST2814789_KEY *key, int nid) + return 1; + } + +-int +-Gost2814789_set_key(GOST2814789_KEY *key, const unsigned char *userKey, +- const int bits) ++void ++Gost2814789_set_key(GOST2814789_KEY *key, const unsigned char *userKey) + { + int i; + +- if (bits != 256) +- return 0; +- + for (i = 0; i < 8; i++) + c2l(userKey, key->key[i]); + + key->count = 0; +- +- return 1; + } + + void +@@ -239,6 +233,6 @@ Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key) + Gost2814789_decrypt(CryptoProKeyMeshingKey + 16, newkey + 16, key); + Gost2814789_decrypt(CryptoProKeyMeshingKey + 24, newkey + 24, key); + +- Gost2814789_set_key(key, newkey, 256); ++ Gost2814789_set_key(key, newkey); + } + #endif +diff --git a/src/lib/libcrypto/gost/gostr341194.c b/src/lib/libcrypto/gost/gostr341194.c +index 2a462185a..9b750efd6 100644 +--- a/src/lib/libcrypto/gost/gostr341194.c ++++ b/src/lib/libcrypto/gost/gostr341194.c +@@ -139,7 +139,7 @@ hash_step(GOSTR341194_CTX *c, unsigned char *H, const unsigned char *M) + xor_blocks(W, H, M, 32); + swap_bytes(W, Key); + /* Encrypt first 8 bytes of H with first key */ +- Gost2814789_set_key(&c->cipher, Key, 256); ++ Gost2814789_set_key(&c->cipher, Key); + Gost2814789_encrypt(H, S, &c->cipher); + + /* Compute second key */ +@@ -149,7 +149,7 @@ hash_step(GOSTR341194_CTX *c, unsigned char *H, const unsigned char *M) + xor_blocks(W, U, V, 32); + swap_bytes(W, Key); + /* encrypt second 8 bytes of H with second key */ +- Gost2814789_set_key(&c->cipher, Key, 256); ++ Gost2814789_set_key(&c->cipher, Key); + Gost2814789_encrypt(H+8, S+8, &c->cipher); + + /* compute third key */ +@@ -175,7 +175,7 @@ hash_step(GOSTR341194_CTX *c, unsigned char *H, const unsigned char *M) + xor_blocks(W, U, V, 32); + swap_bytes(W, Key); + /* encrypt third 8 bytes of H with third key */ +- Gost2814789_set_key(&c->cipher, Key, 256); ++ Gost2814789_set_key(&c->cipher, Key); + Gost2814789_encrypt(H+16, S+16, &c->cipher); + + /* Compute fourth key */ +@@ -185,7 +185,7 @@ hash_step(GOSTR341194_CTX *c, unsigned char *H, const unsigned char *M) + xor_blocks(W, U, V, 32); + swap_bytes(W, Key); + /* Encrypt last 8 bytes with fourth key */ +- Gost2814789_set_key(&c->cipher, Key, 256); ++ Gost2814789_set_key(&c->cipher, Key); + Gost2814789_encrypt(H+24, S+24, &c->cipher); + + for (i = 0; i < 12; i++) +-- +2.17.1 + diff --git a/0032-gost-use-key_meshing-for-specifying-section-size.patch b/0032-gost-use-key_meshing-for-specifying-section-size.patch new file mode 100644 index 0000000..163f019 --- /dev/null +++ b/0032-gost-use-key_meshing-for-specifying-section-size.patch @@ -0,0 +1,84 @@ +From 62e85837c5b1979ab96800d6f91ff2708d5e984c Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Mon, 23 Mar 2020 23:55:07 +0300 +Subject: [PATCH 32/87] gost: use key_meshing for specifying section size + +In preparation to adding ACPKM support, switch key_meshing to be a +section size rather than just a flag. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost.h | 2 +- + src/lib/libcrypto/gost/gost2814789.c | 8 ++++---- + src/lib/libcrypto/gost/gost89_params.c | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index b6e5b51c4..a9ed5a1c5 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -69,7 +69,7 @@ typedef struct gost2814789_key_st { + unsigned int key[8]; + unsigned int k87[256],k65[256],k43[256],k21[256]; + unsigned int count; +- unsigned key_meshing : 1; ++ unsigned int key_meshing; + } GOST2814789_KEY; + + int Gost2814789_set_sbox(GOST2814789_KEY *key, int nid); +diff --git a/src/lib/libcrypto/gost/gost2814789.c b/src/lib/libcrypto/gost/gost2814789.c +index 5016ed004..e5c7f6a2b 100644 +--- a/src/lib/libcrypto/gost/gost2814789.c ++++ b/src/lib/libcrypto/gost/gost2814789.c +@@ -169,7 +169,7 @@ void + Gost2814789_ecb_encrypt(const unsigned char *in, unsigned char *out, + GOST2814789_KEY *key, const int enc) + { +- if (key->key_meshing && key->count == 1024) { ++ if (key->key_meshing && key->count == key->key_meshing) { + Gost2814789_cryptopro_key_mesh(key); + key->count = 0; + } +@@ -183,7 +183,7 @@ Gost2814789_ecb_encrypt(const unsigned char *in, unsigned char *out, + static inline void + Gost2814789_encrypt_mesh(unsigned char *iv, GOST2814789_KEY *key) + { +- if (key->key_meshing && key->count == 1024) { ++ if (key->key_meshing && key->count == key->key_meshing) { + Gost2814789_cryptopro_key_mesh(key); + Gost2814789_encrypt(iv, iv, key); + key->count = 0; +@@ -196,7 +196,7 @@ static inline void + Gost2814789_mac_mesh(const unsigned char *data, unsigned char *mac, + GOST2814789_KEY *key) + { +- if (key->key_meshing && key->count == 1024) { ++ if (key->key_meshing && key->count == key->key_meshing) { + Gost2814789_cryptopro_key_mesh(key); + key->count = 0; + } +@@ -328,7 +328,7 @@ Gost2814789_cnt_next(unsigned char *ivec, unsigned char *out, + if (key->count == 0) + Gost2814789_encrypt(ivec, ivec, key); + +- if (key->key_meshing && key->count == 1024) { ++ if (key->key_meshing && key->count == key->key_meshing) { + Gost2814789_cryptopro_key_mesh(key); + Gost2814789_encrypt(ivec, ivec, key); + key->count = 0; +diff --git a/src/lib/libcrypto/gost/gost89_params.c b/src/lib/libcrypto/gost/gost89_params.c +index 526710cb0..c454fd7af 100644 +--- a/src/lib/libcrypto/gost/gost89_params.c ++++ b/src/lib/libcrypto/gost/gost89_params.c +@@ -191,7 +191,7 @@ Gost2814789_set_sbox(GOST2814789_KEY *key, int nid) + continue; + + b = gost_cipher_list[i].sblock; +- key->key_meshing = gost_cipher_list[i].key_meshing; ++ key->key_meshing = gost_cipher_list[i].key_meshing ? 1024 : 0; + break; + } + +-- +2.17.1 + diff --git a/0033-gost-add-support-for-magma-cipher.patch b/0033-gost-add-support-for-magma-cipher.patch new file mode 100644 index 0000000..c1914c1 --- /dev/null +++ b/0033-gost-add-support-for-magma-cipher.patch @@ -0,0 +1,468 @@ +From 585ab77911db9b4ed588cd20cc03abec20390501 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 20 Mar 2020 01:11:59 +0300 +Subject: [PATCH 33/87] gost: add support for magma cipher + +GOST R 34.12-2015 defines Magma cipher (a variant of GOST 28147-89 with +fixed S-BOX and endianness change), see draft-dolmatov-magma. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 5 + + src/lib/libcrypto/evp/c_all.c | 5 + + src/lib/libcrypto/evp/e_magma.c | 123 +++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 5 + + src/lib/libcrypto/gost/gost.h | 29 +++++ + src/lib/libcrypto/gost/gost2814789.c | 71 ++++++++++++ + src/lib/libcrypto/gost/gost89_params.c | 24 ++++ + src/lib/libcrypto/gost/gost_locl.h | 11 ++ + src/lib/libcrypto/objects/obj_mac.num | 9 ++ + src/lib/libcrypto/objects/objects.txt | 14 +++ + src/regress/lib/libcrypto/evp/evptests.txt | 18 +++ + 11 files changed, 314 insertions(+) + create mode 100644 src/lib/libcrypto/evp/e_magma.c + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 662eb4dc2..6102af2f8 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1725,6 +1725,11 @@ EVP_idea_cfb + EVP_idea_cfb64 + EVP_idea_ecb + EVP_idea_ofb ++EVP_magma_cbc ++EVP_magma_cfb64 ++EVP_magma_ctr ++EVP_magma_ecb ++EVP_magma_ofb + EVP_md4 + EVP_md5 + EVP_md5_sha1 +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 9e9d39d5a..59342beb7 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -229,6 +229,11 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_gost2814789_ecb()); + EVP_add_cipher(EVP_gost2814789_cfb64()); + EVP_add_cipher(EVP_gost2814789_cnt()); ++ EVP_add_cipher(EVP_magma_ecb()); ++ EVP_add_cipher(EVP_magma_cbc()); ++ EVP_add_cipher(EVP_magma_cfb64()); ++ EVP_add_cipher(EVP_magma_ofb()); ++ EVP_add_cipher(EVP_magma_ctr()); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +new file mode 100644 +index 000000000..712f79278 +--- /dev/null ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -0,0 +1,123 @@ ++/* $OpenBSD: e_magma.c,v 1.4 2017/01/29 17:49:23 beck Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++#include ++ ++#include ++ ++#ifndef OPENSSL_NO_GOST ++#include ++#include ++#include ++#include ++#include "evp_locl.h" ++ ++typedef struct { ++ MAGMA_KEY ks; ++} EVP_MAGMA_CTX; ++ ++static int ++magma_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_MAGMA_CTX *c = ctx->cipher_data; ++ ++ Magma_set_key(&c->ks, key); ++ ++ return 1; ++} ++ ++static int ++magma_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ switch (type) { ++ case EVP_CTRL_PBE_PRF_NID: ++ if (ptr != NULL) { ++ *((int *)ptr) = NID_id_tc26_hmac_gost_3411_12_256; ++ return 1; ++ } else { ++ return 0; ++ } ++ default: ++ return -1; ++ } ++} ++ ++static void ++Magma_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, ++ const MAGMA_KEY *key, unsigned char *ivec, const int enc) ++{ ++ if (enc) ++ CRYPTO_cbc64_encrypt(in, out, len, key, ivec, ++ (block64_f)Magma_encrypt); ++ else ++ CRYPTO_cbc64_decrypt(in, out, len, key, ivec, ++ (block64_f)Magma_decrypt); ++} ++ ++static void ++Magma_cfb64_encrypt(const unsigned char *in, unsigned char *out, size_t length, ++ const MAGMA_KEY *key, unsigned char *ivec, int *num, const int enc) ++{ ++ CRYPTO_cfb64_encrypt(in, out, length, key, ivec, num, enc, ++ (block64_f)Magma_encrypt); ++} ++ ++static void ++Magma_ecb_encrypt(const unsigned char *in, unsigned char *out, const MAGMA_KEY *key, ++ const int enc) ++{ ++ if (enc) ++ Magma_encrypt(in, out, key); ++ else ++ Magma_decrypt(in, out, key); ++} ++ ++static void ++Magma_ofb64_encrypt(const unsigned char *in, unsigned char *out, size_t length, ++ const MAGMA_KEY *key, unsigned char *ivec, int *num) ++{ ++ CRYPTO_ofb64_encrypt(in, out, length, key, ivec, num, ++ (block64_f)Magma_encrypt); ++} ++ ++static int ++magma_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_MAGMA_CTX *key = EVP_C_DATA(EVP_MAGMA_CTX, ctx); ++ ++ CRYPTO_ctr64_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_encrypt); ++ return 1; ++} ++ ++IMPLEMENT_BLOCK_CIPHER(magma, ks, Magma, EVP_MAGMA_CTX, ++ NID_magma, 8, 32, 8, 64, 0, magma_init_key, NULL, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ magma_ctl) ++ ++BLOCK_CIPHER_def1(magma, ctr, ctr, CTR, EVP_MAGMA_CTX, ++ NID_magma, 1, 32, 4, 0, ++ magma_init_key, NULL, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ magma_ctl) ++ ++#endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index f1fe8a1e3..63d4e41a7 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -846,6 +846,11 @@ const EVP_CIPHER *EVP_chacha20(void); + const EVP_CIPHER *EVP_gost2814789_ecb(void); + const EVP_CIPHER *EVP_gost2814789_cfb64(void); + const EVP_CIPHER *EVP_gost2814789_cnt(void); ++const EVP_CIPHER *EVP_magma_ecb(void); ++const EVP_CIPHER *EVP_magma_cbc(void); ++const EVP_CIPHER *EVP_magma_cfb64(void); ++const EVP_CIPHER *EVP_magma_ofb(void); ++const EVP_CIPHER *EVP_magma_ctr(void); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index a9ed5a1c5..d584a55f3 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -83,6 +83,35 @@ void Gost2814789_cnt_encrypt(const unsigned char *in, unsigned char *out, + size_t length, GOST2814789_KEY *key, + unsigned char *ivec, unsigned char *cnt_buf, int *num); + ++#define MAGMA_KEY GOST2814789_KEY ++ ++void Magma_set_key(MAGMA_KEY *key, const unsigned char *userKey); ++ ++void Magma_encrypt(const unsigned char *in, unsigned char *out, ++ const MAGMA_KEY *key); ++void Magma_decrypt(const unsigned char *in, unsigned char *out, ++ const MAGMA_KEY *key); ++ ++#define KUZNYECHIK_KEY_SIZE 32 ++#define KUZNYECHIK_SUBKEYS_SIZE (16 * 10) ++#define KUZNYECHIK_BLOCK_SIZE 16 ++ ++typedef struct kuznyechik_key_st ++{ ++ unsigned char key[KUZNYECHIK_SUBKEYS_SIZE]; ++ unsigned int count; ++ unsigned int key_meshing; ++} KUZNYECHIK_KEY; ++ ++void Kuznyechik_set_key(KUZNYECHIK_KEY *key, const unsigned char *userKey, int enc); ++ ++void Kuznyechik_encrypt(const unsigned char *in, unsigned char *out, ++ const KUZNYECHIK_KEY *key); ++void Kuznyechik_decrypt(const unsigned char *in, unsigned char *out, ++ const KUZNYECHIK_KEY *key); ++void Kuznyechik_acpkm_encrypt(const unsigned char *in, unsigned char *out, ++ KUZNYECHIK_KEY *key); ++ + typedef struct { + ASN1_OCTET_STRING *iv; + ASN1_OBJECT *enc_param_set; +diff --git a/src/lib/libcrypto/gost/gost2814789.c b/src/lib/libcrypto/gost/gost2814789.c +index e5c7f6a2b..c9deee695 100644 +--- a/src/lib/libcrypto/gost/gost2814789.c ++++ b/src/lib/libcrypto/gost/gost2814789.c +@@ -1,8 +1,11 @@ + /* $OpenBSD: gost2814789.c,v 1.5 2015/09/10 15:56:25 jsing Exp $ */ + /* ++ * Copyright (c) 2020 Dmitry Baryshkov + * Copyright (c) 2014 Dmitry Eremin-Solenikov + * Copyright (c) 2005-2006 Cryptocom LTD + * ++ * Magma support sponsored by ROSA Linux ++ * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: +@@ -134,6 +137,74 @@ Gost2814789_decrypt(const unsigned char *in, unsigned char *out, + l2c(n1, out); + } + ++void ++Magma_encrypt(const unsigned char *in, unsigned char *out, ++ const MAGMA_KEY *key) ++{ ++ unsigned int n1, n2; /* As named in the GOST */ ++ ++ be_c2l(in, n2); ++ be_c2l(in, n1); ++ ++ /* Instead of swapping halves, swap names each round */ ++ n2 ^= f(key, n1 + key->key[0]); n1 ^= f(key, n2 + key->key[1]); ++ n2 ^= f(key, n1 + key->key[2]); n1 ^= f(key, n2 + key->key[3]); ++ n2 ^= f(key, n1 + key->key[4]); n1 ^= f(key, n2 + key->key[5]); ++ n2 ^= f(key, n1 + key->key[6]); n1 ^= f(key, n2 + key->key[7]); ++ ++ n2 ^= f(key, n1 + key->key[0]); n1 ^= f(key, n2 + key->key[1]); ++ n2 ^= f(key, n1 + key->key[2]); n1 ^= f(key, n2 + key->key[3]); ++ n2 ^= f(key, n1 + key->key[4]); n1 ^= f(key, n2 + key->key[5]); ++ n2 ^= f(key, n1 + key->key[6]); n1 ^= f(key, n2 + key->key[7]); ++ ++ n2 ^= f(key, n1 + key->key[0]); n1 ^= f(key, n2 + key->key[1]); ++ n2 ^= f(key, n1 + key->key[2]); n1 ^= f(key, n2 + key->key[3]); ++ n2 ^= f(key, n1 + key->key[4]); n1 ^= f(key, n2 + key->key[5]); ++ n2 ^= f(key, n1 + key->key[6]); n1 ^= f(key, n2 + key->key[7]); ++ ++ n2 ^= f(key, n1 + key->key[7]); n1 ^= f(key, n2 + key->key[6]); ++ n2 ^= f(key, n1 + key->key[5]); n1 ^= f(key, n2 + key->key[4]); ++ n2 ^= f(key, n1 + key->key[3]); n1 ^= f(key, n2 + key->key[2]); ++ n2 ^= f(key, n1 + key->key[1]); n1 ^= f(key, n2 + key->key[0]); ++ ++ be_l2c(n1, out); ++ be_l2c(n2, out); ++} ++ ++void ++Magma_decrypt(const unsigned char *in, unsigned char *out, ++ const MAGMA_KEY *key) ++{ ++ unsigned int n1, n2; /* As named in the GOST */ ++ ++ be_c2l(in, n2); ++ be_c2l(in, n1); ++ ++ /* Instead of swapping halves, swap names each round */ ++ n2 ^= f(key, n1 + key->key[0]); n1 ^= f(key, n2 + key->key[1]); ++ n2 ^= f(key, n1 + key->key[2]); n1 ^= f(key, n2 + key->key[3]); ++ n2 ^= f(key, n1 + key->key[4]); n1 ^= f(key, n2 + key->key[5]); ++ n2 ^= f(key, n1 + key->key[6]); n1 ^= f(key, n2 + key->key[7]); ++ ++ n2 ^= f(key, n1 + key->key[7]); n1 ^= f(key, n2 + key->key[6]); ++ n2 ^= f(key, n1 + key->key[5]); n1 ^= f(key, n2 + key->key[4]); ++ n2 ^= f(key, n1 + key->key[3]); n1 ^= f(key, n2 + key->key[2]); ++ n2 ^= f(key, n1 + key->key[1]); n1 ^= f(key, n2 + key->key[0]); ++ ++ n2 ^= f(key, n1 + key->key[7]); n1 ^= f(key, n2 + key->key[6]); ++ n2 ^= f(key, n1 + key->key[5]); n1 ^= f(key, n2 + key->key[4]); ++ n2 ^= f(key, n1 + key->key[3]); n1 ^= f(key, n2 + key->key[2]); ++ n2 ^= f(key, n1 + key->key[1]); n1 ^= f(key, n2 + key->key[0]); ++ ++ n2 ^= f(key, n1 + key->key[7]); n1 ^= f(key, n2 + key->key[6]); ++ n2 ^= f(key, n1 + key->key[5]); n1 ^= f(key, n2 + key->key[4]); ++ n2 ^= f(key, n1 + key->key[3]); n1 ^= f(key, n2 + key->key[2]); ++ n2 ^= f(key, n1 + key->key[1]); n1 ^= f(key, n2 + key->key[0]); ++ ++ be_l2c(n1, out); ++ be_l2c(n2, out); ++} ++ + static void + Gost2814789_mac(const unsigned char *in, unsigned char *mac, + GOST2814789_KEY *key) +diff --git a/src/lib/libcrypto/gost/gost89_params.c b/src/lib/libcrypto/gost/gost89_params.c +index c454fd7af..7365f7a43 100644 +--- a/src/lib/libcrypto/gost/gost89_params.c ++++ b/src/lib/libcrypto/gost/gost89_params.c +@@ -223,6 +223,30 @@ Gost2814789_set_key(GOST2814789_KEY *key, const unsigned char *userKey) + key->count = 0; + } + ++void ++Magma_set_key_int(MAGMA_KEY *key, const unsigned char *userKey) ++{ ++ int i; ++ ++ for (i = 0; i < 8; i++) ++ be_c2l(userKey, key->key[i]); ++ ++ key->count = 0; ++} ++ ++void ++Magma_set_key(MAGMA_KEY *key, const unsigned char *userKey) ++{ ++ unsigned int km = key->key_meshing; ++ ++ /* Preserve key meshing setting around setting sbox */ ++ Gost2814789_set_sbox(key, NID_id_tc26_gost_28147_param_Z); ++ ++ key->key_meshing = km; ++ ++ Magma_set_key_int(key, userKey); ++} ++ + void + Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key) + { +diff --git a/src/lib/libcrypto/gost/gost_locl.h b/src/lib/libcrypto/gost/gost_locl.h +index b2e2c1362..302a19c5c 100644 +--- a/src/lib/libcrypto/gost/gost_locl.h ++++ b/src/lib/libcrypto/gost/gost_locl.h +@@ -83,12 +83,23 @@ typedef struct { + *((c)++)=(unsigned char)(((l)>>24)&0xff)) + #endif + ++#define be_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ ++ l|=(((unsigned long)(*((c)++)))<<16), \ ++ l|=(((unsigned long)(*((c)++)))<< 8), \ ++ l|=(((unsigned long)(*((c)++))) )) ++#define be_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ ++ *((c)++)=(unsigned char)(((l) )&0xff)) ++ + extern void Gost2814789_encrypt(const unsigned char *in, unsigned char *out, + const GOST2814789_KEY *key); + extern void Gost2814789_decrypt(const unsigned char *in, unsigned char *out, + const GOST2814789_KEY *key); + extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key); + ++void Magma_set_key_int(MAGMA_KEY *key, const unsigned char *userKey); ++ + /* GOST 28147-89 key wrapping */ + extern int gost_key_unwrap_crypto_pro(int nid, + const unsigned char *keyExchangeKey, const unsigned char *wrappedKey, +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index ba75ec246..fa5914ada 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -998,3 +998,12 @@ id_tc26_gost_3410_12_512_paramSetTest 997 + id_tc26_gost_3410_12_512_paramSetC 998 + id_tc26_hmac_gost_3411_12_256 999 + id_tc26_hmac_gost_3411_12_512 1000 ++magma_ecb 1001 ++magma_cbc 1002 ++magma_cfb64 1003 ++magma_ofb64 1004 ++magma_ctr 1005 ++id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1006 ++id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1007 ++id_tc26_cipher_gostr3412_2015_magma_mgm 1008 ++magma_mac 1009 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 8e533530f..2dbd8575d 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1388,6 +1388,20 @@ tc26 1 1 2 : id-tc26-gost3410-2012-512 : GOST R 34.10-2012 (512 bit) + tc26 1 3 2 : id-tc26-signwithdigest-gost3410-2012-256 : GOST R 34.11-2012 with GOST R 34.10-2012 (256 bit) + tc26 1 3 3 : id-tc26-signwithdigest-gost3410-2012-512 : GOST R 34.11-2012 with GOST R 34.10-2012 (512 bit) + ++#GOST R 34.12-2014, cipher Magma ++ : magma-ecb ++ : magma-cbc ++ : magma-cfb64 ++ : magma-ofb64 ++ : magma-ctr ++!Cname id-tc26-cipher-gostr3412-2015-magma-ctracpkm ++tc26 1 5 1 1 : magma-ctr-acpkm ++!Cname id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac ++tc26 1 5 1 2 : magma-ctr-acpkm-omac ++!Cname id-tc26-cipher-gostr3412-2015-magma-mgm ++tc26 1 5 1 3 : magma-mgm ++ : magma-mac ++ + # Curves from draft-ietf-curdle-pkix-02 + 1 3 101 110 : X25519 + 1 3 101 111 : X448 +diff --git a/src/regress/lib/libcrypto/evp/evptests.txt b/src/regress/lib/libcrypto/evp/evptests.txt +index 2a5806526..8b4739276 100644 +--- a/src/regress/lib/libcrypto/evp/evptests.txt ++++ b/src/regress/lib/libcrypto/evp/evptests.txt +@@ -382,3 +382,21 @@ ChaCha:5555555555555555555555555555555555555555555555555555555555555555:00000000 + ChaCha:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:0000000000000000aaaaaaaaaaaaaaaa0000000000000000:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:9aa2a9f656efde5aa7591c5fed4b35aea2895dec7cb4543b9e9f21f5e7bcbcf3c43c748a970888f8248393a09d43e0b7e164bc4d0b0fb240a2d72115c4808906:1 + ChaCha:00112233445566778899aabbccddeeffffeeddccbbaa99887766554433221100:00000000000000000f1e2d3c4b5a69780000000000000000:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:9fadf409c00811d00431d67efbd88fba59218d5d6708b1d685863fabbb0e961eea480fd6fb532bfd494b2151015057423ab60a63fe4f55f7a212e2167ccab931:1 + ChaCha:c46ec1b18ce8a878725a37e780dfb7351f68ed2e194c79fbc6aebee1a667975d:00000000000000001ada31d5cf6882210000000000000000:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:f63a89b75c2271f9368816542ba52f06ed49241792302b00b5e8f80ae9a473afc25b218f519af0fdd406362e8d69de7f54c604a6e00f353f110f771bdca8ab92:1 ++ ++#GOST R 34.12-2015 test vectors ++magma-ecb:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff::fedcba9876543210:4ee901e5c2d8ca3d:1 ++magma-ecb:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff::fedcba9876543210:4ee901e5c2d8ca3d:0 ++ ++#GOST R 34.13-2015 test vectors ++magma-ecb:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff::92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:2b073f0494f372a0de70e715d3556e4811d8d9e9eacfbc1e7c68260996c67efb:1 ++magma-ecb:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff::92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:2b073f0494f372a0de70e715d3556e4811d8d9e9eacfbc1e7c68260996c67efb:0 ++magma-ctr:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:12345678:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:4e98110c97b7b93c3e250d93d6e85d69136d868807b2dbef568eb680ab52a12d:1 ++magma-ctr:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:12345678:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:4e98110c97b7b93c3e250d93d6e85d69136d868807b2dbef568eb680ab52a12d:0 ++ ++# Manually ++magma-cbc:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:96d1b05eea683919f396b78c1d47bb616183e2cca976a4babe9ce87d6fa73cf2:1 ++magma-cbc:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:96d1b05eea683919f396b78c1d47bb616183e2cca976a4babe9ce87d6fa73cf2:0 ++magma-ofb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c8331340c48dcbead127193f8746455692c527d38b4e3feedd2:1 ++magma-ofb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c8331340c48dcbead127193f8746455692c527d38b4e3feedd2:0 ++magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:1 ++magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:0 +-- +2.17.1 + diff --git a/0034-gost-add-support-for-kuznyechik-cipher.patch b/0034-gost-add-support-for-kuznyechik-cipher.patch new file mode 100644 index 0000000..155a1d6 --- /dev/null +++ b/0034-gost-add-support-for-kuznyechik-cipher.patch @@ -0,0 +1,13047 @@ +From 29ad9f27d2ebe258acaea00a7009e4f53e1cd9e3 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 20 Mar 2020 01:11:59 +0300 +Subject: [PATCH 34/87] gost: add support for kuznyechik cipher + +GOST R 34.12-2015 defines new Kuznyechik 128-bit block cipher. See RFC +7801 for English translation of the standard. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 5 + + src/lib/libcrypto/evp/c_all.c | 5 + + src/lib/libcrypto/evp/e_kuznyechik.c | 129 + + src/lib/libcrypto/evp/evp.h | 5 + + src/lib/libcrypto/gost/gost.h | 2 - + src/lib/libcrypto/gost/kuznyechik.c | 237 + + src/lib/libcrypto/gost/kuztable.h | 12504 +++++++++++++++++++ + src/lib/libcrypto/objects/obj_mac.num | 9 + + src/lib/libcrypto/objects/objects.txt | 14 + + src/regress/lib/libcrypto/evp/evptests.txt | 18 + + 10 files changed, 12926 insertions(+), 2 deletions(-) + create mode 100644 src/lib/libcrypto/evp/e_kuznyechik.c + create mode 100644 src/lib/libcrypto/gost/kuznyechik.c + create mode 100644 src/lib/libcrypto/gost/kuztable.h + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 6102af2f8..d1d317fbd 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1725,6 +1725,11 @@ EVP_idea_cfb + EVP_idea_cfb64 + EVP_idea_ecb + EVP_idea_ofb ++EVP_kuznyechik_cbc ++EVP_kuznyechik_cfb64 ++EVP_kuznyechik_ctr ++EVP_kuznyechik_ecb ++EVP_kuznyechik_ofb + EVP_magma_cbc + EVP_magma_cfb64 + EVP_magma_ctr +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 59342beb7..2bb9a9a24 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -234,6 +234,11 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_magma_cfb64()); + EVP_add_cipher(EVP_magma_ofb()); + EVP_add_cipher(EVP_magma_ctr()); ++ EVP_add_cipher(EVP_kuznyechik_ecb()); ++ EVP_add_cipher(EVP_kuznyechik_cbc()); ++ EVP_add_cipher(EVP_kuznyechik_cfb128()); ++ EVP_add_cipher(EVP_kuznyechik_ofb()); ++ EVP_add_cipher(EVP_kuznyechik_ctr()); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +new file mode 100644 +index 000000000..7ac5ed7a6 +--- /dev/null ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -0,0 +1,129 @@ ++/* $OpenBSD: e_kuznyechik.c,v 1.4 2017/01/29 17:49:23 beck Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++#include ++ ++#include ++ ++#ifndef OPENSSL_NO_GOST ++#include ++#include ++#include ++#include ++#include "evp_locl.h" ++ ++typedef struct { ++ KUZNYECHIK_KEY ks; ++} EVP_KUZNYECHIK_CTX; ++ ++static int ++kuznyechik_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_KUZNYECHIK_CTX *c = ctx->cipher_data; ++ int mode = ctx->cipher->flags & EVP_CIPH_MODE; ++ ++ /* Enforce setting encryption key for all modes which use encdrypt ++ * operation */ ++ if (mode != EVP_CIPH_ECB_MODE && mode != EVP_CIPH_CBC_MODE) ++ enc = 1; ++ ++ Kuznyechik_set_key(&c->ks, key, enc); ++ ++ return 1; ++} ++ ++static int ++kuznyechik_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ switch (type) { ++ case EVP_CTRL_PBE_PRF_NID: ++ if (ptr != NULL) { ++ *((int *)ptr) = NID_id_tc26_hmac_gost_3411_12_512; ++ return 1; ++ } else { ++ return 0; ++ } ++ default: ++ return -1; ++ } ++} ++ ++static void ++Kuznyechik_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, ++ const KUZNYECHIK_KEY *key, unsigned char *ivec, const int enc) ++{ ++ if (enc) ++ CRYPTO_cbc128_encrypt(in, out, len, key, ivec, ++ (block128_f)Kuznyechik_encrypt); ++ else ++ CRYPTO_cbc128_decrypt(in, out, len, key, ivec, ++ (block128_f)Kuznyechik_decrypt); ++} ++ ++static void ++Kuznyechik_cfb128_encrypt(const unsigned char *in, unsigned char *out, size_t length, ++ const KUZNYECHIK_KEY *key, unsigned char *ivec, int *num, const int enc) ++{ ++ CRYPTO_cfb128_encrypt(in, out, length, key, ivec, num, enc, ++ (block128_f)Kuznyechik_encrypt); ++} ++ ++static void ++Kuznyechik_ecb_encrypt(const unsigned char *in, unsigned char *out, const KUZNYECHIK_KEY *key, ++ const int enc) ++{ ++ if (enc) ++ Kuznyechik_encrypt(in, out, key); ++ else ++ Kuznyechik_decrypt(in, out, key); ++} ++ ++static void ++Kuznyechik_ofb128_encrypt(const unsigned char *in, unsigned char *out, size_t length, ++ const KUZNYECHIK_KEY *key, unsigned char *ivec, int *num) ++{ ++ CRYPTO_ofb128_encrypt(in, out, length, key, ivec, num, ++ (block128_f)Kuznyechik_encrypt); ++} ++ ++static int ++kuznyechik_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_KUZNYECHIK_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTX, ctx); ++ ++ CRYPTO_ctr128_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_encrypt); ++ return 1; ++} ++ ++IMPLEMENT_BLOCK_CIPHER(kuznyechik, ks, Kuznyechik, EVP_KUZNYECHIK_CTX, ++ NID_kuznyechik, 16, 32, 16, 128, 0, kuznyechik_init_key, NULL, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ kuznyechik_ctl) ++ ++BLOCK_CIPHER_def1(kuznyechik, ctr, ctr, CTR, EVP_KUZNYECHIK_CTX, ++ NID_kuznyechik, 1, 32, 8, 0, ++ kuznyechik_init_key, NULL, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ kuznyechik_ctl) ++ ++#endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 63d4e41a7..26e025d09 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -851,6 +851,11 @@ const EVP_CIPHER *EVP_magma_cbc(void); + const EVP_CIPHER *EVP_magma_cfb64(void); + const EVP_CIPHER *EVP_magma_ofb(void); + const EVP_CIPHER *EVP_magma_ctr(void); ++const EVP_CIPHER *EVP_kuznyechik_ecb(void); ++const EVP_CIPHER *EVP_kuznyechik_cbc(void); ++const EVP_CIPHER *EVP_kuznyechik_cfb128(void); ++const EVP_CIPHER *EVP_kuznyechik_ofb(void); ++const EVP_CIPHER *EVP_kuznyechik_ctr(void); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index d584a55f3..4fef765ce 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -109,8 +109,6 @@ void Kuznyechik_encrypt(const unsigned char *in, unsigned char *out, + const KUZNYECHIK_KEY *key); + void Kuznyechik_decrypt(const unsigned char *in, unsigned char *out, + const KUZNYECHIK_KEY *key); +-void Kuznyechik_acpkm_encrypt(const unsigned char *in, unsigned char *out, +- KUZNYECHIK_KEY *key); + + typedef struct { + ASN1_OCTET_STRING *iv; +diff --git a/src/lib/libcrypto/gost/kuznyechik.c b/src/lib/libcrypto/gost/kuznyechik.c +new file mode 100644 +index 000000000..862b099fd +--- /dev/null ++++ b/src/lib/libcrypto/gost/kuznyechik.c +@@ -0,0 +1,237 @@ ++/* $OpenBSD: kuznyechik.c,v 1.4 2017/01/29 17:49:23 beck Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++ ++#include ++ ++#ifndef OPENSSL_NO_GOST ++#include ++ ++#include "gost_locl.h" ++#include "kuztable.h" ++ ++static void ++memxor(unsigned char *a, const unsigned char *b) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < KUZNYECHIK_BLOCK_SIZE; i++) ++ a[i] ^= b[i]; ++} ++ ++static void ++memxor3(unsigned char *a, const unsigned char *b, const unsigned char *c) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < KUZNYECHIK_BLOCK_SIZE; i++) ++ a[i] = b[i] ^ c[i]; ++} ++ ++static void S(unsigned char *a, const unsigned char *b) ++{ ++ a[0] = pi[b[0]]; ++ a[1] = pi[b[1]]; ++ a[2] = pi[b[2]]; ++ a[3] = pi[b[3]]; ++ a[4] = pi[b[4]]; ++ a[5] = pi[b[5]]; ++ a[6] = pi[b[6]]; ++ a[7] = pi[b[7]]; ++ a[8] = pi[b[8]]; ++ a[9] = pi[b[9]]; ++ a[10] = pi[b[10]]; ++ a[11] = pi[b[11]]; ++ a[12] = pi[b[12]]; ++ a[13] = pi[b[13]]; ++ a[14] = pi[b[14]]; ++ a[15] = pi[b[15]]; ++} ++ ++static void Sinv(unsigned char *a, const unsigned char *b) ++{ ++ a[0] = pi_inv[b[0]]; ++ a[1] = pi_inv[b[1]]; ++ a[2] = pi_inv[b[2]]; ++ a[3] = pi_inv[b[3]]; ++ a[4] = pi_inv[b[4]]; ++ a[5] = pi_inv[b[5]]; ++ a[6] = pi_inv[b[6]]; ++ a[7] = pi_inv[b[7]]; ++ a[8] = pi_inv[b[8]]; ++ a[9] = pi_inv[b[9]]; ++ a[10] = pi_inv[b[10]]; ++ a[11] = pi_inv[b[11]]; ++ a[12] = pi_inv[b[12]]; ++ a[13] = pi_inv[b[13]]; ++ a[14] = pi_inv[b[14]]; ++ a[15] = pi_inv[b[15]]; ++} ++ ++static void Linv(unsigned char *b) ++{ ++ unsigned char a[KUZNYECHIK_BLOCK_SIZE]; ++ ++ memxor3(a, &kuz_table_inv[0][b[0] * 16], ++ &kuz_table_inv[1][b[1] * 16]); ++ memxor(a, &kuz_table_inv[2][b[2] * 16]); ++ memxor(a, &kuz_table_inv[3][b[3] * 16]); ++ memxor(a, &kuz_table_inv[4][b[4] * 16]); ++ memxor(a, &kuz_table_inv[5][b[5] * 16]); ++ memxor(a, &kuz_table_inv[6][b[6] * 16]); ++ memxor(a, &kuz_table_inv[7][b[7] * 16]); ++ memxor(a, &kuz_table_inv[8][b[8] * 16]); ++ memxor(a, &kuz_table_inv[9][b[9] * 16]); ++ memxor(a, &kuz_table_inv[10][b[10] * 16]); ++ memxor(a, &kuz_table_inv[11][b[11] * 16]); ++ memxor(a, &kuz_table_inv[12][b[12] * 16]); ++ memxor(a, &kuz_table_inv[13][b[13] * 16]); ++ memxor(a, &kuz_table_inv[14][b[14] * 16]); ++ memxor(a, &kuz_table_inv[15][b[15] * 16]); ++ memcpy(b, a, KUZNYECHIK_BLOCK_SIZE); ++} ++ ++static void LSX(unsigned char *a, const unsigned char *b, const unsigned char *c) ++{ ++ unsigned char t[16]; ++ ++ memxor3(t, &kuz_table[0][(b[0] ^ c[0]) * 16], ++ &kuz_table[1][(b[1] ^ c[1]) * 16]); ++ memxor(t, &kuz_table[2][(b[2] ^ c[2]) * 16]); ++ memxor(t, &kuz_table[3][(b[3] ^ c[3]) * 16]); ++ memxor(t, &kuz_table[4][(b[4] ^ c[4]) * 16]); ++ memxor(t, &kuz_table[5][(b[5] ^ c[5]) * 16]); ++ memxor(t, &kuz_table[6][(b[6] ^ c[6]) * 16]); ++ memxor(t, &kuz_table[7][(b[7] ^ c[7]) * 16]); ++ memxor(t, &kuz_table[8][(b[8] ^ c[8]) * 16]); ++ memxor(t, &kuz_table[9][(b[9] ^ c[9]) * 16]); ++ memxor(t, &kuz_table[10][(b[10] ^ c[10]) * 16]); ++ memxor(t, &kuz_table[11][(b[11] ^ c[11]) * 16]); ++ memxor(t, &kuz_table[12][(b[12] ^ c[12]) * 16]); ++ memxor(t, &kuz_table[13][(b[13] ^ c[13]) * 16]); ++ memxor(t, &kuz_table[14][(b[14] ^ c[14]) * 16]); ++ memxor3(a, t, &kuz_table[15][(b[15] ^ c[15]) * 16]); ++} ++ ++static void XLiSi(unsigned char *a, const unsigned char *b, const unsigned char *c) ++{ ++ unsigned char t[16]; ++ ++ memxor3(t, &kuz_table_inv_LS[0][b[0] * 16], ++ &kuz_table_inv_LS[1][b[1] * 16]); ++ memxor(t, &kuz_table_inv_LS[2][b[2] * 16]); ++ memxor(t, &kuz_table_inv_LS[3][b[3] * 16]); ++ memxor(t, &kuz_table_inv_LS[4][b[4] * 16]); ++ memxor(t, &kuz_table_inv_LS[5][b[5] * 16]); ++ memxor(t, &kuz_table_inv_LS[6][b[6] * 16]); ++ memxor(t, &kuz_table_inv_LS[7][b[7] * 16]); ++ memxor(t, &kuz_table_inv_LS[8][b[8] * 16]); ++ memxor(t, &kuz_table_inv_LS[9][b[9] * 16]); ++ memxor(t, &kuz_table_inv_LS[10][b[10] * 16]); ++ memxor(t, &kuz_table_inv_LS[11][b[11] * 16]); ++ memxor(t, &kuz_table_inv_LS[12][b[12] * 16]); ++ memxor(t, &kuz_table_inv_LS[13][b[13] * 16]); ++ memxor(t, &kuz_table_inv_LS[14][b[14] * 16]); ++ memxor(t, &kuz_table_inv_LS[15][b[15] * 16]); ++ memxor3(a, t, c); ++} ++ ++static void subkey(unsigned char *out, const unsigned char *key, unsigned i) ++{ ++ unsigned char test[16]; ++ ++ LSX(test, key+0, kuz_key_table[i + 0]); ++ memxor3(out+16, test, key + 16); ++ LSX(test, out+16, kuz_key_table[i + 1]); ++ memxor3(out+0, test, key + 0); ++ LSX(test, out+0, kuz_key_table[i + 2]); ++ memxor(out+16, test); ++ LSX(test, out+16, kuz_key_table[i + 3]); ++ memxor(out+0, test); ++ LSX(test, out+0, kuz_key_table[i + 4]); ++ memxor(out+16, test); ++ LSX(test, out+16, kuz_key_table[i + 5]); ++ memxor(out+0, test); ++ LSX(test, out+0, kuz_key_table[i + 6]); ++ memxor(out+16, test); ++ LSX(test, out+16, kuz_key_table[i + 7]); ++ memxor(out+0, test); ++} ++ ++static void ++Kuznyechik_set_enc_key(KUZNYECHIK_KEY *ctx, const unsigned char *key) ++{ ++ memcpy(ctx->key, key, 32); ++ subkey(ctx->key + 32, ctx->key, 0); ++ subkey(ctx->key + 64, ctx->key + 32, 8); ++ subkey(ctx->key + 96, ctx->key + 64, 16); ++ subkey(ctx->key + 128, ctx->key + 96, 24); ++} ++ ++void ++Kuznyechik_set_key(KUZNYECHIK_KEY *ctx, const unsigned char *key, int enc) ++{ ++ unsigned int i; ++ ++ Kuznyechik_set_enc_key(ctx, key); ++ ++ if (!enc) ++ for (i = 1; i < 10; i++) ++ Linv(ctx->key + 16 * i); ++} ++ ++void ++Kuznyechik_encrypt(const unsigned char *src, unsigned char *dst, ++ const KUZNYECHIK_KEY *ctx) ++{ ++ unsigned char temp[KUZNYECHIK_BLOCK_SIZE]; ++ ++ LSX(temp, ctx->key + 16 * 0, src); ++ LSX(temp, ctx->key + 16 * 1, temp); ++ LSX(temp, ctx->key + 16 * 2, temp); ++ LSX(temp, ctx->key + 16 * 3, temp); ++ LSX(temp, ctx->key + 16 * 4, temp); ++ LSX(temp, ctx->key + 16 * 5, temp); ++ LSX(temp, ctx->key + 16 * 6, temp); ++ LSX(temp, ctx->key + 16 * 7, temp); ++ LSX(temp, ctx->key + 16 * 8, temp); ++ memxor3(dst, ctx->key + 16 * 9, temp); ++} ++ ++void ++Kuznyechik_decrypt(const unsigned char *src, unsigned char *dst, ++ const KUZNYECHIK_KEY *ctx) ++{ ++ unsigned char temp[KUZNYECHIK_BLOCK_SIZE]; ++ ++ S(temp, src); ++ XLiSi(temp, temp, ctx->key + 16 * 9); ++ XLiSi(temp, temp, ctx->key + 16 * 8); ++ XLiSi(temp, temp, ctx->key + 16 * 7); ++ XLiSi(temp, temp, ctx->key + 16 * 6); ++ XLiSi(temp, temp, ctx->key + 16 * 5); ++ XLiSi(temp, temp, ctx->key + 16 * 4); ++ XLiSi(temp, temp, ctx->key + 16 * 3); ++ XLiSi(temp, temp, ctx->key + 16 * 2); ++ XLiSi(temp, temp, ctx->key + 16 * 1); ++ Sinv(dst, temp); ++ memxor(dst, ctx->key + 16 * 0); ++} ++#endif +diff --git a/src/lib/libcrypto/gost/kuztable.h b/src/lib/libcrypto/gost/kuztable.h +new file mode 100644 +index 000000000..c3c6ce038 +--- /dev/null ++++ b/src/lib/libcrypto/gost/kuztable.h +@@ -0,0 +1,12504 @@ ++/* GOST R 34.12-2015 Kuznyechik tables. */ ++static const unsigned char pi[256] = ++{ ++ 0xfc, 0xee, 0xdd, 0x11, 0xcf, 0x6e, 0x31, 0x16, ++ 0xfb, 0xc4, 0xfa, 0xda, 0x23, 0xc5, 0x04, 0x4d, ++ 0xe9, 0x77, 0xf0, 0xdb, 0x93, 0x2e, 0x99, 0xba, ++ 0x17, 0x36, 0xf1, 0xbb, 0x14, 0xcd, 0x5f, 0xc1, ++ 0xf9, 0x18, 0x65, 0x5a, 0xe2, 0x5c, 0xef, 0x21, ++ 0x81, 0x1c, 0x3c, 0x42, 0x8b, 0x01, 0x8e, 0x4f, ++ 0x05, 0x84, 0x02, 0xae, 0xe3, 0x6a, 0x8f, 0xa0, ++ 0x06, 0x0b, 0xed, 0x98, 0x7f, 0xd4, 0xd3, 0x1f, ++ 0xeb, 0x34, 0x2c, 0x51, 0xea, 0xc8, 0x48, 0xab, ++ 0xf2, 0x2a, 0x68, 0xa2, 0xfd, 0x3a, 0xce, 0xcc, ++ 0xb5, 0x70, 0x0e, 0x56, 0x08, 0x0c, 0x76, 0x12, ++ 0xbf, 0x72, 0x13, 0x47, 0x9c, 0xb7, 0x5d, 0x87, ++ 0x15, 0xa1, 0x96, 0x29, 0x10, 0x7b, 0x9a, 0xc7, ++ 0xf3, 0x91, 0x78, 0x6f, 0x9d, 0x9e, 0xb2, 0xb1, ++ 0x32, 0x75, 0x19, 0x3d, 0xff, 0x35, 0x8a, 0x7e, ++ 0x6d, 0x54, 0xc6, 0x80, 0xc3, 0xbd, 0x0d, 0x57, ++ 0xdf, 0xf5, 0x24, 0xa9, 0x3e, 0xa8, 0x43, 0xc9, ++ 0xd7, 0x79, 0xd6, 0xf6, 0x7c, 0x22, 0xb9, 0x03, ++ 0xe0, 0x0f, 0xec, 0xde, 0x7a, 0x94, 0xb0, 0xbc, ++ 0xdc, 0xe8, 0x28, 0x50, 0x4e, 0x33, 0x0a, 0x4a, ++ 0xa7, 0x97, 0x60, 0x73, 0x1e, 0x00, 0x62, 0x44, ++ 0x1a, 0xb8, 0x38, 0x82, 0x64, 0x9f, 0x26, 0x41, ++ 0xad, 0x45, 0x46, 0x92, 0x27, 0x5e, 0x55, 0x2f, ++ 0x8c, 0xa3, 0xa5, 0x7d, 0x69, 0xd5, 0x95, 0x3b, ++ 0x07, 0x58, 0xb3, 0x40, 0x86, 0xac, 0x1d, 0xf7, ++ 0x30, 0x37, 0x6b, 0xe4, 0x88, 0xd9, 0xe7, 0x89, ++ 0xe1, 0x1b, 0x83, 0x49, 0x4c, 0x3f, 0xf8, 0xfe, ++ 0x8d, 0x53, 0xaa, 0x90, 0xca, 0xd8, 0x85, 0x61, ++ 0x20, 0x71, 0x67, 0xa4, 0x2d, 0x2b, 0x09, 0x5b, ++ 0xcb, 0x9b, 0x25, 0xd0, 0xbe, 0xe5, 0x6c, 0x52, ++ 0x59, 0xa6, 0x74, 0xd2, 0xe6, 0xf4, 0xb4, 0xc0, ++ 0xd1, 0x66, 0xaf, 0xc2, 0x39, 0x4b, 0x63, 0xb6, ++}; ++ ++static const unsigned char pi_inv[256] = ++{ ++ 0xa5, 0x2d, 0x32, 0x8f, 0x0e, 0x30, 0x38, 0xc0, ++ 0x54, 0xe6, 0x9e, 0x39, 0x55, 0x7e, 0x52, 0x91, ++ 0x64, 0x03, 0x57, 0x5a, 0x1c, 0x60, 0x07, 0x18, ++ 0x21, 0x72, 0xa8, 0xd1, 0x29, 0xc6, 0xa4, 0x3f, ++ 0xe0, 0x27, 0x8d, 0x0c, 0x82, 0xea, 0xae, 0xb4, ++ 0x9a, 0x63, 0x49, 0xe5, 0x42, 0xe4, 0x15, 0xb7, ++ 0xc8, 0x06, 0x70, 0x9d, 0x41, 0x75, 0x19, 0xc9, ++ 0xaa, 0xfc, 0x4d, 0xbf, 0x2a, 0x73, 0x84, 0xd5, ++ 0xc3, 0xaf, 0x2b, 0x86, 0xa7, 0xb1, 0xb2, 0x5b, ++ 0x46, 0xd3, 0x9f, 0xfd, 0xd4, 0x0f, 0x9c, 0x2f, ++ 0x9b, 0x43, 0xef, 0xd9, 0x79, 0xb6, 0x53, 0x7f, ++ 0xc1, 0xf0, 0x23, 0xe7, 0x25, 0x5e, 0xb5, 0x1e, ++ 0xa2, 0xdf, 0xa6, 0xfe, 0xac, 0x22, 0xf9, 0xe2, ++ 0x4a, 0xbc, 0x35, 0xca, 0xee, 0x78, 0x05, 0x6b, ++ 0x51, 0xe1, 0x59, 0xa3, 0xf2, 0x71, 0x56, 0x11, ++ 0x6a, 0x89, 0x94, 0x65, 0x8c, 0xbb, 0x77, 0x3c, ++ 0x7b, 0x28, 0xab, 0xd2, 0x31, 0xde, 0xc4, 0x5f, ++ 0xcc, 0xcf, 0x76, 0x2c, 0xb8, 0xd8, 0x2e, 0x36, ++ 0xdb, 0x69, 0xb3, 0x14, 0x95, 0xbe, 0x62, 0xa1, ++ 0x3b, 0x16, 0x66, 0xe9, 0x5c, 0x6c, 0x6d, 0xad, ++ 0x37, 0x61, 0x4b, 0xb9, 0xe3, 0xba, 0xf1, 0xa0, ++ 0x85, 0x83, 0xda, 0x47, 0xc5, 0xb0, 0x33, 0xfa, ++ 0x96, 0x6f, 0x6e, 0xc2, 0xf6, 0x50, 0xff, 0x5d, ++ 0xa9, 0x8e, 0x17, 0x1b, 0x97, 0x7d, 0xec, 0x58, ++ 0xf7, 0x1f, 0xfb, 0x7c, 0x09, 0x0d, 0x7a, 0x67, ++ 0x45, 0x87, 0xdc, 0xe8, 0x4f, 0x1d, 0x4e, 0x04, ++ 0xeb, 0xf8, 0xf3, 0x3e, 0x3d, 0xbd, 0x8a, 0x88, ++ 0xdd, 0xcd, 0x0b, 0x13, 0x98, 0x02, 0x93, 0x80, ++ 0x90, 0xd0, 0x24, 0x34, 0xcb, 0xed, 0xf4, 0xce, ++ 0x99, 0x10, 0x44, 0x40, 0x92, 0x3a, 0x01, 0x26, ++ 0x12, 0x1a, 0x48, 0x68, 0xf5, 0x81, 0x8b, 0xc7, ++ 0xd6, 0x20, 0x0a, 0x08, 0x00, 0x4c, 0xd7, 0x74, ++}; ++ ++static const unsigned char kuz_key_table[32][16] = ++{ ++ { 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, 0x10, 0xdd, 0x84, 0x94, 0x01,}, ++ { 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, 0x20, 0x79, 0xcb, 0xeb, 0x02,}, ++ { 0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, 0xa4, 0x4f, 0x7f, 0x03,}, ++ { 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, 0xf2, 0x55, 0x15, 0x04,}, ++ { 0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, 0x2f, 0xd1, 0x81, 0x05,}, ++ { 0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, 0x8b, 0x9e, 0xfe, 0x06,}, ++ { 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, 0x70, 0x56, 0x1a, 0x6a, 0x07,}, ++ { 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, 0x27, 0xaa, 0x2a, 0x08,}, ++ { 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, 0x90, 0xfa, 0x2e, 0xbe, 0x09,}, ++ { 0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, 0x5e, 0x61, 0xc1, 0x0a,}, ++ { 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, 0xb0, 0x83, 0xe5, 0x55, 0x0b,}, ++ { 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, 0xc0, 0xd5, 0xff, 0x3f, 0x0c,}, ++ { 0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, 0x08, 0x7b, 0xab, 0x0d,}, ++ { 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, 0xe0, 0xac, 0x34, 0xd4, 0x0e,}, ++ { 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, 0xf0, 0x71, 0xb0, 0x40, 0x0f,}, ++ { 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, 0xc3, 0x4e, 0x97, 0x54, 0x10,}, ++ { 0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, 0x93, 0x13, 0xc0, 0x11,}, ++ { 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, 0xe3, 0x37, 0x5c, 0xbf, 0x12,}, ++ { 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, 0xf3, 0xea, 0xd8, 0x2b, 0x13,}, ++ { 0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, 0xbc, 0xc2, 0x41, 0x14,}, ++ { 0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, 0x61, 0x46, 0xd5, 0x15,}, ++ { 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, 0xa3, 0xc5, 0x09, 0xaa, 0x16,}, ++ { 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, 0x18, 0x8d, 0x3e, 0x17,}, ++ { 0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, 0x69, 0x3d, 0x7e, 0x18,}, ++ { 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, 0xb4, 0xb9, 0xea, 0x19,}, ++ { 0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, 0x10, 0xf6, 0x95, 0x1a,}, ++ { 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, 0xcd, 0x72, 0x01, 0x1b,}, ++ { 0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, 0x9b, 0x68, 0x6b, 0x1c,}, ++ { 0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, 0x46, 0xec, 0xff, 0x1d,}, ++ { 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, 0xe2, 0xa3, 0x80, 0x1e,}, ++ { 0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, 0x3f, 0x27, 0x14, 0x1f,}, ++ { 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, 0x9c, 0xed, 0xa8, 0x20,}, ++}; ++ ++static const unsigned char kuz_table[16][256 * 16] = ++{ ++ { /* 0 */ ++ 0xe9, 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, 0x87, 0x93, 0x1b, 0xc9, 0xae, 0xb5, ++ 0x19, 0x08, 0xe0, 0x8c, 0xb2, 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, 0xf8, 0xfe, 0xf2, 0x0a, ++ 0xbf, 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, 0xc0, 0xbd, 0xca, 0xef, 0x4e, 0x88, 0xc7, 0x89, ++ 0x62, 0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, 0x93, 0x13, 0xc0, ++ 0x4f, 0x38, 0xe5, 0x22, 0x98, 0x65, 0x46, 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, 0xad, 0xbf, 0x9b, 0x36, ++ 0x38, 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, 0x97, 0x29, 0x2f, 0xcb, 0xc0, 0xef, ++ 0xfb, 0x1f, 0xb7, 0xc2, 0x06, 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, 0x96, 0x0f, 0xfe, 0x68, ++ 0x4a, 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, 0xa3, 0xc5, 0x09, 0xaa, ++ 0xc1, 0x32, 0x3d, 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, 0x6b, 0x9f, 0xb4, 0xdf, ++ 0x6a, 0x7c, 0x99, 0x8e, 0x18, 0x37, 0x9b, 0xf7, 0x20, 0xd4, 0x23, 0x72, 0x1d, 0x3c, 0x7e, 0x63, ++ 0x0e, 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, 0x55, 0x9b, 0x7b, 0x42, 0x30, 0x4b, ++ 0x97, 0x02, 0x38, 0x23, 0xcd, 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, 0x3e, 0xde, 0xdd, 0xe3, ++ 0x0b, 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, 0x6a, 0x16, 0x03, 0xc5, 0x75, 0x38, 0xa2, 0xd7, ++ 0xa5, 0x12, 0x3b, 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, 0x0d, 0xe1, 0xfa, 0xf7, ++ 0xba, 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, 0xf2, 0x55, 0x15, ++ 0x33, 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, 0x94, 0xec, 0x5a, 0xf3, 0x62, 0x38, ++ 0x31, 0xc1, 0x08, 0x0d, 0x2f, 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, 0x88, 0xa8, 0xe8, 0x60, ++ 0xed, 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, 0xdc, 0x19, 0x7e, 0xb4, 0x7c, 0x7f, 0x79, 0x05, ++ 0xe4, 0x76, 0x41, 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, 0xdb, 0x1c, 0x51, 0x8a, ++ 0x58, 0x6c, 0x9a, 0x55, 0xbf, 0x19, 0xaf, 0xa8, 0xd6, 0xb0, 0x18, 0xe7, 0x2e, 0x03, 0x59, 0x77, ++ 0x1e, 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, 0x37, 0x07, 0x24, 0xdf, 0xea, 0xce, ++ 0xc9, 0x0f, 0xb4, 0x19, 0xa1, 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, 0xa5, 0x30, 0xd9, 0x7c, ++ 0xf4, 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, 0xa7, 0x2b, 0x82, 0x1f, 0x84, 0x81, 0x8b, 0x0f, ++ 0xff, 0xe0, 0x12, 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, 0xf1, 0xb9, 0x29, 0xd8, ++ 0x85, 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, 0x18, 0x8d, 0x3e, ++ 0xd3, 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, 0x8d, 0x48, 0xe6, 0x59, 0xe4, 0x02, ++ 0x2b, 0x18, 0xe3, 0x57, 0x15, 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, 0xcb, 0xc1, 0xd5, 0x1e, ++ 0x30, 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, 0x75, 0x60, 0xa6, 0x67, 0xe1, 0x64, 0xad, 0x4c, ++ 0x17, 0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, 0xbc, 0xc2, 0x41, ++ 0x12, 0xe4, 0x62, 0xce, 0x7c, 0xbd, 0xd6, 0xdb, 0x11, 0x24, 0xff, 0x6e, 0x8d, 0xc6, 0x50, 0xdd, ++ 0xc3, 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, 0xef, 0xd4, 0xb9, 0xc4, 0x3e, 0x87, ++ 0x1f, 0x69, 0xf6, 0xe3, 0x61, 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, 0x4d, 0x13, 0xaf, 0xe2, ++ 0x9c, 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, 0x04, 0xfb, 0x3c, 0x9f, 0x4b, 0xe6, 0x7f, 0x34, ++ 0x1a, 0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, 0x69, 0x3d, 0x7e, ++ 0x1d, 0xf7, 0x45, 0xc6, 0x91, 0x3d, 0x97, 0x3f, 0xbe, 0x3a, 0x05, 0x8c, 0x9f, 0x48, 0x25, 0xba, ++ 0xb6, 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, 0x54, 0xd8, 0xe9, 0xeb, 0xef, 0x06, ++ 0x14, 0x85, 0x74, 0xa1, 0xaf, 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, 0x38, 0x2b, 0x0d, 0x35, ++ 0x51, 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, 0x3f, 0xa2, 0x86, 0xd0, 0x89, 0x60, 0x71, 0xf8, ++ 0xd6, 0x66, 0x42, 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, 0xe8, 0x23, 0x76, 0x9e, ++ 0x56, 0x30, 0x05, 0xae, 0x2a, 0x72, 0x5c, 0xe1, 0xd9, 0xac, 0x4d, 0x7c, 0x55, 0x41, 0x69, 0x3c, ++ 0xee, 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, 0x4c, 0x3f, 0xc7, 0xe8, 0xb6, 0x71, ++ 0xa0, 0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, 0x9b, 0x68, 0x6b, ++ 0x39, 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, 0x9c, 0x72, 0x38, 0x50, 0x46, 0x07, 0x85, 0xc3, ++ 0xac, 0x60, 0x0a, 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, 0xaa, 0x82, 0xd2, 0x78, ++ 0x04, 0xff, 0xa5, 0x4a, 0x23, 0x2a, 0x8d, 0xf1, 0xc5, 0x08, 0xf9, 0x27, 0x67, 0xb6, 0xd7, 0xb0, ++ 0xcf, 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, 0x10, 0xdd, 0x84, 0x94, ++ 0x71, 0xea, 0xca, 0x27, 0x5a, 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, 0x37, 0x99, 0x06, 0x31, ++ 0x6e, 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, 0xe5, 0xdc, 0xda, 0x55, 0x7a, 0x8a, 0xa9, 0xd3, ++ 0x75, 0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, 0x2f, 0xd1, 0x81, ++ 0x9b, 0xc0, 0x14, 0xfd, 0xa8, 0x0b, 0xb3, 0x02, 0xe2, 0xf5, 0xf7, 0x33, 0x97, 0xc7, 0x67, 0xf0, ++ 0x5d, 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, 0x20, 0x79, 0xcb, 0xeb, ++ 0xe8, 0xb4, 0x6d, 0xff, 0x02, 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, 0x72, 0x05, 0xeb, 0x99, ++ 0xdb, 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, 0xef, 0x75, 0xbc, 0x06, 0x28, 0xf6, 0x89, 0xa1, ++ 0x82, 0xc8, 0xf4, 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, 0x6f, 0x39, 0x95, 0xfa, ++ 0xbe, 0x84, 0x68, 0x51, 0x28, 0x59, 0x6e, 0xda, 0x60, 0xbf, 0x65, 0x96, 0x27, 0x44, 0x82, 0xa5, ++ 0xb8, 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, 0x01, 0x43, 0x92, 0xa9, 0xdf, 0x4d, ++ 0xe7, 0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, 0x8b, 0x9e, 0xfe, ++ 0x25, 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, 0xb0, 0x83, 0xe5, 0x55, ++ 0x8b, 0xba, 0xc5, 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, 0xc8, 0x5a, 0xbd, 0x75, ++ 0x3b, 0x62, 0x32, 0xbc, 0x99, 0x91, 0x5f, 0xd3, 0x1f, 0x76, 0xa5, 0xa2, 0x94, 0x5c, 0x0f, 0x9b, ++ 0x5a, 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, 0x85, 0x15, 0xfc, 0x58, 0xd3, 0x2f, ++ 0xc7, 0x53, 0x2b, 0xe2, 0x34, 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, 0xde, 0x72, 0xe9, 0x37, ++ 0xef, 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, 0x5f, 0x1d, 0xe3, 0x46, 0xae, 0x24, 0xf3, 0x5d, ++ 0x32, 0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, 0x3f, 0x27, 0x14, ++ 0x6c, 0x1d, 0x8f, 0xe1, 0xcb, 0x08, 0xb1, 0x9f, 0x66, 0xd8, 0x47, 0xa7, 0xa8, 0xd1, 0x23, 0x8b, ++ 0x8e, 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, 0xc3, 0xf1, 0xc6, 0x20, 0x2f, 0xe9, ++ 0x94, 0xd3, 0x33, 0xf5, 0x45, 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, 0x85, 0x49, 0x12, 0x97, ++ 0x93, 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, 0xab, 0xe5, 0xc6, 0x7d, 0x59, 0x68, 0x0a, 0x53, ++ 0xa3, 0x73, 0x2d, 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, 0xb8, 0x0c, 0xa7, 0x1f, ++ 0x67, 0xf1, 0x0d, 0xa3, 0x05, 0xa2, 0x7d, 0x8a, 0x0c, 0xce, 0x44, 0x62, 0xdd, 0xe9, 0x81, 0x5c, ++ 0x46, 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, 0x2f, 0xe0, 0x0a, 0xdc, 0xb3, 0xb9, ++ 0x9d, 0xa1, 0x02, 0x92, 0x7b, 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, 0x22, 0x2a, 0x3a, 0x18, ++ 0xb9, 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, 0x86, 0xb1, 0xae, 0x3a, 0xfb, 0x65, 0x9a, 0x61, ++ 0x73, 0x74, 0x79, 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, 0xe5, 0xc2, 0x8c, 0x69, ++ 0xdf, 0x14, 0x73, 0x9d, 0xfe, 0xc4, 0x39, 0x38, 0x2a, 0x7d, 0x45, 0x21, 0x4f, 0x40, 0x5e, 0x11, ++ 0xe5, 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, 0x4f, 0xfa, 0xb2, 0xd0, 0x14, 0xa6, ++ 0x26, 0x95, 0x77, 0x7a, 0x08, 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, 0x0b, 0x14, 0x2a, 0x21, ++ 0xde, 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, 0x8a, 0x7f, 0xea, 0x58, 0x26, 0x8c, 0x1b, 0x3d, ++ 0x80, 0x56, 0x47, 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, 0xbd, 0x62, 0x1f, 0xa2, ++ 0xdd, 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, 0x9e, 0xa1, 0xa9, 0x79, 0xd8, 0xd3, 0x9d, 0x1b, 0xd4, 0x49, ++ 0x60, 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, 0x8f, 0xce, 0x01, 0xc8, 0x99, 0x98, ++ 0xc5, 0xcd, 0x98, 0xc7, 0xc4, 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, 0x0c, 0x29, 0x63, 0x6f, ++ 0x50, 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, 0xe0, 0xac, 0x34, 0xd4, ++ 0xbb, 0x34, 0x75, 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, 0x29, 0x3e, 0x10, 0x39, ++ 0xb7, 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, 0x27, 0xaa, 0x2a, ++ 0x0d, 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, 0xc0, 0xd5, 0xff, 0x3f, ++ 0x22, 0x6a, 0xd2, 0x30, 0x2b, 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, 0x6c, 0xa2, 0xfd, 0x91, ++ 0xf0, 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, 0xe3, 0x37, 0x5c, 0xbf, ++ 0x8a, 0xf5, 0x7d, 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, 0xa1, 0x96, 0xf8, 0x59, ++ 0x98, 0x11, 0x1f, 0x2b, 0x20, 0xf5, 0xa6, 0x36, 0xc1, 0xf3, 0xc5, 0xb8, 0x2c, 0x50, 0xa8, 0x84, ++ 0x3f, 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, 0xf3, 0xea, 0xd8, 0x2b, ++ 0xd9, 0x75, 0x65, 0xf2, 0x2d, 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, 0xfa, 0xad, 0x03, 0xf9, ++ 0x81, 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, 0xba, 0xc1, 0x39, 0x13, 0xd4, 0xae, 0x5a, 0x8e, ++ 0x3d, 0x03, 0x24, 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, 0x21, 0xb1, 0x52, 0x73, ++ 0x9e, 0x70, 0x09, 0x44, 0xf3, 0xca, 0x8c, 0x5e, 0x87, 0xff, 0xa1, 0x6d, 0x99, 0xbd, 0xf5, 0x6c, ++ 0x09, 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, 0x9e, 0x37, 0xa7, 0x63, 0x28, 0x8f, ++ 0xd8, 0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, 0x61, 0x46, 0xd5, ++ 0x77, 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, 0x9e, 0xee, 0x26, 0xfe, 0x82, 0x74, 0x5b, 0xd9, ++ 0x6b, 0x33, 0x21, 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, 0x74, 0xf0, 0x3b, 0x4f, ++ 0xe1, 0xc6, 0x5c, 0x98, 0x3c, 0x94, 0x59, 0xb7, 0x50, 0x01, 0xb6, 0xdd, 0xd5, 0x66, 0xc3, 0x16, ++ 0xad, 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, 0xc3, 0x4e, 0x97, 0x54, ++ 0xe0, 0x89, 0xe4, 0x6b, 0x44, 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, 0xbc, 0xaa, 0x86, 0x3a, ++ 0x66, 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, 0xac, 0xcc, 0xeb, 0x1b, 0xb4, 0x25, 0xc4, 0x70, ++ 0xf8, 0xce, 0xbc, 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, 0x2d, 0x98, 0x31, 0x1c, ++ 0x76, 0xc4, 0x64, 0xbb, 0xf1, 0xe1, 0xbe, 0x65, 0x3e, 0xec, 0x89, 0x87, 0xeb, 0xb8, 0x1e, 0xf5, ++ 0x43, 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, 0x79, 0xbe, 0x04, 0xa6, 0x21, 0x25, ++ 0x72, 0x3b, 0xc1, 0xf1, 0xd2, 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, 0x8c, 0x0e, 0xc9, 0x45, ++ 0xf7, 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, 0x84, 0x2d, 0xb0, 0x94, 0x3f, 0x16, 0x44, 0x7b, ++ 0x4e, 0x77, 0x5d, 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, 0xc4, 0x73, 0xde, 0x1a, ++ 0xdc, 0xc5, 0x78, 0x4b, 0x76, 0x3a, 0x2c, 0x0c, 0x09, 0x7b, 0x77, 0xaa, 0xf4, 0xd7, 0x91, 0x65, ++ 0x48, 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, 0x7a, 0x7b, 0x71, 0x9e, 0x83, 0xf2, ++ 0xda, 0xa4, 0x6e, 0x24, 0xa5, 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, 0x41, 0x3a, 0xcc, 0x8d, ++ 0x69, 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, 0x03, 0xd2, 0x11, 0xf9, 0xa6, 0xab, 0xb1, 0x17, ++ 0xb0, 0xd8, 0xf7, 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, 0x5c, 0x06, 0xb2, 0xee, ++ 0xd5, 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, 0xb4, 0xb9, 0xea, ++ 0xf6, 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, 0x1f, 0xed, 0x56, 0xda, 0x01, 0x57, ++ 0x7b, 0x49, 0xf0, 0x96, 0xec, 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, 0x2b, 0x6d, 0xe1, 0xca, ++ 0x41, 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, 0xad, 0x82, 0xe4, 0x4c, 0xd6, 0xfd, 0xab, 0x7d, ++ 0xcb, 0x91, 0x07, 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, 0x77, 0x6b, 0x53, 0x24, ++ 0x95, 0x9c, 0x8b, 0x06, 0x3d, 0x60, 0x40, 0x4b, 0xed, 0xe9, 0xa2, 0xa8, 0xec, 0x85, 0x57, 0xbb, ++ 0xaa, 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, 0xfe, 0x2d, 0x1f, 0x6f, 0x8f, 0x90, ++ 0xe6, 0xe8, 0xf2, 0x04, 0x97, 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, 0x09, 0x47, 0xdb, 0xd2, ++ 0x37, 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, 0x93, 0x6e, 0x6d, 0xcb, 0x3d, 0x45, 0xb5, 0x88, ++ 0x21, 0xbb, 0xd9, 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, 0xd7, 0x35, 0x32, 0xe5, ++ 0x42, 0xb5, 0x71, 0x0f, 0x85, 0xf0, 0xa0, 0x52, 0x8e, 0x84, 0xd6, 0xc7, 0x6d, 0x6a, 0x64, 0x09, ++ 0xd7, 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, 0x74, 0x6f, 0x81, 0xef, 0x33, 0xb2, ++ 0xc2, 0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, 0x08, 0x7b, 0xab, ++ 0x74, 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, 0xbd, 0xe8, 0x14, 0x75, 0x39, 0xe3, 0x94, 0xad, ++ 0xe2, 0x17, 0x57, 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, 0x6e, 0xf1, 0x0c, 0x62, ++ 0x91, 0x63, 0x2e, 0x4c, 0x1e, 0x4a, 0xcd, 0xba, 0x28, 0xe1, 0x5b, 0x8f, 0x8b, 0x33, 0x80, 0x0b, ++ 0x23, 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, 0xf6, 0x70, 0x05, 0x6e, 0xb8, 0xbd, ++ 0xc0, 0x7d, 0x85, 0x7e, 0x9f, 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, 0x02, 0x53, 0xf1, 0xf3, ++ 0x64, 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, 0x2f, 0xc8, 0x76, 0xe9, 0x66, 0x7e, 0x4e, 0x28, ++ 0x0f, 0x13, 0x27, 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, 0x12, 0x8e, 0x75, 0x67, ++ 0x63, 0x0e, 0xa8, 0xe9, 0x26, 0x88, 0xf0, 0x7b, 0xc9, 0xc6, 0xbd, 0x45, 0xba, 0x5f, 0x56, 0xec, ++ 0xa8, 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, 0x63, 0xdf, 0xcd, 0x34, 0x05, 0xc8, ++ 0x55, 0xe1, 0x0e, 0x78, 0xa2, 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, 0xee, 0xd6, 0xa6, 0x48, ++ 0xbd, 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, 0x43, 0xb9, 0x57, 0x1d, 0x9c, 0xd3, 0x4d, 0xd1, ++ 0x9a, 0x8f, 0xac, 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, 0xfe, 0x0b, 0x22, 0xdc, ++ 0x03, 0xd1, 0x0b, 0xd6, 0x88, 0xfe, 0x15, 0x34, 0x23, 0x06, 0x32, 0x8b, 0xbb, 0x97, 0xcf, 0x74, ++ 0xc8, 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, 0xec, 0x11, 0xcc, 0xfc, 0x9c, 0x50, ++ 0xc4, 0x82, 0x20, 0x34, 0xbc, 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, 0x65, 0xe5, 0x26, 0x43, ++ 0x6d, 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, 0xc6, 0xda, 0xe8, 0xde, 0xc1, 0x1d, 0x66, 0xa7, ++ 0x92, 0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, 0xa4, 0x4f, 0x7f, ++ 0x49, 0x59, 0xf3, 0x4d, 0x4b, 0x5a, 0x6c, 0x47, 0xe4, 0x92, 0xd5, 0x02, 0x18, 0x52, 0xc6, 0xde, ++ 0x9f, 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, 0xf0, 0x71, 0xb0, 0x40, ++ 0x44, 0xd4, 0x67, 0x60, 0x56, 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, 0xd8, 0x87, 0x39, 0xe1, ++ 0x2d, 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, 0xcb, 0x5a, 0xa3, 0xeb, 0x7e, 0x2c, 0x88, 0xf6, ++ 0x2f, 0xe7, 0x46, 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, 0xac, 0x77, 0x02, 0xae, ++ 0x36, 0xef, 0xa6, 0x91, 0x84, 0x04, 0xb9, 0xae, 0x33, 0x6c, 0xc2, 0xb2, 0x54, 0x89, 0xf0, 0xa4, ++ 0x15, 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, 0x34, 0xc2, 0x51, 0xe7, 0x48, 0x19, ++ 0x18, 0x47, 0x58, 0x7f, 0xca, 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, 0x91, 0x32, 0xb7, 0x26, ++ 0x70, 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, 0x78, 0xe0, 0xed, 0x52, 0x5e, 0x55, 0x43, 0x1d, ++ 0xfe, 0xaf, 0xaa, 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, 0x98, 0x75, 0x6c, 0xf4, ++ 0x2e, 0xa8, 0xfe, 0xee, 0x4e, 0xf8, 0x11, 0xcd, 0xe8, 0x5c, 0x91, 0x60, 0xc5, 0xbb, 0x47, 0x82, ++ 0x5c, 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, 0xe1, 0xc0, 0x49, 0xb5, 0x8e, 0xc7, ++ 0xa1, 0xed, 0x9e, 0xb2, 0x49, 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, 0x6a, 0x57, 0x2d, 0x47, ++ 0xa6, 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, 0xbb, 0x8f, 0x36, 0x44, 0xb6, 0x76, 0x35, 0x83, ++ 0xea, 0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, 0x5e, 0x61, 0xc1, ++ 0x1b, 0x96, 0x53, 0xa9, 0x42, 0x02, 0xbd, 0x57, 0xf8, 0x36, 0x61, 0x59, 0x2a, 0xa5, 0x78, 0x52, ++ 0x90, 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, 0xf4, 0xf6, 0xe2, 0xff, 0xc5, 0x27, ++ 0xa4, 0x5d, 0x83, 0x0b, 0x12, 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, 0x64, 0x2d, 0xbf, 0xdb, ++ 0x68, 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, 0xa3, 0xd0, 0xbe, 0x80, 0xcf, 0x67, 0xf4, 0x3b, ++ 0x57, 0x7f, 0xbd, 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, 0x3c, 0x8d, 0x2c, 0x10, ++ 0xfd, 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, 0xe2, 0xa3, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x35, 0x3e, 0xad, 0x47, 0x0c, 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, 0xef, 0x1e, 0x3f, 0xd0, ++ 0x4b, 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, 0x67, 0x96, 0x48, 0xf0, 0xca, 0x09, 0x4c, 0x86, ++ 0x47, 0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, 0x10, 0xf6, 0x95, ++ 0xa2, 0x3c, 0x95, 0x64, 0xc1, 0x8f, 0x4b, 0x48, 0x7e, 0x87, 0xcf, 0x63, 0xd1, 0xc0, 0xe2, 0x33, ++ 0x83, 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, 0xa4, 0xe1, 0x06, 0xf5, 0xd0, 0xd6, ++ 0x7c, 0x67, 0x5e, 0x0a, 0x47, 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, 0xf7, 0x4c, 0xf9, 0x0e, ++ 0xd2, 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, 0x06, 0x67, 0x22, 0x31, 0x8f, 0x95, 0xa1, 0x2e, ++ 0x13, 0xab, 0xda, 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, 0xe4, 0x0a, 0x15, 0xf1, ++ 0x7e, 0xf9, 0xed, 0x2f, 0xb7, 0xb5, 0x67, 0x44, 0x77, 0xfc, 0xb8, 0xc9, 0x25, 0x17, 0x73, 0x56, ++ 0x3e, 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, 0xf3, 0xfc, 0x9a, 0x26, 0x9d, 0x07, ++ 0x7a, 0x06, 0x48, 0x65, 0x94, 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, 0x42, 0xa1, 0xa4, 0xe6, ++ 0x84, 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, 0xdf, 0xcb, 0x6f, 0x4d, 0xda, 0xd4, 0xc8, 0x12, ++ 0x16, 0x1b, 0xc7, 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, 0xea, 0x70, 0x87, 0x6d, ++ 0xd1, 0x48, 0xec, 0x66, 0x6b, 0xaf, 0xca, 0x71, 0x25, 0x61, 0x10, 0xba, 0x34, 0x02, 0x6e, 0x5a, ++ 0xb1, 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, 0x9f, 0x74, 0x35, 0xca, 0xf7, 0xc2, ++ 0x0c, 0xc2, 0x2c, 0xde, 0x65, 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, 0xa9, 0x19, 0xba, 0x13, ++ 0x29, 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, 0x0e, 0x52, 0x5a, 0xcc, 0x19, 0x9a, 0x5f, 0x46, ++ 0x06, 0x61, 0x16, 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, 0xb5, 0xed, 0x5d, 0xe8, ++ 0x2c, 0x36, 0x4d, 0xcb, 0xbe, 0xed, 0xb6, 0x54, 0x6b, 0x58, 0x0c, 0x92, 0x17, 0xe0, 0xcd, 0xda, ++ 0x2a, 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, 0x68, 0x47, 0xa2, 0x0d, 0x90, 0x32, ++ 0xcd, 0xf0, 0x11, 0x53, 0x82, 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, 0xc2, 0x86, 0x0e, 0xcc, ++ 0x07, 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, 0xe6, 0x0e, 0xcb, 0xac, 0xdc, 0x21, 0x18, 0xc4, ++ 0x10, 0x7a, 0xd1, 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, 0x5f, 0x9d, 0xda, 0x85, ++ 0x08, 0x3d, 0x89, 0x94, 0x46, 0x54, 0xd9, 0x21, 0x49, 0x10, 0x31, 0x4e, 0xce, 0xaf, 0x6d, 0xa3, ++ 0xf9, 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, 0xe5, 0x0f, 0x44, 0x54, 0x74, 0x30, ++ 0x11, 0x35, 0x69, 0x18, 0xf4, 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, 0x36, 0x51, 0x9f, 0xa9, ++ 0x28, 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, 0x70, 0x56, 0x1a, 0x6a, ++ 0xeb, 0x65, 0x66, 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, 0xc9, 0x92, 0x24, 0xed, ++ 0x87, 0x78, 0xe9, 0xc8, 0x41, 0xdd, 0x96, 0x90, 0xfc, 0xcd, 0x5d, 0xc6, 0x61, 0x43, 0x07, 0x66, ++ 0xf1, 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, 0xd4, 0x41, 0x8a, 0xfb, 0x19, 0x93, ++ 0xc6, 0x1c, 0x93, 0x11, 0x4c, 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, 0xb7, 0xbe, 0xac, 0x1b, ++ 0xb5, 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, 0x0a, 0xa9, 0x66, 0x53, 0x52, 0x7c, 0x20, 0x72, ++ 0x6f, 0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, 0x46, 0xec, 0xff, ++ 0xcc, 0xbf, 0xa9, 0xa0, 0xfa, 0x92, 0x5d, 0x4e, 0x9b, 0x5b, 0x15, 0x36, 0xab, 0x4a, 0x4b, 0xe0, ++ 0x34, 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, 0x5f, 0x40, 0x86, 0xd2, 0x7a, 0xfc, ++ 0x1c, 0xb8, 0xfd, 0x35, 0xe9, 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, 0xf6, 0x84, 0x60, 0x96, ++ 0x4d, 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, 0x21, 0x9a, 0x2c, 0x25, 0x7f, 0xe4, 0x11, 0x6e, ++ 0xf3, 0x22, 0x3e, 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, 0x58, 0xa0, 0x93, 0xcb, ++ 0x96, 0x4d, 0x80, 0xd0, 0xb5, 0x9e, 0x55, 0x7f, 0xce, 0xef, 0x90, 0x23, 0x57, 0x12, 0x98, 0xcf, ++ 0x05, 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, 0x56, 0x5e, 0x0e, 0x7a, 0x92, 0x9c, ++ 0x61, 0x90, 0x1b, 0xcc, 0xd6, 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, 0x68, 0x04, 0xdc, 0xb4, ++ 0x59, 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, 0x76, 0xb2, 0xb7, 0x9e, 0x47, 0xcf, 0x1c, 0x5b, ++ 0x86, 0x37, 0x51, 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, 0x08, 0x8f, 0x42, 0x4a, ++ 0x88, 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, 0xcd, 0x72, 0x01, ++ 0xb3, 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, 0x02, 0x86, 0xe7, 0x91, 0x7d, 0x9a, ++ 0x89, 0x24, 0x76, 0x33, 0xd4, 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, 0x1a, 0x01, 0x37, 0x2d, ++ 0xfc, 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, 0xee, 0x3b, 0xb3, 0x51, 0x4a, 0x2e, 0xe6, 0xac, ++ 0xab, 0x4e, 0xa4, 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, 0x76, 0xa3, 0xca, 0xbc, ++ 0x53, 0x80, 0x18, 0x17, 0x71, 0xb3, 0x63, 0xbd, 0xbc, 0xa6, 0x1b, 0x22, 0x5b, 0x3b, 0xfb, 0xa0, ++ 0xb4, 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, 0xc9, 0x2a, 0x3b, 0xb0, 0x65, 0x5e, ++ 0xe3, 0x58, 0xef, 0xbd, 0xcc, 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, 0x07, 0x3d, 0x49, 0x4e, ++ 0xce, 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, 0x18, 0x5f, 0x88, 0xc4, 0x79, 0x11, 0xc1, 0xb8, ++ 0x52, 0xcf, 0xa0, 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, 0x32, 0xf7, 0xbe, 0x8c, ++ 0x8c, 0x94, 0x6b, 0x8a, 0x8f, 0x77, 0x5a, 0x85, 0x96, 0xdb, 0x5e, 0x03, 0x14, 0x7b, 0xa5, 0xb1, ++ 0x3a, 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, 0x0a, 0xdb, 0xfd, 0x90, 0x4a, 0xb7, ++ 0xca, 0xde, 0xbf, 0xcf, 0x29, 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, 0x1e, 0xa7, 0x16, 0x08, ++ 0x54, 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, 0x5a, 0xa8, 0xd0, 0x8e, 0x87, 0x1a, 0xe3, 0x64, ++ 0xa7, 0x8c, 0x88, 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, 0xdf, 0xba, 0x70, 0xaf, ++ 0x99, 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, 0x9c, 0xed, 0xa8, ++ 0x0a, 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, 0xac, 0xbc, 0x1c, 0xf4, 0xe7, 0xfb, ++ 0x40, 0x2b, 0xc2, 0x2a, 0x75, 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, 0xbf, 0x31, 0xee, 0x51, ++ 0x02, 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, 0x83, 0x04, 0x9d, 0xf2, 0xd2, 0x5b, 0x8a, 0x58, ++ 0x5b, 0xbd, 0x91, 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, 0x95, 0x94, 0x96, 0x03, ++ 0xbc, 0x1a, 0xdb, 0x74, 0xd8, 0x4c, 0xc9, 0x43, 0xe3, 0xbb, 0xf8, 0x64, 0xf5, 0x1f, 0x08, 0xfd, ++ 0x78, 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, 0x90, 0xfa, 0x2e, 0xbe, ++ 0x79, 0xd7, 0x43, 0xb3, 0x1c, 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, 0xf9, 0x36, 0x6b, 0x92, ++ 0xf5, 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, 0x07, 0x29, 0x2d, 0x66, 0xed, 0x4d, 0xce, 0x23, ++ 0xa9, 0xd0, 0x17, 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, 0xa4, 0xf8, 0x40, 0xe4, ++ 0xec, 0x4b, 0xc8, 0xb5, 0x21, 0x01, 0xbf, 0xca, 0x7c, 0x1b, 0xd1, 0xcd, 0x15, 0xb3, 0x3c, 0x29, ++ 0x7d, 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, 0x8a, 0x42, 0x9e, 0x80, 0xbc, 0x22, ++ 0x45, 0x9b, 0xdf, 0x93, 0x2e, 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, 0xb1, 0x4b, 0x7c, 0xcd, ++ 0x3c, 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, 0xf9, 0x78, 0x6e, 0x0e, 0x48, 0x7d, 0x17, 0x5f, ++ 0x65, 0x6f, 0xbe, 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, 0x0f, 0xb2, 0x0b, 0x04, ++ 0x01, 0x4f, 0xb8, 0xf3, 0x78, 0xeb, 0xb2, 0xad, 0xa0, 0x02, 0xaf, 0x79, 0x69, 0xcc, 0x45, 0x2c, ++ 0x24, 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, 0x3d, 0xdc, 0xd9, 0x4f, 0xa0, 0x79, ++ 0x5f, 0x42, 0x34, 0xc9, 0x14, 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, 0xf2, 0x22, 0x41, 0xb3, ++ 0x7f, 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, 0xd7, 0xfe, 0x17, 0xb0, 0x4c, 0xdb, 0x36, 0x7a, ++ 0x20, 0xf4, 0x61, 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, 0xbe, 0xf9, 0x77, 0xc9, ++ 0xae, 0xfe, 0xb9, 0xba, 0xa4, 0xf1, 0x1f, 0x98, 0xf2, 0x9f, 0x07, 0x0a, 0x78, 0xd9, 0x58, 0x20, ++ 0x5e, 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, 0x7c, 0x32, 0x9b, 0xee, 0x04, 0x9f, ++ 0xaf, 0xb1, 0x01, 0x49, 0xdc, 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, 0x11, 0x15, 0x1d, 0x0c, ++ 0xd0, 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, 0x85, 0x63, 0xbf, 0xc3, 0x5d, 0xce, 0x2b, 0x76, ++ 0xb2, 0x46, 0x44, 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, 0x8e, 0x5d, 0x38, 0xb6, ++ 0x8f, 0x45, 0x60, 0x5c, 0x07, 0x89, 0x4f, 0xb1, 0xb5, 0xdd, 0x6c, 0x88, 0xaf, 0xec, 0x6a, 0xc5, ++ 0x27, 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, 0x0f, 0x57, 0x62, 0xd8, 0x6f, 0x0d, ++ 0x8d, 0xdb, 0xd3, 0x79, 0xf7, 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, 0x7d, 0xb7, 0xe0, 0x9d, ++ 0x4c, 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, 0x81, 0x98, 0x83, 0x5c, 0x16, 0x28, 0x54, 0x42, ++ 0xd4, 0xf8, 0xf1, 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, 0x3a, 0x78, 0xfc, 0xc6, ++ 0xfa, 0x50, 0x0f, 0x31, 0x7e, 0x96, 0xe4, 0xe0, 0xa8, 0x37, 0xd7, 0x84, 0xff, 0xc3, 0xbb, 0x44, ++ 0xf2, 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, 0xe6, 0xca, 0x31, 0x6c, 0xd6, 0xe7, ++ }, ++ { /* 1 */ ++ 0x2f, 0x36, 0x58, 0xea, 0xa2, 0x0c, 0x25, 0xcf, 0x7c, 0xd9, 0x9e, 0x49, 0x92, 0xd3, 0x50, 0x36, ++ 0x48, 0x33, 0xd6, 0x3a, 0x7e, 0x8c, 0x82, 0xb8, 0xf4, 0x6c, 0x87, 0xe4, 0x0b, 0xa6, 0x9f, 0x33, ++ 0x5c, 0x9c, 0xe9, 0x76, 0x65, 0xa2, 0xaf, 0xd9, 0x01, 0x72, 0x0a, 0x54, 0xa8, 0x81, 0x94, 0x9c, ++ 0x0c, 0x65, 0x15, 0x85, 0x09, 0x1a, 0x1b, 0x9e, 0x53, 0x0a, 0x7b, 0xd1, 0x61, 0x1d, 0xb8, 0x65, ++ 0x3b, 0x99, 0x67, 0xa6, 0xb9, 0x22, 0x08, 0xae, 0x89, 0xc7, 0x13, 0xf9, 0x31, 0xf4, 0x5b, 0x99, ++ 0x62, 0x5e, 0xf1, 0xc3, 0xaa, 0x6a, 0x3d, 0xfe, 0x24, 0x53, 0xab, 0x81, 0xc1, 0x0c, 0xbd, 0x5e, ++ 0xe7, 0xef, 0x6c, 0x2a, 0x3c, 0xc2, 0x44, 0x6e, 0x67, 0x75, 0x70, 0x59, 0xb2, 0xd6, 0x51, 0xef, ++ 0x42, 0x85, 0x28, 0x1c, 0x92, 0x9b, 0x75, 0x69, 0x6f, 0x63, 0x20, 0xbc, 0xbb, 0x54, 0x7b, 0x85, ++ 0x61, 0xd6, 0x65, 0x73, 0x39, 0x8d, 0x4b, 0x38, 0x40, 0xb0, 0xc5, 0x24, 0x48, 0x9a, 0x93, 0xd6, ++ 0x1a, 0x3a, 0x73, 0xa8, 0xf0, 0x8e, 0xd3, 0x7b, 0x5f, 0x17, 0x03, 0xa7, 0x8d, 0xde, 0x87, 0x3a, ++ 0xf9, 0xf6, 0xad, 0x40, 0xcb, 0xfb, 0x9e, 0xde, 0x09, 0x64, 0x5a, 0xb1, 0xa1, 0x03, 0xbe, 0xf6, ++ 0x12, 0x7c, 0xd4, 0xef, 0xfe, 0x23, 0xc1, 0x2e, 0x3d, 0x1b, 0x51, 0x39, 0x72, 0xc8, 0x57, 0x7c, ++ 0x80, 0xea, 0xe2, 0xfa, 0xe0, 0x42, 0xe3, 0x19, 0xef, 0xc0, 0x69, 0xf4, 0x2b, 0xa3, 0x9e, 0xea, ++ 0x82, 0x1a, 0xbb, 0x9b, 0x02, 0xf8, 0x06, 0x9d, 0x16, 0xc3, 0x9c, 0x32, 0x64, 0x47, 0xaa, 0x1a, ++ 0x25, 0x80, 0xa6, 0xcc, 0x4e, 0x1b, 0xd2, 0x1e, 0xe7, 0xd6, 0x39, 0x11, 0x22, 0x21, 0xb4, 0x80, ++ 0xe2, 0xb4, 0x13, 0x39, 0x4a, 0x28, 0xde, 0xe7, 0xcb, 0x93, 0xc2, 0x75, 0xea, 0xaf, 0x23, 0xb4, ++ 0x06, 0xd3, 0xeb, 0xa3, 0xe5, 0x0d, 0xec, 0x4f, 0xc8, 0x05, 0xdc, 0x89, 0xd1, 0xef, 0x5c, 0xd3, ++ 0x24, 0xf8, 0x6b, 0x1d, 0x3f, 0x46, 0x41, 0x5c, 0x7a, 0x36, 0xa2, 0x72, 0xe4, 0x53, 0xae, 0xf8, ++ 0x40, 0x75, 0x71, 0x7d, 0x70, 0x21, 0x90, 0xed, 0x96, 0x60, 0xd5, 0x7a, 0xf4, 0xb0, 0x4f, 0x75, ++ 0x8a, 0x5c, 0x1c, 0xdc, 0x0c, 0x55, 0x14, 0xc8, 0x74, 0xcf, 0xce, 0xac, 0x9b, 0x51, 0x7a, 0x5c, ++ 0xd5, 0x48, 0x61, 0x1a, 0xfa, 0x10, 0xcd, 0xd7, 0x11, 0x5e, 0xaa, 0x5d, 0xba, 0x46, 0xc0, 0x48, ++ 0x77, 0x89, 0x03, 0x5e, 0xc0, 0x19, 0x83, 0xdd, 0x4c, 0xad, 0xbd, 0x52, 0xa4, 0x59, 0xac, 0x89, ++ 0x6c, 0xcb, 0xbd, 0x27, 0x41, 0xca, 0xc3, 0xe4, 0x8e, 0x5a, 0x25, 0x96, 0xef, 0xf5, 0x31, 0xcb, ++ 0xec, 0x21, 0x5f, 0xdd, 0xa1, 0x88, 0x20, 0xfd, 0x61, 0x9a, 0x4c, 0x62, 0xc4, 0x56, 0xaf, 0x21, ++ 0xda, 0xa5, 0xe0, 0x2f, 0x60, 0xed, 0xa0, 0x8f, 0x26, 0xb7, 0xbf, 0x29, 0x52, 0xcd, 0x56, 0xa5, ++ 0xa9, 0x0f, 0x51, 0xb3, 0xa7, 0x43, 0x2a, 0x99, 0x5b, 0x1c, 0x2b, 0x34, 0x68, 0x9f, 0x92, 0x0f, ++ 0xd8, 0x55, 0xb9, 0x4e, 0x82, 0x57, 0x45, 0x0b, 0xdf, 0xb4, 0x4a, 0xef, 0x1d, 0x29, 0x62, 0x55, ++ 0x74, 0x01, 0x97, 0xee, 0x53, 0xfe, 0xf5, 0x1b, 0x28, 0x4e, 0xd3, 0xf7, 0x2d, 0xcf, 0x82, 0x01, ++ 0xb1, 0xc5, 0x7b, 0x7a, 0xb5, 0x77, 0x1c, 0x66, 0xfd, 0x08, 0xdd, 0x55, 0xaa, 0xa5, 0x21, 0xc5, ++ 0xc8, 0xd9, 0x34, 0xc0, 0x9e, 0xce, 0x61, 0xa1, 0x1b, 0xac, 0xee, 0x10, 0x20, 0x05, 0x01, 0xd9, ++ 0x85, 0xb1, 0x9d, 0xe9, 0x96, 0xa8, 0x79, 0x90, 0x43, 0x26, 0xdb, 0xd8, 0x73, 0xda, 0xec, 0xb1, ++ 0xa7, 0x9a, 0x1d, 0x57, 0x4c, 0xe3, 0xd4, 0x83, 0xf1, 0x15, 0xa5, 0x23, 0x46, 0x66, 0x1e, 0x9a, ++ 0x92, 0x96, 0x36, 0x15, 0x1e, 0x61, 0x22, 0x37, 0xd2, 0xdb, 0x38, 0xcd, 0x59, 0x6b, 0xc9, 0x96, ++ 0xde, 0x86, 0x52, 0xed, 0x67, 0x5a, 0xa9, 0x44, 0x17, 0xb1, 0x96, 0x66, 0xcc, 0xc6, 0x3e, 0x86, ++ 0x43, 0xfd, 0xe5, 0xcd, 0xe3, 0xc6, 0xe6, 0x2b, 0xf2, 0x83, 0xbb, 0xdf, 0x7d, 0x26, 0x61, 0xfd, ++ 0x38, 0x11, 0xf3, 0x16, 0x2a, 0xc5, 0x7e, 0x68, 0xed, 0x24, 0x7d, 0x5c, 0xb8, 0x62, 0x75, 0x11, ++ 0x27, 0x70, 0xff, 0xad, 0xac, 0xa1, 0x37, 0x9a, 0x1e, 0xd5, 0xcc, 0xd7, 0x6d, 0xc5, 0x80, 0x70, ++ 0xee, 0xd1, 0x06, 0xbc, 0x43, 0x32, 0xc5, 0x79, 0x98, 0x99, 0xb9, 0xa4, 0x8b, 0xb2, 0x9b, 0xd1, ++ 0xd0, 0x13, 0x1e, 0x09, 0x8c, 0xfa, 0x57, 0x5e, 0xbd, 0xb8, 0x18, 0x71, 0xe2, 0x3f, 0xb2, 0x13, ++ 0x73, 0xaa, 0xb1, 0x9c, 0xc7, 0xae, 0x8a, 0x16, 0x7d, 0xab, 0x94, 0x1d, 0x3a, 0x52, 0xc4, 0xaa, ++ 0xb2, 0x4d, 0xef, 0xca, 0x26, 0x90, 0x6a, 0xa0, 0x99, 0xeb, 0xb3, 0xf0, 0x23, 0x33, 0x0f, 0x4d, ++ 0xfb, 0x06, 0xf4, 0x21, 0x29, 0x41, 0x7b, 0x5a, 0xf0, 0x67, 0xaf, 0x77, 0xee, 0xe7, 0x8a, 0x06, ++ 0x10, 0x8c, 0x8d, 0x8e, 0x1c, 0x99, 0x24, 0xaa, 0xc4, 0x18, 0xa4, 0xff, 0x3d, 0x2c, 0x63, 0x8c, ++ 0xe6, 0x97, 0xa1, 0xfb, 0x4d, 0x9f, 0xd7, 0x2c, 0xfa, 0x95, 0xeb, 0x3a, 0x74, 0xa4, 0x4b, 0x97, ++ 0x0b, 0xce, 0x33, 0xf7, 0x9d, 0x4a, 0x64, 0x93, 0x06, 0xef, 0x3c, 0x3b, 0x76, 0x80, 0xfe, 0xce, ++ 0x98, 0x20, 0xc8, 0x33, 0xf2, 0x76, 0xd5, 0xe6, 0x49, 0xd4, 0x9f, 0x95, 0xe9, 0x99, 0x2d, 0x20, ++ 0xb6, 0x6e, 0x5d, 0x08, 0x21, 0x27, 0x63, 0x6b, 0xa8, 0xed, 0x9a, 0xbf, 0xbd, 0x38, 0x67, 0x6e, ++ 0x11, 0xf4, 0x40, 0x5f, 0x6d, 0xc4, 0xb7, 0xe8, 0x59, 0xf8, 0x3f, 0x9c, 0xfb, 0x5e, 0x79, 0xf4, ++ 0xbd, 0xa0, 0x6e, 0xff, 0xbc, 0x6d, 0x07, 0xf8, 0xae, 0x02, 0xa6, 0x84, 0xcb, 0xb8, 0x99, 0xa0, ++ 0x0f, 0xed, 0x81, 0x35, 0x9a, 0xfd, 0x6d, 0x58, 0x37, 0xe9, 0x15, 0x74, 0xe8, 0x8b, 0x96, 0xed, ++ 0xf3, 0x40, 0x53, 0x66, 0x27, 0xec, 0x69, 0x0f, 0x92, 0x6b, 0xfd, 0xe9, 0x11, 0xf1, 0x5a, 0x40, ++ 0x5d, 0xe4, 0x24, 0xa7, 0x14, 0xff, 0x3c, 0x9b, 0x9c, 0x92, 0x91, 0x37, 0x6e, 0xf3, 0x8e, 0xe4, ++ 0xbf, 0x50, 0x37, 0x9e, 0x5e, 0xd7, 0xe2, 0x7c, 0x57, 0x01, 0x53, 0x42, 0x84, 0x5c, 0xad, 0x50, ++ 0x47, 0xde, 0x57, 0x0f, 0xe4, 0x71, 0xef, 0xe0, 0xc3, 0x85, 0x92, 0x90, 0xe3, 0x2d, 0x09, 0xde, ++ 0x2e, 0x4e, 0x95, 0x3b, 0xd3, 0x51, 0xb6, 0x8d, 0xe1, 0x39, 0x05, 0x2a, 0x54, 0xa1, 0x4a, 0x4e, ++ 0xc1, 0xe7, 0x5e, 0x56, 0xe1, 0x3e, 0xe0, 0xb6, 0xe4, 0x40, 0x27, 0xed, 0x19, 0x61, 0xcb, 0xe7, ++ 0xd6, 0xc0, 0xf5, 0xaa, 0x69, 0xf7, 0xbb, 0x11, 0x75, 0xbd, 0xc4, 0xf8, 0x33, 0xd0, 0xee, 0xc0, ++ 0x21, 0xa3, 0x14, 0x0e, 0x49, 0xac, 0xdb, 0xd5, 0xd6, 0xd0, 0x10, 0x5e, 0xbc, 0x2a, 0xdc, 0xa3, ++ 0x23, 0x53, 0x4d, 0x6f, 0xab, 0x16, 0x3e, 0x51, 0x2f, 0xd3, 0xe5, 0x98, 0xf3, 0xce, 0xe8, 0x53, ++ 0xf4, 0xeb, 0x75, 0x14, 0xb3, 0xbc, 0x16, 0x02, 0xc7, 0x8e, 0xba, 0x03, 0x06, 0x6c, 0x1c, 0xeb, ++ 0x6e, 0x3b, 0xe4, 0x46, 0xa3, 0x70, 0x26, 0x60, 0x77, 0x59, 0xd0, 0x50, 0xa0, 0x11, 0x05, 0x3b, ++ 0x8e, 0x7f, 0xae, 0x1e, 0x0b, 0xe2, 0x1d, 0x03, 0x45, 0xc9, 0xe7, 0xe3, 0x05, 0x5a, 0x12, 0x7f, ++ 0xc0, 0x9f, 0x93, 0x87, 0x90, 0x63, 0x73, 0xf4, 0x79, 0xa0, 0xbc, 0x8e, 0xdf, 0x13, 0xd1, 0x9f, ++ 0x90, 0x66, 0x6f, 0x74, 0xfc, 0xdb, 0xc7, 0xb3, 0x2b, 0xd8, 0xcd, 0x0b, 0x16, 0x8f, 0xfd, 0x66, ++ 0xf5, 0x93, 0xb8, 0xc5, 0xc2, 0xe1, 0x85, 0x40, 0x5a, 0x6e, 0x21, 0x60, 0xc0, 0x1e, 0x06, 0x93, ++ 0x5a, 0x4f, 0x02, 0xd5, 0x80, 0xaf, 0x43, 0x96, 0xc9, 0x77, 0xd6, 0xdd, 0x79, 0x6e, 0xc8, 0x4f, ++ 0x84, 0xc9, 0x50, 0x38, 0xe7, 0xf5, 0xea, 0xd2, 0xde, 0xc6, 0x40, 0xbb, 0xb5, 0xa8, 0xf6, 0xc9, ++ 0x19, 0xb2, 0xe7, 0x18, 0x63, 0x69, 0xa5, 0xbd, 0x3b, 0xf4, 0x6d, 0x02, 0x04, 0x48, 0xa9, 0xb2, ++ 0x6d, 0xb3, 0x70, 0xf6, 0x30, 0x97, 0x50, 0xa6, 0x13, 0xba, 0xbe, 0xf5, 0x29, 0x87, 0x2b, 0xb3, ++ 0x75, 0x79, 0x5a, 0x3f, 0x22, 0xa3, 0x66, 0x59, 0xb5, 0xae, 0x48, 0x94, 0xeb, 0xbd, 0x98, 0x79, ++ 0x5f, 0x14, 0x7d, 0xc6, 0xf6, 0x45, 0xd9, 0x1f, 0x65, 0x91, 0x64, 0xf1, 0x21, 0x17, 0xba, 0x14, ++ 0xe0, 0x44, 0x4a, 0x58, 0xa8, 0x92, 0x3b, 0x63, 0x32, 0x90, 0x37, 0xb3, 0xa5, 0x4b, 0x17, 0x44, ++ 0xb3, 0x35, 0x22, 0x1b, 0x57, 0xcd, 0xf9, 0xe2, 0x04, 0x0b, 0x28, 0x93, 0xe5, 0x41, 0x15, 0x35, ++ 0x52, 0x09, 0xa5, 0x92, 0x8e, 0x02, 0x51, 0xc3, 0xab, 0x7b, 0x84, 0x43, 0x86, 0x78, 0x18, 0x09, ++ 0xb4, 0x9e, 0x04, 0x69, 0xc3, 0x9d, 0x86, 0xef, 0x51, 0xee, 0x6f, 0x79, 0xf2, 0xdc, 0x53, 0x9e, ++ 0x32, 0xa7, 0x0d, 0x30, 0xc6, 0xd2, 0x89, 0xb9, 0x76, 0x2b, 0xda, 0x04, 0x08, 0x90, 0x91, 0xa7, ++ 0xb7, 0x16, 0x90, 0xd9, 0x50, 0x7a, 0xf0, 0x29, 0x35, 0x0d, 0x01, 0xdc, 0x7b, 0x4a, 0x7d, 0x16, ++ 0xc6, 0x4c, 0x78, 0x24, 0x75, 0x6e, 0x9f, 0xbb, 0xb1, 0xa5, 0x60, 0x07, 0x0e, 0xfc, 0x8d, 0x4c, ++ 0xa3, 0xb9, 0xaf, 0x95, 0x4b, 0x54, 0xdd, 0x48, 0xc0, 0x13, 0x8c, 0x6c, 0xd8, 0x6d, 0x76, 0xb9, ++ 0x50, 0xf9, 0xfc, 0xf3, 0x6c, 0xb8, 0xb4, 0x47, 0x52, 0x78, 0x71, 0x85, 0xc9, 0x9c, 0x2c, 0xf9, ++ 0xe8, 0x02, 0xed, 0x1f, 0xa6, 0x3f, 0x29, 0x36, 0x50, 0x9c, 0x65, 0x2d, 0x5a, 0x5d, 0xc7, 0x02, ++ 0x6a, 0x18, 0x56, 0x84, 0xa4, 0xc7, 0x2f, 0xab, 0x46, 0x5f, 0xf9, 0x1f, 0x3e, 0x1a, 0x6d, 0x18, ++ 0x9c, 0x03, 0x7a, 0xf1, 0xf5, 0xc1, 0xdc, 0x2d, 0x78, 0xd2, 0xb6, 0xda, 0x77, 0x92, 0x45, 0x03, ++ 0x57, 0x52, 0xda, 0x81, 0xf8, 0xe8, 0xcb, 0x4a, 0x07, 0x9d, 0x36, 0x6f, 0xde, 0x01, 0x6a, 0x52, ++ 0x4a, 0xc3, 0x8f, 0x5b, 0x9c, 0x36, 0x67, 0x3c, 0x0d, 0x6f, 0x72, 0x22, 0x44, 0x42, 0xab, 0xc3, ++ 0x6f, 0x43, 0x29, 0x97, 0xd2, 0x2d, 0xb5, 0x22, 0xea, 0xb9, 0x4b, 0x33, 0x66, 0x63, 0x1f, 0x43, ++ 0xbc, 0xd8, 0xa3, 0x2e, 0xcd, 0x30, 0x94, 0xba, 0x33, 0xe2, 0x3d, 0xe7, 0x0d, 0xca, 0x83, 0xd8, ++ 0x67, 0x05, 0x8e, 0xd0, 0xdc, 0x80, 0xa7, 0x77, 0x88, 0xb5, 0x19, 0xad, 0x99, 0x75, 0xcf, 0x05, ++ 0x51, 0x81, 0x31, 0x22, 0x1d, 0xe5, 0x27, 0x05, 0xcf, 0x98, 0xea, 0xe6, 0x0f, 0xee, 0x36, 0x81, ++ 0x99, 0x58, 0x05, 0xe2, 0x83, 0x2b, 0x46, 0xa4, 0xd4, 0x34, 0x04, 0xf6, 0x2f, 0xeb, 0x37, 0x58, ++ 0xff, 0x25, 0x46, 0xe3, 0x2e, 0xf6, 0x72, 0x91, 0xc1, 0x61, 0x86, 0x38, 0x70, 0xec, 0xe2, 0x25, ++ 0x5b, 0x37, 0xcf, 0x04, 0xf1, 0xf2, 0xd0, 0xd4, 0x54, 0x97, 0x4d, 0xbe, 0xbf, 0x1c, 0xd2, 0x37, ++ 0xd1, 0x6b, 0xd3, 0xd8, 0xfd, 0xa7, 0xc4, 0x1c, 0x20, 0x58, 0x83, 0x12, 0x24, 0x4d, 0xa8, 0x6b, ++ 0x1b, 0x42, 0xbe, 0x79, 0x81, 0xd3, 0x40, 0x39, 0xc2, 0xf7, 0x98, 0xc4, 0x4b, 0xac, 0x9d, 0x42, ++ 0x76, 0xf1, 0xce, 0x8f, 0xb1, 0x44, 0x10, 0x9f, 0xd1, 0x4d, 0x26, 0x31, 0x62, 0x2b, 0xb6, 0xf1, ++ 0x64, 0x8d, 0x1a, 0x60, 0x4f, 0x67, 0xd1, 0xb1, 0xec, 0x56, 0x77, 0x08, 0x10, 0xe3, 0xe1, 0x8d, ++ 0x29, 0xe5, 0xb3, 0x49, 0x47, 0x01, 0xc9, 0x80, 0xb4, 0xdc, 0x42, 0xc0, 0x43, 0x3c, 0x0c, 0xe5, ++ 0x59, 0xc7, 0x96, 0x65, 0x13, 0x48, 0x35, 0x50, 0xad, 0x94, 0xb8, 0x78, 0xf0, 0xf8, 0xe6, 0xc7, ++ 0x68, 0xe8, 0x0f, 0xe5, 0x46, 0x7d, 0xca, 0x2f, 0xbf, 0x5c, 0x0c, 0xd9, 0x71, 0xfe, 0x59, 0xe8, ++ 0x39, 0x69, 0x3e, 0xc7, 0x5b, 0x98, 0xed, 0x2a, 0x70, 0xc4, 0xe6, 0x3f, 0x7e, 0x10, 0x6f, 0x69, ++ 0x94, 0x45, 0xdd, 0xb6, 0xfb, 0x6c, 0xce, 0x78, 0x1a, 0xde, 0xe4, 0x44, 0x88, 0x84, 0x95, 0x45, ++ 0x4b, 0xbb, 0x42, 0x8a, 0xed, 0x6b, 0xf4, 0x7e, 0x90, 0x8f, 0xe9, 0x41, 0x82, 0x30, 0xb1, 0xbb, ++ 0x07, 0xab, 0x26, 0x72, 0x94, 0x50, 0x7f, 0x0d, 0x55, 0xe5, 0x47, 0xea, 0x17, 0x9d, 0x46, 0xab, ++ 0x71, 0x5a, 0xe8, 0xfd, 0x25, 0x14, 0x6f, 0x92, 0x84, 0xa8, 0x61, 0xdb, 0x75, 0xb6, 0xf0, 0x5a, ++ 0x2b, 0x15, 0xea, 0x28, 0xa5, 0xbb, 0x2c, 0x04, 0x4d, 0xdf, 0xb7, 0x06, 0x0c, 0xd8, 0x38, 0x15, ++ 0x26, 0x08, 0x32, 0x7c, 0xdd, 0xfc, 0xa4, 0xd8, 0x83, 0x35, 0x57, 0xb4, 0xab, 0xb7, 0x9a, 0x08, ++ 0x20, 0xdb, 0xd9, 0xdf, 0x38, 0xf1, 0x48, 0x97, 0x4b, 0x30, 0x8b, 0x3d, 0x7a, 0x58, 0xc6, 0xdb, ++ 0xfa, 0x7e, 0x39, 0xf0, 0x58, 0x1c, 0xe8, 0x18, 0x6d, 0x87, 0x34, 0x14, 0x28, 0x95, 0x90, 0x7e, ++ 0x49, 0x4b, 0x1b, 0xeb, 0x0f, 0xd1, 0x11, 0xfa, 0x69, 0x8c, 0x1c, 0x87, 0xcd, 0xd4, 0x85, 0x4b, ++ 0x22, 0x2b, 0x80, 0xbe, 0xda, 0x4b, 0xad, 0x13, 0xb2, 0x33, 0x7e, 0xfb, 0x35, 0xbc, 0xf2, 0x2b, ++ 0xa6, 0xe2, 0xd0, 0x86, 0x3d, 0xbe, 0x47, 0xc1, 0x6c, 0xf5, 0x3e, 0x40, 0x80, 0x14, 0x04, 0xe2, ++ 0xcd, 0x82, 0x4b, 0xd3, 0xe8, 0x24, 0xfb, 0x28, 0xb7, 0x4a, 0x5c, 0x3c, 0x78, 0x7c, 0x73, 0x82, ++ 0x8c, 0x8f, 0xf7, 0x7f, 0xe9, 0x58, 0xf8, 0x87, 0xbc, 0xca, 0x12, 0x25, 0x4a, 0xbe, 0x26, 0x8f, ++ 0xd7, 0xb8, 0x38, 0x7b, 0x18, 0xaa, 0x28, 0x53, 0xe8, 0x5d, 0x5f, 0x9b, 0xf5, 0xa2, 0xf4, 0xb8, ++ 0x46, 0xa6, 0x9a, 0xde, 0x95, 0x2c, 0x7c, 0xa2, 0x5e, 0x65, 0x09, 0xf3, 0x25, 0x5f, 0x13, 0xa6, ++ 0x88, 0xac, 0x45, 0xbd, 0xee, 0xef, 0xf1, 0x4c, 0x8d, 0xcc, 0x3b, 0x6a, 0xd4, 0xb5, 0x4e, 0xac, ++ 0x44, 0x56, 0xc3, 0xbf, 0x77, 0x96, 0x99, 0x26, 0xa7, 0x66, 0xfc, 0x35, 0x6a, 0xbb, 0x27, 0x56, ++ 0xc2, 0x6f, 0xca, 0xe6, 0x72, 0xd9, 0x96, 0x70, 0x80, 0xa3, 0x49, 0x48, 0x90, 0xf7, 0xe5, 0x6f, ++ 0x93, 0xee, 0xfb, 0xc4, 0x6f, 0x3c, 0xb1, 0x75, 0x4f, 0x3b, 0xa3, 0xae, 0x9f, 0x19, 0xd3, 0xee, ++ 0xf6, 0x1b, 0x2c, 0x75, 0x51, 0x06, 0xf3, 0x86, 0x3e, 0x8d, 0x4f, 0xc5, 0x49, 0x88, 0x28, 0x1b, ++ 0x09, 0x3e, 0x6a, 0x96, 0x7f, 0xf0, 0x81, 0x17, 0xff, 0xec, 0xc9, 0xfd, 0x39, 0x64, 0xca, 0x3e, ++ 0xa4, 0x12, 0x89, 0xe7, 0xdf, 0x04, 0xa2, 0x45, 0x95, 0xf6, 0xcb, 0x86, 0xcf, 0xf0, 0x30, 0x12, ++ 0xe9, 0x7a, 0x20, 0xce, 0xd7, 0x62, 0xba, 0x74, 0xcd, 0x7c, 0xfe, 0x4e, 0x9c, 0x2f, 0xdd, 0x7a, ++ 0x2a, 0x6d, 0x27, 0xf9, 0xd4, 0xe6, 0xbf, 0x46, 0xd0, 0x3f, 0x2c, 0x65, 0xca, 0xaa, 0x22, 0x6d, ++ 0x54, 0xda, 0x4e, 0x31, 0x6b, 0x0f, 0xbd, 0x8c, 0x63, 0x7e, 0x58, 0xca, 0x57, 0x97, 0x44, 0xda, ++ 0xa2, 0xc1, 0x62, 0x44, 0x3a, 0x09, 0x4e, 0x0a, 0x5d, 0xf3, 0x17, 0x0f, 0x1e, 0x1f, 0x6c, 0xc1, ++ 0xf7, 0x63, 0xe1, 0xa4, 0x20, 0x5b, 0x60, 0xc4, 0xa3, 0x6d, 0xd4, 0xa6, 0x8f, 0xfa, 0x32, 0x63, ++ 0xcf, 0x72, 0x12, 0xb2, 0x0a, 0x9e, 0x1e, 0xac, 0x4e, 0x49, 0xa9, 0xfa, 0x37, 0x98, 0x47, 0x72, ++ 0xaf, 0xdc, 0xba, 0x10, 0x42, 0x4e, 0xc6, 0xd6, 0x93, 0x19, 0xf7, 0xbd, 0xb9, 0x70, 0xce, 0xdc, ++ 0xfd, 0xd5, 0x1f, 0x82, 0xcc, 0x4c, 0x97, 0x15, 0x38, 0x62, 0x73, 0xfe, 0x3f, 0x08, 0xd6, 0xd5, ++ 0xce, 0x0a, 0xdf, 0x63, 0x7b, 0xc3, 0x8d, 0xee, 0xd3, 0xa9, 0x32, 0x99, 0xf1, 0xea, 0x5d, 0x0a, ++ 0x13, 0x04, 0x19, 0x3e, 0x8f, 0x7e, 0x52, 0x6c, 0xa0, 0xfb, 0xca, 0x5a, 0xb4, 0xba, 0x4d, 0x04, ++ 0xe3, 0xcc, 0xde, 0xe8, 0x3b, 0x75, 0x4d, 0xa5, 0x56, 0x73, 0x59, 0x16, 0x2c, 0xdd, 0x39, 0xcc, ++ 0x8b, 0x24, 0xd1, 0x0d, 0x7d, 0x08, 0x87, 0x8a, 0xe9, 0x2f, 0x55, 0xcf, 0x5d, 0x23, 0x60, 0x24, ++ 0x7e, 0xb7, 0x69, 0xc8, 0xbf, 0xe9, 0x02, 0xca, 0xb3, 0x41, 0x74, 0xaf, 0x9d, 0x3d, 0x66, 0xb7, ++ 0xed, 0x59, 0x92, 0x0c, 0xd0, 0xd5, 0xb3, 0xbf, 0xfc, 0x7a, 0xd7, 0x01, 0x02, 0x24, 0xb5, 0x59, ++ 0xe5, 0x1f, 0x35, 0x4b, 0xde, 0x78, 0xa1, 0xea, 0x9e, 0x76, 0x85, 0x9f, 0xfd, 0x32, 0x65, 0x1f, ++ 0xb8, 0xfb, 0x11, 0xec, 0xca, 0x87, 0x9d, 0x71, 0x02, 0xe4, 0x14, 0xa8, 0x93, 0xc1, 0xeb, 0xfb, ++ 0x7d, 0x3f, 0xfd, 0x78, 0x2c, 0x0e, 0x74, 0x0c, 0xd7, 0xa2, 0x1a, 0x0a, 0x14, 0xab, 0x48, 0x3f, ++ 0x96, 0xb5, 0x84, 0xd7, 0x19, 0xd6, 0x2b, 0xfc, 0xe3, 0xdd, 0x11, 0x82, 0xc7, 0x60, 0xa1, 0xb5, ++ 0x05, 0x5b, 0x7f, 0x13, 0x76, 0xea, 0x9a, 0x89, 0xac, 0xe6, 0xb2, 0x2c, 0x58, 0x79, 0x72, 0x5b, ++ 0x18, 0xca, 0x2a, 0xc9, 0x12, 0x34, 0x36, 0xff, 0xa6, 0x14, 0xf6, 0x61, 0xc2, 0x3a, 0xb3, 0xca, ++ 0x87, 0x41, 0xc4, 0x88, 0x74, 0x12, 0x9c, 0x14, 0xba, 0x25, 0x2e, 0x1e, 0x3c, 0x3e, 0xd8, 0x41, ++ 0x6b, 0x60, 0x9b, 0x55, 0xd5, 0x9a, 0xbc, 0xe9, 0xdb, 0xbf, 0x62, 0x7c, 0xf8, 0x68, 0x77, 0x60, ++ 0xd4, 0x30, 0xac, 0xcb, 0x8b, 0x4d, 0x5e, 0x95, 0x8c, 0xbe, 0x31, 0x3e, 0x7c, 0x34, 0xda, 0x30, ++ 0x04, 0x23, 0xb2, 0xc2, 0x07, 0xb7, 0x09, 0xcb, 0x31, 0x06, 0x29, 0x4f, 0x9e, 0x0b, 0x68, 0x23, ++ 0xbb, 0x73, 0x85, 0x5c, 0x59, 0x60, 0xeb, 0xb7, 0x66, 0x07, 0x7a, 0x0d, 0x1a, 0x57, 0xc5, 0x73, ++ 0x37, 0xfc, 0x72, 0x23, 0xb0, 0x38, 0x13, 0x30, 0xda, 0xcd, 0x68, 0x28, 0x50, 0xe9, 0xe3, 0xfc, ++ 0xd3, 0x9b, 0x8a, 0xb9, 0x1f, 0x1d, 0x21, 0x98, 0xd9, 0x5b, 0x76, 0xd4, 0x6b, 0xa9, 0x9c, 0x9b, ++ 0x9b, 0xa8, 0x5c, 0x83, 0x61, 0x91, 0xa3, 0x20, 0x2d, 0x37, 0xf1, 0x30, 0x60, 0x0f, 0x03, 0xa8, ++ 0x55, 0xa2, 0x83, 0xe0, 0x1a, 0x52, 0x2e, 0xce, 0xfe, 0x9e, 0xc3, 0xa9, 0x91, 0xe5, 0x5e, 0xa2, ++ 0x3a, 0xe1, 0xaa, 0x77, 0xc8, 0x7f, 0x9b, 0xec, 0x14, 0x27, 0x88, 0x9a, 0xf7, 0x86, 0x41, 0xe1, ++ 0xc4, 0xbc, 0x21, 0x45, 0x97, 0xd4, 0x7a, 0x3f, 0x48, 0xa6, 0x95, 0xc1, 0x41, 0x18, 0xb9, 0xbc, ++ 0x9e, 0xf3, 0x23, 0x90, 0x17, 0x7b, 0x39, 0xa9, 0x81, 0xd1, 0x43, 0x1c, 0x38, 0x76, 0x71, 0xf3, ++ 0xa1, 0x49, 0xf6, 0xf4, 0xa9, 0xee, 0x38, 0xcc, 0x39, 0x10, 0x79, 0xaa, 0x97, 0x89, 0x42, 0x49, ++ 0x81, 0x92, 0x2f, 0x2b, 0x91, 0x1f, 0x70, 0x5b, 0x72, 0x20, 0xf2, 0x97, 0xed, 0xd1, 0x84, 0x92, ++ 0x89, 0xd4, 0x88, 0x6c, 0x9f, 0xb2, 0x62, 0x0e, 0x10, 0x2c, 0xa0, 0x09, 0x12, 0xc7, 0x54, 0xd4, ++ 0x14, 0xaf, 0x3f, 0x4c, 0x1b, 0x2e, 0x2d, 0x61, 0xf5, 0x1e, 0x8d, 0xb0, 0xa3, 0x27, 0x0b, 0xaf, ++ 0xb9, 0x83, 0xdc, 0x3d, 0xbb, 0xda, 0x0e, 0x33, 0x9f, 0x04, 0x8f, 0xcb, 0x55, 0xb3, 0xf1, 0x83, ++ 0xac, 0x54, 0x2e, 0xa0, 0xd1, 0xa9, 0xb0, 0x10, 0xf7, 0xfa, 0x99, 0x18, 0x30, 0xe6, 0xe0, 0x54, ++ 0x8f, 0x07, 0x63, 0xcf, 0x7a, 0xbf, 0x8e, 0x41, 0xd8, 0x29, 0x7c, 0x80, 0xc3, 0x28, 0x08, 0x07, ++ 0xf0, 0xc8, 0xc7, 0xd6, 0xb4, 0x0b, 0x1f, 0xc9, 0xf6, 0x88, 0x93, 0x4c, 0x98, 0x67, 0x74, 0xc8, ++ 0xfe, 0x5d, 0x8b, 0x32, 0x5f, 0xab, 0xe1, 0xd3, 0x5c, 0x81, 0x1d, 0x5b, 0xb6, 0x9e, 0xf8, 0x5d, ++ 0x01, 0x78, 0xcd, 0xd1, 0x71, 0x5d, 0x93, 0x42, 0x9d, 0xe0, 0x9b, 0x63, 0xc6, 0x72, 0x1a, 0x78, ++ 0x08, 0x46, 0xa7, 0x47, 0x0e, 0xad, 0x12, 0x55, 0x62, 0x0c, 0x52, 0x9e, 0xff, 0x16, 0xd0, 0x46, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x0d, 0x1d, 0xd8, 0x54, 0x78, 0x47, 0x88, 0xdc, 0xce, 0xea, 0xe0, 0xb2, 0xa7, 0x6f, 0xa2, 0x1d, ++ 0x30, 0x57, 0x54, 0x51, 0x24, 0x68, 0x6c, 0x3d, 0x8f, 0x28, 0x2f, 0xc2, 0x47, 0x74, 0xa5, 0x57, ++ 0x2d, 0xc6, 0x01, 0x8b, 0x40, 0xb6, 0xc0, 0x4b, 0x85, 0xda, 0x6b, 0x8f, 0xdd, 0x37, 0x64, 0xc6, ++ 0x1f, 0x61, 0x0c, 0xbb, 0x86, 0x64, 0x49, 0xf2, 0xf3, 0xf1, 0xb1, 0x8b, 0xd5, 0xa7, 0xf5, 0x61, ++ 0x35, 0x0c, 0x2b, 0x42, 0x52, 0x82, 0xf6, 0xb4, 0x23, 0xce, 0x9d, 0xee, 0x1f, 0x0d, 0xd7, 0x0c, ++ 0xd9, 0x2d, 0x74, 0x9f, 0xf3, 0x0a, 0xd6, 0x49, 0x42, 0x54, 0xd1, 0x8c, 0xdb, 0x5b, 0x78, 0x2d, ++ 0xdb, 0xdd, 0x2d, 0xfe, 0x11, 0xb0, 0x33, 0xcd, 0xbb, 0x57, 0x24, 0x4a, 0x94, 0xbf, 0x4c, 0xdd, ++ 0xba, 0x0b, 0x48, 0x8d, 0x28, 0x3d, 0x78, 0xf5, 0xfb, 0xe7, 0xe1, 0x6e, 0xdc, 0x25, 0xdf, 0x0b, ++ 0x3d, 0x4a, 0x8c, 0x05, 0x5c, 0x2f, 0xe4, 0xe1, 0x41, 0xc2, 0xcf, 0x70, 0xe0, 0x1b, 0x07, 0x4a, ++ 0x8d, 0xf7, 0x3a, 0xae, 0x98, 0x05, 0x6b, 0xc5, 0x21, 0x2a, 0x89, 0x46, 0x8c, 0xcc, 0x3c, 0xf7, ++ 0x36, 0x84, 0xbf, 0xf2, 0xc1, 0x65, 0x80, 0x72, 0x47, 0x2d, 0xf3, 0x4b, 0x96, 0x9b, 0xf9, 0x84, ++ 0xa8, 0x77, 0x9c, 0x62, 0xd6, 0x1e, 0xb9, 0xdb, 0xc6, 0xfc, 0xb0, 0x57, 0xae, 0xed, 0x88, 0x77, ++ 0xc3, 0x17, 0x07, 0x37, 0x03, 0x84, 0x05, 0x32, 0x1d, 0x43, 0xd2, 0x2b, 0x56, 0x85, 0xff, 0x17, ++ 0x4d, 0x68, 0xa9, 0x29, 0x08, 0x66, 0x18, 0x31, 0x58, 0x8a, 0x35, 0xc8, 0x53, 0xdf, 0xed, 0x68, ++ 0xa5, 0x6a, 0x44, 0x36, 0xae, 0x59, 0x31, 0x07, 0x08, 0x16, 0x50, 0xe5, 0x09, 0x82, 0x2a, 0x6a, ++ 0x1d, 0x91, 0x55, 0xda, 0x64, 0xde, 0xac, 0x76, 0x0a, 0xf2, 0x44, 0x4d, 0x9a, 0x43, 0xc1, 0x91, ++ 0x3c, 0x32, 0x41, 0xd4, 0x2d, 0x72, 0x77, 0xa3, 0xdc, 0x22, 0x54, 0x13, 0x26, 0x69, 0x1d, 0x32, ++ 0xef, 0xa9, 0xcb, 0x6d, 0x32, 0x6f, 0x56, 0x3b, 0x05, 0x79, 0x22, 0xc7, 0x4d, 0xc0, 0x81, 0xa9, ++ 0x45, 0x2e, 0x0e, 0x6e, 0x06, 0xcb, 0x0a, 0x64, 0x3a, 0x86, 0x67, 0x56, 0xac, 0xc9, 0x3d, 0x2e, ++ 0xaa, 0x87, 0xc5, 0x03, 0x34, 0xa4, 0x5c, 0x5f, 0x3f, 0xff, 0x45, 0x91, 0xe1, 0x09, 0xbc, 0x87, ++ 0x7c, 0x47, 0x30, 0xa9, 0x5d, 0x53, 0xe7, 0x4e, 0x4a, 0x42, 0x81, 0x69, 0xd2, 0xd9, 0x52, 0x47, ++ 0x9d, 0x7b, 0xb7, 0x20, 0x84, 0x9c, 0x4f, 0x6f, 0xe5, 0x32, 0x2d, 0xb9, 0xb1, 0xe0, 0x5f, 0x7b, ++ 0x2c, 0xbe, 0xcc, 0x5a, 0x31, 0xeb, 0x53, 0x09, 0x18, 0x3a, 0xf0, 0xec, 0x1b, 0x45, 0x7e, 0xbe, ++ 0x16, 0x5f, 0x66, 0x2d, 0xf9, 0x94, 0xc8, 0xe5, 0x0c, 0x1d, 0x78, 0x76, 0xec, 0xc3, 0x3f, 0x5f, ++ 0x03, 0x88, 0x94, 0xb0, 0x93, 0xe7, 0x76, 0xc6, 0x64, 0xe3, 0x6e, 0xa5, 0x89, 0x96, 0x2e, 0x88, ++ 0x5e, 0x6c, 0xb0, 0x17, 0x87, 0x18, 0x4a, 0x5d, 0xf8, 0x71, 0xff, 0x92, 0xe7, 0x65, 0xa0, 0x6c, ++ 0x4e, 0xe0, 0x3d, 0x99, 0x9b, 0x81, 0x6e, 0xf7, 0x3c, 0x69, 0x5b, 0x6d, 0xda, 0x49, 0xc3, 0xe0, ++ 0xcb, 0x51, 0xa0, 0x70, 0x0d, 0x29, 0x17, 0x67, 0x7f, 0x4f, 0x80, 0xb5, 0xa9, 0x93, 0x2f, 0x51, ++ 0x3e, 0xc2, 0x18, 0xb5, 0xcf, 0xc8, 0x92, 0x27, 0x25, 0x21, 0xa1, 0xd5, 0x69, 0x8d, 0x29, 0xc2, ++ 0x15, 0xd7, 0xf2, 0x9d, 0x6a, 0x73, 0xbe, 0x23, 0x68, 0xfe, 0x16, 0xd3, 0x65, 0x55, 0x11, 0xd7, ++ 0xfc, 0xad, 0xd2, 0x53, 0xbd, 0x11, 0x04, 0x57, 0xa5, 0x82, 0xe8, 0x9d, 0xf9, 0x7a, 0xcc, 0xad, ++ 0xae, 0xa4, 0x77, 0xc1, 0x33, 0x13, 0x55, 0x94, 0x0e, 0xf9, 0x6c, 0xde, 0x7f, 0x02, 0xd4, 0xa4, ++ 0x63, 0x26, 0x3c, 0x12, 0xdb, 0x37, 0xae, 0xbc, 0xb9, 0xb3, 0x30, 0xe2, 0x07, 0x7e, 0xa7, 0x26, ++ 0x0e, 0x95, 0x4c, 0xe4, 0xeb, 0xa0, 0xfe, 0x1a, 0xaa, 0x09, 0x8e, 0x17, 0x2e, 0xf9, 0x8c, 0x95, ++ 0x7f, 0xcf, 0xa4, 0x19, 0xce, 0xb4, 0x91, 0x88, 0x2e, 0xa1, 0xef, 0xcc, 0x5b, 0x4f, 0x7c, 0xcf, ++ 0x31, 0x2f, 0x99, 0x80, 0x55, 0x35, 0xff, 0x7f, 0x12, 0xc8, 0xb4, 0xa1, 0x81, 0x06, 0xbf, 0x2f, ++ 0xdf, 0xfe, 0x9f, 0x3c, 0x16, 0x07, 0x3a, 0x06, 0x8a, 0x51, 0x0d, 0x05, 0x0a, 0xb4, 0x24, 0xfe, ++ 0xf1, 0xb0, 0x0a, 0x07, 0xc5, 0x56, 0x8c, 0x8b, 0x6b, 0x68, 0x08, 0x2f, 0x5e, 0x15, 0x6e, 0xb0, ++ 0x60, 0xae, 0xa8, 0xa2, 0x48, 0xd0, 0xd8, 0x7a, 0xdd, 0x50, 0x5e, 0x47, 0x8e, 0xe8, 0x89, 0xae, ++ 0x79, 0x1c, 0x4f, 0xba, 0x2b, 0xb9, 0x7d, 0xc7, 0xe6, 0xa4, 0x33, 0x45, 0x8a, 0xa0, 0x20, 0x1c, ++ 0x9a, 0xd0, 0x91, 0x52, 0x10, 0xcc, 0x30, 0x62, 0xb0, 0xd7, 0x6a, 0x53, 0xa6, 0x7d, 0x19, 0xd0, ++ 0xf8, 0x8e, 0x60, 0x91, 0xba, 0xa6, 0x0d, 0x9c, 0x94, 0x84, 0xc1, 0xd2, 0x67, 0x71, 0xa4, 0x8e, ++ 0x4c, 0x10, 0x64, 0xf8, 0x79, 0x3b, 0x8b, 0x73, 0xc5, 0x6a, 0xae, 0xab, 0x95, 0xad, 0xf7, 0x10, ++ 0xb5, 0xe6, 0xc9, 0xb8, 0xb2, 0xc0, 0x15, 0xad, 0xcc, 0x0e, 0xf4, 0x1a, 0x34, 0xae, 0x49, 0xe6, ++ 0x41, 0x0d, 0xbc, 0xac, 0x01, 0x7c, 0x03, 0xaf, 0x0b, 0x80, 0x4e, 0x19, 0x32, 0xc2, 0x55, 0x0d, ++ 0xc7, 0x34, 0xb5, 0xf5, 0x04, 0x33, 0x0c, 0xf9, 0x2c, 0x45, 0xfb, 0x64, 0xc8, 0x8e, 0x97, 0x34, ++ 0x7a, 0x94, 0xdb, 0x0a, 0xb8, 0x5e, 0x0b, 0x01, 0x82, 0x47, 0x5d, 0xe0, 0x03, 0x36, 0x0e, 0x94, ++ 0x7b, 0xec, 0x16, 0xdb, 0xc9, 0x03, 0x98, 0x43, 0x1f, 0xa7, 0xc6, 0x83, 0xc5, 0x44, 0x14, 0xec, ++ 0x0a, 0xb6, 0xfe, 0x26, 0xec, 0x17, 0xf7, 0xd1, 0x9b, 0x0f, 0xa7, 0x58, 0xb0, 0xf2, 0xe4, 0xb6, ++ 0xdc, 0x76, 0x0b, 0x8c, 0x85, 0xe0, 0x4c, 0xc0, 0xee, 0xb2, 0x63, 0xa0, 0x83, 0x22, 0x0a, 0x76, ++ 0xdd, 0x0e, 0xc6, 0x5d, 0xf4, 0xbd, 0xdf, 0x82, 0x73, 0x52, 0xf8, 0xc3, 0x45, 0x50, 0x10, 0x0e, ++ 0xea, 0xf2, 0xb4, 0x7e, 0x44, 0x85, 0xcc, 0xb2, 0xa9, 0x9f, 0x90, 0xeb, 0x15, 0xb9, 0xf3, 0xf2, ++ 0x78, 0x64, 0x82, 0x6b, 0x5a, 0xe4, 0xee, 0x85, 0x7b, 0x44, 0xa8, 0x26, 0x4c, 0xd2, 0x3a, 0x64, ++ 0xbe, 0x28, 0xfa, 0x4f, 0x2f, 0x8a, 0x71, 0x3e, 0xca, 0xe1, 0xc8, 0x21, 0x42, 0x2e, 0xb7, 0x28, ++ 0x86, 0x39, 0x09, 0x59, 0x05, 0x4f, 0x0f, 0x56, 0x27, 0xc5, 0xb5, 0x7d, 0xfa, 0x4c, 0xc2, 0x39, ++ 0xe1, 0x3c, 0x87, 0x89, 0xd9, 0xcf, 0xa8, 0x21, 0xaf, 0x70, 0xac, 0xd0, 0x63, 0x39, 0x0d, 0x3c, ++ 0x97, 0xcd, 0x49, 0x06, 0x68, 0x8b, 0xb8, 0xbe, 0x7e, 0x3d, 0x8a, 0xe1, 0x01, 0x12, 0xbb, 0xcd, ++ 0x66, 0x7d, 0x43, 0x01, 0xad, 0xdd, 0x34, 0x35, 0x15, 0x55, 0x82, 0xce, 0x5f, 0x07, 0xd5, 0x7d, ++ 0xeb, 0x8a, 0x79, 0xaf, 0x35, 0xd8, 0x5f, 0xf0, 0x34, 0x7f, 0x0b, 0x88, 0xd3, 0xcb, 0xe9, 0x8a, ++ 0xf2, 0x38, 0x9e, 0xb7, 0x56, 0xb1, 0xfa, 0x4d, 0x0f, 0x8b, 0x66, 0x8a, 0xd7, 0x83, 0x40, 0x38, ++ 0xb0, 0xbd, 0xb6, 0xab, 0xc4, 0x2a, 0x8f, 0x24, 0x60, 0xe8, 0x46, 0x36, 0x6c, 0xd7, 0x3b, 0xbd, ++ 0xe4, 0x67, 0xf8, 0x9a, 0xaf, 0x25, 0x32, 0xa8, 0x03, 0x96, 0x1e, 0xfc, 0x3b, 0x40, 0x7f, 0x67, ++ 0x1c, 0xe9, 0x98, 0x0b, 0x15, 0x83, 0x3f, 0x34, 0x97, 0x12, 0xdf, 0x2e, 0x5c, 0x31, 0xdb, 0xe9, ++ 0xca, 0x29, 0x6d, 0xa1, 0x7c, 0x74, 0x84, 0x25, 0xe2, 0xaf, 0x1b, 0xd6, 0x6f, 0xe1, 0x35, 0x29, ++ 0xd2, 0xe3, 0x47, 0x68, 0x6e, 0x40, 0xb2, 0xda, 0x44, 0xbb, 0xed, 0xb7, 0xad, 0xdb, 0x86, 0xe3, ++ 0xa0, 0x31, 0x3b, 0x25, 0xd8, 0xb3, 0xab, 0x8e, 0xa4, 0xf0, 0xe2, 0xc9, 0x51, 0xfb, 0x58, 0x31, ++ 0x1e, 0x19, 0xc1, 0x6a, 0xf7, 0x39, 0xda, 0xb0, 0x6e, 0x11, 0x2a, 0xe8, 0x13, 0xd5, 0xef, 0x19, ++ 0x9f, 0x8b, 0xee, 0x41, 0x66, 0x26, 0xaa, 0xeb, 0x1c, 0x31, 0xd8, 0x7f, 0xfe, 0x04, 0x6b, 0x8b, ++ 0x56, 0x2a, 0x17, 0x50, 0x89, 0xb5, 0x58, 0x08, 0x9a, 0x7d, 0xad, 0x0c, 0x18, 0x73, 0x70, 0x2a, ++ 0xab, 0xff, 0x08, 0xd2, 0x45, 0xf9, 0xcf, 0x1d, 0xa2, 0x1f, 0xde, 0xf2, 0x27, 0x7b, 0xa6, 0xff, ++ 0xc9, 0xa1, 0xf9, 0x11, 0xef, 0x93, 0xf2, 0xe3, 0x86, 0x4c, 0x75, 0x73, 0xe6, 0x77, 0x1b, 0xa1, ++ 0x69, 0x90, 0xc2, 0x34, 0x37, 0x20, 0x59, 0x6d, 0x22, 0xbc, 0x97, 0xba, 0xb7, 0x8c, 0x43, 0x90, ++ 0x91, 0x1e, 0xa2, 0xa5, 0x8d, 0x86, 0x54, 0xf1, 0xb6, 0x38, 0x56, 0x68, 0xd0, 0xfd, 0xe7, 0x1e, ++ 0x72, 0xd2, 0x7c, 0x4d, 0xb6, 0xf3, 0x19, 0x54, 0xe0, 0x4b, 0x0f, 0x7e, 0xfc, 0x20, 0xde, 0xd2, ++ 0x53, 0x71, 0x68, 0x43, 0xff, 0x5f, 0xc2, 0x81, 0x36, 0x9b, 0x1f, 0x20, 0x40, 0x0a, 0x02, 0x71, ++ 0x17, 0x27, 0xab, 0xfc, 0x88, 0xc9, 0x5b, 0xa7, 0x91, 0xfd, 0xe3, 0x15, 0x2a, 0xb1, 0x25, 0x27, ++ 0x4f, 0x98, 0xf0, 0x48, 0xea, 0xdc, 0xfd, 0xb5, 0xa1, 0x89, 0xc0, 0x0e, 0x1c, 0x3b, 0xd9, 0x98, ++ 0x58, 0xbf, 0x5b, 0xb4, 0x62, 0x15, 0xa6, 0x12, 0x30, 0x74, 0x23, 0x1b, 0x36, 0x8a, 0xfc, 0xbf, ++ 0x02, 0xf0, 0x59, 0x61, 0xe2, 0xba, 0xe5, 0x84, 0xf9, 0x03, 0xf5, 0xc6, 0x4f, 0xe4, 0x34, 0xf0, ++ 0x65, 0xf5, 0xd7, 0xb1, 0x3e, 0x3a, 0x42, 0xf3, 0x71, 0xb6, 0xec, 0x6b, 0xd6, 0x91, 0xfb, 0xf5, ++ 0x70, 0x22, 0x25, 0x2c, 0x54, 0x49, 0xfc, 0xd0, 0x19, 0x48, 0xfa, 0xb8, 0xb3, 0xc4, 0xea, 0x22, ++ 0x3f, 0xba, 0xd5, 0x64, 0xbe, 0x95, 0x01, 0x65, 0xb8, 0xc1, 0x3a, 0xb6, 0xaf, 0xff, 0x33, 0xba, ++ 0x33, 0xdf, 0xc0, 0xe1, 0xb7, 0x8f, 0x1a, 0xfb, 0xeb, 0xcb, 0x41, 0x67, 0xce, 0xe2, 0x8b, 0xdf, ++ 0x28, 0x9d, 0x7e, 0x98, 0x36, 0x5c, 0x5a, 0xc2, 0x29, 0x3c, 0xd9, 0xa3, 0x85, 0x4e, 0x16, 0x9d, ++ 0xc5, 0xc4, 0xec, 0x94, 0xe6, 0x89, 0xe9, 0x7d, 0xd5, 0x46, 0x0e, 0xa2, 0x87, 0x6a, 0xa3, 0xc4, ++ 0xcc, 0xfa, 0x86, 0x02, 0x99, 0x79, 0x68, 0x6a, 0x2a, 0xaa, 0xc7, 0x5f, 0xbe, 0x0e, 0x69, 0xfa, ++ 0xad, 0x2c, 0xe3, 0x71, 0xa0, 0xf4, 0x23, 0x52, 0x6a, 0x1a, 0x02, 0x7b, 0xf6, 0x94, 0xfa, 0x2c, ++ 0x34, 0x74, 0xe6, 0x93, 0x23, 0xdf, 0x65, 0xf6, 0xbe, 0x2e, 0x06, 0x8d, 0xd9, 0x7f, 0xcd, 0x74, ++ 0x95, 0x3d, 0x10, 0x67, 0x8a, 0x31, 0x5d, 0x3a, 0x87, 0x3e, 0x7f, 0x27, 0x4e, 0xf6, 0x8f, 0x3d, ++ 0x83, 0x62, 0x76, 0x4a, 0x73, 0xa5, 0x95, 0xdf, 0x8b, 0x23, 0x07, 0x51, 0xa2, 0x35, 0xb0, 0x62, ++ }, ++ { /* 2 */ ++ 0x37, 0xf9, 0x69, 0x1b, 0x71, 0x18, 0x61, 0xcd, 0x69, 0x19, 0x54, 0xd6, 0xaf, 0xcb, 0x37, 0x52, ++ 0x93, 0x8b, 0x03, 0xf8, 0xd8, 0xdb, 0x4a, 0x3b, 0x03, 0x7b, 0x5a, 0xc3, 0x52, 0x7d, 0x93, 0x1c, ++ 0xdb, 0x45, 0x63, 0x4e, 0xe4, 0x87, 0x1e, 0x57, 0x63, 0xc0, 0x4b, 0x19, 0x80, 0x06, 0xdb, 0x1a, ++ 0x38, 0xfb, 0x20, 0xd3, 0x14, 0x34, 0x8d, 0x24, 0x20, 0x69, 0x0f, 0xf7, 0x4e, 0x29, 0x38, 0x02, ++ 0x7f, 0x37, 0x09, 0xad, 0x4d, 0x44, 0x35, 0xa1, 0x09, 0xa2, 0x45, 0x0c, 0x7d, 0xb0, 0x7f, 0x54, ++ 0xb6, 0xa0, 0x72, 0x2f, 0xa6, 0xd4, 0x3e, 0xed, 0x72, 0x3c, 0x9b, 0xc2, 0x28, 0xd8, 0xb6, 0xae, ++ 0xa0, 0x81, 0xad, 0x96, 0xea, 0x47, 0x90, 0xf0, 0xad, 0x08, 0xae, 0x66, 0xb1, 0x91, 0xa0, 0xcf, ++ 0xb7, 0xec, 0x33, 0xa3, 0xc6, 0xf5, 0x60, 0x0d, 0x33, 0xc7, 0xb3, 0xae, 0x3b, 0xa1, 0xb7, 0x1f, ++ 0xb8, 0xee, 0x7a, 0x6b, 0xa3, 0xd9, 0x8c, 0xe4, 0x7a, 0xb7, 0xe8, 0x8f, 0xda, 0x43, 0xb8, 0x4f, ++ 0xc5, 0x41, 0xf1, 0x1d, 0x2e, 0xdf, 0x05, 0x46, 0xf1, 0x20, 0xfd, 0x5b, 0x81, 0x01, 0xc5, 0xba, ++ 0xcc, 0x28, 0xfd, 0x7b, 0xc8, 0x35, 0xee, 0xaa, 0xfd, 0x0f, 0x56, 0xd1, 0x0a, 0x36, 0xcc, 0xca, ++ 0x54, 0x52, 0x70, 0x3e, 0x36, 0x46, 0xf3, 0x7e, 0x70, 0x6e, 0xf7, 0x40, 0xf5, 0x8e, 0x54, 0x07, ++ 0x04, 0xf3, 0xc7, 0x75, 0x43, 0x84, 0xbb, 0x06, 0xc7, 0x6a, 0xa0, 0x73, 0x4c, 0x27, 0x04, 0x81, ++ 0xb1, 0x87, 0x76, 0x0d, 0x45, 0x33, 0x67, 0x08, 0x76, 0x98, 0x43, 0x05, 0x51, 0x74, 0xb1, 0x3f, ++ 0x13, 0x9e, 0x59, 0x40, 0x6f, 0x36, 0x4b, 0xfb, 0x59, 0xa5, 0xbd, 0xbb, 0xc6, 0x17, 0x13, 0x51, ++ 0xb2, 0x53, 0xb5, 0x5a, 0xe5, 0x50, 0x85, 0xeb, 0xb5, 0x56, 0x3b, 0xb1, 0x64, 0xff, 0xb2, 0x2f, ++ 0x1c, 0x9c, 0x10, 0x88, 0x0a, 0x1a, 0xa7, 0x12, 0x10, 0xd5, 0xe6, 0x9a, 0x27, 0xf5, 0x1c, 0x01, ++ 0xa8, 0xa4, 0xe0, 0x7c, 0x6c, 0x8c, 0x25, 0xfc, 0xe0, 0xdc, 0x2d, 0x80, 0x29, 0xdf, 0xa8, 0x0e, ++ 0x02, 0x98, 0x82, 0xdb, 0xc0, 0x42, 0xbc, 0x03, 0x82, 0x35, 0x50, 0xd8, 0x26, 0xf2, 0x02, 0xa1, ++ 0x20, 0x94, 0xf7, 0x2e, 0x5d, 0xaa, 0x91, 0x30, 0xf7, 0xd6, 0x49, 0x1e, 0x25, 0xfb, 0x20, 0x82, ++ 0xf5, 0x9f, 0x9c, 0x24, 0xbc, 0x20, 0x3d, 0x6e, 0x9c, 0x9d, 0x71, 0x4a, 0x57, 0x66, 0xf5, 0x79, ++ 0x45, 0x54, 0xab, 0xa5, 0x99, 0x32, 0x04, 0x86, 0xab, 0xfe, 0x1a, 0x23, 0x15, 0x6b, 0x45, 0xf7, ++ 0x3b, 0x2f, 0xe3, 0x84, 0xb4, 0x57, 0x6f, 0xc7, 0xe3, 0xa7, 0x77, 0x43, 0x7b, 0xa2, 0x3b, 0x12, ++ 0x3f, 0xdc, 0x24, 0xf1, 0xf7, 0xd3, 0xd4, 0xc1, 0x24, 0xcd, 0xd7, 0x30, 0x37, 0x85, 0x3f, 0x93, ++ 0xc3, 0x2a, 0xb4, 0xb3, 0xad, 0x19, 0x02, 0x43, 0xb4, 0x7f, 0x0d, 0xf0, 0xeb, 0xd4, 0xc3, 0x9a, ++ 0x2f, 0x96, 0xbe, 0xe6, 0x38, 0x86, 0x7d, 0xd9, 0xbe, 0xa6, 0x12, 0x3f, 0xc4, 0x19, 0x2f, 0xd2, ++ 0x76, 0x5e, 0x05, 0xcb, 0xab, 0xae, 0xde, 0x4d, 0x05, 0x8d, 0xee, 0x86, 0xf6, 0x87, 0x76, 0x24, ++ 0x4b, 0x1a, 0xa3, 0xe1, 0x9c, 0x3f, 0xb6, 0x8f, 0xa3, 0x75, 0x69, 0x6e, 0xe7, 0xf0, 0x4b, 0x16, ++ 0x5f, 0xa3, 0xfe, 0x83, 0x10, 0xee, 0xa4, 0x91, 0xfe, 0x74, 0x0c, 0x12, 0x58, 0x4b, 0x5f, 0xd6, ++ 0x97, 0x78, 0xc4, 0x8d, 0x9b, 0x5f, 0xf1, 0x3d, 0xc4, 0x11, 0xfa, 0xb0, 0x1e, 0x5a, 0x97, 0x9d, ++ 0x16, 0x21, 0xdf, 0xb9, 0x4c, 0x93, 0xae, 0x1d, 0xdf, 0x34, 0x35, 0xa4, 0x99, 0x49, 0x16, 0x61, ++ 0xa2, 0x19, 0x2f, 0x4d, 0x2a, 0x05, 0x2c, 0xf3, 0x2f, 0x3d, 0xfe, 0xbe, 0x97, 0x63, 0xa2, 0x6e, ++ 0x50, 0xa1, 0xb7, 0x4b, 0x75, 0xc2, 0x48, 0x78, 0xb7, 0x04, 0x57, 0x33, 0xb9, 0xa9, 0x50, 0x86, ++ 0x6a, 0xc2, 0x15, 0x43, 0xa1, 0xb4, 0x79, 0x5f, 0x15, 0x58, 0x08, 0x1c, 0xd1, 0x72, 0x6a, 0x25, ++ 0x0c, 0xd6, 0x8a, 0x9f, 0xc5, 0x4f, 0x0e, 0x0a, 0x8a, 0xbe, 0x23, 0x95, 0xd4, 0x69, 0x0c, 0x40, ++ 0x71, 0x79, 0x01, 0xe9, 0x48, 0x49, 0x87, 0xa8, 0x01, 0x29, 0x36, 0x41, 0x8f, 0x2b, 0x71, 0xb5, ++ 0xa6, 0xea, 0xe8, 0x38, 0x69, 0x81, 0x97, 0xf5, 0xe8, 0x57, 0x5e, 0xcd, 0xdb, 0x44, 0xa6, 0xef, ++ 0x8a, 0xa8, 0x95, 0x89, 0xf1, 0x64, 0x08, 0xcf, 0x95, 0x3f, 0x34, 0x46, 0x2a, 0xd6, 0x8a, 0x2d, ++ 0xe7, 0x4d, 0x84, 0xe8, 0xb3, 0x37, 0x28, 0x75, 0x84, 0xc3, 0xe4, 0x9d, 0x82, 0x08, 0xe7, 0x99, ++ 0xec, 0xbc, 0x0a, 0x55, 0x95, 0x9f, 0x7f, 0x9a, 0x0a, 0xd9, 0x1f, 0xcf, 0x2f, 0xcd, 0xec, 0x48, ++ 0x51, 0xed, 0xf6, 0xc7, 0x15, 0xe3, 0x16, 0x98, 0xf6, 0xff, 0x7f, 0x5f, 0xaa, 0xd0, 0x51, 0x37, ++ 0x79, 0x5c, 0x4c, 0x03, 0xce, 0x82, 0x32, 0xa4, 0x4c, 0xfd, 0xb5, 0xa7, 0x17, 0x65, 0x79, 0x74, ++ 0xe1, 0x26, 0xc1, 0x46, 0x30, 0xf1, 0x2f, 0x70, 0xc1, 0x9c, 0x14, 0x36, 0xe8, 0xdd, 0xe1, 0xb9, ++ 0x1b, 0xbb, 0x14, 0xaa, 0xe9, 0xfd, 0xfe, 0xf7, 0x14, 0x71, 0x3e, 0x5d, 0x5e, 0x59, 0x1b, 0x90, ++ 0x9f, 0x5d, 0x89, 0x67, 0x1d, 0x94, 0x44, 0x31, 0x89, 0xc5, 0x79, 0x56, 0x86, 0x14, 0x9f, 0x5c, ++ 0x74, 0xc6, 0x87, 0x10, 0x6b, 0xec, 0x62, 0x4e, 0x87, 0xb8, 0xbe, 0x5e, 0xd0, 0x75, 0x74, 0x85, ++ 0xf8, 0x05, 0x57, 0x37, 0x19, 0x4e, 0x6d, 0x84, 0x57, 0xd8, 0x7a, 0xb3, 0x90, 0x76, 0xf8, 0x88, ++ 0x5a, 0x1c, 0x78, 0x7a, 0x33, 0x4b, 0x41, 0x77, 0x78, 0xe5, 0x84, 0x0d, 0x07, 0x15, 0x5a, 0xe6, ++ 0x67, 0x58, 0xde, 0x50, 0x04, 0xda, 0x29, 0xb5, 0xde, 0x1d, 0x03, 0xe5, 0x16, 0x62, 0x67, 0xd4, ++ 0x36, 0xb5, 0x28, 0x97, 0x11, 0x39, 0x3f, 0x2d, 0x28, 0xe2, 0x7c, 0xba, 0xbc, 0xb2, 0x36, 0xe3, ++ 0xe8, 0x4f, 0xcd, 0x20, 0xd6, 0x1b, 0xc4, 0x9c, 0xcd, 0xb3, 0xbf, 0xbc, 0x63, 0xea, 0xe8, 0xc9, ++ 0x60, 0x7f, 0xda, 0x72, 0xe7, 0x3d, 0x70, 0x50, 0xda, 0xb9, 0xdb, 0x22, 0x6f, 0xce, 0x60, 0x45, ++ 0xd2, 0x2c, 0x6f, 0x28, 0x02, 0x6d, 0xf5, 0xbb, 0x6f, 0xef, 0xe0, 0x93, 0x0b, 0x31, 0xd2, 0x6a, ++ 0xa5, 0x3e, 0x2b, 0x6f, 0xc9, 0xe2, 0x75, 0x16, 0x2b, 0x99, 0x26, 0x79, 0xee, 0xcf, 0xa5, 0xff, ++ 0x8c, 0xc3, 0xd0, 0x27, 0x72, 0xa2, 0x0f, 0xca, 0xd0, 0x60, 0xc4, 0xed, 0x40, 0x03, 0x8c, 0x0d, ++ 0xbd, 0x51, 0xfc, 0x92, 0x80, 0x7c, 0x69, 0x02, 0xfc, 0x26, 0x60, 0x90, 0x85, 0x1d, 0xbd, 0x7f, ++ 0xfb, 0xd1, 0x94, 0x60, 0xb9, 0x2d, 0x8f, 0x67, 0x94, 0x16, 0x02, 0x07, 0xa5, 0xfd, 0xfb, 0x98, ++ 0xba, 0x76, 0xf8, 0xb0, 0x63, 0x9b, 0x30, 0xe7, 0xf8, 0x82, 0xb8, 0x57, 0xfc, 0xb1, 0xba, 0xee, ++ 0x0f, 0x02, 0x49, 0xc8, 0x65, 0x2c, 0xec, 0xe9, 0x49, 0x70, 0x5b, 0x21, 0xe1, 0xe2, 0x0f, 0x50, ++ 0x4f, 0xe9, 0x64, 0x94, 0xdf, 0xbb, 0x0d, 0x89, 0x64, 0x1f, 0xc9, 0x1d, 0xab, 0xd7, 0x4f, 0x97, ++ 0x8e, 0x5b, 0x52, 0xfc, 0xb2, 0xe0, 0xb3, 0xc9, 0x52, 0x55, 0x94, 0x35, 0x66, 0xf1, 0x8e, 0xac, ++ 0x89, 0x7c, 0x56, 0xde, 0x51, 0x07, 0xea, 0x2c, 0x56, 0xf1, 0x4c, 0xf2, 0x1f, 0x5d, 0x89, 0x3d, ++ 0x06, 0x6b, 0x45, 0xae, 0x83, 0xc6, 0x07, 0x05, 0x45, 0x5f, 0xf0, 0xab, 0x6a, 0xd5, 0x06, 0x20, ++ 0xe5, 0xd5, 0x06, 0x33, 0x73, 0x75, 0x94, 0x76, 0x06, 0xf6, 0xb4, 0x45, 0xa4, 0xfa, 0xe5, 0x38, ++ 0xf4, 0xd3, 0xdd, 0xa8, 0xdc, 0x01, 0x63, 0x8e, 0xdd, 0x66, 0x59, 0x26, 0x44, 0x1f, 0xf4, 0xc8, ++ 0xc7, 0xd9, 0x73, 0xc6, 0xee, 0x9d, 0xb9, 0x45, 0x73, 0x15, 0xad, 0x83, 0xa7, 0xf3, 0xc7, 0x1b, ++ 0xad, 0x1b, 0x66, 0x85, 0x4f, 0x29, 0xc0, 0x1a, 0x66, 0x4d, 0xa5, 0x9f, 0x76, 0x81, 0xad, 0x3e, ++ 0xcb, 0x0f, 0xf9, 0x59, 0x2b, 0xd2, 0xb7, 0x4f, 0xf9, 0xab, 0x8e, 0x16, 0x73, 0x9a, 0xcb, 0x5b, ++ 0x80, 0x15, 0x5a, 0xb8, 0xb7, 0xed, 0x01, 0xc0, 0x5a, 0xde, 0xe7, 0x78, 0x94, 0x6a, 0x80, 0x4d, ++ 0xf0, 0x20, 0x1a, 0xdd, 0x9f, 0x85, 0xd8, 0x88, 0x1a, 0x0c, 0xf9, 0x55, 0x08, 0x38, 0xf0, 0x49, ++ 0xd5, 0x0b, 0x6b, 0x0a, 0xe1, 0x8a, 0xac, 0x5e, 0x6b, 0x4b, 0x38, 0x54, 0x72, 0x9d, 0xd5, 0xfb, ++ 0x07, 0x27, 0x04, 0x22, 0xe3, 0xe7, 0x59, 0xe5, 0x04, 0xa4, 0xd8, 0xc7, 0x79, 0xac, 0x07, 0x91, ++ 0xea, 0xd7, 0x4f, 0xfb, 0x16, 0x59, 0x78, 0x9f, 0x4f, 0x86, 0xef, 0x64, 0x45, 0x18, 0xea, 0x68, ++ 0x56, 0xca, 0xf2, 0xe5, 0xf6, 0x04, 0x4f, 0x7d, 0xf2, 0x5b, 0xa7, 0x98, 0xd3, 0x7c, 0x56, 0xa6, ++ 0x4d, 0x71, 0xe6, 0x4f, 0x1f, 0xf9, 0xb1, 0x8a, 0xe6, 0x2a, 0x99, 0xc5, 0x8d, 0x25, 0x4d, 0x36, ++ 0x55, 0x1e, 0x31, 0xb2, 0x56, 0x67, 0xad, 0x9e, 0x31, 0x95, 0xdf, 0x2c, 0xe6, 0xf7, 0x55, 0xb6, ++ 0x43, 0x3f, 0xee, 0x0b, 0x1a, 0xf4, 0x03, 0x83, 0xee, 0xa1, 0xea, 0x88, 0x7f, 0xbe, 0x43, 0xd7, ++ 0x1a, 0xf7, 0x55, 0x26, 0x89, 0xdc, 0xa0, 0x17, 0x55, 0x8a, 0x16, 0x31, 0x4d, 0x20, 0x1a, 0x21, ++ 0x0b, 0xf1, 0x8e, 0xbd, 0x26, 0xa8, 0x57, 0xef, 0x8e, 0x1a, 0xfb, 0x52, 0xad, 0xc5, 0x0b, 0xd1, ++ 0xe3, 0xbe, 0x43, 0x9d, 0xf0, 0xb3, 0x93, 0x73, 0x43, 0xa9, 0x44, 0xee, 0xce, 0x2f, 0xe3, 0x18, ++ 0x96, 0x34, 0x85, 0x01, 0xfb, 0x7e, 0xaf, 0xdd, 0x85, 0xea, 0xd2, 0xdc, 0x0d, 0x23, 0x96, 0x2c, ++ 0x27, 0xb3, 0xf3, 0x0c, 0xbe, 0x4d, 0xc8, 0xd5, 0xf3, 0x72, 0x91, 0xd9, 0x5c, 0x57, 0x27, 0x13, ++ 0xdd, 0x2e, 0x26, 0xe0, 0x67, 0x41, 0x19, 0x52, 0x26, 0x9f, 0xbb, 0xb2, 0xea, 0xd3, 0xdd, 0x3a, ++ 0x44, 0x18, 0xea, 0x29, 0xf9, 0x13, 0x5a, 0x66, 0xea, 0x05, 0x32, 0x4f, 0x06, 0x12, 0x44, 0x46, ++ 0x26, 0xff, 0xb2, 0x80, 0xde, 0x6c, 0x96, 0x35, 0xb2, 0x89, 0xb9, 0xb5, 0x4f, 0x2e, 0x26, 0xa2, ++ 0x35, 0x61, 0xeb, 0xc0, 0xb1, 0x5a, 0xdd, 0xce, 0xeb, 0x2c, 0x04, 0x0e, 0x89, 0x39, 0x35, 0xf3, ++ 0xdc, 0x62, 0x67, 0x6c, 0x07, 0x60, 0x47, 0xb2, 0x67, 0x64, 0x93, 0xde, 0xf9, 0xaa, 0xdc, 0x8b, ++ 0xa4, 0x72, 0x6a, 0xe3, 0xa9, 0xc3, 0x2b, 0xf6, 0x6a, 0x62, 0x0e, 0x15, 0xfd, 0xb6, 0xa4, 0x4e, ++ 0x58, 0x84, 0xfa, 0xa1, 0xf3, 0x09, 0xfd, 0x74, 0xfa, 0xd0, 0xd4, 0xd5, 0x21, 0xe7, 0x58, 0x47, ++ 0xcf, 0xfc, 0x3e, 0x2c, 0x68, 0x56, 0x0c, 0x49, 0x3e, 0xc1, 0x2e, 0x65, 0x3f, 0xbd, 0xcf, 0xda, ++ 0xd0, 0xb4, 0xed, 0xf3, 0xc2, 0x2f, 0x49, 0xb8, 0xed, 0xda, 0xb0, 0x4b, 0x2d, 0xc3, 0xd0, 0xcb, ++ 0x7c, 0xe3, 0xca, 0xfa, 0xed, 0x27, 0xd7, 0x42, 0xca, 0x6c, 0x3d, 0xb8, 0x48, 0x3b, 0x7c, 0x44, ++ 0x5c, 0x77, 0x3d, 0xd4, 0xb0, 0x8d, 0x46, 0x72, 0x3d, 0xba, 0x74, 0xa6, 0x6d, 0xc0, 0x5c, 0xc6, ++ 0x7e, 0x7b, 0x48, 0x21, 0x2d, 0x65, 0x6b, 0x41, 0x48, 0x59, 0x6d, 0x60, 0x6e, 0xc9, 0x7e, 0xe5, ++ 0xfe, 0x6e, 0x12, 0x99, 0x9a, 0x88, 0x6a, 0x81, 0x12, 0x87, 0x8a, 0x18, 0xfa, 0xa3, 0xfe, 0xa8, ++ 0xaa, 0x3c, 0x62, 0xa7, 0xac, 0xce, 0x99, 0xff, 0x62, 0xe9, 0x7d, 0x58, 0x0f, 0x2d, 0xaa, 0xaf, ++ 0x2b, 0x65, 0x79, 0x93, 0x7b, 0x02, 0xc6, 0xdf, 0x79, 0xcc, 0xb2, 0x4c, 0x88, 0x3e, 0x2b, 0x53, ++ 0xc9, 0x97, 0x7b, 0x82, 0xeb, 0x90, 0x0b, 0x4c, 0x7b, 0x9e, 0xde, 0xce, 0x55, 0x68, 0xc9, 0xfa, ++ 0x92, 0xc7, 0x42, 0x74, 0xb8, 0xfa, 0x14, 0xdb, 0x42, 0x80, 0x72, 0xaf, 0x41, 0x04, 0x92, 0xad, ++ 0xca, 0x43, 0xb8, 0xd5, 0x4b, 0xf3, 0xe9, 0xaf, 0xb8, 0x50, 0xa6, 0x7a, 0x60, 0xe3, 0xca, 0xea, ++ 0x4c, 0x3d, 0xa7, 0xc3, 0x7f, 0xd8, 0xef, 0x6a, 0xa7, 0xd1, 0xb1, 0xa9, 0x9e, 0x5c, 0x4c, 0x87, ++ 0x9d, 0xc5, 0x0b, 0xbc, 0xdd, 0xd6, 0xf8, 0x32, 0x0b, 0xf0, 0x29, 0x8e, 0xa0, 0xe6, 0x9d, 0xfd, ++ 0xa7, 0xa6, 0xa9, 0xb4, 0x09, 0xa0, 0xc9, 0x15, 0xa9, 0xac, 0x76, 0xa1, 0xc8, 0x3d, 0xa7, 0x5e, ++ 0x59, 0xc8, 0xbb, 0x2d, 0x93, 0x28, 0xa3, 0x94, 0xbb, 0x2b, 0xfc, 0xb9, 0x32, 0x9e, 0x59, 0xf6, ++ 0x9e, 0x11, 0xc8, 0xeb, 0x7d, 0xb5, 0x1a, 0xd1, 0xc8, 0x3e, 0x51, 0x3a, 0x95, 0x6d, 0x9e, 0xed, ++ 0x1d, 0xd0, 0x51, 0x04, 0x6a, 0x3b, 0xf9, 0xf2, 0x51, 0x2e, 0xce, 0xf6, 0x34, 0x8c, 0x1d, 0xb0, ++ 0x01, 0x4c, 0x41, 0x8c, 0x60, 0x21, 0x5e, 0xe0, 0x41, 0xfb, 0x28, 0x6c, 0x13, 0x79, 0x01, 0xb1, ++ 0xc2, 0x66, 0xf5, 0x3f, 0xcd, 0x38, 0x5c, 0xa3, 0xf5, 0x84, 0x25, 0x9c, 0xf8, 0xad, 0xc2, 0x2b, ++ 0x28, 0xb1, 0xba, 0xc4, 0xdb, 0x61, 0x24, 0x3c, 0xba, 0x02, 0xca, 0xf8, 0xbd, 0xb5, 0x28, 0x43, ++ 0xb4, 0x38, 0xf0, 0xf4, 0x66, 0x96, 0x82, 0xee, 0xf0, 0x09, 0xcb, 0x1a, 0x0e, 0x2a, 0xb4, 0x0f, ++ 0x19, 0x23, 0x96, 0x71, 0x29, 0xbf, 0x42, 0xf4, 0x96, 0x44, 0x6e, 0x85, 0x78, 0xab, 0x19, 0x31, ++ 0x85, 0xaa, 0xdc, 0x41, 0x94, 0x48, 0xe4, 0x26, 0xdc, 0x4f, 0x6f, 0x67, 0xcb, 0x34, 0x85, 0x7d, ++ 0x3c, 0x08, 0xe7, 0xa6, 0x57, 0xb0, 0x36, 0x22, 0xe7, 0x03, 0xaf, 0x84, 0x02, 0x0e, 0x3c, 0x83, ++ 0x40, 0xeb, 0x2d, 0x5c, 0xba, 0x97, 0xe1, 0x60, 0x2d, 0x6f, 0x92, 0x3c, 0x4a, 0x35, 0x40, 0xc7, ++ 0x1e, 0x04, 0x92, 0x53, 0xca, 0x58, 0x1b, 0x11, 0x92, 0xe0, 0xb6, 0x42, 0x01, 0x07, 0x1e, 0xa0, ++ 0x95, 0xe0, 0x46, 0x56, 0x5b, 0x1d, 0x4d, 0x3e, 0x46, 0x24, 0xaa, 0x68, 0x38, 0xa8, 0x95, 0x3c, ++ 0xab, 0x70, 0x23, 0x2b, 0xcc, 0xef, 0xc7, 0x1f, 0x23, 0x12, 0x55, 0x34, 0x1c, 0x54, 0xab, 0x1e, ++ 0xb3, 0x1f, 0xf4, 0xd6, 0x85, 0x71, 0xdb, 0x0b, 0xf4, 0xad, 0x13, 0xdd, 0x77, 0x86, 0xb3, 0x9e, ++ 0xeb, 0x9b, 0x0e, 0x77, 0x76, 0x78, 0x26, 0x7f, 0x0e, 0x7d, 0xc7, 0x08, 0x56, 0x61, 0xeb, 0xd9, ++ 0xfa, 0x9d, 0xd5, 0xec, 0xd9, 0x0c, 0xd1, 0x87, 0xd5, 0xed, 0x2a, 0x6b, 0xb6, 0x84, 0xfa, 0x29, ++ 0x2a, 0x29, 0x38, 0x1f, 0x1b, 0x23, 0x98, 0x3f, 0x38, 0x37, 0x9a, 0x20, 0x9b, 0x47, 0x2a, 0xe2, ++ 0xac, 0x57, 0x27, 0x09, 0x2f, 0x08, 0x9e, 0xfa, 0x27, 0xb6, 0x8d, 0xf3, 0x65, 0xf8, 0xac, 0x8f, ++ 0x2d, 0x0e, 0x3c, 0x3d, 0xf8, 0xc4, 0xc1, 0xda, 0x3c, 0x93, 0x42, 0xe7, 0xe2, 0xeb, 0x2d, 0x73, ++ 0x25, 0x2b, 0x71, 0xd7, 0x7e, 0x0f, 0x74, 0xd6, 0x71, 0x47, 0xc1, 0x01, 0x7a, 0xa5, 0x25, 0xb2, ++ 0x4a, 0x56, 0xe2, 0x6d, 0xfc, 0x1e, 0xe8, 0x6f, 0xe2, 0x8e, 0x41, 0x02, 0xf4, 0x89, 0x4a, 0xa7, ++ 0xb0, 0xcb, 0x37, 0x81, 0x25, 0x12, 0x39, 0xe8, 0x37, 0x63, 0x6b, 0x69, 0x42, 0x0d, 0xb0, 0x8e, ++ 0x41, 0xa7, 0x6c, 0xd0, 0xda, 0xb6, 0xbf, 0x80, 0x6c, 0x94, 0xba, 0x50, 0x59, 0x4c, 0x41, 0x76, ++ 0x30, 0xde, 0x6d, 0x39, 0x92, 0xff, 0x38, 0x28, 0x6d, 0xbd, 0x8c, 0x11, 0xd6, 0x67, 0x30, 0xc3, ++ 0x33, 0x0a, 0xae, 0x6e, 0x32, 0x9c, 0xda, 0xcb, 0xae, 0x73, 0xf4, 0xa5, 0xe3, 0xec, 0x33, 0xd3, ++ 0x65, 0xc0, 0x5c, 0x8b, 0xc4, 0x98, 0x95, 0xb6, 0x5c, 0x28, 0x53, 0x3d, 0x30, 0x90, 0x65, 0x75, ++ 0x8b, 0xe4, 0xd4, 0x05, 0x91, 0x45, 0x56, 0x2f, 0xd4, 0xc4, 0x1c, 0x2a, 0x39, 0xaf, 0x8b, 0x9c, ++ 0xef, 0x68, 0xc9, 0x02, 0x35, 0xfc, 0x9d, 0x79, 0xc9, 0x17, 0x67, 0x7b, 0x1a, 0x46, 0xef, 0x58, ++ 0x09, 0x69, 0x0c, 0x66, 0xe6, 0xea, 0xeb, 0xec, 0x0c, 0x2f, 0xab, 0x8a, 0x8b, 0x37, 0x09, 0x70, ++ 0x9b, 0xae, 0x4e, 0x12, 0x5e, 0x10, 0xff, 0x37, 0x4e, 0xaf, 0xd9, 0x25, 0xca, 0x33, 0x9b, 0xdd, ++ 0x6f, 0x7d, 0x93, 0xba, 0x82, 0x11, 0x9c, 0xb9, 0x93, 0xc9, 0x80, 0x03, 0x8e, 0x2c, 0x6f, 0x15, ++ 0x84, 0xe6, 0x9d, 0xcd, 0xf4, 0x69, 0xba, 0xc6, 0x9d, 0xb4, 0x47, 0x0b, 0xd8, 0x4d, 0x84, 0xcc, ++ 0x15, 0xf5, 0x1c, 0xee, 0xec, 0xf0, 0x4c, 0xfe, 0x1c, 0xfa, 0x4d, 0x10, 0xac, 0xc2, 0x15, 0x71, ++ 0x75, 0x8a, 0xc6, 0x9c, 0x0b, 0xcd, 0x3c, 0xae, 0xc6, 0x43, 0x96, 0x32, 0xc3, 0x0c, 0x75, 0x34, ++ 0x61, 0x33, 0x9b, 0xfe, 0x87, 0x1c, 0x2e, 0xb0, 0x9b, 0x42, 0xf3, 0x4e, 0x7c, 0xb7, 0x61, 0xf4, ++ 0xf9, 0x49, 0x16, 0xbb, 0x79, 0x6f, 0x33, 0x64, 0x16, 0x23, 0x52, 0xdf, 0x83, 0x0f, 0xf9, 0x39, ++ 0x12, 0xd2, 0x18, 0xcc, 0x0f, 0x17, 0x15, 0x1b, 0x18, 0x5e, 0x95, 0xd7, 0xd5, 0x6e, 0x12, 0xe0, ++ 0x70, 0x35, 0x40, 0x65, 0x28, 0x68, 0xd9, 0x48, 0x40, 0xd2, 0x1e, 0x2d, 0x9c, 0x52, 0x70, 0x04, ++ 0xa3, 0x55, 0x6e, 0xc1, 0x4a, 0x24, 0x72, 0x13, 0x6e, 0xc6, 0xd6, 0xd2, 0x84, 0x1a, 0xa3, 0xdf, ++ 0x9c, 0x89, 0x4a, 0x30, 0xbd, 0xf7, 0xa6, 0xd2, 0x4a, 0x0b, 0x01, 0xe2, 0xb3, 0x9f, 0x9c, 0x4c, ++ 0x4e, 0xa5, 0x25, 0x18, 0xbf, 0x9a, 0x53, 0x69, 0x25, 0xe4, 0xe1, 0x71, 0xb8, 0xae, 0x4e, 0x26, ++ 0xa9, 0xe8, 0xa1, 0xf0, 0x0c, 0xad, 0x7b, 0x1c, 0xa1, 0x27, 0x05, 0xec, 0x3a, 0xa6, 0xa9, 0xbf, ++ 0x7b, 0xc4, 0xce, 0xd8, 0x0e, 0xc0, 0x8e, 0xa7, 0xce, 0xc8, 0xe5, 0x7f, 0x31, 0x97, 0x7b, 0xd5, ++ 0x47, 0xcc, 0x29, 0x7e, 0x59, 0x70, 0xb8, 0x85, 0x29, 0xcb, 0x4a, 0xfb, 0x33, 0x99, 0x47, 0x56, ++ 0xe9, 0x03, 0x8c, 0xac, 0xb6, 0x3a, 0x9a, 0x7c, 0x8c, 0x48, 0x97, 0xd0, 0x70, 0x93, 0xe9, 0x78, ++ 0x7a, 0x88, 0x8f, 0x54, 0x6e, 0xe1, 0xd0, 0x47, 0x8f, 0x33, 0xcd, 0x13, 0x22, 0xee, 0x7a, 0x64, ++ 0xf1, 0x6c, 0x5b, 0x51, 0xff, 0xa4, 0x86, 0x68, 0x5b, 0xf7, 0xd1, 0x39, 0x1b, 0x41, 0xf1, 0xf8, ++ 0xc4, 0x0d, 0xb0, 0x91, 0x4e, 0xfe, 0x5b, 0xa6, 0xb0, 0xdb, 0xd5, 0x37, 0x92, 0x78, 0xc4, 0x0b, ++ 0xaf, 0x83, 0xe4, 0x5e, 0x8f, 0x6b, 0x7c, 0x19, 0xe4, 0x78, 0xf5, 0x47, 0x50, 0x73, 0xaf, 0x9f, ++ 0x68, 0x5a, 0x97, 0x98, 0x61, 0xf6, 0xc5, 0x5c, 0x97, 0x6d, 0x58, 0xc4, 0xf7, 0x80, 0x68, 0x84, ++ 0xbe, 0x85, 0x3f, 0xc5, 0x20, 0x1f, 0x8b, 0xe1, 0x3f, 0xe8, 0x18, 0x24, 0xb0, 0x96, 0xbe, 0x6f, ++ 0xbf, 0xc9, 0x7e, 0x49, 0x40, 0x3e, 0xd5, 0x01, 0x7e, 0x13, 0x30, 0x48, 0xa3, 0xef, 0xbf, 0xde, ++ 0x2e, 0xda, 0xff, 0x6a, 0x58, 0xa7, 0x23, 0x39, 0xff, 0x5d, 0x3a, 0x53, 0xd7, 0x60, 0x2e, 0x63, ++ 0x48, 0xce, 0x60, 0xb6, 0x3c, 0x5c, 0x54, 0x6c, 0x60, 0xbb, 0x11, 0xda, 0xd2, 0x7b, 0x48, 0x06, ++ 0xce, 0xb0, 0x7f, 0xa0, 0x08, 0x77, 0x52, 0xa9, 0x7f, 0x3a, 0x06, 0x09, 0x2c, 0xc4, 0xce, 0x6b, ++ 0x3d, 0x44, 0xa6, 0x2a, 0x37, 0x91, 0x68, 0xc2, 0xa6, 0xf8, 0x87, 0xe8, 0x11, 0x77, 0x3d, 0x32, ++ 0x32, 0x46, 0xef, 0xe2, 0x52, 0xbd, 0x84, 0x2b, 0xef, 0x88, 0xdc, 0xc9, 0xf0, 0x95, 0x32, 0x62, ++ 0xe6, 0x01, 0xc5, 0x64, 0xd3, 0x16, 0x76, 0x95, 0xc5, 0x38, 0xcc, 0xf1, 0x91, 0x71, 0xe6, 0x28, ++ 0x6b, 0x8e, 0x54, 0xcf, 0xc1, 0x95, 0x27, 0xbf, 0x54, 0xa3, 0x20, 0x70, 0xc2, 0x0b, 0x6b, 0x94, ++ 0xbb, 0x3a, 0xb9, 0x3c, 0x03, 0xba, 0x6e, 0x07, 0xb9, 0x79, 0x90, 0x3b, 0xef, 0xc8, 0xbb, 0x5f, ++ 0x91, 0x13, 0x81, 0x23, 0x18, 0x99, 0xf6, 0x38, 0x81, 0x4e, 0x0a, 0x1b, 0x74, 0x8f, 0x91, 0xbd, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x83, 0xc1, 0x99, 0xef, 0x17, 0x8e, 0xe3, 0x23, 0x99, 0x10, 0x9f, 0xcc, 0xa1, 0xe1, 0x83, 0x5d, ++ 0xe0, 0x6a, 0x80, 0xca, 0x50, 0xd0, 0x71, 0x90, 0x80, 0x67, 0x3c, 0x5a, 0xfb, 0xa4, 0xe0, 0x08, ++ 0x82, 0x8d, 0xd8, 0x63, 0x77, 0xaf, 0xbd, 0xc3, 0xd8, 0xeb, 0xb7, 0xa0, 0xb2, 0x98, 0x82, 0xec, ++ 0xd7, 0x93, 0xe9, 0xd1, 0x21, 0xc8, 0x10, 0x5d, 0xe9, 0x7e, 0x68, 0x8c, 0x54, 0x6f, 0xd7, 0x5a, ++ 0xf2, 0xb8, 0x98, 0x06, 0x5f, 0xc7, 0x64, 0x8b, 0x98, 0x39, 0xa9, 0x8d, 0x2e, 0xca, 0xf2, 0xe8, ++ 0xcd, 0x64, 0xbc, 0xf7, 0xa8, 0x14, 0xb0, 0x4a, 0xbc, 0xf4, 0x7e, 0xbd, 0x19, 0x4f, 0xcd, 0x7b, ++ 0x78, 0x10, 0x0d, 0x8f, 0xae, 0xa3, 0x6c, 0x44, 0x0d, 0x06, 0x9d, 0xcb, 0x04, 0x1c, 0x78, 0xc5, ++ 0xc0, 0xfe, 0x77, 0xe4, 0x0d, 0x7a, 0xe0, 0xa0, 0x77, 0xb1, 0x75, 0x44, 0xde, 0x5f, 0xc0, 0x8a, ++ 0x63, 0xab, 0x19, 0x25, 0x47, 0x5e, 0x92, 0xb3, 0x19, 0x77, 0xa3, 0x96, 0x5a, 0x45, 0x63, 0x55, ++ 0x87, 0x32, 0x5e, 0x9a, 0x54, 0x0a, 0x58, 0x25, 0x5e, 0x7a, 0x3f, 0xbf, 0xed, 0xc6, 0x87, 0xdc, ++ 0xfc, 0xf6, 0x90, 0x42, 0x5a, 0xca, 0xd6, 0x82, 0x90, 0xb2, 0xda, 0xc0, 0xdc, 0x51, 0xfc, 0x09, ++ 0x94, 0xac, 0x07, 0xda, 0x3b, 0x3c, 0x13, 0xde, 0x07, 0xdf, 0x82, 0x04, 0x2b, 0xd1, 0x94, 0x8d, ++ 0x08, 0x25, 0x4d, 0xea, 0x86, 0xcb, 0xb5, 0x0c, 0x4d, 0xd4, 0x83, 0xe6, 0x98, 0x4e, 0x08, 0xc1, ++ 0x81, 0x59, 0x1b, 0x34, 0xd7, 0xcc, 0x5f, 0x20, 0x1b, 0x25, 0xcf, 0x14, 0x87, 0x13, 0x81, 0xfc, ++ 0x17, 0x6d, 0x9e, 0x35, 0x2c, 0xb2, 0xf0, 0xfd, 0x9e, 0xcf, 0x1d, 0xc8, 0x8a, 0x30, 0x17, 0xd0, ++ 0x62, 0xe7, 0x58, 0xa9, 0x27, 0x7f, 0xcc, 0x53, 0x58, 0x8c, 0x8b, 0xfa, 0x49, 0x3c, 0x62, 0xe4, ++ 0xd8, 0x91, 0xa0, 0x19, 0x44, 0xe4, 0xfc, 0xb4, 0xa0, 0x0e, 0x33, 0xad, 0xb5, 0x8d, 0xd8, 0x0a, ++ 0x31, 0x92, 0x2c, 0xb5, 0xf2, 0xde, 0x66, 0xc8, 0x2c, 0x46, 0xa4, 0x7d, 0xc5, 0x1e, 0x31, 0x72, ++ 0x10, 0x4a, 0x9a, 0x17, 0xcf, 0x55, 0xa9, 0x18, 0x9a, 0x6b, 0xc5, 0x0f, 0xf3, 0x9c, 0x10, 0x41, ++ 0x21, 0xd8, 0xb6, 0xa2, 0x3d, 0x8b, 0xcf, 0xd0, 0xb6, 0x2d, 0x61, 0x72, 0x36, 0x82, 0x21, 0x33, ++ 0xda, 0x09, 0x22, 0xc2, 0x84, 0xa6, 0x40, 0xb7, 0x22, 0x3b, 0x63, 0x75, 0x93, 0x7f, 0xda, 0xab, ++ 0x66, 0x14, 0x9f, 0xdc, 0x64, 0xfb, 0x77, 0x55, 0x9f, 0xe6, 0x2b, 0x89, 0x05, 0x1b, 0x66, 0x65, ++ 0x39, 0xb7, 0x61, 0x5f, 0x74, 0x15, 0xd3, 0xc4, 0x61, 0x92, 0x27, 0x9b, 0x5d, 0x50, 0x39, 0xb3, ++ 0xfd, 0xba, 0xd1, 0xce, 0x3a, 0xeb, 0x88, 0x62, 0xd1, 0x49, 0xf2, 0xac, 0xcf, 0x28, 0xfd, 0xb8, ++ 0x0e, 0x4e, 0x08, 0x44, 0x05, 0x0d, 0xb2, 0x09, 0x08, 0x8b, 0x73, 0x4d, 0xf2, 0x9b, 0x0e, 0xe1, ++ 0x6e, 0x31, 0xd2, 0x36, 0xe2, 0x30, 0xc2, 0x59, 0xd2, 0x32, 0xa8, 0x6f, 0x9d, 0x55, 0x6e, 0xa4, ++ 0x8f, 0x17, 0x13, 0x70, 0xd2, 0xc1, 0xed, 0x29, 0x13, 0xae, 0xbc, 0x59, 0x75, 0x88, 0x8f, 0x1d, ++ 0x99, 0x36, 0xcc, 0xc9, 0x9e, 0x52, 0x43, 0x34, 0xcc, 0x9a, 0x89, 0xfd, 0xec, 0xc1, 0x99, 0x7c, ++ 0x6d, 0xe5, 0x11, 0x61, 0x42, 0x53, 0x20, 0xba, 0x11, 0xfc, 0xd0, 0xdb, 0xa8, 0xde, 0x6d, 0xb4, ++ 0xf3, 0xf4, 0xd9, 0x8a, 0x3f, 0xe6, 0x3a, 0x6b, 0xd9, 0xc2, 0x81, 0xe1, 0x3d, 0xb3, 0xf3, 0x59, ++ 0xde, 0xfa, 0xe5, 0xb7, 0xc7, 0x22, 0xfb, 0xb1, 0xe5, 0x51, 0xc3, 0x06, 0xdf, 0x58, 0xde, 0x2a, ++ 0x88, 0x30, 0x17, 0x52, 0x31, 0x26, 0xb4, 0xcc, 0x17, 0x0a, 0x64, 0x9e, 0x0c, 0x24, 0x88, 0x8c, ++ 0x0d, 0x9a, 0xcb, 0x13, 0xa5, 0x6e, 0x50, 0xea, 0xcb, 0x45, 0x0b, 0xf9, 0xc7, 0x10, 0x0d, 0xf1, ++ 0x8d, 0x8f, 0x91, 0xab, 0x12, 0x83, 0x51, 0x2a, 0x91, 0x9b, 0xec, 0x81, 0x53, 0x7a, 0x8d, 0xbc, ++ 0xd4, 0x47, 0x2a, 0x86, 0x81, 0xab, 0xf2, 0xbe, 0x2a, 0xb0, 0x10, 0x38, 0x61, 0xe4, 0xd4, 0x4a, ++ 0x5b, 0x50, 0x39, 0xf6, 0x53, 0x6a, 0x1f, 0x97, 0x39, 0x1e, 0xac, 0x61, 0x14, 0x6c, 0x5b, 0x57, ++ 0xd1, 0xf8, 0xac, 0x7f, 0xa2, 0x0e, 0x17, 0x58, 0xac, 0x21, 0x98, 0x27, 0x3e, 0xba, 0xd1, 0x7a, ++ 0x5d, 0x3b, 0x7c, 0x58, 0xd0, 0xac, 0x18, 0x92, 0x7c, 0x41, 0x5c, 0xca, 0x7e, 0xb9, 0x5d, 0x77, ++ 0x03, 0xd4, 0xc3, 0x57, 0xa0, 0x63, 0xe2, 0xe3, 0xc3, 0xce, 0x78, 0xb4, 0x35, 0x8b, 0x03, 0x10, ++ 0xc8, 0xdb, 0x3a, 0x0e, 0x8b, 0xb1, 0x55, 0xac, 0x3a, 0x65, 0xf6, 0xa2, 0x46, 0x11, 0xc8, 0x4b, ++ 0xc1, 0xb2, 0x36, 0x68, 0x6d, 0x5b, 0xbe, 0x40, 0x36, 0x4a, 0x5d, 0x28, 0xcd, 0x26, 0xc1, 0x3b, ++ 0x77, 0x12, 0x44, 0x47, 0xcb, 0x8f, 0x80, 0xad, 0x44, 0x76, 0xc6, 0xea, 0xe5, 0xfe, 0x77, 0x95, ++ 0x3a, 0x63, 0xa2, 0x08, 0xd4, 0x76, 0x31, 0x27, 0xa2, 0x5c, 0x5f, 0x2f, 0x68, 0xdb, 0x3a, 0xa3, ++ 0xf6, 0x4b, 0x5f, 0x73, 0x1c, 0x43, 0xdf, 0x8d, 0x5f, 0x53, 0x09, 0xfe, 0x62, 0xed, 0xf6, 0x69, ++ 0xb9, 0xa2, 0x3b, 0xe7, 0xc3, 0xf8, 0xd2, 0x04, 0x3b, 0x4c, 0xc0, 0xe3, 0xc9, 0x3a, 0xb9, 0xfe, ++ 0xa1, 0xcd, 0xec, 0x1a, 0x8a, 0x66, 0xce, 0x10, 0xec, 0xf3, 0x86, 0x0a, 0xa2, 0xe8, 0xa1, 0x7e, ++ 0xc6, 0x95, 0x32, 0x4a, 0x8e, 0xbc, 0xe7, 0xa5, 0x32, 0xee, 0x85, 0xef, 0xb4, 0x8a, 0xc6, 0xaa, ++ 0x7d, 0xaf, 0x8b, 0x76, 0x8d, 0x06, 0x89, 0xa2, 0x8b, 0x97, 0x15, 0xd4, 0x5b, 0x42, 0x7d, 0xf5, ++ 0x24, 0x67, 0x30, 0x5b, 0x1e, 0x2e, 0x2a, 0x36, 0x30, 0xbc, 0xe9, 0x6d, 0x69, 0xdc, 0x24, 0x03, ++ 0xdf, 0xb6, 0xa4, 0x3b, 0xa7, 0x03, 0xa5, 0x51, 0xa4, 0xaa, 0xeb, 0x6a, 0xcc, 0x21, 0xdf, 0x9b, ++ 0x64, 0x8c, 0x1d, 0x07, 0xa4, 0xb9, 0xcb, 0x56, 0x1d, 0xd3, 0x7b, 0x51, 0x23, 0xe9, 0x64, 0xc4, ++ 0x23, 0x40, 0x34, 0x79, 0xfd, 0xc9, 0x73, 0xd3, 0x34, 0x18, 0x31, 0xaa, 0x10, 0x70, 0x23, 0x92, ++ 0x73, 0xe1, 0x83, 0x32, 0x88, 0x0b, 0x3b, 0xab, 0x83, 0x1c, 0x66, 0x99, 0xa9, 0xd9, 0x73, 0x14, ++ 0x69, 0x16, 0xd6, 0x14, 0x01, 0xd7, 0x9b, 0xbc, 0xd6, 0x96, 0x70, 0xa8, 0xe4, 0xf9, 0x69, 0x35, ++ 0x18, 0x6f, 0xd7, 0xfd, 0x49, 0x9e, 0x1c, 0x14, 0xd7, 0xbf, 0x46, 0xe9, 0x6b, 0xd2, 0x18, 0x80, ++ 0xbc, 0x1d, 0xbd, 0x1e, 0xe0, 0x5d, 0x37, 0xe2, 0xbd, 0xdd, 0x48, 0xfc, 0x96, 0x64, 0xbc, 0xce, ++ 0x42, 0x73, 0xaf, 0x87, 0x7a, 0xd5, 0x5d, 0x63, 0xaf, 0x5a, 0xc2, 0xe4, 0x6c, 0xc7, 0x42, 0x66, ++ 0x1f, 0x48, 0xd3, 0xdf, 0xaa, 0x79, 0x45, 0xf1, 0xd3, 0x1b, 0x9e, 0x2e, 0x12, 0x7e, 0x1f, 0x11, ++ 0x98, 0x7a, 0x8d, 0x45, 0xfe, 0x73, 0x1d, 0xd4, 0x8d, 0x61, 0xa1, 0x91, 0xff, 0xb8, 0x98, 0xcd, ++ 0x53, 0x75, 0x74, 0x1c, 0xd5, 0xa1, 0xaa, 0x9b, 0x74, 0xca, 0x2f, 0x87, 0x8c, 0x22, 0x53, 0x96, ++ 0xe4, 0x99, 0x47, 0xbf, 0x13, 0x54, 0xca, 0x96, 0x47, 0x0d, 0x9c, 0x29, 0xb7, 0x83, 0xe4, 0x89, ++ 0xae, 0xcf, 0xa5, 0xd2, 0xef, 0x4a, 0x22, 0xf9, 0xa5, 0x83, 0xdd, 0x2b, 0x43, 0x0a, 0xae, 0x2e, ++ 0xd9, 0xdd, 0xe1, 0x95, 0x24, 0xc5, 0xa2, 0x54, 0xe1, 0xf5, 0x1b, 0xc1, 0xa6, 0xf4, 0xd9, 0xbb, ++ 0x22, 0x0c, 0x75, 0xf5, 0x9d, 0xe8, 0x2d, 0x33, 0x75, 0xe3, 0x19, 0xc6, 0x03, 0x09, 0x22, 0x23, ++ 0x52, 0x39, 0x35, 0x90, 0xb5, 0x80, 0xf4, 0x7b, 0x35, 0x31, 0x07, 0xeb, 0x9f, 0x5b, 0x52, 0x27, ++ 0x05, 0xbf, 0x86, 0xf9, 0x23, 0xa5, 0xe5, 0xe6, 0x86, 0x91, 0x88, 0x1f, 0x5f, 0x5e, 0x05, 0x30, ++ 0x6c, 0xa9, 0x50, 0xed, 0x22, 0x72, 0x7e, 0x5a, 0x50, 0x07, 0xf8, 0xb7, 0xbb, 0xa7, 0x6c, 0x05, ++ 0xd3, 0x60, 0x2e, 0xa4, 0x62, 0x4c, 0xab, 0x5b, 0x2e, 0x14, 0xc8, 0xff, 0x18, 0x48, 0xd3, 0xdb, ++ 0xff, 0x22, 0x53, 0x15, 0xfa, 0xa9, 0x34, 0x61, 0x53, 0x7c, 0xa2, 0x74, 0xe9, 0xda, 0xff, 0x19, ++ 0x9a, 0xe2, 0x0f, 0x9e, 0x3e, 0x31, 0xa1, 0xd7, 0x0f, 0x54, 0xf1, 0x49, 0xd9, 0x4a, 0x9a, 0x6c, ++ 0x2c, 0x42, 0x7d, 0xb1, 0x98, 0xe5, 0x9f, 0x3a, 0x7d, 0x68, 0x6a, 0x8b, 0xf1, 0x92, 0x2c, 0xc2, ++ 0x29, 0xfd, 0xfb, 0x48, 0xbb, 0x40, 0x7a, 0xdc, 0xfb, 0xf9, 0xe2, 0x94, 0xae, 0xcc, 0x29, 0xf2, ++ 0x5e, 0xef, 0xbf, 0x0f, 0x70, 0xcf, 0xfa, 0x71, 0xbf, 0x8f, 0x24, 0x7e, 0x4b, 0x32, 0x5e, 0x67, ++ 0x57, 0x86, 0xb3, 0x69, 0x96, 0x25, 0x11, 0x9d, 0xb3, 0xa0, 0x8f, 0xf4, 0xc0, 0x05, 0x57, 0x17, ++ 0xed, 0xf0, 0x4b, 0xd9, 0xf5, 0xbe, 0x21, 0x7a, 0x4b, 0x22, 0x37, 0xa3, 0x3c, 0xb4, 0xed, 0xf9, ++ 0x46, 0x80, 0x68, 0xf2, 0x39, 0x51, 0xe6, 0x65, 0x68, 0x30, 0x62, 0x97, 0x20, 0xe0, 0x46, 0xe7, ++ 0x34, 0x2d, 0xaa, 0x4c, 0xd1, 0x7b, 0x83, 0x2e, 0xaa, 0xd7, 0x2c, 0x62, 0x9a, 0x40, 0x34, 0x42, ++ 0x72, 0xad, 0xc2, 0xbe, 0xe8, 0x2a, 0x65, 0x4b, 0xc2, 0xe7, 0x4e, 0xf5, 0xba, 0xa0, 0x72, 0xa5, ++ 0xb5, 0x74, 0xb1, 0x78, 0x06, 0xb7, 0xdc, 0x0e, 0xb1, 0xf2, 0xe3, 0x76, 0x1d, 0x53, 0xb5, 0xbe, ++ 0x11, 0x06, 0xdb, 0x9b, 0xaf, 0x74, 0xf7, 0xf8, 0xdb, 0x90, 0xed, 0x63, 0xe0, 0xe5, 0x11, 0xf0, ++ 0xe2, 0xf2, 0x02, 0x11, 0x90, 0x92, 0xcd, 0x93, 0x02, 0x52, 0x6c, 0x82, 0xdd, 0x56, 0xe2, 0xa9, ++ 0xd6, 0xdf, 0xa8, 0x5d, 0x41, 0xe9, 0x4e, 0xbd, 0xa8, 0x85, 0x40, 0xe0, 0x47, 0x16, 0xd6, 0xeb, ++ 0xee, 0x24, 0x88, 0x8e, 0x55, 0xdd, 0xc3, 0x99, 0x88, 0xec, 0x4f, 0x17, 0x09, 0x3f, 0xee, 0xe9, ++ 0x90, 0x5f, 0xc0, 0xaf, 0x78, 0xb8, 0xa8, 0xd8, 0xc0, 0xb5, 0x22, 0x77, 0x67, 0xf6, 0x90, 0x0c, ++ 0x14, 0xb9, 0x5d, 0x62, 0x8c, 0xd1, 0x12, 0x1e, 0x5d, 0x01, 0x65, 0x7c, 0xbf, 0xbb, 0x14, 0xc0, ++ 0x3e, 0x90, 0x65, 0x7d, 0x97, 0xf2, 0x8a, 0x21, 0x65, 0x36, 0xff, 0x5c, 0x24, 0xfc, 0x3e, 0x22, ++ 0x86, 0x7e, 0x1f, 0x16, 0x34, 0x2b, 0x06, 0xc5, 0x1f, 0x81, 0x17, 0xd3, 0xfe, 0xbf, 0x86, 0x6d, ++ 0x49, 0x82, 0x21, 0x3a, 0x5c, 0x7d, 0x0a, 0x8c, 0x21, 0x40, 0x39, 0xb6, 0xc1, 0x02, 0x49, 0xb7, ++ 0xf7, 0x07, 0x1e, 0xff, 0x7c, 0x62, 0x81, 0x6d, 0x1e, 0xa8, 0x21, 0x92, 0x71, 0x94, 0xf7, 0xd8, ++ 0x0a, 0xbd, 0xcf, 0x31, 0x46, 0x89, 0x09, 0x0f, 0xcf, 0xe1, 0xd3, 0x3e, 0xbe, 0xbc, 0x0a, 0x60, ++ }, ++ { /* 3 */ ++ 0xa8, 0x78, 0x41, 0x9a, 0x63, 0x9a, 0xaa, 0xcc, 0x6d, 0x6b, 0xb6, 0x2d, 0xbf, 0x63, 0x8e, 0x1b, ++ 0xb4, 0x31, 0xad, 0x42, 0xc9, 0x42, 0x37, 0x9b, 0xc6, 0x80, 0x29, 0xcb, 0xc0, 0xc9, 0x15, 0xf8, ++ 0x96, 0xde, 0x29, 0xd5, 0x90, 0xd5, 0x18, 0x10, 0xbc, 0xed, 0x40, 0xd2, 0x7a, 0x90, 0xf0, 0x4e, ++ 0x1e, 0xe4, 0x7c, 0xcc, 0x37, 0xcc, 0xa4, 0x79, 0x97, 0x9a, 0x27, 0xb6, 0xd7, 0x37, 0xe2, 0xd3, ++ 0x8a, 0x97, 0xc5, 0x0d, 0x3a, 0x0d, 0x85, 0x47, 0x17, 0x06, 0xdf, 0x34, 0x05, 0x3a, 0x6b, 0xad, ++ 0xf5, 0x02, 0xcd, 0x8d, 0x2d, 0x8d, 0xe6, 0x05, 0x54, 0x61, 0x14, 0x71, 0xb0, 0x2d, 0x33, 0x2f, ++ 0x9f, 0x98, 0x64, 0x8f, 0x0e, 0x8f, 0x01, 0xbf, 0x52, 0x33, 0xb9, 0x79, 0xcb, 0x0e, 0x0a, 0x96, ++ 0xa5, 0xa7, 0xef, 0xe8, 0x04, 0xe8, 0xc1, 0x3f, 0xfb, 0x57, 0xfc, 0x26, 0x9d, 0x04, 0x86, 0xa3, ++ 0x13, 0x3b, 0xd2, 0xbe, 0x50, 0xbe, 0xcf, 0x8a, 0x01, 0xa6, 0x6d, 0xbd, 0xf5, 0x50, 0xea, 0x6b, ++ 0x39, 0x25, 0x53, 0x79, 0x38, 0x79, 0x04, 0xb9, 0x8b, 0xcc, 0xa1, 0x27, 0xaa, 0x38, 0x28, 0x1d, ++ 0xac, 0xe1, 0xa2, 0xb2, 0x9a, 0xb2, 0xd8, 0x90, 0x15, 0x89, 0x05, 0x8d, 0x2c, 0x9a, 0x7c, 0x7b, ++ 0x2d, 0x9d, 0xba, 0xf1, 0xa3, 0xf1, 0x7d, 0x56, 0xd0, 0x20, 0x9b, 0x42, 0x30, 0xa3, 0x94, 0x3e, ++ 0x83, 0xd1, 0x88, 0x57, 0xa4, 0x57, 0x9c, 0xe8, 0xf9, 0xd8, 0x26, 0x9f, 0xb4, 0xa4, 0x91, 0x75, ++ 0x86, 0xff, 0x23, 0x75, 0xf2, 0x75, 0x13, 0xa3, 0x9f, 0xe3, 0xc9, 0x17, 0x73, 0xf2, 0xbe, 0x0d, ++ 0xb9, 0xee, 0x03, 0x30, 0xae, 0x30, 0x5c, 0x68, 0x50, 0xbc, 0x63, 0xc0, 0xe2, 0xae, 0x1d, 0x40, ++ 0x76, 0xd3, 0x45, 0xda, 0x89, 0xda, 0x7a, 0xed, 0xad, 0xb9, 0x32, 0xee, 0x04, 0x89, 0xa2, 0x5a, ++ 0x0f, 0x72, 0x3e, 0x66, 0xfa, 0x66, 0x52, 0xdd, 0xaa, 0x4d, 0xf2, 0x5b, 0x8a, 0xfa, 0x71, 0x88, ++ 0x5a, 0xf9, 0xb7, 0x21, 0x85, 0x21, 0xfa, 0xac, 0x63, 0x40, 0xf5, 0x84, 0x60, 0x85, 0xeb, 0x7c, ++ 0xa0, 0x89, 0x44, 0xca, 0x52, 0xca, 0x4e, 0x74, 0x9d, 0x6c, 0x13, 0xae, 0x5a, 0x52, 0xa9, 0xdb, ++ 0x92, 0x47, 0xca, 0xfd, 0x69, 0xfd, 0x6a, 0x4c, 0xc4, 0x0f, 0xf3, 0x72, 0xe9, 0x69, 0x02, 0x2e, ++ 0xe2, 0xa0, 0xfc, 0x1b, 0x84, 0x1b, 0x5b, 0xd3, 0x2d, 0x25, 0xca, 0x6c, 0xd6, 0x84, 0x2b, 0x24, ++ 0x34, 0xfa, 0xfd, 0x0b, 0x5f, 0x0b, 0x6f, 0x4a, 0x1d, 0xf0, 0xeb, 0x2c, 0x88, 0x5f, 0x20, 0xa5, ++ 0xee, 0xc8, 0x1a, 0x63, 0x4c, 0x63, 0xcd, 0x37, 0xa5, 0xc0, 0xdc, 0x4f, 0xa0, 0x4c, 0xfe, 0x84, ++ 0x6d, 0x19, 0x92, 0x34, 0xe8, 0x34, 0x51, 0xdf, 0x5c, 0x18, 0xfa, 0xd0, 0x14, 0xe8, 0x6f, 0xf1, ++ 0x1a, 0x7d, 0x9f, 0xe4, 0xce, 0xe4, 0xd6, 0x25, 0xef, 0x78, 0x94, 0x16, 0x44, 0xce, 0x10, 0xb3, ++ 0x24, 0xdb, 0xf7, 0xab, 0x3d, 0xab, 0x64, 0xf9, 0x3e, 0xfe, 0x62, 0xe9, 0x81, 0x3d, 0x6e, 0xe6, ++ 0x1f, 0x53, 0x34, 0xc6, 0x98, 0xc6, 0x59, 0x6e, 0x89, 0x43, 0x7b, 0x9e, 0x83, 0x98, 0x3f, 0xcb, ++ 0xd2, 0xc3, 0xe2, 0x38, 0x22, 0x38, 0x46, 0xc5, 0x48, 0x37, 0x92, 0xe0, 0xcd, 0x22, 0xf9, 0xe1, ++ 0x18, 0xd0, 0x0f, 0xf0, 0x53, 0xf0, 0xef, 0x0b, 0xd3, 0x09, 0x2c, 0x46, 0xec, 0x53, 0x69, 0x83, ++ 0x37, 0xe0, 0x25, 0x15, 0x6d, 0x15, 0xab, 0x73, 0x3f, 0x58, 0x0f, 0x54, 0x74, 0x6d, 0x84, 0x8d, ++ 0x6a, 0x9a, 0xa9, 0x02, 0x23, 0x02, 0xe7, 0xba, 0x06, 0x52, 0xad, 0x08, 0x7b, 0x23, 0x39, 0xb9, ++ 0x3f, 0x11, 0x20, 0x45, 0x5c, 0x45, 0x4f, 0xcb, 0xcf, 0x5f, 0xaa, 0xd7, 0x91, 0x5c, 0xa3, 0x4d, ++ 0xae, 0x4c, 0x32, 0xa6, 0x07, 0xa6, 0xe1, 0xbe, 0x29, 0xf8, 0xbd, 0xdd, 0x84, 0x07, 0x05, 0x4b, ++ 0x10, 0x21, 0x0a, 0xa0, 0x62, 0xa0, 0x0b, 0xb3, 0x23, 0x0e, 0x89, 0xc5, 0x09, 0x62, 0x4e, 0x43, ++ 0x46, 0xb0, 0x5b, 0xf9, 0x2f, 0xf9, 0x67, 0xfb, 0xc8, 0xab, 0x6a, 0x62, 0x1f, 0x2f, 0x70, 0x9f, ++ 0x6c, 0xae, 0xda, 0x3e, 0x47, 0x3e, 0xac, 0xc8, 0x42, 0xc1, 0xa6, 0xf8, 0x40, 0x47, 0xb2, 0xe9, ++ 0xbc, 0xc0, 0xa8, 0x12, 0xf8, 0x12, 0xd3, 0x23, 0x36, 0x87, 0x8c, 0x48, 0x25, 0xf8, 0x32, 0x38, ++ 0x68, 0x37, 0x39, 0x16, 0xbe, 0x16, 0xde, 0x94, 0x3a, 0x23, 0x15, 0x58, 0xd3, 0xbe, 0x40, 0x89, ++ 0x0b, 0xeb, 0xdd, 0x4e, 0x03, 0x4e, 0x20, 0x81, 0xd2, 0xaf, 0x41, 0xfb, 0x19, 0x03, 0x83, 0xe8, ++ 0x3e, 0xa6, 0x68, 0x4f, 0xf3, 0x4f, 0xb2, 0xdc, 0xd1, 0x86, 0xf6, 0xff, 0xc5, 0xf3, 0x7e, 0x55, ++ 0xfe, 0xe9, 0x10, 0xc3, 0x2e, 0xc3, 0xc6, 0x84, 0x86, 0xce, 0x55, 0x8a, 0xa9, 0x2e, 0xb0, 0xc7, ++ 0xa9, 0xcf, 0x09, 0x90, 0xcc, 0x90, 0x57, 0xdb, 0x73, 0xb2, 0xea, 0x05, 0xeb, 0xcc, 0x53, 0x03, ++ 0x28, 0xb3, 0x11, 0xd3, 0xf5, 0xd3, 0xf2, 0x1d, 0xb6, 0x1b, 0x74, 0xca, 0xf7, 0xf5, 0xbb, 0x46, ++ 0x7c, 0x8f, 0xd0, 0x9e, 0x25, 0x9e, 0xa7, 0x7b, 0x61, 0xcf, 0x2f, 0x3d, 0x49, 0x25, 0xfc, 0xaa, ++ 0xf2, 0x81, 0xf6, 0xbb, 0xe6, 0xbb, 0x50, 0x60, 0x0e, 0x2b, 0x43, 0xa9, 0xdf, 0xe6, 0x65, 0x67, ++ 0xbf, 0xda, 0x70, 0x0c, 0xca, 0x0c, 0x17, 0x1a, 0x14, 0x2f, 0x68, 0x30, 0xd9, 0xca, 0x96, 0x10, ++ 0xf4, 0xb5, 0x85, 0x87, 0x82, 0x87, 0x1b, 0x12, 0x4a, 0xb8, 0x48, 0x59, 0xe4, 0x82, 0xee, 0x37, ++ 0xcb, 0xa4, 0xa5, 0xc2, 0xde, 0xc2, 0x54, 0xd9, 0x85, 0xe7, 0xe2, 0x8e, 0x75, 0xde, 0x4d, 0x7a, ++ 0x06, 0x34, 0x73, 0x3c, 0x64, 0x3c, 0x4b, 0x72, 0x44, 0x93, 0x0b, 0xf0, 0x3b, 0x64, 0x8b, 0x50, ++ 0xf8, 0xdd, 0x63, 0xff, 0x4a, 0xff, 0x8d, 0xf6, 0xc2, 0x5d, 0x5e, 0x7a, 0x92, 0x4a, 0x3b, 0x97, ++ 0xbd, 0x77, 0xe0, 0x18, 0x57, 0x18, 0x2e, 0x34, 0x28, 0x5e, 0xd0, 0x60, 0x71, 0x57, 0xef, 0x20, ++ 0x75, 0xc9, 0x9d, 0xc4, 0xbb, 0xc4, 0xbe, 0xd4, 0x8f, 0x11, 0xd6, 0x96, 0xf8, 0xbb, 0x06, 0x72, ++ 0x03, 0x1a, 0xd8, 0x1e, 0x32, 0x1e, 0xc4, 0x39, 0x22, 0xa8, 0xe4, 0x78, 0xfc, 0x32, 0xa4, 0x28, ++ 0x4c, 0xec, 0xce, 0xbd, 0x83, 0xbd, 0xba, 0x6d, 0x04, 0xdd, 0x77, 0xb1, 0x52, 0x83, 0x2e, 0x6f, ++ 0x4b, 0x6f, 0xf5, 0x8b, 0x48, 0x8b, 0x0c, 0x08, 0x5e, 0x97, 0x20, 0x69, 0x3d, 0x48, 0x78, 0x27, ++ 0xc0, 0x4f, 0x78, 0x8c, 0xdd, 0x8c, 0x74, 0x58, 0x57, 0x48, 0xa3, 0x75, 0x6c, 0xdd, 0xce, 0x92, ++ 0x04, 0x99, 0xe3, 0x28, 0xf9, 0x28, 0x72, 0x5c, 0x78, 0xe2, 0xb3, 0xa0, 0x93, 0xf9, 0xf2, 0x60, ++ 0xb3, 0xb2, 0x96, 0x74, 0x02, 0x74, 0x81, 0xfe, 0x9c, 0xca, 0x7e, 0x13, 0xaf, 0x02, 0x43, 0xb0, ++ 0xb6, 0x9c, 0x3d, 0x56, 0x54, 0x56, 0x0e, 0xb5, 0xfa, 0xf1, 0x91, 0x9b, 0x68, 0x54, 0x6c, 0xc8, ++ 0x51, 0x12, 0x6a, 0x6f, 0x86, 0x6f, 0xda, 0x2d, 0xb1, 0xef, 0xb4, 0x7f, 0x79, 0x86, 0x68, 0x94, ++ 0xeb, 0xe6, 0xb1, 0x41, 0x1a, 0x41, 0x42, 0x7c, 0xc3, 0xfb, 0x33, 0xc7, 0x67, 0x1a, 0xd1, 0xfc, ++ 0x98, 0x1b, 0x5f, 0xb9, 0xc5, 0xb9, 0xb7, 0xda, 0x08, 0x79, 0xee, 0xa1, 0xa4, 0xc5, 0x5c, 0xde, ++ 0x23, 0x58, 0xcc, 0x9d, 0xf6, 0x9d, 0xd2, 0x9c, 0x64, 0xb4, 0x35, 0x31, 0xee, 0xf6, 0x38, 0xae, ++ 0xab, 0x62, 0x99, 0x84, 0x51, 0x84, 0x6e, 0xf5, 0x4f, 0xc3, 0x52, 0x55, 0x43, 0x51, 0x2a, 0x33, ++ 0xb2, 0x05, 0xde, 0x7e, 0xad, 0x7e, 0x7c, 0xe9, 0x82, 0x13, 0x22, 0x3b, 0xfb, 0xad, 0x9e, 0xa8, ++ 0x99, 0xac, 0x17, 0xb3, 0x6a, 0xb3, 0x4a, 0xcd, 0x16, 0xa0, 0xb2, 0x89, 0xf0, 0x6a, 0x81, 0xc6, ++ 0x89, 0x8d, 0x1d, 0x13, 0x08, 0x13, 0x41, 0x7e, 0x35, 0xae, 0x3b, 0x4c, 0xf9, 0x08, 0xcf, 0x85, ++ 0xdf, 0x1c, 0x4c, 0x4a, 0x45, 0x4a, 0x2d, 0x36, 0xde, 0x0b, 0xd8, 0xeb, 0xef, 0x45, 0xf1, 0x59, ++ 0x0d, 0xdf, 0xae, 0x72, 0x67, 0x72, 0x6b, 0xf3, 0x96, 0x3c, 0x4a, 0x0b, 0x22, 0x67, 0x08, 0xb8, ++ 0x31, 0xd4, 0x56, 0x29, 0x09, 0x29, 0xe0, 0x01, 0x7b, 0xcb, 0x04, 0xa4, 0x4f, 0x09, 0x0f, 0xdd, ++ 0x70, 0xe7, 0x36, 0xe6, 0xed, 0xe6, 0x31, 0x9f, 0xe9, 0x2a, 0x39, 0x1e, 0x3f, 0xed, 0x29, 0x0a, ++ 0x73, 0xfd, 0xee, 0xf8, 0xdf, 0xf8, 0xf5, 0xa6, 0xcb, 0x82, 0xdd, 0x66, 0xc3, 0xdf, 0x8d, 0x22, ++ 0x1d, 0xfe, 0xa4, 0xd2, 0x05, 0xd2, 0x60, 0x40, 0xb5, 0x32, 0xc3, 0xce, 0x2b, 0x05, 0x46, 0xfb, ++ 0x8d, 0x14, 0xfe, 0x3b, 0xf1, 0x3b, 0x33, 0x22, 0x4d, 0x4c, 0x88, 0xec, 0x6a, 0xf1, 0x3d, 0xe5, ++ 0xf1, 0x9b, 0x2e, 0xa5, 0xd4, 0xa5, 0x94, 0x59, 0x2c, 0x83, 0xa7, 0xd1, 0x23, 0xd4, 0xc1, 0x4f, ++ 0x7d, 0x38, 0x98, 0x94, 0x8a, 0x94, 0x5a, 0x6c, 0x7f, 0x16, 0x73, 0x15, 0x1d, 0x8a, 0x21, 0xb2, ++ 0x17, 0xa2, 0x31, 0x96, 0xa9, 0x96, 0xbd, 0xd6, 0x79, 0x44, 0xde, 0x1d, 0x66, 0xa9, 0x18, 0x0b, ++ 0x2c, 0x2a, 0xf2, 0xfb, 0x0c, 0xfb, 0x80, 0x41, 0xce, 0xf9, 0xc7, 0x6a, 0x64, 0x0c, 0x49, 0x26, ++ 0x35, 0x4d, 0xb5, 0x01, 0xf0, 0x01, 0x92, 0x5d, 0x03, 0x29, 0xb7, 0x04, 0xdc, 0xf0, 0xfd, 0xbd, ++ 0x88, 0x3a, 0x55, 0x19, 0xa7, 0x19, 0xbc, 0x69, 0x2b, 0x77, 0x67, 0x64, 0xad, 0xa7, 0x12, 0x9d, ++ 0x67, 0x45, 0x07, 0x70, 0x44, 0x70, 0x8c, 0x49, 0x90, 0x6e, 0xe7, 0x03, 0x59, 0x44, 0x31, 0x01, ++ 0xe1, 0xba, 0x24, 0x05, 0xb6, 0x05, 0x9f, 0xea, 0x0f, 0x8d, 0x2e, 0x14, 0x2a, 0xb6, 0x8f, 0x0c, ++ 0xb5, 0x86, 0xe5, 0x48, 0x66, 0x48, 0xca, 0x8c, 0xd8, 0x59, 0x75, 0xe3, 0x94, 0x66, 0xc8, 0xe0, ++ 0x64, 0x5f, 0xdf, 0x6e, 0x76, 0x6e, 0x48, 0x70, 0xb2, 0xc6, 0x03, 0x7b, 0xa5, 0x76, 0x95, 0x29, ++ 0xb1, 0x1f, 0x06, 0x60, 0x9f, 0x60, 0xb8, 0xd0, 0xa0, 0xbb, 0xc6, 0x43, 0x07, 0x9f, 0x3a, 0x80, ++ 0x08, 0xf1, 0x05, 0x50, 0x31, 0x50, 0xe4, 0xb8, 0xf0, 0x07, 0xa5, 0x83, 0xe5, 0x31, 0x27, 0xc0, ++ 0xe5, 0x23, 0xc7, 0x2d, 0x4f, 0x2d, 0xed, 0xb6, 0x77, 0x6f, 0x9d, 0xb4, 0xb9, 0x4f, 0x7d, 0x6c, ++ 0x1c, 0x49, 0xec, 0xd8, 0xaa, 0xd8, 0x9d, 0x57, 0xab, 0xeb, 0x9f, 0xe6, 0x7f, 0xaa, 0x9b, 0xe3, ++ 0x6b, 0x2d, 0xe1, 0x08, 0x8c, 0x08, 0x1a, 0xad, 0x18, 0x8b, 0xf1, 0x20, 0x2f, 0x8c, 0xe4, 0xa1, ++ 0x5c, 0xcd, 0xc4, 0x1d, 0xe1, 0x1d, 0xb1, 0xde, 0x27, 0xd3, 0xfe, 0x74, 0x5b, 0xe1, 0x60, 0x2c, ++ 0xa3, 0x93, 0x9c, 0xd4, 0x60, 0xd4, 0x8a, 0x4d, 0xbf, 0xc4, 0xf7, 0xd6, 0xa6, 0x60, 0x0d, 0xf3, ++ 0x7a, 0xbb, 0xa3, 0xa2, 0x41, 0xa2, 0xec, 0x09, 0x25, 0x5c, 0x24, 0xcd, 0x72, 0x41, 0x77, 0xfa, ++ 0xe8, 0xfc, 0x69, 0x5f, 0x28, 0x5f, 0x86, 0x45, 0xe1, 0x53, 0xd7, 0xbf, 0x9b, 0x28, 0x75, 0xd4, ++ 0xda, 0x32, 0xe7, 0x68, 0x13, 0x68, 0xa2, 0x7d, 0xb8, 0x30, 0x37, 0x63, 0x28, 0x13, 0xde, 0x21, ++ 0xd7, 0xed, 0x49, 0x1a, 0x74, 0x1a, 0xc9, 0x8e, 0x2e, 0x0c, 0x7d, 0x68, 0x0a, 0x74, 0xd6, 0x99, ++ 0xfa, 0x70, 0xf3, 0xeb, 0xd7, 0xeb, 0xb4, 0xd8, 0xfe, 0x2c, 0xe6, 0x2a, 0x3a, 0xd7, 0x42, 0xa7, ++ 0xa7, 0x0a, 0x7f, 0xfc, 0x99, 0xfc, 0xf8, 0x11, 0xc7, 0x26, 0x44, 0x76, 0x35, 0x99, 0xff, 0x93, ++ 0x7f, 0x95, 0x08, 0x80, 0x17, 0x80, 0x63, 0x42, 0x43, 0x67, 0xcb, 0x45, 0xb5, 0x17, 0x58, 0x82, ++ 0xe4, 0x94, 0x8f, 0x27, 0xe0, 0x27, 0x10, 0xa1, 0x69, 0xb6, 0xc1, 0x9c, 0xed, 0xe0, 0xa0, 0x74, ++ 0x8f, 0xb9, 0x6e, 0x2f, 0x6c, 0x2f, 0x0a, 0x0c, 0x71, 0x3d, 0x30, 0xbc, 0xc2, 0x6c, 0x44, 0xd5, ++ 0xa1, 0x3e, 0x0c, 0xc0, 0xfd, 0xc0, 0xb3, 0x63, 0x83, 0xb5, 0x4f, 0x86, 0x0e, 0xfd, 0x74, 0xc3, ++ 0x52, 0x08, 0xb2, 0x71, 0xb4, 0x71, 0x1e, 0x14, 0x93, 0x47, 0x50, 0x07, 0x85, 0xb4, 0xcc, 0xbc, ++ 0xec, 0x65, 0x8a, 0x77, 0xd1, 0x77, 0xf4, 0x19, 0x99, 0xb1, 0x64, 0x1f, 0x08, 0xd1, 0x87, 0xb4, ++ 0x3b, 0x88, 0xc3, 0x6d, 0xa5, 0x6d, 0x3d, 0x97, 0xb7, 0xbd, 0x19, 0x77, 0x02, 0xa5, 0x51, 0x2d, ++ 0xa2, 0x24, 0xd4, 0xde, 0xcf, 0xde, 0x77, 0x5a, 0xa1, 0x1d, 0xab, 0xfe, 0xf2, 0xcf, 0xd0, 0xeb, ++ 0x5f, 0xd7, 0x1c, 0x03, 0xd3, 0x03, 0x75, 0xe7, 0x05, 0x7b, 0x1a, 0x0c, 0xa7, 0xd3, 0xc4, 0x04, ++ 0x50, 0xa5, 0x22, 0x65, 0x29, 0x65, 0x27, 0x3a, 0xaf, 0x36, 0xe8, 0x57, 0x2d, 0x29, 0xb5, 0x8c, ++ 0x4a, 0xd8, 0xbd, 0x81, 0xe7, 0x81, 0xf1, 0x1f, 0x40, 0x4e, 0x7c, 0x41, 0x69, 0xe7, 0xa5, 0x3f, ++ 0x57, 0x26, 0x19, 0x53, 0xe2, 0x53, 0x91, 0x5f, 0xf5, 0x7c, 0xbf, 0x8f, 0x42, 0xe2, 0xe3, 0xc4, ++ 0x55, 0x8b, 0x89, 0x47, 0x7f, 0x47, 0xa8, 0x71, 0xc9, 0x0d, 0x07, 0xdf, 0xea, 0x7f, 0x9a, 0xf4, ++ 0xdc, 0x06, 0x94, 0x54, 0x77, 0x54, 0xe9, 0x0f, 0xfc, 0xa3, 0x3c, 0x93, 0x13, 0x77, 0x55, 0x71, ++ 0xde, 0xab, 0x04, 0x40, 0xea, 0x40, 0xd0, 0x21, 0xc0, 0xd2, 0x84, 0xc3, 0xbb, 0xea, 0x2c, 0x41, ++ 0x9d, 0x35, 0xf4, 0x9b, 0x93, 0x9b, 0x38, 0x91, 0x6e, 0x42, 0x01, 0x29, 0x63, 0x93, 0x73, 0xa6, ++ 0xe7, 0x8e, 0x57, 0x39, 0xd2, 0x39, 0xd4, 0x98, 0x4b, 0x1e, 0x25, 0xe4, 0x11, 0xd2, 0x04, 0x5c, ++ 0xaf, 0xfb, 0x7a, 0xac, 0xa8, 0xac, 0x1c, 0xa9, 0x37, 0x21, 0xe1, 0xf5, 0xd0, 0xa8, 0xd8, 0x53, ++ 0x97, 0x69, 0x61, 0xdf, 0x3f, 0xdf, 0xe5, 0x07, 0xa2, 0x34, 0x1c, 0xfa, 0x2e, 0x3f, 0x2d, 0x56, ++ 0xaa, 0xd5, 0xd1, 0x8e, 0xfe, 0x8e, 0x93, 0xe2, 0x51, 0x1a, 0x0e, 0x7d, 0x17, 0xfe, 0xf7, 0x2b, ++ 0x26, 0x76, 0x67, 0xbf, 0xa0, 0xbf, 0x5d, 0xd7, 0x02, 0x8f, 0xda, 0xb9, 0x29, 0xa0, 0x17, 0xd6, ++ 0x4d, 0x5b, 0x86, 0xb7, 0x2c, 0xb7, 0x47, 0x7a, 0x1a, 0x04, 0x2b, 0x99, 0x06, 0x2c, 0xf3, 0x77, ++ 0x54, 0x3c, 0xc1, 0x4d, 0xd0, 0x4d, 0x55, 0x66, 0xd7, 0xd4, 0x5b, 0xf7, 0xbe, 0xd0, 0x47, 0xec, ++ 0xf7, 0xaf, 0x5d, 0x99, 0xb0, 0x99, 0xdf, 0x2b, 0x68, 0x10, 0xac, 0x21, 0x18, 0xb0, 0x4a, 0x1f, ++ 0xd9, 0x28, 0x3f, 0x76, 0x21, 0x76, 0x66, 0x44, 0x9a, 0x98, 0xd3, 0x1b, 0xd4, 0x21, 0x7a, 0x09, ++ 0x84, 0x52, 0xb3, 0x61, 0x6f, 0x61, 0x2a, 0x8d, 0xa3, 0x92, 0x71, 0x47, 0xdb, 0x6f, 0xc7, 0x3d, ++ 0x41, 0x33, 0x60, 0xcf, 0xe4, 0xcf, 0xd1, 0x9e, 0x92, 0xe1, 0x3d, 0xba, 0x70, 0xe4, 0x26, 0xd7, ++ 0x82, 0x66, 0xc0, 0x5d, 0x0b, 0x5d, 0x61, 0xff, 0xe7, 0x01, 0x7a, 0xb7, 0xe0, 0x0b, 0x4c, 0x6d, ++ 0xd6, 0x5a, 0x01, 0x10, 0xdb, 0x10, 0x34, 0x99, 0x30, 0xd5, 0x21, 0x40, 0x5e, 0xdb, 0x0b, 0x81, ++ 0xb7, 0x2b, 0x75, 0x5c, 0xfb, 0x5c, 0xf3, 0xa2, 0xe4, 0x28, 0xcd, 0xb3, 0x3c, 0xfb, 0xb1, 0xd0, ++ 0xdb, 0x85, 0xaf, 0x62, 0xbc, 0x62, 0x5f, 0x6a, 0xa6, 0xe9, 0x6b, 0x4b, 0x7c, 0xbc, 0x03, 0x39, ++ 0x2b, 0xa9, 0xc9, 0xcd, 0xc7, 0xcd, 0x36, 0x24, 0x94, 0xb3, 0x90, 0xb2, 0x0b, 0xc7, 0x1f, 0x6e, ++ 0xa6, 0xbd, 0x37, 0xf6, 0x36, 0xf6, 0x05, 0x06, 0xd9, 0xff, 0x18, 0x5e, 0x61, 0x36, 0x22, 0x8b, ++ 0x38, 0x92, 0x1b, 0x73, 0x97, 0x73, 0xf9, 0xae, 0x95, 0x15, 0xfd, 0x0f, 0xfe, 0x97, 0xf5, 0x05, ++ 0xce, 0x8a, 0x0e, 0xe0, 0x88, 0xe0, 0xdb, 0x92, 0xe3, 0xdc, 0x0d, 0x06, 0xb2, 0x88, 0x62, 0x02, ++ 0x95, 0xc4, 0xf1, 0xcb, 0xa2, 0xcb, 0xdc, 0x29, 0x9e, 0x45, 0xa4, 0xaa, 0x86, 0xa2, 0x54, 0x66, ++ 0x71, 0x50, 0x7e, 0xec, 0x42, 0xec, 0xcc, 0x88, 0xf7, 0xf3, 0x65, 0x36, 0x6b, 0x42, 0xf4, 0x12, ++ 0xc3, 0x55, 0xa0, 0x92, 0xef, 0x92, 0xb0, 0x61, 0x75, 0xe0, 0x47, 0x0d, 0x90, 0xef, 0x6a, 0xba, ++ 0x8e, 0x0e, 0x26, 0x25, 0xc3, 0x25, 0xf7, 0x1b, 0x6f, 0xe4, 0x6c, 0x94, 0x96, 0xc3, 0x99, 0xcd, ++ 0x9a, 0xb6, 0xcf, 0xad, 0x58, 0xad, 0x8e, 0xf4, 0x34, 0x08, 0x56, 0xf1, 0x0c, 0x58, 0x25, 0xee, ++ 0xef, 0x7f, 0x52, 0x69, 0xe3, 0x69, 0x30, 0x20, 0xbb, 0x19, 0x80, 0x67, 0xf4, 0xe3, 0x23, 0x9c, ++ 0x25, 0x6c, 0xbf, 0xa1, 0x92, 0xa1, 0x99, 0xee, 0x20, 0x27, 0x3e, 0xc1, 0xd5, 0x92, 0xb3, 0xfe, ++ 0xa4, 0x10, 0xa7, 0xe2, 0xab, 0xe2, 0x3c, 0x28, 0xe5, 0x8e, 0xa0, 0x0e, 0xc9, 0xab, 0x5b, 0xbb, ++ 0xe9, 0x4b, 0x21, 0x55, 0x87, 0x55, 0x7b, 0x52, 0xff, 0x8a, 0x8b, 0x97, 0xcf, 0x87, 0xa8, 0xcc, ++ 0x3c, 0x0b, 0xf8, 0x5b, 0x6e, 0x5b, 0x8b, 0xf2, 0xed, 0xf7, 0x4e, 0xaf, 0x6d, 0x6e, 0x07, 0x65, ++ 0x6f, 0xb4, 0x02, 0x20, 0x75, 0x20, 0x68, 0xf1, 0x60, 0x69, 0x42, 0x80, 0xbc, 0x75, 0x16, 0xc1, ++ 0x02, 0xad, 0x90, 0x14, 0x9d, 0x14, 0x39, 0x2e, 0x3c, 0x71, 0xb8, 0x50, 0xa8, 0x9d, 0x79, 0x30, ++ 0x01, 0xb7, 0x48, 0x0a, 0xaf, 0x0a, 0xfd, 0x17, 0x1e, 0xd9, 0x5c, 0x28, 0x54, 0xaf, 0xdd, 0x18, ++ 0x0a, 0x5c, 0x95, 0x44, 0xac, 0x44, 0xdd, 0x96, 0xcc, 0x76, 0x1d, 0xd3, 0x4d, 0xac, 0x5e, 0xf0, ++ 0x09, 0x46, 0x4d, 0x5a, 0x9e, 0x5a, 0x19, 0xaf, 0xee, 0xde, 0xf9, 0xab, 0xb1, 0x9e, 0xfa, 0xd8, ++ 0x94, 0x73, 0xb9, 0xc1, 0x0d, 0xc1, 0x21, 0x3e, 0x80, 0x9c, 0xf8, 0x82, 0xd2, 0x0d, 0x89, 0x7e, ++ 0xed, 0xd2, 0xc2, 0x7d, 0x7e, 0x7d, 0x09, 0x0e, 0x87, 0x68, 0x38, 0x37, 0x5c, 0x7e, 0x5a, 0xac, ++ 0x59, 0xe3, 0x6f, 0x3f, 0xb7, 0x3f, 0x3e, 0x95, 0x41, 0xe8, 0x11, 0xfc, 0x9c, 0xb7, 0x4f, 0x54, ++ 0x61, 0x71, 0x74, 0x4c, 0x20, 0x4c, 0xc7, 0x3b, 0xd4, 0xfd, 0xec, 0xf3, 0x62, 0x20, 0xba, 0x51, ++ 0x69, 0x80, 0x71, 0x1c, 0x11, 0x1c, 0x23, 0x83, 0x24, 0xfa, 0x49, 0x70, 0x87, 0x11, 0x9d, 0x91, ++ 0x29, 0x04, 0x59, 0xd9, 0x5a, 0xd9, 0x0f, 0x0a, 0xa8, 0xc2, 0x28, 0xe2, 0xa3, 0x5a, 0x66, 0x5e, ++ 0xb0, 0xa8, 0x4e, 0x6a, 0x30, 0x6a, 0x45, 0xc7, 0xbe, 0x62, 0x9a, 0x6b, 0x53, 0x30, 0xe7, 0x98, ++ 0x30, 0x63, 0x1e, 0x23, 0xa6, 0x23, 0x1d, 0x16, 0x65, 0x12, 0x58, 0x8c, 0x1b, 0xa6, 0xd2, 0xc5, ++ 0x60, 0xc6, 0x3c, 0x46, 0x8f, 0x46, 0x3a, 0x2c, 0xca, 0x24, 0xb0, 0xdb, 0x36, 0x8f, 0x67, 0x49, ++ 0x74, 0x7e, 0xd5, 0xce, 0x14, 0xce, 0x43, 0xc3, 0x91, 0xc8, 0x8a, 0xbe, 0xac, 0x14, 0xdb, 0x6a, ++ 0x22, 0xef, 0x84, 0x97, 0x59, 0x97, 0x2f, 0x8b, 0x7a, 0x6d, 0x69, 0x19, 0xba, 0x59, 0xe5, 0xb6, ++ 0x0c, 0x68, 0xe6, 0x78, 0xc8, 0x78, 0x96, 0xe4, 0x88, 0xe5, 0x16, 0x23, 0x76, 0xc8, 0xd5, 0xa0, ++ 0xcd, 0x90, 0xd6, 0xfe, 0xba, 0xfe, 0x1f, 0xab, 0xc1, 0x74, 0xe9, 0x7e, 0x4e, 0xba, 0xc6, 0x2a, ++ 0x7b, 0x0c, 0xeb, 0xa8, 0xee, 0xa8, 0x11, 0x1e, 0x3b, 0x85, 0x78, 0xe5, 0x26, 0xee, 0xaa, 0xe2, ++ 0x5b, 0x4e, 0xff, 0x2b, 0x2a, 0x2b, 0x07, 0xbb, 0x7d, 0x99, 0xa9, 0xac, 0x34, 0x2a, 0x36, 0x64, ++ 0x40, 0x84, 0x28, 0xc5, 0x4b, 0xc5, 0x2c, 0x89, 0x8c, 0x38, 0x61, 0x92, 0x24, 0x4b, 0xfb, 0xcf, ++ 0xe3, 0x17, 0xb4, 0x11, 0x2b, 0x11, 0xa6, 0xc4, 0x33, 0xfc, 0x96, 0x44, 0x82, 0x2b, 0xf6, 0x3c, ++ 0x14, 0xb8, 0xe9, 0x88, 0x9b, 0x88, 0x79, 0xef, 0x5b, 0xec, 0x3a, 0x65, 0x9a, 0x9b, 0xbc, 0x23, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfd, 0xf3, 0xc8, 0xdd, 0x1c, 0xdd, 0x02, 0xbd, 0xa4, 0x66, 0xb1, 0xf2, 0x55, 0x1c, 0x14, 0xef, ++ 0x78, 0x16, 0x33, 0xb6, 0xdc, 0xb6, 0xd5, 0x27, 0x19, 0x2d, 0x9c, 0x9d, 0xda, 0xdc, 0x0e, 0xca, ++ 0xad, 0x56, 0xea, 0xb8, 0x35, 0xb8, 0x25, 0x87, 0x0b, 0x50, 0x59, 0xa5, 0x78, 0x35, 0xa1, 0x63, ++ 0xd0, 0x6e, 0x72, 0x2c, 0xbf, 0x2c, 0x7f, 0xeb, 0x74, 0x46, 0x2a, 0xb0, 0x65, 0xbf, 0x80, 0xd1, ++ 0x91, 0x5d, 0x12, 0xe3, 0x5b, 0xe3, 0xae, 0x75, 0xe6, 0xa7, 0x17, 0x0a, 0x15, 0x5b, 0xa6, 0x06, ++ 0xfc, 0x44, 0x80, 0xd7, 0xb3, 0xd7, 0xff, 0xaa, 0xba, 0xbf, 0xed, 0xda, 0x01, 0xb3, 0xc9, 0xf7, ++ 0xf9, 0x6a, 0x2b, 0xf5, 0xe5, 0xf5, 0x70, 0xe1, 0xdc, 0x84, 0x02, 0x52, 0xc6, 0xe5, 0xe6, 0x8f, ++ 0xea, 0x51, 0xf9, 0x4b, 0xb5, 0x4b, 0xbf, 0x6b, 0xdd, 0x22, 0x6f, 0xef, 0x33, 0xb5, 0x0c, 0xe4, ++ 0x85, 0xe5, 0xfb, 0x6b, 0xc0, 0x6b, 0xd7, 0x9a, 0xbd, 0x4b, 0x2d, 0x6f, 0x8f, 0xc0, 0x1a, 0x25, ++ 0x7e, 0x22, 0x40, 0x8a, 0xb8, 0x8a, 0x9e, 0x55, 0x5d, 0xbe, 0x97, 0x6d, 0xe1, 0xb8, 0x85, 0x9a, ++ 0x77, 0x64, 0x0d, 0xd0, 0x26, 0xd0, 0x87, 0xfa, 0xb3, 0x60, 0x6e, 0xc6, 0x50, 0x26, 0x7f, 0x42, ++ 0xc7, 0xcc, 0x43, 0xba, 0x16, 0xba, 0xc2, 0x3d, 0x0d, 0x02, 0xf4, 0xad, 0x03, 0x16, 0x98, 0xda, ++ 0xc5, 0x61, 0xd3, 0xae, 0x8b, 0xae, 0xfb, 0x13, 0x31, 0x73, 0x4c, 0xfd, 0xab, 0x8b, 0xe1, 0xea, ++ 0x5d, 0x7a, 0x8c, 0x17, 0x4e, 0x17, 0x4c, 0xc9, 0x39, 0x0a, 0xa2, 0x5c, 0x0f, 0x4e, 0xbd, 0x34, ++ 0x3a, 0x3f, 0x8b, 0x67, 0x0a, 0x67, 0xc0, 0x80, 0xa9, 0x64, 0x45, 0x5f, 0x56, 0x0a, 0x8c, 0x35, ++ 0xd5, 0x40, 0xd9, 0x0e, 0xe9, 0x0e, 0xf0, 0xa0, 0x12, 0x7d, 0xc5, 0x38, 0xa2, 0xe9, 0xaf, 0xa9, ++ 0x66, 0xf2, 0x4f, 0x7a, 0xeb, 0x7a, 0x71, 0x5e, 0x8e, 0xb7, 0xbb, 0x2b, 0x0d, 0xeb, 0xec, 0x19, ++ 0x8b, 0x20, 0x8d, 0x07, 0x95, 0x07, 0x78, 0x50, 0x09, 0xdf, 0x83, 0x1c, 0x51, 0x95, 0xb6, 0xb5, ++ 0x49, 0xc2, 0x65, 0x9f, 0xd5, 0x9f, 0x35, 0x26, 0x62, 0xe6, 0x98, 0x39, 0x95, 0xd5, 0x01, 0x17, ++ 0xc2, 0xe2, 0xe8, 0x98, 0x40, 0x98, 0x4d, 0x76, 0x6b, 0x39, 0x1b, 0x25, 0xc4, 0x40, 0xb7, 0xa2, ++ 0xc6, 0x7b, 0x0b, 0xb0, 0xb9, 0xb0, 0x3f, 0x2a, 0x13, 0xdb, 0xa8, 0x85, 0x57, 0xb9, 0x45, 0xc2, ++ 0x56, 0x91, 0x51, 0x59, 0x4d, 0x59, 0x6c, 0x48, 0xeb, 0xa5, 0xe3, 0xa7, 0x16, 0x4d, 0x3e, 0xdc, ++ 0x4e, 0x41, 0x5e, 0xa9, 0x1e, 0xa9, 0x83, 0x43, 0x38, 0xac, 0xcf, 0xe1, 0xfa, 0x1e, 0x57, 0x5f, ++ 0x27, 0xc1, 0x2f, 0xb5, 0x0f, 0xb5, 0xa0, 0xc0, 0x1c, 0x56, 0x86, 0x91, 0x7d, 0x0f, 0xca, 0xce, ++ 0xe6, 0x39, 0x1f, 0x33, 0x7d, 0x33, 0x29, 0x8f, 0x55, 0xc7, 0x79, 0xcc, 0x45, 0x7d, 0xd9, 0x44, ++ 0x93, 0xf0, 0x82, 0xf7, 0xc6, 0xf7, 0x97, 0x5b, 0xda, 0xd6, 0xaf, 0x5a, 0xbd, 0xc6, 0xdf, 0x36, ++ 0xbb, 0x43, 0x93, 0x24, 0x33, 0x24, 0x65, 0x46, 0x6c, 0xcd, 0xdb, 0x90, 0x4a, 0x33, 0x64, 0x70, ++ 0xd1, 0xd9, 0x3a, 0x26, 0x10, 0x26, 0x82, 0xfc, 0x6a, 0x9f, 0x76, 0x98, 0x31, 0x10, 0x5d, 0xc9, ++ 0x63, 0xdc, 0xe4, 0x58, 0xbd, 0x58, 0xfe, 0x15, 0xe8, 0x8c, 0x54, 0xa3, 0xca, 0xbd, 0xc3, 0x61, ++ 0xc1, 0xf8, 0x30, 0x86, 0x72, 0x86, 0x89, 0x4f, 0x49, 0x91, 0xff, 0x5d, 0x38, 0x72, 0x13, 0x8a, ++ 0x45, 0xaa, 0x83, 0xe7, 0x1d, 0xe7, 0xa3, 0xc2, 0xea, 0x03, 0x8e, 0x1a, 0xe3, 0x1d, 0xd4, 0xb7, ++ 0xc8, 0xbe, 0x7d, 0xdc, 0xec, 0xdc, 0x90, 0xe0, 0xa7, 0x4f, 0x06, 0xf6, 0x89, 0xec, 0xe9, 0x52, ++ 0x16, 0x15, 0x79, 0x9c, 0x06, 0x9c, 0x40, 0xc1, 0x67, 0x9d, 0x82, 0x35, 0x32, 0x06, 0xc5, 0x13, ++ 0x1b, 0xca, 0xd7, 0xee, 0x61, 0xee, 0x2b, 0x32, 0xf1, 0xa1, 0xc8, 0x3e, 0x10, 0x61, 0xcd, 0xab, ++ 0x20, 0x42, 0x14, 0x83, 0xc4, 0x83, 0x16, 0xa5, 0x46, 0x1c, 0xd1, 0x49, 0x12, 0xc4, 0x9c, 0x86, ++ 0x9b, 0x01, 0x87, 0xa7, 0xf7, 0xa7, 0x73, 0xe3, 0x2a, 0xd1, 0x0a, 0xd9, 0x58, 0xf7, 0xf8, 0xf6, ++ 0xf3, 0x36, 0xbe, 0xb1, 0x49, 0xb1, 0xad, 0x77, 0x10, 0xf2, 0x1f, 0x81, 0x8b, 0x49, 0xb8, 0x7f, ++ 0xb8, 0x59, 0x4b, 0x3a, 0x01, 0x3a, 0xa1, 0x7f, 0x4e, 0x65, 0x3f, 0xe8, 0xb6, 0x01, 0xc0, 0x58, ++ 0xf0, 0x2c, 0x66, 0xaf, 0x7b, 0xaf, 0x69, 0x4e, 0x32, 0x5a, 0xfb, 0xf9, 0x77, 0x7b, 0x1c, 0x57, ++ 0x2f, 0x30, 0x2a, 0xe5, 0x3e, 0xe5, 0x44, 0x78, 0xec, 0x51, 0x23, 0x12, 0x98, 0x3e, 0xed, 0x0e, ++ 0xba, 0xf4, 0xdb, 0x2e, 0x9c, 0x2e, 0x98, 0x51, 0x72, 0x14, 0x87, 0xb8, 0x1e, 0x9c, 0xb9, 0x68, ++ 0x4f, 0xf6, 0x16, 0xa3, 0xb1, 0xa3, 0x7e, 0x54, 0x26, 0x75, 0x93, 0xc9, 0xae, 0xb1, 0x8a, 0x47, ++ 0xbe, 0x6d, 0x38, 0x06, 0x65, 0x06, 0xea, 0x0d, 0x0a, 0xf6, 0x34, 0x18, 0x8d, 0x65, 0x4b, 0x08, ++ 0x12, 0x8c, 0x9a, 0xb4, 0xff, 0xb4, 0x32, 0x9d, 0x1f, 0x7f, 0x31, 0x95, 0xa1, 0xff, 0x37, 0x73, ++ 0x43, 0x9e, 0xf0, 0xdb, 0x79, 0xdb, 0xe8, 0xb0, 0xae, 0x90, 0x85, 0xea, 0xd8, 0x79, 0x5f, 0xe7, ++ 0xcf, 0x3d, 0x46, 0xea, 0x27, 0xea, 0x26, 0x85, 0xfd, 0x05, 0x51, 0x2e, 0xe6, 0x27, 0xbf, 0x1a, ++ 0xc9, 0x09, 0x35, 0xd6, 0x43, 0xd6, 0x6d, 0xf7, 0xb9, 0x96, 0x5a, 0xde, 0xdd, 0x43, 0x34, 0x4a, ++ 0x2a, 0x1e, 0x81, 0xc7, 0x68, 0xc7, 0xcb, 0x33, 0x8a, 0x6a, 0xcc, 0x9a, 0x5f, 0x68, 0xc2, 0x76, ++ 0x11, 0x96, 0x42, 0xaa, 0xcd, 0xaa, 0xf6, 0xa4, 0x3d, 0xd7, 0xd5, 0xed, 0x5d, 0xcd, 0x93, 0x5b, ++ 0x15, 0x0f, 0xa1, 0x82, 0x34, 0x82, 0x84, 0xf8, 0x45, 0x35, 0x66, 0x4d, 0xce, 0x34, 0x61, 0x3b, ++ 0xf6, 0x18, 0x15, 0x93, 0x1f, 0x93, 0x22, 0x3c, 0x76, 0xc9, 0xf0, 0x09, 0x4c, 0x1f, 0x97, 0x07, ++ 0x62, 0x6b, 0xac, 0x52, 0x12, 0x52, 0x03, 0x02, 0xf6, 0x55, 0x08, 0x8b, 0x9e, 0x12, 0x1e, 0x79, ++ 0xcc, 0x27, 0x9e, 0xf4, 0x15, 0xf4, 0xe2, 0xbc, 0xdf, 0xad, 0xb5, 0x56, 0x1a, 0x15, 0x1b, 0x32, ++ 0xe0, 0x0d, 0x6c, 0x0f, 0x19, 0x0f, 0x62, 0xfd, 0x11, 0x54, 0x72, 0x3c, 0x7e, 0x19, 0x52, 0x14, ++ 0x8c, 0xa3, 0xb6, 0x31, 0x5e, 0x31, 0xce, 0x35, 0x53, 0x95, 0xd4, 0xc4, 0x3e, 0x5e, 0xe0, 0xfd, ++ 0x90, 0xea, 0x5a, 0xe9, 0xf4, 0xe9, 0x53, 0x62, 0xf8, 0x7e, 0x4b, 0x22, 0x41, 0xf4, 0x7b, 0x1e, ++ 0x47, 0x07, 0x13, 0xf3, 0x80, 0xf3, 0x9a, 0xec, 0xd6, 0x72, 0x36, 0x4a, 0x4b, 0x80, 0xad, 0x87, ++ 0xff, 0x5e, 0x58, 0xc9, 0x81, 0xc9, 0x3b, 0x93, 0x98, 0x17, 0x09, 0xa2, 0xfd, 0x81, 0x6d, 0xdf, ++ 0x81, 0x7c, 0x18, 0x43, 0x39, 0x43, 0xa5, 0xc6, 0xc5, 0xa9, 0x9e, 0xcf, 0x1c, 0x39, 0xe8, 0x45, ++ 0x5e, 0x60, 0x54, 0x09, 0x7c, 0x09, 0x88, 0xf0, 0x1b, 0xa2, 0x46, 0x24, 0xf3, 0x7c, 0x19, 0x1c, ++ 0xfb, 0xc7, 0xbb, 0xe1, 0x78, 0xe1, 0x49, 0xcf, 0xe0, 0xf5, 0xba, 0x02, 0x6e, 0x78, 0x9f, 0xbf, ++ 0x79, 0xa1, 0x7b, 0xbc, 0x73, 0xbc, 0x28, 0x30, 0x07, 0xf4, 0xc0, 0xb5, 0x8e, 0x73, 0xd3, 0xd2, ++ 0x36, 0x57, 0x6d, 0x1f, 0xc2, 0x1f, 0x56, 0x64, 0x21, 0x81, 0x53, 0x7c, 0x20, 0xc2, 0x59, 0x95, ++ 0x32, 0xce, 0x8e, 0x37, 0x3b, 0x37, 0x24, 0x38, 0x59, 0x63, 0xe0, 0xdc, 0xb3, 0x3b, 0xab, 0xf5, ++ 0x0e, 0xc5, 0x76, 0x6c, 0x55, 0x6c, 0xaf, 0xca, 0xb4, 0x94, 0xae, 0x73, 0xde, 0x55, 0xac, 0x90, ++ 0xd3, 0x74, 0xaa, 0x32, 0x8d, 0x32, 0xbb, 0xd2, 0x56, 0xee, 0xce, 0xc8, 0x99, 0x8d, 0x24, 0xf9, ++ 0x33, 0x79, 0xc6, 0x3d, 0x94, 0x3d, 0xd9, 0x2f, 0x47, 0xba, 0xbc, 0xf4, 0xe7, 0x94, 0x76, 0xed, ++ 0x53, 0xbf, 0xfa, 0x7b, 0x1b, 0x7b, 0xe3, 0x03, 0x8d, 0x9e, 0x0c, 0x2f, 0xd1, 0x1b, 0x11, 0xa4, ++ 0x87, 0x48, 0x6b, 0x7f, 0x5d, 0x7f, 0xee, 0xb4, 0x81, 0x3a, 0x95, 0x3f, 0x27, 0x5d, 0x63, 0x15, ++ 0x21, 0xf5, 0x5c, 0x89, 0x6b, 0x89, 0xeb, 0xb2, 0x58, 0xc5, 0x8d, 0x61, 0x46, 0x6b, 0x41, 0x9e, ++ 0xd4, 0xf7, 0x91, 0x04, 0x46, 0x04, 0x0d, 0xb7, 0x0c, 0xa4, 0x99, 0x10, 0xf6, 0x46, 0x72, 0xb1, ++ 0x07, 0x83, 0x3b, 0x36, 0xcb, 0x36, 0xb6, 0x65, 0x5a, 0x4a, 0x57, 0xd8, 0x6f, 0xcb, 0x56, 0x48, ++ 0x48, 0x75, 0x2d, 0x95, 0x7a, 0x95, 0xc8, 0x31, 0x7c, 0x3f, 0xc4, 0x11, 0xc1, 0x7a, 0xdc, 0x0f, ++ 0xdd, 0xb1, 0xdc, 0x5e, 0xd8, 0x5e, 0x14, 0x18, 0xe2, 0x7a, 0x60, 0xbb, 0x47, 0xd8, 0x88, 0x69, ++ 0x6e, 0x03, 0x4a, 0x2a, 0xda, 0x2a, 0x95, 0xe6, 0x7e, 0xb0, 0x1e, 0xa8, 0xe8, 0xda, 0xcb, 0xd9, ++ 0xc4, 0xd6, 0x9b, 0xa4, 0x24, 0xa4, 0x06, 0x04, 0x2f, 0xaa, 0x10, 0xd5, 0xff, 0x24, 0x3c, 0xf2, ++ 0x58, 0x54, 0x27, 0x35, 0x18, 0x35, 0xc3, 0x82, 0x5f, 0x31, 0x4d, 0xd4, 0xc8, 0x18, 0x92, 0x4c, ++ 0x9c, 0x82, 0xbc, 0x91, 0x3c, 0x91, 0xc5, 0x86, 0x70, 0x9b, 0x5d, 0x01, 0x37, 0x3c, 0xae, 0xbe, ++ 0x05, 0x2e, 0xab, 0x22, 0x56, 0x22, 0x8f, 0x4b, 0x66, 0x3b, 0xef, 0x88, 0xc7, 0x56, 0x2f, 0x78, ++ 0x19, 0x67, 0x47, 0xfa, 0xfc, 0xfa, 0x12, 0x1c, 0xcd, 0xd0, 0x70, 0x6e, 0xb8, 0xfc, 0xb4, 0x9b, ++ 0xd8, 0x9f, 0x77, 0x7c, 0x8e, 0x7c, 0x9b, 0x53, 0x84, 0x41, 0x8f, 0x33, 0x80, 0x8e, 0xa7, 0x11, ++ 0x80, 0xcb, 0x50, 0x49, 0x96, 0x49, 0x58, 0xd1, 0xdb, 0x70, 0xc2, 0xe7, 0x48, 0x96, 0x35, 0x5d, ++ 0x9e, 0x2f, 0x2c, 0x85, 0xa1, 0x85, 0xfc, 0xa8, 0x4c, 0xea, 0xe5, 0x51, 0x9f, 0xa1, 0xd7, 0x8e, ++ 0x44, 0x1d, 0xcb, 0xed, 0xb2, 0xed, 0x5e, 0xd5, 0xf4, 0xda, 0xd2, 0x32, 0xb7, 0xb2, 0x09, 0xaf, ++ 0xca, 0x13, 0xed, 0xc8, 0x71, 0xc8, 0xa9, 0xce, 0x9b, 0x3e, 0xbe, 0xa6, 0x21, 0x71, 0x90, 0x62, ++ 0x3d, 0xbc, 0xb0, 0x51, 0xc1, 0x51, 0x76, 0xe5, 0xf3, 0x2e, 0x12, 0x87, 0x39, 0xc1, 0xda, 0x7d, ++ 0x2e, 0x87, 0x62, 0xef, 0x91, 0xef, 0xb9, 0x6f, 0xf2, 0x88, 0x7f, 0x3a, 0xcc, 0x91, 0x30, 0x16, ++ 0x72, 0x4a, 0xa6, 0xf2, 0x70, 0xf2, 0x08, 0xb1, 0xd5, 0x5b, 0x81, 0x4e, 0x97, 0x70, 0x50, 0x3a, ++ 0x42, 0x29, 0xb8, 0xd1, 0xd6, 0xd1, 0x15, 0xa7, 0xb0, 0x49, 0xd9, 0xc2, 0x8c, 0xd6, 0x82, 0xff, ++ 0x65, 0xe8, 0x97, 0x64, 0xd9, 0x64, 0xb5, 0x67, 0xac, 0x1f, 0x5f, 0x53, 0xf1, 0xd9, 0x48, 0x31, ++ }, ++ { /* 4 */ ++ 0x04, 0xc3, 0xb6, 0x81, 0x36, 0x3e, 0x4d, 0xde, 0x9f, 0xbe, 0xcc, 0x92, 0x5e, 0x72, 0x11, 0x8f, ++ 0xc5, 0x34, 0x29, 0xba, 0x33, 0x7a, 0x21, 0x8a, 0x27, 0x60, 0x9b, 0x0b, 0x90, 0xfb, 0x32, 0xb5, ++ 0xdf, 0x7b, 0x40, 0x9b, 0x9c, 0xe1, 0x8b, 0x64, 0x4d, 0x3d, 0x10, 0xa8, 0xb8, 0x2d, 0xbd, 0xb7, ++ 0xb7, 0x84, 0x27, 0x1f, 0x65, 0xc8, 0x66, 0x5a, 0x26, 0x8a, 0x79, 0x61, 0x18, 0xf3, 0xc4, 0xbf, ++ 0x1e, 0x8c, 0xdf, 0xa0, 0x99, 0xa5, 0xe7, 0x30, 0xf5, 0xe3, 0x47, 0x31, 0x76, 0xa4, 0x9e, 0x8d, ++ 0x26, 0x94, 0x14, 0xa2, 0x5e, 0x12, 0xa7, 0x8e, 0x43, 0x58, 0x05, 0xc1, 0xc4, 0x5d, 0x70, 0xdb, ++ 0xff, 0xac, 0xb9, 0x19, 0xef, 0xd2, 0xa6, 0x5b, 0x3f, 0x84, 0xbf, 0xb2, 0x0d, 0x3b, 0x35, 0x45, ++ 0xc8, 0xf2, 0xfc, 0x4b, 0x85, 0xd6, 0x74, 0xfd, 0x12, 0xaf, 0x3f, 0xbb, 0x84, 0x90, 0x94, 0xb4, ++ 0x7b, 0xb5, 0x6d, 0xd5, 0xd6, 0x20, 0x5f, 0x79, 0xab, 0x9b, 0x8a, 0x48, 0xc2, 0x11, 0x41, 0x84, ++ 0x7a, 0xf5, 0xa1, 0x64, 0x3a, 0xce, 0xdd, 0xaf, 0xfc, 0x55, 0xb9, 0x8d, 0x34, 0xec, 0xd4, 0xd7, ++ 0xe8, 0x25, 0x05, 0xc9, 0xf6, 0xe5, 0x59, 0xc2, 0x60, 0x16, 0x90, 0xa1, 0x31, 0x86, 0x1c, 0x46, ++ 0xa0, 0x0d, 0x9b, 0xcf, 0x7c, 0xff, 0x99, 0xc3, 0x79, 0x18, 0x56, 0x72, 0x24, 0x4e, 0xed, 0xbc, ++ 0x3e, 0x5b, 0x26, 0x22, 0xea, 0x96, 0xca, 0x0f, 0x87, 0x5a, 0xe8, 0x2b, 0xc3, 0xb2, 0x16, 0x7f, ++ 0xe9, 0x65, 0xc9, 0x78, 0x1a, 0x0b, 0xdb, 0x14, 0x37, 0xd8, 0xa3, 0x64, 0xc7, 0x7b, 0x89, 0x15, ++ 0x09, 0x05, 0x63, 0x70, 0x80, 0x92, 0x18, 0xa9, 0xaa, 0x71, 0x68, 0x22, 0x4a, 0x19, 0xb7, 0x8e, ++ 0x18, 0xcf, 0x32, 0x80, 0xb4, 0x84, 0x6d, 0x81, 0xc4, 0x02, 0xed, 0xea, 0x07, 0xef, 0x66, 0xa4, ++ 0xba, 0x42, 0xf2, 0xee, 0xd3, 0x64, 0x33, 0x2d, 0x13, 0x45, 0xdd, 0xd1, 0x0c, 0x98, 0x62, 0xbe, ++ 0x83, 0x1a, 0xf5, 0x5d, 0xf8, 0x3d, 0xf1, 0x45, 0xf2, 0x30, 0xac, 0xe4, 0x48, 0x9c, 0x19, 0xbb, ++ 0x1f, 0xcc, 0x13, 0x11, 0x75, 0x4b, 0x65, 0xe6, 0xa2, 0x2d, 0x74, 0xf4, 0x80, 0x59, 0x0b, 0xde, ++ 0x33, 0x9d, 0xf3, 0xd3, 0x5c, 0x3a, 0x9f, 0x78, 0xb2, 0x95, 0x4c, 0x9b, 0xd7, 0xd9, 0xb0, 0x7e, ++ 0xb1, 0xc7, 0xca, 0x3f, 0x48, 0xe9, 0xec, 0xeb, 0x17, 0x6b, 0xd3, 0xba, 0x69, 0xb8, 0x3c, 0x96, ++ 0xb6, 0xc4, 0xeb, 0xae, 0x89, 0x26, 0xe4, 0x8c, 0x71, 0x44, 0x4a, 0xa4, 0xee, 0x0e, 0x51, 0xec, ++ 0x46, 0x2e, 0xdc, 0xe7, 0xcb, 0x47, 0xd0, 0xcf, 0xd5, 0x50, 0x37, 0xef, 0xd8, 0x67, 0x2b, 0x0e, ++ 0x78, 0x75, 0xfa, 0xc5, 0x21, 0xd1, 0x1a, 0xc0, 0x52, 0x0a, 0xdf, 0xc4, 0x1b, 0xd5, 0x3d, 0x71, ++ 0x5b, 0x62, 0x94, 0x57, 0xa5, 0x13, 0x72, 0x46, 0xd9, 0x22, 0x25, 0x52, 0x77, 0x07, 0xc9, 0x76, ++ 0x80, 0xda, 0x62, 0x4d, 0x0f, 0xcc, 0xb4, 0xfc, 0x0b, 0xa1, 0xf9, 0x68, 0x91, 0x58, 0x65, 0x4e, ++ 0x8c, 0x5c, 0x7b, 0x0d, 0x55, 0x8e, 0x63, 0x5d, 0x69, 0xa0, 0x6e, 0x1d, 0x73, 0xce, 0x56, 0x1c, ++ 0xeb, 0xe5, 0x92, 0xd9, 0x01, 0x14, 0x1c, 0x7b, 0x99, 0x87, 0xc5, 0x2d, 0xe8, 0x42, 0x60, 0xb3, ++ 0x2d, 0x11, 0x2c, 0x73, 0xc5, 0x9f, 0x78, 0x48, 0x47, 0x76, 0x0b, 0xaa, 0xa1, 0x7d, 0x2e, 0xf3, ++ 0xfb, 0x6f, 0x0f, 0x98, 0xd9, 0xec, 0xeb, 0x85, 0xa0, 0x3a, 0x73, 0x20, 0x53, 0x49, 0x24, 0xca, ++ 0xd9, 0x38, 0xad, 0xbb, 0xb1, 0xc0, 0x01, 0xd5, 0x7c, 0xdc, 0xba, 0x73, 0xc9, 0x66, 0x45, 0x9e, ++ 0xe0, 0x60, 0xaa, 0x08, 0x9a, 0x99, 0xc3, 0xbd, 0x9d, 0xa9, 0xcb, 0x46, 0x8d, 0x62, 0x3e, 0x9b, ++ 0x9e, 0x56, 0xbd, 0xed, 0x96, 0x69, 0x53, 0xcc, 0xfe, 0x42, 0xbe, 0x59, 0xe7, 0xfc, 0xfb, 0xc3, ++ 0x36, 0x1e, 0x89, 0xe3, 0x86, 0xea, 0x50, 0x70, 0x7a, 0xe5, 0xb3, 0xcc, 0x7f, 0x56, 0x34, 0xa2, ++ 0x42, 0xed, 0x6a, 0x66, 0xfd, 0x79, 0x9d, 0x11, 0x4a, 0xee, 0xfb, 0x7d, 0x86, 0x15, 0x3a, 0x81, ++ 0x43, 0xad, 0xa6, 0xd7, 0x11, 0x97, 0x1f, 0xc7, 0x1d, 0x20, 0xc8, 0xb8, 0x70, 0xe8, 0xaf, 0xd2, ++ 0xde, 0x3b, 0x8c, 0x2a, 0x70, 0x0f, 0x09, 0xb2, 0x1a, 0xf3, 0x23, 0x6d, 0x4e, 0xd0, 0x28, 0xe4, ++ 0xaf, 0x4b, 0x15, 0x9f, 0xd1, 0x4c, 0x0b, 0xdb, 0xe2, 0x88, 0x94, 0x8b, 0x1f, 0x1c, 0xa2, 0x1b, ++ 0x56, 0xa4, 0x41, 0xa6, 0x13, 0xbf, 0x27, 0x31, 0xec, 0xed, 0x81, 0xe2, 0x63, 0x6c, 0x6f, 0x77, ++ 0xdb, 0xb8, 0xf6, 0x1a, 0xaa, 0xdf, 0xc6, 0xba, 0xd2, 0x83, 0xdc, 0x3a, 0xe6, 0x5f, 0xac, 0x38, ++ 0x70, 0x30, 0x55, 0x04, 0x4d, 0xad, 0x80, 0xbf, 0xaf, 0xb5, 0x84, 0x23, 0xa7, 0x31, 0x1f, 0xac, ++ 0x3f, 0x1b, 0xea, 0x93, 0x06, 0x78, 0x48, 0xd9, 0xd0, 0x94, 0xdb, 0xee, 0x35, 0x4f, 0x83, 0x2c, ++ 0x77, 0x33, 0x74, 0x95, 0x8c, 0x62, 0x88, 0xd8, 0xc9, 0x9a, 0x1d, 0x3d, 0x20, 0x87, 0x72, 0xd6, ++ 0x75, 0xb3, 0x2f, 0x34, 0x97, 0x7d, 0x4f, 0xb7, 0x67, 0xc5, 0x7b, 0x74, 0x0f, 0xbe, 0x9b, 0x70, ++ 0x87, 0xd9, 0x43, 0xdc, 0xce, 0x03, 0xbc, 0x9b, 0x6d, 0x8e, 0x60, 0x76, 0x16, 0xee, 0x08, 0x34, ++ 0x93, 0x90, 0x68, 0x1c, 0x20, 0xc5, 0x06, 0xbb, 0xcb, 0x8d, 0x1a, 0xe9, 0xf3, 0x97, 0x5d, 0xc2, ++ 0x1d, 0x4c, 0x48, 0xb0, 0x6e, 0x54, 0xa2, 0x89, 0x0c, 0x72, 0x12, 0xbd, 0xaf, 0x60, 0xe2, 0x78, ++ 0xfd, 0x2c, 0xe2, 0xb8, 0xf4, 0xcd, 0x61, 0x34, 0x91, 0xdb, 0xd9, 0xfb, 0x22, 0x02, 0xdc, 0xe3, ++ 0x9a, 0x95, 0x0b, 0x6c, 0xa0, 0x57, 0x1e, 0x12, 0x61, 0xfc, 0x72, 0xcb, 0xb9, 0x8e, 0xea, 0x4c, ++ 0xea, 0xa5, 0x5e, 0x68, 0xed, 0xfa, 0x9e, 0xad, 0xce, 0x49, 0xf6, 0xe8, 0x1e, 0xbf, 0xf5, 0xe0, ++ 0xe5, 0xe3, 0xd0, 0x38, 0x40, 0x49, 0x0c, 0xb5, 0x55, 0xd9, 0x34, 0x11, 0x25, 0xed, 0xba, 0x47, ++ 0x55, 0x64, 0xd6, 0xb6, 0xe4, 0x4e, 0x62, 0x88, 0x15, 0x7c, 0xd4, 0x6e, 0xba, 0xa8, 0x13, 0x82, ++ 0x4d, 0xab, 0xe4, 0x36, 0x50, 0xca, 0x0f, 0x09, 0xd1, 0x7e, 0x39, 0x84, 0xbd, 0x47, 0x75, 0x26, ++ 0x2f, 0x91, 0x77, 0xd2, 0xde, 0x80, 0xbf, 0x27, 0xe9, 0x29, 0x6d, 0xe3, 0x8e, 0x44, 0xc7, 0x55, ++ 0x8e, 0xdc, 0x20, 0xac, 0x4e, 0x91, 0xa4, 0x32, 0xc7, 0xff, 0x08, 0x54, 0x5c, 0xf7, 0xbf, 0xba, ++ 0xab, 0x88, 0xa3, 0x1e, 0xe7, 0x72, 0x46, 0x05, 0x7d, 0x36, 0x58, 0x19, 0x41, 0x6e, 0xb3, 0x94, ++ 0xec, 0xe6, 0xb3, 0x48, 0xc0, 0xdb, 0x14, 0x1c, 0xff, 0xa8, 0x5c, 0x33, 0x6f, 0xf4, 0x0d, 0xc9, ++ 0x64, 0x79, 0x7e, 0xc4, 0xa3, 0x6b, 0x3a, 0x9f, 0x09, 0xb6, 0xfe, 0xbc, 0x42, 0x48, 0x4a, 0x5a, ++ 0xb3, 0x47, 0x91, 0x9e, 0x53, 0xf6, 0x2b, 0x84, 0xb9, 0x34, 0xb5, 0xf3, 0x46, 0x81, 0xd5, 0x30, ++ 0xd5, 0xbe, 0xb4, 0xfb, 0xeb, 0x82, 0xd6, 0x74, 0x1e, 0xdd, 0x2d, 0x06, 0x2b, 0xf0, 0x76, 0xcc, ++ 0x91, 0x10, 0x33, 0xbd, 0x3b, 0xda, 0xc1, 0xd4, 0x65, 0xd2, 0x7c, 0xa0, 0xdc, 0xae, 0xb4, 0x64, ++ 0x5e, 0xe1, 0xee, 0x67, 0x7f, 0xc3, 0xbd, 0x4e, 0x11, 0x52, 0xda, 0x05, 0xdf, 0x88, 0x4d, 0xaa, ++ 0x21, 0x97, 0x35, 0x33, 0x9f, 0xdd, 0xaf, 0xe9, 0x25, 0x77, 0x9c, 0xdf, 0x43, 0xeb, 0x1d, 0xa1, ++ 0x49, 0x68, 0x52, 0xb7, 0x66, 0xf4, 0x42, 0xd7, 0x4e, 0xc0, 0xf5, 0x16, 0xe3, 0x35, 0x64, 0xa9, ++ 0x5f, 0xa1, 0x22, 0xd6, 0x93, 0x2d, 0x3f, 0x98, 0x46, 0x9c, 0xe9, 0xc0, 0x29, 0x75, 0xd8, 0xf9, ++ 0x65, 0x39, 0xb2, 0x75, 0x4f, 0x85, 0xb8, 0x49, 0x5e, 0x78, 0xcd, 0x79, 0xb4, 0xb5, 0xdf, 0x09, ++ 0x53, 0x27, 0x3b, 0x96, 0xc9, 0x6f, 0xe8, 0x39, 0x24, 0x9d, 0x7e, 0xb5, 0xcb, 0xe3, 0xeb, 0xab, ++ 0x27, 0xd4, 0xd8, 0x13, 0xb2, 0xfc, 0x25, 0x58, 0x14, 0x96, 0x36, 0x04, 0x32, 0xa0, 0xe5, 0x88, ++ 0xcc, 0x31, 0x4a, 0xca, 0xb3, 0xe8, 0x39, 0x23, 0x8d, 0x11, 0xf3, 0x29, 0xda, 0xe2, 0x85, 0x3b, ++ 0x61, 0xfa, 0x04, 0xf4, 0x79, 0xbb, 0xf5, 0x97, 0xc1, 0xc6, 0x01, 0xeb, 0xea, 0xc7, 0xce, 0x86, ++ 0x82, 0x5a, 0x39, 0xec, 0x14, 0xd3, 0x73, 0x93, 0xa5, 0xfe, 0x9f, 0x21, 0xbe, 0x61, 0x8c, 0xe8, ++ 0xcf, 0xf1, 0xdd, 0xda, 0x44, 0x19, 0x7c, 0x9a, 0x74, 0x80, 0xa6, 0xa5, 0x03, 0x26, 0xf9, 0xce, ++ 0xfa, 0x2f, 0xc3, 0x29, 0x35, 0x02, 0x69, 0x53, 0xf7, 0xf4, 0x40, 0xe5, 0xa5, 0xb4, 0xb1, 0x99, ++ 0xbf, 0xc1, 0x88, 0xde, 0x09, 0xb4, 0xfc, 0x25, 0xdb, 0x35, 0x22, 0x86, 0xa4, 0x17, 0xe6, 0x62, ++ 0xca, 0x72, 0xa7, 0xea, 0x9e, 0xc9, 0xb3, 0x92, 0xbc, 0xf0, 0x59, 0xf2, 0xab, 0xa9, 0x7d, 0x12, ++ 0x4e, 0x6b, 0x73, 0x26, 0xa7, 0x3b, 0x4a, 0xb0, 0x28, 0xef, 0x6c, 0x08, 0x64, 0x83, 0x09, 0xd3, ++ 0x97, 0x53, 0xde, 0x9d, 0x16, 0xfb, 0x4b, 0x65, 0x54, 0x33, 0xd6, 0x7b, 0xad, 0xe5, 0x4c, 0x4d, ++ 0x9b, 0xd5, 0xc7, 0xdd, 0x4c, 0xb9, 0x9c, 0xc4, 0x36, 0x32, 0x41, 0x0e, 0x4f, 0x73, 0x7f, 0x1f, ++ 0x8d, 0x1c, 0xb7, 0xbc, 0xb9, 0x60, 0xe1, 0x8b, 0x3e, 0x6e, 0x5d, 0xd8, 0x85, 0x33, 0xc3, 0x4f, ++ 0x68, 0xff, 0x67, 0x84, 0xf9, 0x29, 0xed, 0x3e, 0x6b, 0xb7, 0x69, 0xc9, 0xa0, 0xde, 0x79, 0x08, ++ 0x15, 0x09, 0xe7, 0x71, 0x02, 0x28, 0x38, 0xf6, 0xf1, 0xcd, 0x49, 0x5a, 0x13, 0x84, 0xc0, 0xa5, ++ 0xfc, 0x6c, 0x2e, 0x09, 0x18, 0x23, 0xe3, 0xe2, 0xc6, 0x15, 0xea, 0x3e, 0xd4, 0xff, 0x49, 0xb0, ++ 0xfe, 0xec, 0x75, 0xa8, 0x03, 0x3c, 0x24, 0x8d, 0x68, 0x4a, 0x8c, 0x77, 0xfb, 0xc6, 0xa0, 0x16, ++ 0x58, 0xa2, 0x03, 0x47, 0x52, 0xe2, 0x37, 0xff, 0x20, 0xb3, 0x70, 0xde, 0xae, 0xc3, 0xb5, 0x83, ++ 0x12, 0x0a, 0xc6, 0xe0, 0xc3, 0xe7, 0x30, 0x91, 0x97, 0xe2, 0xd0, 0x44, 0x94, 0x32, 0xad, 0xdf, ++ 0x1b, 0x0f, 0xa5, 0x90, 0x43, 0x75, 0x28, 0x38, 0x3d, 0x93, 0xb8, 0x66, 0xde, 0x2b, 0x1a, 0x51, ++ 0x10, 0x8a, 0x9d, 0x41, 0xd8, 0xf8, 0xf7, 0xfe, 0x39, 0xbd, 0xb6, 0x0d, 0xbb, 0x0b, 0x44, 0x79, ++ 0xc1, 0xf7, 0x9f, 0x3b, 0x05, 0x44, 0x6c, 0x54, 0xb8, 0xde, 0x57, 0x99, 0xce, 0x89, 0x23, 0x3a, ++ 0xe2, 0xe0, 0xf1, 0xa9, 0x81, 0x86, 0x04, 0xd2, 0x33, 0xf6, 0xad, 0x0f, 0xa2, 0x5b, 0xd7, 0x3d, ++ 0x19, 0x8f, 0xfe, 0x31, 0x58, 0x6a, 0xef, 0x57, 0x93, 0xcc, 0xde, 0x2f, 0xf1, 0x12, 0xf3, 0xf7, ++ 0x52, 0x67, 0xf7, 0x27, 0x25, 0x81, 0x6a, 0xef, 0x73, 0x53, 0x4d, 0x70, 0x3d, 0x1e, 0x7e, 0xf8, ++ 0xef, 0x26, 0x24, 0x58, 0x37, 0x2a, 0x51, 0xa5, 0x06, 0x39, 0x09, 0xbf, 0xb6, 0x30, 0x71, 0x3c, ++ 0xdc, 0xbb, 0xd7, 0x8b, 0x6b, 0x10, 0xce, 0xdd, 0xb4, 0xac, 0x45, 0x24, 0x61, 0xe9, 0xc1, 0x42, ++ 0xf0, 0xea, 0x37, 0x49, 0x42, 0x61, 0x34, 0x43, 0xa4, 0x14, 0x7d, 0x4b, 0x36, 0x69, 0x7a, 0xe2, ++ 0x3c, 0xdb, 0x7d, 0x83, 0xf1, 0x89, 0x0d, 0x60, 0x29, 0x05, 0x8e, 0x62, 0xec, 0x8b, 0xff, 0xd9, ++ 0x9c, 0xd6, 0xe6, 0x4c, 0x8d, 0x76, 0x94, 0xa3, 0x50, 0x1d, 0xd8, 0x10, 0xc8, 0xc5, 0x12, 0x65, ++ 0xbe, 0x81, 0x44, 0x6f, 0xe5, 0x5a, 0x7e, 0xf3, 0x8c, 0xfb, 0x11, 0x43, 0x52, 0xea, 0x73, 0x31, ++ 0x38, 0x18, 0xcb, 0x02, 0xc7, 0xb7, 0x40, 0xbe, 0xb6, 0xbb, 0x42, 0xf0, 0xb2, 0xf9, 0xee, 0x56, ++ 0x2b, 0x52, 0xc1, 0x53, 0xe8, 0xbe, 0xf2, 0xf9, 0x76, 0x97, 0xa1, 0x71, 0xd0, 0x36, 0xd6, 0xda, ++ 0xc9, 0xb2, 0x30, 0xfa, 0x69, 0x38, 0xf6, 0x2b, 0x45, 0x61, 0x0c, 0x7e, 0x72, 0x6d, 0x01, 0xe7, ++ 0x24, 0x14, 0x4f, 0x03, 0x45, 0x0d, 0x60, 0xe1, 0xed, 0x07, 0x63, 0x88, 0xeb, 0x64, 0x99, 0x7d, ++ 0x98, 0x15, 0x50, 0xcd, 0xbb, 0x48, 0xd9, 0x7d, 0xcf, 0xa3, 0x14, 0x82, 0x96, 0xb7, 0x03, 0xea, ++ 0x30, 0x5d, 0x64, 0xc3, 0xab, 0xcb, 0xda, 0xc1, 0x4b, 0x04, 0x19, 0x17, 0x0e, 0x1d, 0xcc, 0x8b, ++ 0x0c, 0x86, 0x19, 0x40, 0x5a, 0x42, 0xd7, 0xa1, 0x62, 0x01, 0x97, 0x75, 0xe2, 0x96, 0x33, 0x52, ++ 0x69, 0xbf, 0xab, 0x35, 0x15, 0xc7, 0x6f, 0xe8, 0x3c, 0x79, 0x5a, 0x0c, 0x56, 0x23, 0xec, 0x5b, ++ 0x54, 0x24, 0x1a, 0x07, 0x08, 0xa0, 0xe0, 0x5e, 0x42, 0xb2, 0xe7, 0xab, 0x4c, 0x55, 0x86, 0xd1, ++ 0xee, 0x66, 0xe8, 0xe9, 0xdb, 0xc4, 0xd3, 0x73, 0x51, 0xf7, 0x3a, 0x7a, 0x40, 0xcd, 0xe4, 0x6f, ++ 0xb5, 0x04, 0x7c, 0xbe, 0x7e, 0xd7, 0xa1, 0x35, 0x88, 0xd5, 0x1f, 0x28, 0x37, 0xca, 0x2d, 0x19, ++ 0x4f, 0x2b, 0xbf, 0x97, 0x4b, 0xd5, 0xc8, 0x66, 0x7f, 0x21, 0x5f, 0xcd, 0x92, 0x7e, 0x9c, 0x80, ++ 0x39, 0x58, 0x07, 0xb3, 0x2b, 0x59, 0xc2, 0x68, 0xe1, 0x75, 0x71, 0x35, 0x44, 0x04, 0x7b, 0x05, ++ 0x6a, 0x7f, 0x3c, 0x25, 0xe2, 0x36, 0x2a, 0x51, 0xc5, 0xe8, 0x0f, 0x80, 0x8f, 0xe7, 0x90, 0xae, ++ 0x1c, 0x0c, 0x84, 0x01, 0x82, 0xba, 0x20, 0x5f, 0x5b, 0xbc, 0x21, 0x78, 0x59, 0x9d, 0x77, 0x2b, ++ 0x89, 0xdf, 0x01, 0x3d, 0x8f, 0x5e, 0xac, 0x55, 0xa1, 0xd0, 0x91, 0x4a, 0xdb, 0x41, 0xd2, 0xc0, ++ 0x66, 0xf9, 0x25, 0x65, 0xb8, 0x74, 0xfd, 0xf0, 0xa7, 0xe9, 0x98, 0xf5, 0x6d, 0x71, 0xa3, 0xfc, ++ 0xa5, 0x8e, 0xe1, 0xff, 0xa6, 0x2f, 0x56, 0xcb, 0xb1, 0x68, 0xa9, 0x25, 0x8c, 0xc1, 0x69, 0x60, ++ 0xe4, 0xa3, 0x1c, 0x89, 0xac, 0xa7, 0x8e, 0x63, 0x02, 0x17, 0x07, 0xd4, 0xd3, 0x10, 0x2f, 0x14, ++ 0x72, 0xb0, 0x0e, 0xa5, 0x56, 0xb2, 0x47, 0xd0, 0x01, 0xea, 0xe2, 0x6a, 0x88, 0x08, 0xf6, 0x0a, ++ 0xf6, 0xa9, 0xda, 0x69, 0x6f, 0x40, 0xbe, 0xf2, 0x95, 0xf5, 0xd7, 0x90, 0x47, 0x22, 0x82, 0xcb, ++ 0x14, 0x49, 0x2b, 0xc0, 0xee, 0xc6, 0xba, 0x20, 0xa6, 0x03, 0x7a, 0x9f, 0xe5, 0x79, 0x55, 0xf6, ++ 0x02, 0x80, 0x5b, 0xa1, 0x1b, 0x1f, 0xc7, 0x6f, 0xae, 0x5f, 0x66, 0x49, 0x2f, 0x39, 0xe9, 0xa6, ++ 0x50, 0xe7, 0xac, 0x86, 0x3e, 0x9e, 0xad, 0x80, 0xdd, 0x0c, 0x2b, 0x39, 0x12, 0x27, 0x97, 0x5e, ++ 0xbd, 0x41, 0xd3, 0x7f, 0x12, 0xab, 0x3b, 0x4a, 0x75, 0x6a, 0x44, 0xcf, 0x8b, 0x2e, 0x0f, 0xc4, ++ 0x9f, 0x16, 0x71, 0x5c, 0x7a, 0x87, 0xd1, 0x1a, 0xa9, 0x8c, 0x8d, 0x9c, 0x11, 0x01, 0x6e, 0x90, ++ 0xe3, 0xa0, 0x3d, 0x18, 0x6d, 0x68, 0x86, 0x04, 0x64, 0x38, 0x9e, 0xca, 0x54, 0xa6, 0x42, 0x6e, ++ 0x05, 0x83, 0x7a, 0x30, 0xda, 0xd0, 0xcf, 0x08, 0xc8, 0x70, 0xff, 0x57, 0xa8, 0x8f, 0x84, 0xdc, ++ 0x07, 0x03, 0x21, 0x91, 0xc1, 0xcf, 0x08, 0x67, 0x66, 0x2f, 0x99, 0x1e, 0x87, 0xb6, 0x6d, 0x7a, ++ 0x88, 0x9f, 0xcd, 0x8c, 0x63, 0xb0, 0x2e, 0x83, 0xf6, 0x1e, 0xa2, 0x8f, 0x2d, 0xbc, 0x47, 0x93, ++ 0xcb, 0x32, 0x6b, 0x5b, 0x72, 0x27, 0x31, 0x44, 0xeb, 0x3e, 0x6a, 0x37, 0x5d, 0x54, 0xe8, 0x41, ++ 0x3a, 0x98, 0x90, 0xa3, 0xdc, 0xa8, 0x87, 0xd1, 0x18, 0xe4, 0x24, 0xb9, 0x9d, 0xc0, 0x07, 0xf0, ++ 0x85, 0x59, 0x18, 0x7d, 0xd5, 0x1c, 0x7b, 0xf4, 0xc3, 0xd1, 0x06, 0x3f, 0x39, 0xd7, 0xe1, 0x92, ++ 0x41, 0x2d, 0xfd, 0x76, 0x0a, 0x88, 0xd8, 0xa8, 0xb3, 0x7f, 0xae, 0xf1, 0x5f, 0xd1, 0x46, 0x74, ++ 0x2a, 0x12, 0x0d, 0xe2, 0x04, 0x50, 0x70, 0x2f, 0x21, 0x59, 0x92, 0xb4, 0x26, 0xcb, 0x43, 0x89, ++ 0x92, 0xd0, 0xa4, 0xad, 0xcc, 0x2b, 0x84, 0x6d, 0x9c, 0x43, 0x29, 0x2c, 0x05, 0x6a, 0xc8, 0x91, ++ 0xb9, 0x82, 0x65, 0xfe, 0x24, 0x95, 0x76, 0x94, 0xea, 0xd4, 0x88, 0x5d, 0xd5, 0x5c, 0x1e, 0x4b, ++ 0xe6, 0x23, 0x47, 0x28, 0xb7, 0xb8, 0x49, 0x0c, 0xac, 0x48, 0x61, 0x9d, 0xfc, 0x29, 0xc6, 0xb2, ++ 0xf2, 0x6a, 0x6c, 0xe8, 0x59, 0x7e, 0xf3, 0x2c, 0x0a, 0x4b, 0x1b, 0x02, 0x19, 0x50, 0x93, 0x44, ++ 0x28, 0x92, 0x56, 0x43, 0x1f, 0x4f, 0xb7, 0x40, 0x8f, 0x06, 0xf4, 0xfd, 0x09, 0xf2, 0xaa, 0x2f, ++ 0x7d, 0xf6, 0x80, 0xf5, 0xfb, 0x01, 0xd5, 0xc8, 0x9a, 0x7a, 0x20, 0x93, 0xb3, 0x5a, 0xb9, 0xad, ++ 0xbb, 0x02, 0x3e, 0x5f, 0x3f, 0x8a, 0xb1, 0xfb, 0x44, 0x8b, 0xee, 0x14, 0xfa, 0x65, 0xf7, 0xed, ++ 0xf3, 0x2a, 0xa0, 0x59, 0xb5, 0x90, 0x71, 0xfa, 0x5d, 0x85, 0x28, 0xc7, 0xef, 0xad, 0x06, 0x17, ++ 0xe7, 0x63, 0x8b, 0x99, 0x5b, 0x56, 0xcb, 0xda, 0xfb, 0x86, 0x52, 0x58, 0x0a, 0xd4, 0x53, 0xe1, ++ 0xad, 0xcb, 0x4e, 0x3e, 0xca, 0x53, 0xcc, 0xb4, 0x4c, 0xd7, 0xf2, 0xc2, 0x30, 0x25, 0x4b, 0xbd, ++ 0x0e, 0x06, 0x42, 0xe1, 0x41, 0x5d, 0x10, 0xce, 0xcc, 0x5e, 0xf1, 0x3c, 0xcd, 0xaf, 0xda, 0xf4, ++ 0x76, 0x73, 0xb8, 0x24, 0x60, 0x8c, 0x0a, 0x0e, 0x9e, 0x54, 0x2e, 0xf8, 0xd6, 0x7a, 0xe7, 0x85, ++ 0x3b, 0xd8, 0x5c, 0x12, 0x30, 0x46, 0x05, 0x07, 0x4f, 0x2a, 0x17, 0x7c, 0x6b, 0x3d, 0x92, 0xa3, ++ 0x6d, 0x7c, 0x1d, 0xb4, 0x23, 0xf9, 0x22, 0x36, 0xa3, 0xc7, 0x96, 0x9e, 0x08, 0x51, 0xfd, 0xd4, ++ 0x20, 0xd7, 0xf9, 0x82, 0x73, 0x33, 0x2d, 0x3f, 0x72, 0xb9, 0xaf, 0x1a, 0xb5, 0x16, 0x88, 0xf2, ++ 0xa9, 0x08, 0xf8, 0xbf, 0xfc, 0x6d, 0x81, 0x6a, 0xd3, 0x69, 0x3e, 0x50, 0x6e, 0x57, 0x5a, 0x32, ++ 0x0b, 0x85, 0x38, 0xd1, 0x9b, 0x8d, 0xdf, 0xc6, 0x04, 0x2e, 0x0e, 0x6b, 0x65, 0x20, 0x5e, 0x28, ++ 0xce, 0xb1, 0x11, 0x6b, 0xa8, 0xf7, 0xfe, 0x4c, 0x23, 0x4e, 0x95, 0x60, 0xf5, 0xdb, 0x6c, 0x9d, ++ 0x8f, 0x9c, 0xec, 0x1d, 0xa2, 0x7f, 0x26, 0xe4, 0x90, 0x31, 0x3b, 0x91, 0xaa, 0x0a, 0x2a, 0xe9, ++ 0x94, 0x93, 0x49, 0x8d, 0xe1, 0x0a, 0x0e, 0xdc, 0xad, 0xa2, 0x83, 0xf7, 0x74, 0x21, 0x30, 0xb8, ++ 0x4c, 0xeb, 0x28, 0x87, 0xbc, 0x24, 0x8d, 0xdf, 0x86, 0xb0, 0x0a, 0x41, 0x4b, 0xba, 0xe0, 0x75, ++ 0x29, 0xd2, 0x9a, 0xf2, 0xf3, 0xa1, 0x35, 0x96, 0xd8, 0xc8, 0xc7, 0x38, 0xff, 0x0f, 0x3f, 0x7c, ++ 0x5a, 0x22, 0x58, 0xe6, 0x49, 0xfd, 0xf0, 0x90, 0x8e, 0xec, 0x16, 0x97, 0x81, 0xfa, 0x5c, 0x25, ++ 0xb4, 0x44, 0xb0, 0x0f, 0x92, 0x39, 0x23, 0xe3, 0xdf, 0x1b, 0x2c, 0xed, 0xc1, 0x37, 0xb8, 0x4a, ++ 0x6e, 0xbc, 0x8a, 0xa4, 0xd4, 0x08, 0x67, 0x8f, 0x5a, 0x56, 0xc3, 0x12, 0xd1, 0x95, 0x81, 0x21, ++ 0x1a, 0x4f, 0x69, 0x21, 0xaf, 0x9b, 0xaa, 0xee, 0x6a, 0x5d, 0x8b, 0xa3, 0x28, 0xd6, 0x8f, 0x02, ++ 0xf7, 0xe9, 0x16, 0xd8, 0x83, 0xae, 0x3c, 0x24, 0xc2, 0x3b, 0xe4, 0x55, 0xb1, 0xdf, 0x17, 0x98, ++ 0x67, 0xb9, 0xe9, 0xd4, 0x54, 0x9a, 0x7f, 0x26, 0xf0, 0x27, 0xab, 0x30, 0x9b, 0x8c, 0x36, 0xaf, ++ 0xd4, 0xfe, 0x78, 0x4a, 0x07, 0x6c, 0x54, 0xa2, 0x49, 0x13, 0x1e, 0xc3, 0xdd, 0x0d, 0xe3, 0x9f, ++ 0xb8, 0xc2, 0xa9, 0x4f, 0xc8, 0x7b, 0xf4, 0x42, 0xbd, 0x1a, 0xbb, 0x98, 0x23, 0xa1, 0x8b, 0x18, ++ 0xd8, 0x78, 0x61, 0x0a, 0x5d, 0x2e, 0x83, 0x03, 0x2b, 0x12, 0x89, 0xb6, 0x3f, 0x9b, 0xd0, 0xcd, ++ 0x8a, 0x1f, 0x96, 0x2d, 0x78, 0xaf, 0xe9, 0xec, 0x58, 0x41, 0xc4, 0xc6, 0x02, 0x85, 0xae, 0x35, ++ 0xda, 0xf8, 0x3a, 0xab, 0x46, 0x31, 0x44, 0x6c, 0x85, 0x4d, 0xef, 0xff, 0x10, 0xa2, 0x39, 0x6b, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x3d, 0x9b, 0xb1, 0x32, 0x1d, 0x67, 0x8f, 0xb6, 0x7e, 0xcb, 0xbd, 0xa7, 0x1a, 0x76, 0x6a, 0x8a, ++ 0x99, 0x55, 0x9c, 0x7c, 0x57, 0xa6, 0x5b, 0xab, 0x98, 0x6d, 0x27, 0x47, 0x60, 0x4a, 0x96, 0xb9, ++ 0xd3, 0xfd, 0x59, 0xdb, 0xc6, 0xa3, 0x5c, 0xc5, 0x2f, 0x3c, 0x87, 0xdd, 0x5a, 0xbb, 0x8e, 0xe5, ++ 0x9d, 0x96, 0x2a, 0xfd, 0x61, 0x98, 0x16, 0x75, 0x07, 0xd3, 0xeb, 0xd5, 0x3e, 0x38, 0x87, 0x36, ++ 0x7e, 0x36, 0x17, 0xe5, 0x0c, 0xf0, 0x90, 0x71, 0x63, 0xeb, 0x75, 0x1f, 0x6a, 0x9e, 0xc5, 0x58, ++ 0x06, 0x43, 0xed, 0x20, 0x2d, 0x21, 0x8a, 0xb1, 0x31, 0xe1, 0xaa, 0xdb, 0x71, 0x4b, 0xf8, 0x29, ++ 0xd1, 0x7d, 0x02, 0x7a, 0xdd, 0xbc, 0x9b, 0xaa, 0x81, 0x63, 0xe1, 0x94, 0x75, 0x82, 0x67, 0x43, ++ 0xaa, 0xc8, 0x6f, 0xaf, 0x0b, 0x9c, 0xc4, 0xd3, 0x2a, 0xf8, 0x6b, 0xdc, 0xb7, 0x93, 0x26, 0xc7, ++ 0xa4, 0xce, 0x2d, 0x4e, 0x4a, 0xc1, 0xd4, 0x1d, 0xe6, 0xa6, 0x9a, 0xe0, 0x7a, 0x3c, 0xfc, 0x33, ++ 0x03, 0xc0, 0x97, 0x10, 0xf7, 0xf1, 0x45, 0xb9, 0xf9, 0x91, 0x55, 0x8c, 0xd9, 0xc4, 0x7c, 0xf5, ++ 0x23, 0x17, 0x6e, 0x92, 0x84, 0xc2, 0x68, 0x86, 0x8b, 0x28, 0xfa, 0x96, 0x6c, 0xd2, 0xf4, 0x07, ++ 0x0a, 0xc5, 0xf4, 0x60, 0x77, 0x63, 0x5d, 0x10, 0x53, 0xe0, 0x3d, 0xae, 0x93, 0xdd, 0xcb, 0x7b, ++ 0x7c, 0xb6, 0x4c, 0x44, 0x17, 0xef, 0x57, 0x1e, 0xcd, 0xb4, 0x13, 0x56, 0x45, 0xa7, 0x2c, 0xfe, ++ 0x22, 0x57, 0xa2, 0x23, 0x68, 0x2c, 0xea, 0x50, 0xdc, 0xe6, 0xc9, 0x53, 0x9a, 0x2f, 0x61, 0x54, ++ 0x37, 0x5e, 0x45, 0x52, 0x6a, 0x04, 0xd2, 0xa6, 0x2d, 0x2b, 0x80, 0x09, 0x89, 0xab, 0xa1, 0xf1, ++ 0x4a, 0xa8, 0xc5, 0xa7, 0x91, 0x05, 0x07, 0x6e, 0xb7, 0x51, 0xa0, 0x9a, 0x3a, 0xf1, 0x18, 0x5c, ++ 0x2e, 0xd1, 0xbb, 0x63, 0x32, 0x6e, 0x3d, 0xf1, 0xbe, 0xe7, 0x5e, 0x26, 0x78, 0xb9, 0x52, 0x06, ++ 0x25, 0x54, 0x83, 0xb2, 0xa9, 0xe3, 0xe2, 0x37, 0xba, 0xc9, 0x50, 0x4d, 0x1d, 0x99, 0x0c, 0x2e, ++ 0xf8, 0xaf, 0x98, 0x88, 0x2e, 0x1d, 0xae, 0x3c, 0x59, 0xab, 0x26, 0xac, 0x8a, 0x8d, 0x58, 0x3f, ++ 0xdd, 0xfb, 0x1b, 0x3a, 0x87, 0xfe, 0x4c, 0x0b, 0xe3, 0x62, 0x76, 0xe1, 0x97, 0x14, 0x54, 0x11, ++ 0x31, 0x1d, 0xa8, 0x72, 0x47, 0x25, 0x58, 0x17, 0x1c, 0xca, 0x2a, 0xd2, 0xf8, 0xe0, 0x59, 0xd8, ++ 0x74, 0xf3, 0xe3, 0x85, 0x7b, 0x93, 0xcd, 0x61, 0x30, 0x0b, 0x48, 0xb1, 0xf9, 0x43, 0x0e, 0x23, ++ 0x59, 0xe2, 0xcf, 0xf6, 0xbe, 0x0c, 0xb5, 0x29, 0x77, 0x7d, 0x43, 0x1b, 0x58, 0x3e, 0x20, 0xd0, ++ 0xcd, 0x71, 0x86, 0x7b, 0x5f, 0x06, 0xbb, 0xf5, 0xda, 0xdf, 0xc0, 0xec, 0x2c, 0x1f, 0x10, 0x68, ++ 0x5d, 0x21, 0x79, 0x77, 0x88, 0x32, 0xf8, 0xf7, 0xe8, 0xc3, 0x8f, 0x89, 0x06, 0x4c, 0x31, 0x5f, ++ 0x08, 0x45, 0xaf, 0xc1, 0x6c, 0x7c, 0x9a, 0x7f, 0xfd, 0xbf, 0x5b, 0xe7, 0xbc, 0xe4, 0x22, 0xdd, ++ 0x7f, 0x76, 0xdb, 0x54, 0xe0, 0x1e, 0x12, 0xa7, 0x34, 0x25, 0x46, 0xda, 0x9c, 0x63, 0x50, 0x0b, ++ 0xa6, 0x4e, 0x76, 0xef, 0x51, 0xde, 0x13, 0x72, 0x48, 0xf9, 0xfc, 0xa9, 0x55, 0x05, 0x15, 0x95, ++ 0xf9, 0xef, 0x54, 0x39, 0xc2, 0xf3, 0x2c, 0xea, 0x0e, 0x65, 0x15, 0x69, 0x7c, 0x70, 0xcd, 0x6c, ++ 0x90, 0x50, 0xff, 0x0c, 0xd7, 0x34, 0x43, 0x02, 0x32, 0x1c, 0x4f, 0x65, 0x2a, 0x53, 0x21, 0x37, ++ 0x0f, 0x46, 0x8e, 0x50, 0xad, 0xb3, 0x92, 0x18, 0x9b, 0x90, 0xc2, 0xf9, 0x3b, 0x52, 0x4f, 0xa7, ++ 0xb0, 0x87, 0x06, 0x8e, 0xa4, 0x07, 0x6e, 0x3d, 0x40, 0xa5, 0xe0, 0x7f, 0x9f, 0x45, 0xa9, 0xc5, ++ 0xac, 0x8b, 0x82, 0x8f, 0x26, 0xbd, 0x4e, 0x62, 0x1b, 0x19, 0xc1, 0x07, 0xc6, 0xd8, 0xde, 0xee, ++ 0x60, 0xba, 0xc8, 0x45, 0x95, 0x55, 0x77, 0x41, 0x96, 0x08, 0x32, 0x2e, 0x1c, 0x3a, 0x5b, 0xd5, ++ 0x6c, 0x3c, 0xd1, 0x05, 0xcf, 0x17, 0xa0, 0xe0, 0xf4, 0x09, 0xa5, 0x5b, 0xfe, 0xac, 0x68, 0x87, ++ 0x13, 0x4a, 0x0a, 0x51, 0x2f, 0x09, 0xb2, 0x47, 0xc0, 0x2c, 0xe3, 0x81, 0x62, 0xcf, 0x38, 0x8c, ++ 0xbc, 0x01, 0x1f, 0xce, 0xfe, 0x45, 0xb9, 0x9c, 0x22, 0xa4, 0x77, 0x0a, 0x7d, 0xd3, 0x9a, 0x97, ++ 0x32, 0xdd, 0x3f, 0x62, 0xb0, 0xd4, 0x1d, 0xae, 0xe5, 0x5b, 0x7f, 0x5e, 0x21, 0x24, 0x25, 0x2d, ++ 0xf1, 0xaa, 0xfb, 0xf8, 0xae, 0x8f, 0xb6, 0x95, 0xf3, 0xda, 0x4e, 0x8e, 0xc0, 0x94, 0xef, 0xb1, ++ 0xd6, 0x7e, 0x23, 0xeb, 0x1c, 0x73, 0x93, 0xcd, 0xe7, 0x4c, 0x78, 0x8a, 0xf2, 0x34, 0x0a, 0x39, ++ 0x44, 0xae, 0x87, 0x46, 0xd0, 0x58, 0x17, 0xa0, 0x7b, 0x0f, 0x51, 0xa6, 0xf7, 0x5e, 0xc2, 0xa8, ++ 0x62, 0x3a, 0x93, 0xe4, 0x8e, 0x4a, 0xb0, 0x2e, 0x38, 0x57, 0x54, 0x67, 0x33, 0x03, 0xb2, 0x73, ++ 0xa8, 0x48, 0x34, 0x0e, 0x10, 0x83, 0x03, 0xbc, 0x84, 0xa7, 0x0d, 0x95, 0x98, 0xaa, 0xcf, 0x61, ++ 0x40, 0x6d, 0x31, 0xc7, 0xe6, 0x66, 0x5a, 0x7e, 0xe4, 0xb1, 0x9d, 0x34, 0xa9, 0x2c, 0xd3, 0x27, ++ 0x95, 0xd3, 0x85, 0x3c, 0x0d, 0xe4, 0x8c, 0x0a, 0xfa, 0x6c, 0xb0, 0x32, 0x82, 0xdc, 0xa5, 0xeb, ++ 0x11, 0xca, 0x51, 0xf0, 0x34, 0x16, 0x75, 0x28, 0x6e, 0x73, 0x85, 0xc8, 0x4d, 0xf6, 0xd1, 0x2a, ++ 0x8b, 0x5f, 0x5a, 0x9c, 0x94, 0x41, 0x6b, 0x3a, 0x0f, 0x8f, 0xf7, 0x03, 0xf4, 0x78, 0x3b, 0x66, ++ 0x01, 0x40, 0xcc, 0xb1, 0xec, 0xee, 0x82, 0xd6, 0x57, 0xce, 0x33, 0xc5, 0xf6, 0xfd, 0x95, 0x53, ++ 0x0d, 0xc6, 0xd5, 0xf1, 0xb6, 0xac, 0x55, 0x77, 0x35, 0xcf, 0xa4, 0xb0, 0x14, 0x6b, 0xa6, 0x01, ++ 0xe1, 0x20, 0x66, 0xb9, 0x76, 0x77, 0x41, 0x6b, 0xca, 0x67, 0xf8, 0x83, 0x7b, 0x9f, 0xab, 0xc8, ++ 0x6b, 0x3f, 0xf0, 0x94, 0x0e, 0xd8, 0xa8, 0x87, 0x92, 0x26, 0x3c, 0x45, 0x79, 0x1a, 0x05, 0xfd, ++ 0xc2, 0x37, 0x08, 0x2b, 0xf2, 0xb5, 0x29, 0xed, 0x41, 0x4f, 0x02, 0x15, 0x17, 0x4d, 0x5f, 0xcf, ++ 0x5c, 0x61, 0xb5, 0xc6, 0x64, 0xdc, 0x7a, 0x21, 0xbf, 0x0d, 0xbc, 0x4c, 0xf0, 0xb1, 0xa4, 0x0c, ++ 0xc7, 0xb4, 0x72, 0x1b, 0x28, 0x65, 0xe6, 0xe5, 0x89, 0x3f, 0xfd, 0x42, 0xbf, 0xc2, 0xdb, 0x13, ++ 0x84, 0x19, 0xd4, 0xcc, 0x39, 0xf2, 0xf9, 0x22, 0x94, 0x1f, 0x35, 0xfa, 0xcf, 0x2a, 0x74, 0xc1, ++ 0x45, 0xee, 0x4b, 0xf7, 0x3c, 0xb6, 0x95, 0x76, 0x2c, 0xc1, 0x62, 0x63, 0x01, 0xa3, 0x57, 0xfb, ++ 0x79, 0x35, 0x36, 0x74, 0xcd, 0x3f, 0x98, 0x16, 0x05, 0xc4, 0xec, 0x01, 0xed, 0x28, 0xa8, 0x22, ++ 0x4b, 0xe8, 0x09, 0x16, 0x7d, 0xeb, 0x85, 0xb8, 0xe0, 0x9f, 0x93, 0x5f, 0xcc, 0x0c, 0x8d, 0x0f, ++ 0x48, 0x28, 0x9e, 0x06, 0x8a, 0x1a, 0xc0, 0x01, 0x19, 0x0e, 0xc6, 0xd3, 0x15, 0xc8, 0xf1, 0xfa, ++ 0x6f, 0xfc, 0x46, 0x15, 0x38, 0xe6, 0xe5, 0x59, 0x0d, 0x98, 0xf0, 0xd7, 0x27, 0x68, 0x14, 0x72, ++ 0xa7, 0x0e, 0xba, 0x5e, 0xbd, 0x30, 0x91, 0xa4, 0x1f, 0x37, 0xcf, 0x6c, 0xa3, 0xf8, 0x80, 0xc6, ++ 0xa2, 0x8d, 0xc0, 0x6e, 0x67, 0xe0, 0x5e, 0xac, 0xd7, 0x47, 0x30, 0x3b, 0x0b, 0x77, 0x04, 0x1a, ++ 0xc0, 0xb7, 0x53, 0x8a, 0xe9, 0xaa, 0xee, 0x82, 0xef, 0x10, 0x64, 0x5c, 0x38, 0x74, 0xb6, 0x69, ++ 0x2c, 0x51, 0xe0, 0xc2, 0x29, 0x71, 0xfa, 0x9e, 0x10, 0xb8, 0x38, 0x6f, 0x57, 0x80, 0xbb, 0xa0, ++ 0x81, 0x9a, 0xae, 0xfc, 0xe3, 0x22, 0x36, 0x2a, 0x5c, 0x6f, 0xca, 0xad, 0x67, 0xa5, 0xf0, 0x1d, ++ 0xd0, 0x3d, 0xce, 0xcb, 0x31, 0x52, 0x19, 0x7c, 0xd6, 0xad, 0xd2, 0x51, 0x83, 0x7f, 0xf2, 0x10, ++ 0x17, 0x89, 0xbc, 0xd0, 0x19, 0x37, 0xff, 0x99, 0x5f, 0x92, 0x2f, 0x13, 0x3c, 0xbd, 0x29, 0x03, ++ 0xa3, 0xcd, 0x0c, 0xdf, 0x8b, 0x0e, 0xdc, 0x7a, 0x80, 0x89, 0x03, 0xfe, 0xfd, 0x8a, 0x91, 0x49, ++ 0xd2, 0xbd, 0x95, 0x6a, 0x2a, 0x4d, 0xde, 0x13, 0x78, 0xf2, 0xb4, 0x18, 0xac, 0x46, 0x1b, 0xb6, ++ 0x57, 0xe4, 0x8d, 0x17, 0xff, 0x51, 0xa5, 0xe7, 0xbb, 0x23, 0xb2, 0x27, 0x95, 0x91, 0xfa, 0x24, ++ 0x71, 0x70, 0x99, 0xb5, 0xa1, 0x43, 0x02, 0x69, 0xf8, 0x7b, 0xb7, 0xe6, 0x51, 0xcc, 0x8a, 0xff, ++ 0xa1, 0x4d, 0x57, 0x7e, 0x90, 0x11, 0x1b, 0x15, 0x2e, 0xd6, 0x65, 0xb7, 0xd2, 0xb3, 0x78, 0xef, ++ 0xc3, 0x77, 0xc4, 0x9a, 0x1e, 0x5b, 0xab, 0x3b, 0x16, 0x81, 0x31, 0xd0, 0xe1, 0xb0, 0xca, 0x9c, ++ 0x51, 0xa7, 0x60, 0x37, 0xd2, 0x70, 0x2f, 0x56, 0x8a, 0xc2, 0x18, 0xfc, 0xe4, 0xda, 0x02, 0x0d, ++ 0x35, 0xde, 0x1e, 0xf3, 0x71, 0x1b, 0x15, 0xc9, 0x83, 0x74, 0xe6, 0x40, 0xa6, 0x92, 0x48, 0x57, ++ 0x47, 0x6e, 0x10, 0x56, 0x27, 0xa9, 0x52, 0x19, 0x82, 0x9e, 0x04, 0x2a, 0x2e, 0x9a, 0xbe, 0x5d, ++ 0xf5, 0x69, 0x4d, 0x79, 0x98, 0xb1, 0xfb, 0x4b, 0x6c, 0x64, 0x82, 0x1c, 0x9e, 0xe6, 0xfe, 0x3e, ++ 0xb2, 0x07, 0x5d, 0x2f, 0xbf, 0x18, 0xa9, 0x52, 0xee, 0xfa, 0x86, 0x36, 0xb0, 0x7c, 0x40, 0x63, ++ 0xd7, 0x3e, 0xef, 0x5a, 0xf0, 0x9d, 0x11, 0x1b, 0xb0, 0x82, 0x4b, 0x4f, 0x04, 0xc9, 0x9f, 0x6a, ++ 0x16, 0xc9, 0x70, 0x61, 0xf5, 0xd9, 0x7d, 0x4f, 0x08, 0x5c, 0x1c, 0xd6, 0xca, 0x40, 0xbc, 0x50, ++ 0x86, 0x99, 0x8f, 0x6d, 0x22, 0xed, 0x3e, 0x4d, 0x3a, 0x40, 0x53, 0xb3, 0xe0, 0x13, 0x9d, 0x67, ++ 0x73, 0xf0, 0xc2, 0x14, 0xba, 0x5c, 0xc5, 0x06, 0x56, 0x24, 0xd1, 0xaf, 0x7e, 0xf5, 0x63, 0x59, ++ 0xc4, 0x74, 0xe5, 0x0b, 0xdf, 0x94, 0xa3, 0x5c, 0x70, 0xae, 0xa8, 0xce, 0x66, 0x06, 0xa7, 0xe6, ++ 0x34, 0x9e, 0xd2, 0x42, 0x9d, 0xf5, 0x97, 0x1f, 0xd4, 0xba, 0xd5, 0x85, 0x50, 0x6f, 0xdd, 0x04, ++ 0xc6, 0xf4, 0xbe, 0xaa, 0xc4, 0x8b, 0x64, 0x33, 0xde, 0xf1, 0xce, 0x87, 0x49, 0x3f, 0x4e, 0x40, ++ 0x96, 0x13, 0x12, 0x2c, 0xfa, 0x15, 0xc9, 0xb3, 0x03, 0xfd, 0xe5, 0xbe, 0x5b, 0x18, 0xd9, 0x1e, ++ 0xed, 0xa6, 0x7f, 0xf9, 0x2c, 0x35, 0x96, 0xca, 0xa8, 0x66, 0x6f, 0xf6, 0x99, 0x09, 0x98, 0x9a, ++ 0xf4, 0x29, 0x81, 0xc8, 0x74, 0x5f, 0x79, 0x9d, 0x3b, 0xaa, 0xb1, 0xd9, 0x68, 0x1b, 0x6b, 0x6d, ++ 0xae, 0x0b, 0xd9, 0x2e, 0x3d, 0xa2, 0x89, 0x0d, 0xb5, 0x46, 0xa7, 0x4e, 0xe9, 0xe1, 0x37, 0x48, ++ 0x63, 0x7a, 0x5f, 0x55, 0x62, 0xa4, 0x32, 0xf8, 0x6f, 0x99, 0x67, 0xa2, 0xc5, 0xfe, 0x27, 0x20, ++ }, ++ { /* 5 */ ++ 0x79, 0x80, 0xab, 0xe7, 0xa9, 0x6f, 0x50, 0x97, 0xbe, 0x20, 0xdb, 0x5a, 0xb5, 0x1a, 0xf0, 0xb4, ++ 0x91, 0x1a, 0x97, 0x16, 0x14, 0x45, 0x9f, 0x6e, 0x60, 0xe7, 0xef, 0x55, 0x0a, 0x58, 0x62, 0xaa, ++ 0x99, 0xdc, 0x5f, 0x93, 0xd1, 0x32, 0x94, 0x30, 0x3d, 0x37, 0xfc, 0x67, 0x89, 0x09, 0x7f, 0xce, ++ 0xb9, 0x42, 0xf9, 0xc2, 0x43, 0x2d, 0xb8, 0x8b, 0x8a, 0xf1, 0xb0, 0xaf, 0xc0, 0x8e, 0x0b, 0x9d, ++ 0x71, 0x46, 0x63, 0x62, 0x6c, 0x18, 0x5b, 0xc9, 0xe3, 0xf0, 0xc8, 0x68, 0x36, 0x4b, 0xed, 0xd0, ++ 0xea, 0x4a, 0x0e, 0x41, 0x1d, 0x47, 0xbd, 0x0f, 0x58, 0xf3, 0x40, 0xe2, 0xef, 0xc7, 0x04, 0x07, ++ 0xd7, 0x56, 0x4e, 0xa7, 0xd0, 0xcc, 0x51, 0x02, 0x84, 0xf4, 0xeb, 0xf2, 0x68, 0xd9, 0xf3, 0x27, ++ 0x95, 0x79, 0xf3, 0xb5, 0x97, 0x9f, 0x7b, 0x41, 0xaf, 0x8f, 0x07, 0x4c, 0xaa, 0x91, 0x8d, 0x98, ++ 0x55, 0xbb, 0xa1, 0x90, 0x7d, 0xdd, 0x93, 0x5d, 0x9b, 0x5e, 0x6c, 0xb9, 0xdf, 0x05, 0x76, 0xb1, ++ 0xda, 0x9b, 0xfb, 0xd9, 0xc6, 0xb6, 0x87, 0x08, 0x55, 0x56, 0x2a, 0x4e, 0x63, 0xe2, 0x4a, 0x9c, ++ 0xdb, 0xf3, 0xe2, 0x81, 0x96, 0x61, 0xbe, 0x73, 0x16, 0x4c, 0x10, 0xd9, 0x4b, 0x41, 0x01, 0x71, ++ 0xb5, 0xe7, 0x55, 0xe4, 0x05, 0x80, 0x57, 0xfa, 0x18, 0x49, 0x4b, 0x84, 0xe3, 0x16, 0xf9, 0xcb, ++ 0x3f, 0xcc, 0x72, 0x56, 0x6d, 0xe6, 0x9e, 0xfb, 0x5a, 0x33, 0xdf, 0xfd, 0xd7, 0x9b, 0x61, 0x39, ++ 0x54, 0xd3, 0xb8, 0xc8, 0x2d, 0x0a, 0xaa, 0x26, 0xd8, 0x44, 0x56, 0x2e, 0xf7, 0xa6, 0x3d, 0x5c, ++ 0x7d, 0xe3, 0xcf, 0x44, 0x2a, 0xb5, 0xb4, 0xb8, 0x71, 0x48, 0x33, 0x43, 0x15, 0xd3, 0x1f, 0x86, ++ 0xd5, 0x86, 0x7c, 0x17, 0x70, 0xa1, 0x23, 0xf4, 0x02, 0xc0, 0x9f, 0x1f, 0x38, 0x5c, 0x65, 0x3e, ++ 0xbd, 0x21, 0x9d, 0x61, 0xc0, 0xf7, 0x5c, 0xa4, 0x45, 0x99, 0x58, 0xb6, 0x60, 0x47, 0xe4, 0xaf, ++ 0xa9, 0x0d, 0xaa, 0x0b, 0x0a, 0xc3, 0xae, 0x37, 0x30, 0x92, 0x96, 0xcb, 0x05, 0x2c, 0x31, 0x55, ++ 0xfe, 0x66, 0x39, 0x2b, 0xd7, 0x73, 0x4f, 0x9c, 0x2d, 0xf8, 0x8e, 0x9f, 0x8a, 0xac, 0xd1, 0xfd, ++ 0x3b, 0xaf, 0x16, 0xf5, 0xee, 0x3c, 0x7a, 0xd4, 0x95, 0x5b, 0x37, 0xe4, 0x77, 0x52, 0x8e, 0x0b, ++ 0x1d, 0x82, 0xe6, 0xb7, 0x5f, 0x94, 0xc0, 0xb6, 0x6b, 0xc1, 0xe7, 0xd8, 0xce, 0x99, 0x83, 0x73, ++ 0x36, 0x62, 0xa3, 0x8b, 0xf8, 0x46, 0xac, 0xde, 0x44, 0xf9, 0xf6, 0x58, 0x7c, 0x69, 0x37, 0xb0, ++ 0x38, 0x17, 0x3d, 0x1d, 0x1e, 0x86, 0x31, 0x59, 0x50, 0x75, 0x79, 0x9e, 0x0f, 0x74, 0x53, 0xff, ++ 0x07, 0xdb, 0x4f, 0x4b, 0x73, 0x60, 0xaf, 0xa2, 0x0a, 0x46, 0xa6, 0x63, 0xd8, 0xef, 0x32, 0xc6, ++ 0x1b, 0x31, 0xb0, 0xa4, 0x7c, 0x23, 0x56, 0x6f, 0x22, 0x9d, 0x7b, 0x2c, 0x3e, 0xd5, 0xfa, 0x58, ++ 0xfb, 0x6d, 0x44, 0xd0, 0x04, 0x7e, 0x92, 0xc8, 0xa1, 0x8a, 0x5c, 0x11, 0x02, 0xc6, 0x75, 0x22, ++ 0x70, 0x2e, 0x7a, 0x3a, 0x3c, 0xcf, 0x62, 0xb2, 0xa0, 0xea, 0xf2, 0xff, 0x1e, 0xe8, 0xa6, 0x3d, ++ 0x89, 0x93, 0x0c, 0x5a, 0x98, 0xdc, 0x82, 0x8c, 0x87, 0x54, 0xda, 0x03, 0x4c, 0xab, 0x45, 0x06, ++ 0x4a, 0xe9, 0x75, 0x97, 0x82, 0x24, 0x21, 0x1d, 0x76, 0xab, 0xff, 0x8c, 0x41, 0x19, 0x63, 0xdb, ++ 0xae, 0xd6, 0xe5, 0x40, 0x79, 0xa3, 0x01, 0x95, 0x3a, 0xd4, 0x30, 0xa8, 0xdd, 0xc3, 0x03, 0x93, ++ 0x3d, 0x1c, 0x40, 0xe6, 0xcd, 0x8b, 0xec, 0x0d, 0xdc, 0x07, 0xab, 0x10, 0x87, 0x1e, 0xf7, 0x20, ++ 0x29, 0x30, 0x77, 0x8c, 0x07, 0xbf, 0x1e, 0x9e, 0xa9, 0x0c, 0x65, 0x6d, 0xe2, 0x75, 0x22, 0xda, ++ 0x8a, 0x2b, 0x27, 0xb2, 0x68, 0x66, 0xc9, 0x01, 0x42, 0x7a, 0x94, 0x79, 0x34, 0x8d, 0x98, 0xf2, ++ 0xcd, 0x0f, 0xe7, 0x5b, 0xfc, 0x38, 0x3e, 0x16, 0xe5, 0x73, 0xaa, 0x49, 0x7e, 0xaf, 0x42, 0x92, ++ 0x41, 0x97, 0x96, 0xfa, 0xb7, 0xe9, 0x61, 0xce, 0xee, 0x55, 0xa2, 0xc4, 0xba, 0x6e, 0xa3, 0x4b, ++ 0xce, 0xb7, 0xcc, 0xb3, 0x0c, 0x82, 0x75, 0x9b, 0x20, 0x5d, 0xe4, 0x33, 0x06, 0x89, 0x9f, 0x66, ++ 0x16, 0xfc, 0x05, 0xda, 0x6a, 0x59, 0x80, 0x65, 0xf3, 0x3f, 0xba, 0x90, 0x35, 0xee, 0x43, 0xe3, ++ 0x6c, 0xc4, 0x85, 0xd5, 0x33, 0x8c, 0x9b, 0x7f, 0x88, 0x31, 0x2f, 0xb0, 0xf8, 0xd2, 0x6e, 0xa3, ++ 0x1f, 0x52, 0xd4, 0x07, 0xff, 0xf9, 0xb2, 0x40, 0xed, 0xf5, 0x93, 0x35, 0x9e, 0x1c, 0x15, 0x6a, ++ 0xe0, 0x5c, 0xf4, 0x74, 0x78, 0x5d, 0xc4, 0xa7, 0x83, 0x17, 0x27, 0x3d, 0x3c, 0x13, 0x8f, 0x7a, ++ 0xf5, 0x18, 0xda, 0x46, 0xe2, 0xbe, 0x0f, 0x4f, 0xb5, 0x06, 0xd3, 0xd7, 0x71, 0xdb, 0x11, 0x6d, ++ 0xb0, 0xec, 0x28, 0x1f, 0xd6, 0x8d, 0x8a, 0xae, 0x94, 0x3b, 0x99, 0x0a, 0x6b, 0x7c, 0x5d, 0x14, ++ 0xde, 0xf8, 0x9f, 0x7a, 0x45, 0x6c, 0x63, 0x27, 0x9a, 0x3e, 0xc2, 0x57, 0xc3, 0x2b, 0xa5, 0xae, ++ 0x03, 0xb8, 0x2b, 0xe8, 0xf0, 0xba, 0x4b, 0x8d, 0xc5, 0x2e, 0x4e, 0x7a, 0x78, 0x26, 0xdd, 0xf4, ++ 0xd0, 0x8d, 0x01, 0xec, 0xa3, 0xac, 0xfe, 0xa0, 0x8e, 0xb2, 0x4d, 0x91, 0xb0, 0x36, 0xc1, 0xe1, ++ 0x8e, 0x48, 0x43, 0x11, 0xeb, 0xbc, 0x2d, 0x2e, 0x8d, 0x12, 0x7c, 0x60, 0x94, 0x44, 0x77, 0xc0, ++ 0x23, 0x26, 0x8d, 0xb9, 0x62, 0xa5, 0x67, 0x36, 0x72, 0xe8, 0x02, 0xb2, 0x31, 0xa1, 0xa9, 0xa7, ++ 0x0a, 0x16, 0xfa, 0x35, 0x65, 0x1a, 0x79, 0xa8, 0xdb, 0xe4, 0x67, 0xdf, 0xd3, 0xd4, 0x8b, 0x7d, ++ 0xf3, 0xab, 0x8c, 0x55, 0xc1, 0x09, 0x99, 0x96, 0xfc, 0x5a, 0x4f, 0x23, 0x81, 0x97, 0x68, 0x46, ++ 0x06, 0xb3, 0x56, 0x13, 0x23, 0xb7, 0x96, 0xd9, 0x49, 0x5c, 0x9c, 0xf4, 0xf0, 0x4c, 0x79, 0x2b, ++ 0xdf, 0x90, 0x86, 0x22, 0x15, 0xbb, 0x5a, 0x5c, 0xd9, 0x24, 0xf8, 0xc0, 0xeb, 0x88, 0xee, 0x43, ++ 0x4d, 0x32, 0x3a, 0xdc, 0xf1, 0x44, 0x8e, 0xbf, 0x7c, 0xed, 0x59, 0xef, 0x99, 0xf6, 0x51, 0x1d, ++ 0x98, 0xb4, 0x46, 0xcb, 0x81, 0xe5, 0xad, 0x4b, 0x7e, 0x2d, 0xc6, 0xf0, 0xa1, 0xaa, 0x34, 0x23, ++ 0x97, 0xa9, 0xc1, 0x05, 0x37, 0xf2, 0x09, 0xb7, 0x29, 0xbb, 0x73, 0xa1, 0xfa, 0x14, 0x1b, 0x81, ++ 0xad, 0x6e, 0xce, 0xa8, 0x89, 0x19, 0x4a, 0x18, 0xff, 0xfa, 0x7e, 0xd2, 0xa5, 0xe5, 0xde, 0x67, ++ 0x15, 0x44, 0x2e, 0x32, 0x9a, 0xe3, 0xcb, 0xe8, 0x36, 0x11, 0xf4, 0xea, 0x4d, 0xc8, 0x9e, 0x17, ++ 0xa2, 0x73, 0x49, 0x66, 0x3f, 0x0e, 0xee, 0xe4, 0xa8, 0x6c, 0xcb, 0x83, 0xfe, 0x5b, 0xf1, 0xc5, ++ 0xab, 0xdd, 0x98, 0xbb, 0xaa, 0xae, 0xdc, 0xc1, 0xb6, 0xa6, 0xe2, 0x26, 0x55, 0xa9, 0xa7, 0x4c, ++ 0xc0, 0xc2, 0x52, 0x25, 0xea, 0x42, 0xe8, 0x1c, 0x34, 0xd1, 0x6b, 0xf5, 0x75, 0x94, 0xfb, 0x29, ++ 0xb6, 0x5f, 0x7e, 0x0c, 0xf5, 0x3a, 0x1c, 0x77, 0xdd, 0x67, 0x05, 0xfe, 0x9b, 0x30, 0x24, 0x3f, ++ 0x53, 0x08, 0xf7, 0x83, 0x5e, 0x6a, 0x05, 0x84, 0xd2, 0x02, 0xf0, 0x4d, 0x2f, 0x49, 0x0f, 0x9a, ++ 0xed, 0x91, 0x41, 0x0a, 0x6e, 0x27, 0x12, 0xad, 0x52, 0xb5, 0xe6, 0x81, 0x37, 0x28, 0x36, 0xc1, ++ 0xc1, 0xaa, 0x4b, 0x7d, 0xba, 0x95, 0xd1, 0x67, 0x77, 0xcb, 0x51, 0x62, 0x5d, 0x37, 0xb0, 0xc4, ++ 0xe1, 0x34, 0xed, 0x2c, 0x28, 0x8a, 0xfd, 0xdc, 0xc0, 0x0d, 0x1d, 0xaa, 0x14, 0xb0, 0xc4, 0x97, ++ 0x62, 0xb1, 0x1b, 0x43, 0xd5, 0x4c, 0x06, 0xf8, 0x9c, 0xbd, 0xa0, 0x76, 0x8b, 0xcf, 0x0a, 0xec, ++ 0x24, 0xfd, 0xc2, 0xf2, 0x11, 0xc5, 0xc8, 0x94, 0x78, 0xae, 0xa4, 0xd1, 0xe9, 0x4e, 0x9b, 0x61, ++ 0xe9, 0xf2, 0x25, 0xa9, 0xed, 0xfd, 0xf6, 0x82, 0x9d, 0xdd, 0x0e, 0x98, 0x97, 0xe1, 0xd9, 0xf3, ++ 0x65, 0x6a, 0x54, 0x08, 0xa6, 0x2c, 0xa9, 0x5a, 0x96, 0xfb, 0x06, 0x15, 0x53, 0x20, 0x38, 0x2a, ++ 0xec, 0xf9, 0x58, 0x52, 0x3e, 0xf0, 0x2b, 0xd6, 0x11, 0xaf, 0xdc, 0x16, 0x1f, 0x8b, 0x7d, 0x2c, ++ 0x5d, 0x7d, 0x69, 0x15, 0xb8, 0xaa, 0x98, 0x03, 0xc6, 0x8e, 0x7f, 0x8b, 0x5c, 0x54, 0x6b, 0xd5, ++ 0x26, 0x2d, 0xf0, 0x42, 0xb1, 0xa8, 0xba, 0x62, 0xfe, 0x9a, 0xd0, 0x3c, 0xb9, 0xcb, 0x0d, 0x78, ++ 0xbe, 0x99, 0xb6, 0x89, 0x30, 0x4d, 0x17, 0x29, 0x80, 0xb7, 0x16, 0xcc, 0x18, 0x61, 0x39, 0x5b, ++ 0x21, 0xf6, 0xbf, 0x09, 0xc2, 0xc8, 0x15, 0xc0, 0xf4, 0xdc, 0x76, 0x5f, 0x61, 0x24, 0x3f, 0xbe, ++ 0x4b, 0x81, 0x6c, 0xcf, 0xd2, 0xf3, 0x18, 0x66, 0x35, 0xb1, 0xc5, 0x1b, 0x69, 0xba, 0x28, 0x36, ++ 0x48, 0x39, 0x47, 0x27, 0x22, 0x49, 0x53, 0xeb, 0xf0, 0x9f, 0x8b, 0x61, 0x11, 0x9c, 0xf5, 0xc2, ++ 0xca, 0xd4, 0xa8, 0x10, 0x8f, 0x58, 0x91, 0xb4, 0xef, 0x35, 0x0c, 0x2a, 0xa6, 0x40, 0x70, 0x54, ++ 0xf7, 0xc8, 0xe8, 0xf6, 0x42, 0xd3, 0x7d, 0xb9, 0x33, 0x32, 0xa7, 0x3a, 0x21, 0x5e, 0x87, 0x74, ++ 0x7c, 0x8b, 0xd6, 0x1c, 0x7a, 0x62, 0x8d, 0xc3, 0x32, 0x52, 0x09, 0xd4, 0x3d, 0x70, 0x54, 0x6b, ++ 0xff, 0x0e, 0x20, 0x73, 0x87, 0xa4, 0x76, 0xe7, 0x6e, 0xe2, 0xb4, 0x08, 0xa2, 0x0f, 0x9a, 0x10, ++ 0x20, 0x9e, 0xa6, 0x51, 0x92, 0x1f, 0x2c, 0xbb, 0xb7, 0xc6, 0x4c, 0xc8, 0x49, 0x87, 0x74, 0x53, ++ 0xd1, 0xe5, 0x18, 0xb4, 0xf3, 0x7b, 0xc7, 0xdb, 0xcd, 0xa8, 0x77, 0x06, 0x98, 0x95, 0x8a, 0x0c, ++ 0x85, 0x36, 0xa0, 0x7c, 0xde, 0x71, 0x6d, 0xfd, 0x15, 0xec, 0x21, 0x28, 0x6f, 0x33, 0xb7, 0x50, ++ 0x58, 0x76, 0x14, 0xee, 0x6b, 0xa7, 0x45, 0x57, 0x4a, 0xfc, 0xad, 0x05, 0xd4, 0x3e, 0xcf, 0x0a, ++ 0x49, 0x51, 0x5e, 0x7f, 0x72, 0x9e, 0x6a, 0x90, 0xb3, 0x85, 0xb1, 0xf6, 0x39, 0x3f, 0xbe, 0x2f, ++ 0xfa, 0x05, 0x5d, 0x88, 0x54, 0xa9, 0xab, 0xb3, 0xe2, 0x90, 0x66, 0x86, 0x2a, 0x65, 0x3e, 0xcf, ++ 0x87, 0xe6, 0x92, 0xcc, 0x7e, 0x1c, 0x1f, 0x0b, 0x93, 0xd8, 0x55, 0xc5, 0x3f, 0xb6, 0x21, 0x49, ++ 0x27, 0x45, 0xe9, 0x1a, 0xe1, 0x7f, 0x83, 0x19, 0xbd, 0x80, 0xea, 0xab, 0x91, 0x68, 0x46, 0x95, ++ 0xe8, 0x9a, 0x3c, 0xf1, 0xbd, 0x2a, 0xcf, 0xf9, 0xde, 0xc7, 0x34, 0x0f, 0xbf, 0x42, 0x92, 0x1e, ++ 0xf4, 0x70, 0xc3, 0x1e, 0xb2, 0x69, 0x36, 0x34, 0xf6, 0x1c, 0xe9, 0x40, 0x59, 0x78, 0x5a, 0x80, ++ 0x5a, 0xa6, 0x26, 0x5e, 0xcb, 0xca, 0x37, 0xa1, 0xcc, 0xc8, 0xd9, 0xe8, 0x84, 0xbb, 0x59, 0x13, ++ 0x66, 0xd2, 0x7f, 0xe0, 0x56, 0x96, 0xe2, 0xd7, 0x53, 0xd5, 0x48, 0x6f, 0x2b, 0x06, 0xe5, 0xde, ++ 0xf0, 0x13, 0xa7, 0xbd, 0x31, 0xb3, 0xd2, 0x1b, 0x39, 0x74, 0x01, 0x59, 0xf9, 0xb1, 0xb5, 0xb2, ++ 0xcb, 0xbc, 0xb1, 0x48, 0xdf, 0x8f, 0xa8, 0xcf, 0xac, 0x2f, 0x36, 0xbd, 0x8e, 0xe3, 0x3b, 0xb9, ++ 0x0e, 0x75, 0x9e, 0x96, 0xe6, 0xc0, 0x9d, 0x87, 0x14, 0x8c, 0x8f, 0xc6, 0x73, 0x1d, 0x64, 0x4f, ++ 0xe2, 0x8c, 0xc6, 0xc4, 0xd8, 0x30, 0xb6, 0x51, 0x05, 0x23, 0x53, 0xd0, 0x6c, 0x96, 0x19, 0x63, ++ 0x57, 0x6b, 0x93, 0x20, 0xdd, 0xb0, 0xe1, 0xab, 0x1d, 0x6a, 0x18, 0x54, 0x8f, 0x80, 0xe0, 0xa8, ++ 0xc4, 0xa1, 0x36, 0x86, 0x69, 0x98, 0x0c, 0x33, 0xfb, 0xb9, 0x83, 0xec, 0xd5, 0x5d, 0x14, 0x1b, ++ 0x9b, 0x0c, 0x6d, 0x23, 0x71, 0x5f, 0xe6, 0xc6, 0xbb, 0x03, 0x88, 0x8a, 0xd9, 0x8c, 0xe9, 0xd7, ++ 0xee, 0x29, 0x6a, 0xe2, 0x9e, 0x9d, 0x59, 0x20, 0x97, 0x9b, 0xa8, 0xfb, 0x4f, 0x0e, 0xeb, 0x35, ++ 0x1a, 0x59, 0xa9, 0xfc, 0x2c, 0xf4, 0x6f, 0x14, 0x61, 0x87, 0x41, 0xbb, 0x16, 0x76, 0xb1, 0xb5, ++ 0x37, 0x0a, 0xba, 0xd3, 0xa8, 0x91, 0x95, 0xa5, 0x07, 0xe3, 0xcc, 0xcf, 0x54, 0xca, 0x7c, 0x5d, ++ 0x2e, 0xeb, 0x38, 0xc7, 0x74, 0xdf, 0xb1, 0x3c, 0xa3, 0x4a, 0xc3, 0x0e, 0x3a, 0x9a, 0x10, 0x1c, ++ 0x69, 0xcf, 0xf8, 0x2e, 0xe0, 0x81, 0x46, 0x2b, 0x04, 0x43, 0xfd, 0x3e, 0x70, 0xb8, 0xca, 0x7c, ++ 0x8b, 0x43, 0x3e, 0xea, 0x38, 0xb1, 0xf0, 0x7a, 0x01, 0x60, 0xae, 0xee, 0x1c, 0x2e, 0xd3, 0x1f, ++ 0xaf, 0xbe, 0xfc, 0x18, 0x29, 0x74, 0x38, 0xee, 0x79, 0xce, 0x0a, 0x3f, 0xf5, 0x60, 0x48, 0x7e, ++ 0xc2, 0x12, 0x60, 0x95, 0x4a, 0x2f, 0x9a, 0xea, 0xb2, 0xe5, 0x1f, 0x18, 0x25, 0x11, 0x6d, 0x30, ++ 0x7f, 0x33, 0xfd, 0xf4, 0x8a, 0xd8, 0xc6, 0x4e, 0xf7, 0x7c, 0x47, 0xae, 0x45, 0x56, 0x89, 0x9f, ++ 0x64, 0x02, 0x4d, 0x50, 0xf6, 0xfb, 0x90, 0x21, 0xd5, 0xe1, 0x3c, 0x82, 0x7b, 0x83, 0x73, 0xc7, ++ 0x45, 0xf4, 0xf2, 0x59, 0x34, 0x33, 0x85, 0xe1, 0x21, 0x3d, 0x4a, 0xdd, 0x1a, 0xa7, 0x4c, 0x79, ++ 0x14, 0x2c, 0x37, 0x6a, 0xca, 0x34, 0xf2, 0x93, 0x75, 0x0b, 0xce, 0x7d, 0x65, 0x6b, 0xd5, 0xfa, ++ 0xfd, 0xde, 0x12, 0xc3, 0x27, 0xc9, 0x04, 0x11, 0xe8, 0xd6, 0xc0, 0xe5, 0xf2, 0x8a, 0x0c, 0x09, ++ 0xac, 0x06, 0xd7, 0xf0, 0xd9, 0xce, 0x73, 0x63, 0xbc, 0xe0, 0x44, 0x45, 0x8d, 0x46, 0x95, 0x8a, ++ 0x86, 0x8e, 0x8b, 0x94, 0x2e, 0xcb, 0x26, 0x70, 0xd0, 0xc2, 0x6f, 0x52, 0x17, 0x15, 0x6a, 0xa4, ++ 0x76, 0x9d, 0x2c, 0x29, 0x1f, 0x78, 0xf4, 0x6b, 0xe9, 0xb6, 0x6e, 0x0b, 0xee, 0xa4, 0xdf, 0x16, ++ 0x43, 0x47, 0xa4, 0x4a, 0x17, 0x84, 0x13, 0x38, 0x68, 0x61, 0xd6, 0x29, 0xea, 0xeb, 0x35, 0x52, ++ 0x50, 0xb0, 0xdc, 0x6b, 0xae, 0xd0, 0x4e, 0x09, 0x17, 0x2c, 0xbe, 0x37, 0x57, 0x6f, 0xd2, 0x6e, ++ 0x28, 0x58, 0x6e, 0xd4, 0x57, 0x68, 0x27, 0xe5, 0xea, 0x16, 0x5f, 0xfa, 0xca, 0xd6, 0x69, 0x37, ++ 0xaa, 0xb5, 0x81, 0xe3, 0xfa, 0x79, 0xe5, 0xba, 0xf5, 0xbc, 0xd8, 0xb1, 0x7d, 0x0a, 0xec, 0xa1, ++ 0x5e, 0xc5, 0x42, 0xfd, 0x48, 0x10, 0xd3, 0x8e, 0x03, 0xa0, 0x31, 0xf1, 0x24, 0x72, 0xb6, 0x21, ++ 0xdd, 0x40, 0xb4, 0x92, 0xb5, 0xd6, 0x28, 0xaa, 0x5f, 0x10, 0x8c, 0x2d, 0xbb, 0x0d, 0x78, 0x5a, ++ 0xbb, 0x92, 0xcb, 0x72, 0xe3, 0x40, 0xca, 0x7d, 0x0c, 0xc5, 0xc4, 0x42, 0x90, 0x0b, 0x9d, 0x84, ++ 0x96, 0xc1, 0xd8, 0x5d, 0x67, 0x25, 0x30, 0xcc, 0x6a, 0xa1, 0x49, 0x36, 0xd2, 0xb7, 0x50, 0x6c, ++ 0x05, 0x0b, 0x7d, 0xfb, 0xd3, 0x0d, 0xdd, 0x54, 0x8c, 0x72, 0xd2, 0x8e, 0x88, 0x6a, 0xa4, 0xdf, ++ 0x7b, 0x50, 0x99, 0x57, 0x09, 0x02, 0x22, 0x61, 0x38, 0x14, 0xaf, 0xb7, 0xe5, 0x9f, 0x66, 0xad, ++ 0xf6, 0xa0, 0xf1, 0xae, 0x12, 0x04, 0x44, 0xc2, 0x70, 0x28, 0x9d, 0xad, 0x09, 0xfd, 0xcc, 0x99, ++ 0x2b, 0xe0, 0x45, 0x3c, 0xa7, 0xd2, 0x6c, 0x68, 0x2f, 0x38, 0x11, 0x80, 0xb2, 0xf0, 0xb4, 0xc3, ++ 0x09, 0xae, 0xd1, 0xdd, 0x95, 0xa0, 0x32, 0x25, 0x1e, 0xca, 0x29, 0xa5, 0xab, 0xf2, 0x56, 0x89, ++ 0xc7, 0x19, 0x1d, 0x6e, 0x99, 0x22, 0x47, 0xbe, 0x3e, 0x97, 0xcd, 0x96, 0xad, 0x7b, 0xc9, 0xef, ++ 0x46, 0x4c, 0xd9, 0xb1, 0xc4, 0x89, 0xce, 0x6c, 0xe4, 0x13, 0x04, 0xa7, 0x62, 0x81, 0x91, 0x8d, ++ 0x0d, 0xcd, 0xb5, 0x7e, 0x16, 0x7a, 0xd6, 0x0a, 0xd1, 0xa2, 0xc1, 0xbc, 0x0b, 0x3b, 0xb9, 0xbb, ++ 0x13, 0xf7, 0x78, 0x21, 0xb9, 0x54, 0x5d, 0x31, 0x7f, 0x4d, 0x68, 0x1e, 0xbd, 0x84, 0xe7, 0x3c, ++ 0x61, 0x09, 0x30, 0xab, 0x25, 0xf6, 0x4d, 0x75, 0x59, 0x93, 0xee, 0x0c, 0xf3, 0xe9, 0xd7, 0x18, ++ 0x01, 0x68, 0x19, 0x58, 0x50, 0xd7, 0x39, 0x7b, 0x43, 0x1a, 0x3a, 0x97, 0x28, 0xa3, 0x4b, 0xed, ++ 0xef, 0x41, 0x73, 0xba, 0xce, 0x4a, 0x60, 0x5b, 0xd4, 0x81, 0x92, 0x6c, 0x67, 0xad, 0xa0, 0xd8, ++ 0x8d, 0xf0, 0x68, 0xf9, 0x1b, 0x06, 0x66, 0xa3, 0x48, 0x3c, 0x32, 0x1a, 0xec, 0x62, 0xaa, 0x34, ++ 0xd3, 0x35, 0x2a, 0x04, 0x53, 0x16, 0xb5, 0x2d, 0x4b, 0x9c, 0x03, 0xeb, 0xc8, 0x10, 0x1c, 0x15, ++ 0xbc, 0x49, 0x84, 0x39, 0x90, 0x20, 0x65, 0xdf, 0x06, 0x83, 0x62, 0x21, 0x48, 0xe4, 0xaf, 0x42, ++ 0xf1, 0x7b, 0xbe, 0xe5, 0x61, 0x64, 0xeb, 0x60, 0x7a, 0x6e, 0x3b, 0xce, 0xd1, 0x12, 0xfe, 0x5f, ++ 0x32, 0x01, 0xc7, 0x28, 0x7b, 0x9c, 0x48, 0xf1, 0x8b, 0x91, 0x1e, 0x41, 0xdc, 0xa0, 0xd8, 0x82, ++ 0x5c, 0x15, 0x70, 0x4d, 0xe8, 0x7d, 0xa1, 0x78, 0x85, 0x94, 0x45, 0x1c, 0x74, 0xf7, 0x20, 0x38, ++ 0x02, 0xd0, 0x32, 0xb0, 0xa0, 0x6d, 0x72, 0xf6, 0x86, 0x34, 0x74, 0xed, 0x50, 0x85, 0x96, 0x19, ++ 0xb1, 0x84, 0x31, 0x47, 0x86, 0x5a, 0xb3, 0xd5, 0xd7, 0x21, 0xa3, 0x9d, 0x43, 0xdf, 0x16, 0xf9, ++ 0x56, 0x03, 0x8a, 0x78, 0x8d, 0x67, 0xd8, 0xd0, 0x5e, 0x70, 0x22, 0xc3, 0xa7, 0x23, 0xab, 0x45, ++ 0x51, 0xd8, 0xc5, 0x33, 0xfe, 0x07, 0x77, 0x72, 0x54, 0x36, 0x84, 0xa0, 0x7f, 0xcc, 0x99, 0x83, ++ 0xc9, 0x6c, 0x83, 0xf8, 0x7f, 0xe2, 0xda, 0x39, 0x2a, 0x1b, 0x42, 0x50, 0xde, 0x66, 0xad, 0xa0, ++ 0xd6, 0x3e, 0x57, 0xff, 0x80, 0x1b, 0x68, 0x79, 0xc7, 0xee, 0xd1, 0x65, 0x40, 0x7a, 0xb8, 0xca, ++ 0x4e, 0x8a, 0x11, 0x34, 0x01, 0xfe, 0xc5, 0x32, 0xb9, 0xc3, 0x17, 0x95, 0xe1, 0xd0, 0x8c, 0xe9, ++ 0xc8, 0x04, 0x9a, 0xa0, 0x2f, 0x35, 0xe3, 0x42, 0x69, 0x01, 0x78, 0xc7, 0xf6, 0xc5, 0xe6, 0x4d, ++ 0xa0, 0xa3, 0x7b, 0xd6, 0x9f, 0x63, 0x9c, 0x12, 0x2e, 0x58, 0xbf, 0x6e, 0xae, 0xde, 0x67, 0xdc, ++ 0x31, 0xb9, 0xec, 0xc0, 0x8b, 0x26, 0x03, 0x7c, 0x4e, 0xbf, 0x50, 0x3b, 0xa4, 0x86, 0x05, 0x76, ++ 0x22, 0x4e, 0x94, 0xe1, 0x32, 0x72, 0x5e, 0x4d, 0x31, 0xf2, 0x38, 0x25, 0x19, 0x02, 0xe2, 0x4a, ++ 0xa5, 0xa8, 0x06, 0x2d, 0x4c, 0x6e, 0x41, 0x46, 0xa2, 0x2a, 0x6d, 0xe0, 0x26, 0xb4, 0xc3, 0x03, ++ 0x17, 0x94, 0x1c, 0x82, 0x3a, 0x8e, 0xb9, 0x1e, 0xb0, 0x25, 0x80, 0x07, 0x1d, 0x4d, 0x08, 0x0e, ++ 0x33, 0x69, 0xde, 0x70, 0x2b, 0x4b, 0x71, 0x8a, 0xc8, 0x8b, 0x24, 0xd6, 0xf4, 0x03, 0x93, 0x6f, ++ 0x94, 0x11, 0xea, 0xed, 0xc7, 0x48, 0x42, 0x3a, 0xec, 0x95, 0x3d, 0xdb, 0x82, 0x32, 0xc6, 0x75, ++ 0xeb, 0x22, 0x17, 0x19, 0x4d, 0x90, 0x84, 0x74, 0x1b, 0xe9, 0x7a, 0x75, 0xc7, 0x64, 0x4f, 0xea, ++ 0x84, 0x5e, 0xb9, 0x24, 0x8e, 0xa6, 0x54, 0x86, 0x56, 0xf6, 0x1b, 0xbf, 0x47, 0x90, 0xfc, 0xbd, ++ 0x08, 0xc6, 0xc8, 0x85, 0xc5, 0x77, 0x0b, 0x5e, 0x5d, 0xd0, 0x13, 0x32, 0x83, 0x51, 0x1d, 0x64, ++ 0x25, 0x95, 0xdb, 0xaa, 0x41, 0x12, 0xf1, 0xef, 0x3b, 0xb4, 0x9e, 0x46, 0xc1, 0xed, 0xd0, 0x8c, ++ 0xf9, 0xbd, 0x76, 0x60, 0xa4, 0x13, 0xe0, 0x3e, 0x27, 0xbe, 0x28, 0xfc, 0x52, 0x43, 0xe3, 0x3b, ++ 0x39, 0x7f, 0x24, 0x45, 0x4e, 0x51, 0x08, 0x22, 0x13, 0x6f, 0x43, 0x09, 0x27, 0xd7, 0x18, 0x12, ++ 0x60, 0x61, 0x29, 0xf3, 0x75, 0x21, 0x74, 0x0e, 0x1a, 0x89, 0xd4, 0x9b, 0xdb, 0x4a, 0x9c, 0xf5, ++ 0xb2, 0x3c, 0x1a, 0xaf, 0x76, 0xe0, 0xf8, 0x58, 0x12, 0x0f, 0xed, 0xe7, 0x3b, 0xf9, 0xcb, 0x0d, ++ 0xd4, 0xee, 0x65, 0x4f, 0x20, 0x76, 0x1a, 0x8f, 0x41, 0xda, 0xa5, 0x88, 0x10, 0xff, 0x2e, 0xd3, ++ 0x6f, 0x7c, 0xae, 0x3d, 0xc3, 0x36, 0xd0, 0xf2, 0x4d, 0x1f, 0x61, 0xca, 0x80, 0xf4, 0xb3, 0x57, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x6d, 0xac, 0x9c, 0x8d, 0x63, 0x5b, 0xa2, 0x04, 0xcb, 0x2b, 0x15, 0x27, 0xd0, 0x71, 0x25, 0x4e, ++ 0xa1, 0xcb, 0x62, 0x8e, 0xcf, 0xb4, 0xa5, 0x69, 0x6d, 0x42, 0x85, 0xf9, 0x86, 0x7d, 0x2c, 0x31, ++ 0x12, 0x9f, 0x61, 0x79, 0xe9, 0x83, 0x64, 0x4a, 0x3c, 0x57, 0x52, 0x89, 0x95, 0x27, 0xac, 0xd1, ++ 0xd8, 0x4b, 0xc9, 0x69, 0x66, 0xdb, 0xf5, 0xfe, 0xd3, 0x62, 0x5e, 0xa3, 0x33, 0x67, 0xdc, 0x85, ++ 0xa3, 0x1b, 0x50, 0x3e, 0x6f, 0xd9, 0xd7, 0x9f, 0xeb, 0x76, 0xf1, 0x14, 0xd6, 0xf8, 0xba, 0x28, ++ 0xa4, 0xc0, 0x1f, 0x75, 0x1c, 0xb9, 0x78, 0x3d, 0xe1, 0x30, 0x57, 0x77, 0x0e, 0x17, 0x88, 0xee, ++ 0xcf, 0xdf, 0xd5, 0xeb, 0x5c, 0x55, 0x4c, 0xe0, 0x63, 0x47, 0xde, 0xa4, 0x2e, 0x2a, 0xd4, 0x8b, ++ 0x9a, 0x64, 0x74, 0x7b, 0x21, 0x88, 0xdf, 0xbd, 0xf8, 0x19, 0xb2, 0x1d, 0xf1, 0x2f, 0xa2, 0x3a, ++ 0xcc, 0x67, 0xfe, 0x03, 0xac, 0xef, 0x07, 0x6d, 0xa6, 0x69, 0x90, 0xde, 0x56, 0x0c, 0x09, 0x7f, ++ 0x52, 0x60, 0xee, 0xdb, 0x0e, 0xbd, 0x3c, 0xff, 0x91, 0x18, 0xca, 0xda, 0x07, 0xea, 0x44, 0x77, ++ 0x1c, 0xea, 0xff, 0xef, 0x0f, 0x43, 0xf9, 0xcd, 0x28, 0xdb, 0xdd, 0x4f, 0xe6, 0x3a, 0xc8, 0x9e, ++ 0x2f, 0x83, 0x21, 0x9f, 0x24, 0x08, 0x88, 0x47, 0xe0, 0x50, 0xf9, 0x99, 0x12, 0x39, 0x5b, 0xf1, ++ 0x7e, 0x5b, 0xe4, 0xac, 0xda, 0x0f, 0xff, 0x35, 0xb4, 0x66, 0x7d, 0x39, 0x6d, 0xf5, 0xc2, 0x72, ++ 0x93, 0xca, 0xa5, 0xa6, 0xb4, 0x28, 0xed, 0x98, 0xe6, 0xd3, 0x9b, 0xb8, 0x5a, 0xdd, 0xf4, 0xb3, ++ 0x42, 0x2f, 0xbd, 0x12, 0x47, 0x53, 0x2a, 0x43, 0x2b, 0x7b, 0xec, 0xbe, 0xc2, 0x48, 0x7e, 0xbf, ++ 0xb3, 0x54, 0x03, 0xf7, 0x26, 0x37, 0xc1, 0x23, 0x51, 0x15, 0xd7, 0x70, 0x13, 0x5a, 0x80, 0xe0, ++ 0x18, 0x89, 0x9b, 0x4c, 0x8c, 0x99, 0x1d, 0xe2, 0xe7, 0xb3, 0x35, 0x56, 0x46, 0xf3, 0x27, 0xac, ++ 0xb8, 0x2a, 0xe0, 0x9a, 0x13, 0xfa, 0x81, 0xf0, 0xc9, 0xeb, 0x8a, 0x38, 0xe8, 0x2d, 0x40, 0x70, ++ 0xfc, 0xb6, 0x0b, 0x9b, 0x77, 0x1e, 0x3d, 0x6a, 0xab, 0xcc, 0xfa, 0x72, 0xda, 0x29, 0x47, 0xe4, ++ 0x44, 0x9c, 0xeb, 0x01, 0x64, 0xe4, 0xbc, 0x9a, 0x62, 0x27, 0x70, 0x4a, 0x32, 0x04, 0x07, 0x94, ++ 0xe6, 0xef, 0xa2, 0x67, 0x5b, 0xea, 0x52, 0x7e, 0xca, 0x4b, 0xbb, 0xc9, 0xcc, 0x5f, 0xf6, 0x51, ++ 0x8c, 0x98, 0x71, 0xa1, 0x4b, 0xd1, 0x5f, 0xd8, 0x0b, 0x26, 0x08, 0x8d, 0xc4, 0xc1, 0xe1, 0xd9, ++ 0xc6, 0x71, 0x04, 0x36, 0xc9, 0xf5, 0x7e, 0xc5, 0x7d, 0x8d, 0xf7, 0x01, 0x85, 0xd8, 0x82, 0x02, ++ 0x63, 0xd9, 0x02, 0x1b, 0x85, 0x9b, 0x3f, 0x83, 0xdf, 0xa7, 0x9a, 0xe1, 0xa3, 0x6c, 0x41, 0x01, ++ 0xbf, 0xf1, 0xaf, 0xd1, 0x60, 0x9a, 0x2e, 0x52, 0xc3, 0xad, 0x2c, 0x5b, 0x30, 0xc2, 0x72, 0xb6, ++ 0xf2, 0xc3, 0x95, 0x0d, 0x91, 0xde, 0xa0, 0xed, 0xbf, 0x40, 0x75, 0xb4, 0xa9, 0x34, 0x23, 0xab, ++ 0x2c, 0x3b, 0x0a, 0x77, 0xd4, 0xb2, 0xc3, 0xca, 0x25, 0x7e, 0xb7, 0xe3, 0x6a, 0x1f, 0x86, 0x05, ++ 0x11, 0x27, 0x4a, 0x91, 0x19, 0x39, 0x2f, 0xc7, 0xf9, 0x79, 0x1c, 0xf3, 0xed, 0x01, 0x71, 0x25, ++ 0x73, 0x96, 0x51, 0xd2, 0xcc, 0x75, 0x29, 0x3f, 0x65, 0xc4, 0xbc, 0x85, 0x66, 0xce, 0x7b, 0xc9, ++ 0xdc, 0x28, 0xad, 0xca, 0xe5, 0x01, 0x11, 0xd1, 0x1c, 0x0a, 0xb6, 0xba, 0x93, 0xae, 0x33, 0xb7, ++ 0xd9, 0x23, 0xd0, 0x31, 0x36, 0x0c, 0xcc, 0x85, 0x90, 0x78, 0x64, 0x34, 0x1b, 0xc4, 0x97, 0x68, ++ 0x92, 0xa2, 0xbc, 0xfe, 0xe4, 0xff, 0xd4, 0xe3, 0xa5, 0xc9, 0xa1, 0x2f, 0x72, 0x7e, 0xbf, 0x5e, ++ 0x3e, 0xa4, 0x6b, 0x0e, 0x3d, 0x31, 0xa7, 0x80, 0x19, 0x29, 0xe5, 0x6a, 0xff, 0x38, 0x2a, 0xd4, ++ 0xd2, 0x5d, 0x33, 0x5c, 0x03, 0xc1, 0x8c, 0x56, 0x08, 0x86, 0x39, 0x7c, 0xe0, 0xb3, 0x57, 0xf8, ++ 0x59, 0x1e, 0x0d, 0xb6, 0x3b, 0x70, 0x7c, 0x2c, 0x09, 0xe6, 0x97, 0x92, 0xfc, 0x9d, 0x84, 0xe7, ++ 0x75, 0x25, 0x07, 0xc1, 0xef, 0xc2, 0xbf, 0xe6, 0x2c, 0x98, 0x20, 0x71, 0x96, 0x82, 0x02, 0xe2, ++ 0x19, 0xe1, 0x82, 0x14, 0xdc, 0x4e, 0x24, 0x99, 0xa4, 0xa9, 0x0f, 0xc1, 0x6e, 0x50, 0x6c, 0x41, ++ 0xb4, 0x8f, 0x4c, 0xbc, 0x55, 0x57, 0x6e, 0x81, 0x5b, 0x53, 0x71, 0x13, 0xcb, 0xb5, 0xb2, 0x26, ++ 0x81, 0x55, 0xc4, 0xdf, 0x5d, 0xab, 0x89, 0xd2, 0xda, 0x84, 0xc9, 0x31, 0xcf, 0xfa, 0x58, 0x62, ++ 0xe4, 0x3f, 0x90, 0xd7, 0xfb, 0x87, 0x20, 0x88, 0x4c, 0x7f, 0xcf, 0x24, 0x9c, 0xda, 0x60, 0x48, ++ 0xe5, 0x57, 0x89, 0x8f, 0xab, 0x50, 0x19, 0xf3, 0x0f, 0x65, 0xf5, 0xb3, 0xb4, 0x79, 0x2b, 0xa5, ++ 0x0f, 0x1d, 0x87, 0xce, 0xb6, 0x17, 0xa4, 0xfc, 0x57, 0x96, 0xb5, 0x51, 0x5b, 0xbe, 0x2f, 0xa2, ++ 0x47, 0x24, 0xc0, 0xe9, 0x94, 0x5e, 0xf7, 0x17, 0xa7, 0x09, 0x3e, 0x30, 0x4a, 0x22, 0xda, 0x60, ++ 0x9c, 0xd7, 0x22, 0x68, 0x02, 0x3f, 0x49, 0x64, 0xb1, 0x45, 0x2e, 0xe9, 0x01, 0x63, 0xdb, 0x11, ++ 0x2a, 0x88, 0x5c, 0x64, 0xf7, 0x05, 0x55, 0x13, 0x6c, 0x22, 0x2b, 0x17, 0x9a, 0x53, 0xff, 0x2e, ++ 0xa8, 0x65, 0xb3, 0x53, 0x5a, 0x14, 0x97, 0x4c, 0x73, 0x88, 0xac, 0x5c, 0x2d, 0x8f, 0x7a, 0xb8, ++ 0x5b, 0xce, 0x3f, 0x06, 0x9b, 0x1d, 0x0e, 0xda, 0x8f, 0xd2, 0xe3, 0x7f, 0xac, 0x18, 0x12, 0xfe, ++ 0x8f, 0x20, 0x5a, 0x49, 0xbb, 0x6b, 0x14, 0x55, 0xce, 0x08, 0x46, 0xf7, 0xbc, 0xe7, 0x3c, 0x2d, ++ 0x04, 0x63, 0x64, 0xa3, 0x83, 0xda, 0xe4, 0x2f, 0xcf, 0x68, 0xe8, 0x19, 0xa0, 0xc9, 0xef, 0x32, ++ 0xa6, 0x10, 0x2d, 0xc5, 0xbc, 0xd4, 0x0a, 0xcb, 0x67, 0x04, 0x23, 0x9a, 0x5e, 0x92, 0x1e, 0xf7, ++ 0x72, 0xfe, 0x48, 0x8a, 0x9c, 0xa2, 0x10, 0x44, 0x26, 0xde, 0x86, 0x12, 0x4e, 0x6d, 0x30, 0x24, ++ 0xba, 0xfa, 0xd2, 0x2a, 0xb3, 0x97, 0xf3, 0x06, 0x4f, 0xdf, 0xfe, 0xd5, 0xb8, 0xa8, 0xd6, 0x69, ++ 0x30, 0xd1, 0xf5, 0x98, 0xdb, 0xf1, 0x3a, 0x07, 0x0d, 0xa5, 0x6a, 0xac, 0x8c, 0x25, 0x4e, 0x9b, ++ 0x4c, 0x5a, 0x23, 0x84, 0xa1, 0x93, 0xb7, 0xc4, 0x3f, 0xf7, 0x63, 0x78, 0xb1, 0x55, 0x1a, 0xf0, ++ 0x82, 0xed, 0xef, 0x37, 0xad, 0x11, 0xc2, 0x5f, 0x1f, 0xaa, 0x87, 0x4b, 0xb7, 0xdc, 0x85, 0x96, ++ 0x6a, 0x77, 0xd3, 0xc6, 0x10, 0x3b, 0x0d, 0xa6, 0xc1, 0x6d, 0xb3, 0x44, 0x08, 0x9e, 0x17, 0x88, ++ 0x88, 0xfb, 0x15, 0x02, 0xc8, 0x0b, 0xbb, 0xf7, 0xc4, 0x4e, 0xe0, 0x94, 0x64, 0x08, 0x0e, 0xeb, ++ 0x3c, 0x74, 0x59, 0xbe, 0x9d, 0x5c, 0xd5, 0x76, 0x9f, 0x1d, 0x91, 0x87, 0xaf, 0xbd, 0xbc, 0xcd, ++ 0x6e, 0x14, 0xb7, 0x65, 0x93, 0xe1, 0xe9, 0x89, 0x0e, 0x05, 0x5b, 0x5d, 0xa8, 0x57, 0xf8, 0xba, ++ 0x0b, 0x7e, 0xe3, 0x6d, 0x35, 0xcd, 0x40, 0xd3, 0x98, 0xfe, 0x5d, 0x48, 0xfb, 0x77, 0xc0, 0x90, ++ 0x9e, 0x07, 0x10, 0xd8, 0xa2, 0x52, 0x3b, 0x92, 0x37, 0x71, 0x5a, 0x04, 0x51, 0xe6, 0x4d, 0x08, ++ 0x68, 0xa7, 0xe1, 0x76, 0xb0, 0x56, 0x7f, 0x50, 0x47, 0x59, 0xc7, 0xa9, 0x58, 0x1b, 0x81, 0x91, ++ 0x67, 0xba, 0x66, 0xb8, 0x06, 0x41, 0xdb, 0xac, 0x10, 0xcf, 0x72, 0xf8, 0x03, 0xa5, 0xae, 0x33, ++ 0xc5, 0xc9, 0x2f, 0xde, 0x39, 0x4f, 0x35, 0x48, 0xb8, 0xa3, 0xb9, 0x7b, 0xfd, 0xfe, 0x5f, 0xf6, ++ 0x74, 0x4d, 0x1e, 0x99, 0xbf, 0x15, 0x86, 0x9d, 0x6f, 0x82, 0x1a, 0xe6, 0xbe, 0x21, 0x49, 0x0f, ++ 0x40, 0xff, 0x8f, 0xa2, 0xe7, 0x3e, 0x58, 0xb5, 0xad, 0x4f, 0x98, 0x53, 0x92, 0xcd, 0xe8, 0xa6, ++ 0x0c, 0xa5, 0xac, 0x26, 0x46, 0xad, 0xef, 0x71, 0x92, 0xb8, 0xfb, 0x2b, 0x23, 0x98, 0xf2, 0x56, ++ 0xe7, 0x87, 0xbb, 0x3f, 0x0b, 0x3d, 0x6b, 0x05, 0x89, 0x51, 0x81, 0x5e, 0xe4, 0xfc, 0xbd, 0xbc, ++ 0x9d, 0xbf, 0x3b, 0x30, 0x52, 0xe8, 0x70, 0x1f, 0xf2, 0x5f, 0x14, 0x7e, 0x29, 0xc0, 0x90, 0xfc, ++ 0x90, 0x72, 0x8e, 0x4e, 0x44, 0x92, 0xa6, 0x15, 0x23, 0xfd, 0xd5, 0xc2, 0x22, 0xfb, 0x29, 0x47, ++ 0x7a, 0x38, 0x80, 0x0f, 0x59, 0xd5, 0x1b, 0x1a, 0x7b, 0x0e, 0x95, 0x20, 0xcd, 0x3c, 0x2d, 0x40, ++ 0x3a, 0xc7, 0x0f, 0xad, 0xbe, 0xeb, 0x43, 0xaf, 0xd6, 0x41, 0x0d, 0x73, 0x5f, 0xf1, 0xc5, 0xe6, ++ 0x35, 0xda, 0x88, 0x63, 0x08, 0xfc, 0xe7, 0x53, 0x81, 0xd7, 0xb8, 0x22, 0x04, 0x4f, 0xea, 0x44, ++ 0x34, 0xb2, 0x91, 0x3b, 0x58, 0x2b, 0xde, 0x28, 0xc2, 0xcd, 0x82, 0xb5, 0x2c, 0xec, 0xa1, 0xa9, ++ 0x9f, 0x6f, 0x09, 0x80, 0xf2, 0x85, 0x02, 0xe9, 0x74, 0x6b, 0x60, 0x93, 0x79, 0x45, 0x06, 0xe5, ++ 0xb7, 0x37, 0x67, 0x54, 0xa5, 0xed, 0x25, 0x0c, 0x9e, 0x7d, 0x3f, 0x69, 0xb3, 0x93, 0x6f, 0xd2, ++ 0xf8, 0xd5, 0x6f, 0x38, 0xf4, 0xc4, 0xd9, 0x45, 0x64, 0xa4, 0x12, 0x6b, 0x7a, 0xe0, 0xa8, 0xd6, ++ 0x4f, 0xe2, 0x08, 0x6c, 0x51, 0x29, 0xfc, 0x49, 0xfa, 0xd9, 0x2d, 0x02, 0xc9, 0x73, 0xc7, 0x04, ++ 0x6b, 0x1f, 0xca, 0x9e, 0x40, 0xec, 0x34, 0xdd, 0x82, 0x77, 0x89, 0xd3, 0x20, 0x3d, 0x5c, 0x65, ++ 0x83, 0x85, 0xf6, 0x6f, 0xfd, 0xc6, 0xfb, 0x24, 0x5c, 0xb0, 0xbd, 0xdc, 0x9f, 0x7f, 0xce, 0x7b, ++ 0x5f, 0xad, 0x5b, 0xa5, 0x18, 0xc7, 0xea, 0xf5, 0x40, 0xba, 0x0b, 0x66, 0x0c, 0xd1, 0xfd, 0xcc, ++ 0xa7, 0x78, 0x34, 0x9d, 0xec, 0x03, 0x33, 0xb0, 0x24, 0x1e, 0x19, 0x0d, 0x76, 0x31, 0x55, 0x1a, ++ 0x1e, 0x3a, 0xcd, 0x5f, 0xaf, 0x2e, 0x8b, 0x3b, 0xae, 0xef, 0xa9, 0xa2, 0xb6, 0xbf, 0x5e, 0x87, ++ 0x10, 0x4f, 0x53, 0xc9, 0x49, 0xee, 0x16, 0xbc, 0xba, 0x63, 0x26, 0x64, 0xc5, 0xa2, 0x3a, 0xc8, ++ 0xc3, 0x7a, 0x79, 0xcd, 0x1a, 0xf8, 0xa3, 0x91, 0xf1, 0xff, 0x25, 0x8f, 0x0d, 0xb2, 0x26, 0xdd, ++ 0x78, 0xe8, 0xb2, 0xbf, 0xf9, 0xb8, 0x69, 0xec, 0xfd, 0x3a, 0xe1, 0xcd, 0x9d, 0xb9, 0xbb, 0x59, ++ 0x2d, 0x53, 0x13, 0x2f, 0x84, 0x65, 0xfa, 0xb1, 0x66, 0x64, 0x8d, 0x74, 0x42, 0xbc, 0xcd, 0xe8, ++ 0x77, 0xf5, 0x35, 0x71, 0x4f, 0xaf, 0xcd, 0x10, 0xaa, 0xac, 0x54, 0x9c, 0xc6, 0x07, 0x94, 0xfb, ++ 0xe3, 0xe4, 0xdf, 0x9c, 0x88, 0xe7, 0x8f, 0x2a, 0x46, 0x39, 0x69, 0x47, 0x44, 0x35, 0x52, 0x8e, ++ 0x80, 0x3d, 0xdd, 0x87, 0x0d, 0x7c, 0xb0, 0xa9, 0x99, 0x9e, 0xf3, 0xa6, 0xe7, 0x59, 0x13, 0x8f, ++ }, ++ { /* 6 */ ++ 0xa2, 0xc8, 0x81, 0xe2, 0x3b, 0xb3, 0xc2, 0x65, 0xc5, 0x23, 0x88, 0xa8, 0x4b, 0xa0, 0x07, 0xfc, ++ 0x7e, 0x5e, 0xba, 0x73, 0x1f, 0x4c, 0x94, 0x8f, 0x72, 0xc4, 0x53, 0xb4, 0x67, 0xfd, 0xe6, 0xee, ++ 0x65, 0xcf, 0x9b, 0x0b, 0x79, 0xd8, 0x3c, 0xc1, 0x2a, 0xfe, 0xa1, 0x96, 0xda, 0xeb, 0x16, 0xdd, ++ 0x09, 0xce, 0x1f, 0x28, 0x22, 0xcd, 0xd9, 0x3a, 0x89, 0x16, 0xef, 0x1e, 0x6b, 0xb3, 0x50, 0x11, ++ 0xb9, 0x59, 0xa0, 0x9a, 0x5d, 0x27, 0x6a, 0x2b, 0x9d, 0x19, 0x7a, 0x8a, 0xf6, 0xb6, 0xf7, 0xcf, ++ 0xaa, 0x23, 0xa2, 0x8f, 0xdc, 0xda, 0x7c, 0x18, 0xa1, 0x08, 0x06, 0xf5, 0x92, 0xb9, 0xdd, 0x6e, ++ 0x3c, 0x40, 0x19, 0x17, 0x62, 0x09, 0xe3, 0x6f, 0xcd, 0x25, 0x6b, 0x9f, 0xc7, 0xa2, 0x2e, 0x31, ++ 0x92, 0xf7, 0x4b, 0x4f, 0x2c, 0x06, 0xc0, 0xa8, 0x5e, 0xd9, 0x2a, 0xa5, 0xd8, 0xf6, 0x9e, 0x16, ++ 0x39, 0xf1, 0xd5, 0x85, 0x35, 0x78, 0xdb, 0xf7, 0x12, 0xec, 0x4d, 0x13, 0xf8, 0xe5, 0xc9, 0xfb, ++ 0xf0, 0xc3, 0x64, 0x5c, 0x4b, 0x24, 0x0a, 0x7f, 0xb2, 0x94, 0x6f, 0x39, 0x9a, 0xcd, 0xb8, 0xc4, ++ 0xcb, 0x78, 0xc9, 0x53, 0x37, 0xd7, 0x1f, 0x06, 0xb9, 0x02, 0xe0, 0xac, 0xc5, 0xbf, 0xa6, 0xfa, ++ 0xfe, 0xf6, 0xcf, 0x6c, 0x77, 0x13, 0x25, 0x53, 0xfd, 0x31, 0x64, 0x2d, 0x69, 0xae, 0xd8, 0xda, ++ 0xe0, 0xd6, 0x22, 0x86, 0x46, 0xf6, 0xb5, 0x85, 0x7a, 0xc2, 0xb0, 0x83, 0xeb, 0xff, 0xcf, 0x23, ++ 0x02, 0x4a, 0x78, 0x8a, 0x49, 0x8b, 0xce, 0x8e, 0x19, 0x7a, 0xc2, 0x86, 0xa7, 0x97, 0xd7, 0xc5, ++ 0x4e, 0x61, 0x70, 0xde, 0x08, 0xf9, 0x96, 0x42, 0xe9, 0x3e, 0xf1, 0xb9, 0xf4, 0xab, 0x7f, 0x04, ++ 0x4a, 0xf5, 0x80, 0x09, 0x9a, 0x2c, 0xc9, 0x9d, 0xdb, 0xca, 0xb6, 0x76, 0x79, 0x46, 0x12, 0x4d, ++ 0xe5, 0x67, 0xee, 0x14, 0x11, 0x87, 0x8d, 0x1d, 0xa5, 0x0b, 0x96, 0x0f, 0xd4, 0xb8, 0x28, 0xe9, ++ 0x3f, 0x2f, 0x5d, 0xd8, 0xee, 0x26, 0x4a, 0xa6, 0x39, 0x62, 0xc8, 0x5a, 0xd2, 0x9f, 0x73, 0x77, ++ 0x70, 0x6b, 0x11, 0x43, 0x23, 0x7b, 0xbb, 0xa3, 0x3d, 0x61, 0x58, 0xa0, 0x94, 0x9e, 0x86, 0xf0, ++ 0x0c, 0x7f, 0xd3, 0xba, 0x75, 0xbc, 0xe1, 0xa2, 0x56, 0xdf, 0xc9, 0x92, 0x54, 0xf4, 0xb7, 0xdb, ++ 0xfa, 0x62, 0x3f, 0xbb, 0xe5, 0xc6, 0x7a, 0x8c, 0xcf, 0xc5, 0x23, 0xe2, 0xe4, 0x43, 0xb5, 0x93, ++ 0xc0, 0xfc, 0xae, 0xf1, 0x5c, 0x91, 0x08, 0xb2, 0x29, 0x6e, 0xcd, 0x34, 0x09, 0x9b, 0x21, 0x2e, ++ 0x41, 0x71, 0xe7, 0xab, 0xf1, 0x6a, 0xde, 0x29, 0x4b, 0xa6, 0x9b, 0xee, 0xb5, 0x62, 0x95, 0x99, ++ 0xa1, 0xa7, 0xc5, 0x2d, 0xb7, 0x9c, 0x6b, 0xac, 0x31, 0x64, 0x2b, 0x6d, 0x5e, 0x9d, 0x5a, 0xba, ++ 0x60, 0x7e, 0x57, 0x99, 0x2e, 0xa9, 0x04, 0x59, 0xf5, 0x37, 0x87, 0x1a, 0xe5, 0xac, 0xf1, 0x17, ++ 0xa7, 0x79, 0x4d, 0x70, 0x6c, 0xc2, 0xfa, 0xfd, 0x1a, 0xea, 0xae, 0x24, 0x74, 0xe7, 0xe0, 0x36, ++ 0x82, 0xe2, 0x0d, 0x95, 0x21, 0xd4, 0x7f, 0x52, 0x96, 0x8f, 0xf5, 0x1f, 0xa9, 0xc4, 0xe9, 0xf1, ++ 0x53, 0x2e, 0xd9, 0xfb, 0xb5, 0x33, 0xaf, 0x5d, 0x9a, 0x8a, 0x86, 0xd2, 0x63, 0xc7, 0x35, 0xbb, ++ 0xb5, 0x26, 0x73, 0x20, 0x28, 0x9b, 0x8b, 0x89, 0xcb, 0xc6, 0xb3, 0x18, 0xa2, 0x42, 0x40, 0x14, ++ 0x9e, 0x88, 0x98, 0xf5, 0x59, 0xba, 0x21, 0x0a, 0x08, 0x06, 0xe3, 0x37, 0x8c, 0x02, 0x29, 0xcd, ++ 0x96, 0x63, 0xbb, 0x98, 0xbe, 0xd3, 0x9f, 0x77, 0x6c, 0x2d, 0x6d, 0x6a, 0x55, 0x1b, 0xf3, 0x5f, ++ 0x4c, 0x2b, 0x08, 0x54, 0x41, 0x72, 0x58, 0xcc, 0xf0, 0x44, 0x33, 0x3f, 0x53, 0x3c, 0xa8, 0xc1, ++ 0x1e, 0x20, 0xed, 0xea, 0x31, 0xe5, 0x90, 0xd6, 0x87, 0xf3, 0xd4, 0xae, 0x82, 0x51, 0x17, 0xf9, ++ 0x67, 0x85, 0xe3, 0x81, 0x30, 0x53, 0xf2, 0x4f, 0x33, 0x84, 0x63, 0x10, 0x7d, 0x7c, 0xc1, 0x18, ++ 0xe3, 0xb9, 0x66, 0x49, 0xca, 0xd9, 0x1c, 0x4c, 0x8e, 0x85, 0x13, 0x46, 0xfe, 0xc2, 0x92, 0x65, ++ 0x2a, 0x8b, 0xd7, 0x90, 0xb4, 0x85, 0xcd, 0xc4, 0x2e, 0xfd, 0x31, 0x6c, 0x9c, 0xea, 0xe3, 0x5a, ++ 0xac, 0xfd, 0x2a, 0xd2, 0x07, 0x84, 0xed, 0x49, 0x8a, 0x86, 0x83, 0xbc, 0xb8, 0xc3, 0x67, 0xe2, ++ 0x43, 0x3b, 0x9f, 0x21, 0xb8, 0xe1, 0x10, 0xa7, 0x52, 0xdc, 0x59, 0x68, 0x12, 0xf5, 0x42, 0x5c, ++ 0x8c, 0xd7, 0xa6, 0xa5, 0x1d, 0xe3, 0x50, 0x7e, 0xd9, 0x2a, 0xfe, 0x0b, 0x5a, 0xa7, 0x89, 0xef, ++ 0xc7, 0x07, 0x1a, 0xe9, 0x42, 0x6b, 0xfe, 0xa4, 0xef, 0xdd, 0x29, 0x3e, 0x91, 0x4b, 0x11, 0x21, ++ 0x26, 0xf4, 0x04, 0x2a, 0xc1, 0x39, 0x2c, 0x66, 0x78, 0x22, 0xf8, 0xfe, 0xc8, 0x1e, 0x54, 0x81, ++ 0x29, 0xe4, 0x93, 0x5f, 0x38, 0xaa, 0x64, 0x0d, 0xda, 0xba, 0x92, 0xa9, 0x89, 0xd7, 0xbe, 0x1c, ++ 0x1c, 0x6a, 0x95, 0x60, 0x78, 0x6e, 0x5e, 0x58, 0x9e, 0x89, 0x16, 0x28, 0x25, 0xc6, 0xc0, 0x3c, ++ 0x4d, 0x0e, 0x34, 0x11, 0x84, 0xd6, 0x3f, 0x8b, 0x1d, 0x79, 0x52, 0x7c, 0xe1, 0x96, 0x22, 0x42, ++ 0x9d, 0xe7, 0xdc, 0x3a, 0xd5, 0x95, 0x88, 0xc3, 0xfc, 0x41, 0x40, 0xf2, 0x99, 0x3f, 0x74, 0x8b, ++ 0xf2, 0x89, 0x1c, 0xd6, 0x02, 0xaf, 0xc4, 0xf1, 0xab, 0xee, 0xad, 0xbf, 0x3d, 0x5a, 0x6f, 0x01, ++ 0x21, 0x0f, 0xb0, 0x32, 0xdf, 0xc3, 0xda, 0x70, 0xbe, 0x91, 0x1c, 0xf4, 0x50, 0xce, 0x64, 0x8e, ++ 0x6d, 0x24, 0xb8, 0x66, 0x9e, 0xb1, 0x82, 0xbc, 0x4e, 0xd5, 0x2f, 0xcb, 0x03, 0xf2, 0xcc, 0x4f, ++ 0xbc, 0xe8, 0x6c, 0x08, 0x0a, 0x56, 0x52, 0xb3, 0x42, 0xd0, 0x5c, 0x06, 0xc9, 0xf1, 0x10, 0x05, ++ 0x9a, 0x1c, 0x68, 0x22, 0xcb, 0x6f, 0x7e, 0xd5, 0x3a, 0xf2, 0xa4, 0xf8, 0x01, 0xef, 0x44, 0x84, ++ 0x27, 0xd1, 0x38, 0x6f, 0x04, 0x9d, 0x4b, 0x21, 0x95, 0x1f, 0x99, 0xbd, 0x7a, 0xb4, 0xde, 0x02, ++ 0x14, 0x81, 0xb6, 0x0d, 0x9f, 0x07, 0xe0, 0x25, 0xfa, 0xa2, 0x98, 0x75, 0xfc, 0xdf, 0x1a, 0xae, ++ 0x5e, 0x74, 0x36, 0x04, 0x05, 0x2b, 0x29, 0xb8, 0x21, 0x68, 0x2e, 0x03, 0x85, 0x99, 0x08, 0xe3, ++ 0xe4, 0x42, 0xd2, 0x51, 0xd4, 0x23, 0xea, 0x5a, 0x48, 0x36, 0xf7, 0x4c, 0x66, 0x12, 0xa2, 0x6a, ++ 0xd3, 0x86, 0xac, 0xe4, 0xdd, 0x6c, 0x1e, 0x81, 0x15, 0x7f, 0xb1, 0x4b, 0x6d, 0x94, 0x0b, 0x8f, ++ 0xe1, 0xf3, 0x1e, 0xc3, 0x83, 0x52, 0xd2, 0xc2, 0x97, 0xff, 0xd1, 0xc0, 0x59, 0x55, 0x45, 0xa0, ++ 0x69, 0xb0, 0x48, 0xb1, 0x0c, 0x64, 0xdd, 0x63, 0x7c, 0x21, 0x68, 0x04, 0x8e, 0x1f, 0xa1, 0x06, ++ 0x49, 0x9a, 0xc4, 0xc6, 0x16, 0x03, 0x60, 0x54, 0x2f, 0x8d, 0x15, 0xb3, 0x6c, 0x7b, 0x4f, 0x0b, ++ 0xab, 0x06, 0x9e, 0xca, 0x19, 0x7e, 0x1b, 0x5f, 0x4c, 0x35, 0x67, 0xb6, 0x20, 0x13, 0x57, 0xed, ++ 0xb3, 0xf8, 0xfb, 0x7d, 0xf3, 0xc5, 0x1a, 0xd8, 0xe0, 0x48, 0x36, 0x51, 0x88, 0x38, 0xfa, 0x98, ++ 0xa3, 0xed, 0xbd, 0xa7, 0xfe, 0x17, 0xa5, 0x22, 0x28, 0x1e, 0xe9, 0xeb, 0xf9, 0x0a, 0x8d, 0x7f, ++ 0x0b, 0x84, 0x67, 0xa2, 0x6b, 0x46, 0x17, 0xb4, 0x90, 0x6c, 0x2d, 0x98, 0xcc, 0x24, 0x87, 0xd4, ++ 0x90, 0xbd, 0x33, 0xc5, 0x65, 0x8d, 0x0e, 0x26, 0x47, 0xa3, 0xe8, 0x23, 0x7f, 0x61, 0x49, 0xd3, ++ 0xfc, 0xbc, 0xb7, 0xe6, 0x3e, 0x98, 0xeb, 0xdd, 0xe4, 0x4b, 0xa6, 0xab, 0xce, 0x39, 0x0f, 0x1f, ++ 0xc2, 0xb6, 0xd6, 0x7b, 0x15, 0x1a, 0xc6, 0x3c, 0x30, 0x14, 0x0f, 0xb2, 0xae, 0x0c, 0xf6, 0xeb, ++ 0x80, 0xa8, 0x75, 0x1f, 0x68, 0x5f, 0xb1, 0xdc, 0x8f, 0xf5, 0x37, 0x99, 0x0e, 0x53, 0x3e, 0x34, ++ 0xe7, 0x2d, 0x96, 0x9e, 0x58, 0x0c, 0x43, 0x93, 0xbc, 0x71, 0x54, 0x89, 0x73, 0x2f, 0xff, 0x2c, ++ 0x63, 0x11, 0x13, 0x56, 0xa2, 0x86, 0xad, 0x90, 0x01, 0x70, 0x24, 0xdf, 0xf0, 0x91, 0xac, 0x51, ++ 0x30, 0x3f, 0xca, 0xad, 0x17, 0xb5, 0x02, 0xcd, 0x9b, 0xfa, 0xa2, 0x0d, 0x93, 0x56, 0x99, 0xea, ++ 0x22, 0x60, 0xf4, 0xfd, 0x53, 0xec, 0x73, 0xb9, 0x4a, 0xd6, 0xbf, 0x31, 0x45, 0xf3, 0x39, 0xc8, ++ 0xf6, 0x1d, 0xec, 0x01, 0x90, 0x7a, 0x9b, 0x2e, 0x99, 0x1a, 0xea, 0x70, 0xb0, 0xb7, 0x02, 0x48, ++ 0xa8, 0x69, 0xda, 0x05, 0x95, 0x51, 0xb2, 0x96, 0xb8, 0x72, 0xc4, 0x73, 0x35, 0x2e, 0x0a, 0xab, ++ 0x57, 0xba, 0x29, 0x2c, 0x27, 0xe6, 0xf0, 0x82, 0xa8, 0x7e, 0xc1, 0x1d, 0xee, 0x2a, 0x58, 0xf2, ++ 0x8e, 0x9d, 0xde, 0x2f, 0x54, 0x68, 0x9e, 0xf0, 0xc0, 0x50, 0x3c, 0x8d, 0xfd, 0x30, 0x5e, 0x2a, ++ 0xc3, 0x93, 0xea, 0x3e, 0xd0, 0xbe, 0xa1, 0x7b, 0xdd, 0x29, 0x6e, 0xf1, 0x1c, 0xa6, 0x7c, 0x68, ++ 0xc6, 0x22, 0x26, 0xac, 0x87, 0xcf, 0x99, 0xe3, 0x02, 0xe0, 0x48, 0x7d, 0x23, 0xe1, 0x9b, 0xa2, ++ 0x50, 0x41, 0x9d, 0x34, 0x39, 0x1c, 0x06, 0x94, 0x6e, 0xcd, 0x25, 0x17, 0x76, 0xfa, 0x68, 0xfd, ++ 0x75, 0xda, 0xdd, 0xd1, 0x74, 0x0a, 0x83, 0x3b, 0xe2, 0xa8, 0x7e, 0x2c, 0xab, 0xd9, 0x61, 0x3a, ++ 0x4b, 0xd0, 0xbc, 0x4c, 0x5f, 0x88, 0xae, 0xda, 0x36, 0xf7, 0xd7, 0x35, 0xcb, 0xec, 0x98, 0xce, ++ 0x6c, 0x01, 0x84, 0x23, 0x5b, 0x15, 0xe5, 0xfb, 0xa3, 0xe8, 0x4e, 0x88, 0xb1, 0x58, 0x46, 0xcc, ++ 0xa6, 0x5c, 0x71, 0x35, 0xa9, 0x66, 0x9d, 0xba, 0xf7, 0xd7, 0xcf, 0x67, 0xc6, 0x4d, 0x6a, 0xb5, ++ 0xa4, 0x16, 0x09, 0xbf, 0xe0, 0xed, 0x53, 0x34, 0xee, 0xad, 0x0d, 0xe1, 0x61, 0xda, 0xbd, 0x70, ++ 0xf5, 0x72, 0xa8, 0xce, 0x1c, 0x55, 0x32, 0xe7, 0x6d, 0x5d, 0x49, 0xb5, 0xa5, 0x8a, 0x5f, 0x0e, ++ 0xf8, 0x28, 0x47, 0x31, 0xac, 0x4d, 0xb4, 0x02, 0xd6, 0xbf, 0xe1, 0x64, 0x43, 0xd4, 0x62, 0x56, ++ 0x9c, 0xc2, 0xe0, 0x7f, 0x10, 0x31, 0xef, 0x84, 0x11, 0x7c, 0x21, 0xb1, 0x2b, 0x95, 0xfe, 0x08, ++ 0xd2, 0xa3, 0x90, 0xa1, 0x18, 0xc8, 0x79, 0xc6, 0xf8, 0x42, 0xd0, 0x08, 0xdf, 0x3e, 0x81, 0x0c, ++ 0xcd, 0xa6, 0x41, 0x0e, 0xec, 0x89, 0x8e, 0x57, 0x92, 0x8c, 0x65, 0xe5, 0xef, 0xc5, 0x1c, 0x76, ++ 0xdc, 0x96, 0x3b, 0x91, 0x24, 0xff, 0x56, 0xea, 0xb7, 0xe7, 0xdb, 0x1c, 0x2c, 0x5d, 0xe1, 0x12, ++ 0x1d, 0x4f, 0xa9, 0x25, 0xbd, 0xca, 0x39, 0x1f, 0x73, 0xb4, 0x77, 0x6b, 0x97, 0x6c, 0x4a, 0xbf, ++ 0x83, 0xc7, 0x31, 0xd0, 0xe4, 0x70, 0x18, 0x15, 0x7b, 0xb2, 0x94, 0x5c, 0x1b, 0x6e, 0x63, 0x72, ++ 0x2e, 0x1f, 0x27, 0x47, 0x26, 0x50, 0x92, 0x1b, 0x1c, 0x09, 0x76, 0xa3, 0x11, 0x07, 0x8e, 0x13, ++ 0xf1, 0xe6, 0x58, 0x19, 0x8e, 0x80, 0x6d, 0x38, 0x5f, 0xa9, 0x0e, 0x7a, 0x28, 0x67, 0x32, 0x47, ++ 0xfd, 0x99, 0x8b, 0xa3, 0xfb, 0x3c, 0x8c, 0x9a, 0x09, 0x76, 0xc7, 0xe8, 0x7c, 0x93, 0x85, 0x9c, ++ 0x81, 0x8d, 0x49, 0x5a, 0xad, 0xfb, 0xd6, 0x9b, 0x62, 0xc8, 0x56, 0xda, 0xbc, 0xf9, 0xb4, 0xb7, ++ 0xb1, 0xb2, 0x83, 0xf7, 0xba, 0x4e, 0xd4, 0x56, 0xf9, 0x32, 0xf4, 0xd7, 0x2f, 0xaf, 0x2d, 0x5d, ++ 0x4f, 0x44, 0x4c, 0x9b, 0xcd, 0x5d, 0xf1, 0x05, 0x04, 0x03, 0x90, 0xfa, 0x46, 0x01, 0xf5, 0x87, ++ 0x47, 0xaf, 0x6f, 0xf6, 0x2a, 0x34, 0x4f, 0x78, 0x60, 0x28, 0x1e, 0xa7, 0x9f, 0x18, 0x2f, 0x15, ++ 0x13, 0x7a, 0x02, 0x15, 0x81, 0xfd, 0x16, 0x33, 0x3c, 0x11, 0x7c, 0x7f, 0x64, 0x0f, 0x2a, 0xa1, ++ 0x46, 0x8a, 0x53, 0xb3, 0xef, 0x90, 0x28, 0x3f, 0x8d, 0x15, 0x7f, 0xe4, 0x2d, 0xb2, 0xa5, 0x96, ++ 0x5b, 0xc5, 0xfa, 0x96, 0x52, 0x5a, 0x11, 0x20, 0xfe, 0xa1, 0x08, 0x8f, 0xba, 0xde, 0xef, 0x29, ++ 0xfb, 0x47, 0x03, 0xfe, 0x20, 0x62, 0x1d, 0xcb, 0x22, 0xf8, 0x42, 0xa1, 0x56, 0xe9, 0x3f, 0x10, ++ 0xed, 0x8c, 0xcd, 0x79, 0xf6, 0xee, 0x33, 0x60, 0xc1, 0x20, 0x18, 0x52, 0x0d, 0xa1, 0xf2, 0x7b, ++ 0x94, 0x29, 0xc3, 0x12, 0xf7, 0x58, 0x51, 0xf9, 0x75, 0x57, 0xaf, 0xec, 0xf2, 0x8c, 0x24, 0x9a, ++ 0x25, 0x9b, 0x40, 0xe5, 0x4d, 0x16, 0x85, 0xaf, 0x8c, 0x65, 0x5b, 0x3b, 0xdd, 0x23, 0x09, 0xc7, ++ 0xa5, 0x33, 0x35, 0xfa, 0x25, 0x49, 0x34, 0x73, 0x03, 0x90, 0x6c, 0xa2, 0xd3, 0x70, 0x37, 0xf3, ++ 0xdd, 0xb3, 0x07, 0xd4, 0xe1, 0x5b, 0x31, 0xad, 0x5a, 0xda, 0xba, 0x5f, 0x9e, 0xf7, 0x6b, 0x91, ++ 0x38, 0xd4, 0xe9, 0xc0, 0xf0, 0xdc, 0xbc, 0xb0, 0xff, 0xd1, 0x2c, 0x50, 0x4a, 0x4f, 0x43, 0x78, ++ 0x58, 0xaa, 0xbe, 0x59, 0xde, 0x75, 0xb8, 0xe9, 0x0a, 0xe6, 0xab, 0x4a, 0xaf, 0xe3, 0xb2, 0x6f, ++ 0x0f, 0x10, 0x97, 0x75, 0xf9, 0x93, 0x48, 0x6b, 0xa2, 0x98, 0x6a, 0x57, 0x41, 0xc9, 0xea, 0x9d, ++ 0xda, 0x48, 0xb3, 0xcc, 0xff, 0xa1, 0xc7, 0xbb, 0x9c, 0x69, 0x5e, 0x55, 0x06, 0x27, 0x5b, 0x9e, ++ 0x3d, 0x65, 0x25, 0x52, 0xa7, 0xad, 0x84, 0x28, 0x20, 0x18, 0x0a, 0xdc, 0x75, 0x08, 0xa4, 0xb2, ++ 0xe8, 0x3d, 0x01, 0xeb, 0xa1, 0x9f, 0x0b, 0xf8, 0x1e, 0xe9, 0x3e, 0xde, 0x32, 0xe6, 0x15, 0xb1, ++ 0xe9, 0x18, 0x3d, 0xae, 0x64, 0x3b, 0x6c, 0xbf, 0xf3, 0xd4, 0x5f, 0x9d, 0x80, 0x4c, 0x9f, 0x32, ++ 0x18, 0xfe, 0x65, 0xb7, 0xea, 0xbb, 0x01, 0x87, 0xac, 0x7d, 0x51, 0xe7, 0xa8, 0x2b, 0xad, 0x75, ++ 0x95, 0x0c, 0xff, 0x57, 0x32, 0xfc, 0x36, 0xbe, 0x98, 0x6a, 0xce, 0xaf, 0x40, 0x26, 0xae, 0x19, ++ 0xee, 0xe3, 0x89, 0xb6, 0x7a, 0xc1, 0x9a, 0xa9, 0x35, 0x67, 0xbb, 0x97, 0x18, 0x9c, 0xaf, 0x3d, ++ 0x77, 0x90, 0xa5, 0x5b, 0x3d, 0x81, 0x4d, 0xb5, 0xfb, 0xd2, 0xbc, 0xaa, 0x0c, 0x4e, 0xb6, 0xff, ++ 0x72, 0x21, 0x69, 0xc9, 0x6a, 0xf0, 0x75, 0x2d, 0x24, 0x1b, 0x9a, 0x26, 0x33, 0x09, 0x51, 0x35, ++ 0x6f, 0x6e, 0xc0, 0xec, 0xd7, 0x3a, 0x4c, 0x32, 0x57, 0xaf, 0xed, 0x4d, 0xa4, 0x65, 0x1b, 0x8a, ++ 0x51, 0x64, 0xa1, 0x71, 0xfc, 0xb8, 0x61, 0xd3, 0x83, 0xf0, 0x44, 0x54, 0xc4, 0x50, 0xe2, 0x7e, ++ 0x7f, 0x7b, 0x86, 0x36, 0xda, 0xe8, 0xf3, 0xc8, 0x9f, 0xf9, 0x32, 0xf7, 0xd5, 0x57, 0x6c, 0x6d, ++ 0xdf, 0xf9, 0x7f, 0x5e, 0xa8, 0xd0, 0xff, 0x23, 0x43, 0xa0, 0x78, 0xd9, 0x39, 0x60, 0xbc, 0x54, ++ 0xd7, 0x12, 0x5c, 0x33, 0x4f, 0xb9, 0x41, 0x5e, 0x27, 0x8b, 0xf6, 0x84, 0xe0, 0x79, 0x66, 0xc6, ++ 0xd4, 0x7d, 0x18, 0xfc, 0xc3, 0x96, 0xe8, 0x97, 0xd3, 0xcc, 0x55, 0x41, 0xf5, 0x44, 0x3b, 0x80, ++ 0x6b, 0xfa, 0x30, 0x3b, 0x45, 0xef, 0x13, 0xed, 0x65, 0x5b, 0xaa, 0x82, 0x29, 0x88, 0x76, 0xc3, ++ 0x3a, 0x9e, 0x91, 0x4a, 0xb9, 0x57, 0x72, 0x3e, 0xe6, 0xab, 0xee, 0xd6, 0xed, 0xd8, 0x94, 0xbd, ++ 0x20, 0x2a, 0x8c, 0x77, 0x1a, 0x67, 0xbd, 0x37, 0x53, 0xac, 0x7d, 0xb7, 0xe2, 0x64, 0xee, 0x0d, ++ 0x0a, 0xa1, 0x5b, 0xe7, 0xae, 0xe2, 0x70, 0xf3, 0x7d, 0x51, 0x4c, 0xdb, 0x7e, 0x8e, 0x0d, 0x57, ++ 0x42, 0x1e, 0xa3, 0x64, 0x7d, 0x45, 0x77, 0xe0, 0xbf, 0xe1, 0x38, 0x2b, 0xa0, 0x5f, 0xc8, 0xdf, ++ 0xcc, 0x83, 0x7d, 0x4b, 0x29, 0x2d, 0xe9, 0x10, 0x7f, 0xb1, 0x04, 0xa6, 0x5d, 0x6f, 0x96, 0xf5, ++ 0x7b, 0xef, 0x76, 0xe1, 0x48, 0x3d, 0xac, 0x17, 0xad, 0x0d, 0x75, 0x38, 0x58, 0xba, 0x01, 0x24, ++ 0x8f, 0xb8, 0xe2, 0x6a, 0x91, 0xcc, 0xf9, 0xb7, 0x2d, 0x6d, 0x5d, 0xce, 0x4f, 0x9a, 0xd4, 0xa9, ++ 0x3b, 0xbb, 0xad, 0x0f, 0x7c, 0xf3, 0x15, 0x79, 0x0b, 0x96, 0x8f, 0x95, 0x5f, 0x72, 0x1e, 0x3e, ++ 0x7d, 0x31, 0xfe, 0xbc, 0x93, 0x63, 0x3d, 0x46, 0x86, 0x83, 0xf0, 0x71, 0x72, 0xc0, 0xbb, 0xa8, ++ 0xbf, 0x87, 0x28, 0xc7, 0x86, 0x79, 0xfb, 0x7a, 0xb6, 0x97, 0xff, 0xc3, 0xdc, 0xcc, 0x4d, 0x43, ++ 0xd0, 0xe9, 0xe8, 0x2b, 0x51, 0x43, 0xb7, 0x48, 0xe1, 0x38, 0x12, 0x8e, 0x78, 0xa9, 0x56, 0xc9, ++ 0xde, 0xdc, 0x43, 0x1b, 0x6d, 0x74, 0x98, 0x64, 0xae, 0x9d, 0x19, 0x9a, 0x8b, 0xca, 0x36, 0xd7, ++ 0xca, 0x5d, 0xf5, 0x16, 0xf2, 0x73, 0x78, 0x41, 0x54, 0x3f, 0x81, 0xef, 0x77, 0x15, 0x2c, 0x79, ++ 0x2c, 0x55, 0x5f, 0xcd, 0x6f, 0xdb, 0x5c, 0x95, 0x05, 0x73, 0xb4, 0x25, 0xb6, 0x90, 0x59, 0xd6, ++ 0x19, 0xdb, 0x59, 0xf2, 0x2f, 0x1f, 0x66, 0xc0, 0x41, 0x40, 0x30, 0xa4, 0x1a, 0x81, 0x27, 0xf6, ++ 0x76, 0xb5, 0x99, 0x1e, 0xf8, 0x25, 0x2a, 0xf2, 0x16, 0xef, 0xdd, 0xe9, 0xbe, 0xe4, 0x3c, 0x7c, ++ 0x12, 0x5f, 0x3e, 0x50, 0x44, 0x59, 0x71, 0x74, 0xd1, 0x2c, 0x1d, 0x3c, 0xd6, 0xa5, 0xa0, 0x22, ++ 0x74, 0xff, 0xe1, 0x94, 0xb1, 0xae, 0xe4, 0x7c, 0x0f, 0x95, 0x1f, 0x6f, 0x19, 0x73, 0xeb, 0xb9, ++ 0xd5, 0x58, 0x24, 0xb9, 0x06, 0x32, 0x8f, 0xd0, 0x3e, 0xf1, 0x34, 0x02, 0x47, 0xee, 0xb1, 0x03, ++ 0x8b, 0x2c, 0x12, 0xbd, 0x03, 0x19, 0xa6, 0x68, 0x1f, 0x99, 0x1a, 0x01, 0xc2, 0x77, 0xb9, 0xe0, ++ 0x07, 0xfb, 0xb4, 0x18, 0x1e, 0xfa, 0xf6, 0x16, 0xc6, 0xb3, 0xe4, 0x0a, 0x98, 0xd0, 0x30, 0x0f, ++ 0x59, 0x8f, 0x82, 0x1c, 0x1b, 0xd1, 0xdf, 0xae, 0xe7, 0xdb, 0xca, 0x09, 0x1d, 0x49, 0x38, 0xec, ++ 0xb0, 0x97, 0xbf, 0xb2, 0x7f, 0xea, 0xb3, 0x11, 0x14, 0x0f, 0x95, 0x94, 0x9d, 0x05, 0xa7, 0xde, ++ 0x1f, 0x05, 0xd1, 0xaf, 0xf4, 0x41, 0xf7, 0x91, 0x6a, 0xce, 0xb5, 0xed, 0x30, 0xfb, 0x9d, 0x7a, ++ 0x61, 0x5b, 0x6b, 0xdc, 0xeb, 0x0d, 0x63, 0x1e, 0x18, 0x0a, 0xe6, 0x59, 0x57, 0x06, 0x7b, 0x94, ++ 0x1a, 0xb4, 0x1d, 0x3d, 0xa3, 0x30, 0xcf, 0x09, 0xb5, 0x07, 0x93, 0x61, 0x0f, 0xbc, 0x7a, 0xb0, ++ 0xc8, 0x17, 0x8d, 0x9c, 0xbb, 0xf8, 0xb6, 0xcf, 0x4d, 0x45, 0x43, 0x69, 0xd0, 0x82, 0xfb, 0xbc, ++ 0x97, 0x46, 0x87, 0xdd, 0x7b, 0x77, 0xf8, 0x30, 0x81, 0x10, 0x0c, 0x29, 0xe7, 0xb1, 0x79, 0xdc, ++ 0x17, 0xee, 0xf2, 0xc2, 0x13, 0x28, 0x49, 0xec, 0x0e, 0xe5, 0x3b, 0xb0, 0xe9, 0xe2, 0x47, 0xe8, ++ 0xa9, 0x4c, 0xe6, 0x40, 0x50, 0xf5, 0xd5, 0xd1, 0x55, 0x4f, 0xa5, 0x30, 0x87, 0x84, 0x80, 0x28, ++ 0x91, 0x98, 0x0f, 0x80, 0xa0, 0x29, 0x69, 0x61, 0xaa, 0x9e, 0x89, 0x60, 0xcd, 0xcb, 0xc3, 0x50, ++ 0x9f, 0xad, 0xa4, 0xb0, 0x9c, 0x1e, 0x46, 0x4d, 0xe5, 0x3b, 0x82, 0x74, 0x3e, 0xa8, 0xa3, 0x4e, ++ 0x1b, 0x91, 0x21, 0x78, 0x66, 0x94, 0xa8, 0x4e, 0x58, 0x3a, 0xf2, 0x22, 0xbd, 0x16, 0xf0, 0x33, ++ 0xbb, 0x13, 0xd8, 0x10, 0x14, 0xac, 0xa4, 0xa5, 0x84, 0x63, 0xb8, 0x0c, 0x51, 0x21, 0x20, 0x0a, ++ 0xd1, 0xcc, 0xd4, 0x6e, 0x94, 0xe7, 0xd0, 0x0f, 0x0c, 0x05, 0x73, 0xcd, 0xca, 0x03, 0xdc, 0x4a, ++ 0x7a, 0xca, 0x4a, 0xa4, 0x8d, 0x99, 0xcb, 0x50, 0x40, 0x30, 0x14, 0x7b, 0xea, 0x10, 0x8b, 0xa7, ++ 0xb4, 0x03, 0x4f, 0x65, 0xed, 0x3f, 0xec, 0xce, 0x26, 0xfb, 0xd2, 0x5b, 0x10, 0xe8, 0xca, 0x97, ++ 0x5f, 0x51, 0x0a, 0x41, 0xc0, 0x8f, 0x4e, 0xff, 0xcc, 0x55, 0x4f, 0x40, 0x37, 0x33, 0x82, 0x60, ++ 0x71, 0x4e, 0x2d, 0x06, 0xe6, 0xdf, 0xdc, 0xe4, 0xd0, 0x5c, 0x39, 0xe3, 0x26, 0x34, 0x0c, 0x73, ++ 0x0e, 0x35, 0xab, 0x30, 0x3c, 0x37, 0x2f, 0x2c, 0x4f, 0xa5, 0x0b, 0x14, 0xf3, 0x63, 0x60, 0x1e, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x78, 0x80, 0x32, 0x2e, 0xc4, 0x12, 0x05, 0xde, 0x59, 0x4a, 0xd6, 0xfd, 0x4d, 0x87, 0x5c, 0x62, ++ 0x24, 0xbe, 0x7c, 0xa0, 0x88, 0xb2, 0xe2, 0xe8, 0x61, 0x58, 0x3a, 0x78, 0x6f, 0x89, 0x83, 0x44, ++ 0x40, 0x54, 0xdb, 0xee, 0x34, 0xce, 0xb9, 0x6e, 0xa6, 0x9b, 0xfa, 0xad, 0x07, 0xc8, 0x1f, 0x1a, ++ 0x86, 0x76, 0xfd, 0x42, 0xb3, 0x01, 0x20, 0x8d, 0xa4, 0x7b, 0xb2, 0xd0, 0x24, 0x29, 0x84, 0xb8, ++ 0x52, 0x0b, 0xe5, 0xbe, 0x70, 0x97, 0xc8, 0x1a, 0x77, 0xb7, 0xe7, 0x91, 0xd1, 0x6d, 0xbf, 0x38, ++ 0xf3, 0xac, 0x20, 0x93, 0xc7, 0x0b, 0xa3, 0xb6, 0x46, 0xd3, 0xcc, 0xfc, 0x8f, 0xf0, 0xe5, 0x82, ++ 0x11, 0x30, 0x7a, 0x9f, 0xc8, 0x76, 0xd8, 0xbd, 0x25, 0x6b, 0xbe, 0xf9, 0xc3, 0x98, 0xfd, 0x64, ++ 0x28, 0xc1, 0xaf, 0x1a, 0xfd, 0x0e, 0x03, 0x4a, 0x37, 0x87, 0xf3, 0xea, 0x3b, 0x7d, 0x34, 0x9f, ++ 0x5c, 0x3e, 0x4e, 0x8e, 0x4c, 0xa0, 0xe7, 0x36, 0x38, 0x12, 0xec, 0x85, 0x22, 0x0e, 0xdf, 0x26, ++ 0x98, 0x56, 0x10, 0xa8, 0x82, 0xe4, 0xb0, 0x5b, 0x23, 0x88, 0x66, 0x7e, 0xa6, 0x78, 0x93, 0x41, ++ 0xc1, 0xd9, 0x92, 0xb4, 0x99, 0x35, 0x6f, 0xf5, 0xc4, 0x53, 0xac, 0x77, 0xbb, 0x31, 0xab, 0xad, ++ 0xd6, 0x37, 0x60, 0x76, 0x8a, 0x1d, 0x26, 0x19, 0xca, 0xb6, 0x97, 0xc7, 0x52, 0xd3, 0xec, 0x45, ++ 0x03, 0x6f, 0x44, 0xcf, 0x8c, 0x2f, 0xa9, 0xc9, 0xf4, 0x47, 0xa3, 0xc5, 0x15, 0x3d, 0x5d, 0x46, ++ 0x08, 0xeb, 0x23, 0x6d, 0xe7, 0x69, 0xbe, 0x7d, 0x64, 0x2b, 0x8e, 0x5d, 0xd9, 0x19, 0xda, 0x92, ++ 0xae, 0xb7, 0x52, 0x58, 0x4e, 0x0f, 0x23, 0xc7, 0x93, 0xfc, 0x41, 0x3a, 0x1f, 0x54, 0xb0, 0x27, ++ 0x64, 0xea, 0xa7, 0x4e, 0xbc, 0x7c, 0x5b, 0x86, 0xc7, 0xc3, 0xc0, 0xd5, 0x68, 0x41, 0x9c, 0x5e, ++ 0x2d, 0x70, 0x63, 0x88, 0xaa, 0x7f, 0x3b, 0xd2, 0xe8, 0x4e, 0xd5, 0x66, 0x04, 0x3a, 0xd3, 0x55, ++ 0x32, 0x75, 0xb2, 0x27, 0x5e, 0x3e, 0xcc, 0x43, 0x82, 0x80, 0x60, 0x8b, 0x34, 0xc1, 0x4e, 0x2f, ++ 0x06, 0xde, 0x88, 0x5d, 0xdb, 0x5e, 0x91, 0x51, 0x2b, 0x8e, 0x85, 0x49, 0x2a, 0x7a, 0xba, 0x8c, ++ 0x34, 0xab, 0x3a, 0x7a, 0x85, 0x60, 0x5d, 0x12, 0xa9, 0x0e, 0xe5, 0xc2, 0x1e, 0xbb, 0xf4, 0xa3, ++ 0x5d, 0x1b, 0x72, 0xcb, 0x89, 0x04, 0x80, 0x71, 0xd5, 0x2f, 0x8d, 0xc6, 0x90, 0xa4, 0x55, 0xa5, ++ 0x84, 0x3c, 0x85, 0xc8, 0xfa, 0x8a, 0xee, 0x03, 0xbd, 0x01, 0x70, 0x56, 0x83, 0xbe, 0x53, 0x7d, ++ 0x31, 0x1a, 0xf6, 0xe8, 0xd2, 0x11, 0x65, 0x8a, 0x76, 0xc7, 0xc3, 0x4e, 0x21, 0xfc, 0x13, 0x69, ++ 0xf9, 0x0d, 0x7b, 0x74, 0x69, 0xe9, 0xd3, 0x45, 0x3b, 0x82, 0x80, 0x27, 0xf1, 0x7e, 0xe8, 0xd5, ++ 0x93, 0xd2, 0x77, 0x0a, 0xe9, 0xa2, 0xa7, 0xef, 0xb3, 0xe4, 0x4b, 0xe6, 0x6a, 0x5c, 0x14, 0x95, ++ 0x87, 0x53, 0xc1, 0x07, 0x76, 0xa5, 0x47, 0xca, 0x49, 0x46, 0xd3, 0x93, 0x96, 0x83, 0x0e, 0x3b, ++ 0x9b, 0x39, 0x54, 0x67, 0x0e, 0xcb, 0x19, 0x92, 0xd7, 0xcf, 0xc5, 0xbb, 0xb3, 0x45, 0xce, 0x07, ++ 0x0d, 0x5a, 0xef, 0xff, 0xb0, 0x18, 0x86, 0xe5, 0xbb, 0xe2, 0xa8, 0xd1, 0xe6, 0x5e, 0x3d, 0x58, ++ 0xcf, 0xec, 0x39, 0x84, 0xa5, 0x02, 0x40, 0xd9, 0x8b, 0xf6, 0xa7, 0x63, 0x48, 0x52, 0xcb, 0xb3, ++ 0x6a, 0xdf, 0x0c, 0x7e, 0x80, 0x4b, 0x74, 0xaa, 0x88, 0x66, 0xcb, 0xc1, 0x9b, 0x22, 0xfc, 0x40, ++ 0xbd, 0xcd, 0x50, 0x4d, 0xcf, 0xf2, 0x35, 0xf4, 0xaf, 0xed, 0x3d, 0x45, 0x7b, 0x5b, 0x9a, 0x86, ++ 0x33, 0x50, 0x8e, 0x62, 0x9b, 0x9a, 0xab, 0x04, 0x6f, 0xbd, 0x01, 0xc8, 0x86, 0x6b, 0xc4, 0xac, ++ 0xdb, 0x6d, 0x8f, 0x89, 0x3a, 0x05, 0xa0, 0xfc, 0x71, 0x54, 0x3f, 0x16, 0xb4, 0x8d, 0xd1, 0x1d, ++ 0xeb, 0x52, 0x45, 0x24, 0x2d, 0xb0, 0xa2, 0x31, 0xea, 0xae, 0x9d, 0x1b, 0x27, 0xdb, 0x48, 0xf7, ++ 0xce, 0xc9, 0x05, 0xc1, 0x60, 0xa6, 0x27, 0x9e, 0x66, 0xcb, 0xc6, 0x20, 0xfa, 0xf8, 0x41, 0x30, ++ 0x55, 0xf0, 0x51, 0xa6, 0x6e, 0x6d, 0x3e, 0x0c, 0xb1, 0x04, 0x03, 0x9b, 0x49, 0xbd, 0x8f, 0x37, ++ 0x16, 0xcb, 0xce, 0x87, 0xd6, 0x8c, 0x2e, 0xab, 0xe3, 0xd8, 0x5a, 0xf3, 0x5b, 0x48, 0xcd, 0x6b, ++ 0xc5, 0x4d, 0x62, 0x63, 0x0b, 0xe0, 0x30, 0x2a, 0xf6, 0xa7, 0xeb, 0xb8, 0x36, 0xdc, 0xc6, 0xe4, ++ 0x48, 0xbf, 0xf8, 0x83, 0xd3, 0xa7, 0x07, 0x13, 0xc2, 0xb0, 0x74, 0xf0, 0xde, 0xd1, 0xc5, 0x88, ++ 0x2b, 0xae, 0xeb, 0xd5, 0x71, 0x21, 0xaa, 0x83, 0xc3, 0xc0, 0x50, 0x2f, 0x2e, 0x40, 0x69, 0xd9, ++ 0x10, 0x15, 0x46, 0xda, 0x0d, 0xd2, 0xbf, 0xfa, 0xc8, 0x56, 0xdf, 0xba, 0x71, 0x32, 0x77, 0xe7, ++ 0xba, 0x36, 0xe4, 0x55, 0xd1, 0x08, 0xc3, 0xe2, 0x69, 0x5e, 0xd9, 0x4f, 0xe3, 0x8b, 0xaa, 0x89, ++ 0x79, 0xa5, 0x0e, 0x6b, 0x01, 0xb6, 0x62, 0x99, 0xb4, 0x77, 0xb7, 0xbe, 0xff, 0x2d, 0xd6, 0xe1, ++ 0xb2, 0xdd, 0xc7, 0x38, 0x36, 0x61, 0x7d, 0x9f, 0x0d, 0x75, 0x57, 0x12, 0x3a, 0x92, 0x70, 0x1b, ++ 0x01, 0x25, 0x3c, 0x45, 0xc5, 0xa4, 0x67, 0x47, 0xed, 0x3d, 0x61, 0x43, 0xb2, 0xaa, 0x8a, 0x83, ++ 0x04, 0x94, 0xf0, 0xd7, 0x92, 0xd5, 0x5f, 0xdf, 0x32, 0xf4, 0x47, 0xcf, 0x8d, 0xed, 0x6d, 0x49, ++ 0xb8, 0x7c, 0x9c, 0xdf, 0x98, 0x83, 0x0d, 0x6c, 0x70, 0x24, 0x1b, 0xc9, 0x44, 0x1c, 0x7d, 0x4c, ++ 0xc9, 0x32, 0xb1, 0xd9, 0x7e, 0x5c, 0xd1, 0x88, 0xa0, 0x78, 0x22, 0x2a, 0x62, 0x28, 0x71, 0x3f, ++ 0xec, 0xa9, 0xf1, 0x3c, 0x33, 0x4a, 0x54, 0x27, 0x2c, 0x1d, 0x79, 0x11, 0xbf, 0x0b, 0x78, 0xf8, ++ 0x85, 0x19, 0xb9, 0x8d, 0x3f, 0x2e, 0x89, 0x44, 0x50, 0x3c, 0x11, 0x15, 0x31, 0x14, 0xd9, 0xfe, ++ 0xf4, 0x57, 0x94, 0x8b, 0xd9, 0xf1, 0x55, 0xa0, 0x80, 0x60, 0x28, 0xf6, 0x17, 0x20, 0xd5, 0x8d, ++ 0x44, 0xc0, 0x2b, 0x39, 0xa6, 0x1b, 0xe6, 0xb1, 0x94, 0x6f, 0xbd, 0x62, 0x8a, 0x25, 0x72, 0x53, ++ 0x5a, 0xe0, 0xc6, 0xd3, 0x97, 0xfe, 0x76, 0x67, 0x13, 0x9c, 0x69, 0xcc, 0x08, 0x74, 0x65, 0xaa, ++ 0x2f, 0x3a, 0x1b, 0x02, 0xe3, 0xf4, 0xf5, 0x5c, 0xf1, 0x34, 0x17, 0xe0, 0xa3, 0xad, 0x04, 0x90, ++ 0x05, 0xb1, 0xcc, 0x92, 0x57, 0x71, 0x38, 0x98, 0xdf, 0xc9, 0x26, 0x8c, 0x3f, 0x47, 0xe7, 0xca, ++ 0xd9, 0x27, 0xf7, 0x03, 0x73, 0x8e, 0x6e, 0x72, 0x68, 0x2e, 0xfd, 0x90, 0x13, 0x1a, 0x06, 0xd8, ++ 0x68, 0x95, 0x74, 0xf4, 0xc9, 0xc0, 0xba, 0x24, 0x91, 0x1c, 0x09, 0x47, 0x3c, 0xb5, 0x2b, 0x85, ++ 0xad, 0xd8, 0x16, 0x97, 0xc2, 0x20, 0x8a, 0x0e, 0x67, 0xbb, 0xe2, 0xff, 0x0a, 0x69, 0xed, 0x61, ++ 0x35, 0x8e, 0x06, 0x3f, 0x40, 0xc4, 0x3a, 0x55, 0x44, 0x33, 0x84, 0x81, 0xac, 0x11, 0x7e, 0x20, ++ 0x56, 0x9f, 0x15, 0x69, 0xe2, 0x42, 0x97, 0xc5, 0x45, 0x43, 0xa0, 0x5e, 0x5c, 0x80, 0xd2, 0x71, ++ 0xc4, 0x68, 0x5e, 0x26, 0xce, 0x44, 0x57, 0x6d, 0x1b, 0x9a, 0x8a, 0xfb, 0x84, 0x76, 0x4c, 0x67, ++ 0xaf, 0x92, 0x6e, 0x1d, 0x8b, 0xab, 0x44, 0x80, 0x7e, 0xc1, 0x20, 0x79, 0xad, 0xfe, 0x3a, 0xa4, ++ 0x15, 0xa4, 0x8a, 0x48, 0x5a, 0xa3, 0x87, 0x62, 0x17, 0x9f, 0xf9, 0x36, 0x4e, 0x75, 0x90, 0x2d, ++ 0x7c, 0x14, 0xc2, 0xf9, 0x56, 0xc7, 0x5a, 0x01, 0x6b, 0xbe, 0x91, 0x32, 0xc0, 0x6a, 0x31, 0x2b, ++ 0x6e, 0x4b, 0xfc, 0xa9, 0x12, 0x9e, 0x2b, 0x75, 0xba, 0x92, 0x8c, 0x0e, 0x16, 0xcf, 0x91, 0x09, ++ 0xd8, 0x02, 0xcb, 0x46, 0xb6, 0x2a, 0x09, 0x35, 0x85, 0x13, 0x9c, 0xd3, 0xa1, 0xb0, 0x8c, 0x5b, ++ 0xf7, 0x38, 0xd0, 0x44, 0x55, 0xde, 0xfc, 0x69, 0x74, 0x27, 0x8b, 0x33, 0x02, 0x1d, 0x88, 0xcb, ++ 0x66, 0xa0, 0xdf, 0xc4, 0xf5, 0xf7, 0x95, 0x08, 0xde, 0xb9, 0x02, 0x53, 0xcf, 0xd6, 0x4b, 0x9b, ++ 0x89, 0x66, 0x6a, 0x37, 0x4a, 0x92, 0x68, 0xe6, 0x06, 0xe3, 0xd8, 0x87, 0x65, 0xe0, 0x6e, 0x25, ++ 0x45, 0xe5, 0x17, 0x7c, 0x63, 0xbf, 0x81, 0xf6, 0x79, 0x52, 0xdc, 0x21, 0x38, 0x8f, 0xf8, 0xd0, ++ 0xef, 0xc6, 0xb5, 0xf3, 0xbf, 0x65, 0xfd, 0xee, 0xd8, 0x5a, 0xda, 0xd4, 0xaa, 0x36, 0x25, 0xbe, ++ 0x37, 0xc4, 0x7e, 0xb5, 0x09, 0x4f, 0xf4, 0xdb, 0x5d, 0x49, 0x46, 0x07, 0x0b, 0x86, 0xa9, 0xe5, ++ 0x8d, 0xf2, 0x9a, 0xe0, 0xd8, 0x47, 0x37, 0x39, 0x34, 0x17, 0x9f, 0x48, 0xe8, 0x0d, 0x03, 0x6c, ++ 0xb6, 0x49, 0x37, 0xef, 0xa4, 0xb4, 0x22, 0x40, 0x3f, 0x81, 0x10, 0xdd, 0xb7, 0x7f, 0x1d, 0x52, ++ 0xff, 0xd3, 0xf3, 0x29, 0xb2, 0xb7, 0x42, 0x14, 0x10, 0x0c, 0x05, 0x6e, 0xdb, 0x04, 0x52, 0x59, ++ 0x88, 0x43, 0x56, 0x72, 0x8f, 0x36, 0x0f, 0xa1, 0xeb, 0xde, 0xb9, 0xc4, 0xd7, 0x4a, 0xe4, 0xa6, ++ 0xea, 0x77, 0x79, 0x61, 0xe8, 0x14, 0xc5, 0x76, 0x07, 0x93, 0xfc, 0x58, 0x95, 0x71, 0xc2, 0x74, ++ 0x62, 0x34, 0x2f, 0x13, 0x67, 0x22, 0xca, 0xd7, 0xec, 0x4d, 0x45, 0x9c, 0x42, 0x3b, 0x26, 0xd2, ++ 0xe2, 0x9c, 0x5a, 0x0c, 0x0f, 0x7d, 0x7b, 0x0b, 0x63, 0xb8, 0x72, 0x05, 0x4c, 0x68, 0x18, 0xe6, ++ 0x3e, 0x0a, 0x61, 0x9d, 0x2b, 0x82, 0x2d, 0xe1, 0xd4, 0x5f, 0xa9, 0x19, 0x60, 0x35, 0xf9, 0xf4, ++ 0x54, 0xd5, 0x6d, 0xe3, 0xab, 0xc9, 0x59, 0x4b, 0x5c, 0x39, 0x62, 0xd8, 0xfb, 0x17, 0x05, 0xb4, ++ 0xbe, 0xa2, 0x14, 0x82, 0x43, 0xdd, 0x9c, 0x3d, 0x5b, 0xaa, 0x9e, 0x80, 0x6e, 0x66, 0xc7, 0xc0, ++ 0xb7, 0x6c, 0x0b, 0xaa, 0x61, 0x10, 0x45, 0x07, 0xd2, 0xbc, 0x71, 0x9e, 0x05, 0xd5, 0x97, 0xd1, ++ 0x36, 0xe1, 0x42, 0xf0, 0xcc, 0xeb, 0x93, 0x9c, 0xb0, 0x74, 0x27, 0x44, 0xb9, 0x2c, 0x23, 0x66, ++ 0xe6, 0x08, 0xaa, 0xdb, 0x9d, 0xa8, 0x24, 0xd4, 0x51, 0x4c, 0x35, 0xca, 0xc1, 0x85, 0x75, 0xaf, ++ 0x99, 0x73, 0x2c, 0xed, 0x47, 0x40, 0xd7, 0x1c, 0xce, 0xb5, 0x07, 0x3d, 0x14, 0xd2, 0x19, 0xc2, ++ 0xa0, 0x82, 0xf9, 0x68, 0x72, 0x38, 0x0c, 0xeb, 0xdc, 0x59, 0x4a, 0x2e, 0xec, 0x37, 0xd0, 0x39, ++ 0x23, 0x45, 0xc8, 0xb8, 0x96, 0x48, 0x14, 0xfe, 0xa7, 0xeb, 0xde, 0x72, 0xf7, 0x59, 0xb3, 0x4b, ++ 0x8a, 0x09, 0x2e, 0xf8, 0xc6, 0xbd, 0xc1, 0x2f, 0xf2, 0xa4, 0x7b, 0x42, 0x70, 0xdd, 0x33, 0x63, ++ 0x73, 0x04, 0x55, 0x8c, 0xaf, 0x54, 0x12, 0x6a, 0xc9, 0x26, 0xfb, 0x65, 0x81, 0xa3, 0xdb, 0xb6, ++ }, ++ { /* 7 */ ++ 0x5e, 0x59, 0x1d, 0x8d, 0x98, 0xfb, 0x33, 0x54, 0x7c, 0xd4, 0xa4, 0x1b, 0xb3, 0x82, 0x0e, 0xb2, ++ 0x90, 0x76, 0xbe, 0x36, 0xc1, 0x08, 0x56, 0x5a, 0xf4, 0x40, 0x38, 0xf8, 0x4c, 0x99, 0x0f, 0xec, ++ 0xb8, 0xae, 0x1f, 0x39, 0x5b, 0xcb, 0x04, 0x4b, 0x01, 0x97, 0x34, 0x4e, 0xd8, 0x52, 0x2c, 0x9f, ++ 0x18, 0x48, 0xde, 0x05, 0x76, 0x41, 0x8f, 0x0f, 0x53, 0x4d, 0x04, 0xd3, 0xcd, 0xf8, 0xa0, 0x90, ++ 0x76, 0x81, 0xbc, 0x82, 0x02, 0x38, 0x61, 0x45, 0x89, 0x03, 0xa8, 0xad, 0x27, 0x49, 0x2d, 0xc1, ++ 0xc4, 0x19, 0x1a, 0xc8, 0x9e, 0xb3, 0x90, 0x9b, 0x24, 0xd1, 0x9f, 0x2f, 0xda, 0x59, 0x79, 0x32, ++ 0x0d, 0x23, 0xf7, 0xdb, 0x11, 0x1f, 0x5f, 0xae, 0x67, 0xf8, 0x5d, 0x96, 0x09, 0xc8, 0x5c, 0x46, ++ 0x84, 0x1a, 0x0f, 0xd0, 0x8c, 0x88, 0x7f, 0xb3, 0x6f, 0xca, 0x3e, 0xa3, 0x06, 0x1d, 0xff, 0x34, ++ 0xc2, 0x0b, 0xcc, 0x58, 0x62, 0x32, 0xc3, 0xe8, 0x40, 0x53, 0x9e, 0x6b, 0x78, 0x67, 0x51, 0x16, ++ 0x34, 0x8c, 0x5a, 0xea, 0x44, 0x7c, 0xbf, 0xfd, 0x5f, 0x66, 0xb7, 0x1d, 0x24, 0xa6, 0xb3, 0xdb, ++ 0x31, 0x97, 0xe7, 0x32, 0xc6, 0x5c, 0x24, 0x56, 0x09, 0xa5, 0x57, 0x7b, 0xd7, 0x87, 0x8f, 0xed, ++ 0x24, 0xfc, 0xce, 0xec, 0xa1, 0x02, 0xf4, 0xf7, 0x3d, 0x10, 0x0e, 0x3e, 0x13, 0xb7, 0x73, 0x3b, ++ 0xc3, 0x0c, 0x54, 0x60, 0x48, 0xec, 0x3a, 0xa0, 0xef, 0x6c, 0xc1, 0x75, 0xf6, 0xd3, 0x5d, 0x18, ++ 0xc7, 0x10, 0x71, 0x80, 0xe0, 0x12, 0x58, 0x43, 0x16, 0x90, 0x7e, 0x0d, 0x8b, 0x46, 0x6d, 0x20, ++ 0x4a, 0x35, 0xac, 0x6b, 0xd5, 0x7b, 0x1a, 0xbd, 0xe7, 0x5e, 0xa2, 0x40, 0xf9, 0x06, 0xfe, 0x6a, ++ 0x07, 0x15, 0x4e, 0xa8, 0xd6, 0x5f, 0xaa, 0x3b, 0xcb, 0xbd, 0x5e, 0x5a, 0x2c, 0x8a, 0x24, 0x2a, ++ 0x0c, 0x24, 0x6f, 0xe3, 0x3b, 0xc1, 0xa6, 0xe6, 0xc8, 0xc7, 0x02, 0x88, 0x87, 0x7c, 0x50, 0x48, ++ 0x48, 0x3b, 0x5f, 0x1b, 0x81, 0x04, 0x2b, 0x2d, 0x7a, 0x20, 0x1c, 0x7c, 0x26, 0xad, 0xe6, 0x76, ++ 0x80, 0x06, 0x2a, 0x30, 0x24, 0x76, 0x1d, 0x50, 0x96, 0x36, 0x81, 0xdb, 0x7b, 0x88, 0xcf, 0x0c, ++ 0xd7, 0x60, 0xe5, 0x86, 0x05, 0x6c, 0x13, 0x49, 0x74, 0xe6, 0xc7, 0x2e, 0xbc, 0x57, 0xad, 0xc0, ++ 0x69, 0xdc, 0x2c, 0x2f, 0xa2, 0x26, 0x44, 0x71, 0x11, 0xf3, 0xf2, 0x24, 0xc6, 0x3b, 0xa9, 0x7b, ++ 0xee, 0xcf, 0x48, 0xb7, 0x50, 0x0f, 0xf3, 0x1a, 0x4c, 0x78, 0x2d, 0xa5, 0x91, 0x39, 0x42, 0x5d, ++ 0xd8, 0x4d, 0xe1, 0x2d, 0x40, 0x0c, 0x7d, 0x77, 0x8e, 0x60, 0x24, 0x84, 0x6a, 0x34, 0xe9, 0x9a, ++ 0x1b, 0x41, 0xb5, 0x4d, 0x08, 0xe0, 0x47, 0xd7, 0x61, 0x0c, 0xe5, 0xf1, 0x9c, 0xe7, 0xb4, 0x82, ++ 0x77, 0x86, 0x24, 0xba, 0x28, 0xe6, 0x98, 0x0d, 0x26, 0x3c, 0xf7, 0xb3, 0xa9, 0xfd, 0x21, 0xcf, ++ 0x91, 0x71, 0x26, 0x0e, 0xeb, 0xd6, 0xaf, 0x12, 0x5b, 0x7f, 0x67, 0xe6, 0xc2, 0x2d, 0x03, 0xe2, ++ 0x73, 0x9a, 0x01, 0x5a, 0x80, 0x18, 0xfa, 0xee, 0xdf, 0xc0, 0x48, 0xcb, 0xd4, 0x68, 0x11, 0xf7, ++ 0xe8, 0xdd, 0x9e, 0x27, 0xac, 0x8e, 0xa0, 0x69, 0x28, 0xfa, 0x2c, 0xe1, 0x33, 0x07, 0x6a, 0x79, ++ 0xa1, 0xe1, 0x59, 0x04, 0x07, 0x54, 0x72, 0x0c, 0xfd, 0xe5, 0x6f, 0x83, 0x9b, 0x1e, 0x80, 0x01, ++ 0x53, 0x7a, 0xea, 0x56, 0x89, 0xe4, 0x6c, 0xfa, 0x1b, 0x2c, 0xf9, 0x8d, 0xba, 0x4a, 0x52, 0xf4, ++ 0xc9, 0x3a, 0xed, 0x13, 0x8f, 0xac, 0xcf, 0x35, 0x43, 0x29, 0xc2, 0xb9, 0xd3, 0x91, 0x25, 0x74, ++ 0x8d, 0x25, 0xdd, 0xeb, 0x35, 0x69, 0x42, 0xfe, 0xf1, 0xce, 0xdc, 0x4d, 0x72, 0x40, 0x93, 0x4a, ++ 0xe7, 0xf0, 0x9a, 0x8c, 0xe9, 0xee, 0xce, 0x57, 0xd2, 0x7c, 0xcf, 0x4b, 0xe5, 0x64, 0x2e, 0x23, ++ 0x7f, 0xbe, 0x6e, 0xb9, 0xbb, 0xd9, 0x5c, 0x08, 0x17, 0x07, 0x4a, 0x43, 0x53, 0x14, 0x41, 0xbf, ++ 0x86, 0x14, 0xfc, 0xa0, 0xd8, 0xf7, 0x4e, 0x23, 0xf2, 0xb4, 0x80, 0x9f, 0xd9, 0xb6, 0xe7, 0x28, ++ 0x70, 0x93, 0x6a, 0x12, 0xfe, 0xb9, 0x32, 0x36, 0xed, 0x81, 0xa9, 0xe9, 0x85, 0x77, 0x05, 0xe5, ++ 0x4e, 0x29, 0x89, 0x8b, 0x7d, 0x85, 0x78, 0x5e, 0x1e, 0xa2, 0x1d, 0x38, 0x84, 0x93, 0xce, 0x52, ++ 0x1f, 0x5d, 0x90, 0xad, 0xa0, 0x1e, 0x25, 0x34, 0x98, 0xf0, 0x5a, 0x89, 0xe1, 0x72, 0x84, 0xba, ++ 0x63, 0xea, 0x95, 0x5c, 0x65, 0x66, 0xb1, 0xe4, 0xbd, 0xb6, 0xf1, 0xe8, 0xe3, 0x79, 0xd1, 0x17, ++ 0xe6, 0xf7, 0x02, 0xb4, 0xc3, 0x30, 0x37, 0x1f, 0x7d, 0x43, 0x90, 0x55, 0x6b, 0xd0, 0x22, 0x2d, ++ 0xa7, 0xf3, 0x8f, 0x94, 0xfb, 0xd5, 0x21, 0x7f, 0x99, 0x67, 0x6e, 0xc7, 0x39, 0x20, 0xa8, 0x25, ++ 0x35, 0x8b, 0xc2, 0xd2, 0x6e, 0xa2, 0x46, 0xb5, 0xf0, 0x59, 0xe8, 0x03, 0xaa, 0x12, 0xbf, 0xd5, ++ 0x20, 0xe0, 0xeb, 0x0c, 0x09, 0xfc, 0x96, 0x14, 0xc4, 0xec, 0xb1, 0x46, 0x6e, 0x22, 0x43, 0x03, ++ 0x0f, 0x2d, 0x04, 0xab, 0x45, 0x60, 0x6e, 0x3e, 0xfa, 0x86, 0xe3, 0xaa, 0xd6, 0x63, 0x44, 0x5a, ++ 0x16, 0x62, 0x42, 0x96, 0x19, 0xff, 0x18, 0x79, 0x06, 0xf4, 0xb8, 0x67, 0x95, 0x2f, 0xe8, 0xc4, ++ 0xf3, 0x9c, 0x2b, 0x6a, 0xa4, 0x6e, 0xe7, 0xbe, 0x49, 0xf6, 0xc9, 0x10, 0xaf, 0xe0, 0xde, 0xfb, ++ 0xaf, 0xcb, 0xc5, 0x97, 0x68, 0xea, 0xe5, 0x7a, 0xa8, 0x5c, 0xd3, 0x37, 0xc3, 0xc9, 0xc8, 0x55, ++ 0x22, 0xee, 0x18, 0x7c, 0x5d, 0x83, 0xa7, 0x84, 0x59, 0x92, 0x0f, 0x7a, 0xb1, 0x89, 0x5b, 0x1f, ++ 0xb9, 0xa9, 0x87, 0x01, 0x71, 0x15, 0xfd, 0x03, 0xae, 0xa8, 0x6b, 0x50, 0x56, 0xe6, 0x20, 0x91, ++ 0x1e, 0x5a, 0x08, 0x95, 0x8a, 0xc0, 0xdc, 0x7c, 0x37, 0xcf, 0x05, 0x97, 0x6f, 0xc6, 0x88, 0xb4, ++ 0x25, 0xfb, 0x56, 0xd4, 0x8b, 0xdc, 0x0d, 0xbf, 0x92, 0x2f, 0x51, 0x20, 0x9d, 0x03, 0x7f, 0x35, ++ 0xba, 0xa0, 0xec, 0x49, 0x0f, 0xb4, 0x35, 0xdb, 0x9c, 0xe9, 0x8a, 0x72, 0x07, 0xf9, 0x34, 0x83, ++ 0xbd, 0xb5, 0xa2, 0xe1, 0xd9, 0xeb, 0x9f, 0xe0, 0x57, 0x54, 0xd4, 0x28, 0x2b, 0x73, 0x10, 0xa9, ++ 0x8e, 0x2c, 0xb6, 0xa3, 0x4b, 0xc8, 0x8a, 0x26, 0xc3, 0x8f, 0x3d, 0x6f, 0x23, 0x5f, 0x87, 0x58, ++ 0x5c, 0x57, 0xee, 0xfd, 0xcc, 0x84, 0x02, 0xc4, 0xe1, 0xaa, 0x1a, 0x27, 0x6c, 0x29, 0x16, 0xae, ++ 0x41, 0x04, 0x8d, 0x20, 0x38, 0xe5, 0x16, 0x60, 0xe4, 0x24, 0xfe, 0x92, 0x52, 0xf0, 0x8a, 0x08, ++ 0x6f, 0xce, 0xfa, 0xbf, 0x5e, 0xa7, 0x17, 0x02, 0x75, 0x71, 0xf3, 0x60, 0x64, 0x05, 0x81, 0x5f, ++ 0x42, 0x0d, 0xe6, 0x68, 0x46, 0x44, 0xde, 0xb8, 0xd6, 0x65, 0x1f, 0xb0, 0x03, 0xef, 0x9e, 0x1a, ++ 0x46, 0x11, 0xc3, 0x88, 0xee, 0xba, 0xbc, 0x5b, 0x2f, 0x99, 0xa0, 0xc8, 0x7e, 0x7a, 0xae, 0x22, ++ 0x2b, 0xd1, 0xca, 0x47, 0xe4, 0x62, 0x9a, 0xc9, 0xc7, 0x96, 0xed, 0x94, 0xc5, 0xd4, 0x37, 0x61, ++ 0xdc, 0x51, 0xc4, 0xcd, 0xe8, 0xf2, 0x1f, 0x94, 0x77, 0x9c, 0x9b, 0xfc, 0x17, 0xa1, 0xd9, 0xa2, ++ 0xdf, 0x58, 0xaf, 0x85, 0x96, 0x53, 0xd7, 0x4c, 0x45, 0xdd, 0x7a, 0xde, 0x46, 0xbe, 0xcd, 0xb0, ++ 0x43, 0x0a, 0x7e, 0x50, 0x6c, 0x9a, 0x27, 0xf0, 0x79, 0x5a, 0x40, 0xae, 0x8d, 0x5b, 0x92, 0x14, ++ 0xe3, 0xec, 0xbf, 0x6c, 0x41, 0x10, 0xac, 0xb4, 0x2b, 0x80, 0x70, 0x33, 0x98, 0xf1, 0x1e, 0x1b, ++ 0x29, 0xdf, 0x39, 0x37, 0xb0, 0x1d, 0xab, 0x59, 0x5a, 0xe8, 0x53, 0xa8, 0x1a, 0x7f, 0x2f, 0x7d, ++ 0xb4, 0x8a, 0x70, 0xda, 0x60, 0x0a, 0xa2, 0xad, 0xc9, 0x50, 0x36, 0xc6, 0x5f, 0x2e, 0x7c, 0xd7, ++ 0xcb, 0x34, 0x1e, 0x63, 0xdb, 0xd3, 0xfe, 0xa5, 0xde, 0x57, 0x7c, 0x85, 0x0c, 0x3a, 0x3d, 0x68, ++ 0x32, 0x9e, 0x8c, 0x7a, 0xb8, 0xfd, 0xec, 0x8e, 0x3b, 0xe4, 0xb6, 0x59, 0x86, 0x98, 0x9b, 0xff, ++ 0xda, 0x43, 0x12, 0x5d, 0x14, 0x73, 0x4c, 0xe7, 0x13, 0x1e, 0x9a, 0xb8, 0xb5, 0x9f, 0xf1, 0x86, ++ 0xea, 0xd3, 0x6d, 0x57, 0xf8, 0xf1, 0x91, 0xf9, 0xb5, 0x84, 0x92, 0xdd, 0xec, 0xac, 0x72, 0x65, ++ 0xbe, 0xbc, 0xc9, 0xa9, 0xa7, 0x4a, 0x57, 0x38, 0x65, 0x15, 0x35, 0x0a, 0x7a, 0x6c, 0x04, 0xbb, ++ 0x03, 0x09, 0x6b, 0x48, 0x7e, 0xa1, 0xc8, 0xd8, 0x32, 0x41, 0xe1, 0x22, 0x51, 0x1f, 0x14, 0x12, ++ 0xa5, 0xfd, 0x7c, 0xe4, 0xaf, 0xaa, 0x10, 0xef, 0x04, 0x19, 0xd0, 0xfb, 0xe6, 0x8b, 0xb0, 0x39, ++ 0xa4, 0xfa, 0xe4, 0xdc, 0x85, 0x74, 0xe9, 0xa7, 0xab, 0x26, 0x8f, 0xe5, 0x68, 0x3f, 0xbc, 0x37, ++ 0xab, 0xd7, 0xe0, 0x77, 0xc0, 0x14, 0x87, 0x99, 0x51, 0xa0, 0x6c, 0x4f, 0xbe, 0x5c, 0xf8, 0x6d, ++ 0x64, 0xff, 0xdb, 0xf4, 0xb3, 0x39, 0x1b, 0xdf, 0x76, 0x0b, 0xaf, 0xb2, 0xcf, 0xf3, 0xf5, 0x3d, ++ 0xad, 0xc5, 0x36, 0xe7, 0x3c, 0x95, 0xd4, 0xea, 0x35, 0x22, 0x6d, 0x0b, 0x1c, 0x62, 0xd0, 0x49, ++ 0x4f, 0x2e, 0x11, 0xb3, 0x57, 0x5b, 0x81, 0x16, 0xb1, 0x9d, 0x42, 0x26, 0x0a, 0x27, 0xc2, 0x5c, ++ 0x85, 0x1d, 0x97, 0xe8, 0xa6, 0x56, 0x86, 0xfb, 0xc0, 0xf5, 0x61, 0xbd, 0x88, 0xa9, 0xf3, 0x3a, ++ 0xa0, 0xe6, 0xc1, 0x3c, 0x2d, 0x8a, 0x8b, 0x44, 0x52, 0xda, 0x30, 0x9d, 0x15, 0xaa, 0x8c, 0x0f, ++ 0x13, 0x79, 0xff, 0x4e, 0x9b, 0xdf, 0x83, 0xd2, 0x50, 0x37, 0x58, 0x01, 0x66, 0x0e, 0xd4, 0xf2, ++ 0xd4, 0x69, 0x8e, 0xce, 0x7b, 0xcd, 0xdb, 0x91, 0x46, 0xa7, 0x26, 0x0c, 0xed, 0x48, 0xb9, 0xd2, ++ 0xfb, 0xa4, 0x61, 0x69, 0x37, 0x51, 0x23, 0xbb, 0x78, 0xcd, 0x74, 0xe0, 0x55, 0x09, 0xbe, 0x8b, ++ 0xae, 0xcc, 0x5d, 0xaf, 0x42, 0x34, 0x1c, 0x32, 0x07, 0x63, 0x8c, 0x29, 0x4d, 0x7d, 0xc4, 0x5b, ++ 0x94, 0x6a, 0x9b, 0xd6, 0x69, 0xf6, 0x34, 0xb9, 0x0d, 0xbc, 0x87, 0x80, 0x31, 0x0c, 0x3f, 0xd4, ++ 0xde, 0x5f, 0x37, 0xbd, 0xbc, 0x8d, 0x2e, 0x04, 0xea, 0xe2, 0x25, 0xc0, 0xc8, 0x0a, 0xc1, 0xbe, ++ 0xbb, 0xa7, 0x74, 0x71, 0x25, 0x6a, 0xcc, 0x93, 0x33, 0xd6, 0xd5, 0x6c, 0x89, 0x4d, 0x38, 0x8d, ++ 0xce, 0x2f, 0xa3, 0xbb, 0x59, 0xf3, 0x65, 0x0e, 0x88, 0x94, 0x9c, 0xe3, 0xff, 0x1b, 0x01, 0x5e, ++ 0xa2, 0xe8, 0x32, 0x4c, 0x79, 0xf5, 0xba, 0xd4, 0xcf, 0xa4, 0x8e, 0xa1, 0xca, 0x01, 0x94, 0x13, ++ 0xf1, 0x92, 0xd8, 0x1a, 0xf0, 0x11, 0xd6, 0x2e, 0xd4, 0x88, 0x77, 0x2c, 0x70, 0x4b, 0xc6, 0xe7, ++ 0x3d, 0xb3, 0x88, 0xd1, 0xfd, 0x9d, 0x82, 0xb0, 0xc1, 0x62, 0x55, 0xf3, 0x50, 0xfb, 0xdf, 0xa5, ++ 0xb6, 0x84, 0x83, 0xaa, 0x34, 0x75, 0x93, 0x3d, 0x54, 0x2e, 0x88, 0xfa, 0x80, 0x85, 0x64, 0xcb, ++ 0x61, 0xe4, 0x66, 0x2c, 0x31, 0x19, 0x80, 0x74, 0x20, 0xc8, 0x4f, 0xd4, 0x3c, 0xd2, 0xc9, 0x0b, ++ 0x36, 0x82, 0xa9, 0x9a, 0x10, 0x03, 0x8e, 0x6d, 0xc2, 0x18, 0x09, 0x21, 0xfb, 0x0d, 0xab, 0xc7, ++ 0xec, 0xc1, 0xbb, 0xc7, 0x04, 0x70, 0xc2, 0x8a, 0xd1, 0x06, 0x93, 0x99, 0x4e, 0x92, 0x5a, 0x41, ++ 0xc8, 0x3d, 0x75, 0x2b, 0xa5, 0x72, 0x36, 0x7d, 0xec, 0x16, 0x9d, 0xa7, 0x5d, 0x25, 0x29, 0x7a, ++ 0x52, 0x7d, 0x72, 0x6e, 0xa3, 0x3a, 0x95, 0xb2, 0xb4, 0x13, 0xa6, 0x93, 0x34, 0xfe, 0x5e, 0xfa, ++ 0xb2, 0x98, 0xa6, 0x4a, 0x9c, 0x8b, 0xf1, 0xde, 0xad, 0xd2, 0x37, 0x82, 0xfd, 0x10, 0x54, 0xf3, ++ 0xd0, 0x75, 0xab, 0x2e, 0xd3, 0x33, 0xb9, 0x72, 0xbf, 0x5b, 0x99, 0x74, 0x90, 0xdd, 0x89, 0xea, ++ 0x72, 0x9d, 0x99, 0x62, 0xaa, 0xc6, 0x03, 0xa6, 0x70, 0xff, 0x17, 0xd5, 0x5a, 0xdc, 0x1d, 0xf9, ++ 0xeb, 0xd4, 0xf5, 0x6f, 0xd2, 0x2f, 0x68, 0xb1, 0x1a, 0xbb, 0xcd, 0xc3, 0x62, 0x18, 0x7e, 0x6b, ++ 0x96, 0x64, 0x68, 0xa6, 0x3d, 0x89, 0x05, 0x29, 0x90, 0xc2, 0x39, 0xbc, 0xee, 0xa7, 0x27, 0xc8, ++ 0x0e, 0x2a, 0x9c, 0x93, 0x6f, 0xbe, 0x97, 0x76, 0x55, 0xb9, 0xbc, 0xb4, 0x58, 0xd7, 0x48, 0x54, ++ 0xe2, 0xeb, 0x27, 0x54, 0x6b, 0xce, 0x55, 0xfc, 0x84, 0xbf, 0x2f, 0x2d, 0x16, 0x45, 0x12, 0x15, ++ 0x56, 0x61, 0x57, 0x8e, 0x0b, 0xc4, 0xf7, 0x51, 0x4d, 0xef, 0x19, 0xeb, 0x49, 0x6b, 0x6e, 0xc2, ++ 0x4c, 0x27, 0x7a, 0xfb, 0x29, 0xfa, 0x49, 0xce, 0x83, 0xdc, 0xa3, 0x04, 0x5b, 0x38, 0xd6, 0x4e, ++ 0x40, 0x03, 0x15, 0x18, 0x12, 0x3b, 0xef, 0x28, 0x4b, 0x1b, 0xa1, 0x8c, 0xdc, 0x44, 0x86, 0x06, ++ 0x37, 0x85, 0x31, 0xa2, 0x3a, 0xdd, 0x77, 0x25, 0x6d, 0x27, 0x56, 0x3f, 0x75, 0xb9, 0xa7, 0xc9, ++ 0x92, 0x78, 0x4d, 0x46, 0x95, 0x77, 0x67, 0xca, 0x69, 0x3e, 0x86, 0xc4, 0x93, 0x32, 0x17, 0xf0, ++ 0x44, 0x1f, 0x30, 0xf8, 0xba, 0xc5, 0x8d, 0xcb, 0xb2, 0xe7, 0x1e, 0xf4, 0xa1, 0xd1, 0xb6, 0x3e, ++ 0x8f, 0x2b, 0x2e, 0x9b, 0x61, 0x16, 0x73, 0x6e, 0x6c, 0xb0, 0x62, 0x71, 0xad, 0xeb, 0x8b, 0x56, ++ 0x59, 0x4c, 0x53, 0x25, 0x4e, 0xa4, 0x99, 0x6f, 0xb7, 0x69, 0xfa, 0x41, 0x9f, 0x08, 0x2a, 0x98, ++ 0xdb, 0x44, 0x8a, 0x65, 0x3e, 0xad, 0xb5, 0xaf, 0xbc, 0x21, 0xc5, 0xa6, 0x3b, 0x2b, 0xfd, 0x88, ++ 0x6d, 0xc0, 0x09, 0xcf, 0x0a, 0xd8, 0x26, 0x92, 0xe8, 0x0f, 0x4d, 0x5c, 0xbb, 0xae, 0x99, 0x43, ++ 0x8c, 0x22, 0x45, 0xd3, 0x1f, 0xb7, 0xbb, 0xb6, 0x5e, 0xf1, 0x83, 0x53, 0xfc, 0xf4, 0x9f, 0x44, ++ 0xd3, 0x7c, 0xc0, 0x66, 0xad, 0x92, 0x71, 0xaa, 0x8d, 0x1a, 0x78, 0x56, 0xc1, 0xc2, 0x9d, 0xf8, ++ 0x88, 0x3e, 0x60, 0x33, 0xb7, 0x49, 0xd9, 0x55, 0xa7, 0x0d, 0x3c, 0x2b, 0x81, 0x61, 0xaf, 0x7c, ++ 0x47, 0x16, 0x5b, 0xb0, 0xc4, 0x64, 0x45, 0x13, 0x80, 0xa6, 0xff, 0xd6, 0xf0, 0xce, 0xa2, 0x2c, ++ 0xe5, 0xfe, 0x69, 0xfc, 0xbd, 0x91, 0xff, 0xc7, 0x4f, 0x02, 0x71, 0x77, 0x3a, 0xcf, 0x36, 0x3f, ++ 0x2f, 0xcd, 0xef, 0xa7, 0x4c, 0x9c, 0xf8, 0x2a, 0x3e, 0x6a, 0x52, 0xec, 0xb8, 0x41, 0x07, 0x59, ++ 0x12, 0x7e, 0x67, 0x76, 0xb1, 0x01, 0x7a, 0x9a, 0xff, 0x08, 0x07, 0x1f, 0xe8, 0xba, 0xd8, 0xfc, ++ 0x8b, 0x37, 0x0b, 0x7b, 0xc9, 0xe8, 0x11, 0x8d, 0x95, 0x4c, 0xdd, 0x09, 0xd0, 0x7e, 0xbb, 0x6e, ++ 0x11, 0x77, 0x0c, 0x3e, 0xcf, 0xa0, 0xb2, 0x42, 0xcd, 0x49, 0xe6, 0x3d, 0xb9, 0xa5, 0xcc, 0xee, ++ 0x54, 0x6f, 0xa4, 0xfe, 0x5f, 0xbb, 0xc6, 0xc1, 0xd0, 0x91, 0xa7, 0xd7, 0x96, 0xc0, 0x76, 0xde, ++ 0xa8, 0xde, 0x8b, 0x3f, 0xbe, 0xb5, 0x4f, 0x41, 0x63, 0xe1, 0x8d, 0x6d, 0xef, 0x43, 0xec, 0x7f, ++ 0x87, 0x13, 0x64, 0x98, 0xf2, 0x29, 0xb7, 0x6b, 0x5d, 0x8b, 0xdf, 0x81, 0x57, 0x02, 0xeb, 0x26, ++ 0x2d, 0xc3, 0x1c, 0xd7, 0x18, 0xe3, 0xc9, 0xba, 0xa3, 0x14, 0xec, 0xd0, 0x67, 0xea, 0x1f, 0x45, ++ 0x5d, 0x50, 0x76, 0xc5, 0xe6, 0x5a, 0xfb, 0x8c, 0x4e, 0x95, 0x45, 0x39, 0xe2, 0x9d, 0x1a, 0xa0, ++ 0x9d, 0x55, 0x49, 0xed, 0xd0, 0x17, 0x09, 0xf4, 0x93, 0xb8, 0x65, 0x6e, 0x45, 0x51, 0x53, 0xaa, ++ 0x39, 0xaf, 0xad, 0x31, 0x55, 0x63, 0xe0, 0x53, 0x38, 0x9e, 0xea, 0x8b, 0x2d, 0x6e, 0xef, 0x9d, ++ 0x5f, 0x5e, 0x85, 0xb5, 0xb2, 0x25, 0xca, 0x1c, 0xd3, 0xeb, 0xfb, 0x05, 0x3d, 0x36, 0x02, 0xbc, ++ 0x26, 0xf2, 0x3d, 0x9c, 0xf5, 0x7d, 0xc5, 0x67, 0xa0, 0x6e, 0xb0, 0x02, 0xcc, 0x1c, 0x6b, 0x27, ++ 0x05, 0x1b, 0xbd, 0xd8, 0x82, 0x20, 0x9b, 0xab, 0x56, 0xc3, 0xe0, 0x66, 0xf3, 0x21, 0x3c, 0x36, ++ 0xd5, 0x6e, 0x16, 0xf6, 0x51, 0x13, 0x22, 0xd9, 0xe9, 0x98, 0x79, 0x12, 0x63, 0xfc, 0xb5, 0xdc, ++ 0xfc, 0xb1, 0x2f, 0xc1, 0xe1, 0x0e, 0x89, 0x80, 0xb3, 0x70, 0x2a, 0xba, 0x79, 0x83, 0x9a, 0xa1, ++ 0x19, 0x4f, 0x46, 0x3d, 0x5c, 0x9f, 0x76, 0x47, 0xfc, 0x72, 0x5b, 0xcd, 0x43, 0x4c, 0xac, 0x9e, ++ 0x09, 0x3f, 0xd2, 0x3b, 0xb9, 0xe1, 0x3d, 0x4d, 0x9e, 0x04, 0xe2, 0xee, 0x74, 0x5d, 0x6c, 0x7e, ++ 0xb3, 0x9f, 0x3e, 0x72, 0xb6, 0x55, 0x08, 0x96, 0x02, 0xed, 0x68, 0x9c, 0x73, 0xa4, 0x58, 0xfd, ++ 0xfa, 0xa3, 0xf9, 0x51, 0x1d, 0x8f, 0xda, 0xf3, 0xd7, 0xf2, 0x2b, 0xfe, 0xdb, 0xbd, 0xb2, 0x85, ++ 0xef, 0xc8, 0xd0, 0x8f, 0x7a, 0xd1, 0x0a, 0x52, 0xe3, 0x47, 0x72, 0xbb, 0x1f, 0x8d, 0x4e, 0x53, ++ 0x0a, 0x36, 0xb9, 0x73, 0xc7, 0x40, 0xf5, 0x95, 0xac, 0x45, 0x03, 0xcc, 0x25, 0x42, 0x78, 0x6c, ++ 0x30, 0x90, 0x7f, 0x0a, 0xec, 0x82, 0xdd, 0x1e, 0xa6, 0x9a, 0x08, 0x65, 0x59, 0x33, 0x83, 0xe3, ++ 0xcd, 0x26, 0xc8, 0xf3, 0x27, 0x52, 0xad, 0xd6, 0xba, 0xd5, 0x7d, 0xc1, 0xae, 0x04, 0x15, 0x4c, ++ 0xd6, 0x67, 0x7d, 0xbe, 0x2f, 0xb2, 0xea, 0x01, 0xdb, 0xd9, 0x98, 0x30, 0x32, 0xe3, 0xa1, 0xce, ++ 0x6b, 0xd2, 0xdf, 0x5f, 0xf6, 0x59, 0x75, 0xe1, 0x8c, 0x8d, 0x4c, 0x18, 0x19, 0x90, 0xb1, 0x67, ++ 0x08, 0x38, 0x4a, 0x03, 0x93, 0x3f, 0xc4, 0x05, 0x31, 0x3b, 0xbd, 0xf0, 0xfa, 0xe9, 0x60, 0x70, ++ 0xb5, 0x8d, 0xe8, 0xe2, 0x4a, 0xd4, 0x5b, 0xe5, 0x66, 0x6f, 0x69, 0xd8, 0xd1, 0x9a, 0x70, 0xd9, ++ 0x6e, 0xc9, 0x62, 0x87, 0x74, 0x79, 0xee, 0x4a, 0xda, 0x4e, 0xac, 0x7e, 0xea, 0xb1, 0x8d, 0x51, ++ 0x65, 0xf8, 0x43, 0xcc, 0x99, 0xe7, 0xe2, 0x97, 0xd9, 0x34, 0xf0, 0xac, 0x41, 0x47, 0xf9, 0x33, ++ 0xf5, 0x8e, 0xfd, 0xfa, 0x58, 0xef, 0xb4, 0xcd, 0x2d, 0x74, 0xc8, 0x54, 0x0d, 0xde, 0xf6, 0xdf, ++ 0xaa, 0xd0, 0x78, 0x4f, 0xea, 0xca, 0x7e, 0xd1, 0xfe, 0x9f, 0x33, 0x51, 0x30, 0xe8, 0xf4, 0x63, ++ 0x74, 0x8f, 0x4f, 0xf2, 0x56, 0x47, 0x50, 0xd5, 0x14, 0x7d, 0x16, 0x91, 0xf8, 0xe2, 0x35, 0xdd, ++ 0x4b, 0x32, 0x34, 0x53, 0xff, 0xa5, 0xe3, 0xf5, 0x48, 0x61, 0xfd, 0x5e, 0x77, 0xb2, 0xf2, 0x64, ++ 0xff, 0xb8, 0x44, 0x89, 0x9f, 0xaf, 0x41, 0x58, 0x81, 0x31, 0xcb, 0x98, 0x28, 0x9c, 0x8e, 0xb3, ++ 0x81, 0x01, 0xb2, 0x08, 0x0e, 0xa8, 0xe4, 0x18, 0x39, 0x09, 0xde, 0xc5, 0xf5, 0x3c, 0xc3, 0x02, ++ 0xc1, 0x02, 0xa7, 0x10, 0x1c, 0x93, 0x0b, 0x30, 0x72, 0x12, 0x7f, 0x49, 0x29, 0x78, 0x45, 0x04, ++ 0xd1, 0x72, 0x33, 0x16, 0xf9, 0xed, 0x40, 0x3a, 0x10, 0x64, 0xc6, 0x6a, 0x1e, 0x69, 0x85, 0xe4, ++ 0x28, 0xd8, 0xa1, 0x0f, 0x9a, 0xc3, 0x52, 0x11, 0xf5, 0xd7, 0x0c, 0xb6, 0x94, 0xcb, 0x23, 0x73, ++ 0xb1, 0x91, 0xcd, 0x02, 0xe2, 0x2a, 0x39, 0x06, 0x9f, 0x93, 0xd6, 0xa0, 0xac, 0x0f, 0x40, 0xe1, ++ 0x9b, 0x47, 0x9f, 0x7d, 0x2c, 0x96, 0x5a, 0x87, 0xf7, 0x3a, 0x64, 0x2a, 0xe7, 0x6f, 0x7b, 0x8e, ++ 0xdd, 0x56, 0x5c, 0xf5, 0xc2, 0x2c, 0xe6, 0xdc, 0xd8, 0xa3, 0xc4, 0xe2, 0x99, 0x15, 0xd5, 0xac, ++ 0x23, 0xe9, 0x80, 0x44, 0x77, 0x5d, 0x5e, 0xcc, 0xf6, 0xad, 0x50, 0x64, 0x3f, 0x3d, 0x57, 0x11, ++ 0x3f, 0xbd, 0x7b, 0xa1, 0xa9, 0xe2, 0xb3, 0x20, 0x5c, 0x1c, 0xeb, 0xcf, 0x8f, 0x50, 0xc7, 0xb9, ++ 0x02, 0x0e, 0xf3, 0x70, 0x54, 0x7f, 0x31, 0x90, 0x9d, 0x7e, 0xbe, 0x3c, 0xdf, 0xab, 0x18, 0x1c, ++ 0x10, 0x70, 0x94, 0x06, 0xe5, 0x7e, 0x4b, 0x0a, 0x62, 0x76, 0xb9, 0x23, 0x37, 0x11, 0xc0, 0xe0, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1a, 0x46, 0x2d, 0x75, 0x22, 0x3e, 0xbe, 0x9f, 0xce, 0x33, 0xba, 0xef, 0x12, 0x53, 0xb8, 0x8c, ++ 0x60, 0xe3, 0xfe, 0x14, 0x1b, 0xc7, 0x79, 0x3c, 0x8f, 0xf7, 0x10, 0xca, 0xb2, 0x66, 0xc5, 0x05, ++ 0x5a, 0x45, 0x38, 0x6d, 0x30, 0x05, 0x51, 0xb7, 0x85, 0x28, 0x1b, 0x63, 0xce, 0x17, 0x3e, 0x8a, ++ 0x3e, 0xba, 0xe3, 0x99, 0x83, 0x3c, 0x4a, 0x68, 0xf3, 0x23, 0xb4, 0xd1, 0x01, 0xe4, 0xcb, 0xb7, ++ 0x6a, 0xd5, 0x47, 0x67, 0xdc, 0x87, 0x8c, 0xa9, 0x23, 0xb2, 0x13, 0x06, 0x97, 0x24, 0xbd, 0x69, ++ 0x71, 0x94, 0xf2, 0x2a, 0xd4, 0x67, 0xcb, 0x7e, 0x42, 0xbe, 0xf6, 0xf7, 0x0b, 0xc3, 0x09, 0xeb, ++ 0x75, 0x88, 0xd7, 0xca, 0x7c, 0x99, 0xa9, 0x9d, 0xbb, 0x42, 0x49, 0x8f, 0x76, 0x56, 0x39, 0xd3, ++ 0xb7, 0x83, 0x1b, 0x92, 0x1e, 0xab, 0x6a, 0x75, 0xfb, 0x11, 0xd7, 0xe4, 0x0e, 0x31, 0x68, 0xc5, ++ 0x7a, 0xa5, 0xd3, 0x61, 0x39, 0xf9, 0xc7, 0xa3, 0x41, 0xc4, 0xaa, 0x25, 0xa0, 0x35, 0x7d, 0x89, ++ 0xd9, 0x4a, 0x79, 0x15, 0x6a, 0xd2, 0x84, 0x3f, 0x21, 0x5f, 0x7b, 0x9a, 0xe4, 0x80, 0xe5, 0x94, ++ 0x6c, 0xc7, 0x91, 0xf7, 0x20, 0x06, 0xdf, 0xda, 0x47, 0x30, 0x12, 0x42, 0x35, 0x1a, 0x95, 0x4d, ++ 0x93, 0x7f, 0xd5, 0x7e, 0xbf, 0xa9, 0x9e, 0x82, 0xc6, 0x01, 0xd9, 0xda, 0x1d, 0x86, 0x1b, 0xfe, ++ 0x45, 0x18, 0xa8, 0xc0, 0x90, 0x1b, 0x74, 0x83, 0x1d, 0xd8, 0x41, 0xea, 0x2f, 0x65, 0xba, 0x30, ++ 0x9a, 0x40, 0x07, 0x45, 0x06, 0x48, 0xa3, 0xcf, 0x58, 0x05, 0x3b, 0x34, 0x69, 0xdb, 0x77, 0x80, ++ 0x89, 0x39, 0xf8, 0x0b, 0x9d, 0x97, 0x20, 0x1d, 0x08, 0x32, 0x63, 0x35, 0x0f, 0xd5, 0xa3, 0x72, ++ 0x3a, 0xa6, 0xc6, 0x79, 0x2b, 0xc2, 0x28, 0x8b, 0x0a, 0xdf, 0x0b, 0xa9, 0x7c, 0x71, 0xfb, 0x8f, ++ 0x78, 0xab, 0x20, 0x11, 0x6d, 0x86, 0xf6, 0x33, 0xdc, 0xba, 0x14, 0x19, 0x7f, 0x9e, 0x65, 0x95, ++ 0x1d, 0x53, 0x63, 0xdd, 0xf4, 0x61, 0x14, 0xa4, 0x05, 0x8e, 0xe4, 0xb5, 0x3e, 0xd9, 0x9c, 0xa6, ++ 0x8a, 0x30, 0x93, 0x43, 0xe3, 0x36, 0xe8, 0xc5, 0x3a, 0x73, 0x82, 0x17, 0x5e, 0xca, 0xb7, 0x60, ++ 0x97, 0x63, 0xf0, 0x9e, 0x17, 0x57, 0xfc, 0x61, 0x3f, 0xfd, 0x66, 0xa2, 0x60, 0x13, 0x2b, 0xc6, ++ 0xf8, 0xad, 0x0a, 0x21, 0x49, 0xf0, 0xeb, 0x63, 0x4a, 0x8c, 0x95, 0xc2, 0x04, 0x16, 0xaa, 0x99, ++ 0xf9, 0xaa, 0x92, 0x19, 0x63, 0x2e, 0x12, 0x2b, 0xe5, 0xb3, 0xca, 0xdc, 0x8a, 0xa2, 0xa6, 0x97, ++ 0x58, 0x4b, 0xcb, 0x1d, 0x64, 0x7a, 0x60, 0x27, 0x18, 0x56, 0xa5, 0x5f, 0x11, 0xbc, 0x26, 0x96, ++ 0x2c, 0xc4, 0x84, 0xef, 0x32, 0x3d, 0x30, 0xf2, 0x0c, 0x2b, 0xb3, 0xce, 0xe9, 0x5e, 0x13, 0x4b, ++ 0x06, 0x12, 0xd6, 0x90, 0xfc, 0x81, 0x53, 0x73, 0x64, 0x82, 0x01, 0x44, 0xa2, 0x3e, 0x28, 0x24, ++ 0xbc, 0xb2, 0x3a, 0xd9, 0xf3, 0x35, 0x66, 0xa8, 0xf8, 0x6b, 0x8b, 0x36, 0xa5, 0xc7, 0x1c, 0xa7, ++ 0x9c, 0x52, 0xd1, 0xd5, 0xfa, 0xc9, 0xf0, 0xbc, 0x3c, 0x87, 0x3a, 0x70, 0xcb, 0xe5, 0x5f, 0xa4, ++ 0x55, 0x68, 0x3c, 0xc6, 0x75, 0x65, 0x3f, 0x89, 0x7f, 0xae, 0xf8, 0xc9, 0x18, 0x74, 0x7a, 0xd0, ++ 0x7c, 0xb7, 0x05, 0xf1, 0xc5, 0x78, 0x94, 0xd0, 0x25, 0x46, 0xab, 0x61, 0x02, 0x0b, 0x55, 0xad, ++ 0x2a, 0xd6, 0x52, 0x7f, 0xce, 0xbc, 0x63, 0x81, 0x68, 0xa9, 0xb2, 0x8a, 0x4b, 0x60, 0x3b, 0x6f, ++ 0x3b, 0xa1, 0x5e, 0x41, 0x01, 0x1c, 0xd1, 0xc3, 0xa5, 0xe0, 0x54, 0xb7, 0xf2, 0xc5, 0xf7, 0x81, ++ 0x9f, 0x5b, 0xba, 0x9d, 0x84, 0x68, 0x38, 0x64, 0x0e, 0xc6, 0xdb, 0x52, 0x9a, 0xfa, 0x4b, 0xb6, ++ 0xc6, 0x17, 0xe9, 0xb8, 0xca, 0xcc, 0xa1, 0x0b, 0xb9, 0xaf, 0x21, 0x13, 0x05, 0xf2, 0x61, 0x2e, ++ 0x1c, 0x54, 0xfb, 0xe5, 0xde, 0xbf, 0xed, 0xec, 0xaa, 0xb1, 0xbb, 0xab, 0xb0, 0x6d, 0x90, 0xa8, ++ 0xfe, 0xbf, 0xdc, 0xb1, 0xb5, 0x71, 0xb8, 0x10, 0x2e, 0x0e, 0x94, 0x86, 0xa6, 0x28, 0x82, 0xbd, ++ 0x62, 0xed, 0x0d, 0x64, 0x4f, 0xb8, 0x48, 0xac, 0x12, 0x89, 0xae, 0xf6, 0x6d, 0xcd, 0xdd, 0x19, ++ 0x7d, 0xb0, 0x9d, 0xc9, 0xef, 0xa6, 0x6d, 0x98, 0x8a, 0x79, 0xf4, 0x7f, 0x8c, 0xbf, 0x59, 0xa3, ++ 0x21, 0xe7, 0x73, 0x34, 0x23, 0x22, 0x6f, 0x5c, 0x6b, 0xd3, 0xee, 0x58, 0xe0, 0x96, 0x4f, 0x0d, ++ 0xc0, 0x05, 0x3f, 0x28, 0x36, 0x4d, 0xf2, 0x78, 0xdd, 0x2d, 0x20, 0x57, 0xa7, 0xcc, 0x49, 0x0a, ++ 0xf2, 0x9b, 0xb3, 0x52, 0x8e, 0xb0, 0x1e, 0xf6, 0xe6, 0xc9, 0x96, 0x0e, 0x21, 0x54, 0xd2, 0xf5, ++ 0xf7, 0x80, 0x0e, 0x8a, 0x0c, 0x90, 0x85, 0x5d, 0xb0, 0x0a, 0x76, 0x68, 0xd2, 0x75, 0xee, 0xc3, ++ 0x33, 0x99, 0x14, 0x42, 0x92, 0x23, 0x15, 0xc6, 0x94, 0xdb, 0xe9, 0x47, 0x08, 0x2c, 0x97, 0xf1, ++ 0x98, 0x4e, 0xf4, 0x35, 0x52, 0x37, 0x92, 0x5f, 0xc5, 0x7b, 0x85, 0x08, 0xb6, 0x70, 0x6f, 0x9c, ++ 0xa9, 0xd9, 0x13, 0x07, 0x94, 0x6b, 0xb6, 0x09, 0xcc, 0xde, 0xd2, 0x73, 0x61, 0xf7, 0xe0, 0x71, ++ 0x82, 0x08, 0xd9, 0x40, 0x70, 0x09, 0x2c, 0xc0, 0x0b, 0x48, 0x3f, 0xe7, 0xa4, 0x23, 0xd7, 0x10, ++ 0x4d, 0x20, 0xe2, 0xc3, 0x03, 0x24, 0xb0, 0x86, 0x2c, 0xe3, 0xfc, 0x1a, 0xd5, 0x8c, 0xda, 0x40, ++ 0xf4, 0x89, 0x65, 0xc2, 0x72, 0x31, 0x4d, 0x85, 0x82, 0x4b, 0x97, 0x4a, 0x83, 0x6a, 0xfa, 0xd1, ++ 0xf6, 0x87, 0x96, 0xb2, 0x26, 0x4e, 0x7c, 0x15, 0x1f, 0x35, 0x29, 0x76, 0x5c, 0xc1, 0xe2, 0xcd, ++ 0x14, 0x6c, 0xb1, 0xe6, 0x4d, 0x80, 0x29, 0xe9, 0x9b, 0x8a, 0x06, 0x5b, 0x4a, 0x84, 0xf0, 0xd8, ++ 0x7b, 0xa2, 0x4b, 0x59, 0x13, 0x27, 0x3e, 0xeb, 0xee, 0xfb, 0xf5, 0x3b, 0x2e, 0x81, 0x71, 0x87, ++ 0x79, 0xac, 0xb8, 0x29, 0x47, 0x58, 0x0f, 0x7b, 0x73, 0x85, 0x4b, 0x07, 0xf1, 0x2a, 0x69, 0x9b, ++ 0x17, 0x65, 0xda, 0xae, 0x33, 0x21, 0xe1, 0x31, 0xa9, 0xcb, 0xe7, 0x79, 0x1b, 0x9b, 0xe4, 0xca, ++ 0xf0, 0x95, 0x40, 0x22, 0xda, 0xcf, 0x2f, 0x66, 0x7b, 0xb7, 0x28, 0x32, 0xfe, 0xff, 0xca, 0xe9, ++ 0xbf, 0xbb, 0x51, 0x91, 0x8d, 0x94, 0xae, 0x70, 0xca, 0x2a, 0x6a, 0x14, 0xf4, 0xd8, 0x08, 0xb5, ++ 0xcf, 0x28, 0x3b, 0x83, 0x73, 0x2d, 0x9c, 0x46, 0x27, 0xab, 0xc3, 0xfd, 0x71, 0xaf, 0x0d, 0x50, ++ 0x01, 0x07, 0x98, 0x38, 0x2a, 0xde, 0xf9, 0x48, 0xaf, 0x3f, 0x5f, 0x1e, 0x8e, 0xb4, 0x0c, 0x0e, ++ 0xed, 0xc6, 0x23, 0xff, 0x2e, 0xae, 0x3b, 0xc2, 0x7e, 0x39, 0xcc, 0x87, 0xc0, 0x26, 0x56, 0x4f, ++ 0xcc, 0x21, 0x50, 0xcb, 0x0d, 0x8c, 0x54, 0x9e, 0x15, 0xea, 0x22, 0xdf, 0x20, 0xb0, 0x19, 0x42, ++ 0x15, 0x6b, 0x29, 0xde, 0x67, 0x5e, 0xd0, 0xa1, 0x34, 0xb5, 0x59, 0x45, 0xc4, 0x30, 0xfc, 0xd6, ++ 0x27, 0xf5, 0xa5, 0xa4, 0xdf, 0xa3, 0x3c, 0x2f, 0x0f, 0x51, 0xef, 0x1c, 0x42, 0xa8, 0x67, 0x29, ++ 0xa3, 0xef, 0xaa, 0x74, 0x53, 0x2b, 0x43, 0x9c, 0x60, 0x9b, 0xd1, 0xbf, 0x44, 0xb5, 0x98, 0x1d, ++ 0x0b, 0x31, 0x21, 0x4b, 0xed, 0x9e, 0x0c, 0xdd, 0x03, 0x7a, 0x5c, 0xd2, 0xab, 0xf6, 0x74, 0x62, ++ 0x38, 0xa8, 0x35, 0x09, 0x7f, 0xbd, 0x19, 0x1b, 0x97, 0xa1, 0xb5, 0x95, 0xa3, 0xda, 0xe3, 0x93, ++ 0x57, 0x66, 0xcf, 0xb6, 0x21, 0x1a, 0x0e, 0x19, 0xe2, 0xd0, 0x46, 0xf5, 0xc7, 0xdf, 0x62, 0xcc, ++ 0x67, 0xf6, 0xb0, 0xbc, 0xcd, 0x98, 0xd3, 0x07, 0x44, 0x4a, 0x4e, 0x90, 0x9e, 0xec, 0xe1, 0x2f, ++ 0x83, 0x0f, 0x41, 0x78, 0x5a, 0xd7, 0xd5, 0x88, 0xa4, 0x77, 0x60, 0xf9, 0x2a, 0x97, 0xdb, 0x1e, ++ 0x3c, 0xb4, 0x10, 0xe9, 0xd7, 0x43, 0x7b, 0xf8, 0x6e, 0x5d, 0x0a, 0xed, 0xde, 0x4f, 0xd3, 0xab, ++ 0xfd, 0xb6, 0xb7, 0xf9, 0xcb, 0xd0, 0x70, 0xc8, 0x1c, 0x4f, 0x75, 0xa4, 0xf7, 0x37, 0x96, 0xaf, ++ 0xac, 0xc2, 0xae, 0xdf, 0x16, 0x4b, 0x2d, 0xa2, 0x9a, 0x1d, 0x32, 0x15, 0x92, 0xd6, 0xdc, 0x47, ++ 0x95, 0x6d, 0x03, 0xee, 0x43, 0x28, 0xcd, 0xf1, 0xa2, 0x83, 0xd8, 0x9e, 0xbf, 0xb8, 0x33, 0xda, ++ 0x51, 0x74, 0x19, 0x26, 0xdd, 0x9b, 0x5d, 0x6a, 0x86, 0x52, 0x47, 0xb1, 0x65, 0xe1, 0x4a, 0xe8, ++ 0xd2, 0x7b, 0x58, 0x5e, 0x87, 0x4c, 0x88, 0xe2, 0x22, 0x25, 0x27, 0x48, 0x4f, 0x76, 0x91, 0xf6, ++ 0xe1, 0xe2, 0x4c, 0x1c, 0x15, 0x6f, 0x9d, 0x24, 0xb6, 0xfe, 0xce, 0x0f, 0x47, 0x5a, 0x06, 0x07, ++ 0xe4, 0xf9, 0xf1, 0xc4, 0x97, 0x4f, 0x06, 0x8f, 0xe0, 0x3d, 0x2e, 0x69, 0xb4, 0x7b, 0x3a, 0x31, ++ 0xa6, 0xf4, 0x17, 0xac, 0xd1, 0x0b, 0xd8, 0x37, 0x36, 0x58, 0x31, 0xd9, 0xb7, 0x94, 0xa4, 0x2b, ++ 0x2e, 0xca, 0x77, 0x9f, 0x66, 0x42, 0x01, 0x62, 0x91, 0x55, 0x0d, 0xf2, 0x36, 0xf5, 0x0b, 0x57, ++ 0x9e, 0x5c, 0x22, 0xa5, 0xae, 0xb6, 0xc1, 0x2c, 0xa1, 0xf9, 0x84, 0x4c, 0x14, 0x4e, 0x47, 0xb8, ++ 0xb0, 0x96, 0x55, 0x3a, 0xc8, 0xf4, 0xc0, 0x4e, 0x30, 0xac, 0x89, 0xbe, 0x22, 0xbb, 0x4c, 0xef, ++ 0x04, 0x1c, 0x25, 0xe0, 0xa8, 0xfe, 0x62, 0xe3, 0xf9, 0xfc, 0xbf, 0x78, 0x7d, 0x95, 0x30, 0x38, ++ 0xca, 0x33, 0x86, 0x5b, 0xf1, 0x0d, 0x07, 0xed, 0x71, 0x68, 0x23, 0x9b, 0x82, 0x8e, 0x31, 0x66, ++ 0xe0, 0xe5, 0xd4, 0x24, 0x3f, 0xb1, 0x64, 0x6c, 0x19, 0xc1, 0x91, 0x11, 0xc9, 0xee, 0x0a, 0x09, ++ 0x7e, 0xb9, 0xf6, 0x81, 0x91, 0x07, 0xa5, 0x40, 0xb8, 0x38, 0x15, 0x5d, 0xdd, 0xa0, 0x4d, 0xb1, ++ 0x66, 0xf1, 0x28, 0x84, 0xe7, 0x46, 0x2a, 0x4f, 0xeb, 0x75, 0x11, 0x8e, 0x10, 0x58, 0xed, 0x21, ++ 0x50, 0x73, 0x81, 0x1e, 0xf7, 0x45, 0xa4, 0x22, 0x29, 0x6d, 0x18, 0xaf, 0xeb, 0x55, 0x46, 0xe6, ++ 0x49, 0x3c, 0xc7, 0x23, 0xab, 0xda, 0xd2, 0x65, 0xd5, 0x1f, 0x43, 0x62, 0xa8, 0x19, 0xea, 0x78, ++ 0x5b, 0x42, 0xa0, 0x55, 0x1a, 0xdb, 0xa8, 0xff, 0x2a, 0x17, 0x44, 0x7d, 0x40, 0xa3, 0x32, 0x84, ++ 0x99, 0x49, 0x6c, 0x0d, 0x78, 0xe9, 0x6b, 0x17, 0x6a, 0x44, 0xda, 0x16, 0x38, 0xc4, 0x63, 0x92, ++ 0x68, 0xdb, 0xb4, 0x17, 0x88, 0xf8, 0xbd, 0x39, 0xbe, 0xcc, 0xad, 0x3a, 0x48, 0x8f, 0xa5, 0x75, ++ 0xe9, 0xda, 0x06, 0x1f, 0x86, 0x50, 0x59, 0x21, 0x87, 0xc5, 0x73, 0xff, 0xbd, 0xb3, 0x66, 0x77, ++ 0xc5, 0x1e, 0x82, 0xf0, 0xb4, 0x6d, 0x69, 0xd3, 0x8b, 0xee, 0xc0, 0x31, 0x54, 0xed, 0x75, 0x3c, ++ }, ++ { /* 8 */ ++ 0xd7, 0x48, 0x12, 0xa3, 0xbe, 0x29, 0x25, 0xd9, 0x10, 0xec, 0xae, 0xdf, 0x6a, 0x2d, 0x01, 0xfc, ++ 0x63, 0x44, 0x11, 0xde, 0x60, 0x0e, 0x82, 0x6c, 0x92, 0x7c, 0xf2, 0x2a, 0x20, 0xcb, 0xa0, 0xee, ++ 0x5e, 0x13, 0x74, 0x22, 0x3d, 0x0d, 0xaf, 0x72, 0xfa, 0x27, 0xc7, 0x23, 0xaa, 0xd2, 0x47, 0xdd, ++ 0xaa, 0x8c, 0x23, 0x54, 0x8a, 0x01, 0x1b, 0x0a, 0x99, 0x88, 0x13, 0x07, 0xc7, 0xb6, 0x5d, 0x11, ++ 0xea, 0x1f, 0x77, 0x5f, 0xe3, 0x2a, 0x08, 0xc7, 0x78, 0xb7, 0x9b, 0xd6, 0xe0, 0x34, 0xe6, 0xcf, ++ 0x2a, 0x69, 0x8b, 0x42, 0x58, 0x57, 0x3d, 0x53, 0x98, 0xf6, 0xc0, 0x66, 0x89, 0x71, 0xe8, 0x6e, ++ 0x29, 0x16, 0xe4, 0x73, 0x84, 0x86, 0x44, 0x75, 0x7a, 0x4b, 0xfe, 0x14, 0x7c, 0x79, 0x4f, 0x31, ++ 0x9c, 0x8e, 0xc2, 0xa0, 0xaf, 0xee, 0x75, 0x63, 0xa6, 0xb0, 0x09, 0xcf, 0x65, 0x26, 0x32, 0x16, ++ 0xe1, 0x4a, 0xf3, 0x57, 0x9b, 0xc6, 0x4b, 0xb0, 0x2f, 0xd4, 0xb4, 0x17, 0xc8, 0xbd, 0x6e, 0xfb, ++ 0xa4, 0x58, 0x16, 0x0f, 0x55, 0x5d, 0xd3, 0x17, 0x2b, 0xef, 0x7e, 0x50, 0x33, 0x27, 0xff, 0xc4, ++ 0xeb, 0x8b, 0x52, 0xf1, 0x16, 0x65, 0x9e, 0x64, 0x26, 0xdc, 0x30, 0xf8, 0xb3, 0x8d, 0x3a, 0xfa, ++ 0x68, 0x11, 0x95, 0xd6, 0x18, 0xe2, 0xc1, 0x1b, 0xc5, 0x1f, 0xdd, 0xeb, 0x08, 0x42, 0x28, 0xda, ++ 0x9d, 0x1a, 0xe7, 0x0e, 0x5a, 0xa1, 0xe3, 0xc0, 0xf8, 0xdb, 0xa2, 0xe1, 0x36, 0x9f, 0xee, 0x23, ++ 0xae, 0x99, 0xb7, 0xa9, 0xd8, 0xfe, 0x06, 0xc3, 0x22, 0xe7, 0xfa, 0xbf, 0x48, 0x17, 0xab, 0xc5, ++ 0x28, 0x82, 0xc1, 0xdd, 0x71, 0xc9, 0xd2, 0xd6, 0x24, 0x20, 0x55, 0x3a, 0x2f, 0xc0, 0x93, 0x04, ++ 0xb7, 0x73, 0x6c, 0x4c, 0x02, 0xf6, 0xde, 0x93, 0x60, 0x2d, 0x62, 0x87, 0xbf, 0xee, 0x06, 0x4d, ++ 0x55, 0x46, 0xf0, 0x2a, 0x45, 0xe1, 0xec, 0x05, 0xad, 0x44, 0xe8, 0xe2, 0x82, 0x5b, 0xcf, 0xe9, ++ 0xd0, 0x22, 0xe9, 0x6f, 0x30, 0x07, 0x41, 0x36, 0x49, 0x3e, 0x79, 0x15, 0x10, 0x84, 0x50, 0x77, ++ 0xaf, 0x0d, 0x92, 0x07, 0x2d, 0xb1, 0x90, 0x60, 0x7c, 0x8c, 0x51, 0x91, 0x1b, 0xae, 0x77, 0xf0, ++ 0x62, 0xd0, 0x34, 0x70, 0x95, 0x41, 0x14, 0xcf, 0xcc, 0x17, 0x59, 0x04, 0x73, 0x72, 0x7c, 0xdb, ++ 0xf7, 0xe0, 0x38, 0x47, 0x6b, 0xdd, 0xcd, 0x5e, 0x81, 0x12, 0xea, 0x56, 0x98, 0x6c, 0xbd, 0x93, ++ 0xef, 0x9e, 0xc6, 0x0c, 0x44, 0x9a, 0x83, 0xad, 0x9d, 0xb3, 0xd9, 0x40, 0x3c, 0x2c, 0xcc, 0x2e, ++ 0xb3, 0x66, 0xf8, 0xb1, 0x50, 0x09, 0xc3, 0x5a, 0xdb, 0x42, 0x8b, 0x3f, 0x30, 0x4f, 0xf0, 0x99, ++ 0x2e, 0x7c, 0x1f, 0xbf, 0x0a, 0xa8, 0x20, 0x9a, 0x23, 0x99, 0x29, 0xde, 0x06, 0xd0, 0x1e, 0xba, ++ 0x96, 0x4f, 0x63, 0x06, 0x22, 0x4d, 0xa0, 0xb7, 0xaf, 0xb8, 0x8d, 0x20, 0x1e, 0x16, 0x66, 0x17, ++ 0x1f, 0x14, 0x05, 0x87, 0xa1, 0x69, 0x2a, 0x1c, 0x45, 0x73, 0xe4, 0xdc, 0xde, 0xe9, 0x20, 0x36, ++ 0xa5, 0xcc, 0x33, 0xa1, 0xa0, 0x12, 0x45, 0xb4, 0x75, 0x84, 0xd5, 0x7e, 0x60, 0x9e, 0x23, 0xf1, ++ 0x24, 0xbd, 0xbe, 0x19, 0x87, 0x0b, 0xf5, 0x4e, 0x2a, 0x91, 0xad, 0x31, 0x7d, 0xe0, 0x4a, 0xbb, ++ 0x88, 0xcf, 0x43, 0x2f, 0x76, 0x6b, 0x1c, 0x08, 0xb4, 0xa0, 0xc2, 0xd2, 0x93, 0x46, 0x9a, 0x14, ++ 0xfe, 0x5e, 0xf6, 0xd0, 0x3a, 0xaf, 0x61, 0xac, 0x6a, 0xa7, 0x50, 0xcb, 0x16, 0x54, 0x4e, 0xcd, ++ 0x03, 0x7f, 0x6f, 0x31, 0xdc, 0xd1, 0x79, 0x26, 0xe2, 0xbd, 0x3e, 0x72, 0xf5, 0x08, 0xa7, 0x5f, ++ 0x86, 0x1b, 0x76, 0x74, 0xa9, 0x37, 0xd4, 0x15, 0x06, 0xc7, 0xaf, 0x85, 0x67, 0xd7, 0x38, 0xc1, ++ 0xf5, 0x0b, 0x72, 0xd8, 0x42, 0x43, 0x22, 0xdb, 0x3d, 0xc4, 0x7f, 0x0a, 0x3e, 0xdd, 0xc6, 0xf9, ++ 0xf0, 0x8a, 0xc3, 0x8b, 0xe5, 0xf3, 0xa9, 0xb1, 0xd8, 0xc0, 0x3d, 0x9c, 0xe2, 0xc5, 0xec, 0x18, ++ 0x64, 0x2e, 0xea, 0x12, 0xee, 0x20, 0xe6, 0x83, 0xcb, 0xae, 0x25, 0xe0, 0x5a, 0x62, 0xf1, 0x65, ++ 0x21, 0x3c, 0x0f, 0x4a, 0x20, 0xbb, 0x7e, 0x24, 0xcf, 0x95, 0xef, 0xa7, 0xa1, 0xf8, 0x60, 0x5a, ++ 0x1b, 0x01, 0x91, 0x7a, 0xf3, 0x96, 0x37, 0xd5, 0xfe, 0x1c, 0x0d, 0x64, 0x51, 0x48, 0xd6, 0xe2, ++ 0x1d, 0xff, 0x4f, 0x18, 0x88, 0xf7, 0xc5, 0x99, 0xf9, 0xa5, 0x71, 0x80, 0x78, 0x58, 0x5b, 0x5c, ++ 0x69, 0x85, 0xb0, 0x78, 0xed, 0xad, 0x57, 0xb8, 0x9b, 0x74, 0x76, 0xc5, 0x5b, 0xfb, 0xf4, 0xef, ++ 0x89, 0x5b, 0x66, 0x81, 0x83, 0x24, 0x8a, 0xab, 0xea, 0xcb, 0x69, 0xfc, 0xc0, 0xff, 0x46, 0x21, ++ 0x43, 0xec, 0x3b, 0x3a, 0xb5, 0xfa, 0x6a, 0xeb, 0x03, 0x82, 0xb6, 0xa3, 0xd2, 0x8a, 0x1c, 0x81, ++ 0xd8, 0x08, 0x02, 0x56, 0x94, 0x3a, 0x7b, 0x67, 0xfc, 0xe0, 0x68, 0xa6, 0xcd, 0x05, 0x7f, 0x1c, ++ 0x5b, 0x92, 0xc5, 0x71, 0x9a, 0xbd, 0x24, 0x18, 0x1f, 0x23, 0x85, 0xb5, 0x76, 0xca, 0x6d, 0x3c, ++ 0xd1, 0xb6, 0xcc, 0xc1, 0xc5, 0x48, 0xd7, 0x95, 0x17, 0x55, 0xd2, 0x3b, 0x43, 0x3d, 0x8c, 0x42, ++ 0x07, 0x6a, 0xfb, 0xcc, 0x8e, 0x2e, 0x64, 0xef, 0x59, 0xd2, 0xd7, 0xca, 0x7a, 0xa9, 0x51, 0x8b, ++ 0x0a, 0xc1, 0xa1, 0xa6, 0x8d, 0xa3, 0xd5, 0xd4, 0x09, 0x08, 0x84, 0xef, 0x7b, 0x30, 0x54, 0x01, ++ 0x25, 0x29, 0x9b, 0xb7, 0x72, 0x44, 0x63, 0xed, 0x74, 0xfa, 0x06, 0x1f, 0x2e, 0x59, 0x96, 0x8e, ++ 0xa3, 0x32, 0xed, 0xc3, 0xdb, 0x73, 0xb7, 0xf8, 0x72, 0x3d, 0xa9, 0x9a, 0x49, 0x8e, 0xae, 0x4f, ++ 0x22, 0x43, 0x60, 0x7b, 0xfc, 0x6a, 0x07, 0x02, 0x2d, 0x28, 0xd1, 0xd5, 0x54, 0xf0, 0xc7, 0x05, ++ 0x61, 0xaf, 0x5b, 0x41, 0x49, 0x90, 0x6d, 0xe9, 0x2e, 0xaa, 0x67, 0x76, 0x86, 0x7a, 0xdb, 0x84, ++ 0x14, 0x41, 0x81, 0x8f, 0xd9, 0x85, 0x69, 0x6b, 0x12, 0x10, 0xcb, 0x1d, 0xf6, 0x60, 0xa8, 0x02, ++ 0xa6, 0xb3, 0x5c, 0x90, 0x7c, 0xc3, 0x3c, 0x92, 0x97, 0x39, 0xeb, 0x0c, 0x95, 0x96, 0x84, 0xae, ++ 0x11, 0xc0, 0x30, 0xdc, 0x7e, 0x35, 0xe2, 0x01, 0xf7, 0x14, 0x89, 0x8b, 0x2a, 0x78, 0x82, 0xe3, ++ 0x02, 0xeb, 0x4a, 0x9f, 0x29, 0x9e, 0xef, 0x85, 0xbc, 0xd6, 0x95, 0x5c, 0xa6, 0xb1, 0x7b, 0x6a, ++ 0x2f, 0xe8, 0x3a, 0x11, 0xff, 0xe7, 0xb6, 0x39, 0x7d, 0xf2, 0x82, 0xf0, 0x55, 0x69, 0xc2, 0x8f, ++ 0xca, 0xb7, 0x5d, 0xbb, 0x36, 0xde, 0xe0, 0x40, 0xe9, 0x49, 0xdf, 0x5f, 0x12, 0x75, 0x5a, 0xa0, ++ 0x3c, 0xc3, 0x40, 0x52, 0xa8, 0x4c, 0xbb, 0xbd, 0x36, 0x30, 0x9e, 0x27, 0xd9, 0xa0, 0x3b, 0x06, ++ 0x4e, 0x47, 0x61, 0x50, 0xb6, 0x77, 0xdb, 0xd0, 0x53, 0x58, 0xe5, 0x86, 0xd3, 0x13, 0x19, 0x0b, ++ 0x7d, 0xc4, 0x31, 0xf7, 0x34, 0x28, 0x3e, 0xd3, 0x89, 0x64, 0xbd, 0xd8, 0xad, 0x9b, 0x5c, 0xed, ++ 0xb9, 0xa7, 0x59, 0x17, 0xdd, 0xaa, 0x16, 0x8e, 0xd2, 0x4a, 0x0f, 0xd0, 0x4b, 0x7f, 0xa4, 0x98, ++ 0x80, 0xe5, 0xa8, 0x16, 0xd2, 0x56, 0x26, 0x59, 0x01, 0x7e, 0xd3, 0x61, 0x4e, 0xc7, 0xb5, 0x7f, ++ 0x04, 0x15, 0x94, 0xfd, 0x52, 0xff, 0x1d, 0xc9, 0xbb, 0x6f, 0xe9, 0xb8, 0x8f, 0xa1, 0xf6, 0xd4, ++ 0x32, 0x17, 0x75, 0x09, 0x77, 0x10, 0x73, 0xa0, 0x84, 0x57, 0xf3, 0x70, 0x2d, 0x31, 0x99, 0xd3, ++ 0xc6, 0x88, 0x22, 0x7f, 0xc0, 0x1c, 0xc7, 0xd8, 0xe7, 0xf8, 0x27, 0x54, 0x40, 0x55, 0x83, 0x1f, ++ 0x41, 0x07, 0x71, 0xa5, 0x9c, 0x64, 0x85, 0x6e, 0xbf, 0x54, 0x23, 0xff, 0x74, 0x3b, 0x67, 0xeb, ++ 0x0b, 0x55, 0x84, 0x08, 0x78, 0xec, 0x43, 0x77, 0x57, 0x63, 0x2f, 0xc1, 0x28, 0x89, 0x88, 0x34, ++ 0xfb, 0xdf, 0x47, 0x83, 0x9d, 0x1f, 0xea, 0xc6, 0x8f, 0xa3, 0x12, 0x5d, 0xca, 0x4c, 0x64, 0x2c, ++ 0x6f, 0x7b, 0x6e, 0x1a, 0x96, 0xcc, 0xa5, 0xf4, 0x9c, 0xcd, 0x0a, 0x21, 0x72, 0xeb, 0x79, 0x51, ++ 0x4b, 0xc6, 0xd0, 0x03, 0x11, 0xc7, 0x50, 0xba, 0xb6, 0x5c, 0xa7, 0x10, 0x0f, 0x0b, 0x33, 0xea, ++ 0xdc, 0x1d, 0x96, 0xab, 0xc6, 0xc5, 0x66, 0xae, 0x47, 0x8f, 0x81, 0x1e, 0x42, 0xa4, 0x89, 0xc8, ++ 0x95, 0x30, 0x0c, 0x37, 0xfe, 0x9c, 0xd9, 0x91, 0x4d, 0x05, 0xb3, 0x52, 0xeb, 0x1e, 0xc1, 0x48, ++ 0x84, 0xf0, 0x3c, 0xeb, 0x80, 0xa9, 0x3b, 0x90, 0xba, 0x11, 0x3a, 0xd9, 0xc1, 0x66, 0x43, 0xab, ++ 0xbb, 0x4c, 0x13, 0x88, 0xf4, 0x34, 0xf9, 0x0b, 0x6e, 0x9c, 0x9a, 0x8c, 0xed, 0xce, 0xdf, 0xf2, ++ 0xc7, 0x1c, 0x07, 0xd1, 0x35, 0x53, 0x51, 0x7b, 0xb9, 0x93, 0x8c, 0x7a, 0x13, 0xec, 0x5f, 0x2a, ++ 0x16, 0xaa, 0xcb, 0x10, 0xf0, 0x1b, 0x86, 0xee, 0xae, 0xc6, 0x5e, 0x41, 0x50, 0xd1, 0xd3, 0x68, ++ 0xde, 0xf6, 0xdc, 0x34, 0xef, 0x5b, 0x89, 0x2b, 0xfb, 0x59, 0x14, 0x42, 0xe4, 0x15, 0xf2, 0xa2, ++ 0xdd, 0x89, 0xb3, 0x05, 0x33, 0x8a, 0xf0, 0x0d, 0x19, 0xe4, 0x2a, 0x30, 0x11, 0x1d, 0x55, 0xfd, ++ 0x67, 0x51, 0x85, 0x23, 0x32, 0xf1, 0x9f, 0xa5, 0x29, 0x13, 0x1b, 0x92, 0xaf, 0x6a, 0x56, 0x3a, ++ 0xe0, 0xde, 0xd6, 0xf9, 0x6e, 0x89, 0xdd, 0x13, 0x71, 0xbf, 0x1f, 0x39, 0x9b, 0x04, 0xb2, 0xce, ++ 0xf4, 0x9f, 0x57, 0x76, 0xb7, 0x0c, 0xb4, 0x78, 0x63, 0xaf, 0xd4, 0x24, 0x6d, 0x64, 0x1a, 0xcc, ++ 0x48, 0xb9, 0xbf, 0x32, 0xcd, 0x16, 0x29, 0x9c, 0x54, 0xe1, 0x99, 0x62, 0xfa, 0x03, 0x94, 0xb5, ++ 0xe6, 0x20, 0x08, 0x9b, 0x15, 0xe8, 0x2f, 0x5f, 0x76, 0x06, 0x63, 0xdd, 0xb2, 0x14, 0x3f, 0x70, ++ 0x6c, 0x04, 0x01, 0x2b, 0x4a, 0x1d, 0xdc, 0xd2, 0x7e, 0x70, 0x34, 0x53, 0x87, 0xe3, 0xde, 0x0e, ++ 0x59, 0x79, 0x8f, 0xee, 0xb3, 0x23, 0xcb, 0x9d, 0xa3, 0xf5, 0x10, 0xe9, 0xd0, 0x7b, 0x16, 0x56, ++ 0x50, 0xc7, 0x41, 0x79, 0xe2, 0x51, 0x67, 0x6f, 0x48, 0x40, 0xaa, 0x74, 0x5e, 0x43, 0xe5, 0x08, ++ 0x78, 0x45, 0x80, 0xa4, 0x93, 0x98, 0xb5, 0xb9, 0x6c, 0x60, 0xff, 0x4e, 0x71, 0x83, 0x76, 0x0c, ++ 0xda, 0xe3, 0x48, 0xc9, 0xbd, 0xa4, 0x94, 0xe2, 0x40, 0x36, 0xfd, 0xfa, 0x6b, 0xb4, 0x04, 0x76, ++ 0xb4, 0x0c, 0x03, 0x7d, 0xde, 0x27, 0xa7, 0xb5, 0x82, 0x90, 0x5c, 0xf5, 0x4a, 0xe6, 0xa1, 0x12, ++ 0x0c, 0x3f, 0x7f, 0xc4, 0xf6, 0xc2, 0x27, 0x98, 0x0e, 0xb1, 0xf8, 0x0b, 0x52, 0x20, 0xd9, 0xbf, ++ 0xf2, 0x61, 0x89, 0x14, 0xcc, 0x6d, 0x46, 0x34, 0x64, 0x16, 0xa8, 0xc0, 0x44, 0x74, 0x97, 0x72, ++ 0xbe, 0xcd, 0xa2, 0xdb, 0x53, 0x84, 0x72, 0x61, 0x8b, 0x98, 0xd8, 0x1a, 0x31, 0xd6, 0xf5, 0x13, ++ 0xf3, 0xf5, 0xac, 0xba, 0x39, 0x22, 0xd0, 0x97, 0x3a, 0x7d, 0x03, 0xee, 0x17, 0xcd, 0x4b, 0x47, ++ 0x91, 0x25, 0x98, 0xca, 0xac, 0x63, 0xc4, 0x58, 0xf6, 0x6a, 0x5a, 0xea, 0x64, 0xbf, 0x37, 0x9c, ++ 0x5c, 0xf8, 0x3e, 0xbd, 0x14, 0x93, 0x40, 0xf7, 0x46, 0xf1, 0x52, 0x7f, 0x0c, 0x63, 0x3c, 0xb7, ++ 0x17, 0x3e, 0xee, 0xbe, 0x05, 0x54, 0x10, 0x4d, 0xf0, 0xad, 0xf5, 0x6f, 0x03, 0x68, 0x0f, 0x5d, ++ 0x7f, 0x2f, 0x7b, 0x68, 0x1d, 0xb6, 0xd1, 0x56, 0x35, 0xb2, 0x28, 0x84, 0x0b, 0x2a, 0x27, 0x87, ++ 0x82, 0x0e, 0xe2, 0x89, 0xfb, 0xc8, 0xc9, 0xdc, 0xbd, 0xa8, 0x46, 0x3d, 0xe8, 0x76, 0xce, 0x15, ++ 0xc0, 0x76, 0xfc, 0x1d, 0xbb, 0x7d, 0x35, 0x94, 0xe0, 0x41, 0x5b, 0xb0, 0x69, 0x45, 0x0e, 0xa1, ++ 0xd5, 0xa3, 0x58, 0x3c, 0x97, 0xb7, 0xca, 0x5c, 0xac, 0x3a, 0x3b, 0x83, 0xcc, 0x9c, 0x7a, 0x96, ++ 0xd9, 0x9c, 0x27, 0xf8, 0x61, 0x75, 0xed, 0xc4, 0xa2, 0x8b, 0xc3, 0x88, 0x9e, 0xbc, 0xa3, 0x29, ++ 0xa0, 0x4d, 0x82, 0xf2, 0x07, 0xa2, 0xce, 0xde, 0x90, 0x80, 0x97, 0xe8, 0xbc, 0x86, 0x09, 0x10, ++ 0xa8, 0x67, 0x69, 0xcb, 0xa3, 0x9f, 0xf4, 0x8f, 0x25, 0x5e, 0x86, 0x5b, 0x61, 0x07, 0x26, 0x7b, ++ 0xad, 0xe6, 0xd8, 0x98, 0x04, 0x2f, 0x7f, 0xe5, 0xc0, 0x5a, 0xc4, 0xcd, 0xbd, 0x1f, 0x0c, 0x9a, ++ 0xba, 0xd8, 0x36, 0x26, 0x01, 0x7b, 0x6f, 0xa8, 0x30, 0xf7, 0x31, 0xa2, 0xbe, 0x77, 0x03, 0xc7, ++ 0xb1, 0x8d, 0xb2, 0x2e, 0x79, 0x97, 0x2c, 0xdf, 0x67, 0x94, 0x1e, 0x63, 0x96, 0xfe, 0x8b, 0xf3, ++ 0xe3, 0xa1, 0xb9, 0xc8, 0xb2, 0x58, 0xa4, 0x35, 0x93, 0x02, 0x21, 0x4b, 0x6e, 0x0c, 0x15, 0x91, ++ 0xb6, 0xe7, 0x49, 0xe2, 0xf7, 0xb9, 0x48, 0x30, 0x3e, 0x46, 0xc9, 0xa9, 0xec, 0x57, 0xda, 0x78, ++ 0x20, 0xa8, 0x2a, 0xe4, 0xd5, 0xf4, 0xe8, 0x87, 0x91, 0xfe, 0x44, 0x89, 0xf2, 0x41, 0xbc, 0x6f, ++ 0x9b, 0xe4, 0x39, 0x6c, 0x21, 0xc0, 0x11, 0x8c, 0xff, 0x62, 0xde, 0x05, 0x1f, 0x8f, 0x63, 0x9d, ++ 0x85, 0x64, 0x19, 0x45, 0x75, 0xe6, 0xad, 0x33, 0xe4, 0x7a, 0x91, 0xf7, 0x92, 0xdf, 0x9f, 0x9e, ++ 0x7e, 0xbb, 0x5e, 0xc6, 0xe8, 0xf9, 0x47, 0xf5, 0x6b, 0xd9, 0x83, 0xaa, 0x58, 0x93, 0xfb, 0xb2, ++ 0x60, 0x3b, 0x7e, 0xef, 0xbc, 0xdf, 0xfb, 0x4a, 0x70, 0xc1, 0xcc, 0x58, 0xd5, 0xc3, 0x07, 0xb1, ++ 0x37, 0x96, 0xc4, 0x5a, 0xd0, 0xa0, 0xf8, 0xca, 0x61, 0x53, 0xb1, 0xe6, 0xf1, 0x29, 0xb3, 0x32, ++ 0xc4, 0x63, 0x68, 0xe0, 0xe9, 0x82, 0x28, 0x5d, 0x5b, 0x2e, 0xb2, 0x08, 0xe6, 0xe4, 0xf8, 0x75, ++ 0xfa, 0x4b, 0x62, 0x2d, 0x68, 0x50, 0x7c, 0x65, 0xd1, 0xc8, 0xb9, 0x73, 0x99, 0xf5, 0xb8, 0x19, ++ 0x51, 0x53, 0x64, 0xd7, 0x17, 0x1e, 0xf1, 0xcc, 0x16, 0x2b, 0x01, 0x5a, 0x0d, 0xfa, 0x39, 0x3d, ++ 0xc9, 0xc8, 0x32, 0x8a, 0xea, 0x0f, 0x99, 0x66, 0x0b, 0xf4, 0xe1, 0x2d, 0xe7, 0x7d, 0xfd, 0xff, ++ 0x01, 0x94, 0x25, 0xae, 0xf5, 0x4f, 0x96, 0xa3, 0x5e, 0x6b, 0xab, 0x2e, 0x53, 0xb9, 0xdc, 0x35, ++ 0x0d, 0xab, 0x5a, 0x6a, 0x03, 0x8d, 0xb1, 0x3b, 0x50, 0xda, 0x53, 0x25, 0x01, 0x99, 0x05, 0x8a, ++ 0x8a, 0x24, 0x09, 0xb0, 0x5f, 0xf5, 0xf3, 0x8d, 0x08, 0x76, 0x57, 0x8e, 0x35, 0xf7, 0xe1, 0x7e, ++ 0x34, 0xe9, 0xab, 0x6b, 0x0c, 0x71, 0x81, 0xec, 0x83, 0xee, 0x8f, 0x94, 0x04, 0x21, 0x14, 0x6d, ++ 0x4d, 0x38, 0x0e, 0x61, 0x6a, 0xa6, 0xa2, 0xf6, 0xb1, 0xe5, 0xdb, 0xf4, 0x26, 0x1b, 0xbe, 0x54, ++ 0xb0, 0x19, 0x97, 0x80, 0x8c, 0xd8, 0xba, 0x7c, 0x39, 0xff, 0xb5, 0x4d, 0xc5, 0x47, 0x57, 0xc6, ++ 0x49, 0x2d, 0x9a, 0x9c, 0x38, 0x59, 0xbf, 0x3f, 0x0a, 0x8a, 0x32, 0x4c, 0xa9, 0xba, 0x48, 0x80, ++ 0x92, 0x5a, 0xf7, 0xfb, 0x70, 0xb2, 0xbd, 0x7e, 0x14, 0xd7, 0x64, 0x98, 0x91, 0xb7, 0x90, 0xc3, ++ 0x18, 0x7e, 0xfe, 0x4b, 0x2f, 0x47, 0x4e, 0xf3, 0x1c, 0xa1, 0x33, 0x16, 0xa4, 0x40, 0x71, 0xbd, ++ 0x72, 0x84, 0x21, 0x02, 0x1e, 0x3b, 0x60, 0x6d, 0x65, 0x68, 0x7b, 0xa1, 0x0a, 0xb3, 0x22, 0x0d, ++ 0x53, 0xb8, 0x2e, 0x48, 0x3e, 0x80, 0x1e, 0x49, 0xaa, 0xfd, 0x94, 0x06, 0xab, 0x4b, 0x42, 0x57, ++ 0x4a, 0x52, 0xf5, 0xad, 0xe4, 0x88, 0xc6, 0x19, 0xe8, 0x37, 0x0c, 0x3e, 0x5c, 0xb2, 0xef, 0xdf, ++ 0x8d, 0x4e, 0xf2, 0x7c, 0xd1, 0xdb, 0x97, 0x62, 0x51, 0xa4, 0x80, 0x44, 0x4f, 0x5e, 0xb0, 0xf5, ++ 0xab, 0x18, 0x06, 0xfa, 0x7f, 0x4e, 0x8d, 0xa9, 0xc7, 0xe3, 0xb8, 0x29, 0x94, 0x0f, 0x81, 0x24, ++ 0x90, 0xb1, 0xbd, 0x64, 0x59, 0x2c, 0x52, 0xfb, 0xa8, 0x01, 0xf1, 0xc4, 0x37, 0x06, 0xeb, 0xa9, ++ 0x4f, 0xd3, 0x44, 0xfe, 0x43, 0x38, 0x4d, 0x73, 0x0d, 0x33, 0x4e, 0xa8, 0x80, 0xaa, 0xc5, 0x3e, ++ 0x9a, 0x70, 0x1c, 0xc2, 0xd4, 0x8f, 0x87, 0x2f, 0xa1, 0x09, 0x75, 0x2b, 0x4c, 0x36, 0xbf, 0xa8, ++ 0xdb, 0x77, 0x6d, 0x67, 0x48, 0xeb, 0x02, 0x41, 0x1e, 0x5d, 0x56, 0xd4, 0x38, 0x0d, 0xd8, 0x43, ++ 0xd6, 0xdc, 0x37, 0x0d, 0x4b, 0x66, 0xb3, 0x7a, 0x4e, 0x87, 0x05, 0xf1, 0x39, 0x94, 0xdd, 0xc9, ++ 0x1a, 0x95, 0xb4, 0xd4, 0x06, 0xd9, 0xa1, 0x76, 0xa0, 0x77, 0xa6, 0x4a, 0x02, 0xf1, 0x0a, 0xd7, ++ 0xbc, 0x26, 0xe8, 0x44, 0x7a, 0x1a, 0x9d, 0xe4, 0x37, 0x4e, 0x4d, 0x46, 0x97, 0x67, 0x8e, 0x79, ++ 0x10, 0x54, 0x15, 0x72, 0x8b, 0x7a, 0x74, 0xa2, 0xa9, 0x7f, 0x22, 0xa5, 0x79, 0xc1, 0x5e, 0xd6, ++ 0x93, 0xce, 0xd2, 0x55, 0x85, 0xfd, 0x2b, 0xdd, 0x4a, 0xbc, 0xcf, 0xb6, 0xc2, 0x0e, 0x4c, 0xf6, ++ 0x9e, 0x65, 0x88, 0x3f, 0x86, 0x70, 0x9a, 0xe6, 0x1a, 0x66, 0x9c, 0x93, 0xc3, 0x97, 0x49, 0x7c, ++ 0x97, 0xdb, 0x46, 0xa8, 0xd7, 0x02, 0x36, 0x14, 0xf1, 0xd3, 0x26, 0x0e, 0x4d, 0xaf, 0xba, 0x22, ++ 0x30, 0xfc, 0x3f, 0x96, 0x5e, 0x8e, 0x9c, 0x25, 0x38, 0x81, 0x66, 0x2c, 0x8b, 0x80, 0xe2, 0xb9, ++ 0x1e, 0x80, 0x20, 0x29, 0x54, 0x26, 0xbc, 0xbf, 0x1b, 0x18, 0x4f, 0xf2, 0x8d, 0x50, 0xfc, 0x03, ++ 0x0f, 0x40, 0x10, 0xf5, 0x2a, 0x13, 0x5e, 0xbe, 0xec, 0x0c, 0xc6, 0x79, 0xa7, 0x28, 0x7e, 0xe0, ++ 0x66, 0xc5, 0xa0, 0x8d, 0xc7, 0xbe, 0x09, 0x06, 0x77, 0x78, 0xb0, 0xbc, 0xfc, 0xd3, 0x8a, 0x0f, ++ 0x77, 0x05, 0x90, 0x51, 0xb9, 0x8b, 0xeb, 0x07, 0x80, 0x6c, 0x39, 0x37, 0xd6, 0xab, 0x08, 0xec, ++ 0x40, 0x93, 0x54, 0x0b, 0x69, 0x2b, 0x13, 0xcd, 0xe1, 0x3f, 0x88, 0xd1, 0x27, 0x82, 0xbb, 0xde, ++ 0xa2, 0xa6, 0xc8, 0x6d, 0x2e, 0x3c, 0x21, 0x5b, 0x2c, 0x56, 0x02, 0xb4, 0x1a, 0x37, 0x72, 0x7a, ++ 0xc1, 0xe2, 0xd9, 0xb3, 0x4e, 0x32, 0xa3, 0x37, 0xbe, 0x2a, 0xf0, 0x9e, 0x3a, 0xfc, 0xd2, 0x94, ++ 0x6a, 0xfa, 0xdf, 0x49, 0x31, 0x7c, 0x2e, 0x9e, 0x79, 0xc9, 0x48, 0xb7, 0xae, 0xf3, 0x53, 0xb0, ++ 0x12, 0xbf, 0x5f, 0xed, 0xa2, 0xe4, 0x9b, 0x27, 0x15, 0xa9, 0xb7, 0xf9, 0xdf, 0x70, 0x25, 0xbc, ++ 0x54, 0xd2, 0xd5, 0x84, 0xb0, 0xae, 0x7a, 0xa6, 0xf3, 0x2f, 0x43, 0xcc, 0xd1, 0xe2, 0x13, 0xdc, ++ 0x5f, 0x87, 0x51, 0x8c, 0xc8, 0x42, 0x39, 0xd1, 0xa4, 0x4c, 0x6c, 0x0d, 0xf9, 0x6b, 0x9b, 0xe8, ++ 0xd3, 0x5d, 0x86, 0x5e, 0xec, 0xd6, 0x38, 0x10, 0xab, 0x83, 0x47, 0x67, 0xe5, 0x8c, 0xf7, 0x28, ++ 0x65, 0xba, 0xcf, 0xbc, 0x1b, 0x6f, 0x70, 0x20, 0x95, 0xc5, 0x8e, 0xce, 0x09, 0xdb, 0x2d, 0x50, ++ 0xa9, 0xf3, 0x4c, 0x65, 0x56, 0xd0, 0x62, 0x2c, 0x7b, 0x35, 0x2d, 0x75, 0x32, 0xbe, 0xfa, 0x4e, ++ 0x3d, 0x57, 0x65, 0xfc, 0x5d, 0x03, 0x2d, 0x1e, 0x68, 0x5b, 0x35, 0x09, 0x8a, 0x19, 0xe7, 0x33, ++ 0x44, 0x86, 0xc0, 0xf6, 0x3b, 0xd4, 0x0e, 0x04, 0x5a, 0x50, 0x61, 0x69, 0xa8, 0x23, 0x4d, 0x0a, ++ 0x81, 0x71, 0x8d, 0xb8, 0x27, 0x19, 0xb0, 0xfa, 0x5f, 0x15, 0x78, 0x4f, 0x1d, 0x7e, 0x69, 0x4a, ++ 0xfc, 0xb5, 0xbc, 0x4f, 0x13, 0x31, 0x8e, 0x29, 0xd6, 0x71, 0xc5, 0x97, 0xb0, 0xe5, 0x35, 0xa7, ++ 0xdf, 0x62, 0xf9, 0x9a, 0x1a, 0x14, 0x1f, 0x88, 0xa5, 0x32, 0xbf, 0x6c, 0xb7, 0xac, 0x2e, 0x97, ++ 0x46, 0x6d, 0x8a, 0x69, 0x12, 0x4a, 0xe1, 0x81, 0xe6, 0x86, 0xf4, 0x35, 0x0e, 0x92, 0x36, 0x60, ++ 0xf8, 0xa0, 0x28, 0xb2, 0x41, 0xce, 0x93, 0xe0, 0x6d, 0x1e, 0x2c, 0x2f, 0x3f, 0x44, 0xc3, 0x73, ++ 0xcc, 0x49, 0x83, 0xd9, 0x4d, 0xbf, 0x12, 0x0c, 0xee, 0xf0, 0xa3, 0xbb, 0x3b, 0x65, 0xd7, 0x1e, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x52, 0x2c, 0x0b, 0xe6, 0xcb, 0xcf, 0x88, 0xea, 0xf4, 0x96, 0x3f, 0x28, 0xf8, 0xf2, 0x9e, 0x62, ++ 0xed, 0x75, 0x8c, 0x93, 0x6d, 0x04, 0x6c, 0x28, 0x21, 0x65, 0x4c, 0x1c, 0x9a, 0x9d, 0xb7, 0x44, ++ 0xe4, 0xcb, 0x42, 0x04, 0x3c, 0x76, 0xc0, 0xda, 0xca, 0xd0, 0xf6, 0x81, 0x14, 0xa5, 0x44, 0x1a, ++ 0x3a, 0x3d, 0x9e, 0x30, 0xd3, 0x2d, 0x49, 0xf1, 0x31, 0x89, 0xe2, 0xc3, 0xf0, 0xb0, 0xb6, 0xb8, ++ 0x73, 0x10, 0x04, 0xac, 0xeb, 0x74, 0xf6, 0xce, 0x3b, 0x03, 0xd0, 0x8f, 0x59, 0x0a, 0xfe, 0x38, ++ 0x5d, 0x6c, 0x1b, 0x13, 0xe1, 0xdc, 0xd6, 0x54, 0x18, 0x9a, 0xf9, 0x51, 0x5f, 0xda, 0xe0, 0x82, ++ 0x6e, 0xef, 0x4b, 0xb4, 0x63, 0x83, 0x33, 0x57, 0xc2, 0xa6, 0xa1, 0x0f, 0x21, 0x52, 0xa5, 0x64, ++ 0x8f, 0xa5, 0xb8, 0xe3, 0xf8, 0x45, 0x78, 0xe7, 0xed, 0x72, 0x15, 0x18, 0xe9, 0xef, 0xcb, 0x9f, ++ 0xbf, 0x59, 0x87, 0x75, 0xa6, 0xcb, 0xe4, 0xc2, 0xd5, 0xf3, 0x73, 0x34, 0x62, 0x6f, 0x29, 0x26, ++ 0xcf, 0x36, 0xec, 0xe8, 0x91, 0x6e, 0x6b, 0x2a, 0x0c, 0x4d, 0x9d, 0xc9, 0xce, 0x6d, 0x70, 0x41, ++ 0xb8, 0x33, 0x7c, 0xb9, 0x28, 0xe5, 0x80, 0x2d, 0x8c, 0x21, 0xa4, 0xfe, 0x18, 0xc6, 0x78, 0xad, ++ 0xe7, 0xb4, 0x2d, 0x35, 0xe0, 0xa7, 0xb9, 0xfc, 0x28, 0x6d, 0xc8, 0xf3, 0xe1, 0xad, 0xe3, 0x45, ++ 0xf9, 0x34, 0x0d, 0x1c, 0xb4, 0x81, 0x05, 0x43, 0x33, 0x75, 0x87, 0x01, 0x6c, 0xfd, 0x1f, 0x46, ++ 0xfd, 0x21, 0x99, 0xe1, 0xe6, 0x7e, 0x18, 0x8a, 0x88, 0x1a, 0x6e, 0xb9, 0xe3, 0x5c, 0xe9, 0x92, ++ 0xb5, 0x98, 0x26, 0xd3, 0x2b, 0x68, 0x31, 0x16, 0xdc, 0xfb, 0xf7, 0xdb, 0x19, 0x5f, 0x7d, 0x27, ++ 0x09, 0xbe, 0xce, 0x97, 0x51, 0x72, 0xac, 0xf2, 0xeb, 0xb5, 0xba, 0x9d, 0x8e, 0x38, 0xf3, 0x5e, ++ 0x47, 0xf9, 0xaf, 0xc7, 0xe7, 0x05, 0x77, 0x22, 0xb8, 0xed, 0x5f, 0x1b, 0x5d, 0x2b, 0xea, 0x55, ++ 0xe5, 0x5f, 0x67, 0xaa, 0xc9, 0x39, 0x56, 0x79, 0x94, 0xbb, 0x5d, 0xaf, 0x47, 0x1c, 0x98, 0x2f, ++ 0x31, 0x68, 0x1a, 0x38, 0xab, 0xc1, 0x0a, 0x86, 0x66, 0xea, 0xcd, 0x02, 0xd8, 0x39, 0x3e, 0x8c, ++ 0xd4, 0x37, 0x7d, 0x92, 0x62, 0xf8, 0x5c, 0xff, 0xf2, 0x51, 0x90, 0xad, 0x9f, 0x25, 0xa6, 0xa3, ++ 0xe8, 0xf4, 0x3d, 0xc0, 0xca, 0xb4, 0xe7, 0x42, 0xc4, 0x61, 0x0e, 0x8a, 0x46, 0x85, 0x9d, 0xa5, ++ 0x94, 0xa4, 0x29, 0x99, 0x0b, 0xd3, 0x4f, 0x32, 0x13, 0x6e, 0x18, 0x7c, 0xb8, 0xa7, 0x1d, 0x7d, ++ 0x1c, 0x6b, 0x6a, 0xb6, 0x7d, 0xb8, 0x53, 0x3a, 0xa7, 0xce, 0xda, 0xae, 0x2b, 0xe1, 0x87, 0x69, ++ 0x0e, 0xd4, 0x35, 0x5b, 0xdf, 0x5c, 0xc8, 0x1d, 0xb2, 0x67, 0x6d, 0x57, 0xf4, 0x91, 0xa2, 0xd5, ++ 0xcb, 0x23, 0x78, 0x15, 0xc3, 0x91, 0x76, 0xe3, 0xb7, 0x22, 0x74, 0x71, 0x41, 0xcc, 0x86, 0x95, ++ 0x6d, 0x90, 0x24, 0x85, 0xbf, 0x52, 0x4a, 0x71, 0x20, 0x1b, 0x9f, 0x7d, 0xd4, 0x5a, 0x02, 0x3b, ++ 0x36, 0x02, 0xe1, 0xf4, 0x25, 0xef, 0x6e, 0x69, 0x3f, 0x38, 0x1a, 0xc8, 0xa2, 0x90, 0x6f, 0x07, ++ 0x35, 0x7d, 0x8e, 0xc5, 0xf9, 0x3e, 0x17, 0x4f, 0xdd, 0x85, 0x24, 0xba, 0x57, 0x98, 0xc8, 0x58, ++ 0x74, 0x7a, 0xff, 0x60, 0x65, 0x5a, 0x92, 0x21, 0x62, 0xd1, 0x07, 0x45, 0x23, 0xa3, 0xaf, 0xb3, ++ 0xc5, 0xf7, 0x4d, 0x4e, 0x1c, 0xcd, 0xbe, 0xfe, 0x05, 0x45, 0x19, 0x26, 0xb5, 0x5d, 0x24, 0x40, ++ 0x75, 0xee, 0xda, 0xce, 0x90, 0x15, 0x04, 0x82, 0x3c, 0xba, 0xac, 0x6b, 0x70, 0x1a, 0x73, 0x86, ++ 0xb2, 0xf2, 0xdd, 0x1f, 0xa5, 0x46, 0x55, 0xf9, 0x85, 0x29, 0x20, 0x11, 0x63, 0xf6, 0x2c, 0xac, ++ 0xd2, 0xc9, 0xa3, 0xf0, 0x19, 0x99, 0xae, 0xb3, 0xf5, 0xe8, 0xec, 0x49, 0xb6, 0x35, 0x2b, 0x1d, ++ 0x99, 0x0f, 0x73, 0xf3, 0x08, 0x5e, 0xfe, 0x09, 0x43, 0xb4, 0x4b, 0x59, 0xb9, 0x3e, 0x18, 0xf7, ++ 0x23, 0xd7, 0x45, 0xd5, 0x09, 0x25, 0x91, 0xa1, 0x73, 0x43, 0x7a, 0xfb, 0x07, 0x49, 0x1b, 0x30, ++ 0x15, 0xd5, 0xa4, 0x21, 0x2c, 0xca, 0xff, 0xc8, 0x4c, 0x7b, 0x60, 0x33, 0xa5, 0xd9, 0x74, 0x37, ++ 0x08, 0x2a, 0xeb, 0x39, 0xa4, 0x3d, 0x3a, 0x51, 0xb5, 0xde, 0x11, 0xb3, 0xdd, 0x81, 0x2f, 0x6b, ++ 0x27, 0xc2, 0xd1, 0x28, 0x5b, 0xda, 0x8c, 0x68, 0xc8, 0x2c, 0x93, 0x43, 0x88, 0xe8, 0xed, 0xe4, ++ 0x19, 0xea, 0xdb, 0xe5, 0xda, 0x08, 0xd8, 0x50, 0x42, 0xca, 0x98, 0x38, 0xf7, 0xf9, 0xad, 0x88, ++ 0x76, 0x91, 0xb5, 0xff, 0x4c, 0xc4, 0x7d, 0xa4, 0xde, 0x07, 0x92, 0x19, 0x85, 0x12, 0xd4, 0xd9, ++ 0x39, 0x42, 0xf1, 0x01, 0x0f, 0xfc, 0x30, 0xd7, 0xd3, 0x34, 0xdc, 0xb1, 0x05, 0xb8, 0x11, 0xe7, ++ 0x13, 0x2b, 0x7a, 0x43, 0x57, 0xab, 0x0d, 0x84, 0x4b, 0xc2, 0x1c, 0xd7, 0x8c, 0xc9, 0xf9, 0x89, ++ 0x05, 0x81, 0xb1, 0x53, 0xa7, 0xb0, 0x8b, 0x6a, 0xe5, 0x04, 0x42, 0x96, 0xdc, 0x18, 0x2a, 0xe1, ++ 0xee, 0x0a, 0xe3, 0xa2, 0xb1, 0xd5, 0x15, 0x0e, 0xc3, 0xd8, 0x72, 0x6e, 0x6f, 0x95, 0x10, 0x1b, ++ 0x57, 0xad, 0xba, 0xb5, 0x6c, 0x7f, 0x03, 0x80, 0x11, 0x92, 0x7d, 0xbe, 0x24, 0xea, 0xb4, 0x83, ++ 0x9f, 0xf1, 0xad, 0x91, 0x73, 0x3f, 0x0c, 0x45, 0x44, 0x0d, 0x37, 0xbd, 0x90, 0x2e, 0x95, 0x49, ++ 0xbd, 0xb2, 0xcd, 0xea, 0x8f, 0x55, 0x0b, 0x47, 0x69, 0x25, 0xe6, 0x68, 0xc4, 0xde, 0x52, 0x4c, ++ 0x45, 0x12, 0xe5, 0x58, 0xce, 0x9b, 0x98, 0xa7, 0x04, 0x3b, 0xca, 0x47, 0xfb, 0x9a, 0x91, 0x3f, ++ 0xff, 0xca, 0xd3, 0x7e, 0xcf, 0xe0, 0xf7, 0x0f, 0x34, 0xcc, 0xfb, 0xe5, 0x45, 0xed, 0x92, 0xf8, ++ 0xc3, 0x09, 0x93, 0x2c, 0x67, 0xac, 0x4c, 0xb2, 0x02, 0xfc, 0x65, 0xc2, 0x9c, 0x4d, 0xa9, 0xfe, ++ 0x3b, 0xa9, 0xbb, 0x9e, 0x26, 0x62, 0xdf, 0x52, 0x6f, 0xe2, 0x49, 0xed, 0xa3, 0x09, 0x6a, 0x8d, ++ 0x7b, 0x3a, 0xef, 0x95, 0x4f, 0x49, 0xcc, 0x9f, 0x8e, 0xdd, 0xc1, 0x3c, 0x84, 0x8b, 0xd1, 0x53, ++ 0x8e, 0x31, 0x9d, 0x4d, 0x0d, 0x0a, 0xee, 0x44, 0xb3, 0x19, 0xbe, 0x36, 0xba, 0x56, 0x17, 0xaa, ++ 0xe9, 0x60, 0x18, 0x6e, 0x3f, 0xfb, 0x71, 0xe1, 0x9a, 0x0a, 0xa5, 0xa4, 0x15, 0x3c, 0x41, 0x90, ++ 0xc8, 0x5c, 0x17, 0x24, 0x1f, 0x40, 0x0f, 0xc5, 0x55, 0x9f, 0x4a, 0x03, 0xb4, 0xc4, 0x21, 0xca, ++ 0x7c, 0x50, 0x14, 0x59, 0xc1, 0x67, 0xa8, 0x70, 0xd7, 0x0f, 0x16, 0xf6, 0xfe, 0x22, 0x80, 0xd8, ++ 0x6b, 0x6e, 0xfa, 0xe7, 0xc4, 0x33, 0xb8, 0x3d, 0x27, 0xa2, 0xe3, 0x99, 0xfd, 0x4a, 0x8f, 0x85, ++ 0x4c, 0xac, 0x2b, 0xcf, 0x9f, 0xe9, 0x34, 0x55, 0xef, 0x8e, 0x70, 0xda, 0x75, 0xa2, 0x62, 0x61, ++ 0x83, 0x9a, 0xc7, 0x27, 0x0e, 0x87, 0x5f, 0x7f, 0xe3, 0xc3, 0xed, 0x13, 0xbb, 0xcf, 0x12, 0x20, ++ 0xec, 0xe1, 0xa9, 0x3d, 0x98, 0x4b, 0xfa, 0x8b, 0x7f, 0x0e, 0xe7, 0x32, 0xc9, 0x24, 0x6b, 0x71, ++ 0x70, 0x6f, 0x6b, 0x9d, 0x37, 0xa5, 0x8f, 0xe8, 0xd9, 0xbe, 0xee, 0xfd, 0xac, 0x02, 0x59, 0x67, ++ 0xe2, 0x35, 0x9c, 0x66, 0x47, 0x17, 0x32, 0x96, 0xcd, 0x69, 0x8a, 0x65, 0x3d, 0xb5, 0xc9, 0xa4, ++ 0xf1, 0x1e, 0xe6, 0x25, 0x10, 0xbc, 0x3f, 0x12, 0x86, 0xab, 0x96, 0xb2, 0xb1, 0x7c, 0x30, 0x2d, ++ 0xcd, 0xdd, 0xa6, 0x77, 0xb8, 0xf0, 0x84, 0xaf, 0xb0, 0x9b, 0x08, 0x95, 0x68, 0xdc, 0x0b, 0x2b, ++ 0x5a, 0x06, 0xe0, 0xdf, 0x6f, 0xf2, 0xb2, 0xbb, 0x41, 0x48, 0x2e, 0x9b, 0x25, 0x73, 0xb1, 0x09, ++ 0x2b, 0xfd, 0xae, 0xec, 0xad, 0x18, 0xab, 0xf0, 0xc6, 0x9d, 0x6b, 0x48, 0xda, 0xc8, 0x34, 0x5b, ++ 0xc2, 0x9d, 0xb6, 0x82, 0x92, 0xe3, 0xda, 0x11, 0x5c, 0x97, 0xce, 0xec, 0xcf, 0xf4, 0x75, 0xcb, ++ 0xa7, 0x27, 0x79, 0x3e, 0x89, 0x8c, 0xaa, 0x31, 0xc9, 0x52, 0x40, 0x22, 0xc6, 0x2f, 0x58, 0x9b, ++ 0xa1, 0xd9, 0xa7, 0x5c, 0xf2, 0xed, 0x58, 0x7d, 0xce, 0xeb, 0x3c, 0xc6, 0xef, 0x3f, 0xd5, 0x25, ++ 0x2c, 0x97, 0x55, 0x20, 0x23, 0x36, 0xcf, 0x1f, 0x9f, 0x4f, 0xbc, 0x82, 0xa0, 0x61, 0x65, 0xd0, ++ 0x06, 0xfe, 0xde, 0x62, 0x7b, 0x61, 0xf2, 0x4c, 0x07, 0xb9, 0x7c, 0xe4, 0x29, 0x10, 0x8d, 0xbe, ++ 0x2d, 0x03, 0x70, 0x8e, 0xd6, 0x79, 0x59, 0xbc, 0xc1, 0x24, 0x17, 0xac, 0xf3, 0xd8, 0xb9, 0xe5, ++ 0x3e, 0x28, 0x0a, 0xcd, 0x81, 0xd2, 0x54, 0x38, 0x8a, 0xe6, 0x0b, 0x7b, 0x7f, 0x11, 0x40, 0x6c, ++ 0x71, 0xfb, 0x4e, 0x33, 0xc2, 0xea, 0x19, 0x4b, 0x87, 0xd5, 0x45, 0xd3, 0xff, 0xbb, 0x85, 0x52, ++ 0x3f, 0xbc, 0x2f, 0x63, 0x74, 0x9d, 0xc2, 0x9b, 0xd4, 0x8d, 0xa0, 0x55, 0x2c, 0xa8, 0x9c, 0x59, ++ 0xf6, 0x74, 0x1d, 0xe9, 0x9e, 0x92, 0x5b, 0xfd, 0xdf, 0x79, 0x41, 0x78, 0xcb, 0xd5, 0x61, 0xa6, ++ 0xce, 0xa2, 0xc9, 0x46, 0x64, 0x21, 0xfd, 0x89, 0x52, 0x26, 0x36, 0xe7, 0x9d, 0xd4, 0xac, 0x74, ++ 0x38, 0xd6, 0xd4, 0xaf, 0xfa, 0xb3, 0xa6, 0x74, 0x8d, 0x5f, 0x77, 0x9f, 0x56, 0x01, 0xcd, 0xd2, ++ 0x33, 0x83, 0x50, 0xa7, 0x82, 0x5f, 0xe5, 0x03, 0xda, 0x3c, 0x58, 0x5e, 0x7e, 0x88, 0x45, 0xe6, ++ 0x87, 0x8f, 0x53, 0xda, 0x5c, 0x78, 0x42, 0xb6, 0x58, 0xac, 0x04, 0xab, 0x34, 0x6e, 0xe4, 0xf4, ++ 0x42, 0x78, 0x1e, 0x94, 0x40, 0xb5, 0xfc, 0x48, 0x5d, 0xe9, 0x1d, 0x8d, 0x81, 0x33, 0xc0, 0xb4, ++ 0x8c, 0xda, 0xd7, 0xd2, 0x24, 0x94, 0x01, 0xc1, 0x0f, 0xcf, 0x2b, 0x6a, 0x1c, 0xe7, 0x6c, 0xc0, ++ 0x26, 0x56, 0xf4, 0x86, 0xae, 0x95, 0x1a, 0xcb, 0x96, 0x47, 0x38, 0x6d, 0xdb, 0x51, 0x31, 0xd1, ++ 0x7a, 0xae, 0xca, 0x3b, 0xba, 0x06, 0x5a, 0x3c, 0xd0, 0xb6, 0x6a, 0x12, 0xd7, 0x32, 0x0d, 0x66, ++ 0xac, 0x72, 0xfd, 0x36, 0xf1, 0x60, 0xe9, 0x46, 0x9e, 0x31, 0x6f, 0xe3, 0xee, 0xa6, 0xd0, 0xaf, ++ 0x98, 0x9b, 0x56, 0x5d, 0xfd, 0x11, 0x68, 0xaa, 0x1d, 0xdf, 0xe0, 0x77, 0xea, 0x87, 0xc4, 0xc2, ++ 0x79, 0xd1, 0xa5, 0x0a, 0x66, 0xd7, 0x23, 0x1a, 0x32, 0x0b, 0x54, 0x60, 0x22, 0x3a, 0xaa, 0x39, ++ 0x8b, 0xb0, 0x2c, 0x1e, 0xaa, 0xba, 0x65, 0x2e, 0x56, 0x1d, 0xfc, 0xa0, 0x66, 0x4e, 0x3d, 0x4b, ++ 0x58, 0xed, 0xaa, 0x40, 0x46, 0x6c, 0x5d, 0x3e, 0xfd, 0x9e, 0xbb, 0xc7, 0x83, 0xc2, 0xca, 0x63, ++ 0x56, 0x39, 0x9f, 0x1b, 0x99, 0x30, 0x95, 0x23, 0x4f, 0xf9, 0xd6, 0x90, 0x77, 0x53, 0x68, 0xb6, ++ }, ++ { /* 9 */ ++ 0xa8, 0x2c, 0x9d, 0x1e, 0xd9, 0x7e, 0xa9, 0xb3, 0xc0, 0x01, 0x6b, 0x3d, 0xc4, 0xa3, 0x83, 0xb4, ++ 0xb4, 0x6b, 0xa4, 0x9d, 0x6c, 0x77, 0x14, 0x4c, 0x17, 0xa0, 0x80, 0x59, 0xd2, 0xde, 0x39, 0xaa, ++ 0x96, 0x95, 0xc3, 0xd6, 0x72, 0x8f, 0xd1, 0xd8, 0xb2, 0x47, 0xed, 0x28, 0x6d, 0x22, 0x15, 0xce, ++ 0x1e, 0xeb, 0x9c, 0x39, 0x0a, 0xe9, 0x43, 0xcd, 0x63, 0x5d, 0x9a, 0x2f, 0xd4, 0x54, 0xa5, 0x9d, ++ 0x8a, 0xd2, 0xfa, 0x55, 0xc7, 0x86, 0x6c, 0x27, 0x65, 0xe6, 0x06, 0x4c, 0x7b, 0x5f, 0xaf, 0xd0, ++ 0xf5, 0x99, 0x50, 0xe1, 0x53, 0x37, 0x1d, 0xda, 0x6f, 0xe8, 0x61, 0xe9, 0x49, 0x42, 0xb1, 0x07, ++ 0x9f, 0x36, 0xa1, 0x26, 0x75, 0xf9, 0xd0, 0x09, 0x7d, 0x4f, 0x33, 0x03, 0x82, 0x73, 0x87, 0x27, ++ 0xa5, 0x14, 0x76, 0x59, 0x63, 0x0b, 0x97, 0x06, 0xa4, 0x32, 0x57, 0x80, 0x6c, 0xa0, 0x2f, 0x98, ++ 0x13, 0xd3, 0x77, 0x7e, 0xb0, 0x9c, 0x7d, 0x78, 0x07, 0x6e, 0xa6, 0x92, 0x7c, 0x57, 0x09, 0xb1, ++ 0x39, 0xd8, 0xc1, 0x98, 0x17, 0x62, 0xc6, 0x24, 0x37, 0xff, 0xcc, 0x0c, 0x4d, 0x0f, 0x59, 0x9c, ++ 0xac, 0xb7, 0x14, 0xa9, 0x64, 0x7d, 0x96, 0xd7, 0x6b, 0x3a, 0x89, 0xab, 0x83, 0xf1, 0xbd, 0x71, ++ 0x2d, 0x6a, 0x29, 0xb6, 0x1b, 0x6d, 0x05, 0x13, 0x75, 0x28, 0x20, 0x87, 0xd5, 0xd6, 0x9f, 0xcb, ++ 0x83, 0x71, 0x98, 0xa5, 0xc0, 0xf0, 0x6d, 0xf6, 0xaa, 0xee, 0xd8, 0x67, 0x94, 0x0e, 0x3d, 0x39, ++ 0x86, 0xbc, 0xa2, 0x4f, 0xc3, 0x83, 0x2d, 0x8b, 0x5b, 0xab, 0xe3, 0x35, 0xb2, 0xa9, 0xed, 0x5c, ++ 0xb9, 0x53, 0x4f, 0xda, 0xd6, 0x02, 0x2a, 0xf9, 0x73, 0x93, 0xbc, 0xe4, 0x7a, 0xdd, 0x95, 0x86, ++ 0x76, 0xe8, 0xc8, 0x44, 0x93, 0xc7, 0x70, 0x2c, 0xc5, 0x06, 0xb9, 0x8e, 0xdd, 0x4c, 0x8c, 0x3e, ++ 0x0f, 0x94, 0x4e, 0xfd, 0x05, 0x95, 0xc0, 0x87, 0xd0, 0xcf, 0x4d, 0xf6, 0x6a, 0x2a, 0xb3, 0xaf, ++ 0x5a, 0xd4, 0x52, 0xaf, 0x36, 0xda, 0x0a, 0x26, 0xea, 0x50, 0x40, 0xcd, 0x69, 0x6f, 0xfd, 0x55, ++ 0xa0, 0xd9, 0x4c, 0xb3, 0x60, 0x78, 0xd7, 0x7b, 0x55, 0x77, 0x6c, 0xd2, 0x4a, 0x07, 0xff, 0xfd, ++ 0x92, 0x0e, 0x4a, 0x61, 0xcf, 0x8c, 0xee, 0xbc, 0x19, 0x7c, 0x0f, 0xbe, 0x2a, 0x70, 0x2b, 0x0b, ++ 0xe2, 0xd1, 0xae, 0x28, 0x5e, 0xa8, 0x5f, 0xc6, 0xc3, 0xbd, 0x25, 0xed, 0x72, 0x47, 0x86, 0x73, ++ 0x34, 0xe0, 0x2a, 0xdf, 0xad, 0x17, 0xf8, 0x91, 0x53, 0xcc, 0xf0, 0xb1, 0xe5, 0x0c, 0xf5, 0xb0, ++ 0xee, 0xbf, 0xf6, 0x32, 0x5a, 0xad, 0x1e, 0x6a, 0xfd, 0xf0, 0xc0, 0x94, 0xbb, 0xb1, 0xc4, 0xff, ++ 0x6d, 0xce, 0x6e, 0x97, 0x9a, 0x5d, 0x73, 0x9c, 0x57, 0x1e, 0x18, 0xf3, 0x2f, 0xbf, 0xf9, 0xc6, ++ 0x1a, 0x70, 0x15, 0x8e, 0xb7, 0xea, 0x7c, 0xa9, 0xc8, 0x66, 0x78, 0xb9, 0x93, 0x06, 0x9b, 0x58, ++ 0x24, 0xc9, 0x4b, 0x46, 0x1c, 0x1b, 0x04, 0xc2, 0xba, 0x20, 0xfe, 0xac, 0x3a, 0x87, 0x0d, 0x22, ++ 0x1f, 0xbd, 0x2f, 0x64, 0xb4, 0x99, 0x3c, 0xd4, 0x39, 0x23, 0x43, 0xeb, 0xb5, 0xa1, 0x4b, 0x3d, ++ 0xd2, 0xaa, 0x0d, 0x40, 0x4e, 0xbc, 0x98, 0x33, 0x3b, 0x4a, 0x37, 0xca, 0xd0, 0x19, 0x4d, 0x06, ++ 0x18, 0xdc, 0xb0, 0x34, 0x08, 0x0a, 0x82, 0x9b, 0x7c, 0x9a, 0x09, 0xf2, 0x51, 0x2f, 0x84, 0xdb, ++ 0x37, 0x1a, 0x3c, 0x38, 0xac, 0x87, 0x79, 0xba, 0xbd, 0x4e, 0x58, 0x3e, 0x46, 0xd0, 0x04, 0x93, ++ 0x6a, 0xaf, 0xf1, 0xc7, 0x26, 0xce, 0xcd, 0xd3, 0x12, 0xa7, 0x52, 0xea, 0xcb, 0x31, 0x36, 0x20, ++ 0x3f, 0xef, 0xed, 0x95, 0x15, 0x81, 0x07, 0x72, 0x28, 0x38, 0x5f, 0xd1, 0xc8, 0x74, 0x78, 0xda, ++ 0xae, 0x1b, 0xb1, 0x13, 0xdb, 0x9d, 0x68, 0xe5, 0xdf, 0xc6, 0xf8, 0xe0, 0x41, 0xd8, 0xa2, 0xf2, ++ 0x10, 0x29, 0x61, 0x99, 0xb1, 0x0c, 0xfc, 0x53, 0xe9, 0xec, 0x0e, 0x1d, 0xdf, 0x8b, 0xf8, 0x92, ++ 0x46, 0x93, 0x6b, 0x2c, 0x83, 0xd3, 0xb7, 0xd9, 0x3d, 0xf1, 0xab, 0xa9, 0x7f, 0x12, 0x47, 0x4b, ++ 0x6c, 0x98, 0xdd, 0xca, 0x24, 0x2d, 0x0c, 0x85, 0x0d, 0x60, 0xc1, 0x37, 0x4e, 0x4a, 0x17, 0x66, ++ 0xbc, 0x9e, 0x75, 0x30, 0xd5, 0x71, 0x6a, 0x84, 0x82, 0xd6, 0x87, 0xb6, 0x5c, 0x7a, 0x45, 0xe3, ++ 0x68, 0x03, 0x54, 0x7d, 0x99, 0x2e, 0x33, 0xe1, 0xa6, 0x5b, 0x23, 0xa1, 0x09, 0x18, 0x29, 0xa3, ++ 0x0b, 0x0f, 0xc7, 0x4a, 0xb8, 0x96, 0xff, 0xe3, 0x7b, 0xf4, 0xaf, 0x60, 0x2d, 0x78, 0x8d, 0x6a, ++ 0x3e, 0xb9, 0x5e, 0xc8, 0xab, 0xf1, 0x78, 0x6b, 0x72, 0x46, 0x86, 0x15, 0xa9, 0x81, 0x96, 0x7a, ++ 0xfe, 0x96, 0x97, 0xab, 0xeb, 0xa1, 0xe2, 0x39, 0x14, 0x1c, 0xce, 0x89, 0x64, 0x3a, 0x3c, 0x6d, ++ 0xa9, 0x7a, 0x2e, 0x43, 0x67, 0x0e, 0xd6, 0xaa, 0x9a, 0x7f, 0xb2, 0xf9, 0xa5, 0x56, 0x6d, 0x14, ++ 0x28, 0xa7, 0x13, 0x5c, 0x18, 0x1e, 0x45, 0x6e, 0x84, 0x6d, 0x1b, 0xd5, 0xf3, 0x71, 0x4f, 0xae, ++ 0x7c, 0xb1, 0xbc, 0x53, 0x95, 0x21, 0xf0, 0xd6, 0xe4, 0x8c, 0xcf, 0x2a, 0x91, 0xc1, 0xef, 0xf4, ++ 0xf2, 0xf8, 0xcf, 0xb1, 0xef, 0xa4, 0xa3, 0x95, 0x2a, 0x51, 0x2b, 0xf0, 0xad, 0xcc, 0x7e, 0xe1, ++ 0xbf, 0x64, 0x63, 0xd7, 0xd4, 0xe1, 0xeb, 0xaf, 0x6c, 0x54, 0x2f, 0x39, 0xff, 0xa6, 0xb4, 0xc0, ++ 0xf4, 0xcf, 0xe3, 0xbc, 0xed, 0x47, 0x62, 0xc3, 0x35, 0x96, 0xb8, 0x2d, 0x28, 0xb7, 0x5f, 0xa7, ++ 0xcb, 0x20, 0x0e, 0x29, 0xf8, 0xc6, 0x65, 0xb1, 0x1d, 0xae, 0xe7, 0xfc, 0xe0, 0xc3, 0x27, 0x7d, ++ 0x06, 0x37, 0x2c, 0x0d, 0x02, 0xe3, 0xc1, 0x56, 0x1f, 0xc7, 0x93, 0xdd, 0x85, 0x7b, 0x21, 0x46, ++ 0xf8, 0xa1, 0xbb, 0xa6, 0xe9, 0x42, 0x23, 0x6f, 0x0b, 0xdb, 0x5d, 0x54, 0xe1, 0x41, 0x1d, 0x2b, ++ 0xbd, 0xc8, 0xc6, 0x6d, 0x6b, 0x01, 0x15, 0x9d, 0xd8, 0xa8, 0x5e, 0x72, 0x3d, 0x8f, 0xab, 0x43, ++ 0x75, 0x12, 0xde, 0xa3, 0x92, 0x57, 0xf1, 0x07, 0x2b, 0x84, 0x11, 0x01, 0x7e, 0x90, 0x7d, 0x1d, ++ 0x03, 0xfa, 0x16, 0xe7, 0x01, 0x90, 0x81, 0x2b, 0xee, 0x82, 0xa8, 0x8f, 0xa3, 0xdc, 0xf1, 0x23, ++ 0x4c, 0xca, 0x1f, 0x3b, 0x85, 0x35, 0x37, 0x23, 0x1c, 0x7b, 0xdd, 0x0d, 0x33, 0x9f, 0x24, 0x81, ++ 0x4b, 0xab, 0x80, 0x6b, 0x39, 0xa6, 0x89, 0x6c, 0x59, 0xc2, 0x97, 0x14, 0xd7, 0x11, 0xeb, 0x67, ++ 0xc0, 0x2f, 0xc9, 0x63, 0x40, 0x50, 0x9a, 0x52, 0x66, 0x5a, 0x48, 0x9c, 0xcd, 0xbb, 0xaa, 0x17, ++ 0x04, 0x9b, 0x89, 0xb7, 0xbd, 0x03, 0x3f, 0x64, 0xab, 0x3b, 0xe2, 0x96, 0x47, 0x52, 0x3e, 0xc5, ++ 0xb3, 0x0a, 0x3b, 0xcd, 0xd0, 0xe4, 0xaa, 0x03, 0x52, 0x19, 0xca, 0x40, 0x36, 0x50, 0xf6, 0x4c, ++ 0xb6, 0xc7, 0x01, 0x27, 0xd3, 0x97, 0xea, 0x7e, 0xa3, 0x5c, 0xf1, 0x12, 0x10, 0xf7, 0x26, 0x29, ++ 0x51, 0xdb, 0x95, 0xe5, 0x8e, 0x4c, 0xf5, 0xc5, 0x91, 0xa4, 0xef, 0xad, 0x44, 0x17, 0x70, 0x3f, ++ 0xeb, 0x72, 0xcc, 0xd8, 0x59, 0xde, 0x5e, 0x17, 0x0c, 0xb5, 0xfb, 0xc6, 0x9d, 0x16, 0x14, 0x9a, ++ 0x98, 0x57, 0x3e, 0x76, 0xc9, 0x6a, 0x6e, 0x46, 0x38, 0xf6, 0x79, 0x1a, 0x66, 0xfd, 0x48, 0xc1, ++ 0x23, 0xa8, 0xd4, 0x16, 0xa0, 0x88, 0xba, 0x8d, 0xff, 0x99, 0xb4, 0xb5, 0xde, 0x09, 0xc2, 0xc4, ++ 0xab, 0xd6, 0x8b, 0xf9, 0xd8, 0xee, 0x28, 0x98, 0x2e, 0x83, 0xc3, 0xb2, 0x67, 0x7f, 0x72, 0x97, ++ 0xb2, 0x5c, 0x88, 0x90, 0x6e, 0x94, 0xd5, 0x1a, 0x08, 0x67, 0x13, 0x84, 0x57, 0xa5, 0x18, 0xec, ++ 0x99, 0x01, 0x8d, 0x2b, 0x77, 0x1a, 0x11, 0x5f, 0x62, 0x88, 0xa0, 0xde, 0x07, 0x08, 0xa6, 0x61, ++ 0x89, 0x28, 0xec, 0xb2, 0xc6, 0x16, 0xed, 0x0c, 0x8b, 0x64, 0xae, 0xc3, 0xd8, 0x83, 0x5e, 0xf3, ++ 0xdf, 0x92, 0xe6, 0x07, 0xf4, 0xc9, 0xa6, 0x86, 0x5f, 0x79, 0x0b, 0x77, 0x78, 0x1a, 0xe1, 0x2a, ++ 0x0d, 0x38, 0xeb, 0x47, 0xba, 0x75, 0x3e, 0xb5, 0x64, 0x33, 0x3c, 0xbd, 0xa8, 0x03, 0xac, 0x2c, ++ 0x31, 0x2d, 0x10, 0x35, 0xae, 0x64, 0xb8, 0xec, 0xa2, 0x89, 0xcb, 0xe3, 0xc3, 0xab, 0x25, 0xd5, ++ 0x70, 0xdf, 0xe4, 0x49, 0x91, 0x24, 0xb1, 0x7a, 0xda, 0xc1, 0x2a, 0x53, 0x58, 0x37, 0xad, 0x78, ++ 0x73, 0x25, 0xf2, 0xae, 0x90, 0xb4, 0x30, 0x51, 0x34, 0x43, 0x82, 0xdc, 0xfb, 0xeb, 0x5c, 0x5b, ++ 0x1d, 0x11, 0x8a, 0xde, 0x0b, 0x79, 0xc2, 0xe6, 0x8d, 0xdf, 0x32, 0xa0, 0x77, 0x88, 0x54, 0xbe, ++ 0x8d, 0xb3, 0x65, 0x05, 0x7b, 0x15, 0xd2, 0x68, 0x20, 0x5f, 0x4c, 0x55, 0x9f, 0xd1, 0x60, 0x36, ++ 0xf1, 0x02, 0xd9, 0x56, 0xee, 0x34, 0x22, 0xbe, 0xc4, 0xd3, 0x83, 0x7f, 0x0e, 0x10, 0x8f, 0xc2, ++ 0x7d, 0xe7, 0x0f, 0x0e, 0x2b, 0x51, 0x8f, 0xcf, 0xbe, 0xf2, 0x16, 0xee, 0xf0, 0x34, 0x01, 0x54, ++ 0x17, 0x48, 0xfe, 0xc9, 0x0d, 0x9f, 0x42, 0x1c, 0xac, 0x55, 0x44, 0x04, 0x3b, 0x05, 0x37, 0x74, ++ 0x2c, 0x3c, 0x9a, 0xeb, 0xa5, 0x1d, 0x7a, 0x0a, 0x2f, 0x56, 0xf9, 0x43, 0xb4, 0x23, 0x71, 0x6b, ++ 0x35, 0xb6, 0x99, 0x82, 0x13, 0x67, 0x87, 0x88, 0x09, 0xb2, 0x29, 0x75, 0x84, 0xf9, 0x1b, 0x10, ++ 0x88, 0x7e, 0x5f, 0xef, 0x78, 0x66, 0x92, 0x15, 0xd1, 0x1a, 0x77, 0x07, 0xb9, 0x76, 0xb0, 0x53, ++ 0x67, 0x97, 0x1a, 0x80, 0x9c, 0xbb, 0xf3, 0x66, 0x76, 0x94, 0x6e, 0x57, 0x63, 0x32, 0x9a, 0x0c, ++ 0xe1, 0x2b, 0xb8, 0xcf, 0x5f, 0x38, 0xde, 0xed, 0x2d, 0x3f, 0x8d, 0x62, 0xd1, 0x9b, 0x77, 0x50, ++ 0xb5, 0x3d, 0x17, 0xc0, 0xd2, 0x07, 0x6b, 0x55, 0x4d, 0xde, 0x59, 0x9d, 0xb3, 0x2b, 0xd7, 0x0a, ++ 0x64, 0x6d, 0x0c, 0x67, 0x9d, 0x2b, 0x72, 0x4d, 0x98, 0x16, 0xc6, 0xd8, 0xc0, 0xee, 0x6b, 0x2f, ++ 0xb1, 0xa6, 0x9e, 0x77, 0x6f, 0x04, 0x54, 0x31, 0xe6, 0xe5, 0xbb, 0x0b, 0xf4, 0x79, 0xe9, 0xcf, ++ 0x08, 0xf5, 0xd1, 0xad, 0xb9, 0x06, 0x7e, 0xc8, 0x95, 0x76, 0x07, 0xef, 0x8e, 0xa4, 0x7c, 0x49, ++ 0xe5, 0xb0, 0x31, 0x78, 0xe2, 0x3b, 0xe1, 0x89, 0x86, 0x04, 0x6f, 0xf4, 0x96, 0xc9, 0x49, 0x95, ++ 0x1c, 0x47, 0x39, 0x83, 0xb5, 0x09, 0xbd, 0xff, 0xd7, 0xa1, 0xeb, 0x64, 0x16, 0x7d, 0xba, 0x1e, ++ 0x6b, 0xf9, 0x42, 0x9a, 0x98, 0xbe, 0xb2, 0xca, 0x48, 0xd9, 0x8b, 0x2e, 0xaa, 0xc4, 0xd8, 0x80, ++ 0x5c, 0xe3, 0x7e, 0xa2, 0x34, 0x39, 0xcb, 0x70, 0xf5, 0x97, 0xd3, 0x10, 0xec, 0x14, 0xdc, 0x13, ++ 0xa3, 0x23, 0x5a, 0x54, 0x61, 0xe8, 0x56, 0x50, 0xbb, 0xf5, 0xc4, 0x5d, 0xe9, 0xdb, 0x0e, 0xde, ++ 0x7a, 0x86, 0x90, 0x5e, 0x97, 0xc2, 0x31, 0x80, 0xfb, 0x4b, 0x5c, 0xf7, 0x14, 0xba, 0xce, 0xb2, ++ 0xe8, 0x88, 0xda, 0x3f, 0x58, 0x4e, 0xdf, 0x3c, 0xe2, 0x37, 0x53, 0x49, 0x3e, 0xca, 0xe5, 0xb9, ++ 0xda, 0x5f, 0xdc, 0xed, 0xf7, 0xba, 0xe6, 0xfb, 0xae, 0x3c, 0x30, 0x25, 0x5e, 0xbd, 0x31, 0x4f, ++ 0xd7, 0x67, 0x37, 0xaa, 0x4d, 0xcf, 0xd8, 0x4e, 0xca, 0x0f, 0x0c, 0x98, 0xf6, 0xbe, 0x9d, 0x63, ++ 0xfa, 0x0d, 0x1e, 0x1c, 0x56, 0xa2, 0xdd, 0x5d, 0xbf, 0x27, 0x2c, 0x1f, 0x23, 0x68, 0x02, 0xa8, ++ 0xa7, 0xb8, 0xd3, 0xe3, 0xdc, 0xeb, 0x69, 0x34, 0x10, 0xce, 0x26, 0xcb, 0xae, 0x89, 0x30, 0x1b, ++ 0x7f, 0x4b, 0xaa, 0xb4, 0x94, 0xb1, 0x71, 0xfd, 0x0a, 0x0e, 0x67, 0xa5, 0x32, 0x1d, 0x1e, 0xd7, ++ 0xe4, 0xe6, 0x82, 0x25, 0x5c, 0x4b, 0x9e, 0x90, 0xdc, 0x7a, 0xb6, 0x30, 0xf7, 0x3c, 0xa7, 0x35, ++ 0x8f, 0x1f, 0xc0, 0xbf, 0xc4, 0xf5, 0x2c, 0x5a, 0x94, 0xa3, 0x3d, 0x1e, 0x5d, 0xf8, 0x7f, 0xb5, ++ 0xa1, 0x8f, 0xff, 0xee, 0xde, 0x08, 0xa8, 0x62, 0x0f, 0x09, 0xb5, 0x16, 0x2b, 0xf2, 0x11, 0x5d, ++ 0x52, 0x21, 0x83, 0x02, 0x8f, 0xdc, 0x74, 0xee, 0x7f, 0x26, 0x47, 0x22, 0xe7, 0xcb, 0x81, 0x1c, ++ 0xec, 0x13, 0x53, 0x88, 0xe5, 0x4d, 0xe0, 0x58, 0x49, 0x0c, 0xb1, 0xdf, 0x79, 0x98, 0xdb, 0x7c, ++ 0x3b, 0x74, 0x64, 0x22, 0xa8, 0x82, 0x38, 0x16, 0x83, 0x03, 0xbd, 0x47, 0x8f, 0x26, 0x46, 0x1f, ++ 0xa2, 0x75, 0xe9, 0x09, 0xdf, 0x98, 0x29, 0x49, 0xe1, 0x8b, 0x1d, 0x99, 0x88, 0x2e, 0xe0, 0x7e, ++ 0x5f, 0x19, 0x68, 0x45, 0x35, 0xa9, 0x4a, 0x5b, 0x1b, 0x15, 0x7b, 0x9f, 0x4f, 0xc8, 0x2d, 0x30, ++ 0x50, 0x8d, 0x26, 0xb8, 0x30, 0x3c, 0x8a, 0xdc, 0xcb, 0xda, 0x36, 0x69, 0x25, 0xe2, 0x9e, 0x9f, ++ 0x4a, 0xfd, 0x33, 0x36, 0x87, 0xd6, 0xf6, 0x75, 0x03, 0xbc, 0x4e, 0xd0, 0xb6, 0xe4, 0x05, 0xc7, ++ 0x57, 0xec, 0xb9, 0xe8, 0x8c, 0xaf, 0x34, 0x93, 0x8e, 0x63, 0x7c, 0x70, 0xc1, 0x6c, 0x51, 0x79, ++ 0x55, 0x40, 0x1c, 0x52, 0x33, 0x4f, 0xca, 0xa1, 0x3a, 0x9f, 0x0d, 0x3b, 0x03, 0x45, 0x4e, 0xfa, ++ 0xdc, 0x68, 0xf0, 0xe0, 0xf5, 0x59, 0x27, 0xad, 0xb1, 0xfb, 0xa3, 0xf8, 0xdb, 0xc6, 0x10, 0x09, ++ 0xde, 0xc4, 0x55, 0x5a, 0x4a, 0xb9, 0xd9, 0x9f, 0x05, 0x07, 0xd2, 0xb3, 0x19, 0xef, 0x0f, 0x8a, ++ 0x9d, 0x9a, 0x04, 0x9c, 0xca, 0x19, 0x2e, 0x3b, 0xc9, 0xb3, 0x42, 0x48, 0x40, 0x5a, 0x98, 0xa4, ++ 0xe7, 0x1c, 0x94, 0xc2, 0x5d, 0xdb, 0x1f, 0xbb, 0x32, 0xf8, 0x1e, 0xbf, 0x54, 0xe0, 0x56, 0x16, ++ 0xaf, 0x4d, 0x02, 0x4e, 0x65, 0xed, 0x17, 0xfc, 0x85, 0xb8, 0x21, 0x24, 0x20, 0x2d, 0x4c, 0x52, ++ 0x97, 0xc3, 0x70, 0x8b, 0xcc, 0xff, 0xae, 0xc1, 0xe8, 0x39, 0x34, 0xec, 0x0c, 0xd7, 0xfb, 0x6e, ++ 0xaa, 0x80, 0x38, 0xa4, 0x66, 0x9e, 0x57, 0x81, 0x74, 0xfd, 0x1a, 0x76, 0x06, 0x8a, 0x9c, 0x37, ++ 0x26, 0x65, 0xee, 0xfc, 0xa3, 0xfb, 0xfa, 0xf0, 0x0e, 0xdc, 0x8f, 0xe7, 0xf8, 0xae, 0x12, 0xa1, ++ 0x4d, 0x9c, 0xac, 0x66, 0x3b, 0x45, 0x48, 0x3a, 0x46, 0x05, 0x04, 0xc9, 0x52, 0x6a, 0xca, 0x21, ++ 0x54, 0x16, 0xaf, 0x0f, 0x8d, 0x3f, 0xb5, 0xb8, 0x60, 0xe1, 0xd4, 0xff, 0x62, 0xb0, 0xa0, 0x5a, ++ 0xf7, 0x35, 0xf5, 0x5b, 0xec, 0xd7, 0xe3, 0xe8, 0xdb, 0x14, 0x10, 0xa2, 0x8b, 0x6b, 0xae, 0x84, ++ 0xd9, 0xa5, 0xca, 0x0a, 0xf6, 0x2a, 0x67, 0xd0, 0x40, 0xbe, 0x98, 0xaa, 0xfd, 0x61, 0xc0, 0x6c, ++ 0x84, 0x10, 0x07, 0xf5, 0x7c, 0x63, 0xd3, 0xb9, 0xef, 0x57, 0x92, 0x7e, 0x70, 0x80, 0xf2, 0xdf, ++ 0x41, 0xf2, 0xf4, 0x7c, 0x3f, 0x40, 0x09, 0x96, 0x78, 0x48, 0xe1, 0xb0, 0x9b, 0x9c, 0x88, 0xad, ++ 0x82, 0x27, 0x2b, 0xf8, 0x7e, 0x80, 0x12, 0xef, 0xf0, 0x90, 0x01, 0xa3, 0xf5, 0xfb, 0xd3, 0x99, ++ 0xd6, 0x31, 0x84, 0xf7, 0xf3, 0xbf, 0xa7, 0x57, 0x90, 0x71, 0xd5, 0x5c, 0x97, 0x4b, 0x73, 0xc3, ++ 0xb7, 0x91, 0xb2, 0x7a, 0x6d, 0xe7, 0x95, 0x67, 0xf9, 0x22, 0x28, 0xd6, 0x71, 0x02, 0xc8, 0x89, ++ 0xdb, 0x09, 0x6f, 0xb0, 0x49, 0xca, 0x99, 0xe2, 0xf4, 0x42, 0xe9, 0xe1, 0x3f, 0x48, 0xdf, 0xef, ++ 0x2b, 0x5d, 0x05, 0xbb, 0x19, 0x8e, 0xc4, 0x45, 0x6a, 0xef, 0xb3, 0x5a, 0x50, 0xad, 0xbe, 0x8d, ++ 0xa6, 0xee, 0x60, 0xbe, 0x62, 0x9b, 0x16, 0x2d, 0x4a, 0xb0, 0xff, 0x0f, 0xcf, 0x7c, 0xde, 0xbb, ++ 0x38, 0x8e, 0x72, 0xc5, 0xa9, 0x12, 0xb9, 0x3d, 0x6d, 0x81, 0x15, 0xc8, 0x2c, 0xfa, 0xb7, 0x3c, ++ 0xce, 0xed, 0x34, 0xc3, 0xfb, 0xb5, 0x25, 0xcc, 0xec, 0xeb, 0xdc, 0xae, 0xc6, 0x64, 0xf7, 0x18, ++ 0x95, 0x6f, 0xd5, 0x31, 0x73, 0x1f, 0x50, 0xf3, 0x5c, 0xc5, 0x45, 0xa7, 0xce, 0xfe, 0xe4, 0xed, ++ 0x71, 0x89, 0x57, 0x14, 0x2f, 0x54, 0xce, 0x63, 0x80, 0xbf, 0xf3, 0x97, 0x39, 0xc2, 0x43, 0xd8, ++ 0xc3, 0xd5, 0xdf, 0x84, 0x41, 0xc0, 0x1b, 0x79, 0x88, 0xd8, 0xe0, 0x13, 0x6e, 0x67, 0x5b, 0x34, ++ 0x8e, 0x49, 0x73, 0xe2, 0x7a, 0x85, 0x53, 0x43, 0xce, 0xdd, 0xe4, 0xda, 0x3c, 0x0d, 0x91, 0x15, ++ 0x9a, 0xfb, 0x9b, 0xcc, 0x76, 0x8a, 0x90, 0x74, 0x8c, 0x0a, 0x08, 0x51, 0xa4, 0xd4, 0x57, 0x42, ++ 0xef, 0xe9, 0x45, 0x6f, 0xe4, 0xdd, 0x61, 0x73, 0xa7, 0x8e, 0x19, 0x50, 0xda, 0x44, 0x2a, 0x5f, ++ 0x25, 0x9f, 0xf8, 0x1b, 0xa2, 0x6b, 0x7b, 0xdb, 0xe0, 0x5e, 0x27, 0x68, 0x5b, 0x72, 0xe3, 0x82, ++ 0xa4, 0x42, 0xc5, 0x04, 0xdd, 0x7b, 0xe8, 0x1f, 0xfe, 0x4c, 0x8e, 0x44, 0x0d, 0x55, 0xc1, 0x38, ++ 0xe9, 0xde, 0x69, 0x62, 0xe6, 0x3e, 0xa0, 0x25, 0xb8, 0x49, 0x8a, 0x8d, 0x5f, 0x3f, 0x0b, 0x19, ++ 0x3c, 0x15, 0xfb, 0x72, 0x14, 0x11, 0x86, 0x59, 0xc6, 0xba, 0xf7, 0x5e, 0x6b, 0xa8, 0x89, 0xf9, ++ 0x6f, 0x62, 0xcb, 0x2d, 0x25, 0xbd, 0x8d, 0xae, 0xe3, 0xe2, 0x69, 0xb8, 0xed, 0x96, 0xe6, 0x45, ++ 0x02, 0xac, 0xa5, 0xba, 0xbf, 0xe0, 0xfe, 0x32, 0xb4, 0xfc, 0x71, 0x4b, 0xc2, 0x29, 0x1f, 0x83, ++ 0x01, 0x56, 0xb3, 0x5d, 0xbe, 0x70, 0x7f, 0x19, 0x5a, 0x7e, 0xd9, 0xc4, 0x61, 0xf5, 0xee, 0xa0, ++ 0x0a, 0x59, 0x74, 0x17, 0x06, 0xe6, 0x80, 0xfa, 0x21, 0x8a, 0x76, 0xa4, 0x4c, 0x8d, 0x63, 0xca, ++ 0x09, 0xa3, 0x62, 0xf0, 0x07, 0x76, 0x01, 0xd1, 0xcf, 0x08, 0xde, 0x2b, 0xef, 0x51, 0x92, 0xe9, ++ 0x94, 0x39, 0x66, 0x6c, 0xcd, 0x6f, 0x2f, 0xea, 0x06, 0xbb, 0x9c, 0x63, 0xaf, 0x0b, 0x0a, 0x4d, ++ 0xed, 0x45, 0xe0, 0xd5, 0x5b, 0x3d, 0x9f, 0x41, 0x13, 0x72, 0x68, 0x1b, 0x18, 0x6d, 0x35, 0xdc, ++ 0x59, 0x2e, 0x44, 0x48, 0x37, 0x4a, 0x8b, 0x0d, 0x04, 0xd2, 0xe8, 0x42, 0xca, 0xb3, 0x0c, 0x76, ++ 0x61, 0xa0, 0x36, 0x8d, 0x9e, 0x58, 0x32, 0x30, 0x69, 0x53, 0xfd, 0x8a, 0xe6, 0x49, 0xbb, 0x4a, ++ 0x69, 0x55, 0xe7, 0x20, 0x27, 0x5e, 0x4c, 0xf8, 0xfc, 0x25, 0xfa, 0x65, 0x68, 0xed, 0xc7, 0x03, ++ 0x29, 0xf1, 0xa0, 0x01, 0xa6, 0x6e, 0x3a, 0x77, 0xde, 0x13, 0xc2, 0x11, 0x92, 0x84, 0xa1, 0x0e, ++ 0xb0, 0xf0, 0x2d, 0x2a, 0xd1, 0x74, 0x2b, 0x28, 0xbc, 0x9b, 0x62, 0xcf, 0x95, 0x8c, 0x07, 0x6f, ++ 0x30, 0x7b, 0xa3, 0x68, 0x10, 0x14, 0xc7, 0xf5, 0xf8, 0xf7, 0x12, 0x27, 0xa2, 0x5e, 0xcb, 0x75, ++ 0x60, 0xf6, 0x85, 0xd0, 0x20, 0x28, 0x4d, 0x29, 0x33, 0x2d, 0x24, 0x4e, 0x87, 0xbc, 0x55, 0xea, ++ 0x74, 0x44, 0x6d, 0xfe, 0x2c, 0x27, 0x8e, 0x1e, 0x71, 0xfa, 0xc8, 0xc5, 0x1f, 0x65, 0x93, 0xbd, ++ 0x22, 0xfe, 0x67, 0x4b, 0x1e, 0xf8, 0xc5, 0x94, 0xa5, 0xe7, 0x6d, 0x71, 0xbf, 0xfc, 0x2c, 0x64, ++ 0x0c, 0x6e, 0x58, 0x1a, 0x04, 0x05, 0x41, 0xac, 0x3e, 0x4d, 0xe5, 0x79, 0xc9, 0xf6, 0x42, 0x8c, ++ 0xcd, 0x17, 0x22, 0x24, 0xfa, 0x25, 0xa4, 0xe7, 0x02, 0x69, 0x74, 0x21, 0x65, 0xb8, 0x06, 0x3b, ++ 0x7b, 0xd0, 0x23, 0x03, 0x29, 0xb2, 0x4e, 0x99, 0xa1, 0x35, 0x85, 0x33, 0x75, 0x4f, 0x20, 0x12, ++ 0x5b, 0x82, 0xe1, 0xf2, 0x88, 0xaa, 0x75, 0x3f, 0xb0, 0x2e, 0x99, 0x09, 0x08, 0x9a, 0x13, 0xf5, ++ 0x40, 0xa4, 0x47, 0x21, 0x81, 0x30, 0x76, 0x8f, 0x22, 0x36, 0x38, 0x74, 0xfa, 0x69, 0x66, 0x0d, ++ 0xe3, 0x87, 0x1d, 0x75, 0xe0, 0xd8, 0x20, 0xdf, 0x99, 0xc3, 0xfc, 0x29, 0x13, 0xb2, 0x68, 0xd3, ++ 0x14, 0xb2, 0xe8, 0x2e, 0x0c, 0x0f, 0xc3, 0x37, 0x42, 0xd7, 0xec, 0x8b, 0x98, 0xd9, 0xc6, 0x57, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfd, 0x6c, 0x81, 0x4c, 0xea, 0x31, 0x63, 0x12, 0xfa, 0x9e, 0x66, 0x06, 0xc7, 0xe6, 0xcd, 0x4e, ++ 0x78, 0x2a, 0x35, 0xe4, 0x28, 0x22, 0xcf, 0xb2, 0x4f, 0xb7, 0x2d, 0xbc, 0xd6, 0x93, 0xd1, 0x31, ++ 0xad, 0xe1, 0xa7, 0xf4, 0xda, 0x0d, 0xe9, 0xce, 0x31, 0x44, 0x50, 0x6f, 0xe2, 0x04, 0x53, 0xd1, ++ 0xd0, 0x06, 0xa8, 0xfa, 0xf1, 0x5c, 0x66, 0x01, 0x8f, 0xb6, 0x46, 0x81, 0x12, 0x30, 0x52, 0x85, ++ 0x91, 0xf4, 0x5c, 0x86, 0xce, 0x1c, 0x6f, 0x97, 0xf7, 0xfe, 0xa7, 0x31, 0x89, 0xac, 0xda, 0x28, ++ 0xfc, 0x3a, 0x32, 0x11, 0x54, 0x41, 0x1c, 0x0b, 0xa0, 0xe0, 0xbf, 0xc2, 0xa6, 0x13, 0x23, 0xee, ++ 0xf9, 0xf7, 0x08, 0xfb, 0x57, 0x32, 0x5c, 0x76, 0x51, 0xa5, 0x84, 0x90, 0x80, 0xb4, 0xf3, 0x8b, ++ 0xea, 0x24, 0x7f, 0x85, 0xe7, 0xae, 0x21, 0x0e, 0x56, 0xcb, 0x22, 0x02, 0xfc, 0xe3, 0xfa, 0x3a, ++ 0x85, 0x46, 0xb4, 0xa8, 0xc2, 0x13, 0xac, 0xa0, 0xb5, 0x29, 0x4b, 0xba, 0x11, 0x75, 0x1c, 0x7f, ++ 0x7e, 0x1d, 0x19, 0xe9, 0x2a, 0xc1, 0x0e, 0xe4, 0x50, 0x70, 0xbe, 0x61, 0x53, 0xe8, 0xf0, 0x77, ++ 0x77, 0xbe, 0x7b, 0x19, 0x2d, 0xb7, 0x0f, 0x35, 0x9f, 0x78, 0x60, 0x4a, 0xbc, 0xb9, 0x62, 0x9e, ++ 0xc7, 0x4e, 0x56, 0x33, 0xfc, 0xc3, 0x24, 0x1d, 0x23, 0xe3, 0x02, 0x85, 0x29, 0x35, 0x65, 0xf1, ++ 0xc5, 0xe2, 0xf3, 0x89, 0x43, 0x23, 0xda, 0x2f, 0x97, 0x1f, 0x73, 0xce, 0xeb, 0x1c, 0x7a, 0x72, ++ 0x5d, 0xb5, 0xcd, 0xff, 0x8a, 0x49, 0xb4, 0x69, 0xaf, 0xe9, 0x0a, 0xd4, 0x8d, 0xe1, 0x32, 0xb3, ++ 0x3a, 0x22, 0xd7, 0x7f, 0x16, 0xf2, 0x47, 0x0f, 0xd9, 0x7d, 0x64, 0x83, 0xee, 0xd3, 0xa8, 0xbf, ++ 0xd5, 0xcb, 0x92, 0x10, 0xf2, 0x2f, 0x26, 0x7c, 0x7e, 0xf3, 0x7d, 0xd3, 0x34, 0x97, 0x82, 0xe0, ++ 0x66, 0xc1, 0xa9, 0xdd, 0x22, 0xcb, 0x8c, 0x7f, 0x2c, 0xea, 0xb7, 0x93, 0x02, 0xc7, 0x74, 0xac, ++ 0x8b, 0x84, 0x49, 0x08, 0x79, 0xf6, 0x13, 0x3e, 0x3f, 0x98, 0xdf, 0x88, 0x1a, 0xaa, 0x41, 0x70, ++ 0x49, 0x07, 0x25, 0xd1, 0x86, 0x46, 0x77, 0x5e, 0xed, 0x3e, 0xe6, 0x5f, 0x15, 0x38, 0xf4, 0xe4, ++ 0xc2, 0x83, 0x6c, 0xd9, 0xff, 0xb0, 0x64, 0x60, 0xd2, 0xa6, 0x39, 0xd7, 0x0f, 0x92, 0xb5, 0x94, ++ 0xc6, 0x18, 0xe5, 0x6e, 0x42, 0xb3, 0x5b, 0x04, 0x79, 0x9d, 0xdb, 0x41, 0x48, 0xc0, 0x8b, 0x51, ++ 0x56, 0xba, 0x0a, 0xb5, 0x32, 0xdf, 0x4b, 0x8a, 0xd4, 0x1d, 0xa5, 0xb4, 0xa0, 0x99, 0xbf, 0xd9, ++ 0x4e, 0x66, 0xba, 0x81, 0x3a, 0xd5, 0xc9, 0x11, 0xa8, 0x87, 0xac, 0x46, 0xf1, 0xb6, 0x3b, 0x02, ++ 0x27, 0x33, 0x5d, 0xa1, 0x1d, 0x8b, 0x85, 0xe9, 0x54, 0xa2, 0x56, 0x23, 0x99, 0x5b, 0xfc, 0x01, ++ 0xe6, 0x4a, 0x27, 0x9f, 0xe3, 0xab, 0x60, 0xa2, 0x68, 0x86, 0xc7, 0x7b, 0x35, 0x15, 0xb8, 0xb6, ++ 0x93, 0x58, 0xf9, 0x3c, 0x71, 0xfc, 0x91, 0xa5, 0x43, 0x02, 0xd6, 0x7a, 0x4b, 0x85, 0xc5, 0xab, ++ 0xbb, 0xff, 0xea, 0x60, 0x69, 0xe2, 0xd4, 0xcb, 0xc7, 0x6f, 0xcd, 0xaf, 0xb8, 0xf4, 0x8a, 0x05, ++ 0xd1, 0x50, 0x1b, 0xa7, 0x4f, 0x2c, 0x19, 0x18, 0xd5, 0xc8, 0x9f, 0x45, 0x73, 0xc5, 0xbc, 0x25, ++ 0x63, 0x0c, 0x93, 0x37, 0x21, 0xb8, 0xcc, 0x02, 0xdd, 0xaf, 0x8c, 0xc1, 0x24, 0x60, 0xa4, 0xc9, ++ 0xc1, 0x79, 0x7a, 0x3e, 0xfe, 0x20, 0xe5, 0x4b, 0x3c, 0x24, 0x91, 0x58, 0xac, 0x4e, 0x44, 0xb7, ++ 0x45, 0x69, 0x7d, 0xcb, 0x82, 0x43, 0x36, 0xf2, 0xd3, 0x73, 0x03, 0x26, 0xdc, 0xce, 0xb6, 0x68, ++ 0xc8, 0xda, 0x18, 0xce, 0xf9, 0x56, 0xe4, 0x9a, 0xf3, 0x2c, 0x4f, 0x73, 0x43, 0x1f, 0xd6, 0x5e, ++ 0x16, 0x1e, 0x4d, 0x94, 0xb3, 0xef, 0x3d, 0x05, 0xf6, 0x2b, 0x9d, 0xc0, 0x5a, 0xf0, 0xd9, 0xd4, ++ 0x1b, 0x26, 0xa6, 0xd3, 0x09, 0x9a, 0x03, 0xb0, 0x92, 0x18, 0xa1, 0x7d, 0xf2, 0xf3, 0x75, 0xf8, ++ 0x20, 0x52, 0xc2, 0xf1, 0xa1, 0x18, 0x3b, 0xa6, 0x11, 0x1b, 0x1c, 0x3a, 0x7d, 0xd5, 0x33, 0xe7, ++ 0x9b, 0xad, 0x28, 0x91, 0xc8, 0xfa, 0xef, 0x6d, 0xd6, 0x74, 0xd1, 0x95, 0xc5, 0x21, 0xb9, 0xe2, ++ 0xf3, 0xae, 0x7c, 0xec, 0x51, 0xd4, 0xdc, 0x8c, 0x70, 0x2f, 0xf2, 0x34, 0xcc, 0x39, 0x90, 0x41, ++ 0xb8, 0x05, 0xfc, 0x87, 0x68, 0x72, 0x55, 0xe0, 0x29, 0xed, 0x65, 0x20, 0x1b, 0x28, 0x7b, 0x26, ++ 0xf0, 0x54, 0x6a, 0x0b, 0x50, 0x44, 0x5d, 0xa7, 0x9e, 0xad, 0x5a, 0xbb, 0x6f, 0xe5, 0x61, 0x62, ++ 0x2f, 0xc6, 0x8c, 0x0c, 0xa4, 0x8d, 0xfb, 0x21, 0xc1, 0xd4, 0x51, 0xcc, 0x17, 0xff, 0x80, 0x48, ++ 0xba, 0xa9, 0x59, 0x3d, 0xd7, 0x92, 0xab, 0xd2, 0x9d, 0x11, 0x14, 0x6b, 0xd9, 0x01, 0x64, 0xa5, ++ 0x4f, 0x30, 0x09, 0xdc, 0x84, 0xa5, 0xb6, 0x08, 0xf2, 0xf9, 0x75, 0x82, 0x90, 0x43, 0xd5, 0xa2, ++ 0xbe, 0x32, 0xd0, 0x8a, 0x6a, 0x91, 0x94, 0xb6, 0x36, 0x2a, 0xf6, 0xfd, 0x9e, 0x53, 0x5a, 0x60, ++ 0x12, 0x85, 0xc4, 0x23, 0x0e, 0xec, 0x02, 0x61, 0x5d, 0x10, 0x7f, 0x56, 0x1d, 0xa2, 0xe7, 0x11, ++ 0x43, 0x5e, 0x51, 0xc6, 0x80, 0xa0, 0xf7, 0xa4, 0xcc, 0xb4, 0x90, 0xfb, 0x59, 0xb5, 0x97, 0x2e, ++ 0xcf, 0xbb, 0x87, 0x9e, 0x45, 0xc5, 0x5a, 0xd5, 0xb6, 0x95, 0x05, 0x6a, 0xa7, 0x91, 0x19, 0xb8, ++ 0xc9, 0x8c, 0xab, 0x93, 0x47, 0x26, 0x9b, 0x83, 0xa9, 0x52, 0x96, 0xb7, 0x22, 0xea, 0x38, 0xfe, ++ 0x2a, 0x0b, 0xb6, 0xe6, 0xa7, 0xfe, 0xbb, 0x5c, 0x30, 0x91, 0x6a, 0x9e, 0x31, 0x58, 0x50, 0x2d, ++ 0x11, 0x7f, 0xd2, 0xc4, 0x0f, 0x7c, 0x83, 0x4a, 0xb3, 0x92, 0xd7, 0xd9, 0xbe, 0x7e, 0x16, 0x32, ++ 0x15, 0xe4, 0x5b, 0x73, 0xb2, 0x7f, 0xbc, 0x2e, 0x18, 0xa9, 0x35, 0x4f, 0xf9, 0x2c, 0x28, 0xf7, ++ 0xf6, 0x63, 0x46, 0x06, 0x52, 0xa7, 0x9c, 0xf1, 0x81, 0x6a, 0xc9, 0x66, 0xea, 0x9e, 0x40, 0x24, ++ 0x62, 0x5a, 0x20, 0x6a, 0x9f, 0xc8, 0xb3, 0x1b, 0x87, 0xd1, 0x55, 0x05, 0x45, 0x95, 0x4a, 0x69, ++ 0xcc, 0x41, 0x91, 0x79, 0x44, 0x55, 0xdb, 0xfe, 0x58, 0x17, 0xad, 0xe5, 0x04, 0x4d, 0xe8, 0x9b, ++ 0xe0, 0x7d, 0x0b, 0x92, 0xe1, 0x48, 0xa1, 0xf4, 0x77, 0x41, 0x54, 0xa6, 0xb0, 0x6e, 0x99, 0xf0, ++ 0x8c, 0xe5, 0xd6, 0x58, 0xc5, 0x65, 0xad, 0x71, 0x7a, 0x21, 0x95, 0x91, 0xfe, 0x24, 0x8e, 0x96, ++ 0x90, 0xa2, 0xef, 0xdb, 0x70, 0x6c, 0x10, 0x8e, 0xad, 0x80, 0x7e, 0xf5, 0xe8, 0x59, 0x34, 0x88, ++ 0x47, 0xc5, 0xd8, 0x71, 0x3d, 0xa3, 0xc8, 0xc0, 0x67, 0x8f, 0x72, 0x6d, 0x1e, 0xe7, 0xa9, 0xeb, ++ 0xff, 0xc0, 0x24, 0xf6, 0x55, 0xd1, 0x9d, 0x20, 0x4e, 0x62, 0x17, 0x4d, 0x05, 0xcf, 0xd2, 0xcd, ++ 0x81, 0xdd, 0x3d, 0x1f, 0x7f, 0x10, 0x93, 0xc4, 0x1e, 0x12, 0xa9, 0x2c, 0x56, 0x27, 0x22, 0xba, ++ 0x5e, 0x4f, 0xdb, 0x18, 0x8b, 0xd9, 0x35, 0x42, 0x41, 0x6b, 0xa2, 0x5b, 0x2e, 0x3d, 0xc3, 0x90, ++ 0xfb, 0x5b, 0xad, 0x41, 0xe8, 0xd2, 0xa2, 0x44, 0xe5, 0x59, 0xf5, 0xdb, 0x42, 0x9d, 0xec, 0x08, ++ 0x79, 0x7c, 0x86, 0xb9, 0x96, 0x52, 0xb0, 0xab, 0x15, 0xc9, 0xf4, 0x78, 0xb7, 0x66, 0x3f, 0x91, ++ 0x36, 0x4c, 0x8f, 0x65, 0x12, 0xf7, 0x06, 0xa3, 0xe7, 0x30, 0x81, 0xfa, 0x27, 0x25, 0xea, 0x33, ++ 0x32, 0xd7, 0x06, 0xd2, 0xaf, 0xf4, 0x39, 0xc7, 0x4c, 0x0b, 0x63, 0x6c, 0x60, 0x77, 0xd4, 0xf6, ++ 0x0e, 0xc2, 0xfd, 0xa0, 0xbb, 0xe5, 0xbf, 0x9e, 0x8a, 0xb1, 0x94, 0x32, 0x0b, 0xdf, 0x5d, 0x0f, ++ 0xd3, 0xfc, 0xbe, 0x1d, 0xf0, 0xcc, 0xe7, 0x2a, 0x61, 0x34, 0xee, 0x0e, 0xb1, 0xec, 0xa3, 0xa6, ++ 0x33, 0x81, 0xb5, 0x8f, 0x11, 0x84, 0x46, 0xde, 0x16, 0x75, 0xba, 0xa8, 0x01, 0x82, 0x3a, 0x56, ++ 0x53, 0x77, 0x30, 0x5f, 0x31, 0xac, 0x0b, 0xf7, 0x25, 0x58, 0x9e, 0xe6, 0x86, 0x3e, 0x6f, 0xbc, ++ 0x87, 0xea, 0x11, 0x12, 0x7d, 0xf3, 0x52, 0x92, 0x01, 0xd5, 0x3a, 0xf1, 0xd3, 0x5c, 0x03, 0xfc, ++ 0x21, 0x04, 0x71, 0xac, 0x1f, 0x68, 0x44, 0xbf, 0x4b, 0x65, 0xc5, 0xfe, 0x1c, 0x20, 0xdd, 0x47, ++ 0xd4, 0x9d, 0x21, 0x4d, 0x4c, 0x5f, 0x59, 0x65, 0x24, 0x8d, 0xa4, 0x17, 0x55, 0x62, 0x6c, 0x40, ++ 0x07, 0x61, 0x9f, 0x50, 0xbc, 0x93, 0xbe, 0x4f, 0x45, 0xb9, 0x4a, 0x19, 0xe4, 0x8e, 0xcf, 0xe6, ++ 0x48, 0x51, 0x96, 0x8c, 0x38, 0x36, 0x08, 0x47, 0xb7, 0x40, 0x3f, 0x9b, 0x74, 0xcd, 0x1a, 0x44, ++ 0xdd, 0x3e, 0x43, 0xbd, 0x4b, 0x29, 0x58, 0xb4, 0xeb, 0x85, 0x7a, 0x3c, 0xba, 0x33, 0xfe, 0xa9, ++ 0x6e, 0x34, 0x78, 0x70, 0x9b, 0xcd, 0xf2, 0xb7, 0xb9, 0x9c, 0xb0, 0x7c, 0x8c, 0x63, 0x08, 0xe5, ++ 0xc4, 0xb4, 0x40, 0xd4, 0xfd, 0x53, 0xa5, 0x36, 0xcd, 0x61, 0xaa, 0x0a, 0x8a, 0xe9, 0x94, 0xd2, ++ 0x58, 0x78, 0xf7, 0x15, 0x89, 0x3a, 0xf4, 0x14, 0x5e, 0xac, 0x31, 0x86, 0xab, 0x46, 0xe2, 0xd6, ++ 0x9c, 0xcc, 0xb7, 0xc1, 0x74, 0x69, 0x51, 0x22, 0x93, 0xcd, 0x9b, 0x8c, 0x21, 0xaf, 0x76, 0x04, ++ 0x05, 0xcd, 0x3a, 0xea, 0x03, 0x73, 0x40, 0x7d, 0xf1, 0x45, 0x3b, 0x52, 0x26, 0xa7, 0xd0, 0x65, ++ 0x19, 0x8a, 0x03, 0x69, 0xb6, 0x7a, 0xfd, 0x82, 0x26, 0xe4, 0xd0, 0x36, 0x30, 0xda, 0x6a, 0x7b, ++ 0xd8, 0xf3, 0x79, 0x57, 0x48, 0x5a, 0x18, 0xc9, 0x1a, 0xc0, 0x41, 0x6e, 0x9c, 0x94, 0x2e, 0xcc, ++ 0x80, 0x8b, 0x8e, 0x42, 0xc1, 0x60, 0xec, 0xdd, 0x44, 0x6c, 0x70, 0xe8, 0x37, 0xd2, 0xcc, 0x1a, ++ 0x9e, 0x60, 0x12, 0x7b, 0xcb, 0x89, 0xaf, 0x10, 0x27, 0x31, 0xea, 0xc7, 0xe3, 0x86, 0x69, 0x87, ++ 0x44, 0x3f, 0xce, 0x96, 0x3c, 0x33, 0x49, 0xeb, 0x89, 0x0d, 0xda, 0xe2, 0xbd, 0x3b, 0x58, 0xc8, ++ 0xca, 0x76, 0xbd, 0x74, 0x46, 0xb6, 0x1a, 0xa8, 0x47, 0xd0, 0x3e, 0x38, 0x81, 0x36, 0xc9, 0xdd, ++ 0x3d, 0x43, 0x48, 0x2f, 0xaa, 0x61, 0xf9, 0x40, 0x9c, 0xc4, 0x2e, 0x9a, 0x0a, 0x5d, 0x67, 0x59, ++ 0x2e, 0x90, 0x3f, 0x51, 0x1a, 0xfd, 0x84, 0x38, 0x9b, 0xaa, 0x88, 0x08, 0x76, 0x0a, 0x6e, 0xe8, ++ 0x72, 0x73, 0x41, 0xf3, 0x2e, 0xc4, 0x4f, 0x48, 0x6e, 0x3d, 0x5b, 0x18, 0x9a, 0x1e, 0xb2, 0xfb, ++ 0x42, 0x08, 0xe2, 0x9b, 0x3e, 0xd0, 0x88, 0xbd, 0x96, 0xca, 0x49, 0x3f, 0x38, 0x40, 0x79, 0x8e, ++ 0x65, 0x3b, 0xbf, 0x3a, 0x23, 0x5b, 0x0d, 0x54, 0xc2, 0x68, 0x1f, 0x1c, 0xa1, 0x1b, 0x85, 0x8f, ++ }, ++ { /* 10 */ ++ 0xd4, 0x19, 0x2d, 0xd4, 0xc2, 0xc3, 0xd3, 0x9c, 0xe1, 0x5d, 0xa9, 0x18, 0x2c, 0xd1, 0xbe, 0x8f, ++ 0x40, 0x7b, 0xcb, 0x40, 0x94, 0x34, 0xa6, 0x04, 0x50, 0xb3, 0x14, 0xdb, 0x6b, 0x25, 0x60, 0xb5, ++ 0x97, 0xc0, 0xd2, 0x97, 0x3c, 0x7b, 0x81, 0x84, 0xc2, 0x71, 0xd1, 0x87, 0x95, 0x0f, 0x3d, 0xb7, ++ 0x4d, 0x69, 0xb6, 0x4d, 0xd9, 0x84, 0x1d, 0xc1, 0xcf, 0xff, 0x43, 0x34, 0xeb, 0xa7, 0x8a, 0xbf, ++ 0x03, 0xa2, 0x34, 0x03, 0x6a, 0x8c, 0xf4, 0x1c, 0x73, 0x9f, 0x6c, 0x44, 0xd2, 0xfb, 0xe3, 0x8d, ++ 0xd1, 0x3c, 0x71, 0xd1, 0x7c, 0x94, 0x0c, 0xb8, 0x74, 0x3f, 0x1d, 0xd4, 0x99, 0x1f, 0x58, 0xdb, ++ 0xf8, 0x08, 0x79, 0xf8, 0xe3, 0xac, 0xd6, 0xee, 0xc6, 0xdc, 0xd0, 0x47, 0x36, 0x48, 0x84, 0x45, ++ 0xca, 0xc7, 0x26, 0xca, 0xc0, 0xf2, 0x54, 0x44, 0x19, 0xd2, 0x97, 0xf5, 0x14, 0x30, 0xaf, 0xb4, ++ 0x53, 0xb7, 0xbd, 0x53, 0xdb, 0xb5, 0x9a, 0x19, 0x37, 0x70, 0x7d, 0xd9, 0xd3, 0x46, 0x9b, 0x84, ++ 0x66, 0x20, 0x27, 0x66, 0x0a, 0xf5, 0xde, 0x3e, 0x9e, 0xf6, 0xc6, 0xdf, 0xd8, 0xe3, 0x55, 0xd7, ++ 0xa5, 0x0f, 0x8d, 0xa5, 0x1f, 0x25, 0x03, 0x2e, 0x1d, 0x7f, 0x96, 0x35, 0xb7, 0x77, 0x16, 0x46, ++ 0x10, 0x6e, 0x42, 0x10, 0x25, 0x0d, 0xc8, 0x01, 0x14, 0x5c, 0x05, 0x46, 0x6a, 0x98, 0x18, 0xbc, ++ 0x6c, 0x6a, 0x9f, 0x6c, 0xb5, 0x5b, 0xa3, 0x76, 0x77, 0x32, 0x6d, 0x84, 0x71, 0xbc, 0x5a, 0x7f, ++ 0x90, 0x98, 0x17, 0x90, 0xce, 0x65, 0x47, 0x09, 0xb4, 0xf9, 0x2d, 0x33, 0xbc, 0xd2, 0xd8, 0x15, ++ 0x5e, 0xa5, 0xc0, 0x5e, 0x96, 0x05, 0x21, 0xdc, 0xa8, 0x3c, 0x2a, 0x36, 0x53, 0xc4, 0x71, 0x8e, ++ 0xbd, 0x56, 0xee, 0xbd, 0xc9, 0xcf, 0xaf, 0xce, 0x03, 0x0d, 0x70, 0x50, 0xe8, 0xa3, 0x02, 0xa4, ++ 0xc7, 0xd5, 0x5b, 0xc7, 0x8d, 0x42, 0xef, 0x81, 0x86, 0x9e, 0xc0, 0x1a, 0x94, 0xb2, 0x45, 0xbe, ++ 0x20, 0xdc, 0x84, 0x20, 0x4a, 0x1a, 0x53, 0x02, 0x28, 0xb8, 0x0a, 0x8c, 0xd4, 0xf3, 0x30, 0xbb, ++ 0x36, 0x35, 0xae, 0x36, 0xbb, 0xcc, 0xb0, 0x3b, 0xda, 0x19, 0xd7, 0x42, 0xd9, 0x5e, 0x2d, 0xde, ++ 0xe6, 0xd6, 0x72, 0xe6, 0xe1, 0x9d, 0x51, 0x36, 0x3e, 0x53, 0xee, 0xaa, 0x0e, 0xa9, 0x95, 0x7e, ++ 0xf3, 0x9d, 0x6c, 0xf3, 0x7a, 0xc7, 0x46, 0x13, 0xbf, 0x6d, 0x5f, 0x20, 0xd1, 0xff, 0x6b, 0x96, ++ 0x78, 0xfe, 0x2c, 0x78, 0x08, 0xc4, 0x59, 0xe6, 0x66, 0x79, 0xf8, 0x32, 0xe0, 0x02, 0x44, 0xec, ++ 0x60, 0xa7, 0x4f, 0x60, 0xde, 0x2e, 0xf5, 0x06, 0x78, 0x0b, 0x1e, 0x57, 0xbf, 0xd6, 0x50, 0x0e, ++ 0x0c, 0xcd, 0xd0, 0x0c, 0x6b, 0x75, 0x56, 0x70, 0x0f, 0x39, 0x73, 0xd3, 0xce, 0x6a, 0x0a, 0x71, ++ 0x3c, 0x7f, 0x16, 0x3c, 0x04, 0x62, 0xcd, 0x73, 0x33, 0xdd, 0x7c, 0x19, 0x70, 0x01, 0x22, 0x76, ++ 0x7f, 0xa6, 0xe9, 0x7f, 0xfa, 0xda, 0x9f, 0x6b, 0x10, 0xf1, 0x04, 0x86, 0xc9, 0xdf, 0xa1, 0x4e, ++ 0xc0, 0x8d, 0x9e, 0xc0, 0x7f, 0x5c, 0x29, 0x0c, 0xf0, 0x16, 0x3c, 0xae, 0xbd, 0x6f, 0xa0, 0x1c, ++ 0xfa, 0x75, 0xe0, 0xfa, 0xaf, 0xe5, 0xcf, 0x47, 0x25, 0x36, 0x98, 0x3f, 0xaa, 0x5b, 0x87, 0xb3, ++ 0xe5, 0x74, 0x46, 0xe5, 0x8b, 0x11, 0xa5, 0x2a, 0x4d, 0xcc, 0x82, 0xee, 0xdc, 0x52, 0x76, 0xf3, ++ 0x2c, 0x11, 0x54, 0x2c, 0x21, 0x6f, 0x05, 0x72, 0x27, 0x81, 0x79, 0x5f, 0x1a, 0x99, 0x3a, 0xca, ++ 0x29, 0x34, 0x08, 0x29, 0x9f, 0x38, 0xda, 0x56, 0xb2, 0xe3, 0xcd, 0x93, 0xaf, 0x57, 0xdc, 0x9e, ++ 0xce, 0x3d, 0xd7, 0xce, 0x58, 0x60, 0x66, 0xd5, 0x1c, 0xc5, 0x07, 0x05, 0xef, 0x16, 0xa9, 0x9b, ++ 0x7c, 0x04, 0xdd, 0x7c, 0x90, 0x56, 0x6b, 0x77, 0x63, 0x6e, 0x68, 0xc2, 0x1b, 0x24, 0x42, 0xc3, ++ 0x07, 0x58, 0xc5, 0x07, 0xf2, 0x1e, 0xc6, 0x8d, 0x76, 0x88, 0xfc, 0xb4, 0x29, 0xdd, 0xe5, 0xa2, ++ 0xb4, 0xbe, 0x62, 0xb4, 0x1c, 0xed, 0x26, 0x9a, 0x99, 0x56, 0xb7, 0x4f, 0x93, 0x07, 0xee, 0x81, ++ 0x81, 0x29, 0xf8, 0x81, 0xcd, 0xad, 0x62, 0xbd, 0x30, 0xd0, 0x0c, 0x49, 0x98, 0xa2, 0x20, 0xd2, ++ 0xa2, 0x57, 0x48, 0xa2, 0xed, 0x3b, 0xc5, 0xa3, 0x6b, 0xf7, 0x6a, 0x81, 0x9e, 0xaa, 0xf3, 0xe4, ++ 0xf0, 0x3f, 0x58, 0xf0, 0x10, 0x4b, 0xb2, 0x0f, 0xcc, 0xf2, 0x33, 0x64, 0x03, 0x04, 0x88, 0x1b, ++ 0xb6, 0xc3, 0xfb, 0xb6, 0x50, 0xa4, 0x3f, 0x33, 0x7a, 0xbc, 0xff, 0x37, 0x0f, 0x14, 0xed, 0x77, ++ 0x43, 0xd9, 0xff, 0x43, 0xfe, 0xb8, 0x52, 0x18, 0x23, 0x2c, 0x78, 0x9f, 0xb9, 0xde, 0x83, 0x38, ++ 0x67, 0xff, 0x8a, 0x67, 0x2c, 0x30, 0x33, 0x8b, 0x0e, 0x83, 0xe2, 0xe3, 0x96, 0x0b, 0xb5, 0xac, ++ 0x59, 0xfd, 0x05, 0x59, 0x64, 0x1b, 0xe7, 0x51, 0xde, 0xb4, 0xd6, 0x82, 0x7a, 0x19, 0x94, 0x2c, ++ 0xec, 0x9c, 0xca, 0xec, 0x5e, 0x33, 0x2c, 0x7e, 0xd7, 0x97, 0x45, 0xf1, 0xa7, 0xf6, 0x9a, 0xd6, ++ 0x86, 0x71, 0x3d, 0x86, 0x3f, 0xb3, 0xa4, 0x30, 0x46, 0x58, 0xf0, 0xfd, 0xb1, 0x7f, 0xc5, 0x70, ++ 0xf4, 0xc5, 0xa9, 0xf4, 0x88, 0xd9, 0x80, 0x9e, 0xc9, 0xe5, 0xa3, 0x94, 0xf8, 0x22, 0x8e, 0x34, ++ 0xf6, 0xb8, 0x30, 0xf6, 0xc4, 0x90, 0x99, 0x37, 0x2a, 0x0f, 0xeb, 0xec, 0x64, 0x31, 0x8d, 0xc2, ++ 0x5c, 0xd8, 0x59, 0x5c, 0xda, 0x4c, 0x38, 0x75, 0x4b, 0xd6, 0x62, 0x4e, 0xcf, 0xd7, 0x72, 0x78, ++ 0x92, 0xe5, 0x8e, 0x92, 0x82, 0x2c, 0x5e, 0xa0, 0x57, 0x13, 0x65, 0x4b, 0x20, 0xc1, 0xdb, 0xe3, ++ 0xa8, 0x1d, 0xf0, 0xa8, 0x52, 0x95, 0xb8, 0xeb, 0x82, 0x33, 0xc1, 0xda, 0x37, 0xf5, 0xfc, 0x4c, ++ 0xcf, 0xe2, 0x7a, 0xcf, 0x7e, 0xa5, 0x8b, 0x60, 0x8c, 0xb0, 0x23, 0x39, 0xa1, 0xfe, 0x49, 0xe0, ++ 0x2f, 0xb3, 0x60, 0x2f, 0x4b, 0xe3, 0xf1, 0x6e, 0x54, 0x1e, 0x15, 0x1b, 0xc8, 0x62, 0xd9, 0x47, ++ 0xe9, 0xb9, 0x96, 0xe9, 0xe0, 0x64, 0xf3, 0x5a, 0x42, 0xf5, 0xf1, 0x3d, 0x12, 0x38, 0x7c, 0x82, ++ 0x54, 0xef, 0x78, 0x54, 0x29, 0xab, 0x5c, 0x94, 0x41, 0xf8, 0x81, 0x6d, 0xfa, 0x9b, 0x7e, 0x26, ++ 0x8f, 0x99, 0xb1, 0x8f, 0xea, 0x91, 0x2d, 0x64, 0xdc, 0x03, 0x37, 0xe2, 0xca, 0xdb, 0x29, 0x55, ++ 0xaa, 0x60, 0x69, 0xaa, 0x1e, 0xdc, 0xa1, 0x42, 0x61, 0xd9, 0x89, 0xa2, 0xab, 0xe6, 0xff, 0xba, ++ 0x24, 0x26, 0x75, 0x24, 0xd2, 0x88, 0x61, 0x93, 0x2d, 0xaf, 0x9a, 0x7c, 0x2f, 0xd5, 0x36, 0x94, ++ 0x71, 0x16, 0xa0, 0x71, 0xdd, 0xe6, 0xd0, 0xb2, 0xfc, 0x22, 0x3f, 0x2d, 0x9b, 0xa6, 0xa8, 0xc9, ++ 0x65, 0x82, 0x13, 0x65, 0x60, 0x79, 0x2a, 0x22, 0xed, 0x69, 0xaa, 0x9b, 0x0a, 0x18, 0xb6, 0x5a, ++ 0x99, 0x70, 0x9b, 0x99, 0x1b, 0x47, 0xce, 0x5d, 0x2e, 0xa2, 0xea, 0x2c, 0xc7, 0x76, 0x34, 0x30, ++ 0x96, 0x1f, 0x7f, 0x96, 0x1a, 0xbe, 0x6c, 0x31, 0x52, 0x04, 0xf5, 0xbb, 0xdb, 0xe7, 0xdd, 0xcc, ++ 0x9c, 0x55, 0xc7, 0x9c, 0xa5, 0x10, 0x11, 0x79, 0xbb, 0xc0, 0x5e, 0xe0, 0x72, 0xb8, 0xd2, 0x64, ++ 0xdd, 0xf1, 0xa1, 0xdd, 0x17, 0xe1, 0x5a, 0xc8, 0x7b, 0x06, 0x6e, 0x07, 0x57, 0x75, 0x52, 0xaa, ++ 0x5a, 0x5f, 0x31, 0x5a, 0x0e, 0x97, 0x13, 0x4d, 0xad, 0x2b, 0xba, 0xc6, 0xa8, 0xe2, 0x77, 0xa1, ++ 0x80, 0xf6, 0x55, 0x80, 0xeb, 0x68, 0x8f, 0x08, 0xa0, 0xa5, 0x28, 0x75, 0xd6, 0x4a, 0xc0, 0xa9, ++ 0xe8, 0x66, 0x3b, 0xe8, 0xc6, 0xa1, 0x1e, 0xef, 0xd2, 0x80, 0xd5, 0x01, 0x5c, 0xd0, 0x9c, 0xf9, ++ 0x50, 0x15, 0x89, 0x50, 0xb1, 0x39, 0x6e, 0x05, 0x44, 0xef, 0x11, 0x9d, 0x01, 0xbd, 0x78, 0x09, ++ 0x57, 0x4d, 0x4c, 0x57, 0x43, 0x27, 0xa8, 0x88, 0x32, 0x67, 0xed, 0x29, 0x28, 0x60, 0x9d, 0xab, ++ 0xe4, 0xab, 0xeb, 0xe4, 0xad, 0xd4, 0x48, 0x9f, 0xdd, 0xb9, 0xa6, 0xd2, 0x92, 0xba, 0x96, 0x88, ++ 0x1e, 0xde, 0x0b, 0x1e, 0x02, 0x31, 0x87, 0xd8, 0xf8, 0x8f, 0x3e, 0xed, 0x38, 0xe1, 0x11, 0x3b, ++ 0x84, 0x0c, 0xa4, 0x84, 0x73, 0xfa, 0xbd, 0x99, 0xa5, 0xb2, 0xb8, 0x85, 0x2d, 0x6c, 0xc6, 0x86, ++ 0x15, 0x4b, 0x1e, 0x15, 0x9b, 0x5a, 0x17, 0x25, 0x81, 0x3e, 0xb1, 0x8a, 0xdf, 0x56, 0xfe, 0xe8, ++ 0x41, 0xa4, 0x66, 0x41, 0xb2, 0xf1, 0x4b, 0xb1, 0xc0, 0xc6, 0x30, 0xe7, 0x25, 0xcd, 0x80, 0xce, ++ 0x19, 0x86, 0xce, 0x19, 0xf0, 0x2f, 0x41, 0x55, 0x8e, 0x07, 0xc2, 0x59, 0x11, 0x3c, 0xf4, 0x99, ++ 0x26, 0x5b, 0xec, 0x26, 0x9e, 0xc1, 0x78, 0x3a, 0xce, 0x45, 0xd2, 0x04, 0xb3, 0xc6, 0x35, 0x62, ++ 0xa0, 0x2a, 0xd1, 0xa0, 0xa1, 0x72, 0xdc, 0x0a, 0x88, 0x1d, 0x22, 0xf9, 0x02, 0xb9, 0xf0, 0x12, ++ 0x0b, 0x95, 0x15, 0x0b, 0x99, 0x6b, 0x90, 0xfd, 0x79, 0xb1, 0x8f, 0x67, 0xe7, 0xb7, 0xef, 0xd3, ++ 0x22, 0xa1, 0x1d, 0x22, 0x06, 0x53, 0x4a, 0xab, 0xcb, 0x52, 0x42, 0xf4, 0x48, 0xe0, 0x33, 0x4d, ++ 0x9d, 0x8a, 0x6a, 0x9d, 0x83, 0xd5, 0xfc, 0xcc, 0x2b, 0xb5, 0x7a, 0xdc, 0x3c, 0x50, 0x32, 0x1f, ++ 0xf5, 0x1a, 0x04, 0xf5, 0xae, 0x1c, 0x6d, 0x2b, 0x59, 0x90, 0x87, 0xa8, 0xb6, 0xca, 0x6e, 0x4f, ++ 0xda, 0xa9, 0x64, 0xda, 0xe5, 0xff, 0x9c, 0x45, 0x0d, 0x8e, 0x92, 0xb3, 0x7e, 0xa8, 0xb7, 0x08, ++ 0x37, 0xea, 0x03, 0x37, 0x9d, 0x09, 0x5d, 0x8e, 0x4a, 0x6c, 0xf3, 0x7e, 0x97, 0xb6, 0xcd, 0xa5, ++ 0xa7, 0x72, 0x14, 0xa7, 0x53, 0x6c, 0x1a, 0x87, 0xfe, 0x95, 0xde, 0x4d, 0x2b, 0x64, 0x15, 0xb0, ++ 0xcd, 0x9f, 0xe3, 0xcd, 0x32, 0xec, 0x92, 0xc9, 0x6f, 0x5a, 0x6b, 0x41, 0x3d, 0xed, 0x4a, 0x16, ++ 0x63, 0x05, 0x7b, 0x63, 0xb4, 0xa2, 0x01, 0x1a, 0x0b, 0x94, 0x72, 0x13, 0x6d, 0x2d, 0xb3, 0x83, ++ 0xbc, 0x89, 0x43, 0xbc, 0xef, 0x0a, 0x42, 0x7b, 0x93, 0x78, 0x54, 0x6c, 0xa6, 0x4b, 0xe2, 0xdf, ++ 0xe2, 0x2c, 0x83, 0xe2, 0x79, 0x0f, 0x63, 0xa7, 0x3b, 0x44, 0x7e, 0x5a, 0xf5, 0x8f, 0x93, 0x51, ++ 0xd6, 0x64, 0xb4, 0xd6, 0x8e, 0x8a, 0xca, 0x35, 0x02, 0xb7, 0xe1, 0x60, 0xb0, 0xc2, 0xbd, 0x79, ++ 0x94, 0x62, 0xe6, 0x94, 0x56, 0xf7, 0x75, 0x98, 0xb1, 0xee, 0xbd, 0xc3, 0x47, 0xf4, 0xde, 0x3a, ++ 0xa4, 0xd0, 0x20, 0xa4, 0x39, 0xe0, 0xee, 0x9b, 0x8d, 0x0a, 0xb2, 0x09, 0xf9, 0x9f, 0xf6, 0x3d, ++ 0x88, 0xc1, 0x74, 0x88, 0x18, 0x8f, 0xeb, 0xe9, 0xaa, 0x8b, 0xcb, 0x56, 0xe3, 0x06, 0xcc, 0xf7, ++ 0x62, 0xda, 0xd6, 0x62, 0x92, 0x67, 0xec, 0xaf, 0x9b, 0xe1, 0x56, 0x2f, 0x23, 0xc5, 0x53, 0xf8, ++ 0x2e, 0x6c, 0xcd, 0x2e, 0x6d, 0x26, 0x1c, 0xdb, 0xc4, 0x6b, 0x31, 0x27, 0x86, 0x8a, 0x39, 0x3c, ++ 0xc8, 0xba, 0xbf, 0xc8, 0x8c, 0xbb, 0x4d, 0xed, 0xfa, 0x38, 0xdf, 0x8d, 0x88, 0x23, 0xac, 0x42, ++ 0x18, 0x59, 0x63, 0x18, 0xd6, 0xea, 0xac, 0xe0, 0x1e, 0x72, 0xe6, 0x65, 0x5f, 0xd4, 0x14, 0xe2, ++ 0x06, 0x87, 0x68, 0x06, 0xd4, 0xdb, 0x2b, 0x38, 0xe6, 0xfd, 0xd8, 0x88, 0x67, 0x35, 0x05, 0xd9, ++ 0x16, 0xe9, 0x2a, 0x16, 0xf1, 0xd6, 0xe3, 0x39, 0xf2, 0xa1, 0xdd, 0xce, 0x0d, 0xad, 0x1d, 0x65, ++ 0x13, 0xcc, 0x76, 0x13, 0x4f, 0x81, 0x3c, 0x1d, 0x67, 0xc3, 0x69, 0x02, 0xb8, 0x63, 0xfb, 0x31, ++ 0xd2, 0x9e, 0x45, 0xd2, 0x16, 0x18, 0xf8, 0xa4, 0x07, 0xa0, 0x71, 0x90, 0x4b, 0xe4, 0xbb, 0x56, ++ 0x5b, 0x80, 0x9c, 0x5b, 0x28, 0x52, 0xfe, 0xf8, 0x3d, 0x5e, 0x9e, 0xfa, 0xe6, 0x0a, 0x97, 0xda, ++ 0xff, 0x50, 0xbc, 0xff, 0x11, 0xb2, 0x10, 0x63, 0xb0, 0x54, 0x2c, 0xf3, 0x1f, 0x95, 0x61, 0xe7, ++ 0xbb, 0xd1, 0x86, 0xbb, 0x1d, 0x14, 0x84, 0xf6, 0xe5, 0xf0, 0xa8, 0xd8, 0x8f, 0x96, 0x07, 0x7d, ++ 0xc2, 0xf0, 0x07, 0xc2, 0x33, 0x15, 0x30, 0xa5, 0x13, 0xfc, 0x74, 0xd6, 0x21, 0x7c, 0xa3, 0xea, ++ 0xb9, 0xac, 0x1f, 0xb9, 0x51, 0x5d, 0x9d, 0x5f, 0x06, 0x1a, 0xe0, 0xa0, 0x13, 0x85, 0x04, 0x8b, ++ 0xbf, 0x2b, 0x77, 0xbf, 0x85, 0x86, 0xb6, 0x67, 0xe0, 0xe7, 0x38, 0x28, 0x74, 0xb0, 0x01, 0x52, ++ 0xef, 0x3e, 0xfe, 0xef, 0x34, 0xbf, 0xd8, 0x62, 0xa4, 0x08, 0x29, 0xb5, 0x75, 0x0d, 0x79, 0x5b, ++ 0xdc, 0x2e, 0x0c, 0xdc, 0x31, 0x24, 0xb7, 0x7d, 0xeb, 0x73, 0x4a, 0x3b, 0x19, 0x9d, 0xb2, 0xd1, ++ 0x1b, 0xfb, 0x57, 0x1b, 0xbc, 0x66, 0x58, 0xfc, 0x6d, 0xed, 0x8a, 0x21, 0x8d, 0x2f, 0xf7, 0x6f, ++ 0x27, 0x84, 0x41, 0x27, 0xb8, 0x04, 0x95, 0x8f, 0x5e, 0x30, 0xf6, 0x38, 0xfd, 0x2e, 0xd5, 0x19, ++ 0x3e, 0x02, 0x8f, 0x3e, 0x48, 0x2b, 0xd4, 0xda, 0xd0, 0x37, 0x34, 0x61, 0xec, 0x12, 0x21, 0x80, ++ 0xe7, 0x09, 0xdf, 0xe7, 0xc7, 0x58, 0xbc, 0x83, 0xae, 0x26, 0xca, 0x96, 0x40, 0x41, 0x75, 0x05, ++ 0xb0, 0x44, 0x93, 0xb0, 0x84, 0x7f, 0x14, 0x0b, 0x9c, 0x41, 0x27, 0xbf, 0x68, 0x21, 0xe8, 0xae, ++ 0x69, 0x4f, 0xc3, 0x69, 0x0b, 0x0c, 0x7c, 0x52, 0xe2, 0x50, 0xd9, 0x48, 0xc4, 0x72, 0xbc, 0x2b, ++ 0x21, 0x03, 0x29, 0x21, 0x6c, 0xdf, 0xbe, 0xb7, 0xb8, 0xcd, 0x2e, 0xb0, 0x9a, 0x1b, 0xd0, 0xc0, ++ 0x0f, 0x6f, 0xe4, 0x0f, 0x01, 0xf9, 0xa2, 0x6c, 0x7c, 0xa6, 0x1f, 0x97, 0x1c, 0x91, 0xe9, 0xfc, ++ 0xf1, 0xe0, 0xf5, 0xf1, 0x36, 0x8e, 0x5f, 0xba, 0x5c, 0x87, 0x17, 0x58, 0x4d, 0xec, 0x68, 0x60, ++ 0x1a, 0x24, 0xfa, 0x1a, 0x9a, 0xa3, 0xb5, 0x49, 0xfd, 0x98, 0xae, 0x1d, 0xc3, 0xc7, 0x17, 0x14, ++ 0x0d, 0x12, 0x7d, 0x0d, 0x4d, 0xb0, 0xbb, 0xc5, 0x9f, 0x4c, 0x57, 0xef, 0x80, 0x82, 0xea, 0x0a, ++ 0xa6, 0xad, 0xb9, 0xa6, 0x75, 0xa9, 0xf7, 0x32, 0x6e, 0xe0, 0xfa, 0x71, 0x65, 0x8c, 0xf5, 0xcb, ++ 0x02, 0x7d, 0x99, 0x02, 0x4c, 0x49, 0x19, 0xa9, 0xe3, 0xea, 0x48, 0x78, 0x9c, 0x13, 0x03, 0xf6, ++ 0x6a, 0xed, 0xf7, 0x6a, 0x61, 0x80, 0x88, 0x4e, 0x91, 0xcf, 0xb5, 0x0c, 0x16, 0x89, 0x5f, 0xa6, ++ 0x08, 0x37, 0x21, 0x08, 0xf3, 0xe7, 0x64, 0xe1, 0x0a, 0x2e, 0xe3, 0x23, 0x35, 0x4c, 0x0c, 0x5e, ++ 0x4c, 0xb6, 0x1b, 0x4c, 0xff, 0x41, 0xf0, 0x74, 0x5f, 0x8a, 0x67, 0x08, 0xa5, 0x4f, 0x6a, 0xc4, ++ 0x49, 0x93, 0x47, 0x49, 0x41, 0x16, 0x2f, 0x50, 0xca, 0xe8, 0xd3, 0xc4, 0x10, 0x81, 0x8c, 0x90, ++ 0x91, 0x47, 0xba, 0x91, 0xe8, 0xa0, 0xaa, 0xbc, 0x24, 0x8c, 0x09, 0x0f, 0xf2, 0x3a, 0x38, 0x6e, ++ 0xe1, 0x8e, 0xb7, 0xe1, 0x13, 0x83, 0x97, 0xbb, 0x48, 0xdb, 0x12, 0x1e, 0x27, 0x74, 0x70, 0xdc, ++ 0x8b, 0x63, 0x40, 0x8b, 0x72, 0x03, 0x1f, 0xf5, 0xd9, 0x14, 0xa7, 0x12, 0x31, 0xfd, 0x2f, 0x7a, ++ 0x14, 0x94, 0xb3, 0x14, 0xbd, 0x9f, 0xfa, 0x90, 0x11, 0x4b, 0x95, 0xb6, 0x91, 0xbe, 0x1e, 0x93, ++ 0x95, 0xbd, 0x4b, 0x95, 0x70, 0x32, 0x98, 0x2d, 0x21, 0x9b, 0x99, 0xff, 0x09, 0x1c, 0x3e, 0x41, ++ 0xb8, 0x73, 0xb2, 0xb8, 0x77, 0x98, 0x70, 0xea, 0x96, 0x6f, 0xc4, 0x9c, 0x5d, 0x6d, 0xe4, 0xf0, ++ 0x9e, 0x28, 0x5e, 0x9e, 0xe9, 0x59, 0x08, 0xd0, 0x58, 0x2a, 0x16, 0x98, 0xee, 0xab, 0xd1, 0x92, ++ 0xeb, 0xc4, 0x0f, 0xeb, 0xac, 0x2d, 0xea, 0xf3, 0xa1, 0x1f, 0xb9, 0x45, 0x8e, 0x2b, 0x7f, 0x74, ++ 0x6e, 0x17, 0x06, 0x6e, 0xf9, 0x12, 0xba, 0xdf, 0x94, 0xd8, 0x25, 0xfc, 0xed, 0xaf, 0x59, 0x89, ++ 0xc3, 0x2f, 0xaa, 0xc3, 0x15, 0xd0, 0xdd, 0x10, 0x83, 0x89, 0x50, 0xea, 0x6f, 0x94, 0x43, 0x91, ++ 0x98, 0xaf, 0x36, 0x98, 0x3d, 0x82, 0x23, 0xe8, 0xbe, 0xd7, 0xce, 0x10, 0x89, 0x9e, 0xd4, 0x4b, ++ 0x70, 0xc9, 0x0d, 0x70, 0xfb, 0x23, 0x3d, 0x07, 0x6c, 0x57, 0x1b, 0x11, 0xd5, 0x4e, 0x48, 0xb2, ++ 0x72, 0xb4, 0x94, 0x72, 0xb7, 0x6a, 0x24, 0xae, 0x8f, 0xbd, 0x53, 0x69, 0x49, 0x5d, 0x4b, 0x44, ++ 0x04, 0xfa, 0xf1, 0x04, 0x98, 0x92, 0x32, 0x91, 0x05, 0x17, 0x90, 0xf0, 0xfb, 0x26, 0x06, 0x2f, ++ 0xed, 0x43, 0x67, 0xed, 0x78, 0xf6, 0xc1, 0xcb, 0x47, 0xe2, 0x61, 0xcd, 0xe9, 0x1e, 0x7a, 0xad, ++ 0xf2, 0x42, 0xc1, 0xf2, 0x5c, 0x02, 0xab, 0xa6, 0x2f, 0x18, 0x7b, 0x1c, 0x9f, 0x17, 0x8b, 0xed, ++ 0x47, 0x23, 0x0e, 0x47, 0x66, 0x2a, 0x60, 0x89, 0x26, 0x3b, 0xe8, 0x6f, 0x42, 0xf8, 0x85, 0x17, ++ 0x45, 0x5e, 0x97, 0x45, 0x2a, 0x63, 0x79, 0x20, 0xc5, 0xd1, 0xa0, 0x17, 0xde, 0xeb, 0x86, 0xe1, ++ 0x9a, 0xd2, 0xaf, 0x9a, 0x71, 0xcb, 0x3a, 0x41, 0x5d, 0x3d, 0x86, 0x68, 0x15, 0x8d, 0xd7, 0xbd, ++ 0xd5, 0xc6, 0x80, 0xd5, 0xe4, 0x06, 0x3e, 0x29, 0x71, 0x28, 0x8d, 0x24, 0x62, 0x39, 0x5e, 0xf4, ++ 0xd9, 0x0b, 0x50, 0xd9, 0x8f, 0x73, 0x68, 0x59, 0x7e, 0x11, 0xfe, 0xf7, 0xac, 0x53, 0x54, 0x85, ++ 0x8d, 0xe4, 0x28, 0x8d, 0xa6, 0xd8, 0x34, 0xcd, 0x3f, 0xe9, 0x7f, 0x9a, 0x56, 0xc8, 0x2a, 0xa3, ++ 0x3b, 0x27, 0xd3, 0x3b, 0xf6, 0x7c, 0x0b, 0xfe, 0x45, 0x55, 0x80, 0xad, 0x59, 0xdc, 0xc7, 0xd4, ++ 0x6f, 0xc8, 0xab, 0x6f, 0xdf, 0xd7, 0x57, 0x6a, 0x04, 0xad, 0x01, 0xc0, 0xa3, 0x47, 0xb9, 0xf2, ++ 0x4e, 0xcb, 0x82, 0x4e, 0xb3, 0x08, 0xe9, 0xdd, 0xbc, 0x60, 0x2f, 0x70, 0x39, 0x5c, 0x69, 0x32, ++ 0x34, 0x48, 0x37, 0x34, 0xf7, 0x85, 0xa9, 0x92, 0x39, 0xf3, 0x9f, 0x3a, 0x45, 0x4d, 0x2e, 0x28, ++ 0x74, 0x33, 0xfc, 0x74, 0x63, 0xb1, 0x0f, 0x96, 0x69, 0x40, 0x8b, 0xe1, 0x2e, 0x68, 0x4e, 0x9d, ++ 0x9f, 0xf7, 0xf3, 0x9f, 0xcf, 0x9c, 0xe5, 0x65, 0xc8, 0x5f, 0x32, 0xa4, 0xa0, 0x43, 0x31, 0xe9, ++ 0x7d, 0xdb, 0x70, 0x7d, 0xb6, 0x93, 0x86, 0xc2, 0xf3, 0x1b, 0x4c, 0xfe, 0x55, 0xcc, 0xa2, 0xb8, ++ 0x61, 0x78, 0xe2, 0x61, 0xf8, 0xeb, 0x18, 0xb3, 0xe8, 0x7e, 0x3a, 0x6b, 0xf1, 0x3e, 0xb0, 0x75, ++ 0x31, 0x6d, 0x6b, 0x31, 0x49, 0xd2, 0x76, 0xb6, 0xac, 0x91, 0x2b, 0xf6, 0xf0, 0x83, 0xc8, 0x7c, ++ 0x09, 0xe8, 0x8c, 0x09, 0xd5, 0x22, 0x89, 0x54, 0x9a, 0x5b, 0xc7, 0x1f, 0x7b, 0xa4, 0xec, 0x25, ++ 0x12, 0x13, 0xdb, 0x12, 0x69, 0x44, 0xd1, 0xa8, 0xf7, 0xb6, 0x4d, 0x3e, 0xf6, 0x8b, 0x1b, 0x4a, ++ 0x64, 0x5d, 0xbe, 0x64, 0x46, 0xbc, 0xc7, 0x97, 0x7d, 0x1c, 0x8e, 0xa7, 0x44, 0xf0, 0x56, 0x21, ++ 0xd7, 0xbb, 0x19, 0xd7, 0xa8, 0x4f, 0x27, 0x80, 0x92, 0xc2, 0xc5, 0x5c, 0xfe, 0x2a, 0x5d, 0x02, ++ 0x93, 0x3a, 0x23, 0x93, 0xa4, 0xe9, 0xb3, 0x15, 0xc7, 0x66, 0x41, 0x77, 0x6e, 0x29, 0x3b, 0x98, ++ 0x3a, 0xf8, 0x7e, 0x3a, 0xd0, 0xb9, 0xe6, 0x4b, 0xd5, 0x20, 0xa4, 0x91, 0x17, 0x34, 0x27, 0xaf, ++ 0xa3, 0x88, 0xe5, 0xa3, 0xcb, 0xfe, 0x28, 0x16, 0xfb, 0x82, 0x4e, 0xbd, 0xd0, 0x42, 0x13, 0x9f, ++ 0xad, 0x38, 0xac, 0xad, 0xec, 0xc2, 0x67, 0xcf, 0x17, 0x51, 0x75, 0x16, 0x82, 0x3b, 0x1a, 0x18, ++ 0x1c, 0xa3, 0x92, 0x1c, 0x4e, 0x78, 0x9e, 0x71, 0x1b, 0x65, 0x76, 0x95, 0xa4, 0xf2, 0x12, 0xcd, ++ 0x7e, 0x79, 0x44, 0x7e, 0xdc, 0x1f, 0x72, 0xde, 0x80, 0x84, 0x20, 0xba, 0x87, 0x37, 0x41, 0x35, ++ 0x76, 0x4e, 0x65, 0x76, 0x2f, 0xf8, 0x16, 0x3f, 0x8a, 0xaa, 0xc3, 0x99, 0xb2, 0x7b, 0x4d, 0x6b, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x33, 0x10, 0xf2, 0x33, 0x05, 0x9b, 0x6f, 0x1f, 0x4f, 0x7b, 0x63, 0x8e, 0x6c, 0x90, 0xcb, 0x8a, ++ 0xf7, 0x67, 0x9d, 0xf7, 0xe2, 0x55, 0x74, 0x82, 0xba, 0x7a, 0xcf, 0xd0, 0x2a, 0xd9, 0x6d, 0xb9, ++ 0x28, 0xeb, 0xa5, 0x28, 0xb9, 0xfd, 0x37, 0xe3, 0x22, 0x96, 0xe9, 0xaf, 0xe1, 0xbf, 0x3c, 0xe5, ++ 0x23, 0x7e, 0xb0, 0x23, 0x20, 0x96, 0xa7, 0x1e, 0x5b, 0x27, 0x66, 0xc8, 0x06, 0x08, 0xd3, 0x36, ++ 0xb2, 0x39, 0x0a, 0xb2, 0xc8, 0x36, 0x0d, 0xa2, 0x7f, 0xab, 0x6f, 0xc7, 0xf4, 0x32, 0xeb, 0x58, ++ 0xbe, 0xf4, 0xda, 0xbe, 0xa3, 0x43, 0x5b, 0xd2, 0x70, 0x92, 0x1c, 0x14, 0x3a, 0x58, 0xe1, 0x29, ++ 0x42, 0x06, 0x52, 0x42, 0xd8, 0x7d, 0xbf, 0xad, 0xb3, 0x59, 0x5c, 0xa3, 0xf7, 0x36, 0x63, 0x43, ++ 0x11, 0xb1, 0xef, 0x11, 0x03, 0xc8, 0x25, 0xb4, 0x84, 0x29, 0x21, 0x7a, 0x24, 0x70, 0xf8, 0xc7, ++ 0xc4, 0x77, 0x6f, 0xc4, 0xe7, 0xce, 0x1b, 0x9d, 0xf5, 0x01, 0xac, 0x5e, 0x46, 0x49, 0xa6, 0x33, ++ 0x5f, 0x7a, 0x6d, 0x5f, 0xb0, 0xc0, 0xcc, 0x69, 0x38, 0x49, 0x0e, 0x0a, 0x1d, 0x2c, 0x91, 0xf5, ++ 0x30, 0xb2, 0xc6, 0x30, 0x6f, 0x17, 0x9b, 0x03, 0x3c, 0xe4, 0x0f, 0xca, 0xbe, 0x6b, 0x28, 0x07, ++ 0x01, 0xdf, 0xad, 0x01, 0x26, 0xc5, 0xed, 0xb5, 0x90, 0x75, 0x24, 0x3c, 0x4e, 0xe8, 0xe0, 0x7b, ++ 0xd8, 0xd4, 0xfd, 0xd8, 0xa9, 0xb6, 0x85, 0xec, 0xee, 0x64, 0xda, 0xcb, 0xe2, 0xbb, 0xb4, 0xfe, ++ 0x05, 0x25, 0x5c, 0x05, 0xbe, 0x57, 0xdf, 0x24, 0x95, 0x62, 0xb4, 0xcc, 0xb5, 0xce, 0xe6, 0x54, ++ 0x32, 0xcf, 0x5f, 0x32, 0x23, 0x5e, 0x82, 0xaa, 0xdf, 0x0e, 0x47, 0xb2, 0x22, 0x78, 0x2b, 0xf1, ++ 0xdf, 0x8c, 0x38, 0xdf, 0x5b, 0xa8, 0x43, 0x61, 0x98, 0xec, 0x26, 0x7f, 0xcb, 0x66, 0x51, 0x5c, ++ 0xba, 0x0e, 0x2b, 0xba, 0x3b, 0xd1, 0x69, 0x43, 0x75, 0x85, 0x8c, 0xe4, 0xc1, 0x7e, 0xe7, 0x06, ++ 0x8e, 0x46, 0x1c, 0x8e, 0xcc, 0x54, 0xc0, 0xd1, 0x4c, 0x76, 0x13, 0xde, 0x84, 0x33, 0xc9, 0x2e, ++ 0x73, 0x6b, 0x39, 0x73, 0x91, 0xaf, 0xc9, 0x1b, 0x1f, 0xc8, 0x77, 0x55, 0x07, 0xb5, 0xab, 0x3f, ++ 0xfd, 0x2d, 0x25, 0xfd, 0x5d, 0xfb, 0x09, 0xca, 0x53, 0xbe, 0x64, 0x8b, 0x83, 0x86, 0x62, 0x11, ++ 0x8c, 0x3b, 0x85, 0x8c, 0x80, 0x1d, 0xd9, 0x78, 0xaf, 0x9c, 0x5b, 0xa6, 0x18, 0x20, 0xca, 0xd8, ++ 0xb3, 0xe6, 0xa7, 0xb3, 0xee, 0xf3, 0xe0, 0x17, 0xef, 0xde, 0x4b, 0xfb, 0xba, 0xda, 0x0b, 0x23, ++ 0x56, 0x92, 0xe1, 0x56, 0x65, 0xe2, 0x45, 0x3d, 0xa2, 0x12, 0xc9, 0x15, 0x66, 0x88, 0x7d, 0xd0, ++ 0x2b, 0x49, 0x91, 0x2b, 0xd3, 0x71, 0xc3, 0xff, 0x51, 0x09, 0x85, 0xeb, 0x33, 0x44, 0xdf, 0x68, ++ 0x82, 0x8b, 0xcc, 0x82, 0xa7, 0x21, 0x96, 0xa1, 0x43, 0x4f, 0x60, 0x0d, 0x4a, 0x59, 0xc3, 0x5f, ++ 0x6b, 0x32, 0x5a, 0x6b, 0x47, 0x45, 0x65, 0xfb, 0x01, 0xba, 0x91, 0x30, 0x58, 0x61, 0xbf, 0xdd, ++ 0x87, 0xae, 0x90, 0x87, 0x19, 0x76, 0x49, 0x85, 0xd6, 0x2d, 0xd4, 0xc1, 0xff, 0x97, 0x25, 0x0b, ++ 0xae, 0x9a, 0x98, 0xae, 0x86, 0x4e, 0x93, 0xd3, 0x64, 0xce, 0x19, 0x52, 0x50, 0xc0, 0xf9, 0x95, ++ 0x46, 0xfc, 0xa3, 0x46, 0x40, 0xef, 0x8d, 0x3c, 0xb6, 0x4e, 0xcc, 0x53, 0x0c, 0x10, 0x65, 0x6c, ++ 0xa9, 0xc2, 0x5d, 0xa9, 0x74, 0x50, 0x55, 0x5e, 0x12, 0x46, 0xe5, 0xe6, 0x79, 0x1d, 0x1c, 0x37, ++ 0xe0, 0x51, 0x1a, 0xe0, 0x35, 0x46, 0x7a, 0x0e, 0xd8, 0xae, 0x36, 0x22, 0x69, 0x9c, 0x90, 0xa7, ++ 0xc6, 0x0a, 0xf6, 0xc6, 0xab, 0x87, 0x02, 0x34, 0x16, 0xeb, 0xe4, 0x26, 0xda, 0x5a, 0xa5, 0xc5, ++ 0xaf, 0x45, 0x35, 0xaf, 0xa0, 0x8b, 0x7e, 0x66, 0xf4, 0xbb, 0x3d, 0x6e, 0x1e, 0x28, 0x19, 0xee, ++ 0xb1, 0x9b, 0x3e, 0xb1, 0xa2, 0xba, 0xf9, 0xbe, 0x0c, 0x34, 0x03, 0x83, 0x26, 0xc9, 0x08, 0xd5, ++ 0x0e, 0xb0, 0x49, 0x0e, 0x27, 0x3c, 0x4f, 0xd9, 0xec, 0xd3, 0x3b, 0xab, 0x52, 0x79, 0x09, 0x87, ++ 0x89, 0x1e, 0xd9, 0x89, 0x3e, 0x4a, 0x06, 0x5c, 0x3a, 0xfe, 0xef, 0x6a, 0xad, 0xee, 0x2c, 0x8c, ++ 0x79, 0x21, 0x81, 0x79, 0x2e, 0x01, 0xb4, 0x53, 0xf6, 0x0c, 0xdc, 0x0e, 0xae, 0xea, 0xa4, 0x97, ++ 0xd3, 0x41, 0xe8, 0xd3, 0x30, 0xdd, 0x15, 0x11, 0x97, 0xd5, 0x55, 0xac, 0x05, 0x0c, 0x5b, 0x2d, ++ 0x2d, 0xce, 0xf9, 0x2d, 0x07, 0xaa, 0xe8, 0xc7, 0xb7, 0xf4, 0x5d, 0x63, 0x54, 0x71, 0xda, 0xb1, ++ 0xc9, 0x65, 0x12, 0xc9, 0xaa, 0x7e, 0xa0, 0x58, 0x6a, 0x4d, 0xfb, 0xb1, 0xc6, 0xcb, 0x4c, 0x39, ++ 0x0a, 0x4a, 0xb8, 0x0a, 0xbf, 0xae, 0x7d, 0x48, 0xe9, 0xc4, 0xab, 0x5b, 0xa9, 0x5f, 0x0f, 0xa8, ++ 0xdb, 0x76, 0xc9, 0xdb, 0xc3, 0x3a, 0x71, 0xf0, 0x9d, 0xfb, 0xb6, 0x8f, 0x30, 0x40, 0x57, 0x73, ++ 0x7b, 0x5c, 0x18, 0x7b, 0x62, 0x48, 0xad, 0xfa, 0x15, 0xe6, 0x94, 0x76, 0x32, 0xf9, 0xa7, 0x61, ++ 0xde, 0x53, 0x95, 0xde, 0x7d, 0x6d, 0xae, 0xd4, 0x08, 0x99, 0x02, 0x43, 0x85, 0x8e, 0xb1, 0x27, ++ 0x48, 0x4c, 0xea, 0x48, 0x67, 0xd3, 0xc2, 0xe5, 0x5a, 0x9d, 0xf7, 0xf8, 0x5e, 0x69, 0x6c, 0xeb, ++ 0xe3, 0xf3, 0x2e, 0xe3, 0x5f, 0xca, 0x8e, 0x12, 0xab, 0x31, 0x5a, 0x66, 0xbb, 0x67, 0x73, 0x2a, ++ 0x4b, 0xee, 0xde, 0x4b, 0x0d, 0x5f, 0x36, 0xf9, 0x29, 0x02, 0x9b, 0xbc, 0x8c, 0x92, 0x8f, 0x66, ++ 0x35, 0x97, 0x9a, 0x35, 0xd1, 0x40, 0x44, 0x27, 0xa9, 0x86, 0xbb, 0x06, 0x0b, 0xa5, 0xce, 0x53, ++ 0x8a, 0xbc, 0xed, 0x8a, 0x54, 0xc6, 0xf2, 0x40, 0x49, 0x61, 0x83, 0x2e, 0x7f, 0x15, 0xcf, 0x01, ++ 0xfb, 0xaa, 0x4d, 0xfb, 0x89, 0x20, 0x22, 0xf2, 0xb5, 0x43, 0xbc, 0x03, 0xe4, 0xb3, 0x67, 0xc8, ++ 0x85, 0xd3, 0x09, 0x85, 0x55, 0x3f, 0x50, 0x2c, 0x35, 0xc7, 0x9c, 0xb9, 0x63, 0x84, 0x26, 0xfd, ++ 0xcb, 0x18, 0x8b, 0xcb, 0xe6, 0x37, 0xb9, 0xf1, 0x89, 0xa7, 0xb3, 0xc9, 0x5a, 0xd8, 0x4f, 0xcf, ++ 0xb7, 0x1c, 0x56, 0xb7, 0x76, 0x61, 0xd2, 0x86, 0xea, 0xc9, 0xdb, 0x0b, 0x41, 0xfc, 0x0d, 0x0c, ++ 0x2a, 0x96, 0x3c, 0x2a, 0xf5, 0xb4, 0x2e, 0x4a, 0xc1, 0x7c, 0xa1, 0xd7, 0x7d, 0xac, 0x3f, 0x13, ++ 0xab, 0xbf, 0xc4, 0xab, 0x38, 0x19, 0x4c, 0xf7, 0xf1, 0xac, 0xad, 0x9e, 0xe5, 0x0e, 0x1f, 0xc1, ++ 0x3f, 0xdd, 0x22, 0x3f, 0x6e, 0xee, 0x39, 0x6f, 0x40, 0x42, 0x10, 0x5d, 0xa2, 0xfa, 0xc1, 0xfb, ++ 0x39, 0x5a, 0x4a, 0x39, 0xba, 0x35, 0x12, 0x57, 0xa6, 0xbf, 0xc8, 0xd5, 0xc5, 0xcf, 0xc4, 0x22, ++ 0xea, 0x1b, 0xa2, 0xea, 0x8a, 0xe8, 0x07, 0x46, 0x31, 0x6a, 0x9d, 0x79, 0xc0, 0xc3, 0x9f, 0x0f, ++ 0xb5, 0x61, 0xcf, 0xb5, 0x3a, 0x28, 0xcb, 0x2f, 0x09, 0x23, 0x93, 0x73, 0xdd, 0xef, 0x0e, 0xfa, ++ 0x51, 0xca, 0x24, 0x51, 0x97, 0xfc, 0x83, 0xb0, 0xd4, 0x9a, 0x35, 0xa1, 0x4f, 0x55, 0x98, 0x72, ++ 0x9b, 0x0d, 0x02, 0x9b, 0x57, 0x0e, 0xd7, 0xf4, 0xcd, 0x48, 0xa2, 0x54, 0x5b, 0x65, 0x37, 0xc6, ++ 0x7a, 0x83, 0xb5, 0x7a, 0x44, 0x8d, 0x40, 0x4f, 0x85, 0x93, 0xb0, 0x4a, 0x7c, 0x11, 0x47, 0x1a, ++ 0xa1, 0xf5, 0x7c, 0xa1, 0x87, 0xb7, 0x31, 0xbf, 0x18, 0x68, 0x06, 0xc5, 0x4c, 0x51, 0x10, 0x69, ++ 0xd0, 0xe3, 0xdc, 0xd0, 0x5a, 0x51, 0xe1, 0x0d, 0xe4, 0x4a, 0x39, 0xe8, 0xd7, 0xf7, 0xb8, 0xa0, ++ 0x4a, 0x31, 0x73, 0x4a, 0x2b, 0x9a, 0xdb, 0x4c, 0xb9, 0x77, 0xbf, 0x80, 0xc2, 0x7a, 0x6f, 0x1d, ++ 0x77, 0x91, 0xc8, 0x77, 0x09, 0x3d, 0xfb, 0x8a, 0x1a, 0xdf, 0xe7, 0xa5, 0xfc, 0x93, 0xad, 0x10, ++ 0x5d, 0x07, 0xf4, 0x5d, 0xfc, 0x89, 0xd5, 0xc0, 0xdb, 0xa3, 0x46, 0x72, 0x81, 0x3f, 0x92, 0x03, ++ 0x4f, 0x14, 0x2f, 0x4f, 0x95, 0xcd, 0x04, 0x68, 0x2c, 0x15, 0x0b, 0x4c, 0x77, 0xb4, 0x89, 0x49, ++ 0x1d, 0x7c, 0x3f, 0x1d, 0x68, 0xbd, 0x73, 0xc4, 0x8b, 0x10, 0x52, 0xa9, 0xea, 0x1a, 0xf2, 0xb6, ++ 0x83, 0x54, 0x61, 0x83, 0x81, 0xe4, 0x7b, 0x14, 0xd3, 0x3a, 0x44, 0x31, 0x04, 0xb1, 0x23, 0x24, ++ 0x52, 0x68, 0x10, 0x52, 0xfd, 0x70, 0x77, 0xac, 0xa7, 0x05, 0x59, 0xe5, 0x9d, 0xae, 0x7b, 0xff, ++ 0x25, 0xf9, 0xd8, 0x25, 0xf4, 0x4d, 0x8c, 0x26, 0xbd, 0xda, 0xbe, 0x40, 0x61, 0x3d, 0xd6, 0xef, ++ 0xfe, 0x8f, 0x11, 0xfe, 0x37, 0x77, 0xfd, 0xd6, 0x20, 0x21, 0x08, 0xcf, 0x51, 0x7d, 0x81, 0x9c, ++ 0x3d, 0xa0, 0xbb, 0x3d, 0x22, 0xa7, 0x20, 0xc6, 0xa3, 0xa8, 0x58, 0x25, 0x3e, 0xe9, 0xc2, 0x0d, ++ 0x58, 0x22, 0xa8, 0x58, 0x42, 0xde, 0x0a, 0xe4, 0x4e, 0xc1, 0xf2, 0xbe, 0x34, 0xf1, 0x74, 0x57, ++ 0x55, 0x30, 0xd5, 0x55, 0x0f, 0x6e, 0xb1, 0x21, 0xd1, 0x8d, 0xa5, 0x51, 0xb4, 0x73, 0x9e, 0x5d, ++ 0xf9, 0xd7, 0xd4, 0xf9, 0xc5, 0x69, 0x3b, 0x5b, 0x56, 0xa9, 0xf4, 0x7b, 0x78, 0xa0, 0x64, 0x3e, ++ 0xac, 0xe7, 0x01, 0xac, 0xca, 0x07, 0x8a, 0x7a, 0x87, 0x24, 0x51, 0x2a, 0xcc, 0xd3, 0xfa, 0x63, ++ 0xfc, 0xf2, 0x88, 0xfc, 0x7b, 0x3e, 0xe4, 0x7f, 0xc3, 0xcb, 0x40, 0xb7, 0xcd, 0x6e, 0x82, 0x6a, ++ 0x68, 0x90, 0x6e, 0x68, 0x2d, 0xc9, 0x91, 0xe7, 0x72, 0x25, 0xfd, 0x74, 0x8a, 0x9a, 0x5c, 0x50, ++ 0xc1, 0x52, 0x33, 0xc1, 0x59, 0x99, 0xc4, 0xb9, 0x60, 0x63, 0x18, 0x92, 0xf3, 0x87, 0x40, 0x67, ++ 0x38, 0x85, 0xe7, 0x38, 0x9c, 0xf0, 0xff, 0xe2, 0x36, 0xca, 0xec, 0xe9, 0x8b, 0x27, 0x24, 0x59, ++ 0x75, 0xec, 0x51, 0x75, 0x45, 0x74, 0xe2, 0x23, 0xf9, 0x35, 0xaf, 0xdd, 0x60, 0x80, 0xae, 0xe6, ++ 0x6d, 0xb5, 0x32, 0x6d, 0x93, 0x9e, 0x4e, 0xc3, 0xe7, 0x47, 0x49, 0xb8, 0x3f, 0x54, 0xba, 0x04, ++ 0x1f, 0x01, 0xa6, 0x1f, 0x24, 0xf4, 0x6a, 0x6d, 0x68, 0xfa, 0x1a, 0xd1, 0x76, 0x09, 0xf1, 0x40, ++ 0x17, 0x36, 0x87, 0x17, 0xd7, 0x13, 0x0e, 0x8c, 0x62, 0xd4, 0xf9, 0xf2, 0x43, 0x45, 0xfd, 0x1e, ++ 0x44, 0x81, 0x3a, 0x44, 0x0c, 0xa6, 0x94, 0x95, 0x55, 0xa4, 0x84, 0x2b, 0x90, 0x03, 0x66, 0x9a, ++ 0xcc, 0x40, 0x4e, 0xcc, 0x14, 0x29, 0x7f, 0x7c, 0xff, 0x2f, 0x4f, 0x7d, 0x73, 0x05, 0xaa, 0x6d, ++ 0xc5, 0xa8, 0xc2, 0xc5, 0xc1, 0x0b, 0xf6, 0x28, 0x65, 0x74, 0x88, 0x62, 0x08, 0xa1, 0x46, 0x48, ++ 0xee, 0xe1, 0x53, 0xee, 0x12, 0x7a, 0x35, 0xd7, 0x34, 0x7d, 0x0d, 0x89, 0x3b, 0xe5, 0x99, 0x20, ++ }, ++ { /* 11 */ ++ 0xfe, 0x50, 0x71, 0x7c, 0xfc, 0x9b, 0xad, 0x09, 0xfc, 0x5e, 0x38, 0x3f, 0x3f, 0x68, 0x53, 0x1b, ++ 0x6d, 0x9f, 0xd8, 0xf4, 0xee, 0xe2, 0xd1, 0xe9, 0xee, 0x90, 0x3c, 0xda, 0xda, 0xa3, 0xbc, 0xf8, ++ 0x53, 0x94, 0xe4, 0x01, 0xdd, 0x92, 0x0e, 0x3a, 0xdd, 0xb8, 0xb0, 0xa6, 0xa6, 0x24, 0x5d, 0x4e, ++ 0xab, 0xb8, 0x14, 0x53, 0x11, 0x91, 0xf4, 0xf0, 0x11, 0x18, 0xc5, 0x95, 0x95, 0x7d, 0x5f, 0xd3, ++ 0xc0, 0x5b, 0x4d, 0x89, 0xcf, 0xeb, 0x72, 0xda, 0xcf, 0x76, 0xb4, 0x43, 0x43, 0xef, 0xb2, 0xad, ++ 0x7d, 0xbd, 0xa6, 0x24, 0x6e, 0x65, 0x3b, 0xa4, 0x6e, 0xc4, 0x27, 0xfa, 0xfa, 0x9a, 0x46, 0x2f, ++ 0xaf, 0x51, 0xea, 0x67, 0x31, 0xc0, 0x2f, 0x72, 0x31, 0x0d, 0xb3, 0x9d, 0x9d, 0xe2, 0x80, 0x96, ++ 0x72, 0x7b, 0xc6, 0x6f, 0x16, 0xda, 0x5f, 0x61, 0x16, 0x84, 0x7a, 0xe4, 0xe4, 0x01, 0x2d, 0xa3, ++ 0x27, 0x93, 0xa3, 0x40, 0xfb, 0xd0, 0x06, 0x98, 0xfb, 0xc2, 0x87, 0x4e, 0x4e, 0x14, 0x21, 0x6b, ++ 0xf9, 0x87, 0x2e, 0x5f, 0xc4, 0x86, 0xbc, 0x0b, 0xc4, 0x34, 0x89, 0x31, 0x31, 0x0e, 0x45, 0x1d, ++ 0x8e, 0xbe, 0xc8, 0x09, 0xfa, 0x88, 0x7e, 0x29, 0xfa, 0x31, 0x79, 0xdf, 0xdf, 0xc7, 0xf0, 0x7b, ++ 0x8a, 0x57, 0x36, 0x3d, 0xda, 0xd9, 0xa5, 0xab, 0xda, 0x24, 0x0f, 0xd7, 0xd7, 0x58, 0x2f, 0x3e, ++ 0x3c, 0x9e, 0x43, 0xef, 0x23, 0xb9, 0x53, 0x92, 0x23, 0xc3, 0xb7, 0x78, 0x78, 0x29, 0x6f, 0x75, ++ 0x50, 0xaa, 0x45, 0x16, 0xc5, 0xde, 0xc4, 0xba, 0xc5, 0xc7, 0x77, 0xa0, 0xa0, 0xdd, 0x94, 0x0d, ++ 0xe1, 0xb4, 0x6f, 0xe7, 0x04, 0xa3, 0x23, 0x81, 0x04, 0x4a, 0x7e, 0x01, 0x01, 0xca, 0xc2, 0x40, ++ 0x41, 0x23, 0xe5, 0xcb, 0x4d, 0xdc, 0x68, 0x36, 0x4d, 0x07, 0x90, 0x82, 0x82, 0xb3, 0x29, 0x5a, ++ 0xb4, 0x5c, 0x0a, 0xc8, 0xe9, 0xa9, 0x7a, 0x78, 0xe9, 0x0c, 0x83, 0xab, 0xab, 0xdf, 0xce, 0x88, ++ 0xd7, 0xae, 0x6c, 0x7a, 0x77, 0x71, 0x89, 0x95, 0x77, 0x48, 0x1e, 0x6d, 0x6d, 0xb0, 0x5e, 0x7c, ++ 0x1e, 0x4f, 0xc0, 0x96, 0xf0, 0xbd, 0xc8, 0x49, 0xf0, 0x80, 0xba, 0x3c, 0x3c, 0xf5, 0xd6, 0xdb, ++ 0x23, 0x7a, 0x5d, 0x74, 0xdb, 0x81, 0xdd, 0x1a, 0xdb, 0xd7, 0xf1, 0x46, 0x46, 0x8b, 0xfe, 0x2e, ++ 0x2a, 0xc0, 0xbc, 0x11, 0x93, 0xa6, 0xee, 0x1c, 0x93, 0x69, 0xe1, 0x54, 0x54, 0x21, 0xc4, 0x24, ++ 0x75, 0xac, 0x99, 0x4c, 0x2e, 0xc7, 0x4e, 0x63, 0x2e, 0xee, 0xcb, 0xea, 0xea, 0x67, 0x3b, 0xa5, ++ 0xba, 0x31, 0xb4, 0x8e, 0x99, 0x93, 0x58, 0x7c, 0x99, 0xd8, 0x22, 0xb7, 0xb7, 0x13, 0xe2, 0x84, ++ 0x86, 0xaf, 0xf7, 0x61, 0xba, 0x2a, 0x0b, 0xee, 0xba, 0x1b, 0x95, 0xcf, 0xcf, 0x3a, 0x8d, 0xf1, ++ 0xdb, 0x56, 0xad, 0x26, 0x17, 0x82, 0x27, 0xd0, 0x17, 0x77, 0x84, 0x75, 0x75, 0xd2, 0xfc, 0xb3, ++ 0x76, 0x92, 0x38, 0x5b, 0x36, 0x8b, 0x84, 0xe3, 0x36, 0x91, 0x0c, 0xec, 0xec, 0x9e, 0xf2, 0xe6, ++ 0xb7, 0x62, 0xab, 0xdf, 0xf1, 0xe5, 0xb0, 0xf8, 0xf1, 0x73, 0x44, 0xad, 0xad, 0x26, 0x07, 0xcb, ++ 0x2f, 0x82, 0x9c, 0x28, 0xbb, 0x72, 0x73, 0x5f, 0xbb, 0xe8, 0x6b, 0x5e, 0x5e, 0xe9, 0x5c, 0xe1, ++ 0xe3, 0x21, 0x10, 0xfd, 0x14, 0x6a, 0xaf, 0xc0, 0x14, 0xa1, 0x45, 0x05, 0x05, 0x64, 0x4c, 0x83, ++ 0x51, 0x01, 0x9b, 0x1b, 0xcd, 0x5b, 0x82, 0x7b, 0xcd, 0x53, 0x8b, 0xa2, 0xa2, 0x8a, 0xd3, 0x8d, ++ 0xd2, 0xec, 0x4c, 0x43, 0x5f, 0xa5, 0x14, 0xd6, 0x5f, 0xc9, 0x94, 0x67, 0x67, 0x78, 0xc6, 0xb9, ++ 0xb1, 0x1e, 0x2a, 0xf1, 0xc1, 0x7d, 0xe7, 0x3b, 0xc1, 0x8d, 0x09, 0xa1, 0xa1, 0x17, 0x56, 0x4d, ++ 0xb6, 0xc9, 0x75, 0xd2, 0xf9, 0x60, 0xf6, 0x39, 0xf9, 0xe7, 0xb8, 0xaf, 0xaf, 0x71, 0x40, 0x4b, ++ 0x03, 0x3e, 0xa1, 0x17, 0x18, 0x4c, 0xca, 0x80, 0x18, 0x7f, 0xc7, 0x06, 0x06, 0xf9, 0xc9, 0x43, ++ 0x44, 0x61, 0xc5, 0xf2, 0x65, 0x08, 0xf5, 0x75, 0x65, 0x86, 0x1a, 0x88, 0x88, 0x7b, 0xb1, 0x9f, ++ 0x9a, 0x75, 0x48, 0xed, 0x5a, 0x5e, 0x4f, 0xe6, 0x5a, 0x70, 0x14, 0xf7, 0xf7, 0x61, 0xd5, 0xe9, ++ 0x8d, 0x80, 0x69, 0x1e, 0xe2, 0xc4, 0xb4, 0xa9, 0xe2, 0x4e, 0xbe, 0xd9, 0xd9, 0x3e, 0x39, 0x38, ++ 0xea, 0x9b, 0xf1, 0x98, 0x5c, 0x4d, 0x9c, 0xc6, 0x5c, 0x1f, 0x55, 0x17, 0x17, 0xce, 0x76, 0x89, ++ 0xc4, 0xb2, 0xb3, 0xbd, 0xef, 0xba, 0xa9, 0x58, 0xef, 0x63, 0xc2, 0x4b, 0x4b, 0x70, 0x6d, 0xe8, ++ 0xad, 0xc4, 0x95, 0x7d, 0x21, 0x09, 0xa3, 0x33, 0x21, 0xe6, 0x88, 0x99, 0x99, 0x4c, 0x0e, 0x55, ++ 0xb9, 0x0f, 0x15, 0x99, 0x81, 0xdf, 0x92, 0xfc, 0x81, 0xa7, 0xe5, 0xb1, 0xb1, 0xea, 0x2b, 0xc7, ++ 0xe2, 0x8a, 0xce, 0xf0, 0x1c, 0xef, 0xe9, 0x01, 0x1c, 0x35, 0xb9, 0x07, 0x07, 0x33, 0x0b, 0x03, ++ 0xe6, 0x63, 0x30, 0xc4, 0x3c, 0xbe, 0x32, 0x83, 0x3c, 0x20, 0xcf, 0x0f, 0x0f, 0xac, 0xd4, 0x46, ++ 0x99, 0x4b, 0xe9, 0xfa, 0x42, 0x12, 0x85, 0x66, 0x42, 0x0f, 0xd3, 0xf1, 0xf1, 0x98, 0x1c, 0xaa, ++ 0x29, 0xfe, 0x1d, 0x06, 0x8b, 0xea, 0x24, 0x9c, 0x8b, 0x16, 0x26, 0x52, 0x52, 0xd8, 0x0d, 0x67, ++ 0xa9, 0x2d, 0x6b, 0x49, 0x01, 0x58, 0x78, 0xb1, 0x01, 0xf3, 0xfe, 0x91, 0x91, 0xd3, 0xd1, 0x10, ++ 0x61, 0x67, 0x19, 0xa8, 0x8e, 0x11, 0x7f, 0xac, 0x8e, 0xaf, 0xa6, 0xc2, 0xc2, 0xc1, 0x1e, 0x37, ++ 0xd0, 0x79, 0x33, 0x59, 0x4f, 0x6c, 0x98, 0x97, 0x4f, 0x22, 0xaf, 0x63, 0x63, 0xd6, 0x48, 0x7a, ++ 0x48, 0x99, 0x04, 0xae, 0x05, 0xfb, 0x5b, 0x30, 0x05, 0xb9, 0x80, 0x90, 0x90, 0x19, 0x13, 0x50, ++ 0xf1, 0x96, 0x11, 0x37, 0x84, 0x24, 0xc9, 0xcc, 0x84, 0x1e, 0x65, 0x21, 0x21, 0xf3, 0x38, 0x97, ++ 0x91, 0x5a, 0xd6, 0x92, 0x02, 0xb0, 0xf0, 0xa1, 0x02, 0x25, 0x3f, 0xe1, 0xe1, 0x65, 0x61, 0x20, ++ 0x65, 0x8e, 0xe7, 0x9c, 0xae, 0x40, 0xa4, 0x2e, 0xae, 0xba, 0xd0, 0xca, 0xca, 0x5e, 0xc1, 0x72, ++ 0x24, 0xad, 0x02, 0x57, 0xe3, 0x9c, 0xcc, 0x18, 0xe3, 0xbd, 0x40, 0x48, 0x48, 0xed, 0xe8, 0x28, ++ 0x9c, 0x09, 0xc9, 0xc3, 0x6a, 0xc6, 0x18, 0x25, 0x6a, 0x8e, 0x59, 0xfb, 0xfb, 0x50, 0x84, 0x6f, ++ 0xc8, 0x4a, 0x72, 0xe1, 0x8f, 0x49, 0x07, 0x1d, 0x8f, 0x5c, 0x58, 0x53, 0x53, 0x12, 0xcf, 0x27, ++ 0x14, 0xcb, 0x80, 0xe4, 0xa0, 0xd6, 0x31, 0xcf, 0xa0, 0x41, 0x6d, 0x28, 0x28, 0xa6, 0x25, 0x92, ++ 0x70, 0xee, 0xb9, 0x75, 0x06, 0x13, 0xd3, 0x20, 0x06, 0x6f, 0x41, 0xe0, 0xe0, 0xaf, 0xa3, 0x60, ++ 0x39, 0xdc, 0x63, 0xd6, 0x0b, 0x6d, 0xce, 0xd1, 0x0b, 0x42, 0x3d, 0x72, 0x72, 0xe1, 0xf7, 0xb0, ++ 0x55, 0xe8, 0x65, 0x2f, 0xed, 0x0a, 0x59, 0xf9, 0xed, 0x46, 0xfd, 0xaa, 0xaa, 0x15, 0x0c, 0xc8, ++ 0x13, 0x1c, 0xdf, 0xc7, 0x98, 0xcb, 0x20, 0xcd, 0x98, 0x2b, 0xdc, 0x26, 0x26, 0xc0, 0x33, 0x94, ++ 0xd6, 0x05, 0xb2, 0x77, 0x7f, 0xf4, 0xcf, 0x54, 0x7f, 0xdc, 0xe2, 0x6f, 0x6f, 0xe7, 0x19, 0xfc, ++ 0xfb, 0x12, 0x51, 0x45, 0xd4, 0x4f, 0x30, 0x4a, 0xd4, 0xdf, 0xb2, 0x35, 0x35, 0xa0, 0xcb, 0xde, ++ 0x22, 0xd1, 0x83, 0x79, 0xd3, 0x04, 0x9b, 0xdb, 0xd3, 0x43, 0x0d, 0x44, 0x44, 0xdc, 0xb9, 0xae, ++ 0xda, 0xfd, 0x73, 0x2b, 0x1f, 0x07, 0x61, 0x11, 0x1f, 0xe3, 0x78, 0x77, 0x77, 0x85, 0xbb, 0x33, ++ 0x25, 0x06, 0xdc, 0x5a, 0xeb, 0x19, 0x8a, 0xd9, 0xeb, 0x29, 0xbc, 0x4a, 0x4a, 0xba, 0xaf, 0xa8, ++ 0xe7, 0xc8, 0xee, 0xc9, 0x34, 0x3b, 0x74, 0x42, 0x34, 0xb4, 0x33, 0x0d, 0x0d, 0xfb, 0x93, 0xc6, ++ 0xe4, 0xf6, 0x4f, 0xde, 0x2c, 0x77, 0xbe, 0xc2, 0x2c, 0xcb, 0xf4, 0x0b, 0x0b, 0x02, 0x5a, 0x85, ++ 0xa3, 0xa9, 0x2b, 0x3b, 0x51, 0x33, 0x81, 0x37, 0x51, 0x32, 0x29, 0x85, 0x85, 0x80, 0x22, 0x59, ++ 0x8c, 0x2b, 0xb7, 0x13, 0xea, 0x41, 0xf2, 0x68, 0xea, 0xda, 0x42, 0xdb, 0xdb, 0x69, 0x7e, 0xb8, ++ 0x19, 0x98, 0x9f, 0xb5, 0xc8, 0xa0, 0xd9, 0x4b, 0xc8, 0xea, 0x0b, 0x32, 0x32, 0x93, 0xc0, 0xdd, ++ 0x09, 0xba, 0xe1, 0x65, 0x48, 0x27, 0x33, 0x06, 0x48, 0xbe, 0x10, 0x12, 0x12, 0xaa, 0x3a, 0x0a, ++ 0x2d, 0x17, 0xe3, 0x32, 0xab, 0xbb, 0xff, 0x1e, 0xab, 0x03, 0x50, 0x5a, 0x5a, 0x47, 0xd2, 0x22, ++ 0x8f, 0x15, 0x16, 0x04, 0xf2, 0x0d, 0x38, 0xe8, 0xf2, 0xa5, 0x85, 0xdd, 0xdd, 0x90, 0xb7, 0xfb, ++ 0x94, 0x18, 0xf6, 0xab, 0x2a, 0x64, 0x6d, 0xe2, 0x2a, 0xa4, 0xb5, 0xeb, 0xeb, 0xad, 0xf9, 0xe5, ++ 0x0d, 0x53, 0x1f, 0x51, 0x68, 0x76, 0xe8, 0x84, 0x68, 0xab, 0x66, 0x1a, 0x1a, 0x35, 0xe5, 0x4f, ++ 0x85, 0x91, 0x56, 0x76, 0xa2, 0x66, 0xc1, 0x6e, 0xa2, 0x64, 0x52, 0xc9, 0xc9, 0xc3, 0x44, 0xb2, ++ 0x57, 0x7d, 0x1a, 0x35, 0xfd, 0xc3, 0xd5, 0xb8, 0xfd, 0xad, 0xc6, 0xae, 0xae, 0xbb, 0x82, 0x0b, ++ 0x96, 0x8d, 0x89, 0xb1, 0x3a, 0xad, 0xe1, 0xa3, 0x3a, 0x4f, 0x8e, 0xef, 0xef, 0x03, 0x77, 0x26, ++ 0x69, 0x76, 0x26, 0xc0, 0xce, 0xb3, 0x0a, 0x6b, 0xce, 0x85, 0x4a, 0xd2, 0xd2, 0x3c, 0x63, 0xbd, ++ 0xf8, 0x2c, 0xf0, 0x52, 0xcc, 0x03, 0xfa, 0xca, 0xcc, 0xa0, 0x75, 0x33, 0x33, 0x59, 0x02, 0x9d, ++ 0x5e, 0xc7, 0xfb, 0x50, 0xb5, 0xe4, 0xe6, 0xbe, 0xb5, 0x13, 0xd6, 0xbc, 0xbc, 0x11, 0xb8, 0x01, ++ 0x0e, 0x6d, 0xbe, 0x46, 0x70, 0x3a, 0x22, 0x04, 0x70, 0xd4, 0xa1, 0x1c, 0x1c, 0xcc, 0x2c, 0x0c, ++ 0x71, 0x45, 0x67, 0x78, 0x0e, 0x96, 0x95, 0xe1, 0x0e, 0xfb, 0xbd, 0xe2, 0xe2, 0xf8, 0xe4, 0xe0, ++ 0x7a, 0x6a, 0xf9, 0x07, 0x56, 0x78, 0x2a, 0xa6, 0x56, 0xae, 0x96, 0xf4, 0xf4, 0xfc, 0x50, 0x29, ++ 0x01, 0xab, 0xde, 0x0d, 0x08, 0x85, 0x46, 0xc1, 0x08, 0x94, 0xfc, 0x02, 0x02, 0x57, 0x47, 0x80, ++ 0xe0, 0x1f, 0xb1, 0xea, 0x0c, 0x26, 0x65, 0x40, 0x0c, 0xde, 0x82, 0x03, 0x03, 0x9d, 0x85, 0xc0, ++ 0x7e, 0x83, 0x07, 0x33, 0x76, 0x29, 0xf1, 0x24, 0x76, 0xbb, 0xe0, 0xfc, 0xfc, 0x63, 0x8f, 0x6c, ++ 0x93, 0xcf, 0xa9, 0x88, 0x12, 0x79, 0x7c, 0xe0, 0x12, 0xce, 0x04, 0xe5, 0xe5, 0xcb, 0xef, 0xe3, ++ 0xce, 0x36, 0xf3, 0xcf, 0xbf, 0xd1, 0x50, 0xde, 0xbf, 0xa2, 0x15, 0x5f, 0x5f, 0x23, 0x9e, 0xa1, ++ 0x9f, 0x37, 0x68, 0xd4, 0x72, 0x8a, 0xd2, 0xa5, 0x72, 0xf1, 0x9e, 0xfd, 0xfd, 0xa9, 0x4d, 0x2c, ++ 0x3a, 0xe2, 0xc2, 0xc1, 0x13, 0x21, 0x04, 0x51, 0x13, 0x3d, 0xfa, 0x74, 0x74, 0x18, 0x3e, 0xf3, ++ 0xd1, 0xd2, 0xed, 0x54, 0x47, 0xe9, 0xde, 0x56, 0x47, 0xb6, 0x53, 0x61, 0x61, 0x81, 0x0f, 0xfa, ++ 0xf2, 0xa8, 0xb0, 0x20, 0x9c, 0x68, 0x03, 0x4c, 0x9c, 0x61, 0xa2, 0x27, 0x27, 0x0a, 0xf1, 0xd4, ++ 0xcf, 0x9d, 0x2d, 0xc2, 0xb7, 0x54, 0x16, 0x1f, 0xb7, 0x36, 0xe9, 0x5d, 0x5d, 0x74, 0xd9, 0x21, ++ 0x43, 0xb6, 0x9a, 0xd1, 0x5d, 0x15, 0xe4, 0x77, 0x5d, 0xec, 0xab, 0x86, 0x86, 0x1d, 0xa7, 0x99, ++ 0xc9, 0xe1, 0xac, 0xec, 0x87, 0xcc, 0x41, 0xdc, 0x87, 0xc8, 0xa4, 0x51, 0x51, 0x45, 0x88, 0xa7, ++ 0x4a, 0x0c, 0x7b, 0xb4, 0x15, 0x32, 0xd7, 0x71, 0x15, 0x52, 0xbb, 0x94, 0x94, 0xb7, 0x9d, 0x93, ++ 0xbd, 0xe6, 0xeb, 0xad, 0xa1, 0x8e, 0x49, 0x7e, 0xa1, 0xb2, 0x93, 0xb9, 0xb9, 0x75, 0xf4, 0x82, ++ 0x62, 0x59, 0xb8, 0xbf, 0x96, 0x5d, 0xb5, 0x2c, 0x96, 0xd0, 0x61, 0xc4, 0xc4, 0x38, 0xd7, 0x74, ++ 0xac, 0x6f, 0x4b, 0x70, 0x29, 0x8c, 0xe5, 0xf2, 0x29, 0x72, 0x74, 0x9b, 0x9b, 0x1b, 0x49, 0xd5, ++ 0x02, 0x95, 0x7f, 0x1a, 0x10, 0xc9, 0x8c, 0x41, 0x10, 0xeb, 0x3b, 0x04, 0x04, 0xae, 0x8e, 0xc3, ++ 0x37, 0xb1, 0xdd, 0x90, 0x7b, 0x57, 0xec, 0xd5, 0x7b, 0x96, 0x9c, 0x6e, 0x6e, 0x2d, 0xdb, 0xbc, ++ 0x82, 0x46, 0x09, 0x55, 0x9a, 0x7b, 0xd0, 0x6c, 0x9a, 0x0e, 0xe3, 0xc7, 0xc7, 0xa5, 0x52, 0xb4, ++ 0xc1, 0xf0, 0x93, 0x84, 0xc7, 0x6e, 0x34, 0x1b, 0xc7, 0xe2, 0x48, 0x41, 0x41, 0xb8, 0xf5, 0x2d, ++ 0x26, 0x38, 0x7d, 0x4d, 0xf3, 0x55, 0x40, 0x59, 0xf3, 0x56, 0x7b, 0x4c, 0x4c, 0x43, 0x66, 0xeb, ++ 0xbb, 0x9a, 0x6a, 0x83, 0x91, 0x16, 0x1e, 0xbd, 0x91, 0x4c, 0xde, 0xb5, 0xb5, 0x44, 0xa5, 0x04, ++ 0x0f, 0xc6, 0x60, 0x4b, 0x78, 0xbf, 0x64, 0xc5, 0x78, 0x40, 0x5d, 0x1e, 0x1e, 0x9b, 0x6b, 0x8c, ++ 0xd4, 0x90, 0xcd, 0x6d, 0x6f, 0x3d, 0x43, 0x15, 0x6f, 0x37, 0xd9, 0x6b, 0x6b, 0x49, 0x97, 0x3f, ++ 0x5b, 0x85, 0xdb, 0x69, 0x9d, 0x30, 0x7b, 0xfd, 0x9d, 0x92, 0x5c, 0xb6, 0xb6, 0xd9, 0x20, 0xc4, ++ 0x63, 0xf2, 0x66, 0xb2, 0x9e, 0xd8, 0xf3, 0xed, 0x9e, 0x44, 0x9d, 0xc6, 0xc6, 0x6f, 0x90, 0xf4, ++ 0x87, 0x04, 0x29, 0x6c, 0xb2, 0xaf, 0x4d, 0x2f, 0xb2, 0x8f, 0x69, 0xcd, 0xcd, 0x6d, 0xca, 0x71, ++ 0xbf, 0x73, 0x94, 0xb7, 0xb1, 0x47, 0xc5, 0x3f, 0xb1, 0x59, 0xa8, 0xbd, 0xbd, 0xdb, 0x7a, 0x41, ++ 0x97, 0x26, 0x57, 0xbc, 0x32, 0x28, 0xa7, 0x62, 0x32, 0xdb, 0x72, 0xed, 0xed, 0x54, 0x30, 0xa6, ++ 0x46, 0xf4, 0xba, 0xe8, 0x75, 0xc1, 0x79, 0x34, 0x75, 0x6d, 0x21, 0x8c, 0x8c, 0xd5, 0x3f, 0x5c, ++ 0xaa, 0x13, 0xca, 0x5e, 0x19, 0x14, 0xb2, 0x31, 0x19, 0x8c, 0x39, 0x97, 0x97, 0x2a, 0x18, 0x53, ++ 0x4f, 0x4e, 0x5b, 0x8d, 0x3d, 0xe6, 0x4a, 0x32, 0x3d, 0xd3, 0x31, 0x9e, 0x9e, 0x7f, 0x05, 0x56, ++ 0xc6, 0x27, 0xcc, 0xa7, 0xff, 0x73, 0x25, 0x19, 0xff, 0x88, 0xf9, 0x4f, 0x4f, 0xde, 0xe3, 0x2b, ++ 0x4e, 0xe5, 0x85, 0x80, 0x35, 0x63, 0x0c, 0xf3, 0x35, 0x47, 0xcd, 0x9c, 0x9c, 0x28, 0x42, 0xd6, ++ 0x80, 0xd3, 0x76, 0x4f, 0x8a, 0xb2, 0x5c, 0x2d, 0x8a, 0xe5, 0xd8, 0xc3, 0xc3, 0x0b, 0xdc, 0x77, ++ 0x7f, 0x28, 0xd9, 0x3e, 0x7e, 0xac, 0xb7, 0xe5, 0x7e, 0x2f, 0x1c, 0xfe, 0xfe, 0x34, 0xc8, 0xec, ++ 0x45, 0xca, 0x1b, 0xff, 0x6d, 0x8d, 0xb3, 0xb4, 0x6d, 0x12, 0xe6, 0x8a, 0x8a, 0x2c, 0xf6, 0x1f, ++ 0xeb, 0x30, 0x2f, 0x95, 0x54, 0xc8, 0xda, 0x07, 0x54, 0x8b, 0xa9, 0x15, 0x15, 0x99, 0x31, 0x09, ++ 0x68, 0xdd, 0xf8, 0xcd, 0xc6, 0x36, 0x4c, 0xaa, 0xc6, 0x11, 0xb6, 0xd0, 0xd0, 0x6b, 0x24, 0x3d, ++ 0x10, 0x22, 0x7e, 0xd0, 0x80, 0x87, 0xea, 0x4d, 0x80, 0x54, 0x1b, 0x20, 0x20, 0x39, 0xfa, 0xd7, ++ 0x20, 0x44, 0xfc, 0x63, 0xc3, 0xcd, 0x17, 0x9a, 0xc3, 0xa8, 0x36, 0x40, 0x40, 0x72, 0x37, 0x6d, ++ 0x5f, 0x6c, 0x25, 0x5d, 0xbd, 0x61, 0xa0, 0x7f, 0xbd, 0x87, 0x2a, 0xbe, 0xbe, 0x46, 0xff, 0x81, ++ 0x49, 0x32, 0xda, 0xa3, 0x0d, 0x7e, 0x1d, 0xf1, 0x0d, 0x2d, 0x7c, 0x92, 0x92, 0x4e, 0x54, 0xd0, ++ 0xd3, 0x47, 0x92, 0x4e, 0x57, 0x20, 0x52, 0x17, 0x57, 0x5d, 0x68, 0x65, 0x65, 0x2f, 0x81, 0x39, ++ 0xc2, 0xce, 0x32, 0x93, 0xdf, 0x22, 0xfe, 0x9b, 0xdf, 0x9d, 0x8f, 0x47, 0x47, 0x41, 0x3c, 0x6e, ++ 0x56, 0xd6, 0xc4, 0x38, 0xf5, 0x46, 0x93, 0x79, 0xf5, 0x39, 0x3a, 0xac, 0xac, 0xec, 0xc5, 0x8b, ++ 0xe5, 0x5d, 0x91, 0xd3, 0x24, 0xf2, 0xf8, 0x03, 0x24, 0x5f, 0x08, 0x09, 0x09, 0x55, 0x1d, 0x05, ++ 0xbc, 0x4d, 0x35, 0xa0, 0xa9, 0x0b, 0x0f, 0xbf, 0xa9, 0x26, 0x6f, 0xbb, 0xbb, 0x22, 0xb3, 0x02, ++ 0x77, 0x39, 0xe6, 0x56, 0x3e, 0x0e, 0xc2, 0x22, 0x3e, 0x05, 0xf0, 0xee, 0xee, 0xc9, 0xb5, 0x66, ++ 0x15, 0x60, 0x5e, 0xe9, 0xa8, 0x53, 0x77, 0x0e, 0xa8, 0xd5, 0x91, 0x2a, 0x2a, 0xf1, 0x62, 0x12, ++ 0x30, 0x66, 0x82, 0xb3, 0x43, 0x4a, 0xfd, 0xd7, 0x43, 0xfc, 0x2d, 0x60, 0x60, 0x4b, 0xcd, 0xba, ++ 0xb0, 0xb5, 0xf4, 0xfc, 0xc9, 0xf8, 0xa1, 0xfa, 0xc9, 0x19, 0xf5, 0xa3, 0xa3, 0x40, 0x11, 0xcd, ++ 0xc3, 0x65, 0xec, 0x9e, 0xd7, 0xa7, 0xb8, 0x5a, 0xd7, 0x09, 0x73, 0x45, 0x45, 0x16, 0x7b, 0xee, ++ 0xa6, 0xeb, 0x0b, 0x02, 0x79, 0xe7, 0x1c, 0x74, 0x79, 0xb3, 0xa3, 0x8f, 0x8f, 0x48, 0xba, 0x9c, ++ 0x6a, 0x48, 0x87, 0xd7, 0xd6, 0xff, 0xc0, 0xeb, 0xd6, 0xfa, 0x8d, 0xd4, 0xd4, 0xc5, 0xaa, 0xfe, ++ 0x6e, 0xa1, 0x79, 0xe3, 0xf6, 0xae, 0x1b, 0x69, 0xf6, 0xef, 0xfb, 0xdc, 0xdc, 0x5a, 0x75, 0xbb, ++ 0xee, 0x72, 0x0f, 0xac, 0x7c, 0x1c, 0x47, 0x44, 0x7c, 0x0a, 0x23, 0x1f, 0x1f, 0x51, 0xa9, 0xcc, ++ 0x95, 0xb3, 0x28, 0xa6, 0x22, 0xe1, 0x2b, 0x23, 0x22, 0x30, 0x49, 0xe9, 0xe9, 0xfa, 0xbe, 0x65, ++ 0xbe, 0xd8, 0x4a, 0xba, 0xb9, 0xc2, 0x83, 0xfe, 0xb9, 0xcd, 0x54, 0xbf, 0xbf, 0x8c, 0x3d, 0xc1, ++ 0x38, 0x77, 0xbd, 0xdb, 0x03, 0xe8, 0x88, 0x10, 0x03, 0xd6, 0xc1, 0x70, 0x70, 0xb6, 0xb0, 0x30, ++ 0x1c, 0xda, 0xbf, 0x8c, 0xe0, 0x74, 0x44, 0x08, 0xe0, 0x6b, 0x81, 0x38, 0x38, 0x5b, 0x58, 0x18, ++ 0xd8, 0x68, 0x0c, 0x31, 0x0f, 0xce, 0xed, 0x50, 0x0f, 0x08, 0x43, 0x73, 0x73, 0x2b, 0x35, 0xf0, ++ 0xfc, 0xc5, 0x0e, 0x66, 0xec, 0x52, 0x21, 0x48, 0xec, 0xb5, 0x03, 0x3b, 0x3b, 0xc6, 0xdd, 0xd8, ++ 0x6b, 0xe3, 0x59, 0xda, 0xde, 0x7a, 0x86, 0x2a, 0xde, 0x6e, 0x71, 0xd6, 0xd6, 0x92, 0xed, 0x7e, ++ 0x9e, 0x9c, 0xb6, 0xd9, 0x7a, 0x0f, 0x94, 0x64, 0x7a, 0x65, 0x62, 0xff, 0xff, 0xfe, 0x0a, 0xac, ++ 0xf3, 0x03, 0x6e, 0x2d, 0x94, 0xed, 0x45, 0x8d, 0x94, 0xf5, 0x5e, 0x25, 0x25, 0x5d, 0xb6, 0x54, ++ 0x16, 0x5e, 0xff, 0xfe, 0xb0, 0x1f, 0xbd, 0x8e, 0xb0, 0xaa, 0x56, 0x2c, 0x2c, 0x08, 0xab, 0x51, ++ 0xf6, 0x41, 0x4e, 0x14, 0xbc, 0x39, 0xd8, 0xce, 0xbc, 0x74, 0xd4, 0x2f, 0x2f, 0x95, 0x2e, 0x91, ++ 0xfa, 0xb9, 0x8f, 0x48, 0xdc, 0xca, 0x76, 0x8b, 0xdc, 0x4b, 0x4e, 0x37, 0x37, 0xf7, 0x8c, 0x5e, ++ 0x1d, 0x71, 0x61, 0x81, 0xe8, 0xf1, 0x02, 0xc9, 0xe8, 0xff, 0x7d, 0x3a, 0x3a, 0x0c, 0x1f, 0x98, ++ 0x05, 0x42, 0x20, 0x39, 0x28, 0xd4, 0x9d, 0x43, 0x28, 0x81, 0x8a, 0x0a, 0x0a, 0xc8, 0x98, 0xc5, ++ 0x0a, 0x84, 0x40, 0x72, 0x50, 0x6b, 0xf9, 0x86, 0x50, 0xc1, 0xd7, 0x14, 0x14, 0x53, 0xf3, 0x49, ++ 0x79, 0x54, 0x58, 0x10, 0x4e, 0x34, 0xe0, 0x26, 0x4e, 0xd1, 0x51, 0xf2, 0xf2, 0x05, 0x99, 0x6a, ++ 0x3e, 0x0b, 0x3c, 0xf5, 0x33, 0x70, 0xdf, 0xd3, 0x33, 0x28, 0x8c, 0x7c, 0x7c, 0x87, 0xe1, 0xb6, ++ 0x90, 0xf1, 0x08, 0x9f, 0x0a, 0x35, 0xb6, 0x60, 0x0a, 0xb1, 0xc3, 0xe3, 0xe3, 0x32, 0x26, 0xa0, ++ 0x98, 0xe0, 0x37, 0xf7, 0x4a, 0x97, 0xc3, 0xa7, 0x4a, 0x9b, 0x2f, 0xf3, 0xf3, 0xcf, 0x5b, 0x2a, ++ 0xcd, 0x08, 0x52, 0xd8, 0xa7, 0x9d, 0x9a, 0x5e, 0xa7, 0xdd, 0xd2, 0x59, 0x59, 0xda, 0x57, 0xe2, ++ 0xcb, 0x74, 0xd3, 0xf6, 0x97, 0x05, 0xcd, 0x9d, 0x97, 0x23, 0x9f, 0x55, 0x55, 0xeb, 0x06, 0x64, ++ 0x0c, 0xf8, 0xc1, 0x5c, 0x60, 0xf3, 0xae, 0x45, 0x60, 0x3f, 0x9a, 0x18, 0x18, 0x62, 0xa2, 0xcf, ++ 0x36, 0x1a, 0x03, 0x9d, 0x73, 0xd2, 0xaa, 0x14, 0x73, 0x02, 0x60, 0x6c, 0x6c, 0x7a, 0x9c, 0x3c, ++ 0x73, 0xd0, 0x18, 0x62, 0x1e, 0x5f, 0x19, 0xa0, 0x1e, 0x10, 0x86, 0xe6, 0xe6, 0x56, 0x6a, 0x23, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x9d, 0xa2, 0x17, 0xce, 0x62, 0x43, 0x5e, 0xe4, 0x62, 0x1a, 0xa5, 0xf9, 0xf9, 0x07, 0xc3, 0xef, ++ 0xe9, 0xa5, 0x50, 0x8f, 0x44, 0x01, 0x56, 0x46, 0x44, 0x60, 0x92, 0x11, 0x11, 0x37, 0xbf, 0xca, ++ 0x92, 0x64, 0x77, 0x85, 0x1a, 0xfc, 0x3a, 0x21, 0x1a, 0x5a, 0xf8, 0xe7, 0xe7, 0x9c, 0xa8, 0x63, ++ 0x17, 0xf5, 0x21, 0xf3, 0xb8, 0x9a, 0xfb, 0x4f, 0xb8, 0x3e, 0xaa, 0x2e, 0x2e, 0x5f, 0xec, 0xd1, ++ 0x07, 0xd7, 0x5f, 0x23, 0x38, 0x1d, 0x11, 0x02, 0x38, 0x6a, 0xb1, 0x0e, 0x0e, 0x66, 0x16, 0x06, ++ 0x81, 0x78, 0xa8, 0x42, 0x82, 0x37, 0x1a, 0xec, 0x82, 0x71, 0x24, 0xc1, 0xc1, 0x5c, 0x9b, 0xf7, ++ 0xed, 0x4c, 0xae, 0xbb, 0x64, 0x50, 0x8d, 0xc4, 0x64, 0x75, 0xe4, 0x19, 0x19, 0xa8, 0x60, 0x8f, ++ 0xca, 0xdf, 0x0d, 0xfb, 0x9f, 0x80, 0x8b, 0x5c, 0x9f, 0xb7, 0x63, 0x57, 0x57, 0xbc, 0x41, 0xe4, ++ 0x74, 0x07, 0x47, 0x41, 0x26, 0x42, 0x08, 0xa2, 0x26, 0x7a, 0x37, 0xe8, 0xe8, 0x30, 0x7c, 0x25, ++ 0xa1, 0x3c, 0x54, 0x21, 0x41, 0xfa, 0x0d, 0x76, 0x41, 0xd9, 0x12, 0x81, 0x81, 0x2e, 0xac, 0x9a, ++ 0x5d, 0xf9, 0x5a, 0x47, 0xad, 0xa8, 0x2c, 0x3e, 0xad, 0x6c, 0x11, 0xba, 0xba, 0xe8, 0x71, 0x42, ++ 0x40, 0x88, 0x3b, 0xc6, 0x45, 0x59, 0x2e, 0xf7, 0x45, 0x93, 0x6c, 0x80, 0x80, 0xe4, 0x6e, 0xda, ++ 0x78, 0xff, 0x86, 0x1d, 0x46, 0xb1, 0xa6, 0xe7, 0x46, 0x45, 0xad, 0xf0, 0xf0, 0x52, 0xde, 0xea, ++ 0x83, 0xed, 0xd7, 0x58, 0x92, 0xfe, 0x96, 0xad, 0x92, 0x9a, 0x1f, 0xc5, 0xc5, 0xf2, 0x15, 0x34, ++ 0xdd, 0x2a, 0x2c, 0x08, 0x27, 0x1a, 0x70, 0x13, 0x27, 0x89, 0xc9, 0x79, 0x79, 0xe3, 0xad, 0x35, ++ 0x7b, 0xc1, 0x27, 0x0a, 0x5e, 0xfd, 0x6c, 0x67, 0x5e, 0x3a, 0x6a, 0xf6, 0xf6, 0xab, 0x17, 0xa9, ++ 0x42, 0x1d, 0x44, 0xdc, 0x55, 0x90, 0xa2, 0xb6, 0x55, 0x78, 0x57, 0x84, 0x84, 0x4a, 0xe0, 0x19, ++ 0xdc, 0x81, 0xf2, 0x05, 0x2f, 0x9f, 0x36, 0xd2, 0x2f, 0x1d, 0x35, 0x7b, 0x7b, 0xb4, 0xea, 0xb5, ++ 0xf0, 0x3d, 0xcf, 0x3a, 0x8c, 0xa1, 0x8f, 0x0d, 0x8c, 0x8a, 0x99, 0x23, 0x23, 0xa4, 0x7f, 0x17, ++ 0x2c, 0xbc, 0x3d, 0x3f, 0xa3, 0x3e, 0xb9, 0xdf, 0xa3, 0x97, 0xac, 0x58, 0x58, 0x10, 0x95, 0xa2, ++ 0x5c, 0x52, 0x84, 0x4a, 0xa5, 0x2d, 0x6a, 0xff, 0xa5, 0xf8, 0xed, 0xb8, 0xb8, 0xbf, 0x36, 0xc2, ++ 0x47, 0x5f, 0x64, 0xe5, 0x7d, 0x44, 0x3f, 0xf5, 0x7d, 0xf9, 0xdd, 0x8e, 0x8e, 0x82, 0x78, 0xdc, ++ 0xa4, 0x7e, 0x74, 0x18, 0x69, 0x2e, 0x90, 0x35, 0x69, 0x58, 0x98, 0x8b, 0x8b, 0xe6, 0x34, 0x5f, ++ 0x52, 0x3f, 0x3a, 0x0c, 0xd5, 0x17, 0x48, 0xfb, 0xd5, 0x2c, 0x4c, 0xa4, 0xa4, 0x73, 0x1a, 0xce, ++ 0x5a, 0x2e, 0x05, 0x64, 0x95, 0xb5, 0x3d, 0x3c, 0x95, 0x06, 0xa0, 0xb4, 0xb4, 0x8e, 0x67, 0x44, ++ 0x3f, 0xa0, 0xe2, 0xf8, 0x3b, 0xf5, 0x99, 0x12, 0x3b, 0xbc, 0x70, 0x7e, 0x7e, 0xd0, 0xa6, 0x36, ++ 0xd9, 0xc3, 0xd2, 0x3c, 0x07, 0x4b, 0xab, 0x91, 0x07, 0x9c, 0xbf, 0x71, 0x71, 0x7c, 0x72, 0x70, ++ 0x0b, 0x2f, 0x9e, 0x7f, 0x58, 0xee, 0xbf, 0x47, 0x58, 0x55, 0x2b, 0x16, 0x16, 0x04, 0xb4, 0xc9, ++ 0x2e, 0x29, 0x42, 0x25, 0xb3, 0xf7, 0x35, 0x9e, 0xb3, 0x7c, 0x97, 0x5c, 0x5c, 0xbe, 0x1b, 0x61, ++ 0x08, 0x11, 0x3f, 0x68, 0x40, 0xa2, 0x75, 0xc7, 0x40, 0x2a, 0xec, 0x10, 0x10, 0xfd, 0x7d, 0x8a, ++ 0x60, 0xcc, 0xc7, 0xa5, 0x86, 0x94, 0x39, 0x6d, 0x86, 0x3b, 0x5a, 0xc0, 0xc0, 0x96, 0x59, 0xb7, ++ 0xf4, 0xd4, 0x31, 0x0e, 0xac, 0xf0, 0x54, 0x8f, 0xac, 0x9f, 0xef, 0x2b, 0x2b, 0x3b, 0xa0, 0x52, ++ 0x4b, 0xa7, 0xa5, 0xb9, 0x1d, 0xb7, 0x91, 0xb0, 0x1d, 0xc6, 0x47, 0x96, 0x96, 0xe0, 0xda, 0x13, ++ 0xc7, 0x8c, 0x12, 0xaa, 0xf7, 0xf6, 0x63, 0xd8, 0xf7, 0x1c, 0x05, 0x4d, 0x4d, 0x89, 0xa4, 0xab, ++ 0x06, 0x7c, 0x81, 0x2e, 0x30, 0x98, 0x57, 0xc3, 0x30, 0xfe, 0x4d, 0x0c, 0x0c, 0x31, 0x51, 0x86, ++ 0xdf, 0xbf, 0x53, 0x12, 0x37, 0xd3, 0xfc, 0x52, 0x37, 0x62, 0xf2, 0x7d, 0x7d, 0x4d, 0x23, 0xf6, ++ 0x35, 0x24, 0xa2, 0x8a, 0x6b, 0x9e, 0x60, 0x94, 0x6b, 0x7d, 0xa7, 0x6a, 0x6a, 0x83, 0x55, 0x7f, ++ 0xfd, 0x6e, 0xd0, 0x6b, 0xe4, 0xd7, 0x67, 0x89, 0xe4, 0x21, 0xff, 0x39, 0x39, 0x91, 0x9a, 0x58, ++ 0x11, 0x89, 0xa0, 0xdd, 0x88, 0x02, 0xac, 0x8c, 0x88, 0xc0, 0xe7, 0x22, 0x22, 0x6e, 0xbd, 0x57, ++ 0xb2, 0x20, 0x8b, 0xe6, 0xd9, 0x31, 0x2d, 0xbb, 0xd9, 0xf2, 0xce, 0xa7, 0xa7, 0xee, 0x9f, 0x0e, ++ 0xc5, 0x19, 0x6d, 0xb0, 0xe7, 0x3f, 0xef, 0x99, 0xe7, 0xf7, 0x3e, 0x49, 0x49, 0x27, 0x2a, 0x68, ++ 0xb8, 0xa4, 0xcb, 0x94, 0x89, 0x5a, 0xd4, 0x3d, 0x89, 0x33, 0x19, 0xb3, 0xb3, 0xbd, 0x6c, 0x47, ++ 0xb5, 0xf7, 0xd4, 0xc5, 0xe1, 0x2c, 0x3c, 0xb9, 0xe1, 0x98, 0x7f, 0xa9, 0xa9, 0x88, 0x89, 0x08, ++ 0x3b, 0x49, 0x1c, 0xcc, 0x1b, 0xa4, 0x42, 0x90, 0x1b, 0xa9, 0x06, 0x76, 0x76, 0x4f, 0x79, 0x73, ++ 0x28, 0x55, 0xc3, 0x0b, 0x83, 0x6f, 0x62, 0x5d, 0x83, 0x82, 0xda, 0x50, 0x50, 0x8f, 0x4a, 0xe7, ++ 0xa0, 0x97, 0x8a, 0x2c, 0x49, 0x7f, 0x4b, 0xb7, 0x49, 0x4d, 0xee, 0x83, 0x83, 0x79, 0xeb, 0x1a, ++ 0xe8, 0x0e, 0x8e, 0x82, 0x4c, 0x84, 0x10, 0x87, 0x4c, 0xf4, 0x6e, 0x13, 0x13, 0x60, 0xf8, 0x4a, ++ 0xde, 0x14, 0x8d, 0x1f, 0x3f, 0x56, 0xba, 0x93, 0x3f, 0xf6, 0x0e, 0x7f, 0x7f, 0x1a, 0x64, 0x76, ++ 0x1f, 0xe4, 0x1e, 0x9b, 0xf8, 0x38, 0x8e, 0x88, 0xf8, 0x14, 0x46, 0x3e, 0x3e, 0xa2, 0x91, 0x5b, ++ 0x6f, 0x0a, 0xa7, 0xee, 0xfe, 0x2b, 0x5d, 0xa8, 0xfe, 0x7b, 0x07, 0xde, 0xde, 0x0d, 0x32, 0x3b, ++ 0x59, 0x10, 0xa4, 0x73, 0x8d, 0xf9, 0xf7, 0xbc, 0x8d, 0x79, 0x67, 0xb2, 0xb2, 0x77, 0xae, 0x07, ++ 0x32, 0xf3, 0xfd, 0xa9, 0x53, 0x83, 0x71, 0x96, 0x53, 0x17, 0x16, 0x64, 0x64, 0xe5, 0x43, 0x79, ++ 0x84, 0x3a, 0x88, 0x7b, 0xaa, 0xe3, 0x87, 0xaf, 0xaa, 0xf0, 0xae, 0xcb, 0xcb, 0x94, 0x03, 0x32, ++ 0x12, 0xb7, 0x01, 0xca, 0x90, 0x4e, 0x66, 0x0c, 0x90, 0xbf, 0x20, 0x24, 0x24, 0x97, 0x74, 0x14, ++ 0x88, 0xc2, 0x49, 0x27, 0xca, 0x10, 0x29, 0xea, 0xca, 0xcf, 0x34, 0xd3, 0xd3, 0xf6, 0xa1, 0xfd, ++ 0x1b, 0x0d, 0xe0, 0xaf, 0xd8, 0x69, 0x55, 0x0a, 0xd8, 0x01, 0x30, 0x36, 0x36, 0x3d, 0x4e, 0x1e, ++ 0x58, 0xbb, 0x7a, 0x7e, 0x85, 0x7c, 0xb1, 0x7d, 0x85, 0xed, 0x9b, 0xb0, 0xb0, 0x20, 0xe9, 0x87, ++ 0xa5, 0xd5, 0xaa, 0x15, 0x61, 0xab, 0xd6, 0xf4, 0x61, 0xcc, 0x64, 0x89, 0x89, 0xb1, 0x73, 0xdf, ++ 0x04, 0xe9, 0xfe, 0x34, 0x20, 0x51, 0xdb, 0x82, 0x20, 0x15, 0x76, 0x08, 0x08, 0x9f, 0xdf, 0x45, ++ 0xa7, 0x40, 0xd5, 0x0f, 0x71, 0x62, 0x5a, 0xb5, 0x71, 0x27, 0x5f, 0x8d, 0x8d, 0x1f, 0xfd, 0x1c, ++ 0xd5, 0x3b, 0x13, 0x60, 0x67, 0xb8, 0x05, 0xd4, 0x67, 0xa3, 0x25, 0x69, 0x69, 0x1e, 0xd0, 0xbf, ++ 0xf5, 0x7f, 0xef, 0x03, 0xa4, 0x75, 0x12, 0x4e, 0xa4, 0x0b, 0x13, 0x29, 0x29, 0x6c, 0xe7, 0xd2, ++ 0x4d, 0xdb, 0x24, 0x97, 0x2d, 0x2f, 0xc6, 0x73, 0x2d, 0x38, 0x0a, 0x9a, 0x9a, 0xd1, 0x8b, 0x95, ++ 0x3d, 0x35, 0x9d, 0xe2, 0x2b, 0x3c, 0x15, 0x53, 0x2b, 0x57, 0x4b, 0x7a, 0x7a, 0x7e, 0x28, 0xf5, ++ 0xa8, 0x86, 0xb5, 0x44, 0x09, 0xdd, 0x3e, 0x70, 0x09, 0x67, 0x02, 0x93, 0x93, 0x84, 0x96, 0x90, ++ 0x33, 0x58, 0x23, 0xa4, 0x5b, 0x06, 0x37, 0x57, 0x5b, 0x83, 0xea, 0x66, 0x66, 0xb2, 0x04, 0xf9, ++ 0x21, 0xef, 0x22, 0x6e, 0xcb, 0x48, 0x51, 0x5b, 0xcb, 0x3c, 0xca, 0x42, 0x42, 0x25, 0x70, 0xed, ++ 0x2b, 0x6b, 0x62, 0x1c, 0x9b, 0x23, 0xa8, 0xdd, 0x9b, 0xfd, 0x1d, 0x56, 0x56, 0x76, 0x83, 0xa4, ++ 0x4c, 0x70, 0xfa, 0x9a, 0x25, 0xaa, 0x80, 0xb2, 0x25, 0xac, 0xf6, 0x98, 0x98, 0x86, 0xcc, 0x15, ++ 0x1a, 0xa6, 0x3e, 0xa2, 0xd0, 0xec, 0x13, 0xcb, 0xd0, 0x95, 0xcc, 0x34, 0x34, 0x6a, 0x09, 0x9e, ++ 0x67, 0x1b, 0x98, 0x86, 0xbe, 0x89, 0x28, 0x6f, 0xbe, 0x51, 0xeb, 0xce, 0xce, 0xf0, 0x4f, 0xb1, ++ 0x54, 0x43, 0xbb, 0x22, 0xe5, 0x8f, 0x1f, 0x38, 0xe5, 0xd2, 0x01, 0xa8, 0xa8, 0x42, 0x4b, 0x48, ++ 0xec, 0xe7, 0x70, 0xb6, 0x6c, 0xd5, 0xcb, 0x05, 0x6c, 0xe1, 0x18, 0x1b, 0x1b, 0xff, 0x27, 0x0f, ++ 0x9b, 0xde, 0x96, 0xe0, 0x52, 0xdb, 0x09, 0x27, 0x52, 0xe4, 0xe8, 0xf5, 0xf5, 0x36, 0x92, 0x69, ++ 0xa2, 0x02, 0xf5, 0x36, 0x59, 0xb6, 0xc7, 0xf6, 0x59, 0xa6, 0xd5, 0x87, 0x87, 0xd7, 0x65, 0xd9, ++ 0x64, 0x25, 0x39, 0x91, 0xa6, 0xc5, 0xe2, 0xef, 0xa6, 0x2e, 0x2c, 0xc8, 0xc8, 0x09, 0x86, 0xf2, ++ 0xef, 0xd9, 0xd1, 0xa1, 0x74, 0x99, 0x01, 0x85, 0x74, 0x9e, 0xdf, 0x1d, 0x1d, 0x06, 0xee, 0x4c, ++ 0x8b, 0xfc, 0xe8, 0x30, 0xd2, 0x5c, 0xe3, 0x6a, 0xd2, 0xb0, 0xf3, 0xd5, 0xd5, 0x0f, 0x68, 0xbe, ++ 0x6c, 0x34, 0x06, 0xf9, 0xe6, 0x67, 0x97, 0x28, 0xe6, 0x04, 0xc0, 0xd8, 0xd8, 0xf4, 0xfb, 0x78, ++ 0xff, 0xfb, 0xaf, 0x71, 0xf4, 0x1e, 0xeb, 0xc8, 0xf4, 0xca, 0xc4, 0x3d, 0x3d, 0x3f, 0x14, 0x9b, ++ 0xf7, 0xea, 0x90, 0x19, 0xb4, 0xbc, 0x9e, 0x0f, 0xb4, 0xe0, 0x28, 0x2d, 0x2d, 0xc2, 0x69, 0x11, ++ 0x18, 0x33, 0x41, 0xb8, 0xc0, 0x25, 0x9f, 0x8a, 0xc0, 0x7e, 0xf7, 0x30, 0x30, 0xc4, 0x87, 0x5d, ++ 0xb3, 0x8b, 0x55, 0xeb, 0xd1, 0xb4, 0x6b, 0x7a, 0xd1, 0x66, 0x32, 0xa5, 0xa5, 0xb9, 0xd8, 0x8e, ++ 0x7c, 0x16, 0x78, 0x29, 0x66, 0xe0, 0x7d, 0x65, 0x66, 0x50, 0xdb, 0xf8, 0xf8, 0xcd, 0x01, 0xaf, ++ 0xcc, 0xa3, 0x8c, 0xd5, 0xaf, 0x18, 0xdc, 0x9f, 0xaf, 0x49, 0x2e, 0x5b, 0x5b, 0x8d, 0x10, 0x62, ++ 0x89, 0x69, 0x97, 0x2a, 0xc2, 0x95, 0x6f, 0x2b, 0xc2, 0x5b, 0xc8, 0xd1, 0xd1, 0xa1, 0xe6, 0x7d, ++ 0xae, 0xfa, 0x34, 0x6a, 0x39, 0x45, 0x69, 0xb3, 0x39, 0x99, 0x4f, 0x9f, 0x9f, 0xb5, 0xc7, 0x16, ++ 0x31, 0xcd, 0x5c, 0xbe, 0x4b, 0xcf, 0xbb, 0x16, 0x4b, 0x68, 0xd1, 0x62, 0x62, 0x1c, 0x8a, 0x3a, ++ 0x34, 0x8f, 0x7c, 0x87, 0x63, 0x1b, 0x26, 0x55, 0x63, 0xe9, 0x5b, 0x68, 0x68, 0xd4, 0x12, 0xff, ++ 0x66, 0xb0, 0x46, 0x8b, 0xb6, 0x0c, 0x6e, 0xae, 0xb6, 0xc5, 0x17, 0xcc, 0xcc, 0xa7, 0x08, 0x31, ++ }, ++ { /* 12 */ ++ 0x55, 0x95, 0x9e, 0xb1, 0xd0, 0xa1, 0x4c, 0xd9, 0x5a, 0x2f, 0xf9, 0x1c, 0x4c, 0xf2, 0x1a, 0x52, ++ 0xfa, 0xed, 0x87, 0xcf, 0x85, 0x5d, 0x81, 0x6c, 0x55, 0x48, 0x8b, 0x1e, 0x81, 0xe1, 0x58, 0x1c, ++ 0x0c, 0xbe, 0x0a, 0x56, 0x48, 0xac, 0xcc, 0x72, 0x67, 0x5c, 0x45, 0x58, 0xcc, 0xf1, 0x09, 0x1a, ++ 0x52, 0x31, 0x7b, 0x77, 0xfa, 0xee, 0x3b, 0x0a, 0xaf, 0x0c, 0xfb, 0x83, 0x3b, 0xb1, 0x8e, 0x02, ++ 0xa3, 0xc6, 0x13, 0x28, 0x1d, 0x50, 0x01, 0xc7, 0x68, 0x3b, 0x37, 0x5a, 0x01, 0xe2, 0x4b, 0x54, ++ 0x73, 0x1c, 0xab, 0xc9, 0xf7, 0x51, 0x4f, 0x53, 0xe2, 0x62, 0xa0, 0xf2, 0x4f, 0x17, 0xc7, 0xae, ++ 0xe1, 0x9c, 0x70, 0x97, 0x07, 0xed, 0xe9, 0x75, 0xf2, 0xe7, 0x81, 0xb8, 0xe9, 0x6d, 0xd9, 0xcf, ++ 0x81, 0x25, 0x20, 0x62, 0x02, 0xc4, 0x46, 0x63, 0x4c, 0x42, 0xec, 0x3d, 0x46, 0xe9, 0x91, 0x1f, ++ 0x86, 0x81, 0xc5, 0xa4, 0x28, 0x8b, 0x31, 0xb0, 0xb9, 0x61, 0xee, 0xa2, 0x31, 0xaa, 0x05, 0x4f, ++ 0x02, 0x35, 0x03, 0x19, 0x1c, 0x32, 0x22, 0x17, 0x4e, 0x1a, 0x41, 0xa5, 0x22, 0x77, 0xe2, 0xba, ++ 0x6c, 0x07, 0x5a, 0xa3, 0x4d, 0x85, 0x63, 0x64, 0xd9, 0xf9, 0x28, 0xdd, 0x63, 0x75, 0x41, 0xca, ++ 0xdf, 0xaa, 0x51, 0x43, 0xb0, 0x86, 0xb1, 0x1b, 0x84, 0x12, 0x52, 0xe6, 0xb1, 0xa9, 0x16, 0x07, ++ 0x4e, 0xe4, 0x69, 0xe9, 0x52, 0x11, 0x24, 0xc0, 0xfd, 0x80, 0xf3, 0xba, 0x24, 0x7e, 0x9b, 0x81, ++ 0xe8, 0xb3, 0x9c, 0x1e, 0x79, 0x3c, 0x70, 0xc3, 0x2e, 0x82, 0x87, 0xda, 0x70, 0xa8, 0xa6, 0x3f, ++ 0x2e, 0x5d, 0x39, 0x1c, 0x57, 0x38, 0x8b, 0xd6, 0x43, 0x25, 0x9e, 0x3f, 0x8b, 0xfa, 0xd3, 0x51, ++ 0x3d, 0xf8, 0xc2, 0x20, 0xa5, 0x40, 0x6b, 0x93, 0x1f, 0xe2, 0x53, 0x48, 0x6b, 0x69, 0x5c, 0x2f, ++ 0x29, 0xf9, 0xdc, 0xda, 0x7d, 0x77, 0xfc, 0x05, 0xb6, 0x06, 0x9c, 0xa0, 0xfc, 0xb9, 0x47, 0x01, ++ 0x7d, 0x97, 0xa2, 0x86, 0xa3, 0xcf, 0xa1, 0x36, 0xcb, 0x24, 0xa4, 0x0f, 0xa1, 0x91, 0x2c, 0x0e, ++ 0x27, 0x72, 0xd5, 0x95, 0x29, 0xe9, 0x12, 0x60, 0x9f, 0x40, 0x98, 0x5d, 0x12, 0x3f, 0xac, 0xa1, ++ 0x35, 0x2c, 0xce, 0x44, 0xd5, 0x88, 0xe3, 0xcf, 0xe4, 0x8a, 0x94, 0x99, 0xe3, 0x76, 0x52, 0x82, ++ 0xcc, 0x0f, 0xaa, 0x7f, 0x42, 0xfe, 0x51, 0x5e, 0xd8, 0xd5, 0x9f, 0x91, 0x51, 0x3a, 0x99, 0x79, ++ 0xd6, 0x85, 0xbd, 0xca, 0xce, 0x57, 0x28, 0xad, 0x58, 0x77, 0x54, 0x84, 0x28, 0x6c, 0x69, 0xf7, ++ 0x87, 0x7a, 0x25, 0x49, 0x26, 0x92, 0x20, 0x5a, 0x9e, 0x6c, 0x2f, 0x11, 0x20, 0x70, 0x74, 0x12, ++ 0xc9, 0x9e, 0x4c, 0xa0, 0x74, 0x83, 0x04, 0x9a, 0x63, 0xec, 0xdc, 0xab, 0x04, 0x0e, 0xef, 0x93, ++ 0x6b, 0xa3, 0xbf, 0x65, 0x67, 0xca, 0x14, 0xb7, 0x2c, 0xda, 0x2a, 0x42, 0x14, 0x36, 0xd5, 0x9a, ++ 0x32, 0x88, 0x2b, 0x82, 0xff, 0xc7, 0x94, 0x1c, 0x11, 0xa9, 0x96, 0x06, 0x94, 0x35, 0xc6, 0xd2, ++ 0xcd, 0xf4, 0x4a, 0x92, 0x4c, 0xe7, 0x40, 0xb4, 0xff, 0xd8, 0x5e, 0x22, 0x40, 0xe0, 0xe8, 0x24, ++ 0x23, 0x18, 0xd3, 0xa7, 0x11, 0x8d, 0x56, 0x4e, 0x03, 0x74, 0x1a, 0xd4, 0x56, 0xd1, 0xab, 0x16, ++ 0x96, 0xea, 0xdd, 0x6c, 0xc8, 0xd8, 0xe2, 0x08, 0x8c, 0xb1, 0xa3, 0xc3, 0xe2, 0x94, 0x19, 0xd6, ++ 0xb4, 0x09, 0xee, 0x26, 0xd7, 0x4c, 0xa5, 0xac, 0xa8, 0xc8, 0x78, 0xa4, 0xa5, 0x9f, 0xc3, 0x9d, ++ 0x92, 0x80, 0xdb, 0x5e, 0xf0, 0xbc, 0xa6, 0x26, 0x10, 0x85, 0x21, 0x4a, 0xa6, 0x7a, 0x1e, 0x61, ++ 0xc6, 0xee, 0xa5, 0x02, 0x2e, 0x04, 0xfb, 0x15, 0x6d, 0xa7, 0x19, 0xe5, 0xfb, 0x52, 0x75, 0x6e, ++ 0x91, 0x4e, 0x38, 0xaa, 0xe2, 0x97, 0x95, 0xdb, 0x79, 0x92, 0xa1, 0x5c, 0x95, 0xd7, 0x8d, 0x86, ++ 0xe4, 0x0d, 0x96, 0x48, 0x31, 0x90, 0xbc, 0xb1, 0x49, 0xde, 0xc2, 0x82, 0xbc, 0x59, 0xaf, 0x25, ++ 0xd2, 0xef, 0xbb, 0xf8, 0xf6, 0x33, 0x6c, 0x83, 0xc4, 0x43, 0xd6, 0x0d, 0x6c, 0x82, 0x6e, 0x40, ++ 0x56, 0x5b, 0x7d, 0x45, 0xc2, 0x8a, 0x7f, 0x24, 0x33, 0x38, 0x79, 0x0a, 0x7f, 0x5f, 0x89, 0xb5, ++ 0x88, 0x0a, 0xcc, 0xeb, 0x7c, 0x15, 0xdf, 0xd5, 0x90, 0x27, 0xea, 0x5f, 0xdf, 0x2c, 0xee, 0xef, ++ 0x6f, 0xc9, 0xb9, 0x57, 0x5f, 0xae, 0x50, 0x99, 0xb0, 0xee, 0xa8, 0xcb, 0x50, 0xd8, 0xd2, 0x2d, ++ 0x10, 0x6b, 0x18, 0xc8, 0xe0, 0x53, 0xd3, 0xb8, 0x35, 0xd0, 0x4d, 0x61, 0xd3, 0x3e, 0x1c, 0x99, ++ 0x59, 0x2b, 0x94, 0xe7, 0x98, 0x0d, 0x80, 0xab, 0x3d, 0x73, 0xbc, 0x44, 0x80, 0x03, 0x13, 0x48, ++ 0x63, 0x77, 0xb3, 0x01, 0x17, 0x02, 0x9c, 0xeb, 0xd7, 0xb2, 0xed, 0x93, 0x9c, 0x29, 0xdb, 0x37, ++ 0xca, 0x50, 0xaf, 0x54, 0x66, 0xa8, 0x37, 0x67, 0x0a, 0xfb, 0x5c, 0xbd, 0x37, 0xa3, 0x7c, 0x74, ++ 0x79, 0xfd, 0xa4, 0xb4, 0x9b, 0xab, 0xe5, 0x18, 0x57, 0x10, 0x26, 0x86, 0xe5, 0x7f, 0x2b, 0xb9, ++ 0xb2, 0x56, 0xeb, 0x0d, 0xf3, 0x1a, 0xc3, 0x95, 0x7a, 0xe6, 0xbb, 0x88, 0xc3, 0x06, 0x26, 0x90, ++ 0x28, 0x02, 0x3c, 0x37, 0x73, 0x6e, 0xed, 0xef, 0x91, 0x0b, 0x5d, 0x13, 0xed, 0x63, 0x36, 0x5c, ++ 0xea, 0x86, 0x9f, 0x07, 0x65, 0x0e, 0x52, 0xd4, 0x60, 0x98, 0xc6, 0x7f, 0x52, 0xdf, 0x44, 0x85, ++ 0xec, 0xd9, 0x9a, 0x2c, 0x41, 0x58, 0x34, 0xed, 0xb2, 0xb6, 0x05, 0x53, 0x34, 0x46, 0xa1, 0x88, ++ 0x2a, 0x37, 0x3f, 0x2e, 0x6f, 0x5c, 0xcf, 0xf8, 0xdf, 0x11, 0x1c, 0xb6, 0xcf, 0x14, 0xd4, 0xe6, ++ 0xc4, 0xdb, 0xa6, 0x1b, 0x32, 0x36, 0xd9, 0x02, 0x23, 0xbd, 0x58, 0x40, 0xd9, 0x25, 0x97, 0xd4, ++ 0xa7, 0xac, 0x15, 0x1a, 0x25, 0x34, 0x45, 0xe9, 0xf4, 0x0f, 0xb5, 0xd3, 0x45, 0x0c, 0x4c, 0xe3, ++ 0x17, 0xcf, 0xfd, 0x0e, 0xca, 0x1c, 0xa4, 0x6b, 0xc0, 0xf3, 0x4f, 0xfe, 0xa4, 0x7d, 0x88, 0xc9, ++ 0x5f, 0x74, 0x91, 0xcc, 0xbc, 0x5b, 0xe6, 0x92, 0xef, 0x5d, 0x7f, 0x68, 0xe6, 0x9a, 0xf6, 0x45, ++ 0x62, 0x8c, 0x53, 0xec, 0x19, 0x1b, 0x8d, 0x01, 0xf0, 0xbf, 0x2c, 0x20, 0x8d, 0xf3, 0xaa, 0x6a, ++ 0x5d, 0x41, 0x92, 0xd5, 0xa0, 0x69, 0xc4, 0x85, 0xa1, 0x47, 0x3e, 0xcd, 0xc4, 0xed, 0x14, 0xff, ++ 0x06, 0x5f, 0x05, 0x2b, 0x24, 0x56, 0x66, 0x39, 0xd2, 0x2e, 0xc3, 0x2c, 0x66, 0x99, 0xe5, 0x0d, ++ 0x3a, 0x5c, 0x27, 0xe6, 0x8f, 0x0f, 0x1c, 0x40, 0xea, 0xc1, 0x51, 0xd7, 0x1c, 0x2a, 0xc8, 0x7f, ++ 0x39, 0x92, 0xc4, 0x12, 0x9d, 0x24, 0x2f, 0xbd, 0x83, 0xd6, 0xd1, 0xc1, 0x2f, 0x87, 0x5b, 0x98, ++ 0xa1, 0xf3, 0x10, 0x31, 0x01, 0x62, 0x23, 0xd0, 0x26, 0x21, 0x76, 0xff, 0x23, 0x95, 0xa9, 0xee, ++ 0x07, 0xa4, 0xe5, 0xc6, 0x2a, 0x4f, 0x77, 0xd3, 0xf5, 0x23, 0x02, 0x9f, 0x77, 0x43, 0x94, 0x50, ++ 0x6d, 0xfc, 0xba, 0x4e, 0x43, 0x9c, 0x72, 0x8e, 0xfe, 0xf4, 0xe9, 0x6e, 0x72, 0xaf, 0x30, 0x97, ++ 0x21, 0x2d, 0xd0, 0xbe, 0x0d, 0xbf, 0x74, 0x59, 0x4d, 0x6e, 0x5b, 0x71, 0x74, 0xa6, 0x49, 0xac, ++ 0xba, 0x82, 0xe7, 0x69, 0x83, 0xd2, 0x4b, 0xc9, 0x81, 0x8e, 0x7c, 0x59, 0x4b, 0x19, 0x28, 0x3d, ++ 0x69, 0x96, 0xbc, 0x7c, 0x7b, 0xf8, 0x36, 0xa0, 0x62, 0xc0, 0x6b, 0xe7, 0x36, 0x41, 0x37, 0x20, ++ 0x37, 0x19, 0xcd, 0x5d, 0xc9, 0xba, 0xc1, 0xd8, 0xaa, 0x90, 0xd5, 0x3c, 0xc1, 0x01, 0xb0, 0x38, ++ 0x3e, 0x36, 0x21, 0xd4, 0xb7, 0x6b, 0x58, 0x6e, 0x76, 0xf5, 0xd3, 0x5e, 0x58, 0xc4, 0xcf, 0xc8, ++ 0x25, 0x47, 0xd6, 0x8c, 0x35, 0xdb, 0x30, 0x77, 0xd1, 0x5a, 0xd9, 0xf8, 0x30, 0x48, 0x4e, 0x1b, ++ 0xc1, 0x4a, 0x40, 0xc4, 0x04, 0x4b, 0x8c, 0xc6, 0x98, 0x84, 0x1b, 0x7a, 0x8c, 0x11, 0xe1, 0x3e, ++ 0xf7, 0xa8, 0x6d, 0x74, 0xc3, 0xe8, 0x5c, 0xf4, 0x15, 0x19, 0x0f, 0xf5, 0x5c, 0xca, 0x20, 0x5b, ++ 0xd4, 0xb0, 0xbe, 0xd3, 0xd2, 0x65, 0x0a, 0xba, 0x16, 0x6d, 0x15, 0x21, 0x0a, 0x1b, 0x8b, 0x4d, ++ 0x70, 0xd2, 0x48, 0x3d, 0xe5, 0x7a, 0x7c, 0xae, 0x8b, 0x75, 0x20, 0xe4, 0x7c, 0xba, 0x54, 0x49, ++ 0xf9, 0x23, 0x64, 0x3b, 0x97, 0x76, 0xb2, 0x91, 0x3c, 0x5f, 0x0b, 0x08, 0xb2, 0x4c, 0xcb, 0xfb, ++ 0x9b, 0xaf, 0x37, 0xd7, 0x8e, 0x6d, 0x3f, 0x90, 0xcc, 0xe0, 0x27, 0x28, 0x3f, 0xbf, 0x61, 0x91, ++ 0x30, 0xbd, 0x28, 0x9b, 0xe3, 0xf5, 0xb6, 0x0b, 0x5f, 0xb3, 0xd7, 0xa3, 0xb6, 0x42, 0x24, 0x68, ++ 0xf8, 0xd8, 0x84, 0xd6, 0x99, 0x6f, 0xa3, 0x7b, 0x1b, 0x52, 0xca, 0xbb, 0xa3, 0x96, 0xba, 0xa6, ++ 0x4a, 0x8e, 0x6f, 0xdb, 0x6a, 0x75, 0x60, 0xee, 0x61, 0xb4, 0x71, 0x33, 0x60, 0x90, 0x9c, 0x36, ++ 0x2d, 0x93, 0xda, 0xe8, 0x45, 0x13, 0xb8, 0x2b, 0x2a, 0x32, 0x1e, 0x29, 0xb8, 0x57, 0x40, 0xb6, ++ 0xbf, 0x13, 0x01, 0xb6, 0xb5, 0xaf, 0x1e, 0x0d, 0x3a, 0xb7, 0x3f, 0x63, 0x1e, 0x2d, 0x5e, 0xd7, ++ 0x40, 0x6f, 0x60, 0xa6, 0x06, 0x8f, 0xca, 0xa5, 0xd4, 0xc6, 0xf7, 0x47, 0xca, 0xf8, 0x70, 0x21, ++ 0x49, 0x40, 0x8c, 0x2f, 0x78, 0x5e, 0x53, 0x13, 0x08, 0xa3, 0xf1, 0x25, 0x53, 0x3d, 0x0f, 0xd1, ++ 0x5e, 0x8f, 0x71, 0x21, 0xb2, 0x42, 0xf7, 0x78, 0xc8, 0x50, 0xbe, 0xdb, 0xf7, 0x40, 0x87, 0x18, ++ 0x46, 0x30, 0x65, 0x8d, 0x22, 0xd9, 0xac, 0x9c, 0x06, 0xe8, 0x34, 0x6b, 0xac, 0x61, 0x95, 0x2c, ++ 0xae, 0x83, 0xf9, 0x93, 0x5b, 0xe5, 0xdc, 0x5f, 0x28, 0x6a, 0xb3, 0xb1, 0xdc, 0xc9, 0x33, 0x13, ++ 0x65, 0x28, 0xb6, 0x2a, 0x33, 0x54, 0xfa, 0xd2, 0x05, 0x9c, 0x2e, 0xbf, 0xfa, 0xb0, 0x3e, 0x3a, ++ 0x24, 0xbc, 0x36, 0x61, 0x3b, 0xc2, 0x21, 0x9d, 0xf6, 0x57, 0x18, 0x4b, 0x21, 0x92, 0x3f, 0x46, ++ 0x5c, 0xba, 0x72, 0x38, 0xae, 0x70, 0xd5, 0x6f, 0x86, 0x4a, 0xff, 0x7e, 0xd5, 0x37, 0x65, 0xa2, ++ 0x72, 0xe7, 0x4b, 0x24, 0xf9, 0x48, 0x5e, 0xb9, 0xc5, 0x6f, 0x61, 0x41, 0x5e, 0xcd, 0xb6, 0xf3, ++ 0x97, 0x11, 0x3d, 0x81, 0xc6, 0xc1, 0xf3, 0xe2, 0xab, 0xbc, 0x62, 0x70, 0xf3, 0x4e, 0x68, 0x8b, ++ 0xaf, 0x78, 0x19, 0x7e, 0x55, 0xfc, 0xcd, 0xb5, 0x0f, 0x67, 0x72, 0x02, 0xcd, 0x13, 0x42, 0x4e, ++ 0x0d, 0x45, 0xea, 0xbb, 0x46, 0xb5, 0xdd, 0x98, 0x40, 0x51, 0x84, 0xeb, 0xdd, 0x2b, 0x78, 0x47, ++ 0xb9, 0x4c, 0x04, 0x9d, 0x91, 0xf9, 0x78, 0x34, 0xe8, 0x99, 0xfc, 0x4f, 0x78, 0xb4, 0xbb, 0xda, ++ 0x45, 0xfe, 0x86, 0x79, 0x30, 0xf2, 0x9f, 0x61, 0x6f, 0xff, 0xb4, 0x7d, 0x9f, 0xcc, 0x06, 0xcb, ++ 0x76, 0x8d, 0x4d, 0x16, 0xc1, 0x2c, 0x1a, 0x97, 0x59, 0x5b, 0xe3, 0xc8, 0x1a, 0x23, 0xb1, 0x44, ++ 0x43, 0xa1, 0x83, 0x52, 0x14, 0xa4, 0xf9, 0x58, 0xbd, 0xd1, 0x77, 0x51, 0xf9, 0x55, 0xe3, 0xc6, ++ 0x51, 0xff, 0x98, 0x83, 0xe8, 0xc5, 0x08, 0xf7, 0xc6, 0x1b, 0x7b, 0x95, 0x08, 0x1c, 0x1d, 0xe5, ++ 0x85, 0x4f, 0x26, 0x50, 0x3a, 0xa0, 0x02, 0x4d, 0xd0, 0x76, 0x6e, 0xb4, 0x02, 0x07, 0x96, 0xa8, ++ 0x5a, 0xe5, 0x77, 0x13, 0x8a, 0x26, 0xb3, 0x56, 0x54, 0x64, 0x3c, 0x52, 0xb3, 0xae, 0x80, 0xaf, ++ 0x7c, 0x6c, 0x42, 0x6b, 0xad, 0xd6, 0xb0, 0xdc, 0xec, 0x29, 0x65, 0xbc, 0xb0, 0x4b, 0x5d, 0x53, ++ 0xd0, 0xda, 0xb8, 0xe1, 0xea, 0x01, 0x4e, 0x94, 0x8a, 0x59, 0x97, 0xa8, 0x4e, 0xf5, 0x8c, 0xfa, ++ 0x08, 0xd4, 0x0c, 0x64, 0x70, 0xc8, 0x88, 0x5c, 0xfb, 0x68, 0xc7, 0xd1, 0x88, 0x1f, 0x0e, 0xad, ++ 0x05, 0x91, 0xe6, 0xdf, 0x36, 0x7d, 0x55, 0xc4, 0xbb, 0x39, 0x43, 0x3a, 0x55, 0x34, 0x76, 0xea, ++ 0xb8, 0xb7, 0xe4, 0x70, 0x9f, 0xe0, 0x69, 0xde, 0xcf, 0x94, 0x3d, 0xfc, 0x69, 0x6e, 0xca, 0x87, ++ 0x0f, 0x70, 0xe9, 0xa2, 0x5a, 0x87, 0xff, 0x8f, 0x0e, 0x4b, 0xc5, 0x4e, 0xff, 0x5c, 0x9a, 0xfd, ++ 0x7a, 0x33, 0x47, 0x40, 0x89, 0x80, 0xd6, 0xe5, 0x3e, 0x07, 0xa6, 0x90, 0xd6, 0xd2, 0xb8, 0x5e, ++ 0xff, 0x7c, 0x61, 0x10, 0xb3, 0x20, 0xd4, 0xa8, 0xee, 0x71, 0xc8, 0x24, 0xd4, 0xd5, 0x2e, 0xf6, ++ 0xda, 0x3b, 0xb7, 0x9c, 0x86, 0xfb, 0xe4, 0xdf, 0x3f, 0x2b, 0x11, 0xdc, 0xe4, 0x9d, 0x60, 0xed, ++ 0xdb, 0xc0, 0x57, 0x71, 0x88, 0xe2, 0xf5, 0x35, 0x18, 0x26, 0xd0, 0x6f, 0xf5, 0x47, 0x11, 0xb0, ++ 0xf2, 0x39, 0x8b, 0xab, 0xf5, 0x95, 0x09, 0x30, 0xae, 0x20, 0x4c, 0xcf, 0x09, 0xfe, 0x56, 0xb1, ++ 0x99, 0x9a, 0x34, 0xce, 0x92, 0x5f, 0x1d, 0x87, 0x82, 0xfa, 0x66, 0x8d, 0x1d, 0xc8, 0x83, 0x2b, ++ 0xa9, 0x27, 0x1c, 0x55, 0x71, 0xaa, 0xab, 0x8c, 0xdd, 0x49, 0xb1, 0x2e, 0xab, 0x8a, 0xa7, 0x43, ++ 0x54, 0x6e, 0x7e, 0x5c, 0xde, 0xb8, 0x5d, 0x33, 0x7d, 0x22, 0x38, 0xaf, 0x5d, 0x28, 0x6b, 0x0f, ++ 0x95, 0x24, 0x3e, 0x98, 0xda, 0xf3, 0xd1, 0xf5, 0xe5, 0xa6, 0x23, 0xd5, 0xd1, 0x39, 0x8a, 0x31, ++ 0x68, 0x6d, 0x5c, 0x91, 0x75, 0xe1, 0x27, 0x4a, 0x45, 0xcd, 0xaa, 0x54, 0x27, 0x9b, 0x46, 0x7d, ++ 0x1c, 0xd5, 0x12, 0x9e, 0xa8, 0xff, 0x1f, 0xca, 0x52, 0x8c, 0x08, 0x39, 0x1f, 0xcf, 0x15, 0x83, ++ 0x6a, 0x58, 0x5f, 0x88, 0x69, 0xd3, 0x05, 0x5d, 0x0b, 0xd7, 0xeb, 0xf1, 0x05, 0xec, 0xa4, 0xc7, ++ 0x0e, 0x8b, 0x09, 0x4f, 0x54, 0x9e, 0xee, 0x65, 0x29, 0x46, 0x04, 0xfd, 0xee, 0x86, 0xeb, 0xa0, ++ 0x93, 0x7b, 0x3b, 0xb3, 0xfe, 0xa5, 0xb7, 0xcc, 0x37, 0x88, 0xe0, 0xf9, 0xb7, 0xa0, 0x6f, 0x3c, ++ 0xa8, 0xdc, 0xfc, 0xb8, 0x7f, 0xb3, 0xba, 0x66, 0xfa, 0x44, 0x70, 0x9d, 0xba, 0x50, 0xd6, 0x1e, ++ 0xcf, 0xc1, 0x49, 0x8b, 0x50, 0xd5, 0x62, 0xa3, 0xb1, 0xc2, 0x1f, 0x87, 0x62, 0x97, 0x0a, 0x9e, ++ 0xc2, 0x84, 0xa3, 0x30, 0x16, 0x60, 0xbf, 0x3b, 0xf1, 0x93, 0x9b, 0x6c, 0xbf, 0xbc, 0x72, 0xd9, ++ 0xcb, 0xab, 0x4f, 0xb9, 0x68, 0xb1, 0x26, 0x8d, 0x2d, 0xf6, 0x9d, 0x0e, 0x26, 0x79, 0x0d, 0x29, ++ 0x8e, 0x55, 0xc9, 0xc0, 0x58, 0x43, 0xb9, 0xec, 0x42, 0x09, 0x29, 0x73, 0xb9, 0xb5, 0x0b, 0xe2, ++ 0x33, 0x73, 0xcb, 0x6f, 0xf1, 0xde, 0x85, 0xf6, 0x36, 0xa4, 0x57, 0xb5, 0x85, 0xef, 0xb7, 0x8f, ++ 0x15, 0xfa, 0xfe, 0x17, 0xd6, 0x2e, 0x86, 0x7c, 0x8e, 0xe9, 0x0e, 0x5b, 0x86, 0x0a, 0x6a, 0x73, ++ 0x89, 0xf1, 0x2c, 0x06, 0x72, 0x0c, 0xce, 0x3f, 0xb7, 0x2a, 0x2b, 0xec, 0xce, 0xf6, 0x9f, 0xb2, ++ 0xd1, 0x21, 0x58, 0x0c, 0xe4, 0x18, 0x5f, 0x7e, 0xad, 0x54, 0x56, 0x1b, 0x5f, 0x2f, 0xfd, 0xa7, ++ 0x1a, 0x8a, 0x17, 0xb5, 0x8c, 0xa9, 0x79, 0xf3, 0x80, 0xa2, 0xcb, 0x15, 0x79, 0x56, 0xf0, 0x8e, ++ 0x98, 0x61, 0xd4, 0x23, 0x9c, 0x46, 0x0c, 0x6d, 0xa5, 0xf7, 0xa7, 0x3e, 0x0c, 0x12, 0xf2, 0x76, ++ 0xce, 0x3a, 0xa9, 0x66, 0x5e, 0xcc, 0x73, 0x49, 0x96, 0xcf, 0xde, 0x34, 0x73, 0x4d, 0x7b, 0xc3, ++ 0x1b, 0x71, 0xf7, 0x58, 0x82, 0xb0, 0x68, 0x19, 0xa7, 0xaf, 0x0a, 0xa6, 0x68, 0x8c, 0x81, 0xd3, ++ 0xe3, 0xa9, 0x73, 0x8e, 0x1b, 0xdf, 0xcb, 0x62, 0xbc, 0xfd, 0xc0, 0x1d, 0xcb, 0x1a, 0x3b, 0x75, ++ 0x9d, 0xf0, 0x32, 0xfc, 0xaa, 0x3b, 0x59, 0xa9, 0x1e, 0xce, 0xe4, 0x04, 0x59, 0x26, 0x84, 0x9c, ++ 0x8c, 0x60, 0xca, 0xd9, 0x44, 0x71, 0x9b, 0xfb, 0x0c, 0x13, 0x68, 0xd6, 0x9b, 0xc2, 0xe9, 0x58, ++ 0x6e, 0x32, 0x59, 0xba, 0x51, 0xb7, 0x41, 0x73, 0x97, 0xe3, 0x69, 0x78, 0x41, 0x02, 0xa3, 0x70, ++ 0x66, 0xe6, 0x55, 0xde, 0x21, 0x7f, 0xc9, 0x2f, 0x6c, 0x8b, 0xae, 0xa9, 0xc9, 0x1d, 0xad, 0xdd, ++ 0x58, 0xd0, 0x74, 0x0a, 0x96, 0x14, 0x91, 0x41, 0x1a, 0x7e, 0x7d, 0xf7, 0x91, 0xd9, 0x62, 0x15, ++ 0x9a, 0x54, 0xd7, 0x3a, 0x80, 0x74, 0x2e, 0x7a, 0xeb, 0xed, 0xe6, 0x9b, 0x2e, 0x65, 0x10, 0xcc, ++ 0x47, 0xcb, 0x85, 0x60, 0x2c, 0xc0, 0xbd, 0x76, 0x21, 0xe5, 0xf5, 0xd8, 0xbd, 0xbb, 0xe4, 0x71, ++ 0x18, 0xbf, 0x14, 0xac, 0x90, 0x9b, 0x5b, 0xe4, 0xce, 0xb8, 0x8a, 0xb0, 0x5b, 0x21, 0x12, 0x34, ++ 0xad, 0x4d, 0x1a, 0x67, 0x49, 0xce, 0xef, 0xa2, 0x41, 0x7d, 0x33, 0xa7, 0xef, 0x64, 0xa0, 0xf4, ++ 0x1e, 0xe0, 0x11, 0x87, 0xb4, 0xcd, 0x3d, 0xdd, 0x1c, 0x96, 0x49, 0x9c, 0x3d, 0xb8, 0xf7, 0x39, ++ 0xdc, 0x64, 0xb2, 0xb7, 0xa2, 0xad, 0x82, 0xe6, 0xed, 0x05, 0xd2, 0xf0, 0x82, 0x04, 0x85, 0xe0, ++ 0xa4, 0x62, 0xf6, 0xee, 0x37, 0x1f, 0x76, 0x14, 0x9d, 0x18, 0x35, 0xc5, 0x76, 0xa1, 0xdf, 0x04, ++ 0x34, 0xd7, 0x2e, 0xa9, 0xdb, 0x91, 0xf2, 0x25, 0xc3, 0x87, 0x55, 0x2a, 0xf2, 0xac, 0x23, 0xdf, ++ 0xfd, 0x49, 0x62, 0x09, 0xaf, 0x12, 0xf6, 0xbf, 0xa0, 0x6b, 0x89, 0x81, 0xf6, 0xa2, 0xcc, 0x4c, ++ 0x9f, 0xc5, 0x31, 0xe5, 0xb6, 0x09, 0x7b, 0xbe, 0x50, 0xd4, 0xa5, 0xa1, 0x7b, 0x51, 0x66, 0x26, ++ 0x8f, 0xae, 0x29, 0x2d, 0x56, 0x5a, 0xa8, 0x06, 0x65, 0x04, 0xe8, 0xc0, 0xa8, 0x6f, 0x7a, 0xbf, ++ 0xed, 0x22, 0x7a, 0xc1, 0x4f, 0x41, 0x25, 0x07, 0x95, 0xbb, 0xc4, 0xe0, 0x25, 0x9c, 0xd0, 0xd5, ++ 0xf1, 0xf7, 0x68, 0x5f, 0xe7, 0xbe, 0x3a, 0xcd, 0xc7, 0x37, 0xcc, 0xd9, 0x3a, 0x53, 0xc5, 0x56, ++ 0xe5, 0xf6, 0x76, 0xa5, 0x3f, 0x89, 0xad, 0x5b, 0x6e, 0xd3, 0x03, 0x31, 0xad, 0x83, 0xde, 0x78, ++ 0x1f, 0x1b, 0xf1, 0x6a, 0xba, 0xd4, 0x2c, 0x37, 0x3b, 0x9b, 0x88, 0x2f, 0x2c, 0x62, 0x86, 0x64, ++ 0x82, 0xeb, 0xc3, 0x96, 0x10, 0xef, 0x75, 0x9e, 0x25, 0x55, 0x6c, 0x2b, 0x75, 0x44, 0x02, 0xf8, ++ 0xf0, 0x0c, 0x88, 0xb2, 0xe9, 0xa7, 0x2b, 0x27, 0xe0, 0x3a, 0x0d, 0x6a, 0x2b, 0x89, 0xb4, 0x0b, ++ 0xe6, 0x38, 0x95, 0x51, 0x2d, 0xa2, 0x9e, 0xa6, 0x07, 0xc4, 0x83, 0x27, 0x9e, 0x2e, 0x4d, 0x9f, ++ 0xc3, 0x7f, 0x43, 0xdd, 0x18, 0x79, 0xae, 0xd1, 0xd6, 0x9e, 0x5a, 0xdf, 0xae, 0x66, 0x03, 0x84, ++ 0xef, 0x17, 0x79, 0xd8, 0x53, 0x73, 0x07, 0x10, 0xdb, 0xa1, 0x85, 0x45, 0x07, 0xeb, 0x32, 0x6f, ++ 0x1d, 0x2e, 0xf2, 0x73, 0xa6, 0xe6, 0x0e, 0x20, 0x75, 0x81, 0xc9, 0x8a, 0x0e, 0x15, 0x64, 0xde, ++ 0xc0, 0xb1, 0xa0, 0x29, 0x0a, 0x52, 0x9d, 0x2c, 0xbf, 0x89, 0xda, 0xc9, 0x9d, 0xcb, 0x90, 0x63, ++ 0xf6, 0x53, 0x8d, 0x99, 0xcd, 0xf1, 0x4d, 0x1e, 0x32, 0x14, 0xce, 0x46, 0x4d, 0x10, 0x51, 0x06, ++ 0x4b, 0x75, 0x8f, 0x36, 0x64, 0x6c, 0x71, 0x04, 0x46, 0xb9, 0xb0, 0x80, 0x71, 0x4a, 0xed, 0x6b, ++ 0xee, 0xec, 0x99, 0x35, 0x5d, 0x6a, 0x16, 0xfa, 0xfc, 0xac, 0x44, 0xf6, 0x16, 0x31, 0x43, 0x32, ++ 0xe9, 0x48, 0x7c, 0xf3, 0x77, 0x25, 0x61, 0x29, 0x09, 0x8f, 0x46, 0x69, 0x61, 0x72, 0xd7, 0x62, ++ 0xe2, 0x52, 0x93, 0x63, 0x15, 0xc6, 0xda, 0x88, 0x9b, 0xf0, 0x01, 0xae, 0xda, 0xc0, 0x4a, 0x28, ++ 0x16, 0x34, 0x1d, 0xe3, 0xc4, 0x05, 0xb5, 0x81, 0xe7, 0xfe, 0x8e, 0x4d, 0xb5, 0xa7, 0xf9, 0x94, ++ 0x53, 0xca, 0x9b, 0x9a, 0xf4, 0xf7, 0x2a, 0xe0, 0x88, 0x01, 0x3a, 0x30, 0x2a, 0x6b, 0xff, 0x5f, ++ 0xdd, 0x9f, 0x52, 0x5a, 0xac, 0xb4, 0x93, 0x0c, 0xca, 0x08, 0x13, 0x43, 0x93, 0xde, 0xf4, 0xbd, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0xfb, 0xe0, 0xed, 0x0e, 0x19, 0x11, 0xea, 0x27, 0x0d, 0xc1, 0xb3, 0x11, 0xda, 0x71, 0x5d, ++ 0x8b, 0xc4, 0x2f, 0x1f, 0x6e, 0x3e, 0xec, 0x28, 0xf9, 0x30, 0x6a, 0x49, 0xec, 0x81, 0x7d, 0x08, ++ 0xf3, 0xc2, 0x6b, 0x46, 0xfb, 0x8c, 0x18, 0xda, 0x89, 0x2d, 0x8d, 0x7c, 0x18, 0x24, 0x27, 0xec, ++ 0xde, 0x51, 0xb1, 0xae, 0xbe, 0x9f, 0xa0, 0xf1, 0xa3, 0x1f, 0x93, 0x55, 0xa0, 0x73, 0x67, 0x5a, ++ 0x57, 0xa0, 0x9d, 0xa8, 0xcc, 0x93, 0x6e, 0xce, 0x14, 0x35, 0xb8, 0xb9, 0x6e, 0x85, 0xf8, 0xe8, ++ 0x9e, 0x3e, 0xd1, 0x08, 0xb8, 0x10, 0x6a, 0x54, 0x77, 0xd9, 0x64, 0x12, 0x6a, 0x8b, 0x17, 0x7b, ++ 0x38, 0x69, 0x24, 0xff, 0x93, 0x3d, 0x3e, 0x57, 0xa4, 0xdb, 0x10, 0x72, 0x3e, 0x5d, 0x2a, 0xc5, ++ 0xbe, 0xe8, 0xe1, 0x5b, 0xbb, 0xb6, 0x0f, 0xe7, 0x1d, 0xba, 0xfe, 0xd0, 0x0f, 0xf7, 0x2f, 0x8a, ++ 0x8a, 0x3f, 0xcf, 0xf2, 0x60, 0x27, 0xfd, 0xc2, 0xde, 0x3d, 0xab, 0xfa, 0xfd, 0x5b, 0x0c, 0x55, ++ 0x4f, 0x1f, 0x89, 0x04, 0x5c, 0x08, 0x35, 0x2a, 0xda, 0x8d, 0x32, 0x09, 0x35, 0xa4, 0xea, 0xdc, ++ 0xa2, 0x3d, 0xf3, 0xc5, 0x13, 0x49, 0x10, 0x2d, 0x4f, 0x36, 0xf6, 0xe9, 0x10, 0x38, 0x3a, 0x09, ++ 0x61, 0x42, 0xb0, 0x18, 0x0b, 0x30, 0xbe, 0xfc, 0x99, 0xa8, 0xac, 0x36, 0xbe, 0x5e, 0x39, 0x8d, ++ 0x9c, 0x0b, 0xd2, 0x11, 0xa4, 0x22, 0x48, 0x43, 0x39, 0xc3, 0x25, 0xb7, 0x48, 0xfc, 0xf5, 0xc1, ++ 0x26, 0x89, 0x35, 0x78, 0x27, 0xf0, 0x03, 0x8a, 0xb8, 0x4d, 0x59, 0xee, 0x03, 0xe5, 0xdd, 0xfc, ++ 0x60, 0xb9, 0x50, 0xf5, 0x05, 0x29, 0xaf, 0x16, 0xbe, 0xa5, 0x6d, 0x85, 0xaf, 0x84, 0x48, 0xd0, ++ 0x78, 0x06, 0x44, 0x59, 0x95, 0xb2, 0xf4, 0xf2, 0x70, 0x1d, 0xe7, 0x35, 0xf4, 0xa5, 0x5a, 0xe4, ++ 0xd9, 0xf5, 0x54, 0x68, 0x94, 0xd0, 0xd7, 0x22, 0x56, 0x3c, 0x91, 0xca, 0xd7, 0x30, 0xf3, 0x0a, ++ 0x3c, 0x03, 0x22, 0xcd, 0xab, 0x59, 0x7a, 0x79, 0x38, 0xef, 0x92, 0xfb, 0x7a, 0xb3, 0x2d, 0x72, ++ 0xfb, 0x16, 0x67, 0x22, 0x8b, 0x44, 0x90, 0x86, 0x72, 0x45, 0x4a, 0xad, 0x90, 0x3b, 0x29, 0x41, ++ 0xc7, 0x15, 0x45, 0xef, 0x20, 0x1d, 0xea, 0xff, 0x4a, 0xaa, 0xd8, 0x56, 0xea, 0x88, 0x04, 0x33, ++ 0xfe, 0x87, 0x81, 0xfd, 0xbd, 0x39, 0xc5, 0x42, 0xc9, 0x7c, 0x09, 0x97, 0xc5, 0x0f, 0x5f, 0xab, ++ 0x36, 0xe2, 0x2d, 0xb0, 0xc7, 0xa3, 0xd0, 0x32, 0x8d, 0x9d, 0x14, 0x8f, 0xd0, 0xdb, 0xc1, 0x65, ++ 0xa0, 0x08, 0xf0, 0xdc, 0x0f, 0x7b, 0x32, 0x3a, 0x01, 0x2c, 0xb7, 0x4c, 0x32, 0x4f, 0xd8, 0xb3, ++ 0x50, 0x04, 0x78, 0x6e, 0xe6, 0xdc, 0x19, 0x1d, 0xe1, 0x16, 0xba, 0x26, 0x19, 0xc6, 0x6c, 0xb8, ++ 0xf5, 0x9d, 0x6e, 0x6d, 0xdf, 0xda, 0x7e, 0xe3, 0x5b, 0x03, 0x4e, 0x50, 0x7e, 0xbd, 0xc2, 0xe1, ++ 0xaa, 0xe9, 0xff, 0xa1, 0x63, 0x81, 0x98, 0x71, 0xb4, 0x5e, 0x31, 0x38, 0x98, 0x27, 0x34, 0xa4, ++ 0xd3, 0x14, 0x5b, 0x15, 0xf8, 0x2a, 0x7d, 0x69, 0xe3, 0x4e, 0x17, 0xbe, 0x7d, 0x58, 0x1f, 0x1d, ++ 0x41, 0x94, 0x80, 0x4b, 0x08, 0x96, 0xdb, 0x4f, 0xf3, 0xcb, 0x36, 0xf4, 0xdb, 0x22, 0x01, 0x7c, ++ 0x7f, 0xa2, 0xa1, 0x9f, 0xbf, 0xfd, 0x83, 0x21, 0x85, 0x3e, 0xe5, 0xaa, 0x83, 0xe6, 0xce, 0xb4, ++ 0xa5, 0x99, 0x16, 0x03, 0x39, 0x06, 0x67, 0xfe, 0xba, 0x15, 0xf4, 0x76, 0x67, 0x7b, 0xae, 0x59, ++ 0xb0, 0x63, 0xe8, 0x14, 0xef, 0x28, 0xe1, 0x82, 0x34, 0xfc, 0xfa, 0x2d, 0xe1, 0x71, 0xc4, 0x2a, ++ 0x48, 0xbb, 0x6c, 0xc2, 0x76, 0x47, 0x42, 0xf9, 0x2f, 0xae, 0x30, 0x96, 0x42, 0xe7, 0x7e, 0x8c, ++ 0x20, 0xd6, 0x30, 0x53, 0x03, 0xa6, 0x65, 0xb3, 0x6a, 0x63, 0x9a, 0xc2, 0x65, 0x7c, 0x38, 0xf1, ++ 0xf4, 0x66, 0x8e, 0x80, 0xd1, 0xc3, 0x6f, 0x09, 0x7c, 0x0e, 0x8f, 0xe3, 0x6f, 0x67, 0xb3, 0xbc, ++ 0x0b, 0x1a, 0xef, 0x90, 0x62, 0xe3, 0xbb, 0xa1, 0x92, 0x7f, 0x47, 0xc7, 0xbb, 0xb2, 0x9d, 0x4a, ++ 0xd8, 0x0e, 0xb4, 0x85, 0x9a, 0xc9, 0xc6, 0xc8, 0x71, 0x31, 0x50, 0x79, 0xc6, 0xea, 0x82, 0x57, ++ 0xb7, 0xc7, 0x0d, 0xd2, 0xc5, 0x67, 0x96, 0x51, 0xc1, 0xdf, 0xf8, 0xb2, 0x96, 0x32, 0x50, 0x7a, ++ 0xb1, 0x98, 0x08, 0xf9, 0xe1, 0x31, 0xf0, 0x68, 0x13, 0xf1, 0x3b, 0x9e, 0xf0, 0xab, 0xb5, 0x77, ++ 0xd5, 0x4b, 0x5e, 0x3e, 0xdc, 0x7c, 0x1b, 0x50, 0x31, 0x60, 0xd4, 0x92, 0x1b, 0xc1, 0xfa, 0x10, ++ 0x22, 0xe3, 0x33, 0x4a, 0x1f, 0x94, 0x47, 0xa4, 0x24, 0x79, 0xdb, 0x67, 0x47, 0x0b, 0xda, 0x4b, ++ 0x4c, 0xd1, 0x6a, 0xf0, 0x4e, 0x23, 0x06, 0xd7, 0xb3, 0x9a, 0xb2, 0x1f, 0x06, 0x09, 0x79, 0x3b, ++ 0x3f, 0xcd, 0xc1, 0x39, 0xb9, 0x72, 0x49, 0x84, 0x51, 0xf8, 0x12, 0xed, 0x49, 0x1e, 0xbe, 0x95, ++ 0x75, 0x43, 0xae, 0xe2, 0xd3, 0x07, 0x29, 0x6a, 0x30, 0x4c, 0x63, 0xde, 0x29, 0x8e, 0x22, 0xa3, ++ 0x19, 0x44, 0xf4, 0x41, 0x9e, 0x82, 0x4a, 0x0e, 0xe9, 0xb5, 0x4b, 0x03, 0x4a, 0xfb, 0x63, 0x69, ++ 0x74, 0xb8, 0x4e, 0x0f, 0xdd, 0x1e, 0x38, 0x80, 0x17, 0x41, 0xa2, 0x6d, 0x38, 0x54, 0x53, 0xfe, ++ 0x13, 0xa5, 0xfb, 0x3c, 0xf2, 0x78, 0xe0, 0x45, 0x5c, 0xc7, 0xcd, 0x77, 0xe0, 0x93, 0x8f, 0x7e, ++ 0xd7, 0x7e, 0x5d, 0x27, 0xc0, 0x4e, 0x39, 0x47, 0x7f, 0x7a, 0x95, 0x37, 0x39, 0xb6, 0x18, 0xaa, ++ 0x84, 0xb4, 0xc6, 0xbd, 0x34, 0xb9, 0x13, 0xa7, 0xf7, 0x7b, 0xaf, 0x07, 0x13, 0xdd, 0xe7, 0xf5, ++ 0x7b, 0xc8, 0xa7, 0xad, 0x87, 0x99, 0xc7, 0x0f, 0x19, 0x0a, 0x67, 0x23, 0xc7, 0x08, 0xc9, 0x03, ++ 0x42, 0x5a, 0x63, 0xbf, 0x1a, 0xbd, 0xe8, 0xb2, 0x9a, 0xdc, 0xb6, 0xe2, 0xe8, 0x8f, 0x92, 0x9b, ++ 0x11, 0x90, 0xf8, 0x25, 0xee, 0x4a, 0xc2, 0x52, 0x12, 0xdd, 0x8c, 0xd2, 0xc2, 0xe4, 0x6d, 0xc4, ++ 0xe0, 0x67, 0x90, 0x7a, 0x09, 0xf4, 0xf8, 0x9f, 0xd5, 0xea, 0x40, 0x0b, 0xf8, 0xb7, 0xa8, 0x92, ++ 0x71, 0x29, 0xa8, 0xd0, 0xeb, 0x63, 0x6d, 0x44, 0xac, 0x78, 0xe1, 0x57, 0x6d, 0x60, 0x25, 0x14, ++ 0x31, 0x46, 0xc8, 0x76, 0xed, 0xec, 0xa7, 0xe1, 0x78, 0xbe, 0x16, 0x10, 0xa7, 0x98, 0x55, 0x35, ++ 0x67, 0x1d, 0xb5, 0x33, 0x2f, 0x66, 0xd8, 0xc5, 0x4b, 0x86, 0x6f, 0x1a, 0xd8, 0xc7, 0xdc, 0x80, ++ 0xc8, 0x65, 0xac, 0x4d, 0x7a, 0x9a, 0x15, 0x70, 0x44, 0xe1, 0x1d, 0x18, 0x15, 0xd4, 0x9e, 0xce, ++ 0x4d, 0x2a, 0x8a, 0x1d, 0x40, 0x3a, 0x17, 0x3d, 0x94, 0x97, 0x73, 0xac, 0x17, 0xd3, 0x08, 0x66, ++ 0xfc, 0xb2, 0x82, 0xe4, 0xa1, 0x0b, 0xe7, 0x55, 0x87, 0x66, 0x48, 0x32, 0xe7, 0x78, 0xbd, 0x11, ++ 0xb3, 0xad, 0x0b, 0xe0, 0xfd, 0x03, 0xd2, 0x7f, 0x5d, 0xeb, 0x7a, 0x3b, 0xd2, 0xdc, 0x57, 0xcd, ++ 0x44, 0x05, 0x66, 0x94, 0x3e, 0xeb, 0x8e, 0x8b, 0x48, 0xf2, 0x75, 0xce, 0x8e, 0x16, 0x77, 0x96, ++ 0xc5, 0x20, 0x46, 0xf6, 0x3c, 0x2f, 0xc8, 0xe8, 0x04, 0xb0, 0x99, 0xf3, 0xc8, 0xff, 0xe6, 0x89, ++ 0x14, 0x01, 0x1e, 0xfa, 0xd8, 0x37, 0x97, 0x96, 0xa9, 0xe4, 0xcf, 0xe8, 0x97, 0xd0, 0x1b, 0x2e, ++ 0x2b, 0xcc, 0xdf, 0xc3, 0x61, 0x45, 0xde, 0x12, 0xf8, 0x1c, 0xdd, 0x05, 0xde, 0xce, 0xa5, 0xbb, ++ 0x12, 0x5e, 0x1b, 0xd1, 0xfc, 0x61, 0xf1, 0xaf, 0x7b, 0xca, 0x0c, 0xc4, 0xf1, 0x49, 0xfe, 0x23, ++ 0xb6, 0x3c, 0xed, 0x3f, 0xcb, 0x7e, 0x87, 0xbb, 0xe6, 0xd2, 0x39, 0x01, 0x87, 0xe8, 0x21, 0x27, ++ 0xbc, 0xdd, 0xe2, 0x42, 0xa7, 0x84, 0x2d, 0xf0, 0x53, 0xa0, 0xbf, 0x75, 0x2d, 0x80, 0xcd, 0x30, ++ 0x8d, 0x9b, 0x2a, 0x34, 0x4a, 0x68, 0x8a, 0x11, 0x2b, 0x1e, 0xa9, 0x65, 0x8a, 0x18, 0x98, 0x05, ++ 0x90, 0xb5, 0xd8, 0x47, 0xec, 0x8e, 0x84, 0x31, 0x5e, 0x9f, 0x60, 0xef, 0x84, 0x0d, 0xfc, 0xdb, ++ 0x77, 0x76, 0xad, 0xfb, 0xcf, 0x35, 0x0b, 0x7d, 0x7e, 0x56, 0x22, 0x7b, 0x0b, 0xf9, 0xc0, 0x19, ++ 0x94, 0xdf, 0xde, 0x75, 0xd4, 0xea, 0xc0, 0x1f, 0xc2, 0xab, 0xe2, 0x66, 0xc0, 0xe3, 0xfb, 0x6c, ++ 0xe7, 0xc3, 0x75, 0xbc, 0x23, 0xbb, 0x8f, 0x4c, 0x20, 0xc9, 0x42, 0x94, 0x8f, 0xf4, 0x3c, 0xc2, ++ 0x5b, 0x1e, 0x97, 0xfe, 0x84, 0x3f, 0xa2, 0xbc, 0x73, 0x69, 0xfd, 0xe1, 0xa2, 0x74, 0xf1, 0xf2, ++ 0x64, 0xd3, 0x56, 0xc7, 0x3d, 0x4d, 0xeb, 0x38, 0x22, 0x91, 0xef, 0x0c, 0xeb, 0x6a, 0x4f, 0x67, ++ 0x0a, 0xe1, 0x0f, 0x7d, 0x6c, 0xfa, 0xaa, 0x4b, 0xb5, 0x72, 0x86, 0x74, 0xaa, 0x68, 0xec, 0x17, ++ 0xab, 0x12, 0x1f, 0x4c, 0x6d, 0x98, 0x89, 0x9b, 0x93, 0x53, 0xf0, 0x8b, 0x89, 0xfd, 0x45, 0xf9, ++ 0x03, 0xce, 0xe3, 0xf4, 0x12, 0x2b, 0x33, 0xfd, 0x69, 0x17, 0x80, 0x16, 0x33, 0xad, 0x93, 0xe7, ++ 0x80, 0xde, 0xc0, 0x8f, 0x0c, 0xdd, 0x57, 0x89, 0x6b, 0x4f, 0x2d, 0x8e, 0x57, 0x33, 0xe0, 0x42, ++ 0x83, 0x10, 0x23, 0x7b, 0x1e, 0xf6, 0x64, 0x74, 0x02, 0x58, 0xad, 0x98, 0x64, 0x9e, 0x73, 0xa5, ++ 0xa6, 0x57, 0xf5, 0xf7, 0x2b, 0x2d, 0x54, 0x03, 0xd3, 0x02, 0x74, 0x60, 0x54, 0xd6, 0x3d, 0xbe, ++ 0x09, 0x2f, 0xec, 0x89, 0x7e, 0xd1, 0x99, 0xb6, 0xdc, 0x65, 0x06, 0x62, 0x99, 0xc5, 0x7f, 0xf0, ++ 0xac, 0xb6, 0xfa, 0x8a, 0x47, 0xd7, 0xfe, 0x48, 0x66, 0x70, 0xf2, 0x14, 0xfe, 0xbe, 0xd1, 0xa9, ++ 0x2c, 0x68, 0x3a, 0x05, 0x4b, 0x0a, 0xa9, 0xc1, 0x0d, 0x3f, 0xdf, 0x9a, 0xa9, 0x8d, 0x31, 0xeb, ++ 0x7e, 0x59, 0x41, 0x72, 0xb1, 0xe4, 0x92, 0xcb, 0xa2, 0x33, 0x24, 0x19, 0x92, 0x3c, 0xbf, 0xe9, ++ 0x2f, 0xa6, 0xd9, 0xf1, 0x59, 0x21, 0x9a, 0x3c, 0x64, 0x28, 0x5f, 0x8c, 0x9a, 0x20, 0xa2, 0x0c, ++ 0xb5, 0xf2, 0x0e, 0xcb, 0xd9, 0x55, 0xb4, 0x46, 0x8f, 0xc5, 0xb9, 0x17, 0xb4, 0x45, 0xb2, 0xc0, ++ 0x3b, 0xa7, 0xc7, 0x0b, 0x81, 0x16, 0x0d, 0xaa, 0xcd, 0xcc, 0x90, 0x64, 0x0d, 0xf0, 0xb9, 0x22, ++ 0xbd, 0x26, 0x02, 0xaf, 0xa9, 0x9d, 0x3c, 0x1a, 0x74, 0xad, 0x7e, 0xc6, 0x3c, 0x5a, 0xbc, 0x6d, ++ 0x04, 0x6a, 0x06, 0x32, 0x38, 0x64, 0x44, 0x2e, 0x9c, 0x34, 0x82, 0x89, 0x44, 0xee, 0x07, 0xb7, ++ 0xeb, 0x7d, 0x7f, 0xea, 0x6b, 0x17, 0x43, 0x3e, 0x47, 0x95, 0x07, 0xcc, 0x43, 0x05, 0x35, 0xd8, ++ 0xbb, 0x79, 0x07, 0x84, 0x8d, 0xcb, 0x5a, 0x23, 0xa6, 0x83, 0xbd, 0xea, 0x5a, 0xc3, 0x59, 0x60, ++ }, ++ { /* 13 */ ++ 0x79, 0x1a, 0x2d, 0x6d, 0xc9, 0x3b, 0x13, 0xe1, 0x79, 0x58, 0x80, 0x80, 0x75, 0x80, 0xb7, 0x36, ++ 0x91, 0x58, 0xcb, 0xc6, 0xfe, 0x1f, 0xb1, 0x50, 0x91, 0xd6, 0x1a, 0x1a, 0x1d, 0x1a, 0x89, 0x33, ++ 0x99, 0x09, 0xd2, 0xbc, 0x88, 0x79, 0x33, 0xc2, 0x99, 0xe9, 0xdc, 0xdc, 0x3b, 0xdc, 0x07, 0x9c, ++ 0xb9, 0x8e, 0xb6, 0x97, 0x93, 0x22, 0x7e, 0xcf, 0xb9, 0x15, 0x42, 0x42, 0xa3, 0x42, 0x7a, 0x65, ++ 0x71, 0x4b, 0x34, 0x17, 0xbf, 0x5d, 0x91, 0x73, 0x71, 0x67, 0x46, 0x46, 0x53, 0x46, 0x39, 0x99, ++ 0xea, 0xc7, 0x71, 0x54, 0xcb, 0xdc, 0x63, 0x74, 0xea, 0xf1, 0x4a, 0x4a, 0x80, 0x4a, 0xfc, 0x5e, ++ 0xd7, 0xd9, 0x79, 0x52, 0x0f, 0x62, 0xab, 0xc6, 0xd7, 0x6c, 0x56, 0x56, 0x15, 0x56, 0xf6, 0xef, ++ 0x95, 0x91, 0x26, 0xfb, 0xc5, 0x2c, 0xf0, 0x19, 0x95, 0x28, 0x79, 0x79, 0x0e, 0x79, 0xce, 0x85, ++ 0x55, 0x05, 0xbd, 0x01, 0x9f, 0x35, 0x9d, 0x37, 0x55, 0x65, 0xbb, 0xbb, 0xd8, 0xbb, 0x03, 0xd6, ++ 0xda, 0xe2, 0x27, 0x8b, 0x3c, 0x4b, 0xe9, 0x9e, 0xda, 0x73, 0x9b, 0x9b, 0x54, 0x9b, 0x5e, 0x3a, ++ 0xdb, 0x41, 0x8d, 0x15, 0x42, 0x37, 0x68, 0x1d, 0xdb, 0xad, 0xf3, 0xf3, 0x20, 0xf3, 0x3f, 0xf6, ++ 0xb5, 0x16, 0x42, 0xd0, 0xde, 0x77, 0xbd, 0x14, 0xb5, 0xd4, 0xe7, 0xe7, 0x96, 0xe7, 0xb3, 0x7c, ++ 0x3f, 0x9b, 0x9f, 0xf9, 0x38, 0x46, 0x09, 0x77, 0x3f, 0xe2, 0xcc, 0xcc, 0x7d, 0xcc, 0xc8, 0xea, ++ 0x54, 0xa6, 0x17, 0x9f, 0xe1, 0x49, 0x1c, 0xb4, 0x54, 0xbb, 0xd3, 0xd3, 0xac, 0xd3, 0x62, 0x1a, ++ 0x7d, 0xd3, 0xc0, 0x50, 0xf2, 0x08, 0x52, 0xa8, 0x7d, 0xa6, 0xe3, 0xe3, 0x66, 0xe3, 0xf0, 0x80, ++ 0xd5, 0x5c, 0xee, 0xad, 0xf3, 0x9a, 0x6a, 0x03, 0xd5, 0x13, 0x86, 0x86, 0xfd, 0x86, 0x34, 0xb4, ++ 0xbd, 0x47, 0x5b, 0xaa, 0xa8, 0x11, 0x3f, 0x86, 0xbd, 0xeb, 0x21, 0x21, 0xb0, 0x21, 0x3d, 0xd3, ++ 0xa9, 0x2c, 0x84, 0x63, 0x7f, 0xee, 0xb9, 0x28, 0xa9, 0x6b, 0x0d, 0x0d, 0xef, 0x0d, 0xa5, 0xf8, ++ 0xfe, 0xac, 0xae, 0x9d, 0x1c, 0x23, 0xe5, 0xda, 0xfe, 0x71, 0x66, 0x66, 0xdf, 0x66, 0x64, 0x75, ++ 0x3b, 0x52, 0x72, 0xc4, 0x03, 0x75, 0x48, 0x3e, 0x3b, 0x1c, 0xaf, 0xaf, 0x6e, 0xaf, 0x8f, 0x5c, ++ 0x1d, 0x99, 0x6c, 0x2d, 0xdf, 0xe5, 0x85, 0xbf, 0x1d, 0x61, 0x82, 0x82, 0x0d, 0x82, 0x77, 0x48, ++ 0x36, 0x69, 0x2c, 0x1d, 0x30, 0x5c, 0x0a, 0x66, 0x36, 0x03, 0x62, 0x62, 0x2f, 0x62, 0x27, 0x89, ++ 0x38, 0x74, 0x4f, 0xa5, 0x81, 0xf1, 0x08, 0x78, 0x38, 0xbd, 0x17, 0x17, 0xf2, 0x17, 0x2c, 0xcb, ++ 0x07, 0xef, 0xd0, 0x5c, 0xb9, 0xb7, 0x01, 0x0f, 0x07, 0x5f, 0xdb, 0xdb, 0x8f, 0xdb, 0xe4, 0x21, ++ 0x1b, 0xd5, 0x16, 0xef, 0x18, 0x2e, 0x05, 0x33, 0x1b, 0xe0, 0x31, 0x31, 0xf6, 0x31, 0xf2, 0xa5, ++ 0xfb, 0xc6, 0xe9, 0x3e, 0x59, 0x6c, 0x25, 0x10, 0xfb, 0x51, 0x6d, 0x6d, 0xb8, 0x6d, 0x42, 0x0f, ++ 0x70, 0xe8, 0x9e, 0x89, 0xc1, 0x21, 0x10, 0xf0, 0x70, 0xb9, 0x2e, 0x2e, 0x27, 0x2e, 0x58, 0x55, ++ 0x89, 0xab, 0xe0, 0x48, 0x64, 0xb5, 0xf4, 0x25, 0x89, 0x97, 0x93, 0x93, 0x77, 0x93, 0xd8, 0x01, ++ 0x4a, 0x19, 0x46, 0xd3, 0xbc, 0x28, 0xd9, 0x4d, 0x4a, 0x7b, 0xe9, 0xe9, 0x3d, 0xe9, 0xb6, 0xc5, ++ 0xae, 0xc3, 0x54, 0x3f, 0xc6, 0x59, 0xb8, 0x27, 0xae, 0x34, 0xd6, 0xd6, 0x60, 0xd6, 0x41, 0xd9, ++ 0x3d, 0x1e, 0x08, 0x06, 0xc4, 0xbe, 0xc8, 0xb2, 0x3d, 0x9d, 0x1c, 0x1c, 0x95, 0x1c, 0x0a, 0xb1, ++ 0x29, 0x75, 0xd7, 0xcf, 0x13, 0x41, 0x4e, 0x1c, 0x29, 0x1d, 0x30, 0x30, 0xca, 0x30, 0x92, 0x9a, ++ 0x8a, 0x8d, 0xdd, 0x29, 0xe6, 0x31, 0xb4, 0x63, 0x8a, 0x36, 0x2b, 0x2b, 0xeb, 0x2b, 0x7b, 0x96, ++ 0xcd, 0xaf, 0xc5, 0x23, 0x69, 0x30, 0x2f, 0x76, 0xcd, 0x52, 0x0f, 0x0f, 0x97, 0x0f, 0x65, 0x86, ++ 0x41, 0x6e, 0x62, 0xc8, 0x48, 0xca, 0x1b, 0x99, 0x41, 0xe5, 0x97, 0x97, 0x87, 0x97, 0x9b, 0xfd, ++ 0xce, 0x89, 0xf8, 0x42, 0xeb, 0xb4, 0x6f, 0x30, 0xce, 0xf3, 0xb7, 0xb7, 0x0b, 0xb7, 0xc6, 0x11, ++ 0x16, 0xee, 0x48, 0x36, 0x2b, 0x07, 0x47, 0x6b, 0x16, 0xff, 0xfc, 0xfc, 0xb7, 0xfc, 0x5a, 0x70, ++ 0x6c, 0xd2, 0x58, 0x3a, 0x60, 0xb8, 0x14, 0xcc, 0x6c, 0x06, 0xc4, 0xc4, 0x5e, 0xc4, 0x4e, 0xd1, ++ 0x1f, 0x1c, 0xfb, 0xd2, 0x23, 0x1d, 0x44, 0x7a, 0x1f, 0x1e, 0x52, 0x52, 0xe5, 0x52, 0xb5, 0x13, ++ 0xe0, 0x13, 0xff, 0xd1, 0x41, 0x42, 0x20, 0x23, 0xe0, 0xb1, 0x5c, 0x5c, 0x4e, 0x5c, 0xb0, 0xaa, ++ 0xf5, 0xdb, 0x8a, 0x86, 0xe8, 0xc1, 0x27, 0x0e, 0xf5, 0xef, 0x18, 0x18, 0x65, 0x18, 0x49, 0x4d, ++ 0xb0, 0x7c, 0x05, 0x73, 0x9b, 0x38, 0x7d, 0xde, 0xb0, 0xf4, 0xec, 0xec, 0xf1, 0xec, 0x95, 0x06, ++ 0xde, 0x2b, 0xca, 0xb6, 0x07, 0x78, 0xa8, 0xd7, 0xde, 0x8d, 0xf8, 0xf8, 0x47, 0xf8, 0x19, 0x8c, ++ 0x03, 0x26, 0x3d, 0x61, 0x82, 0x84, 0x40, 0x46, 0x03, 0xa1, 0xb8, 0xb8, 0x9c, 0xb8, 0xa3, 0x97, ++ 0xd0, 0x36, 0xa9, 0x0e, 0xb6, 0xd5, 0xaa, 0xc9, 0xd0, 0x33, 0x8d, 0x8d, 0x9a, 0x8d, 0x12, 0xce, ++ 0x8e, 0x44, 0x30, 0x14, 0xdd, 0x02, 0xf5, 0x2a, 0x8e, 0xc8, 0x48, 0x48, 0xf8, 0x48, 0x3c, 0x20, ++ 0x23, 0xa1, 0x59, 0x4a, 0x99, 0xdf, 0x0d, 0x4b, 0x23, 0x5d, 0x26, 0x26, 0x04, 0x26, 0xde, 0x6e, ++ 0x0a, 0xd4, 0x8e, 0x85, 0x8a, 0x9e, 0x43, 0x57, 0x0a, 0x40, 0x16, 0x16, 0xce, 0x16, 0x4c, 0xf4, ++ 0xf3, 0x97, 0xf0, 0x44, 0x2f, 0x0a, 0xa7, 0x82, 0xf3, 0x6e, 0xab, 0xab, 0x9e, 0xab, 0xcc, 0xa0, ++ 0x06, 0x4c, 0x7a, 0xc2, 0xc7, 0xcb, 0x80, 0x8c, 0x06, 0x81, 0xb3, 0xb3, 0xfb, 0xb3, 0x85, 0xed, ++ 0xdf, 0x88, 0x60, 0x28, 0x79, 0x04, 0x29, 0x54, 0xdf, 0x53, 0x90, 0x90, 0x33, 0x90, 0x78, 0x40, ++ 0x4d, 0xf6, 0x96, 0x8f, 0x05, 0x9f, 0xd8, 0x42, 0x4d, 0x24, 0x32, 0x32, 0xb2, 0x32, 0x52, 0xe4, ++ 0x98, 0xaa, 0x78, 0x22, 0xf6, 0x05, 0xb2, 0x41, 0x98, 0x37, 0xb4, 0xb4, 0x4f, 0xb4, 0x66, 0x50, ++ 0x97, 0x14, 0xb1, 0x04, 0x39, 0xd4, 0x31, 0xdc, 0x97, 0x57, 0xa9, 0xa9, 0xe6, 0xa9, 0x0c, 0xde, ++ 0xad, 0xe5, 0x69, 0x5e, 0x44, 0xdd, 0xf8, 0x61, 0xad, 0x95, 0x6e, 0x6e, 0xfc, 0x6e, 0xe2, 0x4e, ++ 0x15, 0xc8, 0x75, 0x57, 0xa9, 0x83, 0x07, 0x2d, 0x15, 0x5e, 0x44, 0x44, 0x2b, 0x44, 0xf9, 0xe7, ++ 0xa2, 0x5b, 0xa0, 0x78, 0x8b, 0x0c, 0x7b, 0xfc, 0xa2, 0xf5, 0x73, 0x73, 0x55, 0x73, 0x88, 0xc0, ++ 0xab, 0xa9, 0x13, 0x9c, 0x83, 0x16, 0x78, 0xed, 0xab, 0x14, 0xdd, 0xdd, 0x07, 0xdd, 0x67, 0xa3, ++ 0xc0, 0x94, 0x9b, 0xfa, 0x5a, 0x19, 0x6d, 0x2e, 0xc0, 0x4d, 0xc2, 0xc2, 0xd6, 0xc2, 0xcd, 0x53, ++ 0xb6, 0x30, 0x7f, 0xb1, 0x5c, 0xf3, 0xfd, 0x52, 0xb6, 0x75, 0x5f, 0x5f, 0x0a, 0x5f, 0x10, 0xeb, ++ 0x53, 0x49, 0xc7, 0xc3, 0x58, 0xfe, 0x1d, 0xbb, 0x53, 0xe4, 0x08, 0x08, 0x23, 0x08, 0x86, 0x3b, ++ 0xed, 0x28, 0xa1, 0x08, 0x72, 0x6b, 0x62, 0x7b, 0xed, 0xae, 0x91, 0x91, 0x0f, 0x91, 0x18, 0x7f, ++ 0xc1, 0x37, 0x31, 0x64, 0x24, 0x65, 0xec, 0xad, 0xc1, 0x93, 0xaa, 0xaa, 0xa2, 0xaa, 0xac, 0x9f, ++ 0xe1, 0xb0, 0x55, 0x4f, 0x3f, 0x3e, 0xa1, 0xa0, 0xe1, 0x6f, 0x34, 0x34, 0x3a, 0x34, 0xd1, 0x66, ++ 0x62, 0xcf, 0x3b, 0x82, 0xd1, 0x15, 0x16, 0xd2, 0x62, 0xb8, 0xb1, 0xb1, 0x83, 0xb1, 0x45, 0x93, ++ 0x24, 0x4e, 0x89, 0x16, 0x20, 0x68, 0x0c, 0x44, 0x24, 0x02, 0xfd, 0xfd, 0x8b, 0xfd, 0x3a, 0x4f, ++ 0xe9, 0xe1, 0x4c, 0x35, 0x49, 0x58, 0x23, 0x32, 0xe9, 0x50, 0xf2, 0xf2, 0x1c, 0xf2, 0x5f, 0xc9, ++ 0x65, 0x20, 0xeb, 0xde, 0x68, 0xa2, 0x17, 0xdd, 0x65, 0xe7, 0x6a, 0x6a, 0x0c, 0x6a, 0xa1, 0xb2, ++ 0xec, 0x8b, 0x0b, 0x96, 0x0c, 0x17, 0xe3, 0xf8, 0xec, 0x70, 0xf9, 0xf9, 0x7b, 0xf9, 0x79, 0xb3, ++ 0x5d, 0x54, 0xa4, 0x7b, 0xe9, 0x53, 0x1f, 0xa5, 0x5d, 0x5a, 0x7d, 0x7d, 0xfe, 0x7d, 0x8d, 0x79, ++ 0x26, 0xcb, 0x1e, 0xe9, 0xdc, 0x90, 0xcd, 0x81, 0x26, 0x7d, 0x2d, 0x2d, 0x63, 0x2d, 0xf8, 0x14, ++ 0xbe, 0x61, 0x66, 0xcb, 0x2a, 0x95, 0x7f, 0xc0, 0xbe, 0x4a, 0x99, 0x99, 0x2c, 0x99, 0x9e, 0x44, ++ 0x21, 0x24, 0xce, 0xb5, 0x65, 0x27, 0xcc, 0x8e, 0x21, 0x22, 0xf6, 0xf6, 0xec, 0xf6, 0x1c, 0x35, ++ 0x4b, 0xba, 0xec, 0x4d, 0xc2, 0x54, 0x58, 0xce, 0x4b, 0xa5, 0x81, 0x81, 0x49, 0x81, 0xd7, 0x09, ++ 0x48, 0x9c, 0xd1, 0x2c, 0x40, 0xd0, 0x18, 0x88, 0x48, 0x04, 0x39, 0x39, 0xd5, 0x39, 0x74, 0x9e, ++ 0xca, 0x40, 0x15, 0x7f, 0xd0, 0x87, 0x2e, 0x79, 0xca, 0x0d, 0xd4, 0xd4, 0x18, 0xd4, 0x81, 0xa7, ++ 0xf7, 0x5e, 0x1d, 0x79, 0x14, 0x39, 0xe6, 0xcb, 0xf7, 0x90, 0xc8, 0xc8, 0x8d, 0xc8, 0x8b, 0x16, ++ 0x7c, 0x70, 0x6a, 0xce, 0x8c, 0x74, 0xd3, 0x2b, 0x7c, 0x78, 0x8b, 0x8b, 0x12, 0x8b, 0x91, 0x4c, ++ 0xff, 0x0f, 0x04, 0x03, 0x62, 0x5f, 0x64, 0x59, 0xff, 0xaf, 0x0e, 0x0e, 0xab, 0x0e, 0x05, 0xb9, ++ 0x20, 0x87, 0x64, 0x2b, 0x1b, 0x5b, 0x4d, 0x0d, 0x20, 0xfc, 0x9e, 0x9e, 0x98, 0x9e, 0x7d, 0xf9, ++ 0xd1, 0x95, 0x03, 0x90, 0xc8, 0xa9, 0x2b, 0x4a, 0xd1, 0xed, 0xe5, 0xe5, 0xee, 0xe5, 0x73, 0x02, ++ 0x85, 0x33, 0x14, 0x0f, 0x29, 0xe0, 0x37, 0xfe, 0x85, 0x56, 0x36, 0x36, 0x42, 0x36, 0x11, 0x18, ++ 0x58, 0x3e, 0xe3, 0xd8, 0xac, 0x1c, 0xdf, 0x6f, 0x58, 0x7a, 0x76, 0x76, 0x99, 0x76, 0xab, 0x03, ++ 0x49, 0x3f, 0x7b, 0xb2, 0x3e, 0xac, 0x99, 0x0b, 0x49, 0xda, 0x51, 0x51, 0xa1, 0x51, 0x15, 0x52, ++ 0xfa, 0x65, 0x43, 0xa0, 0x27, 0x10, 0xa4, 0x93, 0xfa, 0x8f, 0x05, 0x05, 0xcc, 0x05, 0x23, 0xc3, ++ 0x87, 0xb6, 0x83, 0xf0, 0xd5, 0x18, 0xf6, 0x3b, 0x87, 0x29, 0xe6, 0xe6, 0xaa, 0xe6, 0xd3, 0x43, ++ 0x27, 0x68, 0xb4, 0x77, 0xa2, 0xec, 0x4c, 0x02, 0x27, 0xa3, 0x45, 0x45, 0x17, 0x45, 0x99, 0xd8, ++ 0xe8, 0x42, 0xe6, 0xab, 0x37, 0x24, 0xa2, 0xb1, 0xe8, 0x8e, 0x9a, 0x9a, 0x68, 0x9a, 0x3e, 0x05, ++ 0xf4, 0x78, 0x20, 0x18, 0x96, 0xbd, 0xa6, 0x8d, 0xf4, 0x31, 0x70, 0x70, 0x11, 0x70, 0x28, 0x81, ++ 0x5a, 0xbb, 0x74, 0x27, 0x50, 0xe4, 0x1e, 0xaa, 0x5a, 0x05, 0xa6, 0xa6, 0x71, 0xa6, 0x69, 0x58, ++ 0x66, 0x06, 0xd6, 0xbf, 0xea, 0x26, 0x57, 0x9b, 0x66, 0x46, 0xd2, 0xd2, 0x90, 0xd2, 0x02, 0x25, ++ 0xf0, 0xb1, 0xcd, 0x25, 0xad, 0x8e, 0xe7, 0xc4, 0xf0, 0xcf, 0x13, 0x13, 0x02, 0x13, 0x6f, 0x37, ++ 0xcb, 0xe3, 0xbf, 0xe1, 0xae, 0xfb, 0xaf, 0xfa, 0xcb, 0xd3, 0xbc, 0xbc, 0x6c, 0xbc, 0xe0, 0x6b, ++ 0x0e, 0x1d, 0x63, 0xb8, 0xb1, 0xad, 0x02, 0x1e, 0x0e, 0xbe, 0x75, 0x75, 0xdd, 0x75, 0x0b, 0x42, ++ 0xe2, 0x96, 0x68, 0x2e, 0xbd, 0xba, 0xe1, 0xe6, 0xe2, 0xce, 0x8c, 0x8c, 0xa6, 0x8c, 0x72, 0xf1, ++ 0x57, 0x80, 0x2a, 0xfe, 0x63, 0xcd, 0x5c, 0xf2, 0x57, 0x1a, 0x6b, 0x6b, 0x30, 0x6b, 0xc1, 0x8d, ++ 0xc4, 0x5d, 0x76, 0xc7, 0x61, 0x2a, 0x2c, 0x67, 0xc4, 0xb3, 0xa1, 0xa1, 0xc5, 0xa1, 0x8a, 0xe5, ++ 0x9b, 0x8c, 0x45, 0x43, 0x74, 0x81, 0xf2, 0x07, 0x9b, 0x96, 0x0c, 0x0c, 0xd3, 0x0c, 0xc5, 0xc7, ++ 0xee, 0x0e, 0x9c, 0x69, 0xf0, 0xef, 0x22, 0x3d, 0xee, 0x0f, 0x29, 0x29, 0x93, 0x29, 0xbb, 0xe8, ++ 0x1a, 0x76, 0xbc, 0x71, 0x66, 0x52, 0x84, 0xb0, 0x1a, 0x3e, 0x59, 0x59, 0x82, 0x59, 0x93, 0x69, ++ 0x37, 0xca, 0x86, 0x83, 0x4e, 0x20, 0x8b, 0xe5, 0x37, 0xdd, 0x0a, 0x0a, 0x5b, 0x0a, 0x46, 0x45, ++ 0x2e, 0x9a, 0x07, 0x93, 0xaa, 0xf6, 0x4f, 0x13, 0x2e, 0x42, 0xeb, 0xeb, 0x45, 0xeb, 0x76, 0xbb, ++ 0x69, 0xb8, 0x1f, 0x99, 0x25, 0xf7, 0xd4, 0x06, 0x69, 0x26, 0xcf, 0xcf, 0x39, 0xcf, 0x68, 0xab, ++ 0x8b, 0x2e, 0x77, 0xb7, 0x98, 0x4d, 0x35, 0xe0, 0x8b, 0xe8, 0x43, 0x43, 0x9f, 0x43, 0x1a, 0x5a, ++ 0xaf, 0x60, 0xfe, 0xa1, 0xb8, 0x25, 0x39, 0xa4, 0xaf, 0xea, 0xbe, 0xbe, 0x14, 0xbe, 0x20, 0x15, ++ 0xc2, 0x11, 0x0c, 0x05, 0xa6, 0xe1, 0xac, 0xeb, 0xc2, 0x32, 0x12, 0x12, 0x3e, 0x12, 0x0f, 0x08, ++ 0x7f, 0x56, 0x57, 0xaf, 0x0e, 0xf0, 0x93, 0x6d, 0x7f, 0xd9, 0x33, 0x33, 0x8e, 0x33, 0x32, 0xdb, ++ 0x64, 0x83, 0x41, 0x40, 0x16, 0xde, 0x96, 0x5e, 0x64, 0x39, 0x02, 0x02, 0x78, 0x02, 0xc0, 0x7e, ++ 0x45, 0xa7, 0x8f, 0xf5, 0x73, 0xf9, 0x5a, 0xd0, 0x45, 0x1b, 0xf4, 0xf4, 0x94, 0xf4, 0xdc, 0x4b, ++ 0x14, 0x6b, 0xdf, 0xc9, 0xd7, 0xff, 0x86, 0xae, 0x14, 0x80, 0x2c, 0x2c, 0x5f, 0x2c, 0x98, 0x2b, ++ 0xfd, 0x8a, 0x93, 0xfc, 0x9e, 0xa7, 0xa5, 0x9c, 0xfd, 0xd0, 0xde, 0xde, 0x43, 0xde, 0xc7, 0xe2, ++ 0xac, 0x46, 0xc3, 0xc0, 0x3a, 0xa1, 0x79, 0xe2, 0xac, 0x4b, 0x06, 0x06, 0x88, 0x06, 0x83, 0x82, ++ 0x86, 0x15, 0x29, 0x6e, 0xab, 0x64, 0x77, 0xb8, 0x86, 0xf7, 0x8e, 0x8e, 0xde, 0x8e, 0xb2, 0x8f, ++ 0x76, 0xa4, 0xe4, 0x4b, 0x06, 0xea, 0x90, 0x7c, 0x76, 0x38, 0x9d, 0x9d, 0xdc, 0x9d, 0xdd, 0xb8, ++ 0x43, 0xeb, 0xf5, 0x37, 0xb4, 0x32, 0xda, 0x5c, 0x43, 0x9a, 0x47, 0x47, 0x6f, 0x47, 0x59, 0xa6, ++ 0x50, 0x6f, 0xfa, 0xa2, 0xda, 0x7a, 0x5d, 0xfd, 0x50, 0x45, 0xb0, 0xb0, 0xbf, 0xb0, 0x25, 0xac, ++ 0x28, 0xd6, 0x7d, 0x51, 0x6d, 0x3d, 0xcf, 0x9f, 0x28, 0xc3, 0x58, 0x58, 0xbe, 0x58, 0xf3, 0x56, ++ 0xaa, 0x0a, 0xb9, 0x02, 0xfd, 0x6a, 0xf9, 0x6e, 0xaa, 0xca, 0xb5, 0xb5, 0x73, 0xb5, 0x06, 0x6f, ++ 0x5e, 0x72, 0x99, 0x1a, 0x6b, 0xd7, 0x5f, 0xe3, 0x5e, 0xfb, 0xc5, 0xc5, 0x62, 0xc5, 0x2e, 0xee, ++ 0xdd, 0x0d, 0xf7, 0xd7, 0x85, 0xfc, 0xe8, 0x91, 0xdd, 0x2c, 0x40, 0x40, 0xdb, 0x40, 0xba, 0x1b, ++ 0xbb, 0x0b, 0x21, 0x68, 0x6f, 0xda, 0xbf, 0x0a, 0xbb, 0x6a, 0x92, 0x92, 0x4b, 0x92, 0xb8, 0x3e, ++ 0x96, 0xb7, 0x1b, 0x9a, 0x47, 0xa8, 0xb0, 0x5f, 0x96, 0x89, 0xc1, 0xc1, 0x92, 0xc1, 0x6d, 0x12, ++ 0x05, 0x6a, 0x47, 0xa3, 0x45, 0x4f, 0xc0, 0xca, 0x05, 0x20, 0x0b, 0x0b, 0x67, 0x0b, 0x26, 0x7a, ++ 0x7b, 0x9f, 0xba, 0x92, 0x35, 0xc3, 0xd2, 0x24, 0x7b, 0x27, 0x50, 0x50, 0x9d, 0x50, 0x75, 0x6d, ++ 0xf6, 0xfd, 0xb7, 0xe7, 0x6a, 0x45, 0x67, 0x48, 0xf6, 0x4e, 0xa0, 0xa0, 0xf9, 0xa0, 0xea, 0xda, ++ 0x2b, 0xf0, 0x40, 0x30, 0xef, 0xb9, 0x8f, 0xd9, 0x2b, 0x62, 0xe0, 0xe0, 0x22, 0xe0, 0x50, 0xc1, ++ 0x09, 0xf2, 0xb3, 0xe4, 0x08, 0x1a, 0x03, 0x11, 0x09, 0xe1, 0xae, 0xae, 0x52, 0xae, 0xef, 0x63, ++ 0xc7, 0x7b, 0x4b, 0xa6, 0xe3, 0xae, 0x6c, 0x21, 0xc7, 0x12, 0x19, 0x19, 0x59, 0x19, 0x29, 0x72, ++ 0x46, 0x81, 0xb2, 0x94, 0xf1, 0x7d, 0x1a, 0x96, 0x46, 0xba, 0x4c, 0x4c, 0x08, 0x4c, 0x7f, 0xdc, ++ 0x0d, 0x3b, 0x5e, 0xd9, 0x33, 0x29, 0x42, 0x58, 0x0d, 0x1f, 0xcd, 0xcd, 0x41, 0xcd, 0xa8, 0xd5, ++ 0x13, 0x84, 0x0f, 0x95, 0x6e, 0x48, 0x87, 0xa1, 0x13, 0xdf, 0xf7, 0xf7, 0xd0, 0xf7, 0x7c, 0x0a, ++ 0x61, 0xe9, 0x06, 0xe3, 0x53, 0x91, 0x56, 0x94, 0x61, 0x19, 0x09, 0x09, 0x1f, 0x09, 0xe6, 0x04, ++ 0x01, 0xa3, 0xaa, 0x9e, 0x7e, 0x7c, 0x81, 0x83, 0x01, 0xde, 0x68, 0x68, 0x74, 0x68, 0x61, 0xcc, ++ 0xef, 0xad, 0x36, 0xf7, 0x8e, 0x93, 0xa3, 0xbe, 0xef, 0xd1, 0x41, 0x41, 0xe7, 0x41, 0xda, 0x24, ++ 0x8d, 0x62, 0x0d, 0x75, 0x5f, 0x86, 0xb5, 0x6c, 0x8d, 0x69, 0xf0, 0xf0, 0x64, 0xf0, 0x9f, 0xb7, ++ 0xd3, 0x10, 0x94, 0x6f, 0x34, 0x51, 0xea, 0x8f, 0xd3, 0x92, 0x35, 0x35, 0x06, 0x35, 0xb1, 0x59, ++ 0xbc, 0xe4, 0xf1, 0x34, 0xd6, 0x6d, 0xbe, 0x05, 0xbc, 0x35, 0x49, 0x49, 0xc4, 0x49, 0x5c, 0x1f, ++ 0xf1, 0x12, 0x67, 0xbb, 0xd3, 0xf2, 0x66, 0x47, 0xf1, 0x11, 0x7b, 0x7b, 0x76, 0x7b, 0x0e, 0xfb, ++ 0x32, 0xa0, 0xc1, 0x20, 0x0b, 0x6f, 0x4b, 0x2f, 0x32, 0xfd, 0x01, 0x01, 0x3c, 0x01, 0x60, 0x3f, ++ 0x5c, 0xf7, 0x0e, 0xe5, 0x97, 0x2f, 0x9e, 0x26, 0x5c, 0x84, 0x15, 0x15, 0x8a, 0x15, 0xec, 0xb5, ++ 0x02, 0x85, 0x97, 0xff, 0xfc, 0xf8, 0xc1, 0xc5, 0x02, 0x7f, 0xd0, 0xd0, 0xe8, 0xd0, 0xc2, 0x5b, ++ 0xb1, 0xdf, 0xaf, 0xed, 0xe5, 0x44, 0xfc, 0x5d, 0xb1, 0x2a, 0x84, 0x84, 0x85, 0x84, 0xf4, 0xca, ++ 0x56, 0x23, 0x80, 0x60, 0x1d, 0xb1, 0xdd, 0x71, 0x56, 0xc4, 0x03, 0x03, 0x44, 0x03, 0xa0, 0x41, ++ 0x51, 0xcc, 0x50, 0x3c, 0xa4, 0x06, 0xdc, 0x7e, 0x51, 0x9b, 0xd8, 0xd8, 0xcb, 0xd8, 0x44, 0x60, ++ 0xc9, 0x66, 0x28, 0x1e, 0x52, 0x03, 0x6e, 0x3f, 0xc9, 0xac, 0x6c, 0x6c, 0x84, 0x6c, 0x22, 0x30, ++ 0xd6, 0x7a, 0xd3, 0xcc, 0x71, 0x1e, 0x2a, 0x45, 0xd6, 0xb2, 0x3e, 0x3e, 0x61, 0x3e, 0x97, 0x23, ++ 0x4e, 0xd0, 0xab, 0xee, 0x87, 0x1b, 0x98, 0x04, 0x4e, 0x85, 0x8a, 0x8a, 0x2e, 0x8a, 0xf1, 0x73, ++ 0xc8, 0xc5, 0x82, 0x80, 0x2c, 0x7f, 0xef, 0xbc, 0xc8, 0x72, 0x04, 0x04, 0xf0, 0x04, 0x43, 0xfc, ++ 0xa0, 0xde, 0x37, 0x87, 0x77, 0xf4, 0xba, 0x39, 0xa0, 0x8a, 0xa3, 0xa3, 0xbd, 0xa3, 0x4a, 0x9b, ++ 0x31, 0x86, 0xfc, 0x41, 0x89, 0xeb, 0x0b, 0x69, 0x31, 0x5c, 0xb9, 0xb9, 0xa0, 0xb9, 0xc3, 0xa8, ++ 0x22, 0x02, 0xf3, 0xd4, 0xe7, 0xa3, 0x8c, 0xc8, 0x22, 0x83, 0x4e, 0x4e, 0x70, 0x4e, 0xbf, 0xa2, ++ 0xa5, 0xb4, 0x70, 0x24, 0x32, 0xbb, 0x7a, 0xf3, 0xa5, 0xaa, 0xa8, 0xa8, 0xda, 0xa8, 0x6c, 0xe1, ++ 0x17, 0x4d, 0xe2, 0xa8, 0x55, 0x7b, 0xc6, 0xe8, 0x17, 0x21, 0x94, 0x94, 0xc3, 0x94, 0x3b, 0xbc, ++ 0x33, 0x03, 0x6b, 0xbe, 0x75, 0x13, 0xca, 0xac, 0x33, 0x23, 0x69, 0x69, 0x48, 0x69, 0x01, 0xf3, ++ 0x94, 0x32, 0x8c, 0x65, 0xbb, 0x50, 0x71, 0x9a, 0x94, 0xf6, 0x11, 0x11, 0x7a, 0x11, 0xaf, 0x49, ++ 0xeb, 0x64, 0xdb, 0xca, 0xb5, 0xa0, 0xe2, 0xf7, 0xeb, 0x2f, 0x22, 0x22, 0xf4, 0x22, 0x9d, 0x92, ++ 0x84, 0x90, 0xbe, 0x91, 0x57, 0x9c, 0xb6, 0x7d, 0x84, 0x88, 0x5e, 0x5e, 0x36, 0x5e, 0x70, 0xd4, ++ 0x08, 0x51, 0x19, 0x7a, 0x76, 0x66, 0x82, 0x92, 0x08, 0x3f, 0xc6, 0xc6, 0x26, 0xc6, 0x8e, 0xaf, ++ 0x25, 0xed, 0x23, 0x88, 0x5e, 0x14, 0x8d, 0xc7, 0x25, 0xdc, 0x95, 0x95, 0xff, 0x95, 0x5b, 0x83, ++ 0xf9, 0x43, 0x7e, 0xc1, 0xa5, 0x94, 0xe4, 0xd5, 0xf9, 0x2e, 0xbd, 0xbd, 0x50, 0xbd, 0x80, 0x54, ++ 0x39, 0xd7, 0xe5, 0x3b, 0xff, 0x8d, 0x89, 0xfb, 0x39, 0x63, 0x7f, 0x7f, 0x86, 0x7f, 0x4d, 0x07, ++ 0x60, 0x4a, 0xac, 0x7d, 0x2d, 0xed, 0xd7, 0x17, 0x60, 0xc7, 0x61, 0x61, 0x6b, 0x61, 0x87, 0xc8, ++ 0xb2, 0xf9, 0x92, 0x8c, 0x67, 0xc0, 0xbc, 0x1b, 0xb2, 0x8b, 0x3c, 0x3c, 0x19, 0x3c, 0x57, 0x5d, ++ 0xd4, 0xff, 0x44, 0x33, 0x8d, 0xe6, 0xeb, 0x80, 0xd4, 0xcd, 0xee, 0xee, 0x89, 0xee, 0x55, 0x78, ++ 0x6f, 0xf4, 0x65, 0x5b, 0xe2, 0x3c, 0x54, 0x8a, 0x6f, 0xa7, 0x7c, 0x7c, 0xc2, 0x7c, 0xed, 0x46, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x6d, 0x71, 0xf2, 0xa4, 0x1e, 0xc4, 0x95, 0x4f, 0x6d, 0xd8, 0xac, 0xac, 0x2a, 0xac, 0x2f, 0x1d, ++ 0xa1, 0x7d, 0x9d, 0x19, 0x09, 0x88, 0x3b, 0xba, 0xa1, 0x54, 0xcb, 0xcb, 0xc9, 0xcb, 0x2b, 0x57, ++ 0x12, 0x27, 0xa5, 0x0b, 0x10, 0x34, 0x06, 0x22, 0x12, 0x01, 0x9f, 0x9f, 0xa4, 0x9f, 0x1d, 0xc6, ++ 0xd8, 0x67, 0xb0, 0x74, 0xc0, 0xb3, 0x28, 0x5b, 0xd8, 0x0c, 0x4b, 0x4b, 0xbc, 0x4b, 0x9c, 0x61, ++ 0xa3, 0xf8, 0x0a, 0xe6, 0xf5, 0x70, 0xfa, 0x7f, 0xa3, 0x2b, 0x1b, 0x1b, 0x21, 0x1b, 0xe9, 0x0c, ++ 0xa4, 0x17, 0xda, 0xba, 0x4c, 0xc7, 0xfb, 0x70, 0xa4, 0x74, 0xc0, 0xc0, 0xae, 0xc0, 0x0d, 0x2d, ++ 0xcf, 0x2a, 0x52, 0xdc, 0x95, 0xc8, 0xee, 0xb3, 0xcf, 0x2d, 0xdf, 0xdf, 0x7f, 0xdf, 0xa7, 0xdd, ++ 0x9a, 0x2f, 0xef, 0xdd, 0x0a, 0xfd, 0x73, 0x84, 0x9a, 0x48, 0x64, 0x64, 0xa7, 0x64, 0xa4, 0x0b, ++ 0xcc, 0x0c, 0x6f, 0xbd, 0x17, 0x4c, 0xae, 0xf5, 0xcc, 0x8c, 0x67, 0x67, 0xe3, 0x67, 0x04, 0x4a, ++ 0x52, 0xea, 0x6d, 0x5d, 0x26, 0x82, 0x9c, 0x38, 0x52, 0x3a, 0x60, 0x60, 0x57, 0x60, 0xe7, 0xf7, ++ 0x1c, 0x3a, 0xc6, 0xb3, 0xa1, 0x99, 0x04, 0x3c, 0x1c, 0xbf, 0xea, 0xea, 0x79, 0xea, 0x16, 0x84, ++ 0x2f, 0x39, 0xad, 0x0d, 0xd4, 0x8a, 0xce, 0x90, 0x2f, 0x9c, 0x83, 0x83, 0x31, 0x83, 0x17, 0x77, ++ 0x7e, 0xf5, 0xfd, 0x31, 0x70, 0x8c, 0x12, 0xee, 0x7e, 0x07, 0x5b, 0x5b, 0xfa, 0x5b, 0x53, 0x17, ++ 0x93, 0xdd, 0x5c, 0x39, 0x02, 0xe7, 0x70, 0x95, 0x93, 0xa9, 0xca, 0xca, 0xf5, 0xca, 0x4b, 0x68, ++ 0x42, 0x48, 0x5f, 0xa9, 0xca, 0x4e, 0x5b, 0xdf, 0x42, 0x44, 0x2f, 0x2f, 0x1b, 0x2f, 0x38, 0x6a, ++ 0xb3, 0x5a, 0x38, 0x12, 0x19, 0xbc, 0x3d, 0x98, 0xb3, 0x55, 0x54, 0x54, 0x6d, 0x54, 0x36, 0x91, ++ 0x18, 0xf3, 0x2b, 0x8e, 0x9a, 0xaa, 0x45, 0x75, 0x18, 0x41, 0x89, 0x89, 0x6a, 0x89, 0x51, 0x32, ++ 0xb8, 0x2d, 0x1c, 0x09, 0xed, 0x5e, 0xff, 0x4c, 0xb8, 0xcb, 0x2a, 0x2a, 0xd7, 0x2a, 0x1b, 0xa9, ++ 0xfc, 0x29, 0x39, 0x62, 0xe0, 0xdb, 0x24, 0x1f, 0xfc, 0x0e, 0xb6, 0xb6, 0x37, 0xb6, 0xa6, 0x2e, ++ 0x44, 0x04, 0x25, 0x6b, 0x0d, 0x85, 0xdb, 0x53, 0x44, 0xc5, 0x9c, 0x9c, 0xe0, 0x9c, 0xbd, 0x87, ++ 0xe6, 0x5f, 0x85, 0x13, 0x86, 0x89, 0xa0, 0xaf, 0xe6, 0x30, 0xef, 0xef, 0xb5, 0xef, 0x35, 0x47, ++ 0x8c, 0xc1, 0xa7, 0xeb, 0x21, 0xfa, 0x34, 0xef, 0x8c, 0xb7, 0x98, 0x98, 0x10, 0x98, 0xfe, 0x7b, ++ 0xc6, 0xd8, 0xe1, 0x38, 0x9d, 0xd2, 0xed, 0xa2, 0xc6, 0xcc, 0x71, 0x71, 0x2d, 0x71, 0x48, 0xbe, ++ 0x63, 0x6c, 0x91, 0x1c, 0xaf, 0x69, 0x97, 0x51, 0x63, 0x66, 0xd9, 0xd9, 0xf7, 0xd9, 0x24, 0x5f, ++ 0xbf, 0xc2, 0xcc, 0x55, 0x54, 0xe9, 0xfe, 0x43, 0xbf, 0x94, 0xf1, 0xf1, 0x58, 0xf1, 0xff, 0x88, ++ 0xf2, 0x34, 0x5a, 0xda, 0x51, 0x76, 0x26, 0x01, 0xf2, 0xb0, 0xc3, 0xc3, 0xea, 0xc3, 0xad, 0x6c, ++ 0x2c, 0x1f, 0x90, 0x6c, 0x56, 0x0e, 0x8e, 0xd6, 0x2c, 0x3d, 0x3b, 0x3b, 0xad, 0x3b, 0xb4, 0xe0, ++ 0x11, 0x01, 0x98, 0x6a, 0x92, 0xb0, 0x46, 0x64, 0x11, 0xa0, 0x27, 0x27, 0x38, 0x27, 0xbe, 0x51, ++ 0x73, 0xce, 0xa3, 0xe8, 0x43, 0xa5, 0x50, 0xb6, 0x73, 0x18, 0x96, 0x96, 0xbb, 0x96, 0xfb, 0xc2, ++ 0xdc, 0xae, 0x5d, 0x49, 0xfb, 0x80, 0x69, 0x12, 0xdc, 0xf2, 0x28, 0x28, 0xaf, 0x28, 0xdb, 0xd7, ++ 0xd9, 0xc4, 0x1a, 0xea, 0xbe, 0xcf, 0xa9, 0xd8, 0xd9, 0xd2, 0x23, 0x23, 0xc8, 0x23, 0xfd, 0xad, ++ 0x92, 0x7e, 0xf6, 0xa7, 0x7c, 0x9b, 0xf1, 0x16, 0x92, 0x77, 0xa2, 0xa2, 0x81, 0xa2, 0x2a, 0xa4, ++ 0x3e, 0x38, 0x35, 0x67, 0x46, 0x3a, 0x88, 0xf4, 0x3e, 0x3c, 0xa4, 0xa4, 0x09, 0xa4, 0xa9, 0x26, ++ 0xd2, 0xb3, 0x3e, 0xf1, 0x4a, 0x2d, 0x6b, 0x0c, 0xd2, 0x4c, 0x5d, 0x5d, 0x72, 0x5d, 0xd0, 0x95, ++ 0x59, 0x9d, 0x49, 0x46, 0xd2, 0x60, 0x5e, 0xec, 0x59, 0xa4, 0x1e, 0x1e, 0xed, 0x1e, 0xca, 0xcf, ++ 0x75, 0x82, 0xd9, 0x2a, 0x84, 0x6e, 0xd0, 0x3a, 0x75, 0x99, 0x25, 0x25, 0x40, 0x25, 0x7e, 0x2f, ++ 0x19, 0x50, 0x81, 0x10, 0xe4, 0xd6, 0xc4, 0xf6, 0x19, 0x9f, 0xe1, 0xe1, 0x1e, 0xe1, 0x30, 0xfe, ++ 0xb4, 0xb5, 0xe8, 0x4e, 0xa0, 0x0b, 0x3c, 0x97, 0xb4, 0x0a, 0x8f, 0x8f, 0xe2, 0x8f, 0xd2, 0xb0, ++ 0x81, 0xfa, 0xf9, 0x32, 0x12, 0xd3, 0x76, 0xb7, 0x81, 0xa8, 0x55, 0x55, 0x51, 0x55, 0x56, 0xae, ++ 0xe4, 0xda, 0x12, 0xec, 0x7a, 0x71, 0x61, 0x6a, 0xe4, 0x4f, 0x3f, 0x3f, 0x5d, 0x3f, 0xf7, 0x1c, ++ 0xe5, 0x79, 0xb8, 0x72, 0x04, 0x0d, 0xe0, 0xe9, 0xe5, 0x91, 0x57, 0x57, 0x29, 0x57, 0x96, 0xd0, ++ 0x0f, 0xbe, 0xc9, 0x26, 0xcf, 0xd1, 0x83, 0x9d, 0x0f, 0x60, 0x1d, 0x1d, 0xa9, 0x1d, 0x6a, 0x8e, ++ 0x47, 0x22, 0x18, 0x0a, 0x8f, 0x01, 0x9b, 0x15, 0x47, 0x64, 0x24, 0x24, 0x7c, 0x24, 0x1e, 0x10, ++ 0x9c, 0x63, 0x95, 0x1f, 0xcd, 0x36, 0xf3, 0x08, 0x9c, 0xc9, 0xd7, 0xd7, 0x5c, 0xd7, 0x21, 0xe6, ++ 0x2a, 0x53, 0xea, 0xae, 0x91, 0xc5, 0x0e, 0x5a, 0x2a, 0xbc, 0x88, 0x88, 0x56, 0x88, 0x31, 0x0d, ++ 0xa8, 0x8f, 0x2e, 0xfd, 0x01, 0x92, 0x38, 0xab, 0xa8, 0xb5, 0x65, 0x65, 0x9b, 0x65, 0xc4, 0x34, ++ 0x5b, 0x18, 0xde, 0xb9, 0x2e, 0x98, 0x9f, 0x29, 0x5b, 0xdb, 0xce, 0xce, 0x05, 0xce, 0x08, 0x94, ++ 0x8f, 0xe7, 0x9a, 0x8a, 0xa3, 0x7e, 0x74, 0xa9, 0x8f, 0x16, 0x20, 0x20, 0x8c, 0x20, 0x5d, 0xec, ++ 0x04, 0xc9, 0xed, 0x3d, 0x3b, 0x33, 0x41, 0x49, 0x04, 0xfe, 0x63, 0x63, 0x13, 0x63, 0x47, 0xb6, ++ 0xa6, 0x92, 0x4d, 0x45, 0xb0, 0x3f, 0x3a, 0xb5, 0xa6, 0x0b, 0x10, 0x10, 0x46, 0x10, 0xcf, 0x76, ++ 0x72, 0x6d, 0x09, 0x76, 0x3d, 0xd9, 0xd1, 0x35, 0x72, 0xc6, 0xfe, 0xfe, 0xcf, 0xfe, 0x9a, 0x0e, ++ 0xba, 0xa8, 0x8b, 0xf6, 0x11, 0xa6, 0x3e, 0x89, 0xba, 0xb4, 0xfa, 0xfa, 0x3f, 0xfa, 0xd9, 0xf2, ++ 0x30, 0x25, 0x56, 0xdf, 0xf7, 0x97, 0x8a, 0xea, 0x30, 0x82, 0xd1, 0xd1, 0xd4, 0xd1, 0xa2, 0x64, ++ 0x4c, 0x55, 0x3c, 0x11, 0x7b, 0xe3, 0x59, 0xc1, 0x4c, 0xfa, 0x5a, 0x5a, 0xc6, 0x5a, 0x33, 0x28, ++ 0x82, 0xdc, 0xc4, 0x53, 0x90, 0x57, 0x36, 0xf1, 0x82, 0x09, 0xed, 0xed, 0xcd, 0xed, 0xf5, 0x39, ++ 0x6a, 0x9e, 0x22, 0xf8, 0xa7, 0x73, 0x94, 0x40, 0x6a, 0x87, 0x77, 0x77, 0xa5, 0x77, 0xcb, 0x3c, ++ 0x88, 0x08, 0x4a, 0xd6, 0x1a, 0xc9, 0x75, 0xa6, 0x88, 0x49, 0xfb, 0xfb, 0x03, 0xfb, 0xb9, 0xcd, ++ 0x3c, 0xbd, 0xa2, 0x98, 0xba, 0xc2, 0x49, 0x31, 0x3c, 0x43, 0x74, 0x74, 0xe1, 0x74, 0x6b, 0x7d, ++ 0x6e, 0x57, 0xcf, 0xc5, 0x9c, 0x40, 0xd5, 0x09, 0x6e, 0x79, 0x14, 0x14, 0xb6, 0x14, 0x8c, 0x8a, ++ 0x0b, 0x77, 0x24, 0x1b, 0xf4, 0xe2, 0xc2, 0xd4, 0x0b, 0x9e, 0x7e, 0x7e, 0xba, 0x7e, 0x2d, 0x38, ++ 0x9e, 0xe6, 0x02, 0xe0, 0x31, 0xce, 0x32, 0xcd, 0x9e, 0xb6, 0x07, 0x07, 0xb4, 0x07, 0xe3, 0xbd, ++ 0x68, 0x1b, 0xb5, 0x07, 0x5b, 0x8b, 0x55, 0x85, 0x68, 0xf8, 0xa7, 0xa7, 0x4d, 0xa7, 0x09, 0x67, ++ 0x67, 0xa5, 0x7c, 0x21, 0x94, 0x5a, 0xd6, 0x18, 0x67, 0x98, 0xba, 0xba, 0xe4, 0xba, 0x63, 0xe9, ++ 0xc5, 0xfe, 0xdc, 0x59, 0x1f, 0x56, 0xad, 0xe4, 0xc5, 0x6d, 0xc9, 0xc9, 0xb1, 0xc9, 0xeb, 0x29, ++ 0x74, 0x21, 0x73, 0xb4, 0xfa, 0x12, 0x51, 0xb9, 0x74, 0x47, 0x4d, 0x4d, 0x34, 0x4d, 0x1f, 0xe3, ++ 0x40, 0xcd, 0xc8, 0x56, 0x36, 0xb6, 0x9a, 0x1a, 0x40, 0x3b, 0xff, 0xff, 0xf3, 0xff, 0xfa, 0x31, ++ 0x0c, 0x98, 0xf4, 0x47, 0x4d, 0x55, 0xc3, 0xdb, 0x0c, 0xc1, 0xa5, 0xa5, 0x35, 0xa5, 0xc9, 0x19, ++ 0xe7, 0xfc, 0x2f, 0x8d, 0xf8, 0xf5, 0x21, 0x2c, 0xe7, 0xee, 0x87, 0x87, 0xc1, 0x87, 0x54, 0x8b, ++ 0x9d, 0xc0, 0x3f, 0x81, 0xb3, 0x4a, 0x72, 0x8b, 0x9d, 0x17, 0xbf, 0xbf, 0x28, 0xbf, 0x40, 0x2a, ++ 0x90, 0xfb, 0x61, 0x58, 0x80, 0x63, 0x30, 0xd3, 0x90, 0x08, 0x72, 0x72, 0x69, 0x72, 0xe8, 0xff, ++ 0x7a, 0x3c, 0x10, 0x0c, 0x4b, 0xbf, 0x53, 0xa7, 0x7a, 0xf9, 0x38, 0x38, 0xe9, 0x38, 0x14, 0xa1, ++ 0x3a, 0xf1, 0xd8, 0x5a, 0x7d, 0x09, 0xc9, 0xbd, 0x3a, 0xc2, 0xc7, 0xc7, 0x1a, 0xc7, 0xee, 0x90, ++ 0x35, 0x4f, 0x11, 0x7c, 0xb2, 0xd8, 0x4a, 0x20, 0x35, 0xa2, 0xda, 0xda, 0xb3, 0xda, 0x84, 0x1e, ++ 0x34, 0xec, 0xbb, 0xe2, 0xcc, 0xa4, 0xcb, 0xa3, 0x34, 0x7c, 0xb2, 0xb2, 0xc7, 0xb2, 0xe5, 0xd2, ++ 0x9f, 0x45, 0xa8, 0x7e, 0x4f, 0xb2, 0xb3, 0x4e, 0x9f, 0x68, 0x6f, 0x6f, 0xc0, 0x6f, 0x82, 0x71, ++ 0xb7, 0x93, 0xd5, 0x2f, 0x22, 0x8f, 0x7c, 0xd1, 0xb7, 0xab, 0x37, 0x37, 0x7e, 0x37, 0x71, 0x27, ++ 0xf8, 0xe0, 0xd4, 0x5f, 0xdb, 0xe8, 0x65, 0x56, 0xf8, 0xf0, 0xd5, 0xd5, 0x24, 0xd5, 0xe1, 0x98, ++ 0x4f, 0x73, 0x01, 0x70, 0xf9, 0x67, 0x19, 0x87, 0x4f, 0x5b, 0xe2, 0xe2, 0x5a, 0xe2, 0x90, 0xbf, ++ 0x6b, 0x3d, 0x88, 0x66, 0xd9, 0x0f, 0x15, 0xc3, 0x6b, 0x59, 0x1f, 0x1f, 0xd1, 0x1f, 0xaa, 0xf0, ++ 0x83, 0x7f, 0x6e, 0xcd, 0xee, 0x2b, 0xb7, 0x72, 0x83, 0xd7, 0x85, 0x85, 0xb9, 0x85, 0x94, 0xf5, ++ 0x5f, 0xd1, 0x33, 0x84, 0x15, 0xab, 0xde, 0x60, 0x5f, 0x25, 0xad, 0xad, 0x16, 0xad, 0x4f, 0x22, ++ 0xa7, 0x31, 0xe7, 0xdb, 0xce, 0x43, 0xbb, 0x36, 0xa7, 0xd5, 0x78, 0x78, 0x32, 0x78, 0xae, 0xba, ++ 0x1e, 0xbf, 0x51, 0x4c, 0x5d, 0x61, 0xc5, 0xf9, 0x1e, 0xc0, 0x3a, 0x3a, 0x91, 0x3a, 0xd4, 0xdf, ++ 0x10, 0xa2, 0x32, 0xf4, 0xec, 0xcc, 0xc7, 0xe7, 0x10, 0x7e, 0x4f, 0x4f, 0x4c, 0x4f, 0xdf, 0x9d, ++ 0xc3, 0xb2, 0xa6, 0x9b, 0xd8, 0x9d, 0x2d, 0x68, 0xc3, 0xec, 0x7a, 0x7a, 0x4a, 0x7a, 0x6e, 0xc4, ++ 0x78, 0xb9, 0x87, 0xf3, 0xb7, 0x47, 0x92, 0x62, 0x78, 0x86, 0xe8, 0xe8, 0x01, 0xe8, 0xd6, 0xfa, ++ 0x2d, 0xbc, 0x3a, 0xf2, 0x28, 0x72, 0x0f, 0x55, 0x2d, 0xe3, 0x53, 0x53, 0xd9, 0x53, 0xd5, 0x2c, ++ 0x77, 0x07, 0x4e, 0xd5, 0x78, 0x96, 0x11, 0xff, 0x77, 0xe6, 0xf5, 0xf5, 0xa8, 0xf5, 0xbc, 0x74, ++ 0xe3, 0x35, 0xc2, 0xb0, 0xc3, 0xc6, 0x60, 0x65, 0xe3, 0x10, 0xe4, 0xe4, 0xd2, 0xe4, 0x13, 0x3d, ++ 0x80, 0x59, 0x53, 0xac, 0x6c, 0xaf, 0xf7, 0x34, 0x80, 0x76, 0x3d, 0x3d, 0x25, 0x3d, 0x37, 0x62, ++ }, ++ { /* 14 */ ++ 0x0a, 0xaf, 0x45, 0x6e, 0xf6, 0x73, 0x56, 0xfb, 0x47, 0x1c, 0xd5, 0xc8, 0x66, 0x2c, 0x64, 0xb5, ++ 0xca, 0x52, 0x68, 0xe5, 0x24, 0x5b, 0xd9, 0x08, 0xeb, 0x1e, 0xe0, 0x5e, 0xac, 0x6b, 0x2f, 0x0a, ++ 0xf3, 0x80, 0xf6, 0x75, 0x2e, 0x6a, 0xc5, 0xcb, 0x78, 0x58, 0xd0, 0xcf, 0x08, 0x95, 0x86, 0x89, ++ 0x17, 0x4e, 0xcb, 0x70, 0x06, 0xae, 0xb5, 0x41, 0x71, 0x83, 0x10, 0xce, 0xdd, 0xeb, 0x67, 0xc0, ++ 0x33, 0x7d, 0xdb, 0xfe, 0xfc, 0x42, 0x4a, 0x38, 0xd4, 0x5a, 0xe5, 0x59, 0xc2, 0xd2, 0xcd, 0x36, ++ 0x5f, 0x28, 0xeb, 0xaf, 0x31, 0xb5, 0x88, 0xb3, 0xf8, 0xf2, 0x39, 0x23, 0xe3, 0x99, 0xf0, 0xef, ++ 0xa3, 0xb1, 0x9b, 0x83, 0x92, 0x74, 0x30, 0x1f, 0x05, 0xb8, 0xb7, 0x40, 0xbe, 0x36, 0x20, 0x68, ++ 0x37, 0x3b, 0x27, 0xad, 0x21, 0xa2, 0xd7, 0x88, 0x43, 0x3d, 0xf8, 0xf7, 0xfe, 0x14, 0x9a, 0xaa, ++ 0x2a, 0xda, 0xa9, 0xb3, 0xd1, 0x7f, 0x34, 0x32, 0x75, 0xa2, 0x3d, 0xf1, 0x45, 0xd3, 0x99, 0xdf, ++ 0xc9, 0x81, 0x29, 0x49, 0x0d, 0x13, 0xc0, 0x7c, 0x14, 0xa5, 0x99, 0xc3, 0xbd, 0xd8, 0x80, 0x63, ++ 0x67, 0x0a, 0x4a, 0x5b, 0x9d, 0xbc, 0x22, 0x5c, 0x3e, 0xdd, 0x9f, 0x78, 0x48, 0xb7, 0x3c, 0x4b, ++ 0xd3, 0xf5, 0x1a, 0xa8, 0x09, 0x66, 0xa7, 0x02, 0x4a, 0xe6, 0x38, 0xf6, 0x2b, 0x6a, 0x7b, 0xe3, ++ 0x63, 0x4c, 0xb6, 0x08, 0x40, 0x5c, 0xbf, 0xec, 0xa9, 0xba, 0x82, 0xd6, 0x74, 0x71, 0x6b, 0xd7, ++ 0x84, 0x51, 0xca, 0xa1, 0x41, 0xd0, 0xd6, 0x12, 0x5f, 0xda, 0x3b, 0x4a, 0xb0, 0xbc, 0x25, 0xf7, ++ 0xf7, 0xc6, 0x0a, 0x26, 0xf3, 0x8a, 0x58, 0x7b, 0xef, 0x3f, 0xcd, 0x61, 0x34, 0x53, 0xd1, 0x15, ++ 0x3c, 0x64, 0x5d, 0xa7, 0x71, 0xe9, 0x37, 0x5f, 0x51, 0x48, 0xbb, 0xf5, 0x97, 0xe8, 0x9b, 0x38, ++ 0xea, 0x27, 0x84, 0x38, 0x03, 0x57, 0xbb, 0xc1, 0xd9, 0xa0, 0x08, 0x67, 0x8f, 0x94, 0xd2, 0x60, ++ 0x65, 0x29, 0x34, 0x93, 0x12, 0xcc, 0x8d, 0x04, 0x94, 0x0f, 0x70, 0x2f, 0x56, 0xd4, 0xf6, 0x05, ++ 0xd0, 0x26, 0x5b, 0x04, 0x20, 0x2e, 0xbe, 0x76, 0xb5, 0x5d, 0x41, 0x6b, 0x3a, 0xd9, 0xd4, 0x8a, ++ 0x9e, 0x25, 0xf9, 0x40, 0x45, 0xa5, 0xb1, 0x6c, 0x01, 0x99, 0x9a, 0x7f, 0x26, 0x0e, 0xde, 0x77, ++ 0x18, 0x57, 0x4d, 0x29, 0x8b, 0x05, 0xc8, 0x26, 0xf4, 0x91, 0x4e, 0x62, 0x88, 0xd1, 0x31, 0xce, ++ 0xf4, 0x15, 0x4b, 0x8a, 0xda, 0xc2, 0x41, 0x0f, 0x10, 0x84, 0xb4, 0xfc, 0x25, 0xe0, 0x7e, 0x7c, ++ 0xaf, 0x7b, 0x5c, 0x76, 0x36, 0x97, 0x54, 0x0c, 0x7f, 0x11, 0x90, 0x71, 0xfa, 0xbf, 0xd9, 0x0f, ++ 0xcc, 0x37, 0xea, 0x7e, 0x76, 0xcb, 0xeb, 0xe0, 0xd6, 0xab, 0x12, 0xa7, 0x8e, 0xce, 0xb2, 0xd8, ++ 0x7a, 0xeb, 0xc4, 0x45, 0x6d, 0x61, 0xc1, 0xe6, 0x08, 0x42, 0x5a, 0x7e, 0xf3, 0x70, 0x3f, 0x3e, ++ 0x83, 0xc4, 0x77, 0x5e, 0xb5, 0x78, 0x52, 0xd6, 0x37, 0x06, 0x5f, 0x79, 0x9d, 0xc9, 0xdd, 0x02, ++ 0x9d, 0xf6, 0xb8, 0xec, 0x6c, 0xed, 0xa8, 0x18, 0xfe, 0x22, 0xe3, 0xe2, 0x37, 0xbd, 0x71, 0x1e, ++ 0x81, 0xe7, 0x09, 0x96, 0x3a, 0x08, 0xfd, 0x8e, 0x9d, 0xd4, 0xb0, 0x2e, 0x83, 0xaa, 0x17, 0x4c, ++ 0xad, 0x58, 0x22, 0xbe, 0xb9, 0xe7, 0xfb, 0x54, 0xd5, 0xc3, 0x7f, 0x26, 0xe4, 0xdc, 0x13, 0x41, ++ 0xa9, 0x1e, 0xde, 0xed, 0x64, 0x07, 0x66, 0xe4, 0x42, 0xa4, 0x62, 0x88, 0xd8, 0x1a, 0x44, 0xdd, ++ 0xfc, 0x99, 0x70, 0x2c, 0xa3, 0xc1, 0xb8, 0xac, 0xfd, 0x4a, 0x8e, 0x63, 0x5d, 0xaf, 0xd0, 0x87, ++ 0x73, 0x97, 0xc0, 0x87, 0xb2, 0x5a, 0x8e, 0x69, 0xb0, 0xe5, 0xf6, 0x2b, 0x84, 0xef, 0xf4, 0xe2, ++ 0xb0, 0xb9, 0xac, 0xa0, 0x49, 0x3a, 0x18, 0xee, 0xe3, 0x5c, 0xba, 0x20, 0x5f, 0x1b, 0x10, 0x34, ++ 0x77, 0xd1, 0x3c, 0xd4, 0x6f, 0xba, 0x13, 0xd9, 0x27, 0x82, 0xeb, 0x85, 0xb8, 0x29, 0xa3, 0x7e, ++ 0xa5, 0xd4, 0x19, 0x18, 0xc0, 0xe4, 0x02, 0xf7, 0x38, 0x0d, 0x45, 0xb9, 0x9c, 0x93, 0xbd, 0xba, ++ 0x46, 0x8f, 0x99, 0xe2, 0x1c, 0x88, 0xf6, 0xb9, 0x59, 0x0a, 0xe1, 0x8b, 0x64, 0x98, 0xa4, 0x06, ++ 0x10, 0xdb, 0x76, 0x8f, 0xf2, 0x06, 0x31, 0x85, 0x19, 0x5f, 0x74, 0xfd, 0xf0, 0x9e, 0x9f, 0x35, ++ 0x2b, 0x2a, 0x96, 0xd7, 0x77, 0x47, 0x82, 0x1e, 0x20, 0xcb, 0xab, 0x3b, 0x4a, 0x03, 0xfc, 0xf8, ++ 0x87, 0x82, 0x8b, 0x0d, 0x68, 0x98, 0xcf, 0x66, 0xa0, 0x61, 0x42, 0xd7, 0xa1, 0x0f, 0x8a, 0x9e, ++ 0xf9, 0x2f, 0xb3, 0x1b, 0xd8, 0x19, 0x93, 0x30, 0x3f, 0x44, 0x05, 0x07, 0x6e, 0xb9, 0xe2, 0x3c, ++ 0xd8, 0xaa, 0x60, 0xa2, 0x59, 0x2d, 0x47, 0xd5, 0x58, 0x93, 0x7b, 0xf4, 0x42, 0x96, 0x7a, 0x71, ++ 0x80, 0x17, 0x36, 0xf2, 0x9c, 0x30, 0x4b, 0xa2, 0xc8, 0xbd, 0x26, 0xe4, 0x8c, 0x7a, 0x72, 0x6b, ++ 0x34, 0xe8, 0x66, 0x01, 0x08, 0xea, 0xce, 0xfc, 0xbc, 0x86, 0x81, 0x6a, 0xef, 0xa7, 0x35, 0xc3, ++ 0x31, 0x5e, 0xa5, 0x36, 0x73, 0x32, 0xe5, 0x60, 0x7e, 0x88, 0x0a, 0x0e, 0xdc, 0xb1, 0x07, 0x78, ++ 0x6f, 0x86, 0x71, 0xfd, 0xe4, 0xbf, 0xdb, 0xff, 0xd3, 0x13, 0xa5, 0xe7, 0x30, 0xf8, 0x92, 0xb0, ++ 0x4d, 0xd0, 0xe3, 0xe8, 0x4c, 0xc3, 0x16, 0x6e, 0x4b, 0x7f, 0xa2, 0x89, 0x0d, 0x64, 0xa5, 0x94, ++ 0xd5, 0x90, 0x98, 0x33, 0x5b, 0xf6, 0x95, 0xea, 0x77, 0x53, 0xca, 0x0f, 0x09, 0xcf, 0xe6, 0x31, ++ 0xa6, 0x07, 0x58, 0xb4, 0xe9, 0xac, 0x1b, 0x83, 0xc7, 0xb6, 0x3c, 0x24, 0x8d, 0x20, 0x12, 0xd3, ++ 0xba, 0x16, 0xe9, 0xce, 0xbf, 0x49, 0x4e, 0x15, 0xa4, 0x40, 0x6f, 0xe8, 0x39, 0x37, 0x74, 0x81, ++ 0x62, 0xbc, 0x89, 0x6c, 0xe6, 0x64, 0x09, 0xc0, 0xfc, 0xd3, 0x14, 0x1c, 0x7b, 0xa1, 0x0e, 0xf0, ++ 0x9a, 0x63, 0x05, 0x13, 0x98, 0x45, 0x2c, 0xdc, 0x96, 0xfe, 0x87, 0xd1, 0x1a, 0xc8, 0x89, 0xeb, ++ 0x61, 0x6f, 0xc8, 0xc0, 0xcf, 0x2c, 0x10, 0xb4, 0x03, 0x68, 0x6d, 0x81, 0x6a, 0x12, 0xa1, 0x99, ++ 0x5d, 0x0b, 0x95, 0x67, 0xbe, 0xc5, 0x27, 0xeb, 0x52, 0x20, 0xd6, 0x74, 0xfd, 0xfa, 0x3a, 0xa1, ++ 0xa8, 0xee, 0xe1, 0x89, 0xc2, 0x3f, 0xd0, 0xc8, 0x17, 0xcd, 0xf4, 0x42, 0xd7, 0xca, 0x21, 0xfa, ++ 0x98, 0x40, 0x7b, 0xdb, 0x17, 0x35, 0x83, 0x84, 0x3c, 0x2c, 0x68, 0x86, 0x04, 0xab, 0x43, 0xa5, ++ 0x21, 0x85, 0xd3, 0xb9, 0x81, 0x34, 0xd4, 0xe5, 0x67, 0xd7, 0x7e, 0xf3, 0x2c, 0x2f, 0x98, 0x4d, ++ 0x6d, 0xa5, 0x0f, 0x35, 0x6b, 0xcf, 0x74, 0xa7, 0x79, 0xc1, 0x4a, 0xb0, 0x2e, 0x9b, 0x58, 0xfe, ++ 0xfa, 0xfc, 0xf2, 0xb7, 0xf1, 0x51, 0x8a, 0x44, 0xc0, 0xff, 0x7c, 0x9a, 0x7f, 0x0a, 0x4d, 0x55, ++ 0x1d, 0xe1, 0x8e, 0x1e, 0xf0, 0xdd, 0xe3, 0xba, 0x36, 0x9f, 0xc5, 0x06, 0xbb, 0xc7, 0x03, 0x75, ++ 0xe2, 0xab, 0xbf, 0x9e, 0x7a, 0x54, 0x42, 0x62, 0x34, 0x6e, 0x32, 0xf8, 0xf7, 0xdb, 0x7c, 0x9b, ++ 0x48, 0x66, 0x20, 0xdf, 0x37, 0x1b, 0x3d, 0xf2, 0x89, 0x71, 0x29, 0xed, 0x3e, 0x72, 0x97, 0x2f, ++ 0x93, 0x1f, 0x01, 0xd1, 0x47, 0x7e, 0x63, 0x53, 0x2e, 0x59, 0x2b, 0x84, 0x6d, 0x57, 0x42, 0x37, ++ 0xb3, 0x6a, 0xed, 0x0c, 0x60, 0x72, 0x01, 0x9a, 0x1c, 0xe7, 0xc3, 0xbd, 0x4e, 0xa8, 0xbf, 0x5d, ++ 0x57, 0xa4, 0xd0, 0x09, 0x48, 0xb6, 0x71, 0x10, 0x15, 0x3c, 0x03, 0xbc, 0x9b, 0xd6, 0x5e, 0x14, ++ 0x70, 0x44, 0x81, 0x2b, 0x9b, 0x12, 0x97, 0x1d, 0x4f, 0x5e, 0x8f, 0xb6, 0x95, 0x5c, 0x5b, 0x8b, ++ 0x19, 0xa7, 0x72, 0x4d, 0x2d, 0x3d, 0x7e, 0x0a, 0xa1, 0xf8, 0xd8, 0xa8, 0x87, 0x01, 0x54, 0xe9, ++ 0x6e, 0x76, 0x4e, 0x99, 0x42, 0x87, 0x6d, 0xd3, 0x86, 0x7a, 0x33, 0x2d, 0x3f, 0x28, 0xf7, 0x97, ++ 0xbc, 0x73, 0x6b, 0x55, 0xed, 0xd9, 0x7c, 0xfd, 0x99, 0xf5, 0x9d, 0x11, 0x1b, 0x92, 0xe9, 0x53, ++ 0x3d, 0x94, 0x62, 0xc3, 0xd7, 0xd1, 0x81, 0x73, 0x04, 0x21, 0x2d, 0x3f, 0x98, 0x38, 0xfe, 0x1f, ++ 0x13, 0x08, 0x37, 0x23, 0xdb, 0x4e, 0x28, 0xf1, 0xe6, 0xe4, 0x0d, 0x60, 0xe1, 0x2d, 0x30, 0x5c, ++ 0x86, 0x72, 0xb4, 0x69, 0xce, 0xa0, 0x79, 0x4a, 0xf5, 0x08, 0xd4, 0x1d, 0xae, 0xdf, 0xef, 0xb9, ++ 0xdb, 0x79, 0x21, 0x0e, 0x70, 0x65, 0x5e, 0xa1, 0xa7, 0x28, 0x02, 0x69, 0x53, 0x25, 0xd5, 0x18, ++ 0x4a, 0x45, 0x5e, 0x17, 0xb8, 0x6b, 0x92, 0xaa, 0x23, 0xa3, 0xc6, 0xba, 0x20, 0x11, 0x5d, 0x61, ++ 0x03, 0xd3, 0x41, 0xac, 0x29, 0x48, 0x19, 0x74, 0xff, 0xbb, 0x79, 0x9d, 0x11, 0xb3, 0xaf, 0x69, ++ 0x32, 0x8d, 0xe4, 0x9a, 0x5a, 0x7a, 0xfc, 0x14, 0x81, 0x33, 0x73, 0x93, 0xcd, 0x02, 0xa8, 0x11, ++ 0xbb, 0xe6, 0xd6, 0xaa, 0x19, 0x71, 0xf8, 0x39, 0xf1, 0x29, 0xf9, 0x22, 0x36, 0xe7, 0x11, 0xa6, ++ 0x47, 0x7f, 0xa6, 0x86, 0xba, 0xb0, 0x40, 0x95, 0x0c, 0x63, 0x77, 0x41, 0x6b, 0x48, 0xc1, 0x21, ++ 0x59, 0x4d, 0x69, 0x34, 0x63, 0x25, 0xba, 0x5b, 0xc5, 0x47, 0xcb, 0xda, 0xc1, 0x3c, 0x6d, 0x3d, ++ 0x7e, 0xad, 0x38, 0x16, 0xb0, 0x81, 0x5c, 0x56, 0x9f, 0x25, 0x47, 0xd0, 0xcf, 0xb6, 0x68, 0xa2, ++ 0xe4, 0xce, 0x3d, 0x05, 0x28, 0xc4, 0x70, 0x8a, 0x09, 0xdb, 0xc0, 0x01, 0xd5, 0x7e, 0xe1, 0x49, ++ 0xc1, 0x0d, 0x12, 0xef, 0x74, 0x10, 0x39, 0xdf, 0xf9, 0x6b, 0xa3, 0x5c, 0xc5, 0x97, 0x2e, 0x98, ++ 0x45, 0x5c, 0xd8, 0x4e, 0x35, 0xc0, 0xef, 0xcd, 0xa6, 0xb1, 0x98, 0x16, 0x75, 0x2b, 0x0b, 0x6f, ++ 0x40, 0xea, 0x1b, 0x79, 0x4e, 0x18, 0xc4, 0x51, 0x64, 0xbf, 0x13, 0x72, 0x46, 0x3d, 0x39, 0xd4, ++ 0x9c, 0x06, 0x87, 0x88, 0xca, 0xd5, 0x1e, 0x34, 0xab, 0x4b, 0x75, 0x28, 0x38, 0x6d, 0x14, 0x39, ++ 0x2d, 0x4f, 0x14, 0x4c, 0x25, 0xd7, 0xb0, 0xf6, 0x1d, 0x7e, 0x59, 0xc2, 0x68, 0xa6, 0x61, 0x2a, ++ 0xda, 0x89, 0x1e, 0x6a, 0xd6, 0x5d, 0xe8, 0x8d, 0xf2, 0x41, 0x94, 0xa3, 0x5c, 0xf5, 0xb0, 0x3f, ++ 0x28, 0xf9, 0xd7, 0x7b, 0x5e, 0x0f, 0x9b, 0x6a, 0xdf, 0x70, 0xd2, 0xa6, 0x5b, 0xb0, 0x53, 0x91, ++ 0xc0, 0xfd, 0x2d, 0x8b, 0xd2, 0x28, 0x8f, 0xf3, 0xac, 0x02, 0x35, 0x96, 0xca, 0x47, 0x4b, 0xbf, ++ 0x76, 0x21, 0x03, 0xb0, 0xc9, 0x82, 0xa5, 0xf5, 0x72, 0xeb, 0x7d, 0x4f, 0xb7, 0xf9, 0xc6, 0x59, ++ 0xdf, 0x3f, 0xdd, 0x5d, 0xad, 0x85, 0xc3, 0x11, 0x30, 0x4f, 0x1f, 0xc7, 0x6f, 0xe3, 0x82, 0x84, ++ 0x8d, 0x2d, 0xce, 0x63, 0x9e, 0xeb, 0x99, 0x9d, 0xe7, 0x7d, 0x97, 0x1f, 0xc7, 0x23, 0xee, 0x2b, ++ 0x8b, 0x48, 0x4c, 0xf8, 0xcc, 0x7b, 0xab, 0x75, 0xda, 0xc8, 0x65, 0xe6, 0xe5, 0x86, 0x73, 0xf9, ++ 0x15, 0x6d, 0xb5, 0xb8, 0x89, 0xde, 0x1a, 0x19, 0xdb, 0x51, 0xff, 0x99, 0xc3, 0x88, 0xad, 0x8e, ++ 0x5b, 0x6e, 0x17, 0xfc, 0xec, 0x55, 0x15, 0x03, 0x6f, 0x95, 0x24, 0x8d, 0xdf, 0x5f, 0xa7, 0x73, ++ 0x66, 0xfa, 0x75, 0x3f, 0x3b, 0x84, 0x94, 0x70, 0x6b, 0xb4, 0x09, 0xb2, 0x47, 0x67, 0x59, 0x6c, ++ 0xb5, 0x0f, 0x6f, 0x97, 0x32, 0xe2, 0x33, 0x72, 0x21, 0x52, 0x31, 0x44, 0x6c, 0x0d, 0x22, 0x8f, ++ 0xe0, 0x88, 0xc1, 0x56, 0xf5, 0x24, 0xed, 0x3a, 0x9e, 0xbc, 0xdd, 0xaf, 0xe9, 0xb8, 0xb6, 0xd5, ++ 0x6c, 0x55, 0x30, 0x51, 0xcd, 0xf7, 0xc2, 0x8b, 0x2c, 0xa8, 0xdc, 0x7a, 0x21, 0x4b, 0x3d, 0xd9, ++ 0xa2, 0x41, 0xa4, 0xe7, 0x34, 0x4c, 0x86, 0x33, 0x50, 0xd1, 0x21, 0x8a, 0xb1, 0xe6, 0x45, 0x4f, ++ 0xd4, 0x60, 0xa7, 0x57, 0xfd, 0xce, 0x23, 0xc6, 0x22, 0x3a, 0x5c, 0xc5, 0x06, 0x1f, 0x83, 0x16, ++ 0x5a, 0x9e, 0x28, 0x98, 0x4a, 0x6d, 0xa3, 0x2f, 0x3a, 0xfc, 0xb2, 0x47, 0xd0, 0x8f, 0xc2, 0x54, ++ 0xbf, 0xa0, 0x2a, 0xf9, 0xc4, 0x91, 0x65, 0x89, 0x66, 0x4e, 0xe4, 0x8c, 0x0a, 0x21, 0x46, 0x3a, ++ 0x78, 0xc8, 0xba, 0x8d, 0xe2, 0x11, 0x6e, 0xbe, 0xa2, 0x90, 0xb5, 0x29, 0xed, 0x13, 0xf5, 0x70, ++ 0x1e, 0x32, 0xcf, 0xb2, 0xd9, 0x95, 0xfa, 0xce, 0xc9, 0x24, 0xbc, 0x9b, 0xaa, 0x74, 0xac, 0x1c, ++ 0x07, 0x95, 0xbd, 0xff, 0xf4, 0xa8, 0x84, 0xc4, 0x68, 0xdc, 0x64, 0x33, 0x2d, 0x75, 0xf8, 0xf5, ++ 0x82, 0x34, 0x48, 0x3a, 0x13, 0x40, 0xe4, 0xfa, 0x62, 0x6f, 0xc9, 0xb3, 0x92, 0x19, 0xb8, 0x25, ++ 0x68, 0x13, 0xcc, 0x02, 0x10, 0x17, 0x5f, 0x3b, 0xbb, 0xcf, 0xc1, 0xd4, 0x1d, 0x8d, 0x6a, 0x45, ++ 0x12, 0xf8, 0x08, 0x47, 0x7d, 0x76, 0x9e, 0xdd, 0xb3, 0x8d, 0x9b, 0xaa, 0xee, 0xfd, 0x55, 0x7b, ++ 0x58, 0xbd, 0x56, 0x50, 0xc5, 0x1d, 0x0c, 0x77, 0x90, 0x2e, 0x5d, 0x10, 0xce, 0xec, 0x08, 0x1a, ++ 0x8f, 0x0e, 0xb0, 0xab, 0x11, 0x9b, 0x36, 0xc5, 0x4d, 0xaf, 0x78, 0x48, 0xd9, 0x40, 0x24, 0x65, ++ 0xe1, 0x78, 0xfe, 0x32, 0x53, 0x1c, 0x5b, 0x16, 0xcb, 0xd5, 0x4b, 0x65, 0xe6, 0x68, 0xd3, 0xf2, ++ 0x36, 0xcb, 0x18, 0xc9, 0x87, 0x9a, 0x61, 0xa4, 0x16, 0x54, 0x6e, 0x3d, 0xf1, 0xc4, 0xff, 0x8d, ++ 0x74, 0x02, 0x7d, 0x78, 0x46, 0xf2, 0x0a, 0xad, 0xd8, 0x39, 0x92, 0x18, 0xa9, 0x9a, 0x0c, 0x17, ++ 0xff, 0x4a, 0x31, 0x80, 0x8a, 0x89, 0xa1, 0xd8, 0x02, 0xf1, 0xf7, 0xfe, 0x4c, 0x1c, 0x7f, 0xee, ++ 0x3a, 0x01, 0xdf, 0x3c, 0x23, 0x79, 0x05, 0xb7, 0x6c, 0xfd, 0x49, 0x0c, 0xb5, 0x4d, 0x06, 0xea, ++ 0x79, 0x38, 0x85, 0xe9, 0x44, 0x29, 0xd8, 0x92, 0xf7, 0xf9, 0x23, 0xe3, 0xe2, 0xc3, 0x90, 0x57, ++ 0xdd, 0x1c, 0xa3, 0x95, 0x22, 0xf5, 0x6c, 0x49, 0x9a, 0x9d, 0xf0, 0x90, 0x71, 0x80, 0x48, 0xca, ++ 0x54, 0x77, 0x91, 0xa5, 0x61, 0xfe, 0x68, 0x64, 0xea, 0x87, 0x7a, 0x21, 0x8a, 0x65, 0xf1, 0x7d, ++ 0x22, 0x56, 0x92, 0x15, 0xa8, 0x7c, 0xcd, 0x91, 0x98, 0x6c, 0x07, 0x6e, 0x3d, 0x9c, 0x37, 0x24, ++ 0x05, 0xb6, 0xc3, 0x37, 0x7b, 0xd8, 0x2b, 0x9c, 0xc2, 0x0e, 0x8b, 0x64, 0x33, 0x16, 0x32, 0xbb, ++ 0x88, 0x9b, 0x0d, 0x54, 0xe5, 0x33, 0xb2, 0x01, 0x25, 0x73, 0x1c, 0x7b, 0xf4, 0x35, 0xdc, 0x90, ++ 0x06, 0x65, 0x82, 0x9b, 0x52, 0x90, 0x32, 0xe8, 0x3d, 0xb5, 0xf2, 0xf9, 0x22, 0xa5, 0x9d, 0xd2, ++ 0x53, 0xe2, 0x2c, 0x5a, 0x95, 0x56, 0xec, 0xa0, 0x82, 0x5b, 0x1e, 0x12, 0xa7, 0x10, 0x09, 0x88, ++ 0x95, 0x7a, 0x83, 0x4a, 0x15, 0xee, 0x51, 0xbb, 0x13, 0xec, 0xd9, 0x7d, 0x4f, 0xf2, 0xdf, 0xe5, ++ 0xe9, 0xf4, 0xc5, 0x94, 0x2a, 0x1f, 0xa2, 0xb5, 0x26, 0x1b, 0x71, 0xfa, 0x9e, 0x27, 0x7d, 0x09, ++ 0xec, 0x42, 0x06, 0xa3, 0x51, 0xc7, 0x89, 0x29, 0xe4, 0x15, 0xfa, 0x9e, 0xad, 0x31, 0x4f, 0xb2, ++ 0x97, 0x59, 0xfd, 0x82, 0x9a, 0x9e, 0xfe, 0xe3, 0xb9, 0x3e, 0x36, 0x2a, 0x51, 0x91, 0x15, 0xab, ++ 0xd1, 0xd6, 0x64, 0x60, 0x86, 0x16, 0x08, 0x5a, 0xe0, 0x34, 0xd7, 0xa1, 0x35, 0x09, 0xb1, 0xad, ++ 0x69, 0xe3, 0xf3, 0x66, 0xb6, 0x2f, 0xe9, 0x17, 0xee, 0xa6, 0x57, 0x1e, 0x12, 0x5d, 0x0f, 0x62, ++ 0x6a, 0x30, 0xb2, 0xca, 0x9f, 0x67, 0xf0, 0x63, 0x11, 0x1d, 0x2e, 0x83, 0x03, 0xee, 0xa0, 0x0b, ++ 0x43, 0x39, 0x5a, 0xd5, 0x67, 0x50, 0xdd, 0x25, 0x9b, 0x04, 0x6a, 0xef, 0x57, 0x8e, 0x96, 0xbd, ++ 0x41, 0x1a, 0x24, 0x1d, 0xe8, 0x20, 0x72, 0x7d, 0x31, 0xd6, 0x85, 0xb8, 0x49, 0xed, 0x5c, 0xf3, ++ 0xae, 0x8b, 0x63, 0x12, 0x90, 0xaf, 0xe2, 0x20, 0x2a, 0x78, 0x06, 0xbb, 0xf5, 0x6f, 0xbc, 0x28, ++ 0x0c, 0xca, 0xc7, 0xf5, 0xa4, 0xe3, 0x64, 0x13, 0x7a, 0xa9, 0x27, 0x31, 0x44, 0x89, 0xf9, 0x67, ++ 0x7c, 0x8e, 0x46, 0xde, 0x3f, 0xf1, 0xf3, 0x0e, 0x35, 0xf7, 0xa8, 0x87, 0xd1, 0xd5, 0xa2, 0xec, ++ 0x5e, 0xd8, 0xd4, 0xcb, 0x97, 0x8d, 0x3e, 0x9f, 0xad, 0x9b, 0xaf, 0xe9, 0xec, 0x49, 0x95, 0xc8, ++ 0x44, 0xac, 0xe7, 0x2a, 0x93, 0xf8, 0x59, 0xe1, 0xf3, 0xd8, 0x0e, 0xdc, 0x7a, 0xfb, 0x6e, 0x48, ++ 0x25, 0xc3, 0x2f, 0xea, 0x5c, 0xd4, 0x49, 0x55, 0xf0, 0xb0, 0x63, 0x5d, 0x10, 0xe9, 0xcf, 0xd1, ++ 0x09, 0x7c, 0x04, 0xc2, 0xdf, 0x3b, 0x4f, 0x8f, 0xb8, 0xa7, 0xac, 0x55, 0x77, 0x9f, 0xcb, 0xdc, ++ 0xbd, 0x83, 0x54, 0x31, 0x4b, 0xe1, 0xca, 0xd1, 0xcc, 0x9c, 0x0b, 0xdb, 0x14, 0x42, 0x8c, 0x74, ++ 0x9f, 0xd5, 0xc6, 0x24, 0xe3, 0x9d, 0x07, 0x40, 0x54, 0xf0, 0x0c, 0xb5, 0x29, 0xde, 0xbb, 0x50, ++ 0x2e, 0x9c, 0x55, 0xe0, 0x0c, 0x9f, 0xa9, 0x82, 0xe2, 0xc5, 0x20, 0x5f, 0x79, 0x15, 0xce, 0x43, ++ 0x1b, 0x84, 0x0c, 0x85, 0xa2, 0x4d, 0xd1, 0x52, 0x0b, 0x2a, 0x37, 0xff, 0x99, 0x62, 0x9e, 0xa7, ++ 0xd7, 0xb3, 0xe6, 0xfb, 0xd4, 0x86, 0x3a, 0xb2, 0xdd, 0x81, 0x25, 0x58, 0x17, 0xac, 0x2c, 0x7f, ++ 0x8a, 0xb8, 0x73, 0x9c, 0x6a, 0x43, 0x1d, 0x59, 0x8f, 0xa1, 0xf3, 0x2c, 0xea, 0x56, 0x16, 0xde, ++ 0x0d, 0x3a, 0xf8, 0x91, 0x02, 0xdb, 0xd2, 0x3f, 0x2f, 0xc0, 0xb1, 0xfb, 0x4b, 0x59, 0x9c, 0x40, ++ 0x50, 0x31, 0x6d, 0xf6, 0xbc, 0x1e, 0xf5, 0xd4, 0x7d, 0xe0, 0x67, 0x8f, 0xb6, 0xa3, 0xa6, 0xe1, ++ 0x24, 0x33, 0x10, 0x8e, 0xfa, 0xec, 0xff, 0x79, 0xa5, 0xd9, 0xf5, 0x97, 0x1f, 0x39, 0xaa, 0xf6, ++ 0xf2, 0x70, 0xc9, 0x11, 0x88, 0x52, 0x73, 0xe7, 0x2d, 0x31, 0x46, 0x05, 0x07, 0x45, 0xe3, 0xae, ++ 0x38, 0x22, 0xa1, 0xf4, 0xac, 0x09, 0xaa, 0xef, 0xc6, 0x2f, 0xa6, 0x5b, 0xab, 0x2e, 0xcc, 0xa4, ++ 0x7b, 0x1b, 0xfb, 0x21, 0xcb, 0x59, 0x77, 0xca, 0x5d, 0x2b, 0xcc, 0xb4, 0xfc, 0xa0, 0x5a, 0x19, ++ 0xa1, 0x92, 0xe5, 0x4b, 0x1d, 0x04, 0x9f, 0x47, 0xaf, 0x6a, 0x58, 0x17, 0xa0, 0x55, 0xea, 0x26, ++ 0xbe, 0x50, 0x15, 0x9d, 0x62, 0xa9, 0xd3, 0xa5, 0x33, 0x27, 0x72, 0x46, 0x05, 0xf1, 0x23, 0x1d, ++ 0xa7, 0xf7, 0x67, 0xd0, 0x4f, 0x94, 0xad, 0xaf, 0x92, 0xdf, 0xaa, 0xee, 0x82, 0xf0, 0x77, 0xf4, ++ 0x99, 0xb0, 0x44, 0xbf, 0xb1, 0x0d, 0x35, 0xa8, 0x69, 0x45, 0xfe, 0x4c, 0x0b, 0x7b, 0x26, 0x82, ++ 0xf1, 0xa3, 0x88, 0xbd, 0xa1, 0x1a, 0x6a, 0x93, 0xd2, 0x8a, 0x3f, 0x98, 0x16, 0xf6, 0x4c, 0xc7, ++ 0xeb, 0xd7, 0xbb, 0x5c, 0xa5, 0x6f, 0x0d, 0xed, 0x8c, 0xc9, 0x9e, 0xad, 0x80, 0x44, 0xb7, 0x47, ++ 0x39, 0xd2, 0x9e, 0x90, 0x0a, 0x31, 0x1c, 0xc3, 0x93, 0x46, 0x30, 0x91, 0xa4, 0xfe, 0xa9, 0x83, ++ 0xb7, 0x2c, 0x11, 0x5f, 0xbd, 0x92, 0x9c, 0x2a, 0x8b, 0x80, 0xde, 0x13, 0x72, 0x6e, 0xe8, 0xc1, ++ 0x1c, 0x11, 0xb1, 0x7a, 0x56, 0xe5, 0x55, 0x96, 0x63, 0xf6, 0x53, 0xcc, 0xb4, 0x17, 0x66, 0x52, ++ 0x01, 0xf0, 0x3f, 0x64, 0xa6, 0x38, 0xb6, 0x2c, 0x55, 0x69, 0x96, 0xca, 0x0f, 0xd0, 0x65, 0x27, ++ 0xef, 0x91, 0x47, 0x0f, 0x78, 0x8f, 0x90, 0x5d, 0x1b, 0xae, 0x83, 0x03, 0xbc, 0x82, 0xe0, 0xdb, ++ 0x1f, 0xc2, 0xf0, 0xd6, 0x7f, 0xad, 0x4c, 0xe2, 0x9c, 0x4d, 0x2a, 0x51, 0xa5, 0xa4, 0xc9, 0x3b, ++ 0x92, 0xef, 0x3e, 0xb5, 0xe1, 0x46, 0xd5, 0x7f, 0x7b, 0x30, 0xbd, 0x4e, 0x62, 0x87, 0x27, 0x10, ++ 0x1a, 0x74, 0x33, 0xe1, 0x04, 0x75, 0x67, 0x7e, 0x5e, 0x43, 0xa1, 0x35, 0x96, 0xb2, 0xfb, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x85, 0xa1, 0xf5, 0xc5, 0xe7, 0xe8, 0x60, 0x3e, 0x0a, 0xb3, 0xad, 0x80, 0xbf, 0x6c, 0x40, 0xd0, ++ 0x5c, 0xfb, 0xaa, 0x03, 0x18, 0xfd, 0x91, 0xc7, 0x07, 0x49, 0x40, 0xbe, 0xf2, 0x2a, 0x5f, 0x86, ++ 0xed, 0xb2, 0x39, 0xc7, 0xf7, 0xff, 0x3f, 0x05, 0xb1, 0x7c, 0x6c, 0x54, 0xa2, 0xe1, 0x2a, 0x95, ++ 0x56, 0x54, 0xef, 0x6d, 0xee, 0x8e, 0xc7, 0x3c, 0x40, 0x55, 0x95, 0x76, 0x94, 0x06, 0x3b, 0x33, ++ 0xc3, 0x2e, 0x6c, 0x27, 0xfb, 0x60, 0x96, 0x87, 0x53, 0xb9, 0x4c, 0x0b, 0xdb, 0xf4, 0xe4, 0xd6, ++ 0x0f, 0x19, 0x86, 0x59, 0x8d, 0xab, 0x7d, 0x67, 0x85, 0x12, 0x5e, 0xac, 0x55, 0x3a, 0x56, 0x0e, ++ 0xe8, 0x04, 0xfa, 0xf0, 0x8c, 0x27, 0x14, 0x99, 0x73, 0x72, 0xe7, 0x30, 0x91, 0xf7, 0x18, 0x2e, ++ 0xc2, 0xde, 0x53, 0x43, 0x5d, 0x58, 0x20, 0xab, 0x06, 0xd0, 0xda, 0xc1, 0xd4, 0x24, 0x81, 0xf1, ++ 0xd9, 0x5a, 0x5f, 0xc6, 0xff, 0x15, 0xf1, 0xf9, 0x0d, 0xfa, 0xed, 0x3e, 0x4d, 0x46, 0x1f, 0x56, ++ 0xe6, 0xed, 0x43, 0xcd, 0xa7, 0xb4, 0xdf, 0xd2, 0xa3, 0x09, 0x2f, 0x56, 0xcb, 0x1d, 0x2b, 0x07, ++ 0xb6, 0xdc, 0x2e, 0x3b, 0x1b, 0xaa, 0x2a, 0x06, 0xde, 0xe9, 0x48, 0xd9, 0x7d, 0xbe, 0x8d, 0xe6, ++ 0x11, 0x2b, 0x49, 0xeb, 0x54, 0x3e, 0x87, 0xa9, 0x4c, 0x36, 0xe2, 0x37, 0xff, 0x4e, 0xfa, 0x12, ++ 0xc6, 0x98, 0xaf, 0x10, 0x80, 0xb8, 0xbd, 0x1b, 0x91, 0xb7, 0xc7, 0x6f, 0xe8, 0xe2, 0xd6, 0x6d, ++ 0x55, 0x87, 0xae, 0xc1, 0xc7, 0xc6, 0xde, 0x48, 0xbf, 0xee, 0xec, 0xeb, 0x85, 0xb5, 0x94, 0x5a, ++ 0x94, 0x8a, 0xbc, 0x2e, 0xb3, 0xd6, 0xe7, 0x97, 0x46, 0x85, 0x4f, 0xb7, 0x40, 0x22, 0xba, 0xc2, ++ 0xb1, 0x49, 0x93, 0xc4, 0xef, 0x02, 0xae, 0xc2, 0xb6, 0x35, 0x2c, 0xea, 0x50, 0xcb, 0x75, 0x13, ++ 0x4b, 0xb5, 0x61, 0x73, 0x1e, 0x53, 0x24, 0x86, 0x76, 0xca, 0x50, 0x70, 0x2f, 0xc1, 0x38, 0x46, ++ 0xb9, 0xc5, 0xa8, 0x62, 0x96, 0x01, 0x57, 0x61, 0x5b, 0xfb, 0x16, 0x75, 0x28, 0x84, 0xdb, 0xe8, ++ 0x4f, 0xf3, 0x9d, 0x20, 0xc3, 0xb3, 0xb9, 0x36, 0xe1, 0xad, 0x4d, 0xde, 0x13, 0x07, 0x6f, 0xda, ++ 0xf6, 0x36, 0x35, 0x42, 0x55, 0xb2, 0xee, 0x57, 0xba, 0x56, 0x5b, 0xab, 0x3b, 0x83, 0xb4, 0x32, ++ 0x9b, 0x93, 0x3a, 0x77, 0x3e, 0x7d, 0x9a, 0xf0, 0xc3, 0x97, 0x11, 0x1b, 0x15, 0x18, 0xec, 0xcc, ++ 0xd2, 0x05, 0x25, 0xcc, 0xaf, 0x5e, 0x11, 0x2e, 0x1f, 0x8f, 0xae, 0x3c, 0x24, 0xba, 0x1e, 0xc4, ++ 0x7f, 0x5d, 0x07, 0x72, 0x16, 0xb9, 0xea, 0x7a, 0xca, 0x4c, 0xd1, 0x1a, 0xc0, 0x66, 0x0d, 0x85, ++ 0xde, 0xcf, 0xe2, 0x39, 0x0b, 0xbd, 0x75, 0x3d, 0x65, 0x26, 0x89, 0x0d, 0x60, 0x33, 0xe7, 0xa3, ++ 0x75, 0xf2, 0x42, 0x1c, 0xe0, 0xca, 0xbc, 0x81, 0x8d, 0x50, 0x04, 0xd2, 0xa6, 0x4a, 0x69, 0x30, ++ 0x14, 0x9d, 0x8a, 0xdc, 0x2f, 0xe6, 0xac, 0x35, 0x8e, 0x38, 0x69, 0x53, 0xcc, 0x58, 0xc8, 0xa9, ++ 0x20, 0x75, 0xec, 0xdd, 0x27, 0x0c, 0x62, 0xc9, 0x32, 0xbe, 0xe8, 0x39, 0x23, 0xff, 0xfd, 0x6a, ++ 0xdc, 0xec, 0x9c, 0xf1, 0x84, 0xcd, 0xda, 0x65, 0xcf, 0xf4, 0x66, 0x5a, 0x7e, 0x50, 0x2d, 0xed, ++ 0xac, 0xa8, 0x1d, 0xda, 0x1f, 0xdf, 0x4d, 0x78, 0x80, 0xaa, 0xe9, 0xec, 0xeb, 0x0c, 0x76, 0x66, ++ 0xab, 0x3d, 0xa0, 0x25, 0xeb, 0x77, 0xc9, 0xbc, 0xe8, 0x76, 0x8d, 0xdf, 0xc6, 0x79, 0x8e, 0x93, ++ 0xf8, 0xdf, 0x8c, 0x7f, 0x7e, 0x21, 0x25, 0x1c, 0x6a, 0x2d, 0x93, 0xcd, 0x61, 0x69, 0x87, 0x1b, ++ 0xfb, 0x0c, 0xcd, 0xd3, 0x57, 0x69, 0x3c, 0x68, 0x95, 0x96, 0xea, 0x50, 0x70, 0xda, 0x28, 0x72, ++ 0xcd, 0xc7, 0xd5, 0x1a, 0xd0, 0xf3, 0x5d, 0xcc, 0x83, 0xc2, 0x84, 0x6d, 0x81, 0x1e, 0xd7, 0xff, ++ 0xf0, 0x53, 0xb7, 0xd9, 0x07, 0x22, 0xdc, 0xbf, 0x87, 0xe3, 0xa9, 0x52, 0x19, 0x26, 0x29, 0xe0, ++ 0xee, 0x61, 0x78, 0x6b, 0xde, 0xb7, 0x26, 0x71, 0x4e, 0xc7, 0x15, 0xc9, 0xb3, 0x52, 0x85, 0xfc, ++ 0xce, 0x14, 0x94, 0xb6, 0xf9, 0xbb, 0x44, 0xb8, 0x7c, 0x79, 0xfd, 0xf0, 0x90, 0xad, 0x78, 0x96, ++ 0xe5, 0x3e, 0x02, 0x61, 0x8e, 0xfc, 0xc6, 0xa6, 0x5c, 0xb2, 0x56, 0xcb, 0xda, 0xae, 0x84, 0x6e, ++ 0x7d, 0x7e, 0x79, 0xba, 0x99, 0xc9, 0x45, 0x22, 0x60, 0x9e, 0x3e, 0x4d, 0xde, 0x05, 0xc7, 0xcb, ++ 0xb8, 0x35, 0x97, 0x06, 0x30, 0x39, 0xe1, 0x4d, 0x0e, 0x92, 0x80, 0xbf, 0x27, 0x54, 0xbe, 0xcf, ++ 0x04, 0x46, 0xfc, 0x53, 0xdd, 0xe0, 0x9d, 0xb0, 0x97, 0x67, 0x1d, 0xae, 0x3c, 0xc6, 0x57, 0x9c, ++ 0xaa, 0xcd, 0x9f, 0x41, 0x4d, 0x4f, 0x7f, 0x90, 0xbd, 0x1f, 0x1b, 0x15, 0xc9, 0xa9, 0xeb, 0xb4, ++ 0xf5, 0xe5, 0x74, 0xee, 0x7c, 0xfa, 0xf7, 0x23, 0x45, 0xed, 0x22, 0x36, 0x2a, 0x30, 0x1b, 0x5b, ++ 0xc7, 0x68, 0x90, 0x74, 0x26, 0x80, 0x0b, 0x37, 0xc4, 0xde, 0x51, 0xa5, 0xe7, 0x32, 0xb3, 0x4a, ++ 0xa0, 0x62, 0xda, 0x2f, 0xbb, 0x3c, 0x29, 0x6b, 0xfa, 0x03, 0xce, 0xdd, 0xaf, 0x85, 0x8f, 0x01, ++ 0x42, 0xc9, 0x65, 0xb1, 0xc1, 0x68, 0x6b, 0x09, 0xce, 0x6d, 0xfc, 0x25, 0x58, 0x5e, 0xf3, 0x9a, ++ 0xcb, 0xa2, 0x57, 0x81, 0x82, 0x63, 0x6f, 0x24, 0xbe, 0x77, 0x76, 0x94, 0xa3, 0xbb, 0x4a, 0x2d, ++ 0x71, 0xb4, 0xbe, 0x4f, 0x3d, 0x2a, 0x21, 0x31, 0x1a, 0x37, 0x19, 0x7c, 0x9a, 0x8c, 0x3e, 0xac, ++ 0xe3, 0x5b, 0x80, 0xfa, 0xdc, 0x6c, 0xf4, 0x4e, 0x61, 0x07, 0xa4, 0x32, 0xf8, 0x0b, 0x19, 0xbc, ++ 0xfd, 0x69, 0x4f, 0x48, 0x05, 0xf9, 0x0e, 0x80, 0xa8, 0x23, 0x18, 0xa9, 0x52, 0x7f, 0xb5, 0xa0, ++ 0x90, 0xcc, 0x40, 0x7d, 0x6e, 0x36, 0x7a, 0x27, 0xd1, 0xe2, 0x52, 0x19, 0x7c, 0xe4, 0xed, 0x5e, ++ 0x02, 0x23, 0x7e, 0xc8, 0x8f, 0x70, 0xaf, 0x58, 0xaa, 0xd2, 0xef, 0x57, 0x1e, 0x63, 0xca, 0x4e, ++ 0x26, 0x10, 0x6e, 0x46, 0x75, 0x9c, 0x50, 0x21, 0x0f, 0x0b, 0x1a, 0xc0, 0x01, 0x5a, 0x60, 0xb8, ++ 0x96, 0xa9, 0xc2, 0xe6, 0x3c, 0xa6, 0x48, 0xcf, 0xec, 0x57, 0xa0, 0xe0, 0x5e, 0x41, 0x70, 0x8c, ++ 0xcf, 0xe4, 0xab, 0xd2, 0x5f, 0x83, 0xf2, 0x94, 0x29, 0x10, 0x6b, 0x3a, 0x9f, 0x7d, 0x1d, 0xb1, ++ 0x89, 0x6b, 0x32, 0x30, 0x43, 0x0b, 0x04, 0x2d, 0x70, 0x1a, 0x8a, 0xb1, 0xfb, 0xe5, 0xb9, 0xb7, ++ 0x49, 0x96, 0x1f, 0xbb, 0x91, 0x23, 0x8b, 0xde, 0xdc, 0x18, 0xbf, 0x27, 0x31, 0xa2, 0xf2, 0x08, ++ 0x2f, 0x6c, 0x6a, 0x84, 0xaa, 0xa7, 0x1f, 0xae, 0xb7, 0xac, 0xb6, 0x95, 0x76, 0xc5, 0xab, 0x64, ++ 0x52, 0x12, 0x13, 0x3e, 0x33, 0x6e, 0x5a, 0x8c, 0xd7, 0x32, 0x88, 0xd8, 0xa8, 0xc0, 0x6c, 0xaf, ++ 0xb4, 0xff, 0x50, 0xf3, 0x94, 0xda, 0x85, 0x5e, 0x74, 0x3b, 0xa7, 0x8e, 0x63, 0xdd, 0x47, 0xa8, ++ 0x08, 0x8c, 0x3b, 0xa6, 0x79, 0x03, 0xf9, 0xa3, 0xed, 0xce, 0x3a, 0x9f, 0x78, 0x4f, 0xae, 0xfb, ++ 0x3f, 0xb7, 0x1c, 0x0b, 0x58, 0xa1, 0x2e, 0x2b, 0xae, 0xf3, 0xc2, 0x68, 0x86, 0x5b, 0x34, 0x51, ++ 0xd6, 0x43, 0xd9, 0x9f, 0x72, 0xbe, 0x8c, 0x9e, 0x88, 0xe8, 0xb3, 0x92, 0x18, 0x7c, 0x49, 0x58, ++ 0x23, 0xa6, 0xad, 0x71, 0x0e, 0x44, 0x7b, 0xbd, 0xcd, 0x05, 0x91, 0xa4, 0x32, 0x4c, 0x52, 0x03, ++ 0x4e, 0x03, 0xa2, 0x44, 0x65, 0x8b, 0x0f, 0x1a, 0xb4, 0xc4, 0xdb, 0x14, 0x1c, 0xd7, 0x0a, 0xfd, ++ 0x60, 0x9f, 0xf7, 0xa4, 0x69, 0x14, 0xa6, 0x98, 0x56, 0x01, 0xfb, 0x4b, 0x65, 0xc2, 0xc4, 0xbe, ++ 0x0b, 0x5f, 0x7a, 0x0a, 0x50, 0x4b, 0xe0, 0xd7, 0x12, 0x75, 0x43, 0x02, 0x69, 0xfc, 0x01, 0x92, ++ 0xc4, 0xbb, 0xd1, 0xd8, 0x0f, 0xc8, 0x12, 0x43, 0x3b, 0x65, 0x28, 0x38, 0xf6, 0x81, 0x1c, 0x23, ++ 0x35, 0x18, 0x59, 0x65, 0xae, 0xd2, 0x78, 0xd0, 0xe9, 0xef, 0x17, 0xa0, 0xe0, 0x77, 0x50, 0xe4, ++ 0x0e, 0xe9, 0xb9, 0x3d, 0x2b, 0x93, 0xcb, 0x4b, 0xd0, 0x7b, 0xc8, 0x66, 0x5a, 0xea, 0x33, 0x29, ++ 0x64, 0xd9, 0x0b, 0xf7, 0xb4, 0xf4, 0x3b, 0x28, 0xc1, 0x66, 0xe6, 0xe5, 0x59, 0x04, 0x93, 0x22, ++ 0x3b, 0xf1, 0xe0, 0x58, 0x85, 0x41, 0xb3, 0x9b, 0x39, 0x94, 0xdf, 0xc6, 0xba, 0x9d, 0x63, 0xcd, ++ 0x30, 0xae, 0x9a, 0x52, 0xd5, 0x0a, 0x53, 0x4c, 0x2b, 0xe1, 0x9c, 0xc4, 0xd3, 0x61, 0x62, 0x5f, ++ 0xc5, 0x4b, 0xee, 0xbc, 0xa9, 0xf0, 0xa4, 0x6f, 0x6e, 0x0c, 0xbe, 0xf2, 0xf9, 0x51, 0x79, 0x04, ++ 0x6b, 0xc0, 0x8d, 0xae, 0x39, 0x5f, 0x46, 0x4f, 0x44, 0x74, 0xb8, 0x49, 0x0c, 0x3e, 0xc5, 0x2c, ++ 0x91, 0x3c, 0x7f, 0x19, 0xc8, 0x0e, 0xcc, 0x0b, 0x84, 0x8b, 0xc4, 0xd3, 0x73, 0x34, 0x88, 0x79, ++ 0x4c, 0x20, 0xdc, 0x8c, 0xea, 0xfb, 0xa0, 0x42, 0x1e, 0x16, 0x34, 0x43, 0x02, 0xb4, 0xc0, 0xb3, ++ 0xb2, 0x9a, 0xd2, 0x68, 0xc6, 0x4a, 0xb7, 0xb6, 0x49, 0x8e, 0x55, 0x77, 0x41, 0x78, 0xda, 0x7a, ++ 0xfe, 0xba, 0x0e, 0xe4, 0x2c, 0xb1, 0x17, 0xf4, 0x57, 0x98, 0x61, 0x34, 0x43, 0xcc, 0x1a, 0xc9, ++ 0xe7, 0x1d, 0x7c, 0xa9, 0x01, 0x8c, 0x69, 0xfe, 0xf6, 0x60, 0xb9, 0x9c, 0xc4, 0xcd, 0x4e, 0x20, ++ 0x27, 0xe0, 0x51, 0x22, 0xd3, 0xa4, 0xe6, 0x0d, 0x5a, 0x62, 0x8c, 0x0a, 0x0e, 0x8a, 0x05, 0x9f, ++ 0x8c, 0xdd, 0xf1, 0x07, 0x38, 0xd3, 0x2f, 0xb1, 0xb2, 0x14, 0x01, 0xd5, 0xc8, 0xf3, 0x8b, 0x0c, ++ 0x3e, 0x47, 0x23, 0x6f, 0xfe, 0x99, 0x98, 0x07, 0xfb, 0x9a, 0x54, 0xa2, 0x89, 0x8b, 0x51, 0x76, ++ 0x29, 0x09, 0xe8, 0x1f, 0xf8, 0x37, 0x2d, 0x46, 0x8a, 0x19, 0x44, 0x6c, 0x54, 0x60, 0x36, 0xb6, ++ 0x72, 0x67, 0xff, 0xe3, 0x14, 0x62, 0x38, 0x45, 0xe5, 0x8c, 0x60, 0xe1, 0x8b, 0x3f, 0x91, 0xc5, ++ 0x2c, 0xbf, 0x2b, 0x28, 0x83, 0xef, 0x06, 0xda, 0x48, 0x17, 0xcf, 0x08, 0x67, 0x76, 0x04, 0x0d, ++ 0xa4, 0x24, 0x26, 0x7c, 0x66, 0xdc, 0xb4, 0xdb, 0x6d, 0x64, 0xd3, 0x73, 0x93, 0x43, 0xd8, 0x9d, ++ 0x8e, 0xfe, 0x8f, 0xcf, 0xb7, 0xa3, 0x80, 0xe9, 0x18, 0xc6, 0xee, 0x82, 0xd6, 0x90, 0x41, 0x42, ++ 0x51, 0xc1, 0x52, 0x92, 0x1a, 0x26, 0x43, 0xf8, 0x28, 0x89, 0xf1, 0x45, 0xb9, 0x73, 0xc3, 0xc6, ++ 0xc8, 0x71, 0x16, 0x2d, 0xab, 0x2b, 0x76, 0x50, 0x41, 0xcc, 0x0f, 0x09, 0xb2, 0x08, 0xe5, 0x44, ++ 0x16, 0xbe, 0xf4, 0x14, 0xa0, 0x96, 0x03, 0x6d, 0x24, 0xea, 0x86, 0x04, 0xd2, 0x3b, 0x02, 0xe7, ++ }, ++ { /* 15 */ ++ 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, 0x87, 0x93, 0x1b, 0xc9, 0xae, 0xb5, 0xfc, ++ 0x08, 0xe0, 0x8c, 0xb2, 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, 0xf8, 0xfe, 0xf2, 0x0a, 0xee, ++ 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, 0xc0, 0xbd, 0xca, 0xef, 0x4e, 0x88, 0xc7, 0x89, 0xdd, ++ 0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, 0x93, 0x13, 0xc0, 0x11, ++ 0x38, 0xe5, 0x22, 0x98, 0x65, 0x46, 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, 0xad, 0xbf, 0x9b, 0x36, 0xcf, ++ 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, 0x97, 0x29, 0x2f, 0xcb, 0xc0, 0xef, 0x6e, ++ 0x1f, 0xb7, 0xc2, 0x06, 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, 0x96, 0x0f, 0xfe, 0x68, 0x31, ++ 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, 0xa3, 0xc5, 0x09, 0xaa, 0x16, ++ 0x32, 0x3d, 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, 0x6b, 0x9f, 0xb4, 0xdf, 0xfb, ++ 0x7c, 0x99, 0x8e, 0x18, 0x37, 0x9b, 0xf7, 0x20, 0xd4, 0x23, 0x72, 0x1d, 0x3c, 0x7e, 0x63, 0xc4, ++ 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, 0x55, 0x9b, 0x7b, 0x42, 0x30, 0x4b, 0xfa, ++ 0x02, 0x38, 0x23, 0xcd, 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, 0x3e, 0xde, 0xdd, 0xe3, 0xda, ++ 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, 0x6a, 0x16, 0x03, 0xc5, 0x75, 0x38, 0xa2, 0xd7, 0x23, ++ 0x12, 0x3b, 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, 0x0d, 0xe1, 0xfa, 0xf7, 0xc5, ++ 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, 0xf2, 0x55, 0x15, 0x04, ++ 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, 0x94, 0xec, 0x5a, 0xf3, 0x62, 0x38, 0x4d, ++ 0xc1, 0x08, 0x0d, 0x2f, 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, 0x88, 0xa8, 0xe8, 0x60, 0xe9, ++ 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, 0xdc, 0x19, 0x7e, 0xb4, 0x7c, 0x7f, 0x79, 0x05, 0x77, ++ 0x76, 0x41, 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, 0xdb, 0x1c, 0x51, 0x8a, 0xf0, ++ 0x6c, 0x9a, 0x55, 0xbf, 0x19, 0xaf, 0xa8, 0xd6, 0xb0, 0x18, 0xe7, 0x2e, 0x03, 0x59, 0x77, 0xdb, ++ 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, 0x37, 0x07, 0x24, 0xdf, 0xea, 0xce, 0x93, ++ 0x0f, 0xb4, 0x19, 0xa1, 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, 0xa5, 0x30, 0xd9, 0x7c, 0x2e, ++ 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, 0xa7, 0x2b, 0x82, 0x1f, 0x84, 0x81, 0x8b, 0x0f, 0x99, ++ 0xe0, 0x12, 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, 0xf1, 0xb9, 0x29, 0xd8, 0xba, ++ 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, 0x18, 0x8d, 0x3e, 0x17, ++ 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, 0x8d, 0x48, 0xe6, 0x59, 0xe4, 0x02, 0x36, ++ 0x18, 0xe3, 0x57, 0x15, 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, 0xcb, 0xc1, 0xd5, 0x1e, 0xf1, ++ 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, 0x75, 0x60, 0xa6, 0x67, 0xe1, 0x64, 0xad, 0x4c, 0xbb, ++ 0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, 0xbc, 0xc2, 0x41, 0x14, ++ 0xe4, 0x62, 0xce, 0x7c, 0xbd, 0xd6, 0xdb, 0x11, 0x24, 0xff, 0x6e, 0x8d, 0xc6, 0x50, 0xdd, 0xcd, ++ 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, 0xef, 0xd4, 0xb9, 0xc4, 0x3e, 0x87, 0x5f, ++ 0x69, 0xf6, 0xe3, 0x61, 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, 0x4d, 0x13, 0xaf, 0xe2, 0xc1, ++ 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, 0x04, 0xfb, 0x3c, 0x9f, 0x4b, 0xe6, 0x7f, 0x34, 0xf9, ++ 0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, 0x69, 0x3d, 0x7e, 0x18, ++ 0xf7, 0x45, 0xc6, 0x91, 0x3d, 0x97, 0x3f, 0xbe, 0x3a, 0x05, 0x8c, 0x9f, 0x48, 0x25, 0xba, 0x65, ++ 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, 0x54, 0xd8, 0xe9, 0xeb, 0xef, 0x06, 0x5a, ++ 0x85, 0x74, 0xa1, 0xaf, 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, 0x38, 0x2b, 0x0d, 0x35, 0xe2, ++ 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, 0x3f, 0xa2, 0x86, 0xd0, 0x89, 0x60, 0x71, 0xf8, 0x5c, ++ 0x66, 0x42, 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, 0xe8, 0x23, 0x76, 0x9e, 0xef, ++ 0x30, 0x05, 0xae, 0x2a, 0x72, 0x5c, 0xe1, 0xd9, 0xac, 0x4d, 0x7c, 0x55, 0x41, 0x69, 0x3c, 0x21, ++ 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, 0x4c, 0x3f, 0xc7, 0xe8, 0xb6, 0x71, 0x81, ++ 0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, 0x9b, 0x68, 0x6b, 0x1c, ++ 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, 0x9c, 0x72, 0x38, 0x50, 0x46, 0x07, 0x85, 0xc3, 0x3c, ++ 0x60, 0x0a, 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, 0xaa, 0x82, 0xd2, 0x78, 0x42, ++ 0xff, 0xa5, 0x4a, 0x23, 0x2a, 0x8d, 0xf1, 0xc5, 0x08, 0xf9, 0x27, 0x67, 0xb6, 0xd7, 0xb0, 0x8b, ++ 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, 0x10, 0xdd, 0x84, 0x94, 0x01, ++ 0xea, 0xca, 0x27, 0x5a, 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, 0x37, 0x99, 0x06, 0x31, 0x8e, ++ 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, 0xe5, 0xdc, 0xda, 0x55, 0x7a, 0x8a, 0xa9, 0xd3, 0x4f, ++ 0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, 0x2f, 0xd1, 0x81, 0x05, ++ 0xc0, 0x14, 0xfd, 0xa8, 0x0b, 0xb3, 0x02, 0xe2, 0xf5, 0xf7, 0x33, 0x97, 0xc7, 0x67, 0xf0, 0x84, ++ 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, 0x20, 0x79, 0xcb, 0xeb, 0x02, ++ 0xb4, 0x6d, 0xff, 0x02, 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, 0x72, 0x05, 0xeb, 0x99, 0xae, ++ 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, 0xef, 0x75, 0xbc, 0x06, 0x28, 0xf6, 0x89, 0xa1, 0xe3, ++ 0xc8, 0xf4, 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, 0x6f, 0x39, 0x95, 0xfa, 0x6a, ++ 0x84, 0x68, 0x51, 0x28, 0x59, 0x6e, 0xda, 0x60, 0xbf, 0x65, 0x96, 0x27, 0x44, 0x82, 0xa5, 0x8f, ++ 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, 0x01, 0x43, 0x92, 0xa9, 0xdf, 0x4d, 0xa0, ++ 0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, 0x8b, 0x9e, 0xfe, 0x06, ++ 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, 0xb0, 0x83, 0xe5, 0x55, 0x0b, ++ 0xba, 0xc5, 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, 0xc8, 0x5a, 0xbd, 0x75, 0xed, ++ 0x62, 0x32, 0xbc, 0x99, 0x91, 0x5f, 0xd3, 0x1f, 0x76, 0xa5, 0xa2, 0x94, 0x5c, 0x0f, 0x9b, 0x98, ++ 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, 0x85, 0x15, 0xfc, 0x58, 0xd3, 0x2f, 0x7f, ++ 0x53, 0x2b, 0xe2, 0x34, 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, 0xde, 0x72, 0xe9, 0x37, 0xd4, ++ 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, 0x5f, 0x1d, 0xe3, 0x46, 0xae, 0x24, 0xf3, 0x5d, 0xd3, ++ 0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, 0x3f, 0x27, 0x14, 0x1f, ++ 0x1d, 0x8f, 0xe1, 0xcb, 0x08, 0xb1, 0x9f, 0x66, 0xd8, 0x47, 0xa7, 0xa8, 0xd1, 0x23, 0x8b, 0xeb, ++ 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, 0xc3, 0xf1, 0xc6, 0x20, 0x2f, 0xe9, 0x34, ++ 0xd3, 0x33, 0xf5, 0x45, 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, 0x85, 0x49, 0x12, 0x97, 0x2c, ++ 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, 0xab, 0xe5, 0xc6, 0x7d, 0x59, 0x68, 0x0a, 0x53, 0x51, ++ 0x73, 0x2d, 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, 0xb8, 0x0c, 0xa7, 0x1f, 0xea, ++ 0xf1, 0x0d, 0xa3, 0x05, 0xa2, 0x7d, 0x8a, 0x0c, 0xce, 0x44, 0x62, 0xdd, 0xe9, 0x81, 0x5c, 0xc8, ++ 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, 0x2f, 0xe0, 0x0a, 0xdc, 0xb3, 0xb9, 0x48, ++ 0xa1, 0x02, 0x92, 0x7b, 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, 0x22, 0x2a, 0x3a, 0x18, 0xab, ++ 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, 0x86, 0xb1, 0xae, 0x3a, 0xfb, 0x65, 0x9a, 0x61, 0xf2, ++ 0x74, 0x79, 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, 0xe5, 0xc2, 0x8c, 0x69, 0x2a, ++ 0x14, 0x73, 0x9d, 0xfe, 0xc4, 0x39, 0x38, 0x2a, 0x7d, 0x45, 0x21, 0x4f, 0x40, 0x5e, 0x11, 0x68, ++ 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, 0x4f, 0xfa, 0xb2, 0xd0, 0x14, 0xa6, 0xa2, ++ 0x95, 0x77, 0x7a, 0x08, 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, 0x0b, 0x14, 0x2a, 0x21, 0xfd, ++ 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, 0x8a, 0x7f, 0xea, 0x58, 0x26, 0x8c, 0x1b, 0x3d, 0x3a, ++ 0x56, 0x47, 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, 0xbd, 0x62, 0x1f, 0xa2, 0xce, ++ 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, 0x9e, 0xa1, 0xa9, 0x79, 0xd8, 0xd3, 0x9d, 0x1b, 0xd4, 0x49, 0xcc, ++ 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, 0x8f, 0xce, 0x01, 0xc8, 0x99, 0x98, 0xb5, ++ 0xcd, 0x98, 0xc7, 0xc4, 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, 0x0c, 0x29, 0x63, 0x6f, 0x70, ++ 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, 0xe0, 0xac, 0x34, 0xd4, 0x0e, ++ 0x34, 0x75, 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, 0x29, 0x3e, 0x10, 0x39, 0x56, ++ 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, 0x27, 0xaa, 0x2a, 0x08, ++ 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, 0xc0, 0xd5, 0xff, 0x3f, 0x0c, ++ 0x6a, 0xd2, 0x30, 0x2b, 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, 0x6c, 0xa2, 0xfd, 0x91, 0x76, ++ 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, 0xe3, 0x37, 0x5c, 0xbf, 0x12, ++ 0xf5, 0x7d, 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, 0xa1, 0x96, 0xf8, 0x59, 0xbf, ++ 0x11, 0x1f, 0x2b, 0x20, 0xf5, 0xa6, 0x36, 0xc1, 0xf3, 0xc5, 0xb8, 0x2c, 0x50, 0xa8, 0x84, 0x72, ++ 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, 0xf3, 0xea, 0xd8, 0x2b, 0x13, ++ 0x75, 0x65, 0xf2, 0x2d, 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, 0xfa, 0xad, 0x03, 0xf9, 0x47, ++ 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, 0xba, 0xc1, 0x39, 0x13, 0xd4, 0xae, 0x5a, 0x8e, 0x9c, ++ 0x03, 0x24, 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, 0x21, 0xb1, 0x52, 0x73, 0xb7, ++ 0x70, 0x09, 0x44, 0xf3, 0xca, 0x8c, 0x5e, 0x87, 0xff, 0xa1, 0x6d, 0x99, 0xbd, 0xf5, 0x6c, 0x5d, ++ 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, 0x9e, 0x37, 0xa7, 0x63, 0x28, 0x8f, 0x87, ++ 0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, 0x61, 0x46, 0xd5, 0x15, ++ 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, 0x9e, 0xee, 0x26, 0xfe, 0x82, 0x74, 0x5b, 0xd9, 0xa1, ++ 0x33, 0x21, 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, 0x74, 0xf0, 0x3b, 0x4f, 0x96, ++ 0xc6, 0x5c, 0x98, 0x3c, 0x94, 0x59, 0xb7, 0x50, 0x01, 0xb6, 0xdd, 0xd5, 0x66, 0xc3, 0x16, 0x29, ++ 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, 0xc3, 0x4e, 0x97, 0x54, 0x10, ++ 0x89, 0xe4, 0x6b, 0x44, 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, 0xbc, 0xaa, 0x86, 0x3a, 0x7b, ++ 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, 0xac, 0xcc, 0xeb, 0x1b, 0xb4, 0x25, 0xc4, 0x70, 0x9a, ++ 0xce, 0xbc, 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, 0x2d, 0x98, 0x31, 0x1c, 0xc7, ++ 0xc4, 0x64, 0xbb, 0xf1, 0xe1, 0xbe, 0x65, 0x3e, 0xec, 0x89, 0x87, 0xeb, 0xb8, 0x1e, 0xf5, 0xf3, ++ 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, 0x79, 0xbe, 0x04, 0xa6, 0x21, 0x25, 0x91, ++ 0x3b, 0xc1, 0xf1, 0xd2, 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, 0x8c, 0x0e, 0xc9, 0x45, 0x78, ++ 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, 0x84, 0x2d, 0xb0, 0x94, 0x3f, 0x16, 0x44, 0x7b, 0x6f, ++ 0x77, 0x5d, 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, 0xc4, 0x73, 0xde, 0x1a, 0x9d, ++ 0xc5, 0x78, 0x4b, 0x76, 0x3a, 0x2c, 0x0c, 0x09, 0x7b, 0x77, 0xaa, 0xf4, 0xd7, 0x91, 0x65, 0x9e, ++ 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, 0x7a, 0x7b, 0x71, 0x9e, 0x83, 0xf2, 0xb2, ++ 0xa4, 0x6e, 0x24, 0xa5, 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, 0x41, 0x3a, 0xcc, 0x8d, 0xb1, ++ 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, 0x03, 0xd2, 0x11, 0xf9, 0xa6, 0xab, 0xb1, 0x17, 0x32, ++ 0xd8, 0xf7, 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, 0x5c, 0x06, 0xb2, 0xee, 0x75, ++ 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, 0xb4, 0xb9, 0xea, 0x19, ++ 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, 0x1f, 0xed, 0x56, 0xda, 0x01, 0x57, 0x3d, ++ 0x49, 0xf0, 0x96, 0xec, 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, 0x2b, 0x6d, 0xe1, 0xca, 0xff, ++ 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, 0xad, 0x82, 0xe4, 0x4c, 0xd6, 0xfd, 0xab, 0x7d, 0x35, ++ 0x91, 0x07, 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, 0x77, 0x6b, 0x53, 0x24, 0x8a, ++ 0x9c, 0x8b, 0x06, 0x3d, 0x60, 0x40, 0x4b, 0xed, 0xe9, 0xa2, 0xa8, 0xec, 0x85, 0x57, 0xbb, 0x7e, ++ 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, 0xfe, 0x2d, 0x1f, 0x6f, 0x8f, 0x90, 0x6d, ++ 0xe8, 0xf2, 0x04, 0x97, 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, 0x09, 0x47, 0xdb, 0xd2, 0x54, ++ 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, 0x93, 0x6e, 0x6d, 0xcb, 0x3d, 0x45, 0xb5, 0x88, 0xc6, ++ 0xbb, 0xd9, 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, 0xd7, 0x35, 0x32, 0xe5, 0x80, ++ 0xb5, 0x71, 0x0f, 0x85, 0xf0, 0xa0, 0x52, 0x8e, 0x84, 0xd6, 0xc7, 0x6d, 0x6a, 0x64, 0x09, 0xc3, ++ 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, 0x74, 0x6f, 0x81, 0xef, 0x33, 0xb2, 0xbd, ++ 0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, 0x08, 0x7b, 0xab, 0x0d, ++ 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, 0xbd, 0xe8, 0x14, 0x75, 0x39, 0xe3, 0x94, 0xad, 0x57, ++ 0x17, 0x57, 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, 0x6e, 0xf1, 0x0c, 0x62, 0xdf, ++ 0x63, 0x2e, 0x4c, 0x1e, 0x4a, 0xcd, 0xba, 0x28, 0xe1, 0x5b, 0x8f, 0x8b, 0x33, 0x80, 0x0b, 0xf5, ++ 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, 0xf6, 0x70, 0x05, 0x6e, 0xb8, 0xbd, 0x24, ++ 0x7d, 0x85, 0x7e, 0x9f, 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, 0x02, 0x53, 0xf1, 0xf3, 0xa9, ++ 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, 0x2f, 0xc8, 0x76, 0xe9, 0x66, 0x7e, 0x4e, 0x28, 0x3e, ++ 0x13, 0x27, 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, 0x12, 0x8e, 0x75, 0x67, 0xa8, ++ 0x0e, 0xa8, 0xe9, 0x26, 0x88, 0xf0, 0x7b, 0xc9, 0xc6, 0xbd, 0x45, 0xba, 0x5f, 0x56, 0xec, 0x43, ++ 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, 0x63, 0xdf, 0xcd, 0x34, 0x05, 0xc8, 0xc9, ++ 0xe1, 0x0e, 0x78, 0xa2, 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, 0xee, 0xd6, 0xa6, 0x48, 0xd7, ++ 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, 0x43, 0xb9, 0x57, 0x1d, 0x9c, 0xd3, 0x4d, 0xd1, 0x79, ++ 0x8f, 0xac, 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, 0xfe, 0x0b, 0x22, 0xdc, 0xd6, ++ 0xd1, 0x0b, 0xd6, 0x88, 0xfe, 0x15, 0x34, 0x23, 0x06, 0x32, 0x8b, 0xbb, 0x97, 0xcf, 0x74, 0xf6, ++ 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, 0xec, 0x11, 0xcc, 0xfc, 0x9c, 0x50, 0x7c, ++ 0x82, 0x20, 0x34, 0xbc, 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, 0x65, 0xe5, 0x26, 0x43, 0x22, ++ 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, 0xc6, 0xda, 0xe8, 0xde, 0xc1, 0x1d, 0x66, 0xa7, 0xb9, ++ 0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, 0xa4, 0x4f, 0x7f, 0x03, ++ 0x59, 0xf3, 0x4d, 0x4b, 0x5a, 0x6c, 0x47, 0xe4, 0x92, 0xd5, 0x02, 0x18, 0x52, 0xc6, 0xde, 0xe0, ++ 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, 0xf0, 0x71, 0xb0, 0x40, 0x0f, ++ 0xd4, 0x67, 0x60, 0x56, 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, 0xd8, 0x87, 0x39, 0xe1, 0xec, ++ 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, 0xcb, 0x5a, 0xa3, 0xeb, 0x7e, 0x2c, 0x88, 0xf6, 0xde, ++ 0xe7, 0x46, 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, 0xac, 0x77, 0x02, 0xae, 0x7a, ++ 0xef, 0xa6, 0x91, 0x84, 0x04, 0xb9, 0xae, 0x33, 0x6c, 0xc2, 0xb2, 0x54, 0x89, 0xf0, 0xa4, 0x94, ++ 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, 0x34, 0xc2, 0x51, 0xe7, 0x48, 0x19, 0xb0, ++ 0x47, 0x58, 0x7f, 0xca, 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, 0x91, 0x32, 0xb7, 0x26, 0xbc, ++ 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, 0x78, 0xe0, 0xed, 0x52, 0x5e, 0x55, 0x43, 0x1d, 0xdc, ++ 0xaf, 0xaa, 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, 0x98, 0x75, 0x6c, 0xf4, 0xe8, ++ 0xa8, 0xfe, 0xee, 0x4e, 0xf8, 0x11, 0xcd, 0xe8, 0x5c, 0x91, 0x60, 0xc5, 0xbb, 0x47, 0x82, 0x28, ++ 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, 0xe1, 0xc0, 0x49, 0xb5, 0x8e, 0xc7, 0x50, ++ 0xed, 0x9e, 0xb2, 0x49, 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, 0x6a, 0x57, 0x2d, 0x47, 0x4e, ++ 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, 0xbb, 0x8f, 0x36, 0x44, 0xb6, 0x76, 0x35, 0x83, 0x33, ++ 0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, 0x5e, 0x61, 0xc1, 0x0a, ++ 0x96, 0x53, 0xa9, 0x42, 0x02, 0xbd, 0x57, 0xf8, 0x36, 0x61, 0x59, 0x2a, 0xa5, 0x78, 0x52, 0x4a, ++ 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, 0xf4, 0xf6, 0xe2, 0xff, 0xc5, 0x27, 0xa7, ++ 0x5d, 0x83, 0x0b, 0x12, 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, 0x64, 0x2d, 0xbf, 0xdb, 0x97, ++ 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, 0xa3, 0xd0, 0xbe, 0x80, 0xcf, 0x67, 0xf4, 0x3b, 0x60, ++ 0x7f, 0xbd, 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, 0x3c, 0x8d, 0x2c, 0x10, 0x73, ++ 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, 0xe2, 0xa3, 0x80, 0x1e, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x3e, 0xad, 0x47, 0x0c, 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, 0xef, 0x1e, 0x3f, 0xd0, 0x62, ++ 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, 0x67, 0x96, 0x48, 0xf0, 0xca, 0x09, 0x4c, 0x86, 0x44, ++ 0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, 0x10, 0xf6, 0x95, 0x1a, ++ 0x3c, 0x95, 0x64, 0xc1, 0x8f, 0x4b, 0x48, 0x7e, 0x87, 0xcf, 0x63, 0xd1, 0xc0, 0xe2, 0x33, 0xb8, ++ 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, 0xa4, 0xe1, 0x06, 0xf5, 0xd0, 0xd6, 0x38, ++ 0x67, 0x5e, 0x0a, 0x47, 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, 0xf7, 0x4c, 0xf9, 0x0e, 0x82, ++ 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, 0x06, 0x67, 0x22, 0x31, 0x8f, 0x95, 0xa1, 0x2e, 0x64, ++ 0xab, 0xda, 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, 0xe4, 0x0a, 0x15, 0xf1, 0x9f, ++ 0xf9, 0xed, 0x2f, 0xb7, 0xb5, 0x67, 0x44, 0x77, 0xfc, 0xb8, 0xc9, 0x25, 0x17, 0x73, 0x56, 0x26, ++ 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, 0xf3, 0xfc, 0x9a, 0x26, 0x9d, 0x07, 0x41, ++ 0x06, 0x48, 0x65, 0x94, 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, 0x42, 0xa1, 0xa4, 0xe6, 0xad, ++ 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, 0xdf, 0xcb, 0x6f, 0x4d, 0xda, 0xd4, 0xc8, 0x12, 0x45, ++ 0x1b, 0xc7, 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, 0xea, 0x70, 0x87, 0x6d, 0x46, ++ 0x48, 0xec, 0x66, 0x6b, 0xaf, 0xca, 0x71, 0x25, 0x61, 0x10, 0xba, 0x34, 0x02, 0x6e, 0x5a, 0x92, ++ 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, 0x9f, 0x74, 0x35, 0xca, 0xf7, 0xc2, 0x27, ++ 0xc2, 0x2c, 0xde, 0x65, 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, 0xa9, 0x19, 0xba, 0x13, 0x5e, ++ 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, 0x0e, 0x52, 0x5a, 0xcc, 0x19, 0x9a, 0x5f, 0x46, 0x55, ++ 0x61, 0x16, 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, 0xb5, 0xed, 0x5d, 0xe8, 0x2f, ++ 0x36, 0x4d, 0xcb, 0xbe, 0xed, 0xb6, 0x54, 0x6b, 0x58, 0x0c, 0x92, 0x17, 0xe0, 0xcd, 0xda, 0x8c, ++ 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, 0x68, 0x47, 0xa2, 0x0d, 0x90, 0x32, 0xa3, ++ 0xf0, 0x11, 0x53, 0x82, 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, 0xc2, 0x86, 0x0e, 0xcc, 0xa5, ++ 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, 0xe6, 0x0e, 0xcb, 0xac, 0xdc, 0x21, 0x18, 0xc4, 0x7d, ++ 0x7a, 0xd1, 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, 0x5f, 0x9d, 0xda, 0x85, 0x69, ++ 0x3d, 0x89, 0x94, 0x46, 0x54, 0xd9, 0x21, 0x49, 0x10, 0x31, 0x4e, 0xce, 0xaf, 0x6d, 0xa3, 0xd5, ++ 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, 0xe5, 0x0f, 0x44, 0x54, 0x74, 0x30, 0x95, ++ 0x35, 0x69, 0x18, 0xf4, 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, 0x36, 0x51, 0x9f, 0xa9, 0x3b, ++ 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, 0x70, 0x56, 0x1a, 0x6a, 0x07, ++ 0x65, 0x66, 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, 0xc9, 0x92, 0x24, 0xed, 0x58, ++ 0x78, 0xe9, 0xc8, 0x41, 0xdd, 0x96, 0x90, 0xfc, 0xcd, 0x5d, 0xc6, 0x61, 0x43, 0x07, 0x66, 0xb3, ++ 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, 0xd4, 0x41, 0x8a, 0xfb, 0x19, 0x93, 0x40, ++ 0x1c, 0x93, 0x11, 0x4c, 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, 0xb7, 0xbe, 0xac, 0x1b, 0x86, ++ 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, 0x0a, 0xa9, 0x66, 0x53, 0x52, 0x7c, 0x20, 0x72, 0xac, ++ 0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, 0x46, 0xec, 0xff, 0x1d, ++ 0xbf, 0xa9, 0xa0, 0xfa, 0x92, 0x5d, 0x4e, 0x9b, 0x5b, 0x15, 0x36, 0xab, 0x4a, 0x4b, 0xe0, 0xf7, ++ 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, 0x5f, 0x40, 0x86, 0xd2, 0x7a, 0xfc, 0x30, ++ 0xb8, 0xfd, 0x35, 0xe9, 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, 0xf6, 0x84, 0x60, 0x96, 0x37, ++ 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, 0x21, 0x9a, 0x2c, 0x25, 0x7f, 0xe4, 0x11, 0x6e, 0x6b, ++ 0x22, 0x3e, 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, 0x58, 0xa0, 0x93, 0xcb, 0xe4, ++ 0x4d, 0x80, 0xd0, 0xb5, 0x9e, 0x55, 0x7f, 0xce, 0xef, 0x90, 0x23, 0x57, 0x12, 0x98, 0xcf, 0x88, ++ 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, 0x56, 0x5e, 0x0e, 0x7a, 0x92, 0x9c, 0xd9, ++ 0x90, 0x1b, 0xcc, 0xd6, 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, 0x68, 0x04, 0xdc, 0xb4, 0xe7, ++ 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, 0x76, 0xb2, 0xb7, 0x9e, 0x47, 0xcf, 0x1c, 0x5b, 0x89, ++ 0x37, 0x51, 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, 0x08, 0x8f, 0x42, 0x4a, 0xe1, ++ 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, 0xcd, 0x72, 0x01, 0x1b, ++ 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, 0x02, 0x86, 0xe7, 0x91, 0x7d, 0x9a, 0x83, ++ 0x24, 0x76, 0x33, 0xd4, 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, 0x1a, 0x01, 0x37, 0x2d, 0x49, ++ 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, 0xee, 0x3b, 0xb3, 0x51, 0x4a, 0x2e, 0xe6, 0xac, 0x4c, ++ 0x4e, 0xa4, 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, 0x76, 0xa3, 0xca, 0xbc, 0x3f, ++ 0x80, 0x18, 0x17, 0x71, 0xb3, 0x63, 0xbd, 0xbc, 0xa6, 0x1b, 0x22, 0x5b, 0x3b, 0xfb, 0xa0, 0xf8, ++ 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, 0xc9, 0x2a, 0x3b, 0xb0, 0x65, 0x5e, 0xfe, ++ 0x58, 0xef, 0xbd, 0xcc, 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, 0x07, 0x3d, 0x49, 0x4e, 0x8d, ++ 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, 0x18, 0x5f, 0x88, 0xc4, 0x79, 0x11, 0xc1, 0xb8, 0x53, ++ 0xcf, 0xa0, 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, 0x32, 0xf7, 0xbe, 0x8c, 0xaa, ++ 0x94, 0x6b, 0x8a, 0x8f, 0x77, 0x5a, 0x85, 0x96, 0xdb, 0x5e, 0x03, 0x14, 0x7b, 0xa5, 0xb1, 0x90, ++ 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, 0x0a, 0xdb, 0xfd, 0x90, 0x4a, 0xb7, 0xca, ++ 0xde, 0xbf, 0xcf, 0x29, 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, 0x1e, 0xa7, 0x16, 0x08, 0xd8, ++ 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, 0x5a, 0xa8, 0xd0, 0x8e, 0x87, 0x1a, 0xe3, 0x64, 0x85, ++ 0x8c, 0x88, 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, 0xdf, 0xba, 0x70, 0xaf, 0x61, ++ 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, 0x9c, 0xed, 0xa8, 0x20, ++ 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, 0xac, 0xbc, 0x1c, 0xf4, 0xe7, 0xfb, 0x71, ++ 0x2b, 0xc2, 0x2a, 0x75, 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, 0xbf, 0x31, 0xee, 0x51, 0x67, ++ 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, 0x83, 0x04, 0x9d, 0xf2, 0xd2, 0x5b, 0x8a, 0x58, 0xa4, ++ 0xbd, 0x91, 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, 0x95, 0x94, 0x96, 0x03, 0x2d, ++ 0x1a, 0xdb, 0x74, 0xd8, 0x4c, 0xc9, 0x43, 0xe3, 0xbb, 0xf8, 0x64, 0xf5, 0x1f, 0x08, 0xfd, 0x2b, ++ 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, 0x90, 0xfa, 0x2e, 0xbe, 0x09, ++ 0xd7, 0x43, 0xb3, 0x1c, 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, 0xf9, 0x36, 0x6b, 0x92, 0x5b, ++ 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, 0x07, 0x29, 0x2d, 0x66, 0xed, 0x4d, 0xce, 0x23, 0xcb, ++ 0xd0, 0x17, 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, 0xa4, 0xf8, 0x40, 0xe4, 0x9b, ++ 0x4b, 0xc8, 0xb5, 0x21, 0x01, 0xbf, 0xca, 0x7c, 0x1b, 0xd1, 0xcd, 0x15, 0xb3, 0x3c, 0x29, 0x25, ++ 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, 0x8a, 0x42, 0x9e, 0x80, 0xbc, 0x22, 0xd0, ++ 0x9b, 0xdf, 0x93, 0x2e, 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, 0xb1, 0x4b, 0x7c, 0xcd, 0xbe, ++ 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, 0xf9, 0x78, 0x6e, 0x0e, 0x48, 0x7d, 0x17, 0x5f, 0xe5, ++ 0x6f, 0xbe, 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, 0x0f, 0xb2, 0x0b, 0x04, 0x6c, ++ 0x4f, 0xb8, 0xf3, 0x78, 0xeb, 0xb2, 0xad, 0xa0, 0x02, 0xaf, 0x79, 0x69, 0xcc, 0x45, 0x2c, 0x52, ++ 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, 0x3d, 0xdc, 0xd9, 0x4f, 0xa0, 0x79, 0x59, ++ 0x42, 0x34, 0xc9, 0x14, 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, 0xf2, 0x22, 0x41, 0xb3, 0xa6, ++ 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, 0xd7, 0xfe, 0x17, 0xb0, 0x4c, 0xdb, 0x36, 0x7a, 0x74, ++ 0xf4, 0x61, 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, 0xbe, 0xf9, 0x77, 0xc9, 0xd2, ++ 0xfe, 0xb9, 0xba, 0xa4, 0xf1, 0x1f, 0x98, 0xf2, 0x9f, 0x07, 0x0a, 0x78, 0xd9, 0x58, 0x20, 0xe6, ++ 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, 0x7c, 0x32, 0x9b, 0xee, 0x04, 0x9f, 0xf4, ++ 0xb1, 0x01, 0x49, 0xdc, 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, 0x11, 0x15, 0x1d, 0x0c, 0xb4, ++ 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, 0x85, 0x63, 0xbf, 0xc3, 0x5d, 0xce, 0x2b, 0x76, 0xc0, ++ 0x46, 0x44, 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, 0x8e, 0x5d, 0x38, 0xb6, 0xd1, ++ 0x45, 0x60, 0x5c, 0x07, 0x89, 0x4f, 0xb1, 0xb5, 0xdd, 0x6c, 0x88, 0xaf, 0xec, 0x6a, 0xc5, 0x66, ++ 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, 0x0f, 0x57, 0x62, 0xd8, 0x6f, 0x0d, 0xaf, ++ 0xdb, 0xd3, 0x79, 0xf7, 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, 0x7d, 0xb7, 0xe0, 0x9d, 0xc2, ++ 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, 0x81, 0x98, 0x83, 0x5c, 0x16, 0x28, 0x54, 0x42, 0x39, ++ 0xf8, 0xf1, 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, 0x3a, 0x78, 0xfc, 0xc6, 0x4b, ++ 0x50, 0x0f, 0x31, 0x7e, 0x96, 0xe4, 0xe0, 0xa8, 0x37, 0xd7, 0x84, 0xff, 0xc3, 0xbb, 0x44, 0x63, ++ 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, 0xe6, 0xca, 0x31, 0x6c, 0xd6, 0xe7, 0xb6, ++ }, ++}; ++ ++static const unsigned char kuz_table_inv[16][256 * 16] = ++{ ++ { /* 0 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, 0xa2, 0x6e, ++ 0x02, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, ++ 0x03, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, ++ 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, ++ 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, ++ 0x06, 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, ++ 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, ++ 0x08, 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, 0x59, 0xf6, ++ 0x09, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, ++ 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, ++ 0x0b, 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, 0x7c, 0x44, ++ 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, ++ 0x0d, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, ++ 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, ++ 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, ++ 0x10, 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, 0xb2, 0x2f, ++ 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, ++ 0x12, 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, 0x80, 0x35, 0xf3, ++ 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, ++ 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, ++ 0x15, 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, 0x3a, ++ 0x16, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, ++ 0x17, 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, 0x5a, 0xe6, ++ 0x18, 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, ++ 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, ++ 0x1a, 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, 0x05, ++ 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, ++ 0x1c, 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, 0x41, 0x26, 0xa2, ++ 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, ++ 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, ++ 0x1f, 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, 0x03, 0x10, ++ 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, ++ 0x21, 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, ++ 0x22, 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, ++ 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, ++ 0x24, 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, 0x25, ++ 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, ++ 0x26, 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, ++ 0x27, 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, ++ 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, ++ 0x29, 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, 0x5c, 0xc6, ++ 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, ++ 0x2b, 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, 0xdb, 0x1a, ++ 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, ++ 0x2d, 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, 0x91, 0xbd, ++ 0x2e, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, ++ 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, ++ 0x30, 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, 0xb4, 0x15, 0x71, ++ 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, ++ 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, ++ 0x33, 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, ++ 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, ++ 0x35, 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, 0x7a, 0x64, ++ 0x36, 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, ++ 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, ++ 0x38, 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, 0x87, ++ 0x39, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, ++ 0x3a, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, ++ 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, ++ 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, ++ 0x3d, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, ++ 0x3e, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, ++ 0x3f, 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, 0xa4, 0x4e, ++ 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, ++ 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, ++ 0x42, 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, ++ 0x43, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, ++ 0x44, 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, ++ 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, ++ 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, ++ 0x47, 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, 0x75, ++ 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, ++ 0x49, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, ++ 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, ++ 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, ++ 0x4c, 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, 0x19, 0x31, ++ 0x4d, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, ++ 0x4e, 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, 0x9e, 0xed, ++ 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, ++ 0x50, 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, 0x3f, 0x93, ++ 0x51, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, ++ 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, ++ 0x53, 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, 0x1a, 0x21, ++ 0x54, 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, ++ 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, ++ 0x56, 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, 0x75, 0x34, ++ 0x57, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, ++ 0x58, 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, 0x66, 0x65, ++ 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, ++ 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, ++ 0x5b, 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, 0xd7, ++ 0x5c, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, ++ 0x5d, 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, 0x44, 0x09, 0x70, ++ 0x5e, 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, ++ 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, ++ 0x60, 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, 0xe2, ++ 0x61, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, ++ 0x62, 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, 0x47, 0xad, 0x3e, ++ 0x63, 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, ++ 0x64, 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, 0xe7, 0x99, ++ 0x65, 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, 0x45, 0xf7, ++ 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, ++ 0x67, 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, ++ 0x68, 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, ++ 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, ++ 0x6a, 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, 0xf4, 0xc8, ++ 0x6b, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, ++ 0x6c, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, ++ 0x6d, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, ++ 0x6e, 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, 0x6a, 0x39, 0xb3, ++ 0x6f, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, ++ 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, ++ 0x71, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, ++ 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, ++ 0x73, 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, 0xbd, 0x7f, ++ 0x74, 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, 0x55, 0xb6, ++ 0x75, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, ++ 0x76, 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, 0x30, 0xd2, 0x6a, ++ 0x77, 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, ++ 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, ++ 0x79, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, ++ 0x7a, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, ++ 0x7b, 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, 0x6b, 0xe4, 0x89, ++ 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, ++ 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, ++ 0x7e, 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, 0x8b, 0x9c, ++ 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, ++ 0x80, 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, 0xe6, 0xd9, 0xbb, ++ 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, ++ 0x82, 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, 0x5e, 0x67, ++ 0x83, 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, ++ 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, ++ 0x85, 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, 0x8b, 0xb6, 0xae, ++ 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, ++ 0x87, 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, 0x31, 0x72, ++ 0x88, 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, 0x80, 0x4d, ++ 0x89, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, ++ 0x8a, 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, ++ 0x8b, 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, ++ 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, ++ 0x8d, 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, ++ 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, ++ 0x8f, 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, 0x51, 0x68, 0x84, ++ 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, ++ 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, ++ 0x92, 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, 0x48, ++ 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, ++ 0x94, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, ++ 0x95, 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, ++ 0x96, 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, 0x21, 0x33, ++ 0x97, 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, 0x83, 0x5d, ++ 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, ++ 0x99, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, ++ 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, ++ 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, ++ 0x9c, 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, 0xff, 0x19, ++ 0x9d, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, ++ 0x9e, 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, 0x4b, 0x78, 0xc5, ++ 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, ++ 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, ++ 0xa1, 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, 0x8b, ++ 0xa2, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, ++ 0xa3, 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, 0xa4, 0x5b, 0x57, ++ 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, ++ 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, ++ 0xa6, 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, 0x34, 0x42, ++ 0xa7, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, ++ 0xa8, 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, 0x27, 0x13, ++ 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, ++ 0xaa, 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, 0xa0, 0xcf, ++ 0xab, 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, 0x02, 0xa1, ++ 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, ++ 0xad, 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, ++ 0xae, 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, ++ 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, ++ 0xb0, 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, 0xcc, 0xca, ++ 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, ++ 0xb2, 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, 0xbe, 0x4b, 0x16, ++ 0xb3, 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, ++ 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, ++ 0xb5, 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, ++ 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, ++ 0xb7, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, ++ 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, ++ 0xb9, 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, 0x12, 0x37, 0x52, ++ 0xba, 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, 0x12, 0xe0, ++ 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, ++ 0xbc, 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, 0x7f, 0x58, 0x47, ++ 0xbd, 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, ++ 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, ++ 0xbf, 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, ++ 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, ++ 0xc1, 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, 0xe3, 0xf6, 0x69, ++ 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, ++ 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, ++ 0xc4, 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, ++ 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, ++ 0xc6, 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, ++ 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, ++ 0xc8, 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, 0xa3, 0x0d, 0xf1, ++ 0xc9, 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, 0xaf, 0x9f, ++ 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, ++ 0xcb, 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, 0x39, 0x28, 0x43, ++ 0xcc, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, ++ 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, ++ 0xce, 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, 0x56, ++ 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, ++ 0xd0, 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, 0xf9, 0xe6, 0x28, ++ 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, ++ 0xd2, 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, 0x61, 0xf4, ++ 0xd3, 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, 0xc3, 0x9a, ++ 0xd4, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, ++ 0xd5, 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, 0x94, 0x89, 0x3d, ++ 0xd6, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, ++ 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, ++ 0xd8, 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, 0xde, ++ 0xd9, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, ++ 0xda, 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, 0x23, 0x38, 0x02, ++ 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, ++ 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, ++ 0xdd, 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, 0xcb, ++ 0xde, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, ++ 0xdf, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, ++ 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, ++ 0xe1, 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, 0x3b, 0x51, 0x37, ++ 0xe2, 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, 0x74, 0x85, ++ 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, ++ 0xe4, 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, 0x56, 0x3e, 0x22, ++ 0xe5, 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, ++ 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, ++ 0xe7, 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, 0x90, ++ 0xe8, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, ++ 0xe9, 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, 0x0d, 0x08, 0xc1, ++ 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, ++ 0xeb, 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, 0xe1, 0x8f, 0x1d, ++ 0xec, 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, 0x67, 0xd4, ++ 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, ++ 0xee, 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, 0x8c, 0xe0, 0x08, ++ 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, ++ 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, ++ 0xf1, 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, 0x18, ++ 0xf2, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, ++ 0xf3, 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, 0xbb, 0x64, 0xc4, ++ 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, ++ 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, ++ 0xf6, 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, 0x0b, 0xd1, ++ 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, ++ 0xf8, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, ++ 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, ++ 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, ++ 0xfb, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, ++ 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, ++ 0xfd, 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, 0x7a, 0x77, 0x95, ++ 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, ++ 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, ++ }, ++ { /* 1 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x94, 0xa5, 0x64, 0x0d, 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, 0xe8, 0xe3, 0xd0, 0x4d, ++ 0xeb, 0x89, 0xc8, 0x1a, 0xd1, 0x87, 0xfe, 0x96, 0xdc, 0x2c, 0x45, 0x98, 0x13, 0x05, 0x63, 0x9a, ++ 0x7f, 0x2c, 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, 0xb2, 0x3a, 0x86, 0xd4, 0xfb, 0xe6, 0xb3, 0xd7, ++ 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, 0x3f, 0xef, 0x7b, 0x58, 0x8a, 0xf3, 0x26, 0x0a, 0xc6, 0xf7, ++ 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, 0x49, 0xbf, 0xce, 0xe9, 0x16, 0xba, ++ 0xfe, 0x58, 0x9b, 0x2e, 0xb0, 0x4a, 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, 0x35, 0x0f, 0xa5, 0x6d, ++ 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, 0xc9, 0x62, 0x0c, 0x27, 0xdd, 0xec, 0x75, 0x20, ++ 0x2a, 0x61, 0xa6, 0x68, 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, 0x4c, 0x14, 0x4f, 0x2d, ++ 0xbe, 0xc4, 0xc2, 0x65, 0x4b, 0xfb, 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, 0xa4, 0xf7, 0x9f, 0x60, ++ 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, 0x92, 0xbd, 0x5f, 0x11, 0x2c, 0xb7, ++ 0x55, 0x4d, 0x0a, 0x7f, 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, 0xb7, 0xf2, 0xfc, 0xfa, ++ 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, 0x8d, 0xe8, 0x5d, 0xd6, 0x6a, 0x1e, 0x89, 0xda, ++ 0xab, 0x15, 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, 0xe3, 0xfe, 0x9e, 0x9a, 0x82, 0xfd, 0x59, 0x97, ++ 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, 0x79, 0x1b, 0xea, 0x40, ++ 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, 0x3f, 0xd2, 0xdb, 0x02, 0x91, 0xf8, 0x3a, 0x0d, ++ 0x54, 0xc2, 0x8f, 0xd0, 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, 0x98, 0x28, 0x9e, 0x5a, ++ 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, 0x83, 0x71, 0x41, 0xb5, 0xae, 0x06, 0x70, 0xcb, 0x4e, 0x17, ++ 0xbf, 0x4b, 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, 0x28, 0xd2, 0x8b, 0x2d, 0xfd, 0xc0, ++ 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, 0x63, 0xce, 0x2d, 0x8d, ++ 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, 0x54, 0xfb, 0xe7, 0xb9, 0xbe, 0x22, 0x58, 0xad, ++ 0xd5, 0xb6, 0xb8, 0xe9, 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, 0x56, 0xc1, 0x88, 0xe0, ++ 0xaa, 0x9a, 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, 0x88, 0xd7, 0xa2, 0x21, 0xad, 0x27, 0x3b, 0x37, ++ 0x3e, 0x3f, 0x70, 0xf3, 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, 0x45, 0xc4, 0xeb, 0x7a, ++ 0x7e, 0xa3, 0x29, 0xb8, 0x85, 0xeb, 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, 0xd4, 0x3c, 0xd1, 0x77, ++ 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, 0xfd, 0x6c, 0xb7, 0x05, 0x79, 0x23, 0x3c, 0xdf, 0x01, 0x3a, ++ 0x95, 0x2a, 0xe1, 0xa2, 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, 0xc7, 0x39, 0xb2, 0xed, ++ 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, 0x6b, 0x29, 0x3c, 0xbb, 0x2f, 0xda, 0x62, 0xa0, ++ 0x6b, 0x72, 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, 0x30, 0x9c, 0xf2, 0x36, 0x17, 0x80, ++ 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, 0xc2, 0x83, 0xcc, 0x5d, 0xf3, 0xd0, 0x1a, 0xd5, 0xc7, 0xcd, ++ 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, 0x75, 0x04, 0xe1, 0x33, 0x74, 0x1a, ++ 0x14, 0x5e, 0xd6, 0x9b, 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, 0x09, 0xd0, 0xa4, 0x57, ++ 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, 0x3b, 0x74, 0x5e, 0x85, 0xda, 0x94, 0xf3, 0x50, 0xff, 0xb4, ++ 0x3c, 0xe2, 0xb9, 0x6e, 0x07, 0x05, 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, 0x1b, 0xb3, 0x2f, 0xf9, ++ 0x43, 0xce, 0x15, 0x79, 0x5f, 0x20, 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, 0xe0, 0x55, 0x9c, 0x2e, ++ 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, 0x5c, 0x40, 0x08, 0xb6, 0x4c, 0x63, ++ 0xbd, 0x96, 0x8e, 0x57, 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, 0xd5, 0x5a, 0x39, 0x43, ++ 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, 0x4b, 0xcb, 0x93, 0x2b, 0x3d, 0xb9, 0xe9, 0x0e, ++ 0x56, 0x1f, 0x46, 0x4d, 0x3e, 0xed, 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, 0xc6, 0x5f, 0x5a, 0xd9, ++ 0xc2, 0xba, 0x22, 0x40, 0xb7, 0x4f, 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, 0x2e, 0xbc, 0x8a, 0x94, ++ 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, 0x45, 0x69, 0xa8, 0x35, 0x0d, 0xb1, 0xbf, 0x44, 0xb0, 0x99, ++ 0x16, 0x83, 0x1f, 0x06, 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, 0x57, 0xa7, 0x60, 0xd4, ++ 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, 0x74, 0x19, 0x48, 0x29, 0xac, 0x41, 0xd3, 0x03, ++ 0xfd, 0x0a, 0xd7, 0x1c, 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, 0x44, 0xa2, 0x03, 0x4e, ++ 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, 0x99, 0x4e, 0x76, 0x6e, ++ 0x03, 0x52, 0x4c, 0x32, 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, 0x44, 0x0e, 0x71, 0xad, 0xa6, 0x23, ++ 0x7c, 0x7e, 0xe0, 0x25, 0xfc, 0xb4, 0x84, 0x10, 0x0f, 0x41, 0xc2, 0xda, 0x8a, 0x4b, 0x15, 0xf4, ++ 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, 0xfb, 0x5b, 0x61, 0x57, 0x01, 0x96, 0x62, 0xa8, 0xc5, 0xb9, ++ 0xfc, 0x85, 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, 0xb7, 0xde, 0x6b, 0x78, 0x61, 0xee, ++ 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, 0xb8, 0x05, 0x1f, 0x30, 0x74, 0x92, 0x83, 0x9b, 0xb1, 0xa3, ++ 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, 0xad, 0x0a, 0xf2, 0x46, 0x78, 0x7d, 0x02, 0x74, ++ 0x83, 0xa9, 0xfe, 0xa4, 0x91, 0x30, 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, 0x90, 0x9e, 0xd2, 0x39, ++ 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, 0x0a, 0x7e, 0x3d, 0x2d, 0x4d, 0x72, 0xa7, 0x19, ++ 0x7d, 0xf1, 0x65, 0x8a, 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, 0xa5, 0x91, 0x77, 0x54, ++ 0x02, 0xdd, 0xc9, 0x9d, 0x79, 0x5f, 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, 0x5e, 0x77, 0xc4, 0x83, ++ 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, 0xbb, 0xf9, 0xb6, 0x94, 0x14, 0xce, ++ 0xd6, 0xe4, 0xf4, 0xdb, 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, 0x27, 0x6c, 0x2e, 0xc3, ++ 0x42, 0x41, 0x90, 0xd6, 0x82, 0xee, 0xc6, 0x18, 0xe9, 0x80, 0xa3, 0xb7, 0xcf, 0x8f, 0xfe, 0x8e, ++ 0x3d, 0x6d, 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, 0x5b, 0xba, 0x25, 0x63, 0x34, 0x69, 0x4d, 0x59, ++ 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, 0x38, 0x8e, 0x35, 0xac, 0xe6, 0x2f, 0xdc, 0x8a, 0x9d, 0x14, ++ 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, 0xfc, 0xce, 0xea, 0x08, 0x01, 0x66, 0xe8, 0x34, ++ 0x57, 0x90, 0xc3, 0xe2, 0xe3, 0x23, 0xf9, 0xf7, 0x92, 0xd8, 0x29, 0x44, 0xe9, 0x85, 0x38, 0x79, ++ 0x28, 0xbc, 0x6f, 0xf5, 0xbb, 0x06, 0x78, 0x2a, 0x20, 0xe2, 0xaf, 0x90, 0x12, 0x63, 0x8b, 0xae, ++ 0xbc, 0x19, 0x0b, 0xf8, 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, 0xfa, 0x80, 0x5b, 0xe3, ++ 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, 0x76, 0xe8, 0xbc, 0xc9, 0x77, 0xeb, 0x25, 0xa0, 0x3d, 0xab, ++ 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, 0xd2, 0xdf, 0xb4, 0xa7, 0xcd, 0x43, 0xed, 0xe6, ++ 0x78, 0x07, 0xb1, 0xdc, 0x0e, 0x0a, 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, 0x36, 0xa5, 0x5e, 0x31, ++ 0xec, 0xa2, 0xd5, 0xd1, 0x87, 0xa8, 0xf7, 0x35, 0x0e, 0xf3, 0xf1, 0x3f, 0xde, 0x46, 0x8e, 0x7c, ++ 0x86, 0x5f, 0x2a, 0xf2, 0xbe, 0x40, 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, 0x03, 0xaa, 0xfb, 0x5c, ++ 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, 0x36, 0x4c, 0xa9, 0x87, 0x3e, 0x54, 0xeb, 0x49, 0x2b, 0x11, ++ 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, 0x1b, 0xbd, 0xb8, 0x80, 0x10, 0xaf, 0x98, 0xc6, ++ 0xf9, 0x73, 0x86, 0xe5, 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, 0xf8, 0x4c, 0x48, 0x8b, ++ 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, 0x4a, 0x79, 0xa0, 0xce, 0x69, 0xb4, 0x72, 0x86, ++ 0x2d, 0x4a, 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, 0x24, 0x6f, 0x63, 0x82, 0x81, 0x57, 0xa2, 0xcb, ++ 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, 0x7a, 0xb1, 0x11, 0x1c, ++ 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, 0xf8, 0x43, 0x26, 0x1a, 0x92, 0x52, 0xc1, 0x51, ++ 0xac, 0x3e, 0x8c, 0x9a, 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, 0x4f, 0xbe, 0xb4, 0x71, ++ 0x38, 0x9b, 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, 0x5f, 0x37, 0xe9, 0x71, 0xa7, 0x5d, 0x64, 0x3c, ++ 0x47, 0xb7, 0x44, 0x80, 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, 0x5c, 0xbb, 0xd7, 0xeb, ++ 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, 0xb4, 0x58, 0x07, 0xa6, ++ 0xc7, 0x4c, 0xf6, 0x16, 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, 0x1a, 0xa1, 0xbd, 0x88, 0xa3, 0xf1, ++ 0x53, 0xe9, 0x92, 0x1b, 0x11, 0x9d, 0xf5, 0x99, 0xfd, 0x7c, 0xd9, 0xed, 0x55, 0x6b, 0x73, 0xbc, ++ 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, 0x74, 0x44, 0x4f, 0x46, 0x5f, 0x39, 0xae, 0x8d, 0xc0, 0x6b, ++ 0xb8, 0x60, 0x5a, 0x01, 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, 0x46, 0x6e, 0x10, 0x26, ++ 0xd2, 0x9d, 0xa5, 0x22, 0xf9, 0xf2, 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, 0x9b, 0x82, 0x65, 0x06, ++ 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, 0x86, 0x24, 0x53, 0x1e, 0x73, 0x61, 0xb5, 0x4b, ++ 0x39, 0x14, 0x6d, 0x38, 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, 0x88, 0x87, 0x06, 0x9c, ++ 0xad, 0xb1, 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, 0x5a, 0x08, 0x16, 0x86, 0x60, 0x64, 0xd6, 0xd1, ++ 0xed, 0x2d, 0x50, 0x7e, 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, 0xf1, 0x9c, 0xec, 0xdc, ++ 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, 0x19, 0x7f, 0x3c, 0x91, ++ 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, 0x0a, 0x59, 0xb9, 0xf6, 0x88, 0x1c, 0xe2, 0x99, 0x8f, 0x46, ++ 0x92, 0x01, 0xfc, 0x69, 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, 0x0a, 0x7a, 0x5f, 0x0b, ++ 0xf8, 0xfc, 0x03, 0x4a, 0x3b, 0xab, 0xcb, 0x20, 0x1e, 0x82, 0x47, 0x77, 0xd7, 0x96, 0x2a, 0x2b, ++ 0x6c, 0x59, 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, 0x3f, 0x75, 0xfa, 0x66, ++ 0x13, 0x75, 0xcb, 0x50, 0xea, 0x2c, 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, 0xc4, 0x93, 0x49, 0xb1, ++ 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, 0xc1, 0xa3, 0x2c, 0x70, 0x99, 0xfc, ++ 0x3b, 0xc9, 0xa4, 0xa5, 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, 0xd6, 0xf0, 0xc2, 0x1f, ++ 0xaf, 0x6c, 0xc0, 0xa8, 0xd8, 0x88, 0x32, 0xd7, 0x8c, 0x5a, 0x6e, 0x33, 0x3e, 0x13, 0x12, 0x52, ++ 0xd0, 0x40, 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, 0xe8, 0xe7, 0xc5, 0xf5, 0xa1, 0x85, ++ 0x44, 0xe5, 0x08, 0xb2, 0x09, 0x0f, 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, 0x2d, 0x16, 0x71, 0xc8, ++ 0x2e, 0x18, 0xf7, 0x91, 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, 0x27, 0x8c, 0xf0, 0xfa, 0x04, 0xe8, ++ 0xba, 0xbd, 0x93, 0x9c, 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, 0x18, 0x19, 0xd4, 0xa5, ++ 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, 0x8c, 0xe5, 0x45, 0x38, 0x62, 0x14, 0xe3, 0xff, 0x67, 0x72, ++ 0x51, 0x34, 0x5b, 0x86, 0x68, 0xc2, 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, 0x0b, 0x1c, 0xb7, 0x3f, ++ 0x11, 0xa8, 0x02, 0xcd, 0x93, 0x73, 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, 0x9a, 0xe4, 0x8d, 0x32, ++ 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, 0xb9, 0x16, 0x72, 0x07, 0x5d, 0x7f, ++ 0xfa, 0x21, 0xca, 0xd7, 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, 0x3f, 0xc2, 0x89, 0xe1, 0xee, 0xa8, ++ 0x6e, 0x84, 0xae, 0xda, 0xcb, 0x56, 0xb2, 0x5c, 0xa6, 0xc6, 0xfc, 0x8e, 0x61, 0x02, 0x3e, 0xe5, ++ 0x04, 0x79, 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, 0x6f, 0xa4, 0xf0, 0xa9, 0xbc, 0xee, 0x4b, 0xc5, ++ 0x90, 0xdc, 0x35, 0xf4, 0x7b, 0x1c, 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, 0x54, 0x0d, 0x9b, 0x88, ++ 0xef, 0xf0, 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, 0xb5, 0x31, 0xaf, 0xeb, 0x28, 0x5f, ++ 0x7b, 0x55, 0xfd, 0xee, 0xaa, 0x9b, 0x8d, 0xb3, 0xdd, 0x9e, 0x76, 0x7d, 0x47, 0x08, 0xf8, 0x12, ++ 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, 0xcd, 0xef, 0xc0, 0x35, 0x4e, 0xd8, 0x5c, 0x45, ++ 0xfb, 0xae, 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, 0xa3, 0xf9, 0x03, 0x79, 0xa6, 0x3b, 0x8c, 0x08, ++ 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, 0x4f, 0x30, 0x11, 0xc3, 0x85, 0xad, 0x5d, 0xdd, 0x3f, 0xdf, ++ 0x10, 0x27, 0x87, 0x62, 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, 0x46, 0xe1, 0xb5, 0x3e, 0xef, 0x92, ++ 0x7a, 0xda, 0x78, 0x41, 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, 0x4a, 0xc6, 0x68, 0xd2, 0x9a, 0xb2, ++ 0xee, 0x7f, 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, 0xd8, 0xa1, 0x89, 0x8a, 0x80, 0x31, 0x4a, 0xff, ++ 0x91, 0x53, 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, 0x7b, 0xd7, 0xf9, 0x28, ++ 0x05, 0xf6, 0xd4, 0x56, 0x2f, 0x70, 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, 0x93, 0x34, 0x29, 0x65, ++ 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, 0xcf, 0xbb, 0x3b, 0x5f, 0x17, 0x10, 0x02, 0xcc, 0x13, 0x68, ++ 0xd1, 0xcf, 0xe9, 0x10, 0x5d, 0x63, 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, 0xea, 0x2f, 0xc3, 0x25, ++ 0xae, 0xe3, 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, 0xe7, 0x73, 0x52, 0x88, 0x11, 0xc9, 0x70, 0xf2, ++ 0x3a, 0x46, 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, 0xf9, 0x2a, 0xa0, 0xbf, ++ 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, 0xf0, 0x54, 0x40, 0x07, 0x9d, 0xe3, 0x24, 0xc6, 0xd5, 0x9f, ++ 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, 0x8f, 0x1f, 0x2e, 0x11, 0x5e, 0xaf, 0xcc, 0x25, 0x05, 0xd2, ++ 0xbb, 0x32, 0x16, 0x33, 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, 0x37, 0xc3, 0xb6, 0x05, ++ 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, 0xf2, 0x3d, 0x1b, 0x37, 0xdf, 0x20, 0x66, 0x48, ++ 0xe5, 0xdf, 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, 0x4a, 0x83, 0x7a, 0x95, ++ 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, 0x93, 0x58, 0xd5, 0x47, 0x2d, 0x59, 0xa2, 0x60, 0xaa, 0xd8, ++ 0x0e, 0x56, 0x3a, 0x55, 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, 0xab, 0x8d, 0x59, 0x86, 0x19, 0x0f, ++ 0x9a, 0xf3, 0x5e, 0x58, 0x25, 0xfc, 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, 0xb1, 0x65, 0xc9, 0x42, ++ 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, 0xc0, 0x09, 0x64, 0xe6, 0x6c, 0x89, 0xbc, 0x62, ++ 0x64, 0xab, 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, 0x84, 0x6a, 0x6c, 0x2f, ++ 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, 0x2d, 0x6a, 0x1c, 0x25, 0x21, 0x7e, 0x7f, 0x8c, 0xdf, 0xf8, ++ 0x8f, 0x22, 0x0d, 0x6c, 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, 0xe2, 0x32, 0x97, 0x6f, 0x0f, 0xb5, ++ 0xcf, 0xbe, 0x54, 0x27, 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, 0x39, 0x30, 0x06, 0x97, 0x35, 0xb8, ++ 0x5b, 0x1b, 0x30, 0x2a, 0x36, 0x22, 0xed, 0x45, 0x23, 0xf7, 0xfa, 0x7c, 0xee, 0x74, 0xe5, 0xf5, ++ 0x24, 0x37, 0x9c, 0x3d, 0x6e, 0x07, 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, 0x15, 0x92, 0x56, 0x22, ++ 0xb0, 0x92, 0xf8, 0x30, 0xe7, 0xa5, 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, 0xfd, 0x71, 0x86, 0x6f, ++ 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, 0xad, 0xe1, 0x36, 0xb9, 0xb3, 0xc3, 0x20, 0x9d, 0xf3, 0x4f, ++ 0x4e, 0xca, 0x63, 0x1e, 0x57, 0xef, 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, 0xc8, 0x7e, 0x23, 0x02, ++ 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, 0xea, 0x95, 0xf6, 0x5b, 0x33, 0x98, 0x90, 0xd5, ++ 0xa5, 0x43, 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, 0xdb, 0x7b, 0x40, 0x98, ++ 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, 0xd2, 0xab, 0xe4, 0xcf, ++ 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, 0x40, 0x13, 0x3a, 0x48, 0x34, 0x82, ++ 0x5a, 0x94, 0xb5, 0x85, 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, 0xc1, 0xae, 0x87, 0x55, ++ 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, 0x26, 0xc8, 0x05, 0x8b, 0x29, 0x4d, 0x57, 0x18, ++ 0xa4, 0xcc, 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, 0xef, 0xaa, 0x09, 0xac, 0xf4, 0xa1, 0x22, 0x38, ++ 0x30, 0x69, 0x4a, 0xa6, 0xd2, 0x04, 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, 0x1c, 0x42, 0xf2, 0x75, ++ 0x4f, 0x45, 0xe6, 0xb1, 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, 0x4c, 0x34, 0xe7, 0xa4, 0x41, 0xa2, ++ 0xdb, 0xe0, 0x82, 0xbc, 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, 0x0f, 0x47, 0x91, 0xef, ++ 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, 0x62, 0x42, 0x54, 0x7a, 0x9e, 0xbf, 0xab, 0xe2, ++ 0x0f, 0xd9, 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, 0x0c, 0x54, 0x97, 0x36, 0x76, 0x5c, 0x7b, 0xaf, ++ 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, 0x90, 0xa2, 0xbe, 0x6e, 0x11, 0xe2, 0x8d, 0xba, 0xc8, 0x78, ++ 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, 0xd2, 0xae, 0x65, 0x59, 0x18, 0x35, ++ 0x8e, 0xad, 0x88, 0xc3, 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, 0xb8, 0xb5, 0x6d, 0x15, ++ 0x1a, 0x08, 0xec, 0xce, 0x10, 0x5d, 0x2e, 0x90, 0x77, 0x0c, 0x1d, 0xc5, 0x50, 0x56, 0xbd, 0x58, ++ 0x65, 0x24, 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, 0x9b, 0x11, 0xab, 0xb0, 0x0e, 0x8f, ++ 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, 0x43, 0x53, 0xde, 0xc2, ++ 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, 0xe5, 0xd4, 0x34, 0x81, 0xb9, 0xd3, 0x85, 0x21, ++ 0xd9, 0x3d, 0x4b, 0x21, 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, 0x51, 0x30, 0x55, 0x6c, ++ 0xa6, 0x11, 0xe7, 0x36, 0x22, 0xf9, 0x29, 0xf1, 0x39, 0xf8, 0x71, 0x19, 0xaa, 0xd6, 0xe6, 0xbb, ++ 0x32, 0xb4, 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, 0xb2, 0x55, 0x42, 0x35, 0x36, 0xf6, ++ 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, 0xe8, 0x88, 0x9e, 0x8c, 0xbe, 0x72, 0x9f, 0xd9, 0x43, 0xd6, ++ 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, 0x7d, 0x3e, 0x77, 0x3a, 0x93, 0x9b, ++ 0xb3, 0xc0, 0xb4, 0x02, 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, 0x8c, 0xdc, 0x20, 0x4c, ++ 0x27, 0x65, 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, 0x2c, 0xb6, 0x38, 0xa6, 0x64, 0x3f, 0xf0, 0x01, ++ 0x67, 0xf9, 0x89, 0x44, 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, 0xf5, 0xc7, 0xca, 0x0c, ++ 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, 0x1d, 0x24, 0x1a, 0x41, ++ 0x8c, 0x70, 0x41, 0x5e, 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, 0xa6, 0x3c, 0xe6, 0xc2, 0xa9, 0x96, ++ 0x18, 0xd5, 0x25, 0x53, 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, 0x65, 0x70, 0x0e, 0x21, 0x79, 0xdb, ++ 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, 0x68, 0x3c, 0x69, 0x57, 0xd3, 0xcd, 0x0c, 0xfb, ++ 0xe6, 0x8d, 0xbe, 0x7d, 0xd9, 0x48, 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, 0x3b, 0x2e, 0xdc, 0xb6, ++ 0x99, 0xa1, 0x12, 0x6a, 0x81, 0x6d, 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, 0xc0, 0xc8, 0x6f, 0x61, ++ 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, 0xef, 0x83, 0x28, 0x2b, 0xbf, 0x2c, ++ 0x19, 0x5a, 0xa0, 0xfc, 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, 0x21, 0xfb, 0x1b, 0x7b, ++ 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, 0x54, 0x16, 0xa4, 0x61, 0x9a, 0x87, 0xc9, 0x18, 0xcb, 0x36, ++ 0xf2, 0xd3, 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, 0x1c, 0x53, 0x32, 0xfe, 0x78, 0xe1, ++ 0x66, 0x76, 0x0c, 0xeb, 0xec, 0xe9, 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, 0xda, 0x1d, 0xa8, 0xac, ++ 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, 0x14, 0xb2, 0xb1, 0x2f, 0xd3, 0x38, 0x07, 0xf1, 0xdd, 0x8c, ++ 0x98, 0x2e, 0x97, 0xc5, 0x5c, 0xa3, 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, 0xef, 0x12, 0x0d, 0xc1, ++ 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, 0x6d, 0x03, 0x96, 0xa0, 0x14, 0xf4, 0xbe, 0x16, ++ 0x73, 0xa7, 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, 0x03, 0x15, 0x55, 0xec, 0xfc, 0x17, 0x6e, 0x5b, ++ 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, 0x55, 0x40, 0x3c, 0xc7, 0x8e, 0xee, 0x6d, 0xef, 0x54, 0x56, ++ 0xa7, 0x9e, 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, 0x4d, 0xa2, 0x85, 0x0c, 0x84, 0x1b, ++ 0xd8, 0xb2, 0xce, 0x8e, 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, 0xcb, 0x76, 0x7e, 0xea, 0x37, 0xcc, ++ 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, 0x8e, 0xfd, 0x08, 0x3a, 0x96, 0x09, 0xe7, 0x81, ++ 0x26, 0xea, 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, 0x04, 0x1d, 0x4b, 0xe5, 0x92, 0xa1, ++ 0xb2, 0x4f, 0x31, 0xad, 0x9e, 0xfa, 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, 0xa3, 0x06, 0x42, 0xec, ++ 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, 0x94, 0x39, 0x9b, 0xb3, 0x41, 0x85, 0x58, 0xe0, 0xf1, 0x3b, ++ 0x59, 0xc6, 0xf9, 0xb7, 0x4f, 0x7d, 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, 0xb0, 0x03, 0x21, 0x76, ++ 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, 0x07, 0x98, 0x99, 0xfe, 0x6f, 0x23, 0x47, 0x3e, ++ 0xe2, 0xf4, 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, 0x87, 0xc0, 0x97, 0x73, ++ 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, 0x7c, 0x26, 0x24, 0xa4, ++ 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, 0x1b, 0x26, 0xb5, 0xa2, 0x1f, 0x2a, 0x94, 0xc5, 0xf4, 0xe9, ++ 0x63, 0x80, 0xd8, 0xbd, 0xc3, 0x99, 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, 0x49, 0x29, 0x81, 0xc9, ++ 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, 0x12, 0xd6, 0xd0, 0x41, 0xa1, 0xca, 0x51, 0x84, ++ 0x88, 0x09, 0x10, 0xa7, 0x12, 0x1e, 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, 0x5a, 0x2c, 0xe2, 0x53, ++ 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, 0x24, 0xc9, 0xce, 0xfa, 0x95, 0xd9, 0xb2, 0xcf, 0x32, 0x1e, ++ 0x5c, 0x30, 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, 0x4e, 0xdb, 0x23, 0x37, 0x08, 0x13, ++ 0xc8, 0x95, 0x49, 0xec, 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, 0x8d, 0x97, 0xcb, 0xd4, 0xd8, 0x5e, ++ 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, 0x2d, 0x04, 0x0b, 0x43, 0x30, 0x32, 0x6b, 0x89, ++ 0x23, 0x1c, 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, 0xd8, 0xd1, 0xbb, 0xc4, ++ 0x49, 0xe1, 0x7e, 0xd5, 0x01, 0xc0, 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, 0x05, 0x3d, 0xce, 0xe4, ++ 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, 0xe4, 0x66, 0x07, 0x64, 0xed, 0xde, 0x1e, 0xa9, ++ 0xa2, 0x68, 0xb6, 0xcf, 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, 0x16, 0x38, 0xad, 0x7e, ++ 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, 0x38, 0x4a, 0x42, 0xfc, 0xfe, 0xdb, 0x7d, 0x33, ++ 0x22, 0x93, 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, 0xf4, 0xb4, 0xf7, 0x0b, 0xd9, 0x64, ++ 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, 0x19, 0x8a, 0x46, 0x2d, 0x37, 0xf8, 0x1f, 0xe8, 0x09, 0x29, ++ 0xc9, 0x1a, 0xcc, 0x43, 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, 0xb1, 0x2c, 0xe4, 0x0e, 0xba, 0xfe, ++ 0x5d, 0xbf, 0xa8, 0x4e, 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, 0x0c, 0xed, 0x6a, 0xb3, ++ 0x37, 0x42, 0x57, 0x6d, 0x84, 0x2b, 0x59, 0x2e, 0x53, 0x63, 0x7e, 0x47, 0xd1, 0x01, 0x1f, 0x93, ++ 0xa3, 0xe7, 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, 0x39, 0xe2, 0xcf, 0xde, ++ 0xdc, 0xcb, 0x9f, 0x77, 0x55, 0xac, 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, 0xc2, 0x04, 0x7c, 0x09, ++ 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, 0xd8, 0xf3, 0xe1, 0x59, 0xf8, 0x93, 0x2a, 0xe7, 0xac, 0x44, ++ 0x08, 0xf2, 0xa2, 0x31, 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, 0xbb, 0x1f, 0x96, 0x49, ++ 0x9c, 0x57, 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, 0xb0, 0x9d, 0xe0, 0xdd, 0x53, 0xfc, 0x46, 0x04, ++ 0xe3, 0x7b, 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, 0x66, 0x09, 0xa8, 0x1a, 0xf5, 0xd3, ++ 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, 0x40, 0xf9, 0x25, 0x9e, ++ 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, 0xa5, 0xd3, 0xa9, 0x62, 0x9d, 0x15, 0x50, 0xbe, ++ 0x89, 0x86, 0x95, 0x08, 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, 0x75, 0xf6, 0x80, 0xf3, ++ 0xf6, 0xaa, 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, 0x79, 0xff, 0xec, 0xfa, 0x8e, 0x10, 0x33, 0x24, ++ 0x62, 0x0f, 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, 0x17, 0xe9, 0x2f, 0xb6, 0x66, 0xf3, 0xe3, 0x69, ++ 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, 0xa1, 0x8f, 0x59, 0x1d, 0x43, 0x6a, 0x9c, 0x73, 0xb8, 0x8a, ++ 0x4a, 0xb3, 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, 0x80, 0x26, 0x74, 0x90, 0x68, 0xc7, ++ 0x35, 0x9f, 0x9e, 0xf0, 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, 0x8f, 0x76, 0xdb, 0x10, ++ 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, 0x20, 0x52, 0xeb, 0x27, 0xc5, 0xbe, 0x67, 0x95, 0x0b, 0x5d, ++ 0xcb, 0xc7, 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, 0xc9, 0x99, 0xba, 0x79, 0x7e, 0x7d, ++ 0x5f, 0x62, 0x61, 0xd3, 0xc4, 0x9c, 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, 0x52, 0x9a, 0xae, 0x30, ++ 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, 0x60, 0xf6, 0xfe, 0x69, 0x8c, 0x01, 0xa9, 0x7c, 0x1d, 0xe7, ++ 0xb4, 0xeb, 0xa9, 0xc9, 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, 0x41, 0x9f, 0xcd, 0xaa, ++ 0xf4, 0x77, 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, 0xaf, 0xad, 0x94, 0x4f, 0xd0, 0x67, 0xf7, 0xa7, ++ 0x60, 0xd2, 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, 0x57, 0x03, 0x38, 0x84, 0x27, 0xea, ++ 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, 0x21, 0x04, 0x73, 0x81, 0xd1, 0xd7, 0xc3, 0x62, 0x94, 0x3d, ++ 0x8b, 0x5b, 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, 0x12, 0x9b, 0x2b, 0x81, 0x44, 0x70, ++ 0xe1, 0xa6, 0xa3, 0xb6, 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, 0x1e, 0xbc, 0xf6, 0x6d, 0x31, 0x50, ++ 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, 0x9f, 0x36, 0xba, 0xe3, 0xdd, 0xf0, 0x1e, 0x8e, 0xe1, 0x1d, ++ 0x0a, 0x2f, 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, 0xe5, 0x68, 0x52, 0xca, ++ 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, 0x61, 0xa0, 0x66, 0xcf, 0x98, 0x68, 0x0d, 0x8b, 0x82, 0x87, ++ 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, 0x5d, 0xb5, 0x76, 0xbe, 0x2e, 0x20, 0x04, 0x5b, 0x26, 0xd0, ++ 0x1e, 0x71, 0xbd, 0x37, 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, 0xec, 0xb8, 0xf6, 0x9d, ++ 0x61, 0x5d, 0x11, 0x20, 0xba, 0xc6, 0xa3, 0x23, 0xaa, 0x92, 0x6b, 0xb8, 0x17, 0x5e, 0x45, 0x4a, ++ 0xf5, 0xf8, 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, 0xa8, 0xf4, 0xff, 0xbd, 0x95, 0x07, ++ 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, 0x62, 0x5a, 0x0d, 0xe6, 0xa4, 0xd3, 0x22, 0x51, 0xe0, 0x27, ++ 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, 0x1d, 0x11, 0x63, 0xf0, 0x67, 0x9f, 0xca, 0xb2, 0x30, 0x6a, ++ 0x74, 0x8c, 0x42, 0x14, 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, 0xe1, 0x4b, 0x31, 0x54, 0x83, 0xbd, ++ 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, 0xbf, 0xdc, 0x22, 0x07, 0xd9, 0xb7, 0x53, 0xf0, ++ 0xa0, 0xb5, 0x7f, 0x52, 0xa9, 0x18, 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, 0x48, 0x4f, 0x69, 0xfd, ++ 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, 0x5c, 0xe3, 0xee, 0x18, 0x3a, 0x49, 0xa0, 0xac, 0xb9, 0xb0, ++ 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, 0xbc, 0x9d, 0x5b, 0x4a, 0x0a, 0x67, ++ 0xdf, 0x99, 0xd3, 0x45, 0xf1, 0x3d, 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, 0xb3, 0xa9, 0xda, 0x2a, ++ 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, 0xfb, 0x56, 0x73, 0xf6, 0x6e, 0x45, 0xaf, 0x0a, ++ 0x21, 0xc1, 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, 0xb0, 0xba, 0x86, 0xa6, 0x7f, 0x47, ++ 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, 0x7d, 0x40, 0xcc, 0x90, ++ 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, 0x49, 0x6c, 0xf5, 0x22, 0x95, 0xa3, 0x1c, 0xdd, ++ }, ++ { /* 2 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x3c, 0x48, 0xf8, 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, 0x14, 0x30, 0x44, 0x8e, ++ 0x40, 0x78, 0x90, 0x33, 0x90, 0x90, 0x53, 0xdf, 0x54, 0x29, 0x04, 0x79, 0x28, 0x60, 0x88, 0xdf, ++ 0x60, 0x44, 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, 0x7e, 0xdc, 0x06, 0xa4, 0x3c, 0x50, 0xcc, 0x51, ++ 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, 0xa6, 0x7d, 0xa8, 0x52, 0x08, 0xf2, 0x50, 0xc0, 0xd3, 0x7d, ++ 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, 0x0a, 0x2f, 0x44, 0xf0, 0x97, 0xf3, ++ 0xc0, 0x88, 0x73, 0x55, 0x73, 0x73, 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, 0x78, 0xa0, 0x5b, 0xa2, ++ 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, 0xd6, 0x8e, 0x0e, 0x56, 0x6c, 0x90, 0x1f, 0x2c, ++ 0xc3, 0x23, 0x05, 0xcc, 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, 0xa0, 0x43, 0x65, 0xfa, ++ 0xe3, 0x1f, 0x4d, 0x34, 0x4d, 0x4d, 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, 0xb4, 0x73, 0x21, 0x74, ++ 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, 0x14, 0x5e, 0x88, 0x23, 0xed, 0x25, ++ 0xa3, 0x67, 0xdd, 0x07, 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, 0x9c, 0x13, 0xa9, 0xab, ++ 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, 0x3b, 0xf6, 0x18, 0xd5, 0xf0, 0x83, 0xb6, 0x87, ++ 0x63, 0xef, 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, 0x11, 0x03, 0x1a, 0x08, 0xe4, 0xb3, 0xf2, 0x09, ++ 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, 0xd8, 0xe3, 0x3e, 0x58, ++ 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, 0x45, 0x2a, 0x1e, 0x71, 0xcc, 0xd3, 0x7a, 0xd6, ++ 0x45, 0x46, 0x0a, 0x5b, 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, 0x83, 0x86, 0xca, 0x37, ++ 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, 0x15, 0xb9, 0xcf, 0x7e, 0x22, 0x93, 0x97, 0xb6, 0x8e, 0xb9, ++ 0x05, 0x3e, 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, 0x24, 0x37, 0xab, 0xe6, 0x42, 0xe8, ++ 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, 0xbf, 0xd6, 0x06, 0x66, ++ 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, 0x4d, 0xd9, 0x28, 0xbc, 0xd3, 0x46, 0x19, 0x4a, ++ 0xe5, 0x8a, 0xa1, 0xc5, 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, 0xc7, 0x76, 0x5d, 0xc4, ++ 0x85, 0xce, 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, 0x19, 0xf0, 0x2c, 0xc5, 0xfb, 0x26, 0x91, 0x95, ++ 0xa5, 0xf2, 0x31, 0xf6, 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, 0xef, 0x16, 0xd5, 0x1b, ++ 0x86, 0x65, 0x0f, 0x97, 0x0f, 0x0f, 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, 0x23, 0xc5, 0xaf, 0xcd, ++ 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, 0x9a, 0x43, 0x5c, 0xda, 0x32, 0xb4, 0x37, 0xf5, 0xeb, 0x43, ++ 0xc6, 0x1d, 0x9f, 0xa4, 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, 0x0b, 0xa5, 0x27, 0x12, ++ 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, 0x08, 0xf3, 0x36, 0xcd, 0x1f, 0x95, 0x63, 0x9c, ++ 0x06, 0x95, 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, 0x38, 0x9b, 0x73, 0x05, 0x7c, 0xb0, ++ 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, 0x3c, 0x3e, 0xf4, 0x88, 0x3a, 0x46, 0x67, 0x35, 0x38, 0x3e, ++ 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, 0x3c, 0xe2, 0x5b, 0x65, 0xf4, 0x6f, ++ 0x66, 0xd1, 0x34, 0x3a, 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, 0x4f, 0x55, 0xb0, 0xe1, ++ 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, 0x79, 0x6e, 0x09, 0xd5, 0x40, 0x9c, 0xc5, 0xcf, 0x57, 0x6e, ++ 0xaa, 0xb0, 0x5c, 0x4e, 0x5c, 0x5c, 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, 0xd1, 0xff, 0x13, 0xe0, ++ 0xca, 0xf4, 0x84, 0x85, 0x84, 0x84, 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, 0xed, 0xaf, 0xdf, 0xb1, ++ 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, 0x46, 0x38, 0xf9, 0x9f, 0x9b, 0x3f, ++ 0x0a, 0x7c, 0xf7, 0xd0, 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, 0x95, 0x0f, 0x84, 0x13, ++ 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, 0x8b, 0x72, 0x4a, 0xb3, 0x81, 0x3f, 0xc0, 0x9d, ++ 0x4a, 0x04, 0x67, 0xe3, 0x67, 0x67, 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, 0xbd, 0x6f, 0x0c, 0xcc, ++ 0x6a, 0x38, 0x2f, 0x1b, 0x2f, 0x2f, 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, 0xa9, 0x5f, 0x48, 0x42, ++ 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, 0xf6, 0x94, 0x9a, 0x71, 0x50, 0xbb, 0x65, 0x8c, 0x32, 0x94, ++ 0x69, 0x93, 0x59, 0x82, 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, 0x71, 0xbc, 0x76, 0x1a, ++ 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, 0xce, 0x58, 0x54, 0xc2, 0x4d, 0xec, 0xba, 0x4b, ++ 0x29, 0xeb, 0xc9, 0xb1, 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, 0x59, 0xdc, 0xfe, 0xc5, ++ 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, 0x35, 0x4c, 0xe1, 0xe9, ++ 0xe9, 0x63, 0xba, 0xe4, 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, 0x5a, 0x94, 0x21, 0x7c, 0xa5, 0x67, ++ 0x89, 0x27, 0x62, 0x2f, 0x62, 0x62, 0x03, 0x36, 0x66, 0x0a, 0x5c, 0x30, 0x1d, 0x2c, 0x69, 0x36, ++ 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, 0xcb, 0xb8, 0x4c, 0xff, 0x5e, 0xed, 0x09, 0x1c, 0x2d, 0xb8, ++ 0xcf, 0xca, 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, 0x60, 0xd2, 0x46, 0x49, 0x9d, 0x59, ++ 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, 0x6c, 0xd7, 0xc6, 0xab, 0x62, 0x0f, 0x52, 0x79, 0xd9, 0xd7, ++ 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, 0xb8, 0x77, 0x64, 0xab, 0x6e, 0x29, 0x15, 0x86, ++ 0xaf, 0x8e, 0xc6, 0x26, 0xc6, 0xc6, 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, 0x7a, 0x19, 0x51, 0x08, ++ 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, 0x44, 0x0c, 0x68, 0x20, 0x16, 0x89, 0x4e, 0x24, ++ 0x6f, 0x06, 0xb5, 0x73, 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, 0x02, 0xb9, 0x0a, 0xaa, ++ 0x0f, 0x42, 0x6d, 0xb8, 0x6d, 0x6d, 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, 0x3e, 0xe9, 0xc6, 0xfb, ++ 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, 0x6e, 0x84, 0x2a, 0xd9, 0x82, 0x75, ++ 0x0c, 0xe9, 0x1b, 0x21, 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, 0xe6, 0x0a, 0xf8, 0xa3, ++ 0x2c, 0xd5, 0x53, 0xd9, 0x53, 0x53, 0xe3, 0x2d, 0x55, 0x0f, 0x72, 0x28, 0xf2, 0x3a, 0xbc, 0x2d, ++ 0x4c, 0x91, 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, 0x2b, 0xd3, 0x74, 0x8c, 0xce, 0x6a, 0x70, 0x7c, ++ 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, 0xb0, 0xf2, 0x01, 0x26, 0x76, 0x51, 0xda, 0x5a, 0x34, 0xf2, ++ 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, 0xd7, 0xa8, 0x78, 0x07, 0xb6, 0xca, 0x2b, 0xde, ++ 0xac, 0x25, 0xb0, 0xbf, 0xb0, 0xb0, 0x45, 0x50, 0xfd, 0x5d, 0x7a, 0xda, 0xa2, 0xfa, 0x6f, 0x50, ++ 0xcc, 0x61, 0x68, 0x74, 0x68, 0x68, 0xde, 0x01, 0x83, 0x81, 0x7c, 0x7e, 0x9e, 0xaa, 0xa3, 0x01, ++ 0xec, 0x5d, 0x20, 0x8c, 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, 0x8a, 0x9a, 0xe7, 0x8f, ++ 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, 0xf2, 0xdc, 0x12, 0x69, 0x80, 0xfb, 0x49, 0x5d, 0xae, 0xdc, ++ 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, 0x38, 0x9c, 0x82, 0x26, 0x5d, 0x6d, 0xea, 0x52, ++ 0x97, 0xa3, 0xb8, 0x9c, 0xb8, 0xb8, 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, 0x61, 0x3d, 0x26, 0x03, ++ 0xb7, 0x9f, 0xf0, 0x64, 0xf0, 0xf0, 0x69, 0x8d, 0x6c, 0xb5, 0x86, 0x5f, 0x75, 0x0d, 0x62, 0x8d, ++ 0x57, 0x2b, 0xcb, 0xc9, 0xcb, 0xcb, 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, 0x19, 0x9d, 0x7d, 0xa1, ++ 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, 0x9c, 0x2f, 0x90, 0xce, 0x8a, 0xd4, 0x0d, 0xad, 0x39, 0x2f, ++ 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, 0xee, 0x12, 0x8c, 0x70, 0x31, 0xfd, 0xf5, 0x7e, ++ 0x37, 0x6f, 0x13, 0x02, 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, 0x25, 0xcd, 0xb1, 0xf0, ++ 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, 0x81, 0xcd, 0x90, 0xdc, 0xe9, 0x1e, 0xcb, 0x26, ++ 0x34, 0xc4, 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, 0xab, 0x38, 0x92, 0x01, 0xfd, 0x2e, 0x8f, 0xa8, ++ 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, 0xc1, 0x7e, 0x43, 0xf9, ++ 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, 0xff, 0x11, 0x96, 0x78, 0xd5, 0x4e, 0x07, 0x77, ++ 0x94, 0x08, 0xce, 0x05, 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, 0xb9, 0xde, 0x18, 0x5b, ++ 0xb4, 0x34, 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, 0x03, 0x6a, 0x9a, 0xf3, 0xad, 0xee, 0x5c, 0xd5, ++ 0xd4, 0x70, 0x5e, 0x36, 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, 0x91, 0xbe, 0x90, 0x84, ++ 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, 0x85, 0x8e, 0xd4, 0x0a, ++ 0x92, 0x9d, 0x22, 0xf4, 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, 0xa0, 0xb5, 0xca, 0xdb, 0x64, 0xeb, ++ 0xb2, 0xa1, 0x6a, 0x0c, 0x6a, 0x6a, 0xe7, 0x65, 0xdd, 0x17, 0xa2, 0x68, 0xde, 0xeb, 0x20, 0x65, ++ 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, 0x7c, 0x34, 0xa3, 0xcb, 0xa4, 0xcc, 0xe2, 0xbb, 0xec, 0x34, ++ 0xf2, 0xd9, 0xfa, 0x3f, 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, 0xf6, 0x8b, 0xa8, 0xba, ++ 0x12, 0x6d, 0xc1, 0x92, 0xc1, 0xc1, 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, 0x9a, 0x1b, 0xb7, 0x96, ++ 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, 0x75, 0x45, 0xaa, 0x9a, 0x8e, 0x2b, 0xf3, 0x18, ++ 0x52, 0x15, 0x51, 0xa1, 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, 0xb2, 0x7b, 0x3f, 0x49, ++ 0x72, 0x29, 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, 0x21, 0x6c, 0xae, 0xe3, 0xa6, 0x4b, 0x7b, 0xc7, ++ 0x51, 0xbe, 0x27, 0x38, 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, 0x6a, 0x98, 0x01, 0x11, ++ 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, 0x7e, 0xa8, 0x45, 0x9f, ++ 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, 0xf3, 0xce, 0x30, 0x6f, 0xb4, 0xeb, 0x42, 0xf8, 0x89, 0xce, ++ 0x31, 0xfa, 0xff, 0xf3, 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, 0x56, 0xc8, 0xcd, 0x40, ++ 0xd1, 0x4e, 0xc4, 0x5e, 0xc4, 0xc4, 0x06, 0x6c, 0xcc, 0x14, 0xb8, 0x60, 0x3a, 0x58, 0xd2, 0x6c, ++ 0xf1, 0x72, 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, 0x2e, 0x68, 0x96, 0xe2, ++ 0x91, 0x36, 0x54, 0x6d, 0x54, 0x54, 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, 0x12, 0x38, 0x5a, 0xb3, ++ 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, 0xbe, 0xc4, 0x06, 0x08, 0x1e, 0x3d, ++ 0x5d, 0x57, 0x3c, 0x19, 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, 0x8c, 0x92, 0xf9, 0xb2, ++ 0x7d, 0x6b, 0x74, 0xe1, 0x74, 0x74, 0x43, 0x3c, 0x31, 0x49, 0xc2, 0xba, 0x98, 0xa2, 0xbd, 0x3c, ++ 0x1d, 0x2f, 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, 0xc4, 0x1e, 0xa4, 0xf2, 0x71, 0x6d, ++ 0x3d, 0x13, 0xe4, 0xd2, 0xe4, 0xe4, 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, 0xb0, 0xc2, 0x35, 0xe3, ++ 0xdd, 0xa7, 0xdf, 0x7f, 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, 0xc8, 0x95, 0xdc, 0x52, 0x2a, 0xcf, ++ 0xfd, 0x9b, 0x97, 0x87, 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, 0xc8, 0x62, 0x6e, 0x41, ++ 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, 0x7e, 0x10, 0xe7, 0xc7, 0xcc, 0xec, 0xf4, 0x32, 0xa2, 0x10, ++ 0xbd, 0xe3, 0x07, 0xb4, 0x07, 0x07, 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, 0xe0, 0x02, 0xe6, 0x9e, ++ 0x9e, 0x74, 0x39, 0xd5, 0x39, 0x39, 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, 0x2c, 0xd1, 0x9c, 0x48, ++ 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, 0xd2, 0x9d, 0x38, 0xe1, 0xd8, 0xc6, ++ 0xde, 0x0c, 0xa9, 0xe6, 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, 0xd4, 0x39, 0x04, 0xb1, 0x14, 0x97, ++ 0xfe, 0x30, 0xe1, 0x1e, 0xe1, 0xe1, 0x9f, 0x19, 0xf6, 0xc4, 0xd6, 0xe4, 0x10, 0x81, 0x50, 0x19, ++ 0x1e, 0x84, 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, 0x20, 0x4a, 0xd8, 0xb2, 0x7c, 0x11, 0x4f, 0x35, ++ 0x3e, 0xb8, 0x92, 0x4b, 0x92, 0x92, 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, 0x68, 0x21, 0x0b, 0xbb, ++ 0x5e, 0xfc, 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, 0xdc, 0xcb, 0x54, 0x71, 0xc7, 0xea, ++ 0x7e, 0xc0, 0x02, 0x78, 0x02, 0x02, 0x39, 0x64, 0x5e, 0x96, 0xde, 0x16, 0x40, 0x41, 0x83, 0x64, ++ 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, 0xfe, 0x37, 0xe0, 0x29, 0x0f, 0x14, 0x33, 0x85, ++ 0x38, 0x2d, 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, 0xd4, 0xc2, 0xe2, 0xf4, 0x1b, 0x24, 0x77, 0x0b, ++ 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, 0x05, 0x5a, 0xaa, 0x1e, 0xe4, 0x50, 0x27, 0x74, 0xbb, 0x5a, ++ 0x78, 0x55, 0xee, 0x89, 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, 0xe6, 0x8d, 0x33, 0x44, 0xff, 0xd4, ++ 0x98, 0xe1, 0xd5, 0x24, 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, 0xe8, 0xdb, 0x5f, 0xd4, 0xe0, 0xf8, ++ 0xb8, 0xdd, 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, 0x7c, 0x90, 0xea, 0x06, 0x4b, 0xe4, 0xa4, 0x76, ++ 0xd8, 0x99, 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, 0x77, 0xb4, 0x68, 0x27, ++ 0xf8, 0xa5, 0x0d, 0xef, 0x0d, 0x0d, 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, 0x63, 0x84, 0x2c, 0xa9, ++ 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, 0xd9, 0x7f, 0x6d, 0x93, 0xf0, 0x0e, 0xaf, 0x57, 0x56, 0x7f, ++ 0xfb, 0x0e, 0x7b, 0x76, 0x7b, 0x7b, 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, 0xbb, 0x67, 0x12, 0xf1, ++ 0x9b, 0x4a, 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, 0x39, 0xba, 0xf4, 0x77, 0x87, 0x37, 0xde, 0xa0, ++ 0xbb, 0x76, 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, 0x93, 0x07, 0x9a, 0x2e, ++ 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, 0x7f, 0x02, 0xc5, 0xc1, 0xf8, 0xfc, 0xff, 0x97, 0x85, 0x02, ++ 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, 0xb7, 0x8c, 0xef, 0x34, 0xfa, 0x21, 0xeb, 0xa7, 0xc1, 0x8c, ++ 0x1b, 0xba, 0x40, 0xdb, 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, 0xd7, 0xf7, 0x0d, 0xdd, ++ 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, 0xbb, 0x1d, 0xfe, 0x58, 0xc3, 0xc7, 0x49, 0x53, ++ 0x6d, 0x75, 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, 0x92, 0xba, 0x9f, 0x7b, ++ 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, 0xef, 0xf5, 0x0e, 0x27, 0xc1, 0xe8, 0x86, 0x8a, 0xdb, 0xf5, ++ 0x2d, 0x0d, 0xc0, 0xae, 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, 0xc7, 0x4c, 0xba, 0xda, 0x17, 0xa4, ++ 0x0d, 0x31, 0x88, 0x56, 0x88, 0x88, 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, 0xae, 0xea, 0x53, 0x2a, ++ 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, 0x8c, 0x80, 0xcb, 0xc7, 0xc2, 0x7a, 0x4c, 0x06, ++ 0xcd, 0xb9, 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, 0xd6, 0x4a, 0x08, 0x88, ++ 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, 0xd2, 0xd9, 0xd8, 0xa9, 0xcf, 0xbe, 0xea, 0x1a, 0xc4, 0xd9, ++ 0x8d, 0xc1, 0x6b, 0x30, 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, 0xcd, 0x63, 0xfe, 0x2a, 0x80, 0x57, ++ 0xae, 0x56, 0x55, 0x51, 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, 0xd3, 0x12, 0x32, 0xf9, 0xfa, 0x81, ++ 0x8e, 0x6a, 0x1d, 0xa9, 0x1d, 0x1d, 0x60, 0x0f, 0x9d, 0x83, 0xd1, 0xcf, 0x26, 0xc9, 0xbe, 0x0f, ++ 0xee, 0x2e, 0xc5, 0x62, 0xc5, 0xc5, 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, 0x1a, 0x99, 0x72, 0x5e, ++ 0xce, 0x12, 0x8d, 0x9a, 0x8d, 0x8d, 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, 0x0e, 0xa9, 0x36, 0xd0, ++ 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, 0x0e, 0xfc, 0x1f, 0x24, 0xdb, 0xe0, 0x62, 0x39, 0x29, 0xfc, ++ 0x0e, 0x9a, 0xfe, 0xcf, 0xfe, 0xfe, 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, 0x76, 0x09, 0x6d, 0x72, ++ 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, 0x4b, 0x0d, 0xdf, 0x99, 0x4a, 0x59, 0xa1, 0x23, ++ 0x4e, 0xe2, 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, 0x5e, 0x69, 0xe5, 0xad, ++ 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, 0x11, 0x3c, 0x55, 0x4c, ++ 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, 0xe1, 0xa6, 0x05, 0x0c, 0x11, 0xc2, ++ 0x68, 0x4b, 0xca, 0xf5, 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, 0x39, 0x5c, 0xdd, 0x93, ++ 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, 0xbf, 0x85, 0xe5, 0xdf, 0x2d, 0x6c, 0x99, 0x1d, ++ 0xa8, 0xc3, 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, 0x69, 0x0b, 0xeb, 0x89, 0x41, 0xfc, 0x86, 0x31, ++ 0x88, 0xff, 0xf1, 0x58, 0xf1, 0xf1, 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, 0x55, 0xcc, 0xc2, 0xbf, ++ 0xe8, 0xbb, 0x29, 0x93, 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, 0xef, 0xf0, 0x69, 0x9c, 0x0e, 0xee, ++ 0xc8, 0x87, 0x61, 0x6b, 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, 0x7d, 0xac, 0x4a, 0x60, ++ 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, 0x52, 0xfd, 0xf3, 0x5c, 0xb1, 0x7f, 0x30, 0xb6, ++ 0xcb, 0x2c, 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, 0x78, 0x08, 0xf1, 0x81, 0xa5, 0x4f, 0x74, 0x38, ++ 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, 0x26, 0x69, 0x06, 0xd4, 0xf7, 0x25, 0x99, 0x1f, 0xb8, 0x69, ++ 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, 0xf5, 0xf8, 0x8d, 0x2f, 0xfc, 0xe7, ++ 0x6b, 0xe0, 0xbc, 0x6c, 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, 0xe1, 0xbf, 0xe3, 0xcb, ++ 0x4b, 0xdc, 0xf4, 0x94, 0xf4, 0xf4, 0x1b, 0x45, 0xd0, 0x5a, 0xf9, 0x73, 0xf5, 0x8f, 0xa7, 0x45, ++ 0x2b, 0x98, 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, 0xff, 0xd7, 0xc9, 0xdf, 0x6b, 0x14, ++ 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, 0xdd, 0xef, 0x2f, 0x9a, ++ 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, 0x2d, 0x07, 0x83, 0xa9, 0x57, 0x75, 0xc8, 0x15, ++ 0xc7, 0xc5, 0x0c, 0xd3, 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, 0x43, 0x45, 0x8c, 0x9b, ++ 0xa7, 0x81, 0xd4, 0x18, 0xd4, 0xd4, 0x0d, 0xca, 0x79, 0x2e, 0x87, 0xd0, 0x7f, 0x15, 0x40, 0xca, ++ 0x87, 0xbd, 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, 0x85, 0x0d, 0x6b, 0x25, 0x04, 0x44, ++ 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, 0xf8, 0x68, 0x85, 0x55, 0x8b, 0x5b, 0x07, 0xb5, 0x1b, 0x68, ++ 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, 0x89, 0x86, 0x13, 0x85, 0x5f, 0xe6, ++ 0x27, 0x71, 0x37, 0x7e, 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, 0x2f, 0xd5, 0x93, 0xb7, ++ 0x07, 0x4d, 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, 0xfb, 0x89, 0x8d, 0xff, 0x3b, 0xe5, 0xd7, 0x39, ++ 0x24, 0xda, 0x41, 0xe7, 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, 0xf7, 0x36, 0xad, 0xef, ++ 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, 0xe3, 0x06, 0xe9, 0x61, ++ 0x64, 0xa2, 0xd1, 0xd4, 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, 0x97, 0xf7, 0xdf, 0x56, 0x25, 0x30, ++ 0x44, 0x9e, 0x99, 0x2c, 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, 0x95, 0x2a, 0xcb, 0x66, 0x61, 0xbe, ++ 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, 0x16, 0xf1, 0x9b, 0x7c, 0xa7, 0xf6, 0x7e, 0x92, ++ 0x84, 0x16, 0xea, 0x79, 0xea, 0xea, 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, 0xb3, 0xc6, 0x3a, 0x1c, ++ 0xe4, 0x52, 0x32, 0xb2, 0x32, 0x32, 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, 0x8f, 0x96, 0xf6, 0x4d, ++ 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, 0x9d, 0xd8, 0x9b, 0xa6, 0xb2, 0xc3, ++ 0xa2, 0xbf, 0x4e, 0x70, 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, 0xd4, 0xf3, 0x02, 0x22, ++ 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, 0x4b, 0xac, 0xe2, 0x79, 0xa1, 0x3a, 0xc0, 0xc3, 0x46, 0xac, ++ 0xe2, 0xc7, 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, 0xa7, 0x9e, 0xfc, 0x93, 0x8a, 0xfd, ++ 0xc2, 0xfb, 0x96, 0xbb, 0x96, 0x96, 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, 0xe8, 0xa3, 0xce, 0x73, ++ 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, 0x25, 0x5f, 0x60, 0xde, 0xab, 0x15, 0x84, 0x33, 0xd1, 0x5f, ++ 0x02, 0x73, 0xe5, 0xee, 0xe5, 0xe5, 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, 0x90, 0x03, 0x95, 0xd1, ++ 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, 0x34, 0xf7, 0xaf, 0x6c, 0xac, 0x53, 0x59, 0x80, ++ 0x42, 0x0b, 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, 0x1e, 0x02, 0xad, 0xb1, 0xb8, 0x63, 0x1d, 0x0e, ++ 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, 0x0c, 0xd8, 0x5b, 0x28, 0xb3, 0xc0, 0x74, 0xb0, 0x67, 0xd8, ++ 0x41, 0xa0, 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, 0xb1, 0x1d, 0x60, 0x80, 0x23, 0x56, ++ 0x21, 0xe4, 0xdb, 0x8f, 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, 0xb7, 0xb9, 0x5c, 0xd0, 0xef, 0x07, ++ 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, 0x25, 0xf4, 0xb5, 0x64, 0x48, 0xe0, 0xab, 0x89, ++ 0xe1, 0x6c, 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, 0xbb, 0x32, 0x24, 0x70, 0xb4, 0xa5, ++ 0xc1, 0x50, 0xe0, 0x22, 0xe0, 0xe0, 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, 0x30, 0x40, 0xf0, 0x2b, ++ 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, 0xf9, 0x7a, 0xa7, 0x53, 0xbf, 0x4b, 0x0c, 0x10, 0x3c, 0x7a, ++ 0x81, 0x28, 0x70, 0x11, 0x70, 0x70, 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, 0x18, 0x20, 0x78, 0xf4, ++ 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, 0x36, 0xbb, 0x43, 0xce, 0xdb, 0xe7, 0x31, 0xa7, ++ 0x9a, 0x92, 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, 0xcf, 0xd7, 0x75, 0x29, ++ 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, 0xf3, 0x87, 0xb9, 0x78, ++ 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, 0x4e, 0xf6, 0x48, 0x67, 0x45, 0x6a, 0xe7, 0xb7, 0xfd, 0xf6, ++ 0x3a, 0x5e, 0x9b, 0x54, 0x9b, 0x9b, 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, 0x8b, 0x27, 0xe2, 0xda, ++ 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, 0xb4, 0x1c, 0x49, 0xe1, 0x9f, 0x17, 0xa6, 0x54, ++ 0x7a, 0x26, 0x0b, 0x67, 0x0b, 0x0b, 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, 0xa3, 0x47, 0x6a, 0x05, ++ 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, 0xe8, 0x8b, 0xe0, 0x35, 0x4d, 0x98, 0xb7, 0x77, 0x2e, 0x8b, ++ 0x79, 0x8d, 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, 0x53, 0xe9, 0x7b, 0xa4, 0x54, 0x5d, ++ 0x59, 0xb1, 0x35, 0x06, 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, 0x51, 0x34, 0x6f, 0x94, 0x10, 0xd3, ++ 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, 0xf1, 0x36, 0x57, 0x90, 0x53, 0xc4, 0xdc, 0x82, ++ 0x19, 0xc9, 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, 0x47, 0xf4, 0x98, 0x0c, ++ 0xf9, 0x7d, 0x9e, 0x98, 0x9e, 0x9e, 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, 0x2b, 0x64, 0x87, 0x20, ++ 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, 0x27, 0xb8, 0x59, 0xc6, 0x3f, 0x54, 0xc3, 0xae, ++ 0xb9, 0x05, 0x0e, 0xab, 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, 0x03, 0x04, 0x0f, 0xff, ++ 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, 0x73, 0x91, 0x5d, 0xbf, 0x17, 0x34, 0x4b, 0x71, ++ 0xff, 0xe8, 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, 0x63, 0x80, 0x58, 0x61, 0xfb, 0x90, ++ 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, 0xc0, 0x1e, 0xf9, 0xc5, 0x61, 0x5d, 0x4c, 0x51, 0xbf, 0x1e, ++ 0xbf, 0x90, 0xe2, 0x5a, 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, 0x67, 0xf9, 0x70, 0x01, 0x73, 0x4f, ++ 0x9f, 0xac, 0xaa, 0xa2, 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, 0x64, 0x31, 0x37, 0xc1, ++ 0x7f, 0x18, 0x91, 0x0f, 0x91, 0x91, 0xae, 0xed, 0x7b, 0x62, 0x6b, 0x72, 0x08, 0xa1, 0x28, 0xed, ++ 0x5f, 0x24, 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, 0x1c, 0x91, 0x6c, 0x63, ++ 0x3f, 0x60, 0x01, 0x3c, 0x01, 0x01, 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, 0x20, 0xc1, 0xa0, 0x32, ++ 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, 0x35, 0xbc, 0x05, 0xbe, 0x6d, 0xd6, 0x34, 0xf1, 0xe4, 0xbc, ++ 0x3c, 0xcb, 0x77, 0xa5, 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, 0xf8, 0x22, 0x9e, 0x6a, ++ 0x1c, 0xf7, 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, 0x6a, 0x61, 0x71, 0x7a, 0xec, 0x12, 0xda, 0xe4, ++ 0x7c, 0xb3, 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, 0x77, 0xde, 0xd0, 0x42, 0x16, 0xb5, ++ 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, 0xc4, 0x72, 0x52, 0x3b, ++ 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, 0xe8, 0xc6, 0x7b, 0x55, 0xa8, 0xe2, 0x4d, 0x17, ++ 0x9c, 0x07, 0xdc, 0x3b, 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, 0xbc, 0xd2, 0x09, 0x99, ++ 0xfc, 0x43, 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, 0xbc, 0xef, 0x7f, 0x2c, 0x80, 0x82, 0xc5, 0xc8, ++ 0xdc, 0x7f, 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, 0x96, 0x1a, 0x7d, 0xf1, 0x94, 0xb2, 0x81, 0x46, ++ 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, 0xac, 0xc9, 0x3f, 0x6e, 0x03, 0x52, 0x1e, 0x28, 0x66, 0xc9, ++ 0x10, 0x1e, 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, 0x01, 0x8f, 0x0a, 0x18, 0x22, 0x47, ++ 0x70, 0x5a, 0xfc, 0xb7, 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, 0x36, 0x48, 0xee, 0x16, ++ 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, 0x37, 0x98, 0x41, 0xb2, 0x05, 0xf6, 0x22, 0x78, 0xaa, 0x98, ++ 0xb0, 0xd2, 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, 0x0b, 0xa0, 0x4e, 0xe8, 0xb5, 0xb4, ++ 0x90, 0xee, 0xc7, 0x1a, 0xc7, 0xc7, 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, 0x5a, 0xd8, 0xf1, 0x3a, ++ 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, 0x59, 0x6b, 0xc3, 0x15, 0x0f, 0xd9, 0x66, 0x88, 0x3d, 0x6b, ++ 0xd0, 0x96, 0x57, 0x29, 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, 0x72, 0xb8, 0x79, 0xe5, ++ 0xf3, 0x01, 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, 0xac, 0xca, 0x13, 0x75, 0xbe, 0x6b, 0x03, 0x33, ++ 0xd3, 0x3d, 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, 0x11, 0xa8, 0xaa, 0x5b, 0x47, 0xbd, ++ 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, 0x70, 0xec, 0xf8, 0xe3, 0x17, 0x0c, 0x96, 0x0b, 0x8b, 0xec, ++ 0x93, 0x45, 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, 0x15, 0xd1, 0x82, 0x3b, 0xcf, 0x62, ++ 0x73, 0xf1, 0x8a, 0x2e, 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, 0x1b, 0x87, 0xee, 0xab, 0xd0, 0x4e, ++ 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, 0x4d, 0xc0, 0x2e, 0x6d, 0x19, 0x5a, 0xfa, 0x9b, 0x94, 0xc0, ++ 0x33, 0x89, 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, 0xc6, 0xcb, 0x58, 0x91, ++ 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, 0x1e, 0x1f, 0x7a, 0x44, 0x1d, 0x23, 0xd2, 0xfb, 0x1c, 0x1f, ++ 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, 0x71, 0xfe, 0xda, 0xe5, 0x23, 0x1c, 0x9d, 0xae, 0xac, 0xfe, ++ 0x55, 0x58, 0x2e, 0x27, 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, 0x89, 0x9e, 0xe8, 0x70, ++ 0x35, 0x1c, 0xf6, 0xec, 0xf6, 0xf6, 0x22, 0x21, 0x8e, 0xcc, 0x27, 0x65, 0xb5, 0xce, 0x24, 0x21, ++ 0x15, 0x20, 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, 0x25, 0xb8, 0xa1, 0xfe, 0x60, 0xaf, ++ 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, 0xd7, 0x83, 0x72, 0xb7, 0x2b, 0xee, 0xcd, 0x6e, 0x7f, 0x83, ++ 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, 0x1f, 0x0d, 0x58, 0x42, 0x29, 0x33, 0xd9, 0x5e, 0x3b, 0x0d, ++ 0xb5, 0xec, 0x15, 0x8a, 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, 0x2f, 0x97, 0xe5, 0x0e, 0xf7, 0x5c, ++ 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, 0x0c, 0x6b, 0x2d, 0x4a, 0xf1, 0x3e, 0xb3, 0xd2, ++ 0xb6, 0x47, 0x63, 0x13, 0x63, 0x63, 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, 0x3d, 0xed, 0xc9, 0x04, ++ 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, 0x36, 0x8a, 0x63, 0xb4, 0x31, 0xe6, 0x29, 0xdd, 0x8d, 0x8a, ++ 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, 0x37, 0x42, 0x15, 0x8d, 0x41, 0xdb, ++ 0xd6, 0x03, 0xbb, 0xd8, 0xbb, 0xbb, 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, 0x01, 0xbd, 0x05, 0x55, ++ 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, 0xe1, 0x13, 0x3b, 0xc9, 0x6d, 0x2d, 0x1a, 0x79, ++ 0x16, 0x8b, 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, 0x39, 0x14, 0x79, 0x1d, 0x5e, 0xf7, ++ 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, 0x45, 0x4d, 0x92, 0xa6, ++ 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, 0x9f, 0xcf, 0x3d, 0x6d, 0x51, 0x7d, 0xd6, 0x28, ++ }, ++ { /* 3 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x85, 0x44, 0xdf, 0x52, 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, 0x07, 0x9f, 0x86, 0xea, ++ 0xc9, 0x88, 0x7d, 0xa4, 0xfe, 0x4f, 0xf3, 0xc0, 0x6b, 0xa4, 0x1c, 0xca, 0x0e, 0xfd, 0xcf, 0x17, ++ 0x4c, 0xcc, 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, 0xbf, 0xf6, 0x12, 0xaf, 0x09, 0x62, 0x49, 0xfd, ++ 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, 0x25, 0x43, 0xd6, 0x8b, 0x38, 0x57, 0x1c, 0x39, 0x5d, 0x2e, ++ 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, 0x36, 0x32, 0x1b, 0xa6, 0xdb, 0xc4, ++ 0x98, 0x5b, 0x87, 0x2f, 0xc1, 0xd1, 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, 0x12, 0xc4, 0x92, 0x39, ++ 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, 0x69, 0x7d, 0x2a, 0xf8, 0x15, 0x5b, 0x14, 0xd3, ++ 0xa2, 0x65, 0x37, 0xd5, 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, 0x38, 0x72, 0xba, 0x5c, ++ 0x27, 0x21, 0xe8, 0x87, 0x01, 0x39, 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, 0x3f, 0xed, 0x3c, 0xb6, ++ 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, 0x6c, 0x64, 0x36, 0x8f, 0x75, 0x4b, ++ 0xee, 0xa9, 0x95, 0x23, 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, 0x31, 0x10, 0xf3, 0xa1, ++ 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, 0xb9, 0x5e, 0x48, 0xf9, 0x24, 0x4b, 0xe7, 0x72, ++ 0x76, 0xf2, 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, 0x6d, 0x0c, 0x46, 0x9c, 0x23, 0xd4, 0x61, 0x98, ++ 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, 0x2a, 0xb6, 0x28, 0x65, ++ 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, 0x06, 0xa8, 0x5a, 0x56, 0x2d, 0x29, 0xae, 0x8f, ++ 0x87, 0xca, 0x6e, 0x69, 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, 0x70, 0xe4, 0xb7, 0xb8, ++ 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, 0x0c, 0xaf, 0x0a, 0x3b, 0xee, 0xfa, 0x77, 0x7b, 0x31, 0x52, ++ 0x4e, 0x42, 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, 0xfc, 0x55, 0x7e, 0x19, 0x78, 0xaf, ++ 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, 0x79, 0x86, 0xfe, 0x45, ++ 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, 0x08, 0xe2, 0xd8, 0xc8, 0x6c, 0xdd, 0xea, 0x96, ++ 0x53, 0x5d, 0x4b, 0xb0, 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, 0x6b, 0x42, 0x6c, 0x7c, ++ 0x1f, 0x91, 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, 0x63, 0x46, 0xc4, 0x02, 0x62, 0x20, 0x25, 0x81, ++ 0x9a, 0xd5, 0x36, 0x14, 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, 0x65, 0xbf, 0xa3, 0x6b, ++ 0x25, 0xaf, 0x59, 0xbc, 0x82, 0xc2, 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, 0x48, 0x96, 0x0d, 0xe4, ++ 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, 0x46, 0x29, 0x65, 0xee, 0x9e, 0x54, 0x4f, 0x09, 0x8b, 0x0e, ++ 0xec, 0x27, 0x24, 0x18, 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, 0x46, 0x6b, 0xc2, 0xf3, ++ 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, 0x0e, 0x4a, 0x82, 0x9e, 0x41, 0xf4, 0x44, 0x19, ++ 0x74, 0x7c, 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, 0xa8, 0x66, 0x54, 0xaf, 0x50, 0xca, ++ 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, 0x63, 0x6a, 0xb3, 0x65, 0xa6, 0x03, 0x53, 0x30, 0xd6, 0x20, ++ 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, 0xb4, 0xac, 0x5a, 0x52, 0x9f, 0xdd, ++ 0x38, 0xb0, 0x01, 0xc1, 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, 0x5d, 0xcd, 0x19, 0x37, ++ 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, 0xeb, 0x5d, 0x7f, 0xd2, 0x03, 0xfd, 0xe0, 0x0b, 0xad, 0xb3, ++ 0x48, 0x13, 0x03, 0x80, 0x44, 0xbc, 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, 0xe7, 0x94, 0x2b, 0x59, ++ 0x04, 0xdf, 0xa1, 0x76, 0xc5, 0x35, 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, 0xee, 0xf6, 0x62, 0xa4, ++ 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, 0x11, 0x52, 0xe9, 0x69, 0xe4, 0x4e, ++ 0x9c, 0x84, 0x26, 0x59, 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, 0xfc, 0x32, 0xf0, 0x9d, ++ 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, 0x7d, 0x0b, 0x35, 0xcf, 0xfb, 0xad, 0x76, 0x77, ++ 0x55, 0x0c, 0x5b, 0xfd, 0xfa, 0xab, 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, 0xf2, 0xcf, 0x3f, 0x8a, ++ 0xd0, 0x48, 0x84, 0xaf, 0x85, 0x6d, 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, 0xf5, 0x50, 0xb9, 0x60, ++ 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, 0xa1, 0xdb, 0x10, 0x07, 0x73, 0x53, 0xd8, 0x79, 0x17, 0xef, ++ 0xea, 0x76, 0x34, 0x55, 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, 0xdf, 0xe6, 0x91, 0x05, ++ 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, 0x7b, 0xa3, 0x6f, 0x99, 0xd6, 0x84, 0xd8, 0xf8, ++ 0x23, 0xfe, 0x49, 0xf1, 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, 0xd1, 0x1b, 0x5e, 0x12, ++ 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, 0xc4, 0x40, 0x4a, 0xc1, ++ 0xbb, 0xa5, 0xce, 0xde, 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, 0x45, 0x61, 0xc3, 0xdf, 0xcc, 0x2b, ++ 0xf7, 0x69, 0x6c, 0x28, 0x84, 0x54, 0x77, 0x58, 0xad, 0x28, 0x57, 0xce, 0xca, 0xbd, 0x85, 0xd6, ++ 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, 0xef, 0x38, 0x79, 0x7a, 0x59, 0xab, 0xcd, 0x22, 0x03, 0x3c, ++ 0x4a, 0x9d, 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, 0xe3, 0x62, 0x90, 0xef, 0x1a, 0x0b, ++ 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, 0xe7, 0xf2, 0x75, 0xe9, 0xed, 0x07, 0x97, 0x70, 0x9c, 0xe1, ++ 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, 0xca, 0x1f, 0xff, 0xa8, 0x9e, 0x12, 0xd5, 0x1c, ++ 0x06, 0x51, 0x10, 0x4d, 0x46, 0xce, 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, 0x99, 0x8d, 0x53, 0xf6, ++ 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, 0x77, 0x30, 0xdb, 0x35, 0x8c, 0xd6, 0x47, 0x25, ++ 0x9e, 0x0a, 0x97, 0x62, 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, 0x8b, 0x49, 0xc1, 0xcf, ++ 0xd2, 0xc6, 0x35, 0x94, 0x06, 0x96, 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, 0x82, 0x2b, 0x88, 0x32, ++ 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, 0xc9, 0x9a, 0x85, 0xb4, 0x0e, 0xd8, ++ 0xe8, 0xf8, 0x85, 0x6e, 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, 0xa8, 0x9d, 0xa0, 0x57, ++ 0x6d, 0xbc, 0x5a, 0x3c, 0xc6, 0x7e, 0xad, 0x74, 0x1a, 0x3c, 0x9d, 0xa9, 0xaf, 0x02, 0x26, 0xbd, ++ 0x21, 0x70, 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, 0xa5, 0xca, 0x8f, 0x06, 0xa6, 0x60, 0x6f, 0x40, ++ 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, 0x5e, 0xb4, 0x71, 0x98, 0x81, 0x63, 0xa1, 0xff, 0xe9, 0xaa, ++ 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, 0x18, 0xe5, 0xab, 0x9b, 0xb4, 0xa4, 0xfd, 0x79, ++ 0x3c, 0x6f, 0xa0, 0xb7, 0xf9, 0xe0, 0x88, 0x37, 0xcc, 0xb7, 0xa5, 0xfe, 0xb3, 0x3b, 0x7b, 0x93, ++ 0x70, 0xa3, 0x02, 0x41, 0x78, 0x69, 0xe3, 0x97, 0x73, 0x41, 0xb7, 0x51, 0xba, 0x59, 0x32, 0x6e, ++ 0xf5, 0xe7, 0xdd, 0x13, 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, 0xbd, 0xc6, 0xb4, 0x84, ++ 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, 0x15, 0xba, 0xfe, 0x67, 0x06, 0x39, 0x03, 0x16, 0x99, 0xa5, ++ 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, 0x2a, 0x35, 0x08, 0x5c, 0x04, 0x89, 0x1f, 0x4f, ++ 0x90, 0x26, 0x06, 0xc3, 0x88, 0xbb, 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, 0x0d, 0xeb, 0x56, 0xb2, ++ 0x15, 0x62, 0xd9, 0x91, 0xf7, 0x7d, 0x7e, 0x1a, 0x41, 0x91, 0x14, 0x96, 0x0a, 0x74, 0xd0, 0x58, ++ 0x08, 0x7d, 0x81, 0xec, 0x49, 0x6a, 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, 0x1f, 0x2f, 0xc4, 0x8b, ++ 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, 0xa8, 0x99, 0xfc, 0xbe, 0x30, 0x0b, 0x18, 0xb0, 0x42, 0x61, ++ 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, 0x43, 0x48, 0x22, 0xa4, 0x11, 0xd2, 0x0b, 0x9c, ++ 0x44, 0xb1, 0x23, 0x1a, 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, 0x16, 0x4d, 0x8d, 0x76, ++ 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, 0x91, 0xb2, 0x76, 0x97, 0x3b, 0x64, 0x23, 0xf9, ++ 0x7e, 0x8f, 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, 0x45, 0xe0, 0x78, 0xf2, 0x3c, 0xfb, 0xa5, 0x13, ++ 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, 0x35, 0x99, 0xec, 0xee, ++ 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, 0x2e, 0x44, 0x64, 0x38, 0x32, 0x06, 0x6a, 0x04, ++ 0xaa, 0x18, 0xb6, 0x39, 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, 0x27, 0x5d, 0x7e, 0xd7, ++ 0x2f, 0x5c, 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, 0x93, 0x6b, 0x40, 0xa5, 0x20, 0xc2, 0xf8, 0x3d, ++ 0x63, 0x90, 0xcb, 0x9d, 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, 0x29, 0xa0, 0xb1, 0xc0, ++ 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, 0x2e, 0x3f, 0x37, 0x2a, ++ 0xde, 0x64, 0x15, 0x0e, 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, 0xe6, 0xa6, 0x73, 0xf2, 0x2e, 0x1d, ++ 0x5b, 0x20, 0xca, 0x5c, 0xf5, 0x0f, 0x19, 0x15, 0xf4, 0x5c, 0xe8, 0xc3, 0x74, 0x6d, 0xa8, 0xf7, ++ 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, 0x72, 0xb5, 0x4b, 0xaa, 0xfa, 0x6c, 0x7d, 0x0f, 0xe1, 0x0a, ++ 0x92, 0xa8, 0xb7, 0xf8, 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, 0x7a, 0x90, 0x67, 0xe0, ++ 0x8f, 0xb7, 0xef, 0x85, 0xb5, 0x57, 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, 0x6f, 0xcb, 0x73, 0x33, ++ 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, 0x22, 0xd7, 0xd0, 0x94, 0x68, 0x54, 0xf5, 0xd9, ++ 0x46, 0x3f, 0x92, 0x21, 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, 0x61, 0x36, 0xbc, 0x24, ++ 0xc3, 0x7b, 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, 0x49, 0x73, 0xcc, 0x5e, 0x66, 0xa9, 0x3a, 0xce, ++ 0x7c, 0x01, 0x22, 0xdb, 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, 0x4b, 0x80, 0x94, 0x41, ++ 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, 0x4c, 0x1f, 0x12, 0xab, ++ 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, 0x38, 0x33, 0x24, 0x7f, 0x8a, 0xc2, 0x45, 0x7d, 0x5b, 0x56, ++ 0x30, 0xcd, 0x80, 0x2d, 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, 0x42, 0xe2, 0xdd, 0xbc, ++ 0x2d, 0xd2, 0xd8, 0x50, 0xcb, 0xa8, 0xee, 0xb0, 0x99, 0x50, 0xae, 0x5f, 0x57, 0xb9, 0xc9, 0x6f, ++ 0xa8, 0x96, 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, 0x50, 0x26, 0x4f, 0x85, ++ 0xe4, 0x5a, 0xa5, 0xf4, 0x35, 0xe7, 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, 0x59, 0x44, 0x06, 0x78, ++ 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, 0xbc, 0xf0, 0x5e, 0xdb, 0x80, 0x92, ++ 0x94, 0xf9, 0xa7, 0xb5, 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, 0xe3, 0x1d, 0x34, 0x16, ++ 0x11, 0xbd, 0x78, 0xe7, 0x32, 0x48, 0x66, 0x87, 0x55, 0xe7, 0x0b, 0xa1, 0xe4, 0x82, 0xb2, 0xfc, ++ 0x5d, 0x71, 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, 0x19, 0x0e, 0xed, 0xe0, 0xfb, 0x01, ++ 0xd8, 0x35, 0x05, 0x43, 0xcc, 0x07, 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, 0xea, 0x7f, 0x7d, 0xeb, ++ 0xc5, 0x2a, 0x5d, 0x3e, 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, 0x3d, 0x93, 0xff, 0x24, 0x69, 0x38, ++ 0x40, 0x6e, 0x82, 0x6c, 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, 0xf8, 0xbb, 0xef, 0xd2, ++ 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, 0x28, 0x64, 0x3c, 0x9a, 0x21, 0x59, 0xf1, 0xd9, 0xa6, 0x2f, ++ 0x89, 0xe6, 0xff, 0xc8, 0xf3, 0x99, 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, 0xf6, 0x46, 0x20, 0xc5, ++ 0x36, 0x9c, 0x90, 0x60, 0x33, 0x71, 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, 0xdb, 0x6f, 0x8e, 0x4a, ++ 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, 0x7b, 0x0f, 0xdc, 0xf0, 0x08, 0xa0, ++ 0xff, 0x14, 0xed, 0xc4, 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, 0x69, 0xa0, 0xd5, 0x92, 0x41, 0x5d, ++ 0x7a, 0x50, 0x32, 0x96, 0xb2, 0xf8, 0xdf, 0xc1, 0x51, 0x96, 0x67, 0xc5, 0xd2, 0x0d, 0xc7, 0xb7, ++ 0x67, 0x4f, 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, 0x38, 0xeb, 0x4d, 0x3d, 0xc7, 0x56, 0xd3, 0x64, ++ 0xe2, 0x0b, 0xb5, 0xb9, 0x73, 0x29, 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, 0xc0, 0xc9, 0x55, 0x8e, ++ 0xae, 0xc7, 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, 0x51, 0xf7, 0xc9, 0xab, 0x1c, 0x73, ++ 0x2b, 0x83, 0xc8, 0x1d, 0x8d, 0x66, 0xfa, 0x82, 0x87, 0x1d, 0x5f, 0x92, 0xce, 0x34, 0x9a, 0x99, ++ 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, 0x5f, 0xdc, 0xe5, 0x5b, 0x93, 0xf9, 0x83, 0xae, ++ 0x96, 0x77, 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, 0x8b, 0x8e, 0xeb, 0x3e, 0x94, 0x66, 0x05, 0x44, ++ 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, 0x99, 0xe8, 0x34, 0x78, 0xf9, 0x91, 0x9d, 0x04, 0x4c, 0xb9, ++ 0x5f, 0xff, 0x6b, 0x2a, 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, 0xf7, 0xf4, 0x9a, 0x9b, 0xca, 0x53, ++ 0x42, 0xe0, 0x33, 0x57, 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, 0xdd, 0x0c, 0x8f, 0xc0, 0xde, 0x80, ++ 0xc7, 0xa4, 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, 0x5d, 0x05, 0xd3, 0x69, 0x88, 0x5f, 0x58, 0x6a, ++ 0x8b, 0x68, 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, 0x81, 0x3d, 0x11, 0x97, ++ 0x0e, 0x2c, 0x91, 0xa1, 0x0f, 0xa4, 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, 0x86, 0xa2, 0x97, 0x7d, ++ 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, 0x20, 0xae, 0x30, 0x09, 0x95, 0xf5, 0xab, 0x8b, 0x39, 0xf2, ++ 0x34, 0x12, 0x21, 0x5b, 0xb0, 0x8a, 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, 0xac, 0x14, 0xbf, 0x18, ++ 0x78, 0xde, 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, 0x5b, 0xad, 0x89, 0x3f, 0xa5, 0x76, 0xf6, 0xe5, ++ 0xfd, 0x9a, 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, 0xa2, 0xe9, 0x70, 0x0f, ++ 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, 0x05, 0xed, 0xe6, 0x82, 0xad, 0xa2, 0xb7, 0xb2, 0x64, 0xdc, ++ 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, 0x9d, 0x8d, 0x32, 0xd0, 0xa3, 0xc7, 0xb0, 0x2d, 0xe2, 0x36, ++ 0x29, 0x0d, 0x79, 0x26, 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, 0xb9, 0x4f, 0xab, 0xcb, ++ 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, 0x59, 0x74, 0xbf, 0x0d, 0xbe, 0xd0, 0x2d, 0x21, ++ 0xb2, 0x9f, 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, 0x06, 0x2c, 0xf1, 0x89, ++ 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, 0xb2, 0xd7, 0xeb, 0x9c, 0x02, 0x17, 0x01, 0xb3, 0x77, 0x63, ++ 0x7b, 0x17, 0x8b, 0x6a, 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, 0x10, 0xb8, 0x08, 0xd1, 0x3e, 0x9e, ++ 0xfe, 0x53, 0x54, 0x38, 0x6d, 0xa2, 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, 0x0f, 0x4e, 0xb8, 0x74, ++ 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, 0xe9, 0x45, 0x34, 0x25, 0x1a, 0x15, 0xac, 0xa7, ++ 0x66, 0x08, 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, 0x1d, 0x8a, 0x2a, 0x4d, ++ 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, 0xfc, 0x34, 0x82, 0xe1, 0x28, 0xef, 0x14, 0xe8, 0x63, 0xb0, ++ 0xaf, 0x80, 0xae, 0xb3, 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, 0x26, 0x8a, 0x13, 0x77, 0xe5, 0x5a, ++ 0x10, 0xfa, 0xc1, 0x1b, 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, 0x7c, 0xdc, 0x3e, 0x5e, 0x4b, 0xd5, ++ 0x95, 0xbe, 0x1e, 0x49, 0xed, 0x12, 0xf8, 0x51, 0x84, 0x49, 0x72, 0xb9, 0x39, 0xc1, 0xcd, 0x3f, ++ 0xd9, 0x72, 0xbc, 0xbf, 0x6c, 0x9b, 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, 0x30, 0xa3, 0x84, 0xc2, ++ 0x5c, 0x36, 0x63, 0xed, 0x13, 0x5d, 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, 0x37, 0x3c, 0x02, 0x28, ++ 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, 0x45, 0x72, 0x86, 0x90, 0x44, 0x8b, 0x22, 0x67, 0x16, 0xfb, ++ 0xc4, 0x6d, 0xe4, 0xc2, 0xd2, 0x8c, 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, 0x25, 0xf8, 0x90, 0x11, ++ 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, 0xed, 0x34, 0x58, 0x41, 0x2c, 0x9a, 0xd9, 0xec, ++ 0x0d, 0xe5, 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, 0x2b, 0x05, 0x5f, 0x06, ++ 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, 0x76, 0xc8, 0x46, 0x31, ++ 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, 0xe2, 0x88, 0x71, 0x57, 0xc0, 0xdb, ++ 0xfc, 0xdd, 0xe5, 0x03, 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, 0x78, 0x35, 0x89, 0x26, ++ 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, 0x5e, 0x51, 0xfe, 0x42, 0x7f, 0xaa, 0x0f, 0xcc, ++ 0x64, 0x86, 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, 0x37, 0x2c, 0xd4, 0xba, 0x6a, 0xf1, 0x1b, 0x1f, ++ 0xe1, 0xc2, 0xbd, 0x7e, 0x50, 0x4e, 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, 0x6d, 0x6e, 0x9d, 0xf5, ++ 0xad, 0x0e, 0x1f, 0x88, 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, 0xc8, 0x70, 0x64, 0x0c, 0xd4, 0x08, ++ 0x28, 0x4a, 0xc0, 0xda, 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, 0x63, 0x93, 0x52, 0xe2, ++ 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, 0x8e, 0x72, 0x9c, 0x43, 0x4e, 0xba, 0xfc, 0x6d, ++ 0x12, 0x74, 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, 0x5a, 0x20, 0x92, 0x26, 0x49, 0x25, 0x7a, 0x87, ++ 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, 0x07, 0x3e, 0xe5, 0xd6, 0x80, 0x89, 0x40, 0x47, 0x33, 0x7a, ++ 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, 0x8e, 0xec, 0x47, 0xd8, 0xb5, 0x90, ++ 0xc6, 0xe3, 0x55, 0xf9, 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, 0x52, 0x83, 0xa1, 0x43, ++ 0x43, 0xa7, 0x8a, 0xab, 0x2e, 0xb1, 0x49, 0xdd, 0x8c, 0xab, 0xaa, 0x71, 0x55, 0x1c, 0x27, 0xa9, ++ 0x0f, 0x6b, 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, 0xb8, 0xde, 0x5c, 0x7e, 0x6e, 0x54, ++ 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, 0x5b, 0xe1, 0xe8, 0xbe, ++ 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, 0x40, 0x1c, 0x0f, 0x8f, 0xe6, 0x27, 0x5c, 0x3a, ++ 0xfa, 0x8c, 0xf5, 0x4e, 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, 0xe1, 0xb8, 0xda, 0xd0, ++ 0xb6, 0x40, 0x57, 0xb8, 0x29, 0x1e, 0x32, 0x2a, 0x2b, 0xb8, 0x13, 0x45, 0xe8, 0xda, 0x93, 0x2d, ++ 0x33, 0x04, 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, 0x1d, 0x20, 0xef, 0x45, 0x15, 0xc7, ++ 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, 0xe4, 0xa9, 0x96, 0x97, 0x37, 0xd8, 0xfa, 0x1e, 0x01, 0x14, ++ 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, 0x39, 0xbd, 0xfd, 0x81, 0x87, 0xfe, ++ 0xe7, 0x93, 0xad, 0x33, 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, 0xf4, 0xe3, 0xce, 0x03, ++ 0x62, 0xd7, 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, 0x29, 0x61, 0x25, 0x77, 0xf3, 0x7c, 0x48, 0xe9, ++ 0xdd, 0xad, 0x1d, 0xc9, 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, 0xde, 0x55, 0xe6, 0x66, ++ 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, 0xd9, 0xca, 0x60, 0x8c, ++ 0x14, 0x25, 0x60, 0x6d, 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, 0x63, 0xeb, 0xd0, 0xa8, 0x29, 0x71, ++ 0x91, 0x61, 0xbf, 0x3f, 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, 0x6d, 0x8e, 0xd7, 0x37, 0xaf, 0x9b, ++ 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, 0xf9, 0x42, 0x47, 0x76, 0xc2, 0x6c, 0xbb, 0x48, ++ 0x09, 0x3a, 0x38, 0x10, 0xe9, 0xf6, 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, 0xc5, 0xf3, 0x3d, 0xa2, ++ 0x45, 0xf6, 0x9a, 0xe6, 0x68, 0x7f, 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, 0xcc, 0x91, 0x74, 0x5f, ++ 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, 0x55, 0xd9, 0xcb, 0x0e, 0xf2, 0xb5, ++ 0xf8, 0x02, 0x44, 0x75, 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, 0x96, 0xc3, 0xeb, 0x82, ++ 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, 0xcd, 0x45, 0x4a, 0x27, 0xe1, 0x75, 0x91, 0x5c, 0x6d, 0x68, ++ 0x31, 0x8a, 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, 0xf3, 0xda, 0x98, 0x3e, 0x24, 0x95, ++ 0xb4, 0xce, 0xe6, 0x83, 0xaa, 0xe5, 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, 0x9f, 0xa1, 0xa2, 0x7f, ++ 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, 0x70, 0x66, 0x48, 0xfe, 0xd7, 0x47, 0x8a, 0xfa, 0xb6, 0xac, ++ 0x2c, 0x95, 0x61, 0xac, 0x6b, 0x34, 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, 0x8d, 0x65, 0x30, 0x46, ++ 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, 0x23, 0x5a, 0xcb, 0x8d, 0x84, 0x07, 0x79, 0xbb, ++ 0xe5, 0x1d, 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, 0xf7, 0x08, 0xc5, 0xe8, 0x83, 0x98, 0xff, 0x51, ++ 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, 0x1f, 0xa3, 0xf1, 0xa0, 0x9f, 0xbe, 0xae, 0xb1, 0x51, 0xde, ++ 0xdf, 0x23, 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, 0x91, 0xdb, 0xa9, 0x2e, 0xd7, 0x34, ++ 0x93, 0xef, 0x0e, 0x04, 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, 0x83, 0x74, 0xa0, 0x4c, 0x9e, 0xc9, ++ 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, 0x4e, 0x56, 0x8d, 0x11, 0xa7, 0xd3, 0x18, 0x23, ++ 0x0b, 0xb4, 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, 0xa7, 0xe9, 0xb2, 0x88, 0x0c, 0xf0, ++ 0x8e, 0xf0, 0x56, 0x79, 0x15, 0xcb, 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, 0xb5, 0x17, 0x8a, 0x1a, ++ 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, 0xc9, 0x20, 0x4c, 0x8f, 0xbb, 0x23, 0xbc, 0x75, 0xc3, 0xe7, ++ 0x47, 0x78, 0x2b, 0xdd, 0xeb, 0x84, 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, 0xbb, 0xea, 0x45, 0x0d, ++ 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, 0xc1, 0xa9, 0x0a, 0x4b, 0x05, 0x3a, 0x68, 0x2c, ++ 0x6e, 0x75, 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, 0x02, 0xa5, 0xee, 0xc6, ++ 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, 0x0b, 0xc7, 0xa7, 0x3b, ++ 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, 0x54, 0xad, 0x7e, 0x5f, 0x18, 0xe4, 0x0c, 0x58, 0x21, 0xd1, ++ 0xba, 0xe2, 0x77, 0x22, 0xa5, 0x41, 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, 0x19, 0x03, 0x35, 0x02, ++ 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, 0xc3, 0x70, 0x3c, 0x79, 0x1e, 0x9c, 0xb3, 0xe8, ++ 0x73, 0x6a, 0x0a, 0x86, 0x5b, 0x0e, 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, 0x17, 0xfe, 0xfa, 0x15, ++ 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, 0x71, 0xee, 0xa8, 0xd4, 0x20, 0xb3, 0x10, 0x61, 0x7c, 0xff, ++ 0x49, 0x54, 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, 0x7a, 0xe5, 0x3d, 0x48, 0xd2, 0x70, ++ 0xcc, 0x10, 0x65, 0x2e, 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, 0x74, 0x80, 0x3a, 0xd7, 0x54, 0x9a, ++ 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, 0xc5, 0xd8, 0x66, 0x2f, 0x33, 0xb5, 0x1d, 0x67, ++ 0x05, 0x98, 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, 0x34, 0x2a, 0x9b, 0x8d, ++ 0x18, 0x87, 0x40, 0xf7, 0xdb, 0xbe, 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, 0x21, 0x71, 0x8f, 0x5e, ++ 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, 0xac, 0xa5, 0x4c, 0xd7, 0x26, 0xee, 0x09, 0xb4, ++ 0xd1, 0x0f, 0x3d, 0x53, 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, 0x2f, 0x8c, 0x40, 0x49, ++ 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, 0xc7, 0x01, 0x50, 0x1d, 0x28, 0x13, 0xc6, 0xa3, ++ 0x6c, 0xfb, 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, 0xea, 0xd4, 0x75, 0xde, 0xdf, 0x94, ++ 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, 0x33, 0xa2, 0xcb, 0x92, 0xe4, 0xb1, 0x72, 0x41, 0x59, 0x7e, ++ 0xa5, 0x73, 0x9e, 0x64, 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, 0xf6, 0x1e, 0x7b, 0x23, 0x10, 0x83, ++ 0x20, 0x37, 0x41, 0x36, 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, 0x7c, 0xbc, 0x96, 0x69, ++ 0x3d, 0x28, 0x19, 0x4b, 0x59, 0x7c, 0x8e, 0x81, 0xc9, 0x4b, 0xd2, 0x83, 0x69, 0xe7, 0x82, 0xba, ++ 0xb8, 0x6c, 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, 0x6e, 0x78, 0x04, 0x50, ++ 0xf4, 0xa0, 0x64, 0xef, 0xa7, 0x33, 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, 0x67, 0x1a, 0x4d, 0xad, ++ 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, 0xe5, 0x21, 0x76, 0xbd, 0xc0, 0x2c, 0x60, 0x85, 0xcb, 0x47, ++ 0xce, 0x9e, 0xd4, 0x15, 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, 0x4d, 0xac, 0x65, 0xc8, ++ 0x4b, 0xda, 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, 0xa4, 0x47, 0x94, 0x1f, 0x4a, 0x33, 0xe3, 0x22, ++ 0x07, 0x16, 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, 0x86, 0xb0, 0x43, 0x51, 0xaa, 0xdf, ++ 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, 0x44, 0xce, 0x2c, 0x35, ++ 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, 0xa6, 0x9e, 0xa2, 0x2d, 0x51, 0x95, 0x38, 0xe6, ++ 0x1a, 0x09, 0xf1, 0xcc, 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, 0x56, 0x0a, 0xbe, 0x0c, ++ 0x56, 0xc5, 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, 0xcd, 0x3a, 0xbe, 0xe7, 0x5f, 0x68, 0xf7, 0xf1, ++ 0xd3, 0x81, 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, 0x19, 0x68, 0xb0, 0x82, 0x58, 0xf7, 0x71, 0x1b, ++ 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, 0xd4, 0x50, 0xbe, 0x7b, 0x09, 0xb6, 0xe5, 0x31, 0xc5, 0x9f, ++ 0xa3, 0x22, 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, 0x07, 0xd3, 0xe2, 0xae, 0x43, 0x75, ++ 0xef, 0xee, 0x2c, 0xdf, 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, 0xeb, 0xcc, 0x0a, 0x88, ++ 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, 0xbf, 0xf0, 0x01, 0x8d, 0x1b, 0x19, 0xec, 0x53, 0x8c, 0x62, ++ 0x77, 0xb5, 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, 0x31, 0xe1, 0xf9, 0x08, 0x98, 0xb1, ++ 0xf2, 0xf1, 0x74, 0xa2, 0xe1, 0xfd, 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, 0xfe, 0x97, 0x1e, 0x5b, ++ 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, 0x02, 0xd3, 0x03, 0x54, 0x2d, 0x2b, 0xf7, 0xf5, 0x57, 0xa6, ++ 0x3b, 0x79, 0x09, 0x06, 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, 0xf0, 0x6a, 0xd1, 0x4c, ++ 0x84, 0x03, 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, 0xd1, 0xae, 0x79, 0x18, 0xdd, 0x43, 0x7f, 0xc3, ++ 0x01, 0x47, 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, 0x77, 0x7d, 0xda, 0xdc, 0xf9, 0x29, ++ 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, 0x6d, 0x16, 0xba, 0x0a, 0x65, 0xd2, 0xd3, 0xbe, 0xb0, 0xd4, ++ 0xc8, 0xcf, 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, 0x6b, 0xb7, 0xd4, 0x21, 0x36, 0x3e, ++ 0xd5, 0xd0, 0x9c, 0x25, 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, 0x41, 0x4f, 0xc1, 0x7a, 0x22, 0xed, ++ 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, 0x23, 0xf5, 0xd3, 0x77, 0x4f, 0x2a, 0xc6, 0xe5, 0xa4, 0x07, ++ 0x1c, 0x58, 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, 0xcf, 0x87, 0xed, 0xfa, ++ 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, 0xd0, 0x35, 0xb8, 0xd3, 0x53, 0xe0, 0xc8, 0x18, 0x6b, 0x10, ++ 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, 0x40, 0x9f, 0x60, 0x12, 0xe9, 0x29, 0x95, 0xd5, 0x72, 0x27, ++ 0x24, 0xe8, 0xe0, 0x40, 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, 0x92, 0x4a, 0xf4, 0xcd, ++ 0x68, 0x24, 0x42, 0xb6, 0xa3, 0xd7, 0xb3, 0x5f, 0x0b, 0xb6, 0xf5, 0xe3, 0x9b, 0x28, 0xbd, 0x30, ++ 0xed, 0x60, 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, 0xfb, 0x86, 0x9c, 0xb7, 0x3b, 0xda, ++ 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, 0x65, 0xdc, 0xb6, 0x99, 0xd1, 0x7e, 0x89, 0xec, 0x2f, 0x09, ++ 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, 0xfd, 0xbc, 0x62, 0xcb, 0xdf, 0x1b, 0x8e, 0x73, 0xa9, 0xe3, ++ 0x39, 0xf7, 0xb8, 0x3d, 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, 0xcd, 0xb4, 0x87, 0x11, 0xe0, 0x1e, ++ 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, 0x09, 0x6f, 0xc3, 0xd1, 0x80, 0x8e, 0x66, 0xf4, ++ 0x03, 0xc9, 0x08, 0xc7, 0x23, 0x67, 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, 0xad, 0xa7, 0xc8, 0x7b, ++ 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, 0x92, 0x79, 0xdb, 0x95, 0x97, 0xe2, 0xaa, 0x38, 0x4e, 0x91, ++ 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, 0x85, 0x4d, 0xa3, 0x5a, 0x07, 0x6c, ++ 0x4f, 0x05, 0xaa, 0x31, 0xa2, 0xee, 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, 0xa4, 0xc5, 0x81, 0x86, ++ 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, 0xd9, 0x4c, 0xa1, 0xd0, 0xb1, 0x9e, 0x95, 0x55, ++ 0xd7, 0x5e, 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, 0xaf, 0xb5, 0xb6, 0x01, 0x13, 0xbf, ++ 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, 0xbf, 0x63, 0x5a, 0x42, ++ 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, 0x66, 0xba, 0xb3, 0x7f, 0xb8, 0xfc, 0xdc, 0xa8, ++ }, ++ { /* 4 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0xd1, 0xd3, 0x91, 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, 0x49, 0x6b, 0x2d, 0xa9, ++ 0x20, 0x61, 0x65, 0xe1, 0xe1, 0x3f, 0x25, 0x02, 0xa1, 0xf0, 0xb0, 0x02, 0x92, 0xd6, 0x5a, 0x91, ++ 0x30, 0xb0, 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, 0x10, 0x88, 0xe8, 0x03, 0xdb, 0xbd, 0x77, 0x38, ++ 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, 0x4a, 0x04, 0x81, 0x23, 0xa3, 0x04, 0xe7, 0x6f, 0xb4, 0xe1, ++ 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, 0xfb, 0x05, 0xae, 0x04, 0x99, 0x48, ++ 0x60, 0xa3, 0xaf, 0xe0, 0xe0, 0x41, 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, 0x75, 0xb9, 0xee, 0x70, ++ 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, 0x91, 0xab, 0x4b, 0x07, 0x3c, 0xd2, 0xc3, 0xd9, ++ 0x80, 0x47, 0x57, 0x02, 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, 0x0d, 0xde, 0xab, 0x01, ++ 0x90, 0x96, 0x84, 0x93, 0x93, 0x02, 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, 0x44, 0xb5, 0x86, 0xa8, ++ 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, 0x35, 0x0a, 0x9f, 0x08, 0xf1, 0x90, ++ 0xb0, 0xf7, 0xe1, 0x72, 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, 0xd6, 0x63, 0xdc, 0x39, ++ 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, 0x40, 0x65, 0x26, 0x0c, 0xea, 0xb1, 0x1f, 0xe0, ++ 0xd0, 0x54, 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, 0xf1, 0x1d, 0x7e, 0x0d, 0xa3, 0xda, 0x32, 0x49, ++ 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, 0x78, 0x67, 0x45, 0x71, ++ 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, 0x50, 0xed, 0xce, 0x0f, 0x31, 0x0c, 0x68, 0xd8, ++ 0xc3, 0x8e, 0xae, 0x04, 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, 0x1a, 0x7f, 0x95, 0x02, ++ 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, 0x18, 0x11, 0xf0, 0xf4, 0x91, 0x11, 0x53, 0x14, 0xb8, 0xab, ++ 0xe3, 0xef, 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, 0x79, 0x12, 0x88, 0xa9, 0xcf, 0x93, ++ 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, 0xc1, 0xc2, 0xe2, 0x3a, ++ 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, 0xc0, 0xaf, 0x6a, 0x14, 0xfd, 0x10, 0x21, 0xe3, ++ 0x93, 0x9d, 0xb7, 0x94, 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, 0xb4, 0x7b, 0x0c, 0x4a, ++ 0xa3, 0x2d, 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, 0x61, 0x5f, 0xda, 0x16, 0x6f, 0xc6, 0x7b, 0x72, ++ 0xb3, 0xfc, 0xd2, 0x75, 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, 0x26, 0xad, 0x56, 0xdb, ++ 0x43, 0xc9, 0xf9, 0x06, 0x06, 0xc7, 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, 0x17, 0xa1, 0x3e, 0x03, ++ 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, 0x8c, 0x19, 0x31, 0xb2, 0x14, 0x19, 0x5e, 0xca, 0x13, 0xaa, ++ 0x63, 0xa8, 0x9c, 0xe7, 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, 0x85, 0x77, 0x64, 0x92, ++ 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, 0x90, 0x42, 0xa4, 0x1b, 0xcc, 0x1c, 0x49, 0x3b, ++ 0x03, 0x0b, 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, 0xef, 0x1c, 0xf0, 0xce, 0x8a, 0xe2, ++ 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, 0xc6, 0x1d, 0xb0, 0x91, 0xb7, 0x1d, 0xb9, 0xa5, 0xa7, 0x4b, ++ 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, 0x5f, 0x1e, 0x62, 0x18, 0xd0, 0x73, ++ 0x33, 0xbb, 0x85, 0x77, 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, 0x2b, 0x73, 0xfd, 0xda, ++ 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, 0x15, 0x20, 0x82, 0xdb, 0x51, 0x20, 0x34, 0xfe, 0xe9, 0x04, ++ 0x55, 0x0e, 0x4c, 0x99, 0x99, 0x88, 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, 0x7d, 0x95, 0xc4, 0xad, ++ 0x65, 0xbe, 0xfa, 0xe9, 0xe9, 0x49, 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, 0xa6, 0x28, 0xb3, 0x95, ++ 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, 0xb9, 0x23, 0xef, 0x43, 0x9e, 0x3c, ++ 0x05, 0x1d, 0x55, 0x09, 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, 0xd3, 0x91, 0x5d, 0xe5, ++ 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, 0xb2, 0x80, 0xaa, 0x25, 0x9a, 0xfa, 0x70, 0x4c, ++ 0x25, 0x7c, 0x30, 0xe8, 0xe8, 0x37, 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, 0x41, 0x47, 0x07, 0x74, ++ 0x35, 0xad, 0xe3, 0x79, 0x79, 0xc9, 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, 0x08, 0x2c, 0x2a, 0xdd, ++ 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, 0x81, 0x28, 0x43, 0x9d, 0xd4, 0x28, 0x39, 0x20, 0x42, 0x05, ++ 0xd5, 0x49, 0x1b, 0x9b, 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, 0x70, 0x4b, 0x6f, 0xac, ++ 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, 0xe2, 0x6d, 0x64, 0x2a, 0xab, 0xf6, 0x18, 0x94, ++ 0xf5, 0x28, 0x7e, 0x7a, 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, 0xe2, 0x9d, 0x35, 0x3d, ++ 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, 0xde, 0x4f, 0xf6, 0xe4, ++ 0x95, 0x8b, 0xd1, 0x9a, 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, 0x2f, 0x2d, 0x97, 0x24, 0xdb, 0x4d, ++ 0xa5, 0x3b, 0x67, 0xea, 0xea, 0xcb, 0xee, 0x2e, 0x63, 0x4e, 0xc7, 0x2e, 0x4c, 0x99, 0xac, 0x75, ++ 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, 0x1d, 0x2f, 0xd2, 0x36, 0x9f, 0x2f, 0x05, 0xf2, 0x81, 0xdc, ++ 0x86, 0x51, 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, 0x98, 0x30, 0x2e, 0x81, 0x7c, 0x06, ++ 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, 0x0d, 0x31, 0x72, 0x2f, 0xc0, 0x31, 0x67, 0xea, 0x51, 0xaf, ++ 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, 0x62, 0xa7, 0x28, 0x32, 0xbc, 0x57, 0x26, 0x97, ++ 0xb6, 0xe1, 0x87, 0x7c, 0x7c, 0x8c, 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, 0xf5, 0x3c, 0x0b, 0x3e, ++ 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, 0x42, 0x74, 0x3b, 0x34, 0xc9, 0xee, 0xc8, 0xe7, ++ 0xd6, 0x42, 0x28, 0x9c, 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, 0x80, 0x85, 0xe5, 0x4e, ++ 0xe6, 0xf2, 0x9e, 0xec, 0xec, 0x0c, 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, 0x5b, 0x38, 0x92, 0x76, ++ 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, 0xd3, 0x37, 0x12, 0x53, 0xbf, 0xdf, ++ 0x06, 0x16, 0x66, 0x0e, 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, 0x23, 0x5f, 0xd7, 0x07, ++ 0x16, 0xc7, 0xb5, 0x9f, 0x9f, 0x4f, 0x99, 0x39, 0xb3, 0x69, 0x45, 0x39, 0x6a, 0x34, 0xfa, 0xae, ++ 0x26, 0x77, 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, 0xa3, 0xe1, 0xad, 0x3a, 0xb1, 0x89, 0x8d, 0x96, ++ 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, 0xbc, 0x3b, 0x12, 0x99, 0xf5, 0x3b, 0xf8, 0xe2, 0xa0, 0x3f, ++ 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, 0x83, 0x32, 0xbe, 0x3c, 0xc4, 0x30, 0x63, 0xe6, ++ 0x56, 0x05, 0x7f, 0x9e, 0x9e, 0x31, 0xd3, 0x3d, 0x32, 0x4a, 0xe6, 0x3d, 0x8d, 0x5b, 0x4e, 0x4f, ++ 0x66, 0xb5, 0xc9, 0xee, 0xee, 0xf0, 0x05, 0x3e, 0x22, 0xc2, 0x0e, 0x3e, 0x56, 0xe6, 0x39, 0x77, ++ 0x76, 0x64, 0x1a, 0x7f, 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, 0x1f, 0x8d, 0x14, 0xde, ++ 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, 0x2a, 0x40, 0xc7, 0x75, 0xa2, 0x40, 0x68, 0x3f, 0x11, 0x08, ++ 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, 0x76, 0x0d, 0xfa, 0x41, 0x21, 0x54, 0x3c, 0xa1, ++ 0xaa, 0x1c, 0x98, 0xf1, 0xf1, 0xd3, 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, 0xfa, 0xe9, 0x4b, 0x99, ++ 0xba, 0xcd, 0x4b, 0x60, 0x60, 0x2d, 0xfc, 0x43, 0xd7, 0xfd, 0x4a, 0x43, 0xb3, 0x82, 0x66, 0x30, ++ 0xca, 0xbf, 0x37, 0x11, 0x11, 0x92, 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, 0x8f, 0x50, 0xa5, 0xe9, ++ 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, 0x93, 0x45, 0xf7, 0x2e, 0x59, 0x45, 0xc6, 0x3b, 0x88, 0x40, ++ 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, 0xe7, 0xa6, 0xb1, 0x46, 0x1d, 0x86, 0xff, 0x78, ++ 0xfa, 0x0f, 0x81, 0x61, 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, 0x54, 0xed, 0xd2, 0xd1, ++ 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, 0x06, 0x33, 0x27, 0x48, 0x65, 0xe1, 0xba, 0x09, ++ 0x1a, 0xeb, 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, 0xb7, 0x4b, 0x7f, 0x49, 0x2c, 0x8a, 0x97, 0xa0, ++ 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, 0xf7, 0x37, 0xe0, 0x98, ++ 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, 0x16, 0xbb, 0xcf, 0x4b, 0xbe, 0x5c, 0xcd, 0x31, ++ 0x4a, 0xf8, 0x60, 0x13, 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, 0x82, 0x8e, 0x0e, 0xe8, ++ 0x5a, 0x29, 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, 0x36, 0x68, 0xdc, 0x4d, 0xcb, 0xe5, 0x23, 0x41, ++ 0x6a, 0x99, 0x05, 0xf2, 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, 0x10, 0x58, 0x54, 0x79, ++ 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, 0x59, 0x33, 0x79, 0xd0, ++ 0x49, 0xf3, 0x53, 0x14, 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, 0x6b, 0x50, 0x72, 0x40, 0x84, 0x0a, ++ 0x59, 0x22, 0x80, 0x85, 0x85, 0x29, 0x32, 0x51, 0x37, 0x81, 0x33, 0x51, 0x3b, 0x2b, 0xa9, 0xa3, ++ 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, 0xe4, 0x52, 0x27, 0x09, 0xdb, 0x52, 0xe0, 0x96, 0xde, 0x9b, ++ 0x79, 0x43, 0xe5, 0x64, 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, 0xa9, 0xfd, 0xf3, 0x32, ++ 0x09, 0x31, 0x99, 0x15, 0x15, 0xa9, 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, 0x95, 0x2f, 0x30, 0xeb, ++ 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, 0xb6, 0xa2, 0x90, 0x55, 0xdc, 0x44, 0x1d, 0x42, ++ 0x29, 0x50, 0xfc, 0xf4, 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, 0x07, 0xf9, 0x6a, 0x7a, ++ 0x39, 0x81, 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, 0x17, 0x52, 0x20, 0x57, 0x4e, 0x92, 0x47, 0xd3, ++ 0xc9, 0xb4, 0x04, 0x16, 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, 0x7f, 0x9e, 0x2f, 0x0b, ++ 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, 0x36, 0xf5, 0x02, 0xa2, ++ 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, 0x70, 0x5a, 0xe6, 0x4f, 0x5e, 0x5a, 0xed, 0x48, 0x75, 0x9a, ++ 0xf9, 0x04, 0xb2, 0x66, 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, 0xa4, 0x23, 0x58, 0x33, ++ 0x89, 0x76, 0xce, 0x17, 0x17, 0x55, 0x1f, 0x5c, 0xc6, 0x9c, 0x4d, 0x5c, 0x98, 0xf1, 0x9b, 0xea, ++ 0x99, 0xa7, 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, 0xd1, 0x9a, 0xb6, 0x43, ++ 0xa9, 0x17, 0xab, 0xf6, 0xf6, 0x6a, 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, 0x0a, 0x27, 0xc1, 0x7b, ++ 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, 0xa5, 0x5f, 0x43, 0x4c, 0xec, 0xd2, ++ 0xcf, 0xa2, 0x62, 0x18, 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, 0x5c, 0xc1, 0xf8, 0x0c, ++ 0xdf, 0x73, 0xb1, 0x89, 0x89, 0x64, 0xcc, 0x61, 0xf4, 0xd6, 0xab, 0x61, 0x15, 0xaa, 0xd5, 0xa5, ++ 0xef, 0xc3, 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, 0x43, 0x62, 0xce, 0x17, 0xa2, 0x9d, ++ 0xff, 0x12, 0xd4, 0x68, 0x68, 0x5b, 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, 0x87, 0x7c, 0x8f, 0x34, ++ 0x8f, 0x60, 0xa8, 0x19, 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, 0x50, 0x64, 0xbb, 0xae, 0x4c, 0xed, ++ 0x9f, 0xb1, 0x7b, 0x88, 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, 0xf2, 0xc5, 0x61, 0x44, ++ 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, 0x50, 0x66, 0x65, 0x7d, 0xe0, 0x66, 0x29, 0x78, 0x16, 0x7c, ++ 0xbf, 0xd0, 0x1e, 0x69, 0x69, 0x25, 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, 0x60, 0x13, 0x3b, 0xd5, ++ 0x4f, 0xe5, 0x35, 0x1a, 0x1a, 0x66, 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, 0x51, 0x1f, 0x53, 0x0d, ++ 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, 0x2e, 0x69, 0x18, 0x74, 0x7e, 0xa4, ++ 0x6f, 0x84, 0x50, 0xfb, 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, 0xc6, 0x6a, 0xc3, 0xc9, 0x09, 0x9c, ++ 0x7f, 0x55, 0x83, 0x6a, 0x6a, 0xa7, 0x7d, 0x6b, 0x94, 0x60, 0x9e, 0x6b, 0x8a, 0xa2, 0x24, 0x35, ++ 0x0f, 0x27, 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, 0x05, 0xcb, 0xd5, 0x6c, 0xb6, 0x70, 0xe7, 0xec, ++ 0x1f, 0xf6, 0x2c, 0x8a, 0x8a, 0xe6, 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, 0xff, 0x1b, 0xca, 0x45, ++ 0x2f, 0x46, 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, 0x65, 0x6e, 0x24, 0xa6, 0xbd, 0x7d, ++ 0x3f, 0x97, 0x49, 0x6b, 0x6b, 0xd9, 0x37, 0x6f, 0x15, 0x43, 0x3d, 0x6f, 0x6d, 0xcd, 0x90, 0xd4, ++ 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, 0x04, 0x22, 0x3a, 0x70, 0x46, 0xbe, 0x6d, 0x0e, ++ 0x1c, 0xfd, 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, 0xb5, 0x5a, 0x62, 0x71, 0x0f, 0xd5, 0x40, 0xa7, ++ 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, 0xf1, 0x72, 0xa5, 0xd2, 0x8a, 0x72, 0xd4, 0x68, 0x37, 0x9f, ++ 0x3c, 0x9c, 0x7a, 0x6c, 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, 0xd2, 0x73, 0x9d, 0x03, 0x1a, 0x36, ++ 0x4c, 0xee, 0x06, 0x1d, 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, 0x99, 0x74, 0xa1, 0xd1, 0xd9, 0xef, ++ 0x5c, 0x3f, 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, 0x34, 0x79, 0xc1, 0x75, 0xe8, 0xba, 0xf4, 0x46, ++ 0x6c, 0x8f, 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, 0x33, 0x07, 0x83, 0x7e, ++ 0x7c, 0x5e, 0xb0, 0x6d, 0x6d, 0x1e, 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, 0x7a, 0x6c, 0xae, 0xd7, ++ 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, 0x40, 0x78, 0xc5, 0x64, 0xbf, 0x78, 0x4b, 0x60, 0xc6, 0x0f, ++ 0x9c, 0xba, 0x48, 0x8f, 0x8f, 0xa3, 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, 0x02, 0x0b, 0xeb, 0xa6, ++ 0xac, 0x0a, 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, 0x64, 0x94, 0x0f, 0x7a, 0xd9, 0xb6, 0x9c, 0x9e, ++ 0xbc, 0xdb, 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, 0x90, 0xdd, 0xb1, 0x37, ++ 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, 0x0a, 0x7c, 0x44, 0x47, 0x1c, 0x7c, 0xac, 0x0f, 0x72, 0xee, ++ 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, 0xf9, 0x7d, 0xf5, 0x3f, 0x44, 0x7d, 0xe5, 0x64, 0x5f, 0x47, ++ 0xec, 0xc8, 0x34, 0xfe, 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, 0x3e, 0xd9, 0x28, 0x7f, ++ 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, 0x54, 0xcf, 0xf4, 0x7f, 0x77, 0xb2, 0x05, 0xd6, ++ 0xd7, 0xfa, 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, 0xd0, 0x7e, 0x22, 0x10, ++ 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, 0xa7, 0x81, 0xfc, 0x92, 0xdf, 0x81, 0x99, 0x15, 0x0f, 0xb9, ++ 0xf7, 0x9b, 0x5c, 0xc1, 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, 0x37, 0x82, 0x42, 0xa8, 0x78, 0x81, ++ 0xe7, 0x4a, 0x8f, 0x50, 0x50, 0xda, 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, 0x0b, 0xc3, 0x55, 0x28, ++ 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, 0xcc, 0xc9, 0x24, 0x84, 0x37, 0x11, 0x96, 0xf1, ++ 0x87, 0xe9, 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, 0x7e, 0x7a, 0xbb, 0x58, ++ 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, 0x3b, 0x86, 0x6d, 0x39, 0x94, 0x86, 0xa5, 0xc7, 0xcc, 0x60, ++ 0xa7, 0x88, 0x45, 0x51, 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, 0xcc, 0x87, 0xec, 0xac, 0xe1, 0xc9, ++ 0x57, 0xbd, 0x6e, 0x22, 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, 0x02, 0x88, 0xdd, 0xa0, 0x89, 0x11, ++ 0x47, 0x6c, 0xbd, 0xb3, 0xb3, 0x19, 0x33, 0x89, 0x3d, 0xd4, 0x5a, 0x89, 0x94, 0xcb, 0xa4, 0xb8, ++ 0x77, 0xdc, 0x0b, 0xc3, 0xc3, 0xd8, 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, 0x4f, 0x76, 0xd3, 0x80, ++ 0x67, 0x0d, 0xd8, 0x52, 0x52, 0x26, 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, 0x06, 0x1d, 0xfe, 0x29, ++ 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, 0x8a, 0x8c, 0x0d, 0x8f, 0xa1, 0x8c, 0x3a, 0xcf, 0x3d, 0xf0, ++ 0x07, 0xae, 0x77, 0xb2, 0xb2, 0x67, 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, 0x73, 0xa4, 0x10, 0x59, ++ 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, 0xac, 0x7f, 0x11, 0x8e, 0xa8, 0x19, 0x67, 0x61, ++ 0x27, 0xcf, 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, 0xe1, 0x72, 0x4a, 0xc8, ++ 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, 0xca, 0x01, 0xb7, 0x12, ++ 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, 0x16, 0x91, 0x83, 0x6a, 0x9a, 0xbb, ++ 0x34, 0x15, 0xf2, 0xc5, 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, 0x58, 0xd7, 0xed, 0x83, ++ 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, 0x1c, 0xee, 0xa6, 0x93, 0x11, 0xbc, 0xc0, 0x2a, ++ 0x54, 0xb6, 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, 0x8d, 0x45, 0xed, 0x94, 0x2d, 0x6e, 0x03, 0xf3, ++ 0x44, 0x67, 0x8e, 0xb4, 0xb4, 0xa0, 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, 0x64, 0x05, 0x2e, 0x5a, ++ 0x74, 0xd7, 0x38, 0xc4, 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, 0x5d, 0x96, 0xbf, 0xb8, 0x59, 0x62, ++ 0x64, 0x06, 0xeb, 0x55, 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, 0xf6, 0xd3, 0x74, 0xcb, ++ 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, 0xcd, 0x20, 0xcb, 0x98, 0xc7, 0xdf, 0x1c, 0x13, ++ 0x84, 0xe2, 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, 0x7c, 0x58, 0x93, 0x99, 0x8e, 0xb4, 0x31, 0xba, ++ 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, 0x0e, 0x9a, 0x6c, 0xd0, 0x7b, 0x9a, 0x55, 0x09, 0x46, 0x82, ++ 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, 0x23, 0x9b, 0x1c, 0x62, 0x6b, 0x2b, ++ 0xd4, 0xf1, 0x0a, 0x27, 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, 0x20, 0xb0, 0xa8, 0xf2, ++ 0xc4, 0x20, 0xd9, 0xb6, 0xb6, 0x5c, 0x92, 0x9d, 0xfd, 0x7b, 0x30, 0x9d, 0x69, 0xdb, 0x85, 0x5b, ++ 0xf4, 0x90, 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, 0xd8, 0x9e, 0xb2, 0x66, 0xf2, 0x63, ++ 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, 0xfb, 0x0d, 0xdf, 0xca, ++ 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, 0xcf, 0x31, 0xd6, 0xa0, 0xe4, 0x80, 0xcb, 0x14, ++ 0x82, 0xf4, 0x75, 0xb9, 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, 0xad, 0xeb, 0xe6, 0xbd, ++ 0xb2, 0x44, 0xc3, 0xc9, 0xc9, 0x52, 0x64, 0xa2, 0x6e, 0xc1, 0x66, 0xa2, 0x76, 0x56, 0x91, 0x85, ++ 0xa2, 0x95, 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, 0x3e, 0xa3, 0x3f, 0x3d, 0xbc, 0x2c, ++ 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, 0x0b, 0xa4, 0x4e, 0x12, 0x75, 0xa4, 0x03, 0xef, 0x7f, 0xf5, ++ 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, 0x2d, 0xa5, 0x4a, 0x84, 0x52, 0x5c, ++ 0xf2, 0x86, 0x09, 0xc8, 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, 0x91, 0x39, 0x25, 0x64, ++ 0xe2, 0x57, 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, 0x5e, 0x9a, 0x9d, 0xa7, 0xd8, 0x52, 0x08, 0xcd, ++ 0x12, 0x62, 0xf1, 0x2a, 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, 0xe9, 0x5e, 0x60, 0x15, ++ 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, 0xa0, 0x35, 0x4d, 0xbc, ++ 0x32, 0x03, 0x94, 0xcb, 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, 0xe3, 0xaa, 0x7b, 0x88, 0x3a, 0x84, ++ 0x22, 0xd2, 0x47, 0x5a, 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, 0xbb, 0xab, 0x32, 0xe3, 0x17, 0x2d, ++ 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, 0x8f, 0x54, 0xf0, 0xac, 0x0e, 0x31, 0xd4, 0xf4, ++ 0x42, 0x71, 0xe8, 0xba, 0xba, 0x11, 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, 0x47, 0x5a, 0xf9, 0x5d, ++ 0x72, 0xc1, 0x5e, 0xca, 0xca, 0xd0, 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, 0x9c, 0xe7, 0x8e, 0x65, ++ 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, 0x18, 0xaf, 0xd5, 0x8c, 0xa3, 0xcc, ++ 0x51, 0xab, 0x08, 0x2c, 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, 0xfe, 0xff, 0x5e, 0x16, ++ 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, 0x59, 0xb1, 0x3f, 0xc5, 0x47, 0xb1, 0xb7, 0x94, 0x73, 0xbf, ++ 0x71, 0xca, 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, 0xaf, 0xb2, 0x6c, 0x29, 0x04, 0x87, ++ 0x61, 0x1b, 0xbe, 0x5c, 0x5c, 0x97, 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, 0x25, 0x42, 0x29, 0x2e, ++ 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, 0xe0, 0xb4, 0x0f, 0x9e, 0xbc, 0xb4, 0x19, 0x90, 0xea, 0xf7, ++ 0x01, 0xb8, 0x11, 0xbc, 0xbc, 0xd6, 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, 0x50, 0xfb, 0xc7, 0x5e, ++ 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, 0xae, 0x6e, 0x0c, 0xb6, 0x8b, 0x46, 0xb0, 0x66, ++ 0x21, 0xd9, 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, 0x1f, 0x16, 0x54, 0xb7, 0xc2, 0x2d, 0x9d, 0xcf, ++ 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, 0x3e, 0xb8, 0x4f, 0xfb, 0x9a, 0xb8, 0xf3, 0x21, 0xf5, 0x17, ++ 0xc1, 0x3d, 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, 0xc2, 0xb9, 0xba, 0x4a, 0xd8, 0xbe, ++ 0xf1, 0x8d, 0x3a, 0xcf, 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, 0x2a, 0xba, 0x61, 0xf7, 0xaf, 0x86, ++ 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, 0x5f, 0x73, 0x72, 0xbb, 0x28, 0x9c, 0x82, 0x2f, ++ 0x91, 0x2e, 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, 0x39, 0xbc, 0x14, 0x4e, 0x41, 0xf6, ++ 0x81, 0xff, 0x46, 0xbe, 0xbe, 0x2a, 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, 0x5d, 0x25, 0x6c, 0x5f, ++ 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, 0x51, 0xbe, 0x6f, 0x28, 0x89, 0xbe, 0x86, 0x98, 0x1b, 0x67, ++ 0xa1, 0x9e, 0x23, 0x5f, 0x5f, 0x15, 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, 0xcf, 0xf3, 0x36, 0xce, ++ 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, 0x8a, 0x9f, 0x25, 0xc0, 0xb8, 0x41, 0x33, 0x18, ++ 0x4d, 0x56, 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, 0xf1, 0x2a, 0x1e, 0xb1, ++ 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, 0x2a, 0x97, 0x69, 0x89, ++ 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, 0xa8, 0xc3, 0x9a, 0x17, 0xcd, 0xc3, 0x63, 0xfc, 0x44, 0x20, ++ 0x1d, 0x45, 0x0e, 0x31, 0x31, 0x89, 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, 0x5f, 0x2e, 0x87, 0xf9, ++ 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, 0xba, 0xc4, 0xde, 0xc5, 0x16, 0x45, 0xaa, 0x50, ++ 0x3d, 0x24, 0x6b, 0xd0, 0xd0, 0xb6, 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, 0xcd, 0xf8, 0xdd, 0x68, ++ 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, 0xe2, 0xc7, 0x1b, 0x34, 0x6e, 0xc7, 0x84, 0x93, 0xf0, 0xc1, ++ 0xdd, 0xc0, 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, 0xa0, 0xc8, 0xb5, 0x9f, 0x98, 0x19, ++ 0xcd, 0x11, 0x40, 0xa3, 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, 0xf8, 0xc9, 0xfc, 0xf4, 0xb5, 0xb0, ++ 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, 0xea, 0x29, 0x10, 0xca, 0x27, 0x49, 0xc2, 0x88, ++ 0xed, 0x70, 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, 0x6e, 0x22, 0xef, 0x21, ++ 0x9d, 0x02, 0x59, 0x33, 0x33, 0x75, 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, 0x52, 0xf0, 0x2c, 0xf8, ++ 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, 0x7b, 0x82, 0x5b, 0xcd, 0x1b, 0x9b, 0x01, 0x51, ++ 0xbd, 0x63, 0x3c, 0xd2, 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, 0xc0, 0x26, 0x76, 0x69, ++ 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, 0xda, 0x72, 0xeb, 0xcf, 0x89, 0x4d, 0x5b, 0xc0, ++ 0x9e, 0x09, 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, 0xec, 0xd0, 0xa2, 0x3e, 0xa6, 0x1a, ++ 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, 0x66, 0xd1, 0x7a, 0x6b, 0xb4, 0xd1, 0xeb, 0x55, 0x8b, 0xb3, ++ 0xbe, 0x68, 0x0f, 0xd5, 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, 0x5c, 0xd2, 0x30, 0xe8, 0xfc, 0x8b, ++ 0xae, 0xb9, 0xdc, 0x44, 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, 0x79, 0x83, 0xd1, 0x22, ++ 0xde, 0xcb, 0xa0, 0x35, 0x35, 0xb2, 0xdf, 0xd4, 0x4a, 0x30, 0x4f, 0xd4, 0x45, 0x51, 0x12, 0xfb, ++ 0xce, 0x1a, 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, 0x0c, 0x3a, 0x3f, 0x52, ++ 0xfe, 0xaa, 0xc5, 0xd4, 0xd4, 0x8d, 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, 0xd7, 0x87, 0x48, 0x6a, ++ 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, 0x09, 0xd7, 0x5a, 0xb8, 0xa7, 0xd7, 0x9e, 0xec, 0x65, 0xc3, ++ 0x1e, 0x4e, 0x3d, 0x36, 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, 0xaf, 0xe0, 0x0d, 0x1b, ++ 0x0e, 0x9f, 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, 0xbb, 0x2d, 0x31, 0xd9, 0xe6, 0x8b, 0x20, 0xb2, ++ 0x3e, 0x2f, 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, 0xd9, 0xda, 0x3d, 0x36, 0x57, 0x8a, ++ 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, 0x74, 0x5d, 0x7a, 0x23, ++ 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, 0x8b, 0x76, 0xca, 0xdc, 0x48, 0x8f, 0xb9, 0xfa, ++ 0x4e, 0x5d, 0x24, 0xa6, 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, 0x01, 0xe4, 0x94, 0x53, ++ 0x7e, 0xed, 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, 0x2a, 0x86, 0x7a, 0xde, 0xda, 0x59, 0xe3, 0x6b, ++ 0x6e, 0x3c, 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, 0x9b, 0xfe, 0x22, 0xdf, 0x93, 0x32, 0xce, 0xc2, ++ 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, 0x6b, 0xe0, 0x08, 0x44, 0x74, 0xe0, 0x8c, 0xbf, 0xda, 0x1c, ++ 0x08, 0x89, 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, 0x2c, 0xe1, 0xc5, 0xd4, 0xf7, 0xb5, ++ 0x38, 0x39, 0x3e, 0xd9, 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, 0x1e, 0x69, 0x80, 0x8d, ++ 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, 0xbd, 0xe3, 0x18, 0xcc, 0x9c, 0xe3, 0x57, 0x02, 0xad, 0x24, ++ 0x58, 0x9a, 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, 0xd7, 0xe4, 0x6b, 0xd0, 0x6e, 0xfd, ++ 0x48, 0x4b, 0x42, 0xa8, 0xa8, 0x01, 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, 0x22, 0xbb, 0x43, 0x54, ++ 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, 0x04, 0xe6, 0x28, 0x97, 0x67, 0xe6, 0xf9, 0x06, 0x34, 0x6c, ++ 0x68, 0x2a, 0x27, 0x49, 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, 0xb0, 0x6d, 0x19, 0xc5, ++ 0x98, 0x1f, 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, 0xc9, 0x02, 0xf1, 0xe8, 0x81, 0x61, 0x71, 0x1d, ++ 0x88, 0xce, 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, 0xa9, 0xe9, 0xc8, 0x0a, 0x5c, 0xb4, ++ 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, 0xda, 0xea, 0x68, 0xf2, 0x41, 0xea, 0x13, 0xb7, 0x2b, 0x8c, ++ 0xa8, 0xaf, 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, 0x19, 0xeb, 0x5a, 0xdc, 0x06, 0x25, ++ 0xd8, 0xdd, 0xc6, 0x3b, 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, 0x52, 0xec, 0x66, 0x0e, 0xc5, 0xfc, ++ 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, 0x46, 0xed, 0xf9, 0x59, 0x0a, 0xed, 0x2f, 0x65, 0xe8, 0x55, ++ 0xf8, 0xbc, 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, 0xf4, 0xd8, 0x9f, 0x6d, ++ 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, 0x63, 0xef, 0x58, 0xa9, 0xba, 0xef, 0xbd, 0xb3, 0xb2, 0xc4, ++ 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, 0x80, 0xf0, 0x49, 0xc8, 0xbd, 0xf0, 0x96, 0xc0, 0x4f, 0x1e, ++ 0xcb, 0x07, 0x26, 0xad, 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, 0xdf, 0xab, 0x62, 0xb7, ++ 0xfb, 0xb7, 0x90, 0xdd, 0xdd, 0x85, 0xa5, 0xf2, 0xe8, 0x38, 0x0d, 0xf2, 0x04, 0x16, 0x15, 0x8f, ++ 0xeb, 0x66, 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, 0x55, 0xf3, 0x4d, 0x7d, 0x38, 0x26, ++ 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, 0xca, 0xf4, 0xc8, 0xeb, 0x1e, 0xf4, 0x71, 0xaf, 0xfb, 0xff, ++ 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, 0x39, 0xf5, 0x79, 0x93, 0x46, 0xf5, 0x38, 0xc4, 0xd6, 0x56, ++ 0xbb, 0x75, 0x5a, 0xdc, 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, 0xae, 0xf6, 0xe3, 0x79, 0xa1, 0x6e, ++ 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, 0xd8, 0x63, 0xf6, 0xf7, 0xaa, 0x12, 0x8c, 0xc7, ++ 0x5b, 0x91, 0xa2, 0x3e, 0x3e, 0x46, 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, 0x9b, 0x1e, 0xe4, 0x1f, ++ 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, 0xe7, 0xf9, 0x39, 0xf6, 0x60, 0xf9, 0xd2, 0x75, 0xc9, 0xb6, ++ 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, 0x88, 0xfa, 0x09, 0xc8, 0xbe, 0x8e, ++ 0x6b, 0x21, 0x14, 0x4e, 0x4e, 0x87, 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, 0x40, 0xa3, 0x93, 0x27, ++ 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, 0x09, 0xad, 0x9b, 0xfc, 0x7c, 0x71, 0x50, 0xfe, ++ 0x0b, 0x82, 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, 0xc3, 0xfd, 0x35, 0x1a, 0x7d, 0x57, ++ 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, 0xee, 0xa7, 0x0a, 0x6f, ++ 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, 0x19, 0x25, 0x73, 0xff, 0xa7, 0xcc, 0x27, 0xc6, ++ }, ++ { /* 5 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xc2, 0x8d, 0x31, 0x64, 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, 0xf6, 0x30, 0xb8, 0xf6, ++ 0x47, 0xd9, 0x62, 0xc8, 0x1b, 0x15, 0x1e, 0x54, 0x6e, 0xf1, 0xe3, 0x4b, 0x2f, 0x60, 0xb3, 0x2f, ++ 0x85, 0x54, 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, 0x59, 0x68, 0x73, 0x8f, 0xd9, 0x50, 0x0b, 0xd9, ++ 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, 0x3c, 0xa8, 0xdc, 0x21, 0x05, 0x96, 0x5e, 0xc0, 0xa5, 0x5e, ++ 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, 0x95, 0x52, 0xa8, 0xf0, 0x1d, 0xa8, ++ 0xc9, 0xa8, 0xa6, 0x9b, 0x2d, 0x3f, 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, 0x71, 0xa0, 0x16, 0x71, ++ 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, 0x85, 0x49, 0x76, 0x19, 0x87, 0x90, 0xae, 0x87, ++ 0xdf, 0xe2, 0x4b, 0xa6, 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, 0xbc, 0x43, 0x89, 0xbc, ++ 0x1d, 0x6f, 0x7a, 0xc2, 0x80, 0xbf, 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, 0x4a, 0x73, 0x31, 0x4a, ++ 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, 0xe9, 0xa4, 0x93, 0x23, 0x3a, 0x93, ++ 0x5a, 0xb6, 0x18, 0x0a, 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, 0x65, 0x13, 0x82, 0x65, ++ 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, 0xa7, 0x63, 0x0f, 0x79, 0xe2, 0x83, 0x2c, 0xe2, ++ 0x93, 0x1e, 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, 0x90, 0xfa, 0x9f, 0xbd, 0x14, 0xb3, 0x94, 0x14, ++ 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, 0xcd, 0xe3, 0x9f, 0xcd, ++ 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, 0xfe, 0x0b, 0x7c, 0xf6, 0x3b, 0xd3, 0x27, 0x3b, ++ 0x7d, 0x07, 0x96, 0x8f, 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, 0xbb, 0x86, 0xd1, 0xbb, ++ 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, 0xff, 0xcf, 0xc1, 0x1d, 0x84, 0xd9, 0x4d, 0xb6, 0x69, 0x4d, ++ 0x3a, 0xde, 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, 0xf7, 0x56, 0x94, 0xe6, 0x62, 0x94, ++ 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, 0x62, 0xd6, 0xda, 0x62, ++ 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, 0x2a, 0xa5, 0x11, 0x8b, 0xe5, 0x46, 0x74, 0xe5, ++ 0x31, 0xfb, 0x63, 0xb8, 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, 0x13, 0x76, 0xcc, 0x13, ++ 0xb4, 0xaf, 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, 0x44, 0x54, 0xf2, 0xc0, 0xca, 0x26, 0xc7, 0xca, ++ 0x76, 0x22, 0x01, 0x70, 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, 0x3c, 0x16, 0x7f, 0x3c, ++ 0xa2, 0xe5, 0xdd, 0x29, 0xb4, 0xfc, 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, 0x07, 0xc5, 0x58, 0x07, ++ 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, 0x87, 0x5c, 0xba, 0x5f, 0x8e, 0x36, 0xf1, 0xf5, 0xe0, 0xf1, ++ 0xe5, 0x3c, 0xbf, 0xe1, 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, 0x28, 0xa5, 0xeb, 0x28, ++ 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, 0xd4, 0xae, 0x6d, 0x7d, 0xde, 0x95, 0x53, 0xde, ++ 0x2c, 0x94, 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, 0x1b, 0x64, 0x59, 0x05, 0xfd, 0x59, ++ 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, 0xbb, 0xf4, 0x66, 0x7e, 0x8b, 0xa0, 0xaf, 0x35, 0x45, 0xaf, ++ 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, 0xf8, 0x2f, 0x76, 0x65, 0x4e, 0x76, ++ 0xa9, 0xc0, 0x4a, 0xd6, 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, 0x80, 0x55, 0xf6, 0x80, ++ 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, 0x23, 0x09, 0x2f, 0xcb, 0x28, 0x3a, 0xb5, 0xcf, 0x61, 0xb5, ++ 0x38, 0x83, 0xde, 0xb9, 0x9f, 0x78, 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, 0x43, 0xff, 0xd9, 0x43, ++ 0xbd, 0xd7, 0x8d, 0x15, 0x68, 0x86, 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, 0x9a, 0xaf, 0xd2, 0x9a, ++ 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, 0x5b, 0xb5, 0x6c, 0x9f, 0x6a, 0x6c, ++ 0x74, 0x7f, 0x2b, 0x8e, 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, 0xeb, 0x0f, 0xc4, 0xeb, ++ 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, 0xc4, 0x73, 0xbd, 0x68, 0x1d, 0x3f, 0x7c, 0x1d, ++ 0x33, 0xa6, 0x49, 0x46, 0x5e, 0xac, 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, 0xc4, 0x6f, 0x77, 0xc4, ++ 0xf1, 0x2b, 0x78, 0x22, 0xb2, 0x47, 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, 0x32, 0x5f, 0xcf, 0x32, ++ 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, 0x5b, 0x9a, 0x54, 0x89, 0x22, 0xd5, 0x09, 0x8c, 0xe8, 0x09, ++ 0xe7, 0x61, 0x95, 0x1f, 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, 0xff, 0xbc, 0x50, 0xff, ++ 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, 0x3a, 0x78, 0xc1, 0x9e, 0x26, 0xec, 0x5b, 0x26, ++ 0xa0, 0xb8, 0xf7, 0xd7, 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, 0xd0, 0xdc, 0xe3, 0xd0, ++ 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, 0x57, 0x4c, 0x4d, 0x57, ++ 0x69, 0x10, 0x51, 0x4c, 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, 0xb7, 0x87, 0xa1, 0x7c, 0xf5, 0xa1, ++ 0xec, 0x44, 0x02, 0xe0, 0x32, 0xf8, 0x79, 0x66, 0xe6, 0x59, 0xc4, 0x08, 0x78, 0x2c, 0xfe, 0x78, ++ 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, 0x76, 0x4c, 0xd1, 0xc0, 0x54, 0xcc, 0x8e, 0x1c, 0x46, 0x8e, ++ 0x87, 0x09, 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, 0x3c, 0x27, 0x0e, 0x49, 0xb0, 0x0e, ++ 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, 0xdc, 0xc6, 0xee, 0xd6, 0xac, 0xe3, 0xf8, 0x79, 0x08, 0xf8, ++ 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, 0xb7, 0xbe, 0xdf, 0x6c, 0x21, 0x29, 0x03, 0x21, ++ 0x02, 0x5d, 0x2a, 0xfe, 0x5c, 0xc5, 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, 0xd7, 0x19, 0xbb, 0xd7, ++ 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, 0x05, 0x6e, 0x39, 0xb1, 0x50, 0x89, 0x15, 0x50, ++ 0xcb, 0xf5, 0x8c, 0x65, 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, 0xa6, 0xb9, 0xad, 0xa6, ++ 0x4e, 0xa1, 0xdf, 0xc9, 0x86, 0x04, 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, 0x7f, 0xe9, 0xa6, 0x7f, ++ 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, 0x4a, 0x3e, 0x89, 0xd9, 0x1e, 0x89, ++ 0x58, 0xeb, 0x32, 0xf4, 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, 0xb2, 0x0a, 0x39, 0xb2, ++ 0x9a, 0x66, 0x03, 0x90, 0x2b, 0x84, 0xa4, 0x55, 0x95, 0x94, 0xa6, 0x0c, 0x44, 0x3a, 0x81, 0x44, ++ 0x1f, 0x32, 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, 0xcc, 0xfc, 0xd5, 0x83, 0x9d, 0x6a, 0x8a, 0x9d, ++ 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, 0xba, 0x01, 0xfb, 0x65, 0x45, 0x47, 0x6b, 0x5a, 0x32, 0x6b, ++ 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, 0x7e, 0x2c, 0x33, 0x5e, 0xec, 0xca, 0x9c, 0xec, ++ 0x14, 0x17, 0xc7, 0xc3, 0x1d, 0xae, 0x98, 0xfd, 0x49, 0xb5, 0xa3, 0x9a, 0x1a, 0xfa, 0x24, 0x1a, ++ 0x91, 0x43, 0x94, 0x6f, 0xea, 0x50, 0x89, 0x83, 0x10, 0xdd, 0xd0, 0x15, 0xc3, 0xaa, 0x2f, 0xc3, ++ 0x53, 0xce, 0xa5, 0x0b, 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, 0x35, 0x9a, 0x97, 0x35, ++ 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, 0x46, 0x12, 0x5e, 0x55, 0x50, 0x74, 0xa9, 0x5d, 0xc2, 0xa9, ++ 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, 0x69, 0xcc, 0xc0, 0xb0, 0x5f, 0x6d, 0x7a, 0x5f, ++ 0x70, 0xc5, 0x7f, 0xb1, 0xfd, 0xf0, 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, 0x86, 0x3d, 0x71, 0x86, ++ 0xb2, 0x48, 0x4e, 0xd5, 0x11, 0x1b, 0x57, 0x6c, 0x07, 0x3d, 0x23, 0xfb, 0x70, 0x0d, 0xc9, 0x70, ++ 0xb9, 0x6d, 0xd9, 0x2a, 0xd0, 0xcf, 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, 0xf7, 0x9d, 0x67, 0xf7, ++ 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, 0x75, 0x90, 0xb5, 0xed, 0xc5, 0x26, 0x01, 0xad, 0xdf, 0x01, ++ 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, 0xec, 0x85, 0xb6, 0xa9, 0xd8, 0xfd, 0xd4, 0xd8, ++ 0x3c, 0x39, 0x8a, 0x86, 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, 0x2e, 0xcd, 0x6c, 0x2e, ++ 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, 0x25, 0x17, 0x5a, 0x9b, 0x15, 0x1e, 0x4b, 0x15, ++ 0x2a, 0x73, 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, 0x12, 0x8e, 0xca, 0x5f, 0xe3, 0x2e, 0xf3, 0xe3, ++ 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, 0x3a, 0x7e, 0xf8, 0x3a, ++ 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, 0x7c, 0x7f, 0x29, 0x14, 0xcc, 0x4e, 0x40, 0xcc, ++ 0x66, 0x8f, 0x92, 0x8c, 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, 0x4b, 0xde, 0xee, 0x4b, ++ 0xa4, 0x02, 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, 0xce, 0xaf, 0xcf, 0xc9, 0xbd, 0xee, 0x56, 0xbd, ++ 0x21, 0x56, 0xf0, 0x44, 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, 0x64, 0xbe, 0x5d, 0x64, ++ 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, 0x92, 0x8e, 0xe5, 0x92, ++ 0x4a, 0x1b, 0x8b, 0xf6, 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, 0x44, 0x69, 0x12, 0xdb, 0x13, 0x12, ++ 0x88, 0x96, 0xba, 0x92, 0xd2, 0xa6, 0xb9, 0xdd, 0x9f, 0x48, 0xd4, 0xad, 0xe4, 0xeb, 0xab, 0xe4, ++ 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, 0xa8, 0xa3, 0xc6, 0x20, 0xa7, 0x22, 0x3d, 0xbb, 0xa0, 0x3d, ++ 0xcf, 0x4f, 0xd8, 0x5a, 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, 0xcb, 0x8b, 0x18, 0xcb, ++ 0xc4, 0x6a, 0x4f, 0xa5, 0x08, 0x67, 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, 0x4c, 0x1b, 0xb6, 0x4c, ++ 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, 0x43, 0x69, 0xd1, 0x3b, 0xba, 0x2b, 0x0e, 0xba, ++ 0x83, 0xb3, 0x2d, 0x6d, 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, 0x63, 0x7b, 0x05, 0x63, ++ 0x41, 0x3e, 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, 0x2d, 0x98, 0x32, 0x70, 0x95, 0x4b, 0xbd, 0x95, ++ 0x95, 0xf9, 0xc0, 0x50, 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, 0xae, 0x98, 0x9a, 0xae, ++ 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, 0x58, 0xa8, 0x22, 0x58, ++ 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, 0xd0, 0x30, 0xbd, 0x62, 0xad, 0xcd, 0x81, 0xf8, 0x29, 0x81, ++ 0x10, 0xad, 0x93, 0xfc, 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, 0x77, 0xc8, 0x91, 0x77, ++ 0x1b, 0x88, 0x04, 0x03, 0x64, 0x33, 0xf2, 0xcc, 0x0f, 0xb2, 0x4b, 0x10, 0xf0, 0x58, 0x3f, 0xf0, ++ 0xd9, 0x05, 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, 0x06, 0x68, 0x87, 0x06, ++ 0x5c, 0x51, 0x66, 0xcb, 0x7f, 0x26, 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, 0xdf, 0x38, 0x8c, 0xdf, ++ 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, 0x38, 0x9f, 0x29, 0x08, 0x34, 0x29, ++ 0xcd, 0x12, 0xf2, 0xa4, 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, 0x1c, 0x92, 0xa3, 0x1c, ++ 0x0f, 0x9f, 0xc3, 0xc0, 0x79, 0x9d, 0x6a, 0x31, 0x46, 0x07, 0xe8, 0x8a, 0xea, 0xa2, 0x1b, 0xea, ++ 0x8a, 0xcb, 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, 0x9b, 0x05, 0x33, 0xf2, 0x10, 0x33, ++ 0x48, 0x46, 0xa1, 0x08, 0x62, 0x88, 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, 0xc5, 0xc2, 0xa8, 0xc5, ++ 0x43, 0x63, 0x36, 0xf7, 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, 0x7d, 0xd8, 0x42, 0x52, 0x06, 0x42, ++ 0x81, 0xee, 0x07, 0x93, 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, 0xb4, 0x62, 0xbe, 0xb4, ++ 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, 0x47, 0xe7, 0xc3, 0x4e, 0x9e, 0x93, 0x6d, 0x32, 0xb5, 0x6d, ++ 0xc6, 0x37, 0x65, 0x5b, 0x54, 0xa2, 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, 0x9b, 0x02, 0x0d, 0x9b, ++ 0x12, 0xf0, 0xb9, 0x02, 0xf9, 0x22, 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, 0xa0, 0xd1, 0x2a, 0xa0, ++ 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, 0xe2, 0x65, 0x56, 0xe1, 0x92, 0x56, ++ 0x55, 0x29, 0xdb, 0xca, 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, 0x91, 0xea, 0x8f, 0xb1, 0x99, 0x8f, ++ 0x97, 0xa4, 0xea, 0xae, 0x0e, 0xdc, 0x0c, 0xf6, 0x53, 0xb4, 0x01, 0x2e, 0x79, 0x81, 0x21, 0x79, ++ 0x9c, 0x81, 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, 0xd6, 0xfd, 0x77, 0x37, 0xfe, 0x11, 0x8f, 0xfe, ++ 0x5e, 0x0c, 0x4c, 0x35, 0x23, 0xe3, 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, 0x08, 0x21, 0x37, 0x08, ++ 0xdb, 0x58, 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, 0x94, 0x7c, 0xd1, 0x71, 0x3c, 0xd1, ++ 0x19, 0xd5, 0x2e, 0xfd, 0x38, 0xf6, 0x30, 0x5e, 0x8f, 0x95, 0x04, 0xb8, 0x27, 0x41, 0x84, 0x27, ++ 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, 0x87, 0x1a, 0x6c, 0x53, 0xa7, 0x14, 0x72, 0xa7, ++ 0x72, 0x98, 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, 0xb0, 0x83, 0xfc, 0x97, 0x51, 0x24, 0xca, 0x51, ++ 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, 0x8b, 0xaa, 0xe9, 0xeb, 0x8f, 0x18, 0x88, 0x74, 0xc1, 0x88, ++ 0x35, 0x41, 0x37, 0x87, 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, 0x1f, 0xdc, 0x7e, 0x44, 0x79, 0x7e, ++ 0x3e, 0x64, 0xa0, 0x78, 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, 0x69, 0xc5, 0xf9, 0xd4, 0xd7, 0xf9, ++ 0xfc, 0xe9, 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, 0x6c, 0xa2, 0xf9, 0x01, 0x0f, 0xe4, 0x6f, 0x0f, ++ 0x79, 0xbd, 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, 0xd6, 0xb4, 0x64, 0xd6, ++ 0xbb, 0x30, 0xf3, 0xd4, 0x8c, 0x0a, 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, 0x20, 0x84, 0xdc, 0x20, ++ 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, 0xed, 0x6d, 0xfc, 0x58, 0x66, 0xbc, 0x1b, 0x57, 0xfb, 0x1b, ++ 0xad, 0x7a, 0x1e, 0xe9, 0xcd, 0x61, 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, 0xed, 0x67, 0x43, 0xed, ++ 0x28, 0x2e, 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, 0x92, 0xa9, 0x85, 0xf7, 0x34, 0x37, 0x48, 0x34, ++ 0xea, 0xa3, 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, 0xc2, 0x07, 0xf0, 0xc2, ++ 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, 0xd1, 0xc5, 0x20, 0x79, 0x63, 0x2a, 0x45, 0x97, 0x5e, 0x45, ++ 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, 0xde, 0xef, 0x17, 0xe0, 0xf3, 0xee, 0xb3, 0xa7, 0xe6, 0xb3, ++ 0xa6, 0x5f, 0x89, 0x16, 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, 0x6a, 0xf7, 0xed, 0x6a, ++ 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, 0x79, 0x11, 0x10, 0xa5, 0x9c, 0xc7, 0x55, 0x9c, ++ 0x6e, 0x38, 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, 0x91, 0xba, 0x47, 0x91, ++ 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, 0x83, 0x0e, 0x8b, 0x33, 0x30, 0x2c, 0x67, 0x8a, 0xff, 0x67, ++ 0x29, 0xe1, 0x58, 0x3a, 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, 0x43, 0xa3, 0xbe, 0xda, 0xf4, 0xbe, ++ 0xeb, 0x6c, 0x69, 0x5e, 0xf8, 0xf7, 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, 0x48, 0xea, 0x4c, 0x48, ++ 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, 0x60, 0x8b, 0xa5, 0x7e, 0xcf, 0x7a, 0xe2, 0xcf, ++ 0x22, 0xc4, 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, 0x39, 0x4a, 0x5a, 0x39, ++ 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, 0xae, 0xd8, 0x0e, 0x7a, 0x46, 0x35, 0xe0, 0x1a, 0x51, 0xe0, ++ 0x65, 0x1d, 0xad, 0x0d, 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, 0xd6, 0xf1, 0x16, 0x2a, 0xe9, 0x16, ++ 0xb1, 0xda, 0x71, 0x54, 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, 0xaa, 0x07, 0x2d, 0xf9, 0xce, 0x2d, ++ 0x73, 0x57, 0x40, 0x30, 0x8f, 0xb6, 0xfb, 0x9d, 0xf0, 0x71, 0x3a, 0xc3, 0xdb, 0xc9, 0x76, 0xdb, ++ 0xf6, 0x03, 0x13, 0x9c, 0x78, 0x48, 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, 0x02, 0x99, 0x7d, 0x02, ++ 0x34, 0x8e, 0x22, 0xf8, 0x94, 0xa3, 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, 0xf4, 0xa9, 0xc5, 0xf4, ++ 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, 0xc8, 0x1f, 0x1b, 0xc9, 0xaf, 0x91, 0x73, 0x39, 0x6b, 0x73, ++ 0xfd, 0x26, 0x84, 0x63, 0xb9, 0x9c, 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, 0x85, 0x09, 0xd3, 0x85, ++ 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, 0x75, 0x38, 0x4c, 0xda, 0x5c, 0x59, 0xd8, 0x5c, ++ 0xba, 0xff, 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, 0xaa, 0x69, 0x60, 0xaa, ++ 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, 0x2a, 0x3c, 0x96, 0x2a, ++ 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, 0x24, 0x31, 0xdc, 0x0c, 0x2e, 0xdc, ++ 0x54, 0xe6, 0xce, 0xb5, 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, 0x05, 0x5c, 0x25, 0x05, ++ 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, 0x13, 0x46, 0xc7, 0x7a, 0xf3, 0x6c, 0x9d, 0xf3, ++ 0x9d, 0x4e, 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, 0x96, 0x0f, 0xb1, 0x63, 0x74, 0xfc, 0x33, 0x74, ++ 0x5f, 0xc3, 0x59, 0x4a, 0x0d, 0x60, 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, 0x82, 0xcc, 0x8b, 0x82, ++ 0xda, 0x97, 0x0a, 0xe6, 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, 0x52, 0x28, 0x5b, 0x9c, 0x80, 0x5b, ++ 0x18, 0x1a, 0x3b, 0x82, 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, 0xad, 0xac, 0x38, 0xad, ++ 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, 0x31, 0x6c, 0xbe, 0x1a, 0x96, 0x7f, 0x1f, 0x96, ++ 0x0e, 0x50, 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, 0x06, 0xf5, 0x2e, 0xde, 0x60, 0x4f, 0xa7, 0x60, ++ 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, 0x1a, 0x06, 0x5f, 0x9d, 0x5d, 0x51, 0xb9, 0x1f, 0xac, 0xb9, ++ 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, 0xcd, 0x95, 0x4f, 0x2f, 0x14, 0x4f, ++ 0x42, 0xac, 0x23, 0x88, 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, 0xc8, 0xbf, 0xba, 0xc8, ++ 0x80, 0x21, 0x12, 0xec, 0x61, 0x34, 0x37, 0xd0, 0xda, 0xd4, 0x2b, 0x48, 0x3e, 0x8f, 0x02, 0x3e, ++ 0x05, 0x75, 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, 0x58, 0xc7, 0xe7, 0xdf, 0x09, 0xe7, ++ 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, 0x11, 0xef, 0xb1, 0x11, ++ 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, 0x93, 0x61, 0x88, 0xd2, 0x24, 0x75, 0x26, 0x24, ++ 0x56, 0xbb, 0xe4, 0x4b, 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, 0xd2, 0x45, 0x9e, 0xd2, ++ 0xd3, 0xef, 0xb7, 0xe7, 0x67, 0x8f, 0xb1, 0x79, 0xfd, 0x90, 0x6b, 0x99, 0x0b, 0x15, 0x95, 0x0b, ++ 0x11, 0x62, 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, 0xfb, 0x5d, 0xfd, 0x25, 0x2d, 0xfd, ++ 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, 0x93, 0x85, 0x4f, 0x40, 0x8d, 0x44, 0x7a, 0xb5, 0x83, 0x7a, ++ 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, 0x1d, 0x80, 0x8c, 0x85, 0x3b, 0x8c, ++ 0x5d, 0x9e, 0x73, 0xb4, 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, 0x55, 0xd5, 0x30, 0x55, ++ 0x9f, 0x13, 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, 0x16, 0x28, 0xfe, 0xcb, 0xa3, 0xe5, 0x88, 0xa3, ++ 0x4b, 0xd4, 0x9e, 0x89, 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, 0x98, 0x36, 0xaf, 0x98, ++ 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, 0x6e, 0x06, 0x17, 0x6e, ++ 0x0c, 0x0d, 0xfc, 0x41, 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, 0x61, 0x76, 0xb7, 0x56, 0x1c, 0xb7, ++ 0xce, 0x80, 0xcd, 0x25, 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, 0xf1, 0xb2, 0x41, 0x66, 0xa4, 0x41, ++ 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, 0x34, 0x02, 0x87, 0xab, 0xc6, 0xf6, 0x0a, 0xc6, ++ 0x07, 0x28, 0x6b, 0xbe, 0xca, 0x0f, 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, 0x30, 0xc6, 0xb2, 0x30, ++ 0x82, 0x7c, 0x38, 0x12, 0x3d, 0xf1, 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, 0xe9, 0x96, 0xb9, 0xe9, ++ 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, 0xf4, 0x24, 0x1f, 0xa6, 0x01, 0x1f, ++ 0xe9, 0x31, 0x43, 0xa0, 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, 0x9f, 0xf3, 0xf7, 0x9f, ++ 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, 0x50, 0xe2, 0x52, 0x7c, 0x0c, 0x0b, 0x69, 0xc3, 0x4f, 0x69, ++ 0xae, 0xe8, 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, 0x7f, 0x84, 0xb0, 0x93, 0x44, 0xb0, ++ 0x6c, 0x65, 0x10, 0x0c, 0x53, 0xcc, 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, 0x46, 0xa3, 0xfc, 0x46, ++ 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, 0x63, 0x60, 0xb9, 0xc4, 0x99, 0x59, 0xc1, 0x33, 0x52, 0xc1, ++ 0xa5, 0xcd, 0xb6, 0x97, 0x7e, 0xf3, 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, 0x37, 0x03, 0xea, 0x37, ++ 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, 0xd7, 0x35, 0x7a, 0x12, 0xee, 0x53, 0xe1, 0xee, ++ 0xe2, 0x14, 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, 0xe0, 0xac, 0xea, 0xd6, 0x18, 0x63, 0x59, 0x18, ++ 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, 0x27, 0x5b, 0x1e, 0xa7, 0x96, 0x20, 0x23, 0xb0, 0x7e, 0x23, ++ 0xf4, 0x5e, 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, 0x06, 0xe4, 0xd5, 0x80, 0xc6, 0xd5, ++ 0x71, 0x0a, 0x6a, 0xce, 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, 0x75, 0x6b, 0x0c, 0xd0, 0xcd, 0x0c, ++ 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, 0x47, 0xcf, 0xe5, 0xaf, 0xfa, 0xe0, 0x75, 0xfa, ++ 0xb8, 0xa2, 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, 0x93, 0xb6, 0x7d, 0x70, 0xdb, 0x7d, ++ 0x7a, 0x2f, 0xfd, 0x31, 0x12, 0xa7, 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, 0x8b, 0x40, 0x63, 0x8b, ++ 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, 0x05, 0xa7, 0xac, 0x77, 0x70, 0xfd, 0x52, 0x10, 0x68, 0x52, ++ 0x3d, 0xf6, 0x9f, 0xf9, 0x09, 0xb2, 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, 0xa4, 0x20, 0xd0, 0xa4, ++ 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, 0xe2, 0xff, 0xf0, 0x9c, 0x38, 0xe7, 0x85, 0x38, ++ 0x9b, 0xa9, 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, 0xce, 0xd7, 0x3d, 0xce, ++ 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, 0x17, 0x87, 0x36, 0x17, ++ 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, 0xdb, 0x48, 0xbb, 0x97, 0x83, 0x13, 0xe1, 0xb7, 0x8e, 0xe1, ++ 0xd7, 0x55, 0xe3, 0xd8, 0xdf, 0xc6, 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, 0x66, 0x27, 0x20, 0x66, ++ 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, 0x09, 0x47, 0x65, 0xce, 0x90, 0x17, 0x98, 0x90, ++ 0x90, 0x8c, 0x81, 0x10, 0xc4, 0xd3, 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, 0x49, 0x47, 0x93, 0x49, ++ 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, 0xe7, 0xe0, 0x67, 0xb6, 0x86, 0x85, 0xbf, 0x77, 0x2b, 0xbf, ++ 0x86, 0xc6, 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, 0xfa, 0x73, 0x84, 0xa4, 0x0c, 0x84, ++ 0x44, 0x4b, 0x5d, 0x49, 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, 0x6a, 0xb7, 0x72, 0x94, 0xb4, 0x72, ++ 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, 0xf7, 0x4c, 0x19, 0x38, 0xab, 0xc4, 0xbf, 0xab, ++ 0x03, 0x92, 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, 0x5d, 0xf4, 0x07, 0x5d, ++ 0x08, 0xb7, 0xa8, 0x7e, 0xb3, 0x92, 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, 0xda, 0x64, 0xa9, 0xda, ++ 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, 0x72, 0x05, 0x6f, 0x21, 0x2c, 0x54, 0x11, 0x2c, ++ 0x4f, 0x6e, 0xca, 0xb6, 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, 0xf5, 0x04, 0x1a, 0xf5, ++ 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, 0x1c, 0xf4, 0x8c, 0x6a, 0x03, 0x34, 0xa2, 0x03, ++ 0x24, 0x23, 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, 0xe4, 0x81, 0x83, 0x61, 0x54, 0x83, ++ 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, 0x35, 0xf9, 0x23, 0xe2, 0x74, 0x45, 0x75, 0x51, 0xec, 0x75, ++ 0x63, 0xfa, 0xd3, 0xcc, 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, 0x07, 0xca, 0xac, 0x01, 0xe7, 0xac, ++ 0xa1, 0x77, 0xe2, 0xa8, 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, 0x5a, 0x31, 0x5f, 0x5a, ++ 0xaa, 0x52, 0x75, 0x57, 0x07, 0x6e, 0x06, 0x7b, 0xc8, 0x5a, 0xe1, 0x17, 0xdd, 0xa1, 0xf1, 0xdd, ++ 0x68, 0xdf, 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, 0x2b, 0x91, 0x49, 0x2b, ++ 0xed, 0x8b, 0x17, 0x9f, 0x1c, 0x7b, 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, 0xf2, 0xc1, 0x42, 0xf2, ++ 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, 0x17, 0x05, 0x91, 0x32, 0x92, 0x98, 0x04, 0xf1, 0xfa, 0x04, ++ 0xfb, 0xc1, 0xfa, 0xa2, 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, 0x3f, 0x22, 0xdd, 0x3f, ++ 0x39, 0x4c, 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, 0x58, 0xa0, 0x7e, 0xaa, 0xc9, 0x12, 0x65, 0xc9, ++ 0xbc, 0x18, 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, 0x0d, 0x25, 0x10, 0x42, 0x6e, 0x10, ++ 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, 0xe6, 0x72, 0xd6, 0xe6, ++ 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, 0xb3, 0x18, 0xeb, 0xf8, 0x61, 0xe2, 0x78, 0x61, ++ 0xb7, 0x3d, 0x0f, 0x95, 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, 0x97, 0xd2, 0xc0, 0x97, ++ 0x32, 0x69, 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, 0xdd, 0xe9, 0x08, 0xb3, 0x4e, 0x82, 0xcb, 0x4e, ++ 0xf0, 0xe4, 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, 0xea, 0x70, 0x98, 0x77, 0xb8, 0xb2, 0x73, 0xb8, ++ 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, 0xe9, 0x3f, 0xcd, 0x34, 0xd8, 0xa6, 0x8d, 0x28, 0xe4, 0x8d, ++ 0x61, 0xa7, 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, 0x48, 0x62, 0x7b, 0x18, 0x5c, 0x7b, ++ 0xe4, 0xf3, 0xaa, 0x9e, 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, 0xa2, 0x48, 0x57, 0xa2, ++ 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, 0xf8, 0x41, 0x94, 0x5c, 0xab, 0x29, 0x54, 0x78, 0xef, 0x54, ++ 0x2d, 0x5b, 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, 0xdd, 0x30, 0xd3, 0xe8, 0x41, 0xd3, ++ 0xef, 0xd6, 0x3d, 0x61, 0x40, 0xbe, 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, 0x25, 0xd8, 0xf9, 0x25, ++ 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, 0xcb, 0xc3, 0x7f, 0xe4, 0x3e, 0x7b, 0xfc, 0x88, 0xf2, 0xfc, ++ 0xa8, 0x0f, 0x5f, 0xa9, 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, 0x0a, 0xb8, 0x4a, 0x0a, ++ 0x7c, 0xc8, 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, 0xb6, 0x76, 0xd2, 0x49, 0x31, 0x6b, 0x6d, 0x31, ++ 0xbe, 0x45, 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, 0x42, 0x8d, 0xc7, 0x5b, 0xd5, 0xc7, ++ 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, 0x8f, 0xf8, 0xd8, 0x87, 0x31, 0x02, 0x1e, 0x0b, 0xde, 0x1e, ++ 0xf9, 0x9c, 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, 0xa1, 0xc6, 0xe8, 0x3b, 0x66, 0xe8, ++ 0xf2, 0xb9, 0x47, 0xa3, 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, 0xd7, 0xdf, 0x6f, 0xab, 0xc8, 0x6f, ++ 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, 0xa2, 0x2e, 0x5d, 0xce, 0x47, 0x1b, 0x99, 0x9b, 0x70, 0x99, ++ 0xb5, 0x60, 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, 0x40, 0xcb, 0x7b, 0x40, ++ 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, 0xbc, 0x7a, 0x33, 0x3f, 0xa4, 0x50, 0xb6, 0xfb, 0xc3, 0xb6, ++ 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, 0x19, 0xda, 0x3b, 0xb0, 0xcc, 0xbb, 0x36, 0xae, 0x35, 0x36, ++ 0x1c, 0xa0, 0x6f, 0xbd, 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, 0xc0, 0x9e, 0x8d, 0xc0, ++ 0x99, 0xf4, 0x3c, 0x11, 0x59, 0xc2, 0x07, 0x8e, 0x55, 0x41, 0x2f, 0xf0, 0x19, 0xce, 0x86, 0x19, ++ 0x5b, 0x79, 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, 0xbf, 0x34, 0xef, 0xfe, 0x3e, 0xef, ++ 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, 0x25, 0x72, 0xe7, 0x91, 0xc9, 0x2d, 0x68, 0x6e, 0x90, 0x68, ++ 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, 0x2a, 0x58, 0xd0, 0x08, 0x59, 0xe9, 0x9e, 0x5e, 0x28, 0x9e, ++ 0x17, 0x85, 0xf8, 0x42, 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, 0x2a, 0x66, 0x47, 0x0e, 0x23, 0x47, ++ 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, 0xbe, 0xf9, 0xba, 0xa2, 0xb1, 0x3e, 0x9b, 0xb1, ++ 0x01, 0xcf, 0x15, 0x7f, 0x2e, 0x83, 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, 0x8a, 0xed, 0xbc, 0x8a, ++ 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, 0x6e, 0x63, 0x77, 0x6b, 0x56, 0x90, 0x7c, 0xdd, 0x04, 0x7c, ++ 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, 0x25, 0x1f, 0xa5, 0x8d, 0x0f, 0xa5, ++ 0x84, 0x9b, 0x46, 0xd3, 0xd9, 0x7d, 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, 0x53, 0xbd, 0xb7, 0x53, ++ 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, 0x9c, 0xd3, 0xc3, 0xc2, 0xd4, 0x2d, 0x19, 0xd4, ++ 0x4d, 0x33, 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, 0x53, 0x06, 0x22, 0x1d, 0xa1, 0x22, ++ 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, 0xfb, 0x4d, 0xaa, 0xfb, ++ 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, 0xc5, 0xbb, 0xb0, 0x4d, 0x0d, 0x7d, 0x12, 0x0d, ++ }, ++ { /* 6 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xc0, 0xb4, 0xa6, 0xff, 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, 0xd7, 0x63, 0x64, 0xbf, ++ 0x43, 0xab, 0x8f, 0x3d, 0x72, 0x5e, 0xa8, 0xd8, 0x9d, 0x15, 0x01, 0x6b, 0x6d, 0xc6, 0xc8, 0xbd, ++ 0x83, 0x1f, 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, 0x32, 0xfe, 0xe0, 0xbf, 0xba, 0xa5, 0xac, 0x02, ++ 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, 0x93, 0x73, 0xf9, 0x2a, 0x02, 0xd6, 0xda, 0x4f, 0x53, 0xb9, ++ 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, 0xe3, 0x02, 0x0d, 0x2c, 0x37, 0x06, ++ 0xc5, 0x3e, 0x52, 0x47, 0x96, 0xe2, 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, 0xb7, 0x89, 0x9b, 0x04, ++ 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, 0xcb, 0xd4, 0xe2, 0x69, 0x60, 0xea, 0xff, 0xbb, ++ 0xcf, 0xe9, 0x79, 0xf4, 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, 0x77, 0x9e, 0xa6, 0xb1, ++ 0x0f, 0x5d, 0xdf, 0x0b, 0x32, 0x94, 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, 0xa0, 0xfd, 0xc2, 0x0e, ++ 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, 0x05, 0x04, 0x1a, 0x58, 0x6e, 0x0c, ++ 0x4c, 0xf6, 0x50, 0x36, 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, 0xcd, 0x3b, 0x0a, 0xb3, ++ 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, 0xc8, 0x7e, 0x06, 0xb9, 0xad, 0xd1, 0xf5, 0x08, ++ 0x89, 0xc8, 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, 0x67, 0x95, 0xe7, 0x6d, 0x7a, 0xb2, 0x91, 0xb7, ++ 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, 0xc0, 0x17, 0x3d, 0xb5, ++ 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, 0xfa, 0x80, 0xe6, 0x06, 0x17, 0x74, 0x59, 0x0a, ++ 0x5d, 0x11, 0xf2, 0x2b, 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, 0xee, 0xff, 0x8f, 0xa1, ++ 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, 0x5d, 0x63, 0xcd, 0x43, 0xe9, 0x0a, 0x39, 0x9c, 0xeb, 0x1e, ++ 0x1e, 0xba, 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, 0x09, 0xb5, 0x83, 0x39, 0x47, 0x1c, ++ 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, 0x54, 0x5a, 0x23, 0xa3, ++ 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, 0x9b, 0x82, 0x0a, 0x08, 0x34, 0xb0, 0xdc, 0x18, ++ 0x1b, 0x30, 0x89, 0xae, 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, 0xe3, 0xd3, 0xb8, 0xa7, ++ 0x98, 0x2f, 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, 0x06, 0x97, 0x0b, 0x63, 0x59, 0x76, 0x14, 0xa5, ++ 0x58, 0x9b, 0x06, 0x93, 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, 0x8e, 0x15, 0x70, 0x1a, ++ 0x92, 0xf8, 0x8b, 0xdf, 0x1d, 0x0e, 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, 0x99, 0x61, 0x29, 0x10, ++ 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, 0xb8, 0x85, 0xfc, 0x17, 0xed, 0x65, 0x4e, 0x02, 0x4d, 0xaf, ++ 0xd1, 0x53, 0x04, 0xe2, 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, 0xf4, 0xa7, 0xe1, 0xad, ++ 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, 0x61, 0x02, 0xec, 0x0e, 0x23, 0xc4, 0x85, 0x12, ++ 0x14, 0x6d, 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, 0x0e, 0x67, 0x43, 0x2e, 0x7a, 0xa9, ++ 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, 0x2b, 0xf6, 0x05, 0x3d, 0xef, 0xb3, 0x94, 0x4d, 0x1e, 0x16, ++ 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, 0x0f, 0x0c, 0x2e, 0xe8, 0xb2, 0x14, ++ 0x97, 0x72, 0x7f, 0x67, 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, 0xf9, 0x8b, 0xd6, 0xab, ++ 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, 0x12, 0x1e, 0xc4, 0x93, 0x10, 0x7f, 0x1f, 0x3d, 0xdd, 0x81, ++ 0x7a, 0x96, 0x81, 0xa9, 0x15, 0x86, 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, 0xc8, 0x5e, 0xb9, 0x3e, ++ 0xf9, 0x89, 0xa8, 0x6b, 0x5e, 0xf7, 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, 0x72, 0xfb, 0x15, 0x3c, ++ 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, 0xf0, 0xc0, 0xa5, 0x98, 0x71, 0x83, ++ 0x3c, 0xb7, 0xfa, 0x2c, 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, 0xc5, 0x72, 0x8e, 0x38, ++ 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, 0x92, 0x52, 0xf3, 0x7d, 0x12, 0x11, 0xea, 0x87, ++ 0x7f, 0x1c, 0x75, 0x11, 0xba, 0x4b, 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, 0xa8, 0xb4, 0x46, 0x85, ++ 0xbf, 0xa8, 0xd3, 0xee, 0x83, 0x64, 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, 0x7f, 0xd7, 0x22, 0x3a, ++ 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, 0xf7, 0xf8, 0xf5, 0xc7, 0x14, 0x10, 0x68, 0xa3, 0x7b, 0x30, ++ 0xb5, 0x7f, 0xf8, 0x5d, 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, 0xbf, 0xc0, 0x1f, 0x8f, ++ 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, 0x68, 0xd2, 0x15, 0x7b, 0x05, 0x65, 0xb3, 0x8d, ++ 0xf6, 0xd4, 0x77, 0x60, 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, 0xd2, 0x06, 0xd7, 0x32, ++ 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, 0xb2, 0xec, 0x28, 0x89, ++ 0x33, 0xea, 0x25, 0x27, 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, 0xf7, 0x12, 0x65, 0x8f, 0x4c, 0x36, ++ 0xb0, 0xf5, 0x0c, 0xe5, 0xb1, 0xf0, 0xcc, 0x53, 0x91, 0xf8, 0x17, 0xad, 0xdf, 0x2a, 0xe0, 0x34, ++ 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, 0x98, 0x3f, 0x3e, 0x13, 0xf6, 0x79, 0x08, 0x49, 0x84, 0x8b, ++ 0xe7, 0x33, 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, 0x18, 0xa1, 0xf1, 0xc2, 0x52, 0x20, ++ 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, 0x4f, 0x7d, 0x09, 0xd0, 0xf9, 0x75, 0x26, 0xa1, 0x36, 0x9f, ++ 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, 0x3b, 0x2e, 0x19, 0xca, 0x9c, 0x04, 0x9a, 0x9d, ++ 0x64, 0x2c, 0xfc, 0xbf, 0x71, 0x6d, 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, 0x4b, 0x67, 0xfe, 0x22, ++ 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, 0x5f, 0x11, 0x1a, 0x77, 0x2b, 0x8d, 0x01, 0x99, ++ 0xa1, 0x12, 0xae, 0xf8, 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, 0xfc, 0xee, 0x65, 0x26, ++ 0x22, 0x0d, 0x87, 0x3a, 0xac, 0xfe, 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, 0x46, 0x4b, 0xc9, 0x24, ++ 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, 0xfa, 0xc8, 0x91, 0x28, 0xad, 0x9b, ++ 0x28, 0xda, 0xac, 0x89, 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, 0x86, 0x5c, 0xf4, 0x91, ++ 0xe8, 0x6e, 0x0a, 0x76, 0x08, 0x88, 0xaa, 0x9b, 0x38, 0x84, 0xfd, 0x1a, 0x51, 0x3f, 0x90, 0x2e, ++ 0x6b, 0x71, 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, 0x0a, 0x7a, 0x1d, 0xa5, 0xeb, 0x9a, 0x3c, 0x2c, ++ 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, 0x02, 0x43, 0xa5, 0x91, 0xfc, 0x71, 0x3c, 0xf9, 0x58, 0x93, ++ 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, 0x6e, 0x45, 0x1e, 0x18, 0x5c, 0x13, 0xa7, 0x28, ++ 0x6e, 0xfb, 0xd7, 0x0c, 0xec, 0x34, 0x39, 0xe8, 0xc1, 0xae, 0xff, 0xcc, 0x8b, 0x70, 0xc3, 0x97, ++ 0xed, 0xe4, 0xfe, 0xce, 0xa7, 0x45, 0xc5, 0x5c, 0xf3, 0x50, 0x1f, 0x73, 0x31, 0xd5, 0x6f, 0x95, ++ 0x2d, 0x50, 0x58, 0x31, 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, 0xe6, 0xb6, 0x0b, 0x2a, ++ 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, 0x24, 0x3c, 0x4b, 0xe5, 0x20, 0xfe, 0x3e, 0x7a, 0x79, 0xc1, ++ 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, 0xe4, 0x0e, 0xc1, 0x2a, 0xe9, 0x19, 0x1d, 0x7e, ++ 0xf4, 0xef, 0xc1, 0x91, 0x2a, 0xcf, 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, 0x53, 0xbc, 0xb1, 0x7c, ++ 0x34, 0x5b, 0x67, 0x6e, 0x13, 0xe0, 0xd8, 0x88, 0x79, 0x1b, 0xc0, 0x41, 0x84, 0xdf, 0xd5, 0xc3, ++ 0x31, 0xd1, 0x93, 0xd6, 0xbc, 0x2d, 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, 0xe4, 0x35, 0x2a, 0x78, ++ 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, 0xe3, 0x23, 0x1d, 0x24, 0xc3, 0xfc, 0x33, 0x56, 0x4e, 0xc7, ++ 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, 0x2f, 0xda, 0x23, 0x43, 0x89, 0xf3, 0xe2, 0xc5, ++ 0xb2, 0xce, 0xba, 0x14, 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, 0x5e, 0x90, 0x86, 0x7a, ++ 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, 0x7a, 0xb1, 0x24, 0x91, 0x49, 0xe4, 0xdf, 0x70, ++ 0xb8, 0x19, 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, 0xd5, 0x5a, 0xc5, 0x45, 0x9e, 0x87, 0xbb, 0xcf, ++ 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, 0x24, 0x22, 0x17, 0xcd, ++ 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, 0x48, 0x4f, 0xc4, 0x2e, 0xf3, 0x41, 0x73, 0x72, ++ 0xfe, 0x38, 0xea, 0x22, 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, 0x93, 0xab, 0x8c, 0xc9, ++ 0x3e, 0x8c, 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, 0x2c, 0x70, 0xc7, 0x93, 0x44, 0xc8, 0xe8, 0x76, ++ 0xbd, 0x93, 0x65, 0x1f, 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, 0xfe, 0x6d, 0x44, 0x74, ++ 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, 0x29, 0x0e, 0x20, 0xcb, ++ 0xea, 0x55, 0xbc, 0x87, 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, 0x28, 0x20, 0xd0, 0x85, 0xf6, 0x60, ++ 0x2a, 0xe1, 0x1a, 0x78, 0x77, 0x0b, 0x79, 0x5f, 0x86, 0xa6, 0xc9, 0xf4, 0x07, 0xe6, 0x92, 0xdf, ++ 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, 0x85, 0xeb, 0xb4, 0x58, 0x29, 0x4b, 0xbd, 0x43, 0x3e, 0xdd, ++ 0x69, 0x4a, 0x95, 0x45, 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, 0x6a, 0x20, 0x5a, 0x62, ++ 0x6c, 0xc0, 0x61, 0xfd, 0xaa, 0x98, 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, 0x0a, 0xca, 0xa5, 0xd9, ++ 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, 0x7f, 0x8c, 0xcb, 0x22, 0xdd, 0xa9, 0xc1, 0x66, ++ 0x2f, 0x6b, 0xee, 0xc0, 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, 0x67, 0x0c, 0x6d, 0x64, ++ 0xef, 0xdf, 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, 0xe2, 0x99, 0xca, 0x49, 0xb0, 0x6f, 0x09, 0xdb, ++ 0x25, 0xbc, 0xc5, 0x73, 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, 0xa7, 0x1b, 0x50, 0xd1, ++ 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, 0x70, 0x78, 0x34, 0x6e, ++ 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, 0x60, 0x0d, 0x85, 0x0c, 0x2d, 0x24, 0xca, 0xdd, 0x98, 0x6c, ++ 0xa6, 0xa3, 0xec, 0xb1, 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, 0x1d, 0xbe, 0xfc, 0xd3, ++ 0xa3, 0x29, 0x18, 0x09, 0xa1, 0x23, 0x5b, 0xa6, 0xe1, 0x33, 0x2e, 0x99, 0x7d, 0x54, 0x03, 0x68, ++ 0x63, 0x9d, 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, 0xaa, 0x37, 0x67, 0xd7, ++ 0xe0, 0x82, 0x97, 0x34, 0xd3, 0x7d, 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, 0x10, 0x92, 0xcb, 0xd5, ++ 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, 0xce, 0x26, 0xc7, 0xf1, 0xaf, 0x6a, ++ 0x0d, 0x66, 0x69, 0xfa, 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, 0x21, 0x47, 0xa4, 0x40, ++ 0xcd, 0xd2, 0xcf, 0x05, 0x4d, 0x17, 0x62, 0x4e, 0x20, 0x9d, 0xd1, 0x55, 0xf6, 0x24, 0xc0, 0xff, ++ 0x4e, 0xcd, 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, 0x31, 0xea, 0x4c, 0x81, 0x6c, 0xfd, ++ 0x8e, 0x79, 0x40, 0x38, 0x3f, 0x49, 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, 0x9b, 0xe2, 0x08, 0x42, ++ 0x8b, 0xf3, 0xb4, 0x80, 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, 0x32, 0x57, 0xfb, 0x08, 0xf7, 0xf9, ++ 0x4b, 0x47, 0x12, 0x7f, 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, 0x2c, 0x6b, 0x93, 0x46, ++ 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, 0x0d, 0x89, 0xeb, 0x49, 0x33, 0x3c, 0x96, 0xce, 0x3f, 0x44, ++ 0x08, 0xec, 0x9d, 0x42, 0xdb, 0xf5, 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, 0x41, 0xad, 0x5b, 0xfb, ++ 0xc2, 0x8f, 0x10, 0x0e, 0x7f, 0x83, 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, 0x56, 0xd9, 0x02, 0xf1, ++ 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, 0xd5, 0x3a, 0x81, 0xba, 0x66, 0x4e, ++ 0x81, 0x24, 0x9f, 0x33, 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, 0x35, 0x85, 0x3b, 0x1f, 0xca, 0x4c, ++ 0x41, 0x90, 0x39, 0xcc, 0x34, 0xf2, 0x2f, 0x70, 0x8c, 0xdc, 0xd4, 0x51, 0xec, 0x7c, 0xae, 0xf3, ++ 0x44, 0x1a, 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, 0x47, 0x08, 0x36, 0x38, 0x8c, 0x96, 0x51, 0x48, ++ 0x84, 0xae, 0x6b, 0x8b, 0xa2, 0x10, 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, 0x5b, 0xf5, 0x35, 0xf7, ++ 0x07, 0xb1, 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, 0x37, 0x53, 0xe1, 0x50, 0x99, 0xf5, ++ 0xc7, 0x05, 0xe4, 0xb6, 0xd0, 0x4e, 0xbc, 0x03, 0x75, 0xf6, 0xd6, 0x87, 0x36, 0x33, 0xfd, 0x4a, ++ 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, 0xed, 0xde, 0x38, 0x5f, 0xcf, 0xb8, 0x2b, 0xe1, ++ 0x90, 0xc3, 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, 0x42, 0x35, 0xd9, 0x8b, 0x18, 0xdb, 0x4f, 0x5e, ++ 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, 0x97, 0xf5, 0x70, 0xcb, 0x39, 0x34, 0xa2, 0x7e, 0xe3, 0x5c, ++ 0xd3, 0x68, 0xb2, 0x13, 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, 0xd8, 0xe0, 0x75, 0x1d, 0x87, 0xe3, ++ 0xd6, 0xe2, 0x46, 0xab, 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, 0x3a, 0x89, 0x15, 0xf7, 0x78, 0x58, ++ 0x16, 0x56, 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, 0xbb, 0x1f, 0xdb, 0x5d, 0xc2, 0x94, 0x1c, 0xe7, ++ 0x95, 0x49, 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, 0x78, 0x31, 0xb0, 0xe5, ++ 0x55, 0xfd, 0x6f, 0x69, 0xcd, 0x40, 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, 0xaf, 0x52, 0xd4, 0x5a, ++ 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, 0xda, 0xcb, 0xdc, 0x8a, 0x3c, 0x30, 0xb8, 0x26, 0x8d, 0x50, ++ 0x5f, 0x2a, 0x44, 0xda, 0x50, 0x19, 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, 0x6f, 0x45, 0xe9, 0xef, ++ 0xdc, 0x35, 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, 0x41, 0x9f, 0x3d, 0x5b, 0xd5, 0xe0, 0x45, 0xed, ++ 0x1c, 0x81, 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, 0x02, 0x83, 0x21, 0x52, ++ 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, 0x49, 0xb8, 0x25, 0xa0, 0x3e, 0xe6, 0x62, 0x69, 0xde, 0xe9, ++ 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, 0x1d, 0xd4, 0x8a, 0x4b, 0xdf, 0x32, 0xb5, 0x0a, 0xba, 0x56, ++ 0x5a, 0xa0, 0xb0, 0x62, 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, 0x0f, 0xaf, 0x16, 0x54, ++ 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, 0x17, 0x5e, 0xde, 0x59, 0xd8, 0xcc, 0x72, 0xeb, ++ 0xad, 0x88, 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, 0x7c, 0xf4, 0xf2, 0x41, ++ 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, 0x1c, 0x14, 0x39, 0xe2, 0xa1, 0xeb, 0xab, 0x97, 0x96, 0xfe, ++ 0xee, 0x23, 0x13, 0xa6, 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, 0x41, 0x54, 0x11, 0x32, 0x3a, 0xfc, ++ 0x2e, 0x97, 0xb5, 0x59, 0xfb, 0x90, 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, 0xc6, 0x51, 0x5e, 0x43, ++ 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, 0x6f, 0x23, 0x42, 0xe9, 0xa6, 0xbb, 0xa1, 0xf8, ++ 0xeb, 0xa9, 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, 0x71, 0xd8, 0xc5, 0x47, ++ 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, 0x73, 0xd3, 0xf2, 0x36, 0x43, 0x82, 0xcb, 0x7d, 0x69, 0x45, ++ 0xa8, 0x02, 0x68, 0x23, 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, 0xa2, 0x56, 0x1c, 0x1e, 0x0d, 0xfa, ++ 0x62, 0x61, 0xe5, 0x6f, 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, 0x44, 0x50, 0x0b, 0x6a, 0x54, 0xf0, ++ 0xa2, 0xd5, 0x43, 0x90, 0x82, 0x75, 0xf9, 0xf2, 0x08, 0xb6, 0xa5, 0x84, 0xdc, 0x09, 0x30, 0x4f, ++ 0x21, 0xca, 0x6a, 0x52, 0xc9, 0x04, 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, 0x66, 0xac, 0x9c, 0x4d, ++ 0xe1, 0x7e, 0xcc, 0xad, 0xf0, 0x2b, 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, 0xb1, 0xcf, 0xf8, 0xf2, ++ 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, 0x3e, 0xed, 0x5e, 0x77, 0x46, 0x86, 0xd1, 0x25, 0x07, 0x49, ++ 0x24, 0x40, 0x9e, 0xea, 0x66, 0xc9, 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, 0x06, 0x46, 0x63, 0xf6, ++ 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, 0xc3, 0x62, 0x47, 0xed, 0xbc, 0xe3, 0xcf, 0xf4, ++ 0x67, 0xeb, 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, 0x6b, 0x80, 0xab, 0x4b, ++ 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, 0x92, 0x0b, 0x7d, 0xe0, ++ 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, 0xa9, 0x35, 0x45, 0x68, 0x19, 0x5f, ++ 0xb3, 0x32, 0xe1, 0x8d, 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, 0xff, 0xcd, 0xb5, 0x5d, ++ 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, 0xc6, 0x5f, 0xa8, 0x5e, 0x28, 0xae, 0xd1, 0xe2, ++ 0x76, 0x0c, 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, 0x0d, 0x8b, 0x4a, 0x37, 0x48, 0x44, 0x2e, 0x59, ++ 0xb6, 0xb8, 0x15, 0x35, 0x7b, 0xc7, 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, 0x9f, 0x27, 0x4a, 0xe6, ++ 0x35, 0xa7, 0x3c, 0xf7, 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, 0x4b, 0x5c, 0x25, 0x82, 0xe6, 0xe4, ++ 0xf5, 0x13, 0x9a, 0x08, 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, 0xf2, 0xe1, 0x82, 0x5b, ++ 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, 0xc5, 0xf5, 0x4c, 0x8e, 0xe5, 0x95, 0xdb, 0x51, ++ 0xff, 0xc4, 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, 0x6a, 0x1e, 0xad, 0x5a, 0x32, 0xf6, 0xbf, 0xee, ++ 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, 0x0c, 0x49, 0x58, 0xe0, 0x4d, 0xe5, 0x88, 0x53, 0x13, 0xec, ++ 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, 0xac, 0x31, 0x5f, 0x30, 0x77, 0x53, ++ 0xb9, 0xe5, 0xca, 0x3e, 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, 0x3f, 0xda, 0x88, 0xe8, ++ 0x79, 0x51, 0x6c, 0xc1, 0x70, 0x7c, 0x63, 0x8e, 0x93, 0x34, 0xaf, 0x8c, 0xe8, 0xb9, 0xec, 0x57, ++ 0xfa, 0x4e, 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, 0x4f, 0x33, 0x52, 0x1c, 0x40, 0x55, ++ 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, 0x85, 0x7f, 0x24, 0xea, ++ 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, 0x52, 0x9a, 0x50, 0x40, 0x63, 0xc9, 0x2f, 0xc0, ++ 0xd7, 0x1e, 0x1d, 0x32, 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, 0xb4, 0xaa, 0x4b, 0x7f, ++ 0x54, 0x01, 0x34, 0xf0, 0xee, 0x16, 0xf2, 0xbe, 0xcf, 0x8f, 0x51, 0x2b, 0x0e, 0x0f, 0xe7, 0x7d, ++ 0x94, 0xb5, 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, 0xb0, 0xff, 0xd9, 0x6c, 0x83, 0xc2, ++ 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, 0xc9, 0x15, 0xab, 0xb0, 0x52, 0x96, 0xb9, 0x86, 0x7c, 0x79, ++ 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, 0xb3, 0x42, 0x6e, 0xe5, 0x18, 0xc6, ++ 0xd2, 0x94, 0xe9, 0x8a, 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, 0xd4, 0x40, 0xb4, 0xc4, ++ 0x12, 0x20, 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, 0x99, 0x4e, 0xb2, 0x29, 0x03, 0x23, 0xd0, 0x7b, ++ 0xd8, 0x43, 0xc2, 0x39, 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, 0x14, 0x57, 0x89, 0x71, ++ 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, 0xc3, 0x34, 0xed, 0xce, ++ 0x9b, 0xe8, 0x4d, 0x04, 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, 0x55, 0x44, 0x79, 0x91, 0x41, 0xcc, ++ 0x5b, 0x5c, 0xeb, 0xfb, 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, 0xb4, 0x90, 0xae, 0xf2, 0x25, 0x73, ++ 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, 0x9a, 0xe4, 0x56, 0xf9, 0xce, 0x18, 0xda, 0xc8, ++ 0x9e, 0x62, 0xb9, 0xbc, 0x4a, 0x60, 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, 0x19, 0x7b, 0xbe, 0x77, ++ 0x1d, 0x7d, 0x90, 0x7e, 0x01, 0x11, 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, 0xa3, 0xde, 0x12, 0x75, ++ 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, 0xb6, 0x46, 0x74, 0xbd, 0x76, 0xca, ++ 0x4a, 0xbb, 0x49, 0xe6, 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, 0x8d, 0x36, 0xa0, 0x61, ++ 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, 0x07, 0x05, 0x9f, 0xd9, 0xb9, 0x4a, 0x5a, 0x55, 0xc4, 0xde, ++ 0x09, 0x10, 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, 0x59, 0xf5, 0xe0, 0xf0, 0x68, 0xdc, ++ 0xc9, 0xa4, 0x60, 0x24, 0xc1, 0x8c, 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, 0x37, 0x93, 0x0c, 0x63, ++ 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, 0xc0, 0x1a, 0xc9, 0x18, 0x5a, 0x48, 0x57, 0x79, 0xf3, 0xd8, ++ 0x0c, 0x9a, 0x32, 0x63, 0x57, 0x6e, 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, 0x80, 0x1a, 0x97, 0x67, ++ 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, 0x54, 0x0d, 0x5b, 0x23, 0x3a, 0xbf, 0x3b, 0x65, ++ 0x4f, 0x31, 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, 0xfb, 0xe6, 0xba, 0xf7, 0xed, 0xdc, 0x5f, 0xda, ++ 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, 0xb6, 0x8f, 0x01, 0x66, 0x5c, 0xf1, 0xfa, 0xa8, 0x06, 0xd0, ++ 0x45, 0xe6, 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, 0xbd, 0x25, 0x2d, 0xcb, 0x62, 0x6f, ++ 0xc6, 0xf9, 0xbf, 0x2f, 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, 0x5d, 0x9a, 0x97, 0x6e, 0xce, 0x6d, ++ 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, 0x33, 0x98, 0xbc, 0x4e, 0x40, 0x0d, 0xaa, 0xd2, ++ 0x03, 0xc7, 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, 0x5e, 0x27, 0x20, 0xe7, 0x55, 0x69, ++ 0xc3, 0x73, 0x4b, 0x97, 0x5c, 0xd5, 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, 0xf7, 0x84, 0x31, 0xd6, ++ 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, 0x8d, 0x24, 0x65, 0x59, 0x5f, 0x4c, 0x4d, 0x21, 0x9d, 0xd4, ++ 0x80, 0xd8, 0xc4, 0xaa, 0x2e, 0x8b, 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, 0x9a, 0x42, 0xf9, 0x6b, ++ 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, 0xdd, 0xec, 0x60, 0xc1, 0x42, 0x8e, 0x8b, 0x80, ++ 0xda, 0x78, 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, 0x95, 0xed, 0xef, 0x3f, ++ 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, 0x2f, 0x48, 0x43, 0x3d, ++ 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, 0x90, 0xf0, 0xef, 0x12, 0x80, 0x7e, 0xf8, 0x2b, 0x27, 0x82, ++ 0x9c, 0x59, 0x0f, 0x4d, 0x0c, 0xcc, 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, 0x98, 0xc1, 0xd8, 0x39, ++ 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, 0x8b, 0x2d, 0x83, 0xc3, 0x4f, 0xa2, 0xbc, 0x86, ++ 0xdf, 0xf2, 0x80, 0x70, 0x7e, 0x92, 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, 0xf5, 0x07, 0x10, 0x84, ++ 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, 0x03, 0x83, 0x16, 0x38, 0x82, 0xa8, 0x22, 0x64, 0x74, 0x3b, ++ 0xd5, 0x25, 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, 0x64, 0xae, 0x35, 0x10, 0x2d, 0x31, ++ 0x15, 0x91, 0x0d, 0x3c, 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, 0x85, 0x7a, 0xe2, 0x73, 0x49, 0x8e, ++ 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, 0x71, 0xad, 0x65, 0xc5, 0x58, 0xd6, 0xe5, 0x8c, ++ 0x56, 0x3a, 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, 0x8f, 0xb5, 0x81, 0x33, ++ 0x53, 0xb0, 0x76, 0xb9, 0x07, 0x77, 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, 0xef, 0x5f, 0x7e, 0x88, ++ 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, 0xba, 0x79, 0x87, 0xac, 0x38, 0x3c, 0x1a, 0x37, ++ 0x10, 0x1b, 0xf9, 0x84, 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, 0x82, 0x99, 0xb6, 0x35, ++ 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, 0x27, 0x6c, 0x86, 0xc7, 0x55, 0xfa, 0xd2, 0x8a, ++ 0x47, 0xdd, 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, 0x68, 0x1f, 0xac, 0x71, 0x04, 0x21, ++ 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, 0x31, 0x27, 0x10, 0xaf, 0x89, 0xcb, 0x7b, 0x12, 0x60, 0x9e, ++ 0x04, 0x76, 0xaf, 0x21, 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, 0x69, 0x74, 0xc1, 0xb7, 0xcc, 0x9c, ++ 0xc4, 0xc2, 0x09, 0xde, 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, 0x16, 0xd4, 0xa8, 0x23, ++ 0xc1, 0x48, 0xfd, 0x66, 0x1a, 0x79, 0xf6, 0x38, 0x46, 0x6e, 0x6a, 0xc9, 0x76, 0x3e, 0x57, 0x98, ++ 0x01, 0xfc, 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, 0xa1, 0x5d, 0x33, 0x27, ++ 0x82, 0xe3, 0x72, 0x5b, 0x68, 0x27, 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, 0x1b, 0xf8, 0x9f, 0x25, ++ 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, 0x0a, 0x8c, 0x74, 0x90, 0x8a, 0x76, 0xcc, 0x9b, 0xfb, 0x9a, ++ 0x88, 0x34, 0x59, 0xe8, 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, 0xdb, 0xef, 0xa2, 0x90, ++ 0x48, 0x80, 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, 0x21, 0xfb, 0x8d, 0xa4, 0x0c, 0x8c, 0xc6, 0x2f, ++ 0xcb, 0x9f, 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, 0x6d, 0x1b, 0xb6, 0x29, 0x6a, 0x2d, ++ 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, 0x61, 0x4a, 0x0e, 0x92, ++ 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, 0x77, 0x3a, 0x6e, 0xa6, 0x01, 0xa0, 0xf1, 0x29, ++ 0xce, 0x15, 0x22, 0x6d, 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, 0xd6, 0xc3, 0x95, 0x96, ++ 0x4d, 0x0a, 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, 0xea, 0x2f, 0x6f, 0xcd, 0x6c, 0x66, 0x39, 0x94, ++ 0x8d, 0xbe, 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, 0x45, 0xc4, 0x8e, 0x19, 0xbb, 0x05, 0x5d, 0x2b, ++ 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, 0x7e, 0x5a, 0x19, 0x7f, 0x70, 0xbe, 0x5d, 0xb3, 0x56, 0x01, ++ 0x60, 0x5a, 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, 0x91, 0x6a, 0x8a, 0xd0, 0x32, 0xbe, ++ 0xe3, 0x45, 0x7a, 0x5c, 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, 0x30, 0x75, 0x9e, 0xbc, ++ 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, 0x82, 0xee, 0x2b, 0x81, 0x90, 0x01, 0xe7, 0x16, 0xfa, 0x03, ++ 0x26, 0x7b, 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, 0x72, 0x68, 0x87, 0xfc, 0x05, 0xb8, ++ 0xe6, 0xcf, 0x8e, 0xe4, 0x19, 0x4a, 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, 0x50, 0x9f, 0x61, 0x07, ++ 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, 0x45, 0xf1, 0x7d, 0x40, 0x73, 0x03, 0xea, 0x3a, 0xcd, 0x05, ++ 0xa5, 0x64, 0x01, 0xd9, 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, 0x3d, 0x59, 0xa9, 0xba, ++ 0x6f, 0x07, 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, 0x28, 0x2b, 0x74, 0xd1, 0x2a, 0x2d, 0xf0, 0xb0, ++ 0xaf, 0xb3, 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, 0x95, 0x05, 0xfd, 0x4e, 0x94, 0x0f, ++ 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, 0x33, 0x64, 0xb5, 0x3e, 0x75, 0xba, 0x47, 0xeb, 0x38, 0x0d, ++ 0xec, 0x18, 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, 0x94, 0x6e, 0x90, 0x88, 0x5c, 0xb2, ++ 0xe9, 0x92, 0x51, 0xef, 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, 0x76, 0x07, 0xf0, 0x62, 0xa3, 0x09, ++ 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, 0x5c, 0xa3, 0x7e, 0xea, 0x97, 0xd3, 0x27, 0x01, 0xc7, 0xb6, ++ 0xaa, 0x39, 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, 0x9d, 0xa4, 0x6b, 0xb4, ++ 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, 0xf4, 0x7b, 0xe3, 0xff, 0x96, 0xb8, 0x4a, 0xc7, 0x0f, 0x0b, ++ 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, 0x77, 0x55, 0x7b, 0xd7, 0x78, 0x60, 0xb3, 0x4c, 0xd9, 0xa0, ++ 0x3d, 0x4b, 0xa1, 0xb5, 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, 0x64, 0x2f, 0xbd, 0x1f, ++ 0xbe, 0x54, 0x88, 0x77, 0xa0, 0x32, 0xdf, 0x8d, 0xe6, 0xc2, 0x79, 0x0b, 0xde, 0x8a, 0x11, 0x1d, ++ 0x7e, 0xe0, 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, 0x98, 0xdf, 0x09, 0xe9, 0x75, 0xa2, ++ 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, 0xe4, 0x26, 0x82, 0xfd, 0x7a, 0xb6, 0x69, 0x03, 0x8a, 0x19, ++ 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, 0xb0, 0x4a, 0x2d, 0x16, 0x9b, 0x62, 0xbe, 0x60, 0xee, 0xa6, ++ 0x38, 0xc1, 0x55, 0x0d, 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, 0x7b, 0xdd, 0x04, 0xc5, 0x42, 0xa4, ++ 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, 0xb0, 0x03, 0x9a, 0x09, 0xd3, 0xa6, 0x26, 0x1b, ++ 0x32, 0x16, 0x7e, 0xbe, 0xd9, 0xd7, 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, 0xc4, 0xd2, 0x7f, 0x11, ++ 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, 0xc6, 0xdf, 0xe5, 0x68, 0x9d, 0xdb, 0x13, 0xb1, 0x1b, 0xae, ++ 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, 0x7d, 0x64, 0xa9, 0x14, 0xb7, 0xac, ++ 0xb1, 0x09, 0x57, 0x7c, 0x92, 0xa6, 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, 0x7e, 0x77, 0xd3, 0x13, ++ 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, 0xb3, 0xa9, 0x7e, 0xd9, 0x1e, 0x9d, 0x2c, 0xa8, ++ 0x74, 0x37, 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, 0x9f, 0x0d, 0xc9, 0xfe, 0x48, 0x17, ++ 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, 0x73, 0x5b, 0xe4, 0x15, ++ 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, 0x81, 0x57, 0x9e, 0x66, 0xa4, 0x38, 0x80, 0xaa, ++ }, ++ { /* 7 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x54, 0x30, 0x7b, 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, 0xa6, 0xa1, 0xc1, 0x0a, ++ 0x02, 0xa8, 0x60, 0xf6, 0x1d, 0xcb, 0x10, 0x12, 0x6b, 0x69, 0x85, 0xd9, 0x8f, 0x81, 0x41, 0x14, ++ 0x03, 0xfc, 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, 0xbf, 0xbc, 0x26, 0x54, 0x29, 0x20, 0x80, 0x1e, ++ 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, 0x20, 0x24, 0xd6, 0xd2, 0xc9, 0x71, 0xdd, 0xc1, 0x82, 0x28, ++ 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, 0x6a, 0xfc, 0x7b, 0x60, 0x43, 0x22, ++ 0x06, 0x3b, 0xa0, 0xd9, 0x27, 0x9e, 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, 0x52, 0x40, 0xc3, 0x3c, ++ 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, 0x69, 0x6e, 0xef, 0x25, 0xf4, 0xe1, 0x02, 0x36, ++ 0x08, 0xe5, 0x43, 0x5e, 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, 0x79, 0x41, 0xc7, 0x50, ++ 0x09, 0xb1, 0x73, 0x25, 0x9b, 0x2e, 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, 0xdf, 0xe0, 0x06, 0x5a, ++ 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, 0xd4, 0x3b, 0xf6, 0xc0, 0x86, 0x44, ++ 0x0b, 0x19, 0x13, 0xd3, 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, 0x50, 0x61, 0x47, 0x4e, ++ 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, 0xb9, 0xb5, 0x98, 0x93, 0xa4, 0x80, 0x45, 0x78, ++ 0x0d, 0x22, 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, 0x6d, 0x60, 0x3b, 0x1e, 0x02, 0x21, 0x84, 0x72, ++ 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, 0x2b, 0x01, 0x04, 0x6c, ++ 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, 0x06, 0x09, 0xbe, 0xc7, 0x8d, 0xa0, 0xc5, 0x66, ++ 0x10, 0x09, 0x86, 0xbc, 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, 0xf2, 0x82, 0x4d, 0xa0, ++ 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, 0x88, 0x99, 0x0a, 0x1b, 0x01, 0x8a, 0x54, 0x23, 0x8c, 0xaa, ++ 0x12, 0xa1, 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, 0x27, 0xde, 0x7d, 0x03, 0x0c, 0xb4, ++ 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, 0xdb, 0xa2, 0xcd, 0xbe, ++ 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, 0x08, 0x1c, 0x6b, 0x76, 0x2f, 0x43, 0xcf, 0x88, ++ 0x15, 0xce, 0x76, 0xe8, 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, 0x89, 0xe2, 0x0e, 0x82, ++ 0x16, 0x32, 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, 0x63, 0x75, 0xee, 0xaf, 0xa0, 0xc2, 0x8e, 0x9c, ++ 0x17, 0x66, 0x16, 0x1e, 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, 0x06, 0x63, 0x4f, 0x96, ++ 0x18, 0xec, 0xc5, 0xe2, 0x9c, 0x3d, 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, 0x8b, 0xc3, 0x8a, 0xf0, ++ 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, 0xc8, 0xd1, 0x65, 0x7c, 0x50, 0x68, 0x2d, 0x62, 0x4b, 0xfa, ++ 0x1a, 0x44, 0xa5, 0x14, 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, 0x04, 0x42, 0xcb, 0xe4, ++ 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, 0x0e, 0x15, 0xd5, 0xb1, 0xa2, 0xe3, 0x0a, 0xee, ++ 0x1c, 0x7f, 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, 0x3a, 0x94, 0x56, 0x02, 0x08, 0xd8, ++ 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, 0xe8, 0xf5, 0xb3, 0xae, 0x99, 0x19, 0xf0, 0xa3, 0xc9, 0xd2, ++ 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, 0xbf, 0x4d, 0xd9, 0x83, 0x49, 0xcc, ++ 0x1f, 0x83, 0x55, 0x40, 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, 0x7f, 0x22, 0x88, 0xc6, ++ 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, 0xc3, 0xe3, 0x7f, 0x5f, 0x87, 0x0e, 0x27, 0xc7, 0x9a, 0x83, ++ 0x21, 0x46, 0xff, 0xc0, 0xfc, 0x69, 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, 0x81, 0x66, 0x5b, 0x89, ++ 0x22, 0xba, 0xaf, 0x4d, 0x0e, 0x26, 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, 0xa8, 0x46, 0xdb, 0x97, ++ 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, 0xa1, 0x5a, 0x0e, 0xe7, 0x1a, 0x9d, ++ 0x24, 0x81, 0x0f, 0x94, 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, 0xfa, 0x06, 0x18, 0xab, ++ 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, 0x7d, 0x58, 0xed, 0xf2, 0x5c, 0xa7, 0xd9, 0xa1, ++ 0x26, 0x29, 0x6f, 0x62, 0x34, 0x73, 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, 0x75, 0x87, 0x59, 0xbf, ++ 0x27, 0x7d, 0x5f, 0x19, 0xdb, 0xf7, 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, 0xd3, 0x26, 0x98, 0xb5, ++ 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, 0x83, 0xab, 0x10, 0x38, 0xd6, 0xec, 0x5e, 0x86, 0x5d, 0xd3, ++ 0x29, 0xa3, 0xbc, 0x9e, 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, 0xf8, 0x27, 0x9c, 0xd9, ++ 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, 0x7b, 0x51, 0x53, 0x35, 0xd1, 0x07, 0x1c, 0xc7, ++ 0x2b, 0x0b, 0xdc, 0x68, 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, 0x77, 0xa6, 0xdd, 0xcd, ++ 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, 0x83, 0x47, 0xdf, 0xfb, ++ 0x2d, 0x30, 0x7c, 0xb1, 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, 0xbc, 0x10, 0x25, 0xe6, 0x1e, 0xf1, ++ 0x2e, 0xcc, 0x2c, 0x3c, 0x40, 0xd9, 0xb3, 0x9d, 0xad, 0x83, 0x9a, 0x44, 0x0c, 0xc6, 0x9e, 0xef, ++ 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, 0xbb, 0x94, 0x79, 0x56, 0x39, 0xc9, 0xaa, 0x67, 0x5f, 0xe5, ++ 0x30, 0x1b, 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, 0x25, 0x09, 0xd5, 0x45, 0xd7, 0x23, ++ 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, 0x4b, 0x7a, 0x75, 0x44, 0x86, 0x84, 0x73, 0xe4, 0x16, 0x29, ++ 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, 0xca, 0xf8, 0xa0, 0xd0, 0x5a, 0xc4, 0x96, 0x37, ++ 0x33, 0xe7, 0x19, 0x8a, 0x09, 0x35, 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, 0xfc, 0x65, 0x57, 0x3d, ++ 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, 0x77, 0x43, 0xec, 0x78, 0x08, 0x84, 0x55, 0x0b, ++ 0x35, 0xdc, 0xb9, 0x53, 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, 0xae, 0x25, 0x94, 0x01, ++ 0x36, 0x20, 0xe9, 0xde, 0xdc, 0xe4, 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, 0x87, 0x05, 0x14, 0x1f, ++ 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, 0xca, 0x2c, 0x21, 0xa4, 0xd5, 0x15, ++ 0x38, 0xfe, 0x0a, 0x59, 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, 0xac, 0x04, 0x10, 0x73, ++ 0x39, 0xaa, 0x3a, 0x22, 0x60, 0x54, 0x0b, 0x32, 0x1a, 0x23, 0xd7, 0x66, 0x0a, 0xa5, 0xd1, 0x79, ++ 0x3a, 0x56, 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, 0xa5, 0x9f, 0xf1, 0x32, 0x23, 0x85, 0x51, 0x67, ++ 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, 0x1b, 0x20, 0x71, 0x4a, 0x52, 0xbf, 0x85, 0x24, 0x90, 0x6d, ++ 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, 0x18, 0x24, 0xbd, 0x9a, 0x71, 0xc5, 0x92, 0x5b, ++ 0x3d, 0x39, 0xfa, 0x0d, 0x5a, 0x01, 0x2b, 0x16, 0xcc, 0xf1, 0x1e, 0x17, 0xd7, 0x64, 0x53, 0x51, ++ 0x3e, 0xc5, 0xaa, 0x80, 0xa8, 0x4e, 0x33, 0x0d, 0x73, 0x4d, 0x38, 0x43, 0xfe, 0x44, 0xd3, 0x4f, ++ 0x3f, 0x91, 0x9a, 0xfb, 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, 0x58, 0xe5, 0x12, 0x45, ++ 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, 0x45, 0x05, 0xfe, 0xbe, 0xcd, 0x1c, 0x4e, 0x4d, 0xf7, 0xc5, ++ 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, 0x2a, 0x6b, 0x6e, 0x91, 0xe8, 0xec, 0x36, 0xcf, ++ 0x42, 0x8c, 0x3d, 0x43, 0x3b, 0xd2, 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, 0xc1, 0xcc, 0xb6, 0xd1, ++ 0x43, 0xd8, 0x0d, 0x38, 0xd4, 0x56, 0x5d, 0x1e, 0x41, 0x02, 0xeb, 0x48, 0x67, 0x6d, 0x77, 0xdb, ++ 0x44, 0xb7, 0x9d, 0x9a, 0x1c, 0x4c, 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, 0x93, 0x8c, 0x75, 0xed, ++ 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, 0x6d, 0x28, 0xfc, 0xb9, 0xa7, 0xe0, 0x35, 0x2d, 0xb4, 0xe7, ++ 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, 0x43, 0x05, 0x81, 0xb4, 0x1c, 0x0d, 0x34, 0xf9, ++ 0x47, 0x4b, 0xcd, 0x17, 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, 0xba, 0xac, 0xf5, 0xf3, ++ 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, 0x91, 0xd9, 0x9c, 0xfe, 0x37, 0x0c, 0x30, 0x95, ++ 0x49, 0x95, 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, 0x45, 0x0c, 0x3f, 0x73, 0x91, 0xad, 0xf1, 0x9f, ++ 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, 0xb8, 0x8d, 0x71, 0x81, ++ 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, 0x2e, 0x65, 0xba, 0xaa, 0x1e, 0x2c, 0xb0, 0x8b, ++ 0x4c, 0x52, 0xde, 0xc4, 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, 0xea, 0xcd, 0xb2, 0xbd, ++ 0x4d, 0x06, 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, 0x93, 0xde, 0xf6, 0x02, 0x4c, 0x6c, 0x73, 0xb7, ++ 0x4e, 0xfa, 0xbe, 0x32, 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, 0x65, 0x4c, 0xf3, 0xa9, ++ 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, 0xc3, 0xed, 0x32, 0xa3, ++ 0x50, 0x2d, 0xdb, 0x09, 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, 0x6f, 0x1b, 0xbc, 0xcf, 0xba, 0x65, ++ 0x51, 0x79, 0xeb, 0x72, 0x21, 0x0a, 0xcd, 0x9c, 0xf4, 0xa5, 0xcc, 0x96, 0x1a, 0x6e, 0x7b, 0x6f, ++ 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, 0xd5, 0x87, 0x4b, 0x19, 0xea, 0xc2, 0x33, 0x4e, 0xfb, 0x71, ++ 0x53, 0xd1, 0x8b, 0x84, 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, 0x95, 0xef, 0x3a, 0x7b, ++ 0x54, 0xbe, 0x1b, 0x26, 0xf4, 0xdb, 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, 0x61, 0x0e, 0x38, 0x4d, ++ 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, 0x22, 0x77, 0x05, 0xe7, 0xc7, 0xaf, 0xf9, 0x47, ++ 0x56, 0x16, 0x7b, 0xd0, 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, 0xee, 0x8f, 0x79, 0x59, ++ 0x57, 0x42, 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, 0x49, 0x1e, 0x80, 0x3e, 0x48, 0x2e, 0xb8, 0x53, ++ 0x58, 0xc8, 0x98, 0x57, 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, 0xc5, 0x8e, 0x7d, 0x35, ++ 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, 0x63, 0x2f, 0xbc, 0x3f, ++ 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, 0x95, 0xcf, 0x24, 0x7e, 0xbb, 0x20, 0x4a, 0x0f, 0x3c, 0x21, ++ 0x5b, 0x34, 0xc8, 0xda, 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, 0xec, 0xae, 0xfd, 0x2b, ++ 0x5c, 0x5b, 0x58, 0x78, 0x80, 0x71, 0xa5, 0xf9, 0x99, 0xc5, 0xf7, 0x88, 0x18, 0x4f, 0xff, 0x1d, ++ 0x5d, 0x0f, 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, 0xbe, 0xee, 0x3e, 0x17, ++ 0x5e, 0xf3, 0x38, 0x8e, 0x9d, 0xba, 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, 0x97, 0xce, 0xbe, 0x09, ++ 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, 0xd1, 0xdc, 0x31, 0x6f, 0x7f, 0x03, ++ 0x60, 0x36, 0x92, 0x0e, 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, 0x69, 0x8a, 0x6d, 0x46, ++ 0x61, 0x62, 0xa2, 0x75, 0xda, 0x70, 0x8e, 0xef, 0x55, 0x34, 0xe9, 0x9f, 0xcf, 0x2b, 0xac, 0x4c, ++ 0x62, 0x9e, 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, 0xcf, 0xcb, 0xe6, 0x0b, 0x2c, 0x52, ++ 0x63, 0xca, 0xc2, 0x83, 0xc7, 0xbb, 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, 0x40, 0xaa, 0xed, 0x58, ++ 0x64, 0xa5, 0x52, 0x21, 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, 0x83, 0x63, 0xb4, 0x4b, 0xef, 0x6e, ++ 0x65, 0xf1, 0x62, 0x5a, 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, 0x12, 0xea, 0x2e, 0x64, ++ 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, 0xb6, 0xd0, 0x3c, 0x5a, 0x06, 0xba, 0x3b, 0xca, 0xae, 0x7a, ++ 0x67, 0x59, 0x02, 0xac, 0xfd, 0xee, 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, 0x9d, 0x6b, 0x6f, 0x70, ++ 0x68, 0xd3, 0xd1, 0x50, 0x41, 0x5e, 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, 0x10, 0xcb, 0xaa, 0x16, ++ 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, 0xb8, 0x7d, 0xb6, 0x6a, 0x6b, 0x1c, ++ 0x6a, 0x7b, 0xb1, 0xa6, 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, 0x9e, 0x29, 0x9f, 0x4a, 0xeb, 0x02, ++ 0x6b, 0x2f, 0x81, 0xdd, 0xb3, 0x11, 0xde, 0xb5, 0x51, 0x3a, 0x3d, 0xa4, 0x39, 0xeb, 0x2a, 0x08, ++ 0x6c, 0x40, 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, 0x38, 0x54, 0xd2, 0x81, 0xcd, 0x0a, 0x28, 0x3e, ++ 0x6d, 0x14, 0x21, 0x04, 0x94, 0x8f, 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, 0x6b, 0xab, 0xe9, 0x34, ++ 0x6e, 0xe8, 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, 0x57, 0x58, 0x42, 0x8b, 0x69, 0x2a, ++ 0x6f, 0xbc, 0x41, 0xf2, 0x89, 0x44, 0xfe, 0x91, 0x87, 0xe8, 0xf4, 0xd5, 0xe4, 0x2a, 0xa8, 0x20, ++ 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, 0x5f, 0x2f, 0xe8, 0x15, 0x9b, 0x08, 0x20, 0xe6, ++ 0x71, 0x6b, 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, 0x8b, 0xfa, 0x4b, 0x98, 0x3d, 0xa9, 0xe1, 0xec, ++ 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, 0x16, 0x64, 0x34, 0x46, 0x6d, 0xcc, 0x14, 0x89, 0x61, 0xf2, ++ 0x73, 0xc3, 0x44, 0x3f, 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, 0xce, 0x41, 0xb2, 0x28, 0xa0, 0xf8, ++ 0x74, 0xac, 0xd4, 0x9d, 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, 0x21, 0x64, 0x46, 0xc9, 0xa2, 0xce, ++ 0x75, 0xf8, 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, 0x5d, 0x28, 0x82, 0xe9, 0xe0, 0x68, 0x63, 0xc4, ++ 0x76, 0x04, 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, 0xc9, 0x48, 0xe3, 0xda, ++ 0x77, 0x50, 0x84, 0x10, 0x15, 0x79, 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, 0x6f, 0xe9, 0x22, 0xd0, ++ 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, 0x46, 0x3e, 0x30, 0x48, 0xb9, 0xf7, 0xe2, 0x49, 0xe7, 0xb6, ++ 0x79, 0x8e, 0x67, 0x97, 0x46, 0x4d, 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, 0x44, 0xe8, 0x26, 0xbc, ++ 0x7a, 0x72, 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, 0x5b, 0x21, 0x3c, 0x2e, 0x6d, 0xc8, 0xa6, 0xa2, ++ 0x7b, 0x26, 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, 0xcb, 0x69, 0x67, 0xa8, ++ 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, 0x66, 0x1a, 0xe6, 0x9a, 0x70, 0x86, 0x3f, 0x88, 0x65, 0x9e, ++ 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, 0x6e, 0x13, 0x32, 0x4f, 0xd3, 0x0b, 0x99, 0x29, 0xa4, 0x94, ++ 0x7e, 0xe1, 0xf7, 0x35, 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, 0xb0, 0x09, 0x24, 0x8a, ++ 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, 0x59, 0x26, 0x56, 0xd2, 0x16, 0xa8, 0xe5, 0x80, ++ 0x80, 0x48, 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, 0x9c, 0x9a, 0x2d, 0x49, ++ 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, 0x82, 0x03, 0xeb, 0x6a, 0xfa, 0xb5, 0x3a, 0x3b, 0xec, 0x43, ++ 0x82, 0xe0, 0xda, 0x5f, 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, 0xdc, 0xe1, 0x13, 0x1b, 0x6c, 0x5d, ++ 0x83, 0xb4, 0xea, 0x24, 0xbe, 0x7d, 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, 0xb5, 0xba, 0xad, 0x57, ++ 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, 0xe9, 0x6d, 0x90, 0x49, 0x41, 0x5b, 0xaf, 0x61, ++ 0x85, 0x8f, 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, 0xe7, 0xfa, 0x6e, 0x6b, ++ 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, 0xba, 0x3c, 0x82, 0x04, 0x15, 0x90, 0xce, 0xda, 0xee, 0x75, ++ 0x87, 0x27, 0x2a, 0x0b, 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, 0xb6, 0x1d, 0x68, 0x7b, 0x2f, 0x7f, ++ 0x88, 0xad, 0xf9, 0xf7, 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, 0x08, 0xda, 0xe5, 0xdb, 0xea, 0x19, ++ 0x89, 0xf9, 0xc9, 0x8c, 0xd7, 0x1c, 0xc2, 0x4b, 0x84, 0x0d, 0xab, 0x57, 0x43, 0x7a, 0x2b, 0x13, ++ 0x8a, 0x05, 0x99, 0x01, 0x25, 0x53, 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, 0x6a, 0x5a, 0xab, 0x0d, ++ 0x8b, 0x51, 0xa9, 0x7a, 0xca, 0xd7, 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, 0xcc, 0xfb, 0x6a, 0x07, ++ 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, 0xea, 0x66, 0x86, 0x0a, 0xc1, 0xab, 0x38, 0x1a, 0x68, 0x31, ++ 0x8d, 0x6a, 0x09, 0xa3, 0xed, 0x49, 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, 0x9e, 0xbb, 0xa9, 0x3b, ++ 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, 0xed, 0x63, 0x44, 0x72, 0xb7, 0x9b, 0x29, 0x25, ++ 0x8f, 0xc2, 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, 0x11, 0x3a, 0xe8, 0x2f, ++ 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, 0x6e, 0x18, 0x60, 0xe9, ++ 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, 0x58, 0xb2, 0xc8, 0xb9, 0xa1, 0xe3, ++ 0x92, 0xe9, 0x5c, 0xe3, 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, 0xe1, 0x99, 0x21, 0xfd, ++ 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, 0x5e, 0xcd, 0xdd, 0x6b, 0x47, 0x38, 0xe0, 0xf7, ++ 0x94, 0xd2, 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, 0x37, 0xa3, 0x32, 0x4e, 0xb3, 0xd9, 0xe2, 0xc1, ++ 0x95, 0x86, 0xcc, 0x41, 0x71, 0x74, 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, 0x15, 0x78, 0x23, 0xcb, ++ 0x96, 0x7a, 0x9c, 0xcc, 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, 0xb7, 0x97, 0x3c, 0x58, 0xa3, 0xd5, ++ 0x97, 0x2e, 0xac, 0xb7, 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, 0x9a, 0xf9, 0x62, 0xdf, ++ 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, 0x8e, 0x16, 0xaa, 0xdd, 0x17, 0x59, 0xa7, 0xb9, ++ 0x99, 0xf0, 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, 0x5a, 0xc3, 0x09, 0x50, 0xb1, 0xf8, 0x66, 0xb3, ++ 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, 0x5a, 0xc0, 0xe5, 0x7f, 0x2f, 0x04, 0x98, 0xd8, 0xe6, 0xad, ++ 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, 0x8c, 0x89, 0x3e, 0x79, 0x27, 0xa7, ++ 0x9c, 0x37, 0xbf, 0x64, 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, 0xca, 0x98, 0x25, 0x91, ++ 0x9d, 0x63, 0x8f, 0x1f, 0x05, 0xde, 0x62, 0xff, 0x8c, 0x11, 0xc0, 0x21, 0x6c, 0x39, 0xe4, 0x9b, ++ 0x9e, 0x9f, 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, 0xe6, 0x75, 0x45, 0x19, 0x64, 0x85, ++ 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, 0xe3, 0xb8, 0xa5, 0x8f, ++ 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, 0x40, 0xe0, 0xde, 0x36, 0xbb, 0x5d, 0xb7, 0xca, ++ 0xa1, 0x0e, 0x45, 0x69, 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, 0x1d, 0xfc, 0x76, 0xc0, ++ 0xa2, 0xf2, 0x15, 0xe4, 0x42, 0x14, 0x59, 0xfb, 0x2b, 0x89, 0x5b, 0xef, 0x34, 0xdc, 0xf6, 0xde, ++ 0xa3, 0xa6, 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, 0xf8, 0x62, 0x92, 0x7d, 0x37, 0xd4, ++ 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, 0x69, 0xcd, 0x96, 0x32, 0x17, 0x47, 0x66, 0x9c, 0x35, 0xe2, ++ 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, 0xb4, 0xca, 0xc0, 0x3d, 0xf4, 0xe8, ++ 0xa6, 0x61, 0xd5, 0xcb, 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, 0xe9, 0x1d, 0x74, 0xf6, ++ 0xa7, 0x35, 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, 0x29, 0x8e, 0x31, 0x13, 0x4f, 0xbc, 0xb5, 0xfc, ++ 0xa8, 0xbf, 0x36, 0x4c, 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, 0xc2, 0x1c, 0x70, 0x9a, ++ 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, 0x64, 0xbd, 0xb1, 0x90, ++ 0xaa, 0x17, 0x56, 0xba, 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, 0x0a, 0x0d, 0x4d, 0x9d, 0x31, 0x8e, ++ 0xab, 0x43, 0x66, 0xc1, 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, 0xa9, 0x80, 0xeb, 0x3c, 0xf0, 0x84, ++ 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, 0xf9, 0x55, 0x46, 0xa5, 0x1f, 0xdd, 0xf2, 0xb2, ++ 0xad, 0x78, 0xc6, 0x18, 0xfe, 0xa4, 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, 0xb9, 0x7c, 0x33, 0xb8, ++ 0xae, 0x84, 0x96, 0x95, 0x0c, 0xeb, 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, 0x90, 0x5c, 0xb3, 0xa6, ++ 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, 0x60, 0xf1, 0x36, 0xfd, 0x72, 0xac, ++ 0xb0, 0x53, 0xf3, 0xae, 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, 0x49, 0xdf, 0xfa, 0x6a, ++ 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, 0xc1, 0x70, 0x4a, 0xfb, 0xdf, 0xbc, 0xef, 0x7e, 0x3b, 0x60, ++ 0xb2, 0xfb, 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, 0xf9, 0xe8, 0xc6, 0x5e, 0xbb, 0x7e, ++ 0xb3, 0xaf, 0xa3, 0x23, 0x45, 0x07, 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, 0x60, 0xff, 0x7a, 0x74, ++ 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, 0xe9, 0x5d, 0x48, 0xfc, 0xb5, 0x40, 0x94, 0x1e, 0x78, 0x42, ++ 0xb5, 0x94, 0x03, 0xfa, 0x62, 0x99, 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, 0x32, 0xbf, 0xb9, 0x48, ++ 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, 0x23, 0x95, 0x30, 0x99, 0x1b, 0x9f, 0x39, 0x56, ++ 0xb7, 0x3c, 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, 0xf7, 0x40, 0x93, 0x14, 0xbd, 0x3e, 0xf8, 0x5c, ++ 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, 0x89, 0x31, 0xf1, 0x49, 0x2d, 0xd3, 0x30, 0x9e, 0x3d, 0x3a, ++ 0xb9, 0xe2, 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, 0x8e, 0x5e, 0x96, 0x3f, 0xfc, 0x30, ++ 0xba, 0x1e, 0xd0, 0x06, 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, 0xa8, 0x0a, 0xbf, 0x1f, 0x7c, 0x2e, ++ 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, 0x4e, 0xf5, 0x0b, 0x87, 0x19, 0xbe, 0xbd, 0x24, ++ 0xbc, 0x25, 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, 0xe4, 0xa2, 0xed, 0x5f, 0xbf, 0x12, ++ 0xbd, 0x71, 0x40, 0xa4, 0x16, 0x33, 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, 0x4b, 0xfe, 0x7e, 0x18, ++ 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, 0xb9, 0x07, 0x4c, 0xf2, 0x61, 0x7b, 0x62, 0xde, 0xfe, 0x06, ++ 0xbf, 0xd9, 0x20, 0x52, 0x0b, 0xf8, 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, 0xc4, 0x7f, 0x3f, 0x0c, ++ 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, 0xc1, 0x01, 0x94, 0x24, 0xd2, 0xd7, 0xda, 0x8c, ++ 0xc1, 0x38, 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, 0x74, 0x76, 0x1b, 0x86, ++ 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, 0x5d, 0x56, 0x9b, 0x98, ++ 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, 0xd7, 0x14, 0x7e, 0xbd, 0xb2, 0x70, 0xfb, 0xf7, 0x5a, 0x92, ++ 0xc4, 0xff, 0x27, 0x33, 0x50, 0x7e, 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, 0x0f, 0x16, 0x58, 0xa4, ++ 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, 0xc3, 0x06, 0xfe, 0xd8, 0xa9, 0xb7, 0x99, 0xae, ++ 0xc6, 0x57, 0x47, 0xc5, 0x4d, 0xb5, 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, 0x80, 0x97, 0x19, 0xb0, ++ 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, 0xf7, 0x30, 0xa8, 0x6f, 0x7b, 0x01, 0x26, 0x36, 0xd8, 0xba, ++ 0xc8, 0x89, 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, 0xc5, 0xc6, 0xab, 0x96, 0x1d, 0xdc, ++ 0xc9, 0xdd, 0x94, 0x39, 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, 0x66, 0x4b, 0x0d, 0x37, 0xdc, 0xd6, ++ 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, 0xc5, 0x0f, 0x40, 0x1f, 0x24, 0x17, 0x5c, 0xc8, ++ 0xcb, 0x75, 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, 0x82, 0xb6, 0x9d, 0xc2, ++ 0xcc, 0x1a, 0x64, 0x6d, 0x24, 0xd4, 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, 0x76, 0x57, 0x9f, 0xf4, ++ 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, 0xac, 0x61, 0xaf, 0x3a, 0xd0, 0xf6, 0x5e, 0xfe, ++ 0xce, 0xb2, 0x04, 0x9b, 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, 0xf9, 0xd6, 0xde, 0xe0, ++ 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, 0xc7, 0x08, 0x2a, 0xe3, 0x5f, 0x77, 0x1f, 0xea, ++ 0xd0, 0x65, 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, 0x36, 0x23, 0x20, 0x55, 0x97, 0x2c, ++ 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, 0x47, 0x96, 0xcb, 0x1a, 0x95, 0xae, 0x86, 0xf4, 0x56, 0x26, ++ 0xd2, 0xcd, 0x01, 0x56, 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, 0xb3, 0xfa, 0xaf, 0xd4, 0xd6, 0x38, ++ 0xd3, 0x99, 0x31, 0x2d, 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, 0x09, 0x75, 0x17, 0x32, ++ 0xd4, 0xf6, 0xa1, 0x8f, 0xb8, 0xe9, 0x6f, 0xbb, 0xc9, 0x1d, 0xff, 0x52, 0xfd, 0x94, 0x15, 0x04, ++ 0xd5, 0xa2, 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, 0x5b, 0x35, 0xd4, 0x0e, ++ 0xd6, 0x5e, 0xc1, 0x79, 0xa5, 0x22, 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, 0x72, 0x15, 0x54, 0x10, ++ 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, 0x77, 0xa0, 0x76, 0xa1, 0xd9, 0x06, 0xd4, 0xb4, 0x95, 0x1a, ++ 0xd8, 0x80, 0x22, 0xfe, 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, 0x59, 0x14, 0x50, 0x7c, ++ 0xd9, 0xd4, 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, 0xa4, 0x7d, 0xc4, 0x4c, 0xff, 0xb5, 0x91, 0x76, ++ 0xda, 0x28, 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, 0xe2, 0x18, 0xd6, 0x95, 0x11, 0x68, ++ 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, 0x70, 0x34, 0xd0, 0x62, ++ 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, 0xa6, 0x7a, 0xae, 0xb0, 0x84, 0xd5, 0xd2, 0x54, ++ 0xdd, 0x47, 0xd2, 0xaa, 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, 0x22, 0x74, 0x13, 0x5e, ++ 0xde, 0xbb, 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, 0xcd, 0x13, 0x2b, 0x69, 0x0b, 0x54, 0x93, 0x40, ++ 0xdf, 0xef, 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, 0x19, 0xc6, 0x88, 0xe4, 0xad, 0xf5, 0x52, 0x4a, ++ 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, 0x0c, 0xec, 0xbe, 0x5e, 0x13, 0x2a, 0xf5, 0x10, 0x40, 0x0f, ++ 0xe1, 0x2a, 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, 0xb0, 0xa7, 0x53, 0xb1, 0x81, 0x05, ++ 0xe2, 0xd6, 0x48, 0x51, 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, 0x7a, 0x91, 0x01, 0x1b, ++ 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, 0x14, 0xf7, 0x01, 0xe2, 0x35, 0x7e, 0xdc, 0x30, 0xc0, 0x11, ++ 0xe4, 0xed, 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, 0xda, 0x5b, 0x28, 0xd1, 0xc2, 0x27, ++ 0xe5, 0xb9, 0xd8, 0xf3, 0xac, 0x17, 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, 0x8e, 0x70, 0x03, 0x2d, ++ 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, 0x3c, 0xda, 0x03, 0xe5, 0x5f, 0x82, 0xa7, 0x50, 0x83, 0x33, ++ 0xe7, 0x11, 0xb8, 0x05, 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, 0x01, 0xf1, 0x42, 0x39, ++ 0xe8, 0x9b, 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, 0xd1, 0x39, 0x42, 0xc8, 0x8c, 0x51, 0x87, 0x5f, ++ 0xe9, 0xcf, 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, 0xe1, 0x45, 0x2a, 0xf0, 0x46, 0x55, ++ 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, 0x5c, 0xb6, 0xba, 0x50, 0xc7, 0x11, 0x03, 0xd0, 0xc6, 0x4b, ++ 0xeb, 0x67, 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, 0x64, 0x9c, 0xa5, 0x71, 0x07, 0x41, ++ 0xec, 0x08, 0xab, 0xd6, 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, 0x8b, 0xb9, 0x51, 0x90, 0x05, 0x77, ++ 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, 0x64, 0x89, 0xd3, 0x3e, 0x28, 0x34, 0xf7, 0x31, 0xc4, 0x7d, ++ 0xee, 0xa0, 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, 0xde, 0x11, 0x44, 0x63, ++ 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, 0x74, 0x9b, 0xb8, 0x57, 0xad, 0xed, 0x78, 0xb0, 0x85, 0x69, ++ 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, 0x8c, 0x7c, 0x60, 0x90, 0xb1, 0x2d, 0x07, 0x92, 0x0d, 0xaf, ++ 0xf1, 0x23, 0x9e, 0x60, 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, 0xa1, 0x33, 0xcc, 0xa5, ++ 0xf2, 0xdf, 0xce, 0xed, 0x8c, 0x9a, 0x9c, 0x6e, 0x0b, 0xf9, 0x34, 0xf4, 0x88, 0x13, 0x4c, 0xbb, ++ 0xf3, 0x8b, 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, 0x97, 0x79, 0x2e, 0xb2, 0x8d, 0xb1, ++ 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, 0xac, 0x58, 0xb6, 0x42, 0x78, 0x5c, 0xda, 0x53, 0x8f, 0x87, ++ 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, 0xa4, 0x51, 0x62, 0x97, 0xdb, 0xd1, 0x7c, 0xf2, 0x4e, 0x8d, ++ 0xf6, 0x4c, 0x0e, 0xc2, 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, 0xfd, 0x85, 0x55, 0xd2, 0xce, 0x93, ++ 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, 0x09, 0xfe, 0x5e, 0x08, 0xf3, 0x73, 0x0f, 0x99, ++ 0xf8, 0x92, 0xed, 0x45, 0xe5, 0xfb, 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, 0x7e, 0xd3, 0xca, 0xff, ++ 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, 0xc4, 0x3d, 0xdb, 0x22, 0x43, 0x42, 0xd8, 0x72, 0x0b, 0xf5, ++ 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, 0x65, 0x16, 0xf1, 0x52, 0x8b, 0xeb, ++ 0xfb, 0x6e, 0xbd, 0xc8, 0x17, 0xb4, 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, 0x57, 0xf3, 0x4a, 0xe1, ++ 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, 0xd9, 0x25, 0x29, 0xbe, 0xa3, 0x12, 0x48, 0xd7, ++ 0xfd, 0x55, 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, 0x8a, 0x33, 0x05, 0xb3, 0x89, 0xdd, ++ 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, 0x2c, 0x93, 0x09, 0xc3, ++ 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, 0x66, 0x99, 0x0f, 0xea, 0x8a, 0x32, 0xc8, 0xc9, ++ }, ++ { /* 8 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfb, 0xde, 0xe0, 0xaf, 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, 0x6a, 0x2b, 0x9c, 0xf3, ++ 0x35, 0x7f, 0x03, 0x9d, 0x20, 0x51, 0x2f, 0x92, 0xbf, 0x0d, 0xdc, 0x8b, 0xd4, 0x56, 0xfb, 0x25, ++ 0xce, 0xa1, 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, 0x01, 0xea, 0xb2, 0x2f, 0xbe, 0x7d, 0x67, 0xd6, ++ 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, 0x5e, 0xe7, 0xbd, 0x1a, 0x7b, 0xd5, 0x6b, 0xac, 0x35, 0x4a, ++ 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, 0x15, 0x71, 0x01, 0x87, 0xa9, 0xb9, ++ 0x5f, 0x81, 0x05, 0x64, 0x60, 0xf3, 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, 0xbf, 0xfa, 0xce, 0x6f, ++ 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, 0xbc, 0xf0, 0xc9, 0xfa, 0xd5, 0xd1, 0x52, 0x9c, ++ 0xd4, 0x3f, 0x0c, 0x31, 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, 0xd6, 0x9b, 0x6a, 0x94, ++ 0x2f, 0xe1, 0xec, 0x9e, 0x90, 0x4e, 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, 0xbc, 0xb0, 0xf6, 0x67, ++ 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, 0x2a, 0xe2, 0x02, 0xcd, 0x91, 0xb1, ++ 0x1a, 0x9e, 0xef, 0x03, 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, 0x68, 0xe6, 0x0d, 0x42, ++ 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, 0x04, 0x2e, 0x8d, 0xbc, 0xbd, 0x37, 0x5f, 0xde, ++ 0x45, 0x1f, 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, 0xba, 0xc9, 0xe3, 0x18, 0xd7, 0x1c, 0xc3, 0x2d, ++ 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, 0x69, 0x61, 0xa4, 0xfb, ++ 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, 0x05, 0xc4, 0x3f, 0x93, 0x03, 0x4a, 0x38, 0x08, ++ 0x6b, 0x7e, 0x18, 0x62, 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, 0x6f, 0xf5, 0xd4, 0xeb, ++ 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, 0x4d, 0x53, 0x0f, 0x8f, 0x41, 0x76, 0x05, 0xde, 0x48, 0x18, ++ 0x5e, 0x01, 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, 0xf3, 0x59, 0xbb, 0xa3, 0x2f, 0xce, ++ 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, 0xd1, 0x88, 0xb3, 0x3d, ++ 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, 0x0c, 0x72, 0x54, 0x07, 0x04, 0x59, 0xe1, 0xa1, ++ 0xfa, 0x5e, 0xfe, 0x34, 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, 0x6e, 0x72, 0x7d, 0x52, ++ 0x34, 0xff, 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, 0xb3, 0x7f, 0x88, 0x8c, 0xd0, 0x0f, 0x1a, 0x84, ++ 0xcf, 0x21, 0xfd, 0xa9, 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, 0xba, 0x24, 0x86, 0x77, ++ 0xbf, 0x41, 0x14, 0x53, 0x43, 0x4a, 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, 0xb9, 0x6e, 0xbe, 0x7f, ++ 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, 0xf1, 0x5e, 0xb6, 0xbb, 0xb7, 0x1f, 0xd3, 0x45, 0x22, 0x8c, ++ 0x8a, 0x3e, 0x17, 0xce, 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, 0x6d, 0x38, 0x45, 0x5a, ++ 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, 0x09, 0xb6, 0x6b, 0x94, 0x07, 0x13, 0xd9, 0xa9, ++ 0xd5, 0xbf, 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, 0xa2, 0x6e, 0xd2, 0xc2, 0x8b, 0x35, ++ 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, 0xaf, 0xb9, 0x0b, 0xa1, 0xcc, 0xca, 0xb8, 0xe9, 0x17, 0xc6, ++ 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, 0x7e, 0xe5, 0x06, 0x94, 0x70, 0x10, ++ 0x1b, 0x1e, 0xf1, 0x98, 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, 0x6c, 0xbf, 0xec, 0xe3, ++ 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, 0xb5, 0x34, 0xa1, 0xd0, 0x5e, 0x67, 0xde, 0x29, 0x6b, 0x15, ++ 0x2d, 0x22, 0xd0, 0x6b, 0x55, 0x90, 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, 0xb4, 0x02, 0xf7, 0xe6, ++ 0xe3, 0x83, 0x33, 0x59, 0x65, 0x08, 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, 0x0a, 0x7f, 0x90, 0x30, ++ 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, 0xec, 0x48, 0x60, 0x54, 0x0c, 0xc3, ++ 0xbc, 0x02, 0x36, 0x3d, 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, 0xb5, 0x85, 0x5e, 0x5f, ++ 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, 0xa2, 0x2d, 0x4b, 0x16, 0xdf, 0xae, 0xc2, 0xac, ++ 0x89, 0x7d, 0x35, 0xa0, 0x25, 0xaa, 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, 0x61, 0xd3, 0xa5, 0x7a, ++ 0x72, 0xa3, 0xd5, 0x0f, 0x35, 0x63, 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, 0x0b, 0xf8, 0x39, 0x89, ++ 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, 0x09, 0x39, 0x18, 0xe4, 0xa8, 0x0e, 0x08, 0xb2, 0x01, 0x81, ++ 0xf9, 0x1d, 0xdc, 0x5a, 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, 0x62, 0x99, 0x9d, 0x72, ++ 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, 0xa7, 0xe9, 0x74, 0x85, 0xdc, 0xe4, 0xfa, 0xa4, ++ 0xcc, 0x62, 0xdf, 0xc7, 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, 0xb6, 0xcf, 0x66, 0x57, ++ 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, 0x63, 0x1e, 0x34, 0xcb, ++ 0x93, 0xe3, 0xda, 0xa3, 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, 0xbd, 0x7f, 0x09, 0x35, 0xa8, 0x38, ++ 0x5d, 0x42, 0x39, 0x91, 0xa5, 0x2d, 0x78, 0x4c, 0x1a, 0xf3, 0x0f, 0x50, 0xb7, 0x48, 0xcf, 0xee, ++ 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, 0x8e, 0x05, 0xa4, 0x14, 0x61, 0xf4, 0xdd, 0x63, 0x53, 0x1d, ++ 0xbd, 0x82, 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, 0x71, 0xb5, 0xb1, 0xdc, 0xbf, 0xfe, ++ 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, 0xf8, 0x67, 0xae, 0x5f, 0x1f, 0x11, 0xdb, 0xf7, 0x23, 0x0d, ++ 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, 0xaf, 0xb5, 0xad, 0x3e, 0x65, 0x8a, 0x44, 0xdb, ++ 0x73, 0x23, 0xcb, 0x94, 0xb6, 0x0c, 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, 0x0f, 0xa1, 0xd8, 0x28, ++ 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, 0xad, 0xa2, 0x0a, 0x60, 0xda, 0x70, 0x8a, 0xb4, ++ 0x2c, 0xa2, 0xce, 0xf0, 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, 0xb0, 0x5b, 0x16, 0x47, ++ 0xe2, 0x03, 0x2d, 0xc2, 0xe6, 0x67, 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, 0x0e, 0x26, 0x71, 0x91, ++ 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, 0xb8, 0x4f, 0x64, 0x0d, 0xed, 0x62, ++ 0x69, 0xbd, 0x24, 0x97, 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, 0x67, 0x47, 0xd5, 0x6a, ++ 0x92, 0x63, 0xc4, 0x38, 0x16, 0xda, 0x44, 0x6a, 0x17, 0x6b, 0xe9, 0x78, 0x0d, 0x6c, 0x49, 0x99, ++ 0x5c, 0xc2, 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, 0x16, 0x81, 0x5b, 0x57, 0xb3, 0x11, 0x2e, 0x4f, ++ 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, 0x6b, 0xf8, 0xa8, 0x66, 0x35, 0xf3, 0xd9, 0x3a, 0xb2, 0xbc, ++ 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, 0x14, 0x96, 0xfc, 0x09, 0x0c, 0xeb, 0xe0, 0x20, ++ 0xf8, 0x9d, 0xc2, 0xc1, 0x56, 0x78, 0x1a, 0x8d, 0xaa, 0x71, 0x92, 0xad, 0x66, 0xc0, 0x7c, 0xd3, ++ 0x36, 0x3c, 0x21, 0xf3, 0x66, 0xe0, 0xc3, 0x56, 0xab, 0x9b, 0x20, 0x82, 0xd8, 0xbd, 0x1b, 0x05, ++ 0xcd, 0xe2, 0xc1, 0x5c, 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, 0xb2, 0x96, 0x87, 0xf6, ++ 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, 0xa9, 0x68, 0x81, 0x63, 0xbc, 0xce, 0x7f, 0x52, 0xd6, 0x2a, ++ 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, 0x3f, 0x84, 0xd2, 0x6a, 0x15, 0x79, 0x4a, 0xd9, ++ 0x5a, 0x44, 0x63, 0xd6, 0xaa, 0xe3, 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, 0xab, 0x04, 0x2d, 0x0f, ++ 0xa1, 0x9a, 0x83, 0x79, 0xba, 0x2a, 0x70, 0xb3, 0x80, 0x89, 0x0e, 0xe1, 0xc1, 0x2f, 0xb1, 0xfc, ++ 0x05, 0xc5, 0x66, 0xb2, 0xca, 0x10, 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, 0x14, 0xfe, 0xe3, 0x60, ++ 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, 0x01, 0xc6, 0x82, 0x9e, 0xa9, 0xbf, 0x7e, 0xd5, 0x7f, 0x93, ++ 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, 0x83, 0x74, 0x1b, 0x90, 0xc0, 0xa8, 0x18, 0x45, ++ 0xcb, 0x64, 0x85, 0x80, 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, 0xaa, 0x83, 0x84, 0xb6, ++ 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, 0x38, 0x57, 0x4a, 0xa7, 0xa9, 0xc9, 0xbc, 0xbe, ++ 0x40, 0xda, 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, 0x86, 0xb0, 0x24, 0x03, 0xc3, 0xe2, 0x20, 0x4d, ++ 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, 0x7d, 0x9f, 0x47, 0x9b, ++ 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, 0x39, 0xbd, 0xf8, 0x88, 0x17, 0xb4, 0xdb, 0x68, ++ 0xd1, 0xfa, 0x6a, 0x83, 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, 0xc2, 0x65, 0x89, 0xf4, ++ 0x2a, 0x24, 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, 0x3b, 0xaa, 0x5f, 0xd6, 0xa8, 0x4e, 0x15, 0x07, ++ 0xe4, 0x85, 0x69, 0x1e, 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, 0x16, 0x33, 0x72, 0xd1, ++ 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, 0x7c, 0x18, 0xee, 0x22, ++ 0x04, 0x45, 0x78, 0x29, 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, 0x93, 0x1c, 0x10, 0xa7, 0x02, 0xc1, ++ 0xff, 0x9b, 0x98, 0x86, 0x59, 0xb6, 0xe4, 0x3b, 0x8e, 0xec, 0xfd, 0xb8, 0x7a, 0x8c, 0x9e, 0x32, ++ 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, 0x3d, 0xe0, 0x8f, 0x06, 0x4f, 0x97, 0xc4, 0xf1, 0xf9, 0xe4, ++ 0xca, 0xe4, 0x9b, 0x1b, 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, 0xae, 0xda, 0x65, 0x17, ++ 0x6e, 0xbb, 0x7e, 0xd0, 0x09, 0xdd, 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, 0x7b, 0x0b, 0x37, 0x8b, ++ 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, 0x33, 0xf6, 0x86, 0x6d, 0x11, 0x20, 0xab, 0x78, ++ 0x5b, 0xc4, 0x7d, 0x4d, 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, 0xaf, 0x5d, 0xcc, 0xae, ++ 0xa0, 0x1a, 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, 0x8c, 0xfb, 0x5a, 0xe6, 0xc5, 0x76, 0x50, 0x5d, ++ 0xd0, 0x7a, 0x74, 0x18, 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, 0xc6, 0x3c, 0x68, 0x55, ++ 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, 0xac, 0x17, 0xf4, 0xa6, ++ 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, 0x81, 0xed, 0x36, 0x32, 0xb9, 0xfe, 0x12, 0x6a, 0x93, 0x70, ++ 0x1e, 0xdb, 0x97, 0x2a, 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, 0x78, 0x41, 0x0f, 0x83, ++ 0xba, 0x84, 0x72, 0xe1, 0x89, 0x5a, 0xf0, 0x98, 0x34, 0x25, 0x1e, 0xa0, 0xad, 0x90, 0x5d, 0x1f, ++ 0x41, 0x5a, 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, 0xc7, 0xbb, 0xc1, 0xec, ++ 0x8f, 0xfb, 0x71, 0x7c, 0xa9, 0x0b, 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, 0x79, 0xc6, 0xa6, 0x3a, ++ 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, 0xac, 0x8f, 0x13, 0xed, 0x3a, 0xc9, ++ 0xb9, 0xc7, 0x50, 0x8f, 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, 0xa1, 0x7b, 0xbd, 0x3f, ++ 0x42, 0x19, 0xb0, 0x20, 0xdf, 0x22, 0xea, 0x15, 0x9e, 0x54, 0x8c, 0x0d, 0xcb, 0x50, 0x21, 0xcc, ++ 0x8c, 0xb8, 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, 0x3e, 0x22, 0x75, 0x2d, 0x46, 0x1a, ++ 0x77, 0x66, 0xb3, 0xbd, 0xff, 0x73, 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, 0x1f, 0x06, 0xda, 0xe9, ++ 0xd3, 0x39, 0x56, 0x76, 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, 0x99, 0x7c, 0xca, 0xd7, 0x88, 0x75, ++ 0x28, 0xe7, 0xb6, 0xd9, 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, 0xa0, 0xfc, 0x14, 0x86, ++ 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, 0x6d, 0x29, 0x22, 0xa4, 0x45, 0xf7, 0x1e, 0x81, 0x73, 0x50, ++ 0x1d, 0x98, 0xb5, 0x44, 0xbf, 0xd1, 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, 0x74, 0xaa, 0xef, 0xa3, ++ 0x6d, 0xf8, 0x5c, 0xbe, 0x4f, 0x6c, 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, 0x77, 0xe0, 0xd7, 0xab, ++ 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, 0x7a, 0x64, 0x1d, 0xcb, 0x4b, 0x58, ++ 0x58, 0x87, 0x5f, 0x23, 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, 0xc8, 0x4b, 0xa3, 0xb6, 0x2c, 0x8e, ++ 0xa3, 0x59, 0xbf, 0x8c, 0x7f, 0xf4, 0x79, 0x8a, 0x98, 0x6d, 0xa6, 0xef, 0xc9, 0x9d, 0xb0, 0x7d, ++ 0x07, 0x06, 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, 0x24, 0x9d, 0x6f, 0x15, 0x1c, 0x4c, 0xe2, 0xe1, ++ 0xfc, 0xd8, 0xba, 0xe8, 0x1f, 0x07, 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, 0x76, 0x67, 0x7e, 0x12, ++ 0x32, 0x79, 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, 0xb3, 0x9e, 0xc8, 0x1a, 0x19, 0xc4, ++ 0xc9, 0xa7, 0xb9, 0x75, 0x3f, 0x56, 0x27, 0x6d, 0x25, 0x77, 0xdd, 0x3a, 0xa2, 0x31, 0x85, 0x37, ++ 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, 0x91, 0xdb, 0xcd, 0x7b, 0xce, 0x8e, 0x69, 0xd4, ++ 0x29, 0x67, 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, 0x2f, 0x3c, 0xa3, 0xdf, 0xa4, 0xa5, 0xf5, 0x27, ++ 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, 0x88, 0xd4, 0x2e, 0xd6, 0x11, 0xf0, 0x1a, 0xd8, 0x92, 0xf1, ++ 0x1c, 0x18, 0xab, 0xdf, 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, 0x7f, 0x54, 0x70, 0xf3, 0x0e, 0x02, ++ 0xb8, 0x47, 0x4e, 0x14, 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, 0xb6, 0xae, 0xa5, 0x22, 0x5c, 0x9e, ++ 0x43, 0x99, 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, 0x92, 0x26, 0xd8, 0x0a, 0xcf, 0x09, 0xc0, 0x6d, ++ 0x8d, 0x38, 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, 0x71, 0x74, 0xa7, 0xbb, ++ 0x76, 0xe6, 0xad, 0x26, 0x7c, 0x1c, 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, 0x1b, 0x5f, 0x3b, 0x48, ++ 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, 0x1b, 0x4b, 0x28, 0xef, 0x3b, 0x12, 0x18, 0x15, 0x03, 0x40, ++ 0xfd, 0x58, 0xa4, 0x73, 0x9c, 0x68, 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, 0x72, 0x3e, 0x9f, 0xb3, ++ 0x33, 0xf9, 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, 0x97, 0xe2, 0xe7, 0x99, 0xcc, 0x43, 0xf8, 0x65, ++ 0xc8, 0x27, 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, 0xa6, 0x68, 0x64, 0x96, ++ 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, 0x45, 0xac, 0x95, 0xf5, 0x40, 0xc7, 0x73, 0xb9, 0x36, 0x0a, ++ 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, 0xb3, 0xe5, 0x2b, 0x12, 0x2e, 0x63, 0x19, 0x92, 0xaa, 0xf9, ++ 0x59, 0x07, 0x41, 0xb8, 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, 0xa7, 0xef, 0xcd, 0x2f, ++ 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, 0x94, 0x1f, 0xf2, 0xe8, 0xcd, 0xc4, 0x51, 0xdc, ++ 0xde, 0x76, 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, 0xfe, 0xa4, 0x6f, 0x54, ++ 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, 0x67, 0x99, 0x7f, 0x21, 0xd5, 0xfb, 0x94, 0x8f, 0xf3, 0xa7, ++ 0xeb, 0x09, 0xc3, 0x0b, 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, 0x67, 0xd4, 0x2a, 0xf2, 0x94, 0x71, ++ 0x10, 0xd7, 0x23, 0xa4, 0xe7, 0x3f, 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, 0x40, 0xd9, 0x08, 0x82, ++ 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, 0x7c, 0xdc, 0xc0, 0x8a, 0x95, 0x08, 0x5a, 0x1e, ++ 0x4f, 0x56, 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, 0xff, 0x23, 0xc6, 0xed, ++ 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, 0xe0, 0xa5, 0xc3, 0xd1, 0x1c, 0x01, 0x41, 0x5e, 0xa1, 0x3b, ++ 0x7a, 0x29, 0x25, 0x5d, 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, 0x72, 0xa5, 0x2b, 0x75, 0x3d, 0xc8, ++ 0x0a, 0x49, 0xcc, 0xa7, 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, 0x4d, 0x36, 0x28, 0x3f, 0x05, 0xc0, ++ 0xf1, 0x97, 0x2c, 0x08, 0x47, 0xe9, 0xdb, 0x94, 0xc6, 0x15, 0x23, 0x92, 0x42, 0x14, 0x99, 0x33, ++ 0x3f, 0x36, 0xcf, 0x3a, 0x77, 0x71, 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, 0xfc, 0x69, 0xfe, 0xe5, ++ 0xc4, 0xe8, 0x2f, 0x95, 0x67, 0xb8, 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, 0x96, 0x42, 0x62, 0x16, ++ 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, 0x73, 0x3a, 0xc5, 0xe8, 0x36, 0xe3, 0x43, 0x93, 0x30, 0x8a, ++ 0x9b, 0x69, 0x2a, 0xf1, 0x07, 0x4b, 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, 0x29, 0xb8, 0xac, 0x79, ++ 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, 0x7a, 0xe5, 0xea, 0x68, 0x97, 0xc5, 0xcb, 0xaf, ++ 0xae, 0x16, 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, 0xfd, 0xee, 0x57, 0x5c, ++ 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, 0x91, 0x51, 0xbb, 0xbf, ++ 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, 0xfa, 0x29, 0xfb, 0x7a, 0x27, 0x4c, ++ 0x80, 0x77, 0xdb, 0x69, 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, 0x45, 0x07, 0x40, 0x9a, ++ 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, 0x71, 0x44, 0x26, 0xa2, 0x2f, 0x2c, 0xdc, 0x69, ++ 0xdf, 0xf6, 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, 0xcd, 0xb4, 0xef, 0x58, 0xfa, 0xfd, 0x8e, 0xf5, ++ 0x24, 0x28, 0x3e, 0xa2, 0x44, 0x01, 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, 0x90, 0xd6, 0x12, 0x06, ++ 0xea, 0x89, 0xdd, 0x90, 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, 0x33, 0xd3, 0x2e, 0xab, 0x75, 0xd0, ++ 0x11, 0x57, 0x3d, 0x3f, 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, 0x44, 0x80, 0xe9, 0x23, ++ 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, 0xc9, 0x9a, 0x62, 0xe4, 0x47, 0xca, 0xd1, 0x2b, ++ 0x9a, 0xe9, 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, 0x77, 0x7d, 0x0c, 0x40, 0x2d, 0xe1, 0x4d, 0xd8, ++ 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, 0xb9, 0x55, 0x76, 0x97, 0xbe, 0x6f, 0x93, 0x9c, 0x2a, 0x0e, ++ 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, 0xd0, 0xcb, 0xf9, 0xb7, 0xb6, 0xfd, ++ 0x0b, 0xc9, 0xd2, 0x3c, 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, 0x2c, 0x66, 0xe4, 0x61, ++ 0xf0, 0x17, 0x32, 0x93, 0xc4, 0x86, 0x3e, 0x69, 0xca, 0x67, 0x77, 0x95, 0x46, 0x4d, 0x78, 0x92, ++ 0x3e, 0xb6, 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, 0xc5, 0xba, 0xf8, 0x30, 0x1f, 0x44, ++ 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, 0x92, 0x1b, 0x83, 0xb7, ++ 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, 0x60, 0x16, 0xe5, 0x38, 0x20, 0x8d, 0x04, 0x41, ++ 0xf3, 0x54, 0x10, 0xfd, 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, 0x4a, 0xa6, 0x98, 0xb2, ++ 0x3d, 0xf5, 0xf3, 0xcf, 0xb2, 0xaf, 0x0b, 0x76, 0xdf, 0x1b, 0x39, 0xb3, 0xf4, 0xdb, 0xff, 0x64, ++ 0xc6, 0x2b, 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, 0x57, 0x17, 0x9e, 0xf0, 0x63, 0x97, ++ 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, 0x7a, 0x03, 0xdd, 0x0c, 0x9e, 0xed, 0x4b, 0x21, 0x31, 0x0b, ++ 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, 0xf0, 0x49, 0x21, 0x0a, 0xad, 0xf8, ++ 0x57, 0x0b, 0xf5, 0x36, 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, 0x9f, 0x77, 0xca, 0x2e, ++ 0xac, 0xd5, 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, 0xdc, 0xe6, 0x2c, 0xc2, 0xf5, 0x5c, 0x56, 0xdd, ++ 0xdc, 0xb5, 0xfc, 0x63, 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, 0xf6, 0x16, 0x6e, 0xd5, ++ 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, 0x9c, 0x3d, 0xf2, 0x26, ++ 0xe9, 0xca, 0xff, 0xfe, 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, 0xcf, 0xda, 0x22, 0x40, 0x95, 0xf0, ++ 0x12, 0x14, 0x1f, 0x51, 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, 0xa1, 0x7e, 0x48, 0x6b, 0x09, 0x03, ++ 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, 0x64, 0x38, 0x68, 0x84, 0x9d, 0xba, 0x5b, 0x9f, ++ 0x4d, 0x95, 0x1a, 0x35, 0x42, 0x12, 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, 0xf7, 0x91, 0xc7, 0x6c, ++ 0x83, 0x34, 0xf9, 0x07, 0x72, 0x8a, 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, 0x49, 0xec, 0xa0, 0xba, ++ 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, 0xda, 0xab, 0x23, 0xc7, 0x3c, 0x49, ++ 0x63, 0xf4, 0xe8, 0x30, 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, 0x4f, 0x78, 0xd0, 0xaa, ++ 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, 0x69, 0xb7, 0x6f, 0x99, 0xa4, 0x4e, 0x25, 0x53, 0x4c, 0x59, ++ 0x56, 0x8b, 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, 0x16, 0x61, 0x9b, 0x2e, 0x2b, 0x8f, ++ 0xad, 0x55, 0x0b, 0x02, 0x61, 0xab, 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, 0xf1, 0x05, 0xb7, 0x7c, ++ 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, 0xc1, 0x19, 0x6c, 0x64, 0xb1, 0x3f, 0x24, 0xd4, 0xe5, 0xe0, ++ 0xf2, 0xd4, 0x0e, 0x66, 0x01, 0x58, 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, 0x4e, 0xff, 0x79, 0x13, ++ 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, 0xd3, 0x69, 0x6d, 0xb4, 0xf0, 0x82, 0x1e, 0xc5, ++ 0xc7, 0xab, 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, 0x6d, 0x8e, 0x03, 0x10, 0x9a, 0xa9, 0x82, 0x36, ++ 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, 0x23, 0xf3, 0x68, 0x4a, 0x3c, 0x83, 0x99, 0xe3, 0xba, 0x3e, ++ 0x4c, 0x15, 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, 0x52, 0x27, 0xf3, 0xc8, 0x26, 0xcd, ++ 0x82, 0xb4, 0xe7, 0x9c, 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, 0xe0, 0x08, 0x4d, 0xb5, 0x41, 0x1b, ++ 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, 0x69, 0xa0, 0x8e, 0xac, 0x27, 0x9e, 0xdd, 0xe8, ++ 0xdd, 0x35, 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, 0x47, 0x56, 0xf2, 0x4f, 0x8f, 0x74, ++ 0x26, 0xeb, 0x02, 0x57, 0x81, 0xdf, 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, 0x98, 0x64, 0x13, 0x87, ++ 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, 0x52, 0x86, 0x6a, 0x5d, 0x9b, 0xdd, 0x26, 0x19, 0x74, 0x51, ++ 0x13, 0x94, 0x01, 0xca, 0xa1, 0x8e, 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, 0x4c, 0x32, 0xe8, 0xa2, ++ 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, 0x40, 0xa5, 0x07, 0x91, 0x81, 0xf6, 0xb9, 0x7e, ++ 0x4a, 0x93, 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, 0xeb, 0xdd, 0x25, 0x8d, ++ 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, 0x55, 0xa0, 0x42, 0x5b, ++ 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, 0xe1, 0x63, 0x41, 0x4f, 0xb5, 0xbe, 0x3f, 0x8b, 0xde, 0xa8, ++ 0xdb, 0xb3, 0xa6, 0x24, 0x1d, 0xb7, 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, 0xea, 0x5a, 0x8c, 0x34, ++ 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, 0x43, 0x58, 0x12, 0xe0, 0x80, 0x71, 0x10, 0xc7, ++ 0xee, 0xcc, 0xa5, 0xb9, 0x3d, 0xe6, 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, 0x3e, 0x0c, 0x77, 0x11, ++ 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, 0xbf, 0x84, 0xfc, 0x55, 0xce, 0x6b, 0x54, 0x27, 0xeb, 0xe2, ++ 0x65, 0x72, 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, 0xf1, 0xf8, 0x57, 0x6d, 0xd3, 0xea, ++ 0x9e, 0xac, 0x4c, 0x43, 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, 0x9f, 0x5c, 0x3d, 0x46, 0x4f, 0x19, ++ 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, 0x46, 0x9c, 0x2d, 0x73, 0x83, 0x3b, 0x28, 0xcf, ++ 0xab, 0xd3, 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, 0xe9, 0x10, 0xb4, 0x3c, ++ 0x0f, 0x8c, 0xaa, 0x15, 0x9d, 0x30, 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, 0x3c, 0xc1, 0xe6, 0xa0, ++ 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, 0xfa, 0x6c, 0xe4, 0x89, 0x56, 0xea, 0x7a, 0x53, ++ 0x3a, 0xf3, 0xa9, 0x88, 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, 0xe8, 0x97, 0x1d, 0x85, ++ 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, 0x45, 0x61, 0x38, 0x02, 0x82, 0xbc, 0x81, 0x76, ++ 0xda, 0x33, 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, 0x28, 0x43, 0xee, 0x03, 0x6d, 0x95, ++ 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, 0x75, 0xeb, 0x4f, 0x2a, 0x46, 0xe7, 0x84, 0x28, 0xf1, 0x66, ++ 0xef, 0x4c, 0xbb, 0x22, 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, 0xf4, 0xc8, 0x3a, 0x55, 0x96, 0xb0, ++ 0x14, 0x92, 0x5b, 0x8d, 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, 0x50, 0x7e, 0x0a, 0x43, ++ 0xb0, 0xcd, 0xbe, 0x46, 0xde, 0x7a, 0xdd, 0x45, 0x4c, 0xd7, 0x53, 0x96, 0x85, 0xaf, 0x58, 0xdf, ++ 0x4b, 0x13, 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, 0xef, 0x84, 0xc4, 0x2c, ++ 0x85, 0xb2, 0xbd, 0xdb, 0xfe, 0x2b, 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, 0x51, 0xf9, 0xa3, 0xfa, ++ 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, 0x04, 0x9e, 0x4d, 0x3d, 0xe1, 0xb9, 0x3b, 0xd2, 0x3f, 0x09, ++ 0x0e, 0x0c, 0xb4, 0x8e, 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, 0x38, 0x98, 0x07, 0x01, ++ 0xf5, 0xd2, 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, 0xf6, 0x1e, 0xb0, 0x8e, 0x52, 0xb3, 0x9b, 0xf2, ++ 0x3b, 0x73, 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, 0x02, 0xa1, 0xec, 0xce, 0xfc, 0x24, ++ 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, 0x86, 0xe5, 0x60, 0xd7, ++ 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, 0xf5, 0xe3, 0xa5, 0xff, 0x53, 0x34, 0x32, 0x4b, ++ 0x9f, 0x2c, 0x52, 0xd8, 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, 0x39, 0x1f, 0xae, 0xb8, ++ 0x51, 0x8d, 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, 0x4a, 0xee, 0x79, 0x74, 0x87, 0x62, 0xc9, 0x6e, ++ 0xaa, 0x53, 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, 0xf4, 0x09, 0x17, 0xd0, 0xed, 0x49, 0x55, 0x9d, ++ 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, 0x8d, 0x8c, 0xe1, 0x75, 0x59, 0xf6, 0x5f, 0xdf, 0xd2, 0x6b, ++ 0x9c, 0x6f, 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, 0x37, 0x52, 0x35, 0xf4, 0x4e, 0x98, ++ 0x52, 0xce, 0x93, 0x84, 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, 0x8b, 0x89, 0x29, 0x4e, ++ 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, 0x54, 0x57, 0xe0, 0x9f, 0xeb, 0xd9, 0xe1, 0xa2, 0xb5, 0xbd, ++ 0x0d, 0x4f, 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, 0x22, 0x23, 0x34, 0x73, 0xe7, 0x21, ++ 0xf6, 0x91, 0x76, 0x4f, 0x48, 0x27, 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, 0x5e, 0x58, 0x7b, 0xd2, ++ 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, 0xfc, 0xf9, 0xe3, 0x62, 0xfe, 0xa8, 0xe0, 0x25, 0x1c, 0x04, ++ 0xc3, 0xee, 0x75, 0xd2, 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, 0x8a, 0x0e, 0x80, 0xf7, ++ 0xb3, 0x8e, 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, 0x58, 0x41, 0xaf, 0x9f, 0x89, 0x44, 0xb8, 0xff, ++ 0x48, 0x50, 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, 0xc1, 0x3b, 0xe3, 0x6f, 0x24, 0x0c, ++ 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, 0x1e, 0x13, 0xe7, 0x4c, 0x73, 0x14, 0x5d, 0x12, 0x43, 0xda, ++ 0x7d, 0x2f, 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, 0x1d, 0xb0, 0x37, 0x39, 0xdf, 0x29, ++ 0xd9, 0x70, 0x9a, 0xd1, 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, 0xd4, 0x4a, 0xe2, 0xe8, 0x8d, 0xb5, ++ 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, 0x99, 0x2f, 0x5b, 0xbc, 0xba, 0xee, 0x88, 0xc3, 0x11, 0x46, ++ 0xec, 0x0f, 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, 0x36, 0xbe, 0x76, 0x90, ++ 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, 0xb6, 0xbd, 0xe4, 0xb1, 0x66, 0x65, 0x5c, 0x95, 0xea, 0x63, ++ 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, 0x36, 0x96, 0x50, 0x1d, 0x76, 0x24, 0x30, 0x2a, 0x06, 0x80, ++ 0xf7, 0x11, 0x68, 0xd4, 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, 0x5a, 0x01, 0x9a, 0x73, ++ 0x39, 0xb0, 0x8b, 0xe6, 0xfb, 0xd0, 0x19, 0x04, 0xef, 0x10, 0xaa, 0xaf, 0xe4, 0x7c, 0xfd, 0xa5, ++ 0xc2, 0x6e, 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, 0xc4, 0x0b, 0x8e, 0x57, 0x61, 0x56, ++ 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, 0x68, 0x71, 0xed, 0x07, 0x0d, 0xf1, 0x5b, 0x86, 0x33, 0xca, ++ 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, 0x9e, 0x38, 0x53, 0xe0, 0x63, 0x55, 0x31, 0xad, 0xaf, 0x39, ++ 0x53, 0x4e, 0x8d, 0x1f, 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, 0xd1, 0x7a, 0x8f, 0xd0, 0xc8, 0xef, ++ 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, 0xec, 0xed, 0xbf, 0xde, 0xe5, 0xfb, 0x54, 0x1c, ++ 0xd8, 0xf0, 0x84, 0x4a, 0x5b, 0x06, 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, 0xe6, 0xb1, 0x6c, 0x14, ++ 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, 0x7c, 0xd2, 0x57, 0xce, 0xee, 0xe9, 0x8c, 0x9a, 0xf0, 0xe7, ++ 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, 0x5c, 0xc6, 0x32, 0xe7, 0x97, 0x31, ++ 0x16, 0x51, 0x67, 0x78, 0x6b, 0x9e, 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, 0x58, 0xcc, 0x0b, 0xc2, ++ 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, 0x54, 0x33, 0xfb, 0x98, 0x8d, 0x1d, 0x59, 0x5e, ++ 0x49, 0xd0, 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, 0x95, 0x3c, 0xe7, 0x36, 0xc5, 0xad, ++ 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, 0x59, 0x4b, 0xa2, 0x7b, ++ 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, 0x55, 0xd9, 0x49, 0xb7, 0x33, 0x60, 0x3e, 0x88, ++ }, ++ { /* 9 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x6f, 0x5a, 0x3d, 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, 0xd6, 0x1c, 0x89, 0xf2, ++ 0x02, 0xde, 0xb4, 0x7a, 0xbd, 0x99, 0x1f, 0x95, 0x21, 0x4b, 0x9d, 0x04, 0x6f, 0x38, 0xd1, 0x27, ++ 0x03, 0xb1, 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, 0xd0, 0x8f, 0x32, 0x06, 0xb9, 0x24, 0x58, 0xd5, ++ 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, 0x3e, 0xe9, 0x42, 0x96, 0xf9, 0x08, 0xde, 0x70, 0x61, 0x4e, ++ 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, 0x56, 0x0a, 0x08, 0x6c, 0xe8, 0xbc, ++ 0x06, 0xa1, 0x1f, 0x8e, 0x04, 0x68, 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, 0xb1, 0x48, 0xb0, 0x69, ++ 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, 0x92, 0x19, 0xcb, 0x0e, 0x67, 0x54, 0x39, 0x9b, ++ 0x08, 0xfe, 0x95, 0x2b, 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, 0x7f, 0xe0, 0xc2, 0x9c, ++ 0x09, 0x91, 0xcf, 0x16, 0x0e, 0x8c, 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, 0xa9, 0xfc, 0x4b, 0x6e, ++ 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, 0xac, 0x14, 0x10, 0xd8, 0x13, 0xbb, ++ 0x0b, 0x4f, 0x7b, 0x6c, 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, 0xc6, 0xc4, 0x9a, 0x49, ++ 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, 0xc6, 0x79, 0xc8, 0x18, 0xa1, 0x90, 0xa3, 0xd2, ++ 0x0d, 0xee, 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, 0x37, 0xbd, 0x67, 0x1a, 0x77, 0x8c, 0x2a, 0x20, ++ 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, 0xce, 0xa8, 0x72, 0xf5, ++ 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, 0x16, 0xf6, 0xfa, 0x1e, 0x18, 0xb4, 0xfb, 0x07, ++ 0x10, 0x3f, 0xe9, 0x56, 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, 0xfe, 0x03, 0x47, 0xfb, ++ 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, 0x16, 0x89, 0x3a, 0xd9, 0xcd, 0x22, 0x28, 0x1f, 0xce, 0x09, ++ 0x12, 0xe1, 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, 0xff, 0x24, 0x91, 0x3b, 0x96, 0xdc, ++ 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, 0x47, 0x27, 0x1f, 0x2e, ++ 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, 0x89, 0x8b, 0x9b, 0x28, 0x20, 0x73, 0x26, 0xb5, ++ 0x15, 0x2f, 0x18, 0x9f, 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, 0xf6, 0x6f, 0xaf, 0x47, ++ 0x16, 0x9e, 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, 0xa8, 0xc0, 0x06, 0x2c, 0x4f, 0x4b, 0xf7, 0x92, ++ 0x17, 0xf1, 0xac, 0xe5, 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, 0x99, 0x57, 0x7e, 0x60, ++ 0x18, 0xc1, 0x7c, 0x7d, 0x10, 0x63, 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, 0x81, 0xe3, 0x85, 0x67, ++ 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, 0x6a, 0x98, 0xbe, 0x36, 0xfc, 0x32, 0x57, 0xff, 0x0c, 0x95, ++ 0x1a, 0x1f, 0xc8, 0x07, 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, 0xee, 0xdb, 0x54, 0x40, ++ 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, 0x9f, 0x7d, 0x61, 0x36, 0x38, 0xc7, 0xdd, 0xb2, ++ 0x1c, 0xbe, 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, 0xaa, 0x38, 0x5f, 0x93, 0xe4, 0x29, ++ 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, 0x54, 0x71, 0xfc, 0xa0, 0x05, 0x3a, 0x89, 0x8f, 0x6d, 0xdb, ++ 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, 0x37, 0x3c, 0x30, 0xab, 0x35, 0x0e, ++ 0x1f, 0x0f, 0x39, 0xce, 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, 0xe6, 0xb7, 0xbc, 0xfc, ++ 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, 0x33, 0x44, 0x55, 0x3a, 0xc4, 0x40, 0x3f, 0x06, 0x8e, 0x35, ++ 0x21, 0x11, 0x4b, 0x91, 0x3e, 0x29, 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, 0xe9, 0x1a, 0x07, 0xc7, ++ 0x22, 0xa0, 0xa5, 0xd6, 0x3c, 0x1d, 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, 0x50, 0x3e, 0x5f, 0x12, ++ 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, 0xf6, 0x46, 0x86, 0x22, 0xd6, 0xe0, ++ 0x24, 0x01, 0xba, 0x58, 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, 0xe1, 0x76, 0xef, 0x7b, ++ 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, 0xe6, 0x68, 0x92, 0x4a, 0x37, 0x6a, 0x66, 0x89, ++ 0x26, 0xdf, 0x0e, 0x22, 0x85, 0xec, 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, 0x8e, 0x4e, 0x3e, 0x5c, ++ 0x27, 0xb0, 0x54, 0x1f, 0x3a, 0x41, 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, 0x58, 0x52, 0xb7, 0xae, ++ 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, 0x4f, 0x55, 0xd1, 0xd5, 0xf5, 0x50, 0x40, 0xe6, 0x4c, 0xa9, ++ 0x29, 0xef, 0xde, 0xba, 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, 0x96, 0xfa, 0xc5, 0x5b, ++ 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, 0xf0, 0x9e, 0x68, 0x54, 0x2f, 0xde, 0x9d, 0x8e, ++ 0x2b, 0x31, 0x6a, 0xc0, 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, 0xf9, 0xc2, 0x14, 0x7c, ++ 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, 0x9e, 0x96, 0x2d, 0xe7, ++ 0x2d, 0x90, 0x75, 0x4e, 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, 0xa3, 0x5a, 0x48, 0x8a, 0xa4, 0x15, ++ 0x2e, 0x21, 0x9b, 0x09, 0x34, 0xcd, 0x6e, 0x29, 0xb2, 0x08, 0x91, 0x5c, 0xf1, 0xae, 0xfc, 0xc0, ++ 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, 0x80, 0x82, 0x43, 0xcc, 0x3e, 0x5e, 0x27, 0xb2, 0x75, 0x32, ++ 0x30, 0x41, 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, 0xa6, 0x60, 0xc1, 0x05, 0xc9, 0xce, ++ 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, 0x25, 0xcd, 0x6f, 0xe3, 0x09, 0x62, 0x17, 0x19, 0x40, 0x3c, ++ 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, 0xbf, 0x6c, 0x3b, 0x64, 0xae, 0x3d, 0x18, 0xe9, ++ 0x33, 0xf0, 0x16, 0xbd, 0x22, 0xf2, 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, 0x78, 0x21, 0x91, 0x1b, ++ 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, 0xdc, 0xb1, 0x5f, 0x68, 0x1f, 0x75, 0xa8, 0x80, ++ 0x35, 0x51, 0x09, 0x33, 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, 0xc9, 0x69, 0x21, 0x72, ++ 0x36, 0xe0, 0xe7, 0x74, 0x24, 0xae, 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, 0x70, 0x4d, 0x79, 0xa7, ++ 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, 0x6d, 0x6e, 0xa6, 0x51, 0xf0, 0x55, ++ 0x38, 0xbf, 0x6d, 0xd1, 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, 0xbe, 0xe5, 0x0b, 0x52, ++ 0x39, 0xd0, 0x37, 0xec, 0x2e, 0x4a, 0x59, 0xdc, 0xeb, 0x0c, 0x38, 0x72, 0x68, 0xf9, 0x82, 0xa0, ++ 0x3a, 0x61, 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, 0x3b, 0x83, 0x0a, 0x74, 0xd1, 0xdd, 0xda, 0x75, ++ 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, 0x46, 0x49, 0xca, 0x47, 0xa5, 0x76, 0x07, 0xc1, 0x53, 0x87, ++ 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, 0x58, 0x5e, 0x6e, 0x78, 0x60, 0x95, 0x6a, 0x1c, ++ 0x3d, 0xaf, 0x9c, 0x18, 0x97, 0xbb, 0x67, 0x35, 0xa9, 0x9a, 0xc1, 0x7a, 0xb6, 0x89, 0xe3, 0xee, ++ 0x3e, 0x1e, 0x72, 0x5f, 0x95, 0x8f, 0x96, 0x0b, 0x79, 0x15, 0xf3, 0x7c, 0x0f, 0xad, 0xbb, 0x3b, ++ 0x3f, 0x71, 0x28, 0x62, 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, 0xd9, 0xb1, 0x32, 0xc9, ++ 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, 0x66, 0x88, 0xaa, 0x74, 0x4b, 0x80, 0x7e, 0x0c, 0xdf, 0x6a, ++ 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, 0x5b, 0xb0, 0xe4, 0x82, 0xa8, 0x10, 0x56, 0x98, ++ 0x42, 0x22, 0x96, 0xe1, 0x7c, 0x52, 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, 0x11, 0x34, 0x0e, 0x4d, ++ 0x43, 0x4d, 0xcc, 0xdc, 0xc3, 0xff, 0x97, 0xb6, 0x7a, 0xfb, 0x79, 0x86, 0xc7, 0x28, 0x87, 0xbf, ++ 0x44, 0x83, 0x89, 0x6f, 0x78, 0x3a, 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, 0xa0, 0x7c, 0xbe, 0x24, ++ 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, 0xb6, 0xca, 0x19, 0x26, 0x1d, 0x8a, 0x76, 0x60, 0x37, 0xd6, ++ 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, 0xc9, 0xa9, 0x2f, 0x8c, 0xcf, 0x44, 0x6f, 0x03, ++ 0x47, 0x32, 0x67, 0x28, 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, 0x19, 0x58, 0xe6, 0xf1, ++ 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, 0x2e, 0x9b, 0x7a, 0x90, 0x01, 0xec, 0x1d, 0xf6, ++ 0x49, 0x6d, 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, 0xdf, 0x5f, 0xd5, 0x92, 0xd7, 0xf0, 0x94, 0x04, ++ 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, 0x6e, 0xd4, 0xcc, 0xd1, ++ 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, 0xfe, 0x14, 0x48, 0x96, 0xb8, 0xc8, 0x45, 0x23, ++ 0x4c, 0x7d, 0x1c, 0x44, 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, 0xdf, 0x9c, 0x7c, 0xb8, ++ 0x4d, 0x12, 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, 0x9d, 0xc9, 0x2c, 0x9a, 0x09, 0x80, 0xf5, 0x4a, ++ 0x4e, 0xa3, 0xa8, 0x3e, 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, 0xb0, 0xa4, 0xad, 0x9f, ++ 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, 0x66, 0xb8, 0x24, 0x6d, ++ 0x50, 0xc3, 0xcb, 0xcd, 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, 0x29, 0xa0, 0x80, 0x0f, 0x98, 0x91, ++ 0x51, 0xac, 0x91, 0xf0, 0xdf, 0x24, 0x70, 0x01, 0x90, 0xad, 0x86, 0xa2, 0x56, 0x13, 0x11, 0x63, ++ 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, 0x81, 0x3f, 0x40, 0x22, 0xb4, 0xa4, 0xef, 0x37, 0x49, 0xb6, ++ 0x53, 0x72, 0x25, 0x8a, 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, 0x39, 0x2b, 0xc0, 0x44, ++ 0x54, 0xbc, 0x60, 0x39, 0xd9, 0x78, 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, 0x5e, 0x7f, 0xf9, 0xdf, ++ 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, 0xd2, 0x3b, 0x7f, 0xaa, 0x88, 0x63, 0x70, 0x2d, ++ 0x56, 0x62, 0xd4, 0x43, 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, 0x31, 0x47, 0x28, 0xf8, ++ 0x57, 0x0d, 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, 0xf3, 0x70, 0xe2, 0xae, 0xe7, 0x5b, 0xa1, 0x0a, ++ 0x58, 0x3d, 0x5e, 0xe6, 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, 0xff, 0xef, 0x5a, 0x0d, ++ 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, 0x29, 0xf3, 0xd3, 0xff, ++ 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, 0xfd, 0x2e, 0xc4, 0xcd, 0x85, 0xb4, 0x90, 0xd7, 0x8b, 0x2a, ++ 0x5b, 0x8c, 0xb0, 0xa1, 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, 0x46, 0xcb, 0x02, 0xd8, ++ 0x5c, 0x42, 0xf5, 0x12, 0x68, 0x59, 0xdc, 0x52, 0xa7, 0x10, 0xe1, 0xb8, 0x21, 0x9f, 0x3b, 0x43, ++ 0x5d, 0x2d, 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, 0xf7, 0x83, 0xb2, 0xb1, ++ 0x5e, 0x9c, 0x41, 0x68, 0xd5, 0xc0, 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, 0x4e, 0xa7, 0xea, 0x64, ++ 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, 0xd3, 0xbe, 0x98, 0xbb, 0x63, 0x96, ++ 0x60, 0x82, 0x33, 0x37, 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, 0x41, 0x0a, 0x51, 0x5f, ++ 0x61, 0xed, 0x69, 0x0a, 0xff, 0xe2, 0xbb, 0x67, 0x0e, 0x8a, 0x20, 0xc2, 0x97, 0x16, 0xd8, 0xad, ++ 0x62, 0x5c, 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, 0x12, 0xc4, 0x2e, 0x32, 0x80, 0x78, ++ 0x63, 0x33, 0xdd, 0x70, 0x42, 0x7b, 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, 0xf8, 0x2e, 0x09, 0x8a, ++ 0x64, 0xfd, 0x98, 0xc3, 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, 0x76, 0xc8, 0x9f, 0x7a, 0x30, 0x11, ++ 0x65, 0x92, 0xc2, 0xfe, 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, 0x49, 0x66, 0xb9, 0xe3, ++ 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, 0x74, 0xb0, 0x9c, 0x93, 0xeb, 0xcc, 0xf0, 0x42, 0xe1, 0x36, ++ 0x67, 0x4c, 0x76, 0x84, 0xfb, 0x8a, 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, 0x26, 0x5e, 0x68, 0xc4, ++ 0x68, 0x7c, 0xa6, 0x1c, 0xf1, 0x6e, 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, 0x3e, 0xea, 0x93, 0xc3, ++ 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, 0x11, 0xd2, 0xe8, 0xf6, 0x1a, 0x31, ++ 0x6a, 0xa2, 0x12, 0x66, 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, 0x23, 0xd4, 0x51, 0xd2, 0x42, 0xe4, ++ 0x6b, 0xcd, 0x48, 0x5b, 0xf3, 0x5a, 0xd8, 0xe3, 0xab, 0x2e, 0x8c, 0xd6, 0x87, 0xce, 0xcb, 0x16, ++ 0x6c, 0x03, 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, 0x39, 0x37, 0x47, 0xd8, 0xe0, 0x9a, 0xf2, 0x8d, ++ 0x6d, 0x6c, 0x57, 0xd5, 0xf7, 0x32, 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, 0x36, 0x86, 0x7b, 0x7f, ++ 0x6e, 0xdd, 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, 0xda, 0xdc, 0x8f, 0xa2, 0x23, 0xaa, ++ 0x6f, 0xb2, 0xe3, 0xaf, 0x4a, 0xab, 0xe6, 0x0a, 0xe9, 0xb8, 0x75, 0xde, 0x59, 0xbe, 0xaa, 0x58, ++ 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, 0x34, 0x53, 0xed, 0xe0, 0xbf, 0x09, 0x16, 0xa4, ++ 0x71, 0xd2, 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, 0xc5, 0x97, 0x42, 0xe2, 0x69, 0x15, 0x9f, 0x56, ++ 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, 0xb2, 0x7b, 0x15, 0x18, 0x70, 0xe4, 0xd0, 0x31, 0xc7, 0x83, ++ 0x73, 0x0c, 0x34, 0x26, 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, 0xdf, 0xe6, 0x06, 0x2d, 0x4e, 0x71, ++ 0x74, 0xc2, 0x71, 0x95, 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, 0x14, 0xe8, 0x61, 0x79, 0x77, 0xea, ++ 0x75, 0xad, 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, 0x87, 0x01, 0xbb, 0xea, 0xb7, 0x65, 0xfe, 0x18, ++ 0x76, 0x1c, 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, 0x0e, 0x41, 0xa6, 0xcd, ++ 0x77, 0x73, 0x9f, 0xd2, 0x5a, 0xc8, 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, 0xd8, 0x5d, 0x2f, 0x3f, ++ 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, 0xd1, 0xff, 0xb0, 0xbc, 0xdc, 0xf0, 0xc0, 0xe9, 0xd4, 0x38, ++ 0x79, 0x2c, 0x15, 0x77, 0xef, 0x81, 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, 0x16, 0xf5, 0x5d, 0xca, ++ 0x7a, 0x9d, 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, 0x91, 0xf7, 0x41, 0xf4, 0xaf, 0xd1, 0x05, 0x1f, ++ 0x7b, 0xf2, 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, 0x79, 0xcd, 0x8c, 0xed, ++ 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, 0xef, 0x16, 0xf2, 0x2a, 0x25, 0xf8, 0x1e, 0x99, 0xb5, 0x76, ++ 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, 0x01, 0xbd, 0x03, 0xee, 0x8a, 0xfa, 0xc8, 0x85, 0x3c, 0x84, ++ 0x7e, 0xe2, 0x50, 0xc4, 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, 0x71, 0xa1, 0x64, 0x51, ++ 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, 0x22, 0xa5, 0x17, 0xfe, 0xa7, 0xbd, 0xed, 0xa3, ++ 0x80, 0x3b, 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, 0xfc, 0x18, 0x7d, 0xd4, ++ 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, 0x22, 0x78, 0x66, 0x2c, 0x39, 0xc1, 0x2a, 0x04, 0xf4, 0x26, ++ 0x82, 0xe5, 0xf0, 0x8f, 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, 0x0b, 0xc7, 0x93, 0x20, 0xac, 0xf3, ++ 0x83, 0x8a, 0xaa, 0xb2, 0x43, 0x61, 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, 0x45, 0x3c, 0x25, 0x01, ++ 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, 0xd5, 0x7e, 0x6f, 0xcb, 0x22, 0x68, 0x1c, 0x9a, ++ 0x85, 0x2b, 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, 0xf4, 0x74, 0x95, 0x68, ++ 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, 0xed, 0xaf, 0xf4, 0x35, 0xf2, 0xcf, 0x4d, 0x50, 0xcd, 0xbd, ++ 0x87, 0xf5, 0x01, 0x46, 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, 0x5d, 0xcd, 0x9b, 0x4c, 0x44, 0x4f, ++ 0x88, 0xc5, 0xd1, 0xde, 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, 0xa7, 0xd3, 0x83, 0xf8, 0xbf, 0x48, ++ 0x89, 0xaa, 0x8b, 0xe3, 0x4f, 0xd9, 0x5e, 0x69, 0xe2, 0xc3, 0x08, 0xd1, 0x55, 0xe4, 0x36, 0xba, ++ 0x8a, 0x1b, 0x65, 0xa4, 0x4d, 0xed, 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, 0xec, 0xc0, 0x6e, 0x6f, ++ 0x8b, 0x74, 0x3f, 0x99, 0xf2, 0x40, 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, 0x3a, 0xdc, 0xe7, 0x9d, ++ 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, 0x8e, 0x2b, 0x51, 0x91, 0x5e, 0xdb, 0x5d, 0x88, 0xde, 0x06, ++ 0x8d, 0xd5, 0x20, 0x17, 0xf6, 0x28, 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, 0x8b, 0x94, 0x57, 0xf4, ++ 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, 0x70, 0xda, 0xc3, 0xdf, 0x32, 0xb0, 0x0f, 0x21, ++ 0x8f, 0x0b, 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, 0xe4, 0xac, 0x86, 0xd3, ++ 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, 0x02, 0x1b, 0x3a, 0x2f, ++ 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, 0x5b, 0xe1, 0xd4, 0x07, 0xb3, 0xdd, ++ 0x92, 0xda, 0x19, 0xd9, 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, 0x6d, 0x23, 0xeb, 0x08, ++ 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, 0x8c, 0x7a, 0xc6, 0xe5, 0xbb, 0x3f, 0x62, 0xfa, ++ 0x94, 0x7b, 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, 0x1e, 0x63, 0x0d, 0xeb, 0xdc, 0x6b, 0x5b, 0x61, ++ 0x95, 0x14, 0x5c, 0x6a, 0xe6, 0x4b, 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, 0x0a, 0x77, 0xd2, 0x93, ++ 0x96, 0xa5, 0xb2, 0x2d, 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, 0x90, 0xef, 0xb3, 0x53, 0x8a, 0x46, ++ 0x97, 0xca, 0xe8, 0x10, 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, 0x65, 0x4f, 0x03, 0xb4, ++ 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, 0xd8, 0x1a, 0xc5, 0xf3, 0x7d, 0xfb, 0xf8, 0xb3, ++ 0x99, 0x95, 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, 0x29, 0xde, 0x6a, 0xf1, 0xab, 0xe7, 0x71, 0x41, ++ 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, 0x57, 0x75, 0xf9, 0x51, 0x58, 0xf7, 0x12, 0xc3, 0x29, 0x94, ++ 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, 0xf7, 0xf5, 0xc4, 0xdf, 0xa0, 0x66, ++ 0x9c, 0x85, 0x93, 0x7c, 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, 0xa3, 0x8b, 0x99, 0xfd, ++ 0x9d, 0xea, 0xc9, 0x41, 0x57, 0x6a, 0x98, 0xa2, 0x6b, 0x48, 0x93, 0xf9, 0x75, 0x97, 0x10, 0x0f, ++ 0x9e, 0x5b, 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, 0xa1, 0xff, 0xcc, 0xb3, 0x48, 0xda, ++ 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, 0x1a, 0xaf, 0xc1, 0x28, ++ 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, 0xc2, 0xd2, 0x52, 0x83, 0xc3, 0x1e, 0xf3, 0xe1, ++ 0xa1, 0x2a, 0x0f, 0x64, 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, 0x15, 0x02, 0x7a, 0x13, ++ 0xa2, 0x9b, 0xe1, 0x23, 0x7d, 0x48, 0xe0, 0x02, 0xe3, 0x99, 0xcf, 0x87, 0xac, 0x26, 0x22, 0xc6, ++ 0xa3, 0xf4, 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, 0x60, 0x85, 0x7a, 0x3a, 0xab, 0x34, ++ 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, 0xc1, 0x7e, 0x80, 0x44, 0xab, 0x8b, 0x1d, 0x6e, 0x92, 0xaf, ++ 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, 0x04, 0x89, 0xcb, 0x72, 0x1b, 0x5d, ++ 0xa6, 0xe4, 0x4a, 0xd7, 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, 0x72, 0x56, 0x43, 0x88, ++ 0xa7, 0x8b, 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, 0x50, 0xcb, 0x99, 0x8d, 0xa4, 0x4a, 0xca, 0x7a, ++ 0xa8, 0xbb, 0xc0, 0x72, 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, 0xbc, 0xfe, 0x31, 0x7d, ++ 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, 0x6a, 0xe2, 0xb8, 0x8f, ++ 0xaa, 0x65, 0x74, 0x08, 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, 0xfe, 0x97, 0xd3, 0xc6, 0xe0, 0x5a, ++ 0xab, 0x0a, 0x2e, 0x35, 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, 0x51, 0x95, 0x05, 0xda, 0x69, 0xa8, ++ 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, 0x04, 0xab, 0x9a, 0x9b, 0x62, 0x8e, 0x50, 0x33, ++ 0xad, 0xab, 0x31, 0xbb, 0x77, 0xac, 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, 0xb4, 0x92, 0xd9, 0xc1, ++ 0xae, 0x1a, 0xdf, 0xfc, 0x75, 0x98, 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, 0x0d, 0xb6, 0x81, 0x14, ++ 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, 0xa8, 0x9d, 0xdb, 0xaa, 0x08, 0xe6, ++ 0xb0, 0x7a, 0xbc, 0x0f, 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, 0x3d, 0x1d, 0xb4, 0x1a, ++ 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, 0xe9, 0x1e, 0xf8, 0x0b, 0x9f, 0xa1, 0xeb, 0x01, 0x3d, 0xe8, ++ 0xb2, 0xa4, 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, 0xad, 0xa7, 0x52, 0x25, 0x65, 0x3d, ++ 0xb3, 0xcb, 0x52, 0x48, 0x63, 0xa7, 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, 0x84, 0x39, 0xec, 0xcf, ++ 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, 0x39, 0x5c, 0x4b, 0x59, 0xc9, 0xab, 0xe3, 0x6d, 0xd5, 0x54, ++ 0xb5, 0x6a, 0x4d, 0xc6, 0x67, 0xcf, 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, 0x35, 0x71, 0x5c, 0xa6, ++ 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, 0x6a, 0x12, 0x54, 0xaf, 0x8c, 0x55, 0x04, 0x73, ++ 0xb7, 0xb4, 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, 0x9b, 0xd6, 0xfb, 0xad, 0x5a, 0x49, 0x8d, 0x81, ++ 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, 0x7b, 0xa4, 0x8d, 0x20, 0x01, 0xb3, 0x42, 0xfd, 0x76, 0x86, ++ 0xb9, 0xeb, 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, 0xae, 0xb1, 0x94, 0xe1, 0xff, 0x74, ++ 0xba, 0x5a, 0x9d, 0x5e, 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, 0x9c, 0xb7, 0x2d, 0xc5, 0xa7, 0xa1, ++ 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, 0x5d, 0xaf, 0x33, 0xb5, 0xfb, 0xd9, 0x2e, 0x53, ++ 0xbc, 0xfb, 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, 0xf8, 0xbb, 0x9c, 0x8d, 0x17, 0xc8, ++ 0xbd, 0x94, 0xd8, 0xed, 0xd6, 0xee, 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, 0x4a, 0x91, 0x9e, 0x3a, ++ 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, 0x5a, 0xd8, 0xee, 0xfd, 0x65, 0xbf, 0xf3, 0xb5, 0xc6, 0xef, ++ 0xbf, 0x4a, 0x6c, 0x97, 0x6b, 0x77, 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, 0x25, 0xa9, 0x4f, 0x1d, ++ 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, 0x3d, 0x9c, 0xdd, 0x43, 0x82, 0x14, 0xa2, 0xbe, ++ 0xc1, 0xa8, 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, 0x54, 0x08, 0x2b, 0x4c, ++ 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, 0xed, 0x2c, 0x73, 0x99, ++ 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, 0x5b, 0x65, 0xed, 0x13, 0xef, 0x45, 0x3b, 0x30, 0xfa, 0x6b, ++ 0xc4, 0xb8, 0xcd, 0x9a, 0x39, 0x6f, 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, 0x5c, 0x64, 0xc3, 0xf0, ++ 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, 0x8e, 0xce, 0x8b, 0x49, 0x8a, 0x78, 0x4a, 0x02, ++ 0xc6, 0x66, 0x79, 0xe0, 0x84, 0xf6, 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, 0x33, 0x5c, 0x12, 0xd7, ++ 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, 0x65, 0x8c, 0xaf, 0x85, 0x16, 0x4d, 0xe5, 0x40, 0x9b, 0x25, ++ 0xc8, 0x39, 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, 0xec, 0x53, 0xfd, 0xf4, 0x60, 0x22, ++ 0xc9, 0x56, 0xa9, 0x78, 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, 0x43, 0x51, 0x2b, 0xe8, 0xe9, 0xd0, ++ 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, 0x98, 0x38, 0x71, 0x57, 0x92, 0xcc, 0xb1, 0x05, ++ 0xcb, 0x88, 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, 0x44, 0xd0, 0x38, 0xf7, ++ 0xcc, 0x46, 0x58, 0xb1, 0x88, 0x4e, 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, 0x23, 0x84, 0x01, 0x6c, ++ 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, 0x0a, 0x21, 0xba, 0x59, 0xf5, 0x98, 0x88, 0x9e, ++ 0xce, 0x98, 0xec, 0xcb, 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, 0x4c, 0xbc, 0xd0, 0x4b, ++ 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, 0x2b, 0x6a, 0x27, 0x5d, 0x9a, 0xa0, 0x59, 0xb9, ++ 0xd0, 0xf8, 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, 0xbf, 0x63, 0x7c, 0x17, 0xe5, 0x45, ++ 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, 0xbc, 0xd2, 0x07, 0x45, 0x10, 0x61, 0xaa, 0x0b, 0x6c, 0xb7, ++ 0xd2, 0x26, 0x3b, 0x42, 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, 0x22, 0x67, 0x13, 0x2f, 0x34, 0x62, ++ 0xd3, 0x49, 0x61, 0x7f, 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, 0xc5, 0x33, 0xbd, 0x90, ++ 0xd4, 0x87, 0x24, 0xcc, 0x98, 0x2d, 0x6c, 0x90, 0xb4, 0x17, 0x46, 0x6b, 0xa2, 0x67, 0x84, 0x0b, ++ 0xd5, 0xe8, 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, 0x74, 0x7b, 0x0d, 0xf9, ++ 0xd6, 0x59, 0x90, 0xb6, 0x25, 0xb4, 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, 0xcd, 0x5f, 0x55, 0x2c, ++ 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, 0x9d, 0xae, 0x64, 0x98, 0x74, 0x6d, 0x1b, 0x43, 0xdc, 0xde, ++ 0xd8, 0x06, 0x1a, 0x13, 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, 0x03, 0xf7, 0x27, 0xd9, ++ 0xd9, 0x69, 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, 0x83, 0xaa, 0x21, 0x71, 0xd5, 0xeb, 0xae, 0x2b, ++ 0xda, 0xd8, 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, 0x13, 0x77, 0x6c, 0xcf, 0xf6, 0xfe, ++ 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, 0xba, 0xd3, 0x7f, 0x0c, ++ 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, 0x30, 0xf8, 0x77, 0x7b, 0xdd, 0x87, 0x46, 0x97, ++ 0xdd, 0x16, 0xeb, 0xda, 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, 0x0b, 0x9b, 0xcf, 0x65, ++ 0xde, 0xa7, 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, 0x11, 0xb3, 0xea, 0x7f, 0xb2, 0xbf, 0x97, 0xb0, ++ 0xdf, 0xc8, 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, 0xe0, 0x77, 0x45, 0x7d, 0x64, 0xa3, 0x1e, 0x42, ++ 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, 0x99, 0x1f, 0x68, 0xa6, 0x19, 0x03, 0xbd, 0x12, 0x2c, 0x8b, ++ 0xe1, 0xd6, 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, 0xb6, 0x01, 0x6b, 0x0e, 0xa5, 0x79, ++ 0xe2, 0x67, 0xc3, 0xb8, 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, 0xd2, 0x2a, 0xfd, 0xac, ++ 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, 0x68, 0x21, 0xb8, 0x29, 0x2b, 0x05, 0x04, 0x36, 0x74, 0x5e, ++ 0xe4, 0xc6, 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, 0xe0, 0x0b, 0x63, 0x62, 0x4d, 0xc5, ++ 0xe5, 0xa9, 0x86, 0x0b, 0x07, 0x46, 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, 0xb5, 0x7e, 0xc4, 0x37, ++ 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, 0xb8, 0x63, 0x0b, 0x7b, 0x7d, 0x0f, 0x0c, 0x5a, 0x9c, 0xe2, ++ 0xe7, 0x77, 0x32, 0x71, 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, 0xda, 0x46, 0x15, 0x10, ++ 0xe8, 0x47, 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, 0xec, 0x49, 0x28, 0x13, 0xc2, 0xf2, 0xee, 0x17, ++ 0xe9, 0x28, 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, 0x87, 0x11, 0x14, 0xee, 0x67, 0xe5, ++ 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, 0xfa, 0x9b, 0xcd, 0x02, 0xb5, 0x17, 0xad, 0xca, 0x3f, 0x30, ++ 0xeb, 0xf6, 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, 0x1a, 0x15, 0x7b, 0xd6, 0xb6, 0xc2, ++ 0xec, 0x38, 0x49, 0x1d, 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, 0xd1, 0x1b, 0x1c, 0x82, 0x8f, 0x59, ++ 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, 0x35, 0x4c, 0x5f, 0x1b, 0x7e, 0x19, 0xca, 0x9e, 0x06, 0xab, ++ 0xee, 0xe6, 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, 0x73, 0xba, 0x5e, 0x7e, ++ 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, 0x2a, 0xd9, 0x7e, 0x50, 0xe3, 0x1d, 0xa5, 0xa6, 0xd7, 0x8c, ++ 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, 0x61, 0x3d, 0xa3, 0xbb, 0x7b, 0x23, 0x43, 0x11, 0x6b, 0x70, ++ 0xf1, 0xe9, 0xc4, 0xa9, 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, 0x95, 0x0d, 0xe2, 0x82, ++ 0xf2, 0x58, 0x2a, 0xee, 0x1d, 0xc1, 0x7e, 0xa8, 0x82, 0xf0, 0xe6, 0x27, 0x2c, 0x29, 0xba, 0x57, ++ 0xf3, 0x37, 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, 0x49, 0x25, 0xfa, 0x35, 0x33, 0xa5, ++ 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, 0x5f, 0xd4, 0xe1, 0x2d, 0x82, 0x2b, 0x9d, 0x61, 0x0a, 0x3e, ++ 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, 0xb1, 0x7f, 0x10, 0xe9, 0x2d, 0x29, 0x4b, 0x7d, 0x83, 0xcc, ++ 0xf6, 0x27, 0x81, 0x1a, 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, 0x1f, 0x2f, 0xf2, 0x59, 0xdb, 0x19, ++ 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, 0x31, 0xa2, 0xb0, 0x2d, 0x24, 0x45, 0x52, 0xeb, ++ 0xf8, 0x78, 0x0b, 0xbf, 0x11, 0x79, 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, 0x3c, 0xf1, 0xa9, 0xec, ++ 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, 0xf3, 0x87, 0xd6, 0x90, 0xe5, 0x31, 0xea, 0xed, 0x20, 0x1e, ++ 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, 0xd7, 0x37, 0x53, 0xc9, 0x78, 0xcb, ++ 0xfb, 0xc9, 0xe5, 0xf8, 0x13, 0x4d, 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, 0x85, 0xd5, 0xf1, 0x39, ++ 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, 0x65, 0xc2, 0xb3, 0x3b, 0xe2, 0x81, 0xc8, 0xa2, ++ 0xfd, 0x68, 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, 0x1c, 0x39, 0x34, 0x9d, 0x41, 0x50, ++ 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, 0x8d, 0xb9, 0x19, 0x85, ++ 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, 0xb5, 0x4d, 0x81, 0x3d, 0x5b, 0xa5, 0x90, 0x77, ++ }, ++ { /* 10 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xc0, 0x77, 0x44, 0x94, 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, 0x11, 0x43, 0x48, 0x8e, ++ 0x43, 0xee, 0x88, 0xeb, 0xc0, 0xf8, 0x24, 0xd9, 0x5c, 0x5a, 0xbb, 0x15, 0x22, 0x86, 0x90, 0xdf, ++ 0x83, 0x99, 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, 0x72, 0x77, 0x07, 0xfe, 0x33, 0xc5, 0xd8, 0x51, ++ 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, 0x48, 0x71, 0xb8, 0xb4, 0xb5, 0x2a, 0x44, 0xcf, 0xe3, 0x7d, ++ 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, 0x09, 0xc1, 0x55, 0x8c, 0xab, 0xf3, ++ 0xc5, 0xf1, 0x5b, 0xfe, 0x83, 0xcb, 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, 0x66, 0x49, 0x73, 0xa2, ++ 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, 0xca, 0xc3, 0xb2, 0xd4, 0x77, 0x0a, 0x3b, 0x2c, ++ 0xcf, 0x3e, 0x65, 0x2a, 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, 0x88, 0x5d, 0x05, 0xfa, ++ 0x0f, 0x49, 0x21, 0xbe, 0xe6, 0x1a, 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, 0x99, 0x1e, 0x4d, 0x74, ++ 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, 0x12, 0x41, 0xaa, 0xdb, 0x95, 0x25, ++ 0x4c, 0xa7, 0xa9, 0x55, 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, 0xbb, 0x98, 0xdd, 0xab, ++ 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, 0x0b, 0x1f, 0x1c, 0x7e, 0xcc, 0x92, 0xe6, 0x87, ++ 0x89, 0x56, 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, 0x25, 0x32, 0xa0, 0x95, 0xdd, 0xd1, 0xae, 0x09, ++ 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, 0xee, 0x14, 0x76, 0x58, ++ 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, 0x79, 0x68, 0x1b, 0x80, 0xff, 0x57, 0x3e, 0xd6, ++ 0x5d, 0x7c, 0xca, 0x54, 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, 0xd3, 0xba, 0x0a, 0x37, ++ 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, 0xf1, 0x8a, 0x8b, 0xb8, 0x2d, 0x43, 0xc2, 0xf9, 0x42, 0xb9, ++ 0x1e, 0x92, 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, 0x2a, 0xbd, 0xf1, 0x3c, 0x9a, 0xe8, ++ 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, 0xe0, 0x7f, 0xd2, 0x66, ++ 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, 0x1d, 0x21, 0x24, 0x82, 0x97, 0x75, 0xe9, 0x4a, ++ 0x1b, 0x14, 0x5d, 0xd5, 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, 0x86, 0x36, 0xa1, 0xc4, ++ 0x98, 0x8d, 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, 0x41, 0x7b, 0x9f, 0x97, 0xb5, 0xf3, 0x79, 0x95, ++ 0x58, 0xfa, 0xd5, 0x3e, 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, 0xa4, 0xb0, 0x31, 0x1b, ++ 0x92, 0x42, 0xaf, 0x7e, 0x49, 0xaa, 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, 0x5b, 0xe7, 0x0f, 0xcd, ++ 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, 0x61, 0x68, 0x38, 0x13, 0x84, 0x17, 0x4a, 0xa4, 0x47, 0x43, ++ 0xd1, 0xac, 0x27, 0x95, 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, 0x79, 0x61, 0x9f, 0x12, ++ 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, 0x64, 0x49, 0x3f, 0x02, 0x68, 0x22, 0xd7, 0x9c, ++ 0x14, 0x5d, 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, 0x8d, 0xd6, 0x1f, 0x28, 0xec, 0xb0, ++ 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, 0x29, 0x19, 0x80, 0xa7, 0x31, 0x3d, 0x0e, 0x6b, 0xa4, 0x3e, ++ 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, 0x36, 0xc3, 0x3d, 0xae, 0x7c, 0x6f, ++ 0x97, 0xc4, 0xb0, 0x14, 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, 0x2c, 0xed, 0x34, 0xe1, ++ 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, 0x05, 0x0e, 0x89, 0xe9, 0xe1, 0x93, 0x65, 0xb7, 0x14, 0x6e, ++ 0x7a, 0x8f, 0x13, 0x3c, 0x3d, 0x27, 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, 0x74, 0xf4, 0x5c, 0xe0, ++ 0xf9, 0x16, 0xdf, 0x43, 0x9d, 0xa3, 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, 0x47, 0x31, 0x84, 0xb1, ++ 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, 0xe6, 0x6d, 0x56, 0x72, 0xcc, 0x3f, ++ 0x3c, 0xe7, 0x84, 0xbd, 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, 0x21, 0x78, 0xf7, 0x13, ++ 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, 0x1f, 0x70, 0xe8, 0x52, 0x30, 0x3b, 0xbf, 0x9d, ++ 0x7f, 0x09, 0x0c, 0x56, 0xde, 0x90, 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, 0x03, 0xfe, 0x67, 0xcc, ++ 0xbf, 0x7e, 0x48, 0xc2, 0xbe, 0xec, 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, 0x12, 0xbd, 0x2f, 0x42, ++ 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, 0x95, 0xec, 0x3a, 0x42, 0x48, 0xc7, 0xed, 0xea, 0x11, 0x94, ++ 0xb5, 0xb1, 0x76, 0x16, 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, 0xfc, 0xa9, 0x59, 0x1a, ++ 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, 0x66, 0x18, 0xf3, 0xd2, 0xcf, 0x6c, 0x81, 0x4b, ++ 0xf6, 0x5f, 0xfe, 0xfd, 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, 0xde, 0x2f, 0xc9, 0xc5, ++ 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, 0xa9, 0x25, 0xf2, 0xe9, ++ 0x33, 0xae, 0xa5, 0x03, 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, 0x41, 0x06, 0xb8, 0x66, 0xba, 0x67, ++ 0xb0, 0x37, 0x69, 0x7c, 0x58, 0xf6, 0xf9, 0x44, 0xde, 0xac, 0x46, 0xf8, 0x8b, 0xa3, 0x62, 0x36, ++ 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, 0xeb, 0xc9, 0xf0, 0x81, 0xfa, 0x13, 0x9a, 0xe0, 0x2a, 0xb8, ++ 0xe7, 0x84, 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, 0x70, 0x3b, 0xb6, 0x0d, 0x1e, 0x59, ++ 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, 0xf4, 0x84, 0x02, 0x51, 0xcc, 0xd0, 0xa7, 0x4e, 0x56, 0xd7, ++ 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, 0x70, 0x26, 0xcb, 0x2e, 0x94, 0x8b, 0x8e, 0x86, ++ 0x64, 0x1d, 0x51, 0x83, 0x32, 0x13, 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, 0x85, 0xc8, 0xc6, 0x08, ++ 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, 0x94, 0xc8, 0xc5, 0x11, 0xf2, 0xc2, 0xfd, 0x24, ++ 0xa1, 0xec, 0x0a, 0x7d, 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, 0xe3, 0x81, 0xb5, 0xaa, ++ 0x22, 0x75, 0xc6, 0x02, 0x11, 0x5c, 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, 0xd0, 0x44, 0x6d, 0xfb, ++ 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, 0xc2, 0xef, 0xc1, 0x07, 0x25, 0x75, ++ 0x28, 0xba, 0xf8, 0xd6, 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, 0x3e, 0x50, 0x1b, 0xa3, ++ 0xe8, 0xcd, 0xbc, 0x42, 0x74, 0x8d, 0x64, 0x66, 0xb1, 0xfa, 0x65, 0x84, 0x2f, 0x13, 0x53, 0x2d, ++ 0x6b, 0x54, 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, 0xc3, 0x8d, 0x62, 0x7a, 0x1c, 0xd6, 0x8b, 0x7c, ++ 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, 0x40, 0xbf, 0xed, 0xa0, 0xde, 0x91, 0x0d, 0x95, 0xc3, 0xf2, ++ 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, 0x27, 0x63, 0x6c, 0x45, 0x7a, 0x9f, 0xf8, 0xde, ++ 0x6e, 0xd2, 0x6f, 0x57, 0x37, 0xbe, 0x2c, 0x17, 0x09, 0x4e, 0xd0, 0xae, 0x6b, 0xdc, 0xb0, 0x50, ++ 0xed, 0x4b, 0xa3, 0x28, 0x97, 0x3a, 0x1a, 0x43, 0x7b, 0x39, 0xd7, 0x50, 0x58, 0x19, 0x68, 0x01, ++ 0x2d, 0x3c, 0xe7, 0xbc, 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, 0x49, 0x5a, 0x20, 0x8f, ++ 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, 0x0a, 0x1c, 0xd1, 0x11, 0x01, 0xe5, 0xca, 0xad, 0x28, 0xdc, ++ 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, 0xff, 0x3c, 0xbd, 0x0e, 0xdb, 0xee, 0x60, 0x52, ++ 0xf4, 0xdd, 0x26, 0x78, 0x7a, 0x4e, 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, 0xe8, 0x2b, 0xb8, 0x03, ++ 0x34, 0xaa, 0x62, 0xec, 0x1a, 0x32, 0x3c, 0x48, 0xa3, 0x66, 0x06, 0x1b, 0xf9, 0x68, 0xf0, 0x8d, ++ 0x31, 0x2c, 0x7d, 0x86, 0xf9, 0x85, 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, 0x8e, 0x62, 0xcb, 0xa1, ++ 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, 0x50, 0xe0, 0x47, 0x88, 0x08, 0x24, 0x9f, 0x21, 0x83, 0x2f, ++ 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, 0x35, 0xff, 0x0f, 0xda, 0xac, 0xe4, 0x5b, 0x7e, ++ 0xb2, 0xb5, 0xb1, 0xf9, 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, 0xbd, 0xa7, 0x13, 0xf0, ++ 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, 0x62, 0xba, 0xa8, 0xb1, 0x42, 0xf0, 0x2d, 0x26, ++ 0xb8, 0x7a, 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, 0x4c, 0x97, 0x14, 0x5a, 0x53, 0xb3, 0x65, 0xa8, ++ 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, 0x60, 0x76, 0xbd, 0xf9, ++ 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, 0x10, 0xcd, 0xaf, 0x4f, 0x71, 0x35, 0xf5, 0x77, ++ 0xfe, 0x12, 0x18, 0xac, 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, 0x06, 0x3f, 0xce, 0x5b, ++ 0x3e, 0x65, 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, 0xf4, 0x23, 0xa1, 0x70, 0x17, 0x7c, 0x86, 0xd5, ++ 0xbd, 0xfc, 0x90, 0x47, 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, 0x24, 0xb9, 0x5e, 0x84, ++ 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, 0x35, 0xfa, 0x16, 0x0a, ++ 0xea, 0x4f, 0x64, 0xc7, 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, 0x90, 0x4d, 0x19, 0x17, 0x22, 0xeb, ++ 0x2a, 0x38, 0x20, 0x53, 0x15, 0x06, 0xfb, 0x96, 0x5a, 0xa9, 0x2c, 0xa6, 0x08, 0x54, 0x6a, 0x65, ++ 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, 0xcd, 0xc2, 0x28, 0xde, 0x2b, 0x58, 0x3b, 0x91, 0xb2, 0x34, ++ 0x69, 0xd6, 0xa8, 0xb8, 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, 0x2a, 0xd2, 0xfa, 0xba, ++ 0x6c, 0x50, 0xb7, 0xd2, 0x36, 0x49, 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, 0x5d, 0xd8, 0xc1, 0x96, ++ 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, 0xe2, 0x1d, 0x99, 0x8c, 0x4c, 0x9b, 0x89, 0x18, ++ 0x2f, 0xbe, 0x3f, 0x39, 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, 0x7f, 0x5e, 0x51, 0x49, ++ 0xef, 0xc9, 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, 0xbe, 0x47, 0x22, 0x99, 0x6e, 0x1d, 0x19, 0xc7, ++ 0x25, 0x71, 0x01, 0xed, 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, 0x91, 0x4a, 0x27, 0x11, ++ 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, 0x80, 0x09, 0x6f, 0x9f, ++ 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, 0x5d, 0x20, 0x9b, 0x75, 0x82, 0x0c, 0xb3, 0xcc, 0xb7, 0xce, ++ 0xa6, 0xe8, 0xcd, 0x92, 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, 0xa2, 0x8f, 0xff, 0x40, ++ 0xa3, 0x6e, 0xd2, 0xf8, 0xb0, 0x2f, 0x31, 0x88, 0x7f, 0x9b, 0x8c, 0x33, 0xd5, 0x85, 0xc4, 0x6c, ++ 0x63, 0x19, 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, 0xc4, 0xc6, 0x8c, 0xe2, ++ 0xe0, 0x80, 0x5a, 0x13, 0x70, 0xd7, 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, 0xf7, 0x03, 0x54, 0xb3, ++ 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, 0x8b, 0xcd, 0xe6, 0x40, 0x1c, 0x3d, ++ 0x0d, 0xcb, 0xf9, 0x3b, 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, 0xaf, 0x1a, 0x3c, 0xb2, ++ 0xcd, 0xbc, 0xbd, 0xaf, 0x87, 0x91, 0x1d, 0x9f, 0x76, 0xd5, 0x5c, 0x9d, 0xbe, 0x59, 0x74, 0x3c, ++ 0x4e, 0x25, 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, 0x5b, 0x63, 0x8d, 0x9c, 0xac, 0x6d, ++ 0x8e, 0x52, 0x35, 0x44, 0x47, 0x69, 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, 0x9c, 0xdf, 0xe4, 0xe3, ++ 0x8b, 0xd4, 0x2a, 0x2e, 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, 0x55, 0x5c, 0xeb, 0xd5, 0xdf, 0xcf, ++ 0x4b, 0xa3, 0x6e, 0xba, 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, 0xfa, 0x96, 0x97, 0x41, ++ 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, 0x63, 0xba, 0xbc, 0x16, 0xee, 0x49, 0xc9, 0x53, 0x4f, 0x10, ++ 0x08, 0x4d, 0xe6, 0x51, 0x04, 0x5a, 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, 0xd8, 0x10, 0x07, 0x9e, ++ 0xc2, 0xf5, 0x9c, 0x11, 0x61, 0x8b, 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, 0x27, 0x47, 0x39, 0x48, ++ 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, 0xf5, 0xc9, 0x36, 0x04, 0x71, 0xc6, ++ 0x81, 0x1b, 0x14, 0xfa, 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, 0xf2, 0x37, 0x05, 0xc1, 0xa9, 0x97, ++ 0x41, 0x6c, 0x50, 0x6e, 0xc1, 0x0f, 0xa9, 0xa4, 0x99, 0x24, 0x4e, 0xdc, 0x14, 0x82, 0xe1, 0x19, ++ 0x44, 0xea, 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, 0x53, 0xe7, 0xfc, 0x08, 0x63, 0x88, 0xda, 0x35, ++ 0x84, 0x9d, 0x0b, 0x90, 0x42, 0xc4, 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, 0x72, 0xcb, 0x92, 0xbb, ++ 0x07, 0x04, 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, 0x47, 0x1d, 0x41, 0x0e, 0x4a, 0xea, ++ 0xc7, 0x73, 0x83, 0x7b, 0x82, 0x3c, 0xe1, 0xd5, 0x21, 0x90, 0xfb, 0xf6, 0x50, 0x4d, 0x02, 0x64, ++ 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, 0xfd, 0x6d, 0x71, 0xde, 0x7c, 0xa0, 0x36, 0x85, ++ 0x90, 0xc0, 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, 0xd3, 0x40, 0xcd, 0x35, 0x6d, 0xe3, 0x7e, 0x0b, ++ 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, 0xc8, 0xcc, 0xa1, 0x37, 0xca, 0xcb, 0x5e, 0x26, 0xa6, 0x5a, ++ 0xd3, 0x2e, 0xff, 0x10, 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, 0x76, 0x20, 0x4f, 0x65, 0xee, 0xd4, ++ 0xd6, 0xa8, 0xe0, 0x7a, 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, 0xc4, 0xf4, 0x38, 0x6f, 0xd5, 0xf8, ++ 0x16, 0xdf, 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, 0x6b, 0xf4, 0x78, 0x1f, 0x29, 0x2c, 0x9d, 0x76, ++ 0x95, 0x46, 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, 0x1a, 0xe9, 0x45, 0x27, ++ 0x55, 0x31, 0x2c, 0x05, 0xcb, 0x96, 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, 0x0b, 0xaa, 0x0d, 0xa9, ++ 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, 0x7c, 0xf7, 0x4e, 0xc6, 0xd8, 0x8a, 0xf4, 0xfd, 0x33, 0x7f, ++ 0x5f, 0xfe, 0x12, 0xd1, 0xce, 0x3b, 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, 0xe5, 0xbe, 0x7b, 0xf1, ++ 0xdc, 0x67, 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, 0x12, 0x9c, 0x63, 0x9f, 0xd6, 0x7b, 0xa3, 0xa0, ++ 0x1c, 0x10, 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, 0xc7, 0x38, 0xeb, 0x2e, ++ 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, 0x34, 0x86, 0xf6, 0x72, 0x6d, 0xa0, 0xb0, 0x32, 0xd0, 0x02, ++ 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, 0x26, 0x0b, 0xd8, 0x5f, 0xd1, 0x4b, 0xa1, 0x71, 0x98, 0x8c, ++ 0x5a, 0x78, 0x0d, 0xbb, 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, 0x92, 0xb4, 0x40, 0xdd, ++ 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, 0x84, 0x05, 0x6a, 0x5e, 0x83, 0xf7, 0x08, 0x53, ++ 0xad, 0x66, 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, 0x57, 0x99, 0x50, 0x7b, ++ 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, 0x06, 0xb5, 0x4f, 0x0f, 0xbe, 0xe2, 0x46, 0xda, 0x18, 0xf5, ++ 0xee, 0x88, 0x17, 0x0e, 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, 0xb9, 0x1c, 0x75, 0x1f, 0xc0, 0xa4, ++ 0x2e, 0xff, 0x53, 0x9a, 0x17, 0x2b, 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, 0x64, 0x5c, 0x88, 0x2a, ++ 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, 0xd9, 0x96, 0xb7, 0x23, 0x13, 0x56, 0xb3, 0x06, ++ 0xeb, 0x0e, 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, 0x02, 0x15, 0xfb, 0x88, ++ 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, 0x78, 0x90, 0x85, 0xcc, 0x0c, 0x36, 0x31, 0xd0, 0x23, 0xd9, ++ 0xa8, 0xe0, 0x80, 0x8f, 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, 0xb0, 0xdd, 0x20, 0x93, 0x6b, 0x57, ++ 0x62, 0x58, 0xfa, 0xcf, 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, 0xab, 0x5d, 0xdf, 0xc4, 0x55, 0x81, ++ 0xa2, 0x2f, 0xbe, 0x5b, 0x51, 0xb5, 0x96, 0x57, 0xfc, 0xa4, 0x17, 0xb6, 0xce, 0x87, 0x1d, 0x0f, ++ 0x21, 0xb6, 0x72, 0x24, 0xf1, 0x31, 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, 0xfd, 0x42, 0xc5, 0x5e, ++ 0xe1, 0xc1, 0x36, 0xb0, 0x91, 0x4d, 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, 0xec, 0x01, 0x8d, 0xd0, ++ 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, 0xcc, 0xab, 0x6a, 0x3d, 0x1e, 0x77, 0x9b, 0x0b, 0xb6, 0xfc, ++ 0x24, 0x30, 0x6d, 0x4e, 0x12, 0x86, 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, 0x8a, 0x48, 0xfe, 0x72, ++ 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, 0x36, 0x67, 0xa5, 0x62, 0xb9, 0x8d, 0x26, 0x23, ++ 0x67, 0xde, 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, 0xa8, 0xce, 0x6e, 0xad, ++ 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, 0x84, 0x23, 0x5a, 0x4c, ++ 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, 0x2f, 0x4a, 0x95, 0x60, 0x12, 0xc2, ++ 0xb3, 0xf4, 0xdd, 0x5a, 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, 0xa6, 0xa5, 0xca, 0x93, ++ 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, 0xb6, 0xc0, 0x94, 0x5f, 0xb7, 0xe6, 0x82, 0x1d, ++ 0x76, 0x05, 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, 0x7c, 0x03, 0x26, 0x8b, 0xc0, 0xec, 0xb9, 0x31, ++ 0xb6, 0x72, 0xc2, 0x30, 0x5b, 0x2c, 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, 0xd1, 0xaf, 0xf1, 0xbf, ++ 0x35, 0xeb, 0x0e, 0x4f, 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, 0x9d, 0x9e, 0xe2, 0x6a, 0x29, 0xee, ++ 0xf5, 0x9c, 0x4a, 0xdb, 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, 0xf3, 0x29, 0x61, 0x60, ++ 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, 0x77, 0x1c, 0x3a, 0xf5, 0x0c, 0x7e, 0x5f, 0xb6, ++ 0xff, 0x53, 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, 0x59, 0x31, 0x86, 0x1e, 0x1d, 0x3d, 0x17, 0x38, ++ 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, 0x43, 0x04, 0x2b, 0x46, 0x81, 0xe0, 0x2e, 0xf8, 0xcf, 0x69, ++ 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, 0x3d, 0x0b, 0x3f, 0xbb, 0x87, 0xe7, ++ 0xb9, 0x3b, 0xe3, 0x8e, 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, 0x48, 0xb1, 0xbc, 0xcb, ++ 0x79, 0x4c, 0xa7, 0x1a, 0xdd, 0x4a, 0x3d, 0x21, 0xe1, 0x85, 0x33, 0x34, 0x59, 0xf2, 0xf4, 0x45, ++ 0xfa, 0xd5, 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, 0x34, 0xca, 0x6a, 0x37, 0x2c, 0x14, ++ 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, 0x7b, 0x74, 0x64, 0x9a, ++ 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, 0xe8, 0xcb, 0xe3, 0x9a, 0x32, 0x2e, 0x44, 0x15, ++ 0xd7, 0xe9, 0x8c, 0xd9, 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, 0x23, 0x6d, 0x0c, 0x9b, ++ 0x54, 0x70, 0x40, 0xa6, 0x2a, 0x0c, 0x35, 0xef, 0xb4, 0x91, 0x58, 0x8f, 0x10, 0xa8, 0xd4, 0xca, ++ 0x94, 0x07, 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, 0xe4, 0x64, 0x01, 0xeb, 0x9c, 0x44, ++ 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, 0x59, 0x47, 0x50, 0x7f, 0x56, 0xb0, 0x76, 0xe1, 0xa7, 0x68, ++ 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, 0xea, 0x5b, 0x67, 0xa2, 0xef, 0xe6, ++ 0xd2, 0x6f, 0x93, 0xb3, 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, 0x54, 0x67, 0x37, 0xb7, ++ 0x12, 0x18, 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, 0x22, 0x08, 0x51, 0x4e, 0x45, 0x24, 0x7f, 0x39, ++ 0xd8, 0xa0, 0xad, 0x67, 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, 0xba, 0x73, 0x41, 0xef, ++ 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, 0xab, 0x30, 0x09, 0x61, ++ 0x9b, 0x4e, 0x25, 0x8c, 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, 0xf1, 0xdb, 0x98, 0xf5, 0xd1, 0x30, ++ 0x5b, 0x39, 0x61, 0x18, 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, 0x4d, 0x30, 0x89, 0xb6, 0x99, 0xbe, ++ 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, 0xe3, 0xd4, 0xff, 0xe4, 0xfe, 0xbc, 0xa2, 0x92, ++ 0x9e, 0xc8, 0x3a, 0xe6, 0x4f, 0xdd, 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, 0xef, 0xff, 0xea, 0x1c, ++ 0x1d, 0x51, 0xf6, 0x99, 0xef, 0x59, 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, 0xdc, 0x3a, 0x32, 0x4d, ++ 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, 0xf8, 0x1a, 0xcd, 0x79, 0x7a, 0xc3, ++ 0x4a, 0xe2, 0x02, 0x19, 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, 0xe1, 0x94, 0x4e, 0x22, ++ 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, 0xe0, 0xbc, 0x63, 0x73, 0xce, 0xd9, 0xf0, 0xd7, 0x06, 0xac, ++ 0x09, 0x0c, 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, 0xc9, 0x27, 0xc3, 0x12, 0xde, 0xfd, ++ 0xc9, 0x7b, 0xce, 0x66, 0x85, 0xbc, 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, 0xd2, 0x51, 0x96, 0x73, ++ 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, 0xba, 0x40, 0xf5, 0xea, 0xc7, 0x18, 0xa5, 0x5b, 0xad, 0x5f, ++ 0x0c, 0x8a, 0x95, 0x98, 0x06, 0x77, 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, 0xb4, 0x18, 0xe5, 0xd1, ++ 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, 0xa9, 0xb0, 0x7c, 0x0d, 0x87, 0xdd, 0x3d, 0x80, ++ 0x4f, 0x64, 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, 0x87, 0x9d, 0xc0, 0xe6, 0x96, 0x9e, 0x75, 0x0e, ++ 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, 0x62, 0xd3, 0xfe, 0xf5, 0xdb, 0x66, 0x69, 0xc9, 0x4b, 0xd8, ++ 0x45, 0xab, 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, 0x67, 0x8d, 0x78, 0x8a, 0x03, 0x56, ++ 0xc6, 0x32, 0xef, 0xd8, 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, 0x60, 0x73, 0x4b, 0x4f, 0xdb, 0x07, ++ 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, 0x8c, 0x82, 0xdc, 0x98, 0x5a, 0x0c, 0x93, 0x89, ++ 0x03, 0xc3, 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, 0x6e, 0x4c, 0x2d, 0x06, 0xa8, 0xa5, ++ 0xc3, 0xb4, 0xf0, 0xb2, 0x80, 0x11, 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, 0x3c, 0x45, 0xe0, 0x2b, ++ 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, 0x0e, 0x7b, 0x1a, 0x1b, 0xd5, 0x59, 0x0f, 0x80, 0x38, 0x7a, ++ 0x80, 0x5a, 0x78, 0x59, 0x40, 0xe9, 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, 0x1e, 0xc3, 0x70, 0xf4, ++ 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, 0xb0, 0x33, 0x03, 0xec, 0x9d, 0x34, 0x78, 0xa7, ++ 0xda, 0x22, 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, 0x8c, 0x77, 0x30, 0x29, ++ 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, 0xbf, 0xb2, 0xe8, 0x78, ++ 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, 0x28, 0x70, 0xc2, 0x44, 0x04, 0x12, 0xae, 0xf1, 0xa0, 0xf6, ++ 0x9c, 0x4a, 0xe2, 0x63, 0x4e, 0x2a, 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, 0xd9, 0xfb, 0x9b, 0xda, ++ 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, 0x26, 0xaa, 0x0a, 0x2d, 0xc8, 0xb8, 0xd3, 0x54, ++ 0xdf, 0xa4, 0x6a, 0x88, 0x8e, 0xd2, 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, 0xfb, 0x7d, 0x0b, 0x05, ++ 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, 0x60, 0x01, 0x7a, 0xf0, 0xb1, 0x38, 0xea, 0x3e, 0x43, 0x8b, ++ 0xd5, 0x6b, 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, 0xaa, 0xb8, 0x15, 0x69, 0x7d, 0x5d, ++ 0x15, 0x1c, 0x10, 0xc8, 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, 0x16, 0x53, 0x04, 0x2a, 0x35, 0xd3, ++ 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, 0x5f, 0xc2, 0x11, 0xad, 0x37, 0xef, 0xed, 0x82, ++ 0x56, 0xf2, 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, 0x26, 0xac, 0xa5, 0x0c, ++ 0x53, 0x74, 0x87, 0x49, 0xc8, 0x4c, 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, 0x51, 0xa6, 0x9e, 0x20, ++ 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, 0x95, 0x01, 0xa3, 0x79, 0x40, 0xe5, 0xd6, 0xae, ++ 0x10, 0x9a, 0x0f, 0xa2, 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, 0x73, 0x20, 0x0e, 0xff, ++ 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, 0xc9, 0x5b, 0x18, 0x6c, 0x62, 0x63, 0x46, 0x71, ++ 0x47, 0x29, 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, 0x92, 0x44, 0x4e, 0x8e, 0x72, 0x90, ++ 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, 0xef, 0xae, 0x3b, 0x8b, 0x2e, 0xaf, 0x5f, 0xcd, 0x3a, 0x1e, ++ 0x04, 0xc7, 0x73, 0xc9, 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, 0x29, 0x51, 0x6c, 0x08, 0xe2, 0x4f, ++ 0xc4, 0xb0, 0x37, 0x5d, 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, 0x7d, 0x4b, 0xaa, 0xc1, ++ 0xc1, 0x36, 0x28, 0x37, 0x81, 0xe6, 0xb5, 0x52, 0xad, 0x12, 0x27, 0x6e, 0x0a, 0x41, 0x91, 0xed, ++ 0x01, 0x41, 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, 0x1b, 0x02, 0xd9, 0x63, ++ 0x82, 0xd8, 0xa0, 0xdc, 0x41, 0x1e, 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, 0x28, 0xc7, 0x01, 0x32, ++ 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, 0x83, 0x06, 0xdf, 0x65, 0x20, 0x90, 0x39, 0x84, 0x49, 0xbc, ++ 0x88, 0x17, 0x9e, 0x08, 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, 0xc6, 0xd3, 0x77, 0x6a, ++ 0x48, 0x60, 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, 0x88, 0x20, 0x87, 0xfb, 0xd7, 0x90, 0x3f, 0xe4, ++ 0xcb, 0xf9, 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, 0x80, 0x05, 0xe4, 0x55, 0xe7, 0xb5, ++ 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, 0xf5, 0x16, 0xaf, 0x3b, ++ 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, 0x1e, 0xb9, 0x8e, 0x3a, 0x82, 0x1c, 0x94, 0x17, ++ 0xce, 0x7f, 0x09, 0x89, 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, 0x93, 0x5f, 0xdc, 0x99, ++ 0x4d, 0xe6, 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, 0x42, 0xe3, 0x35, 0x2f, 0xa0, 0x9a, 0x04, 0xc8, ++ 0x8d, 0x91, 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, 0x6c, 0xce, 0x89, 0xc4, 0xb1, 0xd9, 0x4c, 0x46, ++ 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, 0x1b, 0x2a, 0x39, 0xda, 0xe2, 0x7f, 0xf8, 0x83, 0x6c, 0xc9, ++ 0x60, 0xda, 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, 0x5e, 0x94, 0xe9, 0xc0, 0x24, 0x47, ++ 0xe3, 0x43, 0xee, 0x35, 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, 0xda, 0x05, 0xfc, 0x16, ++ 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, 0x2d, 0x7e, 0x4b, 0xad, 0xe5, 0x81, 0xcb, 0x46, 0xb4, 0x98, ++ 0x26, 0xb2, 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, 0x57, 0x55, 0xbc, 0x4c, 0x8f, 0xb4, ++ 0xe6, 0xc5, 0xf1, 0x5f, 0x73, 0x0d, 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, 0xad, 0x0f, 0xc7, 0x3a, ++ 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, 0x77, 0x82, 0xdd, 0x34, 0xec, 0x40, 0x9e, 0xca, 0x1f, 0x6b, ++ 0xa5, 0x2b, 0x79, 0xb4, 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, 0x8f, 0x89, 0x57, 0xe5, ++ 0x6f, 0x93, 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, 0x8a, 0x71, 0x4b, 0x2b, 0x70, 0xde, 0x69, 0x33, ++ 0xaf, 0xe4, 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, 0xf7, 0xc0, 0x61, 0x9d, 0x21, 0xbd, ++ 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, 0xaf, 0x11, 0xd6, 0x2b, 0xf0, 0x3e, 0x52, 0x58, 0xf9, 0xec, ++ 0xec, 0x0a, 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, 0x4c, 0xd5, 0x43, 0x1b, 0xb1, 0x62, ++ 0xe9, 0x8c, 0xd0, 0xe1, 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, 0xfe, 0x01, 0x34, 0x11, 0x8a, 0x4e, ++ 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, 0xd1, 0x34, 0x1c, 0xe8, 0x42, 0xea, 0x25, 0x52, 0xc2, 0xc0, ++ 0xaa, 0x62, 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, 0x16, 0x97, 0x1a, 0x91, ++ 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, 0xf5, 0xed, 0x40, 0xb2, 0xf9, 0xff, 0x07, 0xd4, 0x52, 0x1f, ++ 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, 0xf8, 0x2d, 0x9c, 0x4f, 0x73, 0xd7, 0x2b, 0x39, 0x66, 0xfe, ++ 0x3d, 0xa6, 0xe8, 0x1e, 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, 0x3a, 0x7a, 0x2e, 0x70, ++ 0xbe, 0x3f, 0x24, 0x61, 0x5f, 0x76, 0xdc, 0xf4, 0xc0, 0x15, 0xc8, 0xc2, 0x09, 0xbf, 0xf6, 0x21, ++ 0x7e, 0x48, 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, 0x74, 0x29, 0x18, 0xfc, 0xbe, 0xaf, ++ 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, 0xb0, 0x5c, 0x24, 0xfb, 0xc6, 0xfd, 0x6f, 0xf6, 0x85, 0x83, ++ 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, 0xa2, 0xd1, 0x0a, 0xd6, 0x7a, 0x16, 0x7e, 0xb5, 0xcd, 0x0d, ++ 0x38, 0x20, 0xf7, 0x74, 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, 0x7d, 0xe8, 0x4d, 0x70, 0x15, 0x5c, ++ 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, 0x56, 0x8c, 0xc1, 0x03, 0x5c, 0x33, 0x5d, 0xd2, ++ 0x32, 0xef, 0xc9, 0xa0, 0x19, 0xe8, 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, 0xa3, 0x64, 0x63, 0x04, ++ 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, 0x7a, 0x42, 0x01, 0xc9, 0x66, 0x68, 0xb2, 0x27, 0x2b, 0x8a, ++ 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, 0x61, 0x96, 0x81, 0xe2, 0xf3, 0xdb, ++ 0xb1, 0x76, 0x05, 0xdf, 0xb9, 0x6c, 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, 0x90, 0xa1, 0xbb, 0x55, ++ 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, 0x97, 0x50, 0x6f, 0xa9, 0xe7, 0xab, 0x80, 0x79, ++ 0x74, 0x87, 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, 0xd3, 0x42, 0xf6, 0xe8, 0xc8, 0xf7, ++ 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, 0xc5, 0x2d, 0x10, 0xa6, ++ 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, 0xe5, 0x27, 0x68, 0x57, 0xd4, 0x6e, 0x58, 0x28, ++ }, ++ { /* 11 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xc2, 0x5d, 0x97, 0xf3, 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, 0x1c, 0x68, 0x90, 0x93, ++ 0x47, 0xba, 0xed, 0x25, 0x11, 0x34, 0xd9, 0x55, 0xb5, 0x0c, 0x49, 0x40, 0x38, 0xd0, 0xe3, 0xe5, ++ 0x85, 0xe7, 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, 0x0e, 0x0a, 0x8c, 0x60, 0x24, 0xb8, 0x73, 0x76, ++ 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, 0x71, 0xaa, 0xa9, 0x18, 0x92, 0x80, 0x70, 0x63, 0x05, 0x09, ++ 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, 0x57, 0xa0, 0x6c, 0x0b, 0x95, 0x9a, ++ 0xc9, 0x0d, 0xf4, 0x6f, 0x33, 0x5c, 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, 0x48, 0xb3, 0xe6, 0xec, ++ 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, 0xa7, 0x12, 0x1e, 0xe0, 0x54, 0xdb, 0x76, 0x7f, ++ 0xdf, 0xad, 0x32, 0x94, 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, 0xe0, 0xc6, 0x0a, 0x12, ++ 0x1d, 0xf0, 0xa5, 0x67, 0xad, 0xca, 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, 0xfc, 0xae, 0x9a, 0x81, ++ 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, 0xae, 0x83, 0xd8, 0x16, 0xe9, 0xf7, ++ 0x5a, 0x4a, 0x48, 0x42, 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, 0xc4, 0x7e, 0x79, 0x64, ++ 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, 0x38, 0x28, 0x75, 0x43, 0x90, 0xa5, 0x0f, 0x1b, ++ 0x93, 0x47, 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, 0x83, 0x2e, 0xb0, 0x63, 0x8c, 0xcd, 0x9f, 0x88, ++ 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, 0xa8, 0x75, 0xec, 0xfe, ++ 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, 0x36, 0x22, 0xf9, 0x23, 0xb4, 0x1d, 0x7c, 0x6d, ++ 0x7d, 0x99, 0x64, 0xeb, 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, 0x03, 0x4f, 0x14, 0x24, ++ 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, 0x8a, 0x26, 0x5a, 0x66, 0xc8, 0x65, 0x1f, 0x27, 0x84, 0xb7, ++ 0x3a, 0x23, 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, 0x44, 0x05, 0x3b, 0x9f, 0xf7, 0xc1, ++ 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, 0x27, 0xf7, 0x67, 0x52, ++ 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, 0x48, 0x78, 0x9f, 0xc5, 0x73, 0x2c, 0x11, 0x2d, ++ 0x31, 0x73, 0xea, 0x52, 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, 0x6f, 0x44, 0x81, 0xbe, ++ 0xb4, 0x94, 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, 0xfd, 0x74, 0xd6, 0x85, 0x4b, 0xfc, 0xf2, 0xc8, ++ 0x76, 0xc9, 0x07, 0x77, 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, 0x57, 0x94, 0x62, 0x5b, ++ 0xa2, 0x34, 0x56, 0x7f, 0xcc, 0xb3, 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, 0xe3, 0x89, 0x1e, 0x36, ++ 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, 0x68, 0xb1, 0xcb, 0x56, 0x2f, 0xa6, 0xff, 0xe1, 0x8e, 0xa5, ++ 0xe5, 0x8e, 0xbb, 0x5a, 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, 0xdb, 0x59, 0xfd, 0xd3, ++ 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, 0x7e, 0x5a, 0x66, 0xe6, 0xc7, 0x31, 0x6d, 0x40, ++ 0x2c, 0x83, 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, 0x78, 0x06, 0x93, 0xea, 0x1b, 0x3f, ++ 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, 0x19, 0x1b, 0x62, 0x4e, 0xbd, 0x26, 0x8f, 0x82, 0x8b, 0xac, ++ 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, 0x31, 0x46, 0xab, 0x3a, 0xf8, 0xda, ++ 0xa9, 0x64, 0x35, 0xe3, 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, 0xb7, 0x52, 0x68, 0x49, ++ 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, 0x0e, 0x19, 0x01, 0xc0, 0x1a, 0x8a, 0x06, 0x9e, 0x28, 0x48, ++ 0x38, 0xac, 0x5f, 0xe6, 0x3a, 0xdc, 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, 0x1a, 0xf6, 0xb8, 0xdb, ++ 0xbd, 0x4b, 0x25, 0x30, 0xc2, 0xf2, 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, 0x3e, 0x4e, 0xcb, 0xad, ++ 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, 0x96, 0xea, 0x22, 0x26, 0x5b, 0x3e, ++ 0x74, 0x46, 0xd1, 0x5f, 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, 0x76, 0xfd, 0x2d, 0x41, ++ 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, 0x13, 0xde, 0x4d, 0x2a, 0x6a, 0x95, 0xbd, 0xd2, ++ 0x33, 0xfc, 0x3c, 0x7a, 0xe0, 0x9a, 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, 0x4e, 0x2d, 0xce, 0xa4, ++ 0xf1, 0xa1, 0xab, 0x89, 0x09, 0x80, 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, 0x52, 0x45, 0x5e, 0x37, ++ 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, 0xec, 0x8e, 0x90, 0xf0, 0xfd, 0x49, 0xe6, 0x58, 0x22, 0x5a, ++ 0xe7, 0x01, 0x6d, 0x72, 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, 0xfa, 0x30, 0xb2, 0xc9, ++ 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, 0x25, 0xfc, 0xb4, 0x09, 0xde, 0x88, 0xc1, 0xbf, ++ 0xa0, 0xbb, 0x80, 0x57, 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, 0xc2, 0xe0, 0x51, 0x2c, ++ 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, 0x96, 0x3b, 0x27, 0x53, ++ 0x69, 0xb6, 0x74, 0x38, 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, 0xaa, 0xe9, 0x8a, 0x53, 0xb7, 0xc0, ++ 0xec, 0x51, 0x0e, 0xee, 0xa4, 0x4a, 0x44, 0x71, 0x8c, 0xe4, 0x26, 0x89, 0xae, 0xeb, 0xc4, 0xb6, ++ 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, 0xc9, 0xba, 0x37, 0xe2, 0xe3, 0xa9, 0xb2, 0x83, 0x54, 0x25, ++ 0x87, 0x68, 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, 0x17, 0xcf, 0x05, 0xd1, 0x3c, 0x6c, ++ 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, 0x84, 0x3f, 0x5b, 0xa6, 0xd2, 0xef, 0x19, 0xb9, 0xac, 0xff, ++ 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, 0x55, 0xac, 0x5e, 0x8f, 0x3d, 0x01, 0xdf, 0x89, ++ 0x02, 0x8f, 0xd6, 0x28, 0xa3, 0x8b, 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, 0x21, 0x69, 0x4f, 0x1a, ++ 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, 0x49, 0xb8, 0x85, 0x4f, 0x75, 0xb2, 0x39, 0x65, ++ 0xcb, 0x82, 0x22, 0x47, 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, 0x69, 0xda, 0xa9, 0xf6, ++ 0x4e, 0x65, 0x58, 0x91, 0x68, 0xf9, 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, 0x4d, 0x62, 0xda, 0x80, ++ 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, 0x09, 0x2f, 0x51, 0x0a, 0x4a, 0x13, ++ 0x58, 0xc5, 0x9e, 0x6a, 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, 0xe5, 0x17, 0x36, 0x7e, ++ 0x9a, 0x98, 0x09, 0x99, 0xf6, 0x6f, 0x66, 0xa8, 0xca, 0x96, 0x35, 0x2c, 0xf9, 0x7f, 0xa6, 0xed, ++ 0x1f, 0x7f, 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, 0xc4, 0x9c, 0xb9, 0x4c, 0xdd, 0xc7, 0xd5, 0x9b, ++ 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, 0xbf, 0xfd, 0x7f, 0x9a, 0x7c, 0x6c, 0xc1, 0xaf, 0x45, 0x08, ++ 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, 0xd8, 0x88, 0x62, 0x8c, 0x95, 0x74, 0x33, 0x77, ++ 0x14, 0x2f, 0x10, 0xd3, 0xd4, 0x07, 0x17, 0x02, 0x63, 0x8e, 0xa7, 0xac, 0x89, 0x1c, 0xa3, 0xe4, ++ 0x91, 0xc8, 0x6a, 0x05, 0x2c, 0x29, 0x43, 0x9c, 0x6d, 0x84, 0x2b, 0xcc, 0xad, 0xa4, 0xd0, 0x92, ++ 0x53, 0x95, 0xfd, 0xf6, 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, 0xb1, 0xcc, 0x40, 0x01, ++ 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, 0x1c, 0x32, 0x02, 0x43, 0x34, 0xd7, 0x0c, 0xff, 0x50, 0x90, ++ 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, 0xb9, 0x45, 0xf1, 0xf7, 0x10, 0x97, 0xc0, 0x03, ++ 0x70, 0x9b, 0xbe, 0x0f, 0x74, 0x7b, 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, 0x34, 0x2f, 0xb3, 0x75, ++ 0xb2, 0xc6, 0x29, 0xfc, 0x9d, 0x61, 0x48, 0xac, 0x0c, 0x49, 0xb8, 0xb7, 0x28, 0x47, 0x23, 0xe6, ++ 0xb9, 0x96, 0x4a, 0x60, 0x47, 0x27, 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, 0x7c, 0x9c, 0x55, 0x99, ++ 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, 0xe0, 0x53, 0x10, 0x5d, 0x63, 0x77, 0x60, 0xf4, 0xc5, 0x0a, ++ 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, 0x1e, 0x57, 0xef, 0x17, 0x44, 0x4c, 0xb6, 0x7c, ++ 0x3c, 0x71, 0x30, 0xb6, 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, 0x58, 0x24, 0x26, 0xef, ++ 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, 0x93, 0x73, 0xd3, 0x14, 0xec, 0x39, 0x5a, 0x82, ++ 0x2a, 0xd1, 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, 0x28, 0x75, 0x16, 0x34, 0xf0, 0x51, 0xca, 0x11, ++ 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, 0xd4, 0xe9, 0xb9, 0x67, ++ 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, 0x9d, 0x79, 0x5f, 0x74, 0xc8, 0x81, 0x29, 0xf4, ++ 0x66, 0x3b, 0x78, 0xf4, 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, 0x9c, 0x5a, 0x5f, 0x8b, ++ 0xa4, 0x66, 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, 0x81, 0x6d, 0x84, 0xb4, 0x80, 0x32, 0xcf, 0x18, ++ 0x21, 0x81, 0x95, 0xd1, 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, 0xa4, 0x8a, 0xbc, 0x6e, ++ 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, 0xb8, 0xe2, 0x2c, 0xfd, ++ 0x4a, 0xb8, 0x37, 0xc1, 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, 0x39, 0x92, 0x0f, 0xb0, 0x44, 0xb4, ++ 0x88, 0xe5, 0xa0, 0x32, 0x04, 0x36, 0x96, 0x14, 0x58, 0x25, 0xfc, 0xb2, 0x13, 0xd8, 0xd4, 0x27, ++ 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, 0xc2, 0x8a, 0x56, 0x2f, 0x70, 0xd2, 0x37, 0x60, 0xa7, 0x51, ++ 0xcf, 0x5f, 0x4d, 0x17, 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, 0x2b, 0x08, 0x37, 0xc2, ++ 0xc4, 0x0f, 0x2e, 0x8b, 0xcf, 0x44, 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, 0x7f, 0xd3, 0x41, 0xbd, ++ 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, 0xf1, 0x3d, 0x6e, 0x32, 0x63, 0xbb, 0xd1, 0x2e, ++ 0x83, 0xb5, 0xc3, 0xae, 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, 0x47, 0x03, 0xa2, 0x58, ++ 0x41, 0xe8, 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, 0x44, 0x31, 0x27, 0x72, 0x5b, 0x6b, 0x32, 0xcb, ++ 0x95, 0x15, 0x05, 0x55, 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, 0xef, 0x76, 0x4e, 0xa6, ++ 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, 0xf3, 0x1e, 0xde, 0x35, ++ 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, 0x20, 0x1d, 0xc7, 0x1f, 0x97, 0x11, 0xd7, 0xa6, 0xad, 0x43, ++ 0x10, 0xf2, 0x7f, 0x83, 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, 0xcb, 0xce, 0x3d, 0xd0, ++ 0x1b, 0xa2, 0x1c, 0x1f, 0x8b, 0x94, 0x88, 0xe2, 0xdb, 0x0b, 0x4c, 0xd1, 0x9f, 0x15, 0x4b, 0xaf, ++ 0xd9, 0xff, 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, 0x83, 0x7d, 0xdb, 0x3c, ++ 0x5c, 0x18, 0xf1, 0x3a, 0x9a, 0xa0, 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, 0xa7, 0xc5, 0xa8, 0x4a, ++ 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, 0xc0, 0xb1, 0xbb, 0xad, 0x38, 0xd9, ++ 0xcd, 0xd0, 0x9b, 0x3f, 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, 0x0a, 0x61, 0x78, 0xd8, ++ 0x0f, 0x8d, 0x0c, 0xcc, 0x5f, 0x93, 0x9f, 0xe0, 0xb8, 0x85, 0xeb, 0x7d, 0x16, 0x09, 0xe8, 0x4b, ++ 0x8a, 0x6a, 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, 0x67, 0x1d, 0x32, 0xb1, 0x9b, 0x3d, ++ 0x48, 0x37, 0xe1, 0xe9, 0x4e, 0xa7, 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, 0x2e, 0xd9, 0x0b, 0xae, ++ 0x43, 0x67, 0x82, 0x75, 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, 0xbc, 0xdd, 0x7a, 0x02, 0x7d, 0xd1, ++ 0x81, 0x3a, 0x15, 0x86, 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, 0x66, 0x6a, 0xed, 0x42, ++ 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, 0xba, 0xd4, 0x1f, 0x97, 0xf5, 0x9d, 0x42, 0xd2, 0x9e, 0x34, ++ 0xc6, 0x80, 0xf8, 0xa3, 0x6c, 0xcf, 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, 0x5e, 0xba, 0x0e, 0xa7, ++ 0x12, 0x7d, 0xa9, 0xab, 0xf2, 0x59, 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, 0xea, 0xa7, 0x72, 0xca, ++ 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, 0x0c, 0xbe, 0xf6, 0xcf, 0xe2, 0x59, ++ 0x55, 0xc7, 0x44, 0x8e, 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, 0x80, 0xde, 0xd2, 0x77, 0x91, 0x2f, ++ 0x97, 0x9a, 0xd3, 0x7d, 0x0a, 0x77, 0xa4, 0x22, 0x9c, 0xb9, 0x45, 0xfe, 0xce, 0x1f, 0x01, 0xbc, ++ 0x9c, 0xca, 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, 0x3b, 0xab, 0x5b, 0x1e, 0x9a, 0xc4, 0x77, 0xc3, ++ 0x5e, 0x97, 0x27, 0x12, 0x39, 0x2b, 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, 0x86, 0xac, 0xe7, 0x50, ++ 0xdb, 0x70, 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, 0x12, 0x5e, 0xa2, 0x14, 0x94, 0x26, ++ 0x19, 0x2d, 0xca, 0x37, 0x28, 0x1f, 0xd5, 0x88, 0x35, 0xa1, 0xd7, 0x7e, 0xbe, 0x7c, 0x04, 0xb5, ++ 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, 0xe2, 0xe3, 0x23, 0x18, 0x09, 0x2e, 0x6c, 0xfc, ++ 0x72, 0x14, 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, 0x59, 0xe5, 0xe6, 0x38, 0x15, 0x46, 0xfc, 0x6f, ++ 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, 0xcc, 0x93, 0x57, 0xef, 0x6a, 0x58, 0x31, 0xfe, 0x8f, 0x19, ++ 0x35, 0xae, 0x85, 0x02, 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, 0xaf, 0x78, 0x2d, 0x96, 0x1f, 0x8a, ++ 0x3e, 0xfe, 0xe6, 0x9e, 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, 0xb1, 0x98, 0x79, 0x4d, 0x69, 0xf5, ++ 0xfc, 0xa3, 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, 0xf0, 0xfd, 0x74, 0xb8, 0x65, 0x25, 0xf9, 0x66, ++ 0x79, 0x44, 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, 0x41, 0x9d, 0x8a, 0x10, ++ 0xbb, 0x19, 0x9c, 0x48, 0xe4, 0xac, 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, 0x5d, 0xf5, 0x1a, 0x83, ++ 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, 0xf7, 0x51, 0x73, 0xd3, 0xc4, 0xdb, 0xe9, 0xe8, 0x66, 0xee, ++ 0xad, 0xb9, 0x5a, 0xb3, 0x93, 0x20, 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, 0xf5, 0x80, 0xf6, 0x7d, ++ 0x28, 0x5e, 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, 0xc6, 0xdf, 0x8d, 0x9b, 0xd1, 0x38, 0x85, 0x0b, ++ 0xea, 0x03, 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, 0xcd, 0x50, 0x15, 0x98, ++ 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, 0x86, 0xfb, 0xda, 0xcb, 0x56, 0x5b, 0x99, 0x8b, 0x63, 0xe7, ++ 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, 0x0b, 0x30, 0x61, 0xcd, 0x93, 0x7b, 0x85, 0xe3, 0xf3, 0x74, ++ 0xa6, 0xe9, 0x39, 0x2f, 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, 0xa1, 0x5b, 0x80, 0x02, ++ 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, 0xd4, 0xc1, 0xda, 0x3b, 0xbd, 0x33, 0x10, 0x91, ++ 0x6e, 0x42, 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, 0x18, 0x3d, 0xa0, 0xe3, ++ 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, 0xb5, 0xaf, 0xbf, 0x80, 0xad, 0x4d, 0x04, 0x55, 0x30, 0x70, ++ 0x29, 0xf8, 0x4b, 0x71, 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, 0x21, 0x2d, 0x20, 0xed, 0x43, 0x06, ++ 0xeb, 0xa5, 0xdc, 0x82, 0x32, 0xb0, 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, 0x3c, 0x85, 0xd3, 0x95, ++ 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, 0xad, 0x9e, 0xfa, 0xed, 0x68, 0x5e, 0xa5, 0xea, ++ 0x22, 0xa8, 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, 0x74, 0x36, 0x35, 0x79, ++ 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, 0x90, 0x9b, 0x18, 0x92, 0xb3, 0xad, 0x50, 0x8e, 0x46, 0x0f, ++ 0x65, 0x12, 0xc5, 0xc8, 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, 0x76, 0x8d, 0x4c, 0xe6, 0xd6, 0x9c, ++ 0xb1, 0xef, 0x94, 0xc0, 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, 0x8f, 0xae, 0xf8, 0xfb, 0xaa, 0xf1, ++ 0x73, 0xb2, 0x03, 0x33, 0x67, 0x54, 0x57, 0x38, 0x2e, 0xb0, 0x4a, 0x8e, 0xe4, 0x93, 0x3a, 0x62, ++ 0xf6, 0x55, 0x79, 0xe5, 0x9f, 0x7a, 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, 0xc0, 0x2b, 0x49, 0x14, ++ 0x34, 0x08, 0xee, 0x16, 0x76, 0x60, 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, 0xdc, 0x43, 0xd9, 0x87, ++ 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, 0xab, 0x59, 0x3c, 0xae, 0x1d, 0x2e, 0x88, 0x98, 0xaf, 0xf8, ++ 0xfd, 0x05, 0x1a, 0x79, 0x45, 0x3c, 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, 0x94, 0xf0, 0x3f, 0x6b, ++ 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, 0x89, 0xa2, 0x54, 0x6e, 0xb0, 0x48, 0x4c, 0x1d, ++ 0xba, 0xbf, 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, 0xac, 0x20, 0xdc, 0x8e, ++ 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, 0x1b, 0x72, 0xb4, 0xc7, ++ 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, 0xa0, 0x08, 0x07, 0x1a, 0x24, 0x54, ++ 0x54, 0x61, 0x2f, 0x9a, 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, 0x23, 0xa2, 0x57, 0x22, ++ 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, 0xeb, 0xec, 0xe9, 0x48, 0x3f, 0xca, 0xc7, 0xb1, ++ 0x9d, 0x6c, 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, 0x4c, 0xfe, 0xf7, 0xa8, 0x6b, 0x11, 0xb1, 0xce, ++ 0x5f, 0x31, 0x4c, 0x06, 0x89, 0x8f, 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, 0x77, 0x79, 0x21, 0x5d, ++ 0xda, 0xd6, 0x36, 0xd0, 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, 0xbe, 0xe8, 0x53, 0xc1, 0x52, 0x2b, ++ 0x18, 0x8b, 0xa1, 0x23, 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, 0x4f, 0xa9, 0xc2, 0xb8, ++ 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, 0x74, 0xd6, 0x82, 0xeb, 0xfb, 0xb4, 0xbe, 0xd5, ++ 0x0e, 0x2b, 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, 0xcf, 0xd0, 0x47, 0xcb, 0xe7, 0xdc, 0x2e, 0x46, ++ 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, 0x04, 0x4b, 0xc1, 0xda, 0xcb, 0xab, 0xc3, 0x64, 0x5d, 0x30, ++ 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, 0x0e, 0x8b, 0xdf, 0x0c, 0xcd, 0xa3, ++ 0x42, 0xc1, 0xe9, 0x61, 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, 0x8b, 0xd7, 0xbb, 0xdc, ++ 0x80, 0x9c, 0x7e, 0x92, 0xcd, 0x5f, 0x21, 0x7f, 0x66, 0xc8, 0xd5, 0x4b, 0x97, 0xbf, 0x2b, 0x4f, ++ 0x05, 0x7b, 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, 0x59, 0x2b, 0xb3, 0x07, 0x58, 0x39, ++ 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, 0xaf, 0x6f, 0xc8, 0xaa, ++ 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, 0x05, 0x46, 0x72, 0xe7, 0x1e, 0xa3, 0x88, 0xab, ++ 0x56, 0xee, 0xf9, 0xb2, 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, 0x02, 0xcb, 0x18, 0x38, ++ 0xd3, 0x09, 0x83, 0x64, 0x08, 0x6c, 0xef, 0x28, 0xb0, 0x4a, 0x3b, 0xa7, 0x26, 0x73, 0x6b, 0x4e, ++ 0x11, 0x54, 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, 0xfe, 0x87, 0x3a, 0x1b, 0xfb, 0xdd, ++ 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, 0x47, 0xd7, 0xac, 0x5e, 0xe0, 0x67, 0x6e, 0xc0, 0x8d, 0xa2, ++ 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, 0x25, 0x47, 0x72, 0xa8, 0x1d, 0x31, ++ 0x5d, 0xbe, 0x9a, 0x2e, 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, 0x56, 0x10, 0x6e, 0x47, ++ 0x9f, 0xe3, 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, 0xa2, 0x54, 0x6c, 0x07, 0x4a, 0x78, 0xfe, 0xd4, ++ 0x4b, 0x1e, 0x5c, 0xd5, 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, 0xfe, 0x65, 0x82, 0xb9, ++ 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, 0xe2, 0x0d, 0x12, 0x2a, ++ 0x0c, 0xa4, 0xb1, 0xf0, 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, 0xdc, 0x64, 0xc6, 0xb5, 0x61, 0x5c, ++ 0xce, 0xf9, 0x26, 0x03, 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, 0x19, 0x44, 0xda, 0xdd, 0xf1, 0xcf, ++ 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, 0x3d, 0x6e, 0x07, 0xa4, 0x8e, 0x06, 0x87, 0xb0, ++ 0x07, 0xf4, 0xd2, 0x6c, 0x96, 0xfa, 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, 0x92, 0x6e, 0x17, 0x23, ++ 0x82, 0x13, 0xa8, 0xba, 0x6e, 0xd4, 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, 0xb6, 0xd6, 0x64, 0x55, ++ 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, 0x8b, 0xc4, 0xaa, 0xbe, 0xf4, 0xc6, ++ 0xe9, 0x2a, 0x0a, 0xaa, 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, 0x1d, 0xec, 0x9c, 0x8f, ++ 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, 0xbc, 0x5b, 0x5f, 0x20, 0xba, 0x82, 0x01, 0x84, 0x0c, 0x1c, ++ 0xae, 0x90, 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, 0x36, 0xe2, 0x25, 0x3c, 0x7f, 0x6a, ++ 0x6c, 0xcd, 0x70, 0x7c, 0x69, 0x15, 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, 0x39, 0x54, 0xef, 0xf9, ++ 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, 0x40, 0x3a, 0x4d, 0x3e, 0xed, 0x22, 0x6d, 0x8f, 0x99, 0x86, ++ 0xa5, 0xc0, 0x84, 0x13, 0x5a, 0x49, 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, 0x71, 0xe7, 0x09, 0x15, ++ 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, 0xf8, 0x32, 0xa4, 0x62, 0x55, 0x5f, 0x7a, 0x63, ++ 0xe2, 0x7a, 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, 0x43, 0x34, 0x61, 0x42, 0x49, 0x37, 0xea, 0xf0, ++ 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, 0xd3, 0x07, 0x75, 0x16, 0x98, 0x61, 0xfd, 0x2a, 0x96, 0x9d, ++ 0xf4, 0xda, 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, 0x5d, 0x41, 0xe1, 0x42, 0x06, 0x0e, ++ 0x71, 0x3d, 0xd5, 0x1b, 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, 0xd1, 0x21, 0xc5, 0xfa, 0x75, 0x78, ++ 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, 0x7b, 0x1c, 0x14, 0x01, 0xd9, 0x92, 0xe5, 0xeb, ++ 0xb8, 0x30, 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, 0x0a, 0xe1, 0x8d, 0x49, 0x93, 0x94, ++ 0x7a, 0x6d, 0xb6, 0x87, 0x1e, 0x99, 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, 0x91, 0x21, 0x03, 0x07, ++ 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, 0x7b, 0xf8, 0x69, 0x02, 0x43, 0xa1, 0xb5, 0x99, 0x70, 0x71, ++ 0x3d, 0xd7, 0x5b, 0xa2, 0x0f, 0xad, 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, 0xa9, 0xf1, 0xe0, 0xe2, ++ 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, 0x06, 0xc5, 0x5c, 0xba, 0x14, 0xc2, 0xf0, 0x73, ++ 0x9b, 0x3e, 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, 0x08, 0xaa, 0x60, 0xe0, ++ 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, 0x2c, 0x12, 0x13, 0x96, ++ 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, 0x70, 0xc8, 0x08, 0xcf, 0xd0, 0xda, 0x30, 0x7a, 0x83, 0x05, ++ 0xd7, 0xd4, 0xec, 0x34, 0x8d, 0xb9, 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, 0x64, 0xa1, 0xf5, 0x7a, ++ 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, 0x14, 0xdb, 0x0b, 0x1a, 0x78, 0xc9, 0x65, 0xe9, ++ 0x90, 0x6e, 0x01, 0x11, 0x9c, 0x8d, 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, 0x5c, 0x71, 0x16, 0x9f, ++ 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, 0x01, 0x62, 0xa1, 0xd7, 0x42, 0x5a, 0x40, 0x19, 0x86, 0x0c, ++ 0x86, 0xce, 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, 0xbb, 0x79, 0xf4, 0x04, 0xfa, 0x61, ++ 0x44, 0x93, 0x50, 0x19, 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, 0x7e, 0x59, 0xe8, 0x6c, 0x6a, 0xf2, ++ 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, 0x22, 0xf9, 0xf2, 0x39, 0xcc, 0xd4, 0x19, 0x84, ++ 0x03, 0x29, 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, 0xd0, 0xbc, 0x89, 0x17, ++ 0x08, 0x79, 0xde, 0xa0, 0xc9, 0x69, 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, 0x84, 0x67, 0xff, 0x68, ++ 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, 0x85, 0xeb, 0xec, 0xd9, 0x98, 0x0f, 0x6f, 0xfb, ++ 0x4f, 0xc3, 0x33, 0x85, 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, 0xbc, 0xb7, 0x1c, 0x8d, ++ 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, 0x30, 0xe7, 0xa5, 0x99, 0xa0, 0xdf, 0x8c, 0x1e, ++ 0x24, 0xfa, 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, 0x51, 0xff, 0x17, 0x8d, 0xe4, 0x57, ++ 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, 0xae, 0x70, 0x5c, 0xa3, 0x94, 0xdf, 0x0b, 0xe5, 0x74, 0xc4, ++ 0x63, 0x40, 0x7c, 0xb0, 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, 0x18, 0xbf, 0x2f, 0x5d, 0x07, 0xb2, ++ 0xa1, 0x1d, 0xeb, 0x43, 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, 0x33, 0x35, 0x97, 0x21, ++ 0xaa, 0x4d, 0x88, 0xdf, 0x05, 0xda, 0x52, 0x11, 0x4e, 0xbd, 0xc3, 0x7f, 0x67, 0xee, 0xe1, 0x5e, ++ 0x68, 0x10, 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, 0x7b, 0x86, 0x71, 0xcd, ++ 0xed, 0xf7, 0x65, 0xfa, 0x14, 0xee, 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, 0x5f, 0x3e, 0x02, 0xbb, ++ 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, 0x06, 0x8f, 0x40, 0xb7, 0x4f, 0x1f, 0x43, 0x56, 0x92, 0x28, ++ 0xfb, 0x57, 0xa3, 0x01, 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, 0xf7, 0x4b, 0xee, 0x45, ++ 0x39, 0x0a, 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, 0xcd, 0x93, 0x73, 0x1c, 0xeb, 0x23, 0x7e, 0xd6, ++ 0xbc, 0xed, 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, 0xff, 0x7c, 0xcf, 0x9b, 0x0d, 0xa0, ++ 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, 0xd3, 0xf3, 0x9d, 0x33, ++ 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, 0xdf, 0x8d, 0x24, 0xbc, 0x87, 0x28, 0xeb, 0x4c, ++ 0xb7, 0xbd, 0x2d, 0xb8, 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, 0x9b, 0x40, 0x7b, 0xdf, ++ 0x32, 0x5a, 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, 0x6a, 0x81, 0x6d, 0xfc, 0xbf, 0xf8, 0x08, 0xa9, ++ 0xf0, 0x07, 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, 0xd1, 0x87, 0xa8, 0xdc, 0xa3, 0x90, 0x98, 0x3a, ++ 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, 0x2a, 0x4f, 0x07, 0x05, 0x46, 0x30, 0x12, 0x5c, 0xd8, 0x3b, ++ 0x61, 0xcf, 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, 0x83, 0x10, 0x0e, 0x34, 0x48, 0xa8, ++ 0xe4, 0x28, 0xd0, 0x4e, 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, 0x2a, 0x8c, 0x3b, 0xde, ++ 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, 0x7e, 0xd1, 0x09, 0x0f, 0xca, 0x50, 0x36, 0xe4, 0xab, 0x4d, ++ 0x2d, 0x25, 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, 0xd4, 0xb0, 0x62, 0x3f, 0xdd, 0x32, ++ 0xef, 0x78, 0xb3, 0xd2, 0xb7, 0x65, 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, 0x7e, 0x57, 0x4d, 0xa1, ++ 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, 0x82, 0xb0, 0x1b, 0x11, 0x9d, 0xf0, 0x5a, 0xef, 0x3e, 0xd7, ++ 0xa8, 0xc2, 0x5e, 0xf7, 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, 0x46, 0x87, 0xae, 0x44, ++ 0x7c, 0x3f, 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, 0x96, 0x35, 0xa1, 0xf3, 0xf2, 0x9a, 0xd2, 0x29, ++ 0xbe, 0x62, 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, 0x64, 0xd3, 0xee, 0xf2, 0x42, 0xba, ++ 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, 0x11, 0x8d, 0x23, 0x39, 0xe8, 0xb3, 0xca, 0x4a, 0x31, 0xcc, ++ 0xf9, 0xd8, 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, 0x2d, 0x93, 0xd6, 0x22, 0xa1, 0x5f, ++ 0xf2, 0x88, 0x16, 0xb5, 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, 0x33, 0x73, 0x82, 0xf9, 0xd7, 0x20, ++ 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, 0x34, 0xb9, 0x84, 0x2b, 0xf6, 0x53, 0x9e, 0x91, 0x47, 0xb3, ++ 0xb5, 0x32, 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, 0xba, 0x29, 0x34, 0xc5, ++ 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, 0xed, 0xec, 0x31, 0x27, 0xbf, 0x13, 0xa6, 0x41, 0xa4, 0x56, ++ 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, 0x2d, 0xa2, 0xe6, 0x65, 0x4b, 0x75, 0x11, 0x13, 0xcc, 0x1f, ++ 0x1c, 0x56, 0xce, 0x73, 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, 0x0d, 0x7b, 0x5c, 0x8c, ++ 0x99, 0xb1, 0xb4, 0xa5, 0xe5, 0x40, 0xf4, 0xf7, 0x53, 0x69, 0x02, 0x35, 0x29, 0xc3, 0x2f, 0xfa, ++ 0x5b, 0xec, 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, 0xc7, 0x15, 0x35, 0xab, 0xbf, 0x69, ++ 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, 0x5c, 0x08, 0x4f, 0x7d, 0xd9, 0xf5, 0x61, 0x70, 0xc9, 0x16, ++ 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, 0xd1, 0xc3, 0xf4, 0x7b, 0x1c, 0xd5, 0x7d, 0x18, 0x59, 0x85, ++ 0x17, 0x06, 0xad, 0xef, 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, 0x90, 0xb5, 0x59, 0xa0, 0x2a, 0xf3, ++ 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, 0x41, 0x77, 0x55, 0x95, 0x45, 0xc8, 0xba, 0x60, ++ 0x01, 0xa6, 0x6b, 0x14, 0xb0, 0xa4, 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, 0xf1, 0xd5, 0xc6, 0x0d, ++ 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, 0x42, 0xfe, 0xcc, 0x53, 0x69, 0x96, 0xed, 0xbd, 0x56, 0x9e, ++ 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, 0xe5, 0xf6, 0xc9, 0x05, 0x25, 0xe8, ++ 0x84, 0x41, 0x11, 0xc2, 0x48, 0x8a, 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, 0xd5, 0x6d, 0xb5, 0x7b, ++ 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, 0xde, 0x4d, 0x3e, 0x36, 0x81, 0xb6, 0xc3, 0x04, ++ 0x4d, 0x4c, 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, 0xfb, 0x16, 0x9d, 0xde, 0x53, 0x97, ++ 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, 0xb9, 0x66, 0x20, 0xe1, ++ 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, 0xd0, 0x47, 0xb2, 0x56, 0xa5, 0x0e, 0xb0, 0x72, ++ }, ++ { /* 12 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x96, 0xca, 0xd9, 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, 0x0c, 0x70, 0xda, 0xbf, ++ 0x20, 0xef, 0x57, 0x71, 0x60, 0xd0, 0x5e, 0x28, 0x34, 0x2e, 0x18, 0x57, 0x18, 0xe0, 0x77, 0xbd, ++ 0x30, 0x79, 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, 0x2e, 0x39, 0x14, 0x9d, 0x14, 0x90, 0xad, 0x02, ++ 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, 0xbc, 0x50, 0x68, 0x5c, 0x30, 0xae, 0x30, 0x03, 0xee, 0xb9, ++ 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, 0x3c, 0x64, 0x3c, 0x73, 0x34, 0x06, ++ 0x60, 0xf2, 0xf9, 0x93, 0xa0, 0xb3, 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, 0x28, 0xe3, 0x99, 0x04, ++ 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, 0x46, 0x65, 0x24, 0x33, 0x24, 0x93, 0x43, 0xbb, ++ 0x80, 0x3a, 0x9f, 0x07, 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, 0x60, 0x06, 0x1f, 0xb1, ++ 0x90, 0xac, 0x55, 0xde, 0x73, 0xae, 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, 0x6c, 0x76, 0xc5, 0x0e, ++ 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, 0x78, 0xc8, 0x78, 0xe6, 0x68, 0x0c, ++ 0xb0, 0x43, 0x02, 0xaf, 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, 0x74, 0x96, 0xb2, 0xb3, ++ 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, 0xb8, 0xe4, 0x50, 0x31, 0x50, 0x05, 0xf1, 0x08, ++ 0xd0, 0xb1, 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, 0xa2, 0xf3, 0x5c, 0xfb, 0x5c, 0x75, 0x2b, 0xb7, ++ 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, 0x48, 0xe5, 0x86, 0xb5, ++ 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, 0x96, 0xdd, 0x44, 0xac, 0x44, 0x95, 0x5c, 0x0a, ++ 0xc3, 0x74, 0xfd, 0x0e, 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, 0xc0, 0x0c, 0x3e, 0xa1, ++ 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, 0x9a, 0x97, 0x79, 0xa4, 0xcc, 0x37, 0xcc, 0x7c, 0xe4, 0x1e, ++ 0xe3, 0x9b, 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, 0xd8, 0xaa, 0xd8, 0xec, 0x49, 0x1c, ++ 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, 0xd4, 0x9c, 0x93, 0xa3, ++ 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, 0x0b, 0xef, 0xf0, 0x53, 0xf0, 0x0f, 0xd0, 0x18, ++ 0x93, 0xff, 0x99, 0x35, 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, 0xfc, 0x7f, 0x0a, 0xa7, ++ 0xa3, 0x86, 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, 0x3f, 0xc1, 0xe8, 0x04, 0xe8, 0xef, 0xa7, 0xa5, ++ 0xb3, 0x10, 0xce, 0x44, 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, 0xe4, 0x9f, 0x7d, 0x1a, ++ 0x43, 0x4e, 0x62, 0x09, 0xc5, 0x89, 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, 0xa0, 0x0a, 0x21, 0x10, ++ 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, 0x21, 0x37, 0xa9, 0x1c, 0xac, 0xa8, 0xac, 0x7a, 0xfb, 0xaf, ++ 0x63, 0xa1, 0x35, 0x78, 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, 0xb8, 0xea, 0x56, 0xad, ++ 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, 0x9d, 0x32, 0xb4, 0xff, 0xb4, 0x9a, 0x8c, 0x12, ++ 0x03, 0x53, 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, 0x90, 0xcc, 0x90, 0x09, 0xcf, 0xa9, ++ 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, 0x9d, 0x67, 0xc1, 0x40, 0x9c, 0x06, 0x9c, 0x79, 0x15, 0x16, ++ 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, 0x88, 0x9b, 0x88, 0xe9, 0xb8, 0x14, ++ 0x33, 0x2a, 0x51, 0x43, 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, 0x84, 0x99, 0x62, 0xab, ++ 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, 0xa9, 0xc5, 0xc6, 0xa5, 0x43, 0x39, 0x43, 0x18, 0x7c, 0x81, ++ 0x55, 0x7e, 0xf3, 0xc5, 0xff, 0xf6, 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, 0x4f, 0x68, 0xa6, 0x3e, ++ 0x65, 0x07, 0x6e, 0x6d, 0xaf, 0x4e, 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, 0x5b, 0xf8, 0x0b, 0x3c, ++ 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, 0x57, 0xa4, 0x57, 0x88, 0xd1, 0x83, ++ 0x05, 0xf5, 0x97, 0xfe, 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, 0x73, 0x1b, 0x92, 0x38, ++ 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, 0xb4, 0xee, 0x7f, 0x5d, 0x7f, 0x6b, 0x48, 0x87, ++ 0x25, 0x1a, 0xc0, 0x8f, 0x6f, 0x2d, 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, 0x6b, 0xfb, 0xe5, 0x85, ++ 0x35, 0x8c, 0x0a, 0x56, 0x5f, 0x45, 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, 0x67, 0x8b, 0x3f, 0x3a, ++ 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, 0x12, 0x65, 0x16, 0x1d, 0x23, 0xa6, 0x23, 0x1e, 0x63, 0x30, ++ 0xd5, 0x44, 0x6c, 0xc2, 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, 0x2f, 0x6e, 0xb9, 0x8f, ++ 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, 0x22, 0x33, 0x3b, 0xf1, 0x3b, 0xfe, 0x14, 0x8d, ++ 0xf5, 0xab, 0x3b, 0xb3, 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, 0x37, 0x8e, 0xce, 0x32, ++ 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, 0x13, 0x1d, 0x8d, 0x89, ++ 0x95, 0x59, 0xc2, 0x20, 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, 0x1f, 0xc2, 0x1f, 0x6d, 0x57, 0x36, ++ 0xa5, 0x20, 0x5f, 0x88, 0x2c, 0xeb, 0xf0, 0x1d, 0x4a, 0x6f, 0x0b, 0x5f, 0x0b, 0xfd, 0xfa, 0x34, ++ 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, 0xdf, 0x09, 0x50, 0x78, 0x07, 0x95, 0x07, 0x8d, 0x20, 0x8b, ++ 0x86, 0x9c, 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, 0x83, 0xc4, 0x83, 0x14, 0x42, 0x20, ++ 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, 0x33, 0x52, 0xbf, 0x01, 0x8f, 0x0e, 0x8f, 0x64, 0x98, 0x9f, ++ 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, 0x91, 0x38, 0x9b, 0x93, 0x9b, 0xf4, 0x35, 0x9d, ++ 0xb6, 0xe5, 0x59, 0xba, 0x19, 0x69, 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, 0x97, 0x84, 0xef, 0x22, ++ 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, 0xcd, 0x4a, 0xb3, 0x6a, 0xb3, 0x17, 0xac, 0x99, ++ 0xd6, 0x17, 0xa0, 0x29, 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, 0xbf, 0x67, 0x76, 0x26, ++ 0xe6, 0x6e, 0x3d, 0x81, 0xe9, 0x62, 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, 0xab, 0xf7, 0xdb, 0x24, ++ 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, 0xa7, 0xf7, 0xa7, 0x87, 0x01, 0x9b, ++ 0x06, 0xa6, 0x5b, 0x15, 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, 0xe3, 0x12, 0x5d, 0x91, ++ 0x16, 0x30, 0x91, 0xcc, 0x3a, 0x7f, 0x88, 0xf2, 0x6f, 0xb9, 0xef, 0x91, 0xef, 0x62, 0x87, 0x2e, ++ 0x26, 0x49, 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, 0x41, 0x80, 0xfb, 0x0c, 0xfb, 0xf2, 0x2a, 0x2c, ++ 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, 0xd6, 0xda, 0x5b, 0x97, 0xf7, 0xc6, 0xf7, 0x82, 0xf0, 0x93, ++ 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, 0x1d, 0xf2, 0xd3, 0xf5, 0xd3, 0x11, 0xb3, 0x28, ++ 0x56, 0x2d, 0x3f, 0x2e, 0xfa, 0x1c, 0x34, 0xa2, 0x07, 0xe5, 0xdf, 0x3f, 0xdf, 0x61, 0x69, 0x97, ++ 0x66, 0x54, 0xa2, 0x86, 0xaa, 0xa4, 0x45, 0x9e, 0x29, 0xdc, 0xcb, 0xa2, 0xcb, 0xf1, 0xc4, 0x95, ++ 0x76, 0xc2, 0x68, 0x5f, 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, 0xc7, 0x81, 0x1e, 0x2a, ++ 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, 0x91, 0x49, 0x4f, 0x89, 0x86, 0x72, 0x86, 0x30, 0xf8, 0xc1, ++ 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, 0x55, 0x9e, 0x8a, 0xb8, 0x8a, 0x40, 0x22, 0x7e, ++ 0xaa, 0xfc, 0x25, 0x49, 0x3d, 0x2f, 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, 0x9e, 0xd0, 0x8f, 0x7c, ++ 0xba, 0x6a, 0xef, 0x90, 0x0d, 0x47, 0xe0, 0x75, 0x61, 0xb0, 0x92, 0xef, 0x92, 0xa0, 0x55, 0xc3, ++ 0xca, 0x0e, 0xdc, 0xda, 0x9d, 0x9c, 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, 0xb6, 0x33, 0x16, 0x78, ++ 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, 0x02, 0x0d, 0x3d, 0xc2, 0xba, 0x16, 0xba, 0x43, 0xcc, 0xc7, ++ 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, 0x13, 0xfb, 0xae, 0x8b, 0xae, 0xd3, 0x61, 0xc5, ++ 0xfa, 0x77, 0x41, 0x72, 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, 0xa2, 0xa3, 0xbb, 0x7a, ++ 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, 0x9f, 0x31, 0xe6, 0xed, 0xe6, 0x36, 0xe7, 0x70, ++ 0x1a, 0xbf, 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, 0x85, 0x26, 0xea, 0x27, 0xea, 0x46, 0x3d, 0xcf, ++ 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, 0xfe, 0xd6, 0x90, 0xcd, ++ 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, 0xb1, 0x08, 0xf2, 0x70, 0xf2, 0xa6, 0x4a, 0x72, ++ 0x4a, 0x34, 0x43, 0xdd, 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, 0xd6, 0x35, 0x09, 0xc9, ++ 0x5a, 0xa2, 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, 0xed, 0x7a, 0xda, 0x89, 0xda, 0x45, 0xd3, 0x76, ++ 0x6a, 0xdb, 0x14, 0xac, 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, 0xce, 0xd5, 0x7e, 0x74, ++ 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, 0xc2, 0xa5, 0xa4, 0xcb, ++ 0x49, 0x67, 0x8f, 0x36, 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, 0x46, 0x8f, 0x46, 0x3c, 0xc6, 0x60, ++ 0x59, 0xf1, 0x45, 0xef, 0xeb, 0xd8, 0x0b, 0xde, 0x36, 0x2d, 0x4a, 0x45, 0x4a, 0x4c, 0x1c, 0xdf, ++ 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, 0x7a, 0xe2, 0x18, 0x14, 0x5e, 0xd8, 0x5e, 0xdc, 0xb1, 0xdd, ++ 0x79, 0x1e, 0x12, 0x9e, 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, 0x52, 0xac, 0x6b, 0x62, ++ 0x09, 0x7a, 0x21, 0xd4, 0x1b, 0xd3, 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, 0x76, 0x3f, 0x28, 0xd9, ++ 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, 0x5e, 0x71, 0x7a, 0xeb, 0x7a, 0x4f, 0xf2, 0x66, ++ 0x29, 0x95, 0x76, 0xa5, 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, 0x6e, 0xdf, 0x5f, 0x64, ++ 0x39, 0x03, 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, 0x6a, 0x5f, 0x62, 0xbc, 0x62, 0xaf, 0x85, 0xdb, ++ 0xc9, 0x5d, 0x10, 0x31, 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, 0x26, 0x3a, 0xd9, 0xd1, ++ 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, 0x2a, 0x4a, 0x03, 0x6e, ++ 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, 0xc1, 0x42, 0xc8, 0xac, 0x3e, 0x47, 0x3e, 0xda, 0xae, 0x6c, ++ 0xf9, 0x24, 0x8d, 0x99, 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, 0x32, 0xaa, 0x74, 0xd3, ++ 0x89, 0x40, 0xbe, 0xd3, 0x58, 0x15, 0x23, 0x3a, 0x94, 0xde, 0x16, 0xbe, 0x16, 0x39, 0x37, 0x68, ++ 0x99, 0xd6, 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, 0x1a, 0x49, 0xed, 0xd7, ++ 0xa9, 0xaf, 0xe9, 0xa2, 0x38, 0xc5, 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, 0x0e, 0xd9, 0x40, 0xd5, ++ 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, 0x02, 0x23, 0x02, 0xa9, 0x9a, 0x6a, ++ 0xcf, 0xfb, 0x4b, 0x24, 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, 0xc5, 0x28, 0x84, 0x40, ++ 0xdf, 0x6d, 0x81, 0xfd, 0xa2, 0x09, 0x17, 0x98, 0x93, 0x3b, 0xc9, 0x81, 0xc9, 0x58, 0x5e, 0xff, ++ 0xef, 0x14, 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, 0xdd, 0x1c, 0xdd, 0xc8, 0xf3, 0xfd, ++ 0xff, 0x82, 0xd6, 0x8c, 0xc2, 0xd9, 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, 0xd1, 0xb8, 0x29, 0x42, ++ 0x8f, 0xe6, 0xe5, 0xc6, 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, 0xf5, 0xe5, 0xf5, 0x2b, 0x6a, 0xf9, ++ 0x9f, 0x70, 0x2f, 0x1f, 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, 0xf9, 0x5b, 0xb0, 0x46, ++ 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, 0xda, 0xf4, 0xd5, 0x5e, 0xed, 0xb2, 0xed, 0xcb, 0x1d, 0x44, ++ 0xbf, 0x9f, 0x78, 0x6e, 0x02, 0xba, 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, 0xe1, 0xbb, 0xc7, 0xfb, ++ 0x4f, 0xc1, 0xd4, 0x23, 0xd1, 0xa7, 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, 0xa5, 0x2e, 0x9b, 0xf1, ++ 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, 0xa9, 0x1e, 0xa9, 0x5e, 0x41, 0x4e, ++ 0x6f, 0x2e, 0x83, 0x52, 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, 0xbd, 0x83, 0xbd, 0xce, 0xec, 0x4c, ++ 0x7f, 0xb8, 0x49, 0x8b, 0x81, 0x1f, 0xf2, 0x10, 0x77, 0xad, 0xb1, 0x49, 0xb1, 0xbe, 0x36, 0xf3, ++ 0x0f, 0xdc, 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, 0x31, 0xc8, 0x95, 0x7a, 0x95, 0x2d, 0x75, 0x48, ++ 0x1f, 0x4a, 0xb0, 0x18, 0x21, 0xac, 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, 0x99, 0x5d, 0xaf, 0xf7, ++ 0x2f, 0x33, 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, 0x8d, 0x2d, 0x8d, 0xcd, 0x02, 0xf5, ++ 0x3f, 0xa5, 0xe7, 0x69, 0x41, 0x7c, 0x4e, 0x40, 0x1f, 0xf1, 0x81, 0xe7, 0x81, 0xbd, 0xd8, 0x4a, ++ 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, 0xea, 0x9f, 0x05, 0xb6, 0x05, 0x24, 0xba, 0xe1, ++ 0x1c, 0x19, 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, 0xf0, 0x88, 0x09, 0x7c, 0x09, 0x54, 0x60, 0x5e, ++ 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, 0xd3, 0x27, 0xde, 0xb1, 0x1d, 0xe1, 0x1d, 0xc4, 0xcd, 0x5c, ++ 0x3c, 0xf6, 0x2b, 0x82, 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, 0x11, 0x2b, 0x11, 0xb4, 0x17, 0xe3, ++ 0x4c, 0x92, 0x18, 0xc8, 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, 0x35, 0x18, 0x35, 0x27, 0x54, 0x58, ++ 0x5c, 0x04, 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, 0x98, 0xd4, 0x39, 0xd2, 0x39, 0x57, 0x8e, 0xe7, ++ 0x6c, 0x7d, 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, 0x2d, 0xc7, 0x23, 0xe5, ++ 0x7c, 0xeb, 0x85, 0x60, 0x84, 0xf5, 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, 0x21, 0xb7, 0xf9, 0x5a, ++ 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, 0x36, 0xaf, 0x3a, 0x27, 0x65, 0x29, 0x65, 0x22, 0xa5, 0x50, ++ 0x9c, 0x23, 0xe3, 0xf4, 0x67, 0x80, 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, 0x69, 0x52, 0x7f, 0xef, ++ 0xac, 0x5a, 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, 0x0e, 0x09, 0x7d, 0x7e, 0x7d, 0xc2, 0xd2, 0xed, ++ 0xbc, 0xcc, 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, 0x71, 0xb2, 0x08, 0x52, ++ 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, 0x8a, 0xff, 0x52, 0x7b, 0x55, 0x87, 0x55, 0x21, 0x4b, 0xe9, ++ 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, 0xa5, 0xeb, 0x48, 0x6c, 0x59, 0x4d, 0x59, 0x51, 0x91, 0x56, ++ 0xec, 0x47, 0xd0, 0xbe, 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, 0x4d, 0xc1, 0x3c, 0x54, ++ 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, 0x7c, 0x42, 0x41, 0x1a, 0x41, 0xb1, 0xe6, 0xeb, ++ 0xd7, 0x26, 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, 0xcf, 0x60, 0x33, 0x41, ++ 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, 0xce, 0x86, 0x84, 0xc6, 0xc3, 0x2e, 0xc3, 0x10, 0xe9, 0xfe, ++ 0xf7, 0xc9, 0xb3, 0x01, 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, 0xd7, 0xb3, 0xd7, 0x80, 0x44, 0xfc, ++ 0xe7, 0x5f, 0x79, 0xd8, 0xea, 0x85, 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, 0xdb, 0xf0, 0x9e, 0x43, ++ 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, 0xf6, 0x8d, 0xff, 0x4a, 0xff, 0x63, 0xdd, 0xf8, ++ 0x87, 0xad, 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, 0xf3, 0x13, 0x07, 0x47, ++ 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, 0x03, 0xea, 0xc2, 0xa3, 0xe7, 0x1d, 0xe7, 0x83, 0xaa, 0x45, ++ 0xa7, 0x42, 0xd7, 0x3a, 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, 0xeb, 0xd7, 0xeb, 0xf3, 0x70, 0xfa, ++ 0x57, 0x1c, 0x7b, 0x77, 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, 0xaf, 0x7b, 0xaf, 0x66, 0x2c, 0xf0, ++ 0x47, 0x8a, 0xb1, 0xae, 0xc9, 0x93, 0x75, 0x26, 0x54, 0x7e, 0xa3, 0xb1, 0xa3, 0x16, 0xf6, 0x4f, ++ 0x77, 0xf3, 0x2c, 0x06, 0x99, 0x2b, 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, 0xb7, 0x86, 0x5b, 0x4d, ++ 0x67, 0x65, 0xe6, 0xdf, 0xa9, 0x43, 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, 0xbb, 0xf6, 0x81, 0xf2, ++ 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, 0xe6, 0x62, 0x26, 0x35, 0x9f, 0xd5, 0x9f, 0x65, 0xc2, 0x49, ++ 0x07, 0x97, 0x1f, 0x4c, 0x09, 0xf0, 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, 0x93, 0x15, 0x18, 0xf6, ++ 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, 0x12, 0x1b, 0x87, 0x82, 0x87, 0x85, 0xb5, 0xf4, ++ 0x27, 0x78, 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, 0x8b, 0xf5, 0x6f, 0x4b, ++ 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, 0x0f, 0x6c, 0x0d, 0xe0, ++ 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, 0x03, 0xd3, 0x03, 0x1c, 0xd7, 0x5f, ++ 0x34, 0xbd, 0x4e, 0x0f, 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, 0x17, 0x8c, 0x7a, 0x5d, ++ 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, 0xd3, 0x5b, 0x1b, 0x84, 0x1b, 0xfc, 0xa0, 0xe2, ++ 0x54, 0x4f, 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, 0x95, 0x3e, 0x3f, 0xb7, 0x3f, 0x6f, 0xe3, 0x59, ++ 0x44, 0xd9, 0x7d, 0x45, 0xcc, 0x79, 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, 0x33, 0x1f, 0x39, 0xe6, ++ 0x74, 0xa0, 0xe0, 0xed, 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, 0x27, 0xe0, 0x27, 0x8f, 0x94, 0xe4, ++ 0x64, 0x36, 0x2a, 0x34, 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, 0x2b, 0xff, 0x4e, 0x5b, ++ 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, 0x2d, 0xda, 0x6f, 0x86, 0x6f, 0x6a, 0x12, 0x51, ++ 0x84, 0xfe, 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, 0x37, 0xcd, 0x63, 0x4c, 0x63, 0x1a, 0xc8, 0xee, ++ 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, 0xb1, 0x99, 0x19, 0xf4, 0x77, 0xd1, 0x77, 0x8a, 0x65, 0xec, ++ 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, 0x7b, 0x1b, 0x7b, 0xfa, 0xbf, 0x53, ++ 0xd4, 0x75, 0x28, 0x9b, 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, 0x5f, 0x69, 0xfc, 0xe8, ++ 0xc4, 0xe3, 0xe2, 0x42, 0x8f, 0xbf, 0x7c, 0xf5, 0x5f, 0x91, 0x53, 0xe2, 0x53, 0x19, 0x26, 0x57, ++ 0xf4, 0x9a, 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, 0x47, 0x7f, 0x47, 0x89, 0x8b, 0x55, ++ 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, 0x4b, 0xf9, 0x51, 0xea, ++ 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, 0x58, 0x74, 0x8c, 0xdd, 0x8c, 0x78, 0x4f, 0xc0, ++ 0x82, 0x58, 0x17, 0xb5, 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, 0x80, 0x08, 0x95, 0x7f, ++ 0xb2, 0x21, 0x8a, 0x1d, 0x15, 0x73, 0x16, 0x7f, 0x6c, 0x5a, 0x94, 0x8a, 0x94, 0x98, 0x38, 0x7d, ++ 0xa2, 0xb7, 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, 0x98, 0x40, 0x98, 0xe8, 0xe2, 0xc2, ++ 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, 0xf4, 0x07, 0x30, 0x28, 0xbc, 0x73, 0xbc, 0x7b, 0xa1, 0x79, ++ 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, 0xb0, 0xb9, 0xb0, 0x0b, 0x7b, 0xc6, ++ 0xf2, 0x3c, 0x24, 0xff, 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, 0xa4, 0x9b, 0xd6, 0xc4, ++ 0xe2, 0xaa, 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, 0x1e, 0x11, 0xa8, 0xee, 0xa8, 0xeb, 0x0c, 0x7b, ++ 0x12, 0xf4, 0x42, 0x6b, 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, 0xec, 0x7e, 0x50, 0x71, ++ 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, 0xe0, 0x0e, 0x8a, 0xce, ++ 0x32, 0x1b, 0x15, 0x1a, 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, 0xf4, 0x15, 0xf4, 0x9e, 0x27, 0xcc, ++ 0x22, 0x8d, 0xdf, 0xc3, 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, 0xf8, 0xdf, 0xf8, 0xee, 0xfd, 0x73, ++ 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, 0xe0, 0x90, 0xdc, 0xec, 0xdc, 0x7d, 0xbe, 0xc8, ++ 0x42, 0x7f, 0x26, 0x50, 0xc6, 0x6e, 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, 0xd0, 0x0d, 0x64, 0x77, ++ 0x72, 0x06, 0xbb, 0xf8, 0x96, 0xd6, 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, 0xc4, 0x9d, 0xc9, 0x75, ++ 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, 0xc8, 0x71, 0xc8, 0xed, 0x13, 0xca, ++ 0x51, 0xba, 0x20, 0x62, 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, 0x4c, 0x74, 0x71, 0x61, ++ 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, 0xd2, 0xc0, 0x21, 0xd0, 0x40, 0xea, 0x40, 0x04, 0xab, 0xde, ++ 0x71, 0x55, 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, 0x54, 0x77, 0x54, 0x94, 0x06, 0xdc, ++ 0x61, 0xc3, 0xbd, 0xca, 0xa3, 0x54, 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, 0x58, 0xe4, 0xdc, 0x63, ++ 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, 0x41, 0x84, 0x53, 0x9b, 0x7c, 0x8e, 0x7c, 0x77, 0x9f, 0xd8, ++ 0x01, 0x31, 0x44, 0x59, 0x03, 0xe7, 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, 0x70, 0x07, 0x45, 0x67, ++ 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, 0x67, 0xb5, 0x64, 0xd9, 0x64, 0x97, 0xe8, 0x65, ++ 0x21, 0xde, 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, 0x7d, 0xa2, 0x68, 0x13, 0x68, 0xe7, 0x32, 0xda, ++ 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, 0x46, 0x74, 0xeb, 0x7f, 0x2c, 0xbf, 0x2c, 0x72, 0x6e, 0xd0, ++ 0xc1, 0x16, 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, 0x20, 0x75, 0x20, 0x02, 0xb4, 0x6f, ++ 0xf1, 0x6f, 0xe8, 0x14, 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, 0x34, 0xe8, 0x34, 0x92, 0x19, 0x6d, ++ 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, 0xc5, 0x46, 0x38, 0x22, 0x38, 0xe2, 0xc3, 0xd2, ++ 0x91, 0x9d, 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, 0x1c, 0x11, 0x1c, 0x71, 0x80, 0x69, ++ 0x81, 0x0b, 0xdb, 0x5e, 0x40, 0x21, 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, 0x10, 0x01, 0x5a, 0xd6, ++ 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, 0xa4, 0x0c, 0xb7, 0x0d, 0x04, 0x46, 0x04, 0x91, 0xf7, 0xd4, ++ 0xa1, 0xe4, 0x8c, 0x2f, 0x20, 0xf1, 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, 0x08, 0xe1, 0x2d, 0x6b, ++ 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, 0xd1, 0x58, 0x49, 0x96, 0x49, 0x50, 0xcb, 0x80, ++ 0x4d, 0xa3, 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, 0x45, 0x20, 0x11, 0x3f, ++ 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, 0x51, 0xb0, 0xbc, 0x3d, ++ 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, 0x01, 0xe7, 0xff, 0x61, 0x5d, 0x0b, 0x5d, 0xc0, 0x66, 0x82, ++ 0x1d, 0x28, 0x38, 0xaa, 0x27, 0xa1, 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, 0x79, 0x53, 0x25, 0x39, ++ 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, 0xa3, 0x13, 0x75, 0xf2, 0x75, 0x23, 0xff, 0x86, ++ 0x3d, 0xc7, 0x6f, 0xdb, 0x47, 0x71, 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, 0x61, 0xb3, 0x52, 0x84, ++ 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, 0xbd, 0xb7, 0x97, 0x3d, 0x6d, 0xa5, 0x6d, 0xc3, 0x88, 0x3b, ++ 0xdd, 0x0f, 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, 0x29, 0x09, 0x29, 0x56, 0xd4, 0x31, ++ 0xcd, 0x99, 0xc3, 0x96, 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, 0x25, 0xc3, 0x25, 0x26, 0x0e, 0x8e, ++ 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, 0x35, 0xce, 0x31, 0x5e, 0x31, 0xb6, 0xa3, 0x8c, ++ 0xed, 0x76, 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, 0x3d, 0xc6, 0x79, 0x33, ++ 0x9d, 0x12, 0xa7, 0xad, 0x64, 0x67, 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, 0x19, 0x55, 0x3a, 0x88, ++ 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, 0x73, 0xab, 0x15, 0x6d, 0x15, 0x25, 0xe0, 0x37, ++ 0xbd, 0xfd, 0xf0, 0xdc, 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, 0x01, 0xb5, 0x4d, 0x35, ++ 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, 0x47, 0x85, 0x0d, 0x3a, 0x0d, 0xc5, 0x97, 0x8a, ++ 0x9e, 0x41, 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, 0x89, 0x6b, 0x89, 0x5c, 0xf5, 0x21, ++ 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, 0xea, 0x4c, 0xa8, 0xfc, 0x85, 0xa1, 0x85, 0x2c, 0x2f, 0x9e, ++ 0xbe, 0xae, 0x3c, 0x37, 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, 0x91, 0x3c, 0x91, 0xbc, 0x82, 0x9c, ++ 0xae, 0x38, 0xf6, 0xee, 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, 0x9d, 0xcc, 0x58, 0x23, ++ 0xde, 0x5c, 0xc5, 0xa4, 0xa1, 0xee, 0x79, 0x08, 0xda, 0xb7, 0xb9, 0xc5, 0xb9, 0x5f, 0x1b, 0x98, ++ 0xce, 0xca, 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, 0xb5, 0x2f, 0xc1, 0x27, ++ 0xfe, 0xb3, 0x92, 0xd5, 0xc1, 0x3e, 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, 0xa1, 0xbf, 0x6c, 0x25, ++ 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, 0x08, 0x34, 0xf4, 0x8e, 0xad, 0x58, 0xad, 0xcf, 0xb6, 0x9a, ++ 0x1e, 0x7b, 0xf4, 0x41, 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, 0xe9, 0x5a, 0xea, 0x90, ++ 0x0e, 0xed, 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, 0x78, 0x44, 0xe5, 0x3e, 0xe5, 0x2a, 0x30, 0x2f, ++ 0x3e, 0x94, 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, 0xf1, 0xa3, 0xf1, 0xba, 0x9d, 0x2d, ++ 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, 0xfd, 0xca, 0x47, 0x92, ++ 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, 0x0a, 0x0f, 0xd9, 0x5a, 0xd9, 0x59, 0x04, 0x29, ++ 0x4e, 0xf0, 0x90, 0x7a, 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, 0xd5, 0x29, 0xde, 0x96, ++ 0x7e, 0x89, 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, 0x3e, 0x21, 0xc1, 0x0d, 0xc1, 0xb9, 0x73, 0x94, ++ 0x6e, 0x1f, 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, 0x24, 0x36, 0xcd, 0xc7, 0xcd, 0xc9, 0xa9, 0x2b, ++ 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, 0xd9, 0x1e, 0x17, 0xfd, 0x0a, 0xaf, 0x0a, 0x48, 0xb7, 0x01, ++ 0x08, 0x4b, 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, 0x06, 0x65, 0x06, 0x38, 0x6d, 0xbe, ++ 0x38, 0x32, 0xf8, 0x25, 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, 0x12, 0xa8, 0xc0, 0xbc, ++ 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, 0xa8, 0x22, 0x39, 0xc4, 0x1e, 0x32, 0x1e, 0xd8, 0x1a, 0x03, ++ 0x58, 0xc0, 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, 0x3a, 0x01, 0x3a, 0x4b, 0x59, 0xb8, ++ 0x48, 0x56, 0xcb, 0x6f, 0xd8, 0x57, 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, 0x36, 0x3b, 0x83, 0x07, ++ 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, 0x3b, 0x66, 0x4b, 0x8f, 0x22, 0x56, 0x22, 0xab, 0x2e, 0x05, ++ 0x68, 0xb9, 0x9c, 0x1e, 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, 0x2e, 0xdb, 0xf4, 0xba, ++ 0x98, 0xe7, 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, 0xc7, 0x45, 0x6a, 0x30, 0x6a, 0x4e, 0xa8, 0xb0, ++ 0x88, 0x71, 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, 0x66, 0xfa, 0x66, 0x3e, 0x72, 0x0f, ++ 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, 0x3c, 0x96, 0xf3, 0x6b, 0x72, 0x67, 0x72, 0xae, 0xdf, 0x0d, ++ 0xa8, 0x9e, 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, 0x7e, 0xad, 0x7e, 0xde, 0x05, 0xb2, ++ 0xd8, 0xfa, 0x9e, 0xb1, 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, 0x5a, 0x9e, 0x5a, 0x4d, 0x46, 0x09, ++ 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, 0xf1, 0xfa, 0xb5, 0x0e, 0x56, 0x54, 0x56, 0x3d, 0x9c, 0xb6, ++ 0xf8, 0x15, 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, 0x42, 0xad, 0x31, 0xb4, ++ 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, 0xaf, 0xd2, 0x81, 0x20, 0x4e, 0x03, 0x4e, 0xdd, 0xeb, 0x0b, ++ 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, 0x6c, 0x9d, 0x74, 0x4e, 0xca, 0x52, 0xca, 0x44, 0x89, 0xa0, ++ 0xcb, 0x3f, 0x98, 0x83, 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, 0xc6, 0x34, 0x53, 0x1f, ++ 0xfb, 0x46, 0x05, 0x2b, 0xce, 0xc3, 0x32, 0xb5, 0x40, 0x60, 0xd2, 0x05, 0xd2, 0xa4, 0xfe, 0x1d, ++ 0xeb, 0xd0, 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, 0xde, 0xcf, 0xde, 0xd4, 0x24, 0xa2, ++ 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, 0xd0, 0xcd, 0x1c, 0x12, 0xfa, 0xfc, 0xfa, 0x47, 0x67, 0x19, ++ 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, 0xff, 0xd9, 0x06, 0x05, 0xf6, 0x36, 0xf6, 0x37, 0xbd, 0xa6, ++ 0xbb, 0x5b, 0xab, 0xc9, 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, 0xe2, 0xab, 0xe2, 0xa7, 0x10, 0xa4, ++ 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, 0x32, 0x2b, 0xee, 0x61, 0xee, 0xd7, 0xca, 0x1b, ++ 0x5b, 0x93, 0xcd, 0x5d, 0xed, 0xd5, 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, 0xaa, 0x42, 0x96, 0x11, ++ 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, 0xf8, 0x29, 0xbe, 0xe1, 0xa6, 0x07, 0xa6, 0x32, 0x4c, 0xae, ++ 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, 0xb2, 0x9a, 0xb2, 0xa2, 0xe1, 0xac, ++ 0x6b, 0xea, 0x50, 0xf5, 0xbd, 0x6d, 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, 0xbe, 0xd2, 0x3b, 0x13, ++ 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, 0xcc, 0xaa, 0x9a, 0x63, 0x9a, 0x41, 0x78, 0xa8, ++ 0x0b, 0x18, 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, 0x96, 0xa9, 0x96, 0x31, 0xa2, 0x17, ++ 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, 0x82, 0xa1, 0x0f, 0x15, ++ 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, 0xe2, 0x93, 0x8e, 0xfe, 0x8e, 0xd1, 0xd5, 0xaa, ++ }, ++ { /* 13 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x85, 0x74, 0x75, 0xd0, 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, 0x10, 0x87, 0xc6, 0x74, ++ 0xc9, 0xe8, 0xea, 0x63, 0xbc, 0xbf, 0xb3, 0xcd, 0x9c, 0xc4, 0x1b, 0xd6, 0x20, 0xcd, 0x4f, 0xe8, ++ 0x4c, 0x9c, 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, 0xd2, 0xa6, 0xf7, 0xbd, 0x30, 0x4a, 0x89, 0x9c, ++ 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, 0xa5, 0x59, 0xfb, 0x4b, 0x36, 0x6f, 0x40, 0x59, 0x9e, 0x13, ++ 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, 0xda, 0x04, 0x50, 0xde, 0x58, 0x67, ++ 0x98, 0xfb, 0xfd, 0xa5, 0x07, 0x02, 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, 0x60, 0x94, 0xd1, 0xfb, ++ 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, 0x29, 0xed, 0xc1, 0xd2, 0x70, 0x13, 0x17, 0x8f, ++ 0xa2, 0x26, 0x2e, 0x4f, 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, 0x80, 0xb2, 0xff, 0x26, ++ 0x27, 0x52, 0x5b, 0x9f, 0xeb, 0x07, 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, 0x90, 0x35, 0x39, 0x52, ++ 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, 0x77, 0x08, 0xa0, 0x7f, 0xb0, 0xce, ++ 0xee, 0xba, 0xb1, 0xfc, 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, 0xb0, 0xf8, 0x76, 0xba, ++ 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, 0xce, 0xdd, 0x5a, 0xb1, 0xc0, 0xeb, 0x61, 0x35, ++ 0x76, 0x41, 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, 0x80, 0xbf, 0xb6, 0xda, 0xd0, 0x6c, 0xa7, 0x41, ++ 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, 0xe0, 0x26, 0x2e, 0xdd, ++ 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, 0x1c, 0x7b, 0xad, 0x0c, 0xf0, 0xa1, 0xe8, 0xa9, ++ 0x87, 0x4c, 0x5c, 0x9e, 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, 0xc3, 0xa7, 0x3d, 0x4c, ++ 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, 0x69, 0x20, 0x24, 0x8d, 0x34, 0x14, 0xd3, 0x20, 0xfb, 0x38, ++ 0x4e, 0xa4, 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, 0xc3, 0xa9, 0xe3, 0x6a, 0x72, 0xa4, ++ 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, 0xf3, 0xed, 0xb4, 0xd0, ++ 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, 0x91, 0xa4, 0xee, 0x10, 0x83, 0xfe, 0xa3, 0x5f, ++ 0x53, 0x2b, 0x3e, 0x88, 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, 0x93, 0x79, 0x65, 0x2b, ++ 0x1f, 0xb7, 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, 0x0d, 0x60, 0xf5, 0xc6, 0xa3, 0x33, 0xec, 0xb7, ++ 0x9a, 0xc3, 0xd4, 0xeb, 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, 0xb3, 0xb4, 0x2a, 0xc3, ++ 0x25, 0x6a, 0x72, 0xd1, 0x1c, 0x08, 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, 0x43, 0x15, 0xc2, 0x6a, ++ 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, 0xe0, 0x92, 0x11, 0x1b, 0x58, 0xca, 0x53, 0x92, 0x04, 0x1e, ++ 0xec, 0x82, 0x98, 0xb2, 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, 0x63, 0xd8, 0x8d, 0x82, ++ 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, 0x8d, 0xdf, 0x43, 0x1c, 0x73, 0x5f, 0x4b, 0xf6, ++ 0x74, 0x79, 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, 0x82, 0xce, 0x03, 0x4c, 0x5c, 0x79, ++ 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, 0x45, 0xcb, 0xea, 0x50, 0x6e, 0xa5, 0x13, 0xcb, 0x9a, 0x0d, ++ 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, 0x99, 0x18, 0x23, 0x81, 0x13, 0x91, ++ 0x38, 0xe5, 0xfa, 0xa4, 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, 0x33, 0x06, 0xd5, 0xe5, ++ 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, 0x61, 0x8d, 0xd4, 0x1d, 0x73, 0xfe, 0x45, 0x8d, 0x7a, 0x98, ++ 0x48, 0xec, 0xcd, 0x2f, 0xcf, 0x1f, 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, 0x55, 0x0a, 0xbc, 0xec, ++ 0x04, 0x70, 0x52, 0x9c, 0x2d, 0x1e, 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, 0x65, 0x40, 0x35, 0x70, ++ 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, 0x84, 0x43, 0x75, 0xc7, 0xf3, 0x04, ++ 0x9c, 0x8b, 0xaf, 0x39, 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, 0x05, 0xd4, 0xe4, 0x8b, ++ 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, 0x61, 0x34, 0xa9, 0xfa, 0x15, 0x53, 0x22, 0xff, ++ 0x55, 0x63, 0x45, 0x5a, 0x96, 0xa3, 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, 0x25, 0x19, 0xab, 0x63, ++ 0xd0, 0x17, 0x30, 0x8a, 0xc8, 0x1d, 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, 0x35, 0x9e, 0x6d, 0x17, ++ 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, 0xe8, 0x3f, 0xe1, 0x8b, 0x1f, 0x20, 0xc5, 0x3f, 0x85, 0xbe, ++ 0xea, 0xca, 0xe3, 0x60, 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, 0xd5, 0xb8, 0x43, 0xca, ++ 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, 0x7d, 0x4f, 0x04, 0xf6, 0xe5, 0xf2, 0xca, 0x56, ++ 0x23, 0x22, 0x09, 0x03, 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, 0xf5, 0x75, 0x0c, 0x22, ++ 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, 0x85, 0x66, 0x1b, 0xad, ++ 0xbb, 0xd9, 0xf4, 0xa6, 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, 0xc5, 0x24, 0x95, 0xe1, 0xdd, 0xd9, ++ 0xf7, 0x45, 0x6b, 0x15, 0x23, 0x1a, 0xfe, 0xab, 0x86, 0x04, 0x32, 0x99, 0xa5, 0xab, 0x54, 0x45, ++ 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, 0x46, 0x2c, 0xc8, 0x66, 0xde, 0xf2, 0xb5, 0x2c, 0x92, 0x31, ++ 0x4a, 0xd4, 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, 0xab, 0x81, 0x86, 0x2a, 0x47, 0xd4, ++ 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, 0x08, 0xad, 0xf0, 0x90, 0x47, 0xea, 0x96, 0xad, 0x81, 0xa0, ++ 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, 0x22, 0x36, 0xb0, 0x57, 0xa6, 0xe7, 0x08, 0x3c, ++ 0x06, 0x48, 0x7b, 0xd2, 0xda, 0x11, 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, 0xb6, 0x60, 0xce, 0x48, ++ 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, 0x45, 0xb9, 0x9d, 0xee, 0xc6, 0x73, 0xd9, 0xc7, ++ 0x9e, 0xb3, 0x86, 0x77, 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, 0xd6, 0xf4, 0x1f, 0xb3, ++ 0xd2, 0x2f, 0x19, 0xc4, 0x3f, 0x12, 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, 0xe6, 0xbe, 0x96, 0x2f, ++ 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, 0x6a, 0x53, 0xf6, 0x39, 0x50, 0x5b, ++ 0xe8, 0xf2, 0xca, 0x2e, 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, 0x06, 0x98, 0xb8, 0xf2, ++ 0x6d, 0x86, 0xbf, 0xfe, 0xd3, 0x17, 0x81, 0x1f, 0xc5, 0x06, 0x2b, 0x34, 0x16, 0x1f, 0x7e, 0x86, ++ 0x21, 0x1a, 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, 0x17, 0xa0, 0xdc, 0x89, 0x26, 0x55, 0xf7, 0x1a, ++ 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, 0x32, 0xd2, 0x59, 0xc2, 0x30, 0xe2, 0x36, 0xd2, 0x31, 0x6e, ++ 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, 0x70, 0x2f, 0xf1, 0x30, 0x46, 0xc1, 0x26, 0xe1, ++ 0x3c, 0x95, 0xa8, 0x38, 0x68, 0xaa, 0x24, 0x46, 0x3e, 0x4d, 0x1d, 0x5b, 0x56, 0x46, 0xe0, 0x95, ++ 0x70, 0x09, 0x37, 0x8b, 0x8a, 0xab, 0x2f, 0x0c, 0xec, 0xeb, 0xea, 0xe6, 0x66, 0x0c, 0x69, 0x09, ++ 0xf5, 0x7d, 0x42, 0x5b, 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, 0x76, 0x8b, 0xaf, 0x7d, ++ 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, 0xc2, 0xd9, 0x6b, 0x3a, 0xe6, 0x3f, 0x8a, 0xd9, 0xf4, 0xf3, ++ 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, 0x25, 0x58, 0x0a, 0x54, 0x9a, 0x5e, 0x32, 0x87, ++ 0x90, 0x1b, 0x59, 0x5e, 0x5d, 0x3e, 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, 0xaa, 0x14, 0xbb, 0x1b, ++ 0x15, 0x6f, 0x2c, 0x8e, 0x03, 0x80, 0xc9, 0x93, 0xb9, 0x9c, 0x11, 0x82, 0xba, 0x93, 0x7d, 0x6f, ++ 0x08, 0xe0, 0xa4, 0xfb, 0x5a, 0x3c, 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, 0xca, 0x80, 0x6a, 0xe0, ++ 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, 0xdf, 0x07, 0xde, 0x13, 0x3c, 0x3b, 0xda, 0x07, 0xac, 0x94, ++ 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, 0x0c, 0xb5, 0xcb, 0x86, 0xea, 0x4d, 0x25, 0x08, ++ 0x44, 0x7c, 0x3b, 0x48, 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, 0xfa, 0xca, 0xe3, 0x7c, ++ 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, 0x5e, 0xac, 0x8a, 0xe1, 0x0a, 0x6b, 0x0b, 0xd5, ++ 0x7e, 0xa1, 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, 0x10, 0xce, 0x66, 0x8a, 0x1a, 0xec, 0xcd, 0xa1, ++ 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, 0x2a, 0xa6, 0x44, 0x3d, ++ 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, 0x8c, 0x0a, 0x7d, 0x5c, 0x3a, 0x21, 0x82, 0x49, ++ 0xaa, 0xc6, 0x8a, 0xb4, 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, 0x4a, 0x32, 0x95, 0xc6, ++ 0x2f, 0xb2, 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, 0xeb, 0x85, 0x50, 0xe5, 0x5a, 0xb5, 0x53, 0xb2, ++ 0x63, 0x2e, 0x60, 0xd7, 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, 0x6a, 0xff, 0xda, 0x2e, ++ 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, 0x7a, 0x78, 0x1c, 0x5a, ++ 0xde, 0xbf, 0xef, 0xa3, 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, 0x3e, 0x40, 0x49, 0x7e, 0xc9, 0xbf, ++ 0x5b, 0xcb, 0x9a, 0x73, 0x16, 0x8e, 0xab, 0xf9, 0x4f, 0xb7, 0xd2, 0x2b, 0x59, 0xf9, 0x0f, 0xcb, ++ 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, 0xa0, 0xb3, 0x9d, 0x11, 0x25, 0x96, 0x69, 0xb3, 0x86, 0x57, ++ 0x92, 0x23, 0x70, 0x10, 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, 0x79, 0x34, 0x40, 0x23, ++ 0x8f, 0xac, 0xf8, 0x65, 0xf3, 0x8d, 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, 0x09, 0x27, 0x57, 0xac, ++ 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, 0xb4, 0xfc, 0xe4, 0x44, 0x19, 0xa0, 0x91, 0xd8, ++ 0x46, 0x44, 0x12, 0x06, 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, 0x29, 0xea, 0x18, 0x44, ++ 0xc3, 0x30, 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, 0x28, 0x38, 0xff, 0x92, 0x39, 0x6d, 0xde, 0x30, ++ 0x7c, 0x99, 0xc1, 0xec, 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, 0xc9, 0xcc, 0x36, 0x99, ++ 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, 0xd9, 0x4b, 0xf0, 0xed, ++ 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, 0x29, 0x01, 0xa8, 0x87, 0x49, 0x48, 0xe9, 0x01, 0x79, 0x71, ++ 0x30, 0x05, 0x5e, 0x5f, 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, 0xf9, 0x86, 0xbf, 0x05, ++ 0x2d, 0x8a, 0xd6, 0x2a, 0x46, 0x34, 0x3f, 0x95, 0xcf, 0x08, 0x64, 0xf1, 0x89, 0x95, 0xa8, 0x8a, ++ 0xa8, 0xfe, 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, 0x99, 0x12, 0x6e, 0xfe, ++ 0xe4, 0x62, 0x3c, 0x49, 0xfa, 0x8b, 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, 0xa9, 0x58, 0xe7, 0x62, ++ 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, 0x93, 0x4c, 0xb9, 0xdf, 0x21, 0x16, ++ 0x94, 0x6b, 0x0b, 0xc2, 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, 0xcf, 0x54, 0x8e, 0x6b, ++ 0x11, 0x1f, 0x7e, 0x12, 0x2e, 0x9e, 0x1b, 0xd3, 0xf1, 0x45, 0x79, 0xaa, 0xdf, 0xd3, 0x48, 0x1f, ++ 0x5d, 0x83, 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, 0x8e, 0x17, 0xef, 0x99, 0xc1, 0x83, ++ 0xd8, 0xf7, 0x94, 0x71, 0x92, 0x21, 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, 0xff, 0x1e, 0x07, 0xf7, ++ 0xc5, 0x78, 0x1c, 0x04, 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, 0xa3, 0xae, 0x8f, 0x0d, 0x10, 0x78, ++ 0x40, 0x0c, 0x69, 0xd4, 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, 0x9f, 0x8a, 0xd6, 0x0c, ++ 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, 0xb5, 0xc0, 0xd8, 0xa8, 0xb8, 0x78, 0xaf, 0xc0, 0x5f, 0x90, ++ 0x89, 0xe4, 0x83, 0xb7, 0x29, 0x9c, 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, 0xbf, 0x47, 0x99, 0xe4, ++ 0x36, 0x4d, 0x25, 0x8d, 0xc5, 0x99, 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, 0x4f, 0xe6, 0x71, 0x4d, ++ 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, 0x15, 0x74, 0x5f, 0x61, 0xb7, 0x39, ++ 0xff, 0xa5, 0xcf, 0xee, 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, 0xe2, 0xc9, 0x6f, 0x2b, 0x3e, 0xa5, ++ 0x7a, 0xd1, 0xba, 0x3e, 0x27, 0x98, 0x21, 0xac, 0x58, 0x17, 0x0e, 0xa2, 0x7f, 0xac, 0xf8, 0xd1, ++ 0x67, 0x5e, 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, 0x71, 0xfa, 0xcf, 0x70, 0x0f, 0xbf, 0xef, 0x5e, ++ 0xe2, 0x2a, 0x47, 0x9b, 0x20, 0x9a, 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, 0x1f, 0x38, 0x29, 0x2a, ++ 0xae, 0xb6, 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, 0xd4, 0xa6, 0x2f, 0x72, 0xa0, 0xb6, ++ 0x2b, 0xc2, 0xad, 0xf8, 0x9c, 0x25, 0x84, 0xf5, 0xa3, 0x5c, 0x38, 0xcd, 0x3f, 0xf5, 0x66, 0xc2, ++ 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, 0xd5, 0xc8, 0x4d, 0xbe, 0x0c, 0xf3, 0xb3, 0x27, ++ 0x96, 0x53, 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, 0x9b, 0xaa, 0xa1, 0xd5, 0x1c, 0x74, 0x75, 0x53, ++ 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, 0xc1, 0x3e, 0x49, 0x0c, 0x56, 0x68, 0x2c, 0x3e, 0xfc, 0xcf, ++ 0x5f, 0xbb, 0xc8, 0xef, 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, 0xba, 0x03, 0x3c, 0xb9, 0x3a, 0xbb, ++ 0x42, 0x34, 0x40, 0x9a, 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, 0x7b, 0xd1, 0x4c, 0xaa, 0x2d, 0x34, ++ 0xc7, 0x40, 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, 0x60, 0xe1, 0x97, 0xba, 0x5c, 0x2d, 0xeb, 0x40, ++ 0x8b, 0xdc, 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, 0x6c, 0x67, 0x62, 0xdc, ++ 0x0e, 0xa8, 0xdf, 0x29, 0x80, 0x2d, 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, 0x7c, 0xe0, 0xa4, 0xa8, ++ 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, 0xfb, 0x41, 0xe0, 0x5e, 0x21, 0x60, 0x8c, 0x41, 0x4c, 0x01, ++ 0x34, 0x75, 0x0c, 0xc3, 0x32, 0x96, 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, 0x9c, 0xc6, 0x8a, 0x75, ++ 0x78, 0xe9, 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, 0x7c, 0x9a, 0x3a, 0xb6, 0xac, 0x8c, 0x03, 0xe9, ++ 0xfd, 0x9d, 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, 0xbc, 0x0b, 0xc5, 0x9d, ++ 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, 0x5e, 0x18, 0x1b, 0x15, 0x17, 0x0f, 0xcc, 0x18, 0xd2, 0x12, ++ 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, 0xe6, 0x9f, 0x55, 0x77, 0xfb, 0x64, 0xdc, 0x9f, 0x14, 0x66, ++ 0x29, 0xfa, 0x84, 0xb6, 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, 0xec, 0xd5, 0x9d, 0xfa, ++ 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, 0xc9, 0xb3, 0xe0, 0xb2, 0xfc, 0x52, 0x5b, 0x8e, ++ 0xb2, 0x25, 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, 0xd7, 0x71, 0x2b, 0x25, ++ 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, 0xff, 0xf6, 0x98, 0x16, 0xe3, 0x15, 0xc7, 0xf6, 0xed, 0x51, ++ 0x7b, 0xcd, 0x4f, 0x19, 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, 0x14, 0xa8, 0xf7, 0xbc, 0x64, 0xcd, ++ 0xfe, 0xb9, 0x3a, 0xc9, 0xe3, 0xc0, 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, 0xe7, 0x3b, 0xa2, 0xb9, ++ 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, 0x2d, 0x3f, 0x39, 0x11, 0x97, 0x28, 0xb5, 0x36, ++ 0x66, 0x42, 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, 0x87, 0xaf, 0x73, 0x42, ++ 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, 0x51, 0xe5, 0xb1, 0xfb, 0x22, 0xc7, 0xb7, 0xe5, 0xfa, 0xde, ++ 0xaf, 0xaa, 0x2d, 0x0f, 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, 0xce, 0xac, 0xa7, 0x62, 0x3c, 0xaa, ++ 0x10, 0x03, 0x8b, 0x35, 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, 0x63, 0xa0, 0x57, 0xc3, 0xd4, 0x03, ++ 0x95, 0x77, 0xfe, 0xe5, 0xea, 0xc6, 0x76, 0x44, 0xad, 0x80, 0x8f, 0xcb, 0x47, 0x44, 0x12, 0x77, ++ 0xd9, 0xeb, 0x61, 0x56, 0x08, 0xc7, 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, 0x77, 0x0e, 0x9b, 0xeb, ++ 0x5c, 0x9f, 0x14, 0x86, 0x56, 0x79, 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, 0x67, 0x89, 0x5d, 0x9f, ++ 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, 0x6b, 0x9a, 0x18, 0xa9, 0x55, 0xcf, 0x17, 0x9a, 0x4a, 0x10, ++ 0xc4, 0x64, 0xe9, 0x23, 0x51, 0x7b, 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, 0x07, 0x1d, 0x8c, 0x64, ++ 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, 0x84, 0x6d, 0x4e, 0x19, 0x37, 0x57, 0x05, 0xf8, ++ 0x0d, 0x8c, 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, 0x27, 0xd0, 0xc3, 0x8c, ++ 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, 0x14, 0xd6, 0x16, 0x69, ++ 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, 0x3b, 0x6a, 0x04, 0x51, 0xd0, 0x1d, ++ 0xfc, 0x81, 0x13, 0x87, 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, 0x34, 0x1b, 0x59, 0x81, ++ 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, 0x6e, 0x3d, 0x20, 0xbc, 0x24, 0x9c, 0x9f, 0xf5, ++ 0x64, 0x7a, 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, 0x47, 0xd0, 0xe1, 0x6e, 0x54, 0x8f, 0x88, 0x7a, ++ 0xe1, 0x0e, 0x9b, 0xf2, 0x4d, 0x73, 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, 0x44, 0x08, 0x4e, 0x0e, ++ 0xad, 0x92, 0x04, 0x41, 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, 0xfa, 0xb8, 0x74, 0x42, 0xc7, 0x92, ++ 0x28, 0xe6, 0x71, 0x91, 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, 0x64, 0xc5, 0x01, 0xe6, ++ 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, 0x89, 0x0d, 0xbb, 0xdf, 0x94, 0x64, 0xe9, 0x4f, ++ 0x12, 0x3b, 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, 0xc7, 0x6f, 0x57, 0xb4, 0x84, 0xe3, 0x2f, 0x3b, ++ 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, 0xac, 0xa9, 0x15, 0xc9, 0xa0, 0x09, 0xb4, 0xa9, 0xa6, 0xa7, ++ 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, 0x4c, 0x62, 0xa4, 0x2e, 0x60, 0xd3, ++ 0xc6, 0x5c, 0xc0, 0x6d, 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, 0xd4, 0x3d, 0x77, 0x5c, ++ 0x43, 0x28, 0xb5, 0xbd, 0xf8, 0xca, 0x02, 0xba, 0x3c, 0x24, 0x61, 0xdb, 0xc4, 0xba, 0xb1, 0x28, ++ 0x0f, 0xb4, 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, 0x96, 0x66, 0xf4, 0xf0, 0x38, 0xb4, ++ 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, 0xe4, 0x77, 0xfe, 0xc0, ++ 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, 0x02, 0x69, 0x7c, 0x80, 0x92, 0xfc, 0x51, 0xbd, ++ 0xfa, 0xc9, 0x68, 0x55, 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, 0x82, 0x7b, 0x97, 0xc9, ++ 0xb6, 0x55, 0xf7, 0xe6, 0x2c, 0xdf, 0x95, 0x31, 0x9e, 0xad, 0x67, 0x56, 0xb2, 0x31, 0x1e, 0x55, ++ 0x33, 0x21, 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, 0x8b, 0x3d, 0xa2, 0xb6, 0xd8, 0x21, ++ 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, 0x83, 0xa5, 0xf9, 0x22, 0x4a, 0xef, 0xd2, 0xa5, 0xcf, 0xae, ++ 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, 0xa6, 0x84, 0xc2, 0x22, 0x09, 0xda, ++ 0xe7, 0x46, 0xe0, 0x20, 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, 0xf2, 0x68, 0x80, 0x46, ++ 0x62, 0x32, 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, 0x2b, 0x84, 0xbd, 0x52, 0xe2, 0xef, 0x46, 0x32, ++ 0xdd, 0x9b, 0x33, 0xca, 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, 0x12, 0x4e, 0xae, 0x9b, ++ 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, 0x02, 0xc9, 0x68, 0xef, ++ 0x14, 0x73, 0xd9, 0xa9, 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, 0x0b, 0x88, 0x32, 0x83, 0xe1, 0x73, ++ 0x91, 0x07, 0xac, 0x79, 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, 0xe7, 0xe3, 0x22, 0x04, 0x27, 0x07, ++ 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, 0xcc, 0xb4, 0x26, 0x31, 0x52, 0x17, 0x30, 0x88, ++ 0x09, 0xfc, 0x51, 0xdc, 0xc0, 0xda, 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, 0x42, 0x90, 0xf6, 0xfc, ++ 0x45, 0x60, 0xce, 0x6f, 0x22, 0xdb, 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, 0x72, 0xda, 0x7f, 0x60, ++ 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, 0xd1, 0x8c, 0x62, 0x5d, 0xb9, 0x14, ++ 0xf8, 0xf1, 0x41, 0x1b, 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, 0x51, 0x5b, 0x6c, 0xf1, ++ 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, 0x4f, 0xdc, 0x26, 0xe4, 0x48, 0x94, 0x41, 0xdc, 0xaa, 0x85, ++ 0x31, 0x19, 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, 0xbf, 0x29, 0x71, 0x96, 0x23, 0x19, ++ 0xb4, 0x6d, 0xde, 0xa8, 0xdb, 0xd0, 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, 0x61, 0x11, 0xe5, 0x6d, ++ 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, 0x52, 0x02, 0x93, 0xcd, 0x92, 0x90, 0x11, 0x02, 0xf2, 0xe2, ++ 0x2c, 0x96, 0x23, 0x0d, 0xdc, 0xd2, 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, 0x01, 0x85, 0x34, 0x96, ++ 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, 0x0f, 0x09, 0x89, 0x46, 0x31, 0xcf, 0xbd, 0x0a, ++ 0xe5, 0x7e, 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, 0x41, 0x6b, 0x65, 0x2d, 0x21, 0x48, 0x7b, 0x7e, ++ 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, 0x7e, 0xe9, 0x5d, 0x10, 0xc8, 0x21, 0xd1, 0xe9, 0x93, 0xd7, ++ 0xdf, 0xa3, 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, 0x24, 0x4a, 0xc1, 0x6e, 0x55, 0xa3, ++ 0x93, 0x3f, 0x85, 0x37, 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, 0xd3, 0xf7, 0xf1, 0x24, 0xdc, 0x3f, ++ 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, 0x8f, 0xb6, 0x3f, 0x9c, 0xe1, 0xa3, 0x1a, 0x4b, ++ 0x0b, 0xc4, 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, 0xfe, 0x4e, 0x91, 0xb0, 0x0d, 0xc4, ++ 0x8e, 0xb0, 0x0d, 0x42, 0x69, 0x6b, 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, 0x81, 0x37, 0xcb, 0xb0, ++ 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, 0x68, 0x7d, 0x3a, 0x9f, 0xe5, 0x98, 0xb1, 0x7d, 0x42, 0x2c, ++ 0x47, 0x58, 0xe7, 0x21, 0xd5, 0xd4, 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, 0xa1, 0xfa, 0x84, 0x58, ++ 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, 0xbd, 0x4e, 0xe9, 0x41, 0x5d, 0xa8, 0xdf, 0xd6, ++ 0x6e, 0xa2, 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, 0x4d, 0x2f, 0x19, 0xa2, ++ 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, 0x7d, 0x65, 0x90, 0x3e, ++ 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, 0x8e, 0xe2, 0x6f, 0xe8, 0x1e, 0xfc, 0x6d, 0xe2, 0x56, 0x4a, ++ 0xba, 0xc5, 0x01, 0x81, 0x5b, 0xfd, 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, 0x1d, 0xf1, 0x41, 0xc5, ++ 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, 0x08, 0x67, 0x33, 0x45, 0x0d, 0x76, 0x87, 0xb1, ++ 0x73, 0x2d, 0xeb, 0xe2, 0xe7, 0x42, 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, 0x3d, 0x3c, 0x0e, 0x2d, ++ 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, 0x2b, 0xbb, 0x94, 0xa3, 0x28, 0x93, 0x2d, 0xbb, 0xc8, 0x59, ++ 0x49, 0xf0, 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, 0x85, 0x9f, 0xdd, 0x1a, 0x20, 0xf0, ++ 0xcc, 0x84, 0x4d, 0xd8, 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, 0x69, 0xf4, 0xcd, 0x9d, 0xe6, 0x84, ++ 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, 0x14, 0x1c, 0x9e, 0x49, 0xfd, 0xd7, 0x6f, 0x18, ++ 0x05, 0x6c, 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, 0xed, 0x50, 0xa9, 0x6c, ++ 0x18, 0xe3, 0x2f, 0xce, 0xee, 0x44, 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, 0x9d, 0x43, 0xbe, 0xe3, ++ 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, 0x3d, 0xf1, 0x5f, 0x9b, 0x8d, 0xc4, 0x78, 0x97, ++ 0xd1, 0x0b, 0xc5, 0xad, 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, 0xbd, 0x8e, 0xf1, 0x0b, ++ 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, 0xa1, 0x35, 0x44, 0x4d, 0xad, 0x09, 0x37, 0x7f, ++ 0x6c, 0x9a, 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, 0x31, 0x3e, 0x9e, 0x0f, 0xe2, 0x9a, ++ 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, 0xec, 0x88, 0x99, 0xc3, 0xdd, 0x55, 0x8e, 0x88, 0x24, 0xee, ++ 0xa5, 0x72, 0xa0, 0xba, 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, 0x2a, 0xe8, 0xbe, 0xc2, 0xad, 0x72, ++ 0x20, 0x06, 0xd5, 0x6a, 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, 0xae, 0x45, 0x6b, 0x06, ++ 0x3d, 0x89, 0x5d, 0x1f, 0xf2, 0x4c, 0xf1, 0x56, 0x2c, 0xea, 0x07, 0x51, 0xde, 0x56, 0x7c, 0x89, ++ 0xb8, 0xfd, 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, 0xce, 0xd1, 0xba, 0xfd, ++ 0xf4, 0x61, 0xb7, 0x7c, 0x4e, 0xf3, 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, 0xfe, 0x9b, 0x33, 0x61, ++ 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, 0xfa, 0x1c, 0xfe, 0x4c, 0xf0, 0xec, 0xee, 0x1c, 0xf5, 0x15, ++ 0xce, 0xbc, 0x64, 0x96, 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, 0x1e, 0xbd, 0x1d, 0xbc, ++ 0x4b, 0xc8, 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, 0xac, 0x55, 0xb1, 0x8b, 0x0e, 0x3a, 0xdb, 0xc8, ++ 0x07, 0x54, 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, 0x46, 0x36, 0x3e, 0x70, 0x52, 0x54, ++ 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, 0x2e, 0xf7, 0x94, 0x20, ++ 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, 0x19, 0x7c, 0x6b, 0x8f, 0x5e, 0xe4, 0x83, 0xaf, ++ 0x1a, 0xdb, 0x06, 0x80, 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, 0x4e, 0x63, 0x45, 0xdb, ++ 0x56, 0x47, 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, 0x85, 0xb8, 0x70, 0x59, 0x7e, 0x29, 0xcc, 0x47, ++ 0xd3, 0x33, 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, 0xcb, 0xda, 0x9c, 0x32, 0x6e, 0xae, 0x0a, 0x33, ++ 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, 0xe4, 0x25, 0x69, 0x53, 0x9a, 0xbf, 0x18, 0x25, 0xa5, 0x4e, ++ 0xa3, 0x3a, 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, 0x76, 0xd4, 0x08, 0xa2, 0x63, 0x3a, ++ 0xef, 0xa6, 0x44, 0xdb, 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, 0x38, 0xe8, 0xea, 0xa6, ++ 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, 0xef, 0x6f, 0xbb, 0xf5, 0x6d, 0x02, 0x28, 0x6f, 0x2c, 0xd2, ++ 0x77, 0x5d, 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, 0xac, 0xd0, 0x58, 0x7c, 0x3b, 0x5d, ++ 0xf2, 0x29, 0xcc, 0xae, 0x94, 0xe2, 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, 0x48, 0xfb, 0xfd, 0x29, ++ 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, 0xf2, 0xb1, 0x0e, 0xdc, 0xb7, 0x06, 0x78, 0xb1, 0x74, 0xb5, ++ 0x3b, 0xc1, 0x26, 0xcd, 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, 0x68, 0x36, 0xb2, 0xc1, ++ 0x84, 0x68, 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, 0x5c, 0xc5, 0xf6, 0x61, 0x98, 0x97, 0x5a, 0x68, ++ 0x01, 0x1c, 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, 0x1a, 0x0a, 0x88, 0x10, 0x9c, 0x1c, ++ 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, 0xde, 0x5a, 0xc0, 0x01, 0xed, 0xb7, 0xb8, 0x5a, 0x15, 0x80, ++ 0xc8, 0xf4, 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, 0x01, 0xdc, 0xa8, 0xdd, 0xd3, 0xf4, ++ 0xd5, 0x7b, 0x97, 0x31, 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, 0xc0, 0x0e, 0xd8, 0xce, 0xc4, 0x7b, ++ 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, 0x70, 0x49, 0xe9, 0xec, 0x2c, 0x65, 0xc8, 0x49, 0x02, 0x0f, ++ 0x1c, 0x93, 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, 0xf8, 0x03, 0x8b, 0x93, ++ 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, 0xc3, 0x84, 0x75, 0x28, 0x37, 0xb3, 0xe8, 0x84, 0x4d, 0xe7, ++ 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, 0x35, 0x82, 0x03, 0xbc, 0x42, 0xc0, 0xdb, 0x82, 0x98, 0x02, ++ 0x24, 0x76, 0x87, 0xf6, 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, 0xcb, 0x05, 0x5e, 0x76, ++ 0x68, 0xea, 0x18, 0x45, 0x64, 0xef, 0x86, 0x4f, 0x9f, 0x78, 0x59, 0x16, 0xfb, 0x4f, 0xd7, 0xea, ++ 0xed, 0x9e, 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, 0xb5, 0x7d, 0xeb, 0xc8, 0x11, 0x9e, ++ 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, 0x90, 0xdb, 0xf8, 0xf7, 0x74, 0xaf, 0x9b, 0xdb, 0x06, 0x11, ++ 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, 0x28, 0x5c, 0xb6, 0x95, 0x98, 0xc4, 0x8b, 0x5c, 0xc0, 0x65, ++ 0x39, 0xf9, 0x0f, 0x83, 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, 0x6f, 0x79, 0xbb, 0x16, 0x49, 0xf9, ++ 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, 0x2a, 0x51, 0x83, 0x12, 0xab, 0x91, 0x8f, 0x8d, ++ 0x03, 0x24, 0xdc, 0x69, 0x6d, 0xe9, 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, 0x5b, 0x30, 0x67, 0x24, ++ 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, 0x04, 0xb7, 0x78, 0x48, 0xc2, 0x75, 0x4b, 0xb7, 0xa1, 0x50, ++ 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, 0x35, 0xc8, 0x7b, 0xfd, 0x28, 0xcc, ++ 0x4f, 0xb8, 0x43, 0xda, 0x8f, 0xe8, 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, 0x6b, 0x7a, 0xee, 0xb8, ++ 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, 0xcd, 0x61, 0x18, 0x71, 0x1b, 0x69, 0xf9, 0x37, ++ 0xd7, 0x43, 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, 0xf4, 0x1a, 0x0b, 0xee, 0x3f, 0x43, ++ 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, 0x3b, 0xa4, 0xb6, 0xdf, ++ 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, 0x1f, 0xc7, 0xef, 0xcc, 0x2b, 0x23, 0x70, 0xab, ++ }, ++ { /* 14 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x2d, 0x99, 0xe9, 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, 0x33, 0xc8, 0x20, 0x98, ++ 0x40, 0x5a, 0xf1, 0x11, 0xe9, 0xfd, 0x6b, 0x92, 0x0f, 0x69, 0xec, 0x27, 0x66, 0x53, 0x40, 0xf3, ++ 0x60, 0x77, 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, 0xe9, 0xbc, 0x9a, 0xd5, 0x55, 0x9b, 0x60, 0x6b, ++ 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, 0xd6, 0xe7, 0x1e, 0xd2, 0x1b, 0x4e, 0xcc, 0xa6, 0x80, 0x25, ++ 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, 0x6d, 0xbc, 0xff, 0x6e, 0xa0, 0xbd, ++ 0xc0, 0xee, 0xd0, 0x33, 0xf8, 0xc4, 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, 0xaa, 0xf5, 0xc0, 0xd6, ++ 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, 0xf7, 0x6e, 0x81, 0x9b, 0x99, 0x3d, 0xe0, 0x4e, ++ 0xc3, 0xab, 0x42, 0x44, 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, 0x5b, 0x8f, 0xc3, 0x4a, ++ 0xe3, 0x86, 0xdb, 0xad, 0xb7, 0xed, 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, 0x68, 0x47, 0xe3, 0xd2, ++ 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, 0xda, 0xbb, 0x3d, 0xdc, 0x83, 0xb9, ++ 0xa3, 0xdc, 0x2a, 0xbc, 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, 0x0e, 0x14, 0xa3, 0x21, ++ 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, 0x22, 0xb5, 0x2d, 0xd2, 0x97, 0x29, 0x43, 0x6f, ++ 0x63, 0x32, 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, 0xc4, 0x60, 0x5b, 0x20, 0xa4, 0xe1, 0x63, 0xf7, ++ 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, 0xf1, 0x7a, 0x03, 0x9c, ++ 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, 0xcb, 0x09, 0xb7, 0x07, 0xc2, 0xb2, 0x23, 0x04, ++ 0x45, 0x95, 0x84, 0x88, 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, 0xb6, 0xdd, 0x45, 0x94, ++ 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, 0x0a, 0x53, 0x9e, 0x1b, 0x1a, 0x09, 0x85, 0x15, 0x65, 0x0c, ++ 0x05, 0xcf, 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, 0x80, 0xdc, 0xd0, 0x8e, 0x05, 0x67, ++ 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, 0xe3, 0x46, 0x25, 0xff, ++ 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, 0x66, 0x1c, 0x77, 0xb5, 0x7a, 0x7b, 0xc5, 0xb1, ++ 0xe5, 0x0c, 0x3c, 0x43, 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, 0x49, 0xb3, 0xe5, 0x29, ++ 0x85, 0x7b, 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, 0x69, 0x75, 0x9b, 0x92, 0x1c, 0x28, 0x85, 0x42, ++ 0xa5, 0x56, 0xcd, 0x52, 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, 0x2f, 0xe0, 0xa5, 0xda, ++ 0x86, 0x3e, 0xc6, 0xcc, 0x66, 0x96, 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, 0xed, 0x52, 0x86, 0xde, ++ 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, 0x65, 0x5e, 0xa2, 0x7c, 0x2c, 0x95, 0xde, 0x9a, 0xa6, 0x46, ++ 0xc6, 0x64, 0x37, 0xdd, 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, 0x8b, 0x01, 0xc6, 0x2d, ++ 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, 0xad, 0x15, 0xc0, 0xb2, 0xb8, 0xc9, 0xe6, 0xb5, ++ 0x06, 0x8a, 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, 0x41, 0x29, 0x21, 0xf4, 0x06, 0xfb, ++ 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, 0xb3, 0xb9, 0xbc, 0xae, 0x37, 0xdb, 0x12, 0x3c, 0x26, 0x63, ++ 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, 0xad, 0x0e, 0x47, 0xa7, 0x46, 0x08, ++ 0x66, 0xfd, 0x8f, 0x16, 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, 0x74, 0x6f, 0x66, 0x90, ++ 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, 0x7f, 0x34, 0xf0, 0x5f, 0xd8, 0x35, 0xaf, 0x79, 0x8a, 0xeb, ++ 0xaa, 0xc4, 0x52, 0x3a, 0x1d, 0x94, 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, 0x9c, 0xb1, 0xaa, 0x73, ++ 0xca, 0xb3, 0x3a, 0xc2, 0x61, 0xf6, 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, 0xc9, 0x2a, 0xca, 0x18, ++ 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, 0x42, 0xe0, 0xfa, 0xe2, 0xea, 0x80, ++ 0x0a, 0x5d, 0xea, 0xf1, 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, 0x63, 0xdf, 0x0a, 0xce, ++ 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, 0x08, 0x58, 0xb5, 0x89, 0x50, 0x17, 0x2a, 0x56, ++ 0x4a, 0x07, 0x1b, 0xe0, 0x70, 0xcf, 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, 0x05, 0x8c, 0x4a, 0x3d, ++ 0x6a, 0x2a, 0x82, 0x09, 0xe5, 0x50, 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, 0x36, 0x44, 0x6a, 0xa5, ++ 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, 0x10, 0x39, 0xcc, 0x38, 0xee, 0xa9, 0xf4, 0xf6, 0x49, 0xa1, ++ 0x69, 0x6f, 0x10, 0x7e, 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, 0xc7, 0x3e, 0x69, 0x39, ++ 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, 0xc3, 0x51, 0x02, 0x8e, 0x92, 0xa5, 0x09, 0x52, ++ 0x29, 0x35, 0xe1, 0x6f, 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, 0xa1, 0x6d, 0x29, 0xca, ++ 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, 0x38, 0x50, 0xc9, 0x84, ++ 0xe9, 0xdb, 0x31, 0x5c, 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, 0x83, 0x15, 0x0b, 0x98, 0xe9, 0x1c, ++ 0x89, 0xac, 0x59, 0xa4, 0x52, 0xbd, 0xad, 0x4c, 0xdd, 0x83, 0x19, 0xc0, 0x5e, 0x03, 0x89, 0x77, ++ 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, 0x79, 0x05, 0x3b, 0x56, 0x6f, 0x32, 0x6d, 0xcb, 0xa9, 0xef, ++ 0xcf, 0x7c, 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, 0xb4, 0xce, 0x19, 0xa4, 0xcf, 0x7f, ++ 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, 0x75, 0x67, 0x6e, 0x44, 0xc2, 0x3c, 0x2a, 0x6c, 0xef, 0xe7, ++ 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, 0x87, 0xf8, 0x58, 0xe9, 0x7f, 0xf7, 0x8f, 0x8c, ++ 0xaf, 0x0b, 0x27, 0xa3, 0xb0, 0x8d, 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, 0x4c, 0x3f, 0xaf, 0x14, ++ 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, 0x96, 0x43, 0xaf, 0x80, 0xd5, 0x02, 0x4f, 0x5a, ++ 0x6f, 0xe5, 0xf7, 0x90, 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, 0xe6, 0xca, 0x6f, 0xc2, ++ 0x0f, 0x92, 0x9f, 0x68, 0x34, 0x2b, 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, 0xb3, 0x51, 0x0f, 0xa9, ++ 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, 0x35, 0x55, 0x80, 0x99, 0x2f, 0x31, ++ 0x0c, 0xd7, 0x0d, 0x1f, 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, 0x42, 0x2b, 0x0c, 0x35, ++ 0x2c, 0xfa, 0x94, 0xf6, 0x7b, 0x02, 0x1a, 0x6a, 0x52, 0x23, 0xf4, 0xa0, 0x71, 0xe3, 0x2c, 0xad, ++ 0x4c, 0x8d, 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, 0xbb, 0x9f, 0x6e, 0x75, 0x24, 0x78, 0x4c, 0xc6, ++ 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, 0x71, 0xf8, 0x5d, 0x4a, 0x18, 0x87, 0x17, 0xb0, 0x6c, 0x5e, ++ 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, 0xaa, 0x24, 0x99, 0x1c, 0x8e, 0x8d, 0x8c, 0x10, ++ 0xac, 0x4e, 0xb5, 0xd4, 0x6a, 0x3b, 0xcc, 0x8d, 0x4c, 0xf1, 0xef, 0xee, 0xbd, 0x45, 0xac, 0x88, ++ 0xcc, 0x39, 0xdd, 0x2c, 0x16, 0x59, 0x73, 0x56, 0xa5, 0x4d, 0x75, 0x3b, 0xe8, 0xde, 0xcc, 0xe3, ++ 0xec, 0x14, 0x44, 0xc5, 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, 0xdb, 0x16, 0xec, 0x7b, ++ 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, 0xfe, 0x68, 0x23, 0xbe, 0x73, 0x6a, 0x9d, 0xf2, 0xd7, 0x15, ++ 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, 0xc5, 0x6b, 0x05, 0x98, 0xae, 0x3a, 0xf7, 0x8d, ++ 0x97, 0x4b, 0xa4, 0x74, 0x3a, 0xeb, 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, 0xfb, 0xa1, 0x97, 0xe6, ++ 0xb7, 0x66, 0x3d, 0x9d, 0xaf, 0x74, 0x41, 0xb3, 0xca, 0x02, 0xe9, 0xbf, 0xc8, 0x69, 0xb7, 0x7e, ++ 0x57, 0xa5, 0x74, 0x47, 0xc2, 0x2f, 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, 0x51, 0x54, 0x57, 0x30, ++ 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, 0xfc, 0xc6, 0xdb, 0xb9, 0x1e, 0xd6, 0x62, 0x9c, 0x77, 0xa8, ++ 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, 0x32, 0x05, 0x84, 0x03, 0x37, 0x07, 0x17, 0xc3, ++ 0x37, 0xd2, 0x1c, 0xbf, 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, 0x04, 0xcf, 0x37, 0x5b, ++ 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, 0x1f, 0xd9, 0x45, 0xf6, 0xc6, 0x7d, 0x14, 0x5f, ++ 0x34, 0x97, 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, 0xf9, 0x0c, 0x33, 0x04, 0xf5, 0xb5, 0x34, 0xc7, ++ 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, 0xa0, 0x2e, 0x54, 0xac, ++ 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, 0xf6, 0x65, 0xdf, 0x23, 0x93, 0xe6, 0x74, 0x34, ++ 0x94, 0x0e, 0x36, 0x03, 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, 0x0a, 0xdb, 0x94, 0x7a, ++ 0xb4, 0x23, 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, 0xe7, 0xde, 0x28, 0x4a, 0x39, 0x13, 0xb4, 0xe2, ++ 0xd4, 0x54, 0xc7, 0x12, 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, 0x6c, 0x88, 0xd4, 0x89, ++ 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, 0x5f, 0x40, 0xf4, 0x11, ++ 0x92, 0x84, 0xd1, 0xed, 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, 0x1f, 0x91, 0x2b, 0x2f, 0x92, 0x81, ++ 0xb2, 0xa9, 0x48, 0x04, 0x02, 0x6d, 0xf4, 0x3b, 0xbd, 0xa5, 0x69, 0x63, 0x18, 0xe7, 0xb2, 0x19, ++ 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, 0x4b, 0xe0, 0x54, 0x19, 0xf3, 0xb6, 0x4d, 0x7c, 0xd2, 0x72, ++ 0xf2, 0xf3, 0xb9, 0x15, 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, 0x7e, 0xb4, 0xf2, 0xea, ++ 0x12, 0x30, 0xf0, 0xcf, 0x86, 0xcb, 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, 0xe7, 0x89, 0x12, 0xa4, ++ 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, 0xa3, 0x77, 0x72, 0x2d, 0xd4, 0x41, 0x32, 0x3c, ++ 0x52, 0x6a, 0x01, 0xde, 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, 0x81, 0xda, 0x52, 0x57, ++ 0x72, 0x47, 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, 0xac, 0x1e, 0x9e, 0x0a, 0xb2, 0x12, 0x72, 0xcf, ++ 0x51, 0x2f, 0x93, 0xa9, 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, 0x70, 0xa0, 0x51, 0xcb, ++ 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, 0x43, 0x68, 0x71, 0x53, ++ 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, 0x24, 0xed, 0x68, 0x7e, 0xc5, 0x2a, 0x16, 0xf3, 0x11, 0x38, ++ 0x31, 0x58, 0xfb, 0x51, 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, 0x25, 0x3b, 0x31, 0xa0, ++ 0xd1, 0x9b, 0xb2, 0x8b, 0xa4, 0xb9, 0x99, 0x98, 0x79, 0xc5, 0x32, 0x43, 0xbc, 0x06, 0xd1, 0xee, ++ 0xf1, 0xb6, 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, 0x8f, 0xce, 0xf1, 0x76, ++ 0x91, 0xc1, 0x43, 0x9a, 0x4d, 0x44, 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, 0xda, 0x55, 0x91, 0x1d, ++ 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, 0xa8, 0x96, 0xe9, 0x9d, 0xb1, 0x85, ++ 0x5d, 0xf8, 0x9e, 0xb6, 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, 0x32, 0x8b, 0x5d, 0xfe, ++ 0x7d, 0xd5, 0x07, 0x5f, 0xce, 0x82, 0x55, 0x15, 0x35, 0x34, 0xdd, 0xad, 0x01, 0x43, 0x7d, 0x66, ++ 0x1d, 0xa2, 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, 0x47, 0x78, 0x54, 0xd8, 0x1d, 0x0d, ++ 0x3d, 0x8f, 0xf6, 0x4e, 0x27, 0x7f, 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, 0x67, 0x10, 0x3d, 0x95, ++ 0xdd, 0x4c, 0xbf, 0x94, 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, 0xb0, 0x11, 0xfe, 0x2d, 0xdd, 0xdb, ++ 0xfd, 0x61, 0x26, 0x7d, 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, 0xcd, 0xe5, 0xfd, 0x43, ++ 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, 0x3c, 0x29, 0xc2, 0x5a, 0x5c, 0x36, 0x98, 0x7e, 0x9d, 0x28, ++ 0xbd, 0x3b, 0xd7, 0x6c, 0x36, 0x46, 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, 0xab, 0xb6, 0xbd, 0xb0, ++ 0x9e, 0x53, 0xdc, 0xf2, 0x79, 0x6f, 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, 0x69, 0x04, 0x9e, 0xb4, ++ 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, 0xeb, 0x31, 0x5a, 0xcc, 0xbe, 0x2c, ++ 0xde, 0x09, 0x2d, 0xe3, 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, 0x71, 0xe4, 0x0f, 0x57, 0xde, 0x47, ++ 0xfe, 0x24, 0xb4, 0x0a, 0x05, 0x0d, 0x51, 0x8a, 0x06, 0x3a, 0x07, 0x16, 0x3c, 0x9f, 0xfe, 0xdf, ++ 0x1e, 0xe7, 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, 0xf1, 0x54, 0x86, 0x8d, 0xa5, 0xa2, 0x1e, 0x91, ++ 0x3e, 0xca, 0x64, 0x39, 0xfd, 0xc9, 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, 0x96, 0x6a, 0x3e, 0x09, ++ 0x5e, 0xbd, 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, 0x6a, 0xaa, 0xc3, 0xf1, 0x5e, 0x62, ++ 0x7e, 0x90, 0x95, 0x28, 0x14, 0x34, 0x87, 0x6d, 0x18, 0xe8, 0x1c, 0x58, 0xf0, 0x39, 0x7e, 0xfa, ++ 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, 0xab, 0x2f, 0xc7, 0xa4, 0x84, 0x56, 0x18, 0x6a, ++ 0x38, 0x40, 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, 0x4d, 0xfa, 0xb1, 0x56, 0xb7, 0x9e, 0x38, 0xf2, ++ 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, 0x34, 0xd4, 0xa4, 0x46, 0x2b, 0x83, 0xe2, 0x05, 0x58, 0x99, ++ 0x78, 0x1a, 0x72, 0xc6, 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, 0x5d, 0x71, 0xd1, 0xcd, 0x78, 0x01, ++ 0x98, 0xd9, 0x3b, 0x1c, 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, 0xdc, 0xea, 0x48, 0xf0, 0x98, 0x4f, ++ 0xb8, 0xf4, 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, 0x53, 0x28, 0xaa, 0x18, 0x7b, 0x38, 0xb8, 0xd7, ++ 0xd8, 0x83, 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, 0x2e, 0xa3, 0xd8, 0xbc, ++ 0xf8, 0xae, 0x53, 0xe4, 0x72, 0xa2, 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, 0x1d, 0x6b, 0xf8, 0x24, ++ 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, 0x30, 0x4b, 0x97, 0x48, 0xf1, 0x38, 0xdf, 0xd9, 0xdb, 0x20, ++ 0xfb, 0xeb, 0xc1, 0x93, 0xa8, 0x14, 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, 0xec, 0x11, 0xfb, 0xb8, ++ 0x9b, 0x9c, 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, 0x98, 0x21, 0x1d, 0x1f, 0xb9, 0x8a, 0x9b, 0xd3, ++ 0xbb, 0xb1, 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, 0x8a, 0x42, 0xbb, 0x4b, ++ 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, 0xe6, 0xac, 0x89, 0x9a, 0xea, 0x76, 0x13, 0x7f, 0x5b, 0x05, ++ 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, 0x32, 0xe5, 0x6f, 0x4f, 0x9c, 0x84, 0x20, 0xb7, 0x7b, 0x9d, ++ 0x1b, 0x28, 0x88, 0x49, 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, 0x75, 0x2c, 0x1b, 0xf6, ++ 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, 0x60, 0x26, 0x70, 0xa3, 0x46, 0xe4, 0x3b, 0x6e, ++ 0x6d, 0x22, 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, 0xf9, 0x27, 0x6d, 0x2a, ++ 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, 0xeb, 0x99, 0xa0, 0x6a, 0x90, 0x26, 0xca, 0xef, 0x4d, 0xb2, ++ 0x2d, 0x78, 0x5b, 0xdb, 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, 0x0a, 0xf3, 0x9f, 0x74, 0x2d, 0xd9, ++ 0x0d, 0x55, 0xc2, 0x32, 0x19, 0x4e, 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, 0xac, 0xbc, 0x0d, 0x41, ++ 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, 0x58, 0x6d, 0xfd, 0x9a, 0x35, 0x81, 0xed, 0x0f, ++ 0xcd, 0xbb, 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, 0x06, 0x49, 0xcd, 0x97, ++ 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, 0x82, 0xa5, 0x57, 0x04, 0x11, 0xbd, 0x53, 0xd2, 0xad, 0xfc, ++ 0x8d, 0xe1, 0xe3, 0x10, 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, 0x67, 0x4f, 0x60, 0x1a, 0x8d, 0x64, ++ 0xae, 0x89, 0xe8, 0x8e, 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, 0xd0, 0x48, 0xa2, 0xa8, 0xae, 0x60, ++ 0x8e, 0xa4, 0x71, 0x67, 0xd2, 0xc1, 0x84, 0x94, 0x9c, 0x0d, 0xa6, 0xba, 0x91, 0x60, 0x8e, 0xf8, ++ 0xee, 0xd3, 0x19, 0x9f, 0xae, 0xa3, 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, 0xc4, 0xfb, 0xee, 0x93, ++ 0xce, 0xfe, 0x80, 0x76, 0x3b, 0x3c, 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, 0xf7, 0x33, 0xce, 0x0b, ++ 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, 0x86, 0x3a, 0x64, 0x0a, 0xcb, 0x06, 0x6e, 0x0e, 0x2e, 0x45, ++ 0x0e, 0x10, 0x50, 0x45, 0xc3, 0xf8, 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, 0x5d, 0xc6, 0x0e, 0xdd, ++ 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, 0x6b, 0x63, 0x27, 0x21, 0x08, 0x5d, 0x6e, 0xb6, ++ 0x4e, 0x4a, 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, 0x3b, 0x95, 0x4e, 0x2e, ++ 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, 0x4f, 0xfa, 0x28, 0xbe, ++ 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, 0xfc, 0xdd, 0x7c, 0x32, 0x08, 0x26, ++ 0x68, 0xed, 0xdf, 0x53, 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, 0x29, 0xa9, 0x68, 0x4d, ++ 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, 0xd7, 0xcd, 0x10, 0xfa, 0x1a, 0x61, 0x48, 0xd5, ++ 0xa8, 0x03, 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, 0x20, 0xa3, 0x91, 0x61, 0x83, 0x5c, 0xa8, 0x9b, ++ 0x88, 0x2e, 0x96, 0x89, 0xa5, 0x6e, 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, 0xb0, 0x94, 0x88, 0x03, ++ 0xe8, 0x59, 0xfe, 0x71, 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, 0x7d, 0x46, 0xe5, 0x0f, 0xe8, 0x68, ++ 0xc8, 0x74, 0x67, 0x98, 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, 0xd6, 0xc7, 0xc8, 0xf0, ++ 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, 0x02, 0x16, 0xbc, 0xb3, 0x14, 0x75, 0xeb, 0xf4, ++ 0xcb, 0x31, 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, 0xe4, 0xc3, 0xca, 0x41, 0x27, 0xbd, 0xcb, 0x6c, ++ 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, 0xe5, 0x55, 0x0d, 0x7f, 0x50, 0x94, 0x72, 0x26, 0xab, 0x07, ++ 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, 0x26, 0x66, 0x41, 0xee, 0x8b, 0x9f, ++ 0x6b, 0xa8, 0x4d, 0x24, 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, 0xd8, 0xd3, 0x6b, 0xd1, ++ 0x4b, 0x85, 0xd4, 0xcd, 0x87, 0x1c, 0x8c, 0x69, 0xfa, 0x11, 0xd1, 0x0f, 0xeb, 0x1b, 0x4b, 0x49, ++ 0x2b, 0xf2, 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, 0x4b, 0xda, 0xbe, 0x80, 0x2b, 0x22, ++ 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, 0x8d, 0x48, 0x0b, 0xba, ++ 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, 0xb6, 0xe0, 0x3e, 0xe1, 0x56, 0x5e, 0xe7, 0xc1, ++ 0xc7, 0xe6, 0xf8, 0xf0, 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, 0x65, 0x96, 0xc7, 0x59, ++ 0xa7, 0x91, 0x90, 0x08, 0x04, 0xda, 0x2b, 0x76, 0xb9, 0x89, 0xd2, 0xc6, 0x30, 0x0d, 0xa7, 0x32, ++ 0x87, 0xbc, 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, 0xa4, 0x34, 0x03, 0xc5, 0x87, 0xaa, ++ 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, 0x96, 0x03, 0xa8, 0x32, 0x25, 0xaf, 0x9a, 0xf8, 0x67, 0xe4, ++ 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, 0x53, 0x5d, 0xa9, 0x30, 0x47, 0x7c, ++ 0x27, 0x25, 0xb1, 0x2a, 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, 0xfc, 0xab, 0x27, 0x17, ++ 0x07, 0x08, 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, 0x41, 0x8e, 0xbf, 0x7a, 0xcf, 0x63, 0x07, 0x8f, ++ 0x24, 0x60, 0x23, 0x5d, 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, 0x0d, 0xd1, 0x24, 0x8b, ++ 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, 0x3e, 0x19, 0x04, 0x13, ++ 0x64, 0x3a, 0xd2, 0x4c, 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, 0xe4, 0x5a, 0x6b, 0x82, 0x64, 0x78, ++ 0x44, 0x17, 0x4b, 0xa5, 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, 0x92, 0xa8, 0x58, 0x4a, 0x44, 0xe0, ++ 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, 0x94, 0x55, 0x13, 0x33, 0xc1, 0x77, 0xa4, 0xae, ++ 0x84, 0xf9, 0x9b, 0x96, 0x4b, 0xf3, 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, 0xf2, 0xbf, 0x84, 0x36, ++ 0xe4, 0x8e, 0xf3, 0x6e, 0x37, 0x91, 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, 0xa7, 0x24, 0xe4, 0x5d, ++ 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, 0x89, 0xe6, 0x94, 0xec, 0xc4, 0xc5, ++ 0xa2, 0x5e, 0xe5, 0x91, 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, 0xe0, 0x83, 0xa2, 0x55, ++ 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, 0x4a, 0xb7, 0x28, 0xfb, 0x24, 0xe8, 0xd3, 0x4b, 0x82, 0xcd, ++ 0xe2, 0x04, 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, 0xbe, 0x3d, 0x86, 0xd0, 0xe2, 0xa6, ++ 0xc2, 0x29, 0x8d, 0x69, 0xd5, 0xa1, 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, 0xb5, 0x18, 0xc2, 0x3e, ++ 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, 0x48, 0x19, 0xd0, 0xfc, 0x49, 0x54, 0x2c, 0x25, 0x22, 0x70, ++ 0x02, 0xc7, 0x5d, 0x5a, 0x2d, 0x65, 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, 0x1f, 0xed, 0x02, 0xe8, ++ 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, 0xdf, 0x95, 0xa5, 0x73, 0x4a, 0x76, 0x62, 0x83, ++ 0x42, 0x9d, 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, 0x39, 0x40, 0xd3, 0x81, 0x79, 0xbe, 0x42, 0x1b, ++ 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, 0xf1, 0xf3, 0xf2, 0x49, 0x64, 0x86, 0xbb, 0x0c, 0x61, 0x1f, ++ 0x41, 0xd8, 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, 0x12, 0x74, 0x88, 0xc4, 0x41, 0x87, ++ 0x21, 0xaf, 0x56, 0xc4, 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, 0x88, 0xa1, 0xdd, 0x5f, 0x21, 0xec, ++ 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, 0x1b, 0xf5, 0xfe, 0x53, 0xee, 0x97, 0x01, 0x74, ++ 0xe1, 0x41, 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, 0x7f, 0xc8, 0x77, 0xaa, 0xe1, 0x3a, ++ 0xc1, 0x6c, 0x1f, 0x1e, 0x0f, 0x17, 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, 0x44, 0x62, 0xc1, 0xa2, ++ 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, 0x4c, 0x86, 0xe3, 0xf2, 0x93, 0xef, 0x11, 0xf9, 0xa1, 0xc9, ++ 0x81, 0x36, 0xee, 0x0f, 0xe6, 0xea, 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, 0x22, 0x31, 0x81, 0x51, ++ 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, 0x65, 0x01, 0x95, 0xbe, 0x64, 0xd5, 0xba, 0x3f, ++ 0x9a, 0x1e, 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, 0x57, 0x1d, 0x9a, 0xa7, ++ 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, 0x02, 0x86, 0xfa, 0xcc, ++ 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, 0x7e, 0x63, 0x8c, 0xbd, 0x0f, 0x6b, 0x31, 0x4e, 0xda, 0x54, ++ 0x3a, 0x87, 0xde, 0x8d, 0xa7, 0x03, 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, 0xa8, 0x73, 0x3a, 0x1a, ++ 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, 0x9d, 0x06, 0xf8, 0x02, 0x9b, 0xbb, 0x1a, 0x82, ++ 0x7a, 0xdd, 0x2f, 0x9c, 0x4e, 0xfe, 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, 0xce, 0x20, 0x7a, 0xe9, ++ 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, 0xa8, 0x84, 0x92, 0x6f, 0x14, 0x25, 0xfd, 0xe8, 0x5a, 0x71, ++ 0x79, 0x98, 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, 0xa3, 0x22, 0x3f, 0x5a, 0x79, 0x75, ++ 0x59, 0xb5, 0x24, 0x02, 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, 0xd5, 0xd0, 0x0c, 0x92, 0x59, 0xed, ++ 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, 0x56, 0x0f, 0x4f, 0x05, 0x59, 0x09, 0x39, 0x86, ++ 0x19, 0xef, 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, 0x6a, 0xc1, 0x19, 0x1e, ++ 0xf9, 0x2c, 0x9c, 0xc9, 0x85, 0x71, 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, 0xf3, 0xfc, 0xf9, 0x50, ++ 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, 0xa1, 0x61, 0xce, 0x9e, 0xc0, 0x34, 0xd9, 0xc8, ++ 0xb9, 0x76, 0x6d, 0xd8, 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, 0x95, 0xaf, 0xb9, 0xa3, ++ 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, 0xae, 0x08, 0x22, 0xb9, 0xa6, 0x67, 0x99, 0x3b, ++ 0xff, 0xa6, 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, 0xf9, 0x45, 0xd2, 0x08, 0xff, 0xab, ++ 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, 0xcb, 0xeb, 0xfb, 0x1a, 0x8f, 0xb7, 0xe1, 0xc0, 0xdf, 0x33, ++ 0xbf, 0xfc, 0x8a, 0x36, 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, 0x15, 0x62, 0xb4, 0x5b, 0xbf, 0x58, ++ 0x9f, 0xd1, 0x13, 0xdf, 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, 0x87, 0x93, 0x9f, 0xc0, ++ 0x7f, 0x12, 0x5a, 0x05, 0xe3, 0xe7, 0xc9, 0x45, 0x03, 0x1d, 0xe2, 0x0b, 0x1e, 0xae, 0x7f, 0x8e, ++ 0x5f, 0x3f, 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, 0x2d, 0x66, 0x5f, 0x16, ++ 0x3f, 0x48, 0xab, 0x14, 0x0a, 0x1a, 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, 0x78, 0xfd, 0x3f, 0x7d, ++ 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, 0x76, 0x9e, 0xea, 0xa1, 0x78, 0xde, 0x4b, 0x35, 0x1f, 0xe5, ++ 0x3c, 0x0d, 0x39, 0x63, 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, 0x89, 0x87, 0x3c, 0xe1, ++ 0x1c, 0x20, 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, 0xc7, 0x7d, 0xb9, 0x2b, 0xba, 0x4f, 0x1c, 0x79, ++ 0x7c, 0x57, 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, 0x23, 0xfe, 0xef, 0xd4, 0x7c, 0x12, ++ 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, 0xdc, 0x1c, 0x5c, 0x8a, ++ 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, 0x3f, 0x7a, 0xd4, 0x97, 0x45, 0x21, 0xbc, 0xc4, ++ 0x9c, 0x94, 0x81, 0xa8, 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, 0x76, 0xe9, 0x9c, 0x5c, ++ 0xfc, 0xe3, 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, 0x30, 0x13, 0x38, 0xb0, 0x23, 0x72, 0xfc, 0x37, ++ 0xdc, 0xce, 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, 0xd6, 0xc6, 0x4e, 0x42, 0x10, 0xba, 0xdc, 0xaf, ++ 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, 0xbe, 0x8c, 0x95, 0x5e, 0x4d, 0x8b, 0xcb, 0xac, 0x30, 0xd4, ++ 0x10, 0xf7, 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, 0x3b, 0x79, 0xf8, 0x64, 0x10, 0x4c, ++ 0x70, 0x80, 0xc5, 0x6d, 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, 0xad, 0xff, 0x70, 0x27, ++ 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, 0x01, 0x57, 0x7c, 0xe2, 0xd7, 0x5e, 0x9e, 0x37, 0x50, 0xbf, ++ 0xb0, 0x6e, 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, 0x56, 0xc5, 0x07, 0x0a, 0xb0, 0xf1, ++ 0x90, 0x43, 0x8c, 0xb7, 0xba, 0x97, 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, 0x34, 0xc2, 0x90, 0x69, ++ 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, 0x03, 0xf9, 0x84, 0xe5, 0xba, 0xe2, 0x61, 0x59, 0xf0, 0x02, ++ 0xd0, 0x19, 0x7d, 0xa6, 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, 0x52, 0x91, 0xd0, 0x9a, ++ 0xf3, 0x71, 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, 0xa9, 0x39, 0x7b, 0x17, 0x90, 0x23, 0xf3, 0x9e, ++ 0xd3, 0x5c, 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, 0x0d, 0xe5, 0xa3, 0xeb, 0xd3, 0x06, ++ 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, 0xba, 0x13, 0xa6, 0x50, 0x97, 0x30, 0xf6, 0x70, 0xb3, 0x6d, ++ 0x93, 0x06, 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, 0xe1, 0xc2, 0xc5, 0xb8, 0x93, 0xf5, ++ 0x73, 0xc5, 0x57, 0x1a, 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, 0x60, 0x59, 0x5c, 0x85, 0x73, 0xbb, ++ 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, 0xd3, 0x2f, 0x51, 0x3e, 0x16, 0xab, 0x6f, 0x4d, 0x53, 0x23, ++ 0x33, 0x9f, 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, 0x3a, 0xd6, 0x33, 0x48, ++ 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, 0xb8, 0xbd, 0x5e, 0x57, 0xfa, 0x8c, 0x09, 0x1e, 0x13, 0xd0, ++ 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, 0x60, 0x96, 0xed, 0x90, 0x21, 0x70, 0x7d, 0x71, 0x75, 0x40, ++ 0x55, 0x62, 0x29, 0x1d, 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, 0x4e, 0xb9, 0x55, 0xd8, ++ 0x35, 0x15, 0x41, 0xe5, 0x93, 0x28, 0x0b, 0x04, 0xe2, 0xf9, 0xcd, 0x57, 0x1b, 0x22, 0x35, 0xb3, ++ 0x15, 0x38, 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, 0xbb, 0xa5, 0x28, 0xea, 0x15, 0x2b, ++ 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, 0xb6, 0x71, 0xf3, 0x42, 0x3a, 0x3e, 0xb1, 0xd7, 0xf5, 0x65, ++ 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, 0x62, 0x38, 0x15, 0x97, 0x4c, 0xcc, 0x82, 0x1f, 0xd5, 0xfd, ++ 0xb5, 0xa1, 0x60, 0xc7, 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, 0xd6, 0x19, 0xd7, 0x84, 0xb5, 0x96, ++ 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, 0x1a, 0xfe, 0xa0, 0xeb, 0xe4, 0x4c, 0x95, 0x0e, ++ 0xb6, 0xe4, 0xf2, 0xb0, 0x58, 0xa7, 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, 0x26, 0xfe, 0xb6, 0x0a, ++ 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, 0xdb, 0xd2, 0x37, 0x22, 0x61, 0x1e, 0x15, 0x36, 0x96, 0x92, ++ 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, 0xfb, 0xcb, 0x40, 0xad, 0xf6, 0xf9, ++ 0xd6, 0x93, 0x9a, 0x48, 0x24, 0xc5, 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, 0x73, 0x65, 0xd6, 0x61, ++ 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, 0xcf, 0x25, 0x0c, 0xa2, 0xea, 0x58, 0x36, 0x2f, ++ 0x16, 0x7d, 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, 0x7a, 0x50, 0xd9, 0x90, 0x16, 0xb7, ++ 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, 0x8c, 0x0b, 0x76, 0xdc, ++ 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, 0x26, 0x99, 0x96, 0x77, 0xbf, 0xc3, 0x56, 0x44, ++ }, ++ { /* 15 */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, 0xa2, 0x6e, 0xcf, ++ 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, 0x5d, ++ 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, 0x92, ++ 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, 0xba, ++ 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x75, ++ 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, 0xe7, ++ 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x28, ++ 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, 0x59, 0xf6, 0xb7, ++ 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, 0x78, ++ 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0xea, ++ 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, 0x7c, 0x44, 0x25, ++ 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x0d, ++ 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, 0xc2, ++ 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, 0x50, ++ 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x9f, ++ 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, 0xb2, 0x2f, 0xad, ++ 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, 0x62, ++ 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, 0x80, 0x35, 0xf3, 0xf0, ++ 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, 0x3f, ++ 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x17, ++ 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, 0x3a, 0xd8, ++ 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, 0x4a, ++ 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, 0x5a, 0xe6, 0x85, ++ 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, 0x1a, ++ 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, 0xd5, ++ 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, 0x05, 0x47, ++ 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x88, ++ 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, 0x41, 0x26, 0xa2, 0xa0, ++ 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, 0x6f, ++ 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0xfd, ++ 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, 0x03, 0x10, 0x32, ++ 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, 0x99, ++ 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, 0x56, ++ 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, 0xc4, ++ 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, 0x0b, ++ 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, 0x25, 0x23, ++ 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0xec, ++ 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, 0x7e, ++ 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, 0xb1, ++ 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, 0x2e, ++ 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, 0x5c, 0xc6, 0xe1, ++ 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, 0x73, ++ 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, 0xdb, 0x1a, 0xbc, ++ 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, 0x94, ++ 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, 0x91, 0xbd, 0x5b, ++ 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, 0xc9, ++ 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, 0x06, ++ 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, 0xb4, 0x15, 0x71, 0x34, ++ 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, 0xfb, ++ 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, 0x69, ++ 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, 0xa6, ++ 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0x8e, ++ 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, 0x7a, 0x64, 0x41, ++ 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, 0xd3, ++ 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x1c, ++ 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, 0x87, 0x83, ++ 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, 0x4c, ++ 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, 0xde, ++ 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, 0x11, ++ 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, 0x39, ++ 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, 0xf6, ++ 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, 0x64, ++ 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, 0xa4, 0x4e, 0xab, ++ 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, 0xf1, ++ 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x3e, ++ 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, 0xac, ++ 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, 0x63, ++ 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, 0x4b, ++ 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, 0x84, ++ 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0x16, ++ 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, 0x75, 0xd9, ++ 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x46, ++ 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, 0x89, ++ 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, 0x1b, ++ 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0xd4, ++ 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, 0x19, 0x31, 0xfc, ++ 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, 0x33, ++ 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, 0x9e, 0xed, 0xa1, ++ 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, 0x6e, ++ 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, 0x3f, 0x93, 0x5c, ++ 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, 0x93, ++ 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, 0x01, ++ 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, 0x1a, 0x21, 0xce, ++ 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, 0xe6, ++ 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x29, ++ 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, 0x75, 0x34, 0xbb, ++ 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, 0x74, ++ 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, 0x66, 0x65, 0xeb, ++ 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, 0x24, ++ 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, 0xb6, ++ 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, 0xd7, 0x79, ++ 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, 0x51, ++ 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, 0x44, 0x09, 0x70, 0x9e, ++ 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, 0x0c, ++ 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, 0xc3, ++ 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, 0xe2, 0x68, ++ 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, 0xa7, ++ 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, 0x47, 0xad, 0x3e, 0x35, ++ 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, 0xfa, ++ 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, 0xe7, 0x99, 0xd2, ++ 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, 0x45, 0xf7, 0x1d, ++ 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, 0x8f, ++ 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, 0x40, ++ 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, 0xdf, ++ 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0x10, ++ 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, 0xf4, 0xc8, 0x82, ++ 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, 0x4d, ++ 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, 0x65, ++ 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, 0xaa, ++ 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, 0x6a, 0x39, 0xb3, 0x38, ++ 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, 0xf7, ++ 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0xc5, ++ 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, 0x0a, ++ 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, 0x98, ++ 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, 0xbd, 0x7f, 0x57, ++ 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, 0x55, 0xb6, 0x7f, ++ 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, 0xb0, ++ 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, 0x30, 0xd2, 0x6a, 0x22, ++ 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, 0xed, ++ 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, 0x72, ++ 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, 0xbd, ++ 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, 0x2f, ++ 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, 0x6b, 0xe4, 0x89, 0xe0, ++ 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, 0xc8, ++ 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, 0x07, ++ 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, 0x8b, 0x9c, 0x95, ++ 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0x5a, ++ 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, 0xe6, 0xd9, 0xbb, 0x21, ++ 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, 0xee, ++ 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, 0x5e, 0x67, 0x7c, ++ 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, 0xb3, ++ 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0x9b, ++ 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, 0x8b, 0xb6, 0xae, 0x54, ++ 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, 0xc6, ++ 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, 0x31, 0x72, 0x09, ++ 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, 0x80, 0x4d, 0x96, ++ 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, 0x59, ++ 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, 0xcb, ++ 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, 0x04, ++ 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, 0x2c, ++ 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, 0xe3, ++ 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, 0x71, ++ 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, 0x51, 0x68, 0x84, 0xbe, ++ 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, 0x8c, ++ 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x43, ++ 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, 0x48, 0xd1, ++ 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x1e, ++ 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, 0x36, ++ 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, 0xf9, ++ 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, 0x21, 0x33, 0x6b, ++ 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, 0x83, 0x5d, 0xa4, ++ 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, 0x3b, ++ 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, 0xf4, ++ 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, 0x66, ++ 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, 0xa9, ++ 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, 0xff, 0x19, 0x81, ++ 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, 0x4e, ++ 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, 0x4b, 0x78, 0xc5, 0xdc, ++ 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, 0x13, ++ 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0xb8, ++ 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, 0x8b, 0x77, ++ 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, 0xe5, ++ 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, 0xa4, 0x5b, 0x57, 0x2a, ++ 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, 0x02, ++ 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, 0xcd, ++ 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, 0x34, 0x42, 0x5f, ++ 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, 0x90, ++ 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, 0x27, 0x13, 0x0f, ++ 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, 0xc0, ++ 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, 0xa0, 0xcf, 0x52, ++ 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, 0x02, 0xa1, 0x9d, ++ 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, 0xb5, ++ 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, 0x7a, ++ 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, 0xe8, ++ 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, 0x27, ++ 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, 0xcc, 0xca, 0x15, ++ 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, 0xda, ++ 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, 0xbe, 0x4b, 0x16, 0x48, ++ 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, 0x87, ++ 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, 0xaf, ++ 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, 0x60, ++ 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0xf2, ++ 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, 0x3d, ++ 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, 0xa2, ++ 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, 0x12, 0x37, 0x52, 0x6d, ++ 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, 0x12, 0xe0, 0xff, ++ 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0x30, ++ 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, 0x7f, 0x58, 0x47, 0x18, ++ 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, 0xd7, ++ 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, 0x45, ++ 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, 0x8a, ++ 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0xd0, ++ 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, 0xe3, 0xf6, 0x69, 0x1f, ++ 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, 0x8d, ++ 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, 0x42, ++ 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, 0x6a, ++ 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xa5, ++ 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, 0x37, ++ 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, 0xf8, ++ 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, 0xa3, 0x0d, 0xf1, 0x67, ++ 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, 0xaf, 0x9f, 0xa8, ++ 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0x3a, ++ 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, 0x39, 0x28, 0x43, 0xf5, ++ 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, 0xdd, ++ 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0x12, ++ 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, 0x56, 0x80, ++ 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0x4f, ++ 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, 0xf9, 0xe6, 0x28, 0x7d, ++ 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, 0xb2, ++ 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, 0x61, 0xf4, 0x20, ++ 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, 0xc3, 0x9a, 0xef, ++ 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, 0xc7, ++ 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, 0x94, 0x89, 0x3d, 0x08, ++ 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, 0x9a, ++ 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, 0x55, ++ 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, 0xde, 0xca, ++ 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, 0x05, ++ 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, 0x23, 0x38, 0x02, 0x97, ++ 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, 0x58, ++ 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, 0x70, ++ 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, 0xcb, 0xbf, ++ 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, 0x2d, ++ 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, 0xe2, ++ 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, 0x49, ++ 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, 0x3b, 0x51, 0x37, 0x86, ++ 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, 0x74, 0x85, 0x14, ++ 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, 0xdb, ++ 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, 0x56, 0x3e, 0x22, 0xf3, ++ 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, 0x3c, ++ 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, 0xae, ++ 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, 0x90, 0x61, ++ 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, 0xfe, ++ 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, 0x0d, 0x08, 0xc1, 0x31, ++ 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, 0xa3, ++ 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, 0xe1, 0x8f, 0x1d, 0x6c, ++ 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, 0x67, 0xd4, 0x44, ++ 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, 0x8b, ++ 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, 0x8c, 0xe0, 0x08, 0x19, ++ 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, 0xd6, ++ 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, 0xe4, ++ 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, 0x18, 0x2b, ++ 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, 0xb9, ++ 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, 0xbb, 0x64, 0xc4, 0x76, ++ 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, 0x5e, ++ 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, 0x91, ++ 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, 0x0b, 0xd1, 0x03, ++ 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0xcc, ++ 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, 0x53, ++ 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, 0x9c, ++ 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0x0e, ++ 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, 0xc1, ++ 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0xe9, ++ 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, 0x7a, 0x77, 0x95, 0x26, ++ 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, 0xb4, ++ 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, 0x7b, ++ }, ++}; ++ ++static const unsigned char kuz_table_inv_LS[16][256 * 16] = ++{ ++ { /* 0 */ ++ 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, ++ 0x2d, 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, 0x91, 0xbd, ++ 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, ++ 0x8f, 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, 0x51, 0x68, 0x84, ++ 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, ++ 0x30, 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, 0xb4, 0x15, 0x71, ++ 0x38, 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, 0x87, ++ 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, ++ 0x54, 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, ++ 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, ++ 0x9e, 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, 0x4b, 0x78, 0xc5, ++ 0x39, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, ++ 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, ++ 0x7e, 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, 0x8b, 0x9c, ++ 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, ++ 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, ++ 0x64, 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, 0xe7, 0x99, ++ 0x03, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, ++ 0x57, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, ++ 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, ++ 0x1c, 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, 0x41, 0x26, 0xa2, ++ 0x60, 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, 0xe2, ++ 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, ++ 0x18, 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, ++ 0x21, 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, ++ 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, ++ 0xa8, 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, 0x27, 0x13, ++ 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, ++ 0x29, 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, 0x5c, 0xc6, ++ 0xc6, 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, ++ 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, ++ 0x3f, 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, 0xa4, 0x4e, ++ 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, ++ 0x27, 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, ++ 0x8d, 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, ++ 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, ++ 0x82, 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, 0x5e, 0x67, ++ 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, ++ 0xae, 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, ++ 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, ++ 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, ++ 0x63, 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, ++ 0x49, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, ++ 0xe5, 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, ++ 0x42, 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, ++ 0xe4, 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, 0x56, 0x3e, 0x22, ++ 0x15, 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, 0x3a, ++ 0xb7, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, ++ 0xc8, 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, 0xa3, 0x0d, 0xf1, ++ 0x06, 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, ++ 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, ++ 0x9d, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, ++ 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, ++ 0x75, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, ++ 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, ++ 0xc9, 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, 0xaf, 0x9f, ++ 0xaa, 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, 0xa0, 0xcf, ++ 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, ++ 0x4d, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, ++ 0xbf, 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, ++ 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, ++ 0x73, 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, 0xbd, 0x7f, ++ 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, ++ 0xd5, 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, 0x94, 0x89, 0x3d, ++ 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, ++ 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, ++ 0x2b, 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, 0xdb, 0x1a, ++ 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, ++ 0xa7, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, ++ 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, ++ 0xb2, 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, 0xbe, 0x4b, 0x16, ++ 0x5b, 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, 0xd7, ++ 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, ++ 0xd3, 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, 0xc3, 0x9a, ++ 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, ++ 0xfd, 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, 0x7a, 0x77, 0x95, ++ 0xd4, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, ++ 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, ++ 0x9c, 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, 0xff, 0x19, ++ 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, ++ 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, ++ 0x43, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, ++ 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, ++ 0xd9, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, ++ 0x79, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, ++ 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, ++ 0x53, 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, 0x1a, 0x21, ++ 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, ++ 0xc1, 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, 0xe3, 0xf6, 0x69, ++ 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, ++ 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, ++ 0xe7, 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, 0x90, ++ 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, ++ 0x5e, 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, ++ 0xb5, 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, ++ 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, ++ 0xa2, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, ++ 0xdf, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, ++ 0xa6, 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, 0x34, 0x42, ++ 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, ++ 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, ++ 0x22, 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, ++ 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, ++ 0xe2, 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, 0x74, 0x85, ++ 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, ++ 0xbc, 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, 0x7f, 0x58, 0x47, ++ 0x35, 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, 0x7a, 0x64, ++ 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, ++ 0xee, 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, 0x8c, 0xe0, 0x08, ++ 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, ++ 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, ++ 0x6b, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, ++ 0x51, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, ++ 0xe1, 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, 0x3b, 0x51, 0x37, ++ 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, ++ 0xa3, 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, 0xa4, 0x5b, 0x57, ++ 0xf2, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, ++ 0x71, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, ++ 0x56, 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, 0x75, 0x34, ++ 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, ++ 0x6a, 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, 0xf4, 0xc8, ++ 0x89, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, ++ 0x94, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, ++ 0x65, 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, 0x45, 0xf7, ++ 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, ++ 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, ++ 0x77, 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, ++ 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, ++ 0x7b, 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, 0x6b, 0xe4, 0x89, ++ 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, ++ 0xab, 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, 0x02, 0xa1, ++ 0xd2, 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, 0x61, 0xf4, ++ 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, ++ 0xde, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, ++ 0xc4, 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, ++ 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, ++ 0xcc, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, ++ 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, ++ 0x76, 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, 0x30, 0xd2, 0x6a, ++ 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, ++ 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, ++ 0xd8, 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, 0xde, ++ 0x2e, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, ++ 0x36, 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, ++ 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, ++ 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, ++ 0xb3, 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, ++ 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, ++ 0x95, 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, ++ 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, ++ 0x62, 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, 0x47, 0xad, 0x3e, ++ 0xa1, 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, 0x8b, ++ 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, ++ 0x16, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, ++ 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, ++ 0xe9, 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, 0x0d, 0x08, 0xc1, ++ 0x5c, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, ++ 0x6c, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, ++ 0x6d, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, ++ 0xad, 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, ++ 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, ++ 0x61, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, ++ 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, ++ 0xb9, 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, 0x12, 0x37, 0x52, ++ 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, ++ 0xba, 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, 0x12, 0xe0, ++ 0xf1, 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, 0x18, ++ 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, ++ 0x85, 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, 0x8b, 0xb6, 0xae, ++ 0x83, 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, ++ 0xda, 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, 0x23, 0x38, 0x02, ++ 0x47, 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, 0x75, ++ 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, ++ 0xb0, 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, 0xcc, 0xca, ++ 0x33, 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, ++ 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, ++ 0x96, 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, 0x21, 0x33, ++ 0x6f, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, ++ 0x6e, 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, 0x6a, 0x39, 0xb3, ++ 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, ++ 0xf6, 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, 0x0b, 0xd1, ++ 0x50, 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, 0x3f, 0x93, ++ 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, ++ 0x5d, 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, 0x44, 0x09, 0x70, ++ 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, ++ 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, ++ 0x17, 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, 0x5a, 0xe6, ++ 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, ++ 0x97, 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, 0x83, 0x5d, ++ 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, ++ 0xec, 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, 0x67, 0xd4, ++ 0x58, 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, 0x66, 0x65, ++ 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, ++ 0x1f, 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, 0x03, 0x10, ++ 0xfb, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, ++ 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, ++ 0x09, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, ++ 0x0d, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, ++ 0x7a, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, ++ 0x67, 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, ++ 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, ++ 0x87, 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, 0x31, 0x72, ++ 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, ++ 0xe8, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, ++ 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, ++ 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, ++ 0x4e, 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, 0x9e, 0xed, ++ 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, ++ 0xeb, 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, 0xe1, 0x8f, 0x1d, ++ 0xf8, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, ++ 0xf3, 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, 0xbb, 0x64, 0xc4, ++ 0x3e, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, ++ 0x3d, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, ++ 0xbd, 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, ++ 0x8a, 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, ++ 0x88, 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, 0x80, 0x4d, ++ 0xdd, 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, 0xcb, ++ 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, ++ 0x0b, 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, 0x7c, 0x44, ++ 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, ++ 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, ++ 0x02, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, ++ 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, ++ 0x80, 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, 0xe6, 0xd9, 0xbb, ++ 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, ++ 0xd0, 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, 0xf9, 0xe6, 0x28, ++ 0x24, 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, 0x25, ++ 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, ++ 0xcb, 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, 0x39, 0x28, 0x43, ++ 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, ++ 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, ++ 0xce, 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, 0x56, ++ 0x99, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, ++ 0x10, 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, 0xb2, 0x2f, ++ 0x44, 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, ++ 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, ++ 0x92, 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, 0x48, ++ 0x3a, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, ++ 0x01, 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, 0xa2, 0x6e, ++ 0x26, 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, ++ 0x12, 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, 0x80, 0x35, 0xf3, ++ 0x1a, 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, 0x05, ++ 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, ++ 0x68, 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, ++ 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, ++ 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, ++ 0x8b, 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, ++ 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, ++ 0xd6, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, ++ 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, ++ 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, ++ 0x08, 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, 0x59, 0xf6, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x4c, 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, 0x19, 0x31, ++ 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, ++ 0x74, 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, 0x55, 0xb6, ++ }, ++ { /* 1 */ ++ 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, 0x7d, 0x3e, 0x77, 0x3a, 0x93, 0x9b, ++ 0x03, 0x52, 0x4c, 0x32, 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, 0x44, 0x0e, 0x71, 0xad, 0xa6, 0x23, ++ 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, 0xad, 0x0a, 0xf2, 0x46, 0x78, 0x7d, 0x02, 0x74, ++ 0xa5, 0x43, 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, 0xdb, 0x7b, 0x40, 0x98, ++ 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, 0x79, 0x1b, 0xea, 0x40, ++ 0xfc, 0x85, 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, 0xb7, 0xde, 0x6b, 0x78, 0x61, 0xee, ++ 0xd6, 0xe4, 0xf4, 0xdb, 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, 0x27, 0x6c, 0x2e, 0xc3, ++ 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, 0x07, 0x98, 0x99, 0xfe, 0x6f, 0x23, 0x47, 0x3e, ++ 0xd2, 0x9d, 0xa5, 0x22, 0xf9, 0xf2, 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, 0x9b, 0x82, 0x65, 0x06, ++ 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, 0x60, 0xf6, 0xfe, 0x69, 0x8c, 0x01, 0xa9, 0x7c, 0x1d, 0xe7, ++ 0x65, 0x24, 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, 0x9b, 0x11, 0xab, 0xb0, 0x0e, 0x8f, ++ 0x42, 0x41, 0x90, 0xd6, 0x82, 0xee, 0xc6, 0x18, 0xe9, 0x80, 0xa3, 0xb7, 0xcf, 0x8f, 0xfe, 0x8e, ++ 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, 0x86, 0x24, 0x53, 0x1e, 0x73, 0x61, 0xb5, 0x4b, ++ 0xbb, 0x32, 0x16, 0x33, 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, 0x37, 0xc3, 0xb6, 0x05, ++ 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, 0x74, 0x44, 0x4f, 0x46, 0x5f, 0x39, 0xae, 0x8d, 0xc0, 0x6b, ++ 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, 0x40, 0x13, 0x3a, 0x48, 0x34, 0x82, ++ 0x2e, 0x18, 0xf7, 0x91, 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, 0x27, 0x8c, 0xf0, 0xfa, 0x04, 0xe8, ++ 0x7f, 0x2c, 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, 0xb2, 0x3a, 0x86, 0xd4, 0xfb, 0xe6, 0xb3, 0xd7, ++ 0xad, 0xb1, 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, 0x5a, 0x08, 0x16, 0x86, 0x60, 0x64, 0xd6, 0xd1, ++ 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, 0x0a, 0x59, 0xb9, 0xf6, 0x88, 0x1c, 0xe2, 0x99, 0x8f, 0x46, ++ 0x6b, 0x72, 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, 0x30, 0x9c, 0xf2, 0x36, 0x17, 0x80, ++ 0x3b, 0xc9, 0xa4, 0xa5, 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, 0xd6, 0xf0, 0xc2, 0x1f, ++ 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, 0xc9, 0x62, 0x0c, 0x27, 0xdd, 0xec, 0x75, 0x20, ++ 0x7e, 0xa3, 0x29, 0xb8, 0x85, 0xeb, 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, 0xd4, 0x3c, 0xd1, 0x77, ++ 0x3c, 0xe2, 0xb9, 0x6e, 0x07, 0x05, 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, 0x1b, 0xb3, 0x2f, 0xf9, ++ 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, 0x4f, 0x30, 0x11, 0xc3, 0x85, 0xad, 0x5d, 0xdd, 0x3f, 0xdf, ++ 0x67, 0xf9, 0x89, 0x44, 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, 0xf5, 0xc7, 0xca, 0x0c, ++ 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, 0x19, 0x8a, 0x46, 0x2d, 0x37, 0xf8, 0x1f, 0xe8, 0x09, 0x29, ++ 0x16, 0x83, 0x1f, 0x06, 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, 0x57, 0xa7, 0x60, 0xd4, ++ 0x88, 0x09, 0x10, 0xa7, 0x12, 0x1e, 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, 0x5a, 0x2c, 0xe2, 0x53, ++ 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, 0xe8, 0x88, 0x9e, 0x8c, 0xbe, 0x72, 0x9f, 0xd9, 0x43, 0xd6, ++ 0xbc, 0x19, 0x0b, 0xf8, 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, 0xfa, 0x80, 0x5b, 0xe3, ++ 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, 0xa1, 0x8f, 0x59, 0x1d, 0x43, 0x6a, 0x9c, 0x73, 0xb8, 0x8a, ++ 0xc2, 0xba, 0x22, 0x40, 0xb7, 0x4f, 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, 0x2e, 0xbc, 0x8a, 0x94, ++ 0x4e, 0xca, 0x63, 0x1e, 0x57, 0xef, 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, 0xc8, 0x7e, 0x23, 0x02, ++ 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, 0x8d, 0xe8, 0x5d, 0xd6, 0x6a, 0x1e, 0x89, 0xda, ++ 0x0e, 0x56, 0x3a, 0x55, 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, 0xab, 0x8d, 0x59, 0x86, 0x19, 0x0f, ++ 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, 0x21, 0x04, 0x73, 0x81, 0xd1, 0xd7, 0xc3, 0x62, 0x94, 0x3d, ++ 0x99, 0xa1, 0x12, 0x6a, 0x81, 0x6d, 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, 0xc0, 0xc8, 0x6f, 0x61, ++ 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, 0x14, 0xb2, 0xb1, 0x2f, 0xd3, 0x38, 0x07, 0xf1, 0xdd, 0x8c, ++ 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, 0x90, 0xa2, 0xbe, 0x6e, 0x11, 0xe2, 0x8d, 0xba, 0xc8, 0x78, ++ 0x44, 0xe5, 0x08, 0xb2, 0x09, 0x0f, 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, 0x2d, 0x16, 0x71, 0xc8, ++ 0x2d, 0x4a, 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, 0x24, 0x6f, 0x63, 0x82, 0x81, 0x57, 0xa2, 0xcb, ++ 0x5f, 0x62, 0x61, 0xd3, 0xc4, 0x9c, 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, 0x52, 0x9a, 0xae, 0x30, ++ 0x78, 0x07, 0xb1, 0xdc, 0x0e, 0x0a, 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, 0x36, 0xa5, 0x5e, 0x31, ++ 0xcb, 0xc7, 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, 0xc9, 0x99, 0xba, 0x79, 0x7e, 0x7d, ++ 0xd5, 0xb6, 0xb8, 0xe9, 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, 0x56, 0xc1, 0x88, 0xe0, ++ 0x73, 0xa7, 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, 0x03, 0x15, 0x55, 0xec, 0xfc, 0x17, 0x6e, 0x5b, ++ 0x5c, 0x30, 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, 0x4e, 0xdb, 0x23, 0x37, 0x08, 0x13, ++ 0xfe, 0x58, 0x9b, 0x2e, 0xb0, 0x4a, 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, 0x35, 0x0f, 0xa5, 0x6d, ++ 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, 0xcd, 0xef, 0xc0, 0x35, 0x4e, 0xd8, 0x5c, 0x45, ++ 0x1a, 0x08, 0xec, 0xce, 0x10, 0x5d, 0x2e, 0x90, 0x77, 0x0c, 0x1d, 0xc5, 0x50, 0x56, 0xbd, 0x58, ++ 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, 0xd2, 0xdf, 0xb4, 0xa7, 0xcd, 0x43, 0xed, 0xe6, ++ 0xee, 0x7f, 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, 0xd8, 0xa1, 0x89, 0x8a, 0x80, 0x31, 0x4a, 0xff, ++ 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, 0xfd, 0x6c, 0xb7, 0x05, 0x79, 0x23, 0x3c, 0xdf, 0x01, 0x3a, ++ 0xc8, 0x95, 0x49, 0xec, 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, 0x8d, 0x97, 0xcb, 0xd4, 0xd8, 0x5e, ++ 0x8c, 0x70, 0x41, 0x5e, 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, 0xa6, 0x3c, 0xe6, 0xc2, 0xa9, 0x96, ++ 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, 0xfb, 0x56, 0x73, 0xf6, 0x6e, 0x45, 0xaf, 0x0a, ++ 0x38, 0x9b, 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, 0x5f, 0x37, 0xe9, 0x71, 0xa7, 0x5d, 0x64, 0x3c, ++ 0x59, 0xc6, 0xf9, 0xb7, 0x4f, 0x7d, 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, 0xb0, 0x03, 0x21, 0x76, ++ 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, 0x74, 0x19, 0x48, 0x29, 0xac, 0x41, 0xd3, 0x03, ++ 0x10, 0x27, 0x87, 0x62, 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, 0x46, 0xe1, 0xb5, 0x3e, 0xef, 0x92, ++ 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, 0xc0, 0x09, 0x64, 0xe6, 0x6c, 0x89, 0xbc, 0x62, ++ 0xa3, 0xe7, 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, 0x39, 0xe2, 0xcf, 0xde, ++ 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, 0x1b, 0x26, 0xb5, 0xa2, 0x1f, 0x2a, 0x94, 0xc5, 0xf4, 0xe9, ++ 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, 0xef, 0x83, 0x28, 0x2b, 0xbf, 0x2c, ++ 0xfd, 0x0a, 0xd7, 0x1c, 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, 0x44, 0xa2, 0x03, 0x4e, ++ 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, 0x2d, 0x6a, 0x1c, 0x25, 0x21, 0x7e, 0x7f, 0x8c, 0xdf, 0xf8, ++ 0x27, 0x65, 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, 0x2c, 0xb6, 0x38, 0xa6, 0x64, 0x3f, 0xf0, 0x01, ++ 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, 0x54, 0x16, 0xa4, 0x61, 0x9a, 0x87, 0xc9, 0x18, 0xcb, 0x36, ++ 0xf2, 0xd3, 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, 0x1c, 0x53, 0x32, 0xfe, 0x78, 0xe1, ++ 0x92, 0x01, 0xfc, 0x69, 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, 0x0a, 0x7a, 0x5f, 0x0b, ++ 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, 0x1b, 0xbd, 0xb8, 0x80, 0x10, 0xaf, 0x98, 0xc6, ++ 0x5d, 0xbf, 0xa8, 0x4e, 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, 0x0c, 0xed, 0x6a, 0xb3, ++ 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, 0x43, 0x53, 0xde, 0xc2, ++ 0x21, 0xc1, 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, 0xb0, 0xba, 0x86, 0xa6, 0x7f, 0x47, ++ 0x37, 0x42, 0x57, 0x6d, 0x84, 0x2b, 0x59, 0x2e, 0x53, 0x63, 0x7e, 0x47, 0xd1, 0x01, 0x1f, 0x93, ++ 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, 0x3f, 0xd2, 0xdb, 0x02, 0x91, 0xf8, 0x3a, 0x0d, ++ 0x8e, 0xad, 0x88, 0xc3, 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, 0xb8, 0xb5, 0x6d, 0x15, ++ 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, 0xfb, 0x5b, 0x61, 0x57, 0x01, 0x96, 0x62, 0xa8, 0xc5, 0xb9, ++ 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, 0xd2, 0xae, 0x65, 0x59, 0x18, 0x35, ++ 0xec, 0xa2, 0xd5, 0xd1, 0x87, 0xa8, 0xf7, 0x35, 0x0e, 0xf3, 0xf1, 0x3f, 0xde, 0x46, 0x8e, 0x7c, ++ 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, 0x61, 0xa0, 0x66, 0xcf, 0x98, 0x68, 0x0d, 0x8b, 0x82, 0x87, ++ 0x9c, 0x57, 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, 0xb0, 0x9d, 0xe0, 0xdd, 0x53, 0xfc, 0x46, 0x04, ++ 0xd1, 0xcf, 0xe9, 0x10, 0x5d, 0x63, 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, 0xea, 0x2f, 0xc3, 0x25, ++ 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, 0x6d, 0x03, 0x96, 0xa0, 0x14, 0xf4, 0xbe, 0x16, ++ 0xb8, 0x60, 0x5a, 0x01, 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, 0x46, 0x6e, 0x10, 0x26, ++ 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, 0xf2, 0x3d, 0x1b, 0x37, 0xdf, 0x20, 0x66, 0x48, ++ 0xe2, 0xf4, 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, 0x87, 0xc0, 0x97, 0x73, ++ 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, 0x5d, 0xb5, 0x76, 0xbe, 0x2e, 0x20, 0x04, 0x5b, 0x26, 0xd0, ++ 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, 0x5c, 0x40, 0x08, 0xb6, 0x4c, 0x63, ++ 0xb4, 0xeb, 0xa9, 0xc9, 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, 0x41, 0x9f, 0xcd, 0xaa, ++ 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, 0x4b, 0xcb, 0x93, 0x2b, 0x3d, 0xb9, 0xe9, 0x0e, ++ 0x13, 0x75, 0xcb, 0x50, 0xea, 0x2c, 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, 0xc4, 0x93, 0x49, 0xb1, ++ 0x98, 0x2e, 0x97, 0xc5, 0x5c, 0xa3, 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, 0xef, 0x12, 0x0d, 0xc1, ++ 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, 0x75, 0x04, 0xe1, 0x33, 0x74, 0x1a, ++ 0xa6, 0x11, 0xe7, 0x36, 0x22, 0xf9, 0x29, 0xf1, 0x39, 0xf8, 0x71, 0x19, 0xaa, 0xd6, 0xe6, 0xbb, ++ 0x62, 0x0f, 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, 0x17, 0xe9, 0x2f, 0xb6, 0x66, 0xf3, 0xe3, 0x69, ++ 0xb3, 0xc0, 0xb4, 0x02, 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, 0x8c, 0xdc, 0x20, 0x4c, ++ 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, 0x7d, 0x40, 0xcc, 0x90, ++ 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, 0x68, 0x3c, 0x69, 0x57, 0xd3, 0xcd, 0x0c, 0xfb, ++ 0x43, 0xce, 0x15, 0x79, 0x5f, 0x20, 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, 0xe0, 0x55, 0x9c, 0x2e, ++ 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, 0x5c, 0xe3, 0xee, 0x18, 0x3a, 0x49, 0xa0, 0xac, 0xb9, 0xb0, ++ 0x35, 0x9f, 0x9e, 0xf0, 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, 0x8f, 0x76, 0xdb, 0x10, ++ 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, 0x7a, 0xb1, 0x11, 0x1c, ++ 0x26, 0xea, 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, 0x04, 0x1d, 0x4b, 0xe5, 0x92, 0xa1, ++ 0x7d, 0xf1, 0x65, 0x8a, 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, 0xa5, 0x91, 0x77, 0x54, ++ 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, 0x2d, 0x04, 0x0b, 0x43, 0x30, 0x32, 0x6b, 0x89, ++ 0x0a, 0x2f, 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, 0xe5, 0x68, 0x52, 0xca, ++ 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, 0xcf, 0xbb, 0x3b, 0x5f, 0x17, 0x10, 0x02, 0xcc, 0x13, 0x68, ++ 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, 0x49, 0xbf, 0xce, 0xe9, 0x16, 0xba, ++ 0x6e, 0x84, 0xae, 0xda, 0xcb, 0x56, 0xb2, 0x5c, 0xa6, 0xc6, 0xfc, 0x8e, 0x61, 0x02, 0x3e, 0xe5, ++ 0x53, 0xe9, 0x92, 0x1b, 0x11, 0x9d, 0xf5, 0x99, 0xfd, 0x7c, 0xd9, 0xed, 0x55, 0x6b, 0x73, 0xbc, ++ 0x4a, 0xb3, 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, 0x80, 0x26, 0x74, 0x90, 0x68, 0xc7, ++ 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, 0x19, 0x7f, 0x3c, 0x91, ++ 0x32, 0xb4, 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, 0xb2, 0x55, 0x42, 0x35, 0x36, 0xf6, ++ 0x61, 0x5d, 0x11, 0x20, 0xba, 0xc6, 0xa3, 0x23, 0xaa, 0x92, 0x6b, 0xb8, 0x17, 0x5e, 0x45, 0x4a, ++ 0xfb, 0xae, 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, 0xa3, 0xf9, 0x03, 0x79, 0xa6, 0x3b, 0x8c, 0x08, ++ 0x39, 0x14, 0x6d, 0x38, 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, 0x88, 0x87, 0x06, 0x9c, ++ 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, 0x83, 0x71, 0x41, 0xb5, 0xae, 0x06, 0x70, 0xcb, 0x4e, 0x17, ++ 0xfa, 0x21, 0xca, 0xd7, 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, 0x3f, 0xc2, 0x89, 0xe1, 0xee, 0xa8, ++ 0x5b, 0x1b, 0x30, 0x2a, 0x36, 0x22, 0xed, 0x45, 0x23, 0xf7, 0xfa, 0x7c, 0xee, 0x74, 0xe5, 0xf5, ++ 0xa4, 0xcc, 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, 0xef, 0xaa, 0x09, 0xac, 0xf4, 0xa1, 0x22, 0x38, ++ 0xba, 0xbd, 0x93, 0x9c, 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, 0x18, 0x19, 0xd4, 0xa5, ++ 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, 0xad, 0xe1, 0x36, 0xb9, 0xb3, 0xc3, 0x20, 0x9d, 0xf3, 0x4f, ++ 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, 0x8e, 0xfd, 0x08, 0x3a, 0x96, 0x09, 0xe7, 0x81, ++ 0x05, 0xf6, 0xd4, 0x56, 0x2f, 0x70, 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, 0x93, 0x34, 0x29, 0x65, ++ 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, 0xfc, 0xce, 0xea, 0x08, 0x01, 0x66, 0xe8, 0x34, ++ 0x3a, 0x46, 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, 0xf9, 0x2a, 0xa0, 0xbf, ++ 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, 0x45, 0x69, 0xa8, 0x35, 0x0d, 0xb1, 0xbf, 0x44, 0xb0, 0x99, ++ 0x18, 0xd5, 0x25, 0x53, 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, 0x65, 0x70, 0x0e, 0x21, 0x79, 0xdb, ++ 0xc9, 0x1a, 0xcc, 0x43, 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, 0xb1, 0x2c, 0xe4, 0x0e, 0xba, 0xfe, ++ 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, 0xb8, 0x05, 0x1f, 0x30, 0x74, 0x92, 0x83, 0x9b, 0xb1, 0xa3, ++ 0xf6, 0xaa, 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, 0x79, 0xff, 0xec, 0xfa, 0x8e, 0x10, 0x33, 0x24, ++ 0x63, 0x80, 0xd8, 0xbd, 0xc3, 0x99, 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, 0x49, 0x29, 0x81, 0xc9, ++ 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, 0xc1, 0xa3, 0x2c, 0x70, 0x99, 0xfc, ++ 0x49, 0xe1, 0x7e, 0xd5, 0x01, 0xc0, 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, 0x05, 0x3d, 0xce, 0xe4, ++ 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, 0x38, 0x4a, 0x42, 0xfc, 0xfe, 0xdb, 0x7d, 0x33, ++ 0x91, 0x53, 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, 0x7b, 0xd7, 0xf9, 0x28, ++ 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, 0x99, 0x4e, 0x76, 0x6e, ++ 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, 0x55, 0x40, 0x3c, 0xc7, 0x8e, 0xee, 0x6d, 0xef, 0x54, 0x56, ++ 0x08, 0xf2, 0xa2, 0x31, 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, 0xbb, 0x1f, 0x96, 0x49, ++ 0x7c, 0x7e, 0xe0, 0x25, 0xfc, 0xb4, 0x84, 0x10, 0x0f, 0x41, 0xc2, 0xda, 0x8a, 0x4b, 0x15, 0xf4, ++ 0x02, 0xdd, 0xc9, 0x9d, 0x79, 0x5f, 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, 0x5e, 0x77, 0xc4, 0x83, ++ 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, 0x40, 0xf9, 0x25, 0x9e, ++ 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, 0xb9, 0x16, 0x72, 0x07, 0x5d, 0x7f, ++ 0x66, 0x76, 0x0c, 0xeb, 0xec, 0xe9, 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, 0xda, 0x1d, 0xa8, 0xac, ++ 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, 0x54, 0xfb, 0xe7, 0xb9, 0xbe, 0x22, 0x58, 0xad, ++ 0x30, 0x69, 0x4a, 0xa6, 0xd2, 0x04, 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, 0x1c, 0x42, 0xf2, 0x75, ++ 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, 0x94, 0x39, 0x9b, 0xb3, 0x41, 0x85, 0x58, 0xe0, 0xf1, 0x3b, ++ 0xd0, 0x40, 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, 0xe8, 0xe7, 0xc5, 0xf5, 0xa1, 0x85, ++ 0xd9, 0x3d, 0x4b, 0x21, 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, 0x51, 0x30, 0x55, 0x6c, ++ 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, 0x38, 0x8e, 0x35, 0xac, 0xe6, 0x2f, 0xdc, 0x8a, 0x9d, 0x14, ++ 0xaa, 0x9a, 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, 0x88, 0xd7, 0xa2, 0x21, 0xad, 0x27, 0x3b, 0x37, ++ 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, 0x8c, 0xe5, 0x45, 0x38, 0x62, 0x14, 0xe3, 0xff, 0x67, 0x72, ++ 0x60, 0xd2, 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, 0x57, 0x03, 0x38, 0x84, 0x27, 0xea, ++ 0xf8, 0xfc, 0x03, 0x4a, 0x3b, 0xab, 0xcb, 0x20, 0x1e, 0x82, 0x47, 0x77, 0xd7, 0x96, 0x2a, 0x2b, ++ 0x04, 0x79, 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, 0x6f, 0xa4, 0xf0, 0xa9, 0xbc, 0xee, 0x4b, 0xc5, ++ 0x90, 0xdc, 0x35, 0xf4, 0x7b, 0x1c, 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, 0x54, 0x0d, 0x9b, 0x88, ++ 0xe6, 0x8d, 0xbe, 0x7d, 0xd9, 0x48, 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, 0x3b, 0x2e, 0xdc, 0xb6, ++ 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, 0xbb, 0xf9, 0xb6, 0x94, 0x14, 0xce, ++ 0xaf, 0x6c, 0xc0, 0xa8, 0xd8, 0x88, 0x32, 0xd7, 0x8c, 0x5a, 0x6e, 0x33, 0x3e, 0x13, 0x12, 0x52, ++ 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, 0xf8, 0x43, 0x26, 0x1a, 0x92, 0x52, 0xc1, 0x51, ++ 0xa7, 0x9e, 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, 0x4d, 0xa2, 0x85, 0x0c, 0x84, 0x1b, ++ 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, 0x20, 0x52, 0xeb, 0x27, 0xc5, 0xbe, 0x67, 0x95, 0x0b, 0x5d, ++ 0xd8, 0xb2, 0xce, 0x8e, 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, 0xcb, 0x76, 0x7e, 0xea, 0x37, 0xcc, ++ 0x1e, 0x71, 0xbd, 0x37, 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, 0xec, 0xb8, 0xf6, 0x9d, ++ 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, 0xe5, 0xd4, 0x34, 0x81, 0xb9, 0xd3, 0x85, 0x21, ++ 0x64, 0xab, 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, 0x84, 0x6a, 0x6c, 0x2f, ++ 0x9a, 0xf3, 0x5e, 0x58, 0x25, 0xfc, 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, 0xb1, 0x65, 0xc9, 0x42, ++ 0xe3, 0x7b, 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, 0x66, 0x09, 0xa8, 0x1a, 0xf5, 0xd3, ++ 0xf9, 0x73, 0x86, 0xe5, 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, 0xf8, 0x4c, 0x48, 0x8b, ++ 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, 0x12, 0xd6, 0xd0, 0x41, 0xa1, 0xca, 0x51, 0x84, ++ 0x19, 0x5a, 0xa0, 0xfc, 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, 0x21, 0xfb, 0x1b, 0x7b, ++ 0x83, 0xa9, 0xfe, 0xa4, 0x91, 0x30, 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, 0x90, 0x9e, 0xd2, 0x39, ++ 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, 0xbc, 0x9d, 0x5b, 0x4a, 0x0a, 0x67, ++ 0x4f, 0x45, 0xe6, 0xb1, 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, 0x4c, 0x34, 0xe7, 0xa4, 0x41, 0xa2, ++ 0x7b, 0x55, 0xfd, 0xee, 0xaa, 0x9b, 0x8d, 0xb3, 0xdd, 0x9e, 0x76, 0x7d, 0x47, 0x08, 0xf8, 0x12, ++ 0xef, 0xf0, 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, 0xb5, 0x31, 0xaf, 0xeb, 0x28, 0x5f, ++ 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, 0x7c, 0x26, 0x24, 0xa4, ++ 0x74, 0x8c, 0x42, 0x14, 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, 0xe1, 0x4b, 0x31, 0x54, 0x83, 0xbd, ++ 0xc7, 0x4c, 0xf6, 0x16, 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, 0x1a, 0xa1, 0xbd, 0x88, 0xa3, 0xf1, ++ 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, 0x49, 0x6c, 0xf5, 0x22, 0x95, 0xa3, 0x1c, 0xdd, ++ 0x6c, 0x59, 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, 0x3f, 0x75, 0xfa, 0x66, ++ 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, 0x1d, 0x24, 0x1a, 0x41, ++ 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, 0xea, 0x95, 0xf6, 0x5b, 0x33, 0x98, 0x90, 0xd5, ++ 0x3e, 0x3f, 0x70, 0xf3, 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, 0x45, 0xc4, 0xeb, 0x7a, ++ 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, 0x6b, 0x29, 0x3c, 0xbb, 0x2f, 0xda, 0x62, 0xa0, ++ 0xdb, 0xe0, 0x82, 0xbc, 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, 0x0f, 0x47, 0x91, 0xef, ++ 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, 0x8f, 0x1f, 0x2e, 0x11, 0x5e, 0xaf, 0xcc, 0x25, 0x05, 0xd2, ++ 0xe1, 0xa6, 0xa3, 0xb6, 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, 0x1e, 0xbc, 0xf6, 0x6d, 0x31, 0x50, ++ 0xed, 0x2d, 0x50, 0x7e, 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, 0xf1, 0x9c, 0xec, 0xdc, ++ 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, 0xbf, 0xdc, 0x22, 0x07, 0xd9, 0xb7, 0x53, 0xf0, ++ 0x14, 0x5e, 0xd6, 0x9b, 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, 0x09, 0xd0, 0xa4, 0x57, ++ 0xdf, 0x99, 0xd3, 0x45, 0xf1, 0x3d, 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, 0xb3, 0xa9, 0xda, 0x2a, ++ 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, 0xf0, 0x54, 0x40, 0x07, 0x9d, 0xe3, 0x24, 0xc6, 0xd5, 0x9f, ++ 0xbe, 0xc4, 0xc2, 0x65, 0x4b, 0xfb, 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, 0xa4, 0xf7, 0x9f, 0x60, ++ 0xab, 0x15, 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, 0xe3, 0xfe, 0x9e, 0x9a, 0x82, 0xfd, 0x59, 0x97, ++ 0xae, 0xe3, 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, 0xe7, 0x73, 0x52, 0x88, 0x11, 0xc9, 0x70, 0xf2, ++ 0x51, 0x34, 0x5b, 0x86, 0x68, 0xc2, 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, 0x0b, 0x1c, 0xb7, 0x3f, ++ 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, 0x36, 0x4c, 0xa9, 0x87, 0x3e, 0x54, 0xeb, 0x49, 0x2b, 0x11, ++ 0x8f, 0x22, 0x0d, 0x6c, 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, 0xe2, 0x32, 0x97, 0x6f, 0x0f, 0xb5, ++ 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, 0xa5, 0xd3, 0xa9, 0x62, 0x9d, 0x15, 0x50, 0xbe, ++ 0xf4, 0x77, 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, 0xaf, 0xad, 0x94, 0x4f, 0xd0, 0x67, 0xf7, 0xa7, ++ 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, 0xb4, 0x58, 0x07, 0xa6, ++ 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, 0xc2, 0x83, 0xcc, 0x5d, 0xf3, 0xd0, 0x1a, 0xd5, 0xc7, 0xcd, ++ 0x47, 0xb7, 0x44, 0x80, 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, 0x5c, 0xbb, 0xd7, 0xeb, ++ 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, 0x3f, 0xef, 0x7b, 0x58, 0x8a, 0xf3, 0x26, 0x0a, 0xc6, 0xf7, ++ 0x8b, 0x5b, 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, 0x12, 0x9b, 0x2b, 0x81, 0x44, 0x70, ++ 0xa0, 0xb5, 0x7f, 0x52, 0xa9, 0x18, 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, 0x48, 0x4f, 0x69, 0xfd, ++ 0xf5, 0xf8, 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, 0xa8, 0xf4, 0xff, 0xbd, 0x95, 0x07, ++ 0x28, 0xbc, 0x6f, 0xf5, 0xbb, 0x06, 0x78, 0x2a, 0x20, 0xe2, 0xaf, 0x90, 0x12, 0x63, 0x8b, 0xae, ++ 0x57, 0x90, 0xc3, 0xe2, 0xe3, 0x23, 0xf9, 0xf7, 0x92, 0xd8, 0x29, 0x44, 0xe9, 0x85, 0x38, 0x79, ++ 0xb2, 0x4f, 0x31, 0xad, 0x9e, 0xfa, 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, 0xa3, 0x06, 0x42, 0xec, ++ 0x24, 0x37, 0x9c, 0x3d, 0x6e, 0x07, 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, 0x15, 0x92, 0x56, 0x22, ++ 0xcf, 0xbe, 0x54, 0x27, 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, 0x39, 0x30, 0x06, 0x97, 0x35, 0xb8, ++ 0x89, 0x86, 0x95, 0x08, 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, 0x75, 0xf6, 0x80, 0xf3, ++ 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, 0xe4, 0x66, 0x07, 0x64, 0xed, 0xde, 0x1e, 0xa9, ++ 0x55, 0x4d, 0x0a, 0x7f, 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, 0xb7, 0xf2, 0xfc, 0xfa, ++ 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, 0x63, 0xce, 0x2d, 0x8d, ++ 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, 0x62, 0x42, 0x54, 0x7a, 0x9e, 0xbf, 0xab, 0xe2, ++ 0xeb, 0x89, 0xc8, 0x1a, 0xd1, 0x87, 0xfe, 0x96, 0xdc, 0x2c, 0x45, 0x98, 0x13, 0x05, 0x63, 0x9a, ++ 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, 0x26, 0xc8, 0x05, 0x8b, 0x29, 0x4d, 0x57, 0x18, ++ 0xe5, 0xdf, 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, 0x4a, 0x83, 0x7a, 0x95, ++ 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, 0xd2, 0xab, 0xe4, 0xcf, ++ 0x22, 0x93, 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, 0xf4, 0xb4, 0xf7, 0x0b, 0xd9, 0x64, ++ 0xbd, 0x96, 0x8e, 0x57, 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, 0xd5, 0x5a, 0x39, 0x43, ++ 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, 0x0a, 0x7e, 0x3d, 0x2d, 0x4d, 0x72, 0xa7, 0x19, ++ 0x23, 0x1c, 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, 0xd8, 0xd1, 0xbb, 0xc4, ++ 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, 0x9f, 0x36, 0xba, 0xe3, 0xdd, 0xf0, 0x1e, 0x8e, 0xe1, 0x1d, ++ 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, 0x62, 0x5a, 0x0d, 0xe6, 0xa4, 0xd3, 0x22, 0x51, 0xe0, 0x27, ++ 0xa2, 0x68, 0xb6, 0xcf, 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, 0x16, 0x38, 0xad, 0x7e, ++ 0x0f, 0xd9, 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, 0x0c, 0x54, 0x97, 0x36, 0x76, 0x5c, 0x7b, 0xaf, ++ 0x54, 0xc2, 0x8f, 0xd0, 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, 0x98, 0x28, 0x9e, 0x5a, ++ 0x86, 0x5f, 0x2a, 0xf2, 0xbe, 0x40, 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, 0x03, 0xaa, 0xfb, 0x5c, ++ 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, 0x76, 0xe8, 0xbc, 0xc9, 0x77, 0xeb, 0x25, 0xa0, 0x3d, 0xab, ++ 0x5a, 0x94, 0xb5, 0x85, 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, 0xc1, 0xae, 0x87, 0x55, ++ 0x3d, 0x6d, 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, 0x5b, 0xba, 0x25, 0x63, 0x34, 0x69, 0x4d, 0x59, ++ 0x94, 0xa5, 0x64, 0x0d, 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, 0xe8, 0xe3, 0xd0, 0x4d, ++ 0x56, 0x1f, 0x46, 0x4d, 0x3e, 0xed, 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, 0xc6, 0x5f, 0x5a, 0xd9, ++ 0xbf, 0x4b, 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, 0x28, 0xd2, 0x8b, 0x2d, 0xfd, 0xc0, ++ 0x95, 0x2a, 0xe1, 0xa2, 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, 0xc7, 0x39, 0xb2, 0xed, ++ 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, 0x4a, 0x79, 0xa0, 0xce, 0x69, 0xb4, 0x72, 0x86, ++ 0x11, 0xa8, 0x02, 0xcd, 0x93, 0x73, 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, 0x9a, 0xe4, 0x8d, 0x32, ++ 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, 0x1d, 0x11, 0x63, 0xf0, 0x67, 0x9f, 0xca, 0xb2, 0x30, 0x6a, ++ 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, 0x93, 0x58, 0xd5, 0x47, 0x2d, 0x59, 0xa2, 0x60, 0xaa, 0xd8, ++ 0xb0, 0x92, 0xf8, 0x30, 0xe7, 0xa5, 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, 0xfd, 0x71, 0x86, 0x6f, ++ 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, 0x24, 0xc9, 0xce, 0xfa, 0x95, 0xd9, 0xb2, 0xcf, 0x32, 0x1e, ++ 0xdc, 0xcb, 0x9f, 0x77, 0x55, 0xac, 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, 0xc2, 0x04, 0x7c, 0x09, ++ 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, 0x3b, 0x74, 0x5e, 0x85, 0xda, 0x94, 0xf3, 0x50, 0xff, 0xb4, ++ 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, 0x92, 0xbd, 0x5f, 0x11, 0x2c, 0xb7, ++ 0x2a, 0x61, 0xa6, 0x68, 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, 0x4c, 0x14, 0x4f, 0x2d, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xac, 0x3e, 0x8c, 0x9a, 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, 0x4f, 0xbe, 0xb4, 0x71, ++ 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, 0xd8, 0xf3, 0xe1, 0x59, 0xf8, 0x93, 0x2a, 0xe7, 0xac, 0x44, ++ 0x7a, 0xda, 0x78, 0x41, 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, 0x4a, 0xc6, 0x68, 0xd2, 0x9a, 0xb2, ++ }, ++ { /* 2 */ ++ 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, 0x89, 0x86, 0x13, 0x85, 0x5f, 0xe6, ++ 0xe9, 0x63, 0xba, 0xe4, 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, 0x5a, 0x94, 0x21, 0x7c, 0xa5, 0x67, ++ 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, 0xb8, 0x77, 0x64, 0xab, 0x6e, 0x29, 0x15, 0x86, ++ 0x4e, 0xe2, 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, 0x5e, 0x69, 0xe5, 0xad, ++ 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, 0xd8, 0xe3, 0x3e, 0x58, ++ 0xcf, 0xca, 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, 0x60, 0xd2, 0x46, 0x49, 0x9d, 0x59, ++ 0x0c, 0xe9, 0x1b, 0x21, 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, 0xe6, 0x0a, 0xf8, 0xa3, ++ 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, 0x36, 0xbb, 0x43, 0xce, 0xdb, 0xe7, 0x31, 0xa7, ++ 0x12, 0x6d, 0xc1, 0x92, 0xc1, 0xc1, 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, 0x9a, 0x1b, 0xb7, 0x96, ++ 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, 0x59, 0x6b, 0xc3, 0x15, 0x0f, 0xd9, 0x66, 0x88, 0x3d, 0x6b, ++ 0x2b, 0x98, 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, 0xff, 0xd7, 0xc9, 0xdf, 0x6b, 0x14, ++ 0x2c, 0xd5, 0x53, 0xd9, 0x53, 0x53, 0xe3, 0x2d, 0x55, 0x0f, 0x72, 0x28, 0xf2, 0x3a, 0xbc, 0x2d, ++ 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, 0x75, 0x45, 0xaa, 0x9a, 0x8e, 0x2b, 0xf3, 0x18, ++ 0x1b, 0xba, 0x40, 0xdb, 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, 0xd7, 0xf7, 0x0d, 0xdd, ++ 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, 0x7c, 0x34, 0xa3, 0xcb, 0xa4, 0xcc, 0xe2, 0xbb, 0xec, 0x34, ++ 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, 0xe1, 0xa6, 0x05, 0x0c, 0x11, 0xc2, ++ 0xdd, 0xa7, 0xdf, 0x7f, 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, 0xc8, 0x95, 0xdc, 0x52, 0x2a, 0xcf, ++ 0x60, 0x44, 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, 0x7e, 0xdc, 0x06, 0xa4, 0x3c, 0x50, 0xcc, 0x51, ++ 0x72, 0x29, 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, 0x21, 0x6c, 0xae, 0xe3, 0xa6, 0x4b, 0x7b, 0xc7, ++ 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, 0xf3, 0xce, 0x30, 0x6f, 0xb4, 0xeb, 0x42, 0xf8, 0x89, 0xce, ++ 0x06, 0x95, 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, 0x38, 0x9b, 0x73, 0x05, 0x7c, 0xb0, ++ 0x5d, 0x57, 0x3c, 0x19, 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, 0x8c, 0x92, 0xf9, 0xb2, ++ 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, 0xd6, 0x8e, 0x0e, 0x56, 0x6c, 0x90, 0x1f, 0x2c, ++ 0x86, 0x65, 0x0f, 0x97, 0x0f, 0x0f, 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, 0x23, 0xc5, 0xaf, 0xcd, ++ 0xaa, 0xb0, 0x5c, 0x4e, 0x5c, 0x5c, 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, 0xd1, 0xff, 0x13, 0xe0, ++ 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, 0x05, 0x5a, 0xaa, 0x1e, 0xe4, 0x50, 0x27, 0x74, 0xbb, 0x5a, ++ 0x24, 0xda, 0x41, 0xe7, 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, 0xf7, 0x36, 0xad, 0xef, ++ 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, 0xc0, 0x1e, 0xf9, 0xc5, 0x61, 0x5d, 0x4c, 0x51, 0xbf, 0x1e, ++ 0x69, 0x93, 0x59, 0x82, 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, 0x71, 0xbc, 0x76, 0x1a, ++ 0x7a, 0x26, 0x0b, 0x67, 0x0b, 0x0b, 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, 0xa3, 0x47, 0x6a, 0x05, ++ 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, 0xf8, 0x68, 0x85, 0x55, 0x8b, 0x5b, 0x07, 0xb5, 0x1b, 0x68, ++ 0xec, 0x5d, 0x20, 0x8c, 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, 0x8a, 0x9a, 0xe7, 0x8f, ++ 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, 0xac, 0xc9, 0x3f, 0x6e, 0x03, 0x52, 0x1e, 0x28, 0x66, 0xc9, ++ 0x6a, 0x38, 0x2f, 0x1b, 0x2f, 0x2f, 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, 0xa9, 0x5f, 0x48, 0x42, ++ 0x0e, 0x9a, 0xfe, 0xcf, 0xfe, 0xfe, 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, 0x76, 0x09, 0x6d, 0x72, ++ 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, 0x3b, 0xf6, 0x18, 0xd5, 0xf0, 0x83, 0xb6, 0x87, ++ 0x2d, 0x0d, 0xc0, 0xae, 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, 0xc7, 0x4c, 0xba, 0xda, 0x17, 0xa4, ++ 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, 0x70, 0xec, 0xf8, 0xe3, 0x17, 0x0c, 0x96, 0x0b, 0x8b, 0xec, ++ 0xe4, 0x52, 0x32, 0xb2, 0x32, 0x32, 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, 0x8f, 0x96, 0xf6, 0x4d, ++ 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, 0x25, 0x5f, 0x60, 0xde, 0xab, 0x15, 0x84, 0x33, 0xd1, 0x5f, ++ 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, 0x26, 0x69, 0x06, 0xd4, 0xf7, 0x25, 0x99, 0x1f, 0xb8, 0x69, ++ 0x3d, 0x13, 0xe4, 0xd2, 0xe4, 0xe4, 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, 0xb0, 0xc2, 0x35, 0xe3, ++ 0x34, 0xc4, 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, 0xab, 0x38, 0x92, 0x01, 0xfd, 0x2e, 0x8f, 0xa8, ++ 0x90, 0xee, 0xc7, 0x1a, 0xc7, 0xc7, 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, 0x5a, 0xd8, 0xf1, 0x3a, ++ 0x97, 0xa3, 0xb8, 0x9c, 0xb8, 0xb8, 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, 0x61, 0x3d, 0x26, 0x03, ++ 0xb0, 0xd2, 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, 0x0b, 0xa0, 0x4e, 0xe8, 0xb5, 0xb4, ++ 0xe5, 0x8a, 0xa1, 0xc5, 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, 0xc7, 0x76, 0x5d, 0xc4, ++ 0x42, 0x0b, 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, 0x1e, 0x02, 0xad, 0xb1, 0xb8, 0x63, 0x1d, 0x0e, ++ 0x79, 0x8d, 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, 0x53, 0xe9, 0x7b, 0xa4, 0x54, 0x5d, ++ 0xc0, 0x88, 0x73, 0x55, 0x73, 0x73, 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, 0x78, 0xa0, 0x5b, 0xa2, ++ 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, 0xfe, 0x37, 0xe0, 0x29, 0x0f, 0x14, 0x33, 0x85, ++ 0x4b, 0xdc, 0xf4, 0x94, 0xf4, 0xf4, 0x1b, 0x45, 0xd0, 0x5a, 0xf9, 0x73, 0xf5, 0x8f, 0xa7, 0x45, ++ 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, 0x38, 0x9c, 0x82, 0x26, 0x5d, 0x6d, 0xea, 0x52, ++ 0xb8, 0xdd, 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, 0x7c, 0x90, 0xea, 0x06, 0x4b, 0xe4, 0xa4, 0x76, ++ 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, 0x9a, 0x43, 0x5c, 0xda, 0x32, 0xb4, 0x37, 0xf5, 0xeb, 0x43, ++ 0x59, 0xb1, 0x35, 0x06, 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, 0x51, 0x34, 0x6f, 0x94, 0x10, 0xd3, ++ 0x64, 0xa2, 0xd1, 0xd4, 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, 0x97, 0xf7, 0xdf, 0x56, 0x25, 0x30, ++ 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, 0xe1, 0x13, 0x3b, 0xc9, 0x6d, 0x2d, 0x1a, 0x79, ++ 0xb4, 0x34, 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, 0x03, 0x6a, 0x9a, 0xf3, 0xad, 0xee, 0x5c, 0xd5, ++ 0x81, 0x28, 0x70, 0x11, 0x70, 0x70, 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, 0x18, 0x20, 0x78, 0xf4, ++ 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, 0xce, 0x58, 0x54, 0xc2, 0x4d, 0xec, 0xba, 0x4b, ++ 0x78, 0x55, 0xee, 0x89, 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, 0xe6, 0x8d, 0x33, 0x44, 0xff, 0xd4, ++ 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, 0x8c, 0x80, 0xcb, 0xc7, 0xc2, 0x7a, 0x4c, 0x06, ++ 0x5f, 0x24, 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, 0x1c, 0x91, 0x6c, 0x63, ++ 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, 0x4e, 0xf6, 0x48, 0x67, 0x45, 0x6a, 0xe7, 0xb7, 0xfd, 0xf6, ++ 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, 0x9d, 0xd8, 0x9b, 0xa6, 0xb2, 0xc3, ++ 0x29, 0xeb, 0xc9, 0xb1, 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, 0x59, 0xdc, 0xfe, 0xc5, ++ 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, 0xd2, 0xd9, 0xd8, 0xa9, 0xcf, 0xbe, 0xea, 0x1a, 0xc4, 0xd9, ++ 0x07, 0x4d, 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, 0xfb, 0x89, 0x8d, 0xff, 0x3b, 0xe5, 0xd7, 0x39, ++ 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, 0x4b, 0xac, 0xe2, 0x79, 0xa1, 0x3a, 0xc0, 0xc3, 0x46, 0xac, ++ 0xe2, 0xc7, 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, 0xa7, 0x9e, 0xfc, 0x93, 0x8a, 0xfd, ++ 0x31, 0xfa, 0xff, 0xf3, 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, 0x56, 0xc8, 0xcd, 0x40, ++ 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, 0xee, 0x12, 0x8c, 0x70, 0x31, 0xfd, 0xf5, 0x7e, ++ 0x9f, 0xac, 0xaa, 0xa2, 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, 0x64, 0x31, 0x37, 0xc1, ++ 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, 0xdd, 0xef, 0x2f, 0x9a, ++ 0x16, 0x8b, 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, 0x39, 0x14, 0x79, 0x1d, 0x5e, 0xf7, ++ 0x7f, 0x18, 0x91, 0x0f, 0x91, 0x91, 0xae, 0xed, 0x7b, 0x62, 0x6b, 0x72, 0x08, 0xa1, 0x28, 0xed, ++ 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, 0x45, 0x2a, 0x1e, 0x71, 0xcc, 0xd3, 0x7a, 0xd6, ++ 0x6b, 0xe0, 0xbc, 0x6c, 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, 0xe1, 0xbf, 0xe3, 0xcb, ++ 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, 0xcb, 0xb8, 0x4c, 0xff, 0x5e, 0xed, 0x09, 0x1c, 0x2d, 0xb8, ++ 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, 0xf5, 0xf8, 0x8d, 0x2f, 0xfc, 0xe7, ++ 0xb7, 0x9f, 0xf0, 0x64, 0xf0, 0xf0, 0x69, 0x8d, 0x6c, 0xb5, 0x86, 0x5f, 0x75, 0x0d, 0x62, 0x8d, ++ 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, 0x1e, 0x1f, 0x7a, 0x44, 0x1d, 0x23, 0xd2, 0xfb, 0x1c, 0x1f, ++ 0x1c, 0xf7, 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, 0x6a, 0x61, 0x71, 0x7a, 0xec, 0x12, 0xda, 0xe4, ++ 0xfb, 0x0e, 0x7b, 0x76, 0x7b, 0x7b, 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, 0xbb, 0x67, 0x12, 0xf1, ++ 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, 0x34, 0xf7, 0xaf, 0x6c, 0xac, 0x53, 0x59, 0x80, ++ 0xf2, 0xd9, 0xfa, 0x3f, 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, 0xf6, 0x8b, 0xa8, 0xba, ++ 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, 0xbb, 0x1d, 0xfe, 0x58, 0xc3, 0xc7, 0x49, 0x53, ++ 0x9a, 0x92, 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, 0xcf, 0xd7, 0x75, 0x29, ++ 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, 0x71, 0xfe, 0xda, 0xe5, 0x23, 0x1c, 0x9d, 0xae, 0xac, 0xfe, ++ 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, 0x46, 0x38, 0xf9, 0x9f, 0x9b, 0x3f, ++ 0xd0, 0x96, 0x57, 0x29, 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, 0x72, 0xb8, 0x79, 0xe5, ++ 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, 0x8b, 0x72, 0x4a, 0xb3, 0x81, 0x3f, 0xc0, 0x9d, ++ 0x91, 0x36, 0x54, 0x6d, 0x54, 0x54, 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, 0x12, 0x38, 0x5a, 0xb3, ++ 0x02, 0x73, 0xe5, 0xee, 0xe5, 0xe5, 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, 0x90, 0x03, 0x95, 0xd1, ++ 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, 0x3c, 0xe2, 0x5b, 0x65, 0xf4, 0x6f, ++ 0xa7, 0x81, 0xd4, 0x18, 0xd4, 0xd4, 0x0d, 0xca, 0x79, 0x2e, 0x87, 0xd0, 0x7f, 0x15, 0x40, 0xca, ++ 0xdc, 0x7f, 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, 0x96, 0x1a, 0x7d, 0xf1, 0x94, 0xb2, 0x81, 0x46, ++ 0x27, 0x71, 0x37, 0x7e, 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, 0x2f, 0xd5, 0x93, 0xb7, ++ 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, 0x45, 0x4d, 0x92, 0xa6, ++ 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, 0x16, 0xf1, 0x9b, 0x7c, 0xa7, 0xf6, 0x7e, 0x92, ++ 0xca, 0xf4, 0x84, 0x85, 0x84, 0x84, 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, 0xed, 0xaf, 0xdf, 0xb1, ++ 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, 0x36, 0x8a, 0x63, 0xb4, 0x31, 0xe6, 0x29, 0xdd, 0x8d, 0x8a, ++ 0x70, 0x5a, 0xfc, 0xb7, 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, 0x36, 0x48, 0xee, 0x16, ++ 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, 0xc1, 0x7e, 0x43, 0xf9, ++ 0xe1, 0x6c, 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, 0xbb, 0x32, 0x24, 0x70, 0xb4, 0xa5, ++ 0x6f, 0x06, 0xb5, 0x73, 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, 0x02, 0xb9, 0x0a, 0xaa, ++ 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, 0xf1, 0x36, 0x57, 0x90, 0x53, 0xc4, 0xdc, 0x82, ++ 0x33, 0x89, 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, 0xc6, 0xcb, 0x58, 0x91, ++ 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, 0xd9, 0x7f, 0x6d, 0x93, 0xf0, 0x0e, 0xaf, 0x57, 0x56, 0x7f, ++ 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, 0x0a, 0x2f, 0x44, 0xf0, 0x97, 0xf3, ++ 0xfe, 0x30, 0xe1, 0x1e, 0xe1, 0xe1, 0x9f, 0x19, 0xf6, 0xc4, 0xd6, 0xe4, 0x10, 0x81, 0x50, 0x19, ++ 0xb2, 0xa1, 0x6a, 0x0c, 0x6a, 0x6a, 0xe7, 0x65, 0xdd, 0x17, 0xa2, 0x68, 0xde, 0xeb, 0x20, 0x65, ++ 0x10, 0x1e, 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, 0x01, 0x8f, 0x0a, 0x18, 0x22, 0x47, ++ 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, 0x7e, 0xa8, 0x45, 0x9f, ++ 0x87, 0xbd, 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, 0x85, 0x0d, 0x6b, 0x25, 0x04, 0x44, ++ 0x35, 0x1c, 0xf6, 0xec, 0xf6, 0xf6, 0x22, 0x21, 0x8e, 0xcc, 0x27, 0x65, 0xb5, 0xce, 0x24, 0x21, ++ 0x38, 0x2d, 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, 0xd4, 0xc2, 0xe2, 0xf4, 0x1b, 0x24, 0x77, 0x0b, ++ 0x52, 0x15, 0x51, 0xa1, 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, 0xb2, 0x7b, 0x3f, 0x49, ++ 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, 0x15, 0xb9, 0xcf, 0x7e, 0x22, 0x93, 0x97, 0xb6, 0x8e, 0xb9, ++ 0xde, 0x0c, 0xa9, 0xe6, 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, 0xd4, 0x39, 0x04, 0xb1, 0x14, 0x97, ++ 0x8e, 0x6a, 0x1d, 0xa9, 0x1d, 0x1d, 0x60, 0x0f, 0x9d, 0x83, 0xd1, 0xcf, 0x26, 0xc9, 0xbe, 0x0f, ++ 0xa8, 0xc3, 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, 0x69, 0x0b, 0xeb, 0x89, 0x41, 0xfc, 0x86, 0x31, ++ 0xfd, 0x9b, 0x97, 0x87, 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, 0xc8, 0x62, 0x6e, 0x41, ++ 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, 0x0e, 0xfc, 0x1f, 0x24, 0xdb, 0xe0, 0x62, 0x39, 0x29, 0xfc, ++ 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, 0x25, 0xf4, 0xb5, 0x64, 0x48, 0xe0, 0xab, 0x89, ++ 0xf8, 0xa5, 0x0d, 0xef, 0x0d, 0x0d, 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, 0x63, 0x84, 0x2c, 0xa9, ++ 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, 0xd7, 0xa8, 0x78, 0x07, 0xb6, 0xca, 0x2b, 0xde, ++ 0xbb, 0x76, 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, 0x93, 0x07, 0x9a, 0x2e, ++ 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, 0xf6, 0x94, 0x9a, 0x71, 0x50, 0xbb, 0x65, 0x8c, 0x32, 0x94, ++ 0x44, 0x9e, 0x99, 0x2c, 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, 0x95, 0x2a, 0xcb, 0x66, 0x61, 0xbe, ++ 0xbf, 0x90, 0xe2, 0x5a, 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, 0x67, 0xf9, 0x70, 0x01, 0x73, 0x4f, ++ 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, 0x6c, 0xd7, 0xc6, 0xab, 0x62, 0x0f, 0x52, 0x79, 0xd9, 0xd7, ++ 0xfc, 0x43, 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, 0xbc, 0xef, 0x7f, 0x2c, 0x80, 0x82, 0xc5, 0xc8, ++ 0x3a, 0x5e, 0x9b, 0x54, 0x9b, 0x9b, 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, 0x8b, 0x27, 0xe2, 0xda, ++ 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, 0xbe, 0xc4, 0x06, 0x08, 0x1e, 0x3d, ++ 0xf9, 0x7d, 0x9e, 0x98, 0x9e, 0x9e, 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, 0x2b, 0x64, 0x87, 0x20, ++ 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, 0x73, 0x91, 0x5d, 0xbf, 0x17, 0x34, 0x4b, 0x71, ++ 0xd8, 0x99, 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, 0x77, 0xb4, 0x68, 0x27, ++ 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, 0x35, 0x4c, 0xe1, 0xe9, ++ 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, 0x0c, 0xd8, 0x5b, 0x28, 0xb3, 0xc0, 0x74, 0xb0, 0x67, 0xd8, ++ 0x3c, 0xcb, 0x77, 0xa5, 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, 0xf8, 0x22, 0x9e, 0x6a, ++ 0x89, 0x27, 0x62, 0x2f, 0x62, 0x62, 0x03, 0x36, 0x66, 0x0a, 0x5c, 0x30, 0x1d, 0x2c, 0x69, 0x36, ++ 0x0f, 0x42, 0x6d, 0xb8, 0x6d, 0x6d, 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, 0x3e, 0xe9, 0xc6, 0xfb, ++ 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, 0xc4, 0x72, 0x52, 0x3b, ++ 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, 0xd2, 0x9d, 0x38, 0xe1, 0xd8, 0xc6, ++ 0xc2, 0xfb, 0x96, 0xbb, 0x96, 0x96, 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, 0xe8, 0xa3, 0xce, 0x73, ++ 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, 0x4d, 0xd9, 0x28, 0xbc, 0xd3, 0x46, 0x19, 0x4a, ++ 0x88, 0xff, 0xf1, 0x58, 0xf1, 0xf1, 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, 0x55, 0xcc, 0xc2, 0xbf, ++ 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, 0xf9, 0x7a, 0xa7, 0x53, 0xbf, 0x4b, 0x0c, 0x10, 0x3c, 0x7a, ++ 0x1d, 0x2f, 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, 0xc4, 0x1e, 0xa4, 0xf2, 0x71, 0x6d, ++ 0xc7, 0xc5, 0x0c, 0xd3, 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, 0x43, 0x45, 0x8c, 0x9b, ++ 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, 0xb0, 0xf2, 0x01, 0x26, 0x76, 0x51, 0xda, 0x5a, 0x34, 0xf2, ++ 0x85, 0xce, 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, 0x19, 0xf0, 0x2c, 0xc5, 0xfb, 0x26, 0x91, 0x95, ++ 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, 0x7e, 0x10, 0xe7, 0xc7, 0xcc, 0xec, 0xf4, 0x32, 0xa2, 0x10, ++ 0xd3, 0x3d, 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, 0x11, 0xa8, 0xaa, 0x5b, 0x47, 0xbd, ++ 0xd1, 0x4e, 0xc4, 0x5e, 0xc4, 0xc4, 0x06, 0x6c, 0xcc, 0x14, 0xb8, 0x60, 0x3a, 0x58, 0xd2, 0x6c, ++ 0x1e, 0x84, 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, 0x20, 0x4a, 0xd8, 0xb2, 0x7c, 0x11, 0x4f, 0x35, ++ 0x3e, 0xb8, 0x92, 0x4b, 0x92, 0x92, 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, 0x68, 0x21, 0x0b, 0xbb, ++ 0x84, 0x16, 0xea, 0x79, 0xea, 0xea, 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, 0xb3, 0xc6, 0x3a, 0x1c, ++ 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, 0x6e, 0x84, 0x2a, 0xd9, 0x82, 0x75, ++ 0x7d, 0x6b, 0x74, 0xe1, 0x74, 0x74, 0x43, 0x3c, 0x31, 0x49, 0xc2, 0xba, 0x98, 0xa2, 0xbd, 0x3c, ++ 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, 0xff, 0x11, 0x96, 0x78, 0xd5, 0x4e, 0x07, 0x77, ++ 0x41, 0xa0, 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, 0xb1, 0x1d, 0x60, 0x80, 0x23, 0x56, ++ 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, 0x37, 0x98, 0x41, 0xb2, 0x05, 0xf6, 0x22, 0x78, 0xaa, 0x98, ++ 0x21, 0xe4, 0xdb, 0x8f, 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, 0xb7, 0xb9, 0x5c, 0xd0, 0xef, 0x07, ++ 0x55, 0x58, 0x2e, 0x27, 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, 0x89, 0x9e, 0xe8, 0x70, ++ 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, 0x2d, 0x07, 0x83, 0xa9, 0x57, 0x75, 0xc8, 0x15, ++ 0xcd, 0xb9, 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, 0xd6, 0x4a, 0x08, 0x88, ++ 0x0d, 0x31, 0x88, 0x56, 0x88, 0x88, 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, 0xae, 0xea, 0x53, 0x2a, ++ 0x7c, 0xb3, 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, 0x77, 0xde, 0xd0, 0x42, 0x16, 0xb5, ++ 0x37, 0x6f, 0x13, 0x02, 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, 0x25, 0xcd, 0xb1, 0xf0, ++ 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, 0xb4, 0x1c, 0x49, 0xe1, 0x9f, 0x17, 0xa6, 0x54, ++ 0xa2, 0xbf, 0x4e, 0x70, 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, 0xd4, 0xf3, 0x02, 0x22, ++ 0xaf, 0x8e, 0xc6, 0x26, 0xc6, 0xc6, 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, 0x7a, 0x19, 0x51, 0x08, ++ 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, 0x37, 0x42, 0x15, 0x8d, 0x41, 0xdb, ++ 0xe8, 0xbb, 0x29, 0x93, 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, 0xef, 0xf0, 0x69, 0x9c, 0x0e, 0xee, ++ 0x7e, 0xc0, 0x02, 0x78, 0x02, 0x02, 0x39, 0x64, 0x5e, 0x96, 0xde, 0x16, 0x40, 0x41, 0x83, 0x64, ++ 0x5e, 0xfc, 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, 0xdc, 0xcb, 0x54, 0x71, 0xc7, 0xea, ++ 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, 0xf3, 0x87, 0xb9, 0x78, ++ 0xb5, 0xec, 0x15, 0x8a, 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, 0x2f, 0x97, 0xe5, 0x0e, 0xf7, 0x5c, ++ 0x92, 0x9d, 0x22, 0xf4, 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, 0xa0, 0xb5, 0xca, 0xdb, 0x64, 0xeb, ++ 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, 0x9f, 0xcf, 0x3d, 0x6d, 0x51, 0x7d, 0xd6, 0x28, ++ 0xf1, 0x72, 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, 0x2e, 0x68, 0x96, 0xe2, ++ 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, 0xe3, 0x06, 0xe9, 0x61, ++ 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, 0x4b, 0x0d, 0xdf, 0x99, 0x4a, 0x59, 0xa1, 0x23, ++ 0xa5, 0xf2, 0x31, 0xf6, 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, 0xef, 0x16, 0xd5, 0x1b, ++ 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, 0x08, 0xf3, 0x36, 0xcd, 0x1f, 0x95, 0x63, 0x9c, ++ 0xc8, 0x87, 0x61, 0x6b, 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, 0x7d, 0xac, 0x4a, 0x60, ++ 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, 0xb7, 0x8c, 0xef, 0x34, 0xfa, 0x21, 0xeb, 0xa7, 0xc1, 0x8c, ++ 0x73, 0xf1, 0x8a, 0x2e, 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, 0x1b, 0x87, 0xee, 0xab, 0xd0, 0x4e, ++ 0x51, 0xbe, 0x27, 0x38, 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, 0x6a, 0x98, 0x01, 0x11, ++ 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, 0x0c, 0x6b, 0x2d, 0x4a, 0xf1, 0x3e, 0xb3, 0xd2, ++ 0x66, 0xd1, 0x34, 0x3a, 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, 0x4f, 0x55, 0xb0, 0xe1, ++ 0xd6, 0x03, 0xbb, 0xd8, 0xbb, 0xbb, 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, 0x01, 0xbd, 0x05, 0x55, ++ 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, 0x7f, 0x02, 0xc5, 0xc1, 0xf8, 0xfc, 0xff, 0x97, 0x85, 0x02, ++ 0xe3, 0x1f, 0x4d, 0x34, 0x4d, 0x4d, 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, 0xb4, 0x73, 0x21, 0x74, ++ 0x63, 0xef, 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, 0x11, 0x03, 0x1a, 0x08, 0xe4, 0xb3, 0xf2, 0x09, ++ 0x9b, 0x4a, 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, 0x39, 0xba, 0xf4, 0x77, 0x87, 0x37, 0xde, 0xa0, ++ 0xbd, 0xe3, 0x07, 0xb4, 0x07, 0x07, 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, 0xe0, 0x02, 0xe6, 0x9e, ++ 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, 0x9c, 0x2f, 0x90, 0xce, 0x8a, 0xd4, 0x0d, 0xad, 0x39, 0x2f, ++ 0x8d, 0xc1, 0x6b, 0x30, 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, 0xcd, 0x63, 0xfe, 0x2a, 0x80, 0x57, ++ 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, 0xe8, 0xc6, 0x7b, 0x55, 0xa8, 0xe2, 0x4d, 0x17, ++ 0xf3, 0x01, 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, 0xac, 0xca, 0x13, 0x75, 0xbe, 0x6b, 0x03, 0x33, ++ 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, 0x85, 0x8e, 0xd4, 0x0a, ++ 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, 0x3c, 0x3e, 0xf4, 0x88, 0x3a, 0x46, 0x67, 0x35, 0x38, 0x3e, ++ 0xd4, 0x70, 0x5e, 0x36, 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, 0x91, 0xbe, 0x90, 0x84, ++ 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, 0xa6, 0x7d, 0xa8, 0x52, 0x08, 0xf2, 0x50, 0xc0, 0xd3, 0x7d, ++ 0x93, 0x45, 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, 0x15, 0xd1, 0x82, 0x3b, 0xcf, 0x62, ++ 0xb6, 0x47, 0x63, 0x13, 0x63, 0x63, 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, 0x3d, 0xed, 0xc9, 0x04, ++ 0x15, 0x20, 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, 0x25, 0xb8, 0xa1, 0xfe, 0x60, 0xaf, ++ 0xcc, 0x61, 0x68, 0x74, 0x68, 0x68, 0xde, 0x01, 0x83, 0x81, 0x7c, 0x7e, 0x9e, 0xaa, 0xa3, 0x01, ++ 0xac, 0x25, 0xb0, 0xbf, 0xb0, 0xb0, 0x45, 0x50, 0xfd, 0x5d, 0x7a, 0xda, 0xa2, 0xfa, 0x6f, 0x50, ++ 0xc1, 0x50, 0xe0, 0x22, 0xe0, 0xe0, 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, 0x30, 0x40, 0xf0, 0x2b, ++ 0xee, 0x2e, 0xc5, 0x62, 0xc5, 0xc5, 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, 0x1a, 0x99, 0x72, 0x5e, ++ 0xae, 0x56, 0x55, 0x51, 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, 0xd3, 0x12, 0x32, 0xf9, 0xfa, 0x81, ++ 0x9c, 0x07, 0xdc, 0x3b, 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, 0xbc, 0xd2, 0x09, 0x99, ++ 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, 0x27, 0xb8, 0x59, 0xc6, 0x3f, 0x54, 0xc3, 0xae, ++ 0xa3, 0x67, 0xdd, 0x07, 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, 0x9c, 0x13, 0xa9, 0xab, ++ 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, 0xbf, 0xd6, 0x06, 0x66, ++ 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, 0x52, 0xfd, 0xf3, 0x5c, 0xb1, 0x7f, 0x30, 0xb6, ++ 0x40, 0x78, 0x90, 0x33, 0x90, 0x90, 0x53, 0xdf, 0x54, 0x29, 0x04, 0x79, 0x28, 0x60, 0x88, 0xdf, ++ 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, 0xbf, 0x85, 0xe5, 0xdf, 0x2d, 0x6c, 0x99, 0x1d, ++ 0x6d, 0x75, 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, 0x92, 0xba, 0x9f, 0x7b, ++ 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, 0x11, 0x3c, 0x55, 0x4c, ++ 0xff, 0xe8, 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, 0x63, 0x80, 0x58, 0x61, 0xfb, 0x90, ++ 0x0a, 0x7c, 0xf7, 0xd0, 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, 0x95, 0x0f, 0x84, 0x13, ++ 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, 0x44, 0x0c, 0x68, 0x20, 0x16, 0x89, 0x4e, 0x24, ++ 0x19, 0xc9, 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, 0x47, 0xf4, 0x98, 0x0c, ++ 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, 0x4d, 0xc0, 0x2e, 0x6d, 0x19, 0x5a, 0xfa, 0x9b, 0x94, 0xc0, ++ 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, 0xd7, 0x83, 0x72, 0xb7, 0x2b, 0xee, 0xcd, 0x6e, 0x7f, 0x83, ++ 0xb9, 0x05, 0x0e, 0xab, 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, 0x03, 0x04, 0x0f, 0xff, ++ 0xcb, 0x2c, 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, 0x78, 0x08, 0xf1, 0x81, 0xa5, 0x4f, 0x74, 0x38, ++ 0x45, 0x46, 0x0a, 0x5b, 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, 0x83, 0x86, 0xca, 0x37, ++ 0x57, 0x2b, 0xcb, 0xc9, 0xcb, 0xcb, 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, 0x19, 0x9d, 0x7d, 0xa1, ++ 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, 0xf2, 0xdc, 0x12, 0x69, 0x80, 0xfb, 0x49, 0x5d, 0xae, 0xdc, ++ 0x68, 0x4b, 0xca, 0xf5, 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, 0x39, 0x5c, 0xdd, 0x93, ++ 0x4c, 0x91, 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, 0x2b, 0xd3, 0x74, 0x8c, 0xce, 0x6a, 0x70, 0x7c, ++ 0x20, 0x3c, 0x48, 0xf8, 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, 0x14, 0x30, 0x44, 0x8e, ++ 0x4a, 0x04, 0x67, 0xe3, 0x67, 0x67, 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, 0xbd, 0x6f, 0x0c, 0xcc, ++ 0x05, 0x3e, 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, 0x24, 0x37, 0xab, 0xe6, 0x42, 0xe8, ++ 0xc6, 0x1d, 0x9f, 0xa4, 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, 0x0b, 0xa5, 0x27, 0x12, ++ 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, 0x81, 0xcd, 0x90, 0xdc, 0xe9, 0x1e, 0xcb, 0x26, ++ 0x9e, 0x74, 0x39, 0xd5, 0x39, 0x39, 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, 0x2c, 0xd1, 0x9c, 0x48, ++ 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, 0x1f, 0x0d, 0x58, 0x42, 0x29, 0x33, 0xd9, 0x5e, 0x3b, 0x0d, ++ 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, 0xef, 0xf5, 0x0e, 0x27, 0xc1, 0xe8, 0x86, 0x8a, 0xdb, 0xf5, ++ 0xce, 0x12, 0x8d, 0x9a, 0x8d, 0x8d, 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, 0x0e, 0xa9, 0x36, 0xd0, ++ 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, 0xe8, 0x8b, 0xe0, 0x35, 0x4d, 0x98, 0xb7, 0x77, 0x2e, 0x8b, ++ 0x3f, 0x60, 0x01, 0x3c, 0x01, 0x01, 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, 0x20, 0xc1, 0xa0, 0x32, ++ 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, 0x79, 0x6e, 0x09, 0xd5, 0x40, 0x9c, 0xc5, 0xcf, 0x57, 0x6e, ++ 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, 0x14, 0x5e, 0x88, 0x23, 0xed, 0x25, ++ 0xc3, 0x23, 0x05, 0xcc, 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, 0xa0, 0x43, 0x65, 0xfa, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x94, 0x08, 0xce, 0x05, 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, 0xb9, 0xde, 0x18, 0x5b, ++ 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, 0x35, 0xbc, 0x05, 0xbe, 0x6d, 0xd6, 0x34, 0xf1, 0xe4, 0xbc, ++ 0x98, 0xe1, 0xd5, 0x24, 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, 0xe8, 0xdb, 0x5f, 0xd4, 0xe0, 0xf8, ++ }, ++ { /* 3 */ ++ 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, 0x39, 0xbd, 0xfd, 0x81, 0x87, 0xfe, ++ 0xbb, 0xa5, 0xce, 0xde, 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, 0x45, 0x61, 0xc3, 0xdf, 0xcc, 0x2b, ++ 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, 0xca, 0x1f, 0xff, 0xa8, 0x9e, 0x12, 0xd5, 0x1c, ++ 0x0d, 0xe5, 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, 0x2b, 0x05, 0x5f, 0x06, ++ 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, 0x2a, 0xb6, 0x28, 0x65, ++ 0x4a, 0x9d, 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, 0xe3, 0x62, 0x90, 0xef, 0x1a, 0x0b, ++ 0xe8, 0xf8, 0x85, 0x6e, 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, 0xa8, 0x9d, 0xa0, 0x57, ++ 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, 0xc1, 0xa9, 0x0a, 0x4b, 0x05, 0x3a, 0x68, 0x2c, ++ 0x8f, 0xb7, 0xef, 0x85, 0xb5, 0x57, 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, 0x6f, 0xcb, 0x73, 0x33, ++ 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, 0x02, 0xd3, 0x03, 0x54, 0x2d, 0x2b, 0xf7, 0xf5, 0x57, 0xa6, ++ 0x0f, 0x6b, 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, 0xb8, 0xde, 0x5c, 0x7e, 0x6e, 0x54, ++ 0x6d, 0xbc, 0x5a, 0x3c, 0xc6, 0x7e, 0xad, 0x74, 0x1a, 0x3c, 0x9d, 0xa9, 0xaf, 0x02, 0x26, 0xbd, ++ 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, 0x22, 0xd7, 0xd0, 0x94, 0x68, 0x54, 0xf5, 0xd9, ++ 0x29, 0x0d, 0x79, 0x26, 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, 0xb9, 0x4f, 0xab, 0xcb, ++ 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, 0x72, 0xb5, 0x4b, 0xaa, 0xfa, 0x6c, 0x7d, 0x0f, 0xe1, 0x0a, ++ 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, 0xe2, 0x88, 0x71, 0x57, 0xc0, 0xdb, ++ 0xc5, 0x2a, 0x5d, 0x3e, 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, 0x3d, 0x93, 0xff, 0x24, 0x69, 0x38, ++ 0x4c, 0xcc, 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, 0xbf, 0xf6, 0x12, 0xaf, 0x09, 0x62, 0x49, 0xfd, ++ 0xc3, 0x7b, 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, 0x49, 0x73, 0xcc, 0x5e, 0x66, 0xa9, 0x3a, 0xce, ++ 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, 0x38, 0x33, 0x24, 0x7f, 0x8a, 0xc2, 0x45, 0x7d, 0x5b, 0x56, ++ 0x74, 0x7c, 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, 0xa8, 0x66, 0x54, 0xaf, 0x50, 0xca, ++ 0x94, 0xf9, 0xa7, 0xb5, 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, 0xe3, 0x1d, 0x34, 0x16, ++ 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, 0x69, 0x7d, 0x2a, 0xf8, 0x15, 0x5b, 0x14, 0xd3, ++ 0x25, 0xaf, 0x59, 0xbc, 0x82, 0xc2, 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, 0x48, 0x96, 0x0d, 0xe4, ++ 0x48, 0x13, 0x03, 0x80, 0x44, 0xbc, 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, 0xe7, 0x94, 0x2b, 0x59, ++ 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, 0x99, 0xe8, 0x34, 0x78, 0xf9, 0x91, 0x9d, 0x04, 0x4c, 0xb9, ++ 0xdd, 0xad, 0x1d, 0xc9, 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, 0xde, 0x55, 0xe6, 0x66, ++ 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, 0x33, 0xa2, 0xcb, 0x92, 0xe4, 0xb1, 0x72, 0x41, 0x59, 0x7e, ++ 0xea, 0x76, 0x34, 0x55, 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, 0xdf, 0xe6, 0x91, 0x05, ++ 0x73, 0x6a, 0x0a, 0x86, 0x5b, 0x0e, 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, 0x17, 0xfe, 0xfa, 0x15, ++ 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, 0xe4, 0xa9, 0x96, 0x97, 0x37, 0xd8, 0xfa, 0x1e, 0x01, 0x14, ++ 0xf5, 0xe7, 0xdd, 0x13, 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, 0xbd, 0xc6, 0xb4, 0x84, ++ 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, 0xd4, 0x50, 0xbe, 0x7b, 0x09, 0xb6, 0xe5, 0x31, 0xc5, 0x9f, ++ 0xd0, 0x48, 0x84, 0xaf, 0x85, 0x6d, 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, 0xf5, 0x50, 0xb9, 0x60, ++ 0xc4, 0x6d, 0xe4, 0xc2, 0xd2, 0x8c, 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, 0x25, 0xf8, 0x90, 0x11, ++ 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, 0xb9, 0x5e, 0x48, 0xf9, 0x24, 0x4b, 0xe7, 0x72, ++ 0x7b, 0x17, 0x8b, 0x6a, 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, 0x10, 0xb8, 0x08, 0xd1, 0x3e, 0x9e, ++ 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, 0x6d, 0x16, 0xba, 0x0a, 0x65, 0xd2, 0xd3, 0xbe, 0xb0, 0xd4, ++ 0x45, 0xf6, 0x9a, 0xe6, 0x68, 0x7f, 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, 0xcc, 0x91, 0x74, 0x5f, ++ 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, 0x70, 0x66, 0x48, 0xfe, 0xd7, 0x47, 0x8a, 0xfa, 0xb6, 0xac, ++ 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, 0x07, 0x3e, 0xe5, 0xd6, 0x80, 0x89, 0x40, 0x47, 0x33, 0x7a, ++ 0xd8, 0x35, 0x05, 0x43, 0xcc, 0x07, 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, 0xea, 0x7f, 0x7d, 0xeb, ++ 0x7e, 0x8f, 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, 0x45, 0xe0, 0x78, 0xf2, 0x3c, 0xfb, 0xa5, 0x13, ++ 0xf2, 0xf1, 0x74, 0xa2, 0xe1, 0xfd, 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, 0xfe, 0x97, 0x1e, 0x5b, ++ 0x90, 0x26, 0x06, 0xc3, 0x88, 0xbb, 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, 0x0d, 0xeb, 0x56, 0xb2, ++ 0x77, 0xb5, 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, 0x31, 0xe1, 0xf9, 0x08, 0x98, 0xb1, ++ 0x53, 0x5d, 0x4b, 0xb0, 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, 0x6b, 0x42, 0x6c, 0x7c, ++ 0xe5, 0x1d, 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, 0xf7, 0x08, 0xc5, 0xe8, 0x83, 0x98, 0xff, 0x51, ++ 0x49, 0x54, 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, 0x7a, 0xe5, 0x3d, 0x48, 0xd2, 0x70, ++ 0x98, 0x5b, 0x87, 0x2f, 0xc1, 0xd1, 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, 0x12, 0xc4, 0x92, 0x39, ++ 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, 0x5f, 0xdc, 0xe5, 0x5b, 0x93, 0xf9, 0x83, 0xae, ++ 0x43, 0xa7, 0x8a, 0xab, 0x2e, 0xb1, 0x49, 0xdd, 0x8c, 0xab, 0xaa, 0x71, 0x55, 0x1c, 0x27, 0xa9, ++ 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, 0x2a, 0x35, 0x08, 0x5c, 0x04, 0x89, 0x1f, 0x4f, ++ 0xc7, 0xa4, 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, 0x5d, 0x05, 0xd3, 0x69, 0x88, 0x5f, 0x58, 0x6a, ++ 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, 0x46, 0x29, 0x65, 0xee, 0x9e, 0x54, 0x4f, 0x09, 0x8b, 0x0e, ++ 0xcc, 0x10, 0x65, 0x2e, 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, 0x74, 0x80, 0x3a, 0xd7, 0x54, 0x9a, ++ 0x14, 0x25, 0x60, 0x6d, 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, 0x63, 0xeb, 0xd0, 0xa8, 0x29, 0x71, ++ 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, 0xd9, 0x4c, 0xa1, 0xd0, 0xb1, 0x9e, 0x95, 0x55, ++ 0x2f, 0x5c, 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, 0x93, 0x6b, 0x40, 0xa5, 0x20, 0xc2, 0xf8, 0x3d, ++ 0x47, 0x78, 0x2b, 0xdd, 0xeb, 0x84, 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, 0xbb, 0xea, 0x45, 0x0d, ++ 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, 0x7b, 0xa3, 0x6f, 0x99, 0xd6, 0x84, 0xd8, 0xf8, ++ 0x5f, 0xff, 0x6b, 0x2a, 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, 0xf7, 0xf4, 0x9a, 0x9b, 0xca, 0x53, ++ 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, 0xe9, 0x45, 0x34, 0x25, 0x1a, 0x15, 0xac, 0xa7, ++ 0xb8, 0x6c, 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, 0x6e, 0x78, 0x04, 0x50, ++ 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, 0x54, 0xad, 0x7e, 0x5f, 0x18, 0xe4, 0x0c, 0x58, 0x21, 0xd1, ++ 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, 0x55, 0xd9, 0xcb, 0x0e, 0xf2, 0xb5, ++ 0x23, 0xfe, 0x49, 0xf1, 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, 0xd1, 0x1b, 0x5e, 0x12, ++ 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, 0xfc, 0x34, 0x82, 0xe1, 0x28, 0xef, 0x14, 0xe8, 0x63, 0xb0, ++ 0x62, 0xd7, 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, 0x29, 0x61, 0x25, 0x77, 0xf3, 0x7c, 0x48, 0xe9, ++ 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, 0xcd, 0x45, 0x4a, 0x27, 0xe1, 0x75, 0x91, 0x5c, 0x6d, 0x68, ++ 0x31, 0x8a, 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, 0xf3, 0xda, 0x98, 0x3e, 0x24, 0x95, ++ 0x30, 0xcd, 0x80, 0x2d, 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, 0x42, 0xe2, 0xdd, 0xbc, ++ 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, 0x43, 0x48, 0x22, 0xa4, 0x11, 0xd2, 0x0b, 0x9c, ++ 0x20, 0x37, 0x41, 0x36, 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, 0x7c, 0xbc, 0x96, 0x69, ++ 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, 0x5b, 0xe1, 0xe8, 0xbe, ++ 0xd7, 0x5e, 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, 0xaf, 0xb5, 0xb6, 0x01, 0x13, 0xbf, ++ 0x3d, 0x28, 0x19, 0x4b, 0x59, 0x7c, 0x8e, 0x81, 0xc9, 0x4b, 0xd2, 0x83, 0x69, 0xe7, 0x82, 0xba, ++ 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, 0x06, 0xa8, 0x5a, 0x56, 0x2d, 0x29, 0xae, 0x8f, ++ 0xc6, 0xe3, 0x55, 0xf9, 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, 0x52, 0x83, 0xa1, 0x43, ++ 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, 0xef, 0x38, 0x79, 0x7a, 0x59, 0xab, 0xcd, 0x22, 0x03, 0x3c, ++ 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, 0x8e, 0xec, 0x47, 0xd8, 0xb5, 0x90, ++ 0x15, 0x62, 0xd9, 0x91, 0xf7, 0x7d, 0x7e, 0x1a, 0x41, 0x91, 0x14, 0x96, 0x0a, 0x74, 0xd0, 0x58, ++ 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, 0xd0, 0x35, 0xb8, 0xd3, 0x53, 0xe0, 0xc8, 0x18, 0x6b, 0x10, ++ 0x4b, 0xda, 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, 0xa4, 0x47, 0x94, 0x1f, 0x4a, 0x33, 0xe3, 0x22, ++ 0x34, 0x12, 0x21, 0x5b, 0xb0, 0x8a, 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, 0xac, 0x14, 0xbf, 0x18, ++ 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, 0x23, 0x5a, 0xcb, 0x8d, 0x84, 0x07, 0x79, 0xbb, ++ 0x92, 0xa8, 0xb7, 0xf8, 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, 0x7a, 0x90, 0x67, 0xe0, ++ 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, 0x59, 0x74, 0xbf, 0x0d, 0xbe, 0xd0, 0x2d, 0x21, ++ 0x6e, 0x75, 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, 0x02, 0xa5, 0xee, 0xc6, ++ 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, 0x40, 0x9f, 0x60, 0x12, 0xe9, 0x29, 0x95, 0xd5, 0x72, 0x27, ++ 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, 0x11, 0x52, 0xe9, 0x69, 0xe4, 0x4e, ++ 0x3b, 0x79, 0x09, 0x06, 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, 0xf0, 0x6a, 0xd1, 0x4c, ++ 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, 0x7d, 0x0b, 0x35, 0xcf, 0xfb, 0xad, 0x76, 0x77, ++ 0xe4, 0x5a, 0xa5, 0xf4, 0x35, 0xe7, 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, 0x59, 0x44, 0x06, 0x78, ++ 0x2c, 0x95, 0x61, 0xac, 0x6b, 0x34, 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, 0x8d, 0x65, 0x30, 0x46, ++ 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, 0xb4, 0xac, 0x5a, 0x52, 0x9f, 0xdd, ++ 0xb6, 0x40, 0x57, 0xb8, 0x29, 0x1e, 0x32, 0x2a, 0x2b, 0xb8, 0x13, 0x45, 0xe8, 0xda, 0x93, 0x2d, ++ 0xd3, 0x81, 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, 0x19, 0x68, 0xb0, 0x82, 0x58, 0xf7, 0x71, 0x1b, ++ 0xe7, 0x93, 0xad, 0x33, 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, 0xf4, 0xe3, 0xce, 0x03, ++ 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, 0xbf, 0x63, 0x5a, 0x42, ++ 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, 0xf9, 0x42, 0x47, 0x76, 0xc2, 0x6c, 0xbb, 0x48, ++ 0x04, 0xdf, 0xa1, 0x76, 0xc5, 0x35, 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, 0xee, 0xf6, 0x62, 0xa4, ++ 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, 0x92, 0x79, 0xdb, 0x95, 0x97, 0xe2, 0xaa, 0x38, 0x4e, 0x91, ++ 0xef, 0xee, 0x2c, 0xdf, 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, 0xeb, 0xcc, 0x0a, 0x88, ++ 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, 0x35, 0x99, 0xec, 0xee, ++ 0x0b, 0xb4, 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, 0xa7, 0xe9, 0xb2, 0x88, 0x0c, 0xf0, ++ 0x9e, 0x0a, 0x97, 0x62, 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, 0x8b, 0x49, 0xc1, 0xcf, ++ 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, 0xc5, 0xd8, 0x66, 0x2f, 0x33, 0xb5, 0x1d, 0x67, ++ 0x1c, 0x58, 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, 0xcf, 0x87, 0xed, 0xfa, ++ 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, 0x20, 0xae, 0x30, 0x09, 0x95, 0xf5, 0xab, 0x8b, 0x39, 0xf2, ++ 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, 0x36, 0x32, 0x1b, 0xa6, 0xdb, 0xc4, ++ 0x7a, 0x50, 0x32, 0x96, 0xb2, 0xf8, 0xdf, 0xc1, 0x51, 0x96, 0x67, 0xc5, 0xd2, 0x0d, 0xc7, 0xb7, ++ 0x5b, 0x20, 0xca, 0x5c, 0xf5, 0x0f, 0x19, 0x15, 0xf4, 0x5c, 0xe8, 0xc3, 0x74, 0x6d, 0xa8, 0xf7, ++ 0xa3, 0x22, 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, 0x07, 0xd3, 0xe2, 0xae, 0x43, 0x75, ++ 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, 0x4c, 0x1f, 0x12, 0xab, ++ 0x33, 0x04, 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, 0x1d, 0x20, 0xef, 0x45, 0x15, 0xc7, ++ 0x68, 0x24, 0x42, 0xb6, 0xa3, 0xd7, 0xb3, 0x5f, 0x0b, 0xb6, 0xf5, 0xe3, 0x9b, 0x28, 0xbd, 0x30, ++ 0x96, 0x77, 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, 0x8b, 0x8e, 0xeb, 0x3e, 0x94, 0x66, 0x05, 0x44, ++ 0x46, 0x3f, 0x92, 0x21, 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, 0x61, 0x36, 0xbc, 0x24, ++ 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, 0x0c, 0xaf, 0x0a, 0x3b, 0xee, 0xfa, 0x77, 0x7b, 0x31, 0x52, ++ 0xff, 0x14, 0xed, 0xc4, 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, 0x69, 0xa0, 0xd5, 0x92, 0x41, 0x5d, ++ 0x95, 0xbe, 0x1e, 0x49, 0xed, 0x12, 0xf8, 0x51, 0x84, 0x49, 0x72, 0xb9, 0x39, 0xc1, 0xcd, 0x3f, ++ 0x64, 0x86, 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, 0x37, 0x2c, 0xd4, 0xba, 0x6a, 0xf1, 0x1b, 0x1f, ++ 0x40, 0x6e, 0x82, 0x6c, 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, 0xf8, 0xbb, 0xef, 0xd2, ++ 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, 0x45, 0x72, 0x86, 0x90, 0x44, 0x8b, 0x22, 0x67, 0x16, 0xfb, ++ 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, 0x4e, 0x56, 0x8d, 0x11, 0xa7, 0xd3, 0x18, 0x23, ++ 0x0e, 0x2c, 0x91, 0xa1, 0x0f, 0xa4, 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, 0x86, 0xa2, 0x97, 0x7d, ++ 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, 0x18, 0xe5, 0xab, 0x9b, 0xb4, 0xa4, 0xfd, 0x79, ++ 0xfd, 0x9a, 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, 0xa2, 0xe9, 0x70, 0x0f, ++ 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, 0xa1, 0xdb, 0x10, 0x07, 0x73, 0x53, 0xd8, 0x79, 0x17, 0xef, ++ 0x91, 0x61, 0xbf, 0x3f, 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, 0x6d, 0x8e, 0xd7, 0x37, 0xaf, 0x9b, ++ 0xa5, 0x73, 0x9e, 0x64, 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, 0xf6, 0x1e, 0x7b, 0x23, 0x10, 0x83, ++ 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, 0xe7, 0xf2, 0x75, 0xe9, 0xed, 0x07, 0x97, 0x70, 0x9c, 0xe1, ++ 0x56, 0xc5, 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, 0xcd, 0x3a, 0xbe, 0xe7, 0x5f, 0x68, 0xf7, 0xf1, ++ 0xba, 0xe2, 0x77, 0x22, 0xa5, 0x41, 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, 0x19, 0x03, 0x35, 0x02, ++ 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, 0xbc, 0xf0, 0x5e, 0xdb, 0x80, 0x92, ++ 0x18, 0x87, 0x40, 0xf7, 0xdb, 0xbe, 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, 0x21, 0x71, 0x8f, 0x5e, ++ 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, 0xc7, 0x01, 0x50, 0x1d, 0x28, 0x13, 0xc6, 0xa3, ++ 0x8b, 0x68, 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, 0x81, 0x3d, 0x11, 0x97, ++ 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, 0xc4, 0x40, 0x4a, 0xc1, ++ 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, 0x1f, 0xa3, 0xf1, 0xa0, 0x9f, 0xbe, 0xae, 0xb1, 0x51, 0xde, ++ 0xce, 0x9e, 0xd4, 0x15, 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, 0x4d, 0xac, 0x65, 0xc8, ++ 0xf7, 0x69, 0x6c, 0x28, 0x84, 0x54, 0x77, 0x58, 0xad, 0x28, 0x57, 0xce, 0xca, 0xbd, 0x85, 0xd6, ++ 0xd2, 0xc6, 0x35, 0x94, 0x06, 0x96, 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, 0x82, 0x2b, 0x88, 0x32, ++ 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, 0x44, 0xce, 0x2c, 0x35, ++ 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, 0x7b, 0x0f, 0xdc, 0xf0, 0x08, 0xa0, ++ 0xb4, 0xce, 0xe6, 0x83, 0xaa, 0xe5, 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, 0x9f, 0xa1, 0xa2, 0x7f, ++ 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, 0x08, 0xe2, 0xd8, 0xc8, 0x6c, 0xdd, 0xea, 0x96, ++ 0xe1, 0xc2, 0xbd, 0x7e, 0x50, 0x4e, 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, 0x6d, 0x6e, 0x9d, 0xf5, ++ 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, 0xc9, 0x20, 0x4c, 0x8f, 0xbb, 0x23, 0xbc, 0x75, 0xc3, 0xe7, ++ 0x5d, 0x71, 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, 0x19, 0x0e, 0xed, 0xe0, 0xfb, 0x01, ++ 0xfa, 0x8c, 0xf5, 0x4e, 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, 0xe1, 0xb8, 0xda, 0xd0, ++ 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, 0x5e, 0xb4, 0x71, 0x98, 0x81, 0x63, 0xa1, 0xff, 0xe9, 0xaa, ++ 0x1f, 0x91, 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, 0x63, 0x46, 0xc4, 0x02, 0x62, 0x20, 0x25, 0x81, ++ 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, 0x28, 0x64, 0x3c, 0x9a, 0x21, 0x59, 0xf1, 0xd9, 0xa6, 0x2f, ++ 0x01, 0x47, 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, 0x77, 0x7d, 0xda, 0xdc, 0xf9, 0x29, ++ 0x2d, 0xd2, 0xd8, 0x50, 0xcb, 0xa8, 0xee, 0xb0, 0x99, 0x50, 0xae, 0x5f, 0x57, 0xb9, 0xc9, 0x6f, ++ 0x67, 0x4f, 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, 0x38, 0xeb, 0x4d, 0x3d, 0xc7, 0x56, 0xd3, 0x64, ++ 0xe2, 0x0b, 0xb5, 0xb9, 0x73, 0x29, 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, 0xc0, 0xc9, 0x55, 0x8e, ++ 0x09, 0x3a, 0x38, 0x10, 0xe9, 0xf6, 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, 0xc5, 0xf3, 0x3d, 0xa2, ++ 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, 0xc9, 0x9a, 0x85, 0xb4, 0x0e, 0xd8, ++ 0x11, 0xbd, 0x78, 0xe7, 0x32, 0x48, 0x66, 0x87, 0x55, 0xe7, 0x0b, 0xa1, 0xe4, 0x82, 0xb2, 0xfc, ++ 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, 0x2e, 0x44, 0x64, 0x38, 0x32, 0x06, 0x6a, 0x04, ++ 0xdf, 0x23, 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, 0x91, 0xdb, 0xa9, 0x2e, 0xd7, 0x34, ++ 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, 0xbf, 0xf0, 0x01, 0x8d, 0x1b, 0x19, 0xec, 0x53, 0x8c, 0x62, ++ 0x93, 0xef, 0x0e, 0x04, 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, 0x83, 0x74, 0xa0, 0x4c, 0x9e, 0xc9, ++ 0x24, 0xe8, 0xe0, 0x40, 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, 0x92, 0x4a, 0xf4, 0xcd, ++ 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, 0x40, 0x1c, 0x0f, 0x8f, 0xe6, 0x27, 0x5c, 0x3a, ++ 0x66, 0x08, 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, 0x1d, 0x8a, 0x2a, 0x4d, ++ 0xfe, 0x53, 0x54, 0x38, 0x6d, 0xa2, 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, 0x0f, 0x4e, 0xb8, 0x74, ++ 0x07, 0x16, 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, 0x86, 0xb0, 0x43, 0x51, 0xaa, 0xdf, ++ 0x44, 0xb1, 0x23, 0x1a, 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, 0x16, 0x4d, 0x8d, 0x76, ++ 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, 0xc3, 0x70, 0x3c, 0x79, 0x1e, 0x9c, 0xb3, 0xe8, ++ 0xf8, 0x02, 0x44, 0x75, 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, 0x96, 0xc3, 0xeb, 0x82, ++ 0x06, 0x51, 0x10, 0x4d, 0x46, 0xce, 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, 0x99, 0x8d, 0x53, 0xf6, ++ 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, 0x85, 0x4d, 0xa3, 0x5a, 0x07, 0x6c, ++ 0xad, 0x0e, 0x1f, 0x88, 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, 0xc8, 0x70, 0x64, 0x0c, 0xd4, 0x08, ++ 0x2b, 0x83, 0xc8, 0x1d, 0x8d, 0x66, 0xfa, 0x82, 0x87, 0x1d, 0x5f, 0x92, 0xce, 0x34, 0x9a, 0x99, ++ 0xae, 0xc7, 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, 0x51, 0xf7, 0xc9, 0xab, 0x1c, 0x73, ++ 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, 0x0b, 0xc7, 0xa7, 0x3b, ++ 0x39, 0xf7, 0xb8, 0x3d, 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, 0xcd, 0xb4, 0x87, 0x11, 0xe0, 0x1e, ++ 0xde, 0x64, 0x15, 0x0e, 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, 0xe6, 0xa6, 0x73, 0xf2, 0x2e, 0x1d, ++ 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, 0x66, 0xba, 0xb3, 0x7f, 0xb8, 0xfc, 0xdc, 0xa8, ++ 0xa8, 0x96, 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, 0x50, 0x26, 0x4f, 0x85, ++ 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, 0xd9, 0xca, 0x60, 0x8c, ++ 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, 0xed, 0x34, 0x58, 0x41, 0x2c, 0x9a, 0xd9, 0xec, ++ 0x9a, 0xd5, 0x36, 0x14, 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, 0x65, 0xbf, 0xa3, 0x6b, ++ 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, 0x0e, 0x4a, 0x82, 0x9e, 0x41, 0xf4, 0x44, 0x19, ++ 0x28, 0x4a, 0xc0, 0xda, 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, 0x63, 0x93, 0x52, 0xe2, ++ 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, 0x9d, 0x8d, 0x32, 0xd0, 0xa3, 0xc7, 0xb0, 0x2d, 0xe2, 0x36, ++ 0xd5, 0xd0, 0x9c, 0x25, 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, 0x41, 0x4f, 0xc1, 0x7a, 0x22, 0xed, ++ 0x7c, 0x01, 0x22, 0xdb, 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, 0x4b, 0x80, 0x94, 0x41, ++ 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, 0x09, 0x6f, 0xc3, 0xd1, 0x80, 0x8e, 0x66, 0xf4, ++ 0x38, 0xb0, 0x01, 0xc1, 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, 0x5d, 0xcd, 0x19, 0x37, ++ 0x4f, 0x05, 0xaa, 0x31, 0xa2, 0xee, 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, 0xa4, 0xc5, 0x81, 0x86, ++ 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, 0x05, 0xed, 0xe6, 0x82, 0xad, 0xa2, 0xb7, 0xb2, 0x64, 0xdc, ++ 0x27, 0x21, 0xe8, 0x87, 0x01, 0x39, 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, 0x3f, 0xed, 0x3c, 0xb6, ++ 0x76, 0xf2, 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, 0x6d, 0x0c, 0x46, 0x9c, 0x23, 0xd4, 0x61, 0x98, ++ 0x78, 0xde, 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, 0x5b, 0xad, 0x89, 0x3f, 0xa5, 0x76, 0xf6, 0xe5, ++ 0x89, 0xe6, 0xff, 0xc8, 0xf3, 0x99, 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, 0xf6, 0x46, 0x20, 0xc5, ++ 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, 0xa8, 0x99, 0xfc, 0xbe, 0x30, 0x0b, 0x18, 0xb0, 0x42, 0x61, ++ 0xaf, 0x80, 0xae, 0xb3, 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, 0x26, 0x8a, 0x13, 0x77, 0xe5, 0x5a, ++ 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, 0xa6, 0x9e, 0xa2, 0x2d, 0x51, 0x95, 0x38, 0xe6, ++ 0x84, 0x03, 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, 0xd1, 0xae, 0x79, 0x18, 0xdd, 0x43, 0x7f, 0xc3, ++ 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, 0x2e, 0x3f, 0x37, 0x2a, ++ 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, 0x63, 0x6a, 0xb3, 0x65, 0xa6, 0x03, 0x53, 0x30, 0xd6, 0x20, ++ 0x63, 0x90, 0xcb, 0x9d, 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, 0x29, 0xa0, 0xb1, 0xc0, ++ 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, 0x25, 0x43, 0xd6, 0x8b, 0x38, 0x57, 0x1c, 0x39, 0x5d, 0x2e, ++ 0xc8, 0xcf, 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, 0x6b, 0xb7, 0xd4, 0x21, 0x36, 0x3e, ++ 0x03, 0xc9, 0x08, 0xc7, 0x23, 0x67, 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, 0xad, 0xa7, 0xc8, 0x7b, ++ 0xed, 0x60, 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, 0xfb, 0x86, 0x9c, 0xb7, 0x3b, 0xda, ++ 0x70, 0xa3, 0x02, 0x41, 0x78, 0x69, 0xe3, 0x97, 0x73, 0x41, 0xb7, 0x51, 0xba, 0x59, 0x32, 0x6e, ++ 0x3c, 0x6f, 0xa0, 0xb7, 0xf9, 0xe0, 0x88, 0x37, 0xcc, 0xb7, 0xa5, 0xfe, 0xb3, 0x3b, 0x7b, 0x93, ++ 0x8e, 0xf0, 0x56, 0x79, 0x15, 0xcb, 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, 0xb5, 0x17, 0x8a, 0x1a, ++ 0xd9, 0x72, 0xbc, 0xbf, 0x6c, 0x9b, 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, 0x30, 0xa3, 0x84, 0xc2, ++ 0x10, 0xfa, 0xc1, 0x1b, 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, 0x7c, 0xdc, 0x3e, 0x5e, 0x4b, 0xd5, ++ 0x1a, 0x09, 0xf1, 0xcc, 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, 0x56, 0x0a, 0xbe, 0x0c, ++ 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, 0xac, 0xa5, 0x4c, 0xd7, 0x26, 0xee, 0x09, 0xb4, ++ 0xee, 0xa9, 0x95, 0x23, 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, 0x31, 0x10, 0xf3, 0xa1, ++ 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, 0x79, 0x86, 0xfe, 0x45, ++ 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, 0x8e, 0x72, 0x9c, 0x43, 0x4e, 0xba, 0xfc, 0x6d, ++ 0xc9, 0x88, 0x7d, 0xa4, 0xfe, 0x4f, 0xf3, 0xc0, 0x6b, 0xa4, 0x1c, 0xca, 0x0e, 0xfd, 0xcf, 0x17, ++ 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, 0x5e, 0x51, 0xfe, 0x42, 0x7f, 0xaa, 0x0f, 0xcc, ++ 0xb2, 0x9f, 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, 0x06, 0x2c, 0xf1, 0x89, ++ 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, 0x76, 0xc8, 0x46, 0x31, ++ 0x6c, 0xfb, 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, 0xea, 0xd4, 0x75, 0xde, 0xdf, 0x94, ++ 0x9c, 0x84, 0x26, 0x59, 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, 0xfc, 0x32, 0xf0, 0x9d, ++ 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, 0x77, 0x30, 0xdb, 0x35, 0x8c, 0xd6, 0x47, 0x25, ++ 0x05, 0x98, 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, 0x34, 0x2a, 0x9b, 0x8d, ++ 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, 0x23, 0xf5, 0xd3, 0x77, 0x4f, 0x2a, 0xc6, 0xe5, 0xa4, 0x07, ++ 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, 0x65, 0xdc, 0xb6, 0x99, 0xd1, 0x7e, 0x89, 0xec, 0x2f, 0x09, ++ 0xd1, 0x0f, 0x3d, 0x53, 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, 0x2f, 0x8c, 0x40, 0x49, ++ 0x12, 0x74, 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, 0x5a, 0x20, 0x92, 0x26, 0x49, 0x25, 0x7a, 0x87, ++ 0x87, 0xca, 0x6e, 0x69, 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, 0x70, 0xe4, 0xb7, 0xb8, ++ 0x08, 0x7d, 0x81, 0xec, 0x49, 0x6a, 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, 0x1f, 0x2f, 0xc4, 0x8b, ++ 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, 0x15, 0xba, 0xfe, 0x67, 0x06, 0x39, 0x03, 0x16, 0x99, 0xa5, ++ 0xfc, 0xdd, 0xe5, 0x03, 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, 0x78, 0x35, 0x89, 0x26, ++ 0x21, 0x70, 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, 0xa5, 0xca, 0x8f, 0x06, 0xa6, 0x60, 0x6f, 0x40, ++ 0x85, 0x44, 0xdf, 0x52, 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, 0x07, 0x9f, 0x86, 0xea, ++ 0x55, 0x0c, 0x5b, 0xfd, 0xfa, 0xab, 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, 0xf2, 0xcf, 0x3f, 0x8a, ++ 0x4e, 0x42, 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, 0xfc, 0x55, 0x7e, 0x19, 0x78, 0xaf, ++ 0xec, 0x27, 0x24, 0x18, 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, 0x46, 0x6b, 0xc2, 0xf3, ++ 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, 0x91, 0xb2, 0x76, 0x97, 0x3b, 0x64, 0x23, 0xf9, ++ 0x36, 0x9c, 0x90, 0x60, 0x33, 0x71, 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, 0xdb, 0x6f, 0x8e, 0x4a, ++ 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, 0xfd, 0xbc, 0x62, 0xcb, 0xdf, 0x1b, 0x8e, 0x73, 0xa9, 0xe3, ++ 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, 0xb2, 0xd7, 0xeb, 0x9c, 0x02, 0x17, 0x01, 0xb3, 0x77, 0x63, ++ 0x5c, 0x36, 0x63, 0xed, 0x13, 0x5d, 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, 0x37, 0x3c, 0x02, 0x28, ++ 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, 0x71, 0xee, 0xa8, 0xd4, 0x20, 0xb3, 0x10, 0x61, 0x7c, 0xff, ++ 0xf4, 0xa0, 0x64, 0xef, 0xa7, 0x33, 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, 0x67, 0x1a, 0x4d, 0xad, ++ 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, 0xeb, 0x5d, 0x7f, 0xd2, 0x03, 0xfd, 0xe0, 0x0b, 0xad, 0xb3, ++ 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, 0x6c, 0x64, 0x36, 0x8f, 0x75, 0x4b, ++ 0xa2, 0x65, 0x37, 0xd5, 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, 0x38, 0x72, 0xba, 0x5c, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xaa, 0x18, 0xb6, 0x39, 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, 0x27, 0x5d, 0x7e, 0xd7, ++ 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, 0xe5, 0x21, 0x76, 0xbd, 0xc0, 0x2c, 0x60, 0x85, 0xcb, 0x47, ++ 0x42, 0xe0, 0x33, 0x57, 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, 0xdd, 0x0c, 0x8f, 0xc0, 0xde, 0x80, ++ }, ++ { /* 4 */ ++ 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, 0x2d, 0xa5, 0x4a, 0x84, 0x52, 0x5c, ++ 0x95, 0x8b, 0xd1, 0x9a, 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, 0x2f, 0x2d, 0x97, 0x24, 0xdb, 0x4d, ++ 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, 0x62, 0xa7, 0x28, 0x32, 0xbc, 0x57, 0x26, 0x97, ++ 0x27, 0xcf, 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, 0xe1, 0x72, 0x4a, 0xc8, ++ 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, 0x78, 0x67, 0x45, 0x71, ++ 0x86, 0x51, 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, 0x98, 0x30, 0x2e, 0x81, 0x7c, 0x06, ++ 0x06, 0x16, 0x66, 0x0e, 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, 0x23, 0x5f, 0xd7, 0x07, ++ 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, 0x8a, 0x9f, 0x25, 0xc0, 0xb8, 0x41, 0x33, 0x18, ++ 0x09, 0x31, 0x99, 0x15, 0x15, 0xa9, 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, 0x95, 0x2f, 0x30, 0xeb, ++ 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, 0x04, 0xe6, 0x28, 0x97, 0x67, 0xe6, 0xf9, 0x06, 0x34, 0x6c, ++ 0xf4, 0x90, 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, 0xd8, 0x9e, 0xb2, 0x66, 0xf2, 0x63, ++ 0x16, 0xc7, 0xb5, 0x9f, 0x9f, 0x4f, 0x99, 0x39, 0xb3, 0x69, 0x45, 0x39, 0x6a, 0x34, 0xfa, 0xae, ++ 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, 0xb6, 0xa2, 0x90, 0x55, 0xdc, 0x44, 0x1d, 0x42, ++ 0xec, 0xc8, 0x34, 0xfe, 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, 0x3e, 0xd9, 0x28, 0x7f, ++ 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, 0xe4, 0x52, 0x27, 0x09, 0xdb, 0x52, 0xe0, 0x96, 0xde, 0x9b, ++ 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, 0x16, 0x91, 0x83, 0x6a, 0x9a, 0xbb, ++ 0x8f, 0x60, 0xa8, 0x19, 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, 0x50, 0x64, 0xbb, 0xae, 0x4c, 0xed, ++ 0x30, 0xb0, 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, 0x10, 0x88, 0xe8, 0x03, 0xdb, 0xbd, 0x77, 0x38, ++ 0x39, 0x81, 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, 0x17, 0x52, 0x20, 0x57, 0x4e, 0x92, 0x47, 0xd3, ++ 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, 0x70, 0x5a, 0xe6, 0x4f, 0x5e, 0x5a, 0xed, 0x48, 0x75, 0x9a, ++ 0x03, 0x0b, 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, 0xef, 0x1c, 0xf0, 0xce, 0x8a, 0xe2, ++ 0xcf, 0xa2, 0x62, 0x18, 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, 0x5c, 0xc1, 0xf8, 0x0c, ++ 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, 0x91, 0xab, 0x4b, 0x07, 0x3c, 0xd2, 0xc3, 0xd9, ++ 0x43, 0xc9, 0xf9, 0x06, 0x06, 0xc7, 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, 0x17, 0xa1, 0x3e, 0x03, ++ 0x55, 0x0e, 0x4c, 0x99, 0x99, 0x88, 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, 0x7d, 0x95, 0xc4, 0xad, ++ 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, 0xf1, 0x72, 0xa5, 0xd2, 0x8a, 0x72, 0xd4, 0x68, 0x37, 0x9f, ++ 0x12, 0x62, 0xf1, 0x2a, 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, 0xe9, 0x5e, 0x60, 0x15, ++ 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, 0x66, 0xd1, 0x7a, 0x6b, 0xb4, 0xd1, 0xeb, 0x55, 0x8b, 0xb3, ++ 0xd5, 0x49, 0x1b, 0x9b, 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, 0x70, 0x4b, 0x6f, 0xac, ++ 0x3d, 0x24, 0x6b, 0xd0, 0xd0, 0xb6, 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, 0xcd, 0xf8, 0xdd, 0x68, ++ 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, 0x0b, 0xa4, 0x4e, 0x12, 0x75, 0xa4, 0x03, 0xef, 0x7f, 0xf5, ++ 0x76, 0x64, 0x1a, 0x7f, 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, 0x1f, 0x8d, 0x14, 0xde, ++ 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, 0x6b, 0xe0, 0x08, 0x44, 0x74, 0xe0, 0x8c, 0xbf, 0xda, 0x1c, ++ 0x35, 0xad, 0xe3, 0x79, 0x79, 0xc9, 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, 0x08, 0x2c, 0x2a, 0xdd, ++ 0x07, 0xae, 0x77, 0xb2, 0xb2, 0x67, 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, 0x73, 0xa4, 0x10, 0x59, ++ 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, 0x40, 0x65, 0x26, 0x0c, 0xea, 0xb1, 0x1f, 0xe0, ++ 0xf7, 0x9b, 0x5c, 0xc1, 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, 0x37, 0x82, 0x42, 0xa8, 0x78, 0x81, ++ 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, 0xda, 0xea, 0x68, 0xf2, 0x41, 0xea, 0x13, 0xb7, 0x2b, 0x8c, ++ 0x72, 0xc1, 0x5e, 0xca, 0xca, 0xd0, 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, 0x9c, 0xe7, 0x8e, 0x65, ++ 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, 0xe0, 0xb4, 0x0f, 0x9e, 0xbc, 0xb4, 0x19, 0x90, 0xea, 0xf7, ++ 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, 0x0e, 0x9a, 0x6c, 0xd0, 0x7b, 0x9a, 0x55, 0x09, 0x46, 0x82, ++ 0xff, 0x12, 0xd4, 0x68, 0x68, 0x5b, 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, 0x87, 0x7c, 0x8f, 0x34, ++ 0x1a, 0xeb, 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, 0xb7, 0x4b, 0x7f, 0x49, 0x2c, 0x8a, 0x97, 0xa0, ++ 0x48, 0x4b, 0x42, 0xa8, 0xa8, 0x01, 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, 0x22, 0xbb, 0x43, 0x54, ++ 0xaa, 0x1c, 0x98, 0xf1, 0xf1, 0xd3, 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, 0xfa, 0xe9, 0x4b, 0x99, ++ 0x58, 0x9a, 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, 0xd7, 0xe4, 0x6b, 0xd0, 0x6e, 0xfd, ++ 0x93, 0x9d, 0xb7, 0x94, 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, 0xb4, 0x7b, 0x0c, 0x4a, ++ 0x21, 0xd9, 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, 0x1f, 0x16, 0x54, 0xb7, 0xc2, 0x2d, 0x9d, 0xcf, ++ 0xdd, 0xc0, 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, 0xa0, 0xc8, 0xb5, 0x9f, 0x98, 0x19, ++ 0x60, 0xa3, 0xaf, 0xe0, 0xe0, 0x41, 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, 0x75, 0xb9, 0xee, 0x70, ++ 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, 0x04, 0x22, 0x3a, 0x70, 0x46, 0xbe, 0x6d, 0x0e, ++ 0xc4, 0x20, 0xd9, 0xb6, 0xb6, 0x5c, 0x92, 0x9d, 0xfd, 0x7b, 0x30, 0x9d, 0x69, 0xdb, 0x85, 0x5b, ++ 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, 0x76, 0x0d, 0xfa, 0x41, 0x21, 0x54, 0x3c, 0xa1, ++ 0x5c, 0x3f, 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, 0x34, 0x79, 0xc1, 0x75, 0xe8, 0xba, 0xf4, 0x46, ++ 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, 0x8c, 0x19, 0x31, 0xb2, 0x14, 0x19, 0x5e, 0xca, 0x13, 0xaa, ++ 0xcd, 0x11, 0x40, 0xa3, 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, 0xf8, 0xc9, 0xfc, 0xf4, 0xb5, 0xb0, ++ 0x32, 0x03, 0x94, 0xcb, 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, 0xe3, 0xaa, 0x7b, 0x88, 0x3a, 0x84, ++ 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, 0x09, 0xad, 0x9b, 0xfc, 0x7c, 0x71, 0x50, 0xfe, ++ 0x5a, 0x29, 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, 0x36, 0x68, 0xdc, 0x4d, 0xcb, 0xe5, 0x23, 0x41, ++ 0xa1, 0x9e, 0x23, 0x5f, 0x5f, 0x15, 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, 0xcf, 0xf3, 0x36, 0xce, ++ 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, 0xe2, 0x6d, 0x64, 0x2a, 0xab, 0xf6, 0x18, 0x94, ++ 0x3c, 0x9c, 0x7a, 0x6c, 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, 0xd2, 0x73, 0x9d, 0x03, 0x1a, 0x36, ++ 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, 0xcc, 0xc9, 0x24, 0x84, 0x37, 0x11, 0x96, 0xf1, ++ 0xce, 0x1a, 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, 0x0c, 0x3a, 0x3f, 0x52, ++ 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, 0xa8, 0xc3, 0x9a, 0x17, 0xcd, 0xc3, 0x63, 0xfc, 0x44, 0x20, ++ 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, 0x18, 0xaf, 0xd5, 0x8c, 0xa3, 0xcc, ++ 0xf5, 0x28, 0x7e, 0x7a, 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, 0xe2, 0x9d, 0x35, 0x3d, ++ 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, 0x3b, 0x86, 0x6d, 0x39, 0x94, 0x86, 0xa5, 0xc7, 0xcc, 0x60, ++ 0xe2, 0x57, 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, 0x5e, 0x9a, 0x9d, 0xa7, 0xd8, 0x52, 0x08, 0xcd, ++ 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, 0x59, 0xb1, 0x3f, 0xc5, 0x47, 0xb1, 0xb7, 0x94, 0x73, 0xbf, ++ 0x71, 0xca, 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, 0xaf, 0xb2, 0x6c, 0x29, 0x04, 0x87, ++ 0xf9, 0x04, 0xb2, 0x66, 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, 0xa4, 0x23, 0x58, 0x33, ++ 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, 0xe7, 0xa6, 0xb1, 0x46, 0x1d, 0x86, 0xff, 0x78, ++ 0xae, 0xb9, 0xdc, 0x44, 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, 0x79, 0x83, 0xd1, 0x22, ++ 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, 0xfb, 0x0d, 0xdf, 0xca, ++ 0x0b, 0x82, 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, 0xc3, 0xfd, 0x35, 0x1a, 0x7d, 0x57, ++ 0xde, 0xcb, 0xa0, 0x35, 0x35, 0xb2, 0xdf, 0xd4, 0x4a, 0x30, 0x4f, 0xd4, 0x45, 0x51, 0x12, 0xfb, ++ 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, 0x50, 0xed, 0xce, 0x0f, 0x31, 0x0c, 0x68, 0xd8, ++ 0xd4, 0xf1, 0x0a, 0x27, 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, 0x20, 0xb0, 0xa8, 0xf2, ++ 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, 0x1d, 0x2f, 0xd2, 0x36, 0x9f, 0x2f, 0x05, 0xf2, 0x81, 0xdc, ++ 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, 0x23, 0x9b, 0x1c, 0x62, 0x6b, 0x2b, ++ 0xba, 0xcd, 0x4b, 0x60, 0x60, 0x2d, 0xfc, 0x43, 0xd7, 0xfd, 0x4a, 0x43, 0xb3, 0x82, 0x66, 0x30, ++ 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, 0x63, 0xef, 0x58, 0xa9, 0xba, 0xef, 0xbd, 0xb3, 0xb2, 0xc4, ++ 0x0e, 0x9f, 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, 0xbb, 0x2d, 0x31, 0xd9, 0xe6, 0x8b, 0x20, 0xb2, ++ 0x9c, 0xba, 0x48, 0x8f, 0x8f, 0xa3, 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, 0x02, 0x0b, 0xeb, 0xa6, ++ 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, 0xae, 0x6e, 0x0c, 0xb6, 0x8b, 0x46, 0xb0, 0x66, ++ 0x79, 0x43, 0xe5, 0x64, 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, 0xa9, 0xfd, 0xf3, 0x32, ++ 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, 0x54, 0xcf, 0xf4, 0x7f, 0x77, 0xb2, 0x05, 0xd6, ++ 0x4d, 0x56, 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, 0xf1, 0x2a, 0x1e, 0xb1, ++ 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, 0x80, 0xf0, 0x49, 0xc8, 0xbd, 0xf0, 0x96, 0xc0, 0x4f, 0x1e, ++ 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, 0xb9, 0x23, 0xef, 0x43, 0x9e, 0x3c, ++ 0x68, 0x2a, 0x27, 0x49, 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, 0xb0, 0x6d, 0x19, 0xc5, ++ 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, 0xb2, 0x80, 0xaa, 0x25, 0x9a, 0xfa, 0x70, 0x4c, ++ 0xa9, 0x17, 0xab, 0xf6, 0xf6, 0x6a, 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, 0x0a, 0x27, 0xc1, 0x7b, ++ 0x01, 0xb8, 0x11, 0xbc, 0xbc, 0xd6, 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, 0x50, 0xfb, 0xc7, 0x5e, ++ 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, 0x5f, 0x1e, 0x62, 0x18, 0xd0, 0x73, ++ 0xb2, 0x44, 0xc3, 0xc9, 0xc9, 0x52, 0x64, 0xa2, 0x6e, 0xc1, 0x66, 0xa2, 0x76, 0x56, 0x91, 0x85, ++ 0x6e, 0x3c, 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, 0x9b, 0xfe, 0x22, 0xdf, 0x93, 0x32, 0xce, 0xc2, ++ 0xf2, 0x86, 0x09, 0xc8, 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, 0x91, 0x39, 0x25, 0x64, ++ 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, 0xee, 0xa7, 0x0a, 0x6f, ++ 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, 0x8f, 0x54, 0xf0, 0xac, 0x0e, 0x31, 0xd4, 0xf4, ++ 0x65, 0xbe, 0xfa, 0xe9, 0xe9, 0x49, 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, 0xa6, 0x28, 0xb3, 0x95, ++ 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, 0xe7, 0xf9, 0x39, 0xf6, 0x60, 0xf9, 0xd2, 0x75, 0xc9, 0xb6, ++ 0x38, 0x39, 0x3e, 0xd9, 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, 0x1e, 0x69, 0x80, 0x8d, ++ 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, 0xf7, 0x37, 0xe0, 0x98, ++ 0x91, 0x2e, 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, 0x39, 0xbc, 0x14, 0x4e, 0x41, 0xf6, ++ 0xd6, 0x42, 0x28, 0x9c, 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, 0x80, 0x85, 0xe5, 0x4e, ++ 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, 0xea, 0x29, 0x10, 0xca, 0x27, 0x49, 0xc2, 0x88, ++ 0xf8, 0xbc, 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, 0xf4, 0xd8, 0x9f, 0x6d, ++ 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, 0x40, 0x78, 0xc5, 0x64, 0xbf, 0x78, 0x4b, 0x60, 0xc6, 0x0f, ++ 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, 0xfb, 0x05, 0xae, 0x04, 0x99, 0x48, ++ 0x7f, 0x55, 0x83, 0x6a, 0x6a, 0xa7, 0x7d, 0x6b, 0x94, 0x60, 0x9e, 0x6b, 0x8a, 0xa2, 0x24, 0x35, ++ 0x59, 0x22, 0x80, 0x85, 0x85, 0x29, 0x32, 0x51, 0x37, 0x81, 0x33, 0x51, 0x3b, 0x2b, 0xa9, 0xa3, ++ 0x08, 0x89, 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, 0x2c, 0xe1, 0xc5, 0xd4, 0xf7, 0xb5, ++ 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, 0x36, 0xf5, 0x02, 0xa2, ++ 0xa2, 0x95, 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, 0x3e, 0xa3, 0x3f, 0x3d, 0xbc, 0x2c, ++ 0xfb, 0xb7, 0x90, 0xdd, 0xdd, 0x85, 0xa5, 0xf2, 0xe8, 0x38, 0x0d, 0xf2, 0x04, 0x16, 0x15, 0x8f, ++ 0x1c, 0xfd, 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, 0xb5, 0x5a, 0x62, 0x71, 0x0f, 0xd5, 0x40, 0xa7, ++ 0x29, 0x50, 0xfc, 0xf4, 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, 0x07, 0xf9, 0x6a, 0x7a, ++ 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, 0x18, 0x11, 0xf0, 0xf4, 0x91, 0x11, 0x53, 0x14, 0xb8, 0xab, ++ 0x6f, 0x84, 0x50, 0xfb, 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, 0xc6, 0x6a, 0xc3, 0xc9, 0x09, 0x9c, ++ 0x47, 0x6c, 0xbd, 0xb3, 0xb3, 0x19, 0x33, 0x89, 0x3d, 0xd4, 0x5a, 0x89, 0x94, 0xcb, 0xa4, 0xb8, ++ 0x54, 0xb6, 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, 0x8d, 0x45, 0xed, 0x94, 0x2d, 0x6e, 0x03, 0xf3, ++ 0x9f, 0xb1, 0x7b, 0x88, 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, 0xf2, 0xc5, 0x61, 0x44, ++ 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, 0x8a, 0x8c, 0x0d, 0x8f, 0xa1, 0x8c, 0x3a, 0xcf, 0x3d, 0xf0, ++ 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, 0x5f, 0x73, 0x72, 0xbb, 0x28, 0x9c, 0x82, 0x2f, ++ 0x7c, 0x5e, 0xb0, 0x6d, 0x6d, 0x1e, 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, 0x7a, 0x6c, 0xae, 0xd7, ++ 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, 0x83, 0x32, 0xbe, 0x3c, 0xc4, 0x30, 0x63, 0xe6, ++ 0xbc, 0xdb, 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, 0x90, 0xdd, 0xb1, 0x37, ++ 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, 0x81, 0x28, 0x43, 0x9d, 0xd4, 0x28, 0x39, 0x20, 0x42, 0x05, ++ 0x22, 0xd2, 0x47, 0x5a, 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, 0xbb, 0xab, 0x32, 0xe3, 0x17, 0x2d, ++ 0xbe, 0x68, 0x0f, 0xd5, 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, 0x5c, 0xd2, 0x30, 0xe8, 0xfc, 0x8b, ++ 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, 0x0d, 0x31, 0x72, 0x2f, 0xc0, 0x31, 0x67, 0xea, 0x51, 0xaf, ++ 0x7e, 0xed, 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, 0x2a, 0x86, 0x7a, 0xde, 0xda, 0x59, 0xe3, 0x6b, ++ 0x1d, 0x45, 0x0e, 0x31, 0x31, 0x89, 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, 0x5f, 0x2e, 0x87, 0xf9, ++ 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, 0xa5, 0x5f, 0x43, 0x4c, 0xec, 0xd2, ++ 0x9d, 0x02, 0x59, 0x33, 0x33, 0x75, 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, 0x52, 0xf0, 0x2c, 0xf8, ++ 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, 0xda, 0x72, 0xeb, 0xcf, 0x89, 0x4d, 0x5b, 0xc0, ++ 0x6c, 0x8f, 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, 0x33, 0x07, 0x83, 0x7e, ++ 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, 0xde, 0x4f, 0xf6, 0xe4, ++ 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, 0x3e, 0xb8, 0x4f, 0xfb, 0x9a, 0xb8, 0xf3, 0x21, 0xf5, 0x17, ++ 0x1e, 0x4e, 0x3d, 0x36, 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, 0xaf, 0xe0, 0x0d, 0x1b, ++ 0xa5, 0x3b, 0x67, 0xea, 0xea, 0xcb, 0xee, 0x2e, 0x63, 0x4e, 0xc7, 0x2e, 0x4c, 0x99, 0xac, 0x75, ++ 0xe6, 0xf2, 0x9e, 0xec, 0xec, 0x0c, 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, 0x5b, 0x38, 0x92, 0x76, ++ 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, 0x74, 0x5d, 0x7a, 0x23, ++ 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, 0x2e, 0x69, 0x18, 0x74, 0x7e, 0xa4, ++ 0x61, 0x1b, 0xbe, 0x5c, 0x5c, 0x97, 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, 0x25, 0x42, 0x29, 0x2e, ++ 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, 0xc0, 0xaf, 0x6a, 0x14, 0xfd, 0x10, 0x21, 0xe3, ++ 0x44, 0x67, 0x8e, 0xb4, 0xb4, 0xa0, 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, 0x64, 0x05, 0x2e, 0x5a, ++ 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, 0x51, 0xbe, 0x6f, 0x28, 0x89, 0xbe, 0x86, 0x98, 0x1b, 0x67, ++ 0xef, 0xc3, 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, 0x43, 0x62, 0xce, 0x17, 0xa2, 0x9d, ++ 0x82, 0xf4, 0x75, 0xb9, 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, 0xad, 0xeb, 0xe6, 0xbd, ++ 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, 0xbc, 0x3b, 0x12, 0x99, 0xf5, 0x3b, 0xf8, 0xe2, 0xa0, 0x3f, ++ 0xa3, 0x2d, 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, 0x61, 0x5f, 0xda, 0x16, 0x6f, 0xc6, 0x7b, 0x72, ++ 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, 0x50, 0x66, 0x65, 0x7d, 0xe0, 0x66, 0x29, 0x78, 0x16, 0x7c, ++ 0x88, 0xce, 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, 0xa9, 0xe9, 0xc8, 0x0a, 0x5c, 0xb4, ++ 0x89, 0x76, 0xce, 0x17, 0x17, 0x55, 0x1f, 0x5c, 0xc6, 0x9c, 0x4d, 0x5c, 0x98, 0xf1, 0x9b, 0xea, ++ 0x0f, 0x27, 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, 0x05, 0xcb, 0xd5, 0x6c, 0xb6, 0x70, 0xe7, 0xec, ++ 0x1f, 0xf6, 0x2c, 0x8a, 0x8a, 0xe6, 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, 0xff, 0x1b, 0xca, 0x45, ++ 0x42, 0x71, 0xe8, 0xba, 0xba, 0x11, 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, 0x47, 0x5a, 0xf9, 0x5d, ++ 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, 0xd3, 0x37, 0x12, 0x53, 0xbf, 0xdf, ++ 0xdf, 0x73, 0xb1, 0x89, 0x89, 0x64, 0xcc, 0x61, 0xf4, 0xd6, 0xab, 0x61, 0x15, 0xaa, 0xd5, 0xa5, ++ 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, 0x16, 0xbb, 0xcf, 0x4b, 0xbe, 0x5c, 0xcd, 0x31, ++ 0xc1, 0x3d, 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, 0xc2, 0xb9, 0xba, 0x4a, 0xd8, 0xbe, ++ 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, 0xbd, 0xe3, 0x18, 0xcc, 0x9c, 0xe3, 0x57, 0x02, 0xad, 0x24, ++ 0xf1, 0x8d, 0x3a, 0xcf, 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, 0x2a, 0xba, 0x61, 0xf7, 0xaf, 0x86, ++ 0xcb, 0x07, 0x26, 0xad, 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, 0xdf, 0xab, 0x62, 0xb7, ++ 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, 0xcf, 0x31, 0xd6, 0xa0, 0xe4, 0x80, 0xcb, 0x14, ++ 0x87, 0xe9, 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, 0x7e, 0x7a, 0xbb, 0x58, ++ 0xe7, 0x4a, 0x8f, 0x50, 0x50, 0xda, 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, 0x0b, 0xc3, 0x55, 0x28, ++ 0x3e, 0x2f, 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, 0xd9, 0xda, 0x3d, 0x36, 0x57, 0x8a, ++ 0xfa, 0x0f, 0x81, 0x61, 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, 0x54, 0xed, 0xd2, 0xd1, ++ 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, 0xba, 0xc4, 0xde, 0xc5, 0x16, 0x45, 0xaa, 0x50, ++ 0x51, 0xab, 0x08, 0x2c, 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, 0xfe, 0xff, 0x5e, 0x16, ++ 0xb6, 0xe1, 0x87, 0x7c, 0x7c, 0x8c, 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, 0xf5, 0x3c, 0x0b, 0x3e, ++ 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, 0x88, 0xfa, 0x09, 0xc8, 0xbe, 0x8e, ++ 0x74, 0xd7, 0x38, 0xc4, 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, 0x5d, 0x96, 0xbf, 0xb8, 0x59, 0x62, ++ 0x3f, 0x97, 0x49, 0x6b, 0x6b, 0xd9, 0x37, 0x6f, 0x15, 0x43, 0x3d, 0x6f, 0x6d, 0xcd, 0x90, 0xd4, ++ 0x2f, 0x46, 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, 0x65, 0x6e, 0x24, 0xa6, 0xbd, 0x7d, ++ 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, 0x2a, 0x97, 0x69, 0x89, ++ 0xbb, 0x75, 0x5a, 0xdc, 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, 0xae, 0xf6, 0xe3, 0x79, 0xa1, 0x6e, ++ 0x49, 0xf3, 0x53, 0x14, 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, 0x6b, 0x50, 0x72, 0x40, 0x84, 0x0a, ++ 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, 0x19, 0x25, 0x73, 0xff, 0xa7, 0xcc, 0x27, 0xc6, ++ 0x99, 0xa7, 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, 0xd1, 0x9a, 0xb6, 0x43, ++ 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, 0xa0, 0x35, 0x4d, 0xbc, ++ 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, 0xac, 0x7f, 0x11, 0x8e, 0xa8, 0x19, 0x67, 0x61, ++ 0xb3, 0xfc, 0xd2, 0x75, 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, 0x26, 0xad, 0x56, 0xdb, ++ 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, 0x90, 0x42, 0xa4, 0x1b, 0xcc, 0x1c, 0x49, 0x3b, ++ 0x64, 0x06, 0xeb, 0x55, 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, 0xf6, 0xd3, 0x74, 0xcb, ++ 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, 0xf9, 0x7d, 0xf5, 0x3f, 0x44, 0x7d, 0xe5, 0x64, 0x5f, 0x47, ++ 0xd8, 0xdd, 0xc6, 0x3b, 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, 0x52, 0xec, 0x66, 0x0e, 0xc5, 0xfc, ++ 0xc9, 0xb4, 0x04, 0x16, 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, 0x7f, 0x9e, 0x2f, 0x0b, ++ 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, 0xd8, 0x63, 0xf6, 0xf7, 0xaa, 0x12, 0x8c, 0xc7, ++ 0x33, 0xbb, 0x85, 0x77, 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, 0x2b, 0x73, 0xfd, 0xda, ++ 0x6b, 0x21, 0x14, 0x4e, 0x4e, 0x87, 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, 0x40, 0xa3, 0x93, 0x27, ++ 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, 0x0a, 0x7c, 0x44, 0x47, 0x1c, 0x7c, 0xac, 0x0f, 0x72, 0xee, ++ 0x90, 0x96, 0x84, 0x93, 0x93, 0x02, 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, 0x44, 0xb5, 0x86, 0xa8, ++ 0xd0, 0x54, 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, 0xf1, 0x1d, 0x7e, 0x0d, 0xa3, 0xda, 0x32, 0x49, ++ 0xac, 0x0a, 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, 0x64, 0x94, 0x0f, 0x7a, 0xd9, 0xb6, 0x9c, 0x9e, ++ 0xbf, 0xd0, 0x1e, 0x69, 0x69, 0x25, 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, 0x60, 0x13, 0x3b, 0xd5, ++ 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, 0x93, 0x45, 0xf7, 0x2e, 0x59, 0x45, 0xc6, 0x3b, 0x88, 0x40, ++ 0xa7, 0x88, 0x45, 0x51, 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, 0xcc, 0x87, 0xec, 0xac, 0xe1, 0xc9, ++ 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, 0x8b, 0x76, 0xca, 0xdc, 0x48, 0x8f, 0xb9, 0xfa, ++ 0x98, 0x1f, 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, 0xc9, 0x02, 0xf1, 0xe8, 0x81, 0x61, 0x71, 0x1d, ++ 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, 0x59, 0x33, 0x79, 0xd0, ++ 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, 0xc6, 0x1d, 0xb0, 0x91, 0xb7, 0x1d, 0xb9, 0xa5, 0xa7, 0x4b, ++ 0x6a, 0x99, 0x05, 0xf2, 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, 0x10, 0x58, 0x54, 0x79, ++ 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, 0x4a, 0x04, 0x81, 0x23, 0xa3, 0x04, 0xe7, 0x6f, 0xb4, 0xe1, ++ 0xa8, 0xaf, 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, 0x19, 0xeb, 0x5a, 0xdc, 0x06, 0x25, ++ 0x5b, 0x91, 0xa2, 0x3e, 0x3e, 0x46, 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, 0x9b, 0x1e, 0xe4, 0x1f, ++ 0xeb, 0x66, 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, 0x55, 0xf3, 0x4d, 0x7d, 0x38, 0x26, ++ 0x66, 0xb5, 0xc9, 0xee, 0xee, 0xf0, 0x05, 0x3e, 0x22, 0xc2, 0x0e, 0x3e, 0x56, 0xe6, 0x39, 0x77, ++ 0x56, 0x05, 0x7f, 0x9e, 0x9e, 0x31, 0xd3, 0x3d, 0x32, 0x4a, 0xe6, 0x3d, 0x8d, 0x5b, 0x4e, 0x4f, ++ 0x81, 0xff, 0x46, 0xbe, 0xbe, 0x2a, 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, 0x5d, 0x25, 0x6c, 0x5f, ++ 0x77, 0xdc, 0x0b, 0xc3, 0xc3, 0xd8, 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, 0x4f, 0x76, 0xd3, 0x80, ++ 0x57, 0xbd, 0x6e, 0x22, 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, 0x02, 0x88, 0xdd, 0xa0, 0x89, 0x11, ++ 0x4e, 0x5d, 0x24, 0xa6, 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, 0x01, 0xe4, 0x94, 0x53, ++ 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, 0x7b, 0x82, 0x5b, 0xcd, 0x1b, 0x9b, 0x01, 0x51, ++ 0xb0, 0xf7, 0xe1, 0x72, 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, 0xd6, 0x63, 0xdc, 0x39, ++ 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, 0xc1, 0xc2, 0xe2, 0x3a, ++ 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, 0xcd, 0x20, 0xcb, 0x98, 0xc7, 0xdf, 0x1c, 0x13, ++ 0x20, 0x61, 0x65, 0xe1, 0xe1, 0x3f, 0x25, 0x02, 0xa1, 0xf0, 0xb0, 0x02, 0x92, 0xd6, 0x5a, 0x91, ++ 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, 0x1c, 0xee, 0xa6, 0x93, 0x11, 0xbc, 0xc0, 0x2a, ++ 0xd7, 0xfa, 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, 0xd0, 0x7e, 0x22, 0x10, ++ 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, 0xca, 0x01, 0xb7, 0x12, ++ 0x9e, 0x09, 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, 0xec, 0xd0, 0xa2, 0x3e, 0xa6, 0x1a, ++ 0x05, 0x1d, 0x55, 0x09, 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, 0xd3, 0x91, 0x5d, 0xe5, ++ 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, 0x42, 0x74, 0x3b, 0x34, 0xc9, 0xee, 0xc8, 0xe7, ++ 0xed, 0x70, 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, 0x6e, 0x22, 0xef, 0x21, ++ 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, 0x46, 0xed, 0xf9, 0x59, 0x0a, 0xed, 0x2f, 0x65, 0xe8, 0x55, ++ 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, 0xca, 0xf4, 0xc8, 0xeb, 0x1e, 0xf4, 0x71, 0xaf, 0xfb, 0xff, ++ 0xbd, 0x63, 0x3c, 0xd2, 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, 0xc0, 0x26, 0x76, 0x69, ++ 0x84, 0xe2, 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, 0x7c, 0x58, 0x93, 0x99, 0x8e, 0xb4, 0x31, 0xba, ++ 0xc3, 0x8e, 0xae, 0x04, 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, 0x1a, 0x7f, 0x95, 0x02, ++ 0xca, 0xbf, 0x37, 0x11, 0x11, 0x92, 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, 0x8f, 0x50, 0xa5, 0xe9, ++ 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, 0x2a, 0x40, 0xc7, 0x75, 0xa2, 0x40, 0x68, 0x3f, 0x11, 0x08, ++ 0x34, 0x15, 0xf2, 0xc5, 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, 0x58, 0xd7, 0xed, 0x83, ++ 0x26, 0x77, 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, 0xa3, 0xe1, 0xad, 0x3a, 0xb1, 0x89, 0x8d, 0x96, ++ 0x10, 0xd1, 0xd3, 0x91, 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, 0x49, 0x6b, 0x2d, 0xa9, ++ 0x25, 0x7c, 0x30, 0xe8, 0xe8, 0x37, 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, 0x41, 0x47, 0x07, 0x74, ++ 0xe3, 0xef, 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, 0x79, 0x12, 0x88, 0xa9, 0xcf, 0x93, ++ 0x63, 0xa8, 0x9c, 0xe7, 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, 0x85, 0x77, 0x64, 0x92, ++ 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, 0x06, 0x33, 0x27, 0x48, 0x65, 0xe1, 0xba, 0x09, ++ 0x4f, 0xe5, 0x35, 0x1a, 0x1a, 0x66, 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, 0x51, 0x1f, 0x53, 0x0d, ++ 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, 0x39, 0xf5, 0x79, 0x93, 0x46, 0xf5, 0x38, 0xc4, 0xd6, 0x56, ++ 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, 0xa7, 0x81, 0xfc, 0x92, 0xdf, 0x81, 0x99, 0x15, 0x0f, 0xb9, ++ 0x67, 0x0d, 0xd8, 0x52, 0x52, 0x26, 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, 0x06, 0x1d, 0xfe, 0x29, ++ 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, 0xe2, 0xc7, 0x1b, 0x34, 0x6e, 0xc7, 0x84, 0x93, 0xf0, 0xc1, ++ 0xfe, 0xaa, 0xc5, 0xd4, 0xd4, 0x8d, 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, 0xd7, 0x87, 0x48, 0x6a, ++ 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, 0x15, 0x20, 0x82, 0xdb, 0x51, 0x20, 0x34, 0xfe, 0xe9, 0x04, ++ 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, 0x35, 0x0a, 0x9f, 0x08, 0xf1, 0x90, ++ 0x80, 0x47, 0x57, 0x02, 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, 0x0d, 0xde, 0xab, 0x01, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x4a, 0xf8, 0x60, 0x13, 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, 0x82, 0x8e, 0x0e, 0xe8, ++ 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, 0x09, 0xd7, 0x5a, 0xb8, 0xa7, 0xd7, 0x9e, 0xec, 0x65, 0xc3, ++ 0x4c, 0xee, 0x06, 0x1d, 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, 0x99, 0x74, 0xa1, 0xd1, 0xd9, 0xef, ++ }, ++ { /* 5 */ ++ 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, 0x1d, 0x80, 0x8c, 0x85, 0x3b, 0x8c, ++ 0x69, 0x10, 0x51, 0x4c, 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, 0xb7, 0x87, 0xa1, 0x7c, 0xf5, 0xa1, ++ 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, 0xb7, 0xbe, 0xdf, 0x6c, 0x21, 0x29, 0x03, 0x21, ++ 0xba, 0xff, 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, 0xaa, 0x69, 0x60, 0xaa, ++ 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, 0xcd, 0xe3, 0x9f, 0xcd, ++ 0x87, 0x09, 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, 0x3c, 0x27, 0x0e, 0x49, 0xb0, 0x0e, ++ 0x58, 0xeb, 0x32, 0xf4, 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, 0xb2, 0x0a, 0x39, 0xb2, ++ 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, 0xe2, 0xff, 0xf0, 0x9c, 0x38, 0xe7, 0x85, 0x38, ++ 0xc4, 0x6a, 0x4f, 0xa5, 0x08, 0x67, 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, 0x4c, 0x1b, 0xb6, 0x4c, ++ 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, 0xcb, 0xc3, 0x7f, 0xe4, 0x3e, 0x7b, 0xfc, 0x88, 0xf2, 0xfc, ++ 0x05, 0x75, 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, 0x58, 0xc7, 0xe7, 0xdf, 0x09, 0xe7, ++ 0x9a, 0x66, 0x03, 0x90, 0x2b, 0x84, 0xa4, 0x55, 0x95, 0x94, 0xa6, 0x0c, 0x44, 0x3a, 0x81, 0x44, ++ 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, 0x43, 0x69, 0xd1, 0x3b, 0xba, 0x2b, 0x0e, 0xba, ++ 0xa6, 0x5f, 0x89, 0x16, 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, 0x6a, 0xf7, 0xed, 0x6a, ++ 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, 0xa8, 0xa3, 0xc6, 0x20, 0xa7, 0x22, 0x3d, 0xbb, 0xa0, 0x3d, ++ 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, 0x24, 0x31, 0xdc, 0x0c, 0x2e, 0xdc, ++ 0x43, 0x63, 0x36, 0xf7, 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, 0x7d, 0xd8, 0x42, 0x52, 0x06, 0x42, ++ 0x85, 0x54, 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, 0x59, 0x68, 0x73, 0x8f, 0xd9, 0x50, 0x0b, 0xd9, ++ 0x41, 0x3e, 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, 0x2d, 0x98, 0x32, 0x70, 0x95, 0x4b, 0xbd, 0x95, ++ 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, 0xd0, 0x30, 0xbd, 0x62, 0xad, 0xcd, 0x81, 0xf8, 0x29, 0x81, ++ 0x2c, 0x94, 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, 0x1b, 0x64, 0x59, 0x05, 0xfd, 0x59, ++ 0xcd, 0x12, 0xf2, 0xa4, 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, 0x1c, 0x92, 0xa3, 0x1c, ++ 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, 0x85, 0x49, 0x76, 0x19, 0x87, 0x90, 0xae, 0x87, ++ 0xa2, 0xe5, 0xdd, 0x29, 0xb4, 0xfc, 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, 0x07, 0xc5, 0x58, 0x07, ++ 0x38, 0x83, 0xde, 0xb9, 0x9f, 0x78, 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, 0x43, 0xff, 0xd9, 0x43, ++ 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, 0x8b, 0xaa, 0xe9, 0xeb, 0x8f, 0x18, 0x88, 0x74, 0xc1, 0x88, ++ 0x4b, 0xd4, 0x9e, 0x89, 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, 0x98, 0x36, 0xaf, 0x98, ++ 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, 0x35, 0xf9, 0x23, 0xe2, 0x74, 0x45, 0x75, 0x51, 0xec, 0x75, ++ 0xe7, 0x61, 0x95, 0x1f, 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, 0xff, 0xbc, 0x50, 0xff, ++ 0x90, 0x8c, 0x81, 0x10, 0xc4, 0xd3, 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, 0x49, 0x47, 0x93, 0x49, ++ 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, 0x93, 0x85, 0x4f, 0x40, 0x8d, 0x44, 0x7a, 0xb5, 0x83, 0x7a, ++ 0x53, 0xce, 0xa5, 0x0b, 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, 0x35, 0x9a, 0x97, 0x35, ++ 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, 0xe9, 0x3f, 0xcd, 0x34, 0xd8, 0xa6, 0x8d, 0x28, 0xe4, 0x8d, ++ 0xf1, 0x2b, 0x78, 0x22, 0xb2, 0x47, 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, 0x32, 0x5f, 0xcf, 0x32, ++ 0xfd, 0x26, 0x84, 0x63, 0xb9, 0x9c, 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, 0x85, 0x09, 0xd3, 0x85, ++ 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, 0xa7, 0x63, 0x0f, 0x79, 0xe2, 0x83, 0x2c, 0xe2, ++ 0x29, 0xe1, 0x58, 0x3a, 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, 0x43, 0xa3, 0xbe, 0xda, 0xf4, 0xbe, ++ 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, 0x8f, 0xf8, 0xd8, 0x87, 0x31, 0x02, 0x1e, 0x0b, 0xde, 0x1e, ++ 0x82, 0x7c, 0x38, 0x12, 0x3d, 0xf1, 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, 0xe9, 0x96, 0xb9, 0xe9, ++ 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, 0x63, 0x60, 0xb9, 0xc4, 0x99, 0x59, 0xc1, 0x33, 0x52, 0xc1, ++ 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, 0x1a, 0x06, 0x5f, 0x9d, 0x5d, 0x51, 0xb9, 0x1f, 0xac, 0xb9, ++ 0x48, 0x46, 0xa1, 0x08, 0x62, 0x88, 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, 0xc5, 0xc2, 0xa8, 0xc5, ++ 0x2a, 0x73, 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, 0x12, 0x8e, 0xca, 0x5f, 0xe3, 0x2e, 0xf3, 0xe3, ++ 0xef, 0xd6, 0x3d, 0x61, 0x40, 0xbe, 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, 0x25, 0xd8, 0xf9, 0x25, ++ 0x70, 0xc5, 0x7f, 0xb1, 0xfd, 0xf0, 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, 0x86, 0x3d, 0x71, 0x86, ++ 0x2d, 0x5b, 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, 0xdd, 0x30, 0xd3, 0xe8, 0x41, 0xd3, ++ 0x31, 0xfb, 0x63, 0xb8, 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, 0x13, 0x76, 0xcc, 0x13, ++ 0xe2, 0x14, 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, 0xe0, 0xac, 0xea, 0xd6, 0x18, 0x63, 0x59, 0x18, ++ 0x86, 0xc6, 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, 0xfa, 0x73, 0x84, 0xa4, 0x0c, 0x84, ++ 0xc9, 0xa8, 0xa6, 0x9b, 0x2d, 0x3f, 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, 0x71, 0xa0, 0x16, 0x71, ++ 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, 0x87, 0x1a, 0x6c, 0x53, 0xa7, 0x14, 0x72, 0xa7, ++ 0x80, 0x21, 0x12, 0xec, 0x61, 0x34, 0x37, 0xd0, 0xda, 0xd4, 0x2b, 0x48, 0x3e, 0x8f, 0x02, 0x3e, ++ 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, 0x69, 0xcc, 0xc0, 0xb0, 0x5f, 0x6d, 0x7a, 0x5f, ++ 0xfc, 0xe9, 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, 0x6c, 0xa2, 0xf9, 0x01, 0x0f, 0xe4, 0x6f, 0x0f, ++ 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, 0x87, 0x5c, 0xba, 0x5f, 0x8e, 0x36, 0xf1, 0xf5, 0xe0, 0xf1, ++ 0x44, 0x4b, 0x5d, 0x49, 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, 0x6a, 0xb7, 0x72, 0x94, 0xb4, 0x72, ++ 0x0c, 0x0d, 0xfc, 0x41, 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, 0x61, 0x76, 0xb7, 0x56, 0x1c, 0xb7, ++ 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, 0x9c, 0xd3, 0xc3, 0xc2, 0xd4, 0x2d, 0x19, 0xd4, ++ 0xa4, 0x02, 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, 0xce, 0xaf, 0xcf, 0xc9, 0xbd, 0xee, 0x56, 0xbd, ++ 0x3d, 0xf6, 0x9f, 0xf9, 0x09, 0xb2, 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, 0xa4, 0x20, 0xd0, 0xa4, ++ 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, 0x3a, 0x78, 0xc1, 0x9e, 0x26, 0xec, 0x5b, 0x26, ++ 0x35, 0x41, 0x37, 0x87, 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, 0x1f, 0xdc, 0x7e, 0x44, 0x79, 0x7e, ++ 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, 0x60, 0x8b, 0xa5, 0x7e, 0xcf, 0x7a, 0xe2, 0xcf, ++ 0x68, 0xdf, 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, 0x2b, 0x91, 0x49, 0x2b, ++ 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, 0xdb, 0x48, 0xbb, 0x97, 0x83, 0x13, 0xe1, 0xb7, 0x8e, 0xe1, ++ 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, 0xf4, 0x24, 0x1f, 0xa6, 0x01, 0x1f, ++ 0xa0, 0xb8, 0xf7, 0xd7, 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, 0xd0, 0xdc, 0xe3, 0xd0, ++ 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, 0xae, 0xd8, 0x0e, 0x7a, 0x46, 0x35, 0xe0, 0x1a, 0x51, 0xe0, ++ 0x9f, 0x13, 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, 0x16, 0x28, 0xfe, 0xcb, 0xa3, 0xe5, 0x88, 0xa3, ++ 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, 0x50, 0xe2, 0x52, 0x7c, 0x0c, 0x0b, 0x69, 0xc3, 0x4f, 0x69, ++ 0xae, 0xe8, 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, 0x7f, 0x84, 0xb0, 0x93, 0x44, 0xb0, ++ 0x10, 0xad, 0x93, 0xfc, 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, 0x77, 0xc8, 0x91, 0x77, ++ 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, 0xec, 0x85, 0xb6, 0xa9, 0xd8, 0xfd, 0xd4, 0xd8, ++ 0xa1, 0x77, 0xe2, 0xa8, 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, 0x5a, 0x31, 0x5f, 0x5a, ++ 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, 0x11, 0xef, 0xb1, 0x11, ++ 0x4d, 0x33, 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, 0x53, 0x06, 0x22, 0x1d, 0xa1, 0x22, ++ 0xaa, 0x52, 0x75, 0x57, 0x07, 0x6e, 0x06, 0x7b, 0xc8, 0x5a, 0xe1, 0x17, 0xdd, 0xa1, 0xf1, 0xdd, ++ 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, 0xfe, 0x0b, 0x7c, 0xf6, 0x3b, 0xd3, 0x27, 0x3b, ++ 0x42, 0xac, 0x23, 0x88, 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, 0xc8, 0xbf, 0xba, 0xc8, ++ 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, 0x76, 0x4c, 0xd1, 0xc0, 0x54, 0xcc, 0x8e, 0x1c, 0x46, 0x8e, ++ 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, 0xcd, 0x95, 0x4f, 0x2f, 0x14, 0x4f, ++ 0xb2, 0x48, 0x4e, 0xd5, 0x11, 0x1b, 0x57, 0x6c, 0x07, 0x3d, 0x23, 0xfb, 0x70, 0x0d, 0xc9, 0x70, ++ 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, 0xbc, 0x7a, 0x33, 0x3f, 0xa4, 0x50, 0xb6, 0xfb, 0xc3, 0xb6, ++ 0x39, 0x4c, 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, 0x58, 0xa0, 0x7e, 0xaa, 0xc9, 0x12, 0x65, 0xc9, ++ 0xad, 0x7a, 0x1e, 0xe9, 0xcd, 0x61, 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, 0xed, 0x67, 0x43, 0xed, ++ 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, 0xd7, 0x35, 0x7a, 0x12, 0xee, 0x53, 0xe1, 0xee, ++ 0xcf, 0x4f, 0xd8, 0x5a, 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, 0xcb, 0x8b, 0x18, 0xcb, ++ 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, 0x79, 0x11, 0x10, 0xa5, 0x9c, 0xc7, 0x55, 0x9c, ++ 0x9b, 0xa9, 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, 0xce, 0xd7, 0x3d, 0xce, ++ 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, 0x19, 0xda, 0x3b, 0xb0, 0xcc, 0xbb, 0x36, 0xae, 0x35, 0x36, ++ 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, 0x5b, 0xb5, 0x6c, 0x9f, 0x6a, 0x6c, ++ 0xa8, 0x0f, 0x5f, 0xa9, 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, 0x0a, 0xb8, 0x4a, 0x0a, ++ 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, 0xc4, 0x73, 0xbd, 0x68, 0x1d, 0x3f, 0x7c, 0x1d, ++ 0x5c, 0x51, 0x66, 0xcb, 0x7f, 0x26, 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, 0xdf, 0x38, 0x8c, 0xdf, ++ 0xa5, 0xcd, 0xb6, 0x97, 0x7e, 0xf3, 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, 0x37, 0x03, 0xea, 0x37, ++ 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, 0xf8, 0x2f, 0x76, 0x65, 0x4e, 0x76, ++ 0xd3, 0xef, 0xb7, 0xe7, 0x67, 0x8f, 0xb1, 0x79, 0xfd, 0x90, 0x6b, 0x99, 0x0b, 0x15, 0x95, 0x0b, ++ 0xf0, 0xe4, 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, 0xea, 0x70, 0x98, 0x77, 0xb8, 0xb2, 0x73, 0xb8, ++ 0x5d, 0x9e, 0x73, 0xb4, 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, 0x55, 0xd5, 0x30, 0x55, ++ 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, 0xfb, 0x4d, 0xaa, 0xfb, ++ 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, 0x34, 0x02, 0x87, 0xab, 0xc6, 0xf6, 0x0a, 0xc6, ++ 0xbd, 0xd7, 0x8d, 0x15, 0x68, 0x86, 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, 0x9a, 0xaf, 0xd2, 0x9a, ++ 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, 0x6e, 0x63, 0x77, 0x6b, 0x56, 0x90, 0x7c, 0xdd, 0x04, 0x7c, ++ 0xe4, 0xf3, 0xaa, 0x9e, 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, 0xa2, 0x48, 0x57, 0xa2, ++ 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, 0x3a, 0x7e, 0xf8, 0x3a, ++ 0xb8, 0xa2, 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, 0x93, 0xb6, 0x7d, 0x70, 0xdb, 0x7d, ++ 0xcb, 0xf5, 0x8c, 0x65, 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, 0xa6, 0xb9, 0xad, 0xa6, ++ 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, 0xf7, 0x4c, 0x19, 0x38, 0xab, 0xc4, 0xbf, 0xab, ++ 0xb5, 0x60, 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, 0x40, 0xcb, 0x7b, 0x40, ++ 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, 0xed, 0x6d, 0xfc, 0x58, 0x66, 0xbc, 0x1b, 0x57, 0xfb, 0x1b, ++ 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, 0x95, 0x52, 0xa8, 0xf0, 0x1d, 0xa8, ++ 0x97, 0xa4, 0xea, 0xae, 0x0e, 0xdc, 0x0c, 0xf6, 0x53, 0xb4, 0x01, 0x2e, 0x79, 0x81, 0x21, 0x79, ++ 0x88, 0x96, 0xba, 0x92, 0xd2, 0xa6, 0xb9, 0xdd, 0x9f, 0x48, 0xd4, 0xad, 0xe4, 0xeb, 0xab, 0xe4, ++ 0x61, 0xa7, 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, 0x48, 0x62, 0x7b, 0x18, 0x5c, 0x7b, ++ 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, 0x58, 0xa8, 0x22, 0x58, ++ 0x11, 0x62, 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, 0xfb, 0x5d, 0xfd, 0x25, 0x2d, 0xfd, ++ 0x99, 0xf4, 0x3c, 0x11, 0x59, 0xc2, 0x07, 0x8e, 0x55, 0x41, 0x2f, 0xf0, 0x19, 0xce, 0x86, 0x19, ++ 0x72, 0x98, 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, 0xb0, 0x83, 0xfc, 0x97, 0x51, 0x24, 0xca, 0x51, ++ 0x83, 0xb3, 0x2d, 0x6d, 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, 0x63, 0x7b, 0x05, 0x63, ++ 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, 0xff, 0xcf, 0xc1, 0x1d, 0x84, 0xd9, 0x4d, 0xb6, 0x69, 0x4d, ++ 0x55, 0x29, 0xdb, 0xca, 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, 0x91, 0xea, 0x8f, 0xb1, 0x99, 0x8f, ++ 0x73, 0x57, 0x40, 0x30, 0x8f, 0xb6, 0xfb, 0x9d, 0xf0, 0x71, 0x3a, 0xc3, 0xdb, 0xc9, 0x76, 0xdb, ++ 0x9d, 0x4e, 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, 0x96, 0x0f, 0xb1, 0x63, 0x74, 0xfc, 0x33, 0x74, ++ 0x81, 0xee, 0x07, 0x93, 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, 0xb4, 0x62, 0xbe, 0xb4, ++ 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, 0xc8, 0x1f, 0x1b, 0xc9, 0xaf, 0x91, 0x73, 0x39, 0x6b, 0x73, ++ 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, 0x47, 0xcf, 0xe5, 0xaf, 0xfa, 0xe0, 0x75, 0xfa, ++ 0xbb, 0x30, 0xf3, 0xd4, 0x8c, 0x0a, 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, 0x20, 0x84, 0xdc, 0x20, ++ 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, 0x7e, 0x2c, 0x33, 0x5e, 0xec, 0xca, 0x9c, 0xec, ++ 0xea, 0xa3, 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, 0xc2, 0x07, 0xf0, 0xc2, ++ 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, 0x5b, 0x9a, 0x54, 0x89, 0x22, 0xd5, 0x09, 0x8c, 0xe8, 0x09, ++ 0xce, 0x80, 0xcd, 0x25, 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, 0xf1, 0xb2, 0x41, 0x66, 0xa4, 0x41, ++ 0x63, 0xfa, 0xd3, 0xcc, 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, 0x07, 0xca, 0xac, 0x01, 0xe7, 0xac, ++ 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, 0xdc, 0xc6, 0xee, 0xd6, 0xac, 0xe3, 0xf8, 0x79, 0x08, 0xf8, ++ 0x32, 0x69, 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, 0xdd, 0xe9, 0x08, 0xb3, 0x4e, 0x82, 0xcb, 0x4e, ++ 0xd7, 0x55, 0xe3, 0xd8, 0xdf, 0xc6, 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, 0x66, 0x27, 0x20, 0x66, ++ 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, 0x38, 0x9f, 0x29, 0x08, 0x34, 0x29, ++ 0x08, 0xb7, 0xa8, 0x7e, 0xb3, 0x92, 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, 0xda, 0x64, 0xa9, 0xda, ++ 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, 0x1c, 0xf4, 0x8c, 0x6a, 0x03, 0x34, 0xa2, 0x03, ++ 0x79, 0xbd, 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, 0xd6, 0xb4, 0x64, 0xd6, ++ 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, 0x57, 0x4c, 0x4d, 0x57, ++ 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, 0x27, 0x5b, 0x1e, 0xa7, 0x96, 0x20, 0x23, 0xb0, 0x7e, 0x23, ++ 0xfb, 0xc1, 0xfa, 0xa2, 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, 0x3f, 0x22, 0xdd, 0x3f, ++ 0xec, 0x44, 0x02, 0xe0, 0x32, 0xf8, 0x79, 0x66, 0xe6, 0x59, 0xc4, 0x08, 0x78, 0x2c, 0xfe, 0x78, ++ 0x4e, 0xa1, 0xdf, 0xc9, 0x86, 0x04, 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, 0x7f, 0xe9, 0xa6, 0x7f, ++ 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, 0xe6, 0x72, 0xd6, 0xe6, ++ 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, 0xe2, 0x65, 0x56, 0xe1, 0x92, 0x56, ++ 0x6c, 0x65, 0x10, 0x0c, 0x53, 0xcc, 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, 0x46, 0xa3, 0xfc, 0x46, ++ 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, 0x2a, 0xa5, 0x11, 0x8b, 0xe5, 0x46, 0x74, 0xe5, ++ 0x5f, 0xc3, 0x59, 0x4a, 0x0d, 0x60, 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, 0x82, 0xcc, 0x8b, 0x82, ++ 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, 0x05, 0xa7, 0xac, 0x77, 0x70, 0xfd, 0x52, 0x10, 0x68, 0x52, ++ 0x8a, 0xcb, 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, 0x9b, 0x05, 0x33, 0xf2, 0x10, 0x33, ++ 0x56, 0xbb, 0xe4, 0x4b, 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, 0xd2, 0x45, 0x9e, 0xd2, ++ 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, 0xba, 0x01, 0xfb, 0x65, 0x45, 0x47, 0x6b, 0x5a, 0x32, 0x6b, ++ 0xb4, 0xaf, 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, 0x44, 0x54, 0xf2, 0xc0, 0xca, 0x26, 0xc7, 0xca, ++ 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, 0x47, 0xe7, 0xc3, 0x4e, 0x9e, 0x93, 0x6d, 0x32, 0xb5, 0x6d, ++ 0xbe, 0x45, 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, 0x42, 0x8d, 0xc7, 0x5b, 0xd5, 0xc7, ++ 0x1b, 0x88, 0x04, 0x03, 0x64, 0x33, 0xf2, 0xcc, 0x0f, 0xb2, 0x4b, 0x10, 0xf0, 0x58, 0x3f, 0xf0, ++ 0x9c, 0x81, 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, 0xd6, 0xfd, 0x77, 0x37, 0xfe, 0x11, 0x8f, 0xfe, ++ 0x5e, 0x0c, 0x4c, 0x35, 0x23, 0xe3, 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, 0x08, 0x21, 0x37, 0x08, ++ 0x07, 0x28, 0x6b, 0xbe, 0xca, 0x0f, 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, 0x30, 0xc6, 0xb2, 0x30, ++ 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, 0x4a, 0x3e, 0x89, 0xd9, 0x1e, 0x89, ++ 0x0f, 0x9f, 0xc3, 0xc0, 0x79, 0x9d, 0x6a, 0x31, 0x46, 0x07, 0xe8, 0x8a, 0xea, 0xa2, 0x1b, 0xea, ++ 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, 0x7c, 0x7f, 0x29, 0x14, 0xcc, 0x4e, 0x40, 0xcc, ++ 0xf4, 0x5e, 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, 0x06, 0xe4, 0xd5, 0x80, 0xc6, 0xd5, ++ 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, 0xf8, 0x41, 0x94, 0x5c, 0xab, 0x29, 0x54, 0x78, 0xef, 0x54, ++ 0x71, 0x0a, 0x6a, 0xce, 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, 0x75, 0x6b, 0x0c, 0xd0, 0xcd, 0x0c, ++ 0x1c, 0xa0, 0x6f, 0xbd, 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, 0xc0, 0x9e, 0x8d, 0xc0, ++ 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, 0x93, 0x61, 0x88, 0xd2, 0x24, 0x75, 0x26, 0x24, ++ 0x22, 0xc4, 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, 0x39, 0x4a, 0x5a, 0x39, ++ 0xeb, 0x6c, 0x69, 0x5e, 0xf8, 0xf7, 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, 0x48, 0xea, 0x4c, 0x48, ++ 0xbc, 0x18, 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, 0x0d, 0x25, 0x10, 0x42, 0x6e, 0x10, ++ 0x3c, 0x39, 0x8a, 0x86, 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, 0x2e, 0xcd, 0x6c, 0x2e, ++ 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, 0x09, 0x47, 0x65, 0xce, 0x90, 0x17, 0x98, 0x90, ++ 0xe9, 0x31, 0x43, 0xa0, 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, 0x9f, 0xf3, 0xf7, 0x9f, ++ 0x02, 0x5d, 0x2a, 0xfe, 0x5c, 0xc5, 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, 0xd7, 0x19, 0xbb, 0xd7, ++ 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, 0x25, 0x1f, 0xa5, 0x8d, 0x0f, 0xa5, ++ 0xda, 0x97, 0x0a, 0xe6, 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, 0x52, 0x28, 0x5b, 0x9c, 0x80, 0x5b, ++ 0x19, 0xd5, 0x2e, 0xfd, 0x38, 0xf6, 0x30, 0x5e, 0x8f, 0x95, 0x04, 0xb8, 0x27, 0x41, 0x84, 0x27, ++ 0xdb, 0x58, 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, 0x94, 0x7c, 0xd1, 0x71, 0x3c, 0xd1, ++ 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, 0x17, 0x87, 0x36, 0x17, ++ 0x17, 0x85, 0xf8, 0x42, 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, 0x2a, 0x66, 0x47, 0x0e, 0x23, 0x47, ++ 0x4a, 0x1b, 0x8b, 0xf6, 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, 0x44, 0x69, 0x12, 0xdb, 0x13, 0x12, ++ 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, 0xc5, 0xbb, 0xb0, 0x4d, 0x0d, 0x7d, 0x12, 0x0d, ++ 0xd9, 0x05, 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, 0x06, 0x68, 0x87, 0x06, ++ 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, 0x6e, 0x06, 0x17, 0x6e, ++ 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, 0x75, 0x38, 0x4c, 0xda, 0x5c, 0x59, 0xd8, 0x5c, ++ 0x76, 0x22, 0x01, 0x70, 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, 0x3c, 0x16, 0x7f, 0x3c, ++ 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, 0xd4, 0xae, 0x6d, 0x7d, 0xde, 0x95, 0x53, 0xde, ++ 0x18, 0x1a, 0x3b, 0x82, 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, 0xad, 0xac, 0x38, 0xad, ++ 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, 0xde, 0xef, 0x17, 0xe0, 0xf3, 0xee, 0xb3, 0xa7, 0xe6, 0xb3, ++ 0xf2, 0xb9, 0x47, 0xa3, 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, 0xd7, 0xdf, 0x6f, 0xab, 0xc8, 0x6f, ++ 0x95, 0xf9, 0xc0, 0x50, 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, 0xae, 0x98, 0x9a, 0xae, ++ 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, 0xbe, 0xf9, 0xba, 0xa2, 0xb1, 0x3e, 0x9b, 0xb1, ++ 0xa9, 0xc0, 0x4a, 0xd6, 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, 0x80, 0x55, 0xf6, 0x80, ++ 0x84, 0x9b, 0x46, 0xd3, 0xd9, 0x7d, 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, 0x53, 0xbd, 0xb7, 0x53, ++ 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, 0xd1, 0xc5, 0x20, 0x79, 0x63, 0x2a, 0x45, 0x97, 0x5e, 0x45, ++ 0x1d, 0x6f, 0x7a, 0xc2, 0x80, 0xbf, 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, 0x4a, 0x73, 0x31, 0x4a, ++ 0x93, 0x1e, 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, 0x90, 0xfa, 0x9f, 0xbd, 0x14, 0xb3, 0x94, 0x14, ++ 0x28, 0x2e, 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, 0x92, 0xa9, 0x85, 0xf7, 0x34, 0x37, 0x48, 0x34, ++ 0xc6, 0x37, 0x65, 0x5b, 0x54, 0xa2, 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, 0x9b, 0x02, 0x0d, 0x9b, ++ 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, 0x75, 0x90, 0xb5, 0xed, 0xc5, 0x26, 0x01, 0xad, 0xdf, 0x01, ++ 0x65, 0x1d, 0xad, 0x0d, 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, 0xd6, 0xf1, 0x16, 0x2a, 0xe9, 0x16, ++ 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, 0xb3, 0x18, 0xeb, 0xf8, 0x61, 0xe2, 0x78, 0x61, ++ 0x7c, 0xc8, 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, 0xb6, 0x76, 0xd2, 0x49, 0x31, 0x6b, 0x6d, 0x31, ++ 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, 0x92, 0x8e, 0xe5, 0x92, ++ 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, 0xbb, 0xf4, 0x66, 0x7e, 0x8b, 0xa0, 0xaf, 0x35, 0x45, 0xaf, ++ 0x21, 0x56, 0xf0, 0x44, 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, 0x64, 0xbe, 0x5d, 0x64, ++ 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, 0x3c, 0xa8, 0xdc, 0x21, 0x05, 0x96, 0x5e, 0xc0, 0xa5, 0x5e, ++ 0xf9, 0x9c, 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, 0xa1, 0xc6, 0xe8, 0x3b, 0x66, 0xe8, ++ 0x01, 0xcf, 0x15, 0x7f, 0x2e, 0x83, 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, 0x8a, 0xed, 0xbc, 0x8a, ++ 0x5b, 0x79, 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, 0xbf, 0x34, 0xef, 0xfe, 0x3e, 0xef, ++ 0x91, 0x43, 0x94, 0x6f, 0xea, 0x50, 0x89, 0x83, 0x10, 0xdd, 0xd0, 0x15, 0xc3, 0xaa, 0x2f, 0xc3, ++ 0x14, 0x17, 0xc7, 0xc3, 0x1d, 0xae, 0x98, 0xfd, 0x49, 0xb5, 0xa3, 0x9a, 0x1a, 0xfa, 0x24, 0x1a, ++ 0x7a, 0x2f, 0xfd, 0x31, 0x12, 0xa7, 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, 0x8b, 0x40, 0x63, 0x8b, ++ 0xf6, 0x03, 0x13, 0x9c, 0x78, 0x48, 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, 0x02, 0x99, 0x7d, 0x02, ++ 0xb1, 0xda, 0x71, 0x54, 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, 0xaa, 0x07, 0x2d, 0xf9, 0xce, 0x2d, ++ 0xb7, 0x3d, 0x0f, 0x95, 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, 0x97, 0xd2, 0xc0, 0x97, ++ 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, 0x72, 0x05, 0x6f, 0x21, 0x2c, 0x54, 0x11, 0x2c, ++ 0x5a, 0xb6, 0x18, 0x0a, 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, 0x65, 0x13, 0x82, 0x65, ++ 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, 0x62, 0xd6, 0xda, 0x62, ++ 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, 0x31, 0x6c, 0xbe, 0x1a, 0x96, 0x7f, 0x1f, 0x96, ++ 0x47, 0xd9, 0x62, 0xc8, 0x1b, 0x15, 0x1e, 0x54, 0x6e, 0xf1, 0xe3, 0x4b, 0x2f, 0x60, 0xb3, 0x2f, ++ 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, 0x13, 0x46, 0xc7, 0x7a, 0xf3, 0x6c, 0x9d, 0xf3, ++ 0x6e, 0x38, 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, 0x91, 0xba, 0x47, 0x91, ++ 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, 0x2a, 0x3c, 0x96, 0x2a, ++ 0x24, 0x23, 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, 0xe4, 0x81, 0x83, 0x61, 0x54, 0x83, ++ 0x74, 0x7f, 0x2b, 0x8e, 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, 0xeb, 0x0f, 0xc4, 0xeb, ++ 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, 0x05, 0x6e, 0x39, 0xb1, 0x50, 0x89, 0x15, 0x50, ++ 0x03, 0x92, 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, 0x5d, 0xf4, 0x07, 0x5d, ++ 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, 0xa2, 0x2e, 0x5d, 0xce, 0x47, 0x1b, 0x99, 0x9b, 0x70, 0x99, ++ 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, 0x25, 0x72, 0xe7, 0x91, 0xc9, 0x2d, 0x68, 0x6e, 0x90, 0x68, ++ 0x4f, 0x6e, 0xca, 0xb6, 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, 0xf5, 0x04, 0x1a, 0xf5, ++ 0x0e, 0x50, 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, 0x06, 0xf5, 0x2e, 0xde, 0x60, 0x4f, 0xa7, 0x60, ++ 0x7d, 0x07, 0x96, 0x8f, 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, 0xbb, 0x86, 0xd1, 0xbb, ++ 0xb9, 0x6d, 0xd9, 0x2a, 0xd0, 0xcf, 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, 0xf7, 0x9d, 0x67, 0xf7, ++ 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, 0x46, 0x12, 0x5e, 0x55, 0x50, 0x74, 0xa9, 0x5d, 0xc2, 0xa9, ++ 0x54, 0xe6, 0xce, 0xb5, 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, 0x05, 0x5c, 0x25, 0x05, ++ 0x1f, 0x32, 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, 0xcc, 0xfc, 0xd5, 0x83, 0x9d, 0x6a, 0x8a, 0x9d, ++ 0xc2, 0x8d, 0x31, 0x64, 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, 0xf6, 0x30, 0xb8, 0xf6, ++ 0x33, 0xa6, 0x49, 0x46, 0x5e, 0xac, 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, 0xc4, 0x6f, 0x77, 0xc4, ++ 0x3a, 0xde, 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, 0xf7, 0x56, 0x94, 0xe6, 0x62, 0x94, ++ 0xe5, 0x3c, 0xbf, 0xe1, 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, 0x28, 0xa5, 0xeb, 0x28, ++ 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, 0x25, 0x17, 0x5a, 0x9b, 0x15, 0x1e, 0x4b, 0x15, ++ 0x12, 0xf0, 0xb9, 0x02, 0xf9, 0x22, 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, 0xa0, 0xd1, 0x2a, 0xa0, ++ 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, 0x2a, 0x58, 0xd0, 0x08, 0x59, 0xe9, 0x9e, 0x5e, 0x28, 0x9e, ++ 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, 0x83, 0x0e, 0x8b, 0x33, 0x30, 0x2c, 0x67, 0x8a, 0xff, 0x67, ++ 0x34, 0x8e, 0x22, 0xf8, 0x94, 0xa3, 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, 0xf4, 0xa9, 0xc5, 0xf4, ++ 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, 0xe7, 0xe0, 0x67, 0xb6, 0x86, 0x85, 0xbf, 0x77, 0x2b, 0xbf, ++ 0xed, 0x8b, 0x17, 0x9f, 0x1c, 0x7b, 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, 0xf2, 0xc1, 0x42, 0xf2, ++ 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, 0x23, 0x09, 0x2f, 0xcb, 0x28, 0x3a, 0xb5, 0xcf, 0x61, 0xb5, ++ 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, 0xe9, 0xa4, 0x93, 0x23, 0x3a, 0x93, ++ 0xdf, 0xe2, 0x4b, 0xa6, 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, 0xbc, 0x43, 0x89, 0xbc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x66, 0x8f, 0x92, 0x8c, 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, 0x4b, 0xde, 0xee, 0x4b, ++ 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, 0x17, 0x05, 0x91, 0x32, 0x92, 0x98, 0x04, 0xf1, 0xfa, 0x04, ++ 0x3e, 0x64, 0xa0, 0x78, 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, 0x69, 0xc5, 0xf9, 0xd4, 0xd7, 0xf9, ++ }, ++ { /* 6 */ ++ 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, 0xb3, 0x42, 0x6e, 0xe5, 0x18, 0xc6, ++ 0x33, 0xea, 0x25, 0x27, 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, 0xf7, 0x12, 0x65, 0x8f, 0x4c, 0x36, ++ 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, 0x3b, 0x2e, 0x19, 0xca, 0x9c, 0x04, 0x9a, 0x9d, ++ 0x67, 0xeb, 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, 0x6b, 0x80, 0xab, 0x4b, ++ 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, 0xc0, 0x17, 0x3d, 0xb5, ++ 0xe7, 0x33, 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, 0x18, 0xa1, 0xf1, 0xc2, 0x52, 0x20, ++ 0x28, 0xda, 0xac, 0x89, 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, 0x86, 0x5c, 0xf4, 0x91, ++ 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, 0xdd, 0xec, 0x60, 0xc1, 0x42, 0x8e, 0x8b, 0x80, ++ 0x6c, 0xc0, 0x61, 0xfd, 0xaa, 0x98, 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, 0x0a, 0xca, 0xa5, 0xd9, ++ 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, 0x45, 0xf1, 0x7d, 0x40, 0x73, 0x03, 0xea, 0x3a, 0xcd, 0x05, ++ 0xfa, 0x4e, 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, 0x4f, 0x33, 0x52, 0x1c, 0x40, 0x55, ++ 0xe8, 0x6e, 0x0a, 0x76, 0x08, 0x88, 0xaa, 0x9b, 0x38, 0x84, 0xfd, 0x1a, 0x51, 0x3f, 0x90, 0x2e, ++ 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, 0x7f, 0x8c, 0xcb, 0x22, 0xdd, 0xa9, 0xc1, 0x66, ++ 0x5a, 0xa0, 0xb0, 0x62, 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, 0x0f, 0xaf, 0x16, 0x54, ++ 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, 0x85, 0xeb, 0xb4, 0x58, 0x29, 0x4b, 0xbd, 0x43, 0x3e, 0xdd, ++ 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, 0xa9, 0x35, 0x45, 0x68, 0x19, 0x5f, ++ 0x8b, 0xf3, 0xb4, 0x80, 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, 0x32, 0x57, 0xfb, 0x08, 0xf7, 0xf9, ++ 0x83, 0x1f, 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, 0x32, 0xfe, 0xe0, 0xbf, 0xba, 0xa5, 0xac, 0x02, ++ 0xef, 0xdf, 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, 0xe2, 0x99, 0xca, 0x49, 0xb0, 0x6f, 0x09, 0xdb, ++ 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, 0x60, 0x0d, 0x85, 0x0c, 0x2d, 0x24, 0xca, 0xdd, 0x98, 0x6c, ++ 0x14, 0x6d, 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, 0x0e, 0x67, 0x43, 0x2e, 0x7a, 0xa9, ++ 0x0d, 0x66, 0x69, 0xfa, 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, 0x21, 0x47, 0xa4, 0x40, ++ 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, 0xcb, 0xd4, 0xe2, 0x69, 0x60, 0xea, 0xff, 0xbb, ++ 0x92, 0xf8, 0x8b, 0xdf, 0x1d, 0x0e, 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, 0x99, 0x61, 0x29, 0x10, ++ 0x7a, 0x96, 0x81, 0xa9, 0x15, 0x86, 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, 0xc8, 0x5e, 0xb9, 0x3e, ++ 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, 0x97, 0xf5, 0x70, 0xcb, 0x39, 0x34, 0xa2, 0x7e, 0xe3, 0x5c, ++ 0xd8, 0x43, 0xc2, 0x39, 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, 0x14, 0x57, 0x89, 0x71, ++ 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, 0x31, 0x27, 0x10, 0xaf, 0x89, 0xcb, 0x7b, 0x12, 0x60, 0x9e, ++ 0xb5, 0x7f, 0xf8, 0x5d, 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, 0xbf, 0xc0, 0x1f, 0x8f, ++ 0xdf, 0xf2, 0x80, 0x70, 0x7e, 0x92, 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, 0xf5, 0x07, 0x10, 0x84, ++ 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, 0xc9, 0x15, 0xab, 0xb0, 0x52, 0x96, 0xb9, 0x86, 0x7c, 0x79, ++ 0x2d, 0x50, 0x58, 0x31, 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, 0xe6, 0xb6, 0x0b, 0x2a, ++ 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, 0x7e, 0x5a, 0x19, 0x7f, 0x70, 0xbe, 0x5d, 0xb3, 0x56, 0x01, ++ 0xbf, 0xa8, 0xd3, 0xee, 0x83, 0x64, 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, 0x7f, 0xd7, 0x22, 0x3a, ++ 0x24, 0x40, 0x9e, 0xea, 0x66, 0xc9, 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, 0x06, 0x46, 0x63, 0xf6, ++ 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, 0xc8, 0x7e, 0x06, 0xb9, 0xad, 0xd1, 0xf5, 0x08, ++ 0xee, 0x23, 0x13, 0xa6, 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, 0x41, 0x54, 0x11, 0x32, 0x3a, 0xfc, ++ 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, 0x33, 0x64, 0xb5, 0x3e, 0x75, 0xba, 0x47, 0xeb, 0x38, 0x0d, ++ 0x1d, 0x7d, 0x90, 0x7e, 0x01, 0x11, 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, 0xa3, 0xde, 0x12, 0x75, ++ 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, 0xc0, 0x1a, 0xc9, 0x18, 0x5a, 0x48, 0x57, 0x79, 0xf3, 0xd8, ++ 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, 0x0c, 0x49, 0x58, 0xe0, 0x4d, 0xe5, 0x88, 0x53, 0x13, 0xec, ++ 0x8e, 0x79, 0x40, 0x38, 0x3f, 0x49, 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, 0x9b, 0xe2, 0x08, 0x42, ++ 0xb8, 0x19, 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, 0xd5, 0x5a, 0xc5, 0x45, 0x9e, 0x87, 0xbb, 0xcf, ++ 0xe6, 0xcf, 0x8e, 0xe4, 0x19, 0x4a, 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, 0x50, 0x9f, 0x61, 0x07, ++ 0xf4, 0xef, 0xc1, 0x91, 0x2a, 0xcf, 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, 0x53, 0xbc, 0xb1, 0x7c, ++ 0x26, 0x7b, 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, 0x72, 0x68, 0x87, 0xfc, 0x05, 0xb8, ++ 0x1b, 0x30, 0x89, 0xae, 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, 0xe3, 0xd3, 0xb8, 0xa7, ++ 0x4f, 0x31, 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, 0xfb, 0xe6, 0xba, 0xf7, 0xed, 0xdc, 0x5f, 0xda, ++ 0xd5, 0x25, 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, 0x64, 0xae, 0x35, 0x10, 0x2d, 0x31, ++ 0xc5, 0x3e, 0x52, 0x47, 0x96, 0xe2, 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, 0xb7, 0x89, 0x9b, 0x04, ++ 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, 0xed, 0xde, 0x38, 0x5f, 0xcf, 0xb8, 0x2b, 0xe1, ++ 0x79, 0x51, 0x6c, 0xc1, 0x70, 0x7c, 0x63, 0x8e, 0x93, 0x34, 0xaf, 0x8c, 0xe8, 0xb9, 0xec, 0x57, ++ 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, 0xe4, 0x0e, 0xc1, 0x2a, 0xe9, 0x19, 0x1d, 0x7e, ++ 0x16, 0x56, 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, 0xbb, 0x1f, 0xdb, 0x5d, 0xc2, 0x94, 0x1c, 0xe7, ++ 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, 0xb8, 0x85, 0xfc, 0x17, 0xed, 0x65, 0x4e, 0x02, 0x4d, 0xaf, ++ 0x15, 0x91, 0x0d, 0x3c, 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, 0x85, 0x7a, 0xe2, 0x73, 0x49, 0x8e, ++ 0x9b, 0xe8, 0x4d, 0x04, 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, 0x55, 0x44, 0x79, 0x91, 0x41, 0xcc, ++ 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, 0xb3, 0xa9, 0x7e, 0xd9, 0x1e, 0x9d, 0x2c, 0xa8, ++ 0x3e, 0x8c, 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, 0x2c, 0x70, 0xc7, 0x93, 0x44, 0xc8, 0xe8, 0x76, ++ 0x80, 0xd8, 0xc4, 0xaa, 0x2e, 0x8b, 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, 0x9a, 0x42, 0xf9, 0x6b, ++ 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, 0x68, 0xd2, 0x15, 0x7b, 0x05, 0x65, 0xb3, 0x8d, ++ 0xd3, 0x68, 0xb2, 0x13, 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, 0xd8, 0xe0, 0x75, 0x1d, 0x87, 0xe3, ++ 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, 0x6f, 0x23, 0x42, 0xe9, 0xa6, 0xbb, 0xa1, 0xf8, ++ 0x01, 0xfc, 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, 0xa1, 0x5d, 0x33, 0x27, ++ 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, 0x90, 0xf0, 0xef, 0x12, 0x80, 0x7e, 0xf8, 0x2b, 0x27, 0x82, ++ 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, 0xb6, 0x46, 0x74, 0xbd, 0x76, 0xca, ++ 0xf6, 0xd4, 0x77, 0x60, 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, 0xd2, 0x06, 0xd7, 0x32, ++ 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, 0x73, 0xd3, 0xf2, 0x36, 0x43, 0x82, 0xcb, 0x7d, 0x69, 0x45, ++ 0x12, 0x20, 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, 0x99, 0x4e, 0xb2, 0x29, 0x03, 0x23, 0xd0, 0x7b, ++ 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, 0x07, 0x05, 0x9f, 0xd9, 0xb9, 0x4a, 0x5a, 0x55, 0xc4, 0xde, ++ 0x09, 0x10, 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, 0x59, 0xf5, 0xe0, 0xf0, 0x68, 0xdc, ++ 0xa6, 0xa3, 0xec, 0xb1, 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, 0x1d, 0xbe, 0xfc, 0xd3, ++ 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, 0x2f, 0xda, 0x23, 0x43, 0x89, 0xf3, 0xe2, 0xc5, ++ 0xc4, 0xc2, 0x09, 0xde, 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, 0x16, 0xd4, 0xa8, 0x23, ++ 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, 0x85, 0x7f, 0x24, 0xea, ++ 0x74, 0x37, 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, 0x9f, 0x0d, 0xc9, 0xfe, 0x48, 0x17, ++ 0xc1, 0x48, 0xfd, 0x66, 0x1a, 0x79, 0xf6, 0x38, 0x46, 0x6e, 0x6a, 0xc9, 0x76, 0x3e, 0x57, 0x98, ++ 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, 0xfa, 0x80, 0xe6, 0x06, 0x17, 0x74, 0x59, 0x0a, ++ 0xb9, 0xe5, 0xca, 0x3e, 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, 0x3f, 0xda, 0x88, 0xe8, ++ 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, 0x98, 0x3f, 0x3e, 0x13, 0xf6, 0x79, 0x08, 0x49, 0x84, 0x8b, ++ 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, 0xac, 0x31, 0x5f, 0x30, 0x77, 0x53, ++ 0x34, 0x5b, 0x67, 0x6e, 0x13, 0xe0, 0xd8, 0x88, 0x79, 0x1b, 0xc0, 0x41, 0x84, 0xdf, 0xd5, 0xc3, ++ 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, 0xf4, 0x7b, 0xe3, 0xff, 0x96, 0xb8, 0x4a, 0xc7, 0x0f, 0x0b, ++ 0x48, 0x80, 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, 0x21, 0xfb, 0x8d, 0xa4, 0x0c, 0x8c, 0xc6, 0x2f, ++ 0x5f, 0x2a, 0x44, 0xda, 0x50, 0x19, 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, 0x6f, 0x45, 0xe9, 0xef, ++ 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, 0x54, 0x0d, 0x5b, 0x23, 0x3a, 0xbf, 0x3b, 0x65, ++ 0x69, 0x4a, 0x95, 0x45, 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, 0x6a, 0x20, 0x5a, 0x62, ++ 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, 0x17, 0x5e, 0xde, 0x59, 0xd8, 0xcc, 0x72, 0xeb, ++ 0xda, 0x78, 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, 0x95, 0xed, 0xef, 0x3f, ++ 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, 0x77, 0x55, 0x7b, 0xd7, 0x78, 0x60, 0xb3, 0x4c, 0xd9, 0xa0, ++ 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, 0xf0, 0xc0, 0xa5, 0x98, 0x71, 0x83, ++ 0xa5, 0x64, 0x01, 0xd9, 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, 0x3d, 0x59, 0xa9, 0xba, ++ 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, 0x92, 0x52, 0xf3, 0x7d, 0x12, 0x11, 0xea, 0x87, ++ 0xe0, 0x82, 0x97, 0x34, 0xd3, 0x7d, 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, 0x10, 0x92, 0xcb, 0xd5, ++ 0x0c, 0x9a, 0x32, 0x63, 0x57, 0x6e, 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, 0x80, 0x1a, 0x97, 0x67, ++ 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, 0x0f, 0x0c, 0x2e, 0xe8, 0xb2, 0x14, ++ 0x54, 0x01, 0x34, 0xf0, 0xee, 0x16, 0xf2, 0xbe, 0xcf, 0x8f, 0x51, 0x2b, 0x0e, 0x0f, 0xe7, 0x7d, ++ 0x8d, 0xbe, 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, 0x45, 0xc4, 0x8e, 0x19, 0xbb, 0x05, 0x5d, 0x2b, ++ 0xd2, 0x94, 0xe9, 0x8a, 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, 0xd4, 0x40, 0xb4, 0xc4, ++ 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, 0x73, 0x5b, 0xe4, 0x15, ++ 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, 0x9a, 0xe4, 0x56, 0xf9, 0xce, 0x18, 0xda, 0xc8, ++ 0xf9, 0x89, 0xa8, 0x6b, 0x5e, 0xf7, 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, 0x72, 0xfb, 0x15, 0x3c, ++ 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, 0xc6, 0xdf, 0xe5, 0x68, 0x9d, 0xdb, 0x13, 0xb1, 0x1b, 0xae, ++ 0xe3, 0x45, 0x7a, 0x5c, 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, 0x30, 0x75, 0x9e, 0xbc, ++ 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, 0x24, 0x22, 0x17, 0xcd, ++ 0x03, 0xc7, 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, 0x5e, 0x27, 0x20, 0xe7, 0x55, 0x69, ++ 0xa1, 0x12, 0xae, 0xf8, 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, 0xfc, 0xee, 0x65, 0x26, ++ 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, 0x71, 0xad, 0x65, 0xc5, 0x58, 0xd6, 0xe5, 0x8c, ++ 0xaa, 0x39, 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, 0x9d, 0xa4, 0x6b, 0xb4, ++ 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, 0xda, 0xcb, 0xdc, 0x8a, 0x3c, 0x30, 0xb8, 0x26, 0x8d, 0x50, ++ 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, 0xe3, 0x02, 0x0d, 0x2c, 0x37, 0x06, ++ 0x41, 0x90, 0x39, 0xcc, 0x34, 0xf2, 0x2f, 0x70, 0x8c, 0xdc, 0xd4, 0x51, 0xec, 0x7c, 0xae, 0xf3, ++ 0x2a, 0xe1, 0x1a, 0x78, 0x77, 0x0b, 0x79, 0x5f, 0x86, 0xa6, 0xc9, 0xf4, 0x07, 0xe6, 0x92, 0xdf, ++ 0x60, 0x5a, 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, 0x91, 0x6a, 0x8a, 0xd0, 0x32, 0xbe, ++ 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, 0x70, 0x78, 0x34, 0x6e, ++ 0x94, 0xb5, 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, 0xb0, 0xff, 0xd9, 0x6c, 0x83, 0xc2, ++ 0xbe, 0x54, 0x88, 0x77, 0xa0, 0x32, 0xdf, 0x8d, 0xe6, 0xc2, 0x79, 0x0b, 0xde, 0x8a, 0x11, 0x1d, ++ 0x90, 0xc3, 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, 0x42, 0x35, 0xd9, 0x8b, 0x18, 0xdb, 0x4f, 0x5e, ++ 0x2f, 0x6b, 0xee, 0xc0, 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, 0x67, 0x0c, 0x6d, 0x64, ++ 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, 0x5d, 0x63, 0xcd, 0x43, 0xe9, 0x0a, 0x39, 0x9c, 0xeb, 0x1e, ++ 0x81, 0x24, 0x9f, 0x33, 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, 0x35, 0x85, 0x3b, 0x1f, 0xca, 0x4c, ++ 0xa2, 0xd5, 0x43, 0x90, 0x82, 0x75, 0xf9, 0xf2, 0x08, 0xb6, 0xa5, 0x84, 0xdc, 0x09, 0x30, 0x4f, ++ 0x76, 0x0c, 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, 0x0d, 0x8b, 0x4a, 0x37, 0x48, 0x44, 0x2e, 0x59, ++ 0x4b, 0x47, 0x12, 0x7f, 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, 0x2c, 0x6b, 0x93, 0x46, ++ 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, 0x3e, 0xed, 0x5e, 0x77, 0x46, 0x86, 0xd1, 0x25, 0x07, 0x49, ++ 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, 0x33, 0x98, 0xbc, 0x4e, 0x40, 0x0d, 0xaa, 0xd2, ++ 0x55, 0xfd, 0x6f, 0x69, 0xcd, 0x40, 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, 0xaf, 0x52, 0xd4, 0x5a, ++ 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, 0x6e, 0x45, 0x1e, 0x18, 0x5c, 0x13, 0xa7, 0x28, ++ 0x1c, 0x81, 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, 0x02, 0x83, 0x21, 0x52, ++ 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, 0xf7, 0xf8, 0xf5, 0xc7, 0x14, 0x10, 0x68, 0xa3, 0x7b, 0x30, ++ 0x5b, 0x5c, 0xeb, 0xfb, 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, 0xb4, 0x90, 0xae, 0xf2, 0x25, 0x73, ++ 0x04, 0x76, 0xaf, 0x21, 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, 0x69, 0x74, 0xc1, 0xb7, 0xcc, 0x9c, ++ 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, 0x4f, 0x7d, 0x09, 0xd0, 0xf9, 0x75, 0x26, 0xa1, 0x36, 0x9f, ++ 0x4d, 0x0a, 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, 0xea, 0x2f, 0x6f, 0xcd, 0x6c, 0x66, 0x39, 0x94, ++ 0x9c, 0x59, 0x0f, 0x4d, 0x0c, 0xcc, 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, 0x98, 0xc1, 0xd8, 0x39, ++ 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, 0xce, 0x26, 0xc7, 0xf1, 0xaf, 0x6a, ++ 0x53, 0xb0, 0x76, 0xb9, 0x07, 0x77, 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, 0xef, 0x5f, 0x7e, 0x88, ++ 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, 0x27, 0x6c, 0x86, 0xc7, 0x55, 0xfa, 0xd2, 0x8a, ++ 0x95, 0x49, 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, 0x78, 0x31, 0xb0, 0xe5, ++ 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, 0xb2, 0xec, 0x28, 0x89, ++ 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, 0xb6, 0x8f, 0x01, 0x66, 0x5c, 0xf1, 0xfa, 0xa8, 0x06, 0xd0, ++ 0x88, 0x34, 0x59, 0xe8, 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, 0xdb, 0xef, 0xa2, 0x90, ++ 0xb0, 0xf5, 0x0c, 0xe5, 0xb1, 0xf0, 0xcc, 0x53, 0x91, 0xf8, 0x17, 0xad, 0xdf, 0x2a, 0xe0, 0x34, ++ 0x22, 0x0d, 0x87, 0x3a, 0xac, 0xfe, 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, 0x46, 0x4b, 0xc9, 0x24, ++ 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, 0x61, 0x4a, 0x0e, 0x92, ++ 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, 0xd5, 0x3a, 0x81, 0xba, 0x66, 0x4e, ++ 0xc9, 0xa4, 0x60, 0x24, 0xc1, 0x8c, 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, 0x37, 0x93, 0x0c, 0x63, ++ 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, 0x9b, 0x82, 0x0a, 0x08, 0x34, 0xb0, 0xdc, 0x18, ++ 0xb6, 0xb8, 0x15, 0x35, 0x7b, 0xc7, 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, 0x9f, 0x27, 0x4a, 0xe6, ++ 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, 0x8d, 0x24, 0x65, 0x59, 0x5f, 0x4c, 0x4d, 0x21, 0x9d, 0xd4, ++ 0x4e, 0xcd, 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, 0x31, 0xea, 0x4c, 0x81, 0x6c, 0xfd, ++ 0xd7, 0x1e, 0x1d, 0x32, 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, 0xb4, 0xaa, 0x4b, 0x7f, ++ 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, 0x02, 0x43, 0xa5, 0x91, 0xfc, 0x71, 0x3c, 0xf9, 0x58, 0x93, ++ 0x98, 0x2f, 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, 0x06, 0x97, 0x0b, 0x63, 0x59, 0x76, 0x14, 0xa5, ++ 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, 0x0d, 0x89, 0xeb, 0x49, 0x33, 0x3c, 0x96, 0xce, 0x3f, 0x44, ++ 0xaf, 0xb3, 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, 0x95, 0x05, 0xfd, 0x4e, 0x94, 0x0f, ++ 0xa3, 0x29, 0x18, 0x09, 0xa1, 0x23, 0x5b, 0xa6, 0xe1, 0x33, 0x2e, 0x99, 0x7d, 0x54, 0x03, 0x68, ++ 0x44, 0x1a, 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, 0x47, 0x08, 0x36, 0x38, 0x8c, 0x96, 0x51, 0x48, ++ 0x84, 0xae, 0x6b, 0x8b, 0xa2, 0x10, 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, 0x5b, 0xf5, 0x35, 0xf7, ++ 0x9e, 0x62, 0xb9, 0xbc, 0x4a, 0x60, 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, 0x19, 0x7b, 0xbe, 0x77, ++ 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, 0xfa, 0xc8, 0x91, 0x28, 0xad, 0x9b, ++ 0xcd, 0xd2, 0xcf, 0x05, 0x4d, 0x17, 0x62, 0x4e, 0x20, 0x9d, 0xd1, 0x55, 0xf6, 0x24, 0xc0, 0xff, ++ 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, 0x48, 0x4f, 0xc4, 0x2e, 0xf3, 0x41, 0x73, 0x72, ++ 0x45, 0xe6, 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, 0xbd, 0x25, 0x2d, 0xcb, 0x62, 0x6f, ++ 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, 0x82, 0xee, 0x2b, 0x81, 0x90, 0x01, 0xe7, 0x16, 0xfa, 0x03, ++ 0xc6, 0xf9, 0xbf, 0x2f, 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, 0x5d, 0x9a, 0x97, 0x6e, 0xce, 0x6d, ++ 0x3d, 0x4b, 0xa1, 0xb5, 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, 0x64, 0x2f, 0xbd, 0x1f, ++ 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, 0x52, 0x9a, 0x50, 0x40, 0x63, 0xc9, 0x2f, 0xc0, ++ 0xeb, 0xa9, 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, 0x71, 0xd8, 0xc5, 0x47, ++ 0x2e, 0x97, 0xb5, 0x59, 0xfb, 0x90, 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, 0xc6, 0x51, 0x5e, 0x43, ++ 0xcb, 0x9f, 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, 0x6d, 0x1b, 0xb6, 0x29, 0x6a, 0x2d, ++ 0xb2, 0xce, 0xba, 0x14, 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, 0x5e, 0x90, 0x86, 0x7a, ++ 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, 0x8b, 0x2d, 0x83, 0xc3, 0x4f, 0xa2, 0xbc, 0x86, ++ 0x4a, 0xbb, 0x49, 0xe6, 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, 0x8d, 0x36, 0xa0, 0x61, ++ 0x64, 0x2c, 0xfc, 0xbf, 0x71, 0x6d, 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, 0x4b, 0x67, 0xfe, 0x22, ++ 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, 0x7d, 0x64, 0xa9, 0x14, 0xb7, 0xac, ++ 0x35, 0xa7, 0x3c, 0xf7, 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, 0x4b, 0x5c, 0x25, 0x82, 0xe6, 0xe4, ++ 0xc7, 0x05, 0xe4, 0xb6, 0xd0, 0x4e, 0xbc, 0x03, 0x75, 0xf6, 0xd6, 0x87, 0x36, 0x33, 0xfd, 0x4a, ++ 0x07, 0xb1, 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, 0x37, 0x53, 0xe1, 0x50, 0x99, 0xf5, ++ 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, 0x2f, 0x48, 0x43, 0x3d, ++ 0x38, 0xc1, 0x55, 0x0d, 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, 0x7b, 0xdd, 0x04, 0xc5, 0x42, 0xa4, ++ 0xea, 0x55, 0xbc, 0x87, 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, 0x28, 0x20, 0xd0, 0x85, 0xf6, 0x60, ++ 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, 0x81, 0x57, 0x9e, 0x66, 0xa4, 0x38, 0x80, 0xaa, ++ 0x63, 0x9d, 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, 0xaa, 0x37, 0x67, 0xd7, ++ 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, 0xc3, 0x34, 0xed, 0xce, ++ 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, 0xc3, 0x62, 0x47, 0xed, 0xbc, 0xe3, 0xcf, 0xf4, ++ 0x58, 0x9b, 0x06, 0x93, 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, 0x8e, 0x15, 0x70, 0x1a, ++ 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, 0x61, 0x02, 0xec, 0x0e, 0x23, 0xc4, 0x85, 0x12, ++ 0xf5, 0x13, 0x9a, 0x08, 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, 0xf2, 0xe1, 0x82, 0x5b, ++ 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, 0x1d, 0xd4, 0x8a, 0x4b, 0xdf, 0x32, 0xb5, 0x0a, 0xba, 0x56, ++ 0xe9, 0x92, 0x51, 0xef, 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, 0x76, 0x07, 0xf0, 0x62, 0xa3, 0x09, ++ 0x25, 0xbc, 0xc5, 0x73, 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, 0xa7, 0x1b, 0x50, 0xd1, ++ 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, 0xb0, 0x03, 0x9a, 0x09, 0xd3, 0xa6, 0x26, 0x1b, ++ 0x97, 0x72, 0x7f, 0x67, 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, 0xf9, 0x8b, 0xd6, 0xab, ++ 0xb1, 0x09, 0x57, 0x7c, 0x92, 0xa6, 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, 0x7e, 0x77, 0xd3, 0x13, ++ 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, 0x49, 0xb8, 0x25, 0xa0, 0x3e, 0xe6, 0x62, 0x69, 0xde, 0xe9, ++ 0x0f, 0x5d, 0xdf, 0x0b, 0x32, 0x94, 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, 0xa0, 0xfd, 0xc2, 0x0e, ++ 0x89, 0xc8, 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, 0x67, 0x95, 0xe7, 0x6d, 0x7a, 0xb2, 0x91, 0xb7, ++ 0xdc, 0x35, 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, 0x41, 0x9f, 0x3d, 0x5b, 0xd5, 0xe0, 0x45, 0xed, ++ 0x08, 0xec, 0x9d, 0x42, 0xdb, 0xf5, 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, 0x41, 0xad, 0x5b, 0xfb, ++ 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, 0xe3, 0x23, 0x1d, 0x24, 0xc3, 0xfc, 0x33, 0x56, 0x4e, 0xc7, ++ 0xa8, 0x02, 0x68, 0x23, 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, 0xa2, 0x56, 0x1c, 0x1e, 0x0d, 0xfa, ++ 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, 0x77, 0x3a, 0x6e, 0xa6, 0x01, 0xa0, 0xf1, 0x29, ++ 0x6f, 0x07, 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, 0x28, 0x2b, 0x74, 0xd1, 0x2a, 0x2d, 0xf0, 0xb0, ++ 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, 0x29, 0x0e, 0x20, 0xcb, ++ 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, 0x2b, 0xf6, 0x05, 0x3d, 0xef, 0xb3, 0x94, 0x4d, 0x1e, 0x16, ++ 0xbd, 0x93, 0x65, 0x1f, 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, 0xfe, 0x6d, 0x44, 0x74, ++ 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, 0x93, 0x73, 0xf9, 0x2a, 0x02, 0xd6, 0xda, 0x4f, 0x53, 0xb9, ++ 0xec, 0x18, 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, 0x94, 0x6e, 0x90, 0x88, 0x5c, 0xb2, ++ 0x32, 0x16, 0x7e, 0xbe, 0xd9, 0xd7, 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, 0xc4, 0xd2, 0x7f, 0x11, ++ 0x7e, 0xe0, 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, 0x98, 0xdf, 0x09, 0xe9, 0x75, 0xa2, ++ 0xed, 0xe4, 0xfe, 0xce, 0xa7, 0x45, 0xc5, 0x5c, 0xf3, 0x50, 0x1f, 0x73, 0x31, 0xd5, 0x6f, 0x95, ++ 0x6e, 0xfb, 0xd7, 0x0c, 0xec, 0x34, 0x39, 0xe8, 0xc1, 0xae, 0xff, 0xcc, 0x8b, 0x70, 0xc3, 0x97, ++ 0xc3, 0x73, 0x4b, 0x97, 0x5c, 0xd5, 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, 0xf7, 0x84, 0x31, 0xd6, ++ 0x21, 0xca, 0x6a, 0x52, 0xc9, 0x04, 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, 0x66, 0xac, 0x9c, 0x4d, ++ 0x62, 0x61, 0xe5, 0x6f, 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, 0x44, 0x50, 0x0b, 0x6a, 0x54, 0xf0, ++ 0xce, 0x15, 0x22, 0x6d, 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, 0xd6, 0xc3, 0x95, 0x96, ++ 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, 0xba, 0x79, 0x87, 0xac, 0x38, 0x3c, 0x1a, 0x37, ++ 0x4c, 0xf6, 0x50, 0x36, 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, 0xcd, 0x3b, 0x0a, 0xb3, ++ 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, 0x54, 0x5a, 0x23, 0xa3, ++ 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, 0xc5, 0xf5, 0x4c, 0x8e, 0xe5, 0x95, 0xdb, 0x51, ++ 0x43, 0xab, 0x8f, 0x3d, 0x72, 0x5e, 0xa8, 0xd8, 0x9d, 0x15, 0x01, 0x6b, 0x6d, 0xc6, 0xc8, 0xbd, ++ 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, 0xc6, 0x5f, 0xa8, 0x5e, 0x28, 0xae, 0xd1, 0xe2, ++ 0xad, 0x88, 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, 0x7c, 0xf4, 0xf2, 0x41, ++ 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, 0x92, 0x0b, 0x7d, 0xe0, ++ 0x47, 0xdd, 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, 0x68, 0x1f, 0xac, 0x71, 0x04, 0x21, ++ 0x3c, 0xb7, 0xfa, 0x2c, 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, 0xc5, 0x72, 0x8e, 0x38, ++ 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, 0x5f, 0x11, 0x1a, 0x77, 0x2b, 0x8d, 0x01, 0x99, ++ 0x56, 0x3a, 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, 0x8f, 0xb5, 0x81, 0x33, ++ 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, 0x5c, 0xa3, 0x7e, 0xea, 0x97, 0xd3, 0x27, 0x01, 0xc7, 0xb6, ++ 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, 0xe4, 0x26, 0x82, 0xfd, 0x7a, 0xb6, 0x69, 0x03, 0x8a, 0x19, ++ 0x10, 0x1b, 0xf9, 0x84, 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, 0x82, 0x99, 0xb6, 0x35, ++ 0xff, 0xc4, 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, 0x6a, 0x1e, 0xad, 0x5a, 0x32, 0xf6, 0xbf, 0xee, ++ 0x5d, 0x11, 0xf2, 0x2b, 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, 0xee, 0xff, 0x8f, 0xa1, ++ 0x31, 0xd1, 0x93, 0xd6, 0xbc, 0x2d, 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, 0xe4, 0x35, 0x2a, 0x78, ++ 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, 0x24, 0x3c, 0x4b, 0xe5, 0x20, 0xfe, 0x3e, 0x7a, 0x79, 0xc1, ++ 0xb3, 0x32, 0xe1, 0x8d, 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, 0xff, 0xcd, 0xb5, 0x5d, ++ 0x6b, 0x71, 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, 0x0a, 0x7a, 0x1d, 0xa5, 0xeb, 0x9a, 0x3c, 0x2c, ++ 0xc0, 0xb4, 0xa6, 0xff, 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, 0xd7, 0x63, 0x64, 0xbf, ++ 0x7f, 0x1c, 0x75, 0x11, 0xba, 0x4b, 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, 0xa8, 0xb4, 0x46, 0x85, ++ 0x1e, 0xba, 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, 0x09, 0xb5, 0x83, 0x39, 0x47, 0x1c, ++ 0xd1, 0x53, 0x04, 0xe2, 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, 0xf4, 0xa7, 0xe1, 0xad, ++ 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, 0x7a, 0xb1, 0x24, 0x91, 0x49, 0xe4, 0xdf, 0x70, ++ 0xc2, 0x8f, 0x10, 0x0e, 0x7f, 0x83, 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, 0x56, 0xd9, 0x02, 0xf1, ++ 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, 0xb0, 0x4a, 0x2d, 0x16, 0x9b, 0x62, 0xbe, 0x60, 0xee, 0xa6, ++ 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, 0x1c, 0x14, 0x39, 0xe2, 0xa1, 0xeb, 0xab, 0x97, 0x96, 0xfe, ++ 0xe1, 0x7e, 0xcc, 0xad, 0xf0, 0x2b, 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, 0xb1, 0xcf, 0xf8, 0xf2, ++ 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, 0x03, 0x83, 0x16, 0x38, 0x82, 0xa8, 0x22, 0x64, 0x74, 0x3b, ++ 0x82, 0xe3, 0x72, 0x5b, 0x68, 0x27, 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, 0x1b, 0xf8, 0x9f, 0x25, ++ 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, 0x12, 0x1e, 0xc4, 0x93, 0x10, 0x7f, 0x1f, 0x3d, 0xdd, 0x81, ++ 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, 0x05, 0x04, 0x1a, 0x58, 0x6e, 0x0c, ++ 0xcf, 0xe9, 0x79, 0xf4, 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, 0x77, 0x9e, 0xa6, 0xb1, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfe, 0x38, 0xea, 0x22, 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, 0x93, 0xab, 0x8c, 0xc9, ++ 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, 0x0a, 0x8c, 0x74, 0x90, 0x8a, 0x76, 0xcc, 0x9b, 0xfb, 0x9a, ++ 0xd6, 0xe2, 0x46, 0xab, 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, 0x3a, 0x89, 0x15, 0xf7, 0x78, 0x58, ++ }, ++ { /* 7 */ ++ 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, 0xb4, 0xca, 0xc0, 0x3d, 0xf4, 0xe8, ++ 0x2d, 0x30, 0x7c, 0xb1, 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, 0xbc, 0x10, 0x25, 0xe6, 0x1e, 0xf1, ++ 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, 0xca, 0xf8, 0xa0, 0xd0, 0x5a, 0xc4, 0x96, 0x37, ++ 0x8f, 0xc2, 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, 0x11, 0x3a, 0xe8, 0x2f, ++ 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, 0x2b, 0x01, 0x04, 0x6c, ++ 0x30, 0x1b, 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, 0x25, 0x09, 0xd5, 0x45, 0xd7, 0x23, ++ 0x38, 0xfe, 0x0a, 0x59, 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, 0xac, 0x04, 0x10, 0x73, ++ 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, 0xc1, 0x01, 0x94, 0x24, 0xd2, 0xd7, 0xda, 0x8c, ++ 0x54, 0xbe, 0x1b, 0x26, 0xf4, 0xdb, 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, 0x61, 0x0e, 0x38, 0x4d, ++ 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, 0x3c, 0xda, 0x03, 0xe5, 0x5f, 0x82, 0xa7, 0x50, 0x83, 0x33, ++ 0x9e, 0x9f, 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, 0xe6, 0x75, 0x45, 0x19, 0x64, 0x85, ++ 0x39, 0xaa, 0x3a, 0x22, 0x60, 0x54, 0x0b, 0x32, 0x1a, 0x23, 0xd7, 0x66, 0x0a, 0xa5, 0xd1, 0x79, ++ 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, 0x22, 0x77, 0x05, 0xe7, 0xc7, 0xaf, 0xf9, 0x47, ++ 0x7e, 0xe1, 0xf7, 0x35, 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, 0xb0, 0x09, 0x24, 0x8a, ++ 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, 0xd5, 0x87, 0x4b, 0x19, 0xea, 0xc2, 0x33, 0x4e, 0xfb, 0x71, ++ 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, 0x58, 0xb2, 0xc8, 0xb9, 0xa1, 0xe3, ++ 0x64, 0xa5, 0x52, 0x21, 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, 0x83, 0x63, 0xb4, 0x4b, 0xef, 0x6e, ++ 0x03, 0xfc, 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, 0xbf, 0xbc, 0x26, 0x54, 0x29, 0x20, 0x80, 0x1e, ++ 0x57, 0x42, 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, 0x49, 0x1e, 0x80, 0x3e, 0x48, 0x2e, 0xb8, 0x53, ++ 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, 0x95, 0xcf, 0x24, 0x7e, 0xbb, 0x20, 0x4a, 0x0f, 0x3c, 0x21, ++ 0x1c, 0x7f, 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, 0x3a, 0x94, 0x56, 0x02, 0x08, 0xd8, ++ 0x60, 0x36, 0x92, 0x0e, 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, 0x69, 0x8a, 0x6d, 0x46, ++ 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, 0x69, 0x6e, 0xef, 0x25, 0xf4, 0xe1, 0x02, 0x36, ++ 0x18, 0xec, 0xc5, 0xe2, 0x9c, 0x3d, 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, 0x8b, 0xc3, 0x8a, 0xf0, ++ 0x21, 0x46, 0xff, 0xc0, 0xfc, 0x69, 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, 0x81, 0x66, 0x5b, 0x89, ++ 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, 0x16, 0x64, 0x34, 0x46, 0x6d, 0xcc, 0x14, 0x89, 0x61, 0xf2, ++ 0xa8, 0xbf, 0x36, 0x4c, 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, 0xc2, 0x1c, 0x70, 0x9a, ++ 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, 0x47, 0x96, 0xcb, 0x1a, 0x95, 0xae, 0x86, 0xf4, 0x56, 0x26, ++ 0x29, 0xa3, 0xbc, 0x9e, 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, 0xf8, 0x27, 0x9c, 0xd9, ++ 0xc6, 0x57, 0x47, 0xc5, 0x4d, 0xb5, 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, 0x80, 0x97, 0x19, 0xb0, ++ 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, 0x69, 0xcd, 0x96, 0x32, 0x17, 0x47, 0x66, 0x9c, 0x35, 0xe2, ++ 0x3f, 0x91, 0x9a, 0xfb, 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, 0x58, 0xe5, 0x12, 0x45, ++ 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, 0x0c, 0xec, 0xbe, 0x5e, 0x13, 0x2a, 0xf5, 0x10, 0x40, 0x0f, ++ 0x27, 0x7d, 0x5f, 0x19, 0xdb, 0xf7, 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, 0xd3, 0x26, 0x98, 0xb5, ++ 0x8d, 0x6a, 0x09, 0xa3, 0xed, 0x49, 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, 0x9e, 0xbb, 0xa9, 0x3b, ++ 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, 0xb9, 0xb5, 0x98, 0x93, 0xa4, 0x80, 0x45, 0x78, ++ 0x82, 0xe0, 0xda, 0x5f, 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, 0xdc, 0xe1, 0x13, 0x1b, 0x6c, 0x5d, ++ 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, 0x5c, 0xb6, 0xba, 0x50, 0xc7, 0x11, 0x03, 0xd0, 0xc6, 0x4b, ++ 0xae, 0x84, 0x96, 0x95, 0x0c, 0xeb, 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, 0x90, 0x5c, 0xb3, 0xa6, ++ 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, 0xe9, 0x5d, 0x48, 0xfc, 0xb5, 0x40, 0x94, 0x1e, 0x78, 0x42, ++ 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, 0x5a, 0xc0, 0xe5, 0x7f, 0x2f, 0x04, 0x98, 0xd8, 0xe6, 0xad, ++ 0x63, 0xca, 0xc2, 0x83, 0xc7, 0xbb, 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, 0x40, 0xaa, 0xed, 0x58, ++ 0x49, 0x95, 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, 0x45, 0x0c, 0x3f, 0x73, 0x91, 0xad, 0xf1, 0x9f, ++ 0xe5, 0xb9, 0xd8, 0xf3, 0xac, 0x17, 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, 0x8e, 0x70, 0x03, 0x2d, ++ 0x42, 0x8c, 0x3d, 0x43, 0x3b, 0xd2, 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, 0xc1, 0xcc, 0xb6, 0xd1, ++ 0xe4, 0xed, 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, 0xda, 0x5b, 0x28, 0xd1, 0xc2, 0x27, ++ 0x15, 0xce, 0x76, 0xe8, 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, 0x89, 0xe2, 0x0e, 0x82, ++ 0xb7, 0x3c, 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, 0xf7, 0x40, 0x93, 0x14, 0xbd, 0x3e, 0xf8, 0x5c, ++ 0xc8, 0x89, 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, 0xc5, 0xc6, 0xab, 0x96, 0x1d, 0xdc, ++ 0x06, 0x3b, 0xa0, 0xd9, 0x27, 0x9e, 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, 0x52, 0x40, 0xc3, 0x3c, ++ 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, 0x5f, 0x2f, 0xe8, 0x15, 0x9b, 0x08, 0x20, 0xe6, ++ 0x9d, 0x63, 0x8f, 0x1f, 0x05, 0xde, 0x62, 0xff, 0x8c, 0x11, 0xc0, 0x21, 0x6c, 0x39, 0xe4, 0x9b, ++ 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, 0x2a, 0x6b, 0x6e, 0x91, 0xe8, 0xec, 0x36, 0xcf, ++ 0x75, 0xf8, 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, 0x5d, 0x28, 0x82, 0xe9, 0xe0, 0x68, 0x63, 0xc4, ++ 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, 0xc8, 0xd1, 0x65, 0x7c, 0x50, 0x68, 0x2d, 0x62, 0x4b, 0xfa, ++ 0xc9, 0xdd, 0x94, 0x39, 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, 0x66, 0x4b, 0x0d, 0x37, 0xdc, 0xd6, ++ 0xaa, 0x17, 0x56, 0xba, 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, 0x0a, 0x0d, 0x4d, 0x9d, 0x31, 0x8e, ++ 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, 0xd9, 0x25, 0x29, 0xbe, 0xa3, 0x12, 0x48, 0xd7, ++ 0x4d, 0x06, 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, 0x93, 0xde, 0xf6, 0x02, 0x4c, 0x6c, 0x73, 0xb7, ++ 0xbf, 0xd9, 0x20, 0x52, 0x0b, 0xf8, 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, 0xc4, 0x7f, 0x3f, 0x0c, ++ 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, 0x7b, 0x51, 0x53, 0x35, 0xd1, 0x07, 0x1c, 0xc7, ++ 0x73, 0xc3, 0x44, 0x3f, 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, 0xce, 0x41, 0xb2, 0x28, 0xa0, 0xf8, ++ 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, 0xe9, 0x6d, 0x90, 0x49, 0x41, 0x5b, 0xaf, 0x61, ++ 0xd5, 0xa2, 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, 0x5b, 0x35, 0xd4, 0x0e, ++ 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, 0xd7, 0x14, 0x7e, 0xbd, 0xb2, 0x70, 0xfb, 0xf7, 0x5a, 0x92, ++ 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, 0x60, 0xf1, 0x36, 0xfd, 0x72, 0xac, ++ 0x2b, 0x0b, 0xdc, 0x68, 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, 0x77, 0xa6, 0xdd, 0xcd, ++ 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, 0xba, 0x3c, 0x82, 0x04, 0x15, 0x90, 0xce, 0xda, 0xee, 0x75, ++ 0xa7, 0x35, 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, 0x29, 0x8e, 0x31, 0x13, 0x4f, 0xbc, 0xb5, 0xfc, ++ 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, 0xc1, 0x70, 0x4a, 0xfb, 0xdf, 0xbc, 0xef, 0x7e, 0x3b, 0x60, ++ 0xb2, 0xfb, 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, 0xf9, 0xe8, 0xc6, 0x5e, 0xbb, 0x7e, ++ 0x5b, 0x34, 0xc8, 0xda, 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, 0xec, 0xae, 0xfd, 0x2b, ++ 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, 0x43, 0x05, 0x81, 0xb4, 0x1c, 0x0d, 0x34, 0xf9, ++ 0xd3, 0x99, 0x31, 0x2d, 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, 0x09, 0x75, 0x17, 0x32, ++ 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, 0xe3, 0xb8, 0xa5, 0x8f, ++ 0xfd, 0x55, 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, 0x8a, 0x33, 0x05, 0xb3, 0x89, 0xdd, ++ 0xd4, 0xf6, 0xa1, 0x8f, 0xb8, 0xe9, 0x6f, 0xbb, 0xc9, 0x1d, 0xff, 0x52, 0xfd, 0x94, 0x15, 0x04, ++ 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, 0x06, 0x09, 0xbe, 0xc7, 0x8d, 0xa0, 0xc5, 0x66, ++ 0x9c, 0x37, 0xbf, 0x64, 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, 0xca, 0x98, 0x25, 0x91, ++ 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, 0xbb, 0x94, 0x79, 0x56, 0x39, 0xc9, 0xaa, 0x67, 0x5f, 0xe5, ++ 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, 0x8c, 0x89, 0x3e, 0x79, 0x27, 0xa7, ++ 0x43, 0xd8, 0x0d, 0x38, 0xd4, 0x56, 0x5d, 0x1e, 0x41, 0x02, 0xeb, 0x48, 0x67, 0x6d, 0x77, 0xdb, ++ 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, 0x74, 0x9b, 0xb8, 0x57, 0xad, 0xed, 0x78, 0xb0, 0x85, 0x69, ++ 0xd9, 0xd4, 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, 0xa4, 0x7d, 0xc4, 0x4c, 0xff, 0xb5, 0x91, 0x76, ++ 0x79, 0x8e, 0x67, 0x97, 0x46, 0x4d, 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, 0x44, 0xe8, 0x26, 0xbc, ++ 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, 0x23, 0x95, 0x30, 0x99, 0x1b, 0x9f, 0x39, 0x56, ++ 0x53, 0xd1, 0x8b, 0x84, 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, 0x95, 0xef, 0x3a, 0x7b, ++ 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, 0x59, 0x26, 0x56, 0xd2, 0x16, 0xa8, 0xe5, 0x80, ++ 0xc1, 0x38, 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, 0x74, 0x76, 0x1b, 0x86, ++ 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, 0x8c, 0x7c, 0x60, 0x90, 0xb1, 0x2d, 0x07, 0x92, 0x0d, 0xaf, ++ 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, 0xa1, 0x5a, 0x0e, 0xe7, 0x1a, 0x9d, ++ 0xe7, 0x11, 0xb8, 0x05, 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, 0x01, 0xf1, 0x42, 0x39, ++ 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, 0x7d, 0x58, 0xed, 0xf2, 0x5c, 0xa7, 0xd9, 0xa1, ++ 0x5e, 0xf3, 0x38, 0x8e, 0x9d, 0xba, 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, 0x97, 0xce, 0xbe, 0x09, ++ 0xb5, 0x94, 0x03, 0xfa, 0x62, 0x99, 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, 0x32, 0xbf, 0xb9, 0x48, ++ 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, 0xbf, 0x4d, 0xd9, 0x83, 0x49, 0xcc, ++ 0xa2, 0xf2, 0x15, 0xe4, 0x42, 0x14, 0x59, 0xfb, 0x2b, 0x89, 0x5b, 0xef, 0x34, 0xdc, 0xf6, 0xde, ++ 0xdf, 0xef, 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, 0x19, 0xc6, 0x88, 0xe4, 0xad, 0xf5, 0x52, 0x4a, ++ 0xa6, 0x61, 0xd5, 0xcb, 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, 0xe9, 0x1d, 0x74, 0xf6, ++ 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, 0x2c, 0x93, 0x09, 0xc3, ++ 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, 0xf9, 0x55, 0x46, 0xa5, 0x1f, 0xdd, 0xf2, 0xb2, ++ 0x22, 0xba, 0xaf, 0x4d, 0x0e, 0x26, 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, 0xa8, 0x46, 0xdb, 0x97, ++ 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, 0xc4, 0x3d, 0xdb, 0x22, 0x43, 0x42, 0xd8, 0x72, 0x0b, 0xf5, ++ 0xe2, 0xd6, 0x48, 0x51, 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, 0x7a, 0x91, 0x01, 0x1b, ++ 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, 0xb8, 0x8d, 0x71, 0x81, ++ 0xbc, 0x25, 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, 0xe4, 0xa2, 0xed, 0x5f, 0xbf, 0x12, ++ 0x35, 0xdc, 0xb9, 0x53, 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, 0xae, 0x25, 0x94, 0x01, ++ 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, 0xc5, 0x0f, 0x40, 0x1f, 0x24, 0x17, 0x5c, 0xc8, ++ 0xee, 0xa0, 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, 0xde, 0x11, 0x44, 0x63, ++ 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, 0x46, 0x3e, 0x30, 0x48, 0xb9, 0xf7, 0xe2, 0x49, 0xe7, 0xb6, ++ 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, 0x6a, 0xfc, 0x7b, 0x60, 0x43, 0x22, ++ 0x6b, 0x2f, 0x81, 0xdd, 0xb3, 0x11, 0xde, 0xb5, 0x51, 0x3a, 0x3d, 0xa4, 0x39, 0xeb, 0x2a, 0x08, ++ 0x51, 0x79, 0xeb, 0x72, 0x21, 0x0a, 0xcd, 0x9c, 0xf4, 0xa5, 0xcc, 0x96, 0x1a, 0x6e, 0x7b, 0x6f, ++ 0xe1, 0x2a, 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, 0xb0, 0xa7, 0x53, 0xb1, 0x81, 0x05, ++ 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, 0x63, 0x2f, 0xbc, 0x3f, ++ 0xa3, 0xa6, 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, 0xf8, 0x62, 0x92, 0x7d, 0x37, 0xd4, ++ 0xf2, 0xdf, 0xce, 0xed, 0x8c, 0x9a, 0x9c, 0x6e, 0x0b, 0xf9, 0x34, 0xf4, 0x88, 0x13, 0x4c, 0xbb, ++ 0x71, 0x6b, 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, 0x8b, 0xfa, 0x4b, 0x98, 0x3d, 0xa9, 0xe1, 0xec, ++ 0x56, 0x16, 0x7b, 0xd0, 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, 0xee, 0x8f, 0x79, 0x59, ++ 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, 0x88, 0x99, 0x0a, 0x1b, 0x01, 0x8a, 0x54, 0x23, 0x8c, 0xaa, ++ 0x6a, 0x7b, 0xb1, 0xa6, 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, 0x9e, 0x29, 0x9f, 0x4a, 0xeb, 0x02, ++ 0x89, 0xf9, 0xc9, 0x8c, 0xd7, 0x1c, 0xc2, 0x4b, 0x84, 0x0d, 0xab, 0x57, 0x43, 0x7a, 0x2b, 0x13, ++ 0x94, 0xd2, 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, 0x37, 0xa3, 0x32, 0x4e, 0xb3, 0xd9, 0xe2, 0xc1, ++ 0x65, 0xf1, 0x62, 0x5a, 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, 0x12, 0xea, 0x2e, 0x64, ++ 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, 0xea, 0x66, 0x86, 0x0a, 0xc1, 0xab, 0x38, 0x1a, 0x68, 0x31, ++ 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, 0x4e, 0xf5, 0x0b, 0x87, 0x19, 0xbe, 0xbd, 0x24, ++ 0x77, 0x50, 0x84, 0x10, 0x15, 0x79, 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, 0x6f, 0xe9, 0x22, 0xd0, ++ 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, 0x18, 0x24, 0xbd, 0x9a, 0x71, 0xc5, 0x92, 0x5b, ++ 0x7b, 0x26, 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, 0xcb, 0x69, 0x67, 0xa8, ++ 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, 0x83, 0xab, 0x10, 0x38, 0xd6, 0xec, 0x5e, 0x86, 0x5d, 0xd3, ++ 0xab, 0x43, 0x66, 0xc1, 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, 0xa9, 0x80, 0xeb, 0x3c, 0xf0, 0x84, ++ 0xd2, 0xcd, 0x01, 0x56, 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, 0xb3, 0xfa, 0xaf, 0xd4, 0xd6, 0x38, ++ 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, 0x4b, 0x7a, 0x75, 0x44, 0x86, 0x84, 0x73, 0xe4, 0x16, 0x29, ++ 0xde, 0xbb, 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, 0xcd, 0x13, 0x2b, 0x69, 0x0b, 0x54, 0x93, 0x40, ++ 0xc4, 0xff, 0x27, 0x33, 0x50, 0x7e, 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, 0x0f, 0x16, 0x58, 0xa4, ++ 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, 0xd1, 0xdc, 0x31, 0x6f, 0x7f, 0x03, ++ 0xcc, 0x1a, 0x64, 0x6d, 0x24, 0xd4, 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, 0x76, 0x57, 0x9f, 0xf4, ++ 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, 0xc7, 0x08, 0x2a, 0xe3, 0x5f, 0x77, 0x1f, 0xea, ++ 0x76, 0x04, 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, 0xc9, 0x48, 0xe3, 0xda, ++ 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, 0x83, 0x47, 0xdf, 0xfb, ++ 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, 0x89, 0x31, 0xf1, 0x49, 0x2d, 0xd3, 0x30, 0x9e, 0x3d, 0x3a, ++ 0xd8, 0x80, 0x22, 0xfe, 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, 0x59, 0x14, 0x50, 0x7c, ++ 0x2e, 0xcc, 0x2c, 0x3c, 0x40, 0xd9, 0xb3, 0x9d, 0xad, 0x83, 0x9a, 0x44, 0x0c, 0xc6, 0x9e, 0xef, ++ 0x36, 0x20, 0xe9, 0xde, 0xdc, 0xe4, 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, 0x87, 0x05, 0x14, 0x1f, ++ 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, 0x70, 0x34, 0xd0, 0x62, ++ 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, 0xb8, 0x7d, 0xb6, 0x6a, 0x6b, 0x1c, ++ 0xb3, 0xaf, 0xa3, 0x23, 0x45, 0x07, 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, 0x60, 0xff, 0x7a, 0x74, ++ 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, 0x08, 0x1c, 0x6b, 0x76, 0x2f, 0x43, 0xcf, 0x88, ++ 0x95, 0x86, 0xcc, 0x41, 0x71, 0x74, 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, 0x15, 0x78, 0x23, 0xcb, ++ 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, 0xb9, 0x07, 0x4c, 0xf2, 0x61, 0x7b, 0x62, 0xde, 0xfe, 0x06, ++ 0x62, 0x9e, 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, 0xcf, 0xcb, 0xe6, 0x0b, 0x2c, 0x52, ++ 0xa1, 0x0e, 0x45, 0x69, 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, 0x1d, 0xfc, 0x76, 0xc0, ++ 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, 0x1b, 0x20, 0x71, 0x4a, 0x52, 0xbf, 0x85, 0x24, 0x90, 0x6d, ++ 0x16, 0x32, 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, 0x63, 0x75, 0xee, 0xaf, 0xa0, 0xc2, 0x8e, 0x9c, ++ 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, 0xb6, 0xd0, 0x3c, 0x5a, 0x06, 0xba, 0x3b, 0xca, 0xae, 0x7a, ++ 0xe9, 0xcf, 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, 0xe1, 0x45, 0x2a, 0xf0, 0x46, 0x55, ++ 0x5c, 0x5b, 0x58, 0x78, 0x80, 0x71, 0xa5, 0xf9, 0x99, 0xc5, 0xf7, 0x88, 0x18, 0x4f, 0xff, 0x1d, ++ 0x6c, 0x40, 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, 0x38, 0x54, 0xd2, 0x81, 0xcd, 0x0a, 0x28, 0x3e, ++ 0x6d, 0x14, 0x21, 0x04, 0x94, 0x8f, 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, 0x6b, 0xab, 0xe9, 0x34, ++ 0xad, 0x78, 0xc6, 0x18, 0xfe, 0xa4, 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, 0xb9, 0x7c, 0x33, 0xb8, ++ 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, 0xca, 0x2c, 0x21, 0xa4, 0xd5, 0x15, ++ 0x61, 0x62, 0xa2, 0x75, 0xda, 0x70, 0x8e, 0xef, 0x55, 0x34, 0xe9, 0x9f, 0xcf, 0x2b, 0xac, 0x4c, ++ 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, 0x2e, 0x65, 0xba, 0xaa, 0x1e, 0x2c, 0xb0, 0x8b, ++ 0xb9, 0xe2, 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, 0x8e, 0x5e, 0x96, 0x3f, 0xfc, 0x30, ++ 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, 0x14, 0xf7, 0x01, 0xe2, 0x35, 0x7e, 0xdc, 0x30, 0xc0, 0x11, ++ 0xba, 0x1e, 0xd0, 0x06, 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, 0xa8, 0x0a, 0xbf, 0x1f, 0x7c, 0x2e, ++ 0xf1, 0x23, 0x9e, 0x60, 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, 0xa1, 0x33, 0xcc, 0xa5, ++ 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, 0x40, 0xe0, 0xde, 0x36, 0xbb, 0x5d, 0xb7, 0xca, ++ 0x85, 0x8f, 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, 0xe7, 0xfa, 0x6e, 0x6b, ++ 0x83, 0xb4, 0xea, 0x24, 0xbe, 0x7d, 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, 0xb5, 0xba, 0xad, 0x57, ++ 0xda, 0x28, 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, 0xe2, 0x18, 0xd6, 0x95, 0x11, 0x68, ++ 0x47, 0x4b, 0xcd, 0x17, 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, 0xba, 0xac, 0xf5, 0xf3, ++ 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, 0xc3, 0x06, 0xfe, 0xd8, 0xa9, 0xb7, 0x99, 0xae, ++ 0xb0, 0x53, 0xf3, 0xae, 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, 0x49, 0xdf, 0xfa, 0x6a, ++ 0x33, 0xe7, 0x19, 0x8a, 0x09, 0x35, 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, 0xfc, 0x65, 0x57, 0x3d, ++ 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, 0x65, 0x16, 0xf1, 0x52, 0x8b, 0xeb, ++ 0x96, 0x7a, 0x9c, 0xcc, 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, 0xb7, 0x97, 0x3c, 0x58, 0xa3, 0xd5, ++ 0x6f, 0xbc, 0x41, 0xf2, 0x89, 0x44, 0xfe, 0x91, 0x87, 0xe8, 0xf4, 0xd5, 0xe4, 0x2a, 0xa8, 0x20, ++ 0x6e, 0xe8, 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, 0x57, 0x58, 0x42, 0x8b, 0x69, 0x2a, ++ 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, 0x5d, 0x56, 0x9b, 0x98, ++ 0xf6, 0x4c, 0x0e, 0xc2, 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, 0xfd, 0x85, 0x55, 0xd2, 0xce, 0x93, ++ 0x50, 0x2d, 0xdb, 0x09, 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, 0x6f, 0x1b, 0xbc, 0xcf, 0xba, 0x65, ++ 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, 0x66, 0x99, 0x0f, 0xea, 0x8a, 0x32, 0xc8, 0xc9, ++ 0x5d, 0x0f, 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, 0xbe, 0xee, 0x3e, 0x17, ++ 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, 0x64, 0xbd, 0xb1, 0x90, ++ 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, 0xed, 0x63, 0x44, 0x72, 0xb7, 0x9b, 0x29, 0x25, ++ 0x17, 0x66, 0x16, 0x1e, 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, 0x06, 0x63, 0x4f, 0x96, ++ 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, 0x0e, 0x15, 0xd5, 0xb1, 0xa2, 0xe3, 0x0a, 0xee, ++ 0x97, 0x2e, 0xac, 0xb7, 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, 0x9a, 0xf9, 0x62, 0xdf, ++ 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, 0x6e, 0x13, 0x32, 0x4f, 0xd3, 0x0b, 0x99, 0x29, 0xa4, 0x94, ++ 0xec, 0x08, 0xab, 0xd6, 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, 0x8b, 0xb9, 0x51, 0x90, 0x05, 0x77, ++ 0x58, 0xc8, 0x98, 0x57, 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, 0xc5, 0x8e, 0x7d, 0x35, ++ 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, 0x09, 0xfe, 0x5e, 0x08, 0xf3, 0x73, 0x0f, 0x99, ++ 0x1f, 0x83, 0x55, 0x40, 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, 0x7f, 0x22, 0x88, 0xc6, ++ 0xfb, 0x6e, 0xbd, 0xc8, 0x17, 0xb4, 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, 0x57, 0xf3, 0x4a, 0xe1, ++ 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, 0x66, 0x1a, 0xe6, 0x9a, 0x70, 0x86, 0x3f, 0x88, 0x65, 0x9e, ++ 0x09, 0xb1, 0x73, 0x25, 0x9b, 0x2e, 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, 0xdf, 0xe0, 0x06, 0x5a, ++ 0x0d, 0x22, 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, 0x6d, 0x60, 0x3b, 0x1e, 0x02, 0x21, 0x84, 0x72, ++ 0x7a, 0x72, 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, 0x5b, 0x21, 0x3c, 0x2e, 0x6d, 0xc8, 0xa6, 0xa2, ++ 0x67, 0x59, 0x02, 0xac, 0xfd, 0xee, 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, 0x9d, 0x6b, 0x6f, 0x70, ++ 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, 0x6d, 0x28, 0xfc, 0xb9, 0xa7, 0xe0, 0x35, 0x2d, 0xb4, 0xe7, ++ 0x87, 0x27, 0x2a, 0x0b, 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, 0xb6, 0x1d, 0x68, 0x7b, 0x2f, 0x7f, ++ 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, 0xa6, 0x7a, 0xae, 0xb0, 0x84, 0xd5, 0xd2, 0x54, ++ 0xe8, 0x9b, 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, 0xd1, 0x39, 0x42, 0xc8, 0x8c, 0x51, 0x87, 0x5f, ++ 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, 0xc3, 0xed, 0x32, 0xa3, ++ 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, 0xe8, 0xf5, 0xb3, 0xae, 0x99, 0x19, 0xf0, 0xa3, 0xc9, 0xd2, ++ 0x4e, 0xfa, 0xbe, 0x32, 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, 0x65, 0x4c, 0xf3, 0xa9, ++ 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, 0x20, 0x24, 0xd6, 0xd2, 0xc9, 0x71, 0xdd, 0xc1, 0x82, 0x28, ++ 0xeb, 0x67, 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, 0x64, 0x9c, 0xa5, 0x71, 0x07, 0x41, ++ 0xf8, 0x92, 0xed, 0x45, 0xe5, 0xfb, 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, 0x7e, 0xd3, 0xca, 0xff, ++ 0xf3, 0x8b, 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, 0x97, 0x79, 0x2e, 0xb2, 0x8d, 0xb1, ++ 0x3e, 0xc5, 0xaa, 0x80, 0xa8, 0x4e, 0x33, 0x0d, 0x73, 0x4d, 0x38, 0x43, 0xfe, 0x44, 0xd3, 0x4f, ++ 0x3d, 0x39, 0xfa, 0x0d, 0x5a, 0x01, 0x2b, 0x16, 0xcc, 0xf1, 0x1e, 0x17, 0xd7, 0x64, 0x53, 0x51, ++ 0xbd, 0x71, 0x40, 0xa4, 0x16, 0x33, 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, 0x4b, 0xfe, 0x7e, 0x18, ++ 0x8a, 0x05, 0x99, 0x01, 0x25, 0x53, 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, 0x6a, 0x5a, 0xab, 0x0d, ++ 0x88, 0xad, 0xf9, 0xf7, 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, 0x08, 0xda, 0xe5, 0xdb, 0xea, 0x19, ++ 0xdd, 0x47, 0xd2, 0xaa, 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, 0x22, 0x74, 0x13, 0x5e, ++ 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, 0xac, 0x61, 0xaf, 0x3a, 0xd0, 0xf6, 0x5e, 0xfe, ++ 0x0b, 0x19, 0x13, 0xd3, 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, 0x50, 0x61, 0x47, 0x4e, ++ 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, 0xdb, 0xa2, 0xcd, 0xbe, ++ 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, 0x8e, 0x16, 0xaa, 0xdd, 0x17, 0x59, 0xa7, 0xb9, ++ 0x02, 0xa8, 0x60, 0xf6, 0x1d, 0xcb, 0x10, 0x12, 0x6b, 0x69, 0x85, 0xd9, 0x8f, 0x81, 0x41, 0x14, ++ 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, 0x5e, 0xcd, 0xdd, 0x6b, 0x47, 0x38, 0xe0, 0xf7, ++ 0x80, 0x48, 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, 0x9c, 0x9a, 0x2d, 0x49, ++ 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, 0x6e, 0x18, 0x60, 0xe9, ++ 0xd0, 0x65, 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, 0x36, 0x23, 0x20, 0x55, 0x97, 0x2c, ++ 0x24, 0x81, 0x0f, 0x94, 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, 0xfa, 0x06, 0x18, 0xab, ++ 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, 0x77, 0x43, 0xec, 0x78, 0x08, 0x84, 0x55, 0x0b, ++ 0xcb, 0x75, 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, 0x82, 0xb6, 0x9d, 0xc2, ++ 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, 0x64, 0x89, 0xd3, 0x3e, 0x28, 0x34, 0xf7, 0x31, 0xc4, 0x7d, ++ 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, 0xac, 0x58, 0xb6, 0x42, 0x78, 0x5c, 0xda, 0x53, 0x8f, 0x87, ++ 0xce, 0xb2, 0x04, 0x9b, 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, 0xf9, 0xd6, 0xde, 0xe0, ++ 0x99, 0xf0, 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, 0x5a, 0xc3, 0x09, 0x50, 0xb1, 0xf8, 0x66, 0xb3, ++ 0x10, 0x09, 0x86, 0xbc, 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, 0xf2, 0x82, 0x4d, 0xa0, ++ 0x44, 0xb7, 0x9d, 0x9a, 0x1c, 0x4c, 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, 0x93, 0x8c, 0x75, 0xed, ++ 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, 0x45, 0x05, 0xfe, 0xbe, 0xcd, 0x1c, 0x4e, 0x4d, 0xf7, 0xc5, ++ 0x92, 0xe9, 0x5c, 0xe3, 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, 0xe1, 0x99, 0x21, 0xfd, ++ 0x3a, 0x56, 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, 0xa5, 0x9f, 0xf1, 0x32, 0x23, 0x85, 0x51, 0x67, ++ 0x01, 0x54, 0x30, 0x7b, 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, 0xa6, 0xa1, 0xc1, 0x0a, ++ 0x26, 0x29, 0x6f, 0x62, 0x34, 0x73, 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, 0x75, 0x87, 0x59, 0xbf, ++ 0x12, 0xa1, 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, 0x27, 0xde, 0x7d, 0x03, 0x0c, 0xb4, ++ 0x1a, 0x44, 0xa5, 0x14, 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, 0x04, 0x42, 0xcb, 0xe4, ++ 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, 0x91, 0xd9, 0x9c, 0xfe, 0x37, 0x0c, 0x30, 0x95, ++ 0x68, 0xd3, 0xd1, 0x50, 0x41, 0x5e, 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, 0x10, 0xcb, 0xaa, 0x16, ++ 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, 0xa4, 0x51, 0x62, 0x97, 0xdb, 0xd1, 0x7c, 0xf2, 0x4e, 0x8d, ++ 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, 0x82, 0x03, 0xeb, 0x6a, 0xfa, 0xb5, 0x3a, 0x3b, 0xec, 0x43, ++ 0x8b, 0x51, 0xa9, 0x7a, 0xca, 0xd7, 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, 0xcc, 0xfb, 0x6a, 0x07, ++ 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, 0xf7, 0x30, 0xa8, 0x6f, 0x7b, 0x01, 0x26, 0x36, 0xd8, 0xba, ++ 0xd6, 0x5e, 0xc1, 0x79, 0xa5, 0x22, 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, 0x72, 0x15, 0x54, 0x10, ++ 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, 0xc3, 0xe3, 0x7f, 0x5f, 0x87, 0x0e, 0x27, 0xc7, 0x9a, 0x83, ++ 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, 0xd4, 0x3b, 0xf6, 0xc0, 0x86, 0x44, ++ 0x08, 0xe5, 0x43, 0x5e, 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, 0x79, 0x41, 0xc7, 0x50, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x4c, 0x52, 0xde, 0xc4, 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, 0xea, 0xcd, 0xb2, 0xbd, ++ 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, 0x77, 0xa0, 0x76, 0xa1, 0xd9, 0x06, 0xd4, 0xb4, 0x95, 0x1a, ++ 0x74, 0xac, 0xd4, 0x9d, 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, 0x21, 0x64, 0x46, 0xc9, 0xa2, 0xce, ++ }, ++ { /* 8 */ ++ 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, 0xf0, 0x49, 0x21, 0x0a, 0xad, 0xf8, ++ 0x93, 0xe3, 0xda, 0xa3, 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, 0xbd, 0x7f, 0x09, 0x35, 0xa8, 0x38, ++ 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, 0xaf, 0xb5, 0xad, 0x3e, 0x65, 0x8a, 0x44, 0xdb, ++ 0xae, 0x16, 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, 0xfd, 0xee, 0x57, 0x5c, ++ 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, 0x69, 0x61, 0xa4, 0xfb, ++ 0xbd, 0x82, 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, 0x71, 0xb5, 0xb1, 0xdc, 0xbf, 0xfe, ++ 0x69, 0xbd, 0x24, 0x97, 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, 0x67, 0x47, 0xd5, 0x6a, ++ 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, 0x40, 0xa5, 0x07, 0x91, 0x81, 0xf6, 0xb9, 0x7e, ++ 0x6e, 0xbb, 0x7e, 0xd0, 0x09, 0xdd, 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, 0x7b, 0x0b, 0x37, 0x8b, ++ 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, 0xfc, 0xf9, 0xe3, 0x62, 0xfe, 0xa8, 0xe0, 0x25, 0x1c, 0x04, ++ 0x3e, 0xb6, 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, 0xc5, 0xba, 0xf8, 0x30, 0x1f, 0x44, ++ 0x92, 0x63, 0xc4, 0x38, 0x16, 0xda, 0x44, 0x6a, 0x17, 0x6b, 0xe9, 0x78, 0x0d, 0x6c, 0x49, 0x99, ++ 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, 0x33, 0xf6, 0x86, 0x6d, 0x11, 0x20, 0xab, 0x78, ++ 0x59, 0x07, 0x41, 0xb8, 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, 0xa7, 0xef, 0xcd, 0x2f, ++ 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, 0x3d, 0xe0, 0x8f, 0x06, 0x4f, 0x97, 0xc4, 0xf1, 0xf9, 0xe4, ++ 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, 0xfa, 0x29, 0xfb, 0x7a, 0x27, 0x4c, ++ 0xd3, 0x39, 0x56, 0x76, 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, 0x99, 0x7c, 0xca, 0xd7, 0x88, 0x75, ++ 0xce, 0xa1, 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, 0x01, 0xea, 0xb2, 0x2f, 0xbe, 0x7d, 0x67, 0xd6, ++ 0xa0, 0x1a, 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, 0x8c, 0xfb, 0x5a, 0xe6, 0xc5, 0x76, 0x50, 0x5d, ++ 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, 0x81, 0xed, 0x36, 0x32, 0xb9, 0xfe, 0x12, 0x6a, 0x93, 0x70, ++ 0xd5, 0xbf, 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, 0xa2, 0x6e, 0xd2, 0xc2, 0x8b, 0x35, ++ 0xb9, 0xc7, 0x50, 0x8f, 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, 0xa1, 0x7b, 0xbd, 0x3f, ++ 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, 0xbc, 0xf0, 0xc9, 0xfa, 0xd5, 0xd1, 0x52, 0x9c, ++ 0xbf, 0x41, 0x14, 0x53, 0x43, 0x4a, 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, 0xb9, 0x6e, 0xbe, 0x7f, ++ 0x2d, 0x22, 0xd0, 0x6b, 0x55, 0x90, 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, 0xb4, 0x02, 0xf7, 0xe6, ++ 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, 0x88, 0xd4, 0x2e, 0xd6, 0x11, 0xf0, 0x1a, 0xd8, 0x92, 0xf1, ++ 0xdc, 0xb5, 0xfc, 0x63, 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, 0xf6, 0x16, 0x6e, 0xd5, ++ 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, 0x75, 0xeb, 0x4f, 0x2a, 0x46, 0xe7, 0x84, 0x28, 0xf1, 0x66, ++ 0xf9, 0x1d, 0xdc, 0x5a, 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, 0x62, 0x99, 0x9d, 0x72, ++ 0xee, 0xcc, 0xa5, 0xb9, 0x3d, 0xe6, 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, 0x3e, 0x0c, 0x77, 0x11, ++ 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, 0x7a, 0x03, 0xdd, 0x0c, 0x9e, 0xed, 0x4b, 0x21, 0x31, 0x0b, ++ 0xcd, 0xe2, 0xc1, 0x5c, 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, 0xb2, 0x96, 0x87, 0xf6, ++ 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, 0x8d, 0x8c, 0xe1, 0x75, 0x59, 0xf6, 0x5f, 0xdf, 0xd2, 0x6b, ++ 0x72, 0xa3, 0xd5, 0x0f, 0x35, 0x63, 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, 0x0b, 0xf8, 0x39, 0x89, ++ 0x9b, 0x69, 0x2a, 0xf1, 0x07, 0x4b, 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, 0x29, 0xb8, 0xac, 0x79, ++ 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, 0x04, 0x2e, 0x8d, 0xbc, 0xbd, 0x37, 0x5f, 0xde, ++ 0xeb, 0x09, 0xc3, 0x0b, 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, 0x67, 0xd4, 0x2a, 0xf2, 0x94, 0x71, ++ 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, 0x1e, 0x13, 0xe7, 0x4c, 0x73, 0x14, 0x5d, 0x12, 0x43, 0xda, ++ 0x83, 0x34, 0xf9, 0x07, 0x72, 0x8a, 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, 0x49, 0xec, 0xa0, 0xba, ++ 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, 0xc1, 0x19, 0x6c, 0x64, 0xb1, 0x3f, 0x24, 0xd4, 0xe5, 0xe0, ++ 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, 0xb9, 0x55, 0x76, 0x97, 0xbe, 0x6f, 0x93, 0x9c, 0x2a, 0x0e, ++ 0x77, 0x66, 0xb3, 0xbd, 0xff, 0x73, 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, 0x1f, 0x06, 0xda, 0xe9, ++ 0x40, 0xda, 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, 0x86, 0xb0, 0x24, 0x03, 0xc3, 0xe2, 0x20, 0x4d, ++ 0xf6, 0x91, 0x76, 0x4f, 0x48, 0x27, 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, 0x5e, 0x58, 0x7b, 0xd2, ++ 0x5a, 0x44, 0x63, 0xd6, 0xaa, 0xe3, 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, 0xab, 0x04, 0x2d, 0x0f, ++ 0x0d, 0x4f, 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, 0x22, 0x23, 0x34, 0x73, 0xe7, 0x21, ++ 0xfa, 0x5e, 0xfe, 0x34, 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, 0x6e, 0x72, 0x7d, 0x52, ++ 0xc7, 0xab, 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, 0x6d, 0x8e, 0x03, 0x10, 0x9a, 0xa9, 0x82, 0x36, ++ 0x65, 0x72, 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, 0xf1, 0xf8, 0x57, 0x6d, 0xd3, 0xea, ++ 0x5f, 0x81, 0x05, 0x64, 0x60, 0xf3, 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, 0xbf, 0xfa, 0xce, 0x6f, ++ 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, 0x91, 0xdb, 0xcd, 0x7b, 0xce, 0x8e, 0x69, 0xd4, ++ 0xf0, 0x17, 0x32, 0x93, 0xc4, 0x86, 0x3e, 0x69, 0xca, 0x67, 0x77, 0x95, 0x46, 0x4d, 0x78, 0x92, ++ 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, 0x3f, 0x84, 0xd2, 0x6a, 0x15, 0x79, 0x4a, 0xd9, ++ 0x43, 0x99, 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, 0x92, 0x26, 0xd8, 0x0a, 0xcf, 0x09, 0xc0, 0x6d, ++ 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, 0xf1, 0x5e, 0xb6, 0xbb, 0xb7, 0x1f, 0xd3, 0x45, 0x22, 0x8c, ++ 0x9e, 0xac, 0x4c, 0x43, 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, 0x9f, 0x5c, 0x3d, 0x46, 0x4f, 0x19, ++ 0xe9, 0xca, 0xff, 0xfe, 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, 0xcf, 0xda, 0x22, 0x40, 0x95, 0xf0, ++ 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, 0x54, 0x33, 0xfb, 0x98, 0x8d, 0x1d, 0x59, 0x5e, ++ 0x2a, 0x24, 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, 0x3b, 0xaa, 0x5f, 0xd6, 0xa8, 0x4e, 0x15, 0x07, ++ 0x13, 0x94, 0x01, 0xca, 0xa1, 0x8e, 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, 0x4c, 0x32, 0xe8, 0xa2, ++ 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, 0xa7, 0xe9, 0x74, 0x85, 0xdc, 0xe4, 0xfa, 0xa4, ++ 0x1c, 0x18, 0xab, 0xdf, 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, 0x7f, 0x54, 0x70, 0xf3, 0x0e, 0x02, ++ 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, 0x7c, 0xdc, 0xc0, 0x8a, 0x95, 0x08, 0x5a, 0x1e, ++ 0x4b, 0x13, 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, 0xef, 0x84, 0xc4, 0x2c, ++ 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, 0xe1, 0x63, 0x41, 0x4f, 0xb5, 0xbe, 0x3f, 0x8b, 0xde, 0xa8, ++ 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, 0xda, 0xab, 0x23, 0xc7, 0x3c, 0x49, ++ 0xcc, 0x62, 0xdf, 0xc7, 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, 0xb6, 0xcf, 0x66, 0x57, ++ 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, 0xe0, 0xa5, 0xc3, 0xd1, 0x1c, 0x01, 0x41, 0x5e, 0xa1, 0x3b, ++ 0xac, 0xd5, 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, 0xdc, 0xe6, 0x2c, 0xc2, 0xf5, 0x5c, 0x56, 0xdd, ++ 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, 0x69, 0xb7, 0x6f, 0x99, 0xa4, 0x4e, 0x25, 0x53, 0x4c, 0x59, ++ 0x56, 0x8b, 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, 0x16, 0x61, 0x9b, 0x2e, 0x2b, 0x8f, ++ 0x1e, 0xdb, 0x97, 0x2a, 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, 0x78, 0x41, 0x0f, 0x83, ++ 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, 0x83, 0x74, 0x1b, 0x90, 0xc0, 0xa8, 0x18, 0x45, ++ 0x14, 0x92, 0x5b, 0x8d, 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, 0x50, 0x7e, 0x0a, 0x43, ++ 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, 0x92, 0x1b, 0x83, 0xb7, ++ 0x49, 0xd0, 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, 0x95, 0x3c, 0xe7, 0x36, 0xc5, 0xad, ++ 0xb0, 0xcd, 0xbe, 0x46, 0xde, 0x7a, 0xdd, 0x45, 0x4c, 0xd7, 0x53, 0x96, 0x85, 0xaf, 0x58, 0xdf, ++ 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, 0x05, 0xc4, 0x3f, 0x93, 0x03, 0x4a, 0x38, 0x08, ++ 0x0b, 0xc9, 0xd2, 0x3c, 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, 0x2c, 0x66, 0xe4, 0x61, ++ 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, 0x8e, 0x05, 0xa4, 0x14, 0x61, 0xf4, 0xdd, 0x63, 0x53, 0x1d, ++ 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, 0xd0, 0xcb, 0xf9, 0xb7, 0xb6, 0xfd, ++ 0xa1, 0x9a, 0x83, 0x79, 0xba, 0x2a, 0x70, 0xb3, 0x80, 0x89, 0x0e, 0xe1, 0xc1, 0x2f, 0xb1, 0xfc, ++ 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, 0xb6, 0xbd, 0xe4, 0xb1, 0x66, 0x65, 0x5c, 0x95, 0xea, 0x63, ++ 0xf5, 0xd2, 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, 0xf6, 0x1e, 0xb0, 0x8e, 0x52, 0xb3, 0x9b, 0xf2, ++ 0xfd, 0x58, 0xa4, 0x73, 0x9c, 0x68, 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, 0x72, 0x3e, 0x9f, 0xb3, ++ 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, 0xd3, 0x69, 0x6d, 0xb4, 0xf0, 0x82, 0x1e, 0xc5, ++ 0xca, 0xe4, 0x9b, 0x1b, 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, 0xae, 0xda, 0x65, 0x17, ++ 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, 0x94, 0x1f, 0xf2, 0xe8, 0xcd, 0xc4, 0x51, 0xdc, ++ 0x4a, 0x93, 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, 0xeb, 0xdd, 0x25, 0x8d, ++ 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, 0x36, 0x96, 0x50, 0x1d, 0x76, 0x24, 0x30, 0x2a, 0x06, 0x80, ++ 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, 0xec, 0x48, 0x60, 0x54, 0x0c, 0xc3, ++ 0xc3, 0xee, 0x75, 0xd2, 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, 0x8a, 0x0e, 0x80, 0xf7, ++ 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, 0xa2, 0x2d, 0x4b, 0x16, 0xdf, 0xae, 0xc2, 0xac, ++ 0x8f, 0xfb, 0x71, 0x7c, 0xa9, 0x0b, 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, 0x79, 0xc6, 0xa6, 0x3a, ++ 0xf2, 0xd4, 0x0e, 0x66, 0x01, 0x58, 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, 0x4e, 0xff, 0x79, 0x13, ++ 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, 0x7e, 0xe5, 0x06, 0x94, 0x70, 0x10, ++ 0x3d, 0xf5, 0xf3, 0xcf, 0xb2, 0xaf, 0x0b, 0x76, 0xdf, 0x1b, 0x39, 0xb3, 0xf4, 0xdb, 0xff, 0x64, ++ 0xaa, 0x53, 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, 0xf4, 0x09, 0x17, 0xd0, 0xed, 0x49, 0x55, 0x9d, ++ 0x57, 0x0b, 0xf5, 0x36, 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, 0x9f, 0x77, 0xca, 0x2e, ++ 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, 0x59, 0x4b, 0xa2, 0x7b, ++ 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, 0x64, 0x38, 0x68, 0x84, 0x9d, 0xba, 0x5b, 0x9f, ++ 0xe3, 0x83, 0x33, 0x59, 0x65, 0x08, 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, 0x0a, 0x7f, 0x90, 0x30, ++ 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, 0x7c, 0xd2, 0x57, 0xce, 0xee, 0xe9, 0x8c, 0x9a, 0xf0, 0xe7, ++ 0x52, 0xce, 0x93, 0x84, 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, 0x8b, 0x89, 0x29, 0x4e, ++ 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, 0x7d, 0x9f, 0x47, 0x9b, ++ 0xdd, 0x35, 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, 0x47, 0x56, 0xf2, 0x4f, 0x8f, 0x74, ++ 0x2c, 0xa2, 0xce, 0xf0, 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, 0xb0, 0x5b, 0x16, 0x47, ++ 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, 0x46, 0x9c, 0x2d, 0x73, 0x83, 0x3b, 0x28, 0xcf, ++ 0xec, 0x0f, 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, 0x36, 0xbe, 0x76, 0x90, ++ 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, 0x1b, 0x4b, 0x28, 0xef, 0x3b, 0x12, 0x18, 0x15, 0x03, 0x40, ++ 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, 0x15, 0x71, 0x01, 0x87, 0xa9, 0xb9, ++ 0xa3, 0x59, 0xbf, 0x8c, 0x7f, 0xf4, 0x79, 0x8a, 0x98, 0x6d, 0xa6, 0xef, 0xc9, 0x9d, 0xb0, 0x7d, ++ 0xff, 0x9b, 0x98, 0x86, 0x59, 0xb6, 0xe4, 0x3b, 0x8e, 0xec, 0xfd, 0xb8, 0x7a, 0x8c, 0x9e, 0x32, ++ 0x9c, 0x6f, 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, 0x37, 0x52, 0x35, 0xf4, 0x4e, 0x98, ++ 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, 0xac, 0x17, 0xf4, 0xa6, ++ 0xc6, 0x2b, 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, 0x57, 0x17, 0x9e, 0xf0, 0x63, 0x97, ++ 0x39, 0xb0, 0x8b, 0xe6, 0xfb, 0xd0, 0x19, 0x04, 0xef, 0x10, 0xaa, 0xaf, 0xe4, 0x7c, 0xfd, 0xa5, ++ 0x29, 0x67, 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, 0x2f, 0x3c, 0xa3, 0xdf, 0xa4, 0xa5, 0xf5, 0x27, ++ 0x5b, 0xc4, 0x7d, 0x4d, 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, 0xaf, 0x5d, 0xcc, 0xae, ++ 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, 0x4d, 0x53, 0x0f, 0x8f, 0x41, 0x76, 0x05, 0xde, 0x48, 0x18, ++ 0x58, 0x87, 0x5f, 0x23, 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, 0xc8, 0x4b, 0xa3, 0xb6, 0x2c, 0x8e, ++ 0xf1, 0x97, 0x2c, 0x08, 0x47, 0xe9, 0xdb, 0x94, 0xc6, 0x15, 0x23, 0x92, 0x42, 0x14, 0x99, 0x33, ++ 0xdf, 0xf6, 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, 0xcd, 0xb4, 0xef, 0x58, 0xfa, 0xfd, 0x8e, 0xf5, ++ 0x28, 0xe7, 0xb6, 0xd9, 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, 0xa0, 0xfc, 0x14, 0x86, ++ 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, 0x73, 0x3a, 0xc5, 0xe8, 0x36, 0xe3, 0x43, 0x93, 0x30, 0x8a, ++ 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, 0x69, 0xa0, 0x8e, 0xac, 0x27, 0x9e, 0xdd, 0xe8, ++ 0x76, 0xe6, 0xad, 0x26, 0x7c, 0x1c, 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, 0x1b, 0x5f, 0x3b, 0x48, ++ 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, 0x14, 0x96, 0xfc, 0x09, 0x0c, 0xeb, 0xe0, 0x20, ++ 0xc8, 0x27, 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, 0xa6, 0x68, 0x64, 0x96, ++ 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, 0x09, 0x39, 0x18, 0xe4, 0xa8, 0x0e, 0x08, 0xb2, 0x01, 0x81, ++ 0x12, 0x14, 0x1f, 0x51, 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, 0xa1, 0x7e, 0x48, 0x6b, 0x09, 0x03, ++ 0xef, 0x4c, 0xbb, 0x22, 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, 0xf4, 0xc8, 0x3a, 0x55, 0x96, 0xb0, ++ 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, 0xf8, 0x67, 0xae, 0x5f, 0x1f, 0x11, 0xdb, 0xf7, 0x23, 0x0d, ++ 0x51, 0x8d, 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, 0x4a, 0xee, 0x79, 0x74, 0x87, 0x62, 0xc9, 0x6e, ++ 0xdb, 0xb3, 0xa6, 0x24, 0x1d, 0xb7, 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, 0xea, 0x5a, 0x8c, 0x34, ++ 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, 0xac, 0x8f, 0x13, 0xed, 0x3a, 0xc9, ++ 0x0f, 0x8c, 0xaa, 0x15, 0x9d, 0x30, 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, 0x3c, 0xc1, 0xe6, 0xa0, ++ 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, 0x45, 0x61, 0x38, 0x02, 0x82, 0xbc, 0x81, 0x76, ++ 0x8d, 0x38, 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, 0x71, 0x74, 0xa7, 0xbb, ++ 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, 0x63, 0x1e, 0x34, 0xcb, ++ 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, 0x23, 0xf3, 0x68, 0x4a, 0x3c, 0x83, 0x99, 0xe3, 0xba, 0x3e, ++ 0x0e, 0x0c, 0xb4, 0x8e, 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, 0x38, 0x98, 0x07, 0x01, ++ 0x5d, 0x42, 0x39, 0x91, 0xa5, 0x2d, 0x78, 0x4c, 0x1a, 0xf3, 0x0f, 0x50, 0xb7, 0x48, 0xcf, 0xee, ++ 0xe2, 0x03, 0x2d, 0xc2, 0xe6, 0x67, 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, 0x0e, 0x26, 0x71, 0x91, ++ 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, 0x86, 0xe5, 0x60, 0xd7, ++ 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, 0x7a, 0x64, 0x1d, 0xcb, 0x4b, 0x58, ++ 0xad, 0x55, 0x0b, 0x02, 0x61, 0xab, 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, 0xf1, 0x05, 0xb7, 0x7c, ++ 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, 0x0c, 0x72, 0x54, 0x07, 0x04, 0x59, 0xe1, 0xa1, ++ 0x24, 0x28, 0x3e, 0xa2, 0x44, 0x01, 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, 0x90, 0xd6, 0x12, 0x06, ++ 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, 0x52, 0x86, 0x6a, 0x5d, 0x9b, 0xdd, 0x26, 0x19, 0x74, 0x51, ++ 0x8c, 0xb8, 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, 0x3e, 0x22, 0x75, 0x2d, 0x46, 0x1a, ++ 0xf3, 0x54, 0x10, 0xfd, 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, 0x4a, 0xa6, 0x98, 0xb2, ++ 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, 0x6b, 0xf8, 0xa8, 0x66, 0x35, 0xf3, 0xd9, 0x3a, 0xb2, 0xbc, ++ 0x34, 0xff, 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, 0xb3, 0x7f, 0x88, 0x8c, 0xd0, 0x0f, 0x1a, 0x84, ++ 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, 0x6d, 0x29, 0x22, 0xa4, 0x45, 0xf7, 0x1e, 0x81, 0x73, 0x50, ++ 0x48, 0x50, 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, 0xc1, 0x3b, 0xe3, 0x6f, 0x24, 0x0c, ++ 0xba, 0x84, 0x72, 0xe1, 0x89, 0x5a, 0xf0, 0x98, 0x34, 0x25, 0x1e, 0xa0, 0xad, 0x90, 0x5d, 0x1f, ++ 0x07, 0x06, 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, 0x24, 0x9d, 0x6f, 0x15, 0x1c, 0x4c, 0xe2, 0xe1, ++ 0xfc, 0xd8, 0xba, 0xe8, 0x1f, 0x07, 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, 0x76, 0x67, 0x7e, 0x12, ++ 0x4d, 0x95, 0x1a, 0x35, 0x42, 0x12, 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, 0xf7, 0x91, 0xc7, 0x6c, ++ 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, 0xb8, 0x4f, 0x64, 0x0d, 0xed, 0x62, ++ 0x42, 0x19, 0xb0, 0x20, 0xdf, 0x22, 0xea, 0x15, 0x9e, 0x54, 0x8c, 0x0d, 0xcb, 0x50, 0x21, 0xcc, ++ 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, 0x39, 0xbd, 0xf8, 0x88, 0x17, 0xb4, 0xdb, 0x68, ++ 0x4c, 0x15, 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, 0x52, 0x27, 0xf3, 0xc8, 0x26, 0xcd, ++ 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, 0x54, 0x57, 0xe0, 0x9f, 0xeb, 0xd9, 0xe1, 0xa2, 0xb5, 0xbd, ++ 0x82, 0xb4, 0xe7, 0x9c, 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, 0xe0, 0x08, 0x4d, 0xb5, 0x41, 0x1b, ++ 0xf7, 0x11, 0x68, 0xd4, 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, 0x5a, 0x01, 0x9a, 0x73, ++ 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, 0x60, 0x16, 0xe5, 0x38, 0x20, 0x8d, 0x04, 0x41, ++ 0x4f, 0x56, 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, 0xff, 0x23, 0xc6, 0xed, ++ 0x10, 0xd7, 0x23, 0xa4, 0xe7, 0x3f, 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, 0x40, 0xd9, 0x08, 0x82, ++ 0x3b, 0x73, 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, 0x02, 0xa1, 0xec, 0xce, 0xfc, 0x24, ++ 0xcb, 0x64, 0x85, 0x80, 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, 0xaa, 0x83, 0x84, 0xb6, ++ 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, 0x43, 0x58, 0x12, 0xe0, 0x80, 0x71, 0x10, 0xc7, ++ 0x63, 0xf4, 0xe8, 0x30, 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, 0x4f, 0x78, 0xd0, 0xaa, ++ 0x73, 0x23, 0xcb, 0x94, 0xb6, 0x0c, 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, 0x0f, 0xa1, 0xd8, 0x28, ++ 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, 0x5c, 0xc6, 0x32, 0xe7, 0x97, 0x31, ++ 0xea, 0x89, 0xdd, 0x90, 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, 0x33, 0xd3, 0x2e, 0xab, 0x75, 0xd0, ++ 0xc9, 0xa7, 0xb9, 0x75, 0x3f, 0x56, 0x27, 0x6d, 0x25, 0x77, 0xdd, 0x3a, 0xa2, 0x31, 0x85, 0x37, ++ 0x32, 0x79, 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, 0xb3, 0x9e, 0xc8, 0x1a, 0x19, 0xc4, ++ 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, 0x55, 0xa0, 0x42, 0x5b, ++ 0x53, 0x4e, 0x8d, 0x1f, 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, 0xd1, 0x7a, 0x8f, 0xd0, 0xc8, 0xef, ++ 0x04, 0x45, 0x78, 0x29, 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, 0x93, 0x1c, 0x10, 0xa7, 0x02, 0xc1, ++ 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, 0x55, 0xd9, 0x49, 0xb7, 0x33, 0x60, 0x3e, 0x88, ++ 0x41, 0x5a, 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, 0xc7, 0xbb, 0xc1, 0xec, ++ 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, 0x9c, 0x3d, 0xf2, 0x26, ++ 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, 0x7a, 0xe5, 0xea, 0x68, 0x97, 0xc5, 0xcb, 0xaf, ++ 0xcf, 0x21, 0xfd, 0xa9, 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, 0xba, 0x24, 0x86, 0x77, ++ 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, 0x09, 0xb6, 0x6b, 0x94, 0x07, 0x13, 0xd9, 0xa9, ++ 0x11, 0x57, 0x3d, 0x3f, 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, 0x44, 0x80, 0xe9, 0x23, ++ 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, 0xb3, 0xe5, 0x2b, 0x12, 0x2e, 0x63, 0x19, 0x92, 0xaa, 0xf9, ++ 0xd9, 0x70, 0x9a, 0xd1, 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, 0xd4, 0x4a, 0xe2, 0xe8, 0x8d, 0xb5, ++ 0xd0, 0x7a, 0x74, 0x18, 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, 0xc6, 0x3c, 0x68, 0x55, ++ 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, 0xec, 0xed, 0xbf, 0xde, 0xe5, 0xfb, 0x54, 0x1c, ++ 0x1b, 0x1e, 0xf1, 0x98, 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, 0x6c, 0xbf, 0xec, 0xe3, ++ 0x16, 0x51, 0x67, 0x78, 0x6b, 0x9e, 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, 0x58, 0xcc, 0x0b, 0xc2, ++ 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, 0x45, 0xac, 0x95, 0xf5, 0x40, 0xc7, 0x73, 0xb9, 0x36, 0x0a, ++ 0x2f, 0xe1, 0xec, 0x9e, 0x90, 0x4e, 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, 0xbc, 0xb0, 0xf6, 0x67, ++ 0x45, 0x1f, 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, 0xba, 0xc9, 0xe3, 0x18, 0xd7, 0x1c, 0xc3, 0x2d, ++ 0x33, 0xf9, 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, 0x97, 0xe2, 0xe7, 0x99, 0xcc, 0x43, 0xf8, 0x65, ++ 0x1d, 0x98, 0xb5, 0x44, 0xbf, 0xd1, 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, 0x74, 0xaa, 0xef, 0xa3, ++ 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, 0x01, 0xc6, 0x82, 0x9e, 0xa9, 0xbf, 0x7e, 0xd5, 0x7f, 0x93, ++ 0x7a, 0x29, 0x25, 0x5d, 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, 0x72, 0xa5, 0x2b, 0x75, 0x3d, 0xc8, ++ 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, 0xf5, 0xe3, 0xa5, 0xff, 0x53, 0x34, 0x32, 0x4b, ++ 0xb3, 0x8e, 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, 0x58, 0x41, 0xaf, 0x9f, 0x89, 0x44, 0xb8, 0xff, ++ 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, 0x7c, 0x18, 0xee, 0x22, ++ 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, 0xaf, 0xb9, 0x0b, 0xa1, 0xcc, 0xca, 0xb8, 0xe9, 0x17, 0xc6, ++ 0xe4, 0x85, 0x69, 0x1e, 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, 0x16, 0x33, 0x72, 0xd1, ++ 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, 0x5e, 0xe7, 0xbd, 0x1a, 0x7b, 0xd5, 0x6b, 0xac, 0x35, 0x4a, ++ 0x7d, 0x2f, 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, 0x1d, 0xb0, 0x37, 0x39, 0xdf, 0x29, ++ 0xd8, 0xf0, 0x84, 0x4a, 0x5b, 0x06, 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, 0xe6, 0xb1, 0x6c, 0x14, ++ 0xc2, 0x6e, 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, 0xc4, 0x0b, 0x8e, 0x57, 0x61, 0x56, ++ 0x36, 0x3c, 0x21, 0xf3, 0x66, 0xe0, 0xc3, 0x56, 0xab, 0x9b, 0x20, 0x82, 0xd8, 0xbd, 0x1b, 0x05, ++ 0xf8, 0x9d, 0xc2, 0xc1, 0x56, 0x78, 0x1a, 0x8d, 0xaa, 0x71, 0x92, 0xad, 0x66, 0xc0, 0x7c, 0xd3, ++ 0x26, 0xeb, 0x02, 0x57, 0x81, 0xdf, 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, 0x98, 0x64, 0x13, 0x87, ++ 0x3f, 0x36, 0xcf, 0x3a, 0x77, 0x71, 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, 0xfc, 0x69, 0xfe, 0xe5, ++ 0x0a, 0x49, 0xcc, 0xa7, 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, 0x4d, 0x36, 0x28, 0x3f, 0x05, 0xc0, ++ 0x9f, 0x2c, 0x52, 0xd8, 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, 0x39, 0x1f, 0xae, 0xb8, ++ 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, 0xfa, 0x6c, 0xe4, 0x89, 0x56, 0xea, 0x7a, 0x53, ++ 0x1a, 0x9e, 0xef, 0x03, 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, 0x68, 0xe6, 0x0d, 0x42, ++ 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, 0xd1, 0x88, 0xb3, 0x3d, ++ 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, 0xc9, 0x9a, 0x62, 0xe4, 0x47, 0xca, 0xd1, 0x2b, ++ 0x35, 0x7f, 0x03, 0x9d, 0x20, 0x51, 0x2f, 0x92, 0xbf, 0x0d, 0xdc, 0x8b, 0xd4, 0x56, 0xfb, 0x25, ++ 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, 0x71, 0x44, 0x26, 0xa2, 0x2f, 0x2c, 0xdc, 0x69, ++ 0xde, 0x76, 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, 0xfe, 0xa4, 0x6f, 0x54, ++ 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, 0x91, 0x51, 0xbb, 0xbf, ++ 0xda, 0x33, 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, 0x28, 0x43, 0xee, 0x03, 0x6d, 0x95, ++ 0xbc, 0x02, 0x36, 0x3d, 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, 0xb5, 0x85, 0x5e, 0x5f, ++ 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, 0xad, 0xa2, 0x0a, 0x60, 0xda, 0x70, 0x8a, 0xb4, ++ 0xab, 0xd3, 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, 0xe9, 0x10, 0xb4, 0x3c, ++ 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, 0x99, 0x2f, 0x5b, 0xbc, 0xba, 0xee, 0x88, 0xc3, 0x11, 0x46, ++ 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, 0x68, 0x71, 0xed, 0x07, 0x0d, 0xf1, 0x5b, 0x86, 0x33, 0xca, ++ 0x3a, 0xf3, 0xa9, 0x88, 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, 0xe8, 0x97, 0x1d, 0x85, ++ 0x9a, 0xe9, 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, 0x77, 0x7d, 0x0c, 0x40, 0x2d, 0xe1, 0x4d, 0xd8, ++ 0x6b, 0x7e, 0x18, 0x62, 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, 0x6f, 0xf5, 0xd4, 0xeb, ++ 0x05, 0xc5, 0x66, 0xb2, 0xca, 0x10, 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, 0x14, 0xfe, 0xe3, 0x60, ++ 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, 0xa9, 0x68, 0x81, 0x63, 0xbc, 0xce, 0x7f, 0x52, 0xd6, 0x2a, ++ 0x80, 0x77, 0xdb, 0x69, 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, 0x45, 0x07, 0x40, 0x9a, ++ 0x5c, 0xc2, 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, 0x16, 0x81, 0x5b, 0x57, 0xb3, 0x11, 0x2e, 0x4f, ++ 0xfb, 0xde, 0xe0, 0xaf, 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, 0x6a, 0x2b, 0x9c, 0xf3, ++ 0x89, 0x7d, 0x35, 0xa0, 0x25, 0xaa, 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, 0x61, 0xd3, 0xa5, 0x7a, ++ 0x5e, 0x01, 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, 0xf3, 0x59, 0xbb, 0xa3, 0x2f, 0xce, ++ 0x8a, 0x3e, 0x17, 0xce, 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, 0x6d, 0x38, 0x45, 0x5a, ++ 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, 0x38, 0x57, 0x4a, 0xa7, 0xa9, 0xc9, 0xbc, 0xbe, ++ 0x6d, 0xf8, 0x5c, 0xbe, 0x4f, 0x6c, 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, 0x77, 0xe0, 0xd7, 0xab, ++ 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, 0x9e, 0x38, 0x53, 0xe0, 0x63, 0x55, 0x31, 0xad, 0xaf, 0x39, ++ 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, 0x67, 0x99, 0x7f, 0x21, 0xd5, 0xfb, 0x94, 0x8f, 0xf3, 0xa7, ++ 0xc4, 0xe8, 0x2f, 0x95, 0x67, 0xb8, 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, 0x96, 0x42, 0x62, 0x16, ++ 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, 0xbf, 0x84, 0xfc, 0x55, 0xce, 0x6b, 0x54, 0x27, 0xeb, 0xe2, ++ 0x85, 0xb2, 0xbd, 0xdb, 0xfe, 0x2b, 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, 0x51, 0xf9, 0xa3, 0xfa, ++ 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, 0xb5, 0x34, 0xa1, 0xd0, 0x5e, 0x67, 0xde, 0x29, 0x6b, 0x15, ++ 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, 0x2a, 0xe2, 0x02, 0xcd, 0x91, 0xb1, ++ 0xd4, 0x3f, 0x0c, 0x31, 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, 0xd6, 0x9b, 0x6a, 0x94, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xd1, 0xfa, 0x6a, 0x83, 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, 0xc2, 0x65, 0x89, 0xf4, ++ 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, 0x04, 0x9e, 0x4d, 0x3d, 0xe1, 0xb9, 0x3b, 0xd2, 0x3f, 0x09, ++ 0xb8, 0x47, 0x4e, 0x14, 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, 0xb6, 0xae, 0xa5, 0x22, 0x5c, 0x9e, ++ }, ++ { /* 9 */ ++ 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, 0x04, 0x89, 0xcb, 0x72, 0x1b, 0x5d, ++ 0x2d, 0x90, 0x75, 0x4e, 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, 0xa3, 0x5a, 0x48, 0x8a, 0xa4, 0x15, ++ 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, 0xbf, 0x6c, 0x3b, 0x64, 0xae, 0x3d, 0x18, 0xe9, ++ 0x8f, 0x0b, 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, 0xe4, 0xac, 0x86, 0xd3, ++ 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, 0xce, 0xa8, 0x72, 0xf5, ++ 0x30, 0x41, 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, 0xa6, 0x60, 0xc1, 0x05, 0xc9, 0xce, ++ 0x38, 0xbf, 0x6d, 0xd1, 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, 0xbe, 0xe5, 0x0b, 0x52, ++ 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, 0x3d, 0x9c, 0xdd, 0x43, 0x82, 0x14, 0xa2, 0xbe, ++ 0x54, 0xbc, 0x60, 0x39, 0xd9, 0x78, 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, 0x5e, 0x7f, 0xf9, 0xdf, ++ 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, 0xb8, 0x63, 0x0b, 0x7b, 0x7d, 0x0f, 0x0c, 0x5a, 0x9c, 0xe2, ++ 0x9e, 0x5b, 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, 0xa1, 0xff, 0xcc, 0xb3, 0x48, 0xda, ++ 0x39, 0xd0, 0x37, 0xec, 0x2e, 0x4a, 0x59, 0xdc, 0xeb, 0x0c, 0x38, 0x72, 0x68, 0xf9, 0x82, 0xa0, ++ 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, 0xd2, 0x3b, 0x7f, 0xaa, 0x88, 0x63, 0x70, 0x2d, ++ 0x7e, 0xe2, 0x50, 0xc4, 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, 0x71, 0xa1, 0x64, 0x51, ++ 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, 0x81, 0x3f, 0x40, 0x22, 0xb4, 0xa4, 0xef, 0x37, 0x49, 0xb6, ++ 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, 0x5b, 0xe1, 0xd4, 0x07, 0xb3, 0xdd, ++ 0x64, 0xfd, 0x98, 0xc3, 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, 0x76, 0xc8, 0x9f, 0x7a, 0x30, 0x11, ++ 0x03, 0xb1, 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, 0xd0, 0x8f, 0x32, 0x06, 0xb9, 0x24, 0x58, 0xd5, ++ 0x57, 0x0d, 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, 0xf3, 0x70, 0xe2, 0xae, 0xe7, 0x5b, 0xa1, 0x0a, ++ 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, 0xfd, 0x2e, 0xc4, 0xcd, 0x85, 0xb4, 0x90, 0xd7, 0x8b, 0x2a, ++ 0x1c, 0xbe, 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, 0xaa, 0x38, 0x5f, 0x93, 0xe4, 0x29, ++ 0x60, 0x82, 0x33, 0x37, 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, 0x41, 0x0a, 0x51, 0x5f, ++ 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, 0x92, 0x19, 0xcb, 0x0e, 0x67, 0x54, 0x39, 0x9b, ++ 0x18, 0xc1, 0x7c, 0x7d, 0x10, 0x63, 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, 0x81, 0xe3, 0x85, 0x67, ++ 0x21, 0x11, 0x4b, 0x91, 0x3e, 0x29, 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, 0xe9, 0x1a, 0x07, 0xc7, ++ 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, 0xb2, 0x7b, 0x15, 0x18, 0x70, 0xe4, 0xd0, 0x31, 0xc7, 0x83, ++ 0xa8, 0xbb, 0xc0, 0x72, 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, 0xbc, 0xfe, 0x31, 0x7d, ++ 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, 0xbc, 0xd2, 0x07, 0x45, 0x10, 0x61, 0xaa, 0x0b, 0x6c, 0xb7, ++ 0x29, 0xef, 0xde, 0xba, 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, 0x96, 0xfa, 0xc5, 0x5b, ++ 0xc6, 0x66, 0x79, 0xe0, 0x84, 0xf6, 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, 0x33, 0x5c, 0x12, 0xd7, ++ 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, 0xc1, 0x7e, 0x80, 0x44, 0xab, 0x8b, 0x1d, 0x6e, 0x92, 0xaf, ++ 0x3f, 0x71, 0x28, 0x62, 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, 0xd9, 0xb1, 0x32, 0xc9, ++ 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, 0x99, 0x1f, 0x68, 0xa6, 0x19, 0x03, 0xbd, 0x12, 0x2c, 0x8b, ++ 0x27, 0xb0, 0x54, 0x1f, 0x3a, 0x41, 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, 0x58, 0x52, 0xb7, 0xae, ++ 0x8d, 0xd5, 0x20, 0x17, 0xf6, 0x28, 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, 0x8b, 0x94, 0x57, 0xf4, ++ 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, 0xc6, 0x79, 0xc8, 0x18, 0xa1, 0x90, 0xa3, 0xd2, ++ 0x82, 0xe5, 0xf0, 0x8f, 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, 0x0b, 0xc7, 0x93, 0x20, 0xac, 0xf3, ++ 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, 0xfa, 0x9b, 0xcd, 0x02, 0xb5, 0x17, 0xad, 0xca, 0x3f, 0x30, ++ 0xae, 0x1a, 0xdf, 0xfc, 0x75, 0x98, 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, 0x0d, 0xb6, 0x81, 0x14, ++ 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, 0x39, 0x5c, 0x4b, 0x59, 0xc9, 0xab, 0xe3, 0x6d, 0xd5, 0x54, ++ 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, 0x57, 0x75, 0xf9, 0x51, 0x58, 0xf7, 0x12, 0xc3, 0x29, 0x94, ++ 0x63, 0x33, 0xdd, 0x70, 0x42, 0x7b, 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, 0xf8, 0x2e, 0x09, 0x8a, ++ 0x49, 0x6d, 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, 0xdf, 0x5f, 0xd5, 0x92, 0xd7, 0xf0, 0x94, 0x04, ++ 0xe5, 0xa9, 0x86, 0x0b, 0x07, 0x46, 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, 0xb5, 0x7e, 0xc4, 0x37, ++ 0x42, 0x22, 0x96, 0xe1, 0x7c, 0x52, 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, 0x11, 0x34, 0x0e, 0x4d, ++ 0xe4, 0xc6, 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, 0xe0, 0x0b, 0x63, 0x62, 0x4d, 0xc5, ++ 0x15, 0x2f, 0x18, 0x9f, 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, 0xf6, 0x6f, 0xaf, 0x47, ++ 0xb7, 0xb4, 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, 0x9b, 0xd6, 0xfb, 0xad, 0x5a, 0x49, 0x8d, 0x81, ++ 0xc8, 0x39, 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, 0xec, 0x53, 0xfd, 0xf4, 0x60, 0x22, ++ 0x06, 0xa1, 0x1f, 0x8e, 0x04, 0x68, 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, 0xb1, 0x48, 0xb0, 0x69, ++ 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, 0x34, 0x53, 0xed, 0xe0, 0xbf, 0x09, 0x16, 0xa4, ++ 0x9d, 0xea, 0xc9, 0x41, 0x57, 0x6a, 0x98, 0xa2, 0x6b, 0x48, 0x93, 0xf9, 0x75, 0x97, 0x10, 0x0f, ++ 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, 0x5b, 0xb0, 0xe4, 0x82, 0xa8, 0x10, 0x56, 0x98, ++ 0x75, 0xad, 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, 0x87, 0x01, 0xbb, 0xea, 0xb7, 0x65, 0xfe, 0x18, ++ 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, 0x6a, 0x98, 0xbe, 0x36, 0xfc, 0x32, 0x57, 0xff, 0x0c, 0x95, ++ 0xc9, 0x56, 0xa9, 0x78, 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, 0x43, 0x51, 0x2b, 0xe8, 0xe9, 0xd0, ++ 0xaa, 0x65, 0x74, 0x08, 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, 0xfe, 0x97, 0xd3, 0xc6, 0xe0, 0x5a, ++ 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, 0x65, 0xc2, 0xb3, 0x3b, 0xe2, 0x81, 0xc8, 0xa2, ++ 0x4d, 0x12, 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, 0x9d, 0xc9, 0x2c, 0x9a, 0x09, 0x80, 0xf5, 0x4a, ++ 0xbf, 0x4a, 0x6c, 0x97, 0x6b, 0x77, 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, 0x25, 0xa9, 0x4f, 0x1d, ++ 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, 0xf0, 0x9e, 0x68, 0x54, 0x2f, 0xde, 0x9d, 0x8e, ++ 0x73, 0x0c, 0x34, 0x26, 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, 0xdf, 0xe6, 0x06, 0x2d, 0x4e, 0x71, ++ 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, 0xd5, 0x7e, 0x6f, 0xcb, 0x22, 0x68, 0x1c, 0x9a, ++ 0xd5, 0xe8, 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, 0x74, 0x7b, 0x0d, 0xf9, ++ 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, 0x5b, 0x65, 0xed, 0x13, 0xef, 0x45, 0x3b, 0x30, 0xfa, 0x6b, ++ 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, 0xa8, 0x9d, 0xdb, 0xaa, 0x08, 0xe6, ++ 0x2b, 0x31, 0x6a, 0xc0, 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, 0xf9, 0xc2, 0x14, 0x7c, ++ 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, 0xed, 0xaf, 0xf4, 0x35, 0xf2, 0xcf, 0x4d, 0x50, 0xcd, 0xbd, ++ 0xa7, 0x8b, 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, 0x50, 0xcb, 0x99, 0x8d, 0xa4, 0x4a, 0xca, 0x7a, ++ 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, 0xe9, 0x1e, 0xf8, 0x0b, 0x9f, 0xa1, 0xeb, 0x01, 0x3d, 0xe8, ++ 0xb2, 0xa4, 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, 0xad, 0xa7, 0x52, 0x25, 0x65, 0x3d, ++ 0x5b, 0x8c, 0xb0, 0xa1, 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, 0x46, 0xcb, 0x02, 0xd8, ++ 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, 0xc9, 0xa9, 0x2f, 0x8c, 0xcf, 0x44, 0x6f, 0x03, ++ 0xd3, 0x49, 0x61, 0x7f, 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, 0xc5, 0x33, 0xbd, 0x90, ++ 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, 0x1a, 0xaf, 0xc1, 0x28, ++ 0xfd, 0x68, 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, 0x1c, 0x39, 0x34, 0x9d, 0x41, 0x50, ++ 0xd4, 0x87, 0x24, 0xcc, 0x98, 0x2d, 0x6c, 0x90, 0xb4, 0x17, 0x46, 0x6b, 0xa2, 0x67, 0x84, 0x0b, ++ 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, 0x16, 0xf6, 0xfa, 0x1e, 0x18, 0xb4, 0xfb, 0x07, ++ 0x9c, 0x85, 0x93, 0x7c, 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, 0xa3, 0x8b, 0x99, 0xfd, ++ 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, 0x80, 0x82, 0x43, 0xcc, 0x3e, 0x5e, 0x27, 0xb2, 0x75, 0x32, ++ 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, 0xf7, 0xf5, 0xc4, 0xdf, 0xa0, 0x66, ++ 0x43, 0x4d, 0xcc, 0xdc, 0xc3, 0xff, 0x97, 0xb6, 0x7a, 0xfb, 0x79, 0x86, 0xc7, 0x28, 0x87, 0xbf, ++ 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, 0x2a, 0xd9, 0x7e, 0x50, 0xe3, 0x1d, 0xa5, 0xa6, 0xd7, 0x8c, ++ 0xd9, 0x69, 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, 0x83, 0xaa, 0x21, 0x71, 0xd5, 0xeb, 0xae, 0x2b, ++ 0x79, 0x2c, 0x15, 0x77, 0xef, 0x81, 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, 0x16, 0xf5, 0x5d, 0xca, ++ 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, 0x6a, 0x12, 0x54, 0xaf, 0x8c, 0x55, 0x04, 0x73, ++ 0x53, 0x72, 0x25, 0x8a, 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, 0x39, 0x2b, 0xc0, 0x44, ++ 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, 0x22, 0xa5, 0x17, 0xfe, 0xa7, 0xbd, 0xed, 0xa3, ++ 0xc1, 0xa8, 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, 0x54, 0x08, 0x2b, 0x4c, ++ 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, 0x61, 0x3d, 0xa3, 0xbb, 0x7b, 0x23, 0x43, 0x11, 0x6b, 0x70, ++ 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, 0xf6, 0x46, 0x86, 0x22, 0xd6, 0xe0, ++ 0xe7, 0x77, 0x32, 0x71, 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, 0xda, 0x46, 0x15, 0x10, ++ 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, 0xe6, 0x68, 0x92, 0x4a, 0x37, 0x6a, 0x66, 0x89, ++ 0x5e, 0x9c, 0x41, 0x68, 0xd5, 0xc0, 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, 0x4e, 0xa7, 0xea, 0x64, ++ 0xb5, 0x6a, 0x4d, 0xc6, 0x67, 0xcf, 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, 0x35, 0x71, 0x5c, 0xa6, ++ 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, 0x37, 0x3c, 0x30, 0xab, 0x35, 0x0e, ++ 0xa2, 0x9b, 0xe1, 0x23, 0x7d, 0x48, 0xe0, 0x02, 0xe3, 0x99, 0xcf, 0x87, 0xac, 0x26, 0x22, 0xc6, ++ 0xdf, 0xc8, 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, 0xe0, 0x77, 0x45, 0x7d, 0x64, 0xa3, 0x1e, 0x42, ++ 0xa6, 0xe4, 0x4a, 0xd7, 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, 0x72, 0x56, 0x43, 0x88, ++ 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, 0x8d, 0xb9, 0x19, 0x85, ++ 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, 0x04, 0xab, 0x9a, 0x9b, 0x62, 0x8e, 0x50, 0x33, ++ 0x22, 0xa0, 0xa5, 0xd6, 0x3c, 0x1d, 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, 0x50, 0x3e, 0x5f, 0x12, ++ 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, 0xf3, 0x87, 0xd6, 0x90, 0xe5, 0x31, 0xea, 0xed, 0x20, 0x1e, ++ 0xe2, 0x67, 0xc3, 0xb8, 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, 0xd2, 0x2a, 0xfd, 0xac, ++ 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, 0x6e, 0xd4, 0xcc, 0xd1, ++ 0xbc, 0xfb, 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, 0xf8, 0xbb, 0x9c, 0x8d, 0x17, 0xc8, ++ 0x35, 0x51, 0x09, 0x33, 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, 0xc9, 0x69, 0x21, 0x72, ++ 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, 0x98, 0x38, 0x71, 0x57, 0x92, 0xcc, 0xb1, 0x05, ++ 0xee, 0xe6, 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, 0x73, 0xba, 0x5e, 0x7e, ++ 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, 0xd1, 0xff, 0xb0, 0xbc, 0xdc, 0xf0, 0xc0, 0xe9, 0xd4, 0x38, ++ 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, 0x56, 0x0a, 0x08, 0x6c, 0xe8, 0xbc, ++ 0x6b, 0xcd, 0x48, 0x5b, 0xf3, 0x5a, 0xd8, 0xe3, 0xab, 0x2e, 0x8c, 0xd6, 0x87, 0xce, 0xcb, 0x16, ++ 0x51, 0xac, 0x91, 0xf0, 0xdf, 0x24, 0x70, 0x01, 0x90, 0xad, 0x86, 0xa2, 0x56, 0x13, 0x11, 0x63, ++ 0xe1, 0xd6, 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, 0xb6, 0x01, 0x6b, 0x0e, 0xa5, 0x79, ++ 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, 0x29, 0xf3, 0xd3, 0xff, ++ 0xa3, 0xf4, 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, 0x60, 0x85, 0x7a, 0x3a, 0xab, 0x34, ++ 0xf2, 0x58, 0x2a, 0xee, 0x1d, 0xc1, 0x7e, 0xa8, 0x82, 0xf0, 0xe6, 0x27, 0x2c, 0x29, 0xba, 0x57, ++ 0x71, 0xd2, 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, 0xc5, 0x97, 0x42, 0xe2, 0x69, 0x15, 0x9f, 0x56, ++ 0x56, 0x62, 0xd4, 0x43, 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, 0x31, 0x47, 0x28, 0xf8, ++ 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, 0x16, 0x89, 0x3a, 0xd9, 0xcd, 0x22, 0x28, 0x1f, 0xce, 0x09, ++ 0x6a, 0xa2, 0x12, 0x66, 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, 0x23, 0xd4, 0x51, 0xd2, 0x42, 0xe4, ++ 0x89, 0xaa, 0x8b, 0xe3, 0x4f, 0xd9, 0x5e, 0x69, 0xe2, 0xc3, 0x08, 0xd1, 0x55, 0xe4, 0x36, 0xba, ++ 0x94, 0x7b, 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, 0x1e, 0x63, 0x0d, 0xeb, 0xdc, 0x6b, 0x5b, 0x61, ++ 0x65, 0x92, 0xc2, 0xfe, 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, 0x49, 0x66, 0xb9, 0xe3, ++ 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, 0x8e, 0x2b, 0x51, 0x91, 0x5e, 0xdb, 0x5d, 0x88, 0xde, 0x06, ++ 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, 0x5d, 0xaf, 0x33, 0xb5, 0xfb, 0xd9, 0x2e, 0x53, ++ 0x77, 0x73, 0x9f, 0xd2, 0x5a, 0xc8, 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, 0xd8, 0x5d, 0x2f, 0x3f, ++ 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, 0x58, 0x5e, 0x6e, 0x78, 0x60, 0x95, 0x6a, 0x1c, ++ 0x7b, 0xf2, 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, 0x79, 0xcd, 0x8c, 0xed, ++ 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, 0x4f, 0x55, 0xd1, 0xd5, 0xf5, 0x50, 0x40, 0xe6, 0x4c, 0xa9, ++ 0xab, 0x0a, 0x2e, 0x35, 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, 0x51, 0x95, 0x05, 0xda, 0x69, 0xa8, ++ 0xd2, 0x26, 0x3b, 0x42, 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, 0x22, 0x67, 0x13, 0x2f, 0x34, 0x62, ++ 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, 0x25, 0xcd, 0x6f, 0xe3, 0x09, 0x62, 0x17, 0x19, 0x40, 0x3c, ++ 0xde, 0xa7, 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, 0x11, 0xb3, 0xea, 0x7f, 0xb2, 0xbf, 0x97, 0xb0, ++ 0xc4, 0xb8, 0xcd, 0x9a, 0x39, 0x6f, 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, 0x5c, 0x64, 0xc3, 0xf0, ++ 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, 0xd3, 0xbe, 0x98, 0xbb, 0x63, 0x96, ++ 0xcc, 0x46, 0x58, 0xb1, 0x88, 0x4e, 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, 0x23, 0x84, 0x01, 0x6c, ++ 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, 0x2b, 0x6a, 0x27, 0x5d, 0x9a, 0xa0, 0x59, 0xb9, ++ 0x76, 0x1c, 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, 0x0e, 0x41, 0xa6, 0xcd, ++ 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, 0x9e, 0x96, 0x2d, 0xe7, ++ 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, 0x7b, 0xa4, 0x8d, 0x20, 0x01, 0xb3, 0x42, 0xfd, 0x76, 0x86, ++ 0xd8, 0x06, 0x1a, 0x13, 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, 0x03, 0xf7, 0x27, 0xd9, ++ 0x2e, 0x21, 0x9b, 0x09, 0x34, 0xcd, 0x6e, 0x29, 0xb2, 0x08, 0x91, 0x5c, 0xf1, 0xae, 0xfc, 0xc0, ++ 0x36, 0xe0, 0xe7, 0x74, 0x24, 0xae, 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, 0x70, 0x4d, 0x79, 0xa7, ++ 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, 0xba, 0xd3, 0x7f, 0x0c, ++ 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, 0x11, 0xd2, 0xe8, 0xf6, 0x1a, 0x31, ++ 0xb3, 0xcb, 0x52, 0x48, 0x63, 0xa7, 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, 0x84, 0x39, 0xec, 0xcf, ++ 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, 0x89, 0x8b, 0x9b, 0x28, 0x20, 0x73, 0x26, 0xb5, ++ 0x95, 0x14, 0x5c, 0x6a, 0xe6, 0x4b, 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, 0x0a, 0x77, 0xd2, 0x93, ++ 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, 0x5a, 0xd8, 0xee, 0xfd, 0x65, 0xbf, 0xf3, 0xb5, 0xc6, 0xef, ++ 0x62, 0x5c, 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, 0x12, 0xc4, 0x2e, 0x32, 0x80, 0x78, ++ 0xa1, 0x2a, 0x0f, 0x64, 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, 0x15, 0x02, 0x7a, 0x13, ++ 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, 0x46, 0x49, 0xca, 0x47, 0xa5, 0x76, 0x07, 0xc1, 0x53, 0x87, ++ 0x16, 0x9e, 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, 0xa8, 0xc0, 0x06, 0x2c, 0x4f, 0x4b, 0xf7, 0x92, ++ 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, 0x74, 0xb0, 0x9c, 0x93, 0xeb, 0xcc, 0xf0, 0x42, 0xe1, 0x36, ++ 0xe9, 0x28, 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, 0x87, 0x11, 0x14, 0xee, 0x67, 0xe5, ++ 0x5c, 0x42, 0xf5, 0x12, 0x68, 0x59, 0xdc, 0x52, 0xa7, 0x10, 0xe1, 0xb8, 0x21, 0x9f, 0x3b, 0x43, ++ 0x6c, 0x03, 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, 0x39, 0x37, 0x47, 0xd8, 0xe0, 0x9a, 0xf2, 0x8d, ++ 0x6d, 0x6c, 0x57, 0xd5, 0xf7, 0x32, 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, 0x36, 0x86, 0x7b, 0x7f, ++ 0xad, 0xab, 0x31, 0xbb, 0x77, 0xac, 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, 0xb4, 0x92, 0xd9, 0xc1, ++ 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, 0x6d, 0x6e, 0xa6, 0x51, 0xf0, 0x55, ++ 0x61, 0xed, 0x69, 0x0a, 0xff, 0xe2, 0xbb, 0x67, 0x0e, 0x8a, 0x20, 0xc2, 0x97, 0x16, 0xd8, 0xad, ++ 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, 0xfe, 0x14, 0x48, 0x96, 0xb8, 0xc8, 0x45, 0x23, ++ 0xb9, 0xeb, 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, 0xae, 0xb1, 0x94, 0xe1, 0xff, 0x74, ++ 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, 0x68, 0x21, 0xb8, 0x29, 0x2b, 0x05, 0x04, 0x36, 0x74, 0x5e, ++ 0xba, 0x5a, 0x9d, 0x5e, 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, 0x9c, 0xb7, 0x2d, 0xc5, 0xa7, 0xa1, ++ 0xf1, 0xe9, 0xc4, 0xa9, 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, 0x95, 0x0d, 0xe2, 0x82, ++ 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, 0xc2, 0xd2, 0x52, 0x83, 0xc3, 0x1e, 0xf3, 0xe1, ++ 0x85, 0x2b, 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, 0xf4, 0x74, 0x95, 0x68, ++ 0x83, 0x8a, 0xaa, 0xb2, 0x43, 0x61, 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, 0x45, 0x3c, 0x25, 0x01, ++ 0xda, 0xd8, 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, 0x13, 0x77, 0x6c, 0xcf, 0xf6, 0xfe, ++ 0x47, 0x32, 0x67, 0x28, 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, 0x19, 0x58, 0xe6, 0xf1, ++ 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, 0x8e, 0xce, 0x8b, 0x49, 0x8a, 0x78, 0x4a, 0x02, ++ 0xb0, 0x7a, 0xbc, 0x0f, 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, 0x3d, 0x1d, 0xb4, 0x1a, ++ 0x33, 0xf0, 0x16, 0xbd, 0x22, 0xf2, 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, 0x78, 0x21, 0x91, 0x1b, ++ 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, 0xd7, 0x37, 0x53, 0xc9, 0x78, 0xcb, ++ 0x96, 0xa5, 0xb2, 0x2d, 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, 0x90, 0xef, 0xb3, 0x53, 0x8a, 0x46, ++ 0x6f, 0xb2, 0xe3, 0xaf, 0x4a, 0xab, 0xe6, 0x0a, 0xe9, 0xb8, 0x75, 0xde, 0x59, 0xbe, 0xaa, 0x58, ++ 0x6e, 0xdd, 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, 0xda, 0xdc, 0x8f, 0xa2, 0x23, 0xaa, ++ 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, 0xed, 0x2c, 0x73, 0x99, ++ 0xf6, 0x27, 0x81, 0x1a, 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, 0x1f, 0x2f, 0xf2, 0x59, 0xdb, 0x19, ++ 0x50, 0xc3, 0xcb, 0xcd, 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, 0x29, 0xa0, 0x80, 0x0f, 0x98, 0x91, ++ 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, 0xb5, 0x4d, 0x81, 0x3d, 0x5b, 0xa5, 0x90, 0x77, ++ 0x5d, 0x2d, 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, 0xf7, 0x83, 0xb2, 0xb1, ++ 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, 0x6a, 0xe2, 0xb8, 0x8f, ++ 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, 0x70, 0xda, 0xc3, 0xdf, 0x32, 0xb0, 0x0f, 0x21, ++ 0x17, 0xf1, 0xac, 0xe5, 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, 0x99, 0x57, 0x7e, 0x60, ++ 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, 0x9f, 0x7d, 0x61, 0x36, 0x38, 0xc7, 0xdd, 0xb2, ++ 0x97, 0xca, 0xe8, 0x10, 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, 0x65, 0x4f, 0x03, 0xb4, ++ 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, 0x01, 0xbd, 0x03, 0xee, 0x8a, 0xfa, 0xc8, 0x85, 0x3c, 0x84, ++ 0xec, 0x38, 0x49, 0x1d, 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, 0xd1, 0x1b, 0x1c, 0x82, 0x8f, 0x59, ++ 0x58, 0x3d, 0x5e, 0xe6, 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, 0xff, 0xef, 0x5a, 0x0d, ++ 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, 0x31, 0xa2, 0xb0, 0x2d, 0x24, 0x45, 0x52, 0xeb, ++ 0x1f, 0x0f, 0x39, 0xce, 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, 0xe6, 0xb7, 0xbc, 0xfc, ++ 0xfb, 0xc9, 0xe5, 0xf8, 0x13, 0x4d, 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, 0x85, 0xd5, 0xf1, 0x39, ++ 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, 0xef, 0x16, 0xf2, 0x2a, 0x25, 0xf8, 0x1e, 0x99, 0xb5, 0x76, ++ 0x09, 0x91, 0xcf, 0x16, 0x0e, 0x8c, 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, 0xa9, 0xfc, 0x4b, 0x6e, ++ 0x0d, 0xee, 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, 0x37, 0xbd, 0x67, 0x1a, 0x77, 0x8c, 0x2a, 0x20, ++ 0x7a, 0x9d, 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, 0x91, 0xf7, 0x41, 0xf4, 0xaf, 0xd1, 0x05, 0x1f, ++ 0x67, 0x4c, 0x76, 0x84, 0xfb, 0x8a, 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, 0x26, 0x5e, 0x68, 0xc4, ++ 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, 0xb6, 0xca, 0x19, 0x26, 0x1d, 0x8a, 0x76, 0x60, 0x37, 0xd6, ++ 0x87, 0xf5, 0x01, 0x46, 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, 0x5d, 0xcd, 0x9b, 0x4c, 0x44, 0x4f, ++ 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, 0x30, 0xf8, 0x77, 0x7b, 0xdd, 0x87, 0x46, 0x97, ++ 0xe8, 0x47, 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, 0xec, 0x49, 0x28, 0x13, 0xc2, 0xf2, 0xee, 0x17, ++ 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, 0x66, 0xb8, 0x24, 0x6d, ++ 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, 0x54, 0x71, 0xfc, 0xa0, 0x05, 0x3a, 0x89, 0x8f, 0x6d, 0xdb, ++ 0x4e, 0xa3, 0xa8, 0x3e, 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, 0xb0, 0xa4, 0xad, 0x9f, ++ 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, 0x3e, 0xe9, 0x42, 0x96, 0xf9, 0x08, 0xde, 0x70, 0x61, 0x4e, ++ 0xeb, 0xf6, 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, 0x1a, 0x15, 0x7b, 0xd6, 0xb6, 0xc2, ++ 0xf8, 0x78, 0x0b, 0xbf, 0x11, 0x79, 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, 0x3c, 0xf1, 0xa9, 0xec, ++ 0xf3, 0x37, 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, 0x49, 0x25, 0xfa, 0x35, 0x33, 0xa5, ++ 0x3e, 0x1e, 0x72, 0x5f, 0x95, 0x8f, 0x96, 0x0b, 0x79, 0x15, 0xf3, 0x7c, 0x0f, 0xad, 0xbb, 0x3b, ++ 0x3d, 0xaf, 0x9c, 0x18, 0x97, 0xbb, 0x67, 0x35, 0xa9, 0x9a, 0xc1, 0x7a, 0xb6, 0x89, 0xe3, 0xee, ++ 0xbd, 0x94, 0xd8, 0xed, 0xd6, 0xee, 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, 0x4a, 0x91, 0x9e, 0x3a, ++ 0x8a, 0x1b, 0x65, 0xa4, 0x4d, 0xed, 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, 0xec, 0xc0, 0x6e, 0x6f, ++ 0x88, 0xc5, 0xd1, 0xde, 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, 0xa7, 0xd3, 0x83, 0xf8, 0xbf, 0x48, ++ 0xdd, 0x16, 0xeb, 0xda, 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, 0x0b, 0x9b, 0xcf, 0x65, ++ 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, 0x0a, 0x21, 0xba, 0x59, 0xf5, 0x98, 0x88, 0x9e, ++ 0x0b, 0x4f, 0x7b, 0x6c, 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, 0xc6, 0xc4, 0x9a, 0x49, ++ 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, 0x47, 0x27, 0x1f, 0x2e, ++ 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, 0xd8, 0x1a, 0xc5, 0xf3, 0x7d, 0xfb, 0xf8, 0xb3, ++ 0x02, 0xde, 0xb4, 0x7a, 0xbd, 0x99, 0x1f, 0x95, 0x21, 0x4b, 0x9d, 0x04, 0x6f, 0x38, 0xd1, 0x27, ++ 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, 0x8c, 0x7a, 0xc6, 0xe5, 0xbb, 0x3f, 0x62, 0xfa, ++ 0x80, 0x3b, 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, 0xfc, 0x18, 0x7d, 0xd4, ++ 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, 0x02, 0x1b, 0x3a, 0x2f, ++ 0xd0, 0xf8, 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, 0xbf, 0x63, 0x7c, 0x17, 0xe5, 0x45, ++ 0x24, 0x01, 0xba, 0x58, 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, 0xe1, 0x76, 0xef, 0x7b, ++ 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, 0xdc, 0xb1, 0x5f, 0x68, 0x1f, 0x75, 0xa8, 0x80, ++ 0xcb, 0x88, 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, 0x44, 0xd0, 0x38, 0xf7, ++ 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, 0x35, 0x4c, 0x5f, 0x1b, 0x7e, 0x19, 0xca, 0x9e, 0x06, 0xab, ++ 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, 0x5f, 0xd4, 0xe1, 0x2d, 0x82, 0x2b, 0x9d, 0x61, 0x0a, 0x3e, ++ 0xce, 0x98, 0xec, 0xcb, 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, 0x4c, 0xbc, 0xd0, 0x4b, ++ 0x99, 0x95, 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, 0x29, 0xde, 0x6a, 0xf1, 0xab, 0xe7, 0x71, 0x41, ++ 0x10, 0x3f, 0xe9, 0x56, 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, 0xfe, 0x03, 0x47, 0xfb, ++ 0x44, 0x83, 0x89, 0x6f, 0x78, 0x3a, 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, 0xa0, 0x7c, 0xbe, 0x24, ++ 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, 0x66, 0x88, 0xaa, 0x74, 0x4b, 0x80, 0x7e, 0x0c, 0xdf, 0x6a, ++ 0x92, 0xda, 0x19, 0xd9, 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, 0x6d, 0x23, 0xeb, 0x08, ++ 0x3a, 0x61, 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, 0x3b, 0x83, 0x0a, 0x74, 0xd1, 0xdd, 0xda, 0x75, ++ 0x01, 0x6f, 0x5a, 0x3d, 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, 0xd6, 0x1c, 0x89, 0xf2, ++ 0x26, 0xdf, 0x0e, 0x22, 0x85, 0xec, 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, 0x8e, 0x4e, 0x3e, 0x5c, ++ 0x12, 0xe1, 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, 0xff, 0x24, 0x91, 0x3b, 0x96, 0xdc, ++ 0x1a, 0x1f, 0xc8, 0x07, 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, 0xee, 0xdb, 0x54, 0x40, ++ 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, 0x2e, 0x9b, 0x7a, 0x90, 0x01, 0xec, 0x1d, 0xf6, ++ 0x68, 0x7c, 0xa6, 0x1c, 0xf1, 0x6e, 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, 0x3e, 0xea, 0x93, 0xc3, ++ 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, 0xb1, 0x7f, 0x10, 0xe9, 0x2d, 0x29, 0x4b, 0x7d, 0x83, 0xcc, ++ 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, 0x22, 0x78, 0x66, 0x2c, 0x39, 0xc1, 0x2a, 0x04, 0xf4, 0x26, ++ 0x8b, 0x74, 0x3f, 0x99, 0xf2, 0x40, 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, 0x3a, 0xdc, 0xe7, 0x9d, ++ 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, 0x65, 0x8c, 0xaf, 0x85, 0x16, 0x4d, 0xe5, 0x40, 0x9b, 0x25, ++ 0xd6, 0x59, 0x90, 0xb6, 0x25, 0xb4, 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, 0xcd, 0x5f, 0x55, 0x2c, ++ 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, 0x33, 0x44, 0x55, 0x3a, 0xc4, 0x40, 0x3f, 0x06, 0x8e, 0x35, ++ 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, 0xac, 0x14, 0x10, 0xd8, 0x13, 0xbb, ++ 0x08, 0xfe, 0x95, 0x2b, 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, 0x7f, 0xe0, 0xc2, 0x9c, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x4c, 0x7d, 0x1c, 0x44, 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, 0xdf, 0x9c, 0x7c, 0xb8, ++ 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, 0x9d, 0xae, 0x64, 0x98, 0x74, 0x6d, 0x1b, 0x43, 0xdc, 0xde, ++ 0x74, 0xc2, 0x71, 0x95, 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, 0x14, 0xe8, 0x61, 0x79, 0x77, 0xea, ++ }, ++ { /* 10 */ ++ 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, 0xea, 0x5b, 0x67, 0xa2, 0xef, 0xe6, ++ 0x33, 0xae, 0xa5, 0x03, 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, 0x41, 0x06, 0xb8, 0x66, 0xba, 0x67, ++ 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, 0x70, 0x26, 0xcb, 0x2e, 0x94, 0x8b, 0x8e, 0x86, ++ 0x67, 0xde, 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, 0xa8, 0xce, 0x6e, 0xad, ++ 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, 0xee, 0x14, 0x76, 0x58, ++ 0xe7, 0x84, 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, 0x70, 0x3b, 0xb6, 0x0d, 0x1e, 0x59, ++ 0x28, 0xba, 0xf8, 0xd6, 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, 0x3e, 0x50, 0x1b, 0xa3, ++ 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, 0xb0, 0x33, 0x03, 0xec, 0x9d, 0x34, 0x78, 0xa7, ++ 0x6c, 0x50, 0xb7, 0xd2, 0x36, 0x49, 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, 0x5d, 0xd8, 0xc1, 0x96, ++ 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, 0x77, 0x82, 0xdd, 0x34, 0xec, 0x40, 0x9e, 0xca, 0x1f, 0x6b, ++ 0xfa, 0xd5, 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, 0x34, 0xca, 0x6a, 0x37, 0x2c, 0x14, ++ 0xe8, 0xcd, 0xbc, 0x42, 0x74, 0x8d, 0x64, 0x66, 0xb1, 0xfa, 0x65, 0x84, 0x2f, 0x13, 0x53, 0x2d, ++ 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, 0xe2, 0x1d, 0x99, 0x8c, 0x4c, 0x9b, 0x89, 0x18, ++ 0x5a, 0x78, 0x0d, 0xbb, 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, 0x92, 0xb4, 0x40, 0xdd, ++ 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, 0xcd, 0xc2, 0x28, 0xde, 0x2b, 0x58, 0x3b, 0x91, 0xb2, 0x34, ++ 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, 0x2f, 0x4a, 0x95, 0x60, 0x12, 0xc2, ++ 0x8b, 0xd4, 0x2a, 0x2e, 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, 0x55, 0x5c, 0xeb, 0xd5, 0xdf, 0xcf, ++ 0x83, 0x99, 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, 0x72, 0x77, 0x07, 0xfe, 0x33, 0xc5, 0xd8, 0x51, ++ 0xef, 0xc9, 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, 0xbe, 0x47, 0x22, 0x99, 0x6e, 0x1d, 0x19, 0xc7, ++ 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, 0x5d, 0x20, 0x9b, 0x75, 0x82, 0x0c, 0xb3, 0xcc, 0xb7, 0xce, ++ 0x14, 0x5d, 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, 0x8d, 0xd6, 0x1f, 0x28, 0xec, 0xb0, ++ 0x0d, 0xcb, 0xf9, 0x3b, 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, 0xaf, 0x1a, 0x3c, 0xb2, ++ 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, 0xca, 0xc3, 0xb2, 0xd4, 0x77, 0x0a, 0x3b, 0x2c, ++ 0x92, 0x42, 0xaf, 0x7e, 0x49, 0xaa, 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, 0x5b, 0xe7, 0x0f, 0xcd, ++ 0x7a, 0x8f, 0x13, 0x3c, 0x3d, 0x27, 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, 0x74, 0xf4, 0x5c, 0xe0, ++ 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, 0xc8, 0xcc, 0xa1, 0x37, 0xca, 0xcb, 0x5e, 0x26, 0xa6, 0x5a, ++ 0xd8, 0xa0, 0xad, 0x67, 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, 0xba, 0x73, 0x41, 0xef, ++ 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, 0xef, 0xae, 0x3b, 0x8b, 0x2e, 0xaf, 0x5f, 0xcd, 0x3a, 0x1e, ++ 0xb5, 0xb1, 0x76, 0x16, 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, 0xfc, 0xa9, 0x59, 0x1a, ++ 0xdf, 0xa4, 0x6a, 0x88, 0x8e, 0xd2, 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, 0xfb, 0x7d, 0x0b, 0x05, ++ 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, 0x59, 0x47, 0x50, 0x7f, 0x56, 0xb0, 0x76, 0xe1, 0xa7, 0x68, ++ 0x2d, 0x3c, 0xe7, 0xbc, 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, 0x49, 0x5a, 0x20, 0x8f, ++ 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, 0x1b, 0x2a, 0x39, 0xda, 0xe2, 0x7f, 0xf8, 0x83, 0x6c, 0xc9, ++ 0xbf, 0x7e, 0x48, 0xc2, 0xbe, 0xec, 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, 0x12, 0xbd, 0x2f, 0x42, ++ 0x24, 0x30, 0x6d, 0x4e, 0x12, 0x86, 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, 0x8a, 0x48, 0xfe, 0x72, ++ 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, 0x0b, 0x1f, 0x1c, 0x7e, 0xcc, 0x92, 0xe6, 0x87, ++ 0xee, 0x88, 0x17, 0x0e, 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, 0xb9, 0x1c, 0x75, 0x1f, 0xc0, 0xa4, ++ 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, 0xaf, 0x11, 0xd6, 0x2b, 0xf0, 0x3e, 0x52, 0x58, 0xf9, 0xec, ++ 0x1d, 0x51, 0xf6, 0x99, 0xef, 0x59, 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, 0xdc, 0x3a, 0x32, 0x4d, ++ 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, 0xba, 0x40, 0xf5, 0xea, 0xc7, 0x18, 0xa5, 0x5b, 0xad, 0x5f, ++ 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, 0x43, 0x04, 0x2b, 0x46, 0x81, 0xe0, 0x2e, 0xf8, 0xcf, 0x69, ++ 0x8e, 0x52, 0x35, 0x44, 0x47, 0x69, 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, 0x9c, 0xdf, 0xe4, 0xe3, ++ 0xb8, 0x7a, 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, 0x4c, 0x97, 0x14, 0x5a, 0x53, 0xb3, 0x65, 0xa8, ++ 0xe6, 0xc5, 0xf1, 0x5f, 0x73, 0x0d, 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, 0xad, 0x0f, 0xc7, 0x3a, ++ 0xf4, 0xdd, 0x26, 0x78, 0x7a, 0x4e, 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, 0xe8, 0x2b, 0xb8, 0x03, ++ 0x26, 0xb2, 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, 0x57, 0x55, 0xbc, 0x4c, 0x8f, 0xb4, ++ 0x1b, 0x14, 0x5d, 0xd5, 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, 0x86, 0x36, 0xa1, 0xc4, ++ 0x4f, 0x64, 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, 0x87, 0x9d, 0xc0, 0xe6, 0x96, 0x9e, 0x75, 0x0e, ++ 0xd5, 0x6b, 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, 0xaa, 0xb8, 0x15, 0x69, 0x7d, 0x5d, ++ 0xc5, 0xf1, 0x5b, 0xfe, 0x83, 0xcb, 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, 0x66, 0x49, 0x73, 0xa2, ++ 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, 0xfd, 0x6d, 0x71, 0xde, 0x7c, 0xa0, 0x36, 0x85, ++ 0x79, 0x4c, 0xa7, 0x1a, 0xdd, 0x4a, 0x3d, 0x21, 0xe1, 0x85, 0x33, 0x34, 0x59, 0xf2, 0xf4, 0x45, ++ 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, 0xff, 0x3c, 0xbd, 0x0e, 0xdb, 0xee, 0x60, 0x52, ++ 0x16, 0xdf, 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, 0x6b, 0xf4, 0x78, 0x1f, 0x29, 0x2c, 0x9d, 0x76, ++ 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, 0x61, 0x68, 0x38, 0x13, 0x84, 0x17, 0x4a, 0xa4, 0x47, 0x43, ++ 0x15, 0x1c, 0x10, 0xc8, 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, 0x16, 0x53, 0x04, 0x2a, 0x35, 0xd3, ++ 0x9b, 0x4e, 0x25, 0x8c, 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, 0xf1, 0xdb, 0x98, 0xf5, 0xd1, 0x30, ++ 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, 0x97, 0x50, 0x6f, 0xa9, 0xe7, 0xab, 0x80, 0x79, ++ 0x3e, 0x65, 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, 0xf4, 0x23, 0xa1, 0x70, 0x17, 0x7c, 0x86, 0xd5, ++ 0x80, 0x5a, 0x78, 0x59, 0x40, 0xe9, 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, 0x1e, 0xc3, 0x70, 0xf4, ++ 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, 0x66, 0x18, 0xf3, 0xd2, 0xcf, 0x6c, 0x81, 0x4b, ++ 0xd3, 0x2e, 0xff, 0x10, 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, 0x76, 0x20, 0x4f, 0x65, 0xee, 0xd4, ++ 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, 0xd9, 0x96, 0xb7, 0x23, 0x13, 0x56, 0xb3, 0x06, ++ 0x01, 0x41, 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, 0x1b, 0x02, 0xd9, 0x63, ++ 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, 0x28, 0x70, 0xc2, 0x44, 0x04, 0x12, 0xae, 0xf1, 0xa0, 0xf6, ++ 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, 0xf8, 0x1a, 0xcd, 0x79, 0x7a, 0xc3, ++ 0xf6, 0x5f, 0xfe, 0xfd, 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, 0xde, 0x2f, 0xc9, 0xc5, ++ 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, 0x78, 0x90, 0x85, 0xcc, 0x0c, 0x36, 0x31, 0xd0, 0x23, 0xd9, ++ 0x12, 0x18, 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, 0x22, 0x08, 0x51, 0x4e, 0x45, 0x24, 0x7f, 0x39, ++ 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, 0xe0, 0xbc, 0x63, 0x73, 0xce, 0xd9, 0xf0, 0xd7, 0x06, 0xac, ++ 0x09, 0x0c, 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, 0xc9, 0x27, 0xc3, 0x12, 0xde, 0xfd, ++ 0xa6, 0xe8, 0xcd, 0x92, 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, 0xa2, 0x8f, 0xff, 0x40, ++ 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, 0x35, 0xff, 0x0f, 0xda, 0xac, 0xe4, 0x5b, 0x7e, ++ 0xc4, 0xb0, 0x37, 0x5d, 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, 0x7d, 0x4b, 0xaa, 0xc1, ++ 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, 0x7b, 0x74, 0x64, 0x9a, ++ 0x74, 0x87, 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, 0xd3, 0x42, 0xf6, 0xe8, 0xc8, 0xf7, ++ 0xc1, 0x36, 0x28, 0x37, 0x81, 0xe6, 0xb5, 0x52, 0xad, 0x12, 0x27, 0x6e, 0x0a, 0x41, 0x91, 0xed, ++ 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, 0x79, 0x68, 0x1b, 0x80, 0xff, 0x57, 0x3e, 0xd6, ++ 0xb9, 0x3b, 0xe3, 0x8e, 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, 0x48, 0xb1, 0xbc, 0xcb, ++ 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, 0xeb, 0xc9, 0xf0, 0x81, 0xfa, 0x13, 0x9a, 0xe0, 0x2a, 0xb8, ++ 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, 0x3d, 0x0b, 0x3f, 0xbb, 0x87, 0xe7, ++ 0x34, 0xaa, 0x62, 0xec, 0x1a, 0x32, 0x3c, 0x48, 0xa3, 0x66, 0x06, 0x1b, 0xf9, 0x68, 0xf0, 0x8d, ++ 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, 0xf5, 0xed, 0x40, 0xb2, 0xf9, 0xff, 0x07, 0xd4, 0x52, 0x1f, ++ 0x48, 0x60, 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, 0x88, 0x20, 0x87, 0xfb, 0xd7, 0x90, 0x3f, 0xe4, ++ 0x5f, 0xfe, 0x12, 0xd1, 0xce, 0x3b, 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, 0xe5, 0xbe, 0x7b, 0xf1, ++ 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, 0xa9, 0xb0, 0x7c, 0x0d, 0x87, 0xdd, 0x3d, 0x80, ++ 0x69, 0xd6, 0xa8, 0xb8, 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, 0x2a, 0xd2, 0xfa, 0xba, ++ 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, 0x84, 0x05, 0x6a, 0x5e, 0x83, 0xf7, 0x08, 0x53, ++ 0xda, 0x22, 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, 0x8c, 0x77, 0x30, 0x29, ++ 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, 0xf8, 0x2d, 0x9c, 0x4f, 0x73, 0xd7, 0x2b, 0x39, 0x66, 0xfe, ++ 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, 0xe6, 0x6d, 0x56, 0x72, 0xcc, 0x3f, ++ 0xa5, 0x2b, 0x79, 0xb4, 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, 0x8f, 0x89, 0x57, 0xe5, ++ 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, 0x1f, 0x70, 0xe8, 0x52, 0x30, 0x3b, 0xbf, 0x9d, ++ 0xe0, 0x80, 0x5a, 0x13, 0x70, 0xd7, 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, 0xf7, 0x03, 0x54, 0xb3, ++ 0x0c, 0x8a, 0x95, 0x98, 0x06, 0x77, 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, 0xb4, 0x18, 0xe5, 0xd1, ++ 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, 0x36, 0xc3, 0x3d, 0xae, 0x7c, 0x6f, ++ 0x54, 0x70, 0x40, 0xa6, 0x2a, 0x0c, 0x35, 0xef, 0xb4, 0x91, 0x58, 0x8f, 0x10, 0xa8, 0xd4, 0xca, ++ 0x8d, 0x91, 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, 0x6c, 0xce, 0x89, 0xc4, 0xb1, 0xd9, 0x4c, 0x46, ++ 0xd2, 0x6f, 0x93, 0xb3, 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, 0x54, 0x67, 0x37, 0xb7, ++ 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, 0xc5, 0x2d, 0x10, 0xa6, ++ 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, 0xe3, 0xd4, 0xff, 0xe4, 0xfe, 0xbc, 0xa2, 0x92, ++ 0xf9, 0x16, 0xdf, 0x43, 0x9d, 0xa3, 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, 0x47, 0x31, 0x84, 0xb1, ++ 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, 0x7a, 0x42, 0x01, 0xc9, 0x66, 0x68, 0xb2, 0x27, 0x2b, 0x8a, ++ 0xe3, 0x43, 0xee, 0x35, 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, 0xda, 0x05, 0xfc, 0x16, ++ 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, 0x60, 0x76, 0xbd, 0xf9, ++ 0x03, 0xc3, 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, 0x6e, 0x4c, 0x2d, 0x06, 0xa8, 0xa5, ++ 0xa1, 0xec, 0x0a, 0x7d, 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, 0xe3, 0x81, 0xb5, 0xaa, ++ 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, 0x5f, 0xc2, 0x11, 0xad, 0x37, 0xef, 0xed, 0x82, ++ 0xaa, 0x62, 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, 0x16, 0x97, 0x1a, 0x91, ++ 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, 0x7c, 0xf7, 0x4e, 0xc6, 0xd8, 0x8a, 0xf4, 0xfd, 0x33, 0x7f, ++ 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, 0x09, 0xc1, 0x55, 0x8c, 0xab, 0xf3, ++ 0x41, 0x6c, 0x50, 0x6e, 0xc1, 0x0f, 0xa9, 0xa4, 0x99, 0x24, 0x4e, 0xdc, 0x14, 0x82, 0xe1, 0x19, ++ 0x2a, 0x38, 0x20, 0x53, 0x15, 0x06, 0xfb, 0x96, 0x5a, 0xa9, 0x2c, 0xa6, 0x08, 0x54, 0x6a, 0x65, ++ 0x60, 0xda, 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, 0x5e, 0x94, 0xe9, 0xc0, 0x24, 0x47, ++ 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, 0x80, 0x09, 0x6f, 0x9f, ++ 0x94, 0x07, 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, 0xe4, 0x64, 0x01, 0xeb, 0x9c, 0x44, ++ 0xbe, 0x3f, 0x24, 0x61, 0x5f, 0x76, 0xdc, 0xf4, 0xc0, 0x15, 0xc8, 0xc2, 0x09, 0xbf, 0xf6, 0x21, ++ 0x90, 0xc0, 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, 0xd3, 0x40, 0xcd, 0x35, 0x6d, 0xe3, 0x7e, 0x0b, ++ 0x2f, 0xbe, 0x3f, 0x39, 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, 0x7f, 0x5e, 0x51, 0x49, ++ 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, 0xf1, 0x8a, 0x8b, 0xb8, 0x2d, 0x43, 0xc2, 0xf9, 0x42, 0xb9, ++ 0x81, 0x1b, 0x14, 0xfa, 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, 0xf2, 0x37, 0x05, 0xc1, 0xa9, 0x97, ++ 0xa2, 0x2f, 0xbe, 0x5b, 0x51, 0xb5, 0x96, 0x57, 0xfc, 0xa4, 0x17, 0xb6, 0xce, 0x87, 0x1d, 0x0f, ++ 0x76, 0x05, 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, 0x7c, 0x03, 0x26, 0x8b, 0xc0, 0xec, 0xb9, 0x31, ++ 0x4b, 0xa3, 0x6e, 0xba, 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, 0xfa, 0x96, 0x97, 0x41, ++ 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, 0xcc, 0xab, 0x6a, 0x3d, 0x1e, 0x77, 0x9b, 0x0b, 0xb6, 0xfc, ++ 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, 0x8c, 0x82, 0xdc, 0x98, 0x5a, 0x0c, 0x93, 0x89, ++ 0x55, 0x31, 0x2c, 0x05, 0xcb, 0x96, 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, 0x0b, 0xaa, 0x0d, 0xa9, ++ 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, 0x27, 0x63, 0x6c, 0x45, 0x7a, 0x9f, 0xf8, 0xde, ++ 0x1c, 0x10, 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, 0xc7, 0x38, 0xeb, 0x2e, ++ 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, 0x95, 0xec, 0x3a, 0x42, 0x48, 0xc7, 0xed, 0xea, 0x11, 0x94, ++ 0x5b, 0x39, 0x61, 0x18, 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, 0x4d, 0x30, 0x89, 0xb6, 0x99, 0xbe, ++ 0x04, 0xc7, 0x73, 0xc9, 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, 0x29, 0x51, 0x6c, 0x08, 0xe2, 0x4f, ++ 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, 0xf4, 0x84, 0x02, 0x51, 0xcc, 0xd0, 0xa7, 0x4e, 0x56, 0xd7, ++ 0x4d, 0xe6, 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, 0x42, 0xe3, 0x35, 0x2f, 0xa0, 0x9a, 0x04, 0xc8, ++ 0x9c, 0x4a, 0xe2, 0x63, 0x4e, 0x2a, 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, 0xd9, 0xfb, 0x9b, 0xda, ++ 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, 0x8b, 0xcd, 0xe6, 0x40, 0x1c, 0x3d, ++ 0x53, 0x74, 0x87, 0x49, 0xc8, 0x4c, 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, 0x51, 0xa6, 0x9e, 0x20, ++ 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, 0xc9, 0x5b, 0x18, 0x6c, 0x62, 0x63, 0x46, 0x71, ++ 0x95, 0x46, 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, 0x1a, 0xe9, 0x45, 0x27, ++ 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, 0xa9, 0x25, 0xf2, 0xe9, ++ 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, 0x62, 0xd3, 0xfe, 0xf5, 0xdb, 0x66, 0x69, 0xc9, 0x4b, 0xd8, ++ 0x88, 0x17, 0x9e, 0x08, 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, 0xc6, 0xd3, 0x77, 0x6a, ++ 0xb0, 0x37, 0x69, 0x7c, 0x58, 0xf6, 0xf9, 0x44, 0xde, 0xac, 0x46, 0xf8, 0x8b, 0xa3, 0x62, 0x36, ++ 0x22, 0x75, 0xc6, 0x02, 0x11, 0x5c, 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, 0xd0, 0x44, 0x6d, 0xfb, ++ 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, 0xf5, 0x16, 0xaf, 0x3b, ++ 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, 0xf5, 0xc9, 0x36, 0x04, 0x71, 0xc6, ++ 0xc9, 0x7b, 0xce, 0x66, 0x85, 0xbc, 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, 0xd2, 0x51, 0x96, 0x73, ++ 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, 0x1d, 0x21, 0x24, 0x82, 0x97, 0x75, 0xe9, 0x4a, ++ 0xb6, 0x72, 0xc2, 0x30, 0x5b, 0x2c, 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, 0xd1, 0xaf, 0xf1, 0xbf, ++ 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, 0x0e, 0x7b, 0x1a, 0x1b, 0xd5, 0x59, 0x0f, 0x80, 0x38, 0x7a, ++ 0x4e, 0x25, 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, 0x5b, 0x63, 0x8d, 0x9c, 0xac, 0x6d, ++ 0xd7, 0xe9, 0x8c, 0xd9, 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, 0x23, 0x6d, 0x0c, 0x9b, ++ 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, 0x40, 0xbf, 0xed, 0xa0, 0xde, 0x91, 0x0d, 0x95, 0xc3, 0xf2, ++ 0x98, 0x8d, 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, 0x41, 0x7b, 0x9f, 0x97, 0xb5, 0xf3, 0x79, 0x95, ++ 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, 0x63, 0xba, 0xbc, 0x16, 0xee, 0x49, 0xc9, 0x53, 0x4f, 0x10, ++ 0xaf, 0xe4, 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, 0xf7, 0xc0, 0x61, 0x9d, 0x21, 0xbd, ++ 0xa3, 0x6e, 0xd2, 0xf8, 0xb0, 0x2f, 0x31, 0x88, 0x7f, 0x9b, 0x8c, 0x33, 0xd5, 0x85, 0xc4, 0x6c, ++ 0x44, 0xea, 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, 0x53, 0xe7, 0xfc, 0x08, 0x63, 0x88, 0xda, 0x35, ++ 0x84, 0x9d, 0x0b, 0x90, 0x42, 0xc4, 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, 0x72, 0xcb, 0x92, 0xbb, ++ 0x9e, 0xc8, 0x3a, 0xe6, 0x4f, 0xdd, 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, 0xef, 0xff, 0xea, 0x1c, ++ 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, 0xc2, 0xef, 0xc1, 0x07, 0x25, 0x75, ++ 0xcd, 0xbc, 0xbd, 0xaf, 0x87, 0x91, 0x1d, 0x9f, 0x76, 0xd5, 0x5c, 0x9d, 0xbe, 0x59, 0x74, 0x3c, ++ 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, 0x10, 0xcd, 0xaf, 0x4f, 0x71, 0x35, 0xf5, 0x77, ++ 0x45, 0xab, 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, 0x67, 0x8d, 0x78, 0x8a, 0x03, 0x56, ++ 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, 0x2d, 0x7e, 0x4b, 0xad, 0xe5, 0x81, 0xcb, 0x46, 0xb4, 0x98, ++ 0xc6, 0x32, 0xef, 0xd8, 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, 0x60, 0x73, 0x4b, 0x4f, 0xdb, 0x07, ++ 0x3d, 0xa6, 0xe8, 0x1e, 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, 0x3a, 0x7a, 0x2e, 0x70, ++ 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, 0xe8, 0xcb, 0xe3, 0x9a, 0x32, 0x2e, 0x44, 0x15, ++ 0xeb, 0x0e, 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, 0x02, 0x15, 0xfb, 0x88, ++ 0x2e, 0xff, 0x53, 0x9a, 0x17, 0x2b, 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, 0x64, 0x5c, 0x88, 0x2a, ++ 0xcb, 0xf9, 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, 0x80, 0x05, 0xe4, 0x55, 0xe7, 0xb5, ++ 0xb2, 0xb5, 0xb1, 0xf9, 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, 0xbd, 0xa7, 0x13, 0xf0, ++ 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, 0x26, 0xaa, 0x0a, 0x2d, 0xc8, 0xb8, 0xd3, 0x54, ++ 0x4a, 0xe2, 0x02, 0x19, 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, 0xe1, 0x94, 0x4e, 0x22, ++ 0x64, 0x1d, 0x51, 0x83, 0x32, 0x13, 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, 0x85, 0xc8, 0xc6, 0x08, ++ 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, 0x61, 0x96, 0x81, 0xe2, 0xf3, 0xdb, ++ 0x35, 0xeb, 0x0e, 0x4f, 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, 0x9d, 0x9e, 0xe2, 0x6a, 0x29, 0xee, ++ 0xc7, 0x73, 0x83, 0x7b, 0x82, 0x3c, 0xe1, 0xd5, 0x21, 0x90, 0xfb, 0xf6, 0x50, 0x4d, 0x02, 0x64, ++ 0x07, 0x04, 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, 0x47, 0x1d, 0x41, 0x0e, 0x4a, 0xea, ++ 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, 0xbf, 0xb2, 0xe8, 0x78, ++ 0x38, 0x20, 0xf7, 0x74, 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, 0x7d, 0xe8, 0x4d, 0x70, 0x15, 0x5c, ++ 0xea, 0x4f, 0x64, 0xc7, 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, 0x90, 0x4d, 0x19, 0x17, 0x22, 0xeb, ++ 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, 0xe5, 0x27, 0x68, 0x57, 0xd4, 0x6e, 0x58, 0x28, ++ 0x63, 0x19, 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, 0xc4, 0xc6, 0x8c, 0xe2, ++ 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, 0xab, 0x30, 0x09, 0x61, ++ 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, 0x36, 0x67, 0xa5, 0x62, 0xb9, 0x8d, 0x26, 0x23, ++ 0x58, 0xfa, 0xd5, 0x3e, 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, 0xa4, 0xb0, 0x31, 0x1b, ++ 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, 0x64, 0x49, 0x3f, 0x02, 0x68, 0x22, 0xd7, 0x9c, ++ 0xf5, 0x9c, 0x4a, 0xdb, 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, 0xf3, 0x29, 0x61, 0x60, ++ 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, 0x26, 0x0b, 0xd8, 0x5f, 0xd1, 0x4b, 0xa1, 0x71, 0x98, 0x8c, ++ 0xe9, 0x8c, 0xd0, 0xe1, 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, 0xfe, 0x01, 0x34, 0x11, 0x8a, 0x4e, ++ 0x25, 0x71, 0x01, 0xed, 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, 0x91, 0x4a, 0x27, 0x11, ++ 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, 0x56, 0x8c, 0xc1, 0x03, 0x5c, 0x33, 0x5d, 0xd2, ++ 0x97, 0xc4, 0xb0, 0x14, 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, 0x2c, 0xed, 0x34, 0xe1, ++ 0xb1, 0x76, 0x05, 0xdf, 0xb9, 0x6c, 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, 0x90, 0xa1, 0xbb, 0x55, ++ 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, 0x34, 0x86, 0xf6, 0x72, 0x6d, 0xa0, 0xb0, 0x32, 0xd0, 0x02, ++ 0x0f, 0x49, 0x21, 0xbe, 0xe6, 0x1a, 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, 0x99, 0x1e, 0x4d, 0x74, ++ 0x89, 0x56, 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, 0x25, 0x32, 0xa0, 0x95, 0xdd, 0xd1, 0xae, 0x09, ++ 0xdc, 0x67, 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, 0x12, 0x9c, 0x63, 0x9f, 0xd6, 0x7b, 0xa3, 0xa0, ++ 0x08, 0x4d, 0xe6, 0x51, 0x04, 0x5a, 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, 0xd8, 0x10, 0x07, 0x9e, ++ 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, 0x50, 0xe0, 0x47, 0x88, 0x08, 0x24, 0x9f, 0x21, 0x83, 0x2f, ++ 0xa8, 0xe0, 0x80, 0x8f, 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, 0xb0, 0xdd, 0x20, 0x93, 0x6b, 0x57, ++ 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, 0x1e, 0xb9, 0x8e, 0x3a, 0x82, 0x1c, 0x94, 0x17, ++ 0x6f, 0x93, 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, 0x8a, 0x71, 0x4b, 0x2b, 0x70, 0xde, 0x69, 0x33, ++ 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, 0x35, 0xfa, 0x16, 0x0a, ++ 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, 0x29, 0x19, 0x80, 0xa7, 0x31, 0x3d, 0x0e, 0x6b, 0xa4, 0x3e, ++ 0xbd, 0xfc, 0x90, 0x47, 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, 0x24, 0xb9, 0x5e, 0x84, ++ 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, 0x48, 0x71, 0xb8, 0xb4, 0xb5, 0x2a, 0x44, 0xcf, 0xe3, 0x7d, ++ 0xec, 0x0a, 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, 0x4c, 0xd5, 0x43, 0x1b, 0xb1, 0x62, ++ 0x32, 0xef, 0xc9, 0xa0, 0x19, 0xe8, 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, 0xa3, 0x64, 0x63, 0x04, ++ 0x7e, 0x48, 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, 0x74, 0x29, 0x18, 0xfc, 0xbe, 0xaf, ++ 0xed, 0x4b, 0xa3, 0x28, 0x97, 0x3a, 0x1a, 0x43, 0x7b, 0x39, 0xd7, 0x50, 0x58, 0x19, 0x68, 0x01, ++ 0x6e, 0xd2, 0x6f, 0x57, 0x37, 0xbe, 0x2c, 0x17, 0x09, 0x4e, 0xd0, 0xae, 0x6b, 0xdc, 0xb0, 0x50, ++ 0xc3, 0xb4, 0xf0, 0xb2, 0x80, 0x11, 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, 0x3c, 0x45, 0xe0, 0x2b, ++ 0x21, 0xb6, 0x72, 0x24, 0xf1, 0x31, 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, 0xfd, 0x42, 0xc5, 0x5e, ++ 0x62, 0x58, 0xfa, 0xcf, 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, 0xab, 0x5d, 0xdf, 0xc4, 0x55, 0x81, ++ 0xce, 0x7f, 0x09, 0x89, 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, 0x93, 0x5f, 0xdc, 0x99, ++ 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, 0x95, 0x01, 0xa3, 0x79, 0x40, 0xe5, 0xd6, 0xae, ++ 0x4c, 0xa7, 0xa9, 0x55, 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, 0xbb, 0x98, 0xdd, 0xab, ++ 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, 0xe0, 0x7f, 0xd2, 0x66, ++ 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, 0x77, 0x1c, 0x3a, 0xf5, 0x0c, 0x7e, 0x5f, 0xb6, ++ 0x43, 0xee, 0x88, 0xeb, 0xc0, 0xf8, 0x24, 0xd9, 0x5c, 0x5a, 0xbb, 0x15, 0x22, 0x86, 0x90, 0xdf, ++ 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, 0xb6, 0xc0, 0x94, 0x5f, 0xb7, 0xe6, 0x82, 0x1d, ++ 0xad, 0x66, 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, 0x57, 0x99, 0x50, 0x7b, ++ 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, 0x84, 0x23, 0x5a, 0x4c, ++ 0x47, 0x29, 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, 0x92, 0x44, 0x4e, 0x8e, 0x72, 0x90, ++ 0x3c, 0xe7, 0x84, 0xbd, 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, 0x21, 0x78, 0xf7, 0x13, ++ 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, 0x94, 0xc8, 0xc5, 0x11, 0xf2, 0xc2, 0xfd, 0x24, ++ 0x56, 0xf2, 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, 0x26, 0xac, 0xa5, 0x0c, ++ 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, 0xd1, 0x34, 0x1c, 0xe8, 0x42, 0xea, 0x25, 0x52, 0xc2, 0xc0, ++ 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, 0xb0, 0x5c, 0x24, 0xfb, 0xc6, 0xfd, 0x6f, 0xf6, 0x85, 0x83, ++ 0x10, 0x9a, 0x0f, 0xa2, 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, 0x73, 0x20, 0x0e, 0xff, ++ 0xff, 0x53, 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, 0x59, 0x31, 0x86, 0x1e, 0x1d, 0x3d, 0x17, 0x38, ++ 0x5d, 0x7c, 0xca, 0x54, 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, 0xd3, 0xba, 0x0a, 0x37, ++ 0x31, 0x2c, 0x7d, 0x86, 0xf9, 0x85, 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, 0x8e, 0x62, 0xcb, 0xa1, ++ 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, 0x0a, 0x1c, 0xd1, 0x11, 0x01, 0xe5, 0xca, 0xad, 0x28, 0xdc, ++ 0xb3, 0xf4, 0xdd, 0x5a, 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, 0xa6, 0xa5, 0xca, 0x93, ++ 0x6b, 0x54, 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, 0xc3, 0x8d, 0x62, 0x7a, 0x1c, 0xd6, 0x8b, 0x7c, ++ 0xc0, 0x77, 0x44, 0x94, 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, 0x11, 0x43, 0x48, 0x8e, ++ 0x7f, 0x09, 0x0c, 0x56, 0xde, 0x90, 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, 0x03, 0xfe, 0x67, 0xcc, ++ 0x1e, 0x92, 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, 0x2a, 0xbd, 0xf1, 0x3c, 0x9a, 0xe8, ++ 0xd1, 0xac, 0x27, 0x95, 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, 0x79, 0x61, 0x9f, 0x12, ++ 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, 0x62, 0xba, 0xa8, 0xb1, 0x42, 0xf0, 0x2d, 0x26, ++ 0xc2, 0xf5, 0x9c, 0x11, 0x61, 0x8b, 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, 0x27, 0x47, 0x39, 0x48, ++ 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, 0xa2, 0xd1, 0x0a, 0xd6, 0x7a, 0x16, 0x7e, 0xb5, 0xcd, 0x0d, ++ 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, 0x06, 0xb5, 0x4f, 0x0f, 0xbe, 0xe2, 0x46, 0xda, 0x18, 0xf5, ++ 0xe1, 0xc1, 0x36, 0xb0, 0x91, 0x4d, 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, 0xec, 0x01, 0x8d, 0xd0, ++ 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, 0x60, 0x01, 0x7a, 0xf0, 0xb1, 0x38, 0xea, 0x3e, 0x43, 0x8b, ++ 0x82, 0xd8, 0xa0, 0xdc, 0x41, 0x1e, 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, 0x28, 0xc7, 0x01, 0x32, ++ 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, 0x05, 0x0e, 0x89, 0xe9, 0xe1, 0x93, 0x65, 0xb7, 0x14, 0x6e, ++ 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, 0x12, 0x41, 0xaa, 0xdb, 0x95, 0x25, ++ 0xcf, 0x3e, 0x65, 0x2a, 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, 0x88, 0x5d, 0x05, 0xfa, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfe, 0x12, 0x18, 0xac, 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, 0x06, 0x3f, 0xce, 0x5b, ++ 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, 0x83, 0x06, 0xdf, 0x65, 0x20, 0x90, 0x39, 0x84, 0x49, 0xbc, ++ 0xd6, 0xa8, 0xe0, 0x7a, 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, 0xc4, 0xf4, 0x38, 0x6f, 0xd5, 0xf8, ++ }, ++ { /* 11 */ ++ 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, 0x25, 0x47, 0x72, 0xa8, 0x1d, 0x31, ++ 0x69, 0xb6, 0x74, 0x38, 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, 0xaa, 0xe9, 0x8a, 0x53, 0xb7, 0xc0, ++ 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, 0x55, 0xac, 0x5e, 0x8f, 0x3d, 0x01, 0xdf, 0x89, ++ 0xba, 0xbf, 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, 0xac, 0x20, 0xdc, 0x8e, ++ 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, 0xa8, 0x75, 0xec, 0xfe, ++ 0x87, 0x68, 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, 0x17, 0xcf, 0x05, 0xd1, 0x3c, 0x6c, ++ 0x58, 0xc5, 0x9e, 0x6a, 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, 0xe5, 0x17, 0x36, 0x7e, ++ 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, 0x06, 0xc5, 0x5c, 0xba, 0x14, 0xc2, 0xf0, 0x73, ++ 0xc4, 0x0f, 0x2e, 0x8b, 0xcf, 0x44, 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, 0x7f, 0xd3, 0x41, 0xbd, ++ 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, 0x82, 0xb0, 0x1b, 0x11, 0x9d, 0xf0, 0x5a, 0xef, 0x3e, 0xd7, ++ 0x05, 0x7b, 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, 0x59, 0x2b, 0xb3, 0x07, 0x58, 0x39, ++ 0x9a, 0x98, 0x09, 0x99, 0xf6, 0x6f, 0x66, 0xa8, 0xca, 0x96, 0x35, 0x2c, 0xf9, 0x7f, 0xa6, 0xed, ++ 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, 0xf1, 0x3d, 0x6e, 0x32, 0x63, 0xbb, 0xd1, 0x2e, ++ 0xa6, 0xe9, 0x39, 0x2f, 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, 0xa1, 0x5b, 0x80, 0x02, ++ 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, 0xc2, 0x8a, 0x56, 0x2f, 0x70, 0xd2, 0x37, 0x60, 0xa7, 0x51, ++ 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, 0xa0, 0x08, 0x07, 0x1a, 0x24, 0x54, ++ 0x43, 0x67, 0x82, 0x75, 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, 0xbc, 0xdd, 0x7a, 0x02, 0x7d, 0xd1, ++ 0x85, 0xe7, 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, 0x0e, 0x0a, 0x8c, 0x60, 0x24, 0xb8, 0x73, 0x76, ++ 0x41, 0xe8, 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, 0x44, 0x31, 0x27, 0x72, 0x5b, 0x6b, 0x32, 0xcb, ++ 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, 0x20, 0x1d, 0xc7, 0x1f, 0x97, 0x11, 0xd7, 0xa6, 0xad, 0x43, ++ 0x2c, 0x83, 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, 0x78, 0x06, 0x93, 0xea, 0x1b, 0x3f, ++ 0xcd, 0xd0, 0x9b, 0x3f, 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, 0x0a, 0x61, 0x78, 0xd8, ++ 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, 0xa7, 0x12, 0x1e, 0xe0, 0x54, 0xdb, 0x76, 0x7f, ++ 0xa2, 0x34, 0x56, 0x7f, 0xcc, 0xb3, 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, 0xe3, 0x89, 0x1e, 0x36, ++ 0x38, 0xac, 0x5f, 0xe6, 0x3a, 0xdc, 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, 0x1a, 0xf6, 0xb8, 0xdb, ++ 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, 0xcc, 0x93, 0x57, 0xef, 0x6a, 0x58, 0x31, 0xfe, 0x8f, 0x19, ++ 0x4b, 0x1e, 0x5c, 0xd5, 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, 0xfe, 0x65, 0x82, 0xb9, ++ 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, 0xae, 0x70, 0x5c, 0xa3, 0x94, 0xdf, 0x0b, 0xe5, 0x74, 0xc4, ++ 0xe7, 0x01, 0x6d, 0x72, 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, 0xfa, 0x30, 0xb2, 0xc9, ++ 0x90, 0x6e, 0x01, 0x11, 0x9c, 0x8d, 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, 0x5c, 0x71, 0x16, 0x9f, ++ 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, 0x47, 0xd7, 0xac, 0x5e, 0xe0, 0x67, 0x6e, 0xc0, 0x8d, 0xa2, ++ 0x53, 0x95, 0xfd, 0xf6, 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, 0xb1, 0xcc, 0x40, 0x01, ++ 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, 0x2a, 0x4f, 0x07, 0x05, 0x46, 0x30, 0x12, 0x5c, 0xd8, 0x3b, ++ 0xf1, 0xa1, 0xab, 0x89, 0x09, 0x80, 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, 0x52, 0x45, 0x5e, 0x37, ++ 0xfd, 0x05, 0x1a, 0x79, 0x45, 0x3c, 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, 0x94, 0xf0, 0x3f, 0x6b, ++ 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, 0x38, 0x28, 0x75, 0x43, 0x90, 0xa5, 0x0f, 0x1b, ++ 0x29, 0xf8, 0x4b, 0x71, 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, 0x21, 0x2d, 0x20, 0xed, 0x43, 0x06, ++ 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, 0x11, 0x8d, 0x23, 0x39, 0xe8, 0xb3, 0xca, 0x4a, 0x31, 0xcc, ++ 0x82, 0x13, 0xa8, 0xba, 0x6e, 0xd4, 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, 0xb6, 0xd6, 0x64, 0x55, ++ 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, 0x40, 0x3a, 0x4d, 0x3e, 0xed, 0x22, 0x6d, 0x8f, 0x99, 0x86, ++ 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, 0x04, 0x4b, 0xc1, 0xda, 0xcb, 0xab, 0xc3, 0x64, 0x5d, 0x30, ++ 0x48, 0x37, 0xe1, 0xe9, 0x4e, 0xa7, 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, 0x2e, 0xd9, 0x0b, 0xae, ++ 0x2a, 0xd1, 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, 0x28, 0x75, 0x16, 0x34, 0xf0, 0x51, 0xca, 0x11, ++ 0xef, 0x78, 0xb3, 0xd2, 0xb7, 0x65, 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, 0x7e, 0x57, 0x4d, 0xa1, ++ 0x70, 0x9b, 0xbe, 0x0f, 0x74, 0x7b, 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, 0x34, 0x2f, 0xb3, 0x75, ++ 0x2d, 0x25, 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, 0xd4, 0xb0, 0x62, 0x3f, 0xdd, 0x32, ++ 0x31, 0x73, 0xea, 0x52, 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, 0x6f, 0x44, 0x81, 0xbe, ++ 0xe2, 0x7a, 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, 0x43, 0x34, 0x61, 0x42, 0x49, 0x37, 0xea, 0xf0, ++ 0x86, 0xce, 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, 0xbb, 0x79, 0xf4, 0x04, 0xfa, 0x61, ++ 0xc9, 0x0d, 0xf4, 0x6f, 0x33, 0x5c, 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, 0x48, 0xb3, 0xe6, 0xec, ++ 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, 0xe2, 0xe3, 0x23, 0x18, 0x09, 0x2e, 0x6c, 0xfc, ++ 0x80, 0x9c, 0x7e, 0x92, 0xcd, 0x5f, 0x21, 0x7f, 0x66, 0xc8, 0xd5, 0x4b, 0x97, 0xbf, 0x2b, 0x4f, ++ 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, 0xb9, 0x45, 0xf1, 0xf7, 0x10, 0x97, 0xc0, 0x03, ++ 0xfc, 0xa3, 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, 0xf0, 0xfd, 0x74, 0xb8, 0x65, 0x25, 0xf9, 0x66, ++ 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, 0x68, 0xb1, 0xcb, 0x56, 0x2f, 0xa6, 0xff, 0xe1, 0x8e, 0xa5, ++ 0x44, 0x93, 0x50, 0x19, 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, 0x7e, 0x59, 0xe8, 0x6c, 0x6a, 0xf2, ++ 0x0c, 0xa4, 0xb1, 0xf0, 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, 0xdc, 0x64, 0xc6, 0xb5, 0x61, 0x5c, ++ 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, 0xde, 0x4d, 0x3e, 0x36, 0x81, 0xb6, 0xc3, 0x04, ++ 0xa4, 0x66, 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, 0x81, 0x6d, 0x84, 0xb4, 0x80, 0x32, 0xcf, 0x18, ++ 0x3d, 0xd7, 0x5b, 0xa2, 0x0f, 0xad, 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, 0xa9, 0xf1, 0xe0, 0xe2, ++ 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, 0x25, 0xfc, 0xb4, 0x09, 0xde, 0x88, 0xc1, 0xbf, ++ 0x35, 0xae, 0x85, 0x02, 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, 0xaf, 0x78, 0x2d, 0x96, 0x1f, 0x8a, ++ 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, 0xad, 0x9e, 0xfa, 0xed, 0x68, 0x5e, 0xa5, 0xea, ++ 0x68, 0x10, 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, 0x7b, 0x86, 0x71, 0xcd, ++ 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, 0x70, 0xc8, 0x08, 0xcf, 0xd0, 0xda, 0x30, 0x7a, 0x83, 0x05, ++ 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, 0x8b, 0xc4, 0xaa, 0xbe, 0xf4, 0xc6, ++ 0xa0, 0xbb, 0x80, 0x57, 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, 0xc2, 0xe0, 0x51, 0x2c, ++ 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, 0x90, 0x9b, 0x18, 0x92, 0xb3, 0xad, 0x50, 0x8e, 0x46, 0x0f, ++ 0x9f, 0xe3, 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, 0xa2, 0x54, 0x6c, 0x07, 0x4a, 0x78, 0xfe, 0xd4, ++ 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, 0xbc, 0x5b, 0x5f, 0x20, 0xba, 0x82, 0x01, 0x84, 0x0c, 0x1c, ++ 0xae, 0x90, 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, 0x36, 0xe2, 0x25, 0x3c, 0x7f, 0x6a, ++ 0x10, 0xf2, 0x7f, 0x83, 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, 0xcb, 0xce, 0x3d, 0xd0, ++ 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, 0x1e, 0x57, 0xef, 0x17, 0x44, 0x4c, 0xb6, 0x7c, ++ 0xa1, 0x1d, 0xeb, 0x43, 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, 0x33, 0x35, 0x97, 0x21, ++ 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, 0xaf, 0x6f, 0xc8, 0xaa, ++ 0x4d, 0x4c, 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, 0xfb, 0x16, 0x9d, 0xde, 0x53, 0x97, ++ 0xaa, 0x4d, 0x88, 0xdf, 0x05, 0xda, 0x52, 0x11, 0x4e, 0xbd, 0xc3, 0x7f, 0x67, 0xee, 0xe1, 0x5e, ++ 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, 0x36, 0x22, 0xf9, 0x23, 0xb4, 0x1d, 0x7c, 0x6d, ++ 0x42, 0xc1, 0xe9, 0x61, 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, 0x8b, 0xd7, 0xbb, 0xdc, ++ 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, 0xc9, 0xba, 0x37, 0xe2, 0xe3, 0xa9, 0xb2, 0x83, 0x54, 0x25, ++ 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, 0x0e, 0x8b, 0xdf, 0x0c, 0xcd, 0xa3, ++ 0xb2, 0xc6, 0x29, 0xfc, 0x9d, 0x61, 0x48, 0xac, 0x0c, 0x49, 0xb8, 0xb7, 0x28, 0x47, 0x23, 0xe6, ++ 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, 0xed, 0xec, 0x31, 0x27, 0xbf, 0x13, 0xa6, 0x41, 0xa4, 0x56, ++ 0x39, 0x0a, 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, 0xcd, 0x93, 0x73, 0x1c, 0xeb, 0x23, 0x7e, 0xd6, ++ 0xad, 0xb9, 0x5a, 0xb3, 0x93, 0x20, 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, 0xf5, 0x80, 0xf6, 0x7d, ++ 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, 0xf8, 0x32, 0xa4, 0x62, 0x55, 0x5f, 0x7a, 0x63, ++ 0xcf, 0x5f, 0x4d, 0x17, 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, 0x2b, 0x08, 0x37, 0xc2, ++ 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, 0xd4, 0xc1, 0xda, 0x3b, 0xbd, 0x33, 0x10, 0x91, ++ 0x9b, 0x3e, 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, 0x08, 0xaa, 0x60, 0xe0, ++ 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, 0x2d, 0xa2, 0xe6, 0x65, 0x4b, 0x75, 0x11, 0x13, 0xcc, 0x1f, ++ 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, 0x96, 0xea, 0x22, 0x26, 0x5b, 0x3e, ++ 0xa8, 0xc2, 0x5e, 0xf7, 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, 0x46, 0x87, 0xae, 0x44, ++ 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, 0x13, 0xde, 0x4d, 0x2a, 0x6a, 0x95, 0xbd, 0xd2, ++ 0x5c, 0x18, 0xf1, 0x3a, 0x9a, 0xa0, 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, 0xa7, 0xc5, 0xa8, 0x4a, ++ 0xa5, 0xc0, 0x84, 0x13, 0x5a, 0x49, 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, 0x71, 0xe7, 0x09, 0x15, ++ 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, 0x31, 0x46, 0xab, 0x3a, 0xf8, 0xda, ++ 0xd3, 0x09, 0x83, 0x64, 0x08, 0x6c, 0xef, 0x28, 0xb0, 0x4a, 0x3b, 0xa7, 0x26, 0x73, 0x6b, 0x4e, ++ 0xf0, 0x07, 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, 0xd1, 0x87, 0xa8, 0xdc, 0xa3, 0x90, 0x98, 0x3a, ++ 0x5d, 0xbe, 0x9a, 0x2e, 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, 0x56, 0x10, 0x6e, 0x47, ++ 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, 0xb9, 0x66, 0x20, 0xe1, ++ 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, 0x3d, 0x6e, 0x07, 0xa4, 0x8e, 0x06, 0x87, 0xb0, ++ 0xbd, 0x4b, 0x25, 0x30, 0xc2, 0xf2, 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, 0x3e, 0x4e, 0xcb, 0xad, ++ 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, 0x42, 0xfe, 0xcc, 0x53, 0x69, 0x96, 0xed, 0xbd, 0x56, 0x9e, ++ 0xe4, 0x28, 0xd0, 0x4e, 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, 0x2a, 0x8c, 0x3b, 0xde, ++ 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, 0xd4, 0xe9, 0xb9, 0x67, ++ 0xb8, 0x30, 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, 0x0a, 0xe1, 0x8d, 0x49, 0x93, 0x94, ++ 0xcb, 0x82, 0x22, 0x47, 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, 0x69, 0xda, 0xa9, 0xf6, ++ 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, 0x22, 0xf9, 0xf2, 0x39, 0xcc, 0xd4, 0x19, 0x84, ++ 0xb5, 0x32, 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, 0xba, 0x29, 0x34, 0xc5, ++ 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, 0xf7, 0x51, 0x73, 0xd3, 0xc4, 0xdb, 0xe9, 0xe8, 0x66, 0xee, ++ 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, 0x57, 0xa0, 0x6c, 0x0b, 0x95, 0x9a, ++ 0x97, 0x9a, 0xd3, 0x7d, 0x0a, 0x77, 0xa4, 0x22, 0x9c, 0xb9, 0x45, 0xfe, 0xce, 0x1f, 0x01, 0xbc, ++ 0x88, 0xe5, 0xa0, 0x32, 0x04, 0x36, 0x96, 0x14, 0x58, 0x25, 0xfc, 0xb2, 0x13, 0xd8, 0xd4, 0x27, ++ 0x61, 0xcf, 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, 0x83, 0x10, 0x0e, 0x34, 0x48, 0xa8, ++ 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, 0xf3, 0x1e, 0xde, 0x35, ++ 0x11, 0x54, 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, 0xfe, 0x87, 0x3a, 0x1b, 0xfb, 0xdd, ++ 0x99, 0xb1, 0xb4, 0xa5, 0xe5, 0x40, 0xf4, 0xf7, 0x53, 0x69, 0x02, 0x35, 0x29, 0xc3, 0x2f, 0xfa, ++ 0x72, 0x14, 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, 0x59, 0xe5, 0xe6, 0x38, 0x15, 0x46, 0xfc, 0x6f, ++ 0x83, 0xb5, 0xc3, 0xae, 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, 0x47, 0x03, 0xa2, 0x58, ++ 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, 0x8a, 0x26, 0x5a, 0x66, 0xc8, 0x65, 0x1f, 0x27, 0x84, 0xb7, ++ 0x55, 0xc7, 0x44, 0x8e, 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, 0x80, 0xde, 0xd2, 0x77, 0x91, 0x2f, ++ 0x73, 0xb2, 0x03, 0x33, 0x67, 0x54, 0x57, 0x38, 0x2e, 0xb0, 0x4a, 0x8e, 0xe4, 0x93, 0x3a, 0x62, ++ 0x9d, 0x6c, 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, 0x4c, 0xfe, 0xf7, 0xa8, 0x6b, 0x11, 0xb1, 0xce, ++ 0x81, 0x3a, 0x15, 0x86, 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, 0x66, 0x6a, 0xed, 0x42, ++ 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, 0xab, 0x59, 0x3c, 0xae, 0x1d, 0x2e, 0x88, 0x98, 0xaf, 0xf8, ++ 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, 0x7b, 0x1c, 0x14, 0x01, 0xd9, 0x92, 0xe5, 0xeb, ++ 0xbb, 0x19, 0x9c, 0x48, 0xe4, 0xac, 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, 0x5d, 0xf5, 0x1a, 0x83, ++ 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, 0xd8, 0x88, 0x62, 0x8c, 0x95, 0x74, 0x33, 0x77, ++ 0xea, 0x03, 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, 0xcd, 0x50, 0x15, 0x98, ++ 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, 0xec, 0x8e, 0x90, 0xf0, 0xfd, 0x49, 0xe6, 0x58, 0x22, 0x5a, ++ 0xce, 0xf9, 0x26, 0x03, 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, 0x19, 0x44, 0xda, 0xdd, 0xf1, 0xcf, ++ 0x63, 0x40, 0x7c, 0xb0, 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, 0x18, 0xbf, 0x2f, 0x5d, 0x07, 0xb2, ++ 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, 0x84, 0x3f, 0x5b, 0xa6, 0xd2, 0xef, 0x19, 0xb9, 0xac, 0xff, ++ 0x32, 0x5a, 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, 0x6a, 0x81, 0x6d, 0xfc, 0xbf, 0xf8, 0x08, 0xa9, ++ 0xd7, 0xd4, 0xec, 0x34, 0x8d, 0xb9, 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, 0x64, 0xa1, 0xf5, 0x7a, ++ 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, 0xc0, 0xb1, 0xbb, 0xad, 0x38, 0xd9, ++ 0x08, 0x79, 0xde, 0xa0, 0xc9, 0x69, 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, 0x84, 0x67, 0xff, 0x68, ++ 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, 0x30, 0xe7, 0xa5, 0x99, 0xa0, 0xdf, 0x8c, 0x1e, ++ 0x79, 0x44, 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, 0x41, 0x9d, 0x8a, 0x10, ++ 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, 0x96, 0x3b, 0x27, 0x53, ++ 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, 0xd3, 0x07, 0x75, 0x16, 0x98, 0x61, 0xfd, 0x2a, 0x96, 0x9d, ++ 0xfb, 0x57, 0xa3, 0x01, 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, 0xf7, 0x4b, 0xee, 0x45, ++ 0xec, 0x51, 0x0e, 0xee, 0xa4, 0x4a, 0x44, 0x71, 0x8c, 0xe4, 0x26, 0x89, 0xae, 0xeb, 0xc4, 0xb6, ++ 0x4e, 0x65, 0x58, 0x91, 0x68, 0xf9, 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, 0x4d, 0x62, 0xda, 0x80, ++ 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, 0xd3, 0xf3, 0x9d, 0x33, ++ 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, 0x0c, 0xbe, 0xf6, 0xcf, 0xe2, 0x59, ++ 0x6c, 0xcd, 0x70, 0x7c, 0x69, 0x15, 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, 0x39, 0x54, 0xef, 0xf9, ++ 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, 0x48, 0x78, 0x9f, 0xc5, 0x73, 0x2c, 0x11, 0x2d, ++ 0x5f, 0x31, 0x4c, 0x06, 0x89, 0x8f, 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, 0x77, 0x79, 0x21, 0x5d, ++ 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, 0x7b, 0xf8, 0x69, 0x02, 0x43, 0xa1, 0xb5, 0x99, 0x70, 0x71, ++ 0x8a, 0x6a, 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, 0x67, 0x1d, 0x32, 0xb1, 0x9b, 0x3d, ++ 0x56, 0xee, 0xf9, 0xb2, 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, 0x02, 0xcb, 0x18, 0x38, ++ 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, 0xbf, 0xfd, 0x7f, 0x9a, 0x7c, 0x6c, 0xc1, 0xaf, 0x45, 0x08, ++ 0xb4, 0x94, 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, 0xfd, 0x74, 0xd6, 0x85, 0x4b, 0xfc, 0xf2, 0xc8, ++ 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, 0xba, 0xd4, 0x1f, 0x97, 0xf5, 0x9d, 0x42, 0xd2, 0x9e, 0x34, ++ 0xbe, 0x62, 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, 0x64, 0xd3, 0xee, 0xf2, 0x42, 0xba, ++ 0x1b, 0xa2, 0x1c, 0x1f, 0x8b, 0x94, 0x88, 0xe2, 0xdb, 0x0b, 0x4c, 0xd1, 0x9f, 0x15, 0x4b, 0xaf, ++ 0x9c, 0xca, 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, 0x3b, 0xab, 0x5b, 0x1e, 0x9a, 0xc4, 0x77, 0xc3, ++ 0x5e, 0x97, 0x27, 0x12, 0x39, 0x2b, 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, 0x86, 0xac, 0xe7, 0x50, ++ 0x07, 0xf4, 0xd2, 0x6c, 0x96, 0xfa, 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, 0x92, 0x6e, 0x17, 0x23, ++ 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, 0x09, 0x2f, 0x51, 0x0a, 0x4a, 0x13, ++ 0x0f, 0x8d, 0x0c, 0xcc, 0x5f, 0x93, 0x9f, 0xe0, 0xb8, 0x85, 0xeb, 0x7d, 0x16, 0x09, 0xe8, 0x4b, ++ 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, 0x9d, 0x79, 0x5f, 0x74, 0xc8, 0x81, 0x29, 0xf4, ++ 0xf4, 0xda, 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, 0x5d, 0x41, 0xe1, 0x42, 0x06, 0x0e, ++ 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, 0x7e, 0xd1, 0x09, 0x0f, 0xca, 0x50, 0x36, 0xe4, 0xab, 0x4d, ++ 0x71, 0x3d, 0xd5, 0x1b, 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, 0xd1, 0x21, 0xc5, 0xfa, 0x75, 0x78, ++ 0x1c, 0x56, 0xce, 0x73, 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, 0x0d, 0x7b, 0x5c, 0x8c, ++ 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, 0x05, 0x46, 0x72, 0xe7, 0x1e, 0xa3, 0x88, 0xab, ++ 0x22, 0xa8, 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, 0x74, 0x36, 0x35, 0x79, ++ 0xeb, 0xa5, 0xdc, 0x82, 0x32, 0xb0, 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, 0x3c, 0x85, 0xd3, 0x95, ++ 0xbc, 0xed, 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, 0xff, 0x7c, 0xcf, 0x9b, 0x0d, 0xa0, ++ 0x3c, 0x71, 0x30, 0xb6, 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, 0x58, 0x24, 0x26, 0xef, ++ 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, 0x14, 0xdb, 0x0b, 0x1a, 0x78, 0xc9, 0x65, 0xe9, ++ 0xe9, 0x2a, 0x0a, 0xaa, 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, 0x1d, 0xec, 0x9c, 0x8f, ++ 0x02, 0x8f, 0xd6, 0x28, 0xa3, 0x8b, 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, 0x21, 0x69, 0x4f, 0x1a, ++ 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, 0xe5, 0xf6, 0xc9, 0x05, 0x25, 0xe8, ++ 0xda, 0xd6, 0x36, 0xd0, 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, 0xbe, 0xe8, 0x53, 0xc1, 0x52, 0x2b, ++ 0x19, 0x2d, 0xca, 0x37, 0x28, 0x1f, 0xd5, 0x88, 0x35, 0xa1, 0xd7, 0x7e, 0xbe, 0x7c, 0x04, 0xb5, ++ 0xdb, 0x70, 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, 0x12, 0x5e, 0xa2, 0x14, 0x94, 0x26, ++ 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, 0x2c, 0x12, 0x13, 0x96, ++ 0x17, 0x06, 0xad, 0xef, 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, 0x90, 0xb5, 0x59, 0xa0, 0x2a, 0xf3, ++ 0x4a, 0xb8, 0x37, 0xc1, 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, 0x39, 0x92, 0x0f, 0xb0, 0x44, 0xb4, ++ 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, 0xd0, 0x47, 0xb2, 0x56, 0xa5, 0x0e, 0xb0, 0x72, ++ 0xd9, 0xff, 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, 0x83, 0x7d, 0xdb, 0x3c, ++ 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, 0xe2, 0x0d, 0x12, 0x2a, ++ 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, 0x89, 0xa2, 0x54, 0x6e, 0xb0, 0x48, 0x4c, 0x1d, ++ 0x76, 0xc9, 0x07, 0x77, 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, 0x57, 0x94, 0x62, 0x5b, ++ 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, 0x7e, 0x5a, 0x66, 0xe6, 0xc7, 0x31, 0x6d, 0x40, ++ 0x18, 0x8b, 0xa1, 0x23, 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, 0x4f, 0xa9, 0xc2, 0xb8, ++ 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, 0x0b, 0x30, 0x61, 0xcd, 0x93, 0x7b, 0x85, 0xe3, 0xf3, 0x74, ++ 0xf2, 0x88, 0x16, 0xb5, 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, 0x33, 0x73, 0x82, 0xf9, 0xd7, 0x20, ++ 0x95, 0x15, 0x05, 0x55, 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, 0xef, 0x76, 0x4e, 0xa6, ++ 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, 0x41, 0x77, 0x55, 0x95, 0x45, 0xc8, 0xba, 0x60, ++ 0xa9, 0x64, 0x35, 0xe3, 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, 0xb7, 0x52, 0x68, 0x49, ++ 0x84, 0x41, 0x11, 0xc2, 0x48, 0x8a, 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, 0xd5, 0x6d, 0xb5, 0x7b, ++ 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, 0x86, 0xfb, 0xda, 0xcb, 0x56, 0x5b, 0x99, 0x8b, 0x63, 0xe7, ++ 0x1d, 0xf0, 0xa5, 0x67, 0xad, 0xca, 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, 0xfc, 0xae, 0x9a, 0x81, ++ 0x93, 0x47, 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, 0x83, 0x2e, 0xb0, 0x63, 0x8c, 0xcd, 0x9f, 0x88, ++ 0x28, 0x5e, 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, 0xc6, 0xdf, 0x8d, 0x9b, 0xd1, 0x38, 0x85, 0x0b, ++ 0xc6, 0x80, 0xf8, 0xa3, 0x6c, 0xcf, 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, 0x5e, 0xba, 0x0e, 0xa7, ++ 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, 0xe0, 0x53, 0x10, 0x5d, 0x63, 0x77, 0x60, 0xf4, 0xc5, 0x0a, ++ 0x65, 0x12, 0xc5, 0xc8, 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, 0x76, 0x8d, 0x4c, 0xe6, 0xd6, 0x9c, ++ 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, 0xdf, 0x8d, 0x24, 0xbc, 0x87, 0x28, 0xeb, 0x4c, ++ 0x7c, 0x3f, 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, 0x96, 0x35, 0xa1, 0xf3, 0xf2, 0x9a, 0xd2, 0x29, ++ 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, 0xb8, 0xe2, 0x2c, 0xfd, ++ 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, 0x19, 0x1b, 0x62, 0x4e, 0xbd, 0x26, 0x8f, 0x82, 0x8b, 0xac, ++ 0x21, 0x81, 0x95, 0xd1, 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, 0xa4, 0x8a, 0xbc, 0x6e, ++ 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, 0x71, 0xaa, 0xa9, 0x18, 0x92, 0x80, 0x70, 0x63, 0x05, 0x09, ++ 0xf9, 0xd8, 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, 0x2d, 0x93, 0xd6, 0x22, 0xa1, 0x5f, ++ 0x01, 0xa6, 0x6b, 0x14, 0xb0, 0xa4, 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, 0xf1, 0xd5, 0xc6, 0x0d, ++ 0x5b, 0xec, 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, 0xc7, 0x15, 0x35, 0xab, 0xbf, 0x69, ++ 0x91, 0xc8, 0x6a, 0x05, 0x2c, 0x29, 0x43, 0x9c, 0x6d, 0x84, 0x2b, 0xcc, 0xad, 0xa4, 0xd0, 0x92, ++ 0x14, 0x2f, 0x10, 0xd3, 0xd4, 0x07, 0x17, 0x02, 0x63, 0x8e, 0xa7, 0xac, 0x89, 0x1c, 0xa3, 0xe4, ++ 0x7a, 0x6d, 0xb6, 0x87, 0x1e, 0x99, 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, 0x91, 0x21, 0x03, 0x07, ++ 0xf6, 0x55, 0x79, 0xe5, 0x9f, 0x7a, 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, 0xc0, 0x2b, 0x49, 0x14, ++ 0xb1, 0xef, 0x94, 0xc0, 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, 0x8f, 0xae, 0xf8, 0xfb, 0xaa, 0xf1, ++ 0xb7, 0xbd, 0x2d, 0xb8, 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, 0x9b, 0x40, 0x7b, 0xdf, ++ 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, 0x85, 0xeb, 0xec, 0xd9, 0x98, 0x0f, 0x6f, 0xfb, ++ 0x5a, 0x4a, 0x48, 0x42, 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, 0xc4, 0x7e, 0x79, 0x64, ++ 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, 0x27, 0xf7, 0x67, 0x52, ++ 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, 0x74, 0xd6, 0x82, 0xeb, 0xfb, 0xb4, 0xbe, 0xd5, ++ 0x47, 0xba, 0xed, 0x25, 0x11, 0x34, 0xd9, 0x55, 0xb5, 0x0c, 0x49, 0x40, 0x38, 0xd0, 0xe3, 0xe5, ++ 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, 0xeb, 0xec, 0xe9, 0x48, 0x3f, 0xca, 0xc7, 0xb1, ++ 0x6e, 0x42, 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, 0x18, 0x3d, 0xa0, 0xe3, ++ 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, 0x1b, 0x72, 0xb4, 0xc7, ++ 0x24, 0xfa, 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, 0x51, 0xff, 0x17, 0x8d, 0xe4, 0x57, ++ 0x74, 0x46, 0xd1, 0x5f, 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, 0x76, 0xfd, 0x2d, 0x41, ++ 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, 0x49, 0xb8, 0x85, 0x4f, 0x75, 0xb2, 0x39, 0x65, ++ 0x03, 0x29, 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, 0xd0, 0xbc, 0x89, 0x17, ++ 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, 0x34, 0xb9, 0x84, 0x2b, 0xf6, 0x53, 0x9e, 0x91, 0x47, 0xb3, ++ 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, 0x5c, 0x08, 0x4f, 0x7d, 0xd9, 0xf5, 0x61, 0x70, 0xc9, 0x16, ++ 0x4f, 0xc3, 0x33, 0x85, 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, 0xbc, 0xb7, 0x1c, 0x8d, ++ 0x0e, 0x2b, 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, 0xcf, 0xd0, 0x47, 0xcb, 0xe7, 0xdc, 0x2e, 0x46, ++ 0x7d, 0x99, 0x64, 0xeb, 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, 0x03, 0x4f, 0x14, 0x24, ++ 0xb9, 0x96, 0x4a, 0x60, 0x47, 0x27, 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, 0x7c, 0x9c, 0x55, 0x99, ++ 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, 0x1c, 0x32, 0x02, 0x43, 0x34, 0xd7, 0x0c, 0xff, 0x50, 0x90, ++ 0x54, 0x61, 0x2f, 0x9a, 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, 0x23, 0xa2, 0x57, 0x22, ++ 0x1f, 0x7f, 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, 0xc4, 0x9c, 0xb9, 0x4c, 0xdd, 0xc7, 0xd5, 0x9b, ++ 0xc2, 0x5d, 0x97, 0xf3, 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, 0x1c, 0x68, 0x90, 0x93, ++ 0x33, 0xfc, 0x3c, 0x7a, 0xe0, 0x9a, 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, 0x4e, 0x2d, 0xce, 0xa4, ++ 0x3a, 0x23, 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, 0x44, 0x05, 0x3b, 0x9f, 0xf7, 0xc1, ++ 0xe5, 0x8e, 0xbb, 0x5a, 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, 0xdb, 0x59, 0xfd, 0xd3, ++ 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, 0x93, 0x73, 0xd3, 0x14, 0xec, 0x39, 0x5a, 0x82, ++ 0x12, 0x7d, 0xa9, 0xab, 0xf2, 0x59, 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, 0xea, 0xa7, 0x72, 0xca, ++ 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, 0xd1, 0xc3, 0xf4, 0x7b, 0x1c, 0xd5, 0x7d, 0x18, 0x59, 0x85, ++ 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, 0xb5, 0xaf, 0xbf, 0x80, 0xad, 0x4d, 0x04, 0x55, 0x30, 0x70, ++ 0x34, 0x08, 0xee, 0x16, 0x76, 0x60, 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, 0xdc, 0x43, 0xd9, 0x87, ++ 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, 0x01, 0x62, 0xa1, 0xd7, 0x42, 0x5a, 0x40, 0x19, 0x86, 0x0c, ++ 0xed, 0xf7, 0x65, 0xfa, 0x14, 0xee, 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, 0x5f, 0x3e, 0x02, 0xbb, ++ 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, 0x0e, 0x19, 0x01, 0xc0, 0x1a, 0x8a, 0x06, 0x9e, 0x28, 0x48, ++ 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, 0xae, 0x83, 0xd8, 0x16, 0xe9, 0xf7, ++ 0xdf, 0xad, 0x32, 0x94, 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, 0xe0, 0xc6, 0x0a, 0x12, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x66, 0x3b, 0x78, 0xf4, 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, 0x9c, 0x5a, 0x5f, 0x8b, ++ 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, 0x06, 0x8f, 0x40, 0xb7, 0x4f, 0x1f, 0x43, 0x56, 0x92, 0x28, ++ 0x3e, 0xfe, 0xe6, 0x9e, 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, 0xb1, 0x98, 0x79, 0x4d, 0x69, 0xf5, ++ }, ++ { /* 12 */ ++ 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, 0xb0, 0xb9, 0xb0, 0x0b, 0x7b, 0xc6, ++ 0x95, 0x59, 0xc2, 0x20, 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, 0x1f, 0xc2, 0x1f, 0x6d, 0x57, 0x36, ++ 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, 0x91, 0x38, 0x9b, 0x93, 0x9b, 0xf4, 0x35, 0x9d, ++ 0x27, 0x78, 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, 0x8b, 0xf5, 0x6f, 0x4b, ++ 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, 0x48, 0xe5, 0x86, 0xb5, ++ 0x86, 0x9c, 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, 0x83, 0xc4, 0x83, 0x14, 0x42, 0x20, ++ 0x06, 0xa6, 0x5b, 0x15, 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, 0xe3, 0x12, 0x5d, 0x91, ++ 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, 0xd1, 0x58, 0x49, 0x96, 0x49, 0x50, 0xcb, 0x80, ++ 0x09, 0x7a, 0x21, 0xd4, 0x1b, 0xd3, 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, 0x76, 0x3f, 0x28, 0xd9, ++ 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, 0x3b, 0x66, 0x4b, 0x8f, 0x22, 0x56, 0x22, 0xab, 0x2e, 0x05, ++ 0xf4, 0x9a, 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, 0x47, 0x7f, 0x47, 0x89, 0x8b, 0x55, ++ 0x16, 0x30, 0x91, 0xcc, 0x3a, 0x7f, 0x88, 0xf2, 0x6f, 0xb9, 0xef, 0x91, 0xef, 0x62, 0x87, 0x2e, ++ 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, 0x5e, 0x71, 0x7a, 0xeb, 0x7a, 0x4f, 0xf2, 0x66, ++ 0xec, 0x47, 0xd0, 0xbe, 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, 0x4d, 0xc1, 0x3c, 0x54, ++ 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, 0x7a, 0xe2, 0x18, 0x14, 0x5e, 0xd8, 0x5e, 0xdc, 0xb1, 0xdd, ++ 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, 0x03, 0xd3, 0x03, 0x1c, 0xd7, 0x5f, ++ 0x8f, 0xe6, 0xe5, 0xc6, 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, 0xf5, 0xe5, 0xf5, 0x2b, 0x6a, 0xf9, ++ 0x30, 0x79, 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, 0x2e, 0x39, 0x14, 0x9d, 0x14, 0x90, 0xad, 0x02, ++ 0x39, 0x03, 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, 0x6a, 0x5f, 0x62, 0xbc, 0x62, 0xaf, 0x85, 0xdb, ++ 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, 0xc1, 0x42, 0xc8, 0xac, 0x3e, 0x47, 0x3e, 0xda, 0xae, 0x6c, ++ 0x03, 0x53, 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, 0x90, 0xcc, 0x90, 0x09, 0xcf, 0xa9, ++ 0xcf, 0xfb, 0x4b, 0x24, 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, 0xc5, 0x28, 0x84, 0x40, ++ 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, 0x46, 0x65, 0x24, 0x33, 0x24, 0x93, 0x43, 0xbb, ++ 0x43, 0x4e, 0x62, 0x09, 0xc5, 0x89, 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, 0xa0, 0x0a, 0x21, 0x10, ++ 0x55, 0x7e, 0xf3, 0xc5, 0xff, 0xf6, 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, 0x4f, 0x68, 0xa6, 0x3e, ++ 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, 0xd3, 0x27, 0xde, 0xb1, 0x1d, 0xe1, 0x1d, 0xc4, 0xcd, 0x5c, ++ 0x12, 0xf4, 0x42, 0x6b, 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, 0xec, 0x7e, 0x50, 0x71, ++ 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, 0xea, 0x4c, 0xa8, 0xfc, 0x85, 0xa1, 0x85, 0x2c, 0x2f, 0x9e, ++ 0xd5, 0x44, 0x6c, 0xc2, 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, 0x2f, 0x6e, 0xb9, 0x8f, ++ 0x3d, 0xc7, 0x6f, 0xdb, 0x47, 0x71, 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, 0x61, 0xb3, 0x52, 0x84, ++ 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, 0xf4, 0x07, 0x30, 0x28, 0xbc, 0x73, 0xbc, 0x7b, 0xa1, 0x79, ++ 0x76, 0xc2, 0x68, 0x5f, 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, 0xc7, 0x81, 0x1e, 0x2a, ++ 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, 0xd9, 0x1e, 0x17, 0xfd, 0x0a, 0xaf, 0x0a, 0x48, 0xb7, 0x01, ++ 0x35, 0x8c, 0x0a, 0x56, 0x5f, 0x45, 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, 0x67, 0x8b, 0x3f, 0x3a, ++ 0x07, 0x97, 0x1f, 0x4c, 0x09, 0xf0, 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, 0x93, 0x15, 0x18, 0xf6, ++ 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, 0xb8, 0xe4, 0x50, 0x31, 0x50, 0x05, 0xf1, 0x08, ++ 0xf7, 0xc9, 0xb3, 0x01, 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, 0xd7, 0xb3, 0xd7, 0x80, 0x44, 0xfc, ++ 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, 0x3c, 0x96, 0xf3, 0x6b, 0x72, 0x67, 0x72, 0xae, 0xdf, 0x0d, ++ 0x72, 0x06, 0xbb, 0xf8, 0x96, 0xd6, 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, 0xc4, 0x9d, 0xc9, 0x75, ++ 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, 0x41, 0x84, 0x53, 0x9b, 0x7c, 0x8e, 0x7c, 0x77, 0x9f, 0xd8, ++ 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, 0xb1, 0x99, 0x19, 0xf4, 0x77, 0xd1, 0x77, 0x8a, 0x65, 0xec, ++ 0xff, 0x82, 0xd6, 0x8c, 0xc2, 0xd9, 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, 0xd1, 0xb8, 0x29, 0x42, ++ 0x1a, 0xbf, 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, 0x85, 0x26, 0xea, 0x27, 0xea, 0x46, 0x3d, 0xcf, ++ 0x48, 0x56, 0xcb, 0x6f, 0xd8, 0x57, 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, 0x36, 0x3b, 0x83, 0x07, ++ 0xaa, 0xfc, 0x25, 0x49, 0x3d, 0x2f, 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, 0x9e, 0xd0, 0x8f, 0x7c, ++ 0x58, 0xc0, 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, 0x3a, 0x01, 0x3a, 0x4b, 0x59, 0xb8, ++ 0x93, 0xff, 0x99, 0x35, 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, 0xfc, 0x7f, 0x0a, 0xa7, ++ 0x21, 0xde, 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, 0x7d, 0xa2, 0x68, 0x13, 0x68, 0xe7, 0x32, 0xda, ++ 0xdd, 0x0f, 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, 0x29, 0x09, 0x29, 0x56, 0xd4, 0x31, ++ 0x60, 0xf2, 0xf9, 0x93, 0xa0, 0xb3, 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, 0x28, 0xe3, 0x99, 0x04, ++ 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, 0xea, 0x9f, 0x05, 0xb6, 0x05, 0x24, 0xba, 0xe1, ++ 0xc4, 0xe3, 0xe2, 0x42, 0x8f, 0xbf, 0x7c, 0xf5, 0x5f, 0x91, 0x53, 0xe2, 0x53, 0x19, 0x26, 0x57, ++ 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, 0x55, 0x9e, 0x8a, 0xb8, 0x8a, 0x40, 0x22, 0x7e, ++ 0x5c, 0x04, 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, 0x98, 0xd4, 0x39, 0xd2, 0x39, 0x57, 0x8e, 0xe7, ++ 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, 0x21, 0x37, 0xa9, 0x1c, 0xac, 0xa8, 0xac, 0x7a, 0xfb, 0xaf, ++ 0xcd, 0x99, 0xc3, 0x96, 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, 0x25, 0xc3, 0x25, 0x26, 0x0e, 0x8e, ++ 0x32, 0x1b, 0x15, 0x1a, 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, 0xf4, 0x15, 0xf4, 0x9e, 0x27, 0xcc, ++ 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, 0xcc, 0xaa, 0x9a, 0x63, 0x9a, 0x41, 0x78, 0xa8, ++ 0x5a, 0xa2, 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, 0xed, 0x7a, 0xda, 0x89, 0xda, 0x45, 0xd3, 0x76, ++ 0xa1, 0xe4, 0x8c, 0x2f, 0x20, 0xf1, 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, 0x08, 0xe1, 0x2d, 0x6b, ++ 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, 0x22, 0x33, 0x3b, 0xf1, 0x3b, 0xfe, 0x14, 0x8d, ++ 0x3c, 0xf6, 0x2b, 0x82, 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, 0x11, 0x2b, 0x11, 0xb4, 0x17, 0xe3, ++ 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, 0xf6, 0x8d, 0xff, 0x4a, 0xff, 0x63, 0xdd, 0xf8, ++ 0xce, 0xca, 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, 0xb5, 0x2f, 0xc1, 0x27, ++ 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, 0x01, 0xe7, 0xff, 0x61, 0x5d, 0x0b, 0x5d, 0xc0, 0x66, 0x82, ++ 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, 0xc8, 0x71, 0xc8, 0xed, 0x13, 0xca, ++ 0xf5, 0xab, 0x3b, 0xb3, 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, 0x37, 0x8e, 0xce, 0x32, ++ 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, 0x03, 0xea, 0xc2, 0xa3, 0xe7, 0x1d, 0xe7, 0x83, 0xaa, 0x45, ++ 0xe2, 0xaa, 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, 0x1e, 0x11, 0xa8, 0xee, 0xa8, 0xeb, 0x0c, 0x7b, ++ 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, 0xd2, 0xc0, 0x21, 0xd0, 0x40, 0xea, 0x40, 0x04, 0xab, 0xde, ++ 0x71, 0x55, 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, 0x54, 0x77, 0x54, 0x94, 0x06, 0xdc, ++ 0xf9, 0x24, 0x8d, 0x99, 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, 0x32, 0xaa, 0x74, 0xd3, ++ 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, 0x13, 0xfb, 0xae, 0x8b, 0xae, 0xd3, 0x61, 0xc5, ++ 0xae, 0x38, 0xf6, 0xee, 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, 0x9d, 0xcc, 0x58, 0x23, ++ 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, 0x4b, 0xf9, 0x51, 0xea, ++ 0x0b, 0x18, 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, 0x96, 0xa9, 0x96, 0x31, 0xa2, 0x17, ++ 0xde, 0x5c, 0xc5, 0xa4, 0xa1, 0xee, 0x79, 0x08, 0xda, 0xb7, 0xb9, 0xc5, 0xb9, 0x5f, 0x1b, 0x98, ++ 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, 0x96, 0xdd, 0x44, 0xac, 0x44, 0x95, 0x5c, 0x0a, ++ 0xd4, 0x75, 0x28, 0x9b, 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, 0x5f, 0x69, 0xfc, 0xe8, ++ 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, 0xdf, 0x09, 0x50, 0x78, 0x07, 0x95, 0x07, 0x8d, 0x20, 0x8b, ++ 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, 0x7b, 0x1b, 0x7b, 0xfa, 0xbf, 0x53, ++ 0xba, 0x6a, 0xef, 0x90, 0x0d, 0x47, 0xe0, 0x75, 0x61, 0xb0, 0x92, 0xef, 0x92, 0xa0, 0x55, 0xc3, ++ 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, 0xaf, 0xd2, 0x81, 0x20, 0x4e, 0x03, 0x4e, 0xdd, 0xeb, 0x0b, ++ 0x0e, 0xed, 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, 0x78, 0x44, 0xe5, 0x3e, 0xe5, 0x2a, 0x30, 0x2f, ++ 0x9c, 0x23, 0xe3, 0xf4, 0x67, 0x80, 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, 0x69, 0x52, 0x7f, 0xef, ++ 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, 0x67, 0xb5, 0x64, 0xd9, 0x64, 0x97, 0xe8, 0x65, ++ 0x79, 0x1e, 0x12, 0x9e, 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, 0x52, 0xac, 0x6b, 0x62, ++ 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, 0x7c, 0x42, 0x41, 0x1a, 0x41, 0xb1, 0xe6, 0xeb, ++ 0x4d, 0xa3, 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, 0x45, 0x20, 0x11, 0x3f, ++ 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, 0x6c, 0x9d, 0x74, 0x4e, 0xca, 0x52, 0xca, 0x44, 0x89, 0xa0, ++ 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, 0x57, 0xa4, 0x57, 0x88, 0xd1, 0x83, ++ 0x68, 0xb9, 0x9c, 0x1e, 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, 0x2e, 0xdb, 0xf4, 0xba, ++ 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, 0xb4, 0xee, 0x7f, 0x5d, 0x7f, 0x6b, 0x48, 0x87, ++ 0xa9, 0xaf, 0xe9, 0xa2, 0x38, 0xc5, 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, 0x0e, 0xd9, 0x40, 0xd5, ++ 0x01, 0x31, 0x44, 0x59, 0x03, 0xe7, 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, 0x70, 0x07, 0x45, 0x67, ++ 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, 0x88, 0x9b, 0x88, 0xe9, 0xb8, 0x14, ++ 0xb2, 0x21, 0x8a, 0x1d, 0x15, 0x73, 0x16, 0x7f, 0x6c, 0x5a, 0x94, 0x8a, 0x94, 0x98, 0x38, 0x7d, ++ 0x6e, 0x1f, 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, 0x24, 0x36, 0xcd, 0xc7, 0xcd, 0xc9, 0xa9, 0x2b, ++ 0xf2, 0x3c, 0x24, 0xff, 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, 0xa4, 0x9b, 0xd6, 0xc4, ++ 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, 0x82, 0xa1, 0x0f, 0x15, ++ 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, 0xe0, 0x90, 0xdc, 0xec, 0xdc, 0x7d, 0xbe, 0xc8, ++ 0x65, 0x07, 0x6e, 0x6d, 0xaf, 0x4e, 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, 0x5b, 0xf8, 0x0b, 0x3c, ++ 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, 0xf8, 0x29, 0xbe, 0xe1, 0xa6, 0x07, 0xa6, 0x32, 0x4c, 0xae, ++ 0x38, 0x32, 0xf8, 0x25, 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, 0x12, 0xa8, 0xc0, 0xbc, ++ 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, 0xfe, 0xd6, 0x90, 0xcd, ++ 0x91, 0x9d, 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, 0x1c, 0x11, 0x1c, 0x71, 0x80, 0x69, ++ 0xd6, 0x17, 0xa0, 0x29, 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, 0xbf, 0x67, 0x76, 0x26, ++ 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, 0x35, 0xce, 0x31, 0x5e, 0x31, 0xb6, 0xa3, 0x8c, ++ 0xf8, 0x15, 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, 0x42, 0xad, 0x31, 0xb4, ++ 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, 0x36, 0xaf, 0x3a, 0x27, 0x65, 0x29, 0x65, 0x22, 0xa5, 0x50, ++ 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, 0x3c, 0x64, 0x3c, 0x73, 0x34, 0x06, ++ 0x7f, 0xb8, 0x49, 0x8b, 0x81, 0x1f, 0xf2, 0x10, 0x77, 0xad, 0xb1, 0x49, 0xb1, 0xbe, 0x36, 0xf3, ++ 0x59, 0xf1, 0x45, 0xef, 0xeb, 0xd8, 0x0b, 0xde, 0x36, 0x2d, 0x4a, 0x45, 0x4a, 0x4c, 0x1c, 0xdf, ++ 0x08, 0x4b, 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, 0x06, 0x65, 0x06, 0x38, 0x6d, 0xbe, ++ 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, 0x2a, 0x4a, 0x03, 0x6e, ++ 0xa2, 0xb7, 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, 0x98, 0x40, 0x98, 0xe8, 0xe2, 0xc2, ++ 0xfb, 0x46, 0x05, 0x2b, 0xce, 0xc3, 0x32, 0xb5, 0x40, 0x60, 0xd2, 0x05, 0xd2, 0xa4, 0xfe, 0x1d, ++ 0x1c, 0x19, 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, 0xf0, 0x88, 0x09, 0x7c, 0x09, 0x54, 0x60, 0x5e, ++ 0x29, 0x95, 0x76, 0xa5, 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, 0x6e, 0xdf, 0x5f, 0x64, ++ 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, 0x9a, 0x97, 0x79, 0xa4, 0xcc, 0x37, 0xcc, 0x7c, 0xe4, 0x1e, ++ 0x6f, 0x2e, 0x83, 0x52, 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, 0xbd, 0x83, 0xbd, 0xce, 0xec, 0x4c, ++ 0x47, 0x8a, 0xb1, 0xae, 0xc9, 0x93, 0x75, 0x26, 0x54, 0x7e, 0xa3, 0xb1, 0xa3, 0x16, 0xf6, 0x4f, ++ 0x54, 0x4f, 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, 0x95, 0x3e, 0x3f, 0xb7, 0x3f, 0x6f, 0xe3, 0x59, ++ 0x9f, 0x70, 0x2f, 0x1f, 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, 0xf9, 0x5b, 0xb0, 0x46, ++ 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, 0xe6, 0x62, 0x26, 0x35, 0x9f, 0xd5, 0x9f, 0x65, 0xc2, 0x49, ++ 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, 0xc5, 0x46, 0x38, 0x22, 0x38, 0xe2, 0xc3, 0xd2, ++ 0x7c, 0xeb, 0x85, 0x60, 0x84, 0xf5, 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, 0x21, 0xb7, 0xf9, 0x5a, ++ 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, 0x1d, 0xf2, 0xd3, 0xf5, 0xd3, 0x11, 0xb3, 0x28, ++ 0xbc, 0xcc, 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, 0x71, 0xb2, 0x08, 0x52, ++ 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, 0x12, 0x65, 0x16, 0x1d, 0x23, 0xa6, 0x23, 0x1e, 0x63, 0x30, ++ 0x22, 0x8d, 0xdf, 0xc3, 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, 0xf8, 0xdf, 0xf8, 0xee, 0xfd, 0x73, ++ 0xbe, 0xae, 0x3c, 0x37, 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, 0x91, 0x3c, 0x91, 0xbc, 0x82, 0x9c, ++ 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, 0x33, 0x52, 0xbf, 0x01, 0x8f, 0x0e, 0x8f, 0x64, 0x98, 0x9f, ++ 0x7e, 0x89, 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, 0x3e, 0x21, 0xc1, 0x0d, 0xc1, 0xb9, 0x73, 0x94, ++ 0x1d, 0x28, 0x38, 0xaa, 0x27, 0xa1, 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, 0x79, 0x53, 0x25, 0x39, ++ 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, 0x02, 0x23, 0x02, 0xa9, 0x9a, 0x6a, ++ 0x9d, 0x12, 0xa7, 0xad, 0x64, 0x67, 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, 0x19, 0x55, 0x3a, 0x88, ++ 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, 0x47, 0x85, 0x0d, 0x3a, 0x0d, 0xc5, 0x97, 0x8a, ++ 0x6c, 0x7d, 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, 0x2d, 0xc7, 0x23, 0xe5, ++ 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, 0x13, 0x1d, 0x8d, 0x89, ++ 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, 0x46, 0x74, 0xeb, 0x7f, 0x2c, 0xbf, 0x2c, 0x72, 0x6e, 0xd0, ++ 0x1e, 0x7b, 0xf4, 0x41, 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, 0xe9, 0x5a, 0xea, 0x90, ++ 0xa5, 0x20, 0x5f, 0x88, 0x2c, 0xeb, 0xf0, 0x1d, 0x4a, 0x6f, 0x0b, 0x5f, 0x0b, 0xfd, 0xfa, 0x34, ++ 0xe6, 0x6e, 0x3d, 0x81, 0xe9, 0x62, 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, 0xab, 0xf7, 0xdb, 0x24, ++ 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, 0xfd, 0xca, 0x47, 0x92, ++ 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, 0xa9, 0x1e, 0xa9, 0x5e, 0x41, 0x4e, ++ 0x61, 0xc3, 0xbd, 0xca, 0xa3, 0x54, 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, 0x58, 0xe4, 0xdc, 0x63, ++ 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, 0x0b, 0xef, 0xf0, 0x53, 0xf0, 0x0f, 0xd0, 0x18, ++ 0x44, 0xd9, 0x7d, 0x45, 0xcc, 0x79, 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, 0x33, 0x1f, 0x39, 0xe6, ++ 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, 0xa4, 0x0c, 0xb7, 0x0d, 0x04, 0x46, 0x04, 0x91, 0xf7, 0xd4, ++ 0xef, 0x14, 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, 0xdd, 0x1c, 0xdd, 0xc8, 0xf3, 0xfd, ++ 0x82, 0x58, 0x17, 0xb5, 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, 0x80, 0x08, 0x95, 0x7f, ++ 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, 0xd6, 0xda, 0x5b, 0x97, 0xf7, 0xc6, 0xf7, 0x82, 0xf0, 0x93, ++ 0xa3, 0x86, 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, 0x3f, 0xc1, 0xe8, 0x04, 0xe8, 0xef, 0xa7, 0xa5, ++ 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, 0xda, 0xf4, 0xd5, 0x5e, 0xed, 0xb2, 0xed, 0xcb, 0x1d, 0x44, ++ 0x88, 0x71, 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, 0x66, 0xfa, 0x66, 0x3e, 0x72, 0x0f, ++ 0x89, 0x40, 0xbe, 0xd3, 0x58, 0x15, 0x23, 0x3a, 0x94, 0xde, 0x16, 0xbe, 0x16, 0x39, 0x37, 0x68, ++ 0x0f, 0xdc, 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, 0x31, 0xc8, 0x95, 0x7a, 0x95, 0x2d, 0x75, 0x48, ++ 0x1f, 0x4a, 0xb0, 0x18, 0x21, 0xac, 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, 0x99, 0x5d, 0xaf, 0xf7, ++ 0x42, 0x7f, 0x26, 0x50, 0xc6, 0x6e, 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, 0xd0, 0x0d, 0x64, 0x77, ++ 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, 0xa7, 0xf7, 0xa7, 0x87, 0x01, 0x9b, ++ 0xdf, 0x6d, 0x81, 0xfd, 0xa2, 0x09, 0x17, 0x98, 0x93, 0x3b, 0xc9, 0x81, 0xc9, 0x58, 0x5e, 0xff, ++ 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, 0xb1, 0x08, 0xf2, 0x70, 0xf2, 0xa6, 0x4a, 0x72, ++ 0xc1, 0x16, 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, 0x20, 0x75, 0x20, 0x02, 0xb4, 0x6f, ++ 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, 0xa8, 0x22, 0x39, 0xc4, 0x1e, 0x32, 0x1e, 0xd8, 0x1a, 0x03, ++ 0xf1, 0x6f, 0xe8, 0x14, 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, 0x34, 0xe8, 0x34, 0x92, 0x19, 0x6d, ++ 0xcb, 0x3f, 0x98, 0x83, 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, 0xc6, 0x34, 0x53, 0x1f, ++ 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, 0x58, 0x74, 0x8c, 0xdd, 0x8c, 0x78, 0x4f, 0xc0, ++ 0x87, 0xad, 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, 0xf3, 0x13, 0x07, 0x47, ++ 0xe7, 0x5f, 0x79, 0xd8, 0xea, 0x85, 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, 0xdb, 0xf0, 0x9e, 0x43, ++ 0x3e, 0x94, 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, 0xf1, 0xa3, 0xf1, 0xba, 0x9d, 0x2d, ++ 0xfa, 0x77, 0x41, 0x72, 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, 0xa2, 0xa3, 0xbb, 0x7a, ++ 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, 0xa3, 0x13, 0x75, 0xf2, 0x75, 0x23, 0xff, 0x86, ++ 0x51, 0xba, 0x20, 0x62, 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, 0x4c, 0x74, 0x71, 0x61, ++ 0xb6, 0xe5, 0x59, 0xba, 0x19, 0x69, 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, 0x97, 0x84, 0xef, 0x22, ++ 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, 0xb2, 0x9a, 0xb2, 0xa2, 0xe1, 0xac, ++ 0x74, 0xa0, 0xe0, 0xed, 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, 0x27, 0xe0, 0x27, 0x8f, 0x94, 0xe4, ++ 0x3f, 0xa5, 0xe7, 0x69, 0x41, 0x7c, 0x4e, 0x40, 0x1f, 0xf1, 0x81, 0xe7, 0x81, 0xbd, 0xd8, 0x4a, ++ 0x2f, 0x33, 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, 0x8d, 0x2d, 0x8d, 0xcd, 0x02, 0xf5, ++ 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, 0x51, 0xb0, 0xbc, 0x3d, ++ 0xbb, 0x5b, 0xab, 0xc9, 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, 0xe2, 0xab, 0xe2, 0xa7, 0x10, 0xa4, ++ 0x49, 0x67, 0x8f, 0x36, 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, 0x46, 0x8f, 0x46, 0x3c, 0xc6, 0x60, ++ 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, 0xe2, 0x93, 0x8e, 0xfe, 0x8e, 0xd1, 0xd5, 0xaa, ++ 0x99, 0xd6, 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, 0x1a, 0x49, 0xed, 0xd7, ++ 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, 0xe0, 0x0e, 0x8a, 0xce, ++ 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, 0x12, 0x1b, 0x87, 0x82, 0x87, 0x85, 0xb5, 0xf4, ++ 0xb3, 0x10, 0xce, 0x44, 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, 0xe4, 0x9f, 0x7d, 0x1a, ++ 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, 0x9d, 0x32, 0xb4, 0xff, 0xb4, 0x9a, 0x8c, 0x12, ++ 0x64, 0x36, 0x2a, 0x34, 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, 0x2b, 0xff, 0x4e, 0x5b, ++ 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, 0xa5, 0xeb, 0x48, 0x6c, 0x59, 0x4d, 0x59, 0x51, 0x91, 0x56, ++ 0xd8, 0xfa, 0x9e, 0xb1, 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, 0x5a, 0x9e, 0x5a, 0x4d, 0x46, 0x09, ++ 0xc9, 0x5d, 0x10, 0x31, 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, 0x26, 0x3a, 0xd9, 0xd1, ++ 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, 0x32, 0x2b, 0xee, 0x61, 0xee, 0xd7, 0xca, 0x1b, ++ 0x33, 0x2a, 0x51, 0x43, 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, 0x84, 0x99, 0x62, 0xab, ++ 0x6b, 0xea, 0x50, 0xf5, 0xbd, 0x6d, 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, 0xbe, 0xd2, 0x3b, 0x13, ++ 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, 0x8a, 0xff, 0x52, 0x7b, 0x55, 0x87, 0x55, 0x21, 0x4b, 0xe9, ++ 0x90, 0xac, 0x55, 0xde, 0x73, 0xae, 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, 0x6c, 0x76, 0xc5, 0x0e, ++ 0xd0, 0xb1, 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, 0xa2, 0xf3, 0x5c, 0xfb, 0x5c, 0x75, 0x2b, 0xb7, ++ 0xac, 0x5a, 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, 0x0e, 0x09, 0x7d, 0x7e, 0x7d, 0xc2, 0xd2, 0xed, ++ 0xbf, 0x9f, 0x78, 0x6e, 0x02, 0xba, 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, 0xe1, 0xbb, 0xc7, 0xfb, ++ 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, 0x02, 0x0d, 0x3d, 0xc2, 0xba, 0x16, 0xba, 0x43, 0xcc, 0xc7, ++ 0xa7, 0x42, 0xd7, 0x3a, 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, 0xeb, 0xd7, 0xeb, 0xf3, 0x70, 0xfa, ++ 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, 0x0a, 0x0f, 0xd9, 0x5a, 0xd9, 0x59, 0x04, 0x29, ++ 0x98, 0xe7, 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, 0xc7, 0x45, 0x6a, 0x30, 0x6a, 0x4e, 0xa8, 0xb0, ++ 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, 0xc2, 0xa5, 0xa4, 0xcb, ++ 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, 0x9d, 0x67, 0xc1, 0x40, 0x9c, 0x06, 0x9c, 0x79, 0x15, 0x16, ++ 0x6a, 0xdb, 0x14, 0xac, 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, 0xce, 0xd5, 0x7e, 0x74, ++ 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, 0xbc, 0x50, 0x68, 0x5c, 0x30, 0xae, 0x30, 0x03, 0xee, 0xb9, ++ 0xa8, 0x9e, 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, 0x7e, 0xad, 0x7e, 0xde, 0x05, 0xb2, ++ 0x5b, 0x93, 0xcd, 0x5d, 0xed, 0xd5, 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, 0xaa, 0x42, 0x96, 0x11, ++ 0xeb, 0xd0, 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, 0xde, 0xcf, 0xde, 0xd4, 0x24, 0xa2, ++ 0x66, 0x54, 0xa2, 0x86, 0xaa, 0xa4, 0x45, 0x9e, 0x29, 0xdc, 0xcb, 0xa2, 0xcb, 0xf1, 0xc4, 0x95, ++ 0x56, 0x2d, 0x3f, 0x2e, 0xfa, 0x1c, 0x34, 0xa2, 0x07, 0xe5, 0xdf, 0x3f, 0xdf, 0x61, 0x69, 0x97, ++ 0x81, 0x0b, 0xdb, 0x5e, 0x40, 0x21, 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, 0x10, 0x01, 0x5a, 0xd6, ++ 0x77, 0xf3, 0x2c, 0x06, 0x99, 0x2b, 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, 0xb7, 0x86, 0x5b, 0x4d, ++ 0x57, 0x1c, 0x7b, 0x77, 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, 0xaf, 0x7b, 0xaf, 0x66, 0x2c, 0xf0, ++ 0x4e, 0xf0, 0x90, 0x7a, 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, 0xd5, 0x29, 0xde, 0x96, ++ 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, 0x73, 0xab, 0x15, 0x6d, 0x15, 0x25, 0xe0, 0x37, ++ 0xb0, 0x43, 0x02, 0xaf, 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, 0x74, 0x96, 0xb2, 0xb3, ++ 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, 0xd4, 0x9c, 0x93, 0xa3, ++ 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, 0x2d, 0xda, 0x6f, 0x86, 0x6f, 0x6a, 0x12, 0x51, ++ 0x20, 0xef, 0x57, 0x71, 0x60, 0xd0, 0x5e, 0x28, 0x34, 0x2e, 0x18, 0x57, 0x18, 0xe0, 0x77, 0xbd, ++ 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, 0xd3, 0x5b, 0x1b, 0x84, 0x1b, 0xfc, 0xa0, 0xe2, ++ 0xd7, 0x26, 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, 0xcf, 0x60, 0x33, 0x41, ++ 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, 0x0f, 0x6c, 0x0d, 0xe0, ++ 0x9e, 0x41, 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, 0x89, 0x6b, 0x89, 0x5c, 0xf5, 0x21, ++ 0x05, 0xf5, 0x97, 0xfe, 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, 0x73, 0x1b, 0x92, 0x38, ++ 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, 0xcd, 0x4a, 0xb3, 0x6a, 0xb3, 0x17, 0xac, 0x99, ++ 0xed, 0x76, 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, 0x3d, 0xc6, 0x79, 0x33, ++ 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, 0xf1, 0xfa, 0xb5, 0x0e, 0x56, 0x54, 0x56, 0x3d, 0x9c, 0xb6, ++ 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, 0xd0, 0xcd, 0x1c, 0x12, 0xfa, 0xfc, 0xfa, 0x47, 0x67, 0x19, ++ 0xbd, 0xfd, 0xf0, 0xdc, 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, 0x01, 0xb5, 0x4d, 0x35, ++ 0x84, 0xfe, 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, 0x37, 0xcd, 0x63, 0x4c, 0x63, 0x1a, 0xc8, 0xee, ++ 0xc3, 0x74, 0xfd, 0x0e, 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, 0xc0, 0x0c, 0x3e, 0xa1, ++ 0xca, 0x0e, 0xdc, 0xda, 0x9d, 0x9c, 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, 0xb6, 0x33, 0x16, 0x78, ++ 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, 0x91, 0x49, 0x4f, 0x89, 0x86, 0x72, 0x86, 0x30, 0xf8, 0xc1, ++ 0x34, 0xbd, 0x4e, 0x0f, 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, 0x17, 0x8c, 0x7a, 0x5d, ++ 0x26, 0x49, 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, 0x41, 0x80, 0xfb, 0x0c, 0xfb, 0xf2, 0x2a, 0x2c, ++ 0x10, 0x96, 0xca, 0xd9, 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, 0x0c, 0x70, 0xda, 0xbf, ++ 0x25, 0x1a, 0xc0, 0x8f, 0x6f, 0x2d, 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, 0x6b, 0xfb, 0xe5, 0x85, ++ 0xe3, 0x9b, 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, 0xd8, 0xaa, 0xd8, 0xec, 0x49, 0x1c, ++ 0x63, 0xa1, 0x35, 0x78, 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, 0xb8, 0xea, 0x56, 0xad, ++ 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, 0x9f, 0x31, 0xe6, 0xed, 0xe6, 0x36, 0xe7, 0x70, ++ 0x4f, 0xc1, 0xd4, 0x23, 0xd1, 0xa7, 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, 0xa5, 0x2e, 0x9b, 0xf1, ++ 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, 0xff, 0xd9, 0x06, 0x05, 0xf6, 0x36, 0xf6, 0x37, 0xbd, 0xa6, ++ 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, 0xce, 0x86, 0x84, 0xc6, 0xc3, 0x2e, 0xc3, 0x10, 0xe9, 0xfe, ++ 0x67, 0x65, 0xe6, 0xdf, 0xa9, 0x43, 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, 0xbb, 0xf6, 0x81, 0xf2, ++ 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, 0xbd, 0xb7, 0x97, 0x3d, 0x6d, 0xa5, 0x6d, 0xc3, 0x88, 0x3b, ++ 0xfe, 0xb3, 0x92, 0xd5, 0xc1, 0x3e, 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, 0xa1, 0xbf, 0x6c, 0x25, ++ 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, 0xa9, 0xc5, 0xc6, 0xa5, 0x43, 0x39, 0x43, 0x18, 0x7c, 0x81, ++ 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, 0x78, 0xc8, 0x78, 0xe6, 0x68, 0x0c, ++ 0x80, 0x3a, 0x9f, 0x07, 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, 0x60, 0x06, 0x1f, 0xb1, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x4a, 0x34, 0x43, 0xdd, 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, 0xd6, 0x35, 0x09, 0xc9, ++ 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, 0x08, 0x34, 0xf4, 0x8e, 0xad, 0x58, 0xad, 0xcf, 0xb6, 0x9a, ++ 0x4c, 0x92, 0x18, 0xc8, 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, 0x35, 0x18, 0x35, 0x27, 0x54, 0x58, ++ }, ++ { /* 13 */ ++ 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, 0xa6, 0x84, 0xc2, 0x22, 0x09, 0xda, ++ 0xbb, 0xd9, 0xf4, 0xa6, 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, 0xc5, 0x24, 0x95, 0xe1, 0xdd, 0xd9, ++ 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, 0x22, 0x36, 0xb0, 0x57, 0xa6, 0xe7, 0x08, 0x3c, ++ 0x0d, 0x8c, 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, 0x27, 0xd0, 0xc3, 0x8c, ++ 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, 0xe0, 0x26, 0x2e, 0xdd, ++ 0x4a, 0xd4, 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, 0xab, 0x81, 0x86, 0x2a, 0x47, 0xd4, ++ 0xe8, 0xf2, 0xca, 0x2e, 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, 0x06, 0x98, 0xb8, 0xf2, ++ 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, 0xbd, 0x4e, 0xe9, 0x41, 0x5d, 0xa8, 0xdf, 0xd6, ++ 0x8f, 0xac, 0xf8, 0x65, 0xf3, 0x8d, 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, 0x09, 0x27, 0x57, 0xac, ++ 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, 0xf2, 0xb1, 0x0e, 0xdc, 0xb7, 0x06, 0x78, 0xb1, 0x74, 0xb5, ++ 0x0f, 0xb4, 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, 0x96, 0x66, 0xf4, 0xf0, 0x38, 0xb4, ++ 0x6d, 0x86, 0xbf, 0xfe, 0xd3, 0x17, 0x81, 0x1f, 0xc5, 0x06, 0x2b, 0x34, 0x16, 0x1f, 0x7e, 0x86, ++ 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, 0xb4, 0xfc, 0xe4, 0x44, 0x19, 0xa0, 0x91, 0xd8, ++ 0x29, 0xfa, 0x84, 0xb6, 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, 0xec, 0xd5, 0x9d, 0xfa, ++ 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, 0xa0, 0xb3, 0x9d, 0x11, 0x25, 0x96, 0x69, 0xb3, 0x86, 0x57, ++ 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, 0x3b, 0x6a, 0x04, 0x51, 0xd0, 0x1d, ++ 0xc5, 0x78, 0x1c, 0x04, 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, 0xa3, 0xae, 0x8f, 0x0d, 0x10, 0x78, ++ 0x4c, 0x9c, 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, 0xd2, 0xa6, 0xf7, 0xbd, 0x30, 0x4a, 0x89, 0x9c, ++ 0xc3, 0x30, 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, 0x28, 0x38, 0xff, 0x92, 0x39, 0x6d, 0xde, 0x30, ++ 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, 0x29, 0x01, 0xa8, 0x87, 0x49, 0x48, 0xe9, 0x01, 0x79, 0x71, ++ 0x74, 0x79, 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, 0x82, 0xce, 0x03, 0x4c, 0x5c, 0x79, ++ 0x94, 0x6b, 0x0b, 0xc2, 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, 0xcf, 0x54, 0x8e, 0x6b, ++ 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, 0x29, 0xed, 0xc1, 0xd2, 0x70, 0x13, 0x17, 0x8f, ++ 0x25, 0x6a, 0x72, 0xd1, 0x1c, 0x08, 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, 0x43, 0x15, 0xc2, 0x6a, ++ 0x48, 0xec, 0xcd, 0x2f, 0xcf, 0x1f, 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, 0x55, 0x0a, 0xbc, 0xec, ++ 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, 0xc1, 0x3e, 0x49, 0x0c, 0x56, 0x68, 0x2c, 0x3e, 0xfc, 0xcf, ++ 0xdd, 0x9b, 0x33, 0xca, 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, 0x12, 0x4e, 0xae, 0x9b, ++ 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, 0xec, 0x88, 0x99, 0xc3, 0xdd, 0x55, 0x8e, 0x88, 0x24, 0xee, ++ 0xea, 0xca, 0xe3, 0x60, 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, 0xd5, 0xb8, 0x43, 0xca, ++ 0x73, 0x2d, 0xeb, 0xe2, 0xe7, 0x42, 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, 0x3d, 0x3c, 0x0e, 0x2d, ++ 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, 0x83, 0xa5, 0xf9, 0x22, 0x4a, 0xef, 0xd2, 0xa5, 0xcf, 0xae, ++ 0xf5, 0x7d, 0x42, 0x5b, 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, 0x76, 0x8b, 0xaf, 0x7d, ++ 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, 0xe4, 0x25, 0x69, 0x53, 0x9a, 0xbf, 0x18, 0x25, 0xa5, 0x4e, ++ 0xd0, 0x17, 0x30, 0x8a, 0xc8, 0x1d, 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, 0x35, 0x9e, 0x6d, 0x17, ++ 0xc4, 0x64, 0xe9, 0x23, 0x51, 0x7b, 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, 0x07, 0x1d, 0x8c, 0x64, ++ 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, 0xce, 0xdd, 0x5a, 0xb1, 0xc0, 0xeb, 0x61, 0x35, ++ 0x7b, 0xcd, 0x4f, 0x19, 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, 0x14, 0xa8, 0xf7, 0xbc, 0x64, 0xcd, ++ 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, 0xde, 0x5a, 0xc0, 0x01, 0xed, 0xb7, 0xb8, 0x5a, 0x15, 0x80, ++ 0x45, 0x60, 0xce, 0x6f, 0x22, 0xdb, 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, 0x72, 0xda, 0x7f, 0x60, ++ 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, 0x52, 0x02, 0x93, 0xcd, 0x92, 0x90, 0x11, 0x02, 0xf2, 0xe2, ++ 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, 0xac, 0xa9, 0x15, 0xc9, 0xa0, 0x09, 0xb4, 0xa9, 0xa6, 0xa7, ++ 0xd8, 0xf7, 0x94, 0x71, 0x92, 0x21, 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, 0xff, 0x1e, 0x07, 0xf7, ++ 0x7e, 0xa1, 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, 0x10, 0xce, 0x66, 0x8a, 0x1a, 0xec, 0xcd, 0xa1, ++ 0xf2, 0x29, 0xcc, 0xae, 0x94, 0xe2, 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, 0x48, 0xfb, 0xfd, 0x29, ++ 0x90, 0x1b, 0x59, 0x5e, 0x5d, 0x3e, 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, 0xaa, 0x14, 0xbb, 0x1b, ++ 0x77, 0x5d, 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, 0xac, 0xd0, 0x58, 0x7c, 0x3b, 0x5d, ++ 0x53, 0x2b, 0x3e, 0x88, 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, 0x93, 0x79, 0x65, 0x2b, ++ 0xe5, 0x7e, 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, 0x41, 0x6b, 0x65, 0x2d, 0x21, 0x48, 0x7b, 0x7e, ++ 0x49, 0xf0, 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, 0x85, 0x9f, 0xdd, 0x1a, 0x20, 0xf0, ++ 0x98, 0xfb, 0xfd, 0xa5, 0x07, 0x02, 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, 0x60, 0x94, 0xd1, 0xfb, ++ 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, 0xd5, 0xc8, 0x4d, 0xbe, 0x0c, 0xf3, 0xb3, 0x27, ++ 0x43, 0x28, 0xb5, 0xbd, 0xf8, 0xca, 0x02, 0xba, 0x3c, 0x24, 0x61, 0xdb, 0xc4, 0xba, 0xb1, 0x28, ++ 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, 0x25, 0x58, 0x0a, 0x54, 0x9a, 0x5e, 0x32, 0x87, ++ 0xc7, 0x40, 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, 0x60, 0xe1, 0x97, 0xba, 0x5c, 0x2d, 0xeb, 0x40, ++ 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, 0xe0, 0x92, 0x11, 0x1b, 0x58, 0xca, 0x53, 0x92, 0x04, 0x1e, ++ 0xcc, 0x84, 0x4d, 0xd8, 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, 0x69, 0xf4, 0xcd, 0x9d, 0xe6, 0x84, ++ 0x14, 0x73, 0xd9, 0xa9, 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, 0x0b, 0x88, 0x32, 0x83, 0xe1, 0x73, ++ 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, 0xcd, 0x61, 0x18, 0x71, 0x1b, 0x69, 0xf9, 0x37, ++ 0x2f, 0xb2, 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, 0xeb, 0x85, 0x50, 0xe5, 0x5a, 0xb5, 0x53, 0xb2, ++ 0x47, 0x58, 0xe7, 0x21, 0xd5, 0xd4, 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, 0xa1, 0xfa, 0x84, 0x58, ++ 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, 0x7d, 0x4f, 0x04, 0xf6, 0xe5, 0xf2, 0xca, 0x56, ++ 0x5f, 0xbb, 0xc8, 0xef, 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, 0xba, 0x03, 0x3c, 0xb9, 0x3a, 0xbb, ++ 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, 0x2d, 0x3f, 0x39, 0x11, 0x97, 0x28, 0xb5, 0x36, ++ 0xb8, 0xfd, 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, 0xce, 0xd1, 0xba, 0xfd, ++ 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, 0x8e, 0xe2, 0x6f, 0xe8, 0x1e, 0xfc, 0x6d, 0xe2, 0x56, 0x4a, ++ 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, 0xd1, 0x8c, 0x62, 0x5d, 0xb9, 0x14, ++ 0x23, 0x22, 0x09, 0x03, 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, 0xf5, 0x75, 0x0c, 0x22, ++ 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, 0x51, 0xe5, 0xb1, 0xfb, 0x22, 0xc7, 0xb7, 0xe5, 0xfa, 0xde, ++ 0x62, 0x32, 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, 0x2b, 0x84, 0xbd, 0x52, 0xe2, 0xef, 0x46, 0x32, ++ 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, 0x4f, 0xdc, 0x26, 0xe4, 0x48, 0x94, 0x41, 0xdc, 0xaa, 0x85, ++ 0x31, 0x19, 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, 0xbf, 0x29, 0x71, 0x96, 0x23, 0x19, ++ 0x30, 0x05, 0x5e, 0x5f, 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, 0xf9, 0x86, 0xbf, 0x05, ++ 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, 0x0c, 0xb5, 0xcb, 0x86, 0xea, 0x4d, 0x25, 0x08, ++ 0x20, 0x06, 0xd5, 0x6a, 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, 0xae, 0x45, 0x6b, 0x06, ++ 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, 0xe4, 0x77, 0xfe, 0xc0, ++ 0xd7, 0x43, 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, 0xf4, 0x1a, 0x0b, 0xee, 0x3f, 0x43, ++ 0x3d, 0x89, 0x5d, 0x1f, 0xf2, 0x4c, 0xf1, 0x56, 0x2c, 0xea, 0x07, 0x51, 0xde, 0x56, 0x7c, 0x89, ++ 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, 0x1c, 0x7b, 0xad, 0x0c, 0xf0, 0xa1, 0xe8, 0xa9, ++ 0xc6, 0x5c, 0xc0, 0x6d, 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, 0xd4, 0x3d, 0x77, 0x5c, ++ 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, 0x46, 0x2c, 0xc8, 0x66, 0xde, 0xf2, 0xb5, 0x2c, 0x92, 0x31, ++ 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, 0x4c, 0x62, 0xa4, 0x2e, 0x60, 0xd3, ++ 0x15, 0x6f, 0x2c, 0x8e, 0x03, 0x80, 0xc9, 0x93, 0xb9, 0x9c, 0x11, 0x82, 0xba, 0x93, 0x7d, 0x6f, ++ 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, 0xc3, 0x84, 0x75, 0x28, 0x37, 0xb3, 0xe8, 0x84, 0x4d, 0xe7, ++ 0x4b, 0xc8, 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, 0xac, 0x55, 0xb1, 0x8b, 0x0e, 0x3a, 0xdb, 0xc8, ++ 0x34, 0x75, 0x0c, 0xc3, 0x32, 0x96, 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, 0x9c, 0xc6, 0x8a, 0x75, ++ 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, 0x0f, 0x09, 0x89, 0x46, 0x31, 0xcf, 0xbd, 0x0a, ++ 0x92, 0x23, 0x70, 0x10, 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, 0x79, 0x34, 0x40, 0x23, ++ 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, 0xc9, 0xb3, 0xe0, 0xb2, 0xfc, 0x52, 0x5b, 0x8e, ++ 0x6e, 0xa2, 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, 0x4d, 0x2f, 0x19, 0xa2, ++ 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, 0x35, 0x82, 0x03, 0xbc, 0x42, 0xc0, 0xdb, 0x82, 0x98, 0x02, ++ 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, 0x84, 0x43, 0x75, 0xc7, 0xf3, 0x04, ++ 0x3b, 0xc1, 0x26, 0xcd, 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, 0x68, 0x36, 0xb2, 0xc1, ++ 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, 0x61, 0x34, 0xa9, 0xfa, 0x15, 0x53, 0x22, 0xff, ++ 0xe4, 0x62, 0x3c, 0x49, 0xfa, 0x8b, 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, 0xa9, 0x58, 0xe7, 0x62, ++ 0x2c, 0x96, 0x23, 0x0d, 0xdc, 0xd2, 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, 0x01, 0x85, 0x34, 0x96, ++ 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, 0x99, 0x18, 0x23, 0x81, 0x13, 0x91, ++ 0xb6, 0x55, 0xf7, 0xe6, 0x2c, 0xdf, 0x95, 0x31, 0x9e, 0xad, 0x67, 0x56, 0xb2, 0x31, 0x1e, 0x55, ++ 0xd3, 0x33, 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, 0xcb, 0xda, 0x9c, 0x32, 0x6e, 0xae, 0x0a, 0x33, ++ 0xe7, 0x46, 0xe0, 0x20, 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, 0xf2, 0x68, 0x80, 0x46, ++ 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, 0x3b, 0xa4, 0xb6, 0xdf, ++ 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, 0xcc, 0xb4, 0x26, 0x31, 0x52, 0x17, 0x30, 0x88, ++ 0x04, 0x70, 0x52, 0x9c, 0x2d, 0x1e, 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, 0x65, 0x40, 0x35, 0x70, ++ 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, 0x04, 0xb7, 0x78, 0x48, 0xc2, 0x75, 0x4b, 0xb7, 0xa1, 0x50, ++ 0xef, 0xa6, 0x44, 0xdb, 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, 0x38, 0xe8, 0xea, 0xa6, ++ 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, 0x2a, 0xa6, 0x44, 0x3d, ++ 0x0b, 0xc4, 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, 0xfe, 0x4e, 0x91, 0xb0, 0x0d, 0xc4, ++ 0x9e, 0xb3, 0x86, 0x77, 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, 0xd6, 0xf4, 0x1f, 0xb3, ++ 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, 0x14, 0x1c, 0x9e, 0x49, 0xfd, 0xd7, 0x6f, 0x18, ++ 0x1c, 0x93, 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, 0xf8, 0x03, 0x8b, 0x93, ++ 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, 0xfb, 0x41, 0xe0, 0x5e, 0x21, 0x60, 0x8c, 0x41, 0x4c, 0x01, ++ 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, 0xda, 0x04, 0x50, 0xde, 0x58, 0x67, ++ 0x7a, 0xd1, 0xba, 0x3e, 0x27, 0x98, 0x21, 0xac, 0x58, 0x17, 0x0e, 0xa2, 0x7f, 0xac, 0xf8, 0xd1, ++ 0x5b, 0xcb, 0x9a, 0x73, 0x16, 0x8e, 0xab, 0xf9, 0x4f, 0xb7, 0xd2, 0x2b, 0x59, 0xf9, 0x0f, 0xcb, ++ 0xa3, 0x3a, 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, 0x76, 0xd4, 0x08, 0xa2, 0x63, 0x3a, ++ 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, 0xd9, 0x4b, 0xf0, 0xed, ++ 0x33, 0x21, 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, 0x8b, 0x3d, 0xa2, 0xb6, 0xd8, 0x21, ++ 0x68, 0xea, 0x18, 0x45, 0x64, 0xef, 0x86, 0x4f, 0x9f, 0x78, 0x59, 0x16, 0xfb, 0x4f, 0xd7, 0xea, ++ 0x96, 0x53, 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, 0x9b, 0xaa, 0xa1, 0xd5, 0x1c, 0x74, 0x75, 0x53, ++ 0x46, 0x44, 0x12, 0x06, 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, 0x29, 0xea, 0x18, 0x44, ++ 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, 0x69, 0x20, 0x24, 0x8d, 0x34, 0x14, 0xd3, 0x20, 0xfb, 0x38, ++ 0xff, 0xa5, 0xcf, 0xee, 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, 0xe2, 0xc9, 0x6f, 0x2b, 0x3e, 0xa5, ++ 0x95, 0x77, 0xfe, 0xe5, 0xea, 0xc6, 0x76, 0x44, 0xad, 0x80, 0x8f, 0xcb, 0x47, 0x44, 0x12, 0x77, ++ 0x64, 0x7a, 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, 0x47, 0xd0, 0xe1, 0x6e, 0x54, 0x8f, 0x88, 0x7a, ++ 0x40, 0x0c, 0x69, 0xd4, 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, 0x9f, 0x8a, 0xd6, 0x0c, ++ 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, 0x6b, 0x9a, 0x18, 0xa9, 0x55, 0xcf, 0x17, 0x9a, 0x4a, 0x10, ++ 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, 0x8f, 0xb6, 0x3f, 0x9c, 0xe1, 0xa3, 0x1a, 0x4b, ++ 0x0e, 0xa8, 0xdf, 0x29, 0x80, 0x2d, 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, 0x7c, 0xe0, 0xa4, 0xa8, ++ 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, 0x70, 0x2f, 0xf1, 0x30, 0x46, 0xc1, 0x26, 0xe1, ++ 0xfd, 0x9d, 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, 0xbc, 0x0b, 0xc5, 0x9d, ++ 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, 0xe8, 0x3f, 0xe1, 0x8b, 0x1f, 0x20, 0xc5, 0x3f, 0x85, 0xbe, ++ 0x91, 0x07, 0xac, 0x79, 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, 0xe7, 0xe3, 0x22, 0x04, 0x27, 0x07, ++ 0xa5, 0x72, 0xa0, 0xba, 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, 0x2a, 0xe8, 0xbe, 0xc2, 0xad, 0x72, ++ 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, 0x08, 0xad, 0xf0, 0x90, 0x47, 0xea, 0x96, 0xad, 0x81, 0xa0, ++ 0x56, 0x47, 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, 0x85, 0xb8, 0x70, 0x59, 0x7e, 0x29, 0xcc, 0x47, ++ 0xba, 0xc5, 0x01, 0x81, 0x5b, 0xfd, 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, 0x1d, 0xf1, 0x41, 0xc5, ++ 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, 0x93, 0x4c, 0xb9, 0xdf, 0x21, 0x16, ++ 0x18, 0xe3, 0x2f, 0xce, 0xee, 0x44, 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, 0x9d, 0x43, 0xbe, 0xe3, ++ 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, 0xa1, 0x35, 0x44, 0x4d, 0xad, 0x09, 0x37, 0x7f, ++ 0x8b, 0xdc, 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, 0x6c, 0x67, 0x62, 0xdc, ++ 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, 0x85, 0x66, 0x1b, 0xad, ++ 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, 0x7e, 0xe9, 0x5d, 0x10, 0xc8, 0x21, 0xd1, 0xe9, 0x93, 0xd7, ++ 0xce, 0xbc, 0x64, 0x96, 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, 0x1e, 0xbd, 0x1d, 0xbc, ++ 0xf7, 0x45, 0x6b, 0x15, 0x23, 0x1a, 0xfe, 0xab, 0x86, 0x04, 0x32, 0x99, 0xa5, 0xab, 0x54, 0x45, ++ 0xd2, 0x2f, 0x19, 0xc4, 0x3f, 0x12, 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, 0xe6, 0xbe, 0x96, 0x2f, ++ 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, 0x2e, 0xf7, 0x94, 0x20, ++ 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, 0x15, 0x74, 0x5f, 0x61, 0xb7, 0x39, ++ 0xb4, 0x6d, 0xde, 0xa8, 0xdb, 0xd0, 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, 0x61, 0x11, 0xe5, 0x6d, ++ 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, 0x91, 0xa4, 0xee, 0x10, 0x83, 0xfe, 0xa3, 0x5f, ++ 0xe1, 0x0e, 0x9b, 0xf2, 0x4d, 0x73, 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, 0x44, 0x08, 0x4e, 0x0e, ++ 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, 0x68, 0x7d, 0x3a, 0x9f, 0xe5, 0x98, 0xb1, 0x7d, 0x42, 0x2c, ++ 0x5d, 0x83, 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, 0x8e, 0x17, 0xef, 0x99, 0xc1, 0x83, ++ 0xfa, 0xc9, 0x68, 0x55, 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, 0x82, 0x7b, 0x97, 0xc9, ++ 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, 0x32, 0xd2, 0x59, 0xc2, 0x30, 0xe2, 0x36, 0xd2, 0x31, 0x6e, ++ 0x1f, 0xb7, 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, 0x0d, 0x60, 0xf5, 0xc6, 0xa3, 0x33, 0xec, 0xb7, ++ 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, 0xb5, 0xc0, 0xd8, 0xa8, 0xb8, 0x78, 0xaf, 0xc0, 0x5f, 0x90, ++ 0x01, 0x1c, 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, 0x1a, 0x0a, 0x88, 0x10, 0x9c, 0x1c, ++ 0x2d, 0x8a, 0xd6, 0x2a, 0x46, 0x34, 0x3f, 0x95, 0xcf, 0x08, 0x64, 0xf1, 0x89, 0x95, 0xa8, 0x8a, ++ 0x67, 0x5e, 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, 0x71, 0xfa, 0xcf, 0x70, 0x0f, 0xbf, 0xef, 0x5e, ++ 0xe2, 0x2a, 0x47, 0x9b, 0x20, 0x9a, 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, 0x1f, 0x38, 0x29, 0x2a, ++ 0x09, 0xfc, 0x51, 0xdc, 0xc0, 0xda, 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, 0x42, 0x90, 0xf6, 0xfc, ++ 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, 0x6a, 0x53, 0xf6, 0x39, 0x50, 0x5b, ++ 0x11, 0x1f, 0x7e, 0x12, 0x2e, 0x9e, 0x1b, 0xd3, 0xf1, 0x45, 0x79, 0xaa, 0xdf, 0xd3, 0x48, 0x1f, ++ 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, 0x8c, 0x0a, 0x7d, 0x5c, 0x3a, 0x21, 0x82, 0x49, ++ 0xdf, 0xa3, 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, 0x24, 0x4a, 0xc1, 0x6e, 0x55, 0xa3, ++ 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, 0xef, 0x6f, 0xbb, 0xf5, 0x6d, 0x02, 0x28, 0x6f, 0x2c, 0xd2, ++ 0x93, 0x3f, 0x85, 0x37, 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, 0xd3, 0xf7, 0xf1, 0x24, 0xdc, 0x3f, ++ 0x24, 0x76, 0x87, 0xf6, 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, 0xcb, 0x05, 0x5e, 0x76, ++ 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, 0x02, 0x69, 0x7c, 0x80, 0x92, 0xfc, 0x51, 0xbd, ++ 0x66, 0x42, 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, 0x87, 0xaf, 0x73, 0x42, ++ 0xfe, 0xb9, 0x3a, 0xc9, 0xe3, 0xc0, 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, 0xe7, 0x3b, 0xa2, 0xb9, ++ 0x07, 0x54, 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, 0x46, 0x36, 0x3e, 0x70, 0x52, 0x54, ++ 0x44, 0x7c, 0x3b, 0x48, 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, 0xfa, 0xca, 0xe3, 0x7c, ++ 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, 0x08, 0x67, 0x33, 0x45, 0x0d, 0x76, 0x87, 0xb1, ++ 0xf8, 0xf1, 0x41, 0x1b, 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, 0x51, 0x5b, 0x6c, 0xf1, ++ 0x06, 0x48, 0x7b, 0xd2, 0xda, 0x11, 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, 0xb6, 0x60, 0xce, 0x48, ++ 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, 0x35, 0xc8, 0x7b, 0xfd, 0x28, 0xcc, ++ 0xad, 0x92, 0x04, 0x41, 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, 0xfa, 0xb8, 0x74, 0x42, 0xc7, 0x92, ++ 0x2b, 0xc2, 0xad, 0xf8, 0x9c, 0x25, 0x84, 0xf5, 0xa3, 0x5c, 0x38, 0xcd, 0x3f, 0xf5, 0x66, 0xc2, ++ 0xae, 0xb6, 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, 0xd4, 0xa6, 0x2f, 0x72, 0xa0, 0xb6, ++ 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, 0x7d, 0x65, 0x90, 0x3e, ++ 0x39, 0xf9, 0x0f, 0x83, 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, 0x6f, 0x79, 0xbb, 0x16, 0x49, 0xf9, ++ 0xde, 0xbf, 0xef, 0xa3, 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, 0x3e, 0x40, 0x49, 0x7e, 0xc9, 0xbf, ++ 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, 0x1f, 0xc7, 0xef, 0xcc, 0x2b, 0x23, 0x70, 0xab, ++ 0xa8, 0xfe, 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, 0x99, 0x12, 0x6e, 0xfe, ++ 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, 0x02, 0xc9, 0x68, 0xef, ++ 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, 0x84, 0x6d, 0x4e, 0x19, 0x37, 0x57, 0x05, 0xf8, ++ 0x9a, 0xc3, 0xd4, 0xeb, 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, 0xb3, 0xb4, 0x2a, 0xc3, ++ 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, 0x8d, 0xdf, 0x43, 0x1c, 0x73, 0x5f, 0x4b, 0xf6, ++ 0x28, 0xe6, 0x71, 0x91, 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, 0x64, 0xc5, 0x01, 0xe6, ++ 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, 0xe6, 0x9f, 0x55, 0x77, 0xfb, 0x64, 0xdc, 0x9f, 0x14, 0x66, ++ 0xd5, 0x7b, 0x97, 0x31, 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, 0xc0, 0x0e, 0xd8, 0xce, 0xc4, 0x7b, ++ 0x7c, 0x99, 0xc1, 0xec, 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, 0xc9, 0xcc, 0x36, 0x99, ++ 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, 0x2a, 0x51, 0x83, 0x12, 0xab, 0x91, 0x8f, 0x8d, ++ 0x38, 0xe5, 0xfa, 0xa4, 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, 0x33, 0x06, 0xd5, 0xe5, ++ 0x4f, 0xb8, 0x43, 0xda, 0x8f, 0xe8, 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, 0x6b, 0x7a, 0xee, 0xb8, ++ 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, 0x5e, 0x18, 0x1b, 0x15, 0x17, 0x0f, 0xcc, 0x18, 0xd2, 0x12, ++ 0x27, 0x52, 0x5b, 0x9f, 0xeb, 0x07, 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, 0x90, 0x35, 0x39, 0x52, ++ 0x76, 0x41, 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, 0x80, 0xbf, 0xb6, 0xda, 0xd0, 0x6c, 0xa7, 0x41, ++ 0x78, 0xe9, 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, 0x7c, 0x9a, 0x3a, 0xb6, 0xac, 0x8c, 0x03, 0xe9, ++ 0x89, 0xe4, 0x83, 0xb7, 0x29, 0x9c, 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, 0xbf, 0x47, 0x99, 0xe4, ++ 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, 0xdf, 0x07, 0xde, 0x13, 0x3c, 0x3b, 0xda, 0x07, 0xac, 0x94, ++ 0xaf, 0xaa, 0x2d, 0x0f, 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, 0xce, 0xac, 0xa7, 0x62, 0x3c, 0xaa, ++ 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, 0x19, 0x7c, 0x6b, 0x8f, 0x5e, 0xe4, 0x83, 0xaf, ++ 0x84, 0x68, 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, 0x5c, 0xc5, 0xf6, 0x61, 0x98, 0x97, 0x5a, 0x68, ++ 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, 0x7a, 0x78, 0x1c, 0x5a, ++ 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, 0x45, 0xcb, 0xea, 0x50, 0x6e, 0xa5, 0x13, 0xcb, 0x9a, 0x0d, ++ 0x63, 0x2e, 0x60, 0xd7, 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, 0x6a, 0xff, 0xda, 0x2e, ++ 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, 0xa5, 0x59, 0xfb, 0x4b, 0x36, 0x6f, 0x40, 0x59, 0x9e, 0x13, ++ 0xc8, 0xf4, 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, 0x01, 0xdc, 0xa8, 0xdd, 0xd3, 0xf4, ++ 0x03, 0x24, 0xdc, 0x69, 0x6d, 0xe9, 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, 0x5b, 0x30, 0x67, 0x24, ++ 0xed, 0x9e, 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, 0xb5, 0x7d, 0xeb, 0xc8, 0x11, 0x9e, ++ 0x70, 0x09, 0x37, 0x8b, 0x8a, 0xab, 0x2f, 0x0c, 0xec, 0xeb, 0xea, 0xe6, 0x66, 0x0c, 0x69, 0x09, ++ 0x3c, 0x95, 0xa8, 0x38, 0x68, 0xaa, 0x24, 0x46, 0x3e, 0x4d, 0x1d, 0x5b, 0x56, 0x46, 0xe0, 0x95, ++ 0x8e, 0xb0, 0x0d, 0x42, 0x69, 0x6b, 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, 0x81, 0x37, 0xcb, 0xb0, ++ 0xd9, 0xeb, 0x61, 0x56, 0x08, 0xc7, 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, 0x77, 0x0e, 0x9b, 0xeb, ++ 0x10, 0x03, 0x8b, 0x35, 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, 0x63, 0xa0, 0x57, 0xc3, 0xd4, 0x03, ++ 0x1a, 0xdb, 0x06, 0x80, 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, 0x4e, 0x63, 0x45, 0xdb, ++ 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, 0x3d, 0xf1, 0x5f, 0x9b, 0x8d, 0xc4, 0x78, 0x97, ++ 0xee, 0xba, 0xb1, 0xfc, 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, 0xb0, 0xf8, 0x76, 0xba, ++ 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, 0xf3, 0xed, 0xb4, 0xd0, ++ 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, 0x89, 0x0d, 0xbb, 0xdf, 0x94, 0x64, 0xe9, 0x4f, ++ 0xc9, 0xe8, 0xea, 0x63, 0xbc, 0xbf, 0xb3, 0xcd, 0x9c, 0xc4, 0x1b, 0xd6, 0x20, 0xcd, 0x4f, 0xe8, ++ 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, 0x6e, 0x3d, 0x20, 0xbc, 0x24, 0x9c, 0x9f, 0xf5, ++ 0xb2, 0x25, 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, 0xd7, 0x71, 0x2b, 0x25, ++ 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, 0x14, 0xd6, 0x16, 0x69, ++ 0x6c, 0x9a, 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, 0x31, 0x3e, 0x9e, 0x0f, 0xe2, 0x9a, ++ 0x9c, 0x8b, 0xaf, 0x39, 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, 0x05, 0xd4, 0xe4, 0x8b, ++ 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, 0x45, 0xb9, 0x9d, 0xee, 0xc6, 0x73, 0xd9, 0xc7, ++ 0x05, 0x6c, 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, 0xed, 0x50, 0xa9, 0x6c, ++ 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, 0x70, 0x49, 0xe9, 0xec, 0x2c, 0x65, 0xc8, 0x49, 0x02, 0x0f, ++ 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, 0x90, 0xdb, 0xf8, 0xf7, 0x74, 0xaf, 0x9b, 0xdb, 0x06, 0x11, ++ 0xd1, 0x0b, 0xc5, 0xad, 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, 0xbd, 0x8e, 0xf1, 0x0b, ++ 0x12, 0x3b, 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, 0xc7, 0x6f, 0x57, 0xb4, 0x84, 0xe3, 0x2f, 0x3b, ++ 0x87, 0x4c, 0x5c, 0x9e, 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, 0xc3, 0xa7, 0x3d, 0x4c, ++ 0x08, 0xe0, 0xa4, 0xfb, 0x5a, 0x3c, 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, 0xca, 0x80, 0x6a, 0xe0, ++ 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, 0xc2, 0xd9, 0x6b, 0x3a, 0xe6, 0x3f, 0x8a, 0xd9, 0xf4, 0xf3, ++ 0xfc, 0x81, 0x13, 0x87, 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, 0x34, 0x1b, 0x59, 0x81, ++ 0x21, 0x1a, 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, 0x17, 0xa0, 0xdc, 0x89, 0x26, 0x55, 0xf7, 0x1a, ++ 0x85, 0x74, 0x75, 0xd0, 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, 0x10, 0x87, 0xc6, 0x74, ++ 0x55, 0x63, 0x45, 0x5a, 0x96, 0xa3, 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, 0x25, 0x19, 0xab, 0x63, ++ 0x4e, 0xa4, 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, 0xc3, 0xa9, 0xe3, 0x6a, 0x72, 0xa4, ++ 0xec, 0x82, 0x98, 0xb2, 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, 0x63, 0xd8, 0x8d, 0x82, ++ 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, 0x5e, 0xac, 0x8a, 0xe1, 0x0a, 0x6b, 0x0b, 0xd5, ++ 0x36, 0x4d, 0x25, 0x8d, 0xc5, 0x99, 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, 0x4f, 0xe6, 0x71, 0x4d, ++ 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, 0x28, 0x5c, 0xb6, 0x95, 0x98, 0xc4, 0x8b, 0x5c, 0xc0, 0x65, ++ 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, 0xff, 0xf6, 0x98, 0x16, 0xe3, 0x15, 0xc7, 0xf6, 0xed, 0x51, ++ 0x5c, 0x9f, 0x14, 0x86, 0x56, 0x79, 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, 0x67, 0x89, 0x5d, 0x9f, ++ 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, 0x2b, 0xbb, 0x94, 0xa3, 0x28, 0x93, 0x2d, 0xbb, 0xc8, 0x59, ++ 0xf4, 0x61, 0xb7, 0x7c, 0x4e, 0xf3, 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, 0xfe, 0x9b, 0x33, 0x61, ++ 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, 0x61, 0x8d, 0xd4, 0x1d, 0x73, 0xfe, 0x45, 0x8d, 0x7a, 0x98, ++ 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, 0x77, 0x08, 0xa0, 0x7f, 0xb0, 0xce, ++ 0xa2, 0x26, 0x2e, 0x4f, 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, 0x80, 0xb2, 0xff, 0x26, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xaa, 0xc6, 0x8a, 0xb4, 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, 0x4a, 0x32, 0x95, 0xc6, ++ 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, 0xfa, 0x1c, 0xfe, 0x4c, 0xf0, 0xec, 0xee, 0x1c, 0xf5, 0x15, ++ 0x42, 0x34, 0x40, 0x9a, 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, 0x7b, 0xd1, 0x4c, 0xaa, 0x2d, 0x34, ++ }, ++ { /* 14 */ ++ 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, 0x53, 0x5d, 0xa9, 0x30, 0x47, 0x7c, ++ 0xe9, 0xdb, 0x31, 0x5c, 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, 0x83, 0x15, 0x0b, 0x98, 0xe9, 0x1c, ++ 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, 0x87, 0xf8, 0x58, 0xe9, 0x7f, 0xf7, 0x8f, 0x8c, ++ 0x4e, 0x4a, 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, 0x3b, 0x95, 0x4e, 0x2e, ++ 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, 0xf1, 0x7a, 0x03, 0x9c, ++ 0xcf, 0x7c, 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, 0xb4, 0xce, 0x19, 0xa4, 0xcf, 0x7f, ++ 0x0c, 0xd7, 0x0d, 0x1f, 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, 0x42, 0x2b, 0x0c, 0x35, ++ 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, 0x65, 0x01, 0x95, 0xbe, 0x64, 0xd5, 0xba, 0x3f, ++ 0x12, 0x30, 0xf0, 0xcf, 0x86, 0xcb, 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, 0xe7, 0x89, 0x12, 0xa4, ++ 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, 0x03, 0xf9, 0x84, 0xe5, 0xba, 0xe2, 0x61, 0x59, 0xf0, 0x02, ++ 0x2b, 0xf2, 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, 0x4b, 0xda, 0xbe, 0x80, 0x2b, 0x22, ++ 0x2c, 0xfa, 0x94, 0xf6, 0x7b, 0x02, 0x1a, 0x6a, 0x52, 0x23, 0xf4, 0xa0, 0x71, 0xe3, 0x2c, 0xad, ++ 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, 0xa3, 0x77, 0x72, 0x2d, 0xd4, 0x41, 0x32, 0x3c, ++ 0x1b, 0x28, 0x88, 0x49, 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, 0x75, 0x2c, 0x1b, 0xf6, ++ 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, 0x4b, 0xe0, 0x54, 0x19, 0xf3, 0xb6, 0x4d, 0x7c, 0xd2, 0x72, ++ 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, 0xfc, 0xdd, 0x7c, 0x32, 0x08, 0x26, ++ 0xdd, 0x4c, 0xbf, 0x94, 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, 0xb0, 0x11, 0xfe, 0x2d, 0xdd, 0xdb, ++ 0x60, 0x77, 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, 0xe9, 0xbc, 0x9a, 0xd5, 0x55, 0x9b, 0x60, 0x6b, ++ 0x72, 0x47, 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, 0xac, 0x1e, 0x9e, 0x0a, 0xb2, 0x12, 0x72, 0xcf, ++ 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, 0x24, 0xed, 0x68, 0x7e, 0xc5, 0x2a, 0x16, 0xf3, 0x11, 0x38, ++ 0x06, 0x8a, 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, 0x41, 0x29, 0x21, 0xf4, 0x06, 0xfb, ++ 0x5d, 0xf8, 0x9e, 0xb6, 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, 0x32, 0x8b, 0x5d, 0xfe, ++ 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, 0xf7, 0x6e, 0x81, 0x9b, 0x99, 0x3d, 0xe0, 0x4e, ++ 0x86, 0x3e, 0xc6, 0xcc, 0x66, 0x96, 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, 0xed, 0x52, 0x86, 0xde, ++ 0xaa, 0xc4, 0x52, 0x3a, 0x1d, 0x94, 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, 0x9c, 0xb1, 0xaa, 0x73, ++ 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, 0x34, 0xd4, 0xa4, 0x46, 0x2b, 0x83, 0xe2, 0x05, 0x58, 0x99, ++ 0x24, 0x60, 0x23, 0x5d, 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, 0x0d, 0xd1, 0x24, 0x8b, ++ 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, 0xcb, 0xeb, 0xfb, 0x1a, 0x8f, 0xb7, 0xe1, 0xc0, 0xdf, 0x33, ++ 0x69, 0x6f, 0x10, 0x7e, 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, 0xc7, 0x3e, 0x69, 0x39, ++ 0x7a, 0xdd, 0x2f, 0x9c, 0x4e, 0xfe, 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, 0xce, 0x20, 0x7a, 0xe9, ++ 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, 0x96, 0x03, 0xa8, 0x32, 0x25, 0xaf, 0x9a, 0xf8, 0x67, 0xe4, ++ 0xec, 0x14, 0x44, 0xc5, 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, 0xdb, 0x16, 0xec, 0x7b, ++ 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, 0xbe, 0x8c, 0x95, 0x5e, 0x4d, 0x8b, 0xcb, 0xac, 0x30, 0xd4, ++ 0x6a, 0x2a, 0x82, 0x09, 0xe5, 0x50, 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, 0x36, 0x44, 0x6a, 0xa5, ++ 0x0e, 0x10, 0x50, 0x45, 0xc3, 0xf8, 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, 0x5d, 0xc6, 0x0e, 0xdd, ++ 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, 0x22, 0xb5, 0x2d, 0xd2, 0x97, 0x29, 0x43, 0x6f, ++ 0x2d, 0x78, 0x5b, 0xdb, 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, 0x0a, 0xf3, 0x9f, 0x74, 0x2d, 0xd9, ++ 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, 0xba, 0x13, 0xa6, 0x50, 0x97, 0x30, 0xf6, 0x70, 0xb3, 0x6d, ++ 0xe4, 0x8e, 0xf3, 0x6e, 0x37, 0x91, 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, 0xa7, 0x24, 0xe4, 0x5d, ++ 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, 0x48, 0x19, 0xd0, 0xfc, 0x49, 0x54, 0x2c, 0x25, 0x22, 0x70, ++ 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, 0xe5, 0x55, 0x0d, 0x7f, 0x50, 0x94, 0x72, 0x26, 0xab, 0x07, ++ 0x3d, 0x8f, 0xf6, 0x4e, 0x27, 0x7f, 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, 0x67, 0x10, 0x3d, 0x95, ++ 0x34, 0x97, 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, 0xf9, 0x0c, 0x33, 0x04, 0xf5, 0xb5, 0x34, 0xc7, ++ 0x90, 0x43, 0x8c, 0xb7, 0xba, 0x97, 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, 0x34, 0xc2, 0x90, 0x69, ++ 0x97, 0x4b, 0xa4, 0x74, 0x3a, 0xeb, 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, 0xfb, 0xa1, 0x97, 0xe6, ++ 0xb0, 0x6e, 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, 0x56, 0xc5, 0x07, 0x0a, 0xb0, 0xf1, ++ 0xe5, 0x0c, 0x3c, 0x43, 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, 0x49, 0xb3, 0xe5, 0x29, ++ 0x42, 0x9d, 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, 0x39, 0x40, 0xd3, 0x81, 0x79, 0xbe, 0x42, 0x1b, ++ 0x79, 0x98, 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, 0xa3, 0x22, 0x3f, 0x5a, 0x79, 0x75, ++ 0xc0, 0xee, 0xd0, 0x33, 0xf8, 0xc4, 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, 0xaa, 0xf5, 0xc0, 0xd6, ++ 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, 0xab, 0x2f, 0xc7, 0xa4, 0x84, 0x56, 0x18, 0x6a, ++ 0x4b, 0x85, 0xd4, 0xcd, 0x87, 0x1c, 0x8c, 0x69, 0xfa, 0x11, 0xd1, 0x0f, 0xeb, 0x1b, 0x4b, 0x49, ++ 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, 0xc5, 0x6b, 0x05, 0x98, 0xae, 0x3a, 0xf7, 0x8d, ++ 0xb8, 0xf4, 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, 0x53, 0x28, 0xaa, 0x18, 0x7b, 0x38, 0xb8, 0xd7, ++ 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, 0x65, 0x5e, 0xa2, 0x7c, 0x2c, 0x95, 0xde, 0x9a, 0xa6, 0x46, ++ 0x59, 0xb5, 0x24, 0x02, 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, 0xd5, 0xd0, 0x0c, 0x92, 0x59, 0xed, ++ 0x64, 0x3a, 0xd2, 0x4c, 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, 0xe4, 0x5a, 0x6b, 0x82, 0x64, 0x78, ++ 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, 0xcf, 0x25, 0x0c, 0xa2, 0xea, 0x58, 0x36, 0x2f, ++ 0xb4, 0x23, 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, 0xe7, 0xde, 0x28, 0x4a, 0x39, 0x13, 0xb4, 0xe2, ++ 0x81, 0x36, 0xee, 0x0f, 0xe6, 0xea, 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, 0x22, 0x31, 0x81, 0x51, ++ 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, 0xc3, 0x51, 0x02, 0x8e, 0x92, 0xa5, 0x09, 0x52, ++ 0x78, 0x1a, 0x72, 0xc6, 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, 0x5d, 0x71, 0xd1, 0xcd, 0x78, 0x01, ++ 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, 0x58, 0x6d, 0xfd, 0x9a, 0x35, 0x81, 0xed, 0x0f, ++ 0x5f, 0x3f, 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, 0x2d, 0x66, 0x5f, 0x16, ++ 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, 0x7e, 0x63, 0x8c, 0xbd, 0x0f, 0x6b, 0x31, 0x4e, 0xda, 0x54, ++ 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, 0x89, 0xe6, 0x94, 0xec, 0xc4, 0xc5, ++ 0x29, 0x35, 0xe1, 0x6f, 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, 0xa1, 0x6d, 0x29, 0xca, ++ 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, 0x82, 0xa5, 0x57, 0x04, 0x11, 0xbd, 0x53, 0xd2, 0xad, 0xfc, ++ 0x07, 0x08, 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, 0x41, 0x8e, 0xbf, 0x7a, 0xcf, 0x63, 0x07, 0x8f, ++ 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, 0x4a, 0xb7, 0x28, 0xfb, 0x24, 0xe8, 0xd3, 0x4b, 0x82, 0xcd, ++ 0xe2, 0x04, 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, 0xbe, 0x3d, 0x86, 0xd0, 0xe2, 0xa6, ++ 0x31, 0x58, 0xfb, 0x51, 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, 0x25, 0x3b, 0x31, 0xa0, ++ 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, 0x32, 0x05, 0x84, 0x03, 0x37, 0x07, 0x17, 0xc3, ++ 0x9f, 0xd1, 0x13, 0xdf, 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, 0x87, 0x93, 0x9f, 0xc0, ++ 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, 0x8d, 0x48, 0x0b, 0xba, ++ 0x16, 0x7d, 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, 0x7a, 0x50, 0xd9, 0x90, 0x16, 0xb7, ++ 0x7f, 0x12, 0x5a, 0x05, 0xe3, 0xe7, 0xc9, 0x45, 0x03, 0x1d, 0xe2, 0x0b, 0x1e, 0xae, 0x7f, 0x8e, ++ 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, 0xcb, 0x09, 0xb7, 0x07, 0xc2, 0xb2, 0x23, 0x04, ++ 0x6b, 0xa8, 0x4d, 0x24, 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, 0xd8, 0xd3, 0x6b, 0xd1, ++ 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, 0x79, 0x05, 0x3b, 0x56, 0x6f, 0x32, 0x6d, 0xcb, 0xa9, 0xef, ++ 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, 0x26, 0x66, 0x41, 0xee, 0x8b, 0x9f, ++ 0xb7, 0x66, 0x3d, 0x9d, 0xaf, 0x74, 0x41, 0xb3, 0xca, 0x02, 0xe9, 0xbf, 0xc8, 0x69, 0xb7, 0x7e, ++ 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, 0xb8, 0xbd, 0x5e, 0x57, 0xfa, 0x8c, 0x09, 0x1e, 0x13, 0xd0, ++ 0x1c, 0x20, 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, 0xc7, 0x7d, 0xb9, 0x2b, 0xba, 0x4f, 0x1c, 0x79, ++ 0xfb, 0xeb, 0xc1, 0x93, 0xa8, 0x14, 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, 0xec, 0x11, 0xfb, 0xb8, ++ 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, 0xdf, 0x95, 0xa5, 0x73, 0x4a, 0x76, 0x62, 0x83, ++ 0xf2, 0xf3, 0xb9, 0x15, 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, 0x7e, 0xb4, 0xf2, 0xea, ++ 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, 0x60, 0x26, 0x70, 0xa3, 0x46, 0xe4, 0x3b, 0x6e, ++ 0x9a, 0x1e, 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, 0x57, 0x1d, 0x9a, 0xa7, ++ 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, 0x60, 0x96, 0xed, 0x90, 0x21, 0x70, 0x7d, 0x71, 0x75, 0x40, ++ 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, 0x42, 0xe0, 0xfa, 0xe2, 0xea, 0x80, ++ 0xd0, 0x19, 0x7d, 0xa6, 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, 0x52, 0x91, 0xd0, 0x9a, ++ 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, 0x08, 0x58, 0xb5, 0x89, 0x50, 0x17, 0x2a, 0x56, ++ 0x91, 0xc1, 0x43, 0x9a, 0x4d, 0x44, 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, 0xda, 0x55, 0x91, 0x1d, ++ 0x02, 0xc7, 0x5d, 0x5a, 0x2d, 0x65, 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, 0x1f, 0xed, 0x02, 0xe8, ++ 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, 0xad, 0x0e, 0x47, 0xa7, 0x46, 0x08, ++ 0xa7, 0x91, 0x90, 0x08, 0x04, 0xda, 0x2b, 0x76, 0xb9, 0x89, 0xd2, 0xc6, 0x30, 0x0d, 0xa7, 0x32, ++ 0xdc, 0xce, 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, 0xd6, 0xc6, 0x4e, 0x42, 0x10, 0xba, 0xdc, 0xaf, ++ 0x27, 0x25, 0xb1, 0x2a, 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, 0xfc, 0xab, 0x27, 0x17, ++ 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, 0x8c, 0x0b, 0x76, 0xdc, ++ 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, 0x94, 0x55, 0x13, 0x33, 0xc1, 0x77, 0xa4, 0xae, ++ 0xca, 0xb3, 0x3a, 0xc2, 0x61, 0xf6, 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, 0xc9, 0x2a, 0xca, 0x18, ++ 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, 0xdb, 0xd2, 0x37, 0x22, 0x61, 0x1e, 0x15, 0x36, 0x96, 0x92, ++ 0x70, 0x80, 0xc5, 0x6d, 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, 0xad, 0xff, 0x70, 0x27, ++ 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, 0xa0, 0x2e, 0x54, 0xac, ++ 0xe1, 0x41, 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, 0x7f, 0xc8, 0x77, 0xaa, 0xe1, 0x3a, ++ 0x6f, 0xe5, 0xf7, 0x90, 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, 0xe6, 0xca, 0x6f, 0xc2, ++ 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, 0x56, 0x0f, 0x4f, 0x05, 0x59, 0x09, 0x39, 0x86, ++ 0x33, 0x9f, 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, 0x3a, 0xd6, 0x33, 0x48, ++ 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, 0x30, 0x4b, 0x97, 0x48, 0xf1, 0x38, 0xdf, 0xd9, 0xdb, 0x20, ++ 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, 0x6d, 0xbc, 0xff, 0x6e, 0xa0, 0xbd, ++ 0xfe, 0x24, 0xb4, 0x0a, 0x05, 0x0d, 0x51, 0x8a, 0x06, 0x3a, 0x07, 0x16, 0x3c, 0x9f, 0xfe, 0xdf, ++ 0xb2, 0xa9, 0x48, 0x04, 0x02, 0x6d, 0xf4, 0x3b, 0xbd, 0xa5, 0x69, 0x63, 0x18, 0xe7, 0xb2, 0x19, ++ 0x10, 0xf7, 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, 0x3b, 0x79, 0xf8, 0x64, 0x10, 0x4c, ++ 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, 0x43, 0x68, 0x71, 0x53, ++ 0x87, 0xbc, 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, 0xa4, 0x34, 0x03, 0xc5, 0x87, 0xaa, ++ 0x35, 0x15, 0x41, 0xe5, 0x93, 0x28, 0x0b, 0x04, 0xe2, 0xf9, 0xcd, 0x57, 0x1b, 0x22, 0x35, 0xb3, ++ 0x38, 0x40, 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, 0x4d, 0xfa, 0xb1, 0x56, 0xb7, 0x9e, 0x38, 0xf2, ++ 0x52, 0x6a, 0x01, 0xde, 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, 0x81, 0xda, 0x52, 0x57, ++ 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, 0x0a, 0x53, 0x9e, 0x1b, 0x1a, 0x09, 0x85, 0x15, 0x65, 0x0c, ++ 0xde, 0x09, 0x2d, 0xe3, 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, 0x71, 0xe4, 0x0f, 0x57, 0xde, 0x47, ++ 0x8e, 0xa4, 0x71, 0x67, 0xd2, 0xc1, 0x84, 0x94, 0x9c, 0x0d, 0xa6, 0xba, 0x91, 0x60, 0x8e, 0xf8, ++ 0xa8, 0x03, 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, 0x20, 0xa3, 0x91, 0x61, 0x83, 0x5c, 0xa8, 0x9b, ++ 0xfd, 0x61, 0x26, 0x7d, 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, 0xcd, 0xe5, 0xfd, 0x43, ++ 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, 0x86, 0x3a, 0x64, 0x0a, 0xcb, 0x06, 0x6e, 0x0e, 0x2e, 0x45, ++ 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, 0x1b, 0xf5, 0xfe, 0x53, 0xee, 0x97, 0x01, 0x74, ++ 0xf8, 0xae, 0x53, 0xe4, 0x72, 0xa2, 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, 0x1d, 0x6b, 0xf8, 0x24, ++ 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, 0xaa, 0x24, 0x99, 0x1c, 0x8e, 0x8d, 0x8c, 0x10, ++ 0xbb, 0xb1, 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, 0x8a, 0x42, 0xbb, 0x4b, ++ 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, 0x10, 0x39, 0xcc, 0x38, 0xee, 0xa9, 0xf4, 0xf6, 0x49, 0xa1, ++ 0x44, 0x17, 0x4b, 0xa5, 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, 0x92, 0xa8, 0x58, 0x4a, 0x44, 0xe0, ++ 0xbf, 0xfc, 0x8a, 0x36, 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, 0x15, 0x62, 0xb4, 0x5b, 0xbf, 0x58, ++ 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, 0x75, 0x67, 0x6e, 0x44, 0xc2, 0x3c, 0x2a, 0x6c, 0xef, 0xe7, ++ 0xfc, 0xe3, 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, 0x30, 0x13, 0x38, 0xb0, 0x23, 0x72, 0xfc, 0x37, ++ 0x3a, 0x87, 0xde, 0x8d, 0xa7, 0x03, 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, 0xa8, 0x73, 0x3a, 0x1a, ++ 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, 0xa8, 0x96, 0xe9, 0x9d, 0xb1, 0x85, ++ 0xf9, 0x2c, 0x9c, 0xc9, 0x85, 0x71, 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, 0xf3, 0xfc, 0xf9, 0x50, ++ 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, 0xae, 0x08, 0x22, 0xb9, 0xa6, 0x67, 0x99, 0x3b, ++ 0xd8, 0x83, 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, 0x2e, 0xa3, 0xd8, 0xbc, ++ 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, 0x38, 0x50, 0xc9, 0x84, ++ 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, 0xf1, 0xf3, 0xf2, 0x49, 0x64, 0x86, 0xbb, 0x0c, 0x61, 0x1f, ++ 0x3c, 0x0d, 0x39, 0x63, 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, 0x89, 0x87, 0x3c, 0xe1, ++ 0x89, 0xac, 0x59, 0xa4, 0x52, 0xbd, 0xad, 0x4c, 0xdd, 0x83, 0x19, 0xc0, 0x5e, 0x03, 0x89, 0x77, ++ 0x0f, 0x92, 0x9f, 0x68, 0x34, 0x2b, 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, 0xb3, 0x51, 0x0f, 0xa9, ++ 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, 0xdc, 0x1c, 0x5c, 0x8a, ++ 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, 0xeb, 0x31, 0x5a, 0xcc, 0xbe, 0x2c, ++ 0xc2, 0x29, 0x8d, 0x69, 0xd5, 0xa1, 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, 0xb5, 0x18, 0xc2, 0x3e, ++ 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, 0x66, 0x1c, 0x77, 0xb5, 0x7a, 0x7b, 0xc5, 0xb1, ++ 0x88, 0x2e, 0x96, 0x89, 0xa5, 0x6e, 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, 0xb0, 0x94, 0x88, 0x03, ++ 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, 0x4c, 0x86, 0xe3, 0xf2, 0x93, 0xef, 0x11, 0xf9, 0xa1, 0xc9, ++ 0x1d, 0xa2, 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, 0x47, 0x78, 0x54, 0xd8, 0x1d, 0x0d, ++ 0xc7, 0xe6, 0xf8, 0xf0, 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, 0x65, 0x96, 0xc7, 0x59, ++ 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, 0x71, 0xf8, 0x5d, 0x4a, 0x18, 0x87, 0x17, 0xb0, 0x6c, 0x5e, ++ 0x85, 0x7b, 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, 0x69, 0x75, 0x9b, 0x92, 0x1c, 0x28, 0x85, 0x42, ++ 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, 0x3c, 0x29, 0xc2, 0x5a, 0x5c, 0x36, 0x98, 0x7e, 0x9d, 0x28, ++ 0xd3, 0x5c, 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, 0x0d, 0xe5, 0xa3, 0xeb, 0xd3, 0x06, ++ 0xd1, 0x9b, 0xb2, 0x8b, 0xa4, 0xb9, 0x99, 0x98, 0x79, 0xc5, 0x32, 0x43, 0xbc, 0x06, 0xd1, 0xee, ++ 0x1e, 0xe7, 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, 0xf1, 0x54, 0x86, 0x8d, 0xa5, 0xa2, 0x1e, 0x91, ++ 0x3e, 0xca, 0x64, 0x39, 0xfd, 0xc9, 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, 0x96, 0x6a, 0x3e, 0x09, ++ 0x84, 0xf9, 0x9b, 0x96, 0x4b, 0xf3, 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, 0xf2, 0xbf, 0x84, 0x36, ++ 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, 0x35, 0x55, 0x80, 0x99, 0x2f, 0x31, ++ 0x7d, 0xd5, 0x07, 0x5f, 0xce, 0x82, 0x55, 0x15, 0x35, 0x34, 0xdd, 0xad, 0x01, 0x43, 0x7d, 0x66, ++ 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, 0xf6, 0x65, 0xdf, 0x23, 0x93, 0xe6, 0x74, 0x34, ++ 0x41, 0xd8, 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, 0x12, 0x74, 0x88, 0xc4, 0x41, 0x87, ++ 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, 0x01, 0x57, 0x7c, 0xe2, 0xd7, 0x5e, 0x9e, 0x37, 0x50, 0xbf, ++ 0x21, 0xaf, 0x56, 0xc4, 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, 0x88, 0xa1, 0xdd, 0x5f, 0x21, 0xec, ++ 0x55, 0x62, 0x29, 0x1d, 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, 0x4e, 0xb9, 0x55, 0xd8, ++ 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, 0xb6, 0xe0, 0x3e, 0xe1, 0x56, 0x5e, 0xe7, 0xc1, ++ 0xcd, 0xbb, 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, 0x06, 0x49, 0xcd, 0x97, ++ 0x0d, 0x55, 0xc2, 0x32, 0x19, 0x4e, 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, 0xac, 0xbc, 0x0d, 0x41, ++ 0x7c, 0x57, 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, 0x23, 0xfe, 0xef, 0xd4, 0x7c, 0x12, ++ 0x37, 0xd2, 0x1c, 0xbf, 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, 0x04, 0xcf, 0x37, 0x5b, ++ 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, 0x9d, 0x06, 0xf8, 0x02, 0x9b, 0xbb, 0x1a, 0x82, ++ 0xa2, 0x5e, 0xe5, 0x91, 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, 0xe0, 0x83, 0xa2, 0x55, ++ 0xaf, 0x0b, 0x27, 0xa3, 0xb0, 0x8d, 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, 0x4c, 0x3f, 0xaf, 0x14, ++ 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, 0xfb, 0xcb, 0x40, 0xad, 0xf6, 0xf9, ++ 0xe8, 0x59, 0xfe, 0x71, 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, 0x7d, 0x46, 0xe5, 0x0f, 0xe8, 0x68, ++ 0x7e, 0x90, 0x95, 0x28, 0x14, 0x34, 0x87, 0x6d, 0x18, 0xe8, 0x1c, 0x58, 0xf0, 0x39, 0x7e, 0xfa, ++ 0x5e, 0xbd, 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, 0x6a, 0xaa, 0xc3, 0xf1, 0x5e, 0x62, ++ 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, 0x02, 0x86, 0xfa, 0xcc, ++ 0xb5, 0xa1, 0x60, 0xc7, 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, 0xd6, 0x19, 0xd7, 0x84, 0xb5, 0x96, ++ 0x92, 0x84, 0xd1, 0xed, 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, 0x1f, 0x91, 0x2b, 0x2f, 0x92, 0x81, ++ 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, 0x26, 0x99, 0x96, 0x77, 0xbf, 0xc3, 0x56, 0x44, ++ 0xf1, 0xb6, 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, 0x8f, 0xce, 0xf1, 0x76, ++ 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, 0x3e, 0x19, 0x04, 0x13, ++ 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, 0x6b, 0x63, 0x27, 0x21, 0x08, 0x5d, 0x6e, 0xb6, ++ 0xa5, 0x56, 0xcd, 0x52, 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, 0x2f, 0xe0, 0xa5, 0xda, ++ 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, 0xad, 0x15, 0xc0, 0xb2, 0xb8, 0xc9, 0xe6, 0xb5, ++ 0xc8, 0x74, 0x67, 0x98, 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, 0xd6, 0xc7, 0xc8, 0xf0, ++ 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, 0x32, 0xe5, 0x6f, 0x4f, 0x9c, 0x84, 0x20, 0xb7, 0x7b, 0x9d, ++ 0x73, 0xc5, 0x57, 0x1a, 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, 0x60, 0x59, 0x5c, 0x85, 0x73, 0xbb, ++ 0x51, 0x2f, 0x93, 0xa9, 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, 0x70, 0xa0, 0x51, 0xcb, ++ 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, 0x1a, 0xfe, 0xa0, 0xeb, 0xe4, 0x4c, 0x95, 0x0e, ++ 0x66, 0xfd, 0x8f, 0x16, 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, 0x74, 0x6f, 0x66, 0x90, ++ 0xd6, 0x93, 0x9a, 0x48, 0x24, 0xc5, 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, 0x73, 0x65, 0xd6, 0x61, ++ 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, 0xe6, 0xac, 0x89, 0x9a, 0xea, 0x76, 0x13, 0x7f, 0x5b, 0x05, ++ 0xe3, 0x86, 0xdb, 0xad, 0xb7, 0xed, 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, 0x68, 0x47, 0xe3, 0xd2, ++ 0x63, 0x32, 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, 0xc4, 0x60, 0x5b, 0x20, 0xa4, 0xe1, 0x63, 0xf7, ++ 0x9b, 0x9c, 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, 0x98, 0x21, 0x1d, 0x1f, 0xb9, 0x8a, 0x9b, 0xd3, ++ 0xbd, 0x3b, 0xd7, 0x6c, 0x36, 0x46, 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, 0xab, 0xb6, 0xbd, 0xb0, ++ 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, 0xfc, 0xc6, 0xdb, 0xb9, 0x1e, 0xd6, 0x62, 0x9c, 0x77, 0xa8, ++ 0x8d, 0xe1, 0xe3, 0x10, 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, 0x67, 0x4f, 0x60, 0x1a, 0x8d, 0x64, ++ 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, 0x3f, 0x7a, 0xd4, 0x97, 0x45, 0x21, 0xbc, 0xc4, ++ 0xf3, 0x71, 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, 0xa9, 0x39, 0x7b, 0x17, 0x90, 0x23, 0xf3, 0x9e, ++ 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, 0x5f, 0x40, 0xf4, 0x11, ++ 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, 0xb3, 0xb9, 0xbc, 0xae, 0x37, 0xdb, 0x12, 0x3c, 0x26, 0x63, ++ 0xd4, 0x54, 0xc7, 0x12, 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, 0x6c, 0x88, 0xd4, 0x89, ++ 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, 0xd6, 0xe7, 0x1e, 0xd2, 0x1b, 0x4e, 0xcc, 0xa6, 0x80, 0x25, ++ 0x93, 0x06, 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, 0xe1, 0xc2, 0xc5, 0xb8, 0x93, 0xf5, ++ 0xb6, 0xe4, 0xf2, 0xb0, 0x58, 0xa7, 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, 0x26, 0xfe, 0xb6, 0x0a, ++ 0x15, 0x38, 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, 0xbb, 0xa5, 0x28, 0xea, 0x15, 0x2b, ++ 0xcc, 0x39, 0xdd, 0x2c, 0x16, 0x59, 0x73, 0x56, 0xa5, 0x4d, 0x75, 0x3b, 0xe8, 0xde, 0xcc, 0xe3, ++ 0xac, 0x4e, 0xb5, 0xd4, 0x6a, 0x3b, 0xcc, 0x8d, 0x4c, 0xf1, 0xef, 0xee, 0xbd, 0x45, 0xac, 0x88, ++ 0xc1, 0x6c, 0x1f, 0x1e, 0x0f, 0x17, 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, 0x44, 0x62, 0xc1, 0xa2, ++ 0xee, 0xd3, 0x19, 0x9f, 0xae, 0xa3, 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, 0xc4, 0xfb, 0xee, 0x93, ++ 0xae, 0x89, 0xe8, 0x8e, 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, 0xd0, 0x48, 0xa2, 0xa8, 0xae, 0x60, ++ 0x9c, 0x94, 0x81, 0xa8, 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, 0x76, 0xe9, 0x9c, 0x5c, ++ 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, 0xa1, 0x61, 0xce, 0x9e, 0xc0, 0x34, 0xd9, 0xc8, ++ 0xa3, 0xdc, 0x2a, 0xbc, 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, 0x0e, 0x14, 0xa3, 0x21, ++ 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, 0xe3, 0x46, 0x25, 0xff, ++ 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, 0x02, 0x16, 0xbc, 0xb3, 0x14, 0x75, 0xeb, 0xf4, ++ 0x40, 0x5a, 0xf1, 0x11, 0xe9, 0xfd, 0x6b, 0x92, 0x0f, 0x69, 0xec, 0x27, 0x66, 0x53, 0x40, 0xf3, ++ 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, 0xd7, 0xcd, 0x10, 0xfa, 0x1a, 0x61, 0x48, 0xd5, ++ 0x6d, 0x22, 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, 0xf9, 0x27, 0x6d, 0x2a, ++ 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, 0x4f, 0xfa, 0x28, 0xbe, ++ 0xff, 0xa6, 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, 0xf9, 0x45, 0xd2, 0x08, 0xff, 0xab, ++ 0x0a, 0x5d, 0xea, 0xf1, 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, 0x63, 0xdf, 0x0a, 0xce, ++ 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, 0x96, 0x43, 0xaf, 0x80, 0xd5, 0x02, 0x4f, 0x5a, ++ 0x19, 0xef, 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, 0x6a, 0xc1, 0x19, 0x1e, ++ 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, 0xd3, 0x2f, 0x51, 0x3e, 0x16, 0xab, 0x6f, 0x4d, 0x53, 0x23, ++ 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, 0xb6, 0x71, 0xf3, 0x42, 0x3a, 0x3e, 0xb1, 0xd7, 0xf5, 0x65, ++ 0xb9, 0x76, 0x6d, 0xd8, 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, 0x95, 0xaf, 0xb9, 0xa3, ++ 0xcb, 0x31, 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, 0xe4, 0xc3, 0xca, 0x41, 0x27, 0xbd, 0xcb, 0x6c, ++ 0x45, 0x95, 0x84, 0x88, 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, 0xb6, 0xdd, 0x45, 0x94, ++ 0x57, 0xa5, 0x74, 0x47, 0xc2, 0x2f, 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, 0x51, 0x54, 0x57, 0x30, ++ 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, 0xfe, 0x68, 0x23, 0xbe, 0x73, 0x6a, 0x9d, 0xf2, 0xd7, 0x15, ++ 0x68, 0xed, 0xdf, 0x53, 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, 0x29, 0xa9, 0x68, 0x4d, ++ 0x4c, 0x8d, 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, 0xbb, 0x9f, 0x6e, 0x75, 0x24, 0x78, 0x4c, 0xc6, ++ 0x20, 0x2d, 0x99, 0xe9, 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, 0x33, 0xc8, 0x20, 0x98, ++ 0x4a, 0x07, 0x1b, 0xe0, 0x70, 0xcf, 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, 0x05, 0x8c, 0x4a, 0x3d, ++ 0x05, 0xcf, 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, 0x80, 0xdc, 0xd0, 0x8e, 0x05, 0x67, ++ 0xc6, 0x64, 0x37, 0xdd, 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, 0x8b, 0x01, 0xc6, 0x2d, ++ 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, 0x1f, 0xd9, 0x45, 0xf6, 0xc6, 0x7d, 0x14, 0x5f, ++ 0x9e, 0x53, 0xdc, 0xf2, 0x79, 0x6f, 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, 0x69, 0x04, 0x9e, 0xb4, ++ 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, 0x62, 0x38, 0x15, 0x97, 0x4c, 0xcc, 0x82, 0x1f, 0xd5, 0xfd, ++ 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, 0xeb, 0x99, 0xa0, 0x6a, 0x90, 0x26, 0xca, 0xef, 0x4d, 0xb2, ++ 0xce, 0xfe, 0x80, 0x76, 0x3b, 0x3c, 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, 0xf7, 0x33, 0xce, 0x0b, ++ 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, 0xa8, 0x84, 0x92, 0x6f, 0x14, 0x25, 0xfd, 0xe8, 0x5a, 0x71, ++ 0x3f, 0x48, 0xab, 0x14, 0x0a, 0x1a, 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, 0x78, 0xfd, 0x3f, 0x7d, ++ 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, 0x7f, 0x34, 0xf0, 0x5f, 0xd8, 0x35, 0xaf, 0x79, 0x8a, 0xeb, ++ 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, 0xda, 0xbb, 0x3d, 0xdc, 0x83, 0xb9, ++ 0xc3, 0xab, 0x42, 0x44, 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, 0x5b, 0x8f, 0xc3, 0x4a, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x94, 0x0e, 0x36, 0x03, 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, 0x0a, 0xdb, 0x94, 0x7a, ++ 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, 0x76, 0x9e, 0xea, 0xa1, 0x78, 0xde, 0x4b, 0x35, 0x1f, 0xe5, ++ 0x98, 0xd9, 0x3b, 0x1c, 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, 0xdc, 0xea, 0x48, 0xf0, 0x98, 0x4f, ++ }, ++ { /* 15 */ ++ 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, 0xcd, ++ 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, 0x91, 0xbd, 0x5b, ++ 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, 0x69, ++ 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, 0x51, 0x68, 0x84, 0xbe, ++ 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, 0x50, ++ 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, 0xb4, 0x15, 0x71, 0x34, ++ 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, 0x87, 0x83, ++ 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0xd0, ++ 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, 0xe6, ++ 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, 0xae, ++ 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, 0x4b, 0x78, 0xc5, 0xdc, ++ 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, 0x4c, ++ 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x29, ++ 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, 0x8b, 0x9c, 0x95, ++ 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, 0x01, ++ 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x43, ++ 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, 0xe7, 0x99, 0xd2, ++ 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, 0x92, ++ 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, 0x74, ++ 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, 0xb6, ++ 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, 0x41, 0x26, 0xa2, 0xa0, ++ 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, 0xe2, 0x68, ++ 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x28, ++ 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, 0x1a, ++ 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, 0x56, ++ 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, 0x98, ++ 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, 0x27, 0x13, 0x0f, ++ 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, 0xb2, ++ 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, 0x5c, 0xc6, 0xe1, ++ 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, 0x37, ++ 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, 0x02, ++ 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, 0xa4, 0x4e, 0xab, ++ 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, 0x49, ++ 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, 0xb1, ++ 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, 0xe3, ++ 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x0d, ++ 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, 0x5e, 0x67, 0x7c, ++ 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, 0xa3, ++ 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, 0xe8, ++ 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, 0xaf, ++ 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, 0x66, ++ 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, 0xfa, ++ 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, 0x89, ++ 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, 0x3c, ++ 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, 0xac, ++ 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, 0x56, 0x3e, 0x22, 0xf3, ++ 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, 0x3a, 0xd8, ++ 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, 0x3d, ++ 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, 0xa3, 0x0d, 0xf1, 0x67, ++ 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, 0xe7, ++ 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0xc5, ++ 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, 0x4e, ++ 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x3e, ++ 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, 0xb0, ++ 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, 0xd5, ++ 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, 0xaf, 0x9f, 0xa8, ++ 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, 0xa0, 0xcf, 0x52, ++ 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0xe9, ++ 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, 0x33, ++ 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, 0x8a, ++ 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, 0x73, ++ 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, 0xbd, 0x7f, 0x57, ++ 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0x9b, ++ 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, 0x94, 0x89, 0x3d, 0x08, ++ 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, 0x42, ++ 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, 0x27, ++ 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, 0xdb, 0x1a, 0xbc, ++ 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, 0xc6, ++ 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, 0x90, ++ 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, 0xda, ++ 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, 0xbe, 0x4b, 0x16, 0x48, ++ 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, 0xd7, 0x79, ++ 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0x16, ++ 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, 0xc3, 0x9a, 0xef, ++ 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, 0x13, ++ 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, 0x7a, 0x77, 0x95, 0x26, ++ 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, 0xc7, ++ 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x9f, ++ 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, 0xff, 0x19, 0x81, ++ 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, 0x06, ++ 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, 0xa9, ++ 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, 0x63, ++ 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, 0xd6, ++ 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, 0x05, ++ 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, 0xbd, ++ 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0xf2, ++ 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, 0x1a, 0x21, 0xce, ++ 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0x5a, ++ 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, 0xe3, 0xf6, 0x69, 0x1f, ++ 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, 0xe4, ++ 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, 0x0b, ++ 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, 0x90, 0x61, ++ 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0xec, ++ 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, 0x0c, ++ 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, 0x60, ++ 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0xfd, ++ 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, 0xe5, ++ 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, 0xe2, ++ 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, 0x34, 0x42, 0x5f, ++ 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, 0xb4, ++ 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, 0xb5, ++ 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, 0xc4, ++ 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, 0x9c, ++ 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, 0x74, 0x85, 0x14, ++ 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, 0x1b, ++ 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, 0x7f, 0x58, 0x47, 0x18, ++ 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, 0x7a, 0x64, 0x41, ++ 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0x3a, ++ 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, 0x8c, 0xe0, 0x08, 0x19, ++ 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, 0x72, ++ 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x75, ++ 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, 0x4d, ++ 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, 0x93, ++ 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, 0x3b, 0x51, 0x37, 0x86, ++ 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, 0x24, ++ 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, 0xa4, 0x5b, 0x57, 0x2a, ++ 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, 0xb9, ++ 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, 0x0a, ++ 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, 0x75, 0x34, 0xbb, ++ 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, 0x62, ++ 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, 0xf4, 0xc8, 0x82, ++ 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, 0x59, ++ 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, 0x36, ++ 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, 0x45, 0xf7, 0x1d, ++ 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, 0x2c, ++ 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0x30, ++ 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, 0xed, ++ 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, 0x39, ++ 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, 0x6b, 0xe4, 0x89, 0xe0, ++ 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, 0x2e, ++ 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, 0x02, 0xa1, 0x9d, ++ 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, 0x61, 0xf4, 0x20, ++ 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, 0xfb, ++ 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, 0x2d, ++ 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, 0x6a, ++ 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, 0xc3, ++ 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, 0xdd, ++ 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0x4f, ++ 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, 0x30, 0xd2, 0x6a, 0x22, ++ 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, 0x94, ++ 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, 0xa2, ++ 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, 0xde, 0xca, ++ 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, 0xc9, ++ 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, 0xd3, ++ 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, 0x58, ++ 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0x10, ++ 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, 0x87, ++ 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x17, ++ 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, 0xf9, ++ 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, 0x45, ++ 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, 0x47, 0xad, 0x3e, 0x35, ++ 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, 0x8b, 0x77, ++ 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, 0x11, ++ 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, 0x4a, ++ 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, 0x8f, ++ 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, 0x0d, 0x08, 0xc1, 0x31, ++ 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, 0x51, ++ 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, 0x65, ++ 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, 0xaa, ++ 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, 0x7a, ++ 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x1c, ++ 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, 0xa7, ++ 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0xd4, ++ 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, 0x12, 0x37, 0x52, 0x6d, ++ 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, 0xdb, ++ 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, 0x12, 0xe0, 0xff, ++ 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, 0x18, 0x2b, ++ 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0xb8, ++ 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, 0x8b, 0xb6, 0xae, 0x54, ++ 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, 0xb3, ++ 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, 0x23, 0x38, 0x02, 0x97, ++ 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, 0x75, 0xd9, ++ 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xa5, ++ 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, 0xcc, 0xca, 0x15, ++ 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, 0xa6, ++ 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0x0e, ++ 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, 0x21, 0x33, 0x6b, ++ 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, 0xf7, ++ 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, 0x6a, 0x39, 0xb3, 0x38, ++ 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, 0x8d, ++ 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, 0x0b, 0xd1, 0x03, ++ 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, 0x3f, 0x93, 0x5c, ++ 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, 0x7b, ++ 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, 0x44, 0x09, 0x70, 0x9e, ++ 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, 0xc0, ++ 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, 0x71, ++ 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, 0x5a, 0xe6, 0x85, ++ 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x88, ++ 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, 0x83, 0x5d, 0xa4, ++ 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, 0x07, ++ 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, 0x67, 0xd4, 0x44, ++ 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, 0x66, 0x65, 0xeb, ++ 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0xcc, ++ 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, 0x03, 0x10, 0x32, ++ 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, 0xc1, ++ 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, 0xc8, ++ 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, 0x78, ++ 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, 0xc2, ++ 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, 0x2f, ++ 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, 0x40, ++ 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, 0x84, ++ 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, 0x31, 0x72, 0x09, ++ 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, 0x70, ++ 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, 0xfe, ++ 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, 0x6e, ++ 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, 0x6f, ++ 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, 0x9e, 0xed, 0xa1, ++ 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, 0xba, ++ 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, 0xe1, 0x8f, 0x1d, 0x6c, ++ 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, 0x53, ++ 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, 0xbb, 0x64, 0xc4, 0x76, ++ 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, 0x64, ++ 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, 0xf6, ++ 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, 0xd7, ++ 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, 0xcb, ++ 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, 0x80, 0x4d, 0x96, ++ 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, 0xcb, 0xbf, ++ 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0x12, ++ 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, 0x7c, 0x44, 0x25, ++ 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, 0x3f, ++ 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, 0x3b, ++ 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, 0x5d, ++ 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x1e, ++ 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, 0xe6, 0xd9, 0xbb, 0x21, ++ 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, 0x8c, ++ 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, 0xf9, 0xe6, 0x28, 0x7d, ++ 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, 0x25, 0x23, ++ 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0x8e, ++ 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, 0x39, 0x28, 0x43, 0xf5, ++ 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, 0x8b, ++ 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, 0x5e, ++ 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, 0x56, 0x80, ++ 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, 0xf4, ++ 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, 0xb2, 0x2f, 0xad, ++ 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, 0x4b, ++ 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, 0xf1, ++ 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, 0x48, 0xd1, ++ 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, 0xde, ++ 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, 0xa2, 0x6e, 0xcf, ++ 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, 0x7e, ++ 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, 0x80, 0x35, 0xf3, 0xf0, ++ 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, 0x05, 0x47, ++ 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x46, ++ 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, 0xdf, ++ 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, 0x91, ++ 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, 0xee, ++ 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, 0x04, ++ 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, 0xf8, ++ 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, 0x9a, ++ 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, 0x99, ++ 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0xea, ++ 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, 0x59, 0xf6, 0xb7, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, 0x19, 0x31, 0xfc, ++ 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, 0x55, ++ 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, 0x55, 0xb6, 0x7f, ++ }, ++}; +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index fa5914ada..2c0d3356f 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -1007,3 +1007,12 @@ id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1006 + id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1007 + id_tc26_cipher_gostr3412_2015_magma_mgm 1008 + magma_mac 1009 ++kuznyechik_ecb 1010 ++kuznyechik_cbc 1011 ++kuznyechik_cfb128 1012 ++kuznyechik_ofb128 1013 ++kuznyechik_ctr 1014 ++id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1015 ++id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1016 ++id_tc26_cipher_gostr3412_2015_kuznyechik_mgm 1017 ++kuznyechik_mac 1018 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 2dbd8575d..4bf75f700 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1402,6 +1402,20 @@ tc26 1 5 1 2 : magma-ctr-acpkm-omac + tc26 1 5 1 3 : magma-mgm + : magma-mac + ++#GOST R 34.12-2014, cipher Kuznyechik ++ : kuznyechik-ecb ++ : kuznyechik-cbc ++ : kuznyechik-cfb128 ++ : kuznyechik-ofb128 ++ : kuznyechik-ctr ++!Cname id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm ++tc26 1 5 2 1 : kuznyechik-ctr-acpkm ++!Cname id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac ++tc26 1 5 2 2 : kuznyechik-ctr-acpkm-omac ++!Cname id-tc26-cipher-gostr3412-2015-kuznyechik-mgm ++tc26 1 5 2 3 : kuznyechik-mgm ++ : kuznyechik-mac ++ + # Curves from draft-ietf-curdle-pkix-02 + 1 3 101 110 : X25519 + 1 3 101 111 : X448 +diff --git a/src/regress/lib/libcrypto/evp/evptests.txt b/src/regress/lib/libcrypto/evp/evptests.txt +index 8b4739276..064da8a12 100644 +--- a/src/regress/lib/libcrypto/evp/evptests.txt ++++ b/src/regress/lib/libcrypto/evp/evptests.txt +@@ -400,3 +400,21 @@ magma-ofb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:123 + magma-ofb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c8331340c48dcbead127193f8746455692c527d38b4e3feedd2:0 + magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:1 + magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:0 ++ ++# GOST R 34.12-2015 ++kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa9988:7f679d90bebc24305a468d42b9d4edcd:1 ++kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa9988:7f679d90bebc24305a468d42b9d4edcd:0 ++ ++# GOST R 34.13-2015 ++kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:7f679d90bebc24305a468d42b9d4edcdb429912c6e0032f9285452d76718d08bf0ca33549d247ceef3f5a5313bd4b157d0b09ccde830b9eb3a02c4c5aa8ada98:1 ++kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:7f679d90bebc24305a468d42b9d4edcdb429912c6e0032f9285452d76718d08bf0ca33549d247ceef3f5a5313bd4b157d0b09ccde830b9eb3a02c4c5aa8ada98:0 ++kuznyechik-ctr:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:f195d8bec10ed1dbd57b5fa240bda1b885eee733f6a13e5df33ce4b33c45dee4a5eae88be6356ed3d5e877f13564a3a5cb91fab1f20cbab6d1c6d15820bdba73:1 ++kuznyechik-ctr:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:f195d8bec10ed1dbd57b5fa240bda1b885eee733f6a13e5df33ce4b33c45dee4a5eae88be6356ed3d5e877f13564a3a5cb91fab1f20cbab6d1c6d15820bdba73:0 ++ ++#Manualy ++kuznyechik-cbc:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:689972d4a085fa4d90e52e3d6d7dcc27abf170b2b226c3010ccfa136d659cdaaca719272ab1d438e15507d521ecd5522e01108ff8d9d3a6d8ca2a533fa614e71:1 ++kuznyechik-cbc:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:689972d4a085fa4d90e52e3d6d7dcc27abf170b2b226c3010ccfa136d659cdaaca719272ab1d438e15507d521ecd5522e01108ff8d9d3a6d8ca2a533fa614e71:0 ++kuznyechik-ofb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd95779146db2d93a94ed93cf68b32397f19e93c9e57441d870545f24036a58ceea3cf3f0061d56423545b960d864cc868da:1 ++kuznyechik-ofb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd95779146db2d93a94ed93cf68b32397f19e93c9e57441d870545f24036a58ceea3cf3f0061d56423545b960d864cc868da:0 ++kuznyechik-cfb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd9568c1b99c4df59cc7951e3739b5b3cdbf073f4dd2d6deb3cfb026545f7af1d8e8e1c852e9a8567162dbb5da7f66dea926:1 ++kuznyechik-cfb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd9568c1b99c4df59cc7951e3739b5b3cdbf073f4dd2d6deb3cfb026545f7af1d8e8e1c852e9a8567162dbb5da7f66dea926:0 +-- +2.17.1 + diff --git a/0035-kuznyechik-fix-IV-handling-for-CTR-mode.patch b/0035-kuznyechik-fix-IV-handling-for-CTR-mode.patch new file mode 100644 index 0000000..732e23d --- /dev/null +++ b/0035-kuznyechik-fix-IV-handling-for-CTR-mode.patch @@ -0,0 +1,52 @@ +From f8edb0a765f94a97418247a5e4dd0f289637838b Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 17 Apr 2020 23:07:07 +0300 +Subject: [PATCH 35/87] kuznyechik: fix IV handling for CTR mode + +kuznyechik-ctr uses half length IV per the specification, which is +handled correctly. However we still have to zero the second half of IV. +Do so in ctr_init_key() callback. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/e_kuznyechik.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index 7ac5ed7a6..ebb857c62 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -102,6 +102,19 @@ Kuznyechik_ofb128_encrypt(const unsigned char *in, unsigned char *out, size_t le + (block128_f)Kuznyechik_encrypt); + } + ++static int ++kuznyechik_ctr_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ if (iv) ++ memset(ctx->iv + 8, 0, 8); ++ ++ if (!key) ++ return 1; ++ ++ return kuznyechik_init_key(ctx, key, iv, enc); ++} ++ + static int + kuznyechik_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, + size_t len) +@@ -120,8 +133,8 @@ IMPLEMENT_BLOCK_CIPHER(kuznyechik, ks, Kuznyechik, EVP_KUZNYECHIK_CTX, + kuznyechik_ctl) + + BLOCK_CIPHER_def1(kuznyechik, ctr, ctr, CTR, EVP_KUZNYECHIK_CTX, +- NID_kuznyechik, 1, 32, 8, 0, +- kuznyechik_init_key, NULL, ++ NID_kuznyechik, 1, 32, 8, EVP_CIPH_ALWAYS_CALL_INIT, ++ kuznyechik_ctr_init_key, NULL, + EVP_CIPHER_set_asn1_iv, + EVP_CIPHER_get_asn1_iv, + kuznyechik_ctl) +-- +2.17.1 + diff --git a/0036-magma-fix-IV-handling-for-CTR-mode.patch b/0036-magma-fix-IV-handling-for-CTR-mode.patch new file mode 100644 index 0000000..630dec2 --- /dev/null +++ b/0036-magma-fix-IV-handling-for-CTR-mode.patch @@ -0,0 +1,52 @@ +From 0f87b92f702c83c1cc18798d1b05b9aacd8ce186 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 17 Apr 2020 23:07:07 +0300 +Subject: [PATCH 36/87] magma: fix IV handling for CTR mode + +magma-ctr uses half length IV per the specification, which is +handled correctly. However we still have to zero the second half of IV. +Do so in ctr_init_key() callback. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/e_magma.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index 712f79278..c88b25827 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -96,6 +96,19 @@ Magma_ofb64_encrypt(const unsigned char *in, unsigned char *out, size_t length, + (block64_f)Magma_encrypt); + } + ++static int ++magma_ctr_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ if (iv) ++ memset(ctx->iv + 4, 0, 4); ++ ++ if (!key) ++ return 1; ++ ++ return magma_init_key(ctx, key, iv, enc); ++} ++ + static int + magma_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, + size_t len) +@@ -114,8 +127,8 @@ IMPLEMENT_BLOCK_CIPHER(magma, ks, Magma, EVP_MAGMA_CTX, + magma_ctl) + + BLOCK_CIPHER_def1(magma, ctr, ctr, CTR, EVP_MAGMA_CTX, +- NID_magma, 1, 32, 4, 0, +- magma_init_key, NULL, ++ NID_magma, 1, 32, 4, EVP_CIPH_ALWAYS_CALL_INIT, ++ magma_ctr_init_key, NULL, + EVP_CIPHER_set_asn1_iv, + EVP_CIPHER_get_asn1_iv, + magma_ctl) +-- +2.17.1 + diff --git a/0037-gost-add-support-for-ACPKM-rekeying.patch b/0037-gost-add-support-for-ACPKM-rekeying.patch new file mode 100644 index 0000000..c5439c3 --- /dev/null +++ b/0037-gost-add-support-for-ACPKM-rekeying.patch @@ -0,0 +1,100 @@ +From c982fe656b75adba6c64552d1657b842555cb887 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Mon, 23 Mar 2020 23:58:00 +0300 +Subject: [PATCH 37/87] gost: add support for ACPKM rekeying + +Add support for ACPKM internal rekeying (RFC 8645). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/evp.h | 2 ++ + src/lib/libcrypto/gost/gost89_params.c | 38 ++++++++++++++++++++++++++ + src/lib/libcrypto/gost/gost_locl.h | 5 ++++ + 3 files changed, 45 insertions(+) + +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 26e025d09..77b3a4f8e 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -396,6 +396,8 @@ struct evp_cipher_st { + #define EVP_CTRL_GCM_SET_IV_INV 0x18 + /* Set the S-BOX NID for GOST ciphers */ + #define EVP_CTRL_GOST_SET_SBOX 0x19 ++/* Set the key meshing section for GOST ciphers */ ++#define EVP_CTRL_GOST_SET_MESHING 0x1a + + /* GCM TLS constants */ + /* Length of fixed part of IV derived from PRF */ +diff --git a/src/lib/libcrypto/gost/gost89_params.c b/src/lib/libcrypto/gost/gost89_params.c +index 7365f7a43..e02265389 100644 +--- a/src/lib/libcrypto/gost/gost89_params.c ++++ b/src/lib/libcrypto/gost/gost89_params.c +@@ -50,6 +50,7 @@ + */ + + #include ++#include + + #include + +@@ -259,4 +260,41 @@ Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key) + + Gost2814789_set_key(key, newkey); + } ++ ++#define ACPKM_KEY_SIZE 128 ++static unsigned char acpkm_mesh_data[ACPKM_KEY_SIZE] = ++{ ++ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, ++ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, ++ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, ++ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, ++ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, ++ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, ++ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, ++ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, ++ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, ++ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, ++ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, ++ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, ++ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, ++ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, ++ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, ++ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, ++}; ++ ++ ++void ++acpkm_key_mesh(void *ctx, ++ acpkm_block *block, acpkm_set_key *set_key, ++ unsigned int block_size, unsigned int key_size) ++{ ++ unsigned int i; ++ unsigned char new_key[ACPKM_KEY_SIZE]; ++ ++ for (i = 0; i < key_size; i += block_size) { ++ block(&acpkm_mesh_data[i], &new_key[i], ctx); ++ } ++ set_key(ctx, new_key); ++ explicit_bzero(new_key, i); ++} + #endif +diff --git a/src/lib/libcrypto/gost/gost_locl.h b/src/lib/libcrypto/gost/gost_locl.h +index 302a19c5c..f512029e1 100644 +--- a/src/lib/libcrypto/gost/gost_locl.h ++++ b/src/lib/libcrypto/gost/gost_locl.h +@@ -97,6 +97,11 @@ extern void Gost2814789_encrypt(const unsigned char *in, unsigned char *out, + extern void Gost2814789_decrypt(const unsigned char *in, unsigned char *out, + const GOST2814789_KEY *key); + extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key); ++typedef void acpkm_block(const unsigned char *in, unsigned char *out, void *ctx); ++typedef void acpkm_set_key(void *ctx, const unsigned char *key); ++extern void acpkm_key_mesh(void *ctx, ++ acpkm_block *block, acpkm_set_key *set_key, ++ unsigned int block_size, unsigned int key_size); + + void Magma_set_key_int(MAGMA_KEY *key, const unsigned char *userKey); + +-- +2.17.1 + diff --git a/0038-gost-add-support-for-GOST-34.12-Magma-Kuznyechik-enc.patch b/0038-gost-add-support-for-GOST-34.12-Magma-Kuznyechik-enc.patch new file mode 100644 index 0000000..219e428 --- /dev/null +++ b/0038-gost-add-support-for-GOST-34.12-Magma-Kuznyechik-enc.patch @@ -0,0 +1,202 @@ +From c99092ce70c10a4786bed1094ba044ae0026759f Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 4 Apr 2020 16:56:14 +0300 +Subject: [PATCH 38/87] gost: add support for GOST 34.12 (Magma, Kuznyechik) + encryption params + +Add encoding and decoding support for GOST 34.12 encryption params. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost.h | 3 + + src/lib/libcrypto/gost/gost_asn1.c | 130 +++++++++++++++++++++++++++++ + src/lib/libcrypto/gost/gost_asn1.h | 10 +++ + 3 files changed, 143 insertions(+) + +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 4fef765ce..421ca29f3 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -121,6 +121,9 @@ GOST_CIPHER_PARAMS *d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigne + int i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out); + extern const ASN1_ITEM GOST_CIPHER_PARAMS_it; + ++int gost3412_ctr_acpkm_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params, unsigned int il); ++int gost3412_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params, unsigned int il); ++ + #define GOST2814789IMIT_LENGTH 4 + #define GOST2814789IMIT_CBLOCK 8 + #define GOST2814789IMIT_LONG unsigned int +diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c +index bfd81faa1..14e46afab 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.c ++++ b/src/lib/libcrypto/gost/gost_asn1.c +@@ -10,9 +10,12 @@ + #include + + #ifndef OPENSSL_NO_GOST ++#include ++ + #include + #include + #include ++#include + + #include "gost_locl.h" + #include "gost_asn1.h" +@@ -344,4 +347,131 @@ GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a) + ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it); + } + ++static const ASN1_TEMPLATE GOST3412_ENCRYPTION_PARAMS_seq_tt[] = { ++ { ++ .flags = 0, ++ .tag = 0, ++ .offset = offsetof(GOST3412_ENCRYPTION_PARAMS, iv), ++ .field_name = "iv", ++ .item = &ASN1_OCTET_STRING_it, ++ }, ++}; ++ ++const ASN1_ITEM GOST3412_ENCRYPTION_PARAMS_it = { ++ .itype = ASN1_ITYPE_NDEF_SEQUENCE, ++ .utype = V_ASN1_SEQUENCE, ++ .templates = GOST3412_ENCRYPTION_PARAMS_seq_tt, ++ .tcount = sizeof(GOST3412_ENCRYPTION_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE), ++ .funcs = NULL, ++ .size = sizeof(GOST3412_ENCRYPTION_PARAMS), ++ .sname = "GOST3412_ENCRYPTION_PARAMS", ++}; ++ ++GOST3412_ENCRYPTION_PARAMS * ++d2i_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_PARAMS **a, const unsigned char **in, long len) ++{ ++ return (GOST3412_ENCRYPTION_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ++ &GOST3412_ENCRYPTION_PARAMS_it); ++} ++ ++int ++i2d_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_PARAMS *a, unsigned char **out) ++{ ++ return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST3412_ENCRYPTION_PARAMS_it); ++} ++ ++GOST3412_ENCRYPTION_PARAMS * ++GOST3412_ENCRYPTION_PARAMS_new(void) ++{ ++ return (GOST3412_ENCRYPTION_PARAMS *)ASN1_item_new(&GOST3412_ENCRYPTION_PARAMS_it); ++} ++ ++void ++GOST3412_ENCRYPTION_PARAMS_free(GOST3412_ENCRYPTION_PARAMS *a) ++{ ++ ASN1_item_free((ASN1_VALUE *)a, &GOST3412_ENCRYPTION_PARAMS_it); ++} ++ ++int ++gost3412_ctr_acpkm_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params, unsigned int il) ++{ ++ int len = 0; ++ unsigned char *buf = NULL; ++ unsigned char *p = NULL; ++ GOST3412_ENCRYPTION_PARAMS *gcp = NULL; ++ ASN1_OCTET_STRING *os = NULL; ++ ++ if (params == NULL) ++ return 0; ++ ++ gcp = GOST3412_ENCRYPTION_PARAMS_new(); ++ if (ASN1_OCTET_STRING_set(gcp->iv, NULL, il + 8) == 0) { ++ GOST3412_ENCRYPTION_PARAMS_free(gcp); ++ GOSTerror(ERR_R_ASN1_LIB); ++ return 0; ++ } ++ ++ memcpy(gcp->iv->data, ctx->iv, il); ++ memcpy(gcp->iv->data + il, ctx->oiv, 8); ++ ++ len = i2d_GOST3412_ENCRYPTION_PARAMS(gcp, NULL); ++ p = buf = malloc(len); ++ if (buf == NULL) { ++ GOST3412_ENCRYPTION_PARAMS_free(gcp); ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ return 0; ++ } ++ i2d_GOST3412_ENCRYPTION_PARAMS(gcp, &p); ++ GOST3412_ENCRYPTION_PARAMS_free(gcp); ++ ++ os = ASN1_OCTET_STRING_new(); ++ if (os == NULL) { ++ free(buf); ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ return 0; ++ } ++ if (ASN1_OCTET_STRING_set(os, buf, len) == 0) { ++ ASN1_OCTET_STRING_free(os); ++ free(buf); ++ GOSTerror(ERR_R_ASN1_LIB); ++ return 0; ++ } ++ free(buf); ++ ++ ASN1_TYPE_set(params, V_ASN1_SEQUENCE, os); ++ ++ return 1; ++} ++ ++int ++gost3412_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params, unsigned int il) ++{ ++ int len; ++ GOST3412_ENCRYPTION_PARAMS *gcp = NULL; ++ unsigned char *p; ++ ++ if (ASN1_TYPE_get(params) != V_ASN1_SEQUENCE) ++ return -1; ++ ++ p = params->value.sequence->data; ++ ++ gcp = d2i_GOST3412_ENCRYPTION_PARAMS(NULL, (const unsigned char **)&p, ++ params->value.sequence->length); ++ ++ len = gcp->iv->length; ++ if (len != il + 8 || len > sizeof(ctx->iv)) { ++ GOST3412_ENCRYPTION_PARAMS_free(gcp); ++ GOSTerror(GOST_R_INVALID_IV_LENGTH); ++ return -1; ++ } ++ ++ memcpy(ctx->iv, gcp->iv->data, il); ++ memset(ctx->iv + il, 0, EVP_MAX_IV_LENGTH - il); ++ memcpy(ctx->oiv, gcp->iv->data + il, 8); ++ ++ GOST3412_ENCRYPTION_PARAMS_free(gcp); ++ ++ return 1; ++} ++ + #endif +diff --git a/src/lib/libcrypto/gost/gost_asn1.h b/src/lib/libcrypto/gost/gost_asn1.h +index cdbda7b98..5af16e00e 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.h ++++ b/src/lib/libcrypto/gost/gost_asn1.h +@@ -113,6 +113,16 @@ GOST_KEY_PARAMS *d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char ** + int i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out); + extern const ASN1_ITEM GOST_KEY_PARAMS_it; + ++typedef struct { ++ ASN1_OCTET_STRING *iv; ++} GOST3412_ENCRYPTION_PARAMS; ++ ++GOST3412_ENCRYPTION_PARAMS *GOST3412_ENCRYPTION_PARAMS_new(void); ++void GOST3412_ENCRYPTION_PARAMS_free(GOST3412_ENCRYPTION_PARAMS *a); ++GOST3412_ENCRYPTION_PARAMS *d2i_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_PARAMS **a, const unsigned char **in, long len); ++int i2d_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_PARAMS *a, unsigned char **out); ++extern const ASN1_ITEM GOST3412_ENCRYPTION_PARAMS_it; ++ + __END_HIDDEN_DECLS + + #endif +-- +2.17.1 + diff --git a/0039-gost-add-support-for-magma-ctr-acpkm-mode.patch b/0039-gost-add-support-for-magma-ctr-acpkm-mode.patch new file mode 100644 index 0000000..7b0dc22 --- /dev/null +++ b/0039-gost-add-support-for-magma-ctr-acpkm-mode.patch @@ -0,0 +1,193 @@ +From c7aacb08e50b0ca1f9c8f027755eecc57828b8e0 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 20 Mar 2020 01:11:59 +0300 +Subject: [PATCH 39/87] gost: add support for magma-ctr-acpkm mode + +Add support for CTR-ACPKM mode for Magma cipher (see RFC 8645, Section +6.2.2). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_magma.c | 60 ++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + src/lib/libcrypto/gost/gost.h | 2 + + src/lib/libcrypto/gost/gost2814789.c | 13 +++++ + src/regress/lib/libcrypto/evp/evptests.txt | 4 ++ + 7 files changed, 82 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index d1d317fbd..142cebf46 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1733,6 +1733,7 @@ EVP_kuznyechik_ofb + EVP_magma_cbc + EVP_magma_cfb64 + EVP_magma_ctr ++EVP_magma_ctr_acpkm + EVP_magma_ecb + EVP_magma_ofb + EVP_md4 +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 2bb9a9a24..9d66ad40f 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -234,6 +234,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_magma_cfb64()); + EVP_add_cipher(EVP_magma_ofb()); + EVP_add_cipher(EVP_magma_ctr()); ++ EVP_add_cipher(EVP_magma_ctr_acpkm()); + EVP_add_cipher(EVP_kuznyechik_ecb()); + EVP_add_cipher(EVP_kuznyechik_cbc()); + EVP_add_cipher(EVP_kuznyechik_cfb128()); +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index c88b25827..0311e04b1 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -58,6 +58,24 @@ magma_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) + } + } + ++static int ++magma_acpkm_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_MAGMA_CTX *key = EVP_C_DATA(EVP_MAGMA_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_GOST_SET_MESHING: ++ key->ks.key_meshing = arg; ++ return 1; ++ case EVP_CTRL_INIT: ++ /* deafult for tests */ ++ key->ks.key_meshing = 16; ++ return 1; ++ default: ++ return magma_ctl(ctx, type, arg, ptr); ++ } ++} ++ + static void + Magma_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const MAGMA_KEY *key, unsigned char *ivec, const int enc) +@@ -120,6 +138,39 @@ magma_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *i + return 1; + } + ++static int ++magma_ctr_acpkm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_MAGMA_CTX *key = EVP_C_DATA(EVP_MAGMA_CTX, ctx); ++ ++ CRYPTO_ctr64_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_acpkm_encrypt); ++ return 1; ++} ++ ++static int ++magma_ctr_acpkm_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 8 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_set_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); ++} ++ ++static int ++magma_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 8 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); ++} ++ + IMPLEMENT_BLOCK_CIPHER(magma, ks, Magma, EVP_MAGMA_CTX, + NID_magma, 8, 32, 8, 64, 0, magma_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -133,4 +184,13 @@ BLOCK_CIPHER_def1(magma, ctr, ctr, CTR, EVP_MAGMA_CTX, + EVP_CIPHER_get_asn1_iv, + magma_ctl) + ++#define NID_magma_ctr_acpkm NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm ++ ++BLOCK_CIPHER_def1(magma, ctr_acpkm, ctr_acpkm, CTR, EVP_MAGMA_CTX, ++ NID_magma, 1, 32, 4, EVP_CIPH_CTRL_INIT | EVP_CIPH_ALWAYS_CALL_INIT, ++ magma_ctr_init_key, NULL, ++ magma_ctr_acpkm_set_asn1_params, ++ magma_ctr_acpkm_get_asn1_params, ++ magma_acpkm_ctl) ++ + #endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 77b3a4f8e..9e2ed23df 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -853,6 +853,7 @@ const EVP_CIPHER *EVP_magma_cbc(void); + const EVP_CIPHER *EVP_magma_cfb64(void); + const EVP_CIPHER *EVP_magma_ofb(void); + const EVP_CIPHER *EVP_magma_ctr(void); ++const EVP_CIPHER *EVP_magma_ctr_acpkm(void); + const EVP_CIPHER *EVP_kuznyechik_ecb(void); + const EVP_CIPHER *EVP_kuznyechik_cbc(void); + const EVP_CIPHER *EVP_kuznyechik_cfb128(void); +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 421ca29f3..2bddf038e 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -91,6 +91,8 @@ void Magma_encrypt(const unsigned char *in, unsigned char *out, + const MAGMA_KEY *key); + void Magma_decrypt(const unsigned char *in, unsigned char *out, + const MAGMA_KEY *key); ++void Magma_acpkm_encrypt(const unsigned char *in, unsigned char *out, ++ MAGMA_KEY *key); + + #define KUZNYECHIK_KEY_SIZE 32 + #define KUZNYECHIK_SUBKEYS_SIZE (16 * 10) +diff --git a/src/lib/libcrypto/gost/gost2814789.c b/src/lib/libcrypto/gost/gost2814789.c +index c9deee695..15449c6b4 100644 +--- a/src/lib/libcrypto/gost/gost2814789.c ++++ b/src/lib/libcrypto/gost/gost2814789.c +@@ -205,6 +205,19 @@ Magma_decrypt(const unsigned char *in, unsigned char *out, + be_l2c(n2, out); + } + ++void ++Magma_acpkm_encrypt(const unsigned char *in, ++ unsigned char *out, ++ MAGMA_KEY *key) ++{ ++ if (key->key_meshing && key->count == key->key_meshing) { ++ acpkm_key_mesh(key, (acpkm_block *)Magma_encrypt, (acpkm_set_key *)Magma_set_key_int, 8, 32); ++ key->count = 0; ++ } ++ Magma_encrypt(in, out, key); ++ key->count += 8; ++} ++ + static void + Gost2814789_mac(const unsigned char *in, unsigned char *mac, + GOST2814789_KEY *key) +diff --git a/src/regress/lib/libcrypto/evp/evptests.txt b/src/regress/lib/libcrypto/evp/evptests.txt +index 064da8a12..69d856826 100644 +--- a/src/regress/lib/libcrypto/evp/evptests.txt ++++ b/src/regress/lib/libcrypto/evp/evptests.txt +@@ -401,6 +401,10 @@ magma-ofb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:123 + magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:1 + magma-cfb64:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:1234567890abcdef234567890abcdef1:92def06b3c130a59db54c704f8189d204a98fb2e67a8024c8912409b17b57e41:db37e0e266903c83b571ee29cca54ce791fabcb3abbe2fe3ff5d972d770f6ae9:0 + ++# R 1323565.1.017-2018 ++magma-ctr-acpkm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:12345678:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899:2ab81deeeb1e4cab68e104c4bd6b94eac72c67af6c2e5b6b0eafb61770f1b32ea1ae71149eed1382abd467180672ec6f84a2f15b3fca72c1:1 ++magma-ctr-acpkm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:12345678:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899:2ab81deeeb1e4cab68e104c4bd6b94eac72c67af6c2e5b6b0eafb61770f1b32ea1ae71149eed1382abd467180672ec6f84a2f15b3fca72c1:0 ++ + # GOST R 34.12-2015 + kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa9988:7f679d90bebc24305a468d42b9d4edcd:1 + kuznyechik-ecb:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef::1122334455667700ffeeddccbbaa9988:7f679d90bebc24305a468d42b9d4edcd:0 +-- +2.17.1 + diff --git a/0040-gost-add-support-for-kuznyechik-ctr-acpkm-mode.patch b/0040-gost-add-support-for-kuznyechik-ctr-acpkm-mode.patch new file mode 100644 index 0000000..8f63123 --- /dev/null +++ b/0040-gost-add-support-for-kuznyechik-ctr-acpkm-mode.patch @@ -0,0 +1,188 @@ +From da4b36b194bb2856203ce0987a61a0fe201d625f Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 20 Mar 2020 01:11:59 +0300 +Subject: [PATCH 40/87] gost: add support for kuznyechik-ctr-acpkm mode + +Add support for CTR-ACPKM mode for Kuznyechik cipher (see RFC 8645, +Section 6.2.2). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_kuznyechik.c | 60 ++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + src/lib/libcrypto/gost/gost.h | 2 + + src/lib/libcrypto/gost/kuznyechik.c | 13 +++++ + src/regress/lib/libcrypto/evp/evptests.txt | 4 ++ + 7 files changed, 82 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 142cebf46..c4edd9eb6 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1728,6 +1728,7 @@ EVP_idea_ofb + EVP_kuznyechik_cbc + EVP_kuznyechik_cfb64 + EVP_kuznyechik_ctr ++EVP_kuznyechik_ctr_acpkm + EVP_kuznyechik_ecb + EVP_kuznyechik_ofb + EVP_magma_cbc +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 9d66ad40f..c15be0c4f 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -240,6 +240,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_kuznyechik_cfb128()); + EVP_add_cipher(EVP_kuznyechik_ofb()); + EVP_add_cipher(EVP_kuznyechik_ctr()); ++ EVP_add_cipher(EVP_kuznyechik_ctr_acpkm()); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index ebb857c62..5fd53aff6 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -64,6 +64,24 @@ kuznyechik_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) + } + } + ++static int ++kuznyechik_acpkm_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_KUZNYECHIK_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_GOST_SET_MESHING: ++ key->ks.key_meshing = arg; ++ return 1; ++ case EVP_CTRL_INIT: ++ /* deafult for tests */ ++ key->ks.key_meshing = 32; ++ return 1; ++ default: ++ return kuznyechik_ctl(ctx, type, arg, ptr); ++ } ++} ++ + static void + Kuznyechik_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const KUZNYECHIK_KEY *key, unsigned char *ivec, const int enc) +@@ -126,6 +144,39 @@ kuznyechik_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned ch + return 1; + } + ++static int ++kuznyechik_ctr_acpkm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_KUZNYECHIK_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTX, ctx); ++ ++ CRYPTO_ctr128_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_acpkm_encrypt); ++ return 1; ++} ++ ++static int ++kuznyechik_ctr_acpkm_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 256 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_set_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); ++} ++ ++static int ++kuznyechik_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 256 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); ++} ++ + IMPLEMENT_BLOCK_CIPHER(kuznyechik, ks, Kuznyechik, EVP_KUZNYECHIK_CTX, + NID_kuznyechik, 16, 32, 16, 128, 0, kuznyechik_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -139,4 +190,13 @@ BLOCK_CIPHER_def1(kuznyechik, ctr, ctr, CTR, EVP_KUZNYECHIK_CTX, + EVP_CIPHER_get_asn1_iv, + kuznyechik_ctl) + ++#define NID_kuznyechik_ctr_acpkm NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm ++ ++BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm, ctr_acpkm, CTR, EVP_KUZNYECHIK_CTX, ++ NID_kuznyechik, 1, 32, 8, EVP_CIPH_CTRL_INIT | EVP_CIPH_ALWAYS_CALL_INIT, ++ kuznyechik_ctr_init_key, NULL, ++ kuznyechik_ctr_acpkm_set_asn1_params, ++ kuznyechik_ctr_acpkm_get_asn1_params, ++ kuznyechik_acpkm_ctl) ++ + #endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 9e2ed23df..1ef416041 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -859,6 +859,7 @@ const EVP_CIPHER *EVP_kuznyechik_cbc(void); + const EVP_CIPHER *EVP_kuznyechik_cfb128(void); + const EVP_CIPHER *EVP_kuznyechik_ofb(void); + const EVP_CIPHER *EVP_kuznyechik_ctr(void); ++const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm(void); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 2bddf038e..e84a7625b 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -111,6 +111,8 @@ void Kuznyechik_encrypt(const unsigned char *in, unsigned char *out, + const KUZNYECHIK_KEY *key); + void Kuznyechik_decrypt(const unsigned char *in, unsigned char *out, + const KUZNYECHIK_KEY *key); ++void Kuznyechik_acpkm_encrypt(const unsigned char *in, unsigned char *out, ++ KUZNYECHIK_KEY *key); + + typedef struct { + ASN1_OCTET_STRING *iv; +diff --git a/src/lib/libcrypto/gost/kuznyechik.c b/src/lib/libcrypto/gost/kuznyechik.c +index 862b099fd..e2db0933a 100644 +--- a/src/lib/libcrypto/gost/kuznyechik.c ++++ b/src/lib/libcrypto/gost/kuznyechik.c +@@ -234,4 +234,17 @@ Kuznyechik_decrypt(const unsigned char *src, unsigned char *dst, + Sinv(dst, temp); + memxor(dst, ctx->key + 16 * 0); + } ++ ++void ++Kuznyechik_acpkm_encrypt(const unsigned char *in, ++ unsigned char *out, ++ KUZNYECHIK_KEY *key) ++{ ++ if (key->key_meshing && key->count == key->key_meshing) { ++ acpkm_key_mesh(key, (acpkm_block *)Kuznyechik_encrypt, (acpkm_set_key *)Kuznyechik_set_enc_key, 16, 32); ++ key->count = 0; ++ } ++ Kuznyechik_encrypt(in, out, key); ++ key->count += 16; ++} + #endif +diff --git a/src/regress/lib/libcrypto/evp/evptests.txt b/src/regress/lib/libcrypto/evp/evptests.txt +index 69d856826..0c741d5dc 100644 +--- a/src/regress/lib/libcrypto/evp/evptests.txt ++++ b/src/regress/lib/libcrypto/evp/evptests.txt +@@ -422,3 +422,7 @@ kuznyechik-ofb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcd + kuznyechik-ofb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd95779146db2d93a94ed93cf68b32397f19e93c9e57441d870545f24036a58ceea3cf3f0061d56423545b960d864cc868da:0 + kuznyechik-cfb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd9568c1b99c4df59cc7951e3739b5b3cdbf073f4dd2d6deb3cfb026545f7af1d8e8e1c852e9a8567162dbb5da7f66dea926:1 + kuznyechik-cfb128:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0a1b2c3d4e5f00112:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011:81800a59b1842b24ff1f795e897abd9568c1b99c4df59cc7951e3739b5b3cdbf073f4dd2d6deb3cfb026545f7af1d8e8e1c852e9a8567162dbb5da7f66dea926:0 ++ ++# R 1323565.1.017-2018 ++kuznyechik-ctr-acpkm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a001133445566778899aabbcceeff0a001122445566778899aabbcceeff0a001122335566778899aabbcceeff0a0011223344:f195d8bec10ed1dbd57b5fa240bda1b885eee733f6a13e5df33ce4b33c45dee44bceeb8f646f4c55001706275e85e800587c4df568d094393e4834afd0805046cf30f57686aeece11cfc6c316b8a896edffd07ec813636460c4f3b743423163e6409a9c282fac8d469d221e7fbd6de5d:1 ++kuznyechik-ctr-acpkm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1234567890abcef0:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a001133445566778899aabbcceeff0a001122445566778899aabbcceeff0a001122335566778899aabbcceeff0a0011223344:f195d8bec10ed1dbd57b5fa240bda1b885eee733f6a13e5df33ce4b33c45dee44bceeb8f646f4c55001706275e85e800587c4df568d094393e4834afd0805046cf30f57686aeece11cfc6c316b8a896edffd07ec813636460c4f3b743423163e6409a9c282fac8d469d221e7fbd6de5d:0 +-- +2.17.1 + diff --git a/0041-kdftree-add-functions-implementing-KDF_TREE-function.patch b/0041-kdftree-add-functions-implementing-KDF_TREE-function.patch new file mode 100644 index 0000000..c78dfd9 --- /dev/null +++ b/0041-kdftree-add-functions-implementing-KDF_TREE-function.patch @@ -0,0 +1,249 @@ +From 608d04f4bc23c308b6792b414b8782669379ff09 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 18 Apr 2020 14:17:34 +0300 +Subject: [PATCH 41/87] kdftree: add functions implementing KDF_TREE function + +Add support for KDF_TREE function from RFC 7836. Unline original RFC +which enforces using of GOST R 34.11 (Streebog-256), these functions are +made generic to use any EVP_MD underneath. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 2 + + src/lib/libcrypto/kdftree/kdftree.c | 156 ++++++++++++++++++++++++++++ + src/lib/libcrypto/kdftree/kdftree.h | 47 +++++++++ + 3 files changed, 205 insertions(+) + create mode 100644 src/lib/libcrypto/kdftree/kdftree.c + create mode 100644 src/lib/libcrypto/kdftree/kdftree.h + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index c4edd9eb6..287c86d2c 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1838,6 +1838,8 @@ HMAC_Update + ISSUING_DIST_POINT_free + ISSUING_DIST_POINT_it + ISSUING_DIST_POINT_new ++KDF_TREE ++KDF_TREE_SIMPLE + LONG_it + MD4 + MD4_Final +diff --git a/src/lib/libcrypto/kdftree/kdftree.c b/src/lib/libcrypto/kdftree/kdftree.c +new file mode 100644 +index 000000000..4dc7b0096 +--- /dev/null ++++ b/src/lib/libcrypto/kdftree/kdftree.c +@@ -0,0 +1,156 @@ ++/* $OpenBSD: tlstree.h,v 1.4 2019/11/21 20:02:20 tim Exp $ */ ++/* Copyright (c) 2020, Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++#include ++ ++#define l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ ++ *((c)++)=(unsigned char)(((l) )&0xff)) ++ ++static int ++kdf_tree_block(HMAC_CTX *ctx, ++ const unsigned char *i, unsigned int i_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ const unsigned char *l, unsigned int l_length, ++ unsigned char *out, unsigned int *length) ++{ ++ /* i label 0x00 seed l */ ++ static const unsigned char data[1] = { 0x00 }; ++ ++ if (!HMAC_Init_ex(ctx, NULL, 0, NULL, NULL) || ++ !HMAC_Update(ctx, i, i_length) || ++ !HMAC_Update(ctx, label, label_length) || ++ !HMAC_Update(ctx, data, 1) || ++ !HMAC_Update(ctx, seed, seed_length) || ++ !HMAC_Update(ctx, l, l_length)) ++ return 0; ++ ++ return HMAC_Final(ctx, out, length); ++} ++ ++int KDF_TREE(const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ size_t r, ++ unsigned char *out, unsigned int length) ++{ ++ HMAC_CTX ctx; ++ unsigned int i; ++ unsigned char i_block[4], l_block[8]; ++ unsigned int l_length, l_off; ++ unsigned char *p; ++ int md_size = EVP_MD_size(md); ++ ++ HMAC_CTX_init(&ctx); ++ ++ if (!HMAC_Init_ex(&ctx, key, key_length, md, impl)) ++ return 0; ++ ++ p = l_block; ++ /* bitlength */ ++ l2c(length >> 29, p); ++ l2c(length * 8, p); ++ ++ /* Calculate how many bytes will it take */ ++ for (l_off = 0; l_off < 8; l_off++) ++ if (l_block[l_off] != 0) ++ break; ++ ++ l_length = 8 - l_off; ++ for (i = 1; length >= md_size; i++) { ++ unsigned int block = md_size; ++ p = i_block; ++ l2c(i, p); ++ if (!kdf_tree_block(&ctx, ++ i_block + 4 - r, r, ++ label, label_length, ++ seed, seed_length, ++ l_block + l_off, l_length, ++ out, &block)) { ++ HMAC_CTX_cleanup(&ctx); ++ return 0; ++ } ++ out += block; ++ length -= block; ++ } ++ if (length > 0) { ++ unsigned char tmp[EVP_MAX_MD_SIZE]; ++ unsigned int block = length; ++ ++ p = i_block; ++ l2c(i, p); ++ if (!kdf_tree_block(&ctx, ++ i_block + 4 - r, r, ++ label, label_length, ++ seed, seed_length, ++ l_block + l_off, l_length, ++ tmp, &block)) { ++ HMAC_CTX_cleanup(&ctx); ++ return 0; ++ } ++ memcpy(out, tmp, length); ++ } ++ HMAC_CTX_cleanup(&ctx); ++ ++ return 1; ++} ++ ++int KDF_TREE_SIMPLE(const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ unsigned char *out) ++{ ++ HMAC_CTX ctx; ++ static unsigned char data1[1] = { 0x01 }; ++ unsigned char data2[2]; ++ int d2_length; ++ int md_size = EVP_MD_size(md); ++ int ret = 1; ++ ++ /* bitlength */ ++ if (md_size >= 32) { ++ data2[0] = md_size / 32; ++ data2[1] = (md_size * 8) & 0xff; ++ d2_length = 2; ++ } else { ++ data2[0] = (md_size * 8) & 0xff; ++ d2_length = 1; ++ } ++ ++ HMAC_CTX_init(&ctx); ++ ++ if (!HMAC_Init_ex(&ctx, key, key_length, md, impl) || ++ !kdf_tree_block(&ctx, ++ data1, 1, ++ label, label_length, ++ seed, seed_length, ++ data2, d2_length, ++ out, &md_size)) ++ ret = 0; ++ ++ HMAC_CTX_cleanup(&ctx); ++ ++ return ret; ++} +diff --git a/src/lib/libcrypto/kdftree/kdftree.h b/src/lib/libcrypto/kdftree/kdftree.h +new file mode 100644 +index 000000000..132f70690 +--- /dev/null ++++ b/src/lib/libcrypto/kdftree/kdftree.h +@@ -0,0 +1,47 @@ ++/* $OpenBSD: kdftree.h,v 1.4 2019/11/21 20:02:20 tim Exp $ */ ++/* Copyright (c) 2020, Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#ifndef OPENSSL_HEADER_KDFTREE_H ++#define OPENSSL_HEADER_KDFTREE_H ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#include ++ ++/* See RFC 7836 Sections 4.4 */ ++int KDF_TREE(const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ size_t r, ++ unsigned char *out, unsigned int length); ++ ++/* KDF function from RFC 7836 Section 4.5. Fast equivalent of KDF_TREE with r=1 and L=EVP_MD_size(md) */ ++int KDF_TREE_SIMPLE(const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ unsigned char *out); ++ ++#if defined(__cplusplus) ++} /* extern C */ ++#endif ++ ++#endif /* OPENSSL_HEADER_KDFTREE_H */ +-- +2.17.1 + diff --git a/0042-gost-add-support-for-new-GOST-key-transport-data-for.patch b/0042-gost-add-support-for-new-GOST-key-transport-data-for.patch new file mode 100644 index 0000000..6b601cc --- /dev/null +++ b/0042-gost-add-support-for-new-GOST-key-transport-data-for.patch @@ -0,0 +1,823 @@ +From b7dd5628589230bf30bcd88d4d21cce70adb464b Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:04:15 +0300 +Subject: [PATCH 42/87] gost: add support for new GOST key transport data + format + +Add support for new GOST key transport data format used by CTR-OMAC +ciphersuites. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost.h | 5 + + src/lib/libcrypto/gost/gost_asn1.c | 59 ++++ + src/lib/libcrypto/gost/gost_asn1.h | 12 + + src/lib/libcrypto/gost/gost_kdf.c | 174 +++++++++++ + src/lib/libcrypto/gost/gost_locl.h | 17 ++ + src/lib/libcrypto/gost/gostr341001.c | 10 +- + src/lib/libcrypto/gost/gostr341001_pmeth.c | 318 +++++++++++++++++++-- + 7 files changed, 565 insertions(+), 30 deletions(-) + create mode 100644 src/lib/libcrypto/gost/gost_kdf.c + +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index e84a7625b..6a2b60670 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -228,10 +228,15 @@ size_t GOST_KEY_get_size(const GOST_KEY * r); + #define EVP_PKEY_CTRL_GOST_SIG_FORMAT (EVP_PKEY_ALG_CTRL+2) + #define EVP_PKEY_CTRL_GOST_SET_DIGEST (EVP_PKEY_ALG_CTRL+3) + #define EVP_PKEY_CTRL_GOST_GET_DIGEST (EVP_PKEY_ALG_CTRL+4) ++#define EVP_PKEY_CTRL_GOST_ENC_FORMAT (EVP_PKEY_ALG_CTRL+5) + + #define GOST_SIG_FORMAT_SR_BE 0 + #define GOST_SIG_FORMAT_RS_LE 1 + ++#define GOST_ENC_FORMAT_4490 0 /* RFC 4490, TLS CNT-IMIT */ ++#define GOST_ENC_FORMAT_PSKEY_MAGMA 1 /* CMS, TLS CTR-OMAC, Magma-encoded */ ++#define GOST_ENC_FORMAT_PSKEY_KUZNYECHIK 2 /* CMS, TLS CTR-OMAC, Kuznyechik-encoded */ ++ + /* BEGIN ERROR CODES */ + /* The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. +diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c +index 14e46afab..f56486d2a 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.c ++++ b/src/lib/libcrypto/gost/gost_asn1.c +@@ -474,4 +474,63 @@ gost3412_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params, unsig + return 1; + } + ++static const ASN1_TEMPLATE GOST_KEY_TRANSPORT_PSKEY_seq_tt[] = { ++ { ++ .flags = 0, ++ .tag = 0, ++ .offset = offsetof(GOST_KEY_TRANSPORT_PSKEY, key_exp), ++ .field_name = "key_exp", ++ .item = &ASN1_OCTET_STRING_it, ++ }, ++ { ++ .flags = 0, ++ .tag = 0, ++ .offset = offsetof(GOST_KEY_TRANSPORT_PSKEY, ephem_key), ++ .field_name = "ephem_key", ++ .item = &X509_PUBKEY_it, ++ }, ++ { ++ .flags = ASN1_TFLG_OPTIONAL, ++ .tag = 0, ++ .offset = offsetof(GOST_KEY_TRANSPORT_PSKEY, ukm), ++ .field_name = "ukm", ++ .item = &ASN1_OCTET_STRING_it, ++ }, ++}; ++ ++const ASN1_ITEM GOST_KEY_TRANSPORT_PSKEY_it = { ++ .itype = ASN1_ITYPE_NDEF_SEQUENCE, ++ .utype = V_ASN1_SEQUENCE, ++ .templates = GOST_KEY_TRANSPORT_PSKEY_seq_tt, ++ .tcount = sizeof(GOST_KEY_TRANSPORT_PSKEY_seq_tt) / sizeof(ASN1_TEMPLATE), ++ .funcs = NULL, ++ .size = sizeof(GOST_KEY_TRANSPORT_PSKEY), ++ .sname = "GOST_KEY_TRANSPORT_PSKEY", ++}; ++ ++GOST_KEY_TRANSPORT_PSKEY * ++d2i_GOST_KEY_TRANSPORT_PSKEY(GOST_KEY_TRANSPORT_PSKEY **a, const unsigned char **in, long len) ++{ ++ return (GOST_KEY_TRANSPORT_PSKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ++ &GOST_KEY_TRANSPORT_PSKEY_it); ++} ++ ++int ++i2d_GOST_KEY_TRANSPORT_PSKEY(GOST_KEY_TRANSPORT_PSKEY *a, unsigned char **out) ++{ ++ return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_PSKEY_it); ++} ++ ++GOST_KEY_TRANSPORT_PSKEY * ++GOST_KEY_TRANSPORT_PSKEY_new(void) ++{ ++ return (GOST_KEY_TRANSPORT_PSKEY *)ASN1_item_new(&GOST_KEY_TRANSPORT_PSKEY_it); ++} ++ ++void ++GOST_KEY_TRANSPORT_PSKEY_free(GOST_KEY_TRANSPORT_PSKEY *a) ++{ ++ ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_PSKEY_it); ++} ++ + #endif +diff --git a/src/lib/libcrypto/gost/gost_asn1.h b/src/lib/libcrypto/gost/gost_asn1.h +index 5af16e00e..1ae5e6706 100644 +--- a/src/lib/libcrypto/gost/gost_asn1.h ++++ b/src/lib/libcrypto/gost/gost_asn1.h +@@ -123,6 +123,18 @@ GOST3412_ENCRYPTION_PARAMS *d2i_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_P + int i2d_GOST3412_ENCRYPTION_PARAMS(GOST3412_ENCRYPTION_PARAMS *a, unsigned char **out); + extern const ASN1_ITEM GOST3412_ENCRYPTION_PARAMS_it; + ++typedef struct { ++ ASN1_OCTET_STRING *key_exp; ++ X509_PUBKEY *ephem_key; ++ ASN1_OCTET_STRING *ukm; ++} GOST_KEY_TRANSPORT_PSKEY; ++ ++GOST_KEY_TRANSPORT_PSKEY *GOST_KEY_TRANSPORT_PSKEY_new(void); ++void GOST_KEY_TRANSPORT_PSKEY_free(GOST_KEY_TRANSPORT_PSKEY *a); ++GOST_KEY_TRANSPORT_PSKEY *d2i_GOST_KEY_TRANSPORT_PSKEY(GOST_KEY_TRANSPORT_PSKEY **a, const unsigned char **in, long len); ++int i2d_GOST_KEY_TRANSPORT_PSKEY(GOST_KEY_TRANSPORT_PSKEY *a, unsigned char **out); ++extern const ASN1_ITEM GOST_KEY_TRANSPORT_PSKEY_it; ++ + __END_HIDDEN_DECLS + + #endif +diff --git a/src/lib/libcrypto/gost/gost_kdf.c b/src/lib/libcrypto/gost/gost_kdf.c +new file mode 100644 +index 000000000..be497aea0 +--- /dev/null ++++ b/src/lib/libcrypto/gost/gost_kdf.c +@@ -0,0 +1,174 @@ ++/* $OpenBSD: gost_kdf.c,v 1.4 2017/01/29 17:49:23 beck Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++ ++#include ++ ++#ifndef OPENSSL_NO_GOST ++#include ++#include ++#include ++#include ++#include ++ ++#include "gost_locl.h" ++ ++int ++gost_kexp15(const EVP_CIPHER *ctr_cipher, const EVP_CIPHER *cmac_cipher, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *key_mac, ++ const unsigned char *key_enc, ++ const unsigned char *iv, ++ unsigned char *out, size_t *out_length) ++{ ++ ++ CMAC_CTX *cmac_ctx = CMAC_CTX_new(); ++ EVP_CIPHER_CTX ctx; ++ unsigned char cmac[EVP_MAX_BLOCK_LENGTH]; ++ size_t cmac_length = sizeof(cmac); ++ unsigned int len = *out_length; ++ unsigned int tmp; ++ ++ if (CMAC_Init(cmac_ctx, key_mac, EVP_CIPHER_key_length(cmac_cipher), cmac_cipher, NULL) <= 0 || ++ CMAC_Update(cmac_ctx, iv, ctr_cipher->iv_len) <= 0 || ++ CMAC_Update(cmac_ctx, key, key_length) <= 0 || ++ CMAC_Final(cmac_ctx, cmac, &cmac_length) <= 0) { ++ CMAC_CTX_free(cmac_ctx); ++ return 0; ++ } ++ ++ CMAC_CTX_free(cmac_ctx); ++ ++ EVP_CIPHER_CTX_init(&ctx); ++ if (!EVP_EncryptInit_ex(&ctx, ctr_cipher, NULL, key_enc, iv) || ++ !EVP_CIPHER_CTX_set_padding(&ctx, 0) || ++ !EVP_EncryptUpdate(&ctx, out, &len, key, key_length)) { ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ return 0; ++ } ++ ++ tmp = *out_length - len; ++ if (!EVP_EncryptUpdate(&ctx, out + len, &tmp, cmac, cmac_length)) { ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ return 0; ++ } ++ ++ len += tmp; ++ tmp = *out_length - len; ++ if (!EVP_EncryptFinal_ex(&ctx, out + len, &tmp)) { ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ return 0; ++ } ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ ++ len += tmp; ++ *out_length = len; ++ ++ return 1; ++} ++ ++int ++gost_kimp15(const EVP_CIPHER *ctr_cipher, const EVP_CIPHER *cmac_cipher, ++ const unsigned char *sexp, unsigned int sexp_length, ++ const unsigned char *key_mac, ++ const unsigned char *key_enc, ++ const unsigned char *iv, ++ unsigned char *out, size_t *out_length) ++{ ++ CMAC_CTX *cmac_ctx = CMAC_CTX_new(); ++ EVP_CIPHER_CTX ctx; ++ unsigned char cmac[EVP_MAX_BLOCK_LENGTH]; ++ size_t cmac_length; ++ unsigned char tmp[EVP_MAX_KEY_LENGTH + EVP_MAX_BLOCK_LENGTH]; ++ unsigned int len = sizeof(tmp); ++ unsigned int len2; ++ ++ cmac_length = EVP_CIPHER_block_size(cmac_cipher); ++ if (*out_length > EVP_MAX_KEY_LENGTH || sexp_length < cmac_length || sexp_length != 32 + cmac_length) { ++ EVPerror(EVP_R_BAD_BLOCK_LENGTH); ++ return 0; ++ } ++ ++ EVP_CIPHER_CTX_init(&ctx); ++ if (!EVP_DecryptInit_ex(&ctx, ctr_cipher, NULL, key_enc, iv) || ++ !EVP_CIPHER_CTX_set_padding(&ctx, 0) || ++ !EVP_DecryptUpdate(&ctx, tmp, &len, sexp, sexp_length)) { ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ return 0; ++ } ++ ++ len2 = sizeof(tmp) - len; ++ if (!EVP_DecryptFinal_ex(&ctx, tmp + len, &len2)) { ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ return 0; ++ } ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ len += len2; ++ ++ len2 = sexp_length - cmac_length; ++ if (CMAC_Init(cmac_ctx, key_mac, EVP_CIPHER_key_length(cmac_cipher), cmac_cipher, NULL) <= 0 || ++ CMAC_Update(cmac_ctx, iv, ctr_cipher->iv_len) <= 0 || ++ CMAC_Update(cmac_ctx, tmp, sexp_length - cmac_length) <= 0 || ++ CMAC_Final(cmac_ctx, cmac, &cmac_length) <= 0) { ++ CMAC_CTX_free(cmac_ctx); ++ GOSTerror(GOST_R_SIGNATURE_MISMATCH); ++ return 0; ++ } ++ ++ CMAC_CTX_free(cmac_ctx); ++ ++ if (timingsafe_memcmp(cmac, tmp + len2, cmac_length)) { ++ GOSTerror(GOST_R_SIGNATURE_MISMATCH); ++ return 0; ++ } ++ ++ memcpy(out, tmp, len2); ++ ++ return 1; ++} ++ ++int ++gost_keg(EVP_PKEY *pub, EVP_PKEY *priv, int nid, ++ const unsigned char *ukm, unsigned char *keg_out) ++{ ++ if (nid == NID_id_tc26_gost3411_2012_512) { ++ if (gost01_VKO_key(pub, priv, ukm, 16, 1, NID_id_tc26_gost3411_2012_512, keg_out) == 0) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ return 0; ++ } ++ ++ return 1; ++ } else { ++ unsigned char tmp[32]; ++ ++ if (gost01_VKO_key(pub, priv, ukm, 16, 1, NID_id_tc26_gost3411_2012_256, tmp) == 0) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ return 0; ++ } ++ ++ return KDF_TREE(EVP_streebog256(), NULL, ++ tmp, 32, ++ "kdf tree", 8, ++ ukm + 16, 8, ++ 1, ++ keg_out, 64); ++ } ++} ++#endif +diff --git a/src/lib/libcrypto/gost/gost_locl.h b/src/lib/libcrypto/gost/gost_locl.h +index f512029e1..13e9fd459 100644 +--- a/src/lib/libcrypto/gost/gost_locl.h ++++ b/src/lib/libcrypto/gost/gost_locl.h +@@ -121,6 +121,8 @@ extern int VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, + GOST_KEY *priv_key, const BIGNUM *ukm); + extern BIGNUM *GOST_le2bn(const unsigned char *buf, size_t len, BIGNUM *bn); + extern int GOST_bn2le(BIGNUM *bn, unsigned char *buf, int len); ++extern int gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm, ++ unsigned int ukm_len, int ukm_be, int out_nid, unsigned char *key); + + /* GOST R 34.10 parameters */ + extern int GostR3410_get_md_digest(int nid); +@@ -128,6 +130,21 @@ extern int GostR3410_get_pk_digest(int nid); + extern int GostR3410_256_param_id(const char *value); + extern int GostR3410_512_param_id(const char *value); + ++int gost_keg(EVP_PKEY *pub, EVP_PKEY *priv, int nid, ++ const unsigned char *ukm, unsigned char *keg_out); ++int gost_kexp15(const EVP_CIPHER *cmac_cipher, const EVP_CIPHER *ctr_cipher, ++ const unsigned char *key, unsigned int key_length, ++ const unsigned char *key_mac, ++ const unsigned char *key_enc, ++ const unsigned char *iv, ++ unsigned char *out, size_t *out_length); ++int gost_kimp15(const EVP_CIPHER *cmac_cipher, const EVP_CIPHER *ctr_cipher, ++ const unsigned char *sexp, unsigned int sexp_length, ++ const unsigned char *key_mac, ++ const unsigned char *key_enc, ++ const unsigned char *iv, ++ unsigned char *out, size_t *out_length); ++ + __END_HIDDEN_DECLS + + #endif +diff --git a/src/lib/libcrypto/gost/gostr341001.c b/src/lib/libcrypto/gost/gostr341001.c +index ba70d5f1f..5ac36d25f 100644 +--- a/src/lib/libcrypto/gost/gostr341001.c ++++ b/src/lib/libcrypto/gost/gostr341001.c +@@ -329,7 +329,7 @@ int + VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, GOST_KEY *priv_key, + const BIGNUM *ukm) + { +- BIGNUM *p = NULL, *order = NULL; ++ BIGNUM *p = NULL, *order = NULL, *cofactor = NULL; + const BIGNUM *key = GOST_KEY_get0_private_key(priv_key); + const EC_GROUP *group = GOST_KEY_get0_group(priv_key); + const EC_POINT *pub_key = GOST_KEY_get0_public_key(pkey); +@@ -350,7 +350,13 @@ VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, GOST_KEY *priv_key, + goto err; + if (EC_GROUP_get_order(group, order, ctx) == 0) + goto err; +- if (BN_mod_mul(p, key, ukm, order, ctx) == 0) ++ if ((cofactor = BN_CTX_get(ctx)) == NULL) ++ goto err; ++ if (EC_GROUP_get_cofactor(group, cofactor, ctx) == 0) ++ goto err; ++ if (BN_mod_mul(p, key, cofactor, order, ctx) == 0) ++ goto err; ++ if (!BN_is_zero(ukm) && BN_mod_mul(p, p, ukm, order, ctx) == 0) + goto err; + if (EC_POINT_mul(group, pnt, NULL, pub_key, p, ctx) == 0) + goto err; +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index 0e0cae99e..455337232 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -130,8 +130,10 @@ struct gost_pmeth_data { + int digest_nid; + EVP_MD *md; + unsigned char *shared_ukm; ++ unsigned int shared_ukm_len; + int peer_key_used; + int sig_format; ++ int enc_format; + }; + + static int +@@ -165,8 +167,8 @@ pkey_gost01_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) + src_data = EVP_PKEY_CTX_get_data(src); + dst_data = EVP_PKEY_CTX_get_data(dst); + *dst_data = *src_data; +- if (src_data->shared_ukm != NULL) +- dst_data->shared_ukm = NULL; ++ dst_data->shared_ukm = NULL; ++ dst_data->shared_ukm_len = 0; + return 1; + } + +@@ -310,11 +312,12 @@ err: + return ok; + } + +-static int ++int + gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm, +- unsigned char *key) ++ unsigned int ukm_len, int ukm_be, int out_nid, unsigned char *key) + { + unsigned char hashbuf[128]; ++ size_t hash_len; + int digest_nid; + int ret = 0; + BN_CTX *ctx = BN_CTX_new(); +@@ -331,7 +334,10 @@ gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm, + if ((Y = BN_CTX_get(ctx)) == NULL) + goto err; + +- GOST_le2bn(ukm, 8, UKM); ++ if (ukm_be) ++ BN_bin2bn (ukm, ukm_len, UKM); ++ else ++ GOST_le2bn(ukm, ukm_len, UKM); + + digest_nid = GOST_KEY_get_digest(priv_key->pkey.gost); + if (VKO_compute_key(X, Y, pub_key->pkey.gost, priv_key->pkey.gost, +@@ -340,27 +346,37 @@ gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm, + + switch (digest_nid) { + case NID_id_GostR3411_94_CryptoProParamSet: +- GOST_bn2le(X, hashbuf, 32); +- GOST_bn2le(Y, hashbuf + 32, 32); +- GOSTR341194(hashbuf, 64, key, digest_nid); +- ret = 1; +- break; + case NID_id_tc26_gost3411_2012_256: + GOST_bn2le(X, hashbuf, 32); + GOST_bn2le(Y, hashbuf + 32, 32); +- STREEBOG256(hashbuf, 64, key); +- ret = 1; ++ hash_len = 64; + break; + case NID_id_tc26_gost3411_2012_512: + GOST_bn2le(X, hashbuf, 64); + GOST_bn2le(Y, hashbuf + 64, 64); +- STREEBOG256(hashbuf, 128, key); +- ret = 1; ++ hash_len = 128; + break; + default: + ret = -2; ++ goto err; ++ } ++ ++ switch (out_nid) { ++ case NID_id_GostR3411_94_CryptoProParamSet: ++ GOSTR341194(hashbuf, hash_len, key, out_nid); ++ break; ++ case NID_id_tc26_gost3411_2012_256: ++ STREEBOG256(hashbuf, hash_len, key); ++ break; ++ case NID_id_tc26_gost3411_2012_512: ++ STREEBOG512(hashbuf, hash_len, key); + break; ++ default: ++ ret = -2; ++ goto err; + } ++ ++ ret = 1; + err: + BN_CTX_end(ctx); + BN_CTX_free(ctx); +@@ -368,7 +384,7 @@ err: + } + + int +-pkey_gost01_decrypt(EVP_PKEY_CTX *pctx, unsigned char *key, size_t *key_len, ++pkey_gost01_decrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *key, size_t *key_len, + const unsigned char *in, size_t in_len) + { + const unsigned char *p = in; +@@ -428,8 +444,15 @@ pkey_gost01_decrypt(EVP_PKEY_CTX *pctx, unsigned char *key, size_t *key_len, + goto err; + } + memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4); +- if (gost01_VKO_key(peerkey, priv, wrappedKey, sharedKey) <= 0) ++ if (gost01_VKO_key(peerkey, priv, wrappedKey, 8, 0, ++ GOST_KEY_get_digest(priv->pkey.gost) == ++ NID_id_GostR3411_94_CryptoProParamSet ? ++ NID_id_GostR3411_94_CryptoProParamSet : ++ NID_id_tc26_gost3411_2012_256, ++ sharedKey) <= 0) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); + goto err; ++ } + if (gost_key_unwrap_crypto_pro(nid, sharedKey, wrappedKey, key) == 0) { + GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); + goto err; +@@ -464,15 +487,22 @@ pkey_gost01_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) + return 32; + } + +- if (gost01_VKO_key(peer_key, my_key, data->shared_ukm, key) <= 0) ++ if (gost01_VKO_key(peer_key, my_key, data->shared_ukm, 8, 0, ++ GOST_KEY_get_digest(my_key->pkey.gost) == ++ NID_id_GostR3411_94_CryptoProParamSet ? ++ NID_id_GostR3411_94_CryptoProParamSet : ++ NID_id_tc26_gost3411_2012_256, ++ key) <= 0) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); + return 0; ++ } + + *keylen = 32; + return 1; + } + + int +-pkey_gost01_encrypt(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, ++pkey_gost01_encrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, + const unsigned char *key, size_t key_len) + { + GOST_KEY_TRANSPORT *gkt = NULL; +@@ -484,7 +514,7 @@ pkey_gost01_encrypt(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, + EVP_PKEY *sec_key = EVP_PKEY_CTX_get0_peerkey(pctx); + int nid = NID_id_Gost28147_89_CryptoPro_A_ParamSet; + +- if (data->shared_ukm != NULL) { ++ if (data->shared_ukm != NULL && data->shared_ukm_len >= 8) { + memcpy(ukm, data->shared_ukm, 8); + } else /* if (out != NULL) */ { + arc4random_buf(ukm, 8); +@@ -521,22 +551,29 @@ pkey_gost01_encrypt(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, + } + + if (out != NULL) { +- if (gost01_VKO_key(pubk, sec_key, ukm, shared_key) <= 0) ++ if (gost01_VKO_key(pubk, sec_key, ukm, 8, 0, ++ GOST_KEY_get_digest(pubk->pkey.gost) == ++ NID_id_GostR3411_94_CryptoProParamSet ? ++ NID_id_GostR3411_94_CryptoProParamSet : ++ NID_id_tc26_gost3411_2012_256, ++ shared_key) <= 0) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); + goto err; ++ } + gost_key_wrap_crypto_pro(nid, shared_key, ukm, key, + crypted_key); + } + gkt = GOST_KEY_TRANSPORT_new(); +- if (gkt == NULL) +- goto err; +- if (ASN1_OCTET_STRING_set(gkt->key_agreement_info->eph_iv, ukm, 8) == 0) +- goto err; +- if (ASN1_OCTET_STRING_set(gkt->key_info->imit, crypted_key + 40, +- 4) == 0) ++ if (gkt == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); + goto err; +- if (ASN1_OCTET_STRING_set(gkt->key_info->encrypted_key, crypted_key + 8, +- 32) == 0) ++ } ++ if (!ASN1_OCTET_STRING_set(gkt->key_agreement_info->eph_iv, ukm, 8) || ++ !ASN1_OCTET_STRING_set(gkt->key_info->imit, crypted_key + 40, 4) || ++ !ASN1_OCTET_STRING_set(gkt->key_info->encrypted_key, crypted_key + 8, 32)) { ++ GOSTerror(ERR_R_ASN1_LIB); + goto err; ++ } + if (key_is_ephemeral) { + if (X509_PUBKEY_set(&gkt->key_agreement_info->ephem_key, + out != NULL ? sec_key : pubk) == 0) { +@@ -568,6 +605,213 @@ err: + return -1; + } + ++int ++pkey_gost01_decrypt_pskey(EVP_PKEY_CTX *pctx, unsigned char *key, size_t *key_len, ++ const unsigned char *in, size_t in_len, ++ const EVP_CIPHER *enc_cipher, const EVP_CIPHER *mac_cipher) ++{ ++ const unsigned char *p = in; ++ EVP_PKEY *priv = EVP_PKEY_CTX_get0_pkey(pctx); ++ GOST_KEY_TRANSPORT_PSKEY *gkt = NULL; ++ struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(pctx); ++ EVP_PKEY *eph_key = NULL, *peerkey = NULL; ++ unsigned char keg_out[64]; ++ const unsigned char *ukm; ++ ++ if (key == NULL) { ++ *key_len = 32; ++ return 1; ++ } ++ ++ gkt = d2i_GOST_KEY_TRANSPORT_PSKEY(NULL, (const unsigned char **)&p, in_len); ++ if (gkt == NULL) { ++ GOSTerror(GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO); ++ return -1; ++ } ++ ++ if (data->shared_ukm_len == 0) { ++ if (!gkt->ukm || gkt->ukm->length != 32) { ++ GOSTerror(ERR_R_ASN1_LIB); ++ goto err; ++ } ++ ukm = gkt->ukm->data; ++ } else if (data->shared_ukm_len != 32) { ++ GOSTerror(GOST_R_INVALID_IV_LENGTH); ++ goto err; ++ } else { ++ ukm = data->shared_ukm; ++ } ++ ++ eph_key = X509_PUBKEY_get(gkt->ephem_key); ++ if (eph_key == NULL) { ++ GOSTerror(GOST_R_ERROR_PARSING_KEY_TRANSPORT_INFO); ++ goto err; ++ } ++ ++ if (EVP_PKEY_derive_set_peer(pctx, eph_key) <= 0) { ++ GOSTerror(GOST_R_INCOMPATIBLE_PEER_KEY); ++ goto err; ++ } ++ ++ peerkey = EVP_PKEY_CTX_get0_peerkey(pctx); ++ if (peerkey == NULL) { ++ GOSTerror(GOST_R_NO_PEER_KEY); ++ goto err; ++ } ++ ++ /* KEG */ ++ if (!gost_keg(peerkey, priv, data->digest_nid, ukm, keg_out)) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ goto err; ++ } ++ ++ if (!gost_kimp15(enc_cipher, mac_cipher, ++ gkt->key_exp->data, gkt->key_exp->length, ++ keg_out, keg_out + 32, ++ ukm + 24, ++ key, key_len)) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ goto err; ++ } ++ ++ GOST_KEY_TRANSPORT_PSKEY_free(gkt); ++ return 1; ++ ++err: ++ GOST_KEY_TRANSPORT_PSKEY_free(gkt); ++ return 0; ++} ++ ++int ++pkey_gost01_encrypt_pskey(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, ++ const unsigned char *key, size_t key_len, ++ const EVP_CIPHER *enc_cipher, const EVP_CIPHER *mac_cipher) ++{ ++ GOST_KEY_TRANSPORT_PSKEY *gkt = NULL; ++ struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(pctx); ++ EVP_PKEY *pubk = EVP_PKEY_CTX_get0_pkey(pctx); ++ EVP_PKEY *sec_key = NULL; ++ GOST_KEY *tmp_key; ++ unsigned char ukm[32]; ++ unsigned char keg_out[64]; ++ unsigned char kexp_out[64]; ++ size_t kexp_len = sizeof(kexp_out); ++ int tmp_len; ++ ++ if (data->shared_ukm == NULL) { ++ arc4random_buf(ukm, sizeof(ukm)); ++ } else if (data->shared_ukm_len != sizeof(ukm)) { ++ GOSTerror(GOST_R_INVALID_IV_LENGTH); ++ return 0; ++ } else { ++ memcpy(ukm, data->shared_ukm, sizeof(ukm)); ++ } ++ ++ if (out) { ++ sec_key = EVP_PKEY_new(); ++ if (sec_key == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ tmp_key = GOST_KEY_new(); ++ if (tmp_key == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ if (EVP_PKEY_assign(sec_key, EVP_PKEY_base_id(pubk), tmp_key) == 0) { ++ GOST_KEY_free(tmp_key); ++ goto err; ++ } ++ if (EVP_PKEY_copy_parameters(sec_key, pubk) == 0) ++ goto err; ++ if (gost2001_keygen(sec_key->pkey.gost) == 0) ++ goto err; ++ ++ /* KEG */ ++ if (!gost_keg(pubk, sec_key, data->digest_nid, ukm, keg_out)) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ goto err; ++ } ++ ++ if (!gost_kexp15(enc_cipher, mac_cipher, ++ key, key_len, ++ keg_out, keg_out + 32, ++ ukm + 24, ++ kexp_out, &kexp_len)) ++ goto err; ++ } else { ++ kexp_len = key_len + EVP_CIPHER_block_size(mac_cipher); ++ } ++ ++ gkt = GOST_KEY_TRANSPORT_PSKEY_new(); ++ if (gkt == NULL) ++ goto err; ++ ++ if (!ASN1_OCTET_STRING_set(gkt->key_exp, kexp_out, kexp_len) || ++ !X509_PUBKEY_set(&gkt->ephem_key, out ? sec_key : pubk)) ++ goto err; ++ ++ if (data->shared_ukm == NULL && ++ (((gkt->ukm = ASN1_OCTET_STRING_new()) == NULL) || ++ !ASN1_OCTET_STRING_set(gkt->ukm, ukm, sizeof(ukm)))) ++ goto err; ++ ++ tmp_len = i2d_GOST_KEY_TRANSPORT_PSKEY(gkt, NULL); ++ if (!out) { ++ *out_len = tmp_len; ++ } else { ++ if (*out_len < tmp_len) ++ goto err; ++ *out_len = i2d_GOST_KEY_TRANSPORT_PSKEY(gkt, &out); ++ } ++ ++ EVP_PKEY_free(sec_key); ++ GOST_KEY_TRANSPORT_PSKEY_free(gkt); ++ ++ return 1; ++err: ++ EVP_PKEY_free(sec_key); ++ GOST_KEY_TRANSPORT_PSKEY_free(gkt); ++ return 0; ++} ++ ++int ++pkey_gost01_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *out_len, ++ const unsigned char *key, size_t key_len) ++{ ++ struct gost_pmeth_data *pctx = EVP_PKEY_CTX_get_data(ctx); ++ ++ switch (pctx->enc_format) { ++ case GOST_ENC_FORMAT_4490: ++ return pkey_gost01_decrypt_4490(ctx, out, out_len, key, key_len); ++ case GOST_ENC_FORMAT_PSKEY_MAGMA: ++ return pkey_gost01_decrypt_pskey(ctx, out, out_len, key, key_len, EVP_magma_ctr(), EVP_magma_cbc()); ++ case GOST_ENC_FORMAT_PSKEY_KUZNYECHIK: ++ return pkey_gost01_decrypt_pskey(ctx, out, out_len, key, key_len, EVP_kuznyechik_ctr(), EVP_kuznyechik_cbc()); ++ default: ++ return -1; ++ } ++} ++ ++int ++pkey_gost01_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *out_len, ++ const unsigned char *key, size_t key_len) ++{ ++ struct gost_pmeth_data *pctx = EVP_PKEY_CTX_get_data(ctx); ++ ++ switch (pctx->enc_format) { ++ case GOST_ENC_FORMAT_4490: ++ return pkey_gost01_encrypt_4490(ctx, out, out_len, key, key_len); ++ case GOST_ENC_FORMAT_PSKEY_MAGMA: ++ return pkey_gost01_encrypt_pskey(ctx, out, out_len, key, key_len, EVP_magma_ctr(), EVP_magma_cbc()); ++ case GOST_ENC_FORMAT_PSKEY_KUZNYECHIK: ++ return pkey_gost01_encrypt_pskey(ctx, out, out_len, key, key_len, EVP_kuznyechik_ctr(), EVP_kuznyechik_cbc()); ++ default: ++ return -1; ++ } ++} + + static int + pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +@@ -604,6 +848,7 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + memcpy(ukm, p2, p1); + free(pctx->shared_ukm); + pctx->shared_ukm = ukm; ++ pctx->shared_ukm_len = p1; + return 1; + } + +@@ -631,6 +876,23 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + case EVP_PKEY_CTRL_GOST_GET_DIGEST: + *(int *)p2 = pctx->digest_nid; + return 1; ++ case EVP_PKEY_CTRL_GOST_ENC_FORMAT: ++ switch (p1) { ++ case GOST_ENC_FORMAT_4490: ++ /* All keys are supported */ ++ break; ++ case GOST_ENC_FORMAT_PSKEY_MAGMA: ++ case GOST_ENC_FORMAT_PSKEY_KUZNYECHIK: ++ if (pctx->digest_nid != NID_id_tc26_gost3411_2012_256 && ++ pctx->digest_nid != NID_id_tc26_gost3411_2012_512) ++ return 0; ++ break; ++ default: ++ return 0; ++ } ++ pctx->enc_format = p1; ++ return 1; ++ break; + default: + return -2; + } +-- +2.17.1 + diff --git a/0043-modes-add-support-for-128-bit-MGM-mode.patch b/0043-modes-add-support-for-128-bit-MGM-mode.patch new file mode 100644 index 0000000..f658939 --- /dev/null +++ b/0043-modes-add-support-for-128-bit-MGM-mode.patch @@ -0,0 +1,380 @@ +From cecf218cb638ba4776bce1f702e9ffe2c2e2db12 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 21:54:20 +0300 +Subject: [PATCH 43/87] modes: add support for 128-bit MGM mode + +Add support for 128-bit MGM (Multilinear Galois Mode) defined in +draft-smyshlyaev-mgm. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/modes/mgm128.c | 308 ++++++++++++++++++++++++++++ + src/lib/libcrypto/modes/modes.h | 16 ++ + src/lib/libcrypto/modes/modes_lcl.h | 11 + + 3 files changed, 335 insertions(+) + create mode 100644 src/lib/libcrypto/modes/mgm128.c + +diff --git a/src/lib/libcrypto/modes/mgm128.c b/src/lib/libcrypto/modes/mgm128.c +new file mode 100644 +index 000000000..dbd18b0a8 +--- /dev/null ++++ b/src/lib/libcrypto/modes/mgm128.c +@@ -0,0 +1,308 @@ ++/* $OpenBSD: mgm128.c,v 1.22 2018/01/24 23:03:37 kettenis Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++#include ++#include "modes_lcl.h" ++ ++#define MGM128_BLOCK_SIZE 16 ++#define MGM128_POLYNOMIAL U64(0x87) ++ ++static void ++mgm128_gf_shift (u64 r[2], const u64 x[2]) ++{ ++ long mask; ++ ++ /* Shift uses big-endian representation. */ ++#if BYTE_ORDER != LITTLE_ENDIAN ++ mask = - ((x[0] >> 63) & 1); ++ r[0] = (x[0] << 1) | (x[1] >> 63); ++ r[1] = (x[1] << 1) ^ (mask & (MGM128_POLYNOMIAL)); ++#else /* ! WORDS_BIGENDIAN */ ++#define RSHIFT_WORD(x) \ ++ ((((x) & UINT64_C(0x7f7f7f7f7f7f7f7f)) << 1) \ ++ | (((x) & UINT64_C(0x8080808080808000)) >> 15)) ++ mask = - ((x[0] >> 7) & 1); ++ r[0] = RSHIFT_WORD(x[0]) | ((x[1] & 0x80) << 49); ++ r[1] = RSHIFT_WORD(x[1]) ^ (mask & (MGM128_POLYNOMIAL << 56)); ++# undef RSHIFT_WORD ++#endif /* ! WORDS_BIGENDIAN */ ++} ++ ++static void ++mgm128_gf_mul_sum(MGM128_CONTEXT *ctx, u64 *x, const uint8_t *y) ++{ ++ u64 V[2], Z[2]; ++ unsigned i; ++ ++ memcpy(V, x, sizeof(V)); ++ memset(Z, 0, sizeof(Z)); ++ ++ for (i = 0; i < MGM128_BLOCK_SIZE; i++) ++ { ++ uint8_t b = y[MGM128_BLOCK_SIZE - i - 1]; ++ unsigned j; ++ for (j = 0; j < 8; j++, b >>= 1) ++ { ++ if (b & 1) { ++ Z[0] ^= V[0]; ++ Z[1] ^= V[1]; ++ } ++ ++ mgm128_gf_shift(V, V); ++ } ++ } ++ ++ ctx->sum[0] ^= Z[0]; ++ ctx->sum[1] ^= Z[1]; ++} ++ ++static inline void mgm128_inc(unsigned char *counter, u32 n) ++{ ++ u8 c; ++ ++ do { ++ --n; ++ c = counter[n]; ++ ++c; ++ counter[n] = c; ++ if (c) return; ++ } while (n); ++} ++ ++void mgm128_hash_block(MGM128_CONTEXT *ctx, const u8 *data) ++{ ++ union {u64 u[2]; u8 c[MGM128_BLOCK_SIZE]; } tmp; ++ ++ (*ctx->block)(ctx->z, tmp.c, ctx->key); ++ mgm128_gf_mul_sum(ctx, tmp.u, data); ++ mgm128_inc(ctx->z, MGM128_BLOCK_SIZE / 2); ++} ++ ++void CRYPTO_mgm128_init(MGM128_CONTEXT *ctx, void *key, block128_f block) ++{ ++ memset(ctx,0,sizeof(*ctx)); ++ ctx->block = block; ++ ctx->key = key; ++} ++ ++void CRYPTO_mgm128_setiv(MGM128_CONTEXT *ctx, const unsigned char *iv) ++{ ++ memcpy(ctx->y, iv, MGM128_NONCE_LEN); ++ memcpy(ctx->z, iv, MGM128_NONCE_LEN); ++ ++ ctx->y[0] &= 0x7f; ++ ctx->z[0] |= 0x80; ++ ++ (*ctx->block)(ctx->y, ctx->y, ctx->key); ++ (*ctx->block)(ctx->z, ctx->z, ctx->key); ++ ++ memset(ctx->sum, 0, MGM128_BLOCK_SIZE); ++ memset(ctx->len, 0, MGM128_BLOCK_SIZE); ++} ++ ++int CRYPTO_mgm128_aad(MGM128_CONTEXT *ctx, const unsigned char *aad, ++ size_t len) ++{ ++ unsigned int n; ++ ++ if (ctx->len[1]) ++ return -2; ++ ++ ctx->len[0] += len * 8; ++ ++ n = ctx->a_remain; ++ if (n) { ++ while (n && len) { ++ ctx->part[n] = *(aad++); ++ --len; ++ n = (n + 1) % MGM128_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm128_hash_block(ctx, ctx->part); ++ } else { ++ ctx->a_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM128_BLOCK_SIZE) { ++ mgm128_hash_block(ctx, aad); ++ aad += MGM128_BLOCK_SIZE; ++ len -= MGM128_BLOCK_SIZE; ++ } ++ ++ if (len) ++ memcpy(ctx->part, aad, len); ++ ++ ctx->a_remain = len; ++ return 0; ++} ++ ++int CRYPTO_mgm128_encrypt(MGM128_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len) ++{ ++ unsigned int n; ++ ++ /* Handle AAD remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM128_BLOCK_SIZE - ctx->a_remain); ++ mgm128_hash_block(ctx, ctx->part); ++ ctx->a_remain = 0; ++ } ++ ++ ctx->len[1] += len * 8; ++ ++ n = ctx->d_remain; ++ if (n) { ++ while (n && len) { ++ ctx->part[n] ^= *(in++); ++ *(out++) = ctx->part[n]; ++ --len; ++ n = (n + 1) % MGM128_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm128_hash_block(ctx, ctx->part); ++ } else { ++ ctx->d_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM128_BLOCK_SIZE) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm128_inc(ctx->y + MGM128_BLOCK_SIZE / 2, MGM128_BLOCK_SIZE / 2); ++ for (n = 0; n < MGM128_BLOCK_SIZE; n++) { ++ out[n] = ctx->part[n] ^ in[n]; ++ } ++ mgm128_hash_block(ctx, out); ++ in += MGM128_BLOCK_SIZE; ++ out += MGM128_BLOCK_SIZE; ++ len -= MGM128_BLOCK_SIZE; ++ } ++ ++ if (len) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm128_inc(ctx->y + MGM128_BLOCK_SIZE / 2, MGM128_BLOCK_SIZE / 2); ++ for (n = 0; n < len; n++) { ++ ctx->part[n] ^= *(in++); ++ *(out++) = ctx->part[n]; ++ } ++ } ++ ++ ctx->d_remain = len; ++ ++ return 0; ++} ++ ++int CRYPTO_mgm128_decrypt(MGM128_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len) ++{ ++ unsigned int n; ++ ++ /* Handle AAD remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM128_BLOCK_SIZE - ctx->a_remain); ++ mgm128_hash_block(ctx, ctx->part); ++ ctx->a_remain = 0; ++ } ++ ++ ctx->len[1] += len * 8; ++ ++ n = ctx->d_remain; ++ if (n) { ++ while (n && len) { ++ u8 tmp = *(in++); ++ *(out++) = ctx->part[n] ^ tmp; ++ ctx->part[n] = tmp; ++ n = (n + 1) % MGM128_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm128_hash_block(ctx, ctx->part); ++ } else { ++ ctx->d_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM128_BLOCK_SIZE) { ++ mgm128_hash_block(ctx, in); ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm128_inc(ctx->y + MGM128_BLOCK_SIZE / 2, MGM128_BLOCK_SIZE / 2); ++ for (n = 0; n < MGM128_BLOCK_SIZE; n++) { ++ out[n] = ctx->part[n] ^ in[n]; ++ } ++ in += MGM128_BLOCK_SIZE; ++ out += MGM128_BLOCK_SIZE; ++ len -= MGM128_BLOCK_SIZE; ++ } ++ ++ if (len) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm128_inc(ctx->y + MGM128_BLOCK_SIZE / 2, MGM128_BLOCK_SIZE / 2); ++ for (n = 0; n < len; n++) { ++ u8 tmp = *(in++); ++ *(out++) = ctx->part[n] ^ tmp; ++ ctx->part[n] = tmp; ++ } ++ } ++ ++ ctx->d_remain = len; ++ ++ return 0; ++} ++ ++int CRYPTO_mgm128_finish(MGM128_CONTEXT *ctx,const unsigned char *tag, ++ size_t len) ++{ ++ /* Handle AAD and data remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM128_BLOCK_SIZE - ctx->a_remain); ++ mgm128_hash_block(ctx, ctx->part); ++ } ++ ++ if (ctx->d_remain) { ++ memset(ctx->part + ctx->d_remain, 0, MGM128_BLOCK_SIZE - ctx->d_remain); ++ mgm128_hash_block(ctx, ctx->part); ++ } ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++#ifndef BSWAP8 ++#define BSWAP8(u) (u64)GETU32((unsigned char *)&u) << 32|GETU32(((unsigned char *)&u) + 4) ++#endif ++ ctx->len[0] = BSWAP8(ctx->len[0]); ++ ctx->len[1] = BSWAP8(ctx->len[1]); ++#endif ++ mgm128_hash_block(ctx, (unsigned char *)ctx->len); ++ ++ (*ctx->block)((unsigned char *)ctx->sum, (unsigned char *)ctx->sum, ctx->key); ++ ++ if (tag && len<=sizeof(ctx->sum)) ++ return memcmp(ctx->sum, tag, len); ++ else ++ return -1; ++} ++ ++void CRYPTO_mgm128_tag(MGM128_CONTEXT *ctx, unsigned char *tag, size_t len) ++{ ++ CRYPTO_mgm128_finish(ctx, NULL, 0); ++ memcpy(tag, ctx->sum, len<=sizeof(ctx->sum)?len:sizeof(ctx->sum)); ++} +diff --git a/src/lib/libcrypto/modes/modes.h b/src/lib/libcrypto/modes/modes.h +index 2344e944e..477d5eb52 100644 +--- a/src/lib/libcrypto/modes/modes.h ++++ b/src/lib/libcrypto/modes/modes.h +@@ -139,6 +139,22 @@ typedef struct xts128_context XTS128_CONTEXT; + int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, size_t len, int enc); + ++typedef struct mgm128_context MGM128_CONTEXT; ++ ++void CRYPTO_mgm128_init(MGM128_CONTEXT *ctx,void *key,block128_f block); ++void CRYPTO_mgm128_setiv(MGM128_CONTEXT *ctx, const unsigned char *iv); ++int CRYPTO_mgm128_aad(MGM128_CONTEXT *ctx, const unsigned char *aad, ++ size_t len); ++int CRYPTO_mgm128_encrypt(MGM128_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len); ++int CRYPTO_mgm128_decrypt(MGM128_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len); ++int CRYPTO_mgm128_finish(MGM128_CONTEXT *ctx,const unsigned char *tag, ++ size_t len); ++void CRYPTO_mgm128_tag(MGM128_CONTEXT *ctx, unsigned char *tag, size_t len); ++ + typedef void (*block64_f)(const unsigned char in[8], + unsigned char out[8], + const void *key); +diff --git a/src/lib/libcrypto/modes/modes_lcl.h b/src/lib/libcrypto/modes/modes_lcl.h +index f8830e4de..e1bc05da5 100644 +--- a/src/lib/libcrypto/modes/modes_lcl.h ++++ b/src/lib/libcrypto/modes/modes_lcl.h +@@ -108,4 +108,15 @@ struct ccm128_context { + void *key; + }; + ++struct mgm128_context { ++ u64 len[2]; /* aad and data len */ ++ u64 sum[2]; ++ u8 y[16], z[16], part[16]; ++ block128_f block; ++ void *key; ++ unsigned int a_remain, d_remain; ++}; ++ ++#define MGM128_NONCE_LEN 16 ++ + __END_HIDDEN_DECLS +-- +2.17.1 + diff --git a/0044-modes-add-support-for-64-bit-MGM-mode.patch b/0044-modes-add-support-for-64-bit-MGM-mode.patch new file mode 100644 index 0000000..ccdde8f --- /dev/null +++ b/0044-modes-add-support-for-64-bit-MGM-mode.patch @@ -0,0 +1,378 @@ +From 2b03c9ee4c27cceda26c18eaa462e88e42014a3e Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 21:54:20 +0300 +Subject: [PATCH 44/87] modes: add support for 64-bit MGM mode + +Add support for 64-bit MGM (Multilinear Galois Mode) defined in +draft-smyshlyaev-mgm. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/modes/mgm64.c | 306 ++++++++++++++++++++++++++++ + src/lib/libcrypto/modes/modes.h | 16 ++ + src/lib/libcrypto/modes/modes_lcl.h | 11 + + 3 files changed, 333 insertions(+) + create mode 100644 src/lib/libcrypto/modes/mgm64.c + +diff --git a/src/lib/libcrypto/modes/mgm64.c b/src/lib/libcrypto/modes/mgm64.c +new file mode 100644 +index 000000000..071ab19d2 +--- /dev/null ++++ b/src/lib/libcrypto/modes/mgm64.c +@@ -0,0 +1,306 @@ ++/* $OpenBSD: mgm64.c,v 1.22 2018/01/24 23:03:37 kettenis Exp $ */ ++/* ++ * Copyright (c) 2020 Dmitry Baryshkov ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++#include ++#include "modes_lcl.h" ++ ++#define MGM64_BLOCK_SIZE 8 ++#define MGM64_POLYNOMIAL U64(0x1b) ++ ++static u64 ++mgm64_gf_shift (const u64 x) ++{ ++ long mask; ++ ++ /* Shift uses big-endian representation. */ ++#if BYTE_ORDER != LITTLE_ENDIAN ++ mask = - ((x >> 63) & 1); ++ return (x << 1) ^ (mask & (MGM64_POLYNOMIAL)); ++#else /* ! WORDS_BIGENDIAN */ ++#define RSHIFT_WORD(x) \ ++ ((((x) & UINT64_C(0x7f7f7f7f7f7f7f7f)) << 1) \ ++ | (((x) & UINT64_C(0x8080808080808000)) >> 15)) ++ mask = - ((x >> 7) & 1); ++ return RSHIFT_WORD(x) ^ (mask & (MGM64_POLYNOMIAL << 56)); ++# undef RSHIFT_WORD ++#endif /* ! WORDS_BIGENDIAN */ ++} ++ ++static void ++mgm64_gf_mul_sum(MGM64_CONTEXT *ctx, u64 x, const uint8_t *y) ++{ ++ u64 V, Z; ++ unsigned i; ++ ++ V = x; ++ Z = 0; ++ ++ for (i = 0; i < MGM64_BLOCK_SIZE; i++) ++ { ++ uint8_t b = y[MGM64_BLOCK_SIZE - i - 1]; ++ unsigned j; ++ for (j = 0; j < 8; j++, b >>= 1) ++ { ++ if (b & 1) { ++ Z ^= V; ++ } ++ ++ V = mgm64_gf_shift(V); ++ } ++ } ++ ++ ctx->sum ^= Z; ++} ++ ++static inline void mgm64_inc(unsigned char *counter, u32 n) ++{ ++ u8 c; ++ ++ do { ++ --n; ++ c = counter[n]; ++ ++c; ++ counter[n] = c; ++ if (c) return; ++ } while (n); ++} ++ ++void mgm64_hash_block(MGM64_CONTEXT *ctx, const u8 *data) ++{ ++ union {u64 u; u8 c[MGM64_BLOCK_SIZE]; } tmp; ++ ++ (*ctx->block)(ctx->z, tmp.c, ctx->key); ++ mgm64_gf_mul_sum(ctx, tmp.u, data); ++ mgm64_inc(ctx->z, MGM64_BLOCK_SIZE / 2); ++} ++ ++void CRYPTO_mgm64_init(MGM64_CONTEXT *ctx, void *key, block64_f block) ++{ ++ memset(ctx,0,sizeof(*ctx)); ++ ctx->block = block; ++ ctx->key = key; ++} ++ ++void CRYPTO_mgm64_setiv(MGM64_CONTEXT *ctx, const unsigned char *iv) ++{ ++ memcpy(ctx->y, iv, MGM64_NONCE_LEN); ++ memcpy(ctx->z, iv, MGM64_NONCE_LEN); ++ ++ ctx->y[0] &= 0x7f; ++ ctx->z[0] |= 0x80; ++ ++ (*ctx->block)(ctx->y, ctx->y, ctx->key); ++ (*ctx->block)(ctx->z, ctx->z, ctx->key); ++ ++ ctx->sum = 0; ++ memset(ctx->len, 0, MGM64_BLOCK_SIZE); ++} ++ ++int CRYPTO_mgm64_aad(MGM64_CONTEXT *ctx, const unsigned char *aad, ++ size_t len) ++{ ++ unsigned int n; ++ ++ if (ctx->len[1]) ++ return -2; ++ ++ ctx->len[0] += len * 8; ++ ++ n = ctx->a_remain; ++ if (n) { ++ while (n && len) { ++ ctx->part[n] = *(aad++); ++ --len; ++ n = (n + 1) % MGM64_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm64_hash_block(ctx, ctx->part); ++ } else { ++ ctx->a_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM64_BLOCK_SIZE) { ++ mgm64_hash_block(ctx, aad); ++ aad += MGM64_BLOCK_SIZE; ++ len -= MGM64_BLOCK_SIZE; ++ } ++ ++ if (len) ++ memcpy(ctx->part, aad, len); ++ ++ ctx->a_remain = len; ++ return 0; ++} ++ ++int CRYPTO_mgm64_encrypt(MGM64_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len) ++{ ++ unsigned int n; ++ ++ /* Handle AAD remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM64_BLOCK_SIZE - ctx->a_remain); ++ mgm64_hash_block(ctx, ctx->part); ++ ctx->a_remain = 0; ++ } ++ ++ ctx->len[1] += len * 8; ++ ++ n = ctx->d_remain; ++ if (n) { ++ while (n && len) { ++ ctx->part[n] ^= *(in++); ++ *(out++) = ctx->part[n]; ++ --len; ++ n = (n + 1) % MGM64_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm64_hash_block(ctx, ctx->part); ++ } else { ++ ctx->d_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM64_BLOCK_SIZE) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm64_inc(ctx->y + MGM64_BLOCK_SIZE / 2, MGM64_BLOCK_SIZE / 2); ++ for (n = 0; n < MGM64_BLOCK_SIZE; n++) { ++ out[n] = ctx->part[n] ^ in[n]; ++ } ++ mgm64_hash_block(ctx, out); ++ in += MGM64_BLOCK_SIZE; ++ out += MGM64_BLOCK_SIZE; ++ len -= MGM64_BLOCK_SIZE; ++ } ++ ++ if (len) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm64_inc(ctx->y + MGM64_BLOCK_SIZE / 2, MGM64_BLOCK_SIZE / 2); ++ for (n = 0; n < len; n++) { ++ ctx->part[n] ^= *(in++); ++ *(out++) = ctx->part[n]; ++ } ++ } ++ ++ ctx->d_remain = len; ++ ++ return 0; ++} ++ ++int CRYPTO_mgm64_decrypt(MGM64_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len) ++{ ++ unsigned int n; ++ ++ /* Handle AAD remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM64_BLOCK_SIZE - ctx->a_remain); ++ mgm64_hash_block(ctx, ctx->part); ++ ctx->a_remain = 0; ++ } ++ ++ ctx->len[1] += len * 8; ++ ++ n = ctx->d_remain; ++ if (n) { ++ while (n && len) { ++ u8 tmp = *(in++); ++ *(out++) = ctx->part[n] ^ tmp; ++ ctx->part[n] = tmp; ++ n = (n + 1) % MGM64_BLOCK_SIZE; ++ } ++ if (n == 0) { ++ mgm64_hash_block(ctx, ctx->part); ++ } else { ++ ctx->d_remain = n; ++ return 0; ++ } ++ } ++ ++ while (len >= MGM64_BLOCK_SIZE) { ++ mgm64_hash_block(ctx, in); ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm64_inc(ctx->y + MGM64_BLOCK_SIZE / 2, MGM64_BLOCK_SIZE / 2); ++ for (n = 0; n < MGM64_BLOCK_SIZE; n++) { ++ out[n] = ctx->part[n] ^ in[n]; ++ } ++ in += MGM64_BLOCK_SIZE; ++ out += MGM64_BLOCK_SIZE; ++ len -= MGM64_BLOCK_SIZE; ++ } ++ ++ if (len) { ++ (*ctx->block)(ctx->y, ctx->part, ctx->key); ++ mgm64_inc(ctx->y + MGM64_BLOCK_SIZE / 2, MGM64_BLOCK_SIZE / 2); ++ for (n = 0; n < len; n++) { ++ u8 tmp = *(in++); ++ *(out++) = ctx->part[n] ^ tmp; ++ ctx->part[n] = tmp; ++ } ++ } ++ ++ ctx->d_remain = len; ++ ++ return 0; ++} ++ ++int CRYPTO_mgm64_finish(MGM64_CONTEXT *ctx,const unsigned char *tag, ++ size_t len) ++{ ++ /* Handle AAD and data remainder */ ++ if (ctx->a_remain) { ++ memset(ctx->part + ctx->a_remain, 0, MGM64_BLOCK_SIZE - ctx->a_remain); ++ mgm64_hash_block(ctx, ctx->part); ++ } ++ ++ if (ctx->d_remain) { ++ memset(ctx->part + ctx->d_remain, 0, MGM64_BLOCK_SIZE - ctx->d_remain); ++ mgm64_hash_block(ctx, ctx->part); ++ } ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++#ifdef BSWAP4 ++ ctx->len[0] = BSWAP4(ctx->len[0]); ++ ctx->len[1] = BSWAP4(ctx->len[1]); ++#else ++ ctx->len[0] = GETU32((unsigned char *)&ctx->len[0]); ++ ctx->len[1] = GETU32((unsigned char *)&ctx->len[1]); ++#endif ++#endif ++ mgm64_hash_block(ctx, (unsigned char *)ctx->len); ++ ++ (*ctx->block)((unsigned char *)&ctx->sum, (unsigned char *)&ctx->sum, ctx->key); ++ ++ if (tag && len<=sizeof(ctx->sum)) ++ return memcmp(&ctx->sum, tag, len); ++ else ++ return -1; ++} ++ ++void CRYPTO_mgm64_tag(MGM64_CONTEXT *ctx, unsigned char *tag, size_t len) ++{ ++ CRYPTO_mgm64_finish(ctx, NULL, 0); ++ memcpy(tag, &ctx->sum, len<=sizeof(ctx->sum)?len:sizeof(ctx->sum)); ++} +diff --git a/src/lib/libcrypto/modes/modes.h b/src/lib/libcrypto/modes/modes.h +index 477d5eb52..4d238bfeb 100644 +--- a/src/lib/libcrypto/modes/modes.h ++++ b/src/lib/libcrypto/modes/modes.h +@@ -181,6 +181,22 @@ void CRYPTO_cfb64_encrypt(const unsigned char *in, unsigned char *out, + unsigned char ivec[8], int *num, + int enc, block64_f block); + ++typedef struct mgm64_context MGM64_CONTEXT; ++ ++void CRYPTO_mgm64_init(MGM64_CONTEXT *ctx,void *key,block64_f block); ++void CRYPTO_mgm64_setiv(MGM64_CONTEXT *ctx, const unsigned char *iv); ++int CRYPTO_mgm64_aad(MGM64_CONTEXT *ctx, const unsigned char *aad, ++ size_t len); ++int CRYPTO_mgm64_encrypt(MGM64_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len); ++int CRYPTO_mgm64_decrypt(MGM64_CONTEXT *ctx, ++ const unsigned char *in, unsigned char *out, ++ size_t len); ++int CRYPTO_mgm64_finish(MGM64_CONTEXT *ctx,const unsigned char *tag, ++ size_t len); ++void CRYPTO_mgm64_tag(MGM64_CONTEXT *ctx, unsigned char *tag, size_t len); ++ + #ifdef __cplusplus + } + #endif +diff --git a/src/lib/libcrypto/modes/modes_lcl.h b/src/lib/libcrypto/modes/modes_lcl.h +index e1bc05da5..cafcea167 100644 +--- a/src/lib/libcrypto/modes/modes_lcl.h ++++ b/src/lib/libcrypto/modes/modes_lcl.h +@@ -119,4 +119,15 @@ struct mgm128_context { + + #define MGM128_NONCE_LEN 16 + ++struct mgm64_context { ++ u32 len[2]; /* aad and data len */ ++ u64 sum; ++ u8 y[8], z[8], part[8]; ++ block64_f block; ++ void *key; ++ unsigned int a_remain, d_remain; ++}; ++ ++#define MGM64_NONCE_LEN 8 ++ + __END_HIDDEN_DECLS +-- +2.17.1 + diff --git a/0045-gost-add-kuznyechik-mgm-support.patch b/0045-gost-add-kuznyechik-mgm-support.patch new file mode 100644 index 0000000..aa75438 --- /dev/null +++ b/0045-gost-add-kuznyechik-mgm-support.patch @@ -0,0 +1,258 @@ +From bdeea3d404c165fc266a1be7278db3865652b509 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 21:56:51 +0300 +Subject: [PATCH 45/87] gost: add kuznyechik-mgm support + +Add EVP_AEAD interface for supporting kuznyechik cipher in MGM mode. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/e_kuznyechik.c | 161 +++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 5 + + src/regress/lib/libcrypto/aead/aeadtest.c | 6 + + src/regress/lib/libcrypto/aead/aeadtests.txt | 9 ++ + 5 files changed, 182 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 287c86d2c..aff725bd4 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1618,6 +1618,7 @@ EVP_add_digest + EVP_aead_aes_128_gcm + EVP_aead_aes_256_gcm + EVP_aead_chacha20_poly1305 ++EVP_aead_kuznyechik_mgm + EVP_aead_xchacha20_poly1305 + EVP_aes_128_cbc + EVP_aes_128_cbc_hmac_sha1 +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index 5fd53aff6..88ecef8e5 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -26,6 +26,7 @@ + #include + #include + #include "evp_locl.h" ++#include "modes_lcl.h" + + typedef struct { + KUZNYECHIK_KEY ks; +@@ -199,4 +200,164 @@ BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm, ctr_acpkm, CTR, EVP_KUZNYECHIK_CTX, + kuznyechik_ctr_acpkm_get_asn1_params, + kuznyechik_acpkm_ctl) + ++#define EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN 16 ++ ++struct aead_kuznyechik_mgm_ctx { ++ KUZNYECHIK_KEY ks; ++ MGM128_CONTEXT mgm; ++ unsigned char tag_len; ++}; ++ ++static void ++kuznyechik_mgm_set_key(KUZNYECHIK_KEY *kuznyechik_key, MGM128_CONTEXT *mgm_ctx, ++ const unsigned char *key, size_t key_len) ++{ ++ Kuznyechik_set_key(kuznyechik_key, key, 1); ++ CRYPTO_mgm128_init(mgm_ctx, kuznyechik_key, (block128_f)Kuznyechik_encrypt); ++} ++ ++static int ++aead_kuznyechik_mgm_init(EVP_AEAD_CTX *ctx, const unsigned char *key, size_t key_len, ++ size_t tag_len) ++{ ++ struct aead_kuznyechik_mgm_ctx *mgm_ctx; ++ const size_t key_bits = key_len * 8; ++ ++ /* EVP_AEAD_CTX_init should catch this. */ ++ if (key_bits != 256) { ++ EVPerror(EVP_R_BAD_KEY_LENGTH); ++ return 0; ++ } ++ ++ if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) ++ tag_len = EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN; ++ ++ if (tag_len > EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN) { ++ EVPerror(EVP_R_TAG_TOO_LARGE); ++ return 0; ++ } ++ ++ if ((mgm_ctx = calloc(1, sizeof(struct aead_kuznyechik_mgm_ctx))) == NULL) ++ return 0; ++ ++ kuznyechik_mgm_set_key(&mgm_ctx->ks, &mgm_ctx->mgm, key, key_len); ++ ++ mgm_ctx->tag_len = tag_len; ++ ctx->aead_state = mgm_ctx; ++ ++ return 1; ++} ++ ++static void ++aead_kuznyechik_mgm_cleanup(EVP_AEAD_CTX *ctx) ++{ ++ struct aead_kuznyechik_mgm_ctx *mgm_ctx = ctx->aead_state; ++ ++ freezero(mgm_ctx, sizeof(*mgm_ctx)); ++} ++ ++static int ++aead_kuznyechik_mgm_seal(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, ++ size_t max_out_len, const unsigned char *nonce, size_t nonce_len, ++ const unsigned char *in, size_t in_len, const unsigned char *ad, ++ size_t ad_len) ++{ ++ const struct aead_kuznyechik_mgm_ctx *mgm_ctx = ctx->aead_state; ++ MGM128_CONTEXT mgm; ++ size_t bulk = 0; ++ ++ if (max_out_len < in_len + mgm_ctx->tag_len) { ++ EVPerror(EVP_R_BUFFER_TOO_SMALL); ++ return 0; ++ } ++ ++ if (nonce_len != MGM128_NONCE_LEN) { ++ EVPerror(EVP_R_IV_TOO_LARGE); ++ return 0; ++ } ++ ++ memcpy(&mgm, &mgm_ctx->mgm, sizeof(mgm)); ++ CRYPTO_mgm128_setiv(&mgm, nonce); ++ ++ if (ad_len > 0 && CRYPTO_mgm128_aad(&mgm, ad, ad_len)) ++ return 0; ++ ++ if (CRYPTO_mgm128_encrypt(&mgm, in + bulk, out + bulk, ++ in_len - bulk)) ++ return 0; ++ ++ CRYPTO_mgm128_tag(&mgm, out + in_len, mgm_ctx->tag_len); ++ *out_len = in_len + mgm_ctx->tag_len; ++ ++ return 1; ++} ++ ++static int ++aead_kuznyechik_mgm_open(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, ++ size_t max_out_len, const unsigned char *nonce, size_t nonce_len, ++ const unsigned char *in, size_t in_len, const unsigned char *ad, ++ size_t ad_len) ++{ ++ const struct aead_kuznyechik_mgm_ctx *mgm_ctx = ctx->aead_state; ++ unsigned char tag[EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN]; ++ MGM128_CONTEXT mgm; ++ size_t plaintext_len; ++ size_t bulk = 0; ++ ++ if (in_len < mgm_ctx->tag_len) { ++ EVPerror(EVP_R_BAD_DECRYPT); ++ return 0; ++ } ++ ++ plaintext_len = in_len - mgm_ctx->tag_len; ++ ++ if (max_out_len < plaintext_len) { ++ EVPerror(EVP_R_BUFFER_TOO_SMALL); ++ return 0; ++ } ++ ++ if (nonce_len != MGM128_NONCE_LEN) { ++ EVPerror(EVP_R_IV_TOO_LARGE); ++ return 0; ++ } ++ ++ memcpy(&mgm, &mgm_ctx->mgm, sizeof(mgm)); ++ CRYPTO_mgm128_setiv(&mgm, nonce); ++ ++ if (CRYPTO_mgm128_aad(&mgm, ad, ad_len)) ++ return 0; ++ ++ if (CRYPTO_mgm128_decrypt(&mgm, in + bulk, out + bulk, ++ in_len - bulk - mgm_ctx->tag_len)) ++ return 0; ++ ++ CRYPTO_mgm128_tag(&mgm, tag, mgm_ctx->tag_len); ++ if (timingsafe_memcmp(tag, in + plaintext_len, mgm_ctx->tag_len) != 0) { ++ EVPerror(EVP_R_BAD_DECRYPT); ++ return 0; ++ } ++ ++ *out_len = plaintext_len; ++ ++ return 1; ++} ++ ++static const EVP_AEAD aead_kuznyechik_mgm = { ++ .key_len = 32, ++ .nonce_len = 16, ++ .overhead = EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN, ++ .max_tag_len = EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN, ++ ++ .init = aead_kuznyechik_mgm_init, ++ .cleanup = aead_kuznyechik_mgm_cleanup, ++ .seal = aead_kuznyechik_mgm_seal, ++ .open = aead_kuznyechik_mgm_open, ++}; ++ ++const EVP_AEAD * ++EVP_aead_kuznyechik_mgm(void) ++{ ++ return &aead_kuznyechik_mgm; ++} ++ + #endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 1ef416041..3725dd17c 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -1289,6 +1289,11 @@ const EVP_AEAD *EVP_aead_chacha20_poly1305(void); + const EVP_AEAD *EVP_aead_xchacha20_poly1305(void); + #endif + ++#if !defined(OPENSSL_NO_GOST) ++/* EVP_aead_kuznyechik_mgm is Kuznyechik in Multilinear Galois Mode. */ ++const EVP_AEAD *EVP_aead_kuznyechik_mgm(void); ++#endif ++ + /* EVP_AEAD_key_length returns the length of the keys used. */ + size_t EVP_AEAD_key_length(const EVP_AEAD *aead); + +diff --git a/src/regress/lib/libcrypto/aead/aeadtest.c b/src/regress/lib/libcrypto/aead/aeadtest.c +index 1b144c261..6f843e31c 100644 +--- a/src/regress/lib/libcrypto/aead/aeadtest.c ++++ b/src/regress/lib/libcrypto/aead/aeadtest.c +@@ -143,6 +143,12 @@ aead_from_name(const EVP_AEAD **aead, const char *name) + *aead = EVP_aead_xchacha20_poly1305(); + #else + fprintf(stderr, "No xchacha20-poly1305 support.\n"); ++#endif ++ } else if (strcmp(name, "kuznyechik-mgm") == 0) { ++#ifndef OPENSSL_NO_GOST ++ *aead = EVP_aead_kuznyechik_mgm(); ++#else ++ fprintf(stderr, "No kuznyechik-MGM support.\n"); + #endif + } else { + fprintf(stderr, "Unknown AEAD: %s\n", name); +diff --git a/src/regress/lib/libcrypto/aead/aeadtests.txt b/src/regress/lib/libcrypto/aead/aeadtests.txt +index 4ca47303b..d2d4e54f7 100644 +--- a/src/regress/lib/libcrypto/aead/aeadtests.txt ++++ b/src/regress/lib/libcrypto/aead/aeadtests.txt +@@ -84,3 +84,12 @@ AD: 50515253c0c1c2c3c4c5c6c7 + CT: bd6d179d3e83d43b9576579493c0e939572a1700252bfaccbed2902c21396cbb731c7f1b0b4aa6440bf3a82f4eda7e39ae64c6708c54c216cb96b72e1213b4522f8c9ba40db5d945b11b69b982c1bb9e3f3fac2bc369488f76b2383565d3fff921f9664c97637da9768812f615c68b13b52e + TAG: c0875924c1c7987947deafd8780acf49 + ++# draft-smyshlyaev-mgm-17 ++AEAD: kuznyechik-mgm ++KEY: 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef ++NONCE: 1122334455667700ffeeddccbbaa9988 ++IN: 1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011aabbcc ++AD: 0202020202020202010101010101010104040404040404040303030303030303ea0505050505050505 ++CT: a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552 ++TAG: cf5d656f40c34f5c46e8bb0e29fcdb4c ++ +-- +2.17.1 + diff --git a/0046-gost-add-magma-mgm-support.patch b/0046-gost-add-magma-mgm-support.patch new file mode 100644 index 0000000..733b9e1 --- /dev/null +++ b/0046-gost-add-magma-mgm-support.patch @@ -0,0 +1,254 @@ +From 58d19972ccd8d8857633a578a3cfb10e6ae10d26 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 21:56:51 +0300 +Subject: [PATCH 46/87] gost: add magma-mgm support + +Add EVP_AEAD interface for supporting magma cipher in MGM mode. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/e_magma.c | 160 +++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 2 + + src/regress/lib/libcrypto/aead/aeadtest.c | 6 + + src/regress/lib/libcrypto/aead/aeadtests.txt | 9 ++ + 5 files changed, 178 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index aff725bd4..56169f990 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1619,6 +1619,7 @@ EVP_aead_aes_128_gcm + EVP_aead_aes_256_gcm + EVP_aead_chacha20_poly1305 + EVP_aead_kuznyechik_mgm ++EVP_aead_magma_mgm + EVP_aead_xchacha20_poly1305 + EVP_aes_128_cbc + EVP_aes_128_cbc_hmac_sha1 +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index 0311e04b1..3d3083b95 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -26,6 +26,7 @@ + #include + #include + #include "evp_locl.h" ++#include "modes_lcl.h" + + typedef struct { + MAGMA_KEY ks; +@@ -193,4 +194,163 @@ BLOCK_CIPHER_def1(magma, ctr_acpkm, ctr_acpkm, CTR, EVP_MAGMA_CTX, + magma_ctr_acpkm_get_asn1_params, + magma_acpkm_ctl) + ++#define EVP_AEAD_MAGMA_MGM_TAG_LEN 16 ++ ++struct aead_magma_mgm_ctx { ++ MAGMA_KEY ks; ++ MGM64_CONTEXT mgm; ++ unsigned char tag_len; ++}; ++ ++static void ++magma_mgm_set_key(MAGMA_KEY *magma_key, MGM64_CONTEXT *mgm_ctx, ++ const unsigned char *key, size_t key_len) ++{ ++ Magma_set_key(magma_key, key); ++ CRYPTO_mgm64_init(mgm_ctx, magma_key, (block64_f)Magma_encrypt); ++} ++ ++static int ++aead_magma_mgm_init(EVP_AEAD_CTX *ctx, const unsigned char *key, size_t key_len, ++ size_t tag_len) ++{ ++ struct aead_magma_mgm_ctx *mgm_ctx; ++ const size_t key_bits = key_len * 8; ++ ++ /* EVP_AEAD_CTX_init should catch this. */ ++ if (key_bits != 256) { ++ EVPerror(EVP_R_BAD_KEY_LENGTH); ++ return 0; ++ } ++ ++ if (tag_len == EVP_AEAD_DEFAULT_TAG_LENGTH) ++ tag_len = EVP_AEAD_MAGMA_MGM_TAG_LEN; ++ ++ if (tag_len > EVP_AEAD_MAGMA_MGM_TAG_LEN) { ++ EVPerror(EVP_R_TAG_TOO_LARGE); ++ return 0; ++ } ++ ++ if ((mgm_ctx = calloc(1, sizeof(struct aead_magma_mgm_ctx))) == NULL) ++ return 0; ++ ++ magma_mgm_set_key(&mgm_ctx->ks, &mgm_ctx->mgm, key, key_len); ++ ++ mgm_ctx->tag_len = tag_len; ++ ctx->aead_state = mgm_ctx; ++ ++ return 1; ++} ++ ++static void ++aead_magma_mgm_cleanup(EVP_AEAD_CTX *ctx) ++{ ++ struct aead_magma_mgm_ctx *mgm_ctx = ctx->aead_state; ++ ++ freezero(mgm_ctx, sizeof(*mgm_ctx)); ++} ++ ++static int ++aead_magma_mgm_seal(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, ++ size_t max_out_len, const unsigned char *nonce, size_t nonce_len, ++ const unsigned char *in, size_t in_len, const unsigned char *ad, ++ size_t ad_len) ++{ ++ const struct aead_magma_mgm_ctx *mgm_ctx = ctx->aead_state; ++ MGM64_CONTEXT mgm; ++ size_t bulk = 0; ++ ++ if (max_out_len < in_len + mgm_ctx->tag_len) { ++ EVPerror(EVP_R_BUFFER_TOO_SMALL); ++ return 0; ++ } ++ ++ if (nonce_len != MGM64_NONCE_LEN) { ++ EVPerror(EVP_R_IV_TOO_LARGE); ++ return 0; ++ } ++ ++ memcpy(&mgm, &mgm_ctx->mgm, sizeof(mgm)); ++ CRYPTO_mgm64_setiv(&mgm, nonce); ++ ++ if (ad_len > 0 && CRYPTO_mgm64_aad(&mgm, ad, ad_len)) ++ return 0; ++ ++ if (CRYPTO_mgm64_encrypt(&mgm, in + bulk, out + bulk, ++ in_len - bulk)) ++ return 0; ++ ++ CRYPTO_mgm64_tag(&mgm, out + in_len, mgm_ctx->tag_len); ++ *out_len = in_len + mgm_ctx->tag_len; ++ ++ return 1; ++} ++ ++static int ++aead_magma_mgm_open(const EVP_AEAD_CTX *ctx, unsigned char *out, size_t *out_len, ++ size_t max_out_len, const unsigned char *nonce, size_t nonce_len, ++ const unsigned char *in, size_t in_len, const unsigned char *ad, ++ size_t ad_len) ++{ ++ const struct aead_magma_mgm_ctx *mgm_ctx = ctx->aead_state; ++ unsigned char tag[EVP_AEAD_MAGMA_MGM_TAG_LEN]; ++ MGM64_CONTEXT mgm; ++ size_t plaintext_len; ++ size_t bulk = 0; ++ ++ if (in_len < mgm_ctx->tag_len) { ++ EVPerror(EVP_R_BAD_DECRYPT); ++ return 0; ++ } ++ ++ plaintext_len = in_len - mgm_ctx->tag_len; ++ ++ if (max_out_len < plaintext_len) { ++ EVPerror(EVP_R_BUFFER_TOO_SMALL); ++ return 0; ++ } ++ ++ if (nonce_len != MGM64_NONCE_LEN) { ++ EVPerror(EVP_R_IV_TOO_LARGE); ++ return 0; ++ } ++ ++ memcpy(&mgm, &mgm_ctx->mgm, sizeof(mgm)); ++ CRYPTO_mgm64_setiv(&mgm, nonce); ++ ++ if (CRYPTO_mgm64_aad(&mgm, ad, ad_len)) ++ return 0; ++ ++ if (CRYPTO_mgm64_decrypt(&mgm, in + bulk, out + bulk, ++ in_len - bulk - mgm_ctx->tag_len)) ++ return 0; ++ ++ CRYPTO_mgm64_tag(&mgm, tag, mgm_ctx->tag_len); ++ if (timingsafe_memcmp(tag, in + plaintext_len, mgm_ctx->tag_len) != 0) { ++ EVPerror(EVP_R_BAD_DECRYPT); ++ return 0; ++ } ++ ++ *out_len = plaintext_len; ++ ++ return 1; ++} ++ ++static const EVP_AEAD aead_magma_mgm = { ++ .key_len = 32, ++ .nonce_len = 8, ++ .overhead = EVP_AEAD_MAGMA_MGM_TAG_LEN, ++ .max_tag_len = EVP_AEAD_MAGMA_MGM_TAG_LEN, ++ ++ .init = aead_magma_mgm_init, ++ .cleanup = aead_magma_mgm_cleanup, ++ .seal = aead_magma_mgm_seal, ++ .open = aead_magma_mgm_open, ++}; ++ ++const EVP_AEAD * ++EVP_aead_magma_mgm(void) ++{ ++ return &aead_magma_mgm; ++} + #endif +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 3725dd17c..88d9b1989 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -1292,6 +1292,8 @@ const EVP_AEAD *EVP_aead_xchacha20_poly1305(void); + #if !defined(OPENSSL_NO_GOST) + /* EVP_aead_kuznyechik_mgm is Kuznyechik in Multilinear Galois Mode. */ + const EVP_AEAD *EVP_aead_kuznyechik_mgm(void); ++/* EVP_aead_magma_mgm is Magma in Multilinear Galois Mode. */ ++const EVP_AEAD *EVP_aead_magma_mgm(void); + #endif + + /* EVP_AEAD_key_length returns the length of the keys used. */ +diff --git a/src/regress/lib/libcrypto/aead/aeadtest.c b/src/regress/lib/libcrypto/aead/aeadtest.c +index 6f843e31c..37244931f 100644 +--- a/src/regress/lib/libcrypto/aead/aeadtest.c ++++ b/src/regress/lib/libcrypto/aead/aeadtest.c +@@ -149,6 +149,12 @@ aead_from_name(const EVP_AEAD **aead, const char *name) + *aead = EVP_aead_kuznyechik_mgm(); + #else + fprintf(stderr, "No kuznyechik-MGM support.\n"); ++#endif ++ } else if (strcmp(name, "magma-mgm") == 0) { ++#ifndef OPENSSL_NO_GOST ++ *aead = EVP_aead_magma_mgm(); ++#else ++ fprintf(stderr, "No magma-MGM support.\n"); + #endif + } else { + fprintf(stderr, "Unknown AEAD: %s\n", name); +diff --git a/src/regress/lib/libcrypto/aead/aeadtests.txt b/src/regress/lib/libcrypto/aead/aeadtests.txt +index d2d4e54f7..86f5dac7e 100644 +--- a/src/regress/lib/libcrypto/aead/aeadtests.txt ++++ b/src/regress/lib/libcrypto/aead/aeadtests.txt +@@ -93,3 +93,12 @@ AD: 0202020202020202010101010101010104040404040404040303030303030303ea0505050505 + CT: a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552 + TAG: cf5d656f40c34f5c46e8bb0e29fcdb4c + ++# Not defined in a draft, only in original R 1323565.1.026-2019 ++AEAD: magma-mgm ++KEY: ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff ++NONCE: 92def06b3c130a59 ++IN: ffeeddccbbaa998811223344556677008899aabbcceeff0a001122334455667799aabbcceeff0a001122334455667788aabbcceeff0a00112233445566778899aabbcc ++AD: 01010101010101010202020202020202030303030303030304040404040404040505050505050505EA ++CT: c795066c5f9ea03b85113342459185ae1f2e00d6bf2b785d940470b8bb9c8e7d9a5dd3731f7ddc70ec27cb0ace6fa57670f65c646abb75d547aa37c3bcb5c34e03bb9c ++TAG: a7928069aa10fd10 ++ +-- +2.17.1 + diff --git a/0047-regress-evp-add-simple-test-for-AEAD-ciphers.patch b/0047-regress-evp-add-simple-test-for-AEAD-ciphers.patch new file mode 100644 index 0000000..2ed2d0e --- /dev/null +++ b/0047-regress-evp-add-simple-test-for-AEAD-ciphers.patch @@ -0,0 +1,427 @@ +From b4247b2de1624811aa03898b7f52d4c4dd2f0ac4 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 23:37:12 +0300 +Subject: [PATCH 47/87] regress/evp: add simple test for AEAD ciphers + +Add a companion to evptest.c and aeadtest.c: test for AEAD ciphers using +EVP_CIPHER interface. For now it is capable of testing only GCM mode. + +Signed-off-by: Dmitry Baryshkov +--- + src/regress/lib/libcrypto/evp/evpaeadtest.c | 382 ++++++++++++++++++ + .../lib/libcrypto/evp/evpaeadtests.txt | 14 + + 2 files changed, 396 insertions(+) + create mode 100644 src/regress/lib/libcrypto/evp/evpaeadtest.c + create mode 100644 src/regress/lib/libcrypto/evp/evpaeadtests.txt + +diff --git a/src/regress/lib/libcrypto/evp/evpaeadtest.c b/src/regress/lib/libcrypto/evp/evpaeadtest.c +new file mode 100644 +index 000000000..6d3970ee3 +--- /dev/null ++++ b/src/regress/lib/libcrypto/evp/evpaeadtest.c +@@ -0,0 +1,382 @@ ++/* $OpenBSD: evptest.c,v 1.9 2020/01/26 02:46:26 tb Exp $ */ ++/* Written by Ben Laurie, 2001 */ ++/* ++ * Copyright (c) 2001 The OpenSSL Project. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. All advertising materials mentioning features or use of this ++ * software must display the following acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" ++ * ++ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. For written permission, please contact ++ * openssl-core@openssl.org. ++ * ++ * 5. Products derived from this software may not be called "OpenSSL" ++ * nor may "OpenSSL" appear in their names without prior written ++ * permission of the OpenSSL Project. ++ * ++ * 6. Redistributions of any form whatsoever must retain the following ++ * acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit (http://www.openssl.org/)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY ++ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++#include ++ ++#include ++#include ++#ifndef OPENSSL_NO_ENGINE ++#include ++#endif ++#include ++#include ++ ++static void ++hexdump(FILE *f, const char *title, const unsigned char *s, int l) ++{ ++ int n = 0; ++ ++ fprintf(f, "%s",title); ++ for (; n < l; ++n) { ++ if ((n % 16) == 0) ++ fprintf(f, "\n%04x",n); ++ fprintf(f, " %02x",s[n]); ++ } ++ fprintf(f, "\n"); ++} ++ ++static int ++convert(unsigned char *s) ++{ ++ unsigned char *d; ++ ++ for (d = s; *s; s += 2,++d) { ++ unsigned int n; ++ ++ if (!s[1]) { ++ fprintf(stderr, "Odd number of hex digits!\n"); ++ exit(4); ++ } ++ if (sscanf((char *)s, "%2x", &n) != 1) { ++ fprintf(stderr, "Invalid hex value at %s\n", s); ++ exit(4); ++ } ++ ++ *d = (unsigned char)n; ++ } ++ return s - d; ++} ++ ++static char * ++sstrsep(char **string, const char *delim) ++{ ++ char isdelim[256]; ++ char *token = *string; ++ ++ if (**string == 0) ++ return NULL; ++ ++ memset(isdelim, 0, 256); ++ isdelim[0] = 1; ++ ++ while (*delim) { ++ isdelim[(unsigned char)(*delim)] = 1; ++ delim++; ++ } ++ ++ while (!isdelim[(unsigned char)(**string)]) { ++ (*string)++; ++ } ++ ++ if (**string) { ++ **string = 0; ++ (*string)++; ++ } ++ ++ return token; ++} ++ ++static unsigned char * ++ustrsep(char **p, const char *sep) ++{ ++ return (unsigned char *)sstrsep(p, sep); ++} ++ ++static int ++test1_exit(int ec) ++{ ++ exit(ec); ++ return(0); /* To keep some compilers quiet */ ++} ++ ++static int ++test_cipher(const char *cipher, const unsigned char *key, int kn, ++ const unsigned char *iv, int in, ++ const unsigned char *aad, int an, ++ const unsigned char *plaintext, int pn, ++ const unsigned char *ciphertext, int cn, ++ const unsigned char *tag, int tn, ++ int encdec) ++{ ++ EVP_CIPHER_CTX ctx; ++ unsigned char out[4096]; ++ const unsigned char *eiv; ++ int outl, outl2; ++ ++ const EVP_CIPHER *c; ++ ++ c = EVP_get_cipherbyname(cipher); ++ if (!c) ++ return 0; ++ ++ printf("Testing cipher %s%s\n", EVP_CIPHER_name(c), ++ (encdec == 1 ? "(encrypt)" : (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)"))); ++ hexdump(stdout, "Key",key,kn); ++ hexdump(stdout, "IV",iv,in); ++ hexdump(stdout, "AAD",aad,an); ++ hexdump(stdout, "Plaintext",plaintext,pn); ++ hexdump(stdout, "Ciphertext",ciphertext,cn); ++ hexdump(stdout, "Tag",tag,tn); ++ ++ if (kn != c->key_len) { ++ fprintf(stderr, "Key length doesn't match, got %d expected %lu\n",kn, ++ (unsigned long)c->key_len); ++ test1_exit(1); ++ } ++ EVP_CIPHER_CTX_init(&ctx); ++ EVP_CIPHER_CTX_set_flags(&ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW); ++ if (encdec != 0) { ++ eiv = iv; ++ if (EVP_CIPHER_mode(c) == EVP_CIPH_WRAP_MODE && in == 0) ++ eiv = NULL; ++ if (!EVP_EncryptInit_ex(&ctx, c, NULL, key, eiv)) { ++ fprintf(stderr, "EncryptInit failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(2); ++ } ++ EVP_CIPHER_CTX_set_padding(&ctx, 0); ++ ++ if (!EVP_EncryptUpdate(&ctx, NULL, &outl, aad, an)) { ++ fprintf(stderr, "Encrypt failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(3); ++ } ++ if (!EVP_EncryptUpdate(&ctx, out, &outl, plaintext, pn)) { ++ fprintf(stderr, "Encrypt failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(4); ++ } ++ if (!EVP_EncryptFinal_ex(&ctx, out + outl, &outl2)) { ++ fprintf(stderr, "EncryptFinal failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(5); ++ } ++ ++ if (outl + outl2 != cn) { ++ fprintf(stderr, "Ciphertext length mismatch got %d expected %d\n", ++ outl + outl2, cn); ++ test1_exit(6); ++ } ++ ++ if (memcmp(out, ciphertext, cn)) { ++ fprintf(stderr, "Ciphertext mismatch\n"); ++ hexdump(stderr, "Got",out,cn); ++ hexdump(stderr, "Expected",ciphertext,cn); ++ test1_exit(7); ++ } ++ ++ if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, tn, out)) { ++ fprintf(stderr, "GET_TAG failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(8); ++ } ++ ++ if (memcmp(out, tag, tn)) { ++ fprintf(stderr, "Ciphertext mismatch\n"); ++ hexdump(stderr, "Got",out,tn); ++ hexdump(stderr, "Expected",tag,cn); ++ test1_exit(9); ++ } ++ ++ } ++ ++ if (encdec <= 0) { ++ eiv = iv; ++ if (EVP_CIPHER_mode(c) == EVP_CIPH_WRAP_MODE && in == 0) ++ eiv = NULL; ++ if (!EVP_DecryptInit_ex(&ctx, c,NULL, key, eiv)) { ++ fprintf(stderr, "DecryptInit failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(10); ++ } ++ EVP_CIPHER_CTX_set_padding(&ctx, 0); ++ ++ if (!EVP_DecryptUpdate(&ctx, NULL, &outl, aad, an)) { ++ fprintf(stderr, "Encrypt failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(10); ++ } ++ if (!EVP_DecryptUpdate(&ctx, out, &outl, ciphertext, cn)) { ++ fprintf(stderr, "Decrypt failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(12); ++ } ++ ++ if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, tn, (void *)tag)) { ++ fprintf(stderr, "SET_TAG failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(13); ++ } ++ ++ if (!EVP_DecryptFinal_ex(&ctx, out + outl, &outl2)) { ++ fprintf(stderr, "DecryptFinal failed\n"); ++ ERR_print_errors_fp(stderr); ++ test1_exit(14); ++ } ++ ++ if (outl + outl2 != pn) { ++ fprintf(stderr, "Plaintext length mismatch got %d expected %d\n", ++ outl + outl2, pn); ++ test1_exit(15); ++ } ++ ++ if (memcmp(out, plaintext, pn)) { ++ fprintf(stderr, "Plaintext mismatch\n"); ++ hexdump(stderr, "Got",out,pn); ++ hexdump(stderr, "Expected",plaintext,pn); ++ test1_exit(16); ++ } ++ } ++ ++ EVP_CIPHER_CTX_cleanup(&ctx); ++ ++ printf("\n"); ++ ++ return 1; ++} ++ ++int ++main(int argc, char **argv) ++{ ++ const char *szTestFile; ++ FILE *f; ++ ++ if (argc != 2) { ++ fprintf(stderr, "%s \n",argv[0]); ++ exit(1); ++ } ++ ++ szTestFile = argv[1]; ++ ++ f=fopen(szTestFile, "r"); ++ if (!f) { ++ perror(szTestFile); ++ exit(2); ++ } ++ ++ /* Load up the software EVP_CIPHER and EVP_MD definitions */ ++ OpenSSL_add_all_ciphers(); ++#ifndef OPENSSL_NO_ENGINE ++ /* Load all compiled-in ENGINEs */ ++ ENGINE_load_builtin_engines(); ++#endif ++#if 0 ++ OPENSSL_config(); ++#endif ++#ifndef OPENSSL_NO_ENGINE ++ /* Register all available ENGINE implementations of ciphers and digests. ++ * This could perhaps be changed to "ENGINE_register_all_complete()"? */ ++ ENGINE_register_all_ciphers(); ++ /* If we add command-line options, this statement should be switchable. ++ * It'll prevent ENGINEs being ENGINE_init()ialised for cipher/digest use if ++ * they weren't already initialised. */ ++ /* ENGINE_set_cipher_flags(ENGINE_CIPHER_FLAG_NOINIT); */ ++#endif ++ ++ for (;;) { ++ char line[8 * 1024]; ++ char *p; ++ char *cipher; ++ unsigned char *iv, *key, *plaintext, *ciphertext, *aad, *tag; ++ int encdec; ++ int kn, in, pn, cn, an, tn; ++ ++ if (!fgets((char *)line, sizeof line, f)) ++ break; ++ if (line[0] == '#' || line[0] == '\n') ++ continue; ++ p = line; ++ cipher=sstrsep(&p, ":"); ++ key=ustrsep(&p, ":"); ++ iv=ustrsep(&p, ":"); ++ aad=ustrsep(&p, ":"); ++ plaintext=ustrsep(&p, ":"); ++ ciphertext=ustrsep(&p, ":"); ++ tag=ustrsep(&p, ":"); ++ if (p[-1] == '\n') { ++ p[-1] = '\0'; ++ encdec = -1; ++ } else { ++ encdec = atoi(sstrsep(&p, "\n")); ++ } ++ ++ kn = convert(key); ++ in = convert(iv); ++ an = convert(aad); ++ pn = convert(plaintext); ++ cn = convert(ciphertext); ++ tn = convert(tag); ++ ++ if (!test_cipher(cipher, key, kn, iv, in, aad, an, plaintext, pn, ciphertext, cn, tag, tn, encdec)) { ++#ifdef OPENSSL_NO_GOST ++ if (strstr(cipher, "magma") == cipher || ++ strstr(cipher, "kuznyechik") == cipher) { ++ fprintf(stdout, "Cipher disabled, skipping %s\n", cipher); ++ continue; ++ } ++#endif ++ fprintf(stderr, "Can't find %s\n",cipher); ++ exit(3); ++ } ++ } ++ fclose(f); ++ ++#ifndef OPENSSL_NO_ENGINE ++ ENGINE_cleanup(); ++#endif ++ EVP_cleanup(); ++ CRYPTO_cleanup_all_ex_data(); ++ ERR_remove_thread_state(NULL); ++ ERR_free_strings(); ++ CRYPTO_mem_leaks_fp(stderr); ++ ++ return 0; ++} +diff --git a/src/regress/lib/libcrypto/evp/evpaeadtests.txt b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +new file mode 100644 +index 000000000..68156e7a5 +--- /dev/null ++++ b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +@@ -0,0 +1,14 @@ ++# $OpenBSD: evptests.txt,v 1.9 2020/01/26 03:31:40 tb Exp $ ++#cipher:key:iv:aad:plaintext:ciphertext:tag:0/1(decrypt/encrypt) ++ ++aes-128-gcm:013FE00B5F11BE7F866D0CBBC55A7A90:7CFDE9F9E33724C68932D612:84C5D513D2AAF6E5BBD2727788E523008932D6127CFDE9F9E33724C608000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F0005:::217867E50C2DAD74C28C3B50ABDF695A:1 ++aes-128-gcm:013FE00B5F11BE7F866D0CBBC55A7A90:7CFDE9F9E33724C68932D612:84C5D513D2AAF6E5BBD2727788E523008932D6127CFDE9F9E33724C608000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F0005:::217867E50C2DAD74C28C3B50ABDF695A:0 ++ ++aes-256-gcm:83C093B58DE7FFE1C0DA926AC43FB3609AC1C80FEE1B624497EF942E2F79A823:7CFDE9F9E33724C68932D612:84C5D513D2AAF6E5BBD2727788E523008932D6127CFDE9F9E33724C608000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F0005:::6EE160E8FAECA4B36C86B234920CA975:1 ++aes-256-gcm:83C093B58DE7FFE1C0DA926AC43FB3609AC1C80FEE1B624497EF942E2F79A823:7CFDE9F9E33724C68932D612:84C5D513D2AAF6E5BBD2727788E523008932D6127CFDE9F9E33724C608000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F0005:::6EE160E8FAECA4B36C86B234920CA975:0 ++ ++aes-128-gcm:88EE087FD95DA9FBF6725AA9D757B0CD:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:C31F53D99E5687F7365119B832D2AAE70741D593F1F9E2AB3455779B078EB8FEACDFEC1F8E3E5277F8180B43361F6512ADB16D2E38548A2C719DBA7228D840:88F8757ADB8AA788D8F65AD668BE70E7:1 ++aes-128-gcm:88EE087FD95DA9FBF6725AA9D757B0CD:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:C31F53D99E5687F7365119B832D2AAE70741D593F1F9E2AB3455779B078EB8FEACDFEC1F8E3E5277F8180B43361F6512ADB16D2E38548A2C719DBA7228D840:88F8757ADB8AA788D8F65AD668BE70E7:0 ++ ++aes-256-gcm:4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:BA8AE31BC506486D6873E4FCE460E7DC57591FF00611F31C3834FE1C04AD80B66803AFCF5B27E6333FA67C99DA47C2F0CED68D531BD741A943CFF7A6713BD0:2611CD7DAA01D61C5C886DC1A8170107:1 ++aes-256-gcm:4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:BA8AE31BC506486D6873E4FCE460E7DC57591FF00611F31C3834FE1C04AD80B66803AFCF5B27E6333FA67C99DA47C2F0CED68D531BD741A943CFF7A6713BD0:2611CD7DAA01D61C5C886DC1A8170107:0 +-- +2.17.1 + diff --git a/0048-evp-add-EVP_CIPHER-interface-for-kuznyechik-mgm.patch b/0048-evp-add-EVP_CIPHER-interface-for-kuznyechik-mgm.patch new file mode 100644 index 0000000..08a1b11 --- /dev/null +++ b/0048-evp-add-EVP_CIPHER-interface-for-kuznyechik-mgm.patch @@ -0,0 +1,244 @@ +From c9c7e6ed9d8c2deffdfe30c977ca91d2297177a9 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 23:44:15 +0300 +Subject: [PATCH 48/87] evp: add EVP_CIPHER interface for kuznyechik-mgm + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_kuznyechik.c | 153 ++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 3 + + .../lib/libcrypto/evp/evpaeadtests.txt | 3 + + 5 files changed, 161 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 56169f990..d19720109 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1732,6 +1732,7 @@ EVP_kuznyechik_cfb64 + EVP_kuznyechik_ctr + EVP_kuznyechik_ctr_acpkm + EVP_kuznyechik_ecb ++EVP_kuznyechik_mgm + EVP_kuznyechik_ofb + EVP_magma_cbc + EVP_magma_cfb64 +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index c15be0c4f..586466eb6 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -241,6 +241,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_kuznyechik_ofb()); + EVP_add_cipher(EVP_kuznyechik_ctr()); + EVP_add_cipher(EVP_kuznyechik_ctr_acpkm()); ++ EVP_add_cipher(EVP_kuznyechik_mgm()); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index 88ecef8e5..d022db39c 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -202,6 +202,14 @@ BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm, ctr_acpkm, CTR, EVP_KUZNYECHIK_CTX, + + #define EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN 16 + ++typedef struct { ++ KUZNYECHIK_KEY ks; /* KUZNYECHIK key schedule to use */ ++ MGM128_CONTEXT mgm; ++ int key_set; /* Set if key initialised */ ++ int iv_set; /* Set if an iv is set */ ++ int tag_len; ++} EVP_KUZNYECHIK_MGM_CTX; ++ + struct aead_kuznyechik_mgm_ctx { + KUZNYECHIK_KEY ks; + MGM128_CONTEXT mgm; +@@ -216,6 +224,151 @@ kuznyechik_mgm_set_key(KUZNYECHIK_KEY *kuznyechik_key, MGM128_CONTEXT *mgm_ctx, + CRYPTO_mgm128_init(mgm_ctx, kuznyechik_key, (block128_f)Kuznyechik_encrypt); + } + ++static int ++kuznyechik_mgm_cleanup(EVP_CIPHER_CTX *c) ++{ ++ EVP_KUZNYECHIK_MGM_CTX *gctx = c->cipher_data; ++ ++ explicit_bzero(gctx, sizeof(*gctx)); ++ return 1; ++} ++ ++static int ++kuznyechik_mgm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) ++{ ++ EVP_KUZNYECHIK_MGM_CTX *gctx = c->cipher_data; ++ ++ switch (type) { ++ case EVP_CTRL_INIT: ++ gctx->key_set = 0; ++ gctx->iv_set = 0; ++ gctx->tag_len = -1; ++ return 1; ++ ++ case EVP_CTRL_MGM_SET_TAG: ++ if (arg <= 0 || arg > 16 || c->encrypt) ++ return 0; ++ memcpy(c->buf, ptr, arg); ++ gctx->tag_len = arg; ++ return 1; ++ ++ case EVP_CTRL_MGM_GET_TAG: ++ if (arg <= 0 || arg > 16 || !c->encrypt || gctx->tag_len < 0) ++ return 0; ++ memcpy(ptr, c->buf, arg); ++ return 1; ++ ++ case EVP_CTRL_COPY: ++ { ++ EVP_CIPHER_CTX *out = ptr; ++ EVP_KUZNYECHIK_MGM_CTX *gctx_out = out->cipher_data; ++ ++ if (gctx->mgm.key) { ++ if (gctx->mgm.key != &gctx->ks) ++ return 0; ++ gctx_out->mgm.key = &gctx_out->ks; ++ } ++ ++ return 1; ++ } ++ ++ default: ++ return -1; ++ ++ } ++} ++ ++static int ++kuznyechik_mgm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_KUZNYECHIK_MGM_CTX *gctx = ctx->cipher_data; ++ ++ if (!iv && !key) ++ return 1; ++ if (key) { ++ kuznyechik_mgm_set_key(&gctx->ks, &gctx->mgm, key, ctx->key_len); ++ ++ /* If we have an iv can set it directly, otherwise use ++ * saved IV. ++ */ ++ if (gctx->iv_set) ++ iv = ctx->iv; ++ if (iv) { ++ CRYPTO_mgm128_setiv(&gctx->mgm, iv); ++ gctx->iv_set = 1; ++ } ++ gctx->key_set = 1; ++ } else { ++ /* If key set use IV, otherwise copy */ ++ if (gctx->key_set) ++ CRYPTO_mgm128_setiv(&gctx->mgm, iv); ++ else ++ memcpy(ctx->iv, iv, ctx->cipher->iv_len); ++ gctx->iv_set = 1; ++ } ++ return 1; ++} ++ ++static int ++kuznyechik_mgm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, ++ const unsigned char *in, size_t len) ++{ ++ EVP_KUZNYECHIK_MGM_CTX *gctx = ctx->cipher_data; ++ ++ /* If not set up, return error */ ++ if (!gctx->key_set) ++ return -1; ++ ++ if (!gctx->iv_set) ++ return -1; ++ ++ if (in) { ++ if (out == NULL) { ++ if (CRYPTO_mgm128_aad(&gctx->mgm, in, len)) ++ return -1; ++ } else if (ctx->encrypt) { ++ if (CRYPTO_mgm128_encrypt(&gctx->mgm, in, out, len)) ++ return -1; ++ } else { ++ if (CRYPTO_mgm128_decrypt(&gctx->mgm, in, out, len)) ++ return -1; ++ } ++ return len; ++ } else { ++ if (!ctx->encrypt) { ++ if (gctx->tag_len < 0) ++ return -1; ++ if (CRYPTO_mgm128_finish(&gctx->mgm, ctx->buf, gctx->tag_len) != 0) ++ return -1; ++ gctx->iv_set = 0; ++ return 0; ++ } ++ CRYPTO_mgm128_tag(&gctx->mgm, ctx->buf, 16); ++ gctx->tag_len = 16; ++ ++ /* Don't reuse the IV */ ++ gctx->iv_set = 0; ++ return 0; ++ } ++ ++} ++ ++#define CUSTOM_FLAGS \ ++ ( EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CUSTOM_IV | \ ++ EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | \ ++ EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) ++ ++#define NID_kuznyechik_mgm NID_id_tc26_cipher_gostr3412_2015_kuznyechik_mgm ++ ++BLOCK_CIPHER_def1(kuznyechik, mgm, mgm, GCM, EVP_KUZNYECHIK_MGM_CTX, ++ NID_kuznyechik, 1, 32, 16, ++ EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS, ++ kuznyechik_mgm_init_key, kuznyechik_mgm_cleanup, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ kuznyechik_mgm_ctrl) ++ + static int + aead_kuznyechik_mgm_init(EVP_AEAD_CTX *ctx, const unsigned char *key, size_t key_len, + size_t tag_len) +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 88d9b1989..334ce1cd3 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -385,6 +385,8 @@ struct evp_cipher_st { + #define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG + #define EVP_CTRL_CCM_SET_L 0x14 + #define EVP_CTRL_CCM_SET_MSGLEN 0x15 ++#define EVP_CTRL_MGM_GET_TAG EVP_CTRL_GCM_GET_TAG ++#define EVP_CTRL_MGM_SET_TAG EVP_CTRL_GCM_SET_TAG + /* AEAD cipher deduces payload length and returns number of bytes + * required to store MAC and eventual padding. Subsequent call to + * EVP_Cipher even appends/verifies MAC. +@@ -860,6 +862,7 @@ const EVP_CIPHER *EVP_kuznyechik_cfb128(void); + const EVP_CIPHER *EVP_kuznyechik_ofb(void); + const EVP_CIPHER *EVP_kuznyechik_ctr(void); + const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm(void); ++const EVP_CIPHER *EVP_kuznyechik_mgm(void); + #endif + + #ifndef OPENSSL_NO_SM4 +diff --git a/src/regress/lib/libcrypto/evp/evpaeadtests.txt b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +index 68156e7a5..69ccd8c17 100644 +--- a/src/regress/lib/libcrypto/evp/evpaeadtests.txt ++++ b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +@@ -12,3 +12,6 @@ aes-128-gcm:88EE087FD95DA9FBF6725AA9D757B0CD:7AE8E2CA4EC500012E58495C:68F2E77696 + + aes-256-gcm:4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:BA8AE31BC506486D6873E4FCE460E7DC57591FF00611F31C3834FE1C04AD80B66803AFCF5B27E6333FA67C99DA47C2F0CED68D531BD741A943CFF7A6713BD0:2611CD7DAA01D61C5C886DC1A8170107:1 + aes-256-gcm:4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5:7AE8E2CA4EC500012E58495C:68F2E77696CE7AE8E2CA4EC588E54D002E58495C:08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008:BA8AE31BC506486D6873E4FCE460E7DC57591FF00611F31C3834FE1C04AD80B66803AFCF5B27E6333FA67C99DA47C2F0CED68D531BD741A943CFF7A6713BD0:2611CD7DAA01D61C5C886DC1A8170107:0 ++ ++kuznyechik-mgm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1122334455667700ffeeddccbbaa9988:0202020202020202010101010101010104040404040404040303030303030303ea0505050505050505:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011aabbcc:a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552:cf5d656f40c34f5c46e8bb0e29fcdb4c:1 ++kuznyechik-mgm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1122334455667700ffeeddccbbaa9988:0202020202020202010101010101010104040404040404040303030303030303ea0505050505050505:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011aabbcc:a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552:cf5d656f40c34f5c46e8bb0e29fcdb4c:0 +-- +2.17.1 + diff --git a/0049-evp-add-EVP_CIPHER-interface-for-magma-mgm.patch b/0049-evp-add-EVP_CIPHER-interface-for-magma-mgm.patch new file mode 100644 index 0000000..0e10355 --- /dev/null +++ b/0049-evp-add-EVP_CIPHER-interface-for-magma-mgm.patch @@ -0,0 +1,235 @@ +From 10686e4b5c14cbff10d40e5ae630c0aa35aaa8fe Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 25 Mar 2020 23:44:15 +0300 +Subject: [PATCH 49/87] evp: add EVP_CIPHER interface for magma-mgm + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_magma.c | 153 ++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + .../lib/libcrypto/evp/evpaeadtests.txt | 3 + + 5 files changed, 159 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index d19720109..3eda9f3bd 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1739,6 +1739,7 @@ EVP_magma_cfb64 + EVP_magma_ctr + EVP_magma_ctr_acpkm + EVP_magma_ecb ++EVP_magma_mgm + EVP_magma_ofb + EVP_md4 + EVP_md5 +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 586466eb6..6a60624d3 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -235,6 +235,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_magma_ofb()); + EVP_add_cipher(EVP_magma_ctr()); + EVP_add_cipher(EVP_magma_ctr_acpkm()); ++ EVP_add_cipher(EVP_magma_mgm()); + EVP_add_cipher(EVP_kuznyechik_ecb()); + EVP_add_cipher(EVP_kuznyechik_cbc()); + EVP_add_cipher(EVP_kuznyechik_cfb128()); +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index 3d3083b95..ae78824eb 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -196,6 +196,14 @@ BLOCK_CIPHER_def1(magma, ctr_acpkm, ctr_acpkm, CTR, EVP_MAGMA_CTX, + + #define EVP_AEAD_MAGMA_MGM_TAG_LEN 16 + ++typedef struct { ++ MAGMA_KEY ks; /* MAGMA key schedule to use */ ++ MGM64_CONTEXT mgm; ++ int key_set; /* Set if key initialised */ ++ int iv_set; /* Set if an iv is set */ ++ int tag_len; ++} EVP_MAGMA_MGM_CTX; ++ + struct aead_magma_mgm_ctx { + MAGMA_KEY ks; + MGM64_CONTEXT mgm; +@@ -210,6 +218,151 @@ magma_mgm_set_key(MAGMA_KEY *magma_key, MGM64_CONTEXT *mgm_ctx, + CRYPTO_mgm64_init(mgm_ctx, magma_key, (block64_f)Magma_encrypt); + } + ++static int ++magma_mgm_cleanup(EVP_CIPHER_CTX *c) ++{ ++ EVP_MAGMA_MGM_CTX *gctx = c->cipher_data; ++ ++ explicit_bzero(gctx, sizeof(*gctx)); ++ return 1; ++} ++ ++static int ++magma_mgm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) ++{ ++ EVP_MAGMA_MGM_CTX *gctx = c->cipher_data; ++ ++ switch (type) { ++ case EVP_CTRL_INIT: ++ gctx->key_set = 0; ++ gctx->iv_set = 0; ++ gctx->tag_len = -1; ++ return 1; ++ ++ case EVP_CTRL_MGM_SET_TAG: ++ if (arg <= 0 || arg > 8 || c->encrypt) ++ return 0; ++ memcpy(c->buf, ptr, arg); ++ gctx->tag_len = arg; ++ return 1; ++ ++ case EVP_CTRL_MGM_GET_TAG: ++ if (arg <= 0 || arg > 8 || !c->encrypt || gctx->tag_len < 0) ++ return 0; ++ memcpy(ptr, c->buf, arg); ++ return 1; ++ ++ case EVP_CTRL_COPY: ++ { ++ EVP_CIPHER_CTX *out = ptr; ++ EVP_MAGMA_MGM_CTX *gctx_out = out->cipher_data; ++ ++ if (gctx->mgm.key) { ++ if (gctx->mgm.key != &gctx->ks) ++ return 0; ++ gctx_out->mgm.key = &gctx_out->ks; ++ } ++ ++ return 1; ++ } ++ ++ default: ++ return -1; ++ ++ } ++} ++ ++static int ++magma_mgm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_MAGMA_MGM_CTX *gctx = ctx->cipher_data; ++ ++ if (!iv && !key) ++ return 1; ++ if (key) { ++ magma_mgm_set_key(&gctx->ks, &gctx->mgm, key, ctx->key_len); ++ ++ /* If we have an iv can set it directly, otherwise use ++ * saved IV. ++ */ ++ if (gctx->iv_set) ++ iv = ctx->iv; ++ if (iv) { ++ CRYPTO_mgm64_setiv(&gctx->mgm, iv); ++ gctx->iv_set = 1; ++ } ++ gctx->key_set = 1; ++ } else { ++ /* If key set use IV, otherwise copy */ ++ if (gctx->key_set) ++ CRYPTO_mgm64_setiv(&gctx->mgm, iv); ++ else ++ memcpy(ctx->iv, iv, ctx->cipher->iv_len); ++ gctx->iv_set = 1; ++ } ++ return 1; ++} ++ ++static int ++magma_mgm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, ++ const unsigned char *in, size_t len) ++{ ++ EVP_MAGMA_MGM_CTX *gctx = ctx->cipher_data; ++ ++ /* If not set up, return error */ ++ if (!gctx->key_set) ++ return -1; ++ ++ if (!gctx->iv_set) ++ return -1; ++ ++ if (in) { ++ if (out == NULL) { ++ if (CRYPTO_mgm64_aad(&gctx->mgm, in, len)) ++ return -1; ++ } else if (ctx->encrypt) { ++ if (CRYPTO_mgm64_encrypt(&gctx->mgm, in, out, len)) ++ return -1; ++ } else { ++ if (CRYPTO_mgm64_decrypt(&gctx->mgm, in, out, len)) ++ return -1; ++ } ++ return len; ++ } else { ++ if (!ctx->encrypt) { ++ if (gctx->tag_len < 0) ++ return -1; ++ if (CRYPTO_mgm64_finish(&gctx->mgm, ctx->buf, gctx->tag_len) != 0) ++ return -1; ++ gctx->iv_set = 0; ++ return 0; ++ } ++ CRYPTO_mgm64_tag(&gctx->mgm, ctx->buf, 8); ++ gctx->tag_len = 8; ++ ++ /* Don't reuse the IV */ ++ gctx->iv_set = 0; ++ return 0; ++ } ++ ++} ++ ++#define CUSTOM_FLAGS \ ++ ( EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_CUSTOM_IV | \ ++ EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | \ ++ EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY ) ++ ++#define NID_magma_mgm NID_id_tc26_cipher_gostr3412_2015_magma_mgm ++ ++BLOCK_CIPHER_def1(magma, mgm, mgm, GCM, EVP_MAGMA_MGM_CTX, ++ NID_magma, 1, 32, 8, ++ EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS, ++ magma_mgm_init_key, magma_mgm_cleanup, ++ EVP_CIPHER_set_asn1_iv, ++ EVP_CIPHER_get_asn1_iv, ++ magma_mgm_ctrl) ++ + static int + aead_magma_mgm_init(EVP_AEAD_CTX *ctx, const unsigned char *key, size_t key_len, + size_t tag_len) +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 334ce1cd3..50b157525 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -856,6 +856,7 @@ const EVP_CIPHER *EVP_magma_cfb64(void); + const EVP_CIPHER *EVP_magma_ofb(void); + const EVP_CIPHER *EVP_magma_ctr(void); + const EVP_CIPHER *EVP_magma_ctr_acpkm(void); ++const EVP_CIPHER *EVP_magma_mgm(void); + const EVP_CIPHER *EVP_kuznyechik_ecb(void); + const EVP_CIPHER *EVP_kuznyechik_cbc(void); + const EVP_CIPHER *EVP_kuznyechik_cfb128(void); +diff --git a/src/regress/lib/libcrypto/evp/evpaeadtests.txt b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +index 69ccd8c17..9c8dd7142 100644 +--- a/src/regress/lib/libcrypto/evp/evpaeadtests.txt ++++ b/src/regress/lib/libcrypto/evp/evpaeadtests.txt +@@ -15,3 +15,6 @@ aes-256-gcm:4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5:7AE + + kuznyechik-mgm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1122334455667700ffeeddccbbaa9988:0202020202020202010101010101010104040404040404040303030303030303ea0505050505050505:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011aabbcc:a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552:cf5d656f40c34f5c46e8bb0e29fcdb4c:1 + kuznyechik-mgm:8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef:1122334455667700ffeeddccbbaa9988:0202020202020202010101010101010104040404040404040303030303030303ea0505050505050505:1122334455667700ffeeddccbbaa998800112233445566778899aabbcceeff0a112233445566778899aabbcceeff0a002233445566778899aabbcceeff0a0011aabbcc:a9757b8147956e9055b8a33de89f42fc8075d2212bf9fd5bd3f7069aadc16b39497ab15915a6ba85936b5d0ea9f6851cc60c14d4d3f883d0ab94420695c76deb2c7552:cf5d656f40c34f5c46e8bb0e29fcdb4c:0 ++ ++magma-mgm:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:92def06b3c130a59:01010101010101010202020202020202030303030303030304040404040404040505050505050505EA:ffeeddccbbaa998811223344556677008899aabbcceeff0a001122334455667799aabbcceeff0a001122334455667788aabbcceeff0a00112233445566778899aabbcc:c795066c5f9ea03b85113342459185ae1f2e00d6bf2b785d940470b8bb9c8e7d9a5dd3731f7ddc70ec27cb0ace6fa57670f65c646abb75d547aa37c3bcb5c34e03bb9c:a7928069aa10fd10:1 ++magma-mgm:ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff:92def06b3c130a59:01010101010101010202020202020202030303030303030304040404040404040505050505050505EA:ffeeddccbbaa998811223344556677008899aabbcceeff0a001122334455667799aabbcceeff0a001122334455667788aabbcceeff0a00112233445566778899aabbcc:c795066c5f9ea03b85113342459185ae1f2e00d6bf2b785d940470b8bb9c8e7d9a5dd3731f7ddc70ec27cb0ace6fa57670f65c646abb75d547aa37c3bcb5c34e03bb9c:a7928069aa10fd10:0 +-- +2.17.1 + diff --git a/0050-evp-add-support-for-Kuznyechik-ctr-acpkm-omac-cipher.patch b/0050-evp-add-support-for-Kuznyechik-ctr-acpkm-omac-cipher.patch new file mode 100644 index 0000000..0f6e2db --- /dev/null +++ b/0050-evp-add-support-for-Kuznyechik-ctr-acpkm-omac-cipher.patch @@ -0,0 +1,251 @@ +From f3348e4b61f6cef3c31a7a62ede2dcdcec2c6ab5 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 7 Apr 2020 16:34:52 +0300 +Subject: [PATCH 50/87] evp: add support for Kuznyechik-ctr-acpkm-omac cipher + +Add support for AEAD cipher implemented using CTR-ACPKM as block cipher +and CMAC as a MAC value. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_kuznyechik.c | 175 +++++++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + 3 files changed, 177 insertions(+) + +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 6a60624d3..ef95d7d68 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -242,6 +242,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_kuznyechik_ofb()); + EVP_add_cipher(EVP_kuznyechik_ctr()); + EVP_add_cipher(EVP_kuznyechik_ctr_acpkm()); ++ EVP_add_cipher(EVP_kuznyechik_ctr_acpkm_omac()); + EVP_add_cipher(EVP_kuznyechik_mgm()); + #endif + +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index d022db39c..c6b09173e 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -25,6 +25,8 @@ + #include + #include + #include ++#include ++#include + #include "evp_locl.h" + #include "modes_lcl.h" + +@@ -32,6 +34,14 @@ typedef struct { + KUZNYECHIK_KEY ks; + } EVP_KUZNYECHIK_CTX; + ++typedef struct { ++ KUZNYECHIK_KEY ks; ++ CMAC_CTX *cmac; ++ int iv_set; ++ int taglen; ++ unsigned char tag[16]; ++} EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX; ++ + static int + kuznyechik_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) +@@ -178,6 +188,160 @@ kuznyechik_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) + return gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); + } + ++static int ++kuznyechik_ctr_acpkm_omac_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *c = ctx->cipher_data; ++ unsigned char out[64]; ++ ++ c->taglen = -1; ++ if (iv) { ++ unsigned int il = EVP_CIPHER_CTX_iv_length(ctx) - 8; ++ memcpy(ctx->iv, iv, il); ++ memset(ctx->iv + il, 0, EVP_MAX_IV_LENGTH - il); ++ memcpy(ctx->oiv, iv + il, 8); ++ c->iv_set = 1; ++ ctx->num = 0; ++ } ++ ++ if (!key) ++ return 1; ++ ++ if (!c->iv_set) ++ return 0; ++ ++ if (!KDF_TREE(EVP_streebog256(), NULL, ++ key, EVP_CIPHER_CTX_key_length(ctx), ++ "kdf tree", 8, ++ ctx->oiv, 8, ++ 1, ++ out, sizeof(out))) ++ return 0; ++ ++ Kuznyechik_set_key(&c->ks, out, 1); ++ ++ return CMAC_Init(c->cmac, out + 32, 32, EVP_kuznyechik_cbc(), NULL); ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_cleanup(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *c = ctx->cipher_data; ++ ++ CMAC_CTX_free(c->cmac); ++ ++ return 1; ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_GOST_SET_MESHING: ++ key->ks.key_meshing = arg; ++ return 1; ++ case EVP_CTRL_INIT: ++ /* deafult for tests */ ++ key->ks.key_meshing = 32; ++ key->iv_set = 0; ++ key->cmac = CMAC_CTX_new(); ++ return 1; ++ case EVP_CTRL_GCM_SET_TAG: ++ if (arg <= 0 || arg > sizeof(key->tag) || ctx->encrypt) ++ return 0; ++ ++ memcpy(key->tag, ptr, arg); ++ key->taglen = arg; ++ return 1; ++ case EVP_CTRL_GCM_GET_TAG: ++ if (arg <= 0 || arg > sizeof(key->tag) || !ctx->encrypt || key->taglen < 0) ++ return 0; ++ memcpy(ptr, key->tag, arg); ++ return 1; ++ default: ++ return kuznyechik_ctl(ctx, type, arg, ptr); ++ } ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_final(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX, ctx); ++ unsigned char tmp[EVP_MAX_BLOCK_LENGTH]; ++ size_t taglen = sizeof(tmp); ++ ++ /* Do not reuse IV */ ++ key->iv_set = 0; ++ ++ CMAC_Final(key->cmac, tmp, &taglen); ++ if (ctx->encrypt) { ++ CRYPTO_ctr128_encrypt(tmp, key->tag, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_acpkm_encrypt); ++ key->taglen = taglen; ++ } else { ++ CRYPTO_ctr128_encrypt(tmp, tmp, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_acpkm_encrypt); ++ if (key->taglen <= 0 || ++ key->taglen > taglen || ++ timingsafe_memcmp(tmp, key->tag, key->taglen)) ++ return -1; ++ } ++ ++ return 0; ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ if (ctx->encrypt) ++ CMAC_Update(key->cmac, in, len); ++ ++ CRYPTO_ctr128_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_acpkm_encrypt); ++ if (!ctx->encrypt) ++ CMAC_Update(key->cmac, out, len); ++ ++ if (!in) ++ return kuznyechik_ctr_acpkm_omac_final(ctx); ++ ++ return len; ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 256 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_set_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx) - 8); ++} ++ ++static int ++kuznyechik_ctr_acpkm_omac_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ int ret; ++ EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 256 * 1024, 0); ++ ++ ret = gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx) - 8); ++ if (ret > 0) ++ key->iv_set = 1; ++ ++ return ret; ++} ++ + IMPLEMENT_BLOCK_CIPHER(kuznyechik, ks, Kuznyechik, EVP_KUZNYECHIK_CTX, + NID_kuznyechik, 16, 32, 16, 128, 0, kuznyechik_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -200,6 +364,17 @@ BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm, ctr_acpkm, CTR, EVP_KUZNYECHIK_CTX, + kuznyechik_ctr_acpkm_get_asn1_params, + kuznyechik_acpkm_ctl) + ++#define NID_kuznyechik_ctr_acpkm_omac NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac ++ ++BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm_omac, ctr_acpkm_omac, CTR, EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX, ++ NID_kuznyechik, 1, 32, 16, ++ EVP_CIPH_FLAG_AEAD_CIPHER | EVP_CIPH_CTRL_INIT | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CUSTOM_IV |EVP_CIPH_FLAG_CUSTOM_CIPHER, ++ kuznyechik_ctr_acpkm_omac_init_key, ++ kuznyechik_ctr_acpkm_omac_cleanup, ++ kuznyechik_ctr_acpkm_omac_set_asn1_params, ++ kuznyechik_ctr_acpkm_omac_get_asn1_params, ++ kuznyechik_ctr_acpkm_omac_ctl) ++ + #define EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN 16 + + typedef struct { +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 50b157525..9c618ddd5 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -863,6 +863,7 @@ const EVP_CIPHER *EVP_kuznyechik_cfb128(void); + const EVP_CIPHER *EVP_kuznyechik_ofb(void); + const EVP_CIPHER *EVP_kuznyechik_ctr(void); + const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm(void); ++const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm_omac(void); + const EVP_CIPHER *EVP_kuznyechik_mgm(void); + #endif + +-- +2.17.1 + diff --git a/0051-evp-add-support-for-Magma-ctr-acpkm-omac-cipher.patch b/0051-evp-add-support-for-Magma-ctr-acpkm-omac-cipher.patch new file mode 100644 index 0000000..857fb4c --- /dev/null +++ b/0051-evp-add-support-for-Magma-ctr-acpkm-omac-cipher.patch @@ -0,0 +1,251 @@ +From c797b2060c4a6bb2d7d9c3c9cb6aa6d4b6ed94c7 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 7 Apr 2020 16:34:52 +0300 +Subject: [PATCH 51/87] evp: add support for Magma-ctr-acpkm-omac cipher + +Add support for AEAD cipher implemented using CTR-ACPKM as block cipher +and CMAC as a MAC value. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_magma.c | 175 ++++++++++++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + 3 files changed, 177 insertions(+) + +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index ef95d7d68..90d0f7e20 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -235,6 +235,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_magma_ofb()); + EVP_add_cipher(EVP_magma_ctr()); + EVP_add_cipher(EVP_magma_ctr_acpkm()); ++ EVP_add_cipher(EVP_magma_ctr_acpkm_omac()); + EVP_add_cipher(EVP_magma_mgm()); + EVP_add_cipher(EVP_kuznyechik_ecb()); + EVP_add_cipher(EVP_kuznyechik_cbc()); +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index ae78824eb..ffaeda505 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -25,6 +25,8 @@ + #include + #include + #include ++#include ++#include + #include "evp_locl.h" + #include "modes_lcl.h" + +@@ -32,6 +34,14 @@ typedef struct { + MAGMA_KEY ks; + } EVP_MAGMA_CTX; + ++typedef struct { ++ MAGMA_KEY ks; ++ CMAC_CTX *cmac; ++ int iv_set; ++ int taglen; ++ unsigned char tag[8]; ++} EVP_MAGMA_CTR_ACPKM_OMAC_CTX; ++ + static int + magma_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) +@@ -172,6 +182,160 @@ magma_ctr_acpkm_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) + return gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx)); + } + ++static int ++magma_ctr_acpkm_omac_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *c = ctx->cipher_data; ++ unsigned char out[64]; ++ ++ c->taglen = -1; ++ if (iv) { ++ unsigned int il = EVP_CIPHER_CTX_iv_length(ctx) - 8; ++ memcpy(ctx->iv, iv, il); ++ memset(ctx->iv + il, 0, EVP_MAX_IV_LENGTH - il); ++ memcpy(ctx->oiv, iv + il, 8); ++ c->iv_set = 1; ++ ctx->num = 0; ++ } ++ ++ if (!key) ++ return 1; ++ ++ if (!c->iv_set) ++ return 0; ++ ++ if (!KDF_TREE(EVP_streebog256(), NULL, ++ key, EVP_CIPHER_CTX_key_length(ctx), ++ "kdf tree", 8, ++ ctx->oiv, 8, ++ 1, ++ out, sizeof(out))) ++ return 0; ++ ++ Magma_set_key(&c->ks, out); ++ ++ return CMAC_Init(c->cmac, out + 32, 32, EVP_magma_cbc(), NULL); ++} ++ ++static int ++magma_ctr_acpkm_omac_cleanup(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *c = ctx->cipher_data; ++ ++ CMAC_CTX_free(c->cmac); ++ ++ return 1; ++} ++ ++static int ++magma_ctr_acpkm_omac_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_MAGMA_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_GOST_SET_MESHING: ++ key->ks.key_meshing = arg; ++ return 1; ++ case EVP_CTRL_INIT: ++ /* deafult for tests */ ++ key->ks.key_meshing = 16; ++ key->iv_set = 0; ++ key->cmac = CMAC_CTX_new(); ++ return 1; ++ case EVP_CTRL_GCM_SET_TAG: ++ if (arg <= 0 || arg > sizeof(key->tag) || ctx->encrypt) ++ return 0; ++ ++ memcpy(key->tag, ptr, arg); ++ key->taglen = arg; ++ return 1; ++ case EVP_CTRL_GCM_GET_TAG: ++ if (arg <= 0 || arg > sizeof(key->tag) || !ctx->encrypt || key->taglen < 0) ++ return 0; ++ memcpy(ptr, key->tag, arg); ++ return 1; ++ default: ++ return magma_ctl(ctx, type, arg, ptr); ++ } ++} ++ ++static int ++magma_ctr_acpkm_omac_final(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_MAGMA_CTR_ACPKM_OMAC_CTX, ctx); ++ unsigned char tmp[EVP_MAX_BLOCK_LENGTH]; ++ size_t taglen = sizeof(tmp); ++ ++ /* Do not reuse IV */ ++ key->iv_set = 0; ++ ++ CMAC_Final(key->cmac, tmp, &taglen); ++ if (ctx->encrypt) { ++ CRYPTO_ctr64_encrypt(tmp, key->tag, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_acpkm_encrypt); ++ key->taglen = taglen; ++ } else { ++ CRYPTO_ctr64_encrypt(tmp, tmp, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_acpkm_encrypt); ++ if (key->taglen <= 0 || ++ key->taglen > taglen || ++ timingsafe_memcmp(tmp, key->tag, key->taglen)) ++ return -1; ++ } ++ ++ return 0; ++} ++ ++static int ++magma_ctr_acpkm_omac_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_MAGMA_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ if (ctx->encrypt) ++ CMAC_Update(key->cmac, in, len); ++ ++ CRYPTO_ctr64_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_acpkm_encrypt); ++ if (!ctx->encrypt) ++ CMAC_Update(key->cmac, out, len); ++ ++ if (!in) ++ return magma_ctr_acpkm_omac_final(ctx); ++ ++ return len; ++} ++ ++static int ++magma_ctr_acpkm_omac_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 8 * 1024, 0); ++ ++ return gost3412_ctr_acpkm_set_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx) - 8); ++} ++ ++static int ++magma_ctr_acpkm_omac_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ int ret; ++ EVP_MAGMA_CTR_ACPKM_OMAC_CTX *key = EVP_C_DATA(EVP_MAGMA_CTR_ACPKM_OMAC_CTX, ctx); ++ ++ /* Also set meshing section size here. ++ * There is no other good place to enable meshing for CMS ++ */ ++ EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GOST_SET_MESHING, 8 * 1024, 0); ++ ++ ret = gost3412_ctr_acpkm_get_asn1_params(ctx, params, EVP_CIPHER_CTX_iv_length(ctx) - 8); ++ if (ret > 0) ++ key->iv_set = 1; ++ ++ return ret; ++} ++ + IMPLEMENT_BLOCK_CIPHER(magma, ks, Magma, EVP_MAGMA_CTX, + NID_magma, 8, 32, 8, 64, 0, magma_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -194,6 +358,17 @@ BLOCK_CIPHER_def1(magma, ctr_acpkm, ctr_acpkm, CTR, EVP_MAGMA_CTX, + magma_ctr_acpkm_get_asn1_params, + magma_acpkm_ctl) + ++#define NID_magma_ctr_acpkm_omac NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac ++ ++BLOCK_CIPHER_def1(magma, ctr_acpkm_omac, ctr_acpkm_omac, CTR, EVP_MAGMA_CTR_ACPKM_OMAC_CTX, ++ NID_magma, 1, 32, 12, ++ EVP_CIPH_FLAG_AEAD_CIPHER | EVP_CIPH_CTRL_INIT | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CUSTOM_IV |EVP_CIPH_FLAG_CUSTOM_CIPHER, ++ magma_ctr_acpkm_omac_init_key, ++ magma_ctr_acpkm_omac_cleanup, ++ magma_ctr_acpkm_omac_set_asn1_params, ++ magma_ctr_acpkm_omac_get_asn1_params, ++ magma_ctr_acpkm_omac_ctl) ++ + #define EVP_AEAD_MAGMA_MGM_TAG_LEN 16 + + typedef struct { +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 9c618ddd5..981351d76 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -856,6 +856,7 @@ const EVP_CIPHER *EVP_magma_cfb64(void); + const EVP_CIPHER *EVP_magma_ofb(void); + const EVP_CIPHER *EVP_magma_ctr(void); + const EVP_CIPHER *EVP_magma_ctr_acpkm(void); ++const EVP_CIPHER *EVP_magma_ctr_acpkm_omac(void); + const EVP_CIPHER *EVP_magma_mgm(void); + const EVP_CIPHER *EVP_kuznyechik_ecb(void); + const EVP_CIPHER *EVP_kuznyechik_cbc(void); +-- +2.17.1 + diff --git a/0001-gost-restore-CMS-support.patch b/0052-gost-restore-CMS-support.patch similarity index 73% rename from 0001-gost-restore-CMS-support.patch rename to 0052-gost-restore-CMS-support.patch index 4314d2f..ca4d3b8 100644 --- a/0001-gost-restore-CMS-support.patch +++ b/0052-gost-restore-CMS-support.patch @@ -1,19 +1,19 @@ -From 6baa93be806961444d000337366b8ede5deb1c8d Mon Sep 17 00:00:00 2001 +From fbd3052d4bda0a41383a04ac78e9bd0147655130 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Thu, 19 Mar 2020 18:13:42 +0300 -Subject: [PATCH] gost: restore CMS support +Subject: [PATCH 52/87] gost: restore CMS support Restore CMS support dropped few years ago when CMS support was removed from LibreSSL. Signed-off-by: Dmitry Baryshkov --- - src/lib/libcrypto/gost/gostr341001_ameth.c | 14 ++++++++++++++ + src/lib/libcrypto/gost/gostr341001_ameth.c | 15 ++++++++++++++- src/lib/libcrypto/gost/gostr341001_pmeth.c | 5 +++++ - 2 files changed, 19 insertions(+) + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c -index 6886859fa..087042f0a 100644 +index 880c17cea..2efb001fc 100644 --- a/src/lib/libcrypto/gost/gostr341001_ameth.c +++ b/src/lib/libcrypto/gost/gostr341001_ameth.c @@ -59,6 +59,9 @@ @@ -26,29 +26,34 @@ index 6886859fa..087042f0a 100644 #include -@@ -749,6 +752,17 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) - PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, &alg1, &alg2); - break; +@@ -776,11 +779,21 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + int digest = GOST_KEY_get_digest(pkey->pkey.gost); + switch (op) { +#ifndef OPENSSL_NO_CMS + case ASN1_PKEY_CTRL_CMS_SIGN: + if (arg1 == 0) + CMS_SignerInfo_get0_algs(arg2, NULL, NULL, + &alg1, &alg2); -+ return 1; ++ break; + case ASN1_PKEY_CTRL_CMS_ENVELOPE: + if (arg1 == 0) + CMS_RecipientInfo_ktri_get0_algs(arg2, NULL, NULL, &alg3); + break; +#endif + case ASN1_PKEY_CTRL_PKCS7_SIGN: + if (arg1 == 0) + PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, &alg1, &alg2); + break; +- case ASN1_PKEY_CTRL_PKCS7_ENCRYPT: if (arg1 == 0) PKCS7_RECIP_INFO_get0_alg(arg2, &alg3); diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c -index 0e0cae99e..cacbf3de9 100644 +index 455337232..ce4658b13 100644 --- a/src/lib/libcrypto/gost/gostr341001_pmeth.c +++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c -@@ -587,6 +587,11 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +@@ -831,6 +831,11 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) case EVP_PKEY_CTRL_PKCS7_DECRYPT: case EVP_PKEY_CTRL_PKCS7_SIGN: case EVP_PKEY_CTRL_DIGESTINIT: @@ -61,5 +66,5 @@ index 0e0cae99e..cacbf3de9 100644 case EVP_PKEY_CTRL_GOST_PARAMSET: -- -2.20.1 +2.17.1 diff --git a/0053-gost-add-support-for-CMS-and-SMIME-enveloped-files.patch b/0053-gost-add-support-for-CMS-and-SMIME-enveloped-files.patch new file mode 100644 index 0000000..c02012e --- /dev/null +++ b/0053-gost-add-support-for-CMS-and-SMIME-enveloped-files.patch @@ -0,0 +1,349 @@ +From 39697551e90ec5c96552de4d4666ec00b579dcce Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sun, 5 Apr 2020 22:58:24 +0300 +Subject: [PATCH 53/87] gost: add support for CMS and SMIME enveloped files + +Add support for CMS and SMIME files using GOST R 34.10-2012 keys and +GOST R 34.12-2015 (Magma and Kuznyechik) algorithms. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_env.c | 2 +- + src/lib/libcrypto/gost/gost_locl.h | 2 + + src/lib/libcrypto/gost/gostr341001_ameth.c | 154 +++++++++++++++++++-- + src/lib/libcrypto/gost/gostr341001_pmeth.c | 13 ++ + src/lib/libcrypto/objects/obj_mac.num | 4 + + src/lib/libcrypto/objects/objects.txt | 6 + + src/lib/libcrypto/pkcs7/pk7_doit.c | 6 +- + 7 files changed, 168 insertions(+), 19 deletions(-) + +diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c +index 74d957eee..911f7a8a2 100644 +--- a/src/lib/libcrypto/cms/cms_env.c ++++ b/src/lib/libcrypto/cms/cms_env.c +@@ -386,7 +386,7 @@ cms_RecipientInfo_ktri_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) + } + + if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT, +- EVP_PKEY_CTRL_CMS_ENCRYPT, 0, ri) <= 0) { ++ EVP_PKEY_CTRL_CMS_ENCRYPT, EVP_CIPHER_type(ec->cipher), ri) <= 0) { + CMSerror(CMS_R_CTRL_ERROR); + goto err; + } +diff --git a/src/lib/libcrypto/gost/gost_locl.h b/src/lib/libcrypto/gost/gost_locl.h +index 13e9fd459..1cdc18db9 100644 +--- a/src/lib/libcrypto/gost/gost_locl.h ++++ b/src/lib/libcrypto/gost/gost_locl.h +@@ -123,6 +123,8 @@ extern BIGNUM *GOST_le2bn(const unsigned char *buf, size_t len, BIGNUM *bn); + extern int GOST_bn2le(BIGNUM *bn, unsigned char *buf, int len); + extern int gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm, + unsigned int ukm_len, int ukm_be, int out_nid, unsigned char *key); ++extern int gost01_smime_encrypt(EVP_PKEY_CTX *ctx, X509_ALGOR *alg, int nid); ++extern int gost01_smime_decrypt(EVP_PKEY_CTX *pctx, X509_ALGOR *alg); + + /* GOST R 34.10 parameters */ + extern int GostR3410_get_md_digest(int nid); +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 2efb001fc..965b36237 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -193,6 +193,41 @@ err: + return params; + } + ++static ASN1_STRING * ++encode_gost01_kexp_params(EVP_PKEY *pkey) ++{ ++ int digest = GOST_KEY_get_digest(pkey->pkey.gost); ++ ASN1_STRING *params = ASN1_STRING_new(); ++ X509_ALGOR p; ++ ++ if (params == NULL) { ++ GOSTerror(ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ switch (digest) { ++ case NID_id_tc26_gost3411_2012_256: ++ p.algorithm = OBJ_nid2obj(NID_id_tc26_agreement_gost_3410_12_256); ++ break; ++ case NID_id_tc26_gost3411_2012_512: ++ p.algorithm = OBJ_nid2obj(NID_id_tc26_agreement_gost_3410_12_512); ++ break; ++ default: ++ GOSTerror(ERR_R_INTERNAL_ERROR); ++ break; ++ } ++ p.parameter = NULL; ++ ++ params->length = i2d_X509_ALGOR(&p, ¶ms->data); ++ params->type = V_ASN1_SEQUENCE; ++ ++ return params; ++err: ++ ASN1_STRING_free(params); ++ params = NULL; ++ return NULL; ++} ++ + static int + pub_cmp_gost01(const EVP_PKEY *a, const EVP_PKEY *b) + { +@@ -772,10 +807,110 @@ param_cmp_gost01(const EVP_PKEY *a, const EVP_PKEY *b) + return 1; + } + ++int gost01_smime_decrypt(EVP_PKEY_CTX *pctx, X509_ALGOR *alg) ++{ ++ int nid = OBJ_obj2nid(alg->algorithm); ++ int format; ++ ++ switch (nid) { ++ case NID_id_GostR3410_2001: ++ /* Nothing to do */ ++ return 1; ++ case NID_id_tc26_wrap_gostr3412_2015_magma_kexp15: ++ format = GOST_ENC_FORMAT_PSKEY_MAGMA; ++ break; ++ case NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15: ++ format = GOST_ENC_FORMAT_PSKEY_KUZNYECHIK; ++ break; ++ default: ++ GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); ++ return 0; ++ } ++ if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DECRYPT, ++ EVP_PKEY_CTRL_GOST_ENC_FORMAT, ++ format, NULL) <= 0) { ++ GOSTerror(ERR_R_INTERNAL_ERROR); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++int gost01_smime_encrypt(EVP_PKEY_CTX *ctx, X509_ALGOR *alg, int enc_nid) ++{ ++ EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx); ++ int digest, nid, format; ++ ASN1_STRING *params; ++ ++ switch (enc_nid) { ++ case NID_id_Gost28147_89: ++ format = GOST_ENC_FORMAT_4490; ++ nid = NID_id_GostR3410_2001; ++ break; ++ case NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm: ++ case NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac: ++ format = GOST_ENC_FORMAT_PSKEY_MAGMA; ++ nid = NID_id_tc26_wrap_gostr3412_2015_magma_kexp15; ++ break; ++ case NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm: ++ case NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac: ++ format = GOST_ENC_FORMAT_PSKEY_KUZNYECHIK; ++ nid = NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15; ++ break; ++ default: ++ return 0; ++ } ++ ++ if (EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_ENCRYPT, ++ EVP_PKEY_CTRL_GOST_ENC_FORMAT, format, ++ NULL) != 1) ++ return 0; ++ ++ if (EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_ENCRYPT, ++ EVP_PKEY_CTRL_GOST_GET_DIGEST, 0, ++ &digest) != 1) ++ return 0; ++ ++ switch (digest) { ++ case NID_id_GostR3411_94_CryptoProParamSet: ++ if ((params = encode_gost01_algor_params(pkey)) == NULL) ++ return -1; ++ break; ++ ++ case NID_id_tc26_gost3411_2012_256: ++ case NID_id_tc26_gost3411_2012_512: ++ if ((params = encode_gost01_kexp_params(pkey)) == NULL) ++ return -1; ++ break; ++ ++ default: ++ return 0; ++ } ++ return X509_ALGOR_set0(alg, OBJ_nid2obj(nid), V_ASN1_SEQUENCE, params); ++} ++ ++#ifndef OPENSSL_NO_CMS ++static int ++gost01_cms_decrypt(CMS_RecipientInfo *ri) ++{ ++ EVP_PKEY_CTX *pkctx; ++ X509_ALGOR *cmsalg; ++ ++ pkctx = CMS_RecipientInfo_get0_pkey_ctx(ri); ++ if (pkctx == NULL) ++ return 0; ++ ++ if (!CMS_RecipientInfo_ktri_get0_algs(ri, NULL, NULL, &cmsalg)) ++ return 0; ++ ++ return gost01_smime_decrypt(pkctx, cmsalg); ++} ++#endif ++ + static int + pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + { +- X509_ALGOR *alg1 = NULL, *alg2 = NULL, *alg3 = NULL; ++ X509_ALGOR *alg1 = NULL, *alg2 = NULL; + int digest = GOST_KEY_get_digest(pkey->pkey.gost); + + switch (op) { +@@ -786,8 +921,8 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + &alg1, &alg2); + break; + case ASN1_PKEY_CTRL_CMS_ENVELOPE: +- if (arg1 == 0) +- CMS_RecipientInfo_ktri_get0_algs(arg2, NULL, NULL, &alg3); ++ if (arg1 == 1) ++ return gost01_cms_decrypt(arg2); + break; + #endif + case ASN1_PKEY_CTRL_PKCS7_SIGN: +@@ -795,9 +930,7 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, &alg1, &alg2); + break; + case ASN1_PKEY_CTRL_PKCS7_ENCRYPT: +- if (arg1 == 0) +- PKCS7_RECIP_INFO_get0_alg(arg2, &alg3); +- break; ++ return 1; + case ASN1_PKEY_CTRL_DEFAULT_MD_NID: + *(int *)arg2 = GostR3410_get_md_digest(digest); + return 2; +@@ -810,15 +943,6 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + X509_ALGOR_set0(alg1, OBJ_nid2obj(GostR3410_get_md_digest(digest)), V_ASN1_NULL, 0); + if (alg2) + X509_ALGOR_set0(alg2, OBJ_nid2obj(GostR3410_get_pk_digest(digest)), V_ASN1_NULL, 0); +- if (alg3) { +- ASN1_STRING *params = encode_gost01_algor_params(pkey); +- if (params == NULL) { +- return -1; +- } +- X509_ALGOR_set0(alg3, +- OBJ_nid2obj(GostR3410_get_pk_digest(digest)), +- V_ASN1_SEQUENCE, params); +- } + + return 1; + } +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index ce4658b13..07ca4d3a3 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -61,6 +61,9 @@ + #include + #include + #include ++#ifndef OPENSSL_NO_CMS ++#include ++#endif + + #include "evp_locl.h" + #include "gost_locl.h" +@@ -817,6 +820,7 @@ static int + pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + { + struct gost_pmeth_data *pctx = EVP_PKEY_CTX_get_data(ctx); ++ X509_ALGOR *alg; + + switch (type) { + case EVP_PKEY_CTRL_MD: +@@ -828,11 +832,20 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + pctx->md = p2; + return 1; + case EVP_PKEY_CTRL_PKCS7_ENCRYPT: ++ PKCS7_RECIP_INFO_get0_alg(p2, &alg); ++ return gost01_smime_encrypt(ctx, alg, p1); + case EVP_PKEY_CTRL_PKCS7_DECRYPT: ++ PKCS7_RECIP_INFO_get0_alg(p2, &alg); ++ return gost01_smime_decrypt(ctx, alg); + case EVP_PKEY_CTRL_PKCS7_SIGN: + case EVP_PKEY_CTRL_DIGESTINIT: ++ return 1; ++ + #ifndef OPENSSL_NO_CMS + case EVP_PKEY_CTRL_CMS_ENCRYPT: ++ if (CMS_RecipientInfo_ktri_get0_algs(p2, NULL, NULL, &alg) <= 0) ++ return 0; ++ return gost01_smime_encrypt(ctx, alg, p1); + case EVP_PKEY_CTRL_CMS_DECRYPT: + case EVP_PKEY_CTRL_CMS_SIGN: + #endif +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index 2c0d3356f..188349d71 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -1016,3 +1016,7 @@ id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1015 + id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1016 + id_tc26_cipher_gostr3412_2015_kuznyechik_mgm 1017 + kuznyechik_mac 1018 ++id_tc26_agreement_gost_3410_12_256 1019 ++id_tc26_agreement_gost_3410_12_512 1020 ++id_tc26_wrap_gostr3412_2015_magma_kexp15 1021 ++id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1022 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 4bf75f700..0d2af66ac 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1416,6 +1416,12 @@ tc26 1 5 2 2 : kuznyechik-ctr-acpkm-omac + tc26 1 5 2 3 : kuznyechik-mgm + : kuznyechik-mac + ++tc26 1 6 1 : id-tc26-agreement-gost-3410-12-256 ++tc26 1 6 2 : id-tc26-agreement-gost-3410-12-512 ++ ++tc26 1 7 1 1 : id-tc26-wrap-gostr3412-2015-magma-kexp15 ++tc26 1 7 2 1 : id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15 ++ + # Curves from draft-ietf-curdle-pkix-02 + 1 3 101 110 : X25519 + 1 3 101 111 : X448 +diff --git a/src/lib/libcrypto/pkcs7/pk7_doit.c b/src/lib/libcrypto/pkcs7/pk7_doit.c +index 81a72f681..10cbd348e 100644 +--- a/src/lib/libcrypto/pkcs7/pk7_doit.c ++++ b/src/lib/libcrypto/pkcs7/pk7_doit.c +@@ -138,7 +138,7 @@ err: + } + + static int +-pkcs7_encode_rinfo(PKCS7_RECIP_INFO *ri, unsigned char *key, int keylen) ++pkcs7_encode_rinfo(PKCS7_RECIP_INFO *ri, unsigned char *key, int keylen, int enc_type) + { + EVP_PKEY_CTX *pctx = NULL; + EVP_PKEY *pkey = NULL; +@@ -158,7 +158,7 @@ pkcs7_encode_rinfo(PKCS7_RECIP_INFO *ri, unsigned char *key, int keylen) + goto err; + + if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT, +- EVP_PKEY_CTRL_PKCS7_ENCRYPT, 0, ri) <= 0) { ++ EVP_PKEY_CTRL_PKCS7_ENCRYPT, enc_type, ri) <= 0) { + PKCS7error(PKCS7_R_CTRL_ERROR); + goto err; + } +@@ -362,7 +362,7 @@ PKCS7_dataInit(PKCS7 *p7, BIO *bio) + /* Lets do the pub key stuff :-) */ + for (i = 0; i < sk_PKCS7_RECIP_INFO_num(rsk); i++) { + ri = sk_PKCS7_RECIP_INFO_value(rsk, i); +- if (pkcs7_encode_rinfo(ri, key, keylen) <= 0) ++ if (pkcs7_encode_rinfo(ri, key, keylen, EVP_CIPHER_type(evp_cipher)) <= 0) + goto err; + } + explicit_bzero(key, keylen); +-- +2.17.1 + diff --git a/0054-cms-add-support-for-using-AEAD-ciphers-in-CMS-files.patch b/0054-cms-add-support-for-using-AEAD-ciphers-in-CMS-files.patch new file mode 100644 index 0000000..983851f --- /dev/null +++ b/0054-cms-add-support-for-using-AEAD-ciphers-in-CMS-files.patch @@ -0,0 +1,224 @@ +From c07aac0a0dced669f5291aad98c453f3d47eab10 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 7 Apr 2020 16:36:32 +0300 +Subject: [PATCH 54/87] cms: add support for using AEAD ciphers in CMS files + +Russian standards body has added definition for special unprotected +attribute (id-cms-mac-attr) used together with AEAD ciphers (primarily +CTR-ACKM-OMAC) to store MAC value together with encrypted data. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_enc.c | 66 ++++++++++++++++++++++++++- + src/lib/libcrypto/cms/cms_env.c | 15 +++++- + src/lib/libcrypto/cms/cms_lcl.h | 7 ++- + src/lib/libcrypto/cms/cms_lib.c | 8 +++- + src/lib/libcrypto/objects/obj_mac.num | 1 + + src/lib/libcrypto/objects/objects.txt | 1 + + 6 files changed, 92 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libcrypto/cms/cms_enc.c b/src/lib/libcrypto/cms/cms_enc.c +index fd2df99c6..2b8f9c5b8 100644 +--- a/src/lib/libcrypto/cms/cms_enc.c ++++ b/src/lib/libcrypto/cms/cms_enc.c +@@ -68,7 +68,8 @@ + /* Return BIO based on EncryptedContentInfo and key */ + + BIO * +-cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) ++cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec, ++ STACK_OF(X509_ATTRIBUTE) *unprotectedAttrs) + { + BIO *b; + EVP_CIPHER_CTX *ctx; +@@ -189,6 +190,23 @@ cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) + ASN1_TYPE_free(calg->parameter); + calg->parameter = NULL; + } ++ } else if (ciph->flags & EVP_CIPH_FLAG_AEAD_CIPHER) { ++ int idx = X509at_get_attr_by_NID(unprotectedAttrs, NID_id_cms_mac_attr, -1); ++ X509_ATTRIBUTE *attr; ++ ASN1_TYPE *type; ++ ++ if (idx == -1 || ++ (attr = X509at_get_attr(unprotectedAttrs, idx)) == NULL || ++ attr->single != 0 || ++ sk_ASN1_TYPE_num(attr->value.set) != 1 || ++ (type = sk_ASN1_TYPE_value(attr->value.set, 0)) == NULL || ++ type->type != V_ASN1_OCTET_STRING || ++ !EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_TAG, ++ type->value.octet_string->length, ++ type->value.octet_string->data)) { ++ CMSerror(CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR); ++ goto err; ++ } + } + ok = 1; + +@@ -204,6 +222,43 @@ cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) + return NULL; + } + ++int cms_EncryptedContent_final(CMS_EncryptedContentInfo *ec, ++ BIO *chain, STACK_OF(X509_ATTRIBUTE) **unprotectedAttrs) ++{ ++ EVP_CIPHER_CTX *ctx = NULL; ++ BIO *mbio = BIO_find_type(chain, BIO_TYPE_CIPHER); ++ ++ if (mbio == NULL) { ++ CMSerror(CMS_R_CONTENT_NOT_FOUND); ++ return 0; ++ } ++ ++ BIO_get_cipher_ctx(mbio, &ctx); ++ if (EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_FLAG_AEAD_CIPHER) { ++ unsigned char tag[EVP_MAX_MD_SIZE]; ++ int taglen; ++ int nid = EVP_CIPHER_CTX_nid(ctx); ++ ++ /* Most of the AEAD ciphers have 16-bit tags except Magma ciphers */ ++ if (nid == NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac || ++ nid == NID_id_tc26_cipher_gostr3412_2015_magma_mgm) ++ taglen = 8; ++ else ++ taglen = 16; ++ ++ if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, ++ taglen, tag) <= 0) { ++ CMSerror(CMS_R_CTRL_FAILURE); ++ return 0; ++ } ++ ++ if (!X509at_add1_attr_by_NID(unprotectedAttrs, NID_id_cms_mac_attr, V_ASN1_OCTET_STRING, tag, taglen)) ++ return 0; ++ } ++ ++ return 1; ++} ++ + int + cms_EncryptedContent_init(CMS_EncryptedContentInfo *ec, + const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen) +@@ -258,5 +313,12 @@ cms_EncryptedData_init_bio(CMS_ContentInfo *cms) + if (enc->encryptedContentInfo->cipher && enc->unprotectedAttrs) + enc->version = 2; + +- return cms_EncryptedContent_init_bio(enc->encryptedContentInfo); ++ return cms_EncryptedContent_init_bio(enc->encryptedContentInfo, enc->unprotectedAttrs); ++} ++ ++int cms_EncryptedData_final(CMS_ContentInfo *cms, BIO *chain) ++{ ++ CMS_EncryptedData *enc = cms->d.encryptedData; ++ ++ return cms_EncryptedContent_final(enc->encryptedContentInfo, chain, &enc->unprotectedAttrs); + } +diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c +index 911f7a8a2..f5e9280d4 100644 +--- a/src/lib/libcrypto/cms/cms_env.c ++++ b/src/lib/libcrypto/cms/cms_env.c +@@ -927,7 +927,7 @@ cms_EnvelopedData_init_bio(CMS_ContentInfo *cms) + /* Get BIO first to set up key */ + + ec = cms->d.envelopedData->encryptedContentInfo; +- ret = cms_EncryptedContent_init_bio(ec); ++ ret = cms_EncryptedContent_init_bio(ec, cms->d.envelopedData->unprotectedAttrs); + + /* If error or no cipher end of processing */ + +@@ -960,6 +960,19 @@ cms_EnvelopedData_init_bio(CMS_ContentInfo *cms) + return NULL; + } + ++int cms_EnvelopedData_final(CMS_ContentInfo *cms, BIO *chain) ++{ ++ CMS_EnvelopedData *env = NULL; ++ ++ env = cms_get0_enveloped(cms); ++ if (env == NULL) { ++ CMSerror(CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA); ++ return 0; ++ } ++ ++ return cms_EncryptedContent_final(env->encryptedContentInfo, chain, &env->unprotectedAttrs); ++} ++ + /* + * Get RecipientInfo type (if any) supported by a key (public or private). To + * retain compatibility with previous behaviour if the ctrl value isn't +diff --git a/src/lib/libcrypto/cms/cms_lcl.h b/src/lib/libcrypto/cms/cms_lcl.h +index 8083e5537..fdfd12160 100644 +--- a/src/lib/libcrypto/cms/cms_lcl.h ++++ b/src/lib/libcrypto/cms/cms_lcl.h +@@ -442,16 +442,21 @@ int cms_keyid_cert_cmp(ASN1_OCTET_STRING *keyid, X509 *cert); + int cms_set1_ias(CMS_IssuerAndSerialNumber **pias, X509 *cert); + int cms_set1_keyid(ASN1_OCTET_STRING **pkeyid, X509 *cert); + +-BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec); ++BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec, ++ STACK_OF(X509_ATTRIBUTE) *unprotectedAttrs); + BIO *cms_EncryptedData_init_bio(CMS_ContentInfo *cms); ++int cms_EncryptedData_final(CMS_ContentInfo *cms, BIO *chain); + int cms_EncryptedContent_init(CMS_EncryptedContentInfo *ec, + const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen); ++int cms_EncryptedContent_final(CMS_EncryptedContentInfo *ec, ++ BIO *chain, STACK_OF(X509_ATTRIBUTE) **unprotectedAttrs); + + int cms_Receipt_verify(CMS_ContentInfo *cms, CMS_ContentInfo *req_cms); + int cms_msgSigDigest_add1(CMS_SignerInfo *dest, CMS_SignerInfo *src); + ASN1_OCTET_STRING *cms_encode_Receipt(CMS_SignerInfo *si); + + BIO *cms_EnvelopedData_init_bio(CMS_ContentInfo *cms); ++int cms_EnvelopedData_final(CMS_ContentInfo *cms, BIO *chain); + CMS_EnvelopedData *cms_get0_enveloped(CMS_ContentInfo *cms); + int cms_env_asn1_ctrl(CMS_RecipientInfo *ri, int cmd); + int cms_pkey_get_ri_type(EVP_PKEY *pk); +diff --git a/src/lib/libcrypto/cms/cms_lib.c b/src/lib/libcrypto/cms/cms_lib.c +index b6580dd6f..787a8f99e 100644 +--- a/src/lib/libcrypto/cms/cms_lib.c ++++ b/src/lib/libcrypto/cms/cms_lib.c +@@ -215,12 +215,16 @@ CMS_dataFinal(CMS_ContentInfo *cms, BIO *cmsbio) + switch (OBJ_obj2nid(cms->contentType)) { + + case NID_pkcs7_data: +- case NID_pkcs7_enveloped: +- case NID_pkcs7_encrypted: + case NID_id_smime_ct_compressedData: + /* Nothing to do */ + return 1; + ++ case NID_pkcs7_enveloped: ++ return cms_EnvelopedData_final(cms, cmsbio); ++ ++ case NID_pkcs7_encrypted: ++ return cms_EncryptedData_final(cms, cmsbio); ++ + case NID_pkcs7_signed: + return cms_SignedData_final(cms, cmsbio); + +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index 188349d71..6e494cb92 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -1020,3 +1020,4 @@ id_tc26_agreement_gost_3410_12_256 1019 + id_tc26_agreement_gost_3410_12_512 1020 + id_tc26_wrap_gostr3412_2015_magma_kexp15 1021 + id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1022 ++id_cms_mac_attr 1023 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 0d2af66ac..3f810dcf8 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1368,6 +1368,7 @@ brainpool 1 14 : brainpoolP512t1 + : gost89-cbc + + member-body 643 7 1 : tc26 ++tc26 0 6 1 1 : id-cms-mac-attr + !Cname id-tc26-gost3411-2012-256 + tc26 1 2 2 : streebog256 : GOST R 34.11-2012 (256 bit) + !Cname id-tc26-gost3411-2012-512 +-- +2.17.1 + diff --git a/0055-cms-populate-SMIMECaps-with-new-GOST-algorithms.patch b/0055-cms-populate-SMIMECaps-with-new-GOST-algorithms.patch new file mode 100644 index 0000000..0982313 --- /dev/null +++ b/0055-cms-populate-SMIMECaps-with-new-GOST-algorithms.patch @@ -0,0 +1,32 @@ +From 49093fb8911e3aa0422abbef054ac4a02b8e7fc2 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Mon, 6 Apr 2020 01:35:55 +0300 +Subject: [PATCH 55/87] cms: populate SMIMECaps with new GOST algorithms + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_sd.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/lib/libcrypto/cms/cms_sd.c b/src/lib/libcrypto/cms/cms_sd.c +index 95343d088..b652260c3 100644 +--- a/src/lib/libcrypto/cms/cms_sd.c ++++ b/src/lib/libcrypto/cms/cms_sd.c +@@ -999,6 +999,12 @@ int + CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap) + { + if (!cms_add_cipher_smcap(smcap, NID_aes_256_cbc, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_gost3411_2012_256, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_gost3411_2012_512, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac, -1) || ++ !cms_add_digest_smcap(smcap, NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac, -1) || + !cms_add_digest_smcap(smcap, NID_id_GostR3411_94, -1) || + !cms_add_cipher_smcap(smcap, NID_id_Gost28147_89, -1) || + !cms_add_cipher_smcap(smcap, NID_aes_192_cbc, -1) || +-- +2.17.1 + diff --git a/0056-cms-allow-keys-support-different-RI-types.patch b/0056-cms-allow-keys-support-different-RI-types.patch new file mode 100644 index 0000000..e77388b --- /dev/null +++ b/0056-cms-allow-keys-support-different-RI-types.patch @@ -0,0 +1,112 @@ +From a93a2217ebca9eb7b6190a142e71bbc2a7a0db97 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 18:00:40 +0300 +Subject: [PATCH 56/87] cms: allow keys support different RI types + +GOST keys support both KeyTransport and KeyAgreement. Instead of +checking that RI type matches one of EVP_PKEY, check if EVP_PKEY +supports this RI type. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_env.c | 20 ++++++++++++++++++++ + src/lib/libcrypto/cms/cms_lcl.h | 1 + + src/lib/libcrypto/cms/cms_smime.c | 14 ++++++-------- + src/lib/libcrypto/evp/evp.h | 1 + + 4 files changed, 28 insertions(+), 8 deletions(-) + +diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c +index f5e9280d4..17778a4fe 100644 +--- a/src/lib/libcrypto/cms/cms_env.c ++++ b/src/lib/libcrypto/cms/cms_env.c +@@ -989,3 +989,23 @@ cms_pkey_get_ri_type(EVP_PKEY *pk) + } + return CMS_RECIPINFO_TRANS; + } ++ ++/* Some PKEYs (GOST) support different RecipientInfo types */ ++int cms_pkey_is_ri_type_supported(EVP_PKEY *pk, int ri_type) ++{ ++ int supportedRiType; ++ ++ if (pk->ameth != NULL && pk->ameth->pkey_ctrl != NULL) { ++ int i, r; ++ ++ i = pk->ameth->pkey_ctrl(pk, ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED, ri_type, &r); ++ if (i > 0) ++ return r; ++ } ++ ++ supportedRiType = cms_pkey_get_ri_type(pk); ++ if (supportedRiType < 0) ++ return 0; ++ ++ return (supportedRiType == ri_type); ++} +diff --git a/src/lib/libcrypto/cms/cms_lcl.h b/src/lib/libcrypto/cms/cms_lcl.h +index fdfd12160..d400f5028 100644 +--- a/src/lib/libcrypto/cms/cms_lcl.h ++++ b/src/lib/libcrypto/cms/cms_lcl.h +@@ -460,6 +460,7 @@ int cms_EnvelopedData_final(CMS_ContentInfo *cms, BIO *chain); + CMS_EnvelopedData *cms_get0_enveloped(CMS_ContentInfo *cms); + int cms_env_asn1_ctrl(CMS_RecipientInfo *ri, int cmd); + int cms_pkey_get_ri_type(EVP_PKEY *pk); ++int cms_pkey_is_ri_type_supported(EVP_PKEY *pk, int ri_type); + /* KARI routines */ + int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, + EVP_PKEY *pk, unsigned int flags); +diff --git a/src/lib/libcrypto/cms/cms_smime.c b/src/lib/libcrypto/cms/cms_smime.c +index 367810f40..d02ec5db1 100644 +--- a/src/lib/libcrypto/cms/cms_smime.c ++++ b/src/lib/libcrypto/cms/cms_smime.c +@@ -677,21 +677,19 @@ CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert) + { + STACK_OF(CMS_RecipientInfo) *ris; + CMS_RecipientInfo *ri; +- int i, r, ri_type; ++ int i, r; + int debug = 0, match_ri = 0; + + ris = CMS_get0_RecipientInfos(cms); + if (ris) + debug = cms->d.envelopedData->encryptedContentInfo->debug; +- ri_type = cms_pkey_get_ri_type(pk); +- if (ri_type == CMS_RECIPINFO_NONE) { +- CMSerror(CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); +- return 0; +- } + + for (i = 0; i < sk_CMS_RecipientInfo_num(ris); i++) { ++ int ri_type; ++ + ri = sk_CMS_RecipientInfo_value(ris, i); +- if (CMS_RecipientInfo_type(ri) != ri_type) ++ ri_type = CMS_RecipientInfo_type(ri); ++ if (!cms_pkey_is_ri_type_supported(pk, ri_type)) + continue; + match_ri = 1; + if (ri_type == CMS_RECIPINFO_AGREE) { +@@ -734,7 +732,7 @@ CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert) + } + } + /* If no cert, key transport and not debugging always return success */ +- if (cert == NULL && ri_type == CMS_RECIPINFO_TRANS && match_ri && !debug) { ++ if (cert == NULL && cms_pkey_get_ri_type(pk) == CMS_RECIPINFO_TRANS && match_ri && !debug) { + ERR_clear_error(); + return 1; + } +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 981351d76..48c7e7360 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -1036,6 +1036,7 @@ void EVP_PBE_cleanup(void); + #define ASN1_PKEY_CTRL_CMS_SIGN 0x5 + #define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 + #define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 ++#define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0x9 + + int EVP_PKEY_asn1_get_count(void); + const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +-- +2.17.1 + diff --git a/0057-evp-support-kuznyechik-kexp15-keywrap-algorithm.patch b/0057-evp-support-kuznyechik-kexp15-keywrap-algorithm.patch new file mode 100644 index 0000000..d2128b0 --- /dev/null +++ b/0057-evp-support-kuznyechik-kexp15-keywrap-algorithm.patch @@ -0,0 +1,210 @@ +From 4d039c645d00d539a40cf52ff3e7e776b8ae792a Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 18:09:14 +0300 +Subject: [PATCH 57/87] evp: support kuznyechik kexp15 keywrap algorithm + +Add support for kuznyechik kexp15 key wrapping algorithm +(draft-smyshlyaev-tls12-gost-suites, Section 8.2.1). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_kuznyechik.c | 143 +++++++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + 3 files changed, 145 insertions(+) + +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 90d0f7e20..482cc4e06 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -244,6 +244,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_kuznyechik_ctr()); + EVP_add_cipher(EVP_kuznyechik_ctr_acpkm()); + EVP_add_cipher(EVP_kuznyechik_ctr_acpkm_omac()); ++ EVP_add_cipher(EVP_kuznyechik_kexp15_wrap()); + EVP_add_cipher(EVP_kuznyechik_mgm()); + #endif + +diff --git a/src/lib/libcrypto/evp/e_kuznyechik.c b/src/lib/libcrypto/evp/e_kuznyechik.c +index c6b09173e..3c2a70aeb 100644 +--- a/src/lib/libcrypto/evp/e_kuznyechik.c ++++ b/src/lib/libcrypto/evp/e_kuznyechik.c +@@ -42,6 +42,13 @@ typedef struct { + unsigned char tag[16]; + } EVP_KUZNYECHIK_CTR_ACPKM_OMAC_CTX; + ++typedef struct { ++ KUZNYECHIK_KEY ks; ++ CMAC_CTX *cmac; ++ int iv_set; ++ int key_set; ++} EVP_KUZNYECHIK_KEXP15_WRAP_CTX; ++ + static int + kuznyechik_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) +@@ -342,6 +349,131 @@ kuznyechik_ctr_acpkm_omac_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params + return ret; + } + ++#define KEXP15_IV_OFFSET 24 ++#define KEXP15_KUZNYECHIK_IV_PART 8 ++ ++static int ++kuznyechik_kexp15_wrap_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_KUZNYECHIK_KEXP15_WRAP_CTX *c = ctx->cipher_data; ++ ++ if (iv) { ++ memset(ctx->iv, 0, sizeof(ctx->iv)); ++ memcpy(ctx->iv, iv + KEXP15_IV_OFFSET, KEXP15_KUZNYECHIK_IV_PART); ++ c->iv_set = 1; ++ if (c->key_set) ++ CMAC_Update(c->cmac, iv, KEXP15_KUZNYECHIK_IV_PART); ++ } ++ ++ if (key) { ++ c->key_set = 1; ++ const EVP_CIPHER *ciph = EVP_kuznyechik_cbc(); ++ int kl = EVP_CIPHER_key_length(ciph); ++ ++ if (!CMAC_Init(c->cmac, key, kl, ciph, NULL)) ++ return 0; ++ ++ if (iv != NULL) ++ CMAC_Update(c->cmac, iv, KEXP15_KUZNYECHIK_IV_PART); ++ else if (c->iv_set) ++ CMAC_Update(c->cmac, ctx->iv, KEXP15_KUZNYECHIK_IV_PART); ++ ++ Kuznyechik_set_key(&c->ks, key + kl, 1); ++ } ++ ++ return 1; ++} ++ ++static int ++kuznyechik_kexp15_wrap_cleanup(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_KUZNYECHIK_KEXP15_WRAP_CTX *c = ctx->cipher_data; ++ ++ CMAC_CTX_free(c->cmac); ++ c->iv_set = 0; ++ c->key_set = 0; ++ ++ return 1; ++} ++ ++static int ++kuznyechik_kexp15_wrap_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_KUZNYECHIK_KEXP15_WRAP_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_KEXP15_WRAP_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_INIT: ++ key->cmac = CMAC_CTX_new(); ++ key->iv_set = 0; ++ key->key_set = 0; ++ return 1; ++ default: ++ return kuznyechik_ctl(ctx, type, arg, ptr); ++ } ++} ++ ++static int ++kuznyechik_kexp15_wrap_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_KUZNYECHIK_KEXP15_WRAP_CTX *key = EVP_C_DATA(EVP_KUZNYECHIK_KEXP15_WRAP_CTX, ctx); ++ unsigned char tmp[EVP_MAX_BLOCK_LENGTH]; ++ size_t taglen = sizeof(tmp); ++ unsigned int bl = EVP_CIPHER_CTX_block_size(CMAC_CTX_get0_cipher_ctx(key->cmac)); ++ ++ if (in == NULL) ++ return 0; ++ ++ if (len % bl != 0) ++ return -1; ++ if (ctx->encrypt && len < bl) ++ return -1; ++ if (!ctx->encrypt && len < 2 *bl) ++ return -1; ++ if (out == NULL) { ++ if (ctx->encrypt) ++ return len + bl; ++ else ++ return len - bl; ++ } ++ ++ /* Do not reuse IV */ ++ key->iv_set = 0; ++ ++ if (ctx->encrypt) { ++ CMAC_Update(key->cmac, in, len); ++ CRYPTO_ctr128_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_encrypt); ++ CMAC_Final(key->cmac, tmp, &taglen); ++ CRYPTO_ctr128_encrypt(tmp, out + len, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_encrypt); ++ return len + taglen; ++ } else { ++ CRYPTO_ctr128_encrypt(in, out, len - bl, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_encrypt); ++ CMAC_Update(key->cmac, out, len - bl); ++ CMAC_Final(key->cmac, tmp, &taglen); ++ CRYPTO_ctr128_encrypt(tmp, tmp, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block128_f)Kuznyechik_encrypt); ++ return timingsafe_memcmp(in + len - bl, tmp, bl) ? -1 : len - bl; ++ } ++} ++ ++static int ++kuznyechik_kexp15_wrap_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* FIXME: set key agreement OID, we need to pass it from upper layer */ ++ return 1; ++} ++ ++static int ++kuznyechik_kexp15_wrap_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* No useful information in ASN.1 params */ ++ return 1; ++} ++ + IMPLEMENT_BLOCK_CIPHER(kuznyechik, ks, Kuznyechik, EVP_KUZNYECHIK_CTX, + NID_kuznyechik, 16, 32, 16, 128, 0, kuznyechik_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -375,6 +507,17 @@ BLOCK_CIPHER_def1(kuznyechik, ctr_acpkm_omac, ctr_acpkm_omac, CTR, EVP_KUZNYECHI + kuznyechik_ctr_acpkm_omac_get_asn1_params, + kuznyechik_ctr_acpkm_omac_ctl) + ++#define NID_kuznyechik_kexp15_wrap NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 ++ ++BLOCK_CIPHER_def1(kuznyechik, kexp15_wrap, kexp15_wrap, WRAP, EVP_KUZNYECHIK_KEXP15_WRAP_CTX, ++ NID_kuznyechik, 1, 64, 32, ++ EVP_CIPH_CUSTOM_IV | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT, ++ kuznyechik_kexp15_wrap_init_key, ++ kuznyechik_kexp15_wrap_cleanup, ++ kuznyechik_kexp15_wrap_set_asn1_params, ++ kuznyechik_kexp15_wrap_get_asn1_params, ++ kuznyechik_kexp15_wrap_ctl) ++ + #define EVP_AEAD_KUZNYECHIK_MGM_TAG_LEN 16 + + typedef struct { +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 48c7e7360..79ddcebc2 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -865,6 +865,7 @@ const EVP_CIPHER *EVP_kuznyechik_ofb(void); + const EVP_CIPHER *EVP_kuznyechik_ctr(void); + const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm(void); + const EVP_CIPHER *EVP_kuznyechik_ctr_acpkm_omac(void); ++const EVP_CIPHER *EVP_kuznyechik_kexp15_wrap(void); + const EVP_CIPHER *EVP_kuznyechik_mgm(void); + #endif + +-- +2.17.1 + diff --git a/0058-evp-support-magma-kexp15-keywrap-algorithm.patch b/0058-evp-support-magma-kexp15-keywrap-algorithm.patch new file mode 100644 index 0000000..97e69c0 --- /dev/null +++ b/0058-evp-support-magma-kexp15-keywrap-algorithm.patch @@ -0,0 +1,210 @@ +From d621042e04e5f28f76720df8491c97f1a4307670 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 18:09:14 +0300 +Subject: [PATCH 58/87] evp: support magma kexp15 keywrap algorithm + +Add support for magma kexp15 key wrapping algorithm +(draft-smyshlyaev-tls12-gost-suites, Section 8.2.1). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/c_all.c | 1 + + src/lib/libcrypto/evp/e_magma.c | 143 ++++++++++++++++++++++++++++++++ + src/lib/libcrypto/evp/evp.h | 1 + + 3 files changed, 145 insertions(+) + +diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c +index 482cc4e06..7afbb933e 100644 +--- a/src/lib/libcrypto/evp/c_all.c ++++ b/src/lib/libcrypto/evp/c_all.c +@@ -236,6 +236,7 @@ OpenSSL_add_all_ciphers_internal(void) + EVP_add_cipher(EVP_magma_ctr()); + EVP_add_cipher(EVP_magma_ctr_acpkm()); + EVP_add_cipher(EVP_magma_ctr_acpkm_omac()); ++ EVP_add_cipher(EVP_magma_kexp15_wrap()); + EVP_add_cipher(EVP_magma_mgm()); + EVP_add_cipher(EVP_kuznyechik_ecb()); + EVP_add_cipher(EVP_kuznyechik_cbc()); +diff --git a/src/lib/libcrypto/evp/e_magma.c b/src/lib/libcrypto/evp/e_magma.c +index ffaeda505..c9e26deb5 100644 +--- a/src/lib/libcrypto/evp/e_magma.c ++++ b/src/lib/libcrypto/evp/e_magma.c +@@ -42,6 +42,13 @@ typedef struct { + unsigned char tag[8]; + } EVP_MAGMA_CTR_ACPKM_OMAC_CTX; + ++typedef struct { ++ MAGMA_KEY ks; ++ CMAC_CTX *cmac; ++ int iv_set; ++ int key_set; ++} EVP_MAGMA_KEXP15_WRAP_CTX; ++ + static int + magma_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) +@@ -336,6 +343,131 @@ magma_ctr_acpkm_omac_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) + return ret; + } + ++#define KEXP15_IV_OFFSET 24 ++#define KEXP15_MAGMA_IV_PART 4 ++ ++static int ++magma_kexp15_wrap_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, ++ const unsigned char *iv, int enc) ++{ ++ EVP_MAGMA_KEXP15_WRAP_CTX *c = ctx->cipher_data; ++ ++ if (iv) { ++ memset(ctx->iv, 0, sizeof(ctx->iv)); ++ memcpy(ctx->iv, iv + KEXP15_IV_OFFSET, KEXP15_MAGMA_IV_PART); ++ c->iv_set = 1; ++ if (c->key_set) ++ CMAC_Update(c->cmac, iv, KEXP15_MAGMA_IV_PART); ++ } ++ ++ if (key) { ++ c->key_set = 1; ++ const EVP_CIPHER *ciph = EVP_magma_cbc(); ++ int kl = EVP_CIPHER_key_length(ciph); ++ ++ if (!CMAC_Init(c->cmac, key, kl, ciph, NULL)) ++ return 0; ++ ++ if (iv != NULL) ++ CMAC_Update(c->cmac, iv, KEXP15_MAGMA_IV_PART); ++ else if (c->iv_set) ++ CMAC_Update(c->cmac, ctx->iv, KEXP15_MAGMA_IV_PART); ++ ++ Magma_set_key(&c->ks, key + 32); ++ } ++ ++ return 1; ++} ++ ++static int ++magma_kexp15_wrap_cleanup(EVP_CIPHER_CTX *ctx) ++{ ++ EVP_MAGMA_KEXP15_WRAP_CTX *c = ctx->cipher_data; ++ ++ CMAC_CTX_free(c->cmac); ++ c->iv_set = 0; ++ c->key_set = 0; ++ ++ return 1; ++} ++ ++static int ++magma_kexp15_wrap_ctl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) ++{ ++ EVP_MAGMA_KEXP15_WRAP_CTX *key = EVP_C_DATA(EVP_MAGMA_KEXP15_WRAP_CTX, ctx); ++ ++ switch (type) { ++ case EVP_CTRL_INIT: ++ key->cmac = CMAC_CTX_new(); ++ key->iv_set = 0; ++ key->key_set = 0; ++ return 1; ++ default: ++ return magma_ctl(ctx, type, arg, ptr); ++ } ++} ++ ++static int ++magma_kexp15_wrap_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, ++ size_t len) ++{ ++ EVP_MAGMA_KEXP15_WRAP_CTX *key = EVP_C_DATA(EVP_MAGMA_KEXP15_WRAP_CTX, ctx); ++ unsigned char tmp[EVP_MAX_BLOCK_LENGTH]; ++ size_t taglen = sizeof(tmp); ++ unsigned int bl = EVP_CIPHER_CTX_block_size(CMAC_CTX_get0_cipher_ctx(key->cmac)); ++ ++ if (in == NULL) ++ return 0; ++ ++ if (len % bl != 0) ++ return -1; ++ if (ctx->encrypt && len < bl) ++ return -1; ++ if (!ctx->encrypt && len < 2 *bl) ++ return -1; ++ if (out == NULL) { ++ if (ctx->encrypt) ++ return len + bl; ++ else ++ return len - bl; ++ } ++ ++ /* Do not reuse IV */ ++ key->iv_set = 0; ++ ++ if (ctx->encrypt) { ++ CMAC_Update(key->cmac, in, len); ++ CRYPTO_ctr64_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_encrypt); ++ CMAC_Final(key->cmac, tmp, &taglen); ++ CRYPTO_ctr64_encrypt(tmp, out + len, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_encrypt); ++ return len + taglen; ++ } else { ++ CRYPTO_ctr64_encrypt(in, out, len - bl, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_encrypt); ++ CMAC_Update(key->cmac, out, len - bl); ++ CMAC_Final(key->cmac, tmp, &taglen); ++ CRYPTO_ctr64_encrypt(tmp, tmp, taglen, &key->ks, ctx->iv, ctx->buf, ++ &ctx->num, (block64_f)Magma_encrypt); ++ return timingsafe_memcmp(in + len - bl, tmp, bl) ? -1 : len - bl; ++ } ++} ++ ++static int ++magma_kexp15_wrap_set_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* FIXME: set key agreement OID, we need to pass it from upper layer */ ++ return 1; ++} ++ ++static int ++magma_kexp15_wrap_get_asn1_params(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params) ++{ ++ /* No useful information in ASN.1 params */ ++ return 1; ++} ++ + IMPLEMENT_BLOCK_CIPHER(magma, ks, Magma, EVP_MAGMA_CTX, + NID_magma, 8, 32, 8, 64, 0, magma_init_key, NULL, + EVP_CIPHER_set_asn1_iv, +@@ -369,6 +501,17 @@ BLOCK_CIPHER_def1(magma, ctr_acpkm_omac, ctr_acpkm_omac, CTR, EVP_MAGMA_CTR_ACPK + magma_ctr_acpkm_omac_get_asn1_params, + magma_ctr_acpkm_omac_ctl) + ++#define NID_magma_kexp15_wrap NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 ++ ++BLOCK_CIPHER_def1(magma, kexp15_wrap, kexp15_wrap, WRAP, EVP_MAGMA_KEXP15_WRAP_CTX, ++ NID_magma, 1, 64, 32, ++ EVP_CIPH_CUSTOM_IV | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT, ++ magma_kexp15_wrap_init_key, ++ magma_kexp15_wrap_cleanup, ++ magma_kexp15_wrap_set_asn1_params, ++ magma_kexp15_wrap_get_asn1_params, ++ magma_kexp15_wrap_ctl) ++ + #define EVP_AEAD_MAGMA_MGM_TAG_LEN 16 + + typedef struct { +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index 79ddcebc2..d5b78d8bd 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -857,6 +857,7 @@ const EVP_CIPHER *EVP_magma_ofb(void); + const EVP_CIPHER *EVP_magma_ctr(void); + const EVP_CIPHER *EVP_magma_ctr_acpkm(void); + const EVP_CIPHER *EVP_magma_ctr_acpkm_omac(void); ++const EVP_CIPHER *EVP_magma_kexp15_wrap(void); + const EVP_CIPHER *EVP_magma_mgm(void); + const EVP_CIPHER *EVP_kuznyechik_ecb(void); + const EVP_CIPHER *EVP_kuznyechik_cbc(void); +-- +2.17.1 + diff --git a/0059-gost-support-specifying-old-or-new-KEG-derivation-fo.patch b/0059-gost-support-specifying-old-or-new-KEG-derivation-fo.patch new file mode 100644 index 0000000..e5cb27e --- /dev/null +++ b/0059-gost-support-specifying-old-or-new-KEG-derivation-fo.patch @@ -0,0 +1,144 @@ +From cd0eec15fae54c7ca1b11109f85503b3cfb02217 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 21:27:04 +0300 +Subject: [PATCH 59/87] gost: support specifying old or new (KEG) derivation + format + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost.h | 4 ++ + src/lib/libcrypto/gost/gostr341001_pmeth.c | 68 +++++++++++++++++++++- + 2 files changed, 70 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 6a2b60670..694906b76 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -229,6 +229,7 @@ size_t GOST_KEY_get_size(const GOST_KEY * r); + #define EVP_PKEY_CTRL_GOST_SET_DIGEST (EVP_PKEY_ALG_CTRL+3) + #define EVP_PKEY_CTRL_GOST_GET_DIGEST (EVP_PKEY_ALG_CTRL+4) + #define EVP_PKEY_CTRL_GOST_ENC_FORMAT (EVP_PKEY_ALG_CTRL+5) ++#define EVP_PKEY_CTRL_GOST_DERIVE_FORMAT (EVP_PKEY_ALG_CTRL+6) + + #define GOST_SIG_FORMAT_SR_BE 0 + #define GOST_SIG_FORMAT_RS_LE 1 +@@ -237,6 +238,9 @@ size_t GOST_KEY_get_size(const GOST_KEY * r); + #define GOST_ENC_FORMAT_PSKEY_MAGMA 1 /* CMS, TLS CTR-OMAC, Magma-encoded */ + #define GOST_ENC_FORMAT_PSKEY_KUZNYECHIK 2 /* CMS, TLS CTR-OMAC, Kuznyechik-encoded */ + ++#define GOST_DERIVE_FORMAT_4490 0 /* RFC 4490, TLS CNT-IMIT */ ++#define GOST_DERIVE_FORMAT_KEG 1 /* CMS, TLS CTR-OMAC */ ++ + /* BEGIN ERROR CODES */ + /* The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index 07ca4d3a3..e21101ddc 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -137,6 +137,7 @@ struct gost_pmeth_data { + int peer_key_used; + int sig_format; + int enc_format; ++ int derive_format; + }; + + static int +@@ -468,8 +469,8 @@ err: + return ret; + } + +-int +-pkey_gost01_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) ++static int ++pkey_gost01_derive_4490(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) + { + /* + * Public key of peer in the ctx field peerkey +@@ -504,6 +505,38 @@ pkey_gost01_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) + return 1; + } + ++static int ++pkey_gost01_derive_keg(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) ++{ ++ /* ++ * Public key of peer in the ctx field peerkey ++ * Our private key in the ctx pkey ++ * ukm is in the algorithm specific context data ++ */ ++ EVP_PKEY *my_key = EVP_PKEY_CTX_get0_pkey(ctx); ++ EVP_PKEY *peer_key = EVP_PKEY_CTX_get0_peerkey(ctx); ++ struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); ++ ++ if (data->shared_ukm == NULL) { ++ GOSTerror(GOST_R_UKM_NOT_SET); ++ return 0; ++ } ++ ++ if (key == NULL) { ++ *keylen = 64; ++ return 64; ++ } ++ ++ if (!gost_keg(peer_key, my_key, data->digest_nid, data->shared_ukm, key)) { ++ GOSTerror(GOST_R_ERROR_COMPUTING_SHARED_KEY); ++ return 0; ++ } ++ ++ *keylen = 64; ++ ++ return 1; ++} ++ + int + pkey_gost01_encrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len, + const unsigned char *key, size_t key_len) +@@ -816,6 +849,21 @@ pkey_gost01_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *out_len, + } + } + ++int ++pkey_gost01_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) ++{ ++ struct gost_pmeth_data *pctx = EVP_PKEY_CTX_get_data(ctx); ++ ++ switch (pctx->derive_format) { ++ case GOST_DERIVE_FORMAT_4490: ++ return pkey_gost01_derive_4490(ctx, key, keylen); ++ case GOST_DERIVE_FORMAT_KEG: ++ return pkey_gost01_derive_keg(ctx, key, keylen); ++ default: ++ return -1; ++ } ++} ++ + static int + pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + { +@@ -911,6 +959,22 @@ pkey_gost01_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) + pctx->enc_format = p1; + return 1; + break; ++ case EVP_PKEY_CTRL_GOST_DERIVE_FORMAT: ++ switch (p1) { ++ case GOST_DERIVE_FORMAT_4490: ++ /* All keys are supported */ ++ break; ++ case GOST_DERIVE_FORMAT_KEG: ++ if (pctx->digest_nid != NID_id_tc26_gost3411_2012_256 && ++ pctx->digest_nid != NID_id_tc26_gost3411_2012_512) ++ return 0; ++ break; ++ default: ++ return 0; ++ } ++ pctx->derive_format = p1; ++ return 1; ++ break; + default: + return -2; + } +-- +2.17.1 + diff --git a/0060-cms-add-support-for-setting-KeyAgreement-UKM.patch b/0060-cms-add-support-for-setting-KeyAgreement-UKM.patch new file mode 100644 index 0000000..f767697 --- /dev/null +++ b/0060-cms-add-support-for-setting-KeyAgreement-UKM.patch @@ -0,0 +1,72 @@ +From 2cec22ef8cfe2df5aeb74861bf6ad4c621be6d02 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 9 Apr 2020 01:30:23 +0300 +Subject: [PATCH 60/87] cms: add support for setting KeyAgreement UKM + +Creating GOST KeyAgreement CMS files requires setting UKM. Add API +function to set it. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/cms/cms.h | 1 + + src/lib/libcrypto/cms/cms_kari.c | 17 +++++++++++++++++ + 3 files changed, 19 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index 3eda9f3bd..e5e7c435e 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -584,6 +584,7 @@ CMS_RecipientInfo_kari_get0_orig_id + CMS_RecipientInfo_kari_get0_reks + CMS_RecipientInfo_kari_orig_id_cmp + CMS_RecipientInfo_kari_set0_pkey ++CMS_RecipientInfo_kari_set0_ukm + CMS_RecipientInfo_kekri_get0_id + CMS_RecipientInfo_kekri_id_cmp + CMS_RecipientInfo_ktri_cert_cmp +diff --git a/src/lib/libcrypto/cms/cms.h b/src/lib/libcrypto/cms/cms.h +index 3c92be34f..fd2a5013a 100644 +--- a/src/lib/libcrypto/cms/cms.h ++++ b/src/lib/libcrypto/cms/cms.h +@@ -324,6 +324,7 @@ void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, ASN1_STRING **pcid, + #endif + int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); ++int CMS_RecipientInfo_kari_set0_ukm(CMS_RecipientInfo *ri, const unsigned char *d, int len); + STACK_OF(CMS_RecipientEncryptedKey) * + CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +diff --git a/src/lib/libcrypto/cms/cms_kari.c b/src/lib/libcrypto/cms/cms_kari.c +index 21e3ce825..2c3b50290 100644 +--- a/src/lib/libcrypto/cms/cms_kari.c ++++ b/src/lib/libcrypto/cms/cms_kari.c +@@ -82,6 +82,23 @@ CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, X509_ALGOR **palg, + return 1; + } + ++int ++CMS_RecipientInfo_kari_set0_ukm(CMS_RecipientInfo *ri, const unsigned char *d, int len) ++{ ++ if (ri->type != CMS_RECIPINFO_AGREE) { ++ CMSerror(CMS_R_NOT_KEY_AGREEMENT); ++ return 0; ++ } ++ if (ri->d.kari->ukm == NULL) ++ ri->d.kari->ukm = ASN1_STRING_new(); ++ if (ri->d.kari->ukm == NULL) { ++ CMSerror(ERR_R_MALLOC_FAILURE); ++ return 0; ++ } ++ ++ return ASN1_OCTET_STRING_set(ri->d.kari->ukm, d, len); ++} ++ + /* Retrieve recipient encrypted keys from a kari */ + + STACK_OF(CMS_RecipientEncryptedKey) * +-- +2.17.1 + diff --git a/0061-cms-select-proper-cipher-for-GOST-KeyAgreeement.patch b/0061-cms-select-proper-cipher-for-GOST-KeyAgreeement.patch new file mode 100644 index 0000000..8c3ea0f --- /dev/null +++ b/0061-cms-select-proper-cipher-for-GOST-KeyAgreeement.patch @@ -0,0 +1,41 @@ +From 9500ec100b69ef59889bbd9aadffd986a99f9a9b Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 9 Apr 2020 01:32:30 +0300 +Subject: [PATCH 61/87] cms: select proper cipher for GOST KeyAgreeement + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_kari.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/lib/libcrypto/cms/cms_kari.c b/src/lib/libcrypto/cms/cms_kari.c +index 2c3b50290..0082a7525 100644 +--- a/src/lib/libcrypto/cms/cms_kari.c ++++ b/src/lib/libcrypto/cms/cms_kari.c +@@ -414,6 +414,7 @@ cms_wrap_init(CMS_KeyAgreeRecipientInfo *kari, const EVP_CIPHER *cipher) + EVP_CIPHER_CTX *ctx = kari->ctx; + const EVP_CIPHER *kekcipher; + int keylen = EVP_CIPHER_key_length(cipher); ++ int type = EVP_CIPHER_type(cipher); + + /* If a suitable wrap algorithm is already set nothing to do */ + kekcipher = EVP_CIPHER_CTX_cipher(ctx); +@@ -437,6 +438,15 @@ cms_wrap_init(CMS_KeyAgreeRecipientInfo *kari, const EVP_CIPHER *cipher) + kekcipher = EVP_des_ede3_wrap(); + else + #endif ++#endif ++#ifndef OPENSSL_NO_GOST ++ if (type == NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm || ++ type == NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac) ++ kekcipher = EVP_magma_kexp15_wrap(); ++ else if (type == NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm || ++ type == NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac) ++ kekcipher = EVP_kuznyechik_kexp15_wrap(); ++ else + #endif + if (keylen <= 16) + kekcipher = EVP_aes_128_wrap(); +-- +2.17.1 + diff --git a/0062-cms-specify-originator-key-for-KeyAgreement-decoding.patch b/0062-cms-specify-originator-key-for-KeyAgreement-decoding.patch new file mode 100644 index 0000000..cf469dd --- /dev/null +++ b/0062-cms-specify-originator-key-for-KeyAgreement-decoding.patch @@ -0,0 +1,202 @@ +From 01486becb95b03f8e62ecdadd268d48ceb452fcc Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 21:28:10 +0300 +Subject: [PATCH 62/87] cms: specify originator key for KeyAgreement decoding + +Some CMS files with KeyAgreement will specify Originator using +IssuerAndSerialNumber or using SubjectKeyIdentifier. To decrypt these +files one needs originator certificate. Allow specifying it via +-certfile command line option. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/cms/cms.h | 2 ++ + src/lib/libcrypto/cms/cms_asn1.c | 2 ++ + src/lib/libcrypto/cms/cms_err.c | 1 + + src/lib/libcrypto/cms/cms_kari.c | 3 ++ + src/lib/libcrypto/cms/cms_lcl.h | 2 ++ + src/lib/libcrypto/cms/cms_smime.c | 53 +++++++++++++++++++++++++++++++ + src/usr.bin/openssl/cms.c | 13 ++++++++ + 8 files changed, 77 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index e5e7c435e..ec3506131 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -627,6 +627,7 @@ CMS_dataInit + CMS_data_create + CMS_decrypt + CMS_decrypt_set1_key ++CMS_decrypt_set1_originator + CMS_decrypt_set1_password + CMS_decrypt_set1_pkey + CMS_digest_create +diff --git a/src/lib/libcrypto/cms/cms.h b/src/lib/libcrypto/cms/cms.h +index fd2a5013a..0c62536ec 100644 +--- a/src/lib/libcrypto/cms/cms.h ++++ b/src/lib/libcrypto/cms/cms.h +@@ -198,6 +198,7 @@ int CMS_decrypt_set1_key(CMS_ContentInfo *cms, unsigned char *key, + size_t keylen, const unsigned char *id, size_t idlen); + int CMS_decrypt_set1_password(CMS_ContentInfo *cms, unsigned char *pass, + ssize_t passlen); ++int CMS_decrypt_set1_originator(CMS_ContentInfo *cms, X509 *cert); + + STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); + int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +@@ -525,6 +526,7 @@ int ERR_load_CMS_strings(void); + #define CMS_R_UNWRAP_FAILURE 180 + #define CMS_R_VERIFICATION_FAILURE 158 + #define CMS_R_WRAP_ERROR 159 ++#define CMS_R_NO_MATCHING_ORIGINATOR 160 + + #ifdef __cplusplus + } +diff --git a/src/lib/libcrypto/cms/cms_asn1.c b/src/lib/libcrypto/cms/cms_asn1.c +index ac53fec15..b3c02c07f 100644 +--- a/src/lib/libcrypto/cms/cms_asn1.c ++++ b/src/lib/libcrypto/cms/cms_asn1.c +@@ -713,9 +713,11 @@ cms_kari_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) + return 0; + EVP_CIPHER_CTX_set_flags(kari->ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW); + kari->pctx = NULL; ++ kari->originator_pkey = NULL; + } else if (operation == ASN1_OP_FREE_POST) { + EVP_PKEY_CTX_free(kari->pctx); + EVP_CIPHER_CTX_free(kari->ctx); ++ EVP_PKEY_free(kari->originator_pkey); + } + return 1; + } +diff --git a/src/lib/libcrypto/cms/cms_err.c b/src/lib/libcrypto/cms/cms_err.c +index 9b2abaa03..6b6112d46 100644 +--- a/src/lib/libcrypto/cms/cms_err.c ++++ b/src/lib/libcrypto/cms/cms_err.c +@@ -278,6 +278,7 @@ static ERR_STRING_DATA CMS_str_reasons[] = { + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_VERIFICATION_FAILURE), + "verification failure"}, + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_WRAP_ERROR), "wrap error"}, ++ {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_NO_MATCHING_ORIGINATOR), "no matching originator"}, + {0, NULL} + }; + +diff --git a/src/lib/libcrypto/cms/cms_kari.c b/src/lib/libcrypto/cms/cms_kari.c +index 0082a7525..145cc48dd 100644 +--- a/src/lib/libcrypto/cms/cms_kari.c ++++ b/src/lib/libcrypto/cms/cms_kari.c +@@ -231,6 +231,9 @@ CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk) + pctx = EVP_PKEY_CTX_new(pk, NULL); + if (!pctx || !EVP_PKEY_derive_init(pctx)) + goto err; ++ if (kari->originator_pkey) ++ if (EVP_PKEY_derive_set_peer(pctx, kari->originator_pkey) <= 0) ++ goto err; + kari->pctx = pctx; + return 1; + +diff --git a/src/lib/libcrypto/cms/cms_lcl.h b/src/lib/libcrypto/cms/cms_lcl.h +index d400f5028..fa6c7660c 100644 +--- a/src/lib/libcrypto/cms/cms_lcl.h ++++ b/src/lib/libcrypto/cms/cms_lcl.h +@@ -209,6 +209,8 @@ struct CMS_KeyAgreeRecipientInfo_st { + EVP_PKEY_CTX *pctx; + /* Cipher context for CEK wrapping */ + EVP_CIPHER_CTX *ctx; ++ /* Originator's public key */ ++ EVP_PKEY *originator_pkey; + }; + + struct CMS_OriginatorIdentifierOrKey_st { +diff --git a/src/lib/libcrypto/cms/cms_smime.c b/src/lib/libcrypto/cms/cms_smime.c +index d02ec5db1..1a067c149 100644 +--- a/src/lib/libcrypto/cms/cms_smime.c ++++ b/src/lib/libcrypto/cms/cms_smime.c +@@ -672,6 +672,59 @@ cms_kari_set1_pkey(CMS_ContentInfo *cms, CMS_RecipientInfo *ri, EVP_PKEY *pk, + return 0; + } + ++static int ++cms_kari_set1_peer(CMS_ContentInfo *cms, CMS_RecipientInfo *ri, ++ X509 *cert) ++{ ++ EVP_PKEY *pk = X509_get0_pubkey(cert); ++ if (!pk) { ++ CMSerror(CMS_R_ERROR_GETTING_PUBLIC_KEY); ++ return -1; ++ } ++ ++ EVP_PKEY_up_ref(pk); ++ ri->d.kari->originator_pkey = pk; ++ ++ return 1; ++} ++ ++int ++CMS_decrypt_set1_originator(CMS_ContentInfo *cms, X509 *cert) ++{ ++ STACK_OF(CMS_RecipientInfo) *ris; ++ CMS_RecipientInfo *ri; ++ int i, r, rv = 0; ++ int debug = 0; ++ ++ ris = CMS_get0_RecipientInfos(cms); ++ if (ris) ++ debug = cms->d.envelopedData->encryptedContentInfo->debug; ++ ++ for (i = 0; i < sk_CMS_RecipientInfo_num(ris); i++) { ++ int ri_type; ++ ++ ri = sk_CMS_RecipientInfo_value(ris, i); ++ ri_type = CMS_RecipientInfo_type(ri); ++ if (ri_type == CMS_RECIPINFO_AGREE && !CMS_RecipientInfo_kari_orig_id_cmp(ri, cert)) { ++ r = cms_kari_set1_peer(cms, ri, cert); ++ if (r > 0) ++ rv = 1; ++ if (r < 0) ++ return 0; ++ } ++ } ++ /* If not debugging always return success */ ++ if (!debug) { ++ ERR_clear_error(); ++ return 1; ++ } ++ ++ if (!rv) ++ CMSerror(CMS_R_NO_MATCHING_ORIGINATOR); ++ ++ return rv; ++} ++ + int + CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert) + { +diff --git a/src/usr.bin/openssl/cms.c b/src/usr.bin/openssl/cms.c +index cad855673..ada4c7746 100644 +--- a/src/usr.bin/openssl/cms.c ++++ b/src/usr.bin/openssl/cms.c +@@ -947,6 +947,19 @@ cms_main(int argc, char **argv) + if (flags & CMS_DEBUG_DECRYPT) + CMS_decrypt(cms, NULL, NULL, NULL, NULL, flags); + ++ if (other) { ++ int i; ++ X509 *x; ++ ++ for (i = 0; i < sk_X509_num(other); i++) { ++ x = sk_X509_value(other, i); ++ if (!CMS_decrypt_set1_originator(cms, x)) { ++ BIO_puts(bio_err,"Error setting CMS originator certificate\n"); ++ goto end; ++ } ++ } ++ } ++ + if (secret_key) { + if (!CMS_decrypt_set1_key(cms, secret_key, + secret_keylen, secret_keyid, secret_keyidlen)) { +-- +2.17.1 + diff --git a/0063-cms-support-specifying-originator-certificate-and-ke.patch b/0063-cms-support-specifying-originator-certificate-and-ke.patch new file mode 100644 index 0000000..9c94b3d --- /dev/null +++ b/0063-cms-support-specifying-originator-certificate-and-ke.patch @@ -0,0 +1,277 @@ +From 4f8119d9168bfe32b03d31673425423d466f365c Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 9 Apr 2020 03:04:33 +0300 +Subject: [PATCH 63/87] cms: support specifying originator certificate and key + during encryption + +LibreSSL supports using ephemeral public key as Originator. Add support +for using other Originator types. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms.h | 6 +++- + src/lib/libcrypto/cms/cms_env.c | 6 ++-- + src/lib/libcrypto/cms/cms_kari.c | 45 +++++++++++++++++++++++-- + src/lib/libcrypto/cms/cms_lcl.h | 3 +- + src/lib/libcrypto/cms/cms_smime.c | 3 +- + src/lib/libcrypto/ec/ec_ameth.c | 5 ++- + src/regress/lib/libcrypto/cms/cmstest.c | 2 +- + src/usr.bin/openssl/cms.c | 25 ++++++++++++-- + 8 files changed, 83 insertions(+), 12 deletions(-) + +diff --git a/src/lib/libcrypto/cms/cms.h b/src/lib/libcrypto/cms/cms.h +index 0c62536ec..4084fd7da 100644 +--- a/src/lib/libcrypto/cms/cms.h ++++ b/src/lib/libcrypto/cms/cms.h +@@ -125,6 +125,7 @@ int CMS_ContentInfo_print_ctx(BIO *out, CMS_ContentInfo *x, int indent, const AS + #define CMS_DEBUG_DECRYPT 0x20000 + #define CMS_KEY_PARAM 0x40000 + #define CMS_ASCIICRLF 0x80000 ++#define CMS_USE_ORIGINATOR_KEYID 0x100000 + + const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +@@ -188,7 +189,9 @@ int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + + CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, +- const EVP_CIPHER *cipher, unsigned int flags); ++ const EVP_CIPHER *cipher, ++ EVP_PKEY *originator_pkey, X509 *originator, ++ unsigned int flags); + + int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); +@@ -205,6 +208,7 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); + EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); + CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); + CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, ++ EVP_PKEY *originator_pkey, X509 *originator, + unsigned int flags); + int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); + int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c +index 17778a4fe..b51baf702 100644 +--- a/src/lib/libcrypto/cms/cms_env.c ++++ b/src/lib/libcrypto/cms/cms_env.c +@@ -238,7 +238,9 @@ cms_RecipientInfo_ktri_init(CMS_RecipientInfo *ri, X509 *recip, EVP_PKEY *pk, + */ + + CMS_RecipientInfo * +-CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags) ++CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, ++ EVP_PKEY *originator_pkey, X509 *originator, ++ unsigned int flags) + { + CMS_RecipientInfo *ri = NULL; + CMS_EnvelopedData *env; +@@ -267,7 +269,7 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags) + break; + + case CMS_RECIPINFO_AGREE: +- if (!cms_RecipientInfo_kari_init(ri, recip, pk, flags)) ++ if (!cms_RecipientInfo_kari_init(ri, recip, pk, originator, originator_pkey, flags)) + goto err; + break; + +diff --git a/src/lib/libcrypto/cms/cms_kari.c b/src/lib/libcrypto/cms/cms_kari.c +index 145cc48dd..5a6e4b820 100644 +--- a/src/lib/libcrypto/cms/cms_kari.c ++++ b/src/lib/libcrypto/cms/cms_kari.c +@@ -362,10 +362,33 @@ cms_kari_create_ephemeral_key(CMS_KeyAgreeRecipientInfo *kari, EVP_PKEY *pk) + return rv; + } + ++/* Set the key from originator */ ++static int ++cms_kari_set_originator_priv_key(CMS_KeyAgreeRecipientInfo *kari, EVP_PKEY *pk) ++{ ++ EVP_PKEY_CTX *pctx = NULL; ++ int rv = 0; ++ ++ pctx = EVP_PKEY_CTX_new(pk, NULL); ++ if (!pctx) ++ goto err; ++ if (EVP_PKEY_derive_init(pctx) <= 0) ++ goto err; ++ kari->pctx = pctx; ++ rv = 1; ++ ++ err: ++ if (!rv) ++ EVP_PKEY_CTX_free(pctx); ++ ++ return rv; ++} ++ + /* Initialise a kari based on passed certificate and key */ + + int + cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, EVP_PKEY *pk, ++ X509 *originator, EVP_PKEY *originator_pkey, + unsigned int flags) + { + CMS_KeyAgreeRecipientInfo *kari; +@@ -401,9 +424,25 @@ cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, EVP_PKEY *pk, + return 0; + } + +- /* Create ephemeral key */ +- if (!cms_kari_create_ephemeral_key(kari, pk)) +- return 0; ++ if (originator_pkey == NULL && originator == NULL) { ++ /* Create ephemeral key */ ++ if (!cms_kari_create_ephemeral_key(kari, pk)) ++ return 0; ++ } else { ++ CMS_OriginatorIdentifierOrKey *oik = ri->d.kari->originator; ++ ++ if (flags & CMS_USE_ORIGINATOR_KEYID) { ++ oik->type = CMS_OIK_KEYIDENTIFIER; ++ if (!cms_set1_keyid(&oik->d.subjectKeyIdentifier, originator)) ++ return 0; ++ } else { ++ oik->type = CMS_OIK_ISSUER_SERIAL; ++ if (!cms_set1_ias(&oik->d.issuerAndSerialNumber, originator)) ++ return 0; ++ } ++ if (!cms_kari_set_originator_priv_key(kari, originator_pkey)) ++ return 0; ++ } + + EVP_PKEY_up_ref(pk); + rek->pkey = pk; +diff --git a/src/lib/libcrypto/cms/cms_lcl.h b/src/lib/libcrypto/cms/cms_lcl.h +index fa6c7660c..e70c27e71 100644 +--- a/src/lib/libcrypto/cms/cms_lcl.h ++++ b/src/lib/libcrypto/cms/cms_lcl.h +@@ -465,7 +465,8 @@ int cms_pkey_get_ri_type(EVP_PKEY *pk); + int cms_pkey_is_ri_type_supported(EVP_PKEY *pk, int ri_type); + /* KARI routines */ + int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, +- EVP_PKEY *pk, unsigned int flags); ++ EVP_PKEY *pk, X509 *originator, EVP_PKEY *originator_pkey, ++ unsigned int flags); + int cms_RecipientInfo_kari_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + + /* PWRI routines */ +diff --git a/src/lib/libcrypto/cms/cms_smime.c b/src/lib/libcrypto/cms/cms_smime.c +index 1a067c149..dd1eb787b 100644 +--- a/src/lib/libcrypto/cms/cms_smime.c ++++ b/src/lib/libcrypto/cms/cms_smime.c +@@ -612,6 +612,7 @@ CMS_sign_receipt(CMS_SignerInfo *si, X509 *signcert, EVP_PKEY *pkey, + + CMS_ContentInfo * + CMS_encrypt(STACK_OF(X509) *certs, BIO *data, const EVP_CIPHER *cipher, ++ EVP_PKEY *originator_pkey, X509 *originator, + unsigned int flags) + { + CMS_ContentInfo *cms; +@@ -623,7 +624,7 @@ CMS_encrypt(STACK_OF(X509) *certs, BIO *data, const EVP_CIPHER *cipher, + goto merr; + for (i = 0; i < sk_X509_num(certs); i++) { + recip = sk_X509_value(certs, i); +- if (!CMS_add1_recipient_cert(cms, recip, flags)) { ++ if (!CMS_add1_recipient_cert(cms, recip, originator_pkey, originator, flags)) { + CMSerror(CMS_R_RECIPIENT_ERROR); + goto err; + } +diff --git a/src/lib/libcrypto/ec/ec_ameth.c b/src/lib/libcrypto/ec/ec_ameth.c +index 2e73bdd2f..a93a924bb 100644 +--- a/src/lib/libcrypto/ec/ec_ameth.c ++++ b/src/lib/libcrypto/ec/ec_ameth.c +@@ -832,7 +832,10 @@ ecdh_cms_encrypt(CMS_RecipientInfo *ri) + if (!CMS_RecipientInfo_kari_get0_orig_id(ri, &talg, &pubkey, + NULL, NULL, NULL)) + goto err; +- X509_ALGOR_get0(&aoid, NULL, NULL, talg); ++ if (talg == NULL) ++ aoid = NULL; ++ else ++ X509_ALGOR_get0(&aoid, NULL, NULL, talg); + + /* Is everything uninitialised? */ + if (aoid == OBJ_nid2obj(NID_undef)) { +diff --git a/src/regress/lib/libcrypto/cms/cmstest.c b/src/regress/lib/libcrypto/cms/cmstest.c +index 466583ecb..ca2619fc8 100644 +--- a/src/regress/lib/libcrypto/cms/cmstest.c ++++ b/src/regress/lib/libcrypto/cms/cmstest.c +@@ -143,7 +143,7 @@ test_cms_encrypt_decrypt() + if ((bio_mem = BIO_new_mem_buf(cms_msg, -1)) == NULL) + errx(1, "failed to create BIO for message"); + +- if ((ci = CMS_encrypt(certs, bio_mem, EVP_aes_256_cbc(), 0)) == NULL) { ++ if ((ci = CMS_encrypt(certs, bio_mem, EVP_aes_256_cbc(), NULL, NULL, 0)) == NULL) { + fprintf(stderr, "FAIL: CMS_encrypt returned NULL\n"); + ERR_print_errors_fp(stderr); + goto failure; +diff --git a/src/usr.bin/openssl/cms.c b/src/usr.bin/openssl/cms.c +index ada4c7746..a16987e93 100644 +--- a/src/usr.bin/openssl/cms.c ++++ b/src/usr.bin/openssl/cms.c +@@ -246,6 +246,8 @@ cms_main(int argc, char **argv) + flags |= CMS_BINARY; + else if (!strcmp(*args, "-keyid")) + flags |= CMS_USE_KEYID; ++ else if (!strcmp(*args, "-origkeyid")) ++ flags |= CMS_USE_ORIGINATOR_KEYID; + else if (!strcmp(*args, "-nosigs")) + flags |= CMS_NOSIGS; + else if (!strcmp(*args, "-no_content_verify")) +@@ -590,6 +592,7 @@ cms_main(int argc, char **argv) + BIO_printf(bio_err, "-signer file signer certificate file\n"); + BIO_printf(bio_err, "-recip file recipient certificate file for decryption\n"); + BIO_printf(bio_err, "-keyid use subject key identifier\n"); ++ BIO_printf(bio_err, "-origkeyid use originator's key identifier\n"); + BIO_printf(bio_err, "-in file input file\n"); + BIO_printf(bio_err, "-inform arg input format SMIME (default), PEM or DER\n"); + BIO_printf(bio_err, "-inkey file input private key (if not signer or recipient)\n"); +@@ -686,6 +689,9 @@ cms_main(int argc, char **argv) + if (operation == SMIME_DECRYPT) { + if (!keyfile) + keyfile = recipfile; ++ } else if (operation == SMIME_ENCRYPT) { ++ if (!keyfile) ++ keyfile = certfile; + } else if ((operation == SMIME_SIGN) || + (operation == SMIME_SIGN_RECEIPT)) { + if (!keyfile) +@@ -797,8 +803,23 @@ cms_main(int argc, char **argv) + cms = CMS_compress(in, -1, flags); + } else if (operation == SMIME_ENCRYPT) { + int i; ++ X509 *orig = NULL; ++ if (other) { ++ if (!key) { ++ BIO_puts(bio_err,"Must specify CMS originator private key\n"); ++ goto end; ++ } ++ if (sk_X509_num(other) != 1) { ++ BIO_puts(bio_err,"Must specify only CMS originator certificate\n"); ++ goto end; ++ } ++ orig = sk_X509_value(other, 0); ++ } else if (key) { ++ BIO_puts(bio_err,"Must specify only CMS originator certificate (-certfile)\n"); ++ goto end; ++ } + flags |= CMS_PARTIAL; +- cms = CMS_encrypt(NULL, in, cipher, flags); ++ cms = CMS_encrypt(NULL, in, cipher, key, orig, flags); + if (cms == NULL) + goto end; + for (i = 0; i < sk_X509_num(encerts); i++) { +@@ -812,7 +833,7 @@ cms_main(int argc, char **argv) + break; + } + } +- ri = CMS_add1_recipient_cert(cms, x, tflags); ++ ri = CMS_add1_recipient_cert(cms, x, key, orig, tflags); + if (ri == NULL) + goto end; + if (kparam != NULL) { +-- +2.17.1 + diff --git a/0064-gost-add-support-for-decoding-KeyAgreement-CMS-files.patch b/0064-gost-add-support-for-decoding-KeyAgreement-CMS-files.patch new file mode 100644 index 0000000..dd14d86 --- /dev/null +++ b/0064-gost-add-support-for-decoding-KeyAgreement-CMS-files.patch @@ -0,0 +1,411 @@ +From bb3f59aa72cd62dd7fb3f99a36d42b75110f2a94 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 8 Apr 2020 21:27:46 +0300 +Subject: [PATCH 64/87] gost: add support for decoding KeyAgreement CMS files + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gost.h | 1 + + src/lib/libcrypto/gost/gost_err.c | 1 + + src/lib/libcrypto/gost/gostr341001_ameth.c | 285 +++++++++++++++++++-- + 3 files changed, 263 insertions(+), 24 deletions(-) + +diff --git a/src/lib/libcrypto/gost/gost.h b/src/lib/libcrypto/gost/gost.h +index 694906b76..25beb4a8a 100644 +--- a/src/lib/libcrypto/gost/gost.h ++++ b/src/lib/libcrypto/gost/gost.h +@@ -301,6 +301,7 @@ void ERR_load_GOST_strings(void); + #define GOST_R_SIGNATURE_MISMATCH 121 + #define GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q 122 + #define GOST_R_UKM_NOT_SET 123 ++#define GOST_R_NO_ORIGINATOR_CERTIFICATE 124 + + #ifdef __cplusplus + } +diff --git a/src/lib/libcrypto/gost/gost_err.c b/src/lib/libcrypto/gost/gost_err.c +index e7111dd34..ea734897c 100644 +--- a/src/lib/libcrypto/gost/gost_err.c ++++ b/src/lib/libcrypto/gost/gost_err.c +@@ -96,6 +96,7 @@ static ERR_STRING_DATA GOST_str_reasons[] = { + {ERR_REASON(GOST_R_SIGNATURE_MISMATCH) ,"signature mismatch"}, + {ERR_REASON(GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q),"signature parts greater than q"}, + {ERR_REASON(GOST_R_UKM_NOT_SET) ,"ukm not set"}, ++ {ERR_REASON(GOST_R_NO_ORIGINATOR_CERTIFICATE), "originator certificate not provided"}, + {0, NULL} + }; + #endif +diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c +index 965b36237..2b59642fe 100644 +--- a/src/lib/libcrypto/gost/gostr341001_ameth.c ++++ b/src/lib/libcrypto/gost/gostr341001_ameth.c +@@ -263,25 +263,24 @@ pkey_bits_gost01(const EVP_PKEY *pk) + } + + static int +-pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub) ++pub_decode_gost01_int(EVP_PKEY *pk, X509_ALGOR *palg, const unsigned char *pubkey_buf, int pub_len) + { +- X509_ALGOR *palg = NULL; +- const unsigned char *pubkey_buf = NULL; ++ const ASN1_OBJECT *poid; + const unsigned char *p; +- ASN1_OBJECT *palgobj = NULL; +- int pub_len; + BIGNUM *X, *Y; + ASN1_OCTET_STRING *octet = NULL; + int len; + int ret; + int ptype = V_ASN1_UNDEF; + ASN1_STRING *pval = NULL; ++ int nid; + +- if (X509_PUBKEY_get0_param(&palgobj, &pubkey_buf, &pub_len, &palg, pub) +- == 0) ++ X509_ALGOR_get0(&poid, &ptype, (const void **)&pval, palg); ++ nid = OBJ_obj2nid(poid); ++ if (nid != NID_id_GostR3410_2001 && ++ nid != NID_id_tc26_gost3410_2012_256 && ++ nid != NID_id_tc26_gost3410_2012_512) + return 0; +- (void)EVP_PKEY_assign_GOST(pk, NULL); +- X509_ALGOR_get0(NULL, &ptype, (const void **)&pval, palg); + if (ptype != V_ASN1_SEQUENCE) { + GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); + return 0; +@@ -315,26 +314,44 @@ pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub) + } + + static int +-pub_encode_gost01(X509_PUBKEY *pub, const EVP_PKEY *pk) ++pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub) ++{ ++ X509_ALGOR *palg = NULL; ++ const unsigned char *pubkey_buf = NULL; ++ int pub_len; ++ ++ if (X509_PUBKEY_get0_param(NULL, &pubkey_buf, &pub_len, &palg, pub) == 0) ++ return 0; ++ (void)EVP_PKEY_assign_GOST(pk, NULL); ++ ++ return pub_decode_gost01_int(pk, palg, pubkey_buf, pub_len); ++} ++ ++static int ++pub_encode_gost01_int(const EVP_PKEY *pk, ASN1_OBJECT **palgobj, ASN1_STRING **pparams, unsigned char **pbuf, int *plen) + { + ASN1_OBJECT *algobj = NULL; + ASN1_OCTET_STRING *octet = NULL; + ASN1_STRING *params = NULL; +- void *pval = NULL; + unsigned char *buf = NULL, *sptr; + int key_size, ret = 0; + const EC_POINT *pub_key; + BIGNUM *X = NULL, *Y = NULL; + const GOST_KEY *ec = pk->pkey.gost; +- int ptype = V_ASN1_UNDEF; ++ ++ *palgobj = NULL; ++ *pparams = NULL; ++ *pbuf = NULL; ++ *plen = 0; + + algobj = OBJ_nid2obj(GostR3410_get_pk_digest(GOST_KEY_get_digest(ec))); ++ if (algobj == NULL) ++ return 0; ++ + if (pk->save_parameters) { + params = encode_gost01_algor_params(pk); + if (params == NULL) +- return 0; +- pval = params; +- ptype = V_ASN1_SEQUENCE; ++ goto err; + } + + key_size = GOST_KEY_get_size(ec); +@@ -375,21 +392,44 @@ pub_encode_gost01(X509_PUBKEY *pub, const EVP_PKEY *pk) + GOST_bn2le(X, sptr, key_size); + GOST_bn2le(Y, sptr + key_size, key_size); + +- BN_free(Y); +- BN_free(X); +- + ret = i2d_ASN1_OCTET_STRING(octet, &buf); +- ASN1_BIT_STRING_free(octet); + if (ret < 0) +- return 0; ++ goto err; + +- return X509_PUBKEY_set0_param(pub, algobj, ptype, pval, buf, ret); ++ *palgobj = algobj; ++ *pparams = params; ++ *pbuf = buf; ++ *plen = ret; ++ ++ return 1; + + err: + BN_free(Y); + BN_free(X); + ASN1_BIT_STRING_free(octet); + ASN1_STRING_free(params); ++ ASN1_OBJECT_free(algobj); ++ return 0; ++} ++ ++static int ++pub_encode_gost01(X509_PUBKEY *pub, const EVP_PKEY *pk) ++{ ++ ASN1_OBJECT *algobj = NULL; ++ ASN1_STRING *params = NULL; ++ unsigned char *buf = NULL; ++ int len; ++ ++ if (pub_encode_gost01_int(pk, &algobj, ¶ms, &buf, &len) <= 0) ++ return 0; ++ ++ if (X509_PUBKEY_set0_param(pub, algobj, V_ASN1_SEQUENCE, params, buf, len) == 1) ++ return 1; ++ ++ free(buf); ++ ASN1_STRING_free(params); ++ ASN1_OBJECT_free(algobj); ++ + return 0; + } + +@@ -890,6 +930,89 @@ int gost01_smime_encrypt(EVP_PKEY_CTX *ctx, X509_ALGOR *alg, int enc_nid) + } + + #ifndef OPENSSL_NO_CMS ++static int ++gost01_cms_set_peerkey(EVP_PKEY_CTX *pctx, X509_ALGOR *alg, ++ ASN1_BIT_STRING *pubkey) ++{ ++ int rv = 0; ++ EVP_PKEY *pkpeer = NULL; ++ int ret; ++ ++ pkpeer = EVP_PKEY_new(); ++ if (pkpeer == NULL) ++ return 0; ++ (void)EVP_PKEY_assign_GOST(pkpeer, NULL); ++ ++ ret = pub_decode_gost01_int(pkpeer, alg, pubkey->data, pubkey->length); ++ if (ret <= 0) ++ goto err; ++ ++ if (EVP_PKEY_derive_set_peer(pctx, pkpeer) > 0) ++ rv = 1; ++ err: ++ ++ EVP_PKEY_free(pkpeer); ++ return rv; ++} ++ ++static int ++gost01_cms_decrypt_kari(EVP_PKEY_CTX *pctx, CMS_RecipientInfo *ri) ++{ ++ EVP_CIPHER_CTX *kekctx; ++ X509_ALGOR *alg; ++ ASN1_OCTET_STRING *ukm; ++ const EVP_CIPHER *kekcipher; ++ ++ if (!CMS_RecipientInfo_kari_get0_alg(ri, &alg, &ukm)) ++ return 0; ++ ++ if (ukm == NULL) ++ return 0; ++ ++ if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, ++ EVP_PKEY_CTRL_SET_IV, ukm->length, ukm->data) < 0) ++ return 0; ++ ++ if (!EVP_PKEY_CTX_get0_peerkey(pctx)) { ++ ASN1_BIT_STRING *pubkey; ++ X509_ALGOR *pkalg; ++ ++ if (!CMS_RecipientInfo_kari_get0_orig_id(ri, &pkalg, &pubkey, ++ NULL, NULL, NULL)) ++ return 0; ++ if (!pkalg || !pubkey) { ++ GOSTerror(GOST_R_NO_ORIGINATOR_CERTIFICATE); ++ return 0; ++ } ++ if (!gost01_cms_set_peerkey(pctx, pkalg, pubkey)) { ++ GOSTerror(GOST_R_INCOMPATIBLE_PEER_KEY); ++ return 0; ++ } ++ } ++ ++ if (alg->parameter->type != V_ASN1_SEQUENCE) ++ return 0; ++ ++ kekctx = CMS_RecipientInfo_kari_get0_ctx(ri); ++ if (!kekctx) ++ return 0; ++ ++ kekcipher = EVP_get_cipherbyobj(alg->algorithm); ++ if (!kekcipher || EVP_CIPHER_mode(kekcipher) != EVP_CIPH_WRAP_MODE) ++ return 0; ++ if (!EVP_EncryptInit_ex(kekctx, kekcipher, NULL, NULL, ukm->data)) ++ return 0; ++ ++ if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, ++ EVP_PKEY_CTRL_GOST_DERIVE_FORMAT, ++ GOST_DERIVE_FORMAT_KEG, NULL) <= 0) { ++ GOSTerror(ERR_R_INTERNAL_ERROR); ++ return 0; ++ } ++ ++ return 1; ++} ++ + static int + gost01_cms_decrypt(CMS_RecipientInfo *ri) + { +@@ -899,12 +1022,116 @@ gost01_cms_decrypt(CMS_RecipientInfo *ri) + pkctx = CMS_RecipientInfo_get0_pkey_ctx(ri); + if (pkctx == NULL) + return 0; ++ switch (CMS_RecipientInfo_type(ri)) { ++ case CMS_RECIPINFO_TRANS: ++ if (!CMS_RecipientInfo_ktri_get0_algs(ri, NULL, NULL, &cmsalg)) ++ return 0; ++ return gost01_smime_decrypt(pkctx, cmsalg); ++ case CMS_RECIPINFO_AGREE: ++ return gost01_cms_decrypt_kari(pkctx, ri); ++ default: ++ GOSTerror(ERR_R_INTERNAL_ERROR); ++ return 0; ++ } ++} ++ ++static int ++gost01_cms_encrypt_kari(CMS_RecipientInfo *ri) ++{ ++ EVP_PKEY_CTX *pctx; ++ EVP_PKEY *pkey; ++ EVP_CIPHER_CTX *ctx; ++ X509_ALGOR *talg, *wrap_alg = NULL; ++ ASN1_BIT_STRING *pubkey; ++ int wrap_nid; ++ unsigned char iv[32]; ++ ASN1_STRING *params; ++ ++ pctx = CMS_RecipientInfo_get0_pkey_ctx(ri); ++ if (!pctx) ++ return 0; + +- if (!CMS_RecipientInfo_ktri_get0_algs(ri, NULL, NULL, &cmsalg)) ++ /* Get ephemeral key */ ++ pkey = EVP_PKEY_CTX_get0_pkey(pctx); ++ if (pkey == NULL) + return 0; + +- return gost01_smime_decrypt(pkctx, cmsalg); ++ if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, ++ EVP_PKEY_CTRL_GOST_DERIVE_FORMAT, ++ GOST_DERIVE_FORMAT_KEG, NULL) <= 0) { ++ GOSTerror(ERR_R_INTERNAL_ERROR); ++ return 0; ++ } ++ ++ if (!CMS_RecipientInfo_kari_get0_orig_id(ri, &talg, &pubkey, ++ NULL, NULL, NULL)) ++ goto err; ++ ++ /* Ephemeral key */ ++ if (talg) { ++ const ASN1_OBJECT *aoid = NULL; ++ ++ X509_ALGOR_get0(&aoid, NULL, NULL, talg); ++ ++ /* Is everything uninitialised? */ ++ if (aoid == OBJ_nid2obj(NID_undef)) { ++ ASN1_OBJECT *algobj = NULL; ++ ASN1_STRING *params = NULL; ++ unsigned char *buf = NULL; ++ int len; ++ ++ if (pub_encode_gost01_int(pkey, &algobj, ¶ms, &buf, &len) <= 0) ++ return 0; ++ ++ X509_ALGOR_set0(talg, algobj, V_ASN1_SEQUENCE, params); ++ ASN1_STRING_set0(pubkey, buf, len); ++ } ++ } ++ ++ /* Get wrap NID */ ++ ctx = CMS_RecipientInfo_kari_get0_ctx(ri); ++ wrap_nid = EVP_CIPHER_CTX_type(ctx); ++ ++ /* Package wrap algorithm in an AlgorithmIdentifier */ ++ ++ if (!CMS_RecipientInfo_kari_get0_alg(ri, &wrap_alg, NULL)) ++ goto err; ++ if (wrap_alg == NULL) ++ goto err; ++ if ((params = encode_gost01_kexp_params(pkey)) == NULL) ++ goto err; ++ X509_ALGOR_set0(wrap_alg, OBJ_nid2obj(wrap_nid), V_ASN1_SEQUENCE, params); ++ ++ arc4random_buf(iv, sizeof(iv)); ++ if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, ++ EVP_PKEY_CTRL_SET_IV, sizeof(iv), iv) < 0) ++ goto err; ++ ++ if (!EVP_CipherInit_ex(ctx, NULL, NULL, NULL, iv, -1)) ++ goto err; ++ ++ if (!CMS_RecipientInfo_kari_set0_ukm(ri, iv, sizeof(iv))) ++ goto err; ++ ++ return 1; ++err: ++ return 0; ++} ++ ++static int ++gost01_cms_encrypt(CMS_RecipientInfo *ri) ++{ ++ switch (CMS_RecipientInfo_type(ri)) { ++ case CMS_RECIPINFO_TRANS: ++ /* do nothing, handled in pmeth */ ++ return 1; ++ case CMS_RECIPINFO_AGREE: ++ return gost01_cms_encrypt_kari(ri); ++ default: ++ return 0; ++ } + } ++ + #endif + + static int +@@ -921,9 +1148,19 @@ pkey_ctrl_gost01(EVP_PKEY *pkey, int op, long arg1, void *arg2) + &alg1, &alg2); + break; + case ASN1_PKEY_CTRL_CMS_ENVELOPE: +- if (arg1 == 1) ++ if (arg1 == 0) ++ return gost01_cms_encrypt(arg2); ++ else if (arg1 == 1) + return gost01_cms_decrypt(arg2); + break; ++ case ASN1_PKEY_CTRL_CMS_RI_TYPE: ++ if (arg2 != NULL) ++ *(int *)arg2 = CMS_RECIPINFO_TRANS; /* default */ ++ break; ++ case ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED: ++ if (arg2 != NULL) ++ *(int *)arg2 = (arg1 == CMS_RECIPINFO_TRANS || arg1 == CMS_RECIPINFO_AGREE); ++ break; + #endif + case ASN1_PKEY_CTRL_PKCS7_SIGN: + if (arg1 == 0) +-- +2.17.1 + diff --git a/0065-cms-autoguess-preferred-RecipientInfo-type.patch b/0065-cms-autoguess-preferred-RecipientInfo-type.patch new file mode 100644 index 0000000..ad910d8 --- /dev/null +++ b/0065-cms-autoguess-preferred-RecipientInfo-type.patch @@ -0,0 +1,45 @@ +From 2233c8980d35abd789e7fa0ba163bd1f10915f11 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 9 Apr 2020 03:16:06 +0300 +Subject: [PATCH 65/87] cms: autoguess preferred RecipientInfo type + +If caller has specified originator certificate and private keys, try +using KeyAgreeRecipientInfo, otherwise select pkey-preferred RI type. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/cms/cms_env.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c +index b51baf702..8e025aa1d 100644 +--- a/src/lib/libcrypto/cms/cms_env.c ++++ b/src/lib/libcrypto/cms/cms_env.c +@@ -245,6 +245,7 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, + CMS_RecipientInfo *ri = NULL; + CMS_EnvelopedData *env; + EVP_PKEY *pk = NULL; ++ int ri_type; + + env = cms_get0_enveloped(cms); + if (!env) +@@ -261,7 +262,13 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, + goto err; + } + +- switch (cms_pkey_get_ri_type(pk)) { ++ if (originator && originator_pkey && ++ cms_pkey_is_ri_type_supported(pk, CMS_RECIPINFO_AGREE)) ++ ri_type = CMS_RECIPINFO_AGREE; ++ else ++ ri_type = cms_pkey_get_ri_type(pk); ++ ++ switch (ri_type) { + + case CMS_RECIPINFO_TRANS: + if (!cms_RecipientInfo_ktri_init(ri, recip, pk, flags)) +-- +2.17.1 + diff --git a/0066-Fix-S-Box-used-for-CipherKeyExchange-message-in-GOST.patch b/0066-Fix-S-Box-used-for-CipherKeyExchange-message-in-GOST.patch new file mode 100644 index 0000000..a430711 --- /dev/null +++ b/0066-Fix-S-Box-used-for-CipherKeyExchange-message-in-GOST.patch @@ -0,0 +1,41 @@ +From 7d13acb589fd972be4522b5742e1a8a58349defd Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Thu, 19 Mar 2020 20:41:14 +0300 +Subject: [PATCH 66/87] Fix S-Box used for CipherKeyExchange message in GOST + ciphersuites + +GOST TLS CipherSuites are oververbose. One of implementations ignored +OID of the s-box that was sent as a part of the messages and used +calculated one, which differs from the one used by LibreSSL. Let +LibreSSL code also calculate proper S-Box and use it during key +exchange. + +See https://github.com/libressl-portable/portable/issues/396 + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gostr341001_pmeth.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index e21101ddc..2813f312c 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -548,7 +548,13 @@ pkey_gost01_encrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len + int ret = 0; + int key_is_ephemeral; + EVP_PKEY *sec_key = EVP_PKEY_CTX_get0_peerkey(pctx); +- int nid = NID_id_Gost28147_89_CryptoPro_A_ParamSet; ++ int nid; ++ ++ if (GOST_KEY_get_digest(pubk->pkey.gost) == ++ NID_id_GostR3411_94_CryptoProParamSet) ++ nid = NID_id_Gost28147_89_CryptoPro_A_ParamSet; ++ else ++ nid = NID_id_tc26_gost_28147_param_Z; + + if (data->shared_ukm != NULL && data->shared_ukm_len >= 8) { + memcpy(ukm, data->shared_ukm, 8); +-- +2.17.1 + diff --git a/0067-gost-pmeth-check-that-result-of-data-encryption-woul.patch b/0067-gost-pmeth-check-that-result-of-data-encryption-woul.patch new file mode 100644 index 0000000..0aad90a --- /dev/null +++ b/0067-gost-pmeth-check-that-result-of-data-encryption-woul.patch @@ -0,0 +1,46 @@ +From acd13e2112724fee3e495cf866b4b19ebf64db91 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 17 Apr 2020 04:09:25 +0300 +Subject: [PATCH 67/87] gost: pmeth: check that result of data encryption would + fit + +Check that the result of PKEY_ENCRYPT operation won't overflow provided data +buffer. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/gost/gostr341001_pmeth.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c +index 2813f312c..5f99cf8e1 100644 +--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c ++++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c +@@ -549,6 +549,7 @@ pkey_gost01_encrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len + int key_is_ephemeral; + EVP_PKEY *sec_key = EVP_PKEY_CTX_get0_peerkey(pctx); + int nid; ++ int tmp_len; + + if (GOST_KEY_get_digest(pubk->pkey.gost) == + NID_id_GostR3411_94_CryptoProParamSet) +@@ -635,7 +636,15 @@ pkey_gost01_encrypt_4490(EVP_PKEY_CTX *pctx, unsigned char *out, size_t *out_len + goto err; + } + } +- if ((*out_len = i2d_GOST_KEY_TRANSPORT(gkt, out ? &out : NULL)) > 0) ++ tmp_len = i2d_GOST_KEY_TRANSPORT(gkt, NULL); ++ if (!out) { ++ *out_len = tmp_len; ++ } else { ++ if (*out_len < tmp_len) ++ goto err; ++ *out_len = i2d_GOST_KEY_TRANSPORT(gkt, &out); ++ } ++ if (out_len > 0) + ret = 1; + GOST_KEY_TRANSPORT_free(gkt); + return ret; +-- +2.17.1 + diff --git a/0068-ssl_sigalgs-select-proper-default-algorithm-for-GOST.patch b/0068-ssl_sigalgs-select-proper-default-algorithm-for-GOST.patch new file mode 100644 index 0000000..5a8fac0 --- /dev/null +++ b/0068-ssl_sigalgs-select-proper-default-algorithm-for-GOST.patch @@ -0,0 +1,146 @@ +From d0051e736d9d643dbd3977b472bf011eb4f37cb3 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 27 Mar 2020 18:25:51 +0300 +Subject: [PATCH 68/87] ssl_sigalgs: select proper default algorithm for GOST + pkeys + +Return default sigalg algorithm depending in the default digest +algorithm (GOST94 or Streebog) selected by pkey. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl_sigalgs.c | 43 ++++++++++++++++++++-- + src/regress/lib/libssl/tlsext/tlsexttest.c | 10 +++-- + 2 files changed, 45 insertions(+), 8 deletions(-) + +diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c +index 6378ec8c0..224c01af0 100644 +--- a/src/lib/libssl/ssl_sigalgs.c ++++ b/src/lib/libssl/ssl_sigalgs.c +@@ -40,7 +40,7 @@ const struct ssl_sigalg sigalgs[] = { + { + .value = SIGALG_GOSTR12_512_STREEBOG_512, + .md = EVP_streebog512, +- .key_type = EVP_PKEY_GOSTR12_512, ++ .key_type = EVP_PKEY_GOSTR01, + }, + #endif + { +@@ -69,7 +69,7 @@ const struct ssl_sigalg sigalgs[] = { + { + .value = SIGALG_GOSTR12_256_STREEBOG_256, + .md = EVP_streebog256, +- .key_type = EVP_PKEY_GOSTR12_256, ++ .key_type = EVP_PKEY_GOSTR01, + }, + { + .value = SIGALG_GOSTR01_GOST94, +@@ -170,6 +170,11 @@ uint16_t tls12_sigalgs[] = { + SIGALG_ECDSA_SECP256R1_SHA256, + SIGALG_RSA_PKCS1_SHA1, /* XXX */ + SIGALG_ECDSA_SHA1, /* XXX */ ++#ifndef OPENSSL_NO_GOST ++ SIGALG_GOSTR12_512_STREEBOG_512, ++ SIGALG_GOSTR12_256_STREEBOG_256, ++ SIGALG_GOSTR01_GOST94, ++#endif + }; + size_t tls12_sigalgs_len = (sizeof(tls12_sigalgs) / sizeof(tls12_sigalgs[0])); + +@@ -254,9 +259,39 @@ ssl_sigalg_pkey_ok(const struct ssl_sigalg *sigalg, EVP_PKEY *pkey, + } + } + ++#ifndef OPENSSL_NO_GOST ++ if (pkey->type == EVP_PKEY_GOSTR01) { ++ int nid; ++ ++ if (!EVP_PKEY_get_default_digest_nid(pkey, &nid)) ++ return 0; ++ ++ return EVP_MD_type(sigalg->md()) == nid; ++ } ++#endif ++ + return 1; + } + ++#ifndef OPENSSL_NO_GOST ++static const struct ssl_sigalg * ++ssl_sigalg_gost_select(SSL *s, EVP_PKEY *pkey) ++{ ++ int nid = NID_id_GostR3411_94; ++ ++ if (!EVP_PKEY_get_default_digest_nid(pkey, &nid)) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ /* fallthrough, return GOST94 */ ++ } ++ if (nid == NID_id_tc26_gost3411_2012_256) ++ return ssl_sigalg_lookup(SIGALG_GOSTR12_256_STREEBOG_256); ++ else if (nid == NID_id_tc26_gost3411_2012_512) ++ return ssl_sigalg_lookup(SIGALG_GOSTR12_512_STREEBOG_512); ++ else ++ return ssl_sigalg_lookup(SIGALG_GOSTR01_GOST94); ++} ++#endif ++ + const struct ssl_sigalg * + ssl_sigalg_select(SSL *s, EVP_PKEY *pkey) + { +@@ -280,7 +315,7 @@ ssl_sigalg_select(SSL *s, EVP_PKEY *pkey) + return ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); + #ifndef OPENSSL_NO_GOST + case EVP_PKEY_GOSTR01: +- return ssl_sigalg_lookup(SIGALG_GOSTR01_GOST94); ++ return ssl_sigalg_gost_select(s, pkey); + #endif + } + SSLerror(s, SSL_R_UNKNOWN_PKEY_TYPE); +@@ -300,7 +335,7 @@ ssl_sigalg_select(SSL *s, EVP_PKEY *pkey) + return ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); + #ifndef OPENSSL_NO_GOST + case EVP_PKEY_GOSTR01: +- return ssl_sigalg_lookup(SIGALG_GOSTR01_GOST94); ++ return ssl_sigalg_gost_select(s, pkey); + #endif + } + SSLerror(s, SSL_R_UNKNOWN_PKEY_TYPE); +diff --git a/src/regress/lib/libssl/tlsext/tlsexttest.c b/src/regress/lib/libssl/tlsext/tlsexttest.c +index fe500a9d6..58955cd78 100644 +--- a/src/regress/lib/libssl/tlsext/tlsexttest.c ++++ b/src/regress/lib/libssl/tlsext/tlsexttest.c +@@ -1506,9 +1506,10 @@ test_tlsext_ri_server(void) + */ + + static unsigned char tlsext_sigalgs_client[] = { +- 0x00, 0x16, 0x08, 0x06, 0x06, 0x01, 0x06, 0x03, ++ 0x00, 0x1c, 0x08, 0x06, 0x06, 0x01, 0x06, 0x03, + 0x08, 0x05, 0x05, 0x01, 0x05, 0x03, 0x08, 0x04, + 0x04, 0x01, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, ++ 0xef, 0xef, 0xee, 0xee, 0xed, 0xed, + }; + + static int +@@ -2713,13 +2714,14 @@ test_tlsext_srtp_server(void) + #endif /* OPENSSL_NO_SRTP */ + + unsigned char tlsext_clienthello_default[] = { +- 0x00, 0x32, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, ++ 0x00, 0x38, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, + 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x1d, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x23, 0x00, 0x00, +- 0x00, 0x0d, 0x00, 0x18, 0x00, 0x16, 0x08, 0x06, ++ 0x00, 0x0d, 0x00, 0x1e, 0x00, 0x1c, 0x08, 0x06, + 0x06, 0x01, 0x06, 0x03, 0x08, 0x05, 0x05, 0x01, + 0x05, 0x03, 0x08, 0x04, 0x04, 0x01, 0x04, 0x03, +- 0x02, 0x01, 0x02, 0x03, ++ 0x02, 0x01, 0x02, 0x03, 0xef, 0xef, 0xee, 0xee, ++ 0xed, 0xed, + }; + + unsigned char tlsext_clienthello_disabled[] = {}; +-- +2.17.1 + diff --git a/0069-ssl-add-support-for-IANA-allocated-GOST-sigalgs-valu.patch b/0069-ssl-add-support-for-IANA-allocated-GOST-sigalgs-valu.patch new file mode 100644 index 0000000..48f1b4a --- /dev/null +++ b/0069-ssl-add-support-for-IANA-allocated-GOST-sigalgs-valu.patch @@ -0,0 +1,109 @@ +From d7cd5bfb3c079b3df01fa1c67cabc6194e4c31ce Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 28 Mar 2020 22:19:05 +0300 +Subject: [PATCH 69/87] ssl: add support for IANA-allocated GOST sigalgs values + +Add support for IANA-allocated GOST SignatureAlgorithms values. Values +predating IANA allocation are left in place because they are still used +by deployed products. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl_sigalgs.c | 12 ++++++++++++ + src/lib/libssl/ssl_sigalgs.h | 2 ++ + src/regress/lib/libssl/tlsext/tlsexttest.c | 13 +++++++------ + 3 files changed, 21 insertions(+), 6 deletions(-) + +diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c +index 224c01af0..ffa6278eb 100644 +--- a/src/lib/libssl/ssl_sigalgs.c ++++ b/src/lib/libssl/ssl_sigalgs.c +@@ -37,6 +37,11 @@ const struct ssl_sigalg sigalgs[] = { + .curve_nid = NID_secp521r1, + }, + #ifndef OPENSSL_NO_GOST ++ { ++ .value = SIGALG_GOSTR12_512, ++ .md = EVP_streebog512, ++ .key_type = EVP_PKEY_GOSTR01, ++ }, + { + .value = SIGALG_GOSTR12_512_STREEBOG_512, + .md = EVP_streebog512, +@@ -66,6 +71,11 @@ const struct ssl_sigalg sigalgs[] = { + .curve_nid = NID_X9_62_prime256v1, + }, + #ifndef OPENSSL_NO_GOST ++ { ++ .value = SIGALG_GOSTR12_256, ++ .md = EVP_streebog256, ++ .key_type = EVP_PKEY_GOSTR01, ++ }, + { + .value = SIGALG_GOSTR12_256_STREEBOG_256, + .md = EVP_streebog256, +@@ -171,7 +181,9 @@ uint16_t tls12_sigalgs[] = { + SIGALG_RSA_PKCS1_SHA1, /* XXX */ + SIGALG_ECDSA_SHA1, /* XXX */ + #ifndef OPENSSL_NO_GOST ++ SIGALG_GOSTR12_512, + SIGALG_GOSTR12_512_STREEBOG_512, ++ SIGALG_GOSTR12_256, + SIGALG_GOSTR12_256_STREEBOG_256, + SIGALG_GOSTR01_GOST94, + #endif +diff --git a/src/lib/libssl/ssl_sigalgs.h b/src/lib/libssl/ssl_sigalgs.h +index 13a3597fb..5fe3fc3bb 100644 +--- a/src/lib/libssl/ssl_sigalgs.h ++++ b/src/lib/libssl/ssl_sigalgs.h +@@ -42,6 +42,8 @@ __BEGIN_HIDDEN_DECLS + #define SIGALG_RSA_PSS_PSS_SHA256 0x0809 + #define SIGALG_RSA_PSS_PSS_SHA384 0x080a + #define SIGALG_RSA_PSS_PSS_SHA512 0x080b ++#define SIGALG_GOSTR12_256 0x0840 ++#define SIGALG_GOSTR12_512 0x0841 + #define SIGALG_RSA_PKCS1_SHA1 0x0201 + #define SIGALG_ECDSA_SHA1 0x0203 + #define SIGALG_PRIVATE_START 0xFE00 +diff --git a/src/regress/lib/libssl/tlsext/tlsexttest.c b/src/regress/lib/libssl/tlsext/tlsexttest.c +index 58955cd78..23a922893 100644 +--- a/src/regress/lib/libssl/tlsext/tlsexttest.c ++++ b/src/regress/lib/libssl/tlsext/tlsexttest.c +@@ -1506,10 +1506,11 @@ test_tlsext_ri_server(void) + */ + + static unsigned char tlsext_sigalgs_client[] = { +- 0x00, 0x1c, 0x08, 0x06, 0x06, 0x01, 0x06, 0x03, ++ 0x00, 0x20, 0x08, 0x06, 0x06, 0x01, 0x06, 0x03, + 0x08, 0x05, 0x05, 0x01, 0x05, 0x03, 0x08, 0x04, + 0x04, 0x01, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, +- 0xef, 0xef, 0xee, 0xee, 0xed, 0xed, ++ 0x08, 0x41, 0xef, 0xef, 0x08, 0x40, 0xee, 0xee, ++ 0xed, 0xed, + }; + + static int +@@ -2714,14 +2715,14 @@ test_tlsext_srtp_server(void) + #endif /* OPENSSL_NO_SRTP */ + + unsigned char tlsext_clienthello_default[] = { +- 0x00, 0x38, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, ++ 0x00, 0x3c, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, + 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x1d, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x23, 0x00, 0x00, +- 0x00, 0x0d, 0x00, 0x1e, 0x00, 0x1c, 0x08, 0x06, ++ 0x00, 0x0d, 0x00, 0x22, 0x00, 0x20, 0x08, 0x06, + 0x06, 0x01, 0x06, 0x03, 0x08, 0x05, 0x05, 0x01, + 0x05, 0x03, 0x08, 0x04, 0x04, 0x01, 0x04, 0x03, +- 0x02, 0x01, 0x02, 0x03, 0xef, 0xef, 0xee, 0xee, +- 0xed, 0xed, ++ 0x02, 0x01, 0x02, 0x03, 0x08, 0x41, 0xef, 0xef, ++ 0x08, 0x40, 0xee, 0xee, 0xed, 0xed, + }; + + unsigned char tlsext_clienthello_disabled[] = {}; +-- +2.17.1 + diff --git a/0070-ssl-provide-interoperability-with-CryptoPro-CSP.patch b/0070-ssl-provide-interoperability-with-CryptoPro-CSP.patch new file mode 100644 index 0000000..55d91e2 --- /dev/null +++ b/0070-ssl-provide-interoperability-with-CryptoPro-CSP.patch @@ -0,0 +1,40 @@ +From fea5c236fbb0ee848bf6d7044f64042fa511e86f Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 28 Mar 2020 22:33:33 +0300 +Subject: [PATCH 70/87] ssl: provide interoperability with CryptoPro CSP + +Windows CSPs fail to send proper SigAlgs extension (it does not include +GOST entries even for GOST CipherSuites). To ensure interoperability, +assume that the server will understand GOST sigalgs if it has sent GOST +certificate. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl_sigalgs.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c +index ffa6278eb..97a0b71fc 100644 +--- a/src/lib/libssl/ssl_sigalgs.c ++++ b/src/lib/libssl/ssl_sigalgs.c +@@ -379,6 +379,15 @@ ssl_sigalg_select(SSL *s, EVP_PKEY *pkey) + return sigalg; + } + ++#ifndef OPENSSL_NO_GOST ++ /* Windows CSPs fail to send proper SigAlgs extension (it does not ++ * include GOST entries even for GOST CipherSuites). To ensure ++ * interoperability, assume that the server will understand GOST ++ * sigalgs if it has sent GOST certificate. */ ++ if (pkey->type == EVP_PKEY_GOSTR01) ++ return ssl_sigalg_gost_select(s, pkey); ++#endif ++ + SSLerror(s, SSL_R_UNKNOWN_PKEY_TYPE); + return NULL; + } +-- +2.17.1 + diff --git a/0071-ssl-do-not-send-GOST-94-certificate-type.patch b/0071-ssl-do-not-send-GOST-94-certificate-type.patch new file mode 100644 index 0000000..ca7b3c1 --- /dev/null +++ b/0071-ssl-do-not-send-GOST-94-certificate-type.patch @@ -0,0 +1,31 @@ +From 93770e5b55266895828fdfb26e6f095b98ded435 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sun, 29 Mar 2020 00:02:52 +0300 +Subject: [PATCH 71/87] ssl: do not send GOST 94 certificate type + +GOST R 34.10-94 is an obsolete certificate type, unsupported by +LibreSSL and by the rest of current software, so there is no point in +sending in the CertificateTypes. Drop it. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/tls1.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/lib/libssl/tls1.h b/src/lib/libssl/tls1.h +index 8cd522658..b3bf1687a 100644 +--- a/src/lib/libssl/tls1.h ++++ b/src/lib/libssl/tls1.h +@@ -735,7 +735,6 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) + #define TLS_CT_DSS_SIGN 2 + #define TLS_CT_RSA_FIXED_DH 3 + #define TLS_CT_DSS_FIXED_DH 4 +-#define TLS_CT_GOST94_SIGN 21 + #define TLS_CT_GOST01_SIGN 22 + #define TLS_CT_ECDSA_SIGN 64 + #define TLS_CT_RSA_FIXED_ECDH 65 +-- +2.17.1 + diff --git a/0072-ssl-add-support-for-new-GOST-CNT-IMIT-ciphersuite-va.patch b/0072-ssl-add-support-for-new-GOST-CNT-IMIT-ciphersuite-va.patch new file mode 100644 index 0000000..d9ebc83 --- /dev/null +++ b/0072-ssl-add-support-for-new-GOST-CNT-IMIT-ciphersuite-va.patch @@ -0,0 +1,47 @@ +From fb0bffd55cfc46f60848a22e7f351cb23b47ca3a Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sun, 29 Mar 2020 00:24:35 +0300 +Subject: [PATCH 72/87] ssl: add support for new GOST CNT-IMIT ciphersuite + value + +Add support for IANA-assigned value {0xc1, 0x02} for GOST CNT-IMIT +CipherSuite (GOST2012256-GOST89-GOST89). + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/s3_lib.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index e2fef7258..425420c4a 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -1305,6 +1305,23 @@ SSL_CIPHER ssl3_ciphers[] = { + .alg_bits = 256, + }, + ++ /* Cipher C102 */ ++ { ++ .valid = 1, ++ .name = "GOST2012256-GOST89-GOST89", ++ .id = 0x300c102, ++ .algorithm_mkey = SSL_kGOST, ++ .algorithm_auth = SSL_aGOST01, ++ .algorithm_enc = SSL_eGOST2814789CNT, ++ .algorithm_mac = SSL_GOST89MAC, ++ .algorithm_ssl = SSL_TLSV1_2, ++ .algo_strength = SSL_HIGH, ++ .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256| ++ TLS1_STREAM_MAC, ++ .strength_bits = 256, ++ .alg_bits = 256 ++ }, ++ + /* Cipher CCA8 */ + { + .valid = 1, +-- +2.17.1 + diff --git a/0073-evp-add-EVP_PKEY_new_CMAC_key-function.patch b/0073-evp-add-EVP_PKEY_new_CMAC_key-function.patch new file mode 100644 index 0000000..ce25bd6 --- /dev/null +++ b/0073-evp-add-EVP_PKEY_new_CMAC_key-function.patch @@ -0,0 +1,89 @@ +From 87ce8af5f7de65351fd0c7914416539ad091d86b Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 31 Mar 2020 21:16:51 +0300 +Subject: [PATCH 73/87] evp: add EVP_PKEY_new_CMAC_key function + +Add a function to initialize EVP_PKEY for CMAC operations. CMAC already +exports necessary pmeths, but it is not possible to use it throught +EVP_PKEY_new_mac_type(). + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/Symbols.list | 1 + + src/lib/libcrypto/evp/evp.h | 3 +++ + src/lib/libcrypto/evp/p_lib.c | 31 +++++++++++++++++++++++++++++++ + 3 files changed, 35 insertions(+) + +diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list +index ec3506131..a1c4a0961 100644 +--- a/src/lib/libcrypto/Symbols.list ++++ b/src/lib/libcrypto/Symbols.list +@@ -1589,6 +1589,7 @@ EVP_PKEY_meth_set_verify_recover + EVP_PKEY_meth_set_verifyctx + EVP_PKEY_missing_parameters + EVP_PKEY_new ++EVP_PKEY_new_CMAC_key + EVP_PKEY_new_mac_key + EVP_PKEY_paramgen + EVP_PKEY_paramgen_init +diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h +index d5b78d8bd..8ec5a5647 100644 +--- a/src/lib/libcrypto/evp/evp.h ++++ b/src/lib/libcrypto/evp/evp.h +@@ -1173,6 +1173,9 @@ void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, + int keylen); + ++EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, ++ size_t len, const EVP_CIPHER *cipher); ++ + void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); + void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); + EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); +diff --git a/src/lib/libcrypto/evp/p_lib.c b/src/lib/libcrypto/evp/p_lib.c +index 13a9d65f2..262515247 100644 +--- a/src/lib/libcrypto/evp/p_lib.c ++++ b/src/lib/libcrypto/evp/p_lib.c +@@ -255,6 +255,37 @@ pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len) + return 1; + } + ++EVP_PKEY * ++EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, ++ size_t len, const EVP_CIPHER *cipher) ++{ ++#ifndef OPENSSL_NO_CMAC ++ EVP_PKEY_CTX *mac_ctx = NULL; ++ EVP_PKEY *mac_key = NULL; ++ ++ mac_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_CMAC, e); ++ if (!mac_ctx) ++ return NULL; ++ if (EVP_PKEY_keygen_init(mac_ctx) <= 0) ++ goto merr; ++ if (EVP_PKEY_CTX_ctrl(mac_ctx, -1, EVP_PKEY_OP_KEYGEN, ++ EVP_PKEY_CTRL_CIPHER, 0, (void *)cipher) <= 0) ++ goto merr; ++ if (EVP_PKEY_CTX_ctrl(mac_ctx, -1, EVP_PKEY_OP_KEYGEN, ++ EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)priv) <= 0) ++ goto merr; ++ if (EVP_PKEY_keygen(mac_ctx, &mac_key) <= 0) ++ goto merr; ++ ++merr: ++ EVP_PKEY_CTX_free(mac_ctx); ++ return mac_key; ++#else ++ EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); ++ return NULL; ++#endif ++} ++ + int + EVP_PKEY_set_type(EVP_PKEY *pkey, int type) + { +-- +2.17.1 + diff --git a/0074-evp-fix-sign-verify-for-EVP_PKEY_CMAC-keys.patch b/0074-evp-fix-sign-verify-for-EVP_PKEY_CMAC-keys.patch new file mode 100644 index 0000000..a6bf2d1 --- /dev/null +++ b/0074-evp-fix-sign-verify-for-EVP_PKEY_CMAC-keys.patch @@ -0,0 +1,77 @@ +From 8fc7a6230875bd0d6290df4670680ce687f7daf6 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 31 Mar 2020 21:19:10 +0300 +Subject: [PATCH 74/87] evp: fix sign/verify for EVP_PKEY_CMAC keys + +Properly handle EVP_PKEY_FLAG_SIGCTX_CUSTOM flag to support +EVP_PKEY_CMAC keys. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/m_sigver.c | 33 ++++++++++++++++++++++++-------- + 1 file changed, 25 insertions(+), 8 deletions(-) + +diff --git a/src/lib/libcrypto/evp/m_sigver.c b/src/lib/libcrypto/evp/m_sigver.c +index 9e313c363..fbe107020 100644 +--- a/src/lib/libcrypto/evp/m_sigver.c ++++ b/src/lib/libcrypto/evp/m_sigver.c +@@ -74,15 +74,17 @@ do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, + if (ctx->pctx == NULL) + return 0; + +- if (type == NULL) { +- int def_nid; +- if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) > 0) +- type = EVP_get_digestbynid(def_nid); +- } ++ if (!(ctx->pctx->pmeth->flags & EVP_PKEY_FLAG_SIGCTX_CUSTOM)) { ++ if (type == NULL) { ++ int def_nid; ++ if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) > 0) ++ type = EVP_get_digestbynid(def_nid); ++ } + +- if (type == NULL) { +- EVPerror(EVP_R_NO_DEFAULT_DIGEST); +- return 0; ++ if (type == NULL) { ++ EVPerror(EVP_R_NO_DEFAULT_DIGEST); ++ return 0; ++ } + } + + if (ver) { +@@ -103,6 +105,8 @@ do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, + } + if (EVP_PKEY_CTX_set_signature_md(ctx->pctx, type) <= 0) + return 0; ++ if (ctx->pctx->pmeth->flags & EVP_PKEY_FLAG_SIGCTX_CUSTOM) ++ return 1; + if (pctx) + *pctx = ctx->pctx; + if (!EVP_DigestInit_ex(ctx, type, e)) +@@ -129,6 +133,19 @@ EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen) + { + int sctx, r = 0; + ++ if (ctx->pctx->pmeth->flags & EVP_PKEY_FLAG_SIGCTX_CUSTOM) { ++ EVP_PKEY_CTX *dctx; ++ ++ if (!sigret) ++ return ctx->pctx->pmeth->signctx(ctx->pctx, sigret, siglen, ctx); ++ ++ dctx = EVP_PKEY_CTX_dup(ctx->pctx); ++ if (!dctx) ++ return 0; ++ r = dctx->pmeth->signctx(dctx, sigret, siglen, ctx); ++ EVP_PKEY_CTX_free(dctx); ++ return r; ++ } + if (ctx->pctx->pmeth->signctx) + sctx = 1; + else +-- +2.17.1 + diff --git a/0075-evp-fix-EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch b/0075-evp-fix-EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch new file mode 100644 index 0000000..ebb7abf --- /dev/null +++ b/0075-evp-fix-EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch @@ -0,0 +1,49 @@ +From 9793963c8430257904121816af0125b7607582c7 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 31 Mar 2020 21:22:19 +0300 +Subject: [PATCH 75/87] evp: fix EVP_MD_CTX_copy_ex for CMAC contexts + +EVP_MD_CTX created for EVP_PKEY_CMAC will not have ctx->digest even when +fully initialized. Support copying of such contexts. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/evp/digest.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/lib/libcrypto/evp/digest.c b/src/lib/libcrypto/evp/digest.c +index 4cd3565c6..15192a813 100644 +--- a/src/lib/libcrypto/evp/digest.c ++++ b/src/lib/libcrypto/evp/digest.c +@@ -260,7 +260,7 @@ EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in) + { + unsigned char *tmp_buf; + +- if ((in == NULL) || (in->digest == NULL)) { ++ if (in == NULL) { + EVPerror(EVP_R_INPUT_NOT_INITIALIZED); + return 0; + } +@@ -280,7 +280,7 @@ EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in) + EVP_MD_CTX_cleanup(out); + memcpy(out, in, sizeof *out); + +- if (in->md_data && out->digest->ctx_size) { ++ if (in->md_data && out->digest && out->digest->ctx_size) { + if (tmp_buf) { + out->md_data = tmp_buf; + } else { +@@ -303,7 +303,7 @@ EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in) + } + } + +- if (out->digest->copy) ++ if (out->digest && out->digest->copy) + return out->digest->copy(out, in); + + return 1; +-- +2.17.1 + diff --git a/0076-objects-add-id-for-gost-kdf-key-exchange-for-CTR-OMA.patch b/0076-objects-add-id-for-gost-kdf-key-exchange-for-CTR-OMA.patch new file mode 100644 index 0000000..ce5cc9b --- /dev/null +++ b/0076-objects-add-id-for-gost-kdf-key-exchange-for-CTR-OMA.patch @@ -0,0 +1,36 @@ +From fec0b1cb566c95bda198cc10b9ff8b82e607d6d0 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:05:57 +0300 +Subject: [PATCH 76/87] objects: add id for gost-kdf key exchange (for + CTR-OMAC) + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/objects/obj_mac.num | 1 + + src/lib/libcrypto/objects/objects.txt | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/lib/libcrypto/objects/obj_mac.num b/src/lib/libcrypto/objects/obj_mac.num +index 6e494cb92..2985c4f0f 100644 +--- a/src/lib/libcrypto/objects/obj_mac.num ++++ b/src/lib/libcrypto/objects/obj_mac.num +@@ -1021,3 +1021,4 @@ id_tc26_agreement_gost_3410_12_512 1020 + id_tc26_wrap_gostr3412_2015_magma_kexp15 1021 + id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1022 + id_cms_mac_attr 1023 ++kx_gost_kdf 1024 +diff --git a/src/lib/libcrypto/objects/objects.txt b/src/lib/libcrypto/objects/objects.txt +index 3f810dcf8..9139907cd 100644 +--- a/src/lib/libcrypto/objects/objects.txt ++++ b/src/lib/libcrypto/objects/objects.txt +@@ -1436,6 +1436,7 @@ tc26 1 7 2 1 : id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15 + : KxECDHE : kx-ecdhe + : KxDHE : kx-dhe + : KxGOST : kx-gost ++ : KxGOSTKDF : kx-gost-kdf + + # TLS cipher suite authentication + : AuthRSA : auth-rsa +-- +2.17.1 + diff --git a/0077-ssl-add-defines-for-GOST-CTR-OMAC-ciphersuites.patch b/0077-ssl-add-defines-for-GOST-CTR-OMAC-ciphersuites.patch new file mode 100644 index 0000000..74fa507 --- /dev/null +++ b/0077-ssl-add-defines-for-GOST-CTR-OMAC-ciphersuites.patch @@ -0,0 +1,211 @@ +From 2ed69ca1219dd8287476bed0d20d50750c010d11 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:10:52 +0300 +Subject: [PATCH 77/87] ssl: add defines for GOST CTR-OMAC ciphersuites + +Add definitions for cipher, mac and KX used by GOST CTR-OMAC +ciphersuites (see draft-smyshlyaev-tls12-gost-suites-07). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/s3_lib.c | 32 ++++++++++++++++++++++++++++++++ + src/lib/libssl/ssl.h | 3 +++ + src/lib/libssl/ssl_ciph.c | 38 ++++++++++++++++++++++++++++++++++++++ + src/lib/libssl/ssl_locl.h | 5 +++++ + 4 files changed, 78 insertions(+) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index 425420c4a..18b9ad62f 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -1305,6 +1305,38 @@ SSL_CIPHER ssl3_ciphers[] = { + .alg_bits = 256, + }, + ++ /* Cipher C100 */ ++ { ++ .valid = 1, ++ .name = "GOST2012256-KUZNYECHIK-CTR-OMAC", ++ .id = 0x300c100, ++ .algorithm_mkey = SSL_kGOST_KDF, ++ .algorithm_auth = SSL_aGOST01, ++ .algorithm_enc = SSL_KUZNYECHIK_CTR_ACPKM, ++ .algorithm_mac = SSL_KUZNYECHIK_OMAC, ++ .algorithm_ssl = SSL_TLSV1_2, ++ .algo_strength = SSL_HIGH, ++ .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256, ++ .strength_bits = 256, ++ .alg_bits = 256 ++ }, ++ ++ /* Cipher C101 */ ++ { ++ .valid = 1, ++ .name = "GOST2012256-MAGMA-CTR-OMAC", ++ .id = 0x300c101, ++ .algorithm_mkey = SSL_kGOST_KDF, ++ .algorithm_auth = SSL_aGOST01, ++ .algorithm_enc = SSL_MAGMA_CTR_ACPKM, ++ .algorithm_mac = SSL_MAGMA_OMAC, ++ .algorithm_ssl = SSL_TLSV1_2, ++ .algo_strength = SSL_HIGH, ++ .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256, ++ .strength_bits = 256, ++ .alg_bits = 256 ++ }, ++ + /* Cipher C102 */ + { + .valid = 1, +diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h +index 4370c84cd..b11216b1e 100644 +--- a/src/lib/libssl/ssl.h ++++ b/src/lib/libssl/ssl.h +@@ -246,6 +246,7 @@ extern "C" { + #define SSL_TXT_kEECDH "kEECDH" + #define SSL_TXT_kPSK "kPSK" + #define SSL_TXT_kGOST "kGOST" ++#define SSL_TXT_kGOST_KDF "kGOSTKDF" + #define SSL_TXT_kSRP "kSRP" + + #define SSL_TXT_aRSA "aRSA" +@@ -299,6 +300,8 @@ extern "C" { + #define SSL_TXT_SHA384 "SHA384" + #define SSL_TXT_STREEBOG256 "STREEBOG256" + #define SSL_TXT_STREEBOG512 "STREEBOG512" ++#define SSL_TXT_KUZNYECHIK_OMAC "KUZNYECHIK-OMAC" ++#define SSL_TXT_MAGMA_OMAC "MAGMA-OMAC" + + #define SSL_TXT_DTLS1 "DTLSv1" + #define SSL_TXT_SSLV2 "SSLv2" +diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c +index 37417efc0..9ef17e052 100644 +--- a/src/lib/libssl/ssl_ciph.c ++++ b/src/lib/libssl/ssl_ciph.c +@@ -219,6 +219,11 @@ static const SSL_CIPHER cipher_aliases[] = { + .algorithm_mkey = SSL_kGOST, + }, + ++ { ++ .name = SSL_TXT_kGOST_KDF, ++ .algorithm_mkey = SSL_kGOST_KDF, ++ }, ++ + /* server authentication aliases */ + { + .name = SSL_TXT_aRSA, +@@ -365,6 +370,14 @@ static const SSL_CIPHER cipher_aliases[] = { + .name = SSL_TXT_GOST89MAC, + .algorithm_mac = SSL_GOST89MAC, + }, ++ { ++ .name = SSL_TXT_KUZNYECHIK_OMAC, ++ .algorithm_mac = SSL_KUZNYECHIK_OMAC, ++ }, ++ { ++ .name = SSL_TXT_MAGMA_OMAC, ++ .algorithm_mac = SSL_MAGMA_OMAC, ++ }, + { + .name = SSL_TXT_SHA256, + .algorithm_mac = SSL_SHA256, +@@ -1424,6 +1437,9 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) + case SSL_kGOST: + kx = "GOST"; + break; ++ case SSL_kGOST_KDF: ++ kx = "GOSTKDF"; ++ break; + case SSL_kTLS1_3: + kx = "TLSv1.3"; + break; +@@ -1489,6 +1505,12 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) + case SSL_eGOST2814789CNT: + enc = "GOST-28178-89-CNT"; + break; ++ case SSL_KUZNYECHIK_CTR_ACPKM: ++ enc = "KUZNYECHIK-CTR-ACPKM"; ++ break; ++ case SSL_MAGMA_CTR_ACPKM: ++ enc = "MAGMA-CTR-ACPKM"; ++ break; + default: + enc = "unknown"; + break; +@@ -1519,6 +1541,12 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) + case SSL_STREEBOG256: + mac = "STREEBOG256"; + break; ++ case SSL_KUZNYECHIK_OMAC: ++ mac = "KUZNYECHIK-OMAC"; ++ break; ++ case SSL_MAGMA_OMAC: ++ mac = "MAGMA-OMAC"; ++ break; + default: + mac = "unknown"; + break; +@@ -1613,6 +1641,10 @@ SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c) + return NID_rc4; + case SSL_eGOST2814789CNT: + return NID_gost89_cnt; ++ case SSL_KUZNYECHIK_CTR_ACPKM: ++ return NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm; ++ case SSL_MAGMA_CTR_ACPKM: ++ return NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm; + default: + return NID_undef; + } +@@ -1638,6 +1670,10 @@ SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c) + return NID_sha384; + case SSL_STREEBOG256: + return NID_id_tc26_gost3411_2012_256; ++ case SSL_KUZNYECHIK_OMAC: ++ return NID_kuznyechik_mac; ++ case SSL_MAGMA_OMAC: ++ return NID_magma_mac; + default: + return NID_undef; + } +@@ -1653,6 +1689,8 @@ SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c) + return NID_kx_ecdhe; + case SSL_kGOST: + return NID_kx_gost; ++ case SSL_kGOST_KDF: ++ return NID_kx_gost_kdf; + case SSL_kRSA: + return NID_kx_rsa; + default: +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index bfc3c1ad9..72646fa8c 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -206,6 +206,7 @@ __BEGIN_HIDDEN_DECLS + #define SSL_kECDHE 0x00000080L /* ephemeral ECDH */ + #define SSL_kGOST 0x00000200L /* GOST key exchange */ + #define SSL_kTLS1_3 0x00000400L /* TLSv1.3 key exchange */ ++#define SSL_kGOST_KDF 0x00000800L /* GOST KDF key exchange */ + + /* Bits for algorithm_auth (server authentication) */ + #define SSL_aRSA 0x00000001L /* RSA auth */ +@@ -229,6 +230,8 @@ __BEGIN_HIDDEN_DECLS + #define SSL_AES128GCM 0x00000400L + #define SSL_AES256GCM 0x00000800L + #define SSL_CHACHA20POLY1305 0x00001000L ++#define SSL_KUZNYECHIK_CTR_ACPKM 0x00002000L ++#define SSL_MAGMA_CTR_ACPKM 0x00004000L + + #define SSL_AES (SSL_AES128|SSL_AES256|SSL_AES128GCM|SSL_AES256GCM) + #define SSL_CAMELLIA (SSL_CAMELLIA128|SSL_CAMELLIA256) +@@ -245,6 +248,8 @@ __BEGIN_HIDDEN_DECLS + /* Not a real MAC, just an indication it is part of cipher */ + #define SSL_AEAD 0x00000040L + #define SSL_STREEBOG256 0x00000080L ++#define SSL_KUZNYECHIK_OMAC 0x00000100L ++#define SSL_MAGMA_OMAC 0x00000200L + + /* Bits for algorithm_ssl (protocol version) */ + #define SSL_SSLV3 0x00000002L +-- +2.17.1 + diff --git a/0078-ssl-add-support-for-GOST-KDF-key-exchange.patch b/0078-ssl-add-support-for-GOST-KDF-key-exchange.patch new file mode 100644 index 0000000..e41254a --- /dev/null +++ b/0078-ssl-add-support-for-GOST-KDF-key-exchange.patch @@ -0,0 +1,411 @@ +From e2409a33a5ffb21c41de9f213fecaf26e384d6a8 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:15:42 +0300 +Subject: [PATCH 78/87] ssl: add support for GOST-KDF key exchange + +Add support for GOST-KDF key exchange used by CTR-OMAC cipher suites. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/s3_lib.c | 2 + + src/lib/libssl/ssl_ciph.c | 2 +- + src/lib/libssl/ssl_clnt.c | 87 +++++++++++++++++++--------------- + src/lib/libssl/ssl_lib.c | 2 +- + src/lib/libssl/ssl_locl.h | 2 + + src/lib/libssl/ssl_srvr.c | 98 +++++++++++++++++++++++++-------------- + src/lib/libssl/t1_lib.c | 42 +++++++++++++++++ + 7 files changed, 162 insertions(+), 73 deletions(-) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index 18b9ad62f..106a2567a 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -2598,6 +2598,8 @@ ssl3_get_req_cert_types(SSL *s, CBB *cbb) + if ((alg_k & SSL_kGOST) != 0) { + if (!CBB_add_u8(cbb, TLS_CT_GOST01_SIGN)) + return 0; ++ } ++ if (((alg_k & SSL_kGOST) != 0) || ((alg_k & SSL_kGOST_KDF) != 0)) { + if (!CBB_add_u8(cbb, TLS_CT_GOST12_256_SIGN)) + return 0; + if (!CBB_add_u8(cbb, TLS_CT_GOST12_512_SIGN)) +diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c +index 9ef17e052..a3e0d396b 100644 +--- a/src/lib/libssl/ssl_ciph.c ++++ b/src/lib/libssl/ssl_ciph.c +@@ -653,7 +653,7 @@ ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, + */ + if (EVP_PKEY_meth_find(NID_id_GostR3410_2001) == NULL) { + *auth |= SSL_aGOST01; +- *mkey |= SSL_kGOST; ++ *mkey |= SSL_kGOST | SSL_kGOST_KDF; + } + + #ifdef SSL_FORBID_ENULL +diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c +index 0a1b6ea24..731104253 100644 +--- a/src/lib/libssl/ssl_clnt.c ++++ b/src/lib/libssl/ssl_clnt.c +@@ -2141,18 +2141,14 @@ ssl3_send_client_kex_ecdhe(SSL *s, SESS_CERT *sc, CBB *cbb) + } + + static int +-ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) ++ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb, unsigned int psexp) + { +- unsigned char premaster_secret[32], shared_ukm[32], tmp[256]; ++ unsigned char premaster_secret[32], *tmp = NULL; + EVP_PKEY *pub_key = NULL; + EVP_PKEY_CTX *pkey_ctx; + X509 *peer_cert; + size_t msglen; +- unsigned int md_len; +- EVP_MD_CTX *ukm_hash; + int ret = -1; +- int nid; +- CBB gostblob; + + /* Get server sertificate PKEY and create ctx from it */ + peer_cert = sess_cert->peer_pkeys[SSL_PKEY_GOST01].x509; +@@ -2172,12 +2168,13 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) + EVP_PKEY_encrypt_init(pkey_ctx); + + /* Generate session key. */ +- arc4random_buf(premaster_secret, 32); ++ arc4random_buf(premaster_secret, sizeof(premaster_secret)); + + /* + * If we have client certificate, use its secret as peer key. ++ * Only for old (non-PSexp) key exchange. + */ +- if (S3I(s)->tmp.cert_req && s->cert->key->privatekey) { ++ if (!psexp && S3I(s)->tmp.cert_req && s->cert->key->privatekey) { + if (EVP_PKEY_derive_set_peer(pkey_ctx, + s->cert->key->privatekey) <=0) { + /* +@@ -2186,49 +2183,62 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) + */ + ERR_clear_error(); + } ++ } else if (psexp) { ++ int format; ++ ++ if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_MAGMA_CTR_ACPKM) ++ format = GOST_ENC_FORMAT_PSKEY_MAGMA; ++ else ++ format = GOST_ENC_FORMAT_PSKEY_KUZNYECHIK; ++ ++ if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, EVP_PKEY_OP_ENCRYPT, ++ EVP_PKEY_CTRL_GOST_ENC_FORMAT, ++ format, NULL) <= 0) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ goto err; ++ } ++ + } + + /* + * Compute shared IV and store it in algorithm-specific context data. + */ +- ukm_hash = EVP_MD_CTX_new(); +- if (ukm_hash == NULL) { +- SSLerror(s, ERR_R_MALLOC_FAILURE); ++ if (!tls1_set_gost_ukm(s, pkey_ctx, psexp)) + goto err; +- } +- +- if (ssl_get_algorithm2(s) & SSL_HANDSHAKE_MAC_GOST94) +- nid = NID_id_GostR3411_94; +- else +- nid = NID_id_tc26_gost3411_2012_256; +- if (!EVP_DigestInit(ukm_hash, EVP_get_digestbynid(nid))) +- goto err; +- EVP_DigestUpdate(ukm_hash, s->s3->client_random, SSL3_RANDOM_SIZE); +- EVP_DigestUpdate(ukm_hash, s->s3->server_random, SSL3_RANDOM_SIZE); +- EVP_DigestFinal_ex(ukm_hash, shared_ukm, &md_len); +- EVP_MD_CTX_free(ukm_hash); +- if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, EVP_PKEY_OP_ENCRYPT, +- EVP_PKEY_CTRL_SET_IV, 8, shared_ukm) < 0) { +- SSLerror(s, SSL_R_LIBRARY_BUG); +- goto err; +- } + + /* + * Make GOST keytransport blob message, encapsulate it into sequence. + */ +- msglen = 255; +- if (EVP_PKEY_encrypt(pkey_ctx, tmp, &msglen, premaster_secret, +- 32) < 0) { ++ if (EVP_PKEY_encrypt(pkey_ctx, NULL, &msglen, ++ premaster_secret, sizeof(premaster_secret)) < 0) { + SSLerror(s, SSL_R_LIBRARY_BUG); + goto err; + } +- +- if (!CBB_add_asn1(cbb, &gostblob, CBS_ASN1_SEQUENCE)) +- goto err; +- if (!CBB_add_bytes(&gostblob, tmp, msglen)) ++ if ((tmp = malloc(msglen)) == NULL) { ++ SSLerror(s, ERR_R_MALLOC_FAILURE); + goto err; +- if (!CBB_flush(cbb)) ++ } ++ if (EVP_PKEY_encrypt(pkey_ctx, tmp, &msglen, ++ premaster_secret, sizeof(premaster_secret)) < 0) { ++ SSLerror(s, SSL_R_LIBRARY_BUG); + goto err; ++ } ++ ++ if (psexp) { ++ if (!CBB_add_bytes(cbb, tmp, msglen)) ++ goto err; ++ if (!CBB_flush(cbb)) ++ goto err; ++ } else { ++ CBB gostblob; ++ ++ if (!CBB_add_asn1(cbb, &gostblob, CBS_ASN1_SEQUENCE)) ++ goto err; ++ if (!CBB_add_bytes(&gostblob, tmp, msglen)) ++ goto err; ++ if (!CBB_flush(cbb)) ++ goto err; ++ } + + /* Check if pubkey from client certificate was used. */ + if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, +@@ -2283,7 +2293,10 @@ ssl3_send_client_key_exchange(SSL *s) + if (ssl3_send_client_kex_ecdhe(s, sess_cert, &kex) != 1) + goto err; + } else if (alg_k & SSL_kGOST) { +- if (ssl3_send_client_kex_gost(s, sess_cert, &kex) != 1) ++ if (ssl3_send_client_kex_gost(s, sess_cert, &kex, 0) != 1) ++ goto err; ++ } else if (alg_k & SSL_kGOST_KDF) { ++ if (ssl3_send_client_kex_gost(s, sess_cert, &kex, 1) != 1) + goto err; + } else { + ssl3_send_alert(s, SSL3_AL_FATAL, +diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c +index 6ef2083f5..5495a74ad 100644 +--- a/src/lib/libssl/ssl_lib.c ++++ b/src/lib/libssl/ssl_lib.c +@@ -2000,7 +2000,7 @@ ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) + + cpk = &(c->pkeys[SSL_PKEY_GOST01]); + if (cpk->x509 != NULL && cpk->privatekey != NULL) { +- mask_k |= SSL_kGOST; ++ mask_k |= SSL_kGOST | SSL_kGOST_KDF; + mask_a |= SSL_aGOST01; + } + +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index 72646fa8c..b07be5ab2 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -1373,6 +1373,8 @@ int ssl_check_serverhello_tlsext(SSL *s); + int tls1_process_ticket(SSL *s, CBS *session_id, CBS *ext_block, + SSL_SESSION **ret); + ++int tls1_set_gost_ukm(SSL *s, EVP_PKEY_CTX *pkey_ctx, unsigned int psexp); ++ + long ssl_get_algorithm2(SSL *s); + + int tls1_check_ec_server_key(SSL *s); +diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c +index 69e547cbe..1d924617c 100644 +--- a/src/lib/libssl/ssl_srvr.c ++++ b/src/lib/libssl/ssl_srvr.c +@@ -1935,10 +1935,10 @@ ssl3_get_client_kex_ecdhe(SSL *s, CBS *cbs) + } + + static int +-ssl3_get_client_kex_gost(SSL *s, CBS *cbs) ++ssl3_get_client_kex_gost(SSL *s, CBS *cbs, int psexp) + { + EVP_PKEY_CTX *pkey_ctx; +- EVP_PKEY *client_pub_pkey = NULL, *pk = NULL; ++ EVP_PKEY *pk = NULL; + unsigned char premaster_secret[32]; + unsigned long alg_a; + size_t outlen = 32; +@@ -1954,56 +1954,83 @@ ssl3_get_client_kex_gost(SSL *s, CBS *cbs) + if ((pkey_ctx = EVP_PKEY_CTX_new(pk, NULL)) == NULL) + goto err; + if (EVP_PKEY_decrypt_init(pkey_ctx) <= 0) +- goto gerr; ++ goto err; + +- /* +- * If client certificate is present and is of the same type, +- * maybe use it for key exchange. +- * Don't mind errors from EVP_PKEY_derive_set_peer, because +- * it is completely valid to use a client certificate for +- * authorization only. +- */ +- if ((client_pub_pkey = X509_get_pubkey(s->session->peer)) != NULL) { +- if (EVP_PKEY_derive_set_peer(pkey_ctx, +- client_pub_pkey) <= 0) +- ERR_clear_error(); ++ if (!psexp) { ++ EVP_PKEY *client_pub_pkey = X509_get_pubkey(s->session->peer); ++ /* ++ * If client certificate is present and is of the same type, ++ * maybe use it for key exchange. ++ * Don't mind errors from EVP_PKEY_derive_set_peer, because ++ * it is completely valid to use a client certificate for ++ * authorization only. ++ */ ++ if (client_pub_pkey != NULL) { ++ if (EVP_PKEY_derive_set_peer(pkey_ctx, client_pub_pkey) <= 0) ++ ERR_clear_error(); ++ EVP_PKEY_free(client_pub_pkey); ++ } ++ ++ /* ++ * Compute shared IV and store it in algorithm-specific context data. ++ */ ++ if (!tls1_set_gost_ukm(s, pkey_ctx, psexp)) ++ goto err; ++ ++ /* Decrypt session key */ ++ if (!CBS_get_asn1(cbs, &gostblob, CBS_ASN1_SEQUENCE)) ++ goto truncated; ++ } else { ++ int format; ++ ++ if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_MAGMA_CTR_ACPKM) ++ format = GOST_ENC_FORMAT_PSKEY_MAGMA; ++ else ++ format = GOST_ENC_FORMAT_PSKEY_KUZNYECHIK; ++ ++ if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, EVP_PKEY_OP_DECRYPT, ++ EVP_PKEY_CTRL_GOST_ENC_FORMAT, ++ format, NULL) <= 0) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ goto err; ++ } ++ ++ /* ++ * Compute shared IV and store it in algorithm-specific context data. ++ */ ++ if (!tls1_set_gost_ukm(s, pkey_ctx, psexp)) ++ goto err; ++ ++ /* Decrypt session key */ ++ if (!CBS_get_asn1_element(cbs, &gostblob, CBS_ASN1_SEQUENCE)) ++ goto truncated; + } + +- /* Decrypt session key */ +- if (!CBS_get_asn1(cbs, &gostblob, CBS_ASN1_SEQUENCE)) +- goto truncated; + if (CBS_len(cbs) != 0) + goto truncated; + if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, +- CBS_data(&gostblob), CBS_len(&gostblob)) <= 0) { ++ CBS_data(&gostblob), CBS_len(&gostblob)) <= 0 || ++ outlen != 32) { + SSLerror(s, SSL_R_DECRYPTION_FAILED); +- goto gerr; ++ goto err; + } + + /* Generate master secret */ + s->session->master_key_length = + tls1_generate_master_secret( +- s, s->session->master_key, premaster_secret, 32); ++ s, s->session->master_key, premaster_secret, outlen); + +- /* Check if pubkey from client certificate was used */ +- if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, -1, +- EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0) +- ret = 2; +- else +- ret = 1; +- gerr: +- EVP_PKEY_free(client_pub_pkey); ++ ret = 1; ++ ++err: + EVP_PKEY_CTX_free(pkey_ctx); +- if (ret) +- return (ret); +- else +- goto err; ++ ++ return ret; + + truncated: + al = SSL_AD_DECODE_ERROR; + SSLerror(s, SSL_R_BAD_PACKET_LENGTH); + ssl3_send_alert(s, SSL3_AL_FATAL, al); +- err: + return (-1); + } + +@@ -2038,7 +2065,10 @@ ssl3_get_client_key_exchange(SSL *s) + if (ssl3_get_client_kex_ecdhe(s, &cbs) != 1) + goto err; + } else if (alg_k & SSL_kGOST) { +- if (ssl3_get_client_kex_gost(s, &cbs) != 1) ++ if (ssl3_get_client_kex_gost(s, &cbs, 0) != 1) ++ goto err; ++ } else if (alg_k & SSL_kGOST_KDF) { ++ if (ssl3_get_client_kex_gost(s, &cbs, 1) != 1) + goto err; + } else { + al = SSL_AD_HANDSHAKE_FAILURE; +diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c +index 580ae4b19..3da2ebb8c 100644 +--- a/src/lib/libssl/t1_lib.c ++++ b/src/lib/libssl/t1_lib.c +@@ -1029,3 +1029,45 @@ tls_decrypt_ticket(SSL *s, CBS *session_id, CBS *ticket, SSL_SESSION **psess) + + return ret; + } ++ ++/* ++ * Compute shared IV and store it in algorithm-specific context data. ++ */ ++int ++tls1_set_gost_ukm(SSL *s, EVP_PKEY_CTX *pkey_ctx, unsigned int psexp) ++{ ++ unsigned char shared_ukm[32]; ++ unsigned int md_len; ++ EVP_MD_CTX *ukm_hash; ++ int nid; ++ ++ ukm_hash = EVP_MD_CTX_new(); ++ if (ukm_hash == NULL) { ++ SSLerror(s, ERR_R_MALLOC_FAILURE); ++ goto err; ++ } ++ ++ if (ssl_get_algorithm2(s) & SSL_HANDSHAKE_MAC_GOST94) ++ nid = NID_id_GostR3411_94; ++ else ++ nid = NID_id_tc26_gost3411_2012_256; ++ if (!EVP_DigestInit(ukm_hash, EVP_get_digestbynid(nid)) || ++ !EVP_DigestUpdate(ukm_hash, s->s3->client_random, SSL3_RANDOM_SIZE) || ++ !EVP_DigestUpdate(ukm_hash, s->s3->server_random, SSL3_RANDOM_SIZE) || ++ !EVP_DigestFinal_ex(ukm_hash, shared_ukm, &md_len)) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ goto err; ++ } ++ ++ if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, -1, ++ EVP_PKEY_CTRL_SET_IV, psexp ? md_len : 8, shared_ukm) < 0) { ++ SSLerror(s, SSL_R_LIBRARY_BUG); ++ goto err; ++ } ++ EVP_MD_CTX_free(ukm_hash); ++ return 1; ++ ++err: ++ EVP_MD_CTX_free(ukm_hash); ++ return 0; ++} +-- +2.17.1 + diff --git a/0079-ssl-support-selecting-CMAC-for-CTR-OMAC-ciphersuites.patch b/0079-ssl-support-selecting-CMAC-for-CTR-OMAC-ciphersuites.patch new file mode 100644 index 0000000..db9a889 --- /dev/null +++ b/0079-ssl-support-selecting-CMAC-for-CTR-OMAC-ciphersuites.patch @@ -0,0 +1,158 @@ +From d549ac36b23762900f5e07cc5afa41e1169141ac Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:21:43 +0300 +Subject: [PATCH 79/87] ssl: support selecting CMAC for CTR-OMAC ciphersuites + +CTR-OMAC ciphersuites use CMAC instead of HMAC to generate record MACs. +Make ssl_cipher_get_evp() return either MD (for HMAC) or a cipher (for +CMAC). + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl_ciph.c | 20 ++++++++++++++++++-- + src/lib/libssl/ssl_locl.h | 3 ++- + src/lib/libssl/t1_enc.c | 18 ++++++++++++++---- + 3 files changed, 34 insertions(+), 7 deletions(-) + +diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c +index a3e0d396b..0f1995c20 100644 +--- a/src/lib/libssl/ssl_ciph.c ++++ b/src/lib/libssl/ssl_ciph.c +@@ -448,10 +448,11 @@ static const SSL_CIPHER cipher_aliases[] = { + + int + ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc, +- const EVP_MD **md, int *mac_pkey_type, int *mac_secret_size) ++ const EVP_MD **md, const EVP_CIPHER **mac_ciph, int *mac_pkey_type, int *mac_secret_size) + { + *enc = NULL; + *md = NULL; ++ *mac_ciph = NULL; + *mac_pkey_type = NID_undef; + *mac_secret_size = 0; + +@@ -490,6 +491,12 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc, + case SSL_eGOST2814789CNT: + *enc = EVP_gost2814789_cnt(); + break; ++ case SSL_KUZNYECHIK_CTR_ACPKM: ++ *enc = EVP_kuznyechik_ctr_acpkm(); ++ break; ++ case SSL_MAGMA_CTR_ACPKM: ++ *enc = EVP_magma_ctr_acpkm(); ++ break; + } + + switch (ss->cipher->algorithm_mac) { +@@ -514,9 +521,15 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc, + case SSL_STREEBOG256: + *md = EVP_streebog256(); + break; ++ case SSL_MAGMA_OMAC: ++ *mac_ciph = EVP_magma_cbc(); ++ break; ++ case SSL_KUZNYECHIK_OMAC: ++ *mac_ciph = EVP_kuznyechik_cbc(); ++ break; + } + +- if (*enc == NULL || *md == NULL) ++ if (*enc == NULL || (*md == NULL && *mac_ciph == NULL)) + return 0; + + /* +@@ -531,6 +544,9 @@ ssl_cipher_get_evp(const SSL_SESSION *ss, const EVP_CIPHER **enc, + if (ss->cipher->algorithm_mac == SSL_GOST89MAC) { + *mac_pkey_type = EVP_PKEY_GOSTIMIT; + *mac_secret_size = 32; /* XXX */ ++ } else if (*mac_ciph) { ++ *mac_pkey_type = EVP_PKEY_CMAC; ++ *mac_secret_size = EVP_CIPHER_key_length(*mac_ciph); + } else { + *mac_pkey_type = EVP_PKEY_HMAC; + *mac_secret_size = EVP_MD_size(*md); +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index b07be5ab2..87eb05999 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -901,6 +901,7 @@ typedef struct ssl3_state_internal_st { + const EVP_CIPHER *new_sym_enc; + const EVP_AEAD *new_aead; + const EVP_MD *new_hash; ++ const EVP_CIPHER *new_hash_cipher; + int new_mac_pkey_type; + int cert_request; + } tmp; +@@ -1146,7 +1147,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, + const char *rule_str); + void ssl_update_cache(SSL *s, int mode); + int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, +- const EVP_MD **md, int *mac_pkey_type, int *mac_secret_size); ++ const EVP_MD **md, const EVP_CIPHER **mac_ciph, int *mac_pkey_type, int *mac_secret_size); + int ssl_cipher_get_evp_aead(const SSL_SESSION *s, const EVP_AEAD **aead); + int ssl_get_handshake_evp_md(SSL *s, const EVP_MD **md); + +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 2893e1d4d..736670259 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -408,10 +408,12 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + EVP_MD_CTX *mac_ctx; + EVP_PKEY *mac_key; + const EVP_MD *mac; ++ const EVP_CIPHER *mac_cipher; + int mac_type; + + cipher = S3I(s)->tmp.new_sym_enc; + mac = S3I(s)->tmp.new_hash; ++ mac_cipher = S3I(s)->tmp.new_hash_cipher; + mac_type = S3I(s)->tmp.new_mac_pkey_type; + + if (is_read) { +@@ -454,8 +456,14 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + + EVP_CipherInit_ex(cipher_ctx, cipher, NULL, key, iv, !is_read); + +- if ((mac_key = EVP_PKEY_new_mac_key(mac_type, NULL, mac_secret, +- mac_secret_size)) == NULL) ++ if (mac_type == EVP_PKEY_CMAC) { ++ mac_key = EVP_PKEY_new_CMAC_key(NULL, mac_secret, ++ mac_secret_size, mac_cipher); ++ } else { ++ mac_key = EVP_PKEY_new_mac_key(mac_type, NULL, mac_secret, ++ mac_secret_size); ++ } ++ if (mac_key == NULL) + goto err; + EVP_DigestSignInit(mac_ctx, NULL, mac, NULL, mac_key); + EVP_PKEY_free(mac_key); +@@ -587,6 +595,7 @@ tls1_setup_key_block(SSL *s) + const EVP_CIPHER *cipher = NULL; + const EVP_AEAD *aead = NULL; + const EVP_MD *mac = NULL; ++ const EVP_CIPHER *mac_cipher = NULL; + int ret = 0; + + if (S3I(s)->hs.key_block_len != 0) +@@ -601,8 +610,8 @@ tls1_setup_key_block(SSL *s) + key_len = EVP_AEAD_key_length(aead); + iv_len = SSL_CIPHER_AEAD_FIXED_NONCE_LEN(s->session->cipher); + } else { +- if (!ssl_cipher_get_evp(s->session, &cipher, &mac, &mac_type, +- &mac_secret_size)) { ++ if (!ssl_cipher_get_evp(s->session, &cipher, &mac, &mac_cipher, ++ &mac_type, &mac_secret_size)) { + SSLerror(s, SSL_R_CIPHER_OR_HASH_UNAVAILABLE); + return (0); + } +@@ -613,6 +622,7 @@ tls1_setup_key_block(SSL *s) + S3I(s)->tmp.new_aead = aead; + S3I(s)->tmp.new_sym_enc = cipher; + S3I(s)->tmp.new_hash = mac; ++ S3I(s)->tmp.new_hash_cipher = mac_cipher; + S3I(s)->tmp.new_mac_pkey_type = mac_type; + S3I(s)->tmp.new_mac_secret_size = mac_secret_size; + +-- +2.17.1 + diff --git a/0080-ssl-select-ACPKM-session-size-for-CTR-OMAC-ciphersui.patch b/0080-ssl-select-ACPKM-session-size-for-CTR-OMAC-ciphersui.patch new file mode 100644 index 0000000..e338040 --- /dev/null +++ b/0080-ssl-select-ACPKM-session-size-for-CTR-OMAC-ciphersui.patch @@ -0,0 +1,31 @@ +From 85709a17e3cb44997455f5120f454a65a85b6678 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 17:31:59 +0300 +Subject: [PATCH 80/87] ssl: select ACPKM session size for CTR-OMAC + ciphersuites + +Set ACPKM session size for MAGMA and KUZNYECHIK CTR-ACPKM ciphers. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/t1_enc.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 736670259..a3814dd44 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -478,6 +478,10 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + EVP_CIPHER_CTX_ctrl(cipher_ctx, EVP_CTRL_GOST_SET_SBOX, nid, 0); + if (S3I(s)->hs.new_cipher->algorithm_mac == SSL_GOST89MAC) + EVP_MD_CTX_ctrl(mac_ctx, EVP_MD_CTRL_GOST_SET_SBOX, nid, 0); ++ } else if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_MAGMA_CTR_ACPKM) { ++ EVP_CIPHER_CTX_ctrl(cipher_ctx, EVP_CTRL_GOST_SET_MESHING, 1024, 0); ++ } else if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_KUZNYECHIK_CTR_ACPKM) { ++ EVP_CIPHER_CTX_ctrl(cipher_ctx, EVP_CTRL_GOST_SET_MESHING, 4096, 0); + } + + return (1); +-- +2.17.1 + diff --git a/0081-ssl-fix-Finished-message-length-for-CTR-OMAC-ciphers.patch b/0081-ssl-fix-Finished-message-length-for-CTR-OMAC-ciphers.patch new file mode 100644 index 0000000..7174635 --- /dev/null +++ b/0081-ssl-fix-Finished-message-length-for-CTR-OMAC-ciphers.patch @@ -0,0 +1,150 @@ +From 55d3c8d25a6bd5764dcafed8b899723b80fd5a92 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 19:05:59 +0300 +Subject: [PATCH 81/87] ssl: fix Finished message length for CTR-OMAC + ciphersuites + +CTR-OMAC ciphersuites use 32-byte Finished messages. Generate them +properly. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl_both.c | 18 ++++++++++-------- + src/lib/libssl/ssl_locl.h | 5 +++-- + src/lib/libssl/ssl_pkt.c | 2 +- + src/lib/libssl/t1_enc.c | 13 ++++++++++--- + 4 files changed, 24 insertions(+), 14 deletions(-) + +diff --git a/src/lib/libssl/ssl_both.c b/src/lib/libssl/ssl_both.c +index 488a5ff7c..8c71e580f 100644 +--- a/src/lib/libssl/ssl_both.c ++++ b/src/lib/libssl/ssl_both.c +@@ -175,9 +175,12 @@ ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen) + md_len = TLS1_FINISH_MAC_LENGTH; + OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); + +- if (tls1_final_finish_mac(s, sender, slen, +- S3I(s)->tmp.finish_md) != md_len) ++ md_len = tls1_final_finish_mac(s, sender, slen, ++ S3I(s)->tmp.finish_md, sizeof(S3I(s)->tmp.finish_md)); ++ if (md_len == 0) { ++ SSLerror(s, ERR_R_INTERNAL_ERROR); + return (0); ++ } + S3I(s)->tmp.finish_md_len = md_len; + + /* Copy finished so we can use it for renegotiation checks. */ +@@ -237,7 +240,7 @@ ssl3_take_mac(SSL *s) + + S3I(s)->tmp.peer_finish_md_len = + tls1_final_finish_mac(s, sender, slen, +- S3I(s)->tmp.peer_finish_md); ++ S3I(s)->tmp.peer_finish_md, sizeof(S3I(s)->tmp.peer_finish_md)); + } + + int +@@ -260,8 +263,6 @@ ssl3_get_finished(SSL *s, int a, int b) + } + S3I(s)->change_cipher_spec = 0; + +- md_len = TLS1_FINISH_MAC_LENGTH; +- + if (n < 0) { + al = SSL_AD_DECODE_ERROR; + SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); +@@ -270,14 +271,15 @@ ssl3_get_finished(SSL *s, int a, int b) + + CBS_init(&cbs, s->internal->init_msg, n); + +- if (S3I(s)->tmp.peer_finish_md_len != md_len || +- CBS_len(&cbs) != md_len) { ++ md_len = S3I(s)->tmp.peer_finish_md_len; ++ ++ if (CBS_len(&cbs) != md_len) { + al = SSL_AD_DECODE_ERROR; + SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); + goto f_err; + } + +- if (!CBS_mem_equal(&cbs, S3I(s)->tmp.peer_finish_md, CBS_len(&cbs))) { ++ if (!CBS_mem_equal(&cbs, S3I(s)->tmp.peer_finish_md, md_len)) { + al = SSL_AD_DECRYPT_ERROR; + SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); + goto f_err; +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index 87eb05999..f522abf96 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -874,7 +874,8 @@ typedef struct ssl3_state_internal_st { + /* actually only needs to be 16+20 */ + unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2]; + +- /* actually only need to be 16+20 for SSLv3 and 12 for TLS */ ++ /* actually only need to be 16+20 for SSLv3 and 12 for TLS ++ * 32 for GOST CTR-OMAC ciphersuites */ + unsigned char finish_md[EVP_MAX_MD_SIZE*2]; + int finish_md_len; + unsigned char peer_finish_md[EVP_MAX_MD_SIZE*2]; +@@ -1337,7 +1338,7 @@ void tls1_cleanup_key_block(SSL *s); + int tls1_change_cipher_state(SSL *s, int which); + int tls1_setup_key_block(SSL *s); + int tls1_enc(SSL *s, int snd); +-int tls1_final_finish_mac(SSL *s, const char *str, int slen, unsigned char *p); ++int tls1_final_finish_mac(SSL *s, const char *str, int str_len, unsigned char *out, unsigned int outlen); + int tls1_mac(SSL *ssl, unsigned char *md, int snd); + int tls1_generate_master_secret(SSL *s, unsigned char *out, + unsigned char *p, int len); +diff --git a/src/lib/libssl/ssl_pkt.c b/src/lib/libssl/ssl_pkt.c +index 157dd9895..d4aebebe9 100644 +--- a/src/lib/libssl/ssl_pkt.c ++++ b/src/lib/libssl/ssl_pkt.c +@@ -1388,7 +1388,7 @@ ssl3_do_change_cipher_spec(SSL *s) + } + + i = tls1_final_finish_mac(s, sender, slen, +- S3I(s)->tmp.peer_finish_md); ++ S3I(s)->tmp.peer_finish_md, sizeof(S3I(s)->tmp.peer_finish_md)); + if (i == 0) { + SSLerror(s, ERR_R_INTERNAL_ERROR); + return 0; +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index a3814dd44..7e9422b51 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -926,23 +926,30 @@ tls1_enc(SSL *s, int send) + } + + int +-tls1_final_finish_mac(SSL *s, const char *str, int str_len, unsigned char *out) ++tls1_final_finish_mac(SSL *s, const char *str, int str_len, unsigned char *out, unsigned int outlen) + { + unsigned char buf[EVP_MAX_MD_SIZE]; + size_t hash_len; ++ int finished_len = TLS1_FINISH_MAC_LENGTH; + + if (str_len < 0) + return 0; + ++ if (S3I(s)->hs.new_cipher->algorithm_mkey == SSL_kGOST_KDF) ++ finished_len = 32; ++ ++ if (finished_len > outlen) ++ return 0; ++ + if (!tls1_transcript_hash_value(s, buf, sizeof(buf), &hash_len)) + return 0; + + if (!tls1_PRF(s, s->session->master_key, s->session->master_key_length, + str, str_len, buf, hash_len, NULL, 0, NULL, 0, NULL, 0, +- out, TLS1_FINISH_MAC_LENGTH)) ++ out, finished_len)) + return 0; + +- return TLS1_FINISH_MAC_LENGTH; ++ return finished_len; + } + + int +-- +2.17.1 + diff --git a/0082-ssl-fix-CMAC-support.patch b/0082-ssl-fix-CMAC-support.patch new file mode 100644 index 0000000..0b3cc35 --- /dev/null +++ b/0082-ssl-fix-CMAC-support.patch @@ -0,0 +1,182 @@ +From a5ef2b157731e3bd2f9c0dbba4caf361195fa5c8 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 1 Apr 2020 22:43:37 +0300 +Subject: [PATCH 82/87] ssl: fix CMAC support + +For CMAC EVP_MD_CTX_md is NULL. Thus tls1_mac() will not be called. +Store read/write mac_size in the context to make it work. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl.h | 1 + + src/lib/libssl/ssl_lib.c | 2 ++ + src/lib/libssl/ssl_locl.h | 1 + + src/lib/libssl/ssl_pkt.c | 11 ++++------- + src/lib/libssl/t1_enc.c | 23 ++++++++++++----------- + 5 files changed, 20 insertions(+), 18 deletions(-) + +diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h +index b11216b1e..1f9095feb 100644 +--- a/src/lib/libssl/ssl.h ++++ b/src/lib/libssl/ssl.h +@@ -872,6 +872,7 @@ struct ssl_st { + */ + EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ + EVP_MD_CTX *read_hash; /* used for mac generation */ ++ int read_mac_size; + + struct ssl_internal_st *internal; + }; +diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c +index 5495a74ad..c989d802c 100644 +--- a/src/lib/libssl/ssl_lib.c ++++ b/src/lib/libssl/ssl_lib.c +@@ -2538,6 +2538,7 @@ ssl_clear_cipher_read_state(SSL *s) + s->enc_read_ctx = NULL; + EVP_MD_CTX_free(s->read_hash); + s->read_hash = NULL; ++ s->read_mac_size = 0; + + if (s->internal->aead_read_ctx != NULL) { + EVP_AEAD_CTX_cleanup(&s->internal->aead_read_ctx->ctx); +@@ -2553,6 +2554,7 @@ ssl_clear_cipher_write_state(SSL *s) + s->internal->enc_write_ctx = NULL; + EVP_MD_CTX_free(s->internal->write_hash); + s->internal->write_hash = NULL; ++ s->internal->write_mac_size = 0; + + if (s->internal->aead_write_ctx != NULL) { + EVP_AEAD_CTX_cleanup(&s->internal->aead_write_ctx->ctx); +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index f522abf96..858010b87 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -737,6 +737,7 @@ typedef struct ssl_internal_st { + + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ ++ int write_mac_size; + + /* session info */ + +diff --git a/src/lib/libssl/ssl_pkt.c b/src/lib/libssl/ssl_pkt.c +index d4aebebe9..23a5509c3 100644 +--- a/src/lib/libssl/ssl_pkt.c ++++ b/src/lib/libssl/ssl_pkt.c +@@ -443,12 +443,12 @@ ssl3_get_record(SSL *s) + + /* r->length is now the compressed data plus mac */ + if ((sess != NULL) && (s->enc_read_ctx != NULL) && +- (EVP_MD_CTX_md(s->read_hash) != NULL)) { ++ (s->read_mac_size != 0)) { + /* s->read_hash != NULL => mac_size != -1 */ + unsigned char *mac = NULL; + unsigned char mac_tmp[EVP_MAX_MD_SIZE]; + +- mac_size = EVP_MD_CTX_size(s->read_hash); ++ mac_size = s->read_mac_size; + OPENSSL_assert(mac_size <= EVP_MAX_MD_SIZE); + + orig_len = rr->length + rr->padding_length; +@@ -628,13 +628,10 @@ ssl3_create_record(SSL *s, unsigned char *p, int type, const unsigned char *buf, + + memset(&cbb, 0, sizeof(cbb)); + +- if ((sess == NULL) || (s->internal->enc_write_ctx == NULL) || +- (EVP_MD_CTX_md(s->internal->write_hash) == NULL)) { ++ if ((sess == NULL) || (s->internal->enc_write_ctx == NULL)) { + mac_size = 0; + } else { +- mac_size = EVP_MD_CTX_size(s->internal->write_hash); +- if (mac_size < 0) +- goto err; ++ mac_size = s->internal->write_mac_size; + } + + /* +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 7e9422b51..363447b52 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -407,6 +407,7 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + const EVP_CIPHER *cipher; + EVP_MD_CTX *mac_ctx; + EVP_PKEY *mac_key; ++ int mac_size; + const EVP_MD *mac; + const EVP_CIPHER *mac_cipher; + int mac_type; +@@ -459,14 +460,20 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + if (mac_type == EVP_PKEY_CMAC) { + mac_key = EVP_PKEY_new_CMAC_key(NULL, mac_secret, + mac_secret_size, mac_cipher); ++ mac_size = EVP_CIPHER_block_size(mac_cipher); + } else { + mac_key = EVP_PKEY_new_mac_key(mac_type, NULL, mac_secret, + mac_secret_size); ++ mac_size = EVP_MD_size(mac); + } + if (mac_key == NULL) + goto err; + EVP_DigestSignInit(mac_ctx, NULL, mac, NULL, mac_key); + EVP_PKEY_free(mac_key); ++ if (is_read) ++ s->read_mac_size = mac_size; ++ else ++ s->internal->write_mac_size = mac_size; + + if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_eGOST2814789CNT) { + int nid; +@@ -846,10 +853,7 @@ tls1_enc(SSL *s, int send) + } + + if (send) { +- if (EVP_MD_CTX_md(s->internal->write_hash)) { +- int n = EVP_MD_CTX_size(s->internal->write_hash); +- OPENSSL_assert(n >= 0); +- } ++ OPENSSL_assert(s->internal->write_mac_size >= 0); + ds = s->internal->enc_write_ctx; + if (s->internal->enc_write_ctx == NULL) + enc = NULL; +@@ -874,10 +878,7 @@ tls1_enc(SSL *s, int send) + } + } + } else { +- if (EVP_MD_CTX_md(s->read_hash)) { +- int n = EVP_MD_CTX_size(s->read_hash); +- OPENSSL_assert(n >= 0); +- } ++ OPENSSL_assert(s->read_mac_size >= 0); + ds = s->enc_read_ctx; + if (s->enc_read_ctx == NULL) + enc = NULL; +@@ -917,8 +918,7 @@ tls1_enc(SSL *s, int send) + return -1; /* AEAD can fail to verify MAC */ + + ret = 1; +- if (EVP_MD_CTX_md(s->read_hash) != NULL) +- mac_size = EVP_MD_CTX_size(s->read_hash); ++ mac_size = s->read_mac_size; + if ((bs != 1) && !send) + ret = tls1_cbc_remove_padding(s, rec, bs, mac_size); + } +@@ -970,13 +970,14 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + rec = &(ssl->s3->internal->wrec); + seq = &(ssl->s3->internal->write_sequence[0]); + hash = ssl->internal->write_hash; ++ t = ssl->internal->write_mac_size; + } else { + rec = &(ssl->s3->internal->rrec); + seq = &(ssl->s3->internal->read_sequence[0]); + hash = ssl->read_hash; ++ t = ssl->read_mac_size; + } + +- t = EVP_MD_CTX_size(hash); + OPENSSL_assert(t >= 0); + md_size = t; + +-- +2.17.1 + diff --git a/0083-ssl-merge-read-and-write-sequence-secrets-into-commo.patch b/0083-ssl-merge-read-and-write-sequence-secrets-into-commo.patch new file mode 100644 index 0000000..a2a241a --- /dev/null +++ b/0083-ssl-merge-read-and-write-sequence-secrets-into-commo.patch @@ -0,0 +1,261 @@ +From c9bfbd055ab424bf13a4790d2321f6dc32aac555 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Wed, 15 Apr 2020 23:53:16 +0300 +Subject: [PATCH 83/87] ssl: merge read and write sequence/secrets into common + state + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/d1_both.c | 16 ++++++++-------- + src/lib/libssl/d1_pkt.c | 22 +++++++++++----------- + src/lib/libssl/ssl_locl.h | 14 ++++++++------ + src/lib/libssl/ssl_srvr.c | 6 +++--- + src/lib/libssl/t1_enc.c | 25 +++++++++++-------------- + 5 files changed, 41 insertions(+), 42 deletions(-) + +diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c +index 8f3cc610b..4859bdea2 100644 +--- a/src/lib/libssl/d1_both.c ++++ b/src/lib/libssl/d1_both.c +@@ -1084,10 +1084,10 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, + + if (frag->msg_header.saved_retransmit_state.epoch == + saved_state.epoch - 1) { +- memcpy(save_write_sequence, S3I(s)->write_sequence, +- sizeof(S3I(s)->write_sequence)); +- memcpy(S3I(s)->write_sequence, D1I(s)->last_write_sequence, +- sizeof(S3I(s)->write_sequence)); ++ memcpy(save_write_sequence, S3I(s)->write.sequence, ++ sizeof(S3I(s)->write.sequence)); ++ memcpy(S3I(s)->write.sequence, D1I(s)->last_write_sequence, ++ sizeof(S3I(s)->write.sequence)); + } + + ret = dtls1_do_write(s, frag->msg_header.is_ccs ? +@@ -1101,10 +1101,10 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, + + if (frag->msg_header.saved_retransmit_state.epoch == + saved_state.epoch - 1) { +- memcpy(D1I(s)->last_write_sequence, S3I(s)->write_sequence, +- sizeof(S3I(s)->write_sequence)); +- memcpy(S3I(s)->write_sequence, save_write_sequence, +- sizeof(S3I(s)->write_sequence)); ++ memcpy(D1I(s)->last_write_sequence, S3I(s)->write.sequence, ++ sizeof(S3I(s)->write.sequence)); ++ memcpy(S3I(s)->write.sequence, save_write_sequence, ++ sizeof(S3I(s)->write.sequence)); + } + + D1I(s)->retransmitting = 0; +diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c +index 36090533a..8c18bcdb8 100644 +--- a/src/lib/libssl/d1_pkt.c ++++ b/src/lib/libssl/d1_pkt.c +@@ -208,7 +208,7 @@ dtls1_copy_record(SSL *s, pitem *item) + memcpy(&(S3I(s)->rrec), &(rdata->rrec), sizeof(SSL3_RECORD_INTERNAL)); + + /* Set proper sequence number for mac calculation */ +- memcpy(&(S3I(s)->read_sequence[2]), &(rdata->packet[5]), 6); ++ memcpy(&(S3I(s)->read.sequence[2]), &(rdata->packet[5]), 6); + + return (1); + } +@@ -520,8 +520,8 @@ again: + !CBS_get_bytes(&header, &seq_no, 6)) + goto again; + +- if (!CBS_write_bytes(&seq_no, &(S3I(s)->read_sequence[2]), +- sizeof(S3I(s)->read_sequence) - 2, NULL)) ++ if (!CBS_write_bytes(&seq_no, &(S3I(s)->read.sequence[2]), ++ sizeof(S3I(s)->read.sequence) - 2, NULL)) + goto again; + if (!CBS_get_u16(&header, &len)) + goto again; +@@ -1232,7 +1232,7 @@ do_dtls1_write(SSL *s, int type, const unsigned char *buf, unsigned int len) + goto err; + if (!CBB_add_u16(&cbb, D1I(s)->w_epoch)) + goto err; +- if (!CBB_add_bytes(&cbb, &(S3I(s)->write_sequence[2]), 6)) ++ if (!CBB_add_bytes(&cbb, &(S3I(s)->write.sequence[2]), 6)) + goto err; + + p += DTLS1_RT_HEADER_LENGTH; +@@ -1296,7 +1296,7 @@ do_dtls1_write(SSL *s, int type, const unsigned char *buf, unsigned int len) + wr->type = type; /* not needed but helps for debugging */ + wr->length += DTLS1_RT_HEADER_LENGTH; + +- tls1_record_sequence_increment(S3I(s)->write_sequence); ++ tls1_record_sequence_increment(S3I(s)->write.sequence); + + /* now let's set up wb */ + wb->left = wr->length; +@@ -1324,7 +1324,7 @@ dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap) + { + int cmp; + unsigned int shift; +- const unsigned char *seq = S3I(s)->read_sequence; ++ const unsigned char *seq = S3I(s)->read.sequence; + + cmp = satsub64be(seq, bitmap->max_seq_num); + if (cmp > 0) { +@@ -1347,7 +1347,7 @@ dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap) + { + int cmp; + unsigned int shift; +- const unsigned char *seq = S3I(s)->read_sequence; ++ const unsigned char *seq = S3I(s)->read.sequence; + + cmp = satsub64be(seq, bitmap->max_seq_num); + if (cmp > 0) { +@@ -1429,16 +1429,16 @@ void + dtls1_reset_seq_numbers(SSL *s, int rw) + { + unsigned char *seq; +- unsigned int seq_bytes = sizeof(S3I(s)->read_sequence); ++ unsigned int seq_bytes = sizeof(S3I(s)->read.sequence); + + if (rw & SSL3_CC_READ) { +- seq = S3I(s)->read_sequence; ++ seq = S3I(s)->read.sequence; + D1I(s)->r_epoch++; + memcpy(&(D1I(s)->bitmap), &(D1I(s)->next_bitmap), sizeof(DTLS1_BITMAP)); + memset(&(D1I(s)->next_bitmap), 0x00, sizeof(DTLS1_BITMAP)); + } else { +- seq = S3I(s)->write_sequence; +- memcpy(D1I(s)->last_write_sequence, seq, sizeof(S3I(s)->write_sequence)); ++ seq = S3I(s)->write.sequence; ++ memcpy(D1I(s)->last_write_sequence, seq, sizeof(S3I(s)->write.sequence)); + D1I(s)->w_epoch++; + } + +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index 858010b87..2ef7e58f6 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -808,13 +808,15 @@ typedef struct ssl3_buffer_internal_st { + int left; /* how many bytes left */ + } SSL3_BUFFER_INTERNAL; + ++typedef struct ssl3_rw_state_internal_st { ++ unsigned char sequence[SSL3_SEQUENCE_SIZE]; ++ int mac_secret_size; ++ unsigned char mac_secret[EVP_MAX_MD_SIZE]; ++} SSL3_RW_STATE_INTERNAL; ++ + typedef struct ssl3_state_internal_st { +- unsigned char read_sequence[SSL3_SEQUENCE_SIZE]; +- int read_mac_secret_size; +- unsigned char read_mac_secret[EVP_MAX_MD_SIZE]; +- unsigned char write_sequence[SSL3_SEQUENCE_SIZE]; +- int write_mac_secret_size; +- unsigned char write_mac_secret[EVP_MAX_MD_SIZE]; ++ SSL3_RW_STATE_INTERNAL read; ++ SSL3_RW_STATE_INTERNAL write; + + SSL3_BUFFER_INTERNAL rbuf; /* read IO goes into here */ + SSL3_BUFFER_INTERNAL wbuf; /* write IO goes into here */ +diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c +index 1d924617c..e620a563d 100644 +--- a/src/lib/libssl/ssl_srvr.c ++++ b/src/lib/libssl/ssl_srvr.c +@@ -328,9 +328,9 @@ ssl3_accept(SSL *s) + * stateless while listening. + */ + if (listen) { +- memcpy(S3I(s)->write_sequence, +- S3I(s)->read_sequence, +- sizeof(S3I(s)->write_sequence)); ++ memcpy(S3I(s)->write.sequence, ++ S3I(s)->read.sequence, ++ sizeof(S3I(s)->write.sequence)); + } + + /* If we're just listening, stop here */ +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 363447b52..05c45fc31 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -510,6 +510,7 @@ tls1_change_cipher_state(SSL *s, int which) + const EVP_CIPHER *cipher; + const EVP_AEAD *aead; + char is_read, use_client_keys; ++ SSL3_RW_STATE_INTERNAL *rws; + + cipher = S3I(s)->tmp.new_sym_enc; + aead = S3I(s)->tmp.new_aead; +@@ -520,6 +521,7 @@ tls1_change_cipher_state(SSL *s, int which) + * just written one. + */ + is_read = (which & SSL3_CC_READ) != 0; ++ rws = is_read ? &S3I(s)->read : &S3I(s)->write; + + /* + * use_client_keys is true if we wish to use the keys for the "client +@@ -534,7 +536,7 @@ tls1_change_cipher_state(SSL *s, int which) + * dtls1_reset_seq_numbers(). + */ + if (!SSL_IS_DTLS(s)) { +- seq = is_read ? S3I(s)->read_sequence : S3I(s)->write_sequence; ++ seq = rws->sequence; + memset(seq, 0, SSL3_SEQUENCE_SIZE); + } + +@@ -577,13 +579,8 @@ tls1_change_cipher_state(SSL *s, int which) + goto err2; + } + +- if (is_read) { +- memcpy(S3I(s)->read_mac_secret, mac_secret, mac_secret_size); +- S3I(s)->read_mac_secret_size = mac_secret_size; +- } else { +- memcpy(S3I(s)->write_mac_secret, mac_secret, mac_secret_size); +- S3I(s)->write_mac_secret_size = mac_secret_size; +- } ++ memcpy(rws->mac_secret, mac_secret, mac_secret_size); ++ rws->mac_secret_size = mac_secret_size; + + if (aead != NULL) { + return tls1_change_cipher_state_aead(s, is_read, key, key_len, +@@ -700,11 +697,11 @@ tls1_enc(SSL *s, int send) + if (send) { + aead = s->internal->aead_write_ctx; + rec = &S3I(s)->wrec; +- seq = S3I(s)->write_sequence; ++ seq = S3I(s)->write.sequence; + } else { + aead = s->internal->aead_read_ctx; + rec = &S3I(s)->rrec; +- seq = S3I(s)->read_sequence; ++ seq = S3I(s)->read.sequence; + } + + if (aead) { +@@ -968,12 +965,12 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + + if (send) { + rec = &(ssl->s3->internal->wrec); +- seq = &(ssl->s3->internal->write_sequence[0]); ++ seq = &(ssl->s3->internal->write.sequence[0]); + hash = ssl->internal->write_hash; + t = ssl->internal->write_mac_size; + } else { + rec = &(ssl->s3->internal->rrec); +- seq = &(ssl->s3->internal->read_sequence[0]); ++ seq = &(ssl->s3->internal->read.sequence[0]); + hash = ssl->read_hash; + t = ssl->read_mac_size; + } +@@ -1014,8 +1011,8 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + if (!ssl3_cbc_digest_record(mac_ctx, + md, &md_size, header, rec->input, + rec->length + md_size, orig_len, +- ssl->s3->internal->read_mac_secret, +- ssl->s3->internal->read_mac_secret_size)) ++ ssl->s3->internal->read.mac_secret, ++ ssl->s3->internal->read.mac_secret_size)) + return -1; + } else { + EVP_DigestSignUpdate(mac_ctx, header, sizeof(header)); +-- +2.17.1 + diff --git a/0084-ssl-drop-mac_flags-field.patch b/0084-ssl-drop-mac_flags-field.patch new file mode 100644 index 0000000..0cda041 --- /dev/null +++ b/0084-ssl-drop-mac_flags-field.patch @@ -0,0 +1,87 @@ +From 1b42f56675b39ba4f1514b328a8dfb6c35b8cb4a Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 17 Apr 2020 16:43:39 +0300 +Subject: [PATCH 84/87] ssl: drop mac_flags field + +Use s->session->cipher->algorithm2 instead. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/ssl.h | 3 --- + src/lib/libssl/ssl_locl.h | 4 ---- + src/lib/libssl/t1_enc.c | 16 +++------------- + 3 files changed, 3 insertions(+), 20 deletions(-) + +diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h +index 1f9095feb..1c5e174b8 100644 +--- a/src/lib/libssl/ssl.h ++++ b/src/lib/libssl/ssl.h +@@ -796,9 +796,6 @@ void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + #define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) + #define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) + +-#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +-#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +- + #ifndef OPENSSL_NO_SSL_INTERN + struct ssl_internal_st; + +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index 2ef7e58f6..f4ad6b5ee 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -723,10 +723,6 @@ typedef struct ssl_internal_st { + /* crypto */ + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + +- /* These are the ones being used, the ones in SSL_SESSION are +- * the ones to be 'copied' into these ones */ +- int mac_flags; +- + SSL_AEAD_CTX *aead_read_ctx; /* AEAD context. If non-NULL, then + enc_read_ctx and read_hash are + ignored. */ +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 05c45fc31..4c726f73f 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -418,11 +418,6 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + mac_type = S3I(s)->tmp.new_mac_pkey_type; + + if (is_read) { +- if (S3I(s)->hs.new_cipher->algorithm2 & TLS1_STREAM_MAC) +- s->internal->mac_flags |= SSL_MAC_FLAG_READ_MAC_STREAM; +- else +- s->internal->mac_flags &= ~SSL_MAC_FLAG_READ_MAC_STREAM; +- + ssl_clear_cipher_read_state(s); + + if ((cipher_ctx = EVP_CIPHER_CTX_new()) == NULL) +@@ -432,11 +427,6 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + goto err; + s->read_hash = mac_ctx; + } else { +- if (S3I(s)->hs.new_cipher->algorithm2 & TLS1_STREAM_MAC) +- s->internal->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; +- else +- s->internal->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; +- + /* + * DTLS fragments retain a pointer to the compression, cipher + * and hash contexts, so that it can restore state in order +@@ -958,9 +948,9 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + size_t md_size, orig_len; + EVP_MD_CTX hmac, *mac_ctx; + unsigned char header[13]; +- int stream_mac = (send ? +- (ssl->internal->mac_flags & SSL_MAC_FLAG_WRITE_MAC_STREAM) : +- (ssl->internal->mac_flags & SSL_MAC_FLAG_READ_MAC_STREAM)); ++ int stream_mac = ssl->session && ssl->session->cipher ? ++ ssl->session->cipher->algorithm2 & TLS1_STREAM_MAC : ++ 0; + int t; + + if (send) { +-- +2.17.1 + diff --git a/0085-ssl-support-IV-increments-for-GOST-CTR-OMAC-ciphersu.patch b/0085-ssl-support-IV-increments-for-GOST-CTR-OMAC-ciphersu.patch new file mode 100644 index 0000000..a6fbc7e --- /dev/null +++ b/0085-ssl-support-IV-increments-for-GOST-CTR-OMAC-ciphersu.patch @@ -0,0 +1,177 @@ +From a7c432fd088bbf6bc256fe96236c8e0a01322de5 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Fri, 17 Apr 2020 23:14:53 +0300 +Subject: [PATCH 85/87] ssl: support IV increments for GOST CTR-OMAC + ciphersuites + +CTR-OMAC ciphersuites are defined so that for each record cipher IV is +set to the one generated by key_block incremented by record's sequece +number. Support handling this in the encryption layer. + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/s3_lib.c | 4 ++-- + src/lib/libssl/ssl_locl.h | 3 +++ + src/lib/libssl/ssl_pkt.c | 7 +++++++ + src/lib/libssl/t1_enc.c | 38 +++++++++++++++++++++++++++++--------- + 4 files changed, 41 insertions(+), 11 deletions(-) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index 106a2567a..ba87e9101 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -1316,7 +1316,7 @@ SSL_CIPHER ssl3_ciphers[] = { + .algorithm_mac = SSL_KUZNYECHIK_OMAC, + .algorithm_ssl = SSL_TLSV1_2, + .algo_strength = SSL_HIGH, +- .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256, ++ .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256|TLS1_NONCE_ADD_SEQUENCE, + .strength_bits = 256, + .alg_bits = 256 + }, +@@ -1332,7 +1332,7 @@ SSL_CIPHER ssl3_ciphers[] = { + .algorithm_mac = SSL_MAGMA_OMAC, + .algorithm_ssl = SSL_TLSV1_2, + .algo_strength = SSL_HIGH, +- .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256, ++ .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256|TLS1_NONCE_ADD_SEQUENCE, + .strength_bits = 256, + .alg_bits = 256 + }, +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index f4ad6b5ee..dc291ae4f 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -288,6 +288,7 @@ __BEGIN_HIDDEN_DECLS + * (currently this also goes into algorithm2). + */ + #define TLS1_STREAM_MAC 0x04 ++#define TLS1_NONCE_ADD_SEQUENCE 0x02 + + /* + * SSL_CIPHER_ALGORITHM2_VARIABLE_NONCE_IN_RECORD is an algorithm2 flag that +@@ -808,6 +809,8 @@ typedef struct ssl3_rw_state_internal_st { + unsigned char sequence[SSL3_SEQUENCE_SIZE]; + int mac_secret_size; + unsigned char mac_secret[EVP_MAX_MD_SIZE]; ++ int cipher_iv_size; ++ unsigned char cipher_iv[EVP_MAX_IV_LENGTH]; + } SSL3_RW_STATE_INTERNAL; + + typedef struct ssl3_state_internal_st { +diff --git a/src/lib/libssl/ssl_pkt.c b/src/lib/libssl/ssl_pkt.c +index 23a5509c3..e1cb249df 100644 +--- a/src/lib/libssl/ssl_pkt.c ++++ b/src/lib/libssl/ssl_pkt.c +@@ -485,6 +485,7 @@ ssl3_get_record(SSL *s) + } + + i = tls1_mac(s,md,0 /* not send */); ++ tls1_record_sequence_increment(S3I(s)->read.sequence); + if (i < 0 || mac == NULL || + timingsafe_memcmp(md, mac, (size_t)mac_size) != 0) + enc_err = -1; +@@ -702,6 +703,12 @@ ssl3_create_record(SSL *s, unsigned char *p, int type, const unsigned char *buf, + /* tls1_enc can only have an error on read */ + tls1_enc(s, 1); + ++ /* Increment sequence after encrypting so that tls1_enc can use seq for ++ * nonce calculation */ ++ if (mac_size != 0) { ++ tls1_record_sequence_increment(S3I(s)->write.sequence); ++ } ++ + /* record length after mac and block padding */ + if (!CBB_add_u16(&cbb, wr->length)) + goto err; +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 4c726f73f..7ed6825a1 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -571,6 +571,8 @@ tls1_change_cipher_state(SSL *s, int which) + + memcpy(rws->mac_secret, mac_secret, mac_secret_size); + rws->mac_secret_size = mac_secret_size; ++ memcpy(rws->cipher_iv, iv, iv_len); ++ rws->cipher_iv_size = iv_len; + + if (aead != NULL) { + return tls1_change_cipher_state_aead(s, is_read, key, key_len, +@@ -680,18 +682,21 @@ tls1_enc(SSL *s, int send) + const EVP_CIPHER *enc; + EVP_CIPHER_CTX *ds; + SSL3_RECORD_INTERNAL *rec; +- unsigned char *seq; ++ SSL3_RW_STATE_INTERNAL *rws; + unsigned long l; + int bs, i, j, k, ret, mac_size = 0; ++ int add_nonce = s->session && s->session->cipher ? ++ s->session->cipher->algorithm2 & TLS1_NONCE_ADD_SEQUENCE: ++ 0; + + if (send) { + aead = s->internal->aead_write_ctx; + rec = &S3I(s)->wrec; +- seq = S3I(s)->write.sequence; ++ rws = &S3I(s)->write; + } else { + aead = s->internal->aead_read_ctx; + rec = &S3I(s)->rrec; +- seq = S3I(s)->read.sequence; ++ rws = &S3I(s)->read; + } + + if (aead) { +@@ -700,11 +705,11 @@ tls1_enc(SSL *s, int send) + unsigned int nonce_used; + + if (SSL_IS_DTLS(s)) { +- dtls1_build_sequence_number(ad, seq, ++ dtls1_build_sequence_number(ad, rws->sequence, + send ? D1I(s)->w_epoch : D1I(s)->r_epoch); + } else { +- memcpy(ad, seq, SSL3_SEQUENCE_SIZE); +- tls1_record_sequence_increment(seq); ++ memcpy(ad, rws->sequence, SSL3_SEQUENCE_SIZE); ++ tls1_record_sequence_increment(rws->sequence); + } + + ad[8] = rec->type; +@@ -899,6 +904,24 @@ tls1_enc(SSL *s, int send) + return 0; + } + ++ if (add_nonce) { ++ unsigned char new_iv[EVP_MAX_IV_LENGTH]; ++ int iv_size = rws->cipher_iv_size; ++ unsigned char cf = 0, tmp; ++ ++ for (i = 1; i <= iv_size; i++) { ++ tmp = new_iv[iv_size - i] = ++ rws->cipher_iv[iv_size - i] + rws->sequence[SSL3_SEQUENCE_SIZE - i] + cf; ++ if (tmp != rws->cipher_iv[iv_size - i]) ++ cf = (tmp < rws->cipher_iv[iv_size - i]); ++ } ++ ++ if (!EVP_CipherInit_ex(ds, NULL, NULL, NULL, new_iv, -1)) { ++ SSLerror(s, ERR_R_EVP_LIB); ++ return -1; ++ } ++ } ++ + i = EVP_Cipher(ds, rec->data, rec->input, l); + if ((EVP_CIPHER_flags(ds->cipher) & + EVP_CIPH_FLAG_CUSTOM_CIPHER) ? (i < 0) : (i == 0)) +@@ -1014,9 +1037,6 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + if (!stream_mac) + EVP_MD_CTX_cleanup(&hmac); + +- if (!SSL_IS_DTLS(ssl)) +- tls1_record_sequence_increment(seq); +- + return (md_size); + } + +-- +2.17.1 + diff --git a/0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch b/0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch new file mode 100644 index 0000000..55dd804 --- /dev/null +++ b/0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch @@ -0,0 +1,275 @@ +From 363239bfbe92bfe654c21f1b181531ebdd8fa8ad Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 18 Apr 2020 18:34:28 +0300 +Subject: [PATCH 86/87] kdftree: add support for TLSTREE rekeying algorithm + +GOST CTR-OMAC ciphersuites use external rekeying names TLSTREE. Add +support for this transformation. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libcrypto/kdftree/kdftree.c | 3 +- + src/lib/libcrypto/kdftree/kdftree.h | 23 ++++ + src/lib/libcrypto/kdftree/kdftree_locl.h | 31 +++++ + src/lib/libcrypto/kdftree/tlstree.c | 154 +++++++++++++++++++++++ + 4 files changed, 210 insertions(+), 1 deletion(-) + create mode 100644 src/lib/libcrypto/kdftree/kdftree_locl.h + create mode 100644 src/lib/libcrypto/kdftree/tlstree.c + +diff --git a/src/lib/libcrypto/kdftree/kdftree.c b/src/lib/libcrypto/kdftree/kdftree.c +index 4dc7b0096..957ca2875 100644 +--- a/src/lib/libcrypto/kdftree/kdftree.c ++++ b/src/lib/libcrypto/kdftree/kdftree.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include "kdftree_locl.h" + + #include + +@@ -26,7 +27,7 @@ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff)) + +-static int ++int + kdf_tree_block(HMAC_CTX *ctx, + const unsigned char *i, unsigned int i_length, + const unsigned char *label, unsigned int label_length, +diff --git a/src/lib/libcrypto/kdftree/kdftree.h b/src/lib/libcrypto/kdftree/kdftree.h +index 132f70690..378b06b51 100644 +--- a/src/lib/libcrypto/kdftree/kdftree.h ++++ b/src/lib/libcrypto/kdftree/kdftree.h +@@ -40,6 +40,29 @@ int KDF_TREE_SIMPLE(const EVP_MD *md, ENGINE *impl, + const unsigned char *seed, unsigned int seed_length, + unsigned char *out); + ++/* TLSTREE is an external re-keying function (see ++ * draft-smyshlyaev-tls12-gost-suites Section 8 for the definition, RFC 8645 ++ * Section 5.2.2 for the discussion of the approach. */ ++ ++/* Opaque */ ++typedef struct TLSTREE_CTX_st TLSTREE_CTX; ++ ++typedef struct tlstree_const_st { ++ uint64_t c1, c2, c3; ++} TLSTREE_CONST; ++ ++TLSTREE_CTX *TLSTREE_CTX_new(void); ++void TLSTREE_CTX_free(TLSTREE_CTX *ctx); ++ ++int TLSTREE_Init(TLSTREE_CTX *ctx, ++ const TLSTREE_CONST *tlsconst, ++ const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, ++ int key_length); ++int TLSTREE_GET(TLSTREE_CTX *ctx, ++ unsigned char *seq, ++ unsigned char *out); ++ + #if defined(__cplusplus) + } /* extern C */ + #endif +diff --git a/src/lib/libcrypto/kdftree/kdftree_locl.h b/src/lib/libcrypto/kdftree/kdftree_locl.h +new file mode 100644 +index 000000000..0eff3156d +--- /dev/null ++++ b/src/lib/libcrypto/kdftree/kdftree_locl.h +@@ -0,0 +1,31 @@ ++/* $OpenBSD: kdftree_locl.h,v 1.4 2019/11/21 20:02:20 tim Exp $ */ ++/* Copyright (c) 2020, Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#ifndef OPENSSL_HEADER_KDFTREE_LOCL_H ++#define OPENSSL_HEADER_KDFTREE_LOCL_H ++ ++#include ++ ++int kdf_tree_block(HMAC_CTX *ctx, ++ const unsigned char *i, unsigned int i_length, ++ const unsigned char *label, unsigned int label_length, ++ const unsigned char *seed, unsigned int seed_length, ++ const unsigned char *l, unsigned int l_length, ++ unsigned char *out, unsigned int *length); ++ ++#endif /* OPENSSL_HEADER_KDFTREE_LOCL_H */ +diff --git a/src/lib/libcrypto/kdftree/tlstree.c b/src/lib/libcrypto/kdftree/tlstree.c +new file mode 100644 +index 000000000..5c3322675 +--- /dev/null ++++ b/src/lib/libcrypto/kdftree/tlstree.c +@@ -0,0 +1,154 @@ ++/* $OpenBSD: tlstree.h,v 1.4 2019/11/21 20:02:20 tim Exp $ */ ++/* Copyright (c) 2020, Dmitry Baryshkov ++ * ++ * Sponsored by ROSA Linux ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include "kdftree_locl.h" ++#include ++ ++#define ll2c(l,c) (*((c)++)=(unsigned char)(((l)>>56)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>48)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>40)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>24)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ ++ *((c)++)=(unsigned char)(((l) )&0xff)) ++ ++#define c2ll(c,l) (l =((uint64_t)(*((c)++))) , \ ++ l|=((uint64_t)(*((c)++)))<< 8, \ ++ l|=((uint64_t)(*((c)++)))<<16, \ ++ l|=((uint64_t)(*((c)++)))<<24, \ ++ l|=((uint64_t)(*((c)++)))<<32, \ ++ l|=((uint64_t)(*((c)++)))<<40, \ ++ l|=((uint64_t)(*((c)++)))<<48, \ ++ l|=((uint64_t)(*((c)++)))<<56) ++ ++#define TLSTREE_L1 ((const unsigned char *)"level1") ++#define TLSTREE_L2 ((const unsigned char *)"level2") ++#define TLSTREE_L3 ((const unsigned char *)"level3") ++#define TLSTREE_L_LENGTH 6 ++ ++#define TLSTREE_KEY_LENGTH 32 ++ ++struct TLSTREE_CTX_st { ++ uint64_t seq; ++ const TLSTREE_CONST *tlsconst; ++ HMAC_CTX ctx1, ctx2, ctx3; ++ unsigned char current[TLSTREE_KEY_LENGTH]; ++}; ++ ++TLSTREE_CTX * ++TLSTREE_CTX_new(void) ++{ ++ TLSTREE_CTX *ctx; ++ ++ ctx = malloc(sizeof(TLSTREE_CTX)); ++ if (!ctx) ++ return NULL; ++ ++ HMAC_CTX_init(&ctx->ctx1); ++ HMAC_CTX_init(&ctx->ctx2); ++ HMAC_CTX_init(&ctx->ctx3); ++ ctx->tlsconst = NULL; ++ ++ return ctx; ++} ++ ++void ++TLSTREE_CTX_free(TLSTREE_CTX *ctx) ++{ ++ if (ctx == NULL) ++ return; ++ ++ HMAC_CTX_cleanup(&ctx->ctx1); ++ HMAC_CTX_cleanup(&ctx->ctx2); ++ HMAC_CTX_cleanup(&ctx->ctx3); ++} ++ ++static int tlstree_one(HMAC_CTX *ctx, const unsigned char *label, uint64_t seq, unsigned char *out) ++{ ++ unsigned char seed[8], *p = seed; ++ static const unsigned char data1[1] = { 0x01 }; ++ static const unsigned char data2[2] = { 0x01, 0x00 }; ++ int dummy = TLSTREE_KEY_LENGTH; ++ ++ ll2c(seq, p); ++ return kdf_tree_block(ctx, data1, 1, label, TLSTREE_L_LENGTH, seed, 8, data2, 2, out, &dummy); ++} ++ ++int ++TLSTREE_Init(TLSTREE_CTX *ctx, ++ const TLSTREE_CONST *tlsconst, ++ const EVP_MD *md, ENGINE *impl, ++ const unsigned char *key, ++ int key_length) ++{ ++ unsigned char tmp[TLSTREE_KEY_LENGTH]; ++ ++ /* Support only reasonable cases, which allow simplification of KDF_TREE calls */ ++ if (key_length != EVP_MD_size(md) || ++ key_length != TLSTREE_KEY_LENGTH) ++ return 0; ++ ++ if (!ctx || !tlsconst || !md || !key) ++ return 0; ++ ++ ctx->tlsconst = tlsconst; ++ ctx->seq = 0; ++ ++ if (!HMAC_Init_ex(&ctx->ctx1, key, TLSTREE_KEY_LENGTH, md, impl) || ++ !tlstree_one(&ctx->ctx1, TLSTREE_L1, 0, tmp) || ++ !HMAC_Init_ex(&ctx->ctx2, tmp, TLSTREE_KEY_LENGTH, md, impl) || ++ !tlstree_one(&ctx->ctx2, TLSTREE_L2, 0, tmp) || ++ !HMAC_Init_ex(&ctx->ctx3, tmp, TLSTREE_KEY_LENGTH, md, impl) || ++ !tlstree_one(&ctx->ctx3, TLSTREE_L3, 0, ctx->current)) ++ return 0; ++ ++ return 1; ++} ++ ++int ++TLSTREE_GET(TLSTREE_CTX *ctx, ++ unsigned char *seq, ++ unsigned char *out) ++{ ++ uint64_t s; ++ unsigned char *p = seq; ++ unsigned char tmp[TLSTREE_KEY_LENGTH]; ++ ++ c2ll(p, s); ++ ++ if ((s & ctx->tlsconst->c1) != (ctx->seq & ctx->tlsconst->c1)) { ++ if (!tlstree_one(&ctx->ctx1, TLSTREE_L1, 0, tmp) || ++ !HMAC_Init_ex(&ctx->ctx2, tmp, TLSTREE_KEY_LENGTH, NULL, NULL)) ++ return 0; ++ } ++ if ((s & ctx->tlsconst->c2) != (ctx->seq & ctx->tlsconst->c2)) { ++ if (!tlstree_one(&ctx->ctx2, TLSTREE_L2, 0, tmp) || ++ !HMAC_Init_ex(&ctx->ctx3, tmp, TLSTREE_KEY_LENGTH, NULL, NULL)) ++ return 0; ++ } ++ if ((s & ctx->tlsconst->c3) != (ctx->seq & ctx->tlsconst->c3)) { ++ if (!tlstree_one(&ctx->ctx3, TLSTREE_L3, 0, ctx->current)) ++ return 0; ++ } ++ ++ memcpy(out, ctx->current, TLSTREE_KEY_LENGTH); ++ ++ return 1; ++} +-- +2.17.1 + diff --git a/0087-ssl-add-support-for-TLSTREE-rekeying.patch b/0087-ssl-add-support-for-TLSTREE-rekeying.patch new file mode 100644 index 0000000..9d1e844 --- /dev/null +++ b/0087-ssl-add-support-for-TLSTREE-rekeying.patch @@ -0,0 +1,243 @@ +From 6da2bfbafdce6ef876fe8645a01da835831f1f2a Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 18 Apr 2020 18:42:12 +0300 +Subject: [PATCH 87/87] ssl: add support for TLSTREE rekeying + +CTR-OMAC ciphersuites use TLSTREE rekeying to change keys regularly. +Handle TLSTREE rekeying for those ciphersuites. + +Sponsored by ROSA Linux + +Signed-off-by: Dmitry Baryshkov +--- + src/lib/libssl/s3_lib.c | 18 +++++++++++++++-- + src/lib/libssl/ssl.h | 6 ++++++ + src/lib/libssl/ssl_lib.c | 14 +++++++++++++ + src/lib/libssl/ssl_locl.h | 4 ++++ + src/lib/libssl/t1_enc.c | 42 +++++++++++++++++++++++++++++++++++++++ + 5 files changed, 82 insertions(+), 2 deletions(-) + +diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c +index ba87e9101..2636cfd4f 100644 +--- a/src/lib/libssl/s3_lib.c ++++ b/src/lib/libssl/s3_lib.c +@@ -169,6 +169,18 @@ + */ + #define FIXED_NONCE_LEN(x) (((x / 2) & 0xf) << 24) + ++static const TLSTREE_CONST tlstree_magma_ctr_omac = { ++ .c1 = UINT64_C(0xFFFFFFC000000000), ++ .c2 = UINT64_C(0xFFFFFFFFFE000000), ++ .c3 = UINT64_C(0xFFFFFFFFFFFFF000), ++}; ++ ++static const TLSTREE_CONST tlstree_kuznyechik_ctr_omac = { ++ .c1 = UINT64_C(0xFFFFFFFF00000000), ++ .c2 = UINT64_C(0xFFFFFFFFFFF80000), ++ .c3 = UINT64_C(0xFFFFFFFFFFFFFFC0), ++}; ++ + /* list of available SSLv3 ciphers (sorted by id) */ + SSL_CIPHER ssl3_ciphers[] = { + +@@ -1318,7 +1330,8 @@ SSL_CIPHER ssl3_ciphers[] = { + .algo_strength = SSL_HIGH, + .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256|TLS1_NONCE_ADD_SEQUENCE, + .strength_bits = 256, +- .alg_bits = 256 ++ .alg_bits = 256, ++ .tlstree = &tlstree_kuznyechik_ctr_omac, + }, + + /* Cipher C101 */ +@@ -1334,7 +1347,8 @@ SSL_CIPHER ssl3_ciphers[] = { + .algo_strength = SSL_HIGH, + .algorithm2 = SSL_HANDSHAKE_MAC_STREEBOG256|TLS1_PRF_STREEBOG256|TLS1_NONCE_ADD_SEQUENCE, + .strength_bits = 256, +- .alg_bits = 256 ++ .alg_bits = 256, ++ .tlstree = &tlstree_magma_ctr_omac, + }, + + /* Cipher C102 */ +diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h +index 1c5e174b8..a9f414224 100644 +--- a/src/lib/libssl/ssl.h ++++ b/src/lib/libssl/ssl.h +@@ -153,6 +153,8 @@ + + #include + ++#include ++ + #ifndef OPENSSL_NO_DEPRECATED + #include + #include +@@ -397,6 +399,10 @@ struct ssl_cipher_st { + unsigned long algorithm2; /* Extra flags */ + int strength_bits; /* Number of bits really used */ + int alg_bits; /* Number of bits for algorithm */ ++ ++#ifndef OPENSSL_NO_GOST ++ const TLSTREE_CONST *tlstree; /* TLSTREE parameters */ ++#endif + }; + + +diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c +index c989d802c..a54c01dc7 100644 +--- a/src/lib/libssl/ssl_lib.c ++++ b/src/lib/libssl/ssl_lib.c +@@ -2545,6 +2545,13 @@ ssl_clear_cipher_read_state(SSL *s) + free(s->internal->aead_read_ctx); + s->internal->aead_read_ctx = NULL; + } ++ ++#ifndef OPENSSL_NO_GOST ++ if (S3I(s)->read.tlstree_cipher != NULL) ++ TLSTREE_CTX_free(S3I(s)->read.tlstree_cipher); ++ if (S3I(s)->read.tlstree_mac != NULL) ++ TLSTREE_CTX_free(S3I(s)->read.tlstree_mac); ++#endif + } + + void +@@ -2561,6 +2568,13 @@ ssl_clear_cipher_write_state(SSL *s) + free(s->internal->aead_write_ctx); + s->internal->aead_write_ctx = NULL; + } ++ ++#ifndef OPENSSL_NO_GOST ++ if (S3I(s)->write.tlstree_cipher != NULL) ++ TLSTREE_CTX_free(S3I(s)->write.tlstree_cipher); ++ if (S3I(s)->write.tlstree_mac != NULL) ++ TLSTREE_CTX_free(S3I(s)->write.tlstree_mac); ++#endif + } + + /* Fix this function so that it takes an optional type parameter */ +diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h +index dc291ae4f..6871b01a9 100644 +--- a/src/lib/libssl/ssl_locl.h ++++ b/src/lib/libssl/ssl_locl.h +@@ -811,6 +811,10 @@ typedef struct ssl3_rw_state_internal_st { + unsigned char mac_secret[EVP_MAX_MD_SIZE]; + int cipher_iv_size; + unsigned char cipher_iv[EVP_MAX_IV_LENGTH]; ++#ifndef OPENSSL_NO_GOST ++ TLSTREE_CTX *tlstree_cipher; ++ TLSTREE_CTX *tlstree_mac; ++#endif + } SSL3_RW_STATE_INTERNAL; + + typedef struct ssl3_state_internal_st { +diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c +index 7ed6825a1..a4219599d 100644 +--- a/src/lib/libssl/t1_enc.c ++++ b/src/lib/libssl/t1_enc.c +@@ -411,6 +411,7 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + const EVP_MD *mac; + const EVP_CIPHER *mac_cipher; + int mac_type; ++ SSL3_RW_STATE_INTERNAL *rws; + + cipher = S3I(s)->tmp.new_sym_enc; + mac = S3I(s)->tmp.new_hash; +@@ -426,6 +427,7 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + if ((mac_ctx = EVP_MD_CTX_new()) == NULL) + goto err; + s->read_hash = mac_ctx; ++ rws = &S3I(s)->read; + } else { + /* + * DTLS fragments retain a pointer to the compression, cipher +@@ -443,6 +445,7 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + if ((mac_ctx = EVP_MD_CTX_new()) == NULL) + goto err; + s->internal->write_hash = mac_ctx; ++ rws = &S3I(s)->write; + } + + EVP_CipherInit_ex(cipher_ctx, cipher, NULL, key, iv, !is_read); +@@ -465,6 +468,24 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, + else + s->internal->write_mac_size = mac_size; + ++#ifndef OPENSSL_NO_GOST ++ if (s->session->cipher->tlstree) { ++ rws->tlstree_cipher = TLSTREE_CTX_new(); ++ rws->tlstree_mac = TLSTREE_CTX_new(); ++ if (rws->tlstree_cipher == NULL || ++ rws->tlstree_mac == NULL || ++ !TLSTREE_Init(rws->tlstree_cipher, ++ s->session->cipher->tlstree, ++ EVP_streebog256(), NULL, ++ key, key_len) || ++ !TLSTREE_Init(rws->tlstree_mac, ++ s->session->cipher->tlstree, ++ EVP_streebog256(), NULL, ++ mac_secret, mac_secret_size)) ++ goto err; ++ } ++#endif ++ + if (S3I(s)->hs.new_cipher->algorithm_enc == SSL_eGOST2814789CNT) { + int nid; + if (S3I(s)->hs.new_cipher->algorithm2 & SSL_HANDSHAKE_MAC_GOST94) +@@ -904,6 +925,14 @@ tls1_enc(SSL *s, int send) + return 0; + } + ++#ifndef OPENSSL_NO_GOST ++ if (rws->tlstree_cipher != NULL) { ++ unsigned char tmp[EVP_MAX_KEY_LENGTH]; ++ if (!TLSTREE_GET(rws->tlstree_cipher, rws->sequence, tmp) || ++ !EVP_CipherInit_ex(ds, NULL, NULL, tmp, NULL, -1)) ++ return 0; ++ } ++#endif + if (add_nonce) { + unsigned char new_iv[EVP_MAX_IV_LENGTH]; + int iv_size = rws->cipher_iv_size; +@@ -974,6 +1003,7 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + int stream_mac = ssl->session && ssl->session->cipher ? + ssl->session->cipher->algorithm2 & TLS1_STREAM_MAC : + 0; ++ SSL3_RW_STATE_INTERNAL *rws; + int t; + + if (send) { +@@ -981,11 +1011,13 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + seq = &(ssl->s3->internal->write.sequence[0]); + hash = ssl->internal->write_hash; + t = ssl->internal->write_mac_size; ++ rws = &S3I(ssl)->write; + } else { + rec = &(ssl->s3->internal->rrec); + seq = &(ssl->s3->internal->read.sequence[0]); + hash = ssl->read_hash; + t = ssl->read_mac_size; ++ rws = &S3I(ssl)->read; + } + + OPENSSL_assert(t >= 0); +@@ -1028,6 +1060,16 @@ tls1_mac(SSL *ssl, unsigned char *md, int send) + ssl->s3->internal->read.mac_secret_size)) + return -1; + } else { ++#ifndef OPENSSL_NO_GOST ++ if (rws->tlstree_mac != NULL) { ++ unsigned char tmp[EVP_MAX_KEY_LENGTH]; ++ if (mac_ctx->pctx == NULL || ++ !TLSTREE_GET(rws->tlstree_mac, seq, tmp) || ++ EVP_PKEY_CTX_ctrl(mac_ctx->pctx, -1, EVP_PKEY_OP_SIGNCTX, ++ EVP_PKEY_CTRL_SET_MAC_KEY, rws->mac_secret_size, tmp) <= 0) ++ return -1; ++ } ++#endif + EVP_DigestSignUpdate(mac_ctx, header, sizeof(header)); + EVP_DigestSignUpdate(mac_ctx, rec->input, rec->length); + t = EVP_DigestSignFinal(mac_ctx, md, &md_size); +-- +2.17.1 + diff --git a/PORTABLE-0030-modes-add-functions-implementing-common-code-for-64-.patch b/PORTABLE-0030-modes-add-functions-implementing-common-code-for-64-.patch new file mode 100644 index 0000000..5b0c119 --- /dev/null +++ b/PORTABLE-0030-modes-add-functions-implementing-common-code-for-64-.patch @@ -0,0 +1,15 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -723,6 +723,10 @@ libcrypto_la_SOURCES += modes/cts128.c + libcrypto_la_SOURCES += modes/gcm128.c + libcrypto_la_SOURCES += modes/ofb128.c + libcrypto_la_SOURCES += modes/xts128.c ++libcrypto_la_SOURCES += modes/cbc64.c ++libcrypto_la_SOURCES += modes/cfb64.c ++libcrypto_la_SOURCES += modes/ctr64.c ++libcrypto_la_SOURCES += modes/ofb64.c + noinst_HEADERS += modes/modes_lcl.h + + # objects diff --git a/PORTABLE-0033-gost-add-support-for-magma-cipher.patch b/PORTABLE-0033-gost-add-support-for-magma-cipher.patch new file mode 100644 index 0000000..b4dd413 --- /dev/null +++ b/PORTABLE-0033-gost-add-support-for-magma-cipher.patch @@ -0,0 +1,12 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -638,6 +638,7 @@ libcrypto_la_SOURCES += evp/e_des.c + libcrypto_la_SOURCES += evp/e_des3.c + libcrypto_la_SOURCES += evp/e_gost2814789.c + libcrypto_la_SOURCES += evp/e_idea.c ++libcrypto_la_SOURCES += evp/e_magma.c + libcrypto_la_SOURCES += evp/e_null.c + libcrypto_la_SOURCES += evp/e_old.c + libcrypto_la_SOURCES += evp/e_rc2.c diff --git a/PORTABLE-0034-gost-add-support-for-kuznyechik-cipher.patch b/PORTABLE-0034-gost-add-support-for-kuznyechik-cipher.patch new file mode 100644 index 0000000..fcc6639 --- /dev/null +++ b/PORTABLE-0034-gost-add-support-for-kuznyechik-cipher.patch @@ -0,0 +1,24 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -638,6 +638,7 @@ libcrypto_la_SOURCES += evp/e_des.c + libcrypto_la_SOURCES += evp/e_des3.c + libcrypto_la_SOURCES += evp/e_gost2814789.c + libcrypto_la_SOURCES += evp/e_idea.c ++libcrypto_la_SOURCES += evp/e_kuznyechik.c + libcrypto_la_SOURCES += evp/e_magma.c + libcrypto_la_SOURCES += evp/e_null.c + libcrypto_la_SOURCES += evp/e_old.c +@@ -698,9 +699,11 @@ libcrypto_la_SOURCES += gost/gostr341001 + libcrypto_la_SOURCES += gost/gostr341001_params.c + libcrypto_la_SOURCES += gost/gostr341001_pmeth.c + libcrypto_la_SOURCES += gost/gostr341194.c ++libcrypto_la_SOURCES += gost/kuznyechik.c + libcrypto_la_SOURCES += gost/streebog.c + noinst_HEADERS += gost/gost_asn1.h + noinst_HEADERS += gost/gost_locl.h ++noinst_HEADERS += gost/kuztable.h + + # hkdf + libcrypto_la_SOURCES += hkdf/hkdf.c diff --git a/PORTABLE-0041-kdftree-add-functions-implementing-KDF_TREE-function.patch b/PORTABLE-0041-kdftree-add-functions-implementing-KDF_TREE-function.patch new file mode 100644 index 0000000..a9332be --- /dev/null +++ b/PORTABLE-0041-kdftree-add-functions-implementing-KDF_TREE-function.patch @@ -0,0 +1,26 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -721,6 +721,9 @@ libcrypto_la_SOURCES += idea/i_ofb64.c + libcrypto_la_SOURCES += idea/i_skey.c + noinst_HEADERS += idea/idea_lcl.h + ++# kdftree ++libcrypto_la_SOURCES += kdftree/kdftree.c ++ + # lhash + libcrypto_la_SOURCES += lhash/lh_stats.c + libcrypto_la_SOURCES += lhash/lhash.c +Index: libressl-3.1.0/include/openssl/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/include/openssl/Makefile.am ++++ libressl-3.1.0/include/openssl/Makefile.am +@@ -35,6 +35,7 @@ opensslinclude_HEADERS += gost.h + opensslinclude_HEADERS += hkdf.h + opensslinclude_HEADERS += hmac.h + opensslinclude_HEADERS += idea.h ++opensslinclude_HEADERS += kdftree.h + opensslinclude_HEADERS += lhash.h + opensslinclude_HEADERS += md4.h + opensslinclude_HEADERS += md5.h diff --git a/PORTABLE-0042-gost-add-support-for-new-GOST-key-transport-data-for.patch b/PORTABLE-0042-gost-add-support-for-new-GOST-key-transport-data-for.patch new file mode 100644 index 0000000..b9f9d79 --- /dev/null +++ b/PORTABLE-0042-gost-add-support-for-new-GOST-key-transport-data-for.patch @@ -0,0 +1,13 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -693,6 +693,7 @@ libcrypto_la_SOURCES += gost/gost89imit_ + libcrypto_la_SOURCES += gost/gost89imit_pmeth.c + libcrypto_la_SOURCES += gost/gost_asn1.c + libcrypto_la_SOURCES += gost/gost_err.c ++libcrypto_la_SOURCES += gost/gost_kdf.c + libcrypto_la_SOURCES += gost/gostr341001.c + libcrypto_la_SOURCES += gost/gostr341001_ameth.c + libcrypto_la_SOURCES += gost/gostr341001_key.c + diff --git a/PORTABLE-0043-modes-add-support-for-128-bit-MGM-mode.patch b/PORTABLE-0043-modes-add-support-for-128-bit-MGM-mode.patch new file mode 100644 index 0000000..9900309 --- /dev/null +++ b/PORTABLE-0043-modes-add-support-for-128-bit-MGM-mode.patch @@ -0,0 +1,12 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -746,6 +746,7 @@ libcrypto_la_SOURCES += modes/cfb128.c + libcrypto_la_SOURCES += modes/ctr128.c + libcrypto_la_SOURCES += modes/cts128.c + libcrypto_la_SOURCES += modes/gcm128.c ++libcrypto_la_SOURCES += modes/mgm128.c + libcrypto_la_SOURCES += modes/ofb128.c + libcrypto_la_SOURCES += modes/xts128.c + libcrypto_la_SOURCES += modes/cbc64.c diff --git a/PORTABLE-0044-modes-add-support-for-64-bit-MGM-mode.patch b/PORTABLE-0044-modes-add-support-for-64-bit-MGM-mode.patch new file mode 100644 index 0000000..ca65c78 --- /dev/null +++ b/PORTABLE-0044-modes-add-support-for-64-bit-MGM-mode.patch @@ -0,0 +1,12 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -752,6 +752,7 @@ libcrypto_la_SOURCES += modes/xts128.c + libcrypto_la_SOURCES += modes/cbc64.c + libcrypto_la_SOURCES += modes/cfb64.c + libcrypto_la_SOURCES += modes/ctr64.c ++libcrypto_la_SOURCES += modes/mgm64.c + libcrypto_la_SOURCES += modes/ofb64.c + noinst_HEADERS += modes/modes_lcl.h + diff --git a/PORTABLE-0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch b/PORTABLE-0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch new file mode 100644 index 0000000..e880bb6 --- /dev/null +++ b/PORTABLE-0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch @@ -0,0 +1,13 @@ +Index: libressl-3.1.0/crypto/Makefile.am +=================================================================== +--- libressl-3.1.0.orig/crypto/Makefile.am ++++ libressl-3.1.0/crypto/Makefile.am +@@ -724,6 +724,8 @@ noinst_HEADERS += idea/idea_lcl.h + + # kdftree + libcrypto_la_SOURCES += kdftree/kdftree.c ++libcrypto_la_SOURCES += kdftree/tlstree.c ++noinst_HEADERS += kdftree/kdftree_locl.h + + # lhash + libcrypto_la_SOURCES += lhash/lh_stats.c diff --git a/PORTABLE-0100-fixup-build.patch b/PORTABLE-0100-fixup-build.patch new file mode 100644 index 0000000..65cd08d --- /dev/null +++ b/PORTABLE-0100-fixup-build.patch @@ -0,0 +1,38 @@ + +Index: portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322/openbsd/src/lib/libcrypto/Symbols.list +=================================================================== +--- portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322.orig/openbsd/src/lib/libcrypto/Symbols.list ++++ portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322/openbsd/src/lib/libcrypto/Symbols.list +@@ -2586,6 +2586,10 @@ SXNET_get_id_asc + SXNET_get_id_ulong + SXNET_it + SXNET_new ++TLSTREE_CTX_free ++TLSTREE_CTX_new ++TLSTREE_GET ++TLSTREE_Init + TS_ACCURACY_dup + TS_ACCURACY_free + TS_ACCURACY_get_micros +@@ -3560,6 +3564,8 @@ get_rfc3526_prime_3072 + get_rfc3526_prime_4096 + get_rfc3526_prime_6144 + get_rfc3526_prime_8192 ++gost_kexp15 ++gost_kimp15 + hex_to_string + i2a_ACCESS_DESCRIPTION + i2a_ASN1_ENUMERATED +Index: portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322/update.sh +=================================================================== +--- portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322.orig/update.sh ++++ portable-44a6a2397fb9b8d6868ef73d51e6ef79c39b0322/update.sh +@@ -133,7 +133,7 @@ copy_hdrs $libcrypto_src "stack/stack.h + md4/md4.h ripemd/ripemd.h whrlpool/whrlpool.h idea/idea.h + rc2/rc2.h rc4/rc4.h ui/ui_compat.h txt_db/txt_db.h + sm3/sm3.h sm4/sm4.h chacha/chacha.h evp/evp.h poly1305/poly1305.h +- camellia/camellia.h gost/gost.h curve25519/curve25519.h" ++ camellia/camellia.h gost/gost.h curve25519/curve25519.h kdftree/kdftree.h" + + copy_hdrs $libssl_src "srtp.h ssl.h ssl2.h ssl3.h ssl23.h tls1.h dtls1.h" + diff --git a/SUSE-extra-symver.patch b/PORTABLE-2200-SUSE-extra-symver.patch similarity index 98% rename from SUSE-extra-symver.patch rename to PORTABLE-2200-SUSE-extra-symver.patch index 2815b0c..e78ee56 100644 --- a/SUSE-extra-symver.patch +++ b/PORTABLE-2200-SUSE-extra-symver.patch @@ -3,9 +3,9 @@ From: Jan Engelhardt Date: Thu, 9 Jul 2020 14:11:14 +0000 Subject: [PATCH] SUSE-extra-symver.patch -Redefined by Oleg Solvev - Add symbol versions into the library to be on par with openssl. + +Rediffed by Oleg Solvev --- crypto/Makefile.am | 7 ++++++- ssl/Makefile.am | 7 ++++++- diff --git a/libressl.spec b/libressl.spec index 6ea7895..eacd55c 100644 --- a/libressl.spec +++ b/libressl.spec @@ -60,23 +60,163 @@ %define libcrypto_pkg %mklibname crypto_libressl %{libcrypto_sover} %define libtls_pkg %mklibname tls_libressl %{libtls_sover} +# parent commit of https://github.com/libressl-portable/openbsd/commit/a177033 +# from which v3.2.0 is tagged +%define commit_openbsd 768c7156952b7df8245172586ca8c4c37d599a47 +# https://github.com/libressl-portable/portable is tagged correctly, +# but lets also build from commit for consistency +%define commit_portable 44a6a2397fb9b8d6868ef73d51e6ef79c39b0322 + +%define _default_patch_fuzz 3 +%define config_update %{nil} + +# TODO: fix it, introduced by patches from gost-new +%define _disable_ld_no_undefined 1 + Summary: LibreSSL utils and libs coexisting with OpenSSL Name: libressl Version: 3.2.0 -Release: 2 +Release: 3 # The code is distributed under ISC license except of original OpenSSL code License: ISC and BSD-like Group: System/Base Url: http://libressl.org -Source0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-%{version}.tar.gz +#Source0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-%{version}.tar.gz +Source0: https://github.com/libressl-portable/portable/archive/%{commit_portable}.tar.gz?/libressl-portable-%{commit_portable}.tar.gz +Source1: https://github.com/libressl-portable/openbsd/archive/%{commit_openbsd}.tar.gz?/libressl-openbsd-%{commit_openbsd}.tar.gz Source10: libressl.rpmlintrc -# TODO: add printing config location to `openssl version` -Patch1: 0001-Allow-custom-config-location.patch + +# Patches for openbsd tree are also commited here: +# https://github.com/mikhailnov/libressl-openbsd/commits/rosa-v3.2.0 + +# ROSA patch, TODO: add printing config location to `openssl version` +Patch0001: 0001-Allow-custom-config-location.patch + +# Support of GOST 2015 and other fixes by lumag@, sponsored by ROSA Linux +# Поддержка TLS 1.2 CNT-IMIT и CTR-OMAC в соответствии с Р 1323565.1.020-2018 и +# draft-smyshlyaev-tls12-gost-suites. +# - Блочные шифры Магма, Кузнечик по ГОСТ Р 34.12-2015. +# - Режимы блочных шифров по ГОСТ Р 34.13-2015 +# - Режим CTR-ACPKM по Р 1323565.1.017-2018 +# - Режим MGM по Р 13235651.026-2019 +# - Формат ключей по Р 1323565.1.023-2018 +# - Параметры эллиптических кривых по Р 1323565.1.024-2019 +# - Поддержка файлов CMS и PKCS7 по RFC 4490 (в режиме KeyTransport) +# - Поддержка файлов CMS и PKCS7 по Р 1323565.1.025-2019 (кроме режима KEK) +# - Поддержка файлов PKCS#8/PKCS#12 по Р 50.1.112-2016. +# - Поддержка криптонаборов TLS 1.2 по Р 1323565.1.020-2018 +# Для поддержки криптонаборов TLS 1.3 с точки зрения ГОСТ все готово, +# поддержка TLS 1.3 в самом LibreSSL пока находится в процессе разработки. +# In process of upstreamization which is going not easily... +# git clone https://github.com/GostCrypt/libressl-openbsd.git -b gost-new +# cd libressl-openbsd +# git format-patch -64 --start-number=101 +# ( for i in 01*.patch ; do echo Patch$(echo $i | awk -F '-' '{print $1}'): $i ; done ) | sort -h +# cherry-picked from upstream after v3.2.0 and gost-new +Patch0002: 0002-Remove-expired-certificate-ok-tb.patch +Patch0003: 0003-Properly-document-PKCS7_final-3-which-was-already-me.patch +Patch0004: 0004-distracting-whitespace.patch +Patch0005: 0005-new-manual-page-PKCS7_add_attribute-3.patch +Patch0006: 0006-mention-that-TLS_method-3-also-supports-TLSv1.3.patch +Patch0007: 0007-minor-polishing.patch +Patch0008: 0008-Apply-some-style-9.patch +Patch0009: 0009-Add-support-for-additional-GOST-curves.patch +Patch0010: 0010-Add-a-few-more-errors-to-help-debugging.patch +Patch0011: 0011-Add-OIDs-for-HMAC-using-Streebog-GOST-R-34.11-2012-h.patch +Patch0012: 0012-Allow-GOST-R-34.11-2012-in-PBE-PBKDF2-PKCS-5.patch +Patch0013: 0013-Enable-GOST_SIG_FORMAT_RS_LE-when-verifying-certific.patch +Patch0014: 0014-Handle-GOST-in-ssl_cert_dup.patch +Patch0015: 0015-Stop-sending-GOST-R-34.10-94-as-a-CertificateType.patch +Patch0016: 0016-Use-IANA-allocated-GOST-ClientCertificateTypes.patch +Patch0017: 0017-Add-a-custom-copy-handler-for-AES-key-wrap.patch +Patch0018: 0018-document-PKCS7_get_signer_info-3.patch +Patch0019: 0019-wording-tweaks-from-ross-l-richardson-and-tb.patch +Patch0020: 0020-document-PEM_ASN1_read-3-and-PEM_ASN1_read_bio-3.patch +Patch0021: 0021-add-a-comment-saying-that-name_cmp-is-intentionally-.patch +Patch0022: 0022-add-my-Copyright-and-license-which-i-forgot-when-add.patch +Patch0023: 0023-Document-PEM_def_callback-3.patch +Patch0024: 0024-Document-EVP_read_pw_string_min-3.patch +Patch0025: 0025-gost-populate-params-tables-with-new-curves.patch +Patch0026: 0026-gost-use-ECerror-to-report-EC-errors.patch +Patch0027: 0027-gost-support-new-PublicKeyParameters-format.patch +Patch0028: 0028-gostr341001-support-unwrapped-private-keys-support.patch +Patch0029: 0029-pkcs12-add-support-for-GOST-PFX-files.patch +Patch0030: 0030-modes-add-functions-implementing-common-code-for-64-.patch +Patch0031: 0031-gost-drop-key_len-from-Gost28147_set_key.patch +Patch0032: 0032-gost-use-key_meshing-for-specifying-section-size.patch +Patch0033: 0033-gost-add-support-for-magma-cipher.patch +Patch0034: 0034-gost-add-support-for-kuznyechik-cipher.patch +Patch0035: 0035-kuznyechik-fix-IV-handling-for-CTR-mode.patch +Patch0036: 0036-magma-fix-IV-handling-for-CTR-mode.patch +Patch0037: 0037-gost-add-support-for-ACPKM-rekeying.patch +Patch0038: 0038-gost-add-support-for-GOST-34.12-Magma-Kuznyechik-enc.patch +Patch0039: 0039-gost-add-support-for-magma-ctr-acpkm-mode.patch +Patch0040: 0040-gost-add-support-for-kuznyechik-ctr-acpkm-mode.patch +Patch0041: 0041-kdftree-add-functions-implementing-KDF_TREE-function.patch +Patch0042: 0042-gost-add-support-for-new-GOST-key-transport-data-for.patch +Patch0043: 0043-modes-add-support-for-128-bit-MGM-mode.patch +Patch0044: 0044-modes-add-support-for-64-bit-MGM-mode.patch +Patch0045: 0045-gost-add-kuznyechik-mgm-support.patch +Patch0046: 0046-gost-add-magma-mgm-support.patch +Patch0047: 0047-regress-evp-add-simple-test-for-AEAD-ciphers.patch +Patch0048: 0048-evp-add-EVP_CIPHER-interface-for-kuznyechik-mgm.patch +Patch0049: 0049-evp-add-EVP_CIPHER-interface-for-magma-mgm.patch +Patch0050: 0050-evp-add-support-for-Kuznyechik-ctr-acpkm-omac-cipher.patch +Patch0051: 0051-evp-add-support-for-Magma-ctr-acpkm-omac-cipher.patch +Patch0052: 0052-gost-restore-CMS-support.patch +Patch0053: 0053-gost-add-support-for-CMS-and-SMIME-enveloped-files.patch +Patch0054: 0054-cms-add-support-for-using-AEAD-ciphers-in-CMS-files.patch +Patch0055: 0055-cms-populate-SMIMECaps-with-new-GOST-algorithms.patch +Patch0056: 0056-cms-allow-keys-support-different-RI-types.patch +Patch0057: 0057-evp-support-kuznyechik-kexp15-keywrap-algorithm.patch +Patch0058: 0058-evp-support-magma-kexp15-keywrap-algorithm.patch +Patch0059: 0059-gost-support-specifying-old-or-new-KEG-derivation-fo.patch +Patch0060: 0060-cms-add-support-for-setting-KeyAgreement-UKM.patch +Patch0061: 0061-cms-select-proper-cipher-for-GOST-KeyAgreeement.patch +Patch0062: 0062-cms-specify-originator-key-for-KeyAgreement-decoding.patch +Patch0063: 0063-cms-support-specifying-originator-certificate-and-ke.patch +Patch0064: 0064-gost-add-support-for-decoding-KeyAgreement-CMS-files.patch +Patch0065: 0065-cms-autoguess-preferred-RecipientInfo-type.patch +Patch0066: 0066-Fix-S-Box-used-for-CipherKeyExchange-message-in-GOST.patch +Patch0067: 0067-gost-pmeth-check-that-result-of-data-encryption-woul.patch +Patch0068: 0068-ssl_sigalgs-select-proper-default-algorithm-for-GOST.patch +Patch0069: 0069-ssl-add-support-for-IANA-allocated-GOST-sigalgs-valu.patch +Patch0070: 0070-ssl-provide-interoperability-with-CryptoPro-CSP.patch +Patch0071: 0071-ssl-do-not-send-GOST-94-certificate-type.patch +Patch0072: 0072-ssl-add-support-for-new-GOST-CNT-IMIT-ciphersuite-va.patch +Patch0073: 0073-evp-add-EVP_PKEY_new_CMAC_key-function.patch +Patch0074: 0074-evp-fix-sign-verify-for-EVP_PKEY_CMAC-keys.patch +Patch0075: 0075-evp-fix-EVP_MD_CTX_copy_ex-for-CMAC-contexts.patch +Patch0076: 0076-objects-add-id-for-gost-kdf-key-exchange-for-CTR-OMA.patch +Patch0077: 0077-ssl-add-defines-for-GOST-CTR-OMAC-ciphersuites.patch +Patch0078: 0078-ssl-add-support-for-GOST-KDF-key-exchange.patch +Patch0079: 0079-ssl-support-selecting-CMAC-for-CTR-OMAC-ciphersuites.patch +Patch0080: 0080-ssl-select-ACPKM-session-size-for-CTR-OMAC-ciphersui.patch +Patch0081: 0081-ssl-fix-Finished-message-length-for-CTR-OMAC-ciphers.patch +Patch0082: 0082-ssl-fix-CMAC-support.patch +Patch0083: 0083-ssl-merge-read-and-write-sequence-secrets-into-commo.patch +Patch0084: 0084-ssl-drop-mac_flags-field.patch +Patch0085: 0085-ssl-support-IV-increments-for-GOST-CTR-OMAC-ciphersu.patch +Patch0086: 0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch +Patch0087: 0087-ssl-add-support-for-TLSTREE-rekeying.patch + +# Patches for portable, from lumag@ +# ( for i in *PORTABLE*.patch ; do echo Patch$(echo $i | awk -F '-' '{print $2}'): $i ; done ) | sed -e 's,^Patch0,Patch2,g' | sort -h +# These patches for portable tree extend patches above for openbsd tree +# and have the same numbers +Patch2030: PORTABLE-0030-modes-add-functions-implementing-common-code-for-64-.patch +Patch2033: PORTABLE-0033-gost-add-support-for-magma-cipher.patch +Patch2034: PORTABLE-0034-gost-add-support-for-kuznyechik-cipher.patch +Patch2041: PORTABLE-0041-kdftree-add-functions-implementing-KDF_TREE-function.patch +Patch2042: PORTABLE-0042-gost-add-support-for-new-GOST-key-transport-data-for.patch +Patch2043: PORTABLE-0043-modes-add-support-for-128-bit-MGM-mode.patch +Patch2044: PORTABLE-0044-modes-add-support-for-64-bit-MGM-mode.patch +Patch2086: PORTABLE-0086-kdftree-add-support-for-TLSTREE-rekeying-algorithm.patch +Patch2100: PORTABLE-0100-fixup-build.patch # If both openssl and libressl libraries are loaded into one runtime, # versioning their symbols will or may allow them to coexist -Patch2: SUSE-extra-symver.patch -# https://github.com/GostCrypt/libressl-openbsd/tree/gost-new -Patch3: 0001-gost-restore-CMS-support.patch +Patch2200: PORTABLE-2200-SUSE-extra-symver.patch + # From https://www.mitchr.me/SS/exampleCode/openssl.html Source20: test.c Source22: test2.c @@ -253,19 +393,33 @@ capabilities. #------------------------------------------------------------------------------------- %prep -%setup -q -n libressl-%{version} -%patch2 -p1 -# Patch is against gits https://github.com/libressl-portable/ -# Release tarball is packaged in a tricky way -cat %{PATCH1} | sed \ - -e 's,src/lib/libcrypto/,crypto/,g' \ - -e 's,src/usr.bin/openssl/,apps/openssl/,g' \ - > 1.patch -patch -p1 < 1.patch -cat %{PATCH3} | sed \ - -e 's,src/lib/libcrypto/,crypto/,g' \ - > 3.patch -patch -p1 < 3.patch +%setup -q -n portable-%{commit_portable} -a1 +# Emulating creation of release tarball... +mv openbsd-%{commit_openbsd} openbsd +( cd openbsd +# First apply patches and then run a script which will copy files etc. +for i in $(echo "%patches" | sed -e 's,[[:space:]],\n,g' | grep -v '/PORTABLE\-' | sort -h); do + echo "Applying openbsd patch $i" + patch -p1 < "$i" +done +# TODO: fix patch 0163-ssl-add-support-for-TLSTREE-rekeying.patch, src/lib/libssl/ssl.h etc. +grep -Irl '#include ' | xargs sed -i -e "s,#include ,#include \"${PWD}/src/lib/libcrypto/kdftree/kdftree.h\",g" +) +sed -i -e 's,git ,true ,g' update.sh +sed -i -e 's,./update.sh,sh -x ./update.sh,g' autogen.sh +sh -x ./autogen.sh | tee autogen0.log +# Protection against incorrect updates, e.g. by updates_tracker +grep -q "^LibreSSL version %{version}$" autogen0.log +rm -f autogen0.log + +# Now apply patches on top of portable edition after all files have been generated +for i in $(echo "%patches" | sed -e 's,[[:space:]],\n,g' | grep '/PORTABLE\-' | sort -h); do + echo "Applying portable patch $i" + patch -p1 < "$i" +done + +# Rerun after patching +sh -x update.sh %build %setup_compile_flags @@ -273,7 +427,7 @@ patch -p1 < 3.patch # Use the same %%_openssl dir with OpenSSL, but separate the config # (note that we patch libressl, X509_CONF_FILE is not upstream) export CFLAGS="$CFLAGS -DX509_CONF_FILE='\"%{_openssldir}/libressl.cnf\"'" -autoreconf -if #patch2 +#autoreconf -if #Source21 # static libs are required for tests target in Makefile %configure \ --enable-nc \ From e25b7e90fb9b99f1db74ac040b2866d8b4c1c142 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Wed, 5 Aug 2020 13:14:26 +0300 Subject: [PATCH 5/6] Adapt %%check for renamed curves 0009-Add-support-for-additional-GOST-curves.patch intentionally renamed curves to follow TK26's list of OIDs https://tc26.ru/about/protsedury-i-reglamenty/identifikatory-obektov-oid-tekhnicheskogo-komiteta-po-standartizatsii-kriptograficheskaya-zashchita-1.html --- libressl.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libressl.spec b/libressl.spec index eacd55c..0a381a9 100644 --- a/libressl.spec +++ b/libressl.spec @@ -641,11 +641,11 @@ unset _gs_beg _gs_end _ls_beg _ls_end _gs_length _ls_length _pcf pkg-config --libs --cflags libressl-libcrypto %__cc -o test9 %{SOURCE29} $nflags export OPENSSL_CONF=%{buildroot}%{_openssldir}/libressl.cnf -$libressl ecparam -genkey -name id-tc26-gost-3410-2012-512-paramSetA -out priv.key -outform PEM +$libressl ecparam -genkey -name id-tc26-gost-3410-12-512-paramSetA -out priv.key -outform PEM $libressl req -batch -new -x509 -nodes -key priv.key -out pem1.pem \ -subj "/C=RU/ST=Russia/L=Oryol/O=Test/OU=Test CA/CN=Test CA Root" # Also possible to gen a new key and a certificate in one command: -# libressl req <...> -newkey ec -pkeyopt ec_paramgen_curve:id-tc26-gost-3410-2012-512-paramSetA +# libressl req <...> -newkey ec -pkeyopt ec_paramgen_curve:id-tc26-gost-3410-12-512-paramSetA # Signature Algorithm: ecdsa-with-SHA256 $libressl x509 -in pem1.pem -text -noout | grep -E 'Signature Algorithm:.*ecdsa-with-SHA256' $libressl req -new -nodes -utf8 -batch -x509 -newkey gost2001 \ From fb55dada6f235b66852e30ba1171a8a519e69f93 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Wed, 12 Aug 2020 11:00:45 +0300 Subject: [PATCH 6/6] Remove no more needed hack of headers There was an absolute path left in headers, headers were not useable. --- libressl.spec | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libressl.spec b/libressl.spec index 0a381a9..2952a5f 100644 --- a/libressl.spec +++ b/libressl.spec @@ -76,7 +76,7 @@ Summary: LibreSSL utils and libs coexisting with OpenSSL Name: libressl Version: 3.2.0 -Release: 3 +Release: 4 # The code is distributed under ISC license except of original OpenSSL code License: ISC and BSD-like Group: System/Base @@ -402,8 +402,6 @@ for i in $(echo "%patches" | sed -e 's,[[:space:]],\n,g' | grep -v '/PORTABLE\-' echo "Applying openbsd patch $i" patch -p1 < "$i" done -# TODO: fix patch 0163-ssl-add-support-for-TLSTREE-rekeying.patch, src/lib/libssl/ssl.h etc. -grep -Irl '#include ' | xargs sed -i -e "s,#include ,#include \"${PWD}/src/lib/libcrypto/kdftree/kdftree.h\",g" ) sed -i -e 's,git ,true ,g' update.sh sed -i -e 's,./update.sh,sh -x ./update.sh,g' autogen.sh